連載
» 2002年02月23日 00時00分 公開

IPルーティング入門(4):RIPの仕組みと運用法を知ろう!

[亀野英孝,ネット・シェフ]

最も歴史あるルーティング・プロトコルのRIPは、大規模で複雑なネットワークでの使用には向いていませんが、そのシンプルさゆえに多くの企業で利用されています。今回は、そのメッセージ交換の仕組みと、運用の際の簡単なヒントを紹介していきます。また、「連載:ルータの仕組みを学ぼう 第2回 イーサネットとルーティング」「連載:ネットワーク・コマンドでトラブル解決 第3回 ルーティングの設定は正しいか?」などを一読されると、さらにRIPに対する理解が深まるはずです

(編集局)


 RIP(Routing Information Protocol)の歴史は古く、ルーティング・プロトコルとしては、最も古いプロトコルです。現在も多くの企業で利用されています。RIPがいまも利用されている理由としては、非常に運用が容易であること、また、多くの企業のサーバで利用されているUNIXのほか、OSに標準でRIPを実装した4.3BSD(Berkeley Software Distribution)で配布されている「routed」プログラムが挙げられます。

 現在は、いくつかの拡張が施されたRIPバージョン2が多く利用されています。

まずはRIPの動作を理解する

 RIPは、本連載の第1回「ルーティング・プロトコルの役割を理解する」の「主要なルーティング・プロトコルとその組み合わせ」のセクションで説明したように、ディスタンス・ベクタ・アルゴリズムに基づいたルーティング・プロトコルです。RIPでは、メトリック(ルータのホップ数)がより少ない経路情報が最適経路として使用されます。また、最大メトリックは15となっており、これを超えた場合(16以上)は到達不可能と見なされます。

 RIPが経路情報を交換する際には、隣接するネットワークへ30秒ごとにレギュラー・アップデート(更新メッセージ)をブロードキャストします。同様に、隣接するネットワークのほかのルータから30秒ごとにレギュラー・アップデートを受信します。その際に、このレギュラー・アップデートの送信元ルータをネクスト・ホップとし、メトリックを1つ加算して、自身のルーティング・テーブルに追加/更新します。

図1 レギュラー・アップデートの交換 図1 レギュラー・アップデートの交換

 また、あるルータより180秒以内にレギュラー・アップデートなどを受信しなかった場合、その相手先ルータにおける障害発生、または、そこに接続されたネットワークが無効になったと見なし、これに該当する経路情報が無効化されます(レギュラー・アップデートは30秒ごとに送受信されるため、6回続けて受信できなかった場合が180秒となり、これに該当する経路情報が無効化されます)。

 このように接続されたネットワークが利用できなくなった場合、そのネットワークあての経路を無効化すると同時に、これを隣接したルータに伝えるため、無効経路となった経路情報にメトリック16(到達不可能)をセットして送信します。

 さらに、このように無効となった経路がルーティング・テーブルから削除されるまでには、ガベージ・コレクション・タイマーと呼ばれる120秒の期間が必要となります。これは、経路情報がタイム・アウトした際にセットされるタイマーで、この120秒間を超えた経路情報は、ルーティング・テーブルから完全に削除されます。

図2 経路情報の無効化/削除のタイム・テーブル 図2 経路情報の無効化/削除のタイム・テーブル

RIPのパケット・フォーマット

 ここでは、RIPバージョン1とバージョン2のパケット・フォーマットについて説明します。

・RIP1 パケット・フォーマット(RIPバージョン1)

図3 パケット・フォーマット(RIP Version 1) 図3 パケット・フォーマット(RIP Version 1)

 アドレス・ファミリ識別子からメトリックまでのデータグラムの部分は、最大25経路情報を繰り返し持つことができます。

コマンド 動作
1 リクエスト リクエスト受信側の経路テーブルのすべて、または一部の送信要求(RIPでは、30秒周期で定期的なアップデートが行われます。しかし、新たにRIPをenableにしたインターフェイスなどでは、この30秒を待つことなくアップデートを受信したいため、このリクエストを用いることが多いようです)
2 レスポンス レスポンス送信側の経路テーブルのすべて、または一部の送信(いわゆるRIPのアップデートは、このレスポンスになります)
表1 コマンド・フィールドに入る値(command)
  • バージョン・フィールド(version)
    RIPバージョン1では「1」が入ります
  • アドレス・ファミリ識別子フィールド(address family identifier)
    RIPバージョン1では、通常「AF_INET (2)」のみがサポートされています
  • IPアドレス・フィールド(IPv4 address)
    あて先経路または、ホス≪ト・アドレスなどが入ります
  • メトリック・フィールド(metric)
    メトリック・フィールドは「1〜15」までの値を含み、あて先までの現在のメトリックを示します。値16(無限)は、あて先が到達不可能であることを示します

・RIP2 メッセージ・フォーマット(RIPバージョン2)

 RIP2は、RIP1では使用されていなかったフィールドをベースに、いくつかの拡張がなされたルーティング・プロトコルとなります。このため、ここではRIP1より拡張された部分を説明します。

図4 パケット・フォーマット(RIP Version 2) 図4 パケット・フォーマット(RIP Version 2)
  • 経路タグ・フィールド(Route Tag)
    BGPと連携する場合などに用いられますが、明確な定義はなされていません
  • サブネット・マスク・フィールド(Subnet Mask)
    IPアドレス・フィールドの経路に対するサブネット・マスクを含みます
  • ネクスト・ホップ・フィールド(Next Hop)
    IPアドレス・フィールドの経路情報のネクスト・ホップ・アドレスを含みます。これにより、経路情報ごとにネクスト・ホップが指定できるようになりました。

 また、RIP2では、関係のないホストへの不必要な負荷を減らすために、IPマルチキャストが使用可能となりました(RIP1との互換性を図るため、ブロードキャストを使用することも可能です)。さらに、RIP2には認証機能が追加されています。この認証機能を用いる場合は、アップデート・パケットの最初の経路情報分(20bytes)のスペースに認証情報を含むことになります。

図5 認証パケット・フォーマット(RIP Version 2) 図5 認証パケット・フォーマット(RIP Version 2)

スプリット・ホライズンの必要性

 RIPには、経路情報のループを回避するための手法として、スプリット・ホライズンという機能が用意されています。これは、ある経路情報を受信した場合、この経路情報の送信元ルータには当該経路情報をアナウンスしない(または、到達不可能な経路としてアナウンスする)ことで、経路情報のループを回避するための手法です。

 ここでは、以下のようなネットワークにおいてルータAとルータBの間にどのようなことが起こるかを考えてみます。

図6 ネットワーク構成例 図6 ネットワーク構成例

・スプリット・ホライズンがない場合

 この場合、ルータAはルータBから受信したネットワークCあての経路情報を、ルータBに対して自ルータ分のメトリックを1つ加算してアナウンスしてしまいます。ルータBは、ルータAから受信した経路に、さらに自ルータ分のメトリックを加算してアナウンスします。

 結果として、ネットワークCあての経路情報は、ルータAとルータBの間でメトリック値が16(到達不可能)となるまでループし続けることとなります。このような現象は、経路情報の数に比例した余計なトラフィックを発生させることになり、帯域の消耗につながってしまいます。

図7 スプリット・ホライズンがない場合 図7 スプリット・ホライズンがない場合

・スプリット・ホライズンが有効である場合

 この場合、ルータAはルータBから受信したネットワークCあての経路情報を、その送信元であるルータBには通知しません。結果として、ルータAとルータB間の経路情報のループが回避されることになります。

図8 スプリット・ホライズンがある場合 図8 スプリット・ホライズンがある場合

・スプリット・ホライズンの種類

 スプリット・ホライズンには2つの種類が存在します。

  • シンプル・スプリット・ホライズン
    ある経路情報を受信した場合、経路情報の送信元ルータには当該経路情報をアナウンスしない方式(図8の例は、この方式に基づいて説明しています)
  • ポイズン・リバース付きスプリット・ホライズン
    ある経路情報を受信した場合、この経路情報の送信元ルータには当該経路情報にメトリック16(到達不可能)をセットしてアナウンスする方式

無限カウントの問題

 RIPは、ディスタンス・ベクタ・アルゴリズムに基づいています。このため、基本的にはメトリック(ルータのホップ数)に依存したループの解決が行われてしまいます。ここでは、以下のようにリング状に組まれたネットワークにて経路情報のループが発生する場合を説明します。

図9 無限カウントの問題 図9 無限カウントの問題

 このようなネットワークにおいて、ルータCとネットワークCの間に障害が発生した場合、次のような動作が起こり得ます。

  • ルータCは、ネットワークCへの到達可能性がなくなったことを知らせるために、当該経路情報にメトリック16をセットし、ルータAとBにアナウンスします
  • ルータAは、ルータC経由ではネットワークCに到達できなくなったことを認識し、次にメトリック数の少ないルータB経由の経路情報を採用し、これをルータCにアナウンスします
  • ルータCは、同経路情報をルータBにアナウンスします
  • ルータBは、同経路情報をルータAにアナウンスします
  • 結果として、この経路情報は、メトリックが16に至るまでルータA、B、C間でアナウンスされ続けることになります

 このように、リング状のネットワークでは、たとえスプリット・ホライズンが有効であっても、経路情報のループが発生する場合があります。これに対処する1つの方法として、トリガード・アップデートが存在します。しかし、これはループの回避ではなく、通常は30秒間隔で定期的にアナウンスされるアップデートを、そのタイミング以外で素早くアナウンスするためのものです。

 このため、RIPをあまり複雑なネットワークにて採用することは避けた方がよいと思われます。

運用上の注意点

 ここでは、RIPを運用する際の注意点として、いくつかの例を挙げてみます。

・1対Nのネットワーク構成について

 フレーム・リレーなどを使用する場合、よくセンター・サイトを中心に各拠点を接続する1対Nの構成が取られることがあります。このようなネットワークでは、スプリット・ホライズンを無効にしておく必要性があります。これは、センター・サイトのルータがスプリット・ホライズンを有効にしていると、拠点Aから受け取った経路情報を拠点Bに対して正しくアナウンスできない(その逆も同様)ということが起こるからです。

図10 1対Nのネットワーク構成(スプリット・ホライズン有効時) 図10 1対Nのネットワーク構成(スプリット・ホライズン有効時)

・サブネット・マスクの扱いについて

 RIP1(バージョン1)では、VLSM(可変長サブネット・マスク)に対応していません。これは、RIP1のパケットの中に、サブネットなどの情報を記述した部分がないからです。このようにRIP1を実装したルータにおいてサブネットを扱う場合は、この情報が正しく伝播できないことが考えられます。

 これに対し、RIP2(バージョン2)では、IPアドレス・フィールドの後にサブネット・マスクの情報が記述されるようになり、VLSMに対応可能となっています。このため、サブネットを使用することが前提である場合は、あらかじめRIP2を使用する方がよいと思われます。

・サイレントRIPプロセスについて

 サイレントRIPプロセスとは、RIPのアップデートを送信せず、相手からのアップデートは受信し、自身のルーティング・テーブルを最新のものに維持するためのプロセスを指します。

 例えば、RIPのアップデートを受信して複数のゲートウェイを学習しておきたいサーバがあるとします。このサーバ自身がルーティングを行う必要がない場合などは、余計なRIPパケットを流さないためにも、このサイレントRIPプロセスを活用することをお勧めします。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。