RIP(Routing Information Protocol)

1 RIPの機能と役割

 RIP(Routing lnformation Protocol)の基礎となっているRFC1058には,「ルーティングとは,送信元から目的の宛先までのパスを探すタスクである」と記述されている。実際には,いくつかのパスが存在する可能性があるため,「ルーティングとは,送信元から宛先までの『最良の』パスを探すタスクである」と言わなければならない。RIPは,ルーティングのタスクを柔軟に行うために設計された一連の標準プロトコルで,その1つを提供するものである。ルーターはこのプロトコルによってネットワークのトポロジーが変更された場合,その変更に対応する。このような柔軟なルーティングが行われていると,1台のルーターが検出したネットワークト・ポロジーの変更は,インターネット上にある他のすべてのルーターに伝えられる。この方法を使えば,操作する入の手間を小さくでき,ネットワーク全休を正常に使用できる時間を長くできる。
 RIPは,IGPs(Interior Gateway Protocols:内部ゲートウェイ・プロトコル)として使用するように設計されている。IGPsは,AS(Autonomous System : 自律システム)内で使われるルーティング・プロトコルである。ASは,単一の管理者か技術者によって制御されるインターネットである。RIPを使うASのサイズは小規模なものに限られ,送信元と宛先の間に介在するネットワークは最大15である。しかし,RIPは堅牢なプロトコルであるため,ルーターとホストの間のルーティング情報の交換用として,事実上の標準となっている。全国的,さらには地球規模のネットワークなどで,これらの自律システムを結合したい場合は,EGP(Exterior Gateway Protocol)やBGP(Border Gateway Protocol)などのEGPs(Exterior Gateway Protocols:外部ゲートウェイ・プロトコル)が使われる。
 RIPが基礎にしているのはroutedプログラムである。これは本来,4.3BSD(4.3 Berkeley Software Distribution)が配布したものである。これによって,RIPはIPインターネットワークで広く受け入れられ,よく利用されるプロトコルになっている。ルーターのベンダーは大半がRIPをサポートしているが,中にはこれを基にして独自の拡張機能を加えているベンダーもあるため,操作の共通性が損なわれている場合もある。また,本来はIPで使用するようになっていたのだが,RIPは汎用プロトコルであるため,Novel1のIPXなど,他の多数のプロトコルに採用されて機能するようになっている。

2 ルートの品質の尺度

 送信元と宛先の間で最適なルートを探すことがRIPの目的なので,特定のルートがどれくらい優れているのかを示すなんらかの尺度が必要になる。RIPの基礎になっているのはBellman-Fordの距離ベクトル(Distance-Vector)アルゴリズムである。これは送信元と宛先間のネットワーク・ホップ,つまり通過しなければならないネットワークの数を単純に数えている。このホップ・カウントはメトリックとも呼ばれる。このため,最適なルートを決定するにあたって,測定された遅延,負荷,信頼性などのリアルタイムのパラメータを考慮する必要がある場合には,RIPは使える。
 宛先までにいくつかのルートが存在する場合,ホップ数のもっとも少ないもの,つまりメトリックが最小のものが選択される。

ルーティング・メトリック
図1 ルーティング・メトリック

図1で分かるように,通過するネットワークの数だけを基準にルートを選択しても,必ずしも最適なルートが得られない場合がありる。この図では,送信元ネットワークから宛先まで,2つのルートがある。右側のルートは1本の低速シリアル・リンクを通るが,左側のものは,2本の高速シリアル・リンクと高速LANを通る。RIPではこのような場合には右が選ばれるが,これは最適なルートとはいえない。
 また,経由するネットワークの数についても,上限を設けておく必要がある。これがないと,通過するネットワーク・パスが無制限に長くなるからである。RIPでは,この制限は15である。実際にはメトリック16は無限大と呼ばれ,ネットワーク到達不能を意味する。ここで注意が必要なのは,ネットワークの通過にはコスト(メトリック)が1かかると仮定され,これがRIPの設定での通常の方法となっていることだ。管理上の最適ルートを定義したい場合は,好ましくないルートに高いコストを割り当てることができる。しかしこのとき,この15ホップの制限が問題になる。実際的ではないが,図2にこの簡単な例を示す。

大きいメトリックの割当
図2 大きいメトリックの割当

 この例を見ると,メトリック7がそれぞれのWANリンクに割り当てられているから,左側のルートを使った場合,送信元ネットワークと宛先ネットワークの間のメトリックは16になる。この値はRIPの許容範囲を越えているので,左側のルートを使うことはできない。図の右側のルート上でリンクが故障した場合でも,やはり左側のルートを使うことはできない。このため送信元ネットワーク上のステーションからは,この宛先ネットワークは到達不能になってしまう。

3 RIPプロトコルの実行

 起動時には,ルーターが利用できる情報は限られている。もちろん自分のインタフェースのアドレスは分かっているし,おそらくスタティック・ルートもあらかじめ設定されている。この情報はルーティング・テーブルに維持される(図3)。

起動時のルーティング・テーブル
図3 起動時のルーティング・テーブル

このルーティング・テーブルには,ネットワーク到達可能性情報(ネットワークIDとメトリック)のほかにも,重要な情報が置かれている。この追加情報に含まれるものは,宛先ネットワークに到達する方法(次のホップ),パケットが通らなければならないインターフェース(I/F),エントリの古さを示すタイマーとなる。タイマーはプロトコルの動作に重要な意味をもつ。図3の例では,タイマーの値が0になっていて,このエントリがまだ期限切れになっていないことを意味している。
 図3を見ると,3台のルーターが4つのネットワークを相互接続している。この図では,どのルーティング・テーブルにも,ルーターが直接接続されているネットワークが示され,ルーター1はネットワーク128.13.0.0へのスタティック・ルートをもっている。ルーター2は,ネットワーク128.13.0.0や128.10.0.0については何も知らない。同じくルーター3には,ネットワーク128.10.0.0や128.12.0.0のことは分からない。また,この例では,どのネットワークもコスト(メトリック)は1になっている。
 RIPでは,隣接するルーターの間で情報が交換される。イーサネットなど,ルーターがブロードキャスト・ネットワークに接続されている場合,この交換にはブロードキャスト・フレームが使われる。X.25などの非ブロードキャスト・ネットワークであれば,あらかじめ「隣接(Neighbors)」と設定されたルーター間で交換が行われるか,それに代わってスタティック・ルートが使われる。

RIPの隣接ルーター
図4 RIPの隣接ルーター

 図4では,上の2台のルーターA,Bは,その最上部ポートがブリッジで接続されているから,隣接ルーターと考えられる。ルーターはブロードキャスト・フレームを通さないから,一方のルーターからの更新情報は,自動的にはインターネット全体に伝わらない。ところが,ブリッジは第2層の装置だから,ルーターに対して透過的で,ブロードキャストされた更新フレームを通す。したがって,上部の2台のルーター間で送られる更新情報はここを通過するので,どちらのルーターもお互いに隣接していると考えることができるわけである。
 隣接ルーター間では,ルーティング更新情報が定期的にブロードキャストされる。更新情報は一連のメッセージで,ルーティング・テーブル内のそれぞれの宛先に関するエントリと,それに付随するメトリックが含まれている。図3と図5を比較すると,最初のRIP更新が行われ,ルーティング・テーブルの内容が変わって,ネットワークが安定しているのが分かる。

ネットワークが安定している状態のルーティング・テーブル
図5 ネットワークが安定している状態のルーティング・テーブル

 ルーティング情報の広告には,ルーターがもつルーティング・テーブルの内容が入っている。次に,隣接ルーターから更新情報を受け取るルーターの側から,実際のルート情報がどのように選択されるかをみておこう。隣接ルーターから更新情報を受け取ると,受け渡しに使われたネットワークのコストが,広告されたメトリックに加算され,次にこの値がルート情報の比較に使われる。もちろん,広告されたネットワークについてそれまでまったく知らなければ,この情報は直ちに保存される。すでに知っているネットワークであれば,既存のルートのメトリック(コスト)と,受信したルートのメトリックが比較される。コストが低ければ,新しいルートが直ちに採用される。このネットワークを広告するルーターと最初にそれを提供したルータ−が同じであれば,メトリックが大きくてもこのルートが採用される。

3.1 トポロジーの変更の処理
 このように,ルーティング・テーブルの内容を,ルーターの各インタフェースから定期的にブロードキャストすることで,安定したネットワークを適当な時間内に作ることができる。
 さて,これ以外に考慮すべき要因があるだろうか?たしかに,ネットワークのトポロジーが長期に渡って一定であることが望ましいのだが,実際にはルーターやリンクの故障のため,変更する必要が生じることがある。したがって,故障したルート情報をタイムアウトさせてネットワークを収束させることが,ルーティング・アルゴリズムには不可欠になる。
 この目的のために,ルーティング・テーブルには各エントリに生存時間値が設けられている。RIPでは,どのルーターもルーティング・テーブル更新情報を30秒ごとに送るのが一般的だ。これによって,ルーターは,自分が発見したリンクのトラブルを隣接ルーターに知らせることができる。これと同様に,もしルーターが故障すると,その隣接ルーターは,ルーティング更新情報が来ないため,ルーター,もしくは接続リンクが故障したものと判断する。ただし,パケットは,ネットワーク上で失われてしまうこともある。このため,隣接ルーターを30秒間聴取できないからといって,必ずしも故障が発生したことと判断はしない。これを確認するために,3回ないし6回の更新期間をおいてからルートが使えないと判断するのが一般的だ。これはネットワークの基準ではずいふん長い時間になる。

トポロジー変更の処理
図6 トポロジー変更の処理

 これを詳しく説明するために,もう少し複雑なネットワークを考えてみる必要がある。このネットワークの構成は,図6に示すように,4台のルーターと6つのネットワークである。
 この図では,どのネットワークのコストも1になっていることに注意。ただし,ルーター3とルーター4をつなぐものは例外です。宛先ネットワーク(ネットワークF)に関するルーティング・テーブルの状態は,次のようになっている。

表1 各ルーターのルーティング・テーブル
ルーター 経由ルーター メトリック
ルーター2
ルーター4
ルーター2
直接接続


 次に,ルーター2と4の接続,つまりネットワークDが故障した場合に,何が起こるか考えてみよう。たしかに,コストは高いのだが,ネットワークEにパスが存在する。ただし,ルーティング・テーブルが安定し,ネットワークのトポロジーがすべて収束するまでは時間がかかる。
 ルーター2は,ルーター4へのルートがもう使えないと判断し,タイムアウト機構によって,次の更新時にルーター1と3に知らせる。次に他のルーターが更新情報を送り,その結果,ネットワークは最終的に再び安定状態になる。すでに説明したが,隣接ルーター間ではルーティング・テーブルの広告が交換される。したがってルーター3は,ルーター1,2,4に,宛先ネットワークヘのルートをもっていることを知らせている(ルーター2を経由し,ネットワークEを使わない)。同じように,ルーター1は宛先ネットワークヘのルートを,ルーター2と3に知らせている(実際はルーター2を経由する)。次にそのルートがタイムアウトになっても,ルーター2は,ルーター1か3を経由するルートがまだ使えると思い込んでいることになる。
 もちろん,ルーター1と3が広告したルートはもう存在しないのだが,この事実に気付いても,1と3は,他のルーターが有効なルートをもっているものと,最初のうちはまだ思っている。したがって,故障ルートがネットワーク全休から削除されるには時間がかかるため,更新を何度か繰り返さないと安定状態には到達できない。このようにして,ルーター1,2,3は,お互いに相手をだまし,実際にはもう存在しないルートがあると教えることになる。表2に,宛先ネットワークについての最初の状態と,ルーティング・テーブル更新が何回か繰り返される経過を,時間を追って各ルーターごとに示す。ここでは,どのルーターも同時に更新情報を送るものとして,説明を簡単にしている。

表2 収束状態の達成
時間軸
  初期状態 反復1 反復2 反復3 ・・・ 反復8 反復9
ルーター 経由 メトリック 経由 メトリック 経由 メトリック 経由 メトリック ・・・ 経由 メトリック 経由 メトリック
・・・ 11 12
N/A ・・・ 11 12
・・・ 11 11
直接 直接 直接 直接 ・・・ 直接 直接


 これで分かるように,上の場合,ネットワークが安定するまでには長い時間待たなければならない。実際に,最悪の場合は,ネットワークがシステムの他の部分から完全に孤立すると,永久に待ち続けなければならないことがある。図7に,これがどのようにして起こるかを示す。

無限計数
図7 無限計数

 ここでは,どのネットワークのコストも1で,トポロジーが安定しているものとする。
 また,宛先ネットワークに関するルーター2と3のルーティング・テーブルは,図に示したようになっている。ここでルーター1が故障するとどうなるだろうか?ルーター2は,ルーター1を経由する宛先ネットワークヘのルートをタイムアウトとし,ルーター3を使うルートを広告する。次にルーター3は,自分が宛先ネットワークヘのルート(ルーター2経由)をもっているが,メトリックが大きいことを,ルーター2に広告する。最初にこのルートを広告したのはルーター3だから,これは受け入れられなければならない。次にルーター2が再びルーター3に広告(ただし,これはメトリックがさらに大きくなっている)を送り,このようにして交換が統く。やがてメトリックが16,つまり無限大に達し,このルートは無効とされる。この現象を無限計数と呼ぶが,この理由があるために,ネットワーク全体の直径,つまりホップ数は小さくしておかなければならない。

3.2 スプリット・ホライズン

シンプル・スプリット・ホライズン
図8 シンプル・スプリット・ホライズン

 ここで明らかになったが,RIP広告を制限する方法を設け,例に示したようなルーターのだまし合いを避ける必要がある。これを実現する簡単な方法は,シンプル・スプリット・ホライズン(Simple Split Horizon)と呼ばれる原理を使うことだ。この原理は,自分が教えられたインタフェースには,ルートの広告を行わないというものである。つまり,上記の例では,ルーター1は宛先ネットワークヘのルートをルーター2に広告する。次にルーター2は,このルートをルーター3に広告する。ただしルーター3はこれをルーター2には広告しないので,このような問題が発生する可能性が少なくなるのである。

3.3 ポイズン・リバース
 ポイズン・リバース(Poison Reverse,逆ルートに毒)とは,誤解される可能性があるルートを広告するときに,無限大のメトリック(16)を与えて使えないよう(毒入り状態)にしておく方法である。通常,ルーターは自分が情報を受け取ったインタフェースにもルートを知らせるが,そのネットワークが到達不能であるようにメトリック16で示すのがポイズン・リバースだす。前の例で見たポイント・ツー・ポイント・ネットワークでは,単に逆ルートを知らせない方法を取ると,ルーティング・ループがすぐに停止される。しかし,共有ネットワークに接続された他のルーターがある場合,どういうことが起こるのだろうか?ここでは2台以上のルーターがループに関わっているから,ルーティングの更新が複雑になる。

ポイズン・リバース
図9 ポイズン・リバース

 図9を見てほしい。ここでもネットワークのコストはそれぞれ1になっている。
 この例では,ルーター2が,自分が宛先ネットワークに到達可能であり,そのコストが1であることを広告している。ルーター1と3は,自分のルーティング・テーブルを更新するが,これには宛先ネットワークがルーター2経由で到達可能で,そのメトリックが2であることが示される。
 次にルーター1と3は,宛先ネットワークヘのルートを広告するが,自分が情報を受け取ったインタフェースから広告するときは,これを到達不能であるとする。ルーター1はルーター2経由のルートをもっているのだが,そのインタフェースから他のルーターに教える場合には,必ずこれを到達不能として示さなければならない。いずれにしても,ルーター3はルーター2に自分で到達できますから,宛先ネットワーク宛てのトラフィックを,ルーター1経由で送る必要はまったくない。

大規模なスター型ネットワーク
図10 大規模なスター型ネットワーク

 ポイズン・リバースには大きな欠点が1つある。ルーティング・テーブルのサイズと,それに伴うルーティング更新情報が非常に大きくなる。この方式では,ルーターは有効なルートを広告しなければならないし,そのルーターを経由してはいけないルートについてもやはり広告が必要だ。したがって,図10のような大規模なスター型のネットワークを使用している場合,非常に大量のルーティング更新情報が送られることが考えられるが,その内容のほとんどは,広告元ルーターを経由できないルートである。これでは,使用可能な帯域幅の利用効率が極端に悪くなる。この図はそのような例を示すもので,ルーター1〜8のそれぞれが,有効なルートをそのローカル・ネットワークに広告し,他の7つのネットワークには,到達不能であるとして広告する。オーバーヘッドは1プラス7になる。
 それでは,ポイズン・リバースは実際にどんな利点をもっているのだろうか?もちろん,ルートがスタティックであれば,これを使うのはむだとなる。しかし,ルート情報に障害が発生した場合は,そのルーターを経由できないルート情報と,経由できるルート情報を示すことは有益である。この方法によれば,使用不能になったルートはすぐに除外され,タイムアウトを待つことがないため早く収束が完了する。一般的にはネットワーク管理者が,余分に必要な帯域幅のコストと収束速度を比較検討し,ネットワーク全休のパフォーマンスの向上を図らなければならない。

3.4 トリガー式更新法
 スプリット・ホライズンとポイズン・リバースは,2台のルーターが“だまし合う”パターンのルーティング問題を解決するためのものである。しかし,このパターンに3台以上のルーターが関係する場合はどうなるのだろうか。たとえば,3台のルーター,1,2,3があり,ルーター1はルーター2経由のルートを,ルーター2はルーター3経由のルートを,さらにルーター3はルーター1経 由のルートを,それぞれ自分がもつと考えるように,ネットワークが構築されているとする。スプリット・ホライズンもポイズン・リバースもこの問題は克服できない。このような場合は,別の方法を考える必要がある。
 トリガー式更新法(Triggered Update)は,実際に更新を行うときの規則を変更し,このループを停止させる。RIPは前述のように定時な更新を行う。これはルーターが,自分のルーティング・テーブルを,そのまま隣接ルーターに一定間隔で広告するものである。トリガー式更新法が使われる場合は,保存してあるルートのメトリックをルーターが変更するごとに,あるいは,新しいネットワークヘのルートに関する情報を受け取るごとに,ルーターがすぐに更新情報を送信することになっている。ルーターに標準の更新情報がペンディングの状態でも,またはそのような更新情報を送ったばかりでも,これらのトリガー式更新情報は送信される。通常,この方法を使うと動的更新が改善される。
 トリガー式更新法を使った場合,障害を起こしたルートがすぐに排除されることは保証されない。どのルーターもその標準更新情報を送る時間が異なるので,トリガー式更新情報がシステム全休に浸透する間に,標準更新も行われる。このため,あるルーターがトリガー式更新情報を隣接ルーターから受け取った後に,標準更新情報が別のルーターから送られ,変更したルートが元に戻されることも考えられる。

3.5 ルート情報の状態とタイマー
 通常,RIP更新情報は,30秒ごとに送られる。1つのブロードキャスト・ネットワークにつながるルーターが多数ある場合は,処理に伴う負荷の関係から,一定の時間帯にこれらの更新情報が集中する可能性がある。この結果,すべてのルーターが同時に情報を送信することになる。これはネットワークのトラフィックの状態がもっとも良好なときでも望ましいことではない。しかも,RIPはブロードキャストを使ってルーターに広告を行うので,状態はさらに悪くなる。これを解決するために時間調節を行う方法が使われる。この場合,ルーターが30秒以内の短いランダムな時間を更新間隔に加算するか,ルーターの負荷に影響されないクロックを使うことが必要である。
 30秒の更新タイマーのほかに,RIPはそれぞれのルートに関係する2つのタイマーも維持している。1つは通常更新時間の3倍から6倍の長さで,更新情報が受信されないルート情報のタイムアウトを決めるのに使われる。このタイマーは,そのルートについての更新情報が受信されるごとに初期化される。
 タイマーが終了すると(つまり,90〜180秒間情報が受信されないと),このルートは無効と宣言されるが,すぐには削除されない。このルート情報は,メトリックを16にした上でルーティング・テーブルに残され,無効であることが示される。もちろん,ルーティング・テーブルは実質的に変更されているので,このルートが使われていればトリガー式更新情報が開始される。これで無効と示されたルートも,やはり定期更新に含められる。このルートが使えないと隣接ルーターに知らせることは継続されるからだ。
 ルートがタイムアウトになると,もう1つの,ガーベージ・コレクション(Garbage Collection:ゴミ収集)タイマーが起動する。このタイマーは,更新時間の4倍(120秒)に設定されるのが普通である。これが終了すると,そのルートはルーティング・テーブルからも削除される。
 ルーティング・テーブルから削除されたルートは,もう更新情報に含められることはない。したがって,このガーベージ・コレクション・タイマーが動作している期間は,そのルート情報の寿命の最終段階となる。この間にルートの更新情報が到着すると,タイマーは消去され,そのルートは復活する。同じように,ガーベージ・コレクション・タイマーの動作中,このネットワーク用の新しいルートが通知されると,このルートが既存のルートに置き換わり,やはりタイマーは消去される。この場合も,ルートの復活や,そのネットワークヘの新たなルート情報の受信によって,トリガー式更新情報が隣接ルーターに送られる。

4 RIPプロトコルのフォーマット動作

 RIPは,UDPデータグラムに組み込まれて運ばれる。UDPポート520が使われる。どの更新についても送信と受信の両方にこのポートが使われる。このため,通常の定時更新が行われるときポート520は,UDPヘッダの送信元兼宛先ポートとなる。更新のほとんどは要求に基づくものではないが,RIPは要求に応答する機能もサポートしているので,ステーションがルーターに更新を要求することができる。この場合,要求元ステーションは任意のUDPポートから要求を送信するが,応答が戻ってくるのは,必ずそのステーションのUDPポート520となる。

0              8             16       24       31
オペレーション
(Operation)
ヴァージョン
(Version)
未使用(すべて0)
アドレス・ファミリー識別子
(Address Family Identifier)
未使用(すべて0)
IPアドレス
未使用(すべて0)
未使用(すべて0)
メトリック
・・・・・
アドレス・ファミリー識別子
(Address Family Identifier)
未使用(すべて0)
IPアドレス
未使用(すべて0)
未使用(すべて0)
メトリック
図11 RIPプロトコルのフォーマット

 図11に示すように,実際のプロトコルのフォーマットには,ネットワークの情報とそこまでの距離(メトリック)が含まれている。更新メッセージの長さは最大512オクテットとなっている。このため更新情報が多ければUDPデータグラムがいくつか必要になる。部分情報を示すフラグはある。ネットワークの帯域幅を有効に利用しているとはいえないが,問題なくルートを個別処理することができる。図11を見ると,どのルートも20オクテット必要で,固定ヘッダが4オクテットであることが分かる。このため,データグラム1つで25のルート情報を運ぶことができる。
 図11を見ると,どのルートエントリもアドレス・ファミリー識別子をもち,これがルートのフォーマットを示すために使われます。IPではこの値は2だが,RIPは汎用ルーティング・プロトコルであるため,IP以外のプロトコルでも使用されている。このため,どのルート・エントリでも最大12オクテット長のアドレスが許されていて,アドレス・ファミリー識別子を使って実際のアドレスのタイプが示される。もちろん,IPネットワークヘのルートでは,使用されるのは4オクテットだけで,残りの8オクテットは図のように未使用のまま「0」になっている。
 1オクテットのオペレーション・フィールドは,行われるオペレーションの種類を示す。このオペレーションは5種類ありますが,現在有効なのは2つだけだ。表3にこれらのタイプコードを示す。

表3 RIPオペレーションのコード
コード 意味 説明
Request
(要求)
ルーターが持つルーティング・テーブルの全部,または一部の送信を,ルーターに要求するブ
Response
(応答)
ルーティング・テーブルの全部,または一部を入れたメッセージ。このタイプのメッセージが送られるのは,要求に応答する場合と,通常の定時更新の場合とがある
Trace On 使われなくなった機能。このオペレーションコードを持つデータグラムはすべて無視される
Trace Off 使われなくなった機能。このオペレーションコードを持つデータグラムはすべて無視される
Reserved Sun Microsystemsが内部で使用するためのに確保されている。このオペレーションコードをもつメッセージは,他のシステムでは無視される


 バージョン・フィールドは次のように解釈される。
 バージョン番号0のデータグラムはすべて廃棄され,それ以上の処理は行われない。バージョン番号1のデータグラムは,「未使用(すべて0)」のどれかに0でない値が入っていた場合,廃棄される。バージョン番号が1より大きければ,データグラムは廃棄されない。この場合,正しく解釈できるその後の項目はさらに処理を受ける。このため,今後プロトコルに追加される拡張機能は,古い機能と完全に互換性をもっていなければならない。
 メッセージが要求タイプであれば,装置がもつルーティング・テーブルの全部,または一部の送信が要求されている。要求はブロードキャストでUDPポート520から送られるのが普通だが,どの送信元ポートからでも送ることが可能。送信元ポートが520であれば,RIPに能動的に関係しているホストだけが応答する。送信元ポートが520以外のいずれかであれば,要求を受信したすべてのRIPプロセスが応答する。これは管理のためにはとても便利な機能でる。
 要求が受信されると,データグラムに入ったエントリは順番に処理される。エントリが1つしかなく,アドレス・ファミリー識別子が0(指定なし),メトリックが16(無限)になっていれば,ルーティング・テーブル全体が返される。エントリ数が1から25までであれば,すべてのエントリがルーティング・テーブルと比較され,ルートがあればそのメトリックがメトリック・フィールドに置かれる。宛先ネットワークヘのルートがなければ,メトリック16(無限大)が使われる。
 それぞれの要求ルートに関する情報が更新されると,オペレーション・フィールドが応答に変更され,データグラムは要求元ステーションに返送される。元の要求で使われたUDP送信元ポートは,返送データグラムの宛先ポートとして使われる。また,要求の中にエントリがなければ,データグラムは無視され,応答は生成されない。
 完全なルーティング・テーブルが要求される場合は,スプリット・ホライズン・ルールが適用されるのが一般的である。特定のルート情報が要求される場合は,スプリット・ホライズンは使われず,ルーティング・テーブルにある情報がそのまま使われる。その理由は,情報が明確に要求されているからには,要求元が何も隠されない正確な詳細情報を求めていると推測されるからだ。

4.1 RIPデータグラムの処理
 応答が生成されて受信されるのは,特定の要求,通常の更新,あるいは,ネットワークのどこかにメトリックの変更が検出された結果発生したトリガー式更新が行われた場合だ。この応答がポート520以外から送られると,受信側ステーションはその応答データグラムを無視する。応答が有効であればすべてのエントリが調べられ,図12に示すフローチャートに従って,受信側のルーティング・テーブルが更新される。

RIP応答の処理
図12 RIP応答の処理

 この図で分かるように,送信元のUDPポートが520以外であれば,到着データグラムの処理は中止される。データグラムが有効であればその中のエントリが順に処理されるが,無効なアドレス・ファミリー識別子を持つものは無視される。ルートエントリ(Route Entry)に含まれるのは,遠隔のネットワークかエンド・システムのアドレスである。RIPはこの2つを区別しないし,サブネット・マスク情報を伝える手段も持っていない。したがって,RIPプロトコルを使うインターネットではどのネットワークも同じマスク値を使っているものとみなされる。
 メトリックの更新が行われるときは,広告されたメトリックに,応答を受信したネットワークがもつコストを加算し,それを新しい値とする。実際は,ネットワークに与えるコストは通常1と仮定され,インターネット上で隣接ルーターヘルートが渡されるごとに,徐々にメトリックが大きくなる。この例外は,広告されたメトリックが16(無限大)の場合だ。このときは,そのネットワークがすでに到達不能であるため,値を増やす意味はない。
 広告されたネットワークヘのルートがルーティング・テーブルにまだ存在しなければ,この更新でこれを加えることになる。この例外は,広告されたメトリックが無限大(16)の場合である。これは,到達不能のルート情報を加えても意味がないからだ。
 広告されたネットワークヘのルートがルーティング・テーブルにすでにある場合は,この広告を出したのが,すでにあるルート情報を教えたルーターと同じであるかどうかを調べる。実際には,この更新情報に含まれるどのルート情報も,広告したのは同じ隣接ルーターだから,調べるのがこのときであっても,どこか別の時点であっても関係ない。重要なことだが,既存の宛先への新しいルート情報を採用するのは,それがすでに知っているルート情報よりも優れている場合か,あるいは,仮に劣っていても,新しいルート情報を広告したのが元の広告を出したルーターである場合に限られる。既存の宛先への新しいルート情報をもつ更新情報を受信し,そのルート情報がすでにあるものより劣っている場合は,古いルート情報を使う。ただし,既存の宛先への新しいルート情報が元の広告主と同じルーターから広告されたのであれば,無条件で新しいルート情報を採用する。
 元の広告を出したルーターからのルート情報については,メトリックが同じであれば,単にタイマーをリセットし,ルートがまだ有効であることを示すだけだ。新しい宛先へのルート情報を教えられたか,あるいは既存のルートのメトリックが変更された場合は,変更フラグも設定して,トリガー式更新情報を送らなければならないことを示す。既存のルートが到達不能になった場合は,削除タイマーが起動され,やがてこれがルートを削除する。ここには示してないが,やはりこのときも変更フラグを設定し,隣接ルーターに更新情報を送って変更されたルートの状態を教えなければならないことを示す。
 ルートが無効になった場合は,ルートが到達不能になったのが初めてかどうかを調べ,削除タイマーを一度だけ起動するようにする。これが重要なのは,宛先が到達不能になったことを,他の送信元からの更新情報で教えられることもあるからだ。いずれにしても,このような更新情報を受け取るごとにタイマーをリセットするのは好ましくない。これを行うと,そのルートがいつまでもタイムアウトにならない可能性があるからである。

4.2 起動時のルーターの動作
 すでに説明したように,初めて起動したときにルーターがもっているのは最小限のルーティング情報だけである。これに設定を加えることによって,自分のさまざまなインタフェースのIPアドレスや,さらにそこに接続されているネットワークとサブネットワークのIPアドレスが分かるようになる。また,いくつかのスタティック・ルートを設定することもできるが,自分がその一部になっているネットワークについて,これらのルート以外には,ルーターは何も知らないことになる。
 また,初めて起動されたとき,自分のインタフェースのそれぞれに,ルーターが要求をブロードキャストすることも少なくない。これらの要求は,そのルーティング・テーブルのすべてを提供するように隣接ルーターに要請するもので,要求の内容は,IPアドレスを0にしメトリックを16にした1項目だけである。この方法によって,完全なルーティング・テーブルを最短時間で作成することができる。

5 RIPをめぐる議論

 これまでに説明した範囲では,確かにRIPは,中小サイズのネットワーク用としては,簡単でありながら効率のよいプロトコルといえる。もちろんRIPは完全なものではなく,無数の欠点ももっているが,標準化され広く実装されている。また,小型であるためにホスト・システムにとってはいくつかの利点がある。

5.1 RIPの制限
 RIPは,ルーティング・プロトコルとして数多くの利点をもっていて,21世紀まで使えるものである。しかし,このプロトコルの欠点をいくつか説明しておく必要もある。これには次のようなものがある。
  •  ネットワークの最大の大きさは15ホップ。この限界はネットワーク・サイズを制限する意図で決められたものではなく,ネットワークの収束に要する時間を小さくする必要性から設けられたものだ。全休の大きさをこのように制限することで,ルーティング・ループが発生しても,比較的短い時間でこれを解決することが可能になる。
  •  ルーティング更新が定期的(通常は30秒ごと)に行われ,ルーターはルーティング・テーブルをすべて送信しなければならない。さらに,変更が検出されたときは必ず更新情報を送る必要があり,これもやはりルーティング・テーブル全休が対象になる(トリガー式更新)。実際には,更新情報を送る必要があるのは,要求されたとき,メトリックが変わったとき,あるいはトポロジーの変更があったときなのだが,残念ながらRIPではこのような方法は許されない。
     すでに説明したが,収束時間を短縮する方法の1つは,ポイズン・リバースを使うことだ。この場合,広告するルートは,そのルーターが使えるものと使えないものの両方だった。
     したがって,ルーティング・テーブルのサイズも,それに伴うルーティング更新情報も大きくなる。
  •  RIPは,ブロードキャストを使って隣接ルーター間の情報を伝達する。確かに,ネットワ ークの帯域幅の消費量はこの転送方法に影響されないが,ネットワークに接続されているすべてのホストが,ルーティング処理に関係があってもなくても,このデータグラムを処理しなければならない。これによって,接続されたすべての装置のオーバー・ヘッドが大きくなり,CPUの処理能力がむだになる可能性がある。
  •  RIPは,単純なホップ・カウント機構を使ってルートの品質を決定する。この方法はとても有効なのだが,使用されているリンクの実際のインタフェース速度を計算に入れることができない。図1に示したが,他のパスよりネットワークの数が多くても,接続に使うリンクの速度の違いにより,中継するネットワークが少ないものよりルートの質が高いということもあり得る。
     もちろん,普通は管理者が手動でメトリックを変更できる。しかしこれでは管理オーバー・ヘッドが大きくなるし,ルーティング処理の柔軟性がどうしても損なわれる。
  •  RIPはサブネットを区別しない。すでに紹介したように,サブネット・マスクを広告することができないため,インターネットを構成しているどのネットワークも,同じマスクを使わなければならない。これによって,インターネット全休で可変長サブネット・マスクを使いたい場合に問題が起こる。
     困ったことに,この制限は可変長マスクだけでは済まない。インターネット全体で同じサブネット・マスクを使っても,やはり問題が起こることがある。 RFC1058に記述されているが,サブネットを使用している場合,ルーターが送る情報が送り先の隣接ルーターによって異なる可能性がある。サブネット方式のネットワークに接続されている隣接ルーターに対しては,広告元ルーターが直接接続されているすべてのサブネットが,サブネット番号を使って広告される。ところが,他のネットワークに接続されている隣接ルーターに対しては,ネットワーク全休への1本のルートだけが広告されるのである。
  •  RIPには認証機構がない。つまり,RIPルーターは,RIPに準拠した装置であれば,どこからでも更新情報を受け付ける。
     ベンダーの中には,RIP Trusted Router(RIP信用ルーター)をソフトウェアに実装しているものもある。この方式では,どのRIP隣接ルーターから更新情報を受け入れるか,ネットワーク管理者がプログラムするようになっている。しかし,この解決法には限界がある。ルーター単位でこの機能が実装されているため,大規模なネットワークでは管理タスクが非常に大きくなる。
  • 5.2 RIPの利点
     RIPの主な利点としては,使用しているネットワークの数が多いことと,RIPが小さいものでるために,RIPリスナー・タスクをもつホストが多いということがあげられる。
     RIPリスナーは,ルーターからの情報を聴取し,それに応じて自分のルーティング・テーブルを変更する。RIPは古くからあるプロトコルで,インターネット・コミュニティで大きく役に立っている。たしかに欠点はあるのですが,よく理解されていて,堅牢で,実装するのも簡単だ。ネットワーク管理者は一般にRIPを好み,もっとよいプロトコルが利用できるにもかかわらず,これを使い続けている。
     全休的にみて,RIPは現在のまま,あるいは改良された形でこれからも長く使われるし,現在あるどのルーティング技術も,RIPを原形にしている。 RIPはもちろんその価値を失っていない。特に,次に説明するRIP2など,拡張機能が現在追加されつつあるので,今日のインターネット・コミュニティが求める機能を提供し統けてくれると思われる。

    6 RIP2

     RFC1723によると,RIP2はRIPを機能拡大したもので,RIPメッセージ中に有用な拡張された情報をのせるものである。特に,RIP2では認証機構が提供され,更新情報の送信がブロードキャストでもマルチキャストでも行えるようになっている。また,サブネット・マスクを運ぶ機能も採用されている。
     サブネット・マスクの機能は,インターネットが多数のネットワークで構成され,それぞれが異なるマスク値をもっている場合,重要な鍵となるものだ。この情報がなければ,ルート情報がネットワークのエントリかホストのエントリかを,ルーターが判断できないからでだ。
     ただし,残念ながら,既存のものとの亙換性を保つため,RIP2を使うネットワークの大きさは大きくなっていない。

    6.1 RIP2プロトコルのフォーマット
     RIP2はRIPと同じ基本プロトコル・フォーマットを使うのだが,フィールドのいくつかは定義が変更されてる。RIPと同じように,メッセージ・サイズは25本を越えるルート情報は運べず,UDPポート520が使用される。RIP2のプロトコル・フォーマットを図13に示す。

    0              8             16       24       31
    オペレーション
    (Operation)
    ヴァージョン
    (Version)
    未使用(すべて0)
    アドレス・ファミリー識別子
    (Address Family Identifier)
    ルート・タグ
    IPアドレス
    サブネット・マスク
    次ホップ
    メトリック
    ・・・・・
    アドレス・ファミリー識別子
    (Address Family Identifier)
    ルート・タグ
    IPアドレス
    サブネット・マスク
    次ホップ
    メトリック
    図13 RIP2プロトコルのフォーマット

     ヘッダは以前と同じ4オクテットである。ただし,RIP2では,それぞれのルート・エントリで運ばれる情報が変更されている。
     アドレス・ファミリー識別子はそのままで,IPアドレスとメトリックも同じだ。解釈も以前のとおりである。
     アドレス・ファミリー識別子のすぐ後にある2オクテットは,以前は使用されていなかったが,今度はルート・タグとして使われている。このフィールドは,ローカルRIPドメインと外部自律システムに属するルートを区別する手段として使うようになっている。ルート・タグの使用例としては,たとえばEGPやBGPからルートをインポートするにあたって,ルート情報を入手した自律システムの番号を,このフィールドに入れることが選択できる。厳密には,このフィールドをどのように使うかはまだ定義されていないのだが,ドメイン内のすべてのルーターが同じ解釈を行うようになっていれば,実使用上は問題ありません。(追記:ルート・タグは送信したルートをどのように扱うかを示し,BGPやOSPFからインポート(伝達)された経路情報を,RIPドメインのルータに伝搬するときに使用される。)
     サブネット・マスク・フィールドに入るのは,ルート・エントリ内で示されたIPアドレスに適用されるマスクだ。 RIP2では,このフィールドは空白でもよく,サブネット・マスクを広告しないRIP1ルーターとの互換性が図られている。ただし,旧方式との完全な互換性を保つためには,次のようないくつかの簡単な規則を守ることが重要になる。
  •  RIP1ルーターとRIP2ルーターが同じネットワークに混在する場合は,RIP2ルーターがあまり詳細にサブネットに関する情報を広告しないことが重要だ。もし詳細な広告を行うと,そのルートがネットワークに適用されるのか,あるいはホストのものか,混乱が生じることになる。たとえば,RIP2ルーターが193.129.45.129へのルートを広告すると,RIP1ルーターはこれを,ネットワーク193.129.45.0にあるホスト129,あるいはネットワーク193.129.45のサブネットワーク224にあるホスト1と解釈する。もちろん,サブネット・マスクが255.255.255.224であることを知らなければ,どちらなのか分からないのである。
  •  RIP1ルーターが受信する可能性がある場合,スーパー・ネット・ルート,つまり,本性的サブネット・マスクより広いサブネット・マスクをもつものは,広告してはならない。これも,RIP2ルーターが193.129.45.129へのルートを広告した場合,ネットワーク193.0.0.0上のホスト129.45.129と解釈しても,サブネット・マスクがなければ,これを判断することはできないということだ。
  •  次ホップ・フィールドは,宛先までの経路上にある次のルーターのIPアドレスを,受信側に知らせるために使う。送信元のルーターが宛先への最適ルートを示していれば,このフィールドは0.0.0.0に設定される。当然だが,受信側は次ホップヘパケットを直接送れなければならないので,このフィールドが0以外になっている場合,次ホップ・ルーターは,この受信ルーターと同じネットワークに接続されていることになる。このフィールドが特に重要になるのは,RIP以外のプロトコルも使われているネットワークで,最適ではないルートでパケットが送られることを避けたい場合である。これを図14に示す。

    RIP2とその他のIGP
    図14 RIP2とその他のIGP

     ルーター1と2がRIP2を使い,ルーター3,4,5がOSPFなどの他のIGPを使っている場合,どのような影響があるか考えてみよう。ここではルーター3,4および5が情報を交換しているから,ネットワーク2とネットワーク3がルーター3経由で,ネットワーク4,5,6がルーター4経由で,ネットワーク7,8がルーター5経由で,それぞれ到達可能であることを,各ルーターが知っているものと椎測できる。次ホップ・ルーターが正しく示されるためには,ルーター3,4,5のどれか1台でOSPFに加えてRIP2も実行する必要がある。これによって,ルーター1と2には,ネットワーク2と3がルーター3経由で,ネットワーク4,5,および6がルーター4経由で,ネットワーク7と8がルーター5経由で,それぞれ到達可能であることが分かるようになる。次ホップ・フィールドが利用できなければ,すべてのルーターがRIP2とOSPFの両方を使用しなければならない。

    6.2 RIP2の認証機構
     RIP2では,メッセージごとの認証が可能になっている。つまり,送信されたそれぞれのメッセージを,個別に認証することができる。認証にはルート・エントリが1つ必要で,最大16オクテットの認証文字列が使える。認証されたメッセージは,最初のルート・エントリにRIP1では使われていなかった特殊なアドレス・ファミリー識別子の(FFFF16)を設定することによってそれと分かるようになっている。そしてこのエントリは,2オクテットの認証タイプ・フィールドと,最大16オクテット長のパスワードをもっている(現在のところ,タイプ2の簡易パスワードだけが定義されている)。典型的なRIP2メッセージは,図19のようになる。

    0              8             16       24       31
    オペレーション
    (Operation)
    ヴァージョン
    (Version)
    未使用(すべて0)
    アドレス・ファミリー識別子
    (FFFF16
    認証タイプ

     認証文字列(16オクテット)
     
     
    アドレス・ファミリー識別子 ルート・タグ
    IPアドレス
    サブネット・マスク
    次ホップ
    メトリック
    図15 RIP2の認証

     RIP1は正しく解釈できるルート・エントリをすべて処理するから,認証付きメッセージはRIP1プロセスで受け入れられ,互換性が保証されている。

    6.2 RIP2とマルチキャスティング
     RIP1はブロードキャスト方式のプロトコルです。このため,RIPに参加しないネットワーク・ホストは,無関係な情報の処理で貴重なCPUサイクルをむだにすることになる。 RIP2は,これを解決するためにマルチキャストを使用することを標準とし,マルチキャスト・アドレス224.0.0.9を割り当てている。ただしRIP1ルーターとRIP2ルーターを混用する場合は,マルチキャストされたRIP2応答をRIP1ルーターが無視するため,十分な注意が必要だ。このため,RFC1723では,マルチキャストを使用するかどうかを設定可能にし,RIP1との互換性を保つことを推奨している。

    6.3 RIPIとの互換性
     RIP2はRIP1と完全な後方互換性があり,1より大きいバージョンのメッセージを受信した場合,未使用フィールドに非0値が置かれていても,それだけでは拒否されないようになっている。正しく解釈できないルート情報をRIP1プロセスが無視するだけだ。
     RFC1723は,RIPルーターについて,インタフェースごとに互換スイッチを設けることを推奨している。この方法によれば,どのインタフェースも,次の4種類のどれかに設定することが可能である。
  • 設定なし:
     RIPIや2を使用しない。
  • RIPI :
     RIPIメッセージだけをブロードキャストで送る。
  • RIPI互換:
     RIP2に完全に参加するがブロードキャストを使用する。
  • RIP2 :
     RIP2に完全に参加しマルチキャストを使用する。
  •  さらに,どのルーターについてもインタフェースごとに設定を行い,受け付けるメッセージを,RIP1のみ,RIP2のみ,RIP1とRIP2の両方に切り替えられるようになっている。また,メッセージを受け付けないことも選択できる。したがって,必要ならばどのRIP2ルーターもRIP1を完全に処理できる。たとえば,適切に設定されたRIP2ルーターは,RIP1要求を受け取るとRIP1応答を返信する。また,RIP2だけに応答するように設定してあれば,この要求は無視される。

    7 まとめ

     RIPは,インターネット・プロトコル・セットの中で,おそらくもっとも重要と考えられるプロトコルの1つです。RIPは,遠くのネットワークヘのデータ配信を可能にするという点で,IPの核心ともいえるものを具体化している。RIPが重要なのは,この種のプロトコルとしては最初に標準化されたもので,広範囲に利用されていることである。確かに,OSPFなどと比較して優れているわけではないが,これを使用している装置数の面を別にしても,RIPはいくつかの利点をもっている。
     まず,古くからあるために非常に広い支持を受けているし,中小規模のインターネット用としては,これ以上のものはまずありません。次に,特にUNIXマシンなど,ホスト・マシンがルーターの情報交換を聴取し,自分のルーティング・テーブルを動的に変更できるため,配信をルーターに頼る必要がない。残念ながら,RIPでは距離ベクトル・アルゴリズムが使われているため,トポロジーの収束が遅くなる傾向がある。しかし,現在では大半の装置がそれ自体に信頼性を備え,高速のデジタル回線が使用されているため,実際にはこれを問題視する必要はないと考えられる。
     RIP2は,RIPを今日のネットワークにより適したものにしようとする試みである。まず,認証機構を提供するとともに,インターネット全休に可変長サブネットを使うことを可能にする。そして,(おそらくもっとも重要なことでしょうが)マルチキャストを使って情報交換を行う。
     残念なことに,距離ベクトル・アルゴリズムの制限があるため,RIP2ではネットワークの最大の大きさを拡張することはできない。しかし,RIP2はよく知られるようになり,多くのベンダーもこれを実装するようになっている。ユーザーがRIP2に変更を行うかどうかはまだ分からないが,いずれにしても,より柔軟なプロトコルが提供されるのは歓迎すべきことだろう。

    トップページへ