🎓 レベル:標準 | 重要度:A(必須) 📎 前提:サブネット化とCIDR・VLSM
要点(BLUF)
- ルータは受け取ったパケットの宛先IPをルーティングテーブルと照合し、次ホップへ転送します。これを宛先到達まで各ルータが繰り返します。
- 複数の経路が一致したら、**最も長いプレフィックス(ロンゲストマッチ)**を選びます。
- 同じ宛先を別の方法で学んだら、アドミニストレーティブディスタンス(AD)で情報源の信頼度を比較し、同じ情報源内ではメトリックで選びます。
ルーティングテーブルの中身
ルータは「どのネットワークへは、どこへ渡せばよいか」の表を持ちます。
Router# show ip route
Codes: C - connected, S - static, O - OSPF, D - EIGRP
C 192.168.1.0/24 is directly connected, Gi0/0
S 10.0.0.0/8 [1/0] via 192.168.1.254
O 172.16.5.0/24 [110/20] via 192.168.1.253
S* 0.0.0.0/0 [1/0] via 192.168.1.254
各行の読み方:
- 先頭コード:その経路の学習元(C=直結、S=静的、O=OSPF、D=EIGRP)。
[AD/メトリック]:[110/20]ならAD=110、メトリック=20。via:次ホップのIP。0.0.0.0/0はデフォルトルート(どこにも一致しないとき使う出口)。
転送の意思決定(3段階の優先順位)
宛先 172.16.5.10 を転送するとき、ルータは次の順で考えます。
graph TD A["宛先IPを受信"] B["テーブルで一致する経路を全て探す"] C["最長プレフィックス一致を選ぶ(ロンゲストマッチ)"] D["同じ宛先を複数の情報源で学んでいたらADが小さい方"] E["同じ情報源内ならメトリックが小さい方"] F["次ホップへ転送"] A --> B --> C --> D --> E --> F
1. ロンゲストマッチ
10.1.1.1 宛てに対し 10.0.0.0/8 と 10.1.0.0/16 の両方が一致するなら、より具体的な /16 を選びます。プレフィックスが長いほど宛先を細かく指しており、優先されます。
import ipaddress
dest = ipaddress.ip_address("10.1.1.1")
routes = ["10.0.0.0/8", "10.1.0.0/16", "0.0.0.0/0"]
matches = [r for r in routes if dest in ipaddress.ip_network(r)]
best = max(matches, key=lambda r: ipaddress.ip_network(r).prefixlen)
print("matched:", matches)
print("longest-prefix winner:", best)
実行結果:
matched: ['10.0.0.0/8', '10.1.0.0/16', '0.0.0.0/0']
longest-prefix winner: 10.1.0.0/16
2. アドミニストレーティブディスタンス(AD)
異なるプロトコルが同じ宛先・同じプレフィックス長を教えたとき、どの情報源を信じるか。AD(小さいほど信頼)で決めます。
| 情報源 | AD |
|---|---|
| 直結(connected) | 0 |
| 静的(static) | 1 |
| EIGRP | 90 |
| OSPF | 110 |
| RIP | 120 |
3. メトリック
同じプロトコル内で複数経路があるとき、プロトコル固有のコスト(OSPFは帯域ベースのコスト、RIPはホップ数)で最小を選びます。
ルーティングと転送は別物
- ルーティング(経路制御):テーブルを作る作業。静的設定やルーティングプロトコルが担当(第6章)。
- フォワーディング(転送):できたテーブルを引いて1パケットを送り出す作業。 両者を分けると、「ルータはまず地図を作り、その地図を高速に引いて荷物をさばく」と理解できます。
なぜ各ルータが独立に判断してよいのか(設計の直観)
パケットには「最終目的地IP」だけが書かれ、全経路は書かれません。各ルータが自分のテーブルで次の1ホップだけを決め、それを宛先まで連鎖させます。これは中央管制なしで地球規模に拡張できる設計で、途中の経路が変わっても、各ルータがテーブルを更新するだけで自動的に追従します(ホップバイホップ転送)。
⚠️ よくある誤解
- 「ADとメトリックは同じ尺度」ではない。ADは情報源の信頼度(プロトコル間の比較)、メトリックは経路のコスト(同一プロトコル内の比較)。順番はAD→メトリック。
- 「デフォルトルートがあれば全部届く」ではない。デフォルトは「他に一致がないときの出口」。より具体的な経路が常に優先されます(ロンゲストマッチ)。
- 「直結ネットワークも設定が要る」ではない。インターフェースにIPを付ければ、そのネットワークは自動でテーブルに載ります(AD=0)。
対応 lab
[[networking-study/labs/03-03_longest_prefix.py]]— ロンゲストマッチの実証
関連
- 前:
[[03-02_サブネット化とCIDR]]/次:[[03-04_ARPとICMP]] - 経路の作り方:
[[06-01_静的ルーティング]]/[[06-03_リンクステート型]]/AD詳細:[[06-04_ルーティングの比較と再配布]]