3 Minutes NetWorking
No.33

3Minutes NetWorking

第33回レイヤ3 RIP

■ ルーティングプロトコル・おさらい

インター博士

いつまでたっても終わらないレイヤ3の話はまだ続く。

ネット助手

ほんと、長いですよね。

インター博士

それだけ重要だ、ということだよ。
さて、障害地点を回避して、パケットを送り届けなければならない。

ネット助手

いきなりですね。
確かにずーっと不通のままでしたら、パケットが届きませんもんね。

インター博士

うむ。障害地点を回避する、新しいルートを設定する必要があるわけだ。
ルータ間で自動的に情報交換を行い、新ルートを設定する方法が…。

ネット助手

ルーティングプロトコルってわけですね。

インター博士

そうだ。
ルーティングプロトコルは、それらの方法を決定している。その仕様によって、3種類に分けられる。

ディスタンスベクタ
  • RIP
  • IGRP
リンクステート
  • OSPF
拡張ディスタンスベクタ
  • EIGRP

[Table32-02:ルーティングプロトコルの種類・2]

インター博士

この3種類だ。
今回は、この中のディスタンスベクタ型ルーティングプロトコル、RIPを説明する。 ▼ link

ネット助手

あーるあいぴー?

■ RIP

インター博士

リップと読んでくれ。
これは、一番最初にできたルーティングプロトコルで、もっともわかり易い。
よって、これでルーティングプロトコルがどのように動作するかを知ってもらう。

ネット助手

なるほど。
他のルーティングプロトコルは説明してくれないんですか?

インター博士

うむ。この3分間ネットワーキングではRIPだけを説明する。
他のはいずれ機会を見て説明する。

ネット助手

了解です。

インター博士

さて、このRIPだが。
ディスタンスベクタ型と呼ばれるルーティングプロトコルだ。
ではネット君。ディスタンス(distance)とはなんだ?

ネット助手

でぃすたんす?
距離ですよね。

インター博士

うむ。
では、ベクタ(vector)は?

ネット助手

ソフトウェアのダウンロードサイト。 ▼ link

インター博士

…。

ネット助手

あれ?

インター博士

「あれ?」じゃねぇ!
ベクタは、方向。つまりディスタンスベクタとは、距離と方向のことだ。

ネット助手

距離と方向。

インター博士

そうだ。
宛先ネットワークの「距離と方向」の情報を交換するシステムのため、この名前がついている。

ネット助手

ははぁ。

インター博士

ふむ。
「博士、そりゃなんなんですか?」という顔だな。

ネット助手

わかりますか?

インター博士

うむ。
ネット君の疑問に答える前に、RIPのバージョンについて話しておこう。

ネット助手

RIPのバージョン?

インター博士

RIPはもっとも古いルーティングプロトコルだ。
なので、時代に合わせて拡張した形が存在する。それがRIPバージョン2と呼ばれる。 ▼ link

ネット助手

ばーじょんつー。

インター博士

うむ。前のバージョンは、RIPバージョン1と呼ばれる。
今回の説明は、このRIPv1だ。

ネット助手

はい。

■ ルーティングアップデート

インター博士

さて、ルータが他のルータと情報を交換するわけだが。
この交換する情報のことをルーティングアップデートという。

ネット助手

るーてぃんぐあっぷでーと?
アップデートって、更新ですよね。

インター博士

そうだ。
「ルート更新情報」とでも言うべきものかな。これを交換しあう。

ルーティングアップデート

[Figure33-01:ルーティングアップデート]

ネット助手

情報の交換ですね。

インター博士

うむ。
ではこの情報交換で、どのような情報を交換するかというと、ルーティングテーブルをそのまま交換しあう

ネット助手

ルーティングテーブルをそのまま?

インター博士

そのままだ。
そうだな、相手に自分の知っている道を教えるため、地図を渡す、という感じかな。

ネット助手

ははぁ。

宛先ネットワーク次のルータメトリックポート
192.168.1.0210.81.36.131番ポート
91.0.0.0210.81.36.161番ポート
172.36.0.0130.82.10.122番ポート
221.194.38.0なし03番ポート

[Table32-03:ルーティングテーブル]

インター博士

なんどか出ているルーティングテーブルの例だが、このようなものを交換するわけだ。
これには、ディスタンス(メトリック)と、ベクタ(送信ポート)が記載されている。だから、ディスタンスベクタ型

ネット助手

あ〜、なるほど。
距離方向型とはそういう意味なんですね。

インター博士

これを、30秒に1回送る。
それにより、ルーティングの新しい情報を交換しあうわけだ。

ネット助手

30秒に1回ですか。
わりと頻繁ですね。

インター博士

そうだな。ルータ側で変更も可能だ。
だが、ルート情報が間違っていると宛先にパケットが届かなくなってしまうからな。
ルート情報はなるべく最新にしておくことがよいだろう。

ネット助手

そういわれればそうですね。

インター博士

そして、このアップデートを6回受け取らなかったら、そのルータは何らかの障害が発生したとみなす
この場合、そのルータを使うルートを消してしまう

ネット助手

6回。
ってことは、180秒ですか。

インター博士

そうだ。
では実際、RIPのルーティングアップデートの中身を見てもらおう。

ネット助手

アップデートの中身?

■ RIPのルーティングアップデート

インター博士

うむ、中身だ。
送られる実際の内容だな。こうなっている。

コマンド(1バイト)バージョン(1バイト)ZERO(2バイト)
アドレス識別子(2バイト)ZERO(2バイト)
宛先ネットワーク IPアドレス(4バイト)
ZERO(4バイト)
ZERO(4バイト)
メトリック(4バイト)

[Table33-01:RIPアップデート]

ネット助手

縦に積み重ねて送るんですか?

インター博士

違う違う。
単に横が長くて入りきらないので、積み重ねただけだ。実際は、1行目の一番左から順に送っていく形になる。

ネット助手

なんだ、そうなんですか。
え〜っと、このZEROってのはなんですか?

インター博士

そのまんま、ゼロだ。
その部分は特に特定の値を入れるわけではなく、単にゼロが入る。

ネット助手

無駄じゃないですか?

インター博士

発達余裕と言え
実際、RIPv2ではZEROの部分に拡張用の値が入る

ネット助手

ははぁ。

インター博士

この1行目を抜いた赤い部分がルート情報だ。
ルーティングテーブルのエントリの部分だけこの部分を繰り返す

ネット助手

え〜っと。
ってことは、上の表の場合は、1ルート分?

インター博士

そうだ。コマンドとバージョンとZEROの4バイトを除いた、残り20バイトの部分がルート情報だ。
例えば、3ルート分送りたかったら、20 x 3 = 60 の60バイトと先頭4バイト必要だ。

ネット助手

ってことは、3ルートで64バイト必要ってことですね。

インター博士

そういうことだ。
RIPではルーティングテーブルをそのまま交換するので、ルーティングテーブルにあるルート情報につき20バイト必要になる、ということだ。

ネット助手

なるほど。

インター博士

さて、ではRIPはどのように動作するかを説明しよう。

ネット助手

はい。

■ RIPの動作

インター博士

あまり複雑な形を説明しても長くなるだけなので。
3つのルータで説明しよう。

[Figure32-02:RIPの動作] 

ネット助手

はわ〜。

インター博士

RIPはメトリックにホップ数を使う事を言い忘れてたな。
宛先ネットワークまでに通過するルータの数だ。

ネット助手

だから、直接接続されているネットワークのメトリックが0なんですね。

インター博士

うむ。
RIPは簡単に言うと、アップデートを受け取ったら、自分の知らないネットワークをテーブルに追加する

ネット助手

ふむふむ。

インター博士

その際、中継ルータを送ってきたルータに送信ポートをアップデートを受け取ったポートにメトリックに1を足すことを行う。

ネット助手

メトリックに1を足す?

インター博士

うむ。1つルータを中継するわけだからな。
では、例え話をしてみよう。ネット君の前の座席にはA君が座っている。
A君が「私の3つ前の席にはB君が座っています」と教えてくれた。ネット君とB君の距離は?

ネット助手

4つ席が離れてますね。

インター博士

うむ。それはA君を含めて、4つ席が離れていると考えたわけだ。
B君からA君まで3つ。A君からネット君まで1つ。よって、距離4。そうだろう?

ネット助手

あぁ、だからメトリックに1を足すってことですか。

インター博士

そうだ。
さらに、ネット君がB君の何か伝えたい場合、どうする?

ネット助手

前に座っているA君に、メモを渡します。

インター博士

いいぞ、ネット君。
つまり、A君が中継役だってことだな。それに、前に座っているA君に渡す、つまり前のポートからメモを送信するということになる。

ネット助手

ははぁ。なるほど。
そう考えるとわかりますね。

インター博士

さて次は、知っているネットワークの情報をアップデートで教えてもらった場合の例だ。
先ほどの例のルータBとルータCを繋いだ形の例だ。

[Figure32-03:RIPの動作・情報の更新]

ネット助手

最適ルート…。

インター博士

そう、最適ルートだ。
RIPでは、すでにテーブルに存在するネットワークについて、新たな情報がアップデートで来た場合

ネット助手

来た場合?

インター博士

新しい方がメトリックが小さい場合、そちらをテーブルに載せる
新しい方がメトリックが大きいならば、それは無視する。

ネット助手

よりメトリックが小さい方が、ルーティングテーブルに載るんですね。

インター博士

最適ルートだからな。

ネット助手

メトリックが同じ場合は?

インター博士

同じ場合は、前からあった方が優先される。
もしくは、両方ともテーブルに載せてしまう。これはルータの設定次第だ。

ネット助手

なるほど。

■ ルーティングループ

インター博士

さて、RIPの動きはわかってもらえたと思うが。
残念ながらRIPには、正確にはディスタンスベクタには致命的な欠点がある

ネット助手

致命的な欠点?
セキュリティホールですか?

インター博士

そんなインターネットエク…
ゴホンゴホン。

ネット助手

風邪ですか?

インター博士

あぁ、うん。大丈夫だ。
セキュリティホールではない。
それは、ルーティングループと呼ばれる欠点だ。

ネット助手

るーてぃんぐるーぷ?

[Figure32-04:ルーティングループ] 

インター博士

このような状態のことだ。
ルーティングアップデートがループしてしまうからな。

ネット助手

ルータCに、ルータCを経由するルートを教えてるんですものね。
確かにおかしくなりますよね。

インター博士

うむ。
何故このようなことが起きるかといえば、ルートの変更情報がすぐに伝わらないことに原因がある。

ネット助手

う〜ん。
そうか、上の場合、192.168.200.0に繋がらなくなった事を、ルータBがアップデートを送る前に送ってしまっていれば解決するのか。

インター博士

そうだ。
すべてのルータが同じ情報を持つまでの時間がかかるという欠点が、ディスタンスベクタにはある。これを、コンバージェンスが遅いという。

ネット助手

コンバージェンスが遅い。
なるほど。

インター博士

解決策はもちろんとられている。
まずは、スプリットホライズン

ネット助手

すぷりっとほらいずん?

[Figure32-05:スプリットホライズン]

インター博士

ルートを教えてもらったルータには、そのルートよりよいルート以外は教えない
よりよい近道なら教えるが、それ以外は教えない、という方法だ。

ネット助手

なんか、当たり前のような気がしますが。

インター博士

そうだな。そうかもしれん。
もう1つ、ルーティングループを回避する方法を説明しよう。

[Figure32-06:ホールドダウンタイマ]

インター博士

「ルートの変更情報がすぐに伝わらないのなら、全員に伝わるまで待とう」
ホールドダウンタイマと呼ばれる方式だ。

ネット助手

ほーるどだうん。
抱え込みタイマー?

インター博士

そうだな、他のルータから来たアップデートを「まだ全員に伝わってないから」と抱え込んでしまう。
このホールドダウンタイム中に来たアップデートは無視する

ネット助手

なるほど。

インター博士

RIPはこれらルーティングループの問題や、コンバージェンスの遅さなどの欠点があるので、どちらかというと小中規模のネットワーク向けだな。

ネット助手

コンバージェンスが遅いと、大きいネットワークでは大変そうですものね。

インター博士

よし。今回はこれで終了だ。
ルータの話も今回で終了だ。

ネット助手

長かったですね。

インター博士

そうだな。
くどいようだが、ルータこそがインターネットワークの中核なのだから、長くなって当然だ。

ネット助手

そう考えれば、当然といえば当然ですね。

インター博士

うむ。
次回からもレイヤ3の話がもうちょっと続くぞ。

ネット助手

了解。
3分間ネットワーキングでした〜♪

RIP
[Routing Information Protocol]
1988年リリース。
RIPだけ
OSPF、EIGRP、BGP4は30分間で行う予定です。
ソフトウェアのダウンロードサイト
わりとお世話になってます。
RIPバージョン2
[Routing Information Protocol version 2]
1998年リリース。
RIP2、RIPv2などと表記される。
プレフィックス長(サブネットマスク)をアップデートに含む、マルチキャストが可能になる、などの拡張がされている。RFC2453で規定。
ルーティングアップデート
[routing update]
6回受け取らなかった…
この6回=180秒のことを、デッドアウトタイム[deadout time]といいます。
そのルータを使うルートを…
実際は、120秒後にルーティングテーブルから消去します。
その間に相手ルータが復旧してアップデートが届いた場合は消去しません。
この時間のことをガベージコレクションタイム[garbage-collection time]といいます。
RIPv2では…
RIPv2では、サブネットマスクやネクストホップなどがこの部分に入ります。
ルーティングテーブルを…
最大で25ルート分。
つまり、(25 x 20) + 4 = 504バイト。
ルータとルータを結ぶのもネットワークであることに注意。
左図の場合、192.168.1.0と192.168.2.0はルータ間を結ぶネットワークである。
セキュリティホール
[security hole]
セキュリティ上問題とされる弱点。ソフトウェアの開発ミスなどにより作られる。
悪意のあるユーザからデバイスを不正に操作されてしまう危険性がある。
ウィルスなどが感染の手口として使用することも。
ルーティングループ
[routing loop]
ルートを消去する場合、テーブルから削除する場合もあるが、そのルートは最大値のメトリックを持つ、という形にする場合もある。
RIPの最大値は16
スプリットホライズン
[split-horizon]
ホールドダウンタイマ
[holddown timer]
ネット助手ネット君の今日のポイント
  • RIPはディスタンスベクタ型ルーティングプロトコルである。
    • ルーティングアップデートという情報を交換する。
    • ルーティングテーブルをアップデートとして送る。
    • 30秒に1回、アップデートを送る。
    • コンバージェンスが遅い。
  • RIPのメトリックはホップ数である。
  • アップデートで送られてきたルーティングテーブルを自分のものと比べて、テーブルを更新する。
  • ルーティングループが発生する可能性がある。
    • そのため、スプリットホライズン、ホールドダウンタイマなどを使う

3 Minutes NetWorking No.33

管理人:aji-ssz(at)selene.is.dream.jp