広告
広告
https://www.7key.jp/nw/routing/r_protocol/routing_loop.html#what
ルーティングループとは、トラフィックがルータ間で最大ホップ数に達するまでループする状態を指して言います。ディスタンスベクタ型ルーティングプロトコルの動作原理によって発生する障害です。
次の例のようなネットワークでルーティングループが発生するメカニズムについて説明します。まず、図:Fig1はネットワークがコンバージェンスに達している状態です。
ここでネットワーク"10.1.1.0"がダウンした場合を考えましょう。ダウンした後、ルータBが定期更新を行いますが、図:Fig2のように当然"10.1.1.0"は「ホップ2です」との情報も含まれています。
ルータAは既に"10.1.1.0"へのエントリを持っていますが、これはダウンしていますので図:Fig3のように新しく受信した情報でルーティングテーブルを書き換えます。
このことによって、宛先"10.1.1.0"に対してルータAはネクストホップをルータBとします。ルータBはネクストホップをルータAとします。この状態でルータA、もしくはルータBが宛先"10.1.1.0"のパケットを受け取ると、ルータAとルータBの間でパケットがループすることとなります。これがルーティングループです。
https://www.7key.jp/nw/routing/r_protocol/routing_loop.html#what2
あるルートがダウンすると、そのルートに対するホップ数が定期更新のたびに増加していきます。このことを無限カウントと呼びます。次の例で無限カウントの発生メカニズムを解説します。上で使った図:Fig3ですが再度掲載します。
この状態でルータAがルーティングアップデートを行うとしましょう。ルータAがアドバタイズする情報の中には「"10.1.1.0"はホップ3です」との情報が含まれています。ルータBのルーティングテーブルにはこのルート情報と同じ宛先アドレスとネクストホップを持つエントリが既にありますので、この新しい情報をルーティングテーブルに反映させます(図:Fig4)。
次にルータCがルーティングアップデートを送信します。ルータCがアドバタイズする情報の中には「"10.1.1.0"はホップ数3です」との情報が含まれていますのでルーティングテーブルは図:Fig5のようになります。
そしてルータBがアップデートを送信します。ルータBがアドバタイズする情報の中には「"10.1.1.0"はホップ数4です」との情報が含まれていますので、ルータAとルータCはルーティングテーブルを図:Fig6のように更新します。
このように、"10.1.1.0"に対するホップ数がどんどん高くなる減少のことを無限カウントと呼んでいます。無限カウント状態となり、ホップ数が16に達するとRIPではホールドダウンタイマーが起動され、そのエントリはやがてルーティングテーブルから削除されることとなりますが、ループが解消されるまでに非常に長い時間がかかります。このため、積極的なループ発生防止策として、スプリットホライズンやルートポイズニング、ポイズンリバースといった手法が開発されています。
https://www.7key.jp/nw/routing/r_protocol/routing_loop.html#supplement
無限カウントは宛先とネクストホップが同じルート情報に関してメトリックに関らず新しいルートを採用してしまうアルゴリズムに問題があります。しかし、ディスタンスベクタ型ルーティングプロトコルではあるルートがダウンした際に、そのダウンを知っているルータと知らないルータが混在するタイミングが必ず存在します。このタイミングで受け取ったアップデートは間違った情報に基づくルートである可能性が高いのです。このような状態でルーティングアップデートを続けると、ルーティングループを発生させる可能性が大きくなります。Ciscoルータでは、同じルートに関してホップ数の劣る情報を受け取った場合に次のルールに従います。
広告