ルーティングテーブルとは
ルータは、受信したパケットをどのインターフェイス・ネクストホップへ転送すべきかを判断するために、ルーティングテーブルという情報を保持しています。Cisco IOS/IOS XEを搭載したルータでは、ルーティングテーブルは、show ip route(IPv4)・show ipv6 route(IPv6)コマンドで確認できます。
Router# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
...
Gateway of last resort is 203.0.113.1 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 203.0.113.1
C 192.168.1.0/24 is directly connected, GigabitEthernet0/0
L 192.168.1.1/32 is directly connected, GigabitEthernet0/0
O 192.168.2.0/24 [110/2] via 192.168.1.2, 00:12:34, GigabitEthernet0/0ルーティングテーブルの構成要素
ルーティングプロトコルコード
出力の各行の先頭にある1〜2文字のコードは、そのルート情報がどこから得られたかを示します。代表的なコードには、C(直接接続)、L(ローカル、そのインターフェイス自身のアドレス)、S(スタティックルート)、O(OSPF)、D(EIGRP)、R(RIP)、B(BGP)などがあります。
プレフィックスとプレフィックス長
192.168.2.0/24のように表示される部分が、プレフィックス(宛先ネットワークまたはホストを表す値)とプレフィックス長(CIDR表記)です。/24はプレフィックス長を表し、IPv4ではネットワークマスク255.255.255.0に対応します。このルートに一致する宛先IPアドレスを持つパケットが、このルートの対象になります。
ネクストホップ
via 192.168.1.2のように表示される部分がネクストホップです。そのルートにマッチしたパケットを、次にどのルータ(IPアドレス)へ転送すればよいかを示しています。ルートによっては、ネクストホップIPアドレスではなく、送出インターフェイスだけが指定・表示されることもあります。直接接続ルート(C)やローカルルート(L)には、ネクストホップの代わりにis directly connectedという表示がされます。
アドミニストレーティブディスタンス(AD)とメトリック
[110/2]のように表示される、角括弧内の2つの数値が、それぞれアドミニストレーティブディスタンス(AD)とメトリックです。
- AD(管理距離):そのルート情報の「情報源としての信頼度」を表す指標です。値が小さいほど信頼度が高いとみなされます。複数の異なる情報源(例:スタティックルートとOSPF)から、同じ宛先への経路情報が得られた場合、ADが最も小さい情報源から得たルートが優先されます。
- メトリック:RIP、OSPF、EIGRPなどでは、同じ情報源(同じルーティングプロトコル)内で複数の経路の優劣を比較するための指標です。プロトコルによって算出方法が異なり、値が小さいほど良い経路とみなされます。BGPでは、単一のメトリックだけではなく、複数のパス属性に基づいてベストパスを選択します。
代表的なルート情報源のAD値
以下はCisco IOS系における既定値であり、ADは設定によって変更できます。
| ルート情報源 | AD(既定値) |
|---|---|
| 直接接続(Connected) | 0 |
| スタティックルート | 1 |
| BGP(外部) | 20 |
| EIGRP(内部) | 90 |
| OSPF | 110 |
| IS-IS | 115 |
| RIP | 120 |
| EIGRP(外部) | 170 |
| BGP(内部) | 200 |
| 不明(到達不能を示す値) | 255 |
直接接続ルートのADが0と最も小さいのは、IPアドレスが設定されて稼働しているインターフェイスの接続先ネットワークから得られる情報が、他のどんな情報源よりも信頼できるためです。同様に、管理者が手動で入力するスタティックルートには、Cisco IOS系では既定でAD=1が設定されています。AD 255は到達可能な経路の優先順位を表す値ではなく、その経路をルーティングテーブルへ採用しないことを示します。
ラストリゾートゲートウェイ(gateway of last resort)
出力冒頭のGateway of last resort is 203.0.113.1 to network 0.0.0.0という行は、ルーティングテーブル内のどの具体的なルートにも一致しない宛先のパケットを転送する際に使われる、デフォルトルート(0.0.0.0/0)の情報を示しています。デフォルトルートがルーティングテーブルに存在しない場合は、Gateway of last resort is not setと表示されます。
ルータの転送先決定の仕組み
ルータは、同じ宛先プレフィックスに対する複数のルーティング情報から、ADとメトリックを用いてルーティングテーブルへ採用する経路を決定します。実際にパケットを転送する際には、採用済みの経路の中から最長プレフィックス一致によって転送先を決定します。
1. アドミニストレーティブディスタンス(AD)
同じ宛先プレフィックスに対して、異なる情報源から複数の経路情報が得られている場合、ADが最も小さい情報源のルートが優先されます。最も小さいADが同じ候補が複数ある場合は、メトリックも比較されます。
2. ルーティングプロトコルのメトリック
RIP、OSPF、EIGRPなどで、同じ情報源(同じルーティングプロトコル)から同じ宛先への経路が複数得られている場合は、そのプロトコル固有のメトリックを比較し、最も良い値の経路(またはロードバランシングに対応していれば複数の経路)が採用されます。BGPでは、複数のパス属性に基づいてベストパスを選択します。
3. 最長プレフィックス一致(longest prefix match)
採用済みのルーティングテーブルに、宛先IPアドレスに一致する経路が複数存在する場合、ルータは最もプレフィックス長(マスク長)が長い、より具体的な経路を優先します例えば、ルーティングテーブルに10.0.0.0/8・10.1.0.0/16・10.1.1.0/24という3つのルートが存在し、宛先10.1.1.5宛のパケットを転送する場合を考えます。3つのルートはいずれも宛先アドレスに一致しますが、最もプレフィックス長が長い10.1.1.0/24が、最も具体的な経路として優先されます。[1]。
補足
- 例えば、ルーティングテーブルに
10.0.0.0/8・10.1.0.0/16・10.1.1.0/24という3つのルートが存在し、宛先10.1.1.5宛のパケットを転送する場合を考えます。3つのルートはいずれも宛先アドレスに一致しますが、最もプレフィックス長が長い10.1.1.0/24が、最も具体的な経路として優先されます。 ↩