ルーティングループの防止

無限カウント

ルーティングループを防ぐ手段として、もっとも単純な方法が「無限カウント」です。無限カウントでは、ただひたすら「待つ」ことによってループの防止を行います。ルーティングループは、お互いにあるネットワークのエントリに対して、メトリックを増やしながら教えあうことによって発生しています。そのメトリック増加の上限を決めることによって、ルーティングループを止めることができます。

RIPでは、ホップ数16が到達不可能、つまり無限のメトリックとみなされます。メトリックを増やしながら間違った経路を教えあって、メトリックが16(無限大)になると、そのエントリはホールドダウン状態となり、やがてルーティングテーブルからエントリが削除されます。
ただし、無限カウントではルーティングループが止まるまで、非常に長い時間がかかってしまいます。

スプリットホライズン

ルーティングループが発生する原因を考えてみると、図でルータBがルータAから教えてもらった10.0.0.0/8のネットワークに対するエントリをルータAに教え返していることがそもそもの原因であることがわかります。

もし、ルータBが10.0.0.0/8のエントリをルータAに教え返さなければ、ルータAのルーティングテーブルにある10.0.0.0/8のエントリは、やがてFlushタイマーがタイムアウトしルーティングテーブルから削除されるはずです。多少時間はかかるものの、無限カウントでループが止まるのを待つよりもはるかに短い時間でルーティングループを止めることができます。教えてもらったエントリを再び教え返さないようにすることを「スプリットホライズン」と呼んでいます。

「教え返さない」ということをもっと厳密にいうと、

「あるエントリを学習したインタフェースから送信するアップデートの中にはそのエントリを含めない」

ということです。

スプリットホライズンを有効にすると、次の図のようにルータBはルータAから教えてもらった10.0.0.0/8のエントリをルータAには教え返さなくなります。

つまり、インタフェースE0から送信されるRIPアップデートの中には、(10.0.0.0,2)というエントリが含まれません。しかし、インタフェースE1から送信されるRIPアップデートの中には(10.0.0.0,2)というエントリは含まれています。また、スプリットホライズンによって直接接続されたネットワークのエントリは、そのインタフェースから送信するRIPアップデートに含まれなくなります。

結局のところ、ルータBからインタフェースE0から送信されるRIPアップデートは(30.0.0.0,1)、インタフェースE1から送信されるRIPアップデートは(10.0.0.0,2) (20.0.0.0,1)という内容になります。そして、ルータBのルーティングテーブルにある10.0.0.0/8のエントリは、アップデートを受信しなくなるのでFlushタイマーがタイムアウトし、ルーティングテーブルから削除され、ネットワークはコンバージェンス状態になります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA