はじめに
IPパケットを別のネットワークへ送るとき、ホストやルーターは宛先IPアドレスを見ただけで、次にどの機器へ渡せばよいかを直接知っているわけではありません。そこで参照するのがルーティングテーブル(経路制御表)です。
ルーティングテーブルには、どの宛先へ向かうパケットを、どの次ホップや送信インターフェースへ渡すかという経路情報が登録されています。この記事では、宛先IPアドレスに一致する経路を探し、最長一致で最も具体的な経路を選ぶ仕組みを中心に解説します。
この記事で分かること
- ルーティングテーブル(経路制御表)の役割
- ルーティングテーブルに登録される主な情報
- 宛先IPアドレスから経路を選ぶ流れ
- 最長一致で経路を選ぶ理由
- デフォルトルートとホストルートの違い
- 経路情報がどのように登録されるか
ルーティングテーブルとは
ルーティングテーブルとは、IPパケットを転送するときに、宛先IPアドレスに対応する経路を判断するための情報です。ホストやルーターは、宛先に一致する経路を探し、その結果から次ホップや送信インターフェースを決めます。
例えば、宛先が直接接続されたIPネットワーク上にある場合は、その経路を使って送信できます。別のネットワークへ送る場合は、ルーティングテーブルに登録されたルーターを次ホップとして利用します。この判断を各機器で繰り返すことで、IPパケットは宛先へ近づいていきます。
IPアドレスとルーティングの全体像は、IPとは?ネットワーク層の役割やルーティングを初心者向けに分かりやすく解説で解説しています。
ルーティングテーブルには何が登録されるか
ルーティングテーブルの表示形式はOSやルーターによって異なりますが、経路を選ぶために重要なのは次の情報です。
| 項目 | 役割 |
|---|---|
| 宛先プレフィックス | どのIPアドレス範囲に適用する経路かを示す |
| 次ホップ | パケットを次に渡すルーターなどを示す |
| 送信インターフェース | パケットをどのネットワークインターフェースから送るかを示す |
直接接続されたネットワークでは、別のルーターを経由せず、そのインターフェースから直接送信する経路もあります。反対に、離れたネットワークでは、次ホップとなるルーターへパケットを渡します。
実際のルーティングテーブルには、経路の種類やメトリックなど、経路を比較するための情報が追加されることもあります。ただし、この記事では「宛先に一致する経路をどのように選ぶか」に範囲を絞ります。
宛先IPアドレスから経路を選ぶ流れ
ホストやルーターがIPパケットを送るときは、宛先IPアドレスとルーティングテーブルの宛先プレフィックスを比較します。
基本的な流れは次のとおりです。
- パケットの宛先IPアドレスを確認する
- その宛先に一致する経路をルーティングテーブルから探す
- 複数の経路が一致した場合は、最も長いプレフィックスを持つ経路を優先する
- 選んだ経路の次ホップと送信インターフェースを使って転送する
例えば宛先が10.10.20.50で、ルーティングテーブルに10.0.0.0/8と10.10.0.0/16と10.10.20.0/24が登録されていれば、3つすべてが宛先に一致します。この場合は、最も具体的な10.10.20.0/24が選ばれます。
最長一致で最も具体的な経路を選ぶ
複数の経路が宛先IPアドレスに一致するとき、プレフィックス長が最も長い経路を優先する考え方を最長一致と呼びます。
| 経路 | 10.10.20.50に一致するか | 優先度 |
|---|---|---|
0.0.0.0/0 | 一致する | 低い |
10.0.0.0/8 | 一致する | ↓ |
10.10.0.0/16 | 一致する | ↓ |
10.10.20.0/24 | 一致する | 最も高い |
/24は/16や/8よりも多くのビットが宛先と一致するため、より狭いアドレス範囲を表します。そのため、より具体的な経路として優先されます。
プレフィックス長とアドレス範囲の関係は、CIDRとVLSMの違いとは?プレフィックス長とサブネット分割を解説を参照してください。
最長一致は、宛先に一致する異なるプレフィックスの中から、最も具体的なプレフィックスを選ぶ規則です。一方、同じ宛先プレフィックスについて複数の候補経路が学習された場合に、どの経路情報を採用するかは、経路の種類やメトリックなどを使う別の判断です。
デフォルトルートとホストルート
デフォルトルートは、より具体的な経路が見つからない宛先に使用する経路です。IPv4では0.0.0.0/0と表します。
/0はプレフィックス長が0なので、すべてのIPv4アドレスに一致します。ただし最長一致では最も短いプレフィックスになるため、/8や/24などの具体的な経路が存在すれば、そちらが優先されます。デフォルトルートは、個別経路がない場合に使われる最後の候補と考えると分かりやすくなります。
反対に、ホストルートは1つのIPv4アドレスだけに一致する経路です。IPv4では192.168.1.10/32のように表し、32ビットすべてをプレフィックスとして扱います。特定の1台だけを他の経路と分けて扱いたい場合などに利用できます。
ルーティングテーブルはどのように作られるか
経路選択を行うには、あらかじめルーティングテーブルへ利用できる経路が登録されている必要があります。代表的な経路の入り方は次の3つです。
- 直接接続されたネットワークから得られる経路
- 管理者が設定する静的経路
- RIP・OSPF・BGPなどのルーティングプロトコルから学習する動的経路
静的経路と動的経路の違いは、静的ルーティングと動的ルーティングの違いで解説しています。RIPのようなルーティングプロトコルは経路情報を交換し、ルーターが利用できる経路を作る役割を担当します。
一方、この記事の中心は「経路をどう作るか」ではなく、「登録済みの経路から宛先IPアドレスに合う経路をどう選ぶか」です。経路情報の作成と経路選択を分けて考えると、ルーティングの仕組みを整理しやすくなります。
まとめ
ルーティングテーブル(経路制御表)は、IPパケットの宛先に対して、次にどこへ転送するかを決めるために使う経路情報です。
- 宛先プレフィックス、次ホップ、送信インターフェースなどを基に転送先を判断する
- 宛先IPアドレスに一致する経路を探す
- 複数の経路が一致した場合は、最も長いプレフィックスを持つ経路を優先する
0.0.0.0/0は個別経路がない場合に使うデフォルトルート/32は1つのIPv4アドレスだけに一致するホストルート- 経路情報は直接接続、静的設定、ルーティングプロトコルなどから登録される
ルーティングを理解するときは、「ルーティングプロトコルが経路を作ること」と「ルーティングテーブルから実際に経路を選ぶこと」を分けて考えることが重要です。