TL

距離ベクトル型の無限カウント問題と対策

RIPが障害時にループする本当の理由を、距離が際限なく増える瞬間の挙動から理解できる。スプリットホライズン・ポイズンリバース・ホールドダウンの役割と限界まで腑に落ちる。

応用ルーティングRIP距離ベクタ収束ネットワーク最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.無限カウントは、ダウンした経路を隣接ルータが互いの古い広告を信じ合い、距離を1ずつ増やし続けて収束しない現象。原因は各ルータが経路の全体像を持たない距離ベクタの構造そのもの。
  • 2.RIPは到達不能を16ホップと定義して増加を打ち切り、スプリットホライズンとポイズンリバースで逆流を止め、ホールドダウンで古い良い情報を一定時間拒む。
  • 3.これらは万能ではない。2ノード間のループは抑えられても3ノード以上では破れることがあり、ホールドダウンは収束を遅らせる代償を伴う。

距離ベクタが信じる「隣の言い値」

距離ベクタ型ルーティング(RIPが代表)では、各ルータが宛先ごとに「距離(ホップ数)とネクストホップ」だけを保持し、その距離ベクタを隣接ルータと定期的に交換します。理論的な核はベルマンフォード法による分散的な距離計算で、dist(自分→宛先) = min over 隣接n ( cost(自分→n) + 広告された dist(n→宛先) ) を各自が局所的に解きます。

ここで決定的なのは、ルータが経路の全体像(トポロジ)を持たないことです。隣が広告する距離を信じるしかなく、その距離が「実は自分を経由した経路」かどうかを判別できません。この情報の欠落が、障害時に無限カウントへ直結します。

無限カウントが起きる瞬間

最小構成で発生機序を追います。直線状の A — B — C で、宛先ネットワーク N が A に直結しているとします。安定時は次の状態です。

ルータNへの距離ネクストホップ
A0(直結)
B1A
C2B

いま A — N がダウンし、A は N を到達不能(距離無限大)と判断します。問題は、A がそれを広告するより先に B の定期広告が C に届く、あるいは B が C の古い広告を受け取る場合です。C はまだ「自分は N まで距離2で届く(ネクストホップ B)」と広告しています。A はこの C 由来の情報を B 経由で受け取り、「N へは距離 2 + 1 = 3 で届く」と誤って学習します。実体は C → B → A と戻ってくるループ経路です。

以後は次のように進みます。

ステップ0: A=∞, B=1, C=2     (A-N ダウン直後)
ステップ1: A は C(=2) を信じ A=3
ステップ2: B は A(=3) を信じ B=4
ステップ3: C は B(=4) を信じ C=5
ステップ4: A は C(=5) を信じ A=6
...        距離が際限なく増え続ける

互いに相手の広告を信じて距離を1ずつ加算し続けるため、正しい「到達不能」へ収束しません。これが**カウント・トゥ・インフィニティ(無限カウント)**です。原因は前述のとおり、各ルータが「その距離は自分発の情報が回り込んだものではないか」を構造的に検証できない点にあります。

第一の歯止め:最大ホップ数

RIPは「無限大」を有限値で近似します。距離16を到達不能と定義し(有効な経路は15ホップまで)、増加が16に達した時点で打ち切ります。これにより距離は無限に発散せず有限ステップで止まるため、収束は遅くとも最終的にループは解消します。

16は“小さすぎる無限大”

最大ホップ数は発散を止めますが、根本対策ではありません。値が大きいほど収束に時間がかかるため安易に上げられず、結果として RIP は直径15ホップを超える網には使えません。これは欠陥というより、無限カウントを実用的に封じ込めるための設計上の妥協です。

逆流を止める:スプリットホライズンとポイズンリバース

無限カウントの引き金は「学習した経路を、学習元の方向へ広告し返す」ことでした。これを断つのが次の2手法です。

  • スプリットホライズン: あるインターフェースで学習した経路は、そのインターフェースには広告しない。上の例で B は「N へ距離1(ネクストホップ A)」を A から学んだので、A 方向へは N の経路を広告しない。C についても同様で、戻り情報そのものを発生させない。
  • ポイズンリバース: 学習元の方向へ「広告しない」のではなく、あえて距離16(到達不能)で広告し返す。沈黙より明示的に無効化を伝えるため、相手が古い情報を保持し続ける窓を狭められる。
手法学習元への広告狙い弱点
通常そのまま広告し返すループの温床
スプリットホライズン広告を抑制(沈黙)戻り情報を断つ3ノード以上の輪では破れうる
ポイズンリバース距離16で広告明示的に無効化を伝える広告サイズが増える
2ノードは守れても、輪は守れない

スプリットホライズンは A と B のような直接の相互広告ループは確実に防ぎます。しかし、複数のルータが環状に接続したトポロジでは「学習元ではない別の隣」を経由して古い情報が回り込み、ループが再発しうる。スプリットホライズンが万能でない理由はここにあります。

時間で抑える:ホールドダウンとトリガードアップデート

最後に、情報が網全体に行き渡るまでの過渡状態を時間で守るのがホールドダウンです。ある経路がダウン(または距離が悪化)したと知ると、ルータはその宛先について一定時間、より良い距離の広告を受け付けません。古い良い情報が網内に残留していても、それを信じて経路を復活させてしまう事故を防ぎます。

これと対になるのがトリガードアップデートです。定期広告(RIPは標準30秒間隔)を待たず、変化を検知した瞬間に広告します。悪い知らせ(到達不能)を即座に伝播させ、古い良い情報がループを作る前に網全体を更新する狙いです。

ダウン検知:
  該当経路を到達不能としてトリガードアップデートで即広告
  ホールドダウンタイマ起動 → 一定時間は良い距離を無視
タイマ満了後:
  通常どおり最良経路の学習を再開
速報(トリガード)と慎重(ホールドダウン)の役割分担

トリガードアップデートは「悪い知らせを速く伝える」、ホールドダウンは「良い知らせを慎重に受け取る」。両者は相補的で、前者で更新を急がせつつ、後者で残留情報による誤学習を防ぎます。ただしホールドダウン中は正当な経路復旧も遅れるため、収束の速さと安全性はトレードオフになります。

根本的にループに強い設計との対比

ここまでの対策はいずれも症状の緩和であり、距離ベクタが全体像を持たない構造そのものは変わりません。一方、リンクステート型(OSPF)が無限カウントに強い理由は、全ルータが同一のトポロジ地図を共有し、各自がダイクストラ法で経路を独立計算するため、隣の言い値を盲信しない点にあります。EIGRPは距離ベクタ系でありながら DUAL という独自アルゴリズムで無後退経路を保証し、無限カウントを原理的に回避します。

試験で問われる論点

頻出は「無限カウントの発生機序」と「各対策がどの段階に効くか」。発散の打ち切り(最大ホップ数)、逆流の遮断(スプリットホライズン/ポイズンリバース)、過渡状態の保護(ホールドダウン/トリガードアップデート)という3層で整理し、スプリットホライズンが3ノード以上のループには無力という限界まで押さえると確実です。

距離ベクタの収束特性は、経路集約やIPアドレスとサブネットの設計による網の直径とも結びつきます。各対策の効きどころと限界をアルゴリズムの構造までさかのぼって理解しておくと、「RIPの経路がなかなか落ちない」「障害後に一時的にループする」といった事象を設計思想から切り分けられるようになります。

ネットワーク Article

距離ベクトル型の無限カウント問題と対策を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

ルーティング

比較で見る軸

難易度: advanced / カテゴリ: ネットワーク / タグ数: 5

導入後に効く点

RIPは到達不能を16ホップと定義して増加を打ち切り、スプリットホライズンとポイズンリバースで逆流を止め、ホールドダウンで古い良い情報を一定時間拒む。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
ネットワーク
タグ数
5

判断チェックリスト

  • 自社の用途が「ルーティング / RIP」に近いか確認する。
  • 強みである「無限カウントは、ダウンした経路を隣接ルータが互いの古い広告を信じ合い、距離を1ずつ増やし続けて収束しない現象。原因は各ルータが経路の全体像を持たない距離ベクタの構造そのもの。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

ルーティングRIP距離ベクタ収束ネットワークルーティングRIP距離ベクタ