各ルータが持っているルーティングテーブルには、
『宛先アドレスに対し、
そこまでの距離、
そこへ中継する次のルータのIPアドレス、
そのルータへ繋がっているポート』
が記憶されています。
そしてルータは、受け取ったIPパケットの宛先で、ルーティングテーブル内の宛先アドレスに一致する所を
検索し、対応するポートにフォワーディングしています。
このルーティングの決め方には、
ネットワーク管理者がコマンドでひとつずつ設定する静的ルーティング方式
以外に、自動更新する動的ルーティング方式があり、
それが経路制御プロトコルです。
つまり、サブネットが集まったネットワーク間で、
正しいサブネットワークへ転送するために、どこに転送すべきか
ルーター同士で情報を交換させ、
ルーティングテーブルを更新して行きます。
これに使われるプロトコルは、厳密に言うと3層のIPプロトコルではなく、
上位層のプロトコルで、IPと協調して働きます。
ここでは、この考え方だけを説明します。
ネットワーク上で動的ルーティングによる
経路制御が行われる単位をAS(自律システム)と
呼びます。
(または、経路制御ドメインと呼ばれることもあります。)
規模の大きなISPなどがASになります。規模の小さいISPや学校、企業などは、
あるASに所属する形になっています。
AS(自律システム)には、AS番号と呼ばれる
16ビットの数字が付けられて、それが自律システムに使われます。
IPアドレスと同じように、グローバルAS番号と
プライベートAS番号(64512~65534)と分けられ、
グローバルAS番号は、
ICAN(IANA)で管理されます。
日本国内のAS番号は、その下部組織のJPNICで、
管理されています。
この番号が経路制御のプロトコルは、IGP(Interior Gataway Protocol)と
EGP(Exterior Gateway Protocol)に分類でき、次のように使われます。
一つのAS内部で使われるルーティングプロトコルがIGPで、そのAS同士を
結びつけるルーティングプロトコルがEGPです。
これは、AS内部と外部をという役割の違いより、大きく異なる性質のものです。
IGPで行われるAS内部の膨大なホスト数に対するルーティングは、
各ASに任されます。
対してEGPは、グローバルAS番号を持つ同士だけのやり取りで、
自身がこの経路を管理しているルータであることを、他のASに伝えることが
最大の目的になっています。
また、IGPでは、送り先が分からないパケットを
「デフォルトルート」に任せるという概念があるのに対して、
EGPにはありません。代わりに「フルルート」という概念があります。
「フルルート」は、インターネット全体の経路(2006年で約25万経路)を表すものであり、
「フルルート」に存在しない行き先のパケットは、
それから先へどこにも到達できないことを意味します。
IGPの代表的経路のプロトコルには、
ディスタンスベクタ方式を使ったRIPや、
リンク状態(Link-State)型のOSPFがあります。
またEGPでは、BGPと呼ばれる「パスベクタ型」の方式が使われています。
以下で、各方式の概要を示します。
RIP(Routing Information Protocol)が使っている方式で、
比較的小さなネットワーク内で使われます。
(距離ベクトル型とも呼ばれます)
各ルータが持っているルーティングテーブルの『あて先へ向かう方向と距離情報』をブロードキャストして、
テーブルを共有化していきます。
この距離情報は、「メトリック(Metric)」と呼ばれます。
(RIPにおけるメトリックは、経路途中に存在するルータの数が使われ、
「ホップ数」と呼ばれることもあります。)
そして、隣のルータから取得した目的値に対するメトリックで、より小さい方を残す考え方で、
経路表を作り上げます。
このメトリック値15が実質的な最大で、16は経路が遮断されていることを意味します。
一つのルータを外すと、
最終的に、全てのルータが正しい設定に収束するまでに時間がかかるという問題があります。
以前は、RIPプロトコルが使われていましたがASの規模が大きくなってから、より安定に
動作するOSPFが使われるよになっています。
OSPF(Open Shortest Path First) が使っている方式です。
ネットワーク全体の接続状態を理解して経路制御表を作成します。
具体的には、各ルータが隣接ルータの情報を知らせ合うことで、
リンク状態のデータベース(トポロジデータベース)を作成します。(UDPが使われます)
このデータベースは、LSA(Link State Advertisement:リンクステート広告)と呼ばれる情報で
構成されます。
LSAには、各ルータに接続されたネットワークの種類や「コスト」が含まれます。
OSPFではメトリックに「コスト」が使われます。これはネットワーク帯域、信頼性、通信費などの
総合的な値で、管理者が自由に設定できる値です。
これらで構成されるトポロジデータベースは、代表ルータ(DR:Designated Router)で
作成され、全てのルータに配布されます。
そして各ルータでは、このトポロジデータベースからダイクストラのアルゴリズムで各ルータへの最短経路を
調べ、経路表を作成します。
以下にOSPFで使われるメッセージの種類を
示します
タイプ | メッセージの種類 | 機能 |
---|---|---|
1 | Hello | 隣接ルータの検出 |
2 | データベースの記述 | データベースの情報を交換して比較 |
3 | リンク状態要求 | データベースが古い時に、新しいものを要求 |
4 | リンク状態更新 | データベース更新のためのリンク状態伝送 |
5 | リンク状態確認 | リンク状態の確認応答 |
EGP(AS同士の経路プロトコル)に使われる方法で、
BGP(Border Gateway Protocol)が使っている方式です。
(BGP version 4がデファクトスタンダートとして使われています)
自分自身から目的地へ到達するまでにたどるパスを、
メッセージの交換により取得して、
これから経路リストを作成し、
経路の短い方を選択する方式です。
BGPを実行しているルータは「BGPスピーカ」と呼ばれます。
「BGPスピーカ」同士は、TCPで隣接関係を結び、「BGPピア」と呼ばれます。
「BGPピア」で交換されるBGPメッセージは次の4つです。
BGPスピーカは、BGPテーブルと呼ばれるテーブルを持ち、
BGPテーブルは,隣接ルーター(ピア)のリストや,ネットワーク情報などを含みます。
具体的には、「経路プリフィックス」、「パス属性:AS_PATH」、「MED:Multi Exit Disc」などです。
最初のUPDATE以外では差分だけで更新できます。ASを経由することに、経由したAS番号がAS_PATHに追加されます。
他のアトリビュートを特に設定しない場合は、このAS_PATHで経路が決まります。
ですが、「MED」属性など、さまざまな管理者の定めた条件などを含めたBGPテーブルの記載情報で、
最終的に合致すれば、その経路情報でIPルーティングテーブルが更新される仕組みになっています。