RIPのパケットフォーマット
目次
RIPの位置づけ
RIPは、次の図にあるようにTCP/IPネットワークアーキテクチャにおけるアプリケーション層に位置するプロトコルです。下位のトランスポート層にはUDPを利用し、ウェルノウンポート番号として520を使っています。520というポート番号は、送信元ポート番号としても送信先ポート番号としても使われます。
OSPFやEIGRPなど直接IPパケットでルート情報を配送するほかの代表的なIGPsのルーティングプロトコルとは異なっています。
UDPなので、RIPパケットの配送の信頼性はあまり高くありません。ですが、30秒に1回の定期的なブロードキャストを行っていることと、たとえ1回ぐらいRIPパケットが届かなくてもルーティングテーブルからエントリが削除されないことから、UDPによるパケット配送の信頼性の低さは特に気にする必要はないでしょう。
RIPパケットフォーマット
次の図がRIPのパケットフォーマットです。
以下に各フィールドについて解説します。
【コマンド】
RIPパケットの動作の種類を表します。RIPパケットの動作には、「リクエスト」と「レスポンス」の2種類存在します。その2種類を識別するためのフィールドがコマンドフィールドです。
表 RIPパケットの動作
RIPパケットの動作 | フィールドの値 | 説明 |
リクエスト | 1 | RIPアップデートを送信するように要求する。 |
レスポンス | 2 | RIPアップデートを送信する。 |
-リクエスト-
リクエストパケットは、たとえばRIPルータが起動したときに送信されます。RIPルータが起動したときには、まだ他のルータから情報をもらっていません。しばらく待つと、他のRIPルータが定期的なアップデートを送信してくれるはずですが、最大30秒かかってしまいます。そこで、RIPルータが起動したらすぐにルート情報をもらえるようにするために、リクエストパケットを送信します。
-レスポンス-
リクエストパケットの応答として、自分のルーティングテーブルをレスポンスパケットでブロードキャストします。リクエストパケットの応答だけでなく、30秒に1回の定期的なアップデートもレスポンスパケットとして送信しています。ですから、通常のRIPの動作としてはレスポンスパケットが大部分を占めることになります。
【バージョン】
名前のとおり、使用しているRIPのバージョン番号が入ります。現在、RIPのバージョンは1と2の2種類あります。
【アドレスファミリ識別子】
このアドレスファミリ識別子フィールドからメトリックフィールドまでの20バイトがひとつのエントリとなっています。アドレスファミリ識別子は、エントリがどのプロトコルに由来しているかを示します。現在は、RIPはIP環境で利用されていますが、もともとは他のプロトコルでも利用することを考えて設計されています。IPルーティングでは、アドレスファミリ識別子の値は「2」です。他の値が入ってくることは、現在ではまず考えられないので、このフィールドは固定値と思っても差し支えないかもしれません。
【ネットワークアドレス】
あて先ネットワークアドレスが入るフィールドです。RIPv1はクラスフルルーティングプロトコルであるために、サブネットマスクの情報が入っていないことに注目してください。このフィールドのあとに続いて8バイトもの0で埋められた領域がありますが、RIPv1では使いません。RIPv2では、この0で埋められた領域で、サブネットマスクの情報やネクストホップアドレスの情報を通知することができます。
【メトリック】
エントリのメトリックが格納されます。RIPでは最大値が16です。
以上、RIPパケットの各フィールドの内容ですが、図にもあるとおり1つのRIPパケットで最大25個のエントリを送信することができます。もしも、ルーティングテーブルが大きくて25個以上のエントリを送信する必要がある場合は、複数のRIPパケットに分けて送信することになります。ですから、あまりにも巨大なルーティングテーブルではRIPパケットの影響が大きくなる恐れがあります。