今回の記事ではRIPv2についてご紹介します。
RIPv2の概要
ディスタンスベクタ方式
RIPはディスタンスベクタ方式のルーティングプロトコルです。
このプロトコルでは伝言ゲームのように、自身が学習しているネットワーク情報を次のルータへ伝え、それを学習した隣のルータが更に隣のルータへと伝達していきます。
このようなアップデートを繰り返すことで、結果的に全てのネットワークの情報を全ルータで共有することになります。
クラスレスルーティングプロトコル
RIPv2はクラスレスルーティングプロトコルのため、アップデートパケットにサブネットマスクを含みます。
そのため、VLSMなどの複雑なサブネットワーク環境もサポートすることが可能です。
メトリック
RIPのメトリックはホップ数です。
ホップ数とはルータを越える数の事で、このホップ数が少ない程、宛先ネットワークに近い経路だと判断します。
図2の構成では、ルータAから192.168.1.0/24ネットワークへの経路は2つ存在します。
ルータBを経由する場合は、ルータを2つ越えると宛先ネットワークに到達します。
一方、ルータCを経由した場合は、ルータを3つ越えると、宛先のネットワークに到達します。
RIPはホップ数で最適経路を判断するため、ルータBを経由する経路を最適経路として選択します。
ただし、最大ホップ数が15までとなっているため、それ以上ルータを越えるようなネットワークには対応できません。
アップデート間隔
RIPは、30秒間隔で定期的に隣接ルータにアップデートを送信します。
マルチキャストを使用
RIPv2では、224.0.0.9のマルチキャストアドレスを使用し、隣接ルータにアップデートを送信します。
ブロードキャストでのアップデートに比べ、RIPの動作していない端末への負荷が削減されることになります。
ルータがお互いに同じルート情報を教え合うことを防ぐために、「ルート情報を教えてもらった方向へは、そのルート情報を送り返さない」という機能が実装されています。
これを「スプリットホライズン」と呼びます。
上図は、ルータAがルータBから教えてもらったネットワークCのルート情報を送り返していない様子を示しています。
スプリットホライズンでは、無駄なアップデートをしないことでルート情報を教え合うことを防いでいましたが、この「ポイズンリバース」では、「教えてもらったルート情報のメトリック値を16ホップにする」ことで、お互いにルート情報を教え合うことを防ぎます。
図5では、ルータAがルータBから教えてもらったネットワークCのルート情報を16ホップにして送り返している様子を示しています。
次に、ネットワークがダウンした時を考えてみましょう。
ルーティングループ防止の機能が全く実装されていないルータが、ネットワークダウンを検知した場合、ネットワークがダウンしたという事実を他のルータに通知することはありません。
そこでルートポイズニング機能を有効にすると、ルータがネットワークダウンを検知した場合、ネットワークがダウンしたということを「メトリック値16」にすることで、隣接ルータに通知します。 この通知は30秒に1回のルーティングアップデートの際に行われます。
またこの時、ルートダウン情報を受け取った隣接ルータは、「ネットワークがダウンしているかもしれない」と判断して、そのエントリをホールドダウン状態にします。
ホールドダウン状態では、間違ったアップデートが送られてくる可能性があるため、ルーティングテーブルとアップデートのネクストホップアドレスが同じでも、新たに受信したエントリをルーティングテーブルに一定期間採用しなくなります。 この一定の期間をホールドダウンタイマーといいます。
トリガーアップデート
ルートポイズニングでは30秒に一回の定期的アップデートの際に、ネットワークダウン情報を隣接ルータに通知していました。これでは正しいルート情報がネットワーク全体に伝わるまでに時間がかかってしまいます。
そこで、ネットワークダウンなどのトリガー(引き金)があった場合は、定期的なアップデート間隔とは全く別に、即座にRIPアップデートをすることが出来る機能があります。 これがトリガーアップデート機能です。
このトリガーアップデートによって、ネットワークダウンを検知したルータは30秒に一回のアップデートを待たずして、すぐにネットワークダウン情報を隣接ルータに通知することができるのです。
いかがでしたでしょうか。
ぜひお勉強の際にお役立て下さい。