ルーティング
一言でいうと
ルータが受信したIPパケットの宛先IPアドレスとルーティングテーブルから適切な転送先を判断して、IPパケットを転送する動作。
試験のポイント
- 「ルータがルーティングするたび、レイヤ2ヘッダがどんどん書き換えられていく」という動作を把握することがとても重要です。
- シスコシステムズ製ルータのルーティングテーブルを正しく解釈できるようにしておくことも重要です。
ルータがデータを転送する仕組み
ルータは、データ(IPパケット)を次の流れで転送します。
- 1. ルーティング対象のIPパケットを受信する
- 2. 宛先IPアドレスからルーティングテーブル上のルート情報を検索して、転送先を決定する
- 3. レイヤ2ヘッダを書き換えてIPパケットを転送する
ルータがIPパケットを転送するには、ルーティングテーブル(⇒本連載第8回)に転送先のネットワークの情報(ルート情報)が、あらかじめ登録されていることが大前提です。ルーティングテーブルの詳細や、ルーティングテーブルにルート情報を登録する方法は、次項で解説します。
ここでは図1のネットワーク構成[1]で、ホスト1からホスト2にIPパケットを送信する場合を例に、ルータがIPパケットを転送していく仕組みを解説します。
【ルータR1】ルーティング対象のIPパケットの受信
ルータがルーティングするIPパケットは、次のようなアドレス情報を持っています。
- 宛先レイヤ2アドレス(MACアドレス):ルータ
- 宛先IPアドレス:ルータのIPアドレス以外
図1でホスト1からホスト2へ転送するIPパケットは、まずルータR1へ転送されます。そのときのアドレス情報は、次のようになっています。
- 宛先MACアドレス:R11
- 送信元MACアドレス:H1
- 宛先IPアドレス:192.168.2.100
- 送信元IPアドレス:192.168.1.100
宛先MACアドレスはルータR1のものです。一方、宛先IPアドレスはルータR1ではなく、ホスト2のものです。したがって、ルータR1は、受信したIPパケットをルーティング対象だと判断します。
【ルータR1】ルーティングテーブルの検索
受信したIPパケットをルーティング対象だと判断したルータR1は、自分が持っているルーティングテーブルから、そのIPパケットの宛先IPアドレスに一致するルート情報を検索します。検索の結果、宛先IPアドレス192.168.2.100に一致するルート情報は「192.168.2.0/24」だと判明します。そこから、転送先のネクストホップアドレスは「192.168.0.2」、すなわちルータR2であると分かります[2]。
【ルータR1】レイヤ2ヘッダを書き換えてIPパケットを転送
ルータR1は、ルーティングテーブルを検索して得たルート情報から、受信したIPパケットを、ネクストホップアドレスである192.168.0.2(ルータR2)へ転送します。ただし、それにはルータR2のMACアドレスを知る必要があります。
そこで、ルータR1はARP(⇒本連載第2回)を行って、ネクストホップアドレス192.168.0.2からMACアドレス(どちらもルータR2)を求めます。ARPにより、宛先(ルータR2)MACアドレスが「R21」だと分かります。
そうしたら、ルータR1は、IPパケットに新しいイーサネットヘッダを付けてインタフェース2からルータR2に向けて転送します。新しいイーサネットヘッダの宛先MACアドレスは「R21」で、送信元MACアドレスは「R12」です。
ルータR1によるルーティングにより、レイヤ2ヘッダであるイーサネットヘッダは置き換えられました。一方、IPヘッダのIPアドレスは変化しませんでした。大切なポイントですので覚えておいてください[3][4]。
注
[1]: 図1ではすべてイーサネットインタフェースとしています。また、ネットワーク構成を簡単にするために、レイヤ2スイッチを介さずに各イーサネットインタフェース間を直接接続しているものとします。
[2]: 単純なルーティングを行う場合、ルータはトランスポート層以上の層をチェックしません。図2ではHTTPのデータを転送していますが、これをチェックはしません。
[3]: IPヘッダでは、TTL(Time To Live)を-1し、それに伴ってヘッダチェックサムの再計算を行います。TTLはIPパケットがループしないようにするためのものです。
[4]: ルータでNAT(⇒本連載第6回)を行うときにはIPアドレスが書き換えられます。単純なルーティングを行うときには、IPアドレスは変わりません。