ルーティングの原理
1 ルーティングの機能と役割
IPアドレスの大きな目的の1つは,ネットワーク間のトラフィックのルーティングを容易にすることだ。この章では,実際のルーティングの仕組みとルーティング・テーブルの維持,ルーターの動作全般について紹介する。
どのステーションも,他のステーションに直接送ることのできる場合はそのステーションまでの,直接送ることのできない遠くのステーションに送る場合はルーターまでの,データの配信に責任を負う。ルーターはネットワークヘの到達可能性に関わりをもち,到達可能なネットワークを列挙したテーブル(ルーティング・テーブル)を維持する。これらのテーブルには,使用するルート(経路)の質の尺度(メトリック)と,データの中継先として使う次の中継システム(ホップ)のアドレスも収められている。また,ルーターは一連の専用のプロトコルを使用し,新たに利用ロ可能になったネットワークのルートを調べること,故障で使えなくなったルートを削除することも行う。この方法で,複雑なネットワークの構築が可能になり,操作する人に要求される作業ができるだけ少なくなるようになっている。
IPに取り込まれているサービス・タイプの概念に基づいて,スループット,信頼性,あるいは遅延などの点でさまざまなルートを比較し,その中からコストの面でもっとも優れた特定のルートを選択するように,アプリケーションを要求することが可能になっている。ルーティング・プロトコルを利用することにより,ルータ−は,利用できる最善で最新の情報に基づいてルートの決定を行うことができ,その結果,必ず最適なルートが使われることを保証する。さらに,ルーターはブロードキャスト・フレームを転送しないので,第2層で生成されたブロードキャストが,ルーターを通して渡されることはない。
2 直接ルーティングと間接ルーティング
簡単なデータ・フレームを組織内の他のマシンに配信する場合を考えてみよう。コンピュータが行う手順を次に説明し,図1で視覚的に示す。この例ではサブネットの存在を無視しているが,これはルーティングの仕組みの説明を簡単にするためである。
図1 基本的な直接ルーティングと間接ルーティング
データが到着すると,ルーターはそのデータに同じ処理を行う。どのルーターも,ネットワークIDとその到達方法についてのテーブルを維持している。ここで,ルーターが判断するのは,データを他のルーターに渡すべきか,あるいは,宛先ホストに直接配信できるかということだ。図2はこの概念を示したもので,データを直接配信できるルーターにデータが届くまでルーターからルーターにデータが渡されるのを表している。
図2 間接ルーティング
2.1 ルーティング・プロトコル
すでに述べたが,ルーターは専用のプロトコルを使ってルートの変更を調べる。これらのプロトコルはゲートウェイ・プロトコルと呼ばれるもので,IGPs(Interior Gateway Protocols:内部ゲートウェイ・プロトコル)とEGPs(Exterior Gateway Protocols:外部ゲートウェイ・プロトコル)の2つに大別できる。IGPsが使われるのは,同じ管理組織に属するインターネット,より一般的な呼び方では自律システム(AS)の中だ。これらのプロトコルの例としては,RIP(Routing lnformation Protocol),OSPF(Open Shortest Path First),およびCisco独自のIGRP(Interior Gateway Routing Protocol)がある。また,EGPsは,自律システムを結び合わせるものだ。 EGPsの例は,EGP(Exterior Gateway Protocol)とBGP(Border Gateway Protocol)です。これらのプロトコルについては,後ほど詳しく説明する。
初めて起動したとき,ルーターは自分の動作環境についてほとんど何も知らない。プログラムされているのはルーターがもつそれぞれのポートのIPアドレスで,スタティック・ルートがいくつかプログラムされていることもある。しかし,通常ルーターは隣のルーターと情報を交換し,到達可能なネットワークを動的に覚えていく。ルーターは隣接するルーターに自分が直接接続されている,すなわち自分が直接配信可能なネットワークについて教える。隣接するルーターは自分のルーティング・テーブルを更新し,逆に自分が知っている到達可能ネットワークの情報を提供する。1つのルーターが教えた新しいルートは,隣接ルーターによってまた別の隣接ルーターヘと広告され,このようにしてインターネット上に情報が広がっていく。
2.2 スタティック・ルートとデフォルト・ルート
スタティック・ルートは,遠隔の宛先ネットワークヘのルートが装置に分かるように,装置に前もってプログラムされている。この種のルートを使うとルーティングの柔軟性が低くなるのだが,X.25などのいわゆるバケット交換ネットワークやISDN上などで,ルーティング更新トラフィックを少なくしたい場合には,これを使うのが一般的である。
利用する可能性のあるすべてのネットワークについて到達可能性情報をもつのが実用的でない場合には,デフォルト・ルートをルーターにプログラムするのが一般的である。たとえば,サービス・プロバイダを経由してインターネットに接続する場合,利用可能なすべてのネットワークの到達可能性情報をルーターにもたせることは,まったく実用的ではない。この場合,インターネット・サービス・プロバイダヘ接続するポイントをデフォルト・ルートとしてルーターにプログラムしておく。そうすれば,ルートがはっきり分からない宛先へのパケットについては,デフォルト・ルートヘ渡される。
3 ルーティングとサブネット・マスク
サブネットを使っている場合は,直接ルートが使えるかどうかの判断にアドレス・クラスが使えないため,ルーティング・アルゴリズムが少し異なってくる。サブネット・マスクのビットがオン,つまり1になっていると,対応するIPアドレスのビットは,ネットワークIDの一部を構成するとみなされるようになっている。同様に,サブネットマスクのビットがオフ,つまり0になっていると,対応するIPアドレスのビットは,ホストIDの一部を構成するとみなさなければならない。
データの配信にルーターを使う必要があるかどうかを判断するために,ステーションは,自分のIPアドレスとサブネット・マスクとを,ビットごとにAND(論理積)計算します。この結果,ホ
ストIDビットが取り除かれる。これで,自分のサブネットワークをステーションが決定できるし,通信したいホストについても同様に決定できる。前のセクションで説明した動作モデルを,今度は図3のように変え,254のサブネットに分割されたクラスBネットワークを示す。図の後に動作の説明を行う。
図3 サブネットでのルーティング
3.1 可変長サブネット・マスク
これまでにあげた例は,インターネット全休に1つのサブネット・マスクが適用されるものだった。しかし,アドレス・スペースを分割し,それぞれが少数のホストを接続した多数のネットワークや,多数のホストを置かなければならない単一のネットワークを作る場合,どのようにアドレス・スペースを分割すればよいのだろうか?明らかに1つのサブネット・マスクでは役に立たない。
クラスBネットワーク・アドレスを割り当てられていて,この中に少なくとも1,000台のホストをもつサブネットを1つと,100台から254台のホストをもつ多数のサブネットワークと,ホストを2台だけもつポイント・ツー・ポイント・リンクを2本設けなければならない場合を考えてみよう。
次の図4は,マルチポート・ルーターを使ってこれを実現した例である。
図4 可変長サブネット・マスクを使ったルーティング
クラスBネットワーク・アドレスは,上記のように154.136.0.0とする。ポイント・ツー・ポイント・リンクに必要なのはリンクの両端のルーターである2台のホストだけだから,これらのネットワークのホストIDには2ビットを割り当てれば足りる(ホストIDにすべて0やすべて1のものは使えないので,2ビットが必要)。したがってこの場合,サブネット・フィールドは14ビットとなり左側WANリンクをサブネット3に,右側WANリンクをサブネット2に置く。1000台のホストを要求するネットワークには,ホストIDに少なくとも10(2の10乗=1024)ビット割り当てることが必要だ。前述の例では12ビットの割当を選んだ。サブネット・フィールド用に4ビットが残るが,これはサブネット2とする。100〜254台のホストを置くネットワークには,ホストIDが最低8ビット(2の8乗=256)必要です。8ビットの割当を選んだ。これでサブネット・フィールド用に8ビットが残るから,サブネット20と30をそれぞれ作成する。これで利用可能なアドレス・スペースを最大限に活用したかのようにみえる。ただし,ここで注意しなければならないが,ルーターの各ポートに異なる長さのマスクを与えているから,これまでのサブネットの概念があまり適切ではなくなっている。
インターネット内の,別なサブネットにあるホストにデータを送ろうとすると,ルーターを使わなければならない。トラフィックを直接ルーティングできるか,パス上の別なルーターにこれを転送すべきか,自分のインタフェース・アドレスと,設定されたサブネット・マスクを使ってルーターが決定する。さらに,サブネットワーク上のどのステーションも,同じサブネット・マスクを使用しなければならない。これについてはルーターのポートそのものも同じで,もしそうでなければ,他のホストと同じ物理ネットワークに接続されているのに,自分は別のサブネットワークにあるとルーターが思ってしまう。この場合,ルーターとそのローカルホスト間の直接ルーティングは,まったく行えないことになる。
確かに,どのホストにも任意のサブネット・マスクを割り当てることができるので,同じルーターのどのポートにも,やはり他のポートとは別のサブネット・マスクの割当が可能ということになる。それでは,これで問題が解決できるのだろうか?残念ながら,これは使用するルーティング・プロトコルで決まるから,「できるかもしれない」としか答えられない。たとえば,RIPプロトコルはサブネット・マスクを広告しない。したがって,図5のクラスAネットワークを例に取ると,ルーターB,CおよびDは,ルーターAから見るとどれもネットワーク25.170.0.0へのルートを示している。しかし,OSPFは到達可能ネットワークのIDとともにサブネット・マスクを広告するので,この場合問題は起こらない。
図5 可変長サブネット・マスク
OSPFルーティングでは,サブネット・マスクがネットワークIDとともに広告される。この場合,ルーターが持つテーブルには,同じネットワークヘの複数のルートとみえるものが含まれる可能性があるため,アルゴリズムを使って,どのサブネットが要求されているかを決定しなければならない。図6のフローチャートに,簡略化したルーティングテーブルを使ってこのアルゴリズムを示す。
図6 可変長サブネット・マスクを使うOSPFルーティング
4 ARPとサブネット環境
すでに説明したように,ルーターを使わなければ,異なるサブネットにある2つのステーション同士が通信することはできない。ルーティングの実際の仕組みを調べた結果,サブネットを使用する場合には,ルーティング・アルゴリズムの根本的な変更が必要なことが分かった。それでは,どのIP装置もサブネット環境で動作できるのだろか?それとも,動作を可能にするには何か別な手段があるのだろうか?
4.1 Proxy ARP
RFC917で説明されているが,Proxy ARPが提供する手段によって,他のステーションの代わりにルーターがARP要求に応答することが可能になる。つまり,Proxy(代理)を務めるのだ。応答ステーションが完全に正直であることがARPの基盤であるから,どのステーションからの応答も信用される。このため,Proxy ARPは無差別ARP(Promiscuous ARP)と呼ばれることもある。
図7 典型的なProxy ARP交換
図7では,ルーターだけにサブネット・マスクを設定してあるが,2つの離れたサブネット,150と200が使われていることが分かる。
ここでステーションAがステーションXと通信しようとする場合,Aはすでに簡単に説明したアルゴリズムを使い,どちらの装置も同じネットワークにあると判断する(サブネット・マスクが指定されていなければ,本性的サブネット・マスクを使うものと判断する)。図の左側は,ステーションAがARPパケットをブロードキャストするところを示している。これはステーションXと自分が,同じサブネットにあると判断したからだ。ルーターはブロードキャストを中継しないから,ステーションXがARP要求を受け取ることはない。
図の右側を見ると,ARPパケットの宛先IPアドレスがステーションXのものであるのに,ルーターが(ARPによって)ARP要求に応答しているのが分かる。以降,ステーションAは,ステーションXと交信したものと信じ,直接ルーティングを行っているものと思ってデータの送信を行う。ルーターはパケットを受け取ると,そのデータを通常の方法でステーションXに送る。このように,サブネット・マスクやデフォルト・ゲートウェイの設定を必要とすることなく,間接ルーティングが行われる。
完結した交換は次のようになる。
ハードウェアタイプ |
0001 |
イーサーネット |
解決の要求元プロトコル |
0800 |
IP |
ハードウェアアドレス長 |
06 |
48ビットMACアドレス |
プロトコルアドレス長 |
04 |
32ビットIPアドレス |
オペレーションコード |
0001 |
ARP要求 |
送信元のステーションのハードウェアアドレス |
00808C0113E5 |
ステーションAのMACアドレス |
送信元ステーションのIPアドレス |
800A9637 |
AのIPアドレス(128.10.150.55) |
宛先ステーションのハードウェアアドレス |
000000000000 |
Null列-要求時に使用 |
宛先ステーションのIPアドレス |
800AC827 |
XのIPアドレス(128.10.200.39) |
ハードウェアタイプ |
0001 |
イーサーネット |
解決の要求元プロトコル |
0800 |
IP |
ハードウェアアドレス長 |
06 |
48ビットMACアドレス |
プロトコルアドレス長 |
04 |
32ビットIPアドレス |
オペレーションコード |
0002 |
ARP要求 |
送信元のステーションのハードウェアアドレス |
00000C016F87 |
ルーターポートのMACアドレス |
送信元ステーションのIPアドレス |
800AC8277 |
XのIPアドレス(128.10.200.39) |
宛先ステーションのハードウェアアドレス |
00808C0113E5 |
ステーションAのMACアドレス |
宛先ステーションのIPアドレス |
800A9637 |
AのIPアドレス(128.10.150.55) |
トップページへ