RIP
RIPはディスタンスベクター型のルーティングプロトコルです。
- ルータが知っている経路制御情報をブロードキャストすることでルーティングテーブルを形成します。
- 動きがわかりやすく、ルータの負荷も軽いのが特徴です。
- しかし、ルーティングテーブルが大きくなると、ネットワークの帯域を大きく消費します。
- ブロードキャストを用いるため、関係ないホストに負荷をかけることがあります。
- 30秒周期でブロードキャストし、経路制御情報を交換します。収束(コンバージェンス)にも時間がかかります。
- つまり、2セグメント先のルータに情報が伝わるのは60秒後になります。
RIP2での改良点
- ブロードキャストでなくマルチキャストを用います。関係ないホストに負荷をかけることがありません。
- サブネットマスク情報を交換できます。これにより、可変長サブネットの経路制御が可能です。
- ルーティングドメイン対応。論理的に独立した複数のRIPを動作できます。
- 外部ルートタグを使って、BGPなどから得た経路情報をRIPを使って自AS内に通知できます。
- 認証キー対応。認証キーを持っているパケットのみ受信できます。偽造や改ざんを防ぎます。
RIPにおける経路制御情報の伝播
- ルータは30秒周期で、経路制御情報をブロードキャストします。
- 受け取ったルータは距離に1を足してルーティングテーブルに保存し、また次の周期(30秒後)でブロードキャストします。
サブネットマスクを使ったRIPの動作
- RIPではサブネットマスク情報を交換できませんが、サブネットマスクを使ったネットワークでも利用可能です。
- ルータのインタフェースのクラスとマッチした場合、インタフェースが持つプレフィックス長で処理します。
- クラスとマッチしなかった場合、各クラスのデフォルトのプレフィックス長で処理します。
- 具体的には下図のとおりです。
RIP2ではサブネットマスク情報を交換できるようになりました。柔軟なサブネットに対応可能となりました。
無限カウントを防ぐ仕組み
下図のようにRIPに何の仕組みもなければ、通信断が起きると、経路情報がループし、カウントが無限に増え続けてしまいます。
- 通信断が起こると、④にてルータAは経路情報を伝えないようになりますが、⑤にあるようにルータBは伝え続けます。
- ⑥にてルータAは「ルータBからならネットワークAにたどり着く」と勘違いして、ルータBに経路情報を伝えます。
- ⑦にてルータBはカウントを1つ足して伝えます。こうしてカウントが増え続けます。
この無限カウントを防ぐための仕組みがスプリットホライズンとホップ数の最大値15です。
スプリットホライズン
スプリットホライズンとは、ルータから教えられた経路情報をそのルータへ送り返さない機能です。
ルータBは、ルータAから教えられた経路情報をルータAに伝えないので、無限カウントが起こりません。
スプリットホライズンはRIPだけでなく、BGPでも使用されます。
ホップ数の最大値15
RIPにおいてホップ数の最大値は15です。
距離16になると、それ以上はカウントされません。これにより、無限カウントが発生しても、その時間を短くできます。
※距離16は120秒間保持され、過ぎると消去されます。このタイマーはガベージコレクションタイマーと呼ばれます。
ループを防ぐ仕組み
下図のようなループ構成は、障害発生時の迂回手段として有効です。
しかし、ネットワークAとルータAの間で通信断が起きると、ルータBにて間違った経路情報が登録されてしまう恐れがあります。
この不具合をできるだけ防ぐための機能が、ポイズンリバースとトリガーアップデートを組み合わせた方法です。
ポイズンリバースとトリガーアップデート
通信断が起こるとポイズンリバースにより通信不能を表す距離16を送信します。
通信断を検知したルータA、および距離16を受信した各ルータはトリガーアップデートにより、直ちに隣接ルータに伝えます。
なお、通信断によって通信不能を登録した後、全てのルータが通信断を認識するまでのホールドダウンタイマー(180秒)が働きます。その間は上書き登録されません。誤って経路情報が再登録されることを防ぎます。