ネットワークの学習を進める中で、「ポイズンリバース」と「ピンポン現象」という言葉に出会うことがあると思います。これらは、ルーティングプロトコルにおいて重要な概念であり、特に距離ベクトル型プロトコル(RIPなど) では不可欠なものです。
本記事では、ポイズンリバースとピンポン現象について、分かりやすく解説していきます。
ポイズンリバースとは?
ポイズンリバース(Poison Reverse) は、ネットワーク経路が到達不能になった場合、その情報を他のルータに無限大メトリックで通知する仕組みです。
これにより、誤ってループが発生しないように、周囲のルータに「この経路は無効」と知らせる役割を果たします。
ポイズンリバースの目的
ポイズンリバースは、ルーティングループ(ピンポン現象) が発生するのを未然に防ぐための方法です。通常、ルータは自分が保持している経路情報を他のルータにアドバタイズしますが、到達不能な経路に関しては無限大メトリック(RIPでは16)で通知することで、ループを防ぎます。
ポイズンリバースの動作
以下の例で、ポイズンリバースがどのように動作するかを確認してみましょう。
-
ネットワークの状態変化
例えば、ルータA、ルータB、ルータCが直列に接続されており、ルータCがネットワークCに接続されているとします。あるとき、ネットワークCがダウンしてしまいます。 -
ルータBがポイズンリバースで通知
ルータCは、ネットワークCに到達できないことを確認した後、無限大メトリックで「ネットワークCには到達不能」とルータBに通知します。この通知をポイズンリバースと呼びます。 -
ルータAへの伝播
ルータBもこの情報を受け取り、ルータAに「ネットワークCは到達不能」と無限大メトリックでアドバタイズします。
こうして、ネットワークCへの経路は無効とされ、他のルータが誤ってその経路を使わないように防止できるのです。
ピンポン現象とは?
ピンポン現象は、ルータが到達不能な経路情報を互いに誤って交換し続けることによって、メトリックがどんどん増加し、最終的に無限大に達する現象です。これは、距離ベクトル型プロトコル特有のループ問題です。
ピンポン現象の発生条件
ポイズンリバースが動作せず、ルータが互いに「到達可能」と誤解する場合にピンポン現象が発生します。特に、ルータ自体がダウンした場合にはポイズンリバースが動作しないため、ルータ間でメトリックが増加していきます。
ピンポン現象の例
-
ルータCのダウン
ルータCがダウンしたと仮定します。ルータBとルータAは、ルータC経由でネットワークCに到達できると誤解し続けます。 -
メトリックの増加
ルータBは「ルータA経由で行ける」と思い、メトリックを1つ増やして通知し、ルータAも同様に「ルータB経由で行ける」と考えます。この誤った経路情報がピンポン状にやり取りされ、メトリックが増加していきます。 -
メトリックが16に達する
最終的に、メトリックが16(RIPの場合)に達し、「到達不能」として経路情報が削除されます。
ピンポン現象とポイズンリバースの違い
特徴 | ポイズンリバース | ピンポン現象 |
---|---|---|
発動条件 | 接続先ネットワークのダウン時 | ルータ自体のダウン時 |
通知内容 | 到達不能を無限大メトリックで即座に通知 | 誤って経路を交換し続け、最終的に16で無効化 |
ループ防止効果 | 未然にループを防ぐ | メトリックが無限大に達するまでループが続く |
ピンポン現象後の状態について
一度メトリックが16に達して「到達不能」となった経路は、ルーティングテーブルから削除されます。その後は、ポイズンリバースによる通知は不要となり、ピンポン現象は発生しなくなります。
まとめ
- ポイズンリバースは、ネットワークが到達不能になった際、無限大メトリックで「到達不能」を周囲に通知し、ループを防ぐための仕組みです。
- ピンポン現象は、ルータ自体がダウンして誤った経路情報を交換し続けたときに発生し、メトリックが16に達することでループが止まります。
- 一度メトリックが16に達すると、経路情報が削除され、ピンポン現象が解消されます。