RIPの処理の流れ

RIPはとてもシンプルな仕組みで、その処理の流れは以下のようになります。

RIPルートを定期的に送信

STEP
1

受信したRIPルートをRIPデータベースに登録

STEP
2

最適なルートをルーティングテーブルに登録

STEP
3

RIPルートの定期的な送信を継続

STEP
4

RIPでは、他のRIPルータの存在は特に意識しません。この点は、OSPFやEIGRP、BGPとの大きな違いです。OSPF、EIGRP、BGPでは、まずネイバーを確立して、ネイバーとの間でルート情報を交換します。それに対して、RIPではとりあえずルート情報を「送りつける」わけです。RIPのルート情報はマルチキャストで送信する(v1の場合はブロードキャスト)ので、RIPが有効なルータが存在すれば、送りつけられたRIPルート情報を受信できます。

ただし、RIPルータは同じネットワーク上であることが大前提です。ルータのIPアドレスの設定を間違えるなどして、同じネットワーク上とみなされないルータからのRIPルート情報は受信しません。

RIPルートを受信すると、RIPのルート情報を管理するRIPデータベースに登録します。なお、RIPで送信するルート情報はRIPデータベースに含まれているものです。そして、RIPデータベース上でホップ数を見て最適なルートを決定します。さらに、RIPのルートとして最適なルートをルーティングテーブルに登録し、パケットのルーティングができるようにします。

ネットワーク構成は障害などで変化することがあります。RIPでは、そうしたネットワーク構成の変化は、定期的なRIPルート情報の送受信によって確認することになります。RIPルート情報を定期的に送信して、対応するネットワークが正常に稼働していることを通知していることになります。もし、ネットワークがダウンすると、そのネットワークのルート情報の送信は止まります。定期的なRIPルート情報を受信できなくなると、RIPデータベースおよびルーティングテーブルから該当のルート情報を削除します。ただし、即座に削除されるわけではないということには注意が必要です。

次の図に、こうしたRIPの処理の流れをまとめています。

図 RIPの処理の流れ
図 RIPの処理の流れ
図では、R1からR2にRIPルートを送信する様子だけを表しています。R2からもR1へRIPルートを定期的に送信します。
R1が送信するRIPルートは、通常は、スプリットホライズンによって、192.168.1.0/24のルート情報だけになります。

RIPルートの生成

RIPは、「ルーティングテーブルを交換する」というように説明されていることが多いのですが、RIPで交換するのはRIPルートです。ルーティングテーブル自体を交換するわけではありません。

RIPでルート情報を交換するためには、まず、RIPルートを生成します。RIPの設定方法はルータの種類によって異なります。コマンドラインからコマンドを入力したり、WebベースのGUIインタフェースでRIPの設定を行います。設定方法はさまざまでも、設定の考え方は共通しています。RIPはインタフェース単位で有効にします。インタフェースでRIPを有効にすることで、そのルータはRIPルートを生成します。「インタフェースでRIPを有効にする」ということをもう少し詳しく考えると、次の2点です。

  • 有効にしたインタフェースでRIPパケットを送受信する
  • 有効にしたインタフェースのネットワークアドレス/サブネットマスクをRIPルートとしてRIPデータベースに登録する

インタフェースでRIPを有効にすると、そのインタフェースからRIPルートを30秒ごとに送信するようになります。そして、RIPルートを受信するために、RIPを有効にしたインタフェースは224.0.0.9のマルチキャストグループに参加します。

RIPv2を想定しています。

そして、RIPを有効にしたインタフェースのネットワークアドレス/サブネットマスクをRIPルートとして生成して、RIPデータベースに登録します。こうして生成したRIPルートを定期的に送信することになります。

図 RIPルートの生成
図 RIPルートの生成
インタフェース2のRIPルート情報の送信については、省略しています。

RIPのコンバージェンス

RIPのルート情報の交換は、マルチキャストを利用しています。224.0.0.9というマルチキャストアドレスはリンクローカルの範囲で利用するマルチキャストアドレスです。たとえマルチキャストルーティングを行っていたとしても、ルータを越えられません。RIPルートの交換は、同じネットワーク内だけです。

OSPFもEIGRPも同様に、マルチキャストによって同じネットワーク内だけでやり取りします。BGPは例外です。

他のルータからRIPルートを受信して、RIPデータベースに登録すると、そのルートもRIPルートとして定期的に送信します。RIPによるルート情報の交換は、同じネットワーク内のRIPルータ間でバケツリレーのように行われていくことになります。

最終的にルーティングを行うためには、すべてのルータに必要なルート情報がルーティングテーブルになければいけません。すなわち、ルーティングテーブルがコンバージェンス状態になっていなければいけません。そのため、RIPを利用するときには、基本的にすべてのルータのすべてのインタフェースでRIPを有効にして、それぞれのルータで直接接続のルート情報をRIPルートとして生成します。それらのRIPルートを定期的にやり取りして、最終的にルーティングテーブルをコンバージェンスさせます。

次の図の3台のルータでのRIPによるルート情報のやり取りについて考えます。R1、R2、R3のすべてのインタフェースでRIPを有効化します。それぞれのルータは、直接接続のネットワークをRIPルートとしてRIPデータベースに生成します。

ここで、R1でRIPルート送信のタイミングになると、R1はRIPルートとして192.168.1.0/24を送信します。RIPデータベースには192.168.12.0/24もありますが、スプリットホライズンによって送信が止められます。

図 RIPルートのやり取り その1
図 RIPルートのやり取り その1
図では、R1のインタフェース2から送信するRIPルートは省略しています。

R2はRIPルートを受信して、192.168.1.0/24のルート情報をRIPデータベースに登録します。そして、R2のRIPルートの送信のタイミングになると、R2は以下のようにRIPルートを送信します。

  • インタフェース1から送信するRIPルート
    • 192.168.2.0/24
    • 192.168.23.0/24
  • インタフェース2から送信するRIPルート
    • 192.168.1.0/24
    • 192.168.12.0/24
    • 192.168.23.0/24
  • インタフェース3から送信するRIPルート
    • 192.168.1.0/24
    • 192.168.2.0/24
    • 192.168.12.0/24

R2からのRIPルートの送信についてもスプリットホライズンによって、RIPデータベースのすべてのルート情報ではなく、一部のルートの送信が止められています。R2はR1から受信した192.168.1.0/24をさらにR3へと送信することになります。

図 RIPルートのやり取り その2
図では、R2のインタフェース2から送信するRIPルートは省略しています。

R3では、受信したRIPルートをRIPデータベースに登録し、R3の送信のタイミングでRIPルートを送信します。最終的には、R1、R2、R3がやり取りするRIPルートとルーティングテーブルは次の図のようになります。

図 RIPルートのやり取り その3
図 RIPルートのやり取り その3
図では、R1、R2、R3のインタフェース2から送信するRIPルートは省略しています。

RIPでは、それぞれのルータがそれぞれのタイミングにしたがって、RIPルートの送信を行います。そのため、ネットワーク全体のルータのルーティングテーブルがコンバージェンスするには時間がかかってしまうことがあります。


スプリットホライズンについて、以下の記事をご覧ください。


RIPのメトリック

RIPはメトリックとして単純なホップ数、つまり経由するルータ台数を採用しています。あて先ネットワークへ到達するための帯域幅や遅延などを考慮しません。そのため、ネットワークの構成によってはRIPによる最適ルートは非効率なものになってしまいます。

たとえば、次の図のネットワークを考えます。このネットワークにおいて、RIPによるダイナミックルーティングを行っています。このとき、R1から192.168.1.0/24へパケットをルーティングするためのルートは2つあります。

  • R2経由のルート メトリック=1
  • R3経由のルート メトリック=2
図 RIPの最適ルート選択の例
図 RIPの最適ルート選択の例

こんなネットワーク構成は現実的ではありません。ホップ数で考えると最適ではない可能性が出てくることを説明するためだけのネットワーク構成例です。

メトリックから判断すると、最適なルートはR2経由です。ところが、R1-R2間の帯域幅は10Mbpsです。一方、R1-R3間、R2-R3間は1Gbpsの帯域幅です。帯域幅が大きければ、遅延も小さくなります。R1からR3を経由して192.168.1.0/24へパケットをルーティングするほうが、より帯域幅が大きく遅延も少ないはずですが、RIPでは帯域幅や遅延は考慮しません。単純に経由するルータ台数が少ないルートを最適とみなしてしまうので、実際には適切なルートであるとは限らなくなってしまいます。

RIPのホップ数を調整することも可能ですが、そのような設定は手間がかかります。大規模なネットワークでは、多くのルータでの追加の設定が必要で、作業の負荷が大きくなってしまいます。帯域幅や遅延などを考慮した最適ルートを決定できるようにするためには、OSPFやEIGRPを利用します。

また、RIPのホップ数には上限があります。ホップ数の値としては16が最大値です。ホップ数16は、そのネットワークへの到達不能を意味する特別な値です。そのため、RIPではホップ数15が実質的な最大値です。経由するルータ台数が15よりも多くなってしまうような大規模なネットワークでは、RIPでは正しくルート情報をルーティングテーブルに登録できません。

なお、こうしたRIPルートのメトリックの最大値を16と決めているのは、そのネットワークがダウンしたことを表しています。また、RIPルートのループ防止のためという意味もあります。RIPはコンバージェンスがあまり早くないため、場合によってはRIPルートがぐるぐるとループしてしまうことがあります。RIPルートがループするとメトリックがどんどん大きくなってしまいます。RIPルートのメトリックがどんどん大きくなり最大値の16になると、そのルートを無効化することでループを防止します。

IPルーティングのキホン