ルーティングループの防止(ルートポイズニング、ホールドダウン)
目次
ルーティングループが発生する原因をあらためて
さて、ルーティングループが発生する原因をもう一度考えてみると、次の図においてルータAの10.0.0.0/8というネットワークがダウンしたことをルータBが知らないために起こっていることもわかります。
ネットワークの障害、つまり変化に対してコンバージェンスが遅いからですね。また、ネクストホップアドレスが同じだからといって、間違った情報を信じていることもルーティングループが起こる原因です。これら、ルーティングループの原因に対する対策が、ルートポイズニングとホールドダウンです。
ルートポイズニングとホールドダウンの仕組み
ルータAは直接接続された10.0.0.0/8のネットワークがダウンすると、「ネットワークがダウンしました」ということを知らせるために、メトリックが無限大のエントリをRIPアップデートに含めます。つまり、(10.0.0.0,16)という内容のエントリを送るわけです。メトリックが無限大という「ポイズン(毒)」を送信しています。
すでにルーティングテーブル上にあるエントリに対して、メトリックが無限大のアップデートを受け取ると、「ネットワークがダウンしているかもしれない」と判断して、そのエントリをホールドダウン状態に置きます。ホールドダウン状態では、間違ったアップデートがやってくる可能性があるので、ルーティングテーブルとアップデートのネクストホップアドレスが同じでも、受信したエントリをルーティングテーブルにそのまま採用しなくなります。
トリガードアップデート
ルートポイズニングによって、早く他のルータにネットワークがダウンしたことを知らせることができるのですが、定期的なアップデートのタイミングで行うとやはり時間がかかってしまいます。そこで、ネットワークに何らかの変化が起こったときに、定期的なアップデート間隔を待たずに、即座にアップデートを送信する「トリガードアップデート」によって、コンバージェンスを早くしてネットワークの安定を図ることができます。