Mímisbrunnr知恵の泉

← コンピュータネットワーク 一覧

🎓 レベル:標準 | 重要度:B(重要) 📎 前提:静的ルーティング

要点(BLUF)

距離ベクトルの考え方

各ルータは「どの宛先へは、どの隣へ、距離いくつで行ける」という表を隣にだけ配ります。受け取った側は距離に1を足して再配布します。

graph LR
  A["ルータA"]
  B["ルータB"]
  C["ルータC(宛先網に直結)"]
  C -->|"網Xは距離0"| B
  B -->|"網Xは距離1"| A
  A -->|"自分は網Xへ距離2と認識"| A

全体像を知らずに、隣の申告だけで最短を選ぶ——これが「距離ベクトル」です。

RIP:ホップ数

Router(config)# router rip
Router(config-router)# version 2
Router(config-router)# network 192.168.1.0
Router(config-router)# no auto-summary

EIGRP:複合メトリックと高速収束

CiscoのEIGRPは距離ベクトルの進化形(ハイブリッドとも呼ばれる)。

ルーピング対策

「隣を信じる」と、誤情報が往復して経路が振動します。主な対策:

# RIPのホップ数メトリック: 速さを見ないため不利な経路を選ぶ例
paths = {
    "経路A: 1Gbpsを2ホップ": {"hops": 2, "bw_mbps": 1000},
    "経路B: 10Mbpsを1ホップ": {"hops": 1, "bw_mbps": 10},
}
rip_choice = min(paths, key=lambda k: paths[k]["hops"])
fast_choice = max(paths, key=lambda k: paths[k]["bw_mbps"])
print("RIPが選ぶ(ホップ最小):", rip_choice)
print("本当に速い(帯域最大):", fast_choice)
print("一致?:", rip_choice == fast_choice)

実行結果:

RIPが選ぶ(ホップ最小): 経路B: 10Mbpsを1ホップ
本当に速い(帯域最大): 経路A: 1Gbpsを2ホップ
一致?: False

RIPは遅い1ホップを選んでしまう——帯域を見るOSPF/EIGRPが必要になる理由です。

なぜ大規模で使われなくなったか(設計の直観)

距離ベクトルは「全体地図を持たない」ぶん実装は軽いですが、(1) 噂の伝播が遅く収束に時間がかかり、(2) 全体を知らないためループに陥りやすい。ネットワークが大きく速くなるほど、この弱点が顕在化します。そこで各ルータが全体地図を持つリンクステート型(OSPF)が主流になりました。EIGRPは距離ベクトルの弱点を多く克服しましたが、標準ではないため、相互運用が要る場面ではOSPFが選ばれます。

⚠️ よくある誤解

対応 lab

関連