RIPパケットフォーマット
RIPのパケットを見ると、RIPの仕組みがより詳しく理解できます。
本項では、RIPv1(バージョン1)とRIPv2(バージョン2)のフォーマットについて説明します。
RIPv1フォーマット
以下に、RIPv1のフォーマットを示します。RIPv1での宛先は、基本的にブロードキャストです。
項目 | 英語 | バイト | 説明 |
---|---|---|---|
コマンド | command | 1 | 1:request(要求) 2:response(応答) |
バージョン | version | 1 | RIPのバージョン。1固定。 |
0固定 | must be zero | 2 | 0固定。 |
アドレス種別 | Address family | 2 | IPは2。 |
0固定 | must be zero | 2 | 0固定。 |
IPアドレス | IP Address | 4 | サブネット番号。 |
0固定 | must be zero | 4 | 0固定。 |
0固定 | must be zero | 4 | 0固定。 |
メトリック値 | Metric | 4 | ホップ数。 |
コマンドのresuestは、ルーター起動時に全ルーティング情報を要求する時などに使われます。その際、アドレス種別とIPアドレスは0、メトリックは16で送信されます。
コマンドのresponseは30秒に1回定期送信される時か、requestがあった時の応答です。その際、アドレス種別からメトリック値までを1エントリ(1つの経路情報)として、最大25エントリ分繰り返します。それ以上のルーティング情報がある場合は、複数のRIPパケットで送信されます。また、インターフェースダウンなどの時は、そのサブネットのエントリだけメトリック値16で広報されます。
RIPv1では、サブネットマスクの情報がありません。このため、IPアドレス情報と自身に設定されたサブネットマスクからサブネット番号が決定され、ルーティングテーブルに反映されます。これが、可変長サブネットマスク(VLSM:Variable Length Subnet Mask)に対応できない理由です。
RIPv2フォーマット
以下に、RIPv2のフォーマットを示します。RIPv1で0固定だった部分をルートタグ、サブネットマスク、ネクストホップで利用しています。RIPv2での宛先は、マルチキャストアドレス224.0.0.9です。
項目 | 英語 | バイト | 説明 |
---|---|---|---|
コマンド | command | 1 | 1:request(要求) 2:response(応答) |
バージョン | version | 1 | RIPのバージョン。2固定。 |
0固定 | must be zero | 2 | 0固定。 |
アドレス種別 | Address family | 2 | IPは2。 |
ルートタグ | Route Tag | 2 | 経路再配布で利用可。一般的に0。 |
IPアドレス | IP Address | 4 | サブネット番号。 |
サブネットマスク | Subnet Mask | 4 | サブネットマスク。 |
ネクストホップ | Next Hop | 4 | ゲートウェイアドレス。0.0.0.0であれば、送信元のIPアドレスがゲートウェイアドレスになる。 |
メトリック値 | Metric | 4 | ホップ数。 |
ネクストホップは一般的には0.0.0.0です。それ以外では、RIPを使わないルーターがいる時、リダイレクトさせないために使われます。
例えば、下図で192.168.1.0への経路として、ルーターBからネクストホップが0.0.0.0で送られてきたとします。この場合、ルーターAは192.168.1.0と通信する際にルーターBに送信してしまい、リダイレクトによってルーターCに転送されます。
ネクストホップをルーターCにすると、ルーターAは192.168.1.0宛てはルーターCに送信するため、リダイレクトされずに済みます。
ルーターBでは、スタティックルート等で192.168.1.0への経路を設定し、RIPで再配布できるようにする必要があります。
なお、RIPv2では認証も使えます。互いに設定した認証情報が一致しない場合、受信した経路情報はルーティングテーブルに反映されません。この際は、認証情報がRIPv2パケットフォーマットに含まれます。これにより、間違って設置されたり悪意あるルーターからの経路情報は、反映されないようにできます。
前のページ「RIPの経路切替時間」