要約
- 単純なスプリットホライズンは学習元への広告から経路を省く。ポイズンリバースは同じ経路をメトリック16で返し、自分を戻りのネクストホップから明示的に外す。
- この否定は二台の相互参照をタイムアウト前に壊すが、更新を大きくし、三台以上が古い情報を回すループまでは見抜けない。
RFCより先に広がっていたRIP
1988年6月の RFC 1058 は、新しいプロトコルの発表として書かれていない。すでに広く使われながら正式な仕様がなく、細部の異なる実装を整理することが目的だった。直接の土台はBerkeley Unixに含まれた routed、さらに遡ればXeroxのPUPとXNSである。距離ベクトルという発想自体は初期ARPANETにも見られた。
運用後に仕様化されたため、文書は弱点を隠さない。各ルーターが持つのは全体図ではなく、宛先ごとの距離と、その最良値を知らせた隣接ルーターである。隣同士が定期的に距離を交換し、それぞれが局所的に表を更新する。
RIPは中規模で比較的均質な自律システム内を想定していた。経路全体を配らない簡潔さは導入を容易にしたが、数字がどの隣接情報から派生したかを広告だけでは追えない。
借りた情報が別の証言に見えたとき
AがB経由で宛先Dへ行くとする。BがDへの本物の接続を失っても、AはしばらくDを到達可能と広告するかもしれない。BがAを代替経路に選べば、採用したのは独立した道ではなく、自分が以前Aへ渡した情報である。AはBを、BはAを向く。
どちらも局所規則に従っている。それでもパケットは往復し、広告される距離は少しずつ増える。RIPが「無限まで数える」と呼んだのは、消えた宛先が遠くなり続けるように見えるこの過程である。
原因は悪意でなく、来歴の欠落にある。隣接ルーターから届く数値には、その数値が自分の古い広告を巡回させたものかどうかを示す経路列がない。
16は障害の終点であり規模の上限だった
RIPは16を無限とし、利用可能な経路を15ホップまでに制限した。これは拡張性の弱さであると同時に、誤った経路を早く終わらせる設計でもある。無限が大きければ大きな網を表せるが、誤情報も長く数え続ける。
RFC 1058はこの交換条件を明記した。無限は正しい経路より大きくなければならないが、不要に大きくしてはならない。15という境界は、到達できる網の直径と、障害時に許す偽の距離の双方を決める。
メトリック16は世界全体への判決ではない。そのRIP交換、その方向、その時点で経路を使えないという意味である。別インターフェース、別プロトコル、あるいは後の更新が到達性を作る可能性は残る。
省略は反響を止め、ポイズンは古い値を取り消した
単純なスプリットホライズンは、経路を学んだ隣接相手またはインターフェースへその経路を広告しない。AがBからDを学んだなら、AがBへ送る更新にはDを載せない。Bの情報がAを通って「別の証拠」に化けるのを防ぐ。
ポイズンリバースは沈黙より明確である。AはDを残し、値だけを16にする。その意味は「Dがどこからも消えた」ではない。「A自身の最良経路がBへ戻る以上、BはDへ行くためにAを選んではならない」である。
静止した表だけ見れば、省略と無限は同じ結論に見える。違いは時間にある。Aが黙るだけなら、BはA経由の古い正値をタイマーが切れるまで保持できる。16が届けば、その正値を直ちに無効値で置き換えられる。
余分な広告が撤回を速めた
共有バックボーンでは、一つのインターフェースから多数の経路を学ぶことがある。単純な方式なら戻りの更新から全て省ける。ポイズンリバースでは、それぞれを16として載せる。安定時には「自分を使うな」という項目がパケットの大半を占めかねない。
しかし変化時、その冗長さが価値になる。明示的な否定は、隣接表に残る古い肯定を待ち時間なしで上書きできる。帯域を使って撤回の到着を買う設計である。
RFC 1058は選択を残した。単純方式、ポイズン、管理者による切替、変化後だけ一定時間16を送り、その後は省略する混合方式である。無限の意味ではなく、負の証拠をどれだけ運ぶかが設定対象だった。
二台の鏡は割れても、三角形は残った
AとBだけが互いをDへのネクストホップにしているなら、16を返すことで支えが直ちに消える。古い経路の自然失効を待つ必要はない。
三台になると、情報の出所は一つ先へ隠れる。AはB、BはC、CはAを選べる。どのルーターも、直前に学んだ相手へ同じ経路を正値で返してはいない。それでも円は成立する。スプリットホライズンは隣接関係しか検査できず、メトリックは16まで上がり続ける。
トリガー更新は危険な時間を縮める。選択経路が悪化すると、周期を待たず変更を送り、そこへ依存する隣接がさらに伝える。ただし全体が同時に変わるわけではない。更新は遅延し、周期広告と交差し、別の局所変化に追い越され得る。速い伝播は原子的な合意ではない。
消す前に「無効」を残す
RIPでは、更新が途絶えた経路をすぐ表から消さない。まず16にしてガベージコレクション期間中も広告し、その後に削除する。即時削除は状態を減らすが、隣接が保持する正値を訂正できない。
撤回情報には独自の寿命が必要だった。最終的には消える情報でも、取り消す対象より先に消えてはならない。ポイズンリバースと同じく、観測可能な否定を先に置き、ローカル状態の回収を後に置く。
IPv6でも知識の問題は残った
RFC 1812 はRIP実装にスプリットホライズンを必須、ポイズンリバースを推奨とした。一方、広告量の負担から無効化できる設定を認め、無限値を返す期間を限定する実装も勧めた。
RFC 2080 のRIPngはIPv6でも同じ仕組みを保持し、ポイズンを望ましい動作としながら、インターフェースごとに無効、単純、ポイズンを選べるよう求めた。アドレス表現が変わっても、借りた証言が循環する問題は同じだった。
オンデマンド回線向けの RFC 2091 は、順序と確認応答を持つトリガー更新を導入した。それでもポイズン規則を必須にした。更新が確実に届くことと、更新の来歴が独立していることは別だからである。
RFC 2453 のRIPv2も、16、スプリットホライズン、ポイズン、トリガー更新、二台までという限界を残した。パケット形式の進歩は距離ベクトルに全経路の視野を与えなかった。
「到達不能」が証明できた範囲
ポイズンされた経路が示すのは一つだけである。受信側へ戻る経路を選んでいる送信側を、その受信側はネクストホップにしてはならない。宛先の世界的消滅、全代替経路の喪失、隣接の不正や責任までは示さない。
RIPの歴史的な工夫は、この狭さにある。完全なパスを送らず、広告の方向、終端値、時間を使って来歴の一部を判断可能にした。見える二者ループを素早く止め、見えない長いループを仕様の外ではなく、明記された限界として残した。
出典と証拠の限界
- RFC 1058 — Routing Information Protocol
- RFC 1812 — Requirements for IP Version 4 Routers
- RFC 2080 — RIPng for IPv6
- RFC 2091 — Triggered Extensions to RIP to Support Demand Circuits
- RFC 2453 — RIP Version 2
これらはアルゴリズムと要件を示すが、現在の製品既定値、普及率、特定ネットワークの収束時間、ループの意図は示さない。Trigger RIPは対象とするオンデマンド回線の文脈に限られ、RIPngの推奨も全インターフェースでの有効化を証明しない。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
