ここまでで、RIP の素朴さ(隣に聞いて +1 で広がる)と 2 つの壁(hop 上限 15 と count-to-infinity)を見てきた。素朴さと限界は、同じ「距離」だけで測るという発想の表と裏だった。
最後に残った渇きは、1 つだ。
なら、距離以外の何で測れば、この限界の先へ行けるのか。
3 つの動詞が出そろった。観察した、伝播させた、限界に行き当たった。そして最後の動詞が、次を呼んだ。
3 つの場面 — 手で書く運用が追いつかなくなる場面、隣に聞いて辞書が広がる場面、距離だけで測る素朴さの裏に潜む 2 つの壁 — は、各段の渇きで次の段を呼ぶ連鎖として編まれていた。


考えてみよう
ここまでの 3 つの場面 — 手で書く運用が追いつかなくなる場面、隣に聞いて辞書が広がる場面、距離だけで測る素朴さの裏に潜む 2 つの壁 — を振り返ってほしい。3 つは、偶然並んだだけなのか、それとも 1 本の流れとしてつながっていたのか。5 秒だけ、自分なりの答えを出してみてほしい。
1. 3 つの動詞を並べてみる
最初に見たのは、本社 2 拠点なら両方向 2 本のスタティックで済む網が、支店が増え、経路が変わる網になった瞬間に、人の手では追いつかなくなる場面だった。書く本数は拠点が増えるほど組み合わせで膨らみ、経路が 1 本変わるたびに関連する全ルータで書き直しが連鎖し、誰か 1 人が忘れたら通信が止まる。動的ルーティングが解こうとしているのは、この「人の手で辞書を書き続ける運用の追いつかなさ」だった。動詞は 観察 だった。
次に見たのは、その「次の道具」(RIP)がどう動くかだった。隣のルータに、自分の辞書のうち隣に伝える分を update として送る。受け取った側は、それに +1 して自分の辞書に書く。3 台のルータ(CORE-RT-01 / SALES-RT-01 / BRANCH-RT-A)で、距離が 0 → 1 → 2 と積み上がっていく。隣に聞くだけで、知らない宛先までの距離が次々と積み上がっていく。動詞は 伝播 だった。
その次に見たのは、その素朴さの裏に隠れていた 2 つの壁だった。hop 上限 15(16 = infinity)と count-to-infinity。どちらも「距離だけで測る」という発想からくる構造的な帰結で、素朴さと限界は同じ距離ベクタの表と裏だった。動詞は 限界 だった。
観察、伝播、限界。


2. 3 動詞は 1 本の流れとして編まれていた
「観察」の最後に残った渇きは、こうだった。「動的ルーティングが解こうとしているのは、手で書く運用の追いつかなさ。じゃあ、その『次の道具』はどう動くのか?」
この渇きが、そのまま「伝播」の冒頭を呼んでいた。「伝播」は「その次の道具は、こうやって動く」と答え始めた。
「伝播」の最後に残った渇きは、こうだった。「隣に聞いて +1 で受け取るだけで辞書が広がる素朴さは見えた。けれど、距離はどこまで遠くまで積み上がれるのか? 経路が消えたら、その情報は隣に伝わるのか?」
この渇きが、そのまま「限界」の冒頭を呼んでいた。「限界」は「その 2 つの問いに正面から答える」と答え始めた。
「限界」の最後に残った渇きは、こうだった。「素朴さと限界は同じ距離ベクタの表と裏だった。距離だけでは測れない場面が、現実の網にはある。なら、距離以外の何で測れば、この限界の先へ行けるのか?」
そしてこの渇きが、いまこの場面の冒頭を呼んでいる。
各段の最後に残った渇きは、次の段の冒頭でそのまま受け取られている。3 つは連鎖していた。
3 つの動詞は、ただ並んでいたのではなかった。1 本の流れとして編まれていた。
観察で手で書く運用の限界を確認し、伝播で隣に聞いて +1 で広がる仕組みを確認し、限界で hop 上限 15 と count-to-infinity の 2 つの壁を確認した。3 つをつなげると、距離で測る世界の地図そのものが浮かび上がる。
最後の動詞「限界」をもう 1 度よく見ると、それが二重の役割を担っていた。
1 つ目は 現状の整理 だった。「距離だけでは測れない場面が、現実の網にはある」。リンクの帯域、遅延、リンクが今生きているか / 落ちているか。そうした情報は、距離の数字には溶け込まない。これは、距離ベクタの世界の中で出た結論だった。
2 つ目は 次の物語を呼ぶ伏線 だった。「なら、距離以外の何で測れば、この限界の先へ行けるのか?」。これは、距離ベクタの世界の外側を指す問いだった。
最後の動詞「限界」は、距離ベクタの世界の中で話を閉じる役割と、その外側へ手を伸ばす役割を、両方とも担っていた。
3. リンクの状態を網全体に放送する発想 — 距離以外の物差しを手に入れる
距離以外の何で測れば、この限界の先へ行けるのか。
距離ベクタでは、隣に聞いて +1 で受け取る。やり取りする情報は hop count の 1 種類だけ。経路が消えた事実は、距離の数字でしか伝えられない。リンクが今生きているか、地図のどこに穴が空いたかは、距離からは見えない。
各ルータが、隣に聞くのではなく、自分が今見ているリンクの状態 — このリンクは生きているか / 落ちているか、帯域はどれくらいか — を、網全体に放送する。各ルータは、その放送を全部受け取り、自分のところに「網全体のリンクの状態を集めた地図」を作る。そして、その地図から最短経路を計算する。
これは、距離ベクタとは別の発想で動く、もう 1 つの解だ。
この解に、ここで初めて名前を与える。リンクステート と呼ばれる。代表例のプロトコルの名前は OSPF と呼ばれる。動作の細部 — 何という単位で放送するのか、地図はどんなデータ構造か、最短経路はどんな手順で計算するのか — は、別のシリーズで本格的に扱う。ここで受け取るのは、その輪郭まで。「リンクの状態を網全体に放送し、各ルータが地図として集める。地図から最短経路を計算する」。これが、もう 1 つの解の入口だ。


距離ベクタとリンクステートを、5 つの観点で横に並べてみる。
- 測る対象 : 距離ベクタは
hop countの 1 種類だけ。リンクステートは、各リンクの状態(生死・帯域・遅延)を集めた地図。 - やり取りするもの : 距離ベクタは隣に自分の辞書を渡す。リンクステートは自分が見ているリンクの状態を網全体に放送する。
- 各ルータが持つもの : 距離ベクタは隣からの +1 で書いた辞書。リンクステートは網全体のリンク状態を集めた地図。
- 経路の決め方 : 距離ベクタは隣に聞いて +1 で受け取る。リンクステートは地図から最短経路を計算する。
- 経路が消えたとき : 距離ベクタは距離の数字でしか伝えられない(古い情報の逆流リスク、
count-to-infinity)。リンクステートは「このリンクが消えた」という事実そのものを直接放送できる。
直前まで見ていた count-to-infinity は、距離ベクタの世界では構造的に避けられない現象だった。やり取りする情報が hop count 1 種類しかなく、経路が消えた事実を距離の数字に溶かすしかなかったからだ。リンクステートの世界では、その事実を直接放送できる。そもそも、起こり方の前提が違う。
リンクステートは「距離ベクタの上位互換」ではない。測る発想が違うから、向いている場面も違う。距離ベクタは、交換する情報が少なくてシンプル。小さく閉じた網なら、これで十分に動く。リンクステートは、各ルータが網全体の地図を持つので、収束が速くて loop に強い反面、地図のメモリ使用量と計算量が網規模に応じて増える。
測る発想が違えば、見える世界も違う。優劣の話ではなく、適用範囲の話だった。
4. RIP は今も生きている道具
RIP は今、世の中で「使われていない技術」として扱われがちだ。教科書の最初の方に出てくるが、本番では OSPF をはじめとした他のプロトコルの方が圧倒的によく使われている。15 hop の上限と count-to-infinity を見たあとなら、その評価は一見もっともらしく見える。
けれど、RIP は「使えない技術」ではない。
RIP の hop count という発想が活きる場面は、今も実際にある。
- 数十拠点までの桁感の網(具体的な閾値ではなく、桁感として小さい)
- 変動が小さい運用(網の構造が頻繁には変わらない)
- 拠点同士をつなぐだけの小規模事業所
- ラボ環境
- レガシー機器が混ざる閉鎖系
こういう網では、各ルータが網全体の地図を持つ必要はない。隣からの距離を辞書に書くだけで、十分に動く。交換する情報が少なくて済むので、設定もシンプルだ。15 hop の上限が問題にならない規模で運用すれば、count-to-infinity も実用上はちゃんと収束する(16 = infinity の仕組みが効く)。
RIP は「古いから残っている」のではない。「適用範囲に合っているから生きている」。RIP と OSPF を並べたとき、問うべきは「どちらが上か」ではない。「どちらの発想がこの網に合うか」だ。
ここまでで身につけた 3 動詞(観察・伝播・限界)は、距離で測る世界の地図そのものだ。その地図は、小さく閉じた網では今でも生きている。そして、その地図の端から、次の世界(リンクの状態を地図として持つ世界)が見えている。
明日から使える3つの観測コマンド、そしてリンクの状態を地図として持つ次の世界へ
冒頭で抱えていた渇きに、いま、自分の言葉で答えられる。
距離以外の何で測れば、この限界の先へ行けるのか。リンクの状態(生死・帯域・遅延)そのものを、各ルータが網全体に放送し、地図として集める。距離の数字に溶かさず、事実を直接渡す。これが距離ベクタの世界の外側にある、もう 1 つの解の輪郭だった。代表例のプロトコルが、リンクステートの段で待っている。
明日からの自分に残るのは、次の 3 行だ。
「観察した。伝播させた。限界に行き当たった。3 つの動詞が、距離で測る世界の地図としてつながった」
「最後の動詞『限界』には、2 つの顔があった。現状の整理と、次を呼ぶ伏線」
「測る発想が違えば、見える世界も違う。RIP は使えない技術ではなく、適用範囲がある道具」
明日、ルータの前で「RIP の状態を確認したい」と思ったときには、ここまでで身につけた 3 つの観測コマンドを、それぞれ別の問いに答えるものとして使い分けられる。show ip protocols は「設定 — そう動く設計になっているか」、show ip route rip は「現在地 — 辞書の R 行」、debug ip rip は「今まさに流れている update(ただし負荷が高いので短時間だけ)」。発想が変わっても、この観測の 3 面の構えはそのまま使える。OSPF に出会ったら、show ip ospf neighbor / show ip route ospf / debug ip ospf という並びとして、同じ構えが立ち上がってくる。
明日、誰かが「OSPF」と口にしたときには、ここで受け取った 1 枚の地図 — 「リンクの状態を網全体に放送し、各ルータが地図として集める」という輪郭 — を起点にして、その先へ進んでいける。動作の細かい話 — 何という単位で放送するのか、地図はどんなデータ構造で、最短経路はどう計算するのか — に出会ったら、まずこの 1 枚に戻ってくればいい。
明日、誰かが「RIP は古い」と言ったときには、ここで受け取った中立の視点 — 「測る発想が違えば適用範囲も違う。優劣の話ではなく、適用範囲の話」 — を思い出して、その判断を保留できる。「使えない」と「適用範囲が違う」は、別の話だ。
リンクの状態を地図として持つ世界。その世界の最初の入口で、また続きを開けばいい。