目次
ルータのデータ転送の流れ
ルータのデータ(IPパケット)の転送の流れは以下のようになります。
- ルーティング対象のIPパケットを受信する
- 宛先IPアドレスからルーティングテーブル上のルート情報を検索して、転送先を決定する
- レイヤ2ヘッダを書き換えてIPパケットを転送する
なお、ルータがIPパケットを転送するには、あらかじめルーティングテーブルに転送先のネットワークの情報(ルート情報)が登録されていることが大前提です。
ルーティングテーブルが完成していることがルーティングの大前提。知らないネットワークにはデータ(IPパケット)を転送できません。
以下のネットワーク構成でホスト1からホスト2にIPパケットを送信する場合を例にして、ルータがIPパケットを転送していく様子を解説していきます。
すべてイーサネットインタフェースとしています。また、ネットワーク構成を簡単にするために、レイヤ2スイッチを介さずに各イーサネットインタフェース間を直接接続しているものとします。
ルーティング対象のIPパケットの受信 R1
ルータがルーティングする対象のIPパケットは、以下のようなアドレス情報のパケットです。
宛先レイヤ2アドレス(MACアドレス):ルータ
宛先IPアドレス:ルータのIPアドレス以外
ホスト1からホスト2宛てのIPパケットは、まず、R1へ転送されます。そのときのアドレス情報は、以下のようになっています。
宛先MACアドレス:R11
送信元MACアドレス:H1
宛先IPアドレス:192.168.2.100
送信元IPアドレス:192.168.1.100
宛先MACアドレスがR1のもので、宛先IPアドレスはR1ではなくホスト2のIPアドレスです。受信したIPパケットはルーティング対象のIPパケットです。
なお、ホスト1がまずR1へ転送するためには、ホスト1はR1のIPアドレスを知っている必要があります。それが、ホスト1のデフォルトゲートウェイの設定です。ホスト1のデフォルトゲートウェイとして、R1の192.168.1.254を設定している必要があります。そして、デフォルトゲートウェイのIPアドレスからARPでMACアドレスを解決します。
ルーティングテーブルの検索 R1
R1はルーティング対象のパケットの宛先IPアドレスに一致するルーティングテーブルのルート情報を検索します。宛先IPアドレス192.168.2.100に一致するルート情報は192.168.2.0/24です。そのため、転送先のネクストホップ(次のルータ)は192.168.0.2、すなわちR2であることがわかります。
図では、例としてHTTPのデータとしています。ルータは単純なルーティングを行うときにはトランスポート層以降の部分はチェックしません。
レイヤ2ヘッダを書き換えてIPパケットを転送 R1
R1はルーティングテーブルのルート情報から受信したIPパケットを192.168.0.2(R2)へ転送します。そのために、R2のMACアドレスが必要です。ルーティングテーブル上の一致するルート情報のネクストホップアドレスである192.168.0.2のMACアドレスを求めるためにARPを行います。ARPで宛先MACアドレスR21がわかれば、新しいイーサネットヘッダに書き換えてIPパケットをインタフェース2から転送します。レイヤ2ヘッダであるイーサネットヘッダはまったく新しくなります。しかし、IPヘッダのIPアドレスはまったく変わりません。
- IPヘッダでは、TTLを-1して、それにともなってヘッダチェックサムの再計算を行います。
- ルータでNATを行うときにはIPアドレスが書き換えられます。単純なルーティングを行うときには、IPアドレスは変わりません。
ルーティング対象のIPパケットの受信 R2
R1から転送されたIPパケットはR2で受信します。このときのIPパケットのアドレス情報は以下のとおりです。
宛先MACアドレス:R21
送信元MACアドレス:R12
宛先IPアドレス:192.168.2.100
送信元IPアドレス:192.168.1.100
ホスト1が送信したものとMACアドレスは書き換わっていますが、IPアドレスは同じです。宛先MACアドレスがR2のMACアドレスで宛先IPアドレスはR2のIPアドレスではありません。これはルーティング対象のIPパケットです。
ルーティングテーブルの検索 R2
R2はルーティングするために宛先IPアドレス192.168.2.100に一致するルート情報を検索します。すると、192.168.2.0/24のルート情報が見つかります。ネクストホップは直接接続となっていて、最終的な宛先IPアドレス192.168.2.100はR2と同じネットワーク上だということがわかります。
レイヤ2ヘッダを書き換えてIPパケットを転送 R2
R2はルーティングテーブルのルート情報から、IPパケットの最終的な宛先である192.168.2.100(ホスト2)は、R2のインタフェース2と同じネットワーク上にいることがわかります。ホスト2へIPパケットを転送するためには、ホスト2のMACアドレスが必要です。そこで、IPパケットの宛先IPアドレス192.168.2.100のMACアドレスを求めるためにARPを行います。
ARPでホスト2のMACアドレスH2がわかれば、新しいイーサネットヘッダを付けて、R2のインタフェース2からIPパケットを転送します。やはり、R2で受信したときとはMACアドレスは変わりますが、IPアドレスは同じです。
R2で転送したIPパケットは無事に最終的な宛先となっているホスト2まで届くことになります。
また、以降の解説は省略しますが、通信は原則として双方向であるということをあらためて思い出してください。
ホスト1からホスト2へ何かデータを送信すると、その返事としてホスト2からホスト1へデータの送信が発生します。ホスト2からホスト1へ送信するデータも同じようにルータが宛先IPアドレスとルーティングテーブルから転送先を判断します。そして、レイヤ2ヘッダを書き換えながら転送していくことになります。
こうしたルータのルーティングの動作は、前述のように「ルーティングテーブルが完成していることが大前提」です。このことは、ルーティングの解説でくどいぐらいに書きますが、とても大事なことなので忘れないでください。
ルーティングは電車の乗り換えのようなイメージ
ルータがIPパケットをルーティングするときに、イーサネットヘッダなどのレイヤ2ヘッダが書き換わっていきます。レイヤ2は同じネットワーク上のデータの転送を行う役割があります。ルータを超えるとネットワークが変わるので、レイヤ2ヘッダも書き換わっていきます。このようなルータを超えると、レイヤ2ヘッダが書き変わっていくことは、電車の乗り換えのようなイメージで考えてください。
ネットワークの通信で最終的な宛先が他のネットワーク上に接続されているというのは、電車で行きたい駅が最寄駅とは電鉄会社または路線が違うようなイメージです。電鉄会社や路線が違うと、直通で目的の駅までは行けません。ターミナル駅で乗り換えしなければいけません。ターミナル駅がルータに相当します。
TCP/IP通信では、最終的にIPパケットを宛先のホストまで届けるようにします。そのために、同じネットワーク上の転送をどんどん繰り返します。同じネットワーク上の転送のために、イーサネットなどのレイヤ2ヘッダを付けていきます。ルータを超えてネットワークが変わると、レイヤ2ヘッダも変わっていきます。
IPパケットに相当するのが、目的の駅まで行きたい人です。電鉄会社が違うと、一本で目的の駅には行けないので、ターミナル駅で電車を乗り換えていきます。レイヤ2ヘッダが電車に相当するイメージです。
そして、ルーティングでも電車の乗り換えでも大事なことは、きちんと宛先を知っていることが大前提です。ルーティングではルータのルーティングテーブルがきちんと完成していなければいけません。目的の駅まで到達するためには、どこでどの電車に乗り換えればよいかがわかっていなければいけないのと同じです。
IPルーティングのキホン
- ルータ ~ルーティングを行う中心的な機器~
- ルータでネットワークを分割
- レイヤ3スイッチ
- ルーティングの動作
- ルーティングテーブル
- ルーティングテーブルの作り方
- ホストルート ~/32のルート情報~
- スタティックルーティング?それともダイナミックルーティング? ~設定の考え方の違い~
- スタティックルーティングとダイナミックルーティング(RIP)の設定の比較
- スタティックルートのメリット・デメリット
- ルーティングプロトコルのメリット・デメリット
- ルート情報をアドバタイズする意味
- 宛先ネットワークまでの距離を計測 ~アドミニストレイティブディスタンスとメトリック~
- 等コストロードバランシング
- ルート集約 ~まとめてルーティングテーブルに登録しよう~
- デフォルトルート ~究極の集約ルート~
- 最長一致検索(ロンゲストマッチ) ~詳しいルート情報を優先する~
- インターネットのルート情報を見てみよう AT&T Looking Glass
- ルーティングプロトコルの分類 ~適用範囲~
- ルーティングプロトコルの分類 ~アルゴリズム~
- ルーティングプロトコルの分類 ~ネットワークアドレスの認識(クラスフルルーティングプロトコル/クラスレスルーティングプロトコル)~
- Cisco スタティックルートの設定
- ip default-network ~特定のルート情報に「*」をつける~
- スタティックルートをバックアップに ~フローティングスタティック~
- スタティックルートの設定を一歩ずつわかりやすく行う設定例[Cisco]
- Ciscoスタティックルーティングの設定例
- IPルーティング基礎演習Part1
- IPルーティング基礎演習Part2
- IPルーティング基礎演習Part3
- Windows PCのスタティックルートの設定 route addコマンド
- RIPの概要
- RIPの動作 ~RIPルート情報を定期的に送りつける~
- RIPスプリットホライズン
- RIPタイマ
- RIPルートポイズニング ~不要なルート情報を速やかに削除~
- Cisco RIPの設定と確認
- Cisco RIPの設定例
- RIPでのデフォルトルートの生成 ~スタティックルートの再配送~
- RIPでのデフォルトルートの生成 ~default-information originate~
- RIPでのデフォルトルートの生成 ~ip default-network~
- RIP 設定ミスの切り分けと修正 Part1
- RIP 設定ミスの切り分けと修正 Part2
- RIP 設定ミスの切り分けと修正 Part3
- RIP 設定ミスの切り分けと修正 Part4
- パッシブインタフェース(passive-interface) ~ルーティングプロトコルのパケット送信を止める~
- 転送経路を決定する方法 ~アドミニストレイティブディスタンス/メトリックと最長一致検索~
- デフォルトゲートウェイの詳細 ~ホストもルーティングしている~
- デフォルトゲートウェイの冗長化の概要
- Cisco HSRPの仕組み
- Cisco HSRP 仮想ルータ宛てのパケットがアクティブルータへ転送される仕組み
- Cisco HSRPトラッキング ~より柔軟にアクティブルータを切り替える~
- Cisco HSRP設定と確認
- Cisco HSRPの負荷分散
- HSRP 設定ミスの切り分けと修正 Part1
- VRRPの仕組み
- VRRPの設定と確認コマンド [Cisco]
- ルーティングテーブルのトラッキング(Cisco HSRP/VRRP)
- Cisco HSRP ルーティングテーブルのトラッキング設定例
- VRRP ルーティングテーブルのトラッキング設定例
- GLBPの仕組み
- Cisco GLBPの設定と確認
- Cisco GLBPの設定例
- HSRP/VRRP/GLBPのアドレス情報のまとめ