ポイズンリバース【Poison Reverse】

広告

広告

ポイズンリバースとは

最終更新
2006-05-14T19:23:00+09:00
この記事のURI参照
http://www.7key.jp/nw/routing/r_protocol/poison_reverse.html#what

ネットワーク構成に冗長性がある場合に、ルーティングループの発生を防止するために考案されたのがポイズンリバースと呼ばれる方法です。ポイズンリバースはスプリットホライズンを更に徹底したもので、ルート情報を受け取った際にそのルート情報を受け取ったインターフェイスを含めたすべてのインターフェイスからそのルートの到達不可能性を送信します。このため、ポイズンリバース付きスプリットホライズンと呼ばれることもあるようです。ただ、大規模なネットワークでこれを実装すると膨大なトラフィックが発生していまいます。そこで、ルートのダウン情報を受けた場合にだけそのルート情報のメトリックを到達不可能として送り返す実装が一般的です。

ではまず冗長構成のネットワークでルーティングループが起こるメカニズムから見てみましょう。図:Fig1のようにループが作られているネットワークがコンバージェンスに達している状態で、ネットワーク"10.1.1.0"に障害が発生したとしましょう。

図:Fig1

まずルータAは「"10.1.1.0"、ホップ数16」を含むルート情報をアドバタイズします。するとルータBとルータDのルーティングテーブルは図:Fig2のようになります。

図:Fig2

この場合に、ルータBとルータDがアドバタイズする前に、ルータCがアドバタイズする可能性はゼロではありません。つまり、ルータBとルータDのトリガアップデートよりも先にルータCの定時更新のタイミングが早かった場合、ルータCは"10.1.1.0"に関してネクストホップをルータBとするルートとルータDとするルートの両方を知っていますので、スプリットホライズンの原則に従ってネクストホップをルータBとするルートをルータDに教え、ネクストホップをルータDとするルートをルータBに教えます(図:Fig3)。

図:Fig3

この後、ルータBとルータDがそれぞれルータAに"10.1.1.0"のルート情報を教えることによってルーティングループが発生する可能性があるのです。

ではポイズンリバースを使うとどのようにしてルーティングループが抑えられるのでしょうか。まず"10.1.1.0"がダウンしたことを検出したルータAは、トリガアップデートで直ちに「"10.1.1.0"、メトリック16」の情報をルータBとルータDに送信します。これを受信したルータBとルータDはすべてのインターフェイスから「"10.1.1.0"、メトリック16」の情報をアドバタイズします。ルータBは「"10.1.1.0"、メトリック16」という情報を"s1"からだけでなく"s0"からも送信しますので、ルータAはネクストホップをルータBとする場合も"10.1.1.0"に到達できないことを知ります。同様にルータDをネクストホップとする場合も"10.1.1.0"に到達できないことを知ります(図:Fig4)。

図:Fig4

この時点でルータAでは宛先"10.1.1.0"のルートに関して、ネクストホップをルータBとするルートもルータDとするルートもメトリックが16となり、ホールドダウン状態となります。従って、これらのルートに関しては今後新しい情報を受け付けることはありません。このことによってアドバタイズのタイミングに関りなく、ルーティングループの発生が抑えられることとなります。

広告

当ページ作成にあたり、参考にさせてもらったリソース

Copyright (C) 2006 七鍵 key@do.ai 初版:2006年05月14日 最終更新:2006年05月14日