前回は、ルータが3台のネットワークにおけるルーティングテーブルの手動設定を紹介した。しかし、ネットワークが複雑になってくると、すべてを手入力するのは大変だ。そこで、ルーティングテーブルを自動的に設定するルーティングプロトコルを紹介しよう。
障害発生時に迂回させるには?
前回に紹介したとおり、ルータが3台のネットワークでも、
- ルータのインターフェイスごとのIPアドレス
- ネットワークアドレスごとのパケットの転送先インターフェイスと宛先
を正しく設定すれば、パケットは相手に届くことがわかった。しかし、経路やインターフェイスに障害が発生してパケットが通れなくなった場合は、どうすればよいのだろうか。

図1 本パートの実験環
単純に考えれば、ルータのルーティングテーブルを、「生きている経路」を通ってパケットが転送されるように変更すればよいと思うだろう。しかし、文字にすれば簡単だが、現実はそう甘くない。今回の例では1台のルータに1つのネットワークしかつながっていないが、仮に2つのネットワークがつながっているとすると、すべてのルータの設定変更が2倍の手間になる。タイプミスによる設定間違いも起こり得るだろうし、設定が漏れているとパケットが流れない。
そこで活用したいのが、ルーティングテーブルを自動的に更新する「ルーティングプロトコル」である。
ルーティングプロトコルにはいくつか種類があり、ネットワークの規模によって選ぶようになっている。今回の例のようにルータが3台程度であれば、「RIP(Routing Information Protocol)」を使うのが一般的だ。実際の動作を見る前に、まずは仕組みを理解しておこう。
RIPの仕組み
RIPは動的ルーティングプロトコルの1つである。ルータに手動でルーティングテーブルを設定していくのは「静的ルーティング」と呼ばれる。そして、ルーティングの情報をすべて手で入力する手間から解放されるのが、RIPに代表される動的ルーティングプロトコルなのだ。
RIPは「ディスタンスベクタ型」のプロトコルで、ディスタンス(距離)とベクタ(方向)を転送先の判断基準にする。つまりRIPでは、
「距離が近い」=「最短経路である」
と解釈するわけだ。
RIPに限らず、ルーティングプロトコルが最適経路を判断する際に基準とする値のことを「メトリック」という。RIPにおけるメトリックは、「ホップ数」と呼ばれる、送信元と宛先の間にあるルータの台数だ。先ほどのRIPの考え方と併せると、RIPにおける最短経路はホップ数(=中継するルータの台数)が重要といえる。
具体的なRIPの仕組みは、次のようになる。まず、RIPが有効になったルータは、近隣のルータに対して「広告(Advertisement)」と呼ばれるパケットを30秒ごとに投げる。この広告パケットには、自身のルーティングテーブルに記載されている情報が含まれる。たとえば、先の図1のような構成のネットワークのルータAは、隣のルータBとルータCに対して、自身に直結したネットワーク(192.168.1.0/24)の情報を「ホップ数が1」として広告する。
次にそれらを受け取ったルータBやCは、192.168.1.0/24宛のパケットを受け取ったときのために、自身のルーティングテーブルに「192.168.1.0/24宛のパケットは、ルータA経由でホップ数は2」と書き込む。ルータBやCが広告する情報には、このルータAに関するものも含まれる。そのため、広告を受け取ったルータを経由するたびに、ホップ数を1ずつ加えながら各ネットワークの情報が伝播していくわけだ。
ルーティングテーブルを自動的に設定するルーティングプロトコルを紹介しよう。しかし、ここで1つ疑問がわく。図1のようにネットワークがループしていると、異なるルートから異なる情報が届くケースが出てくる。具体的には、ルータAからの情報がルータBとルータCに伝わった時点で、それぞれが次回広告する際に合わせて通知される。つまり、ルータBからルータCに対して「192.168.1.0/24宛のパケットは、私(ルータB)経由であれば2ホップで届けられますよ」と知らせるわけだ(図2)。ルータCはこの時点で、すでに192.168.1.0/24宛ならルータA経由で1ホップであることがわかっている。そのような場合は、どうなるのだろうか?
結論からいえば、何の問題も起こらない。同じネットワーク宛の情報が複数届いても、RIPではホップ数を比較して大きいほうを破棄するようになっているからだ。
RIPの動作を試してみる
ではここからは、実際にRIPを有効にして、どのようにルーティングテーブルが構成されるのかを見ていこう。
RIPを有効にするには、インターフェイスにIPアドレスを設定するときと同じように、
# rip use on
とコマンドを入力する。ほかに細かい設定は不要で、先ほど解説したように、ルータ間で自動的に情報を交換してルーティングテーブルを構成してくれる(画面3)。tracertコマンドを実行すれば、無事にルーティングされることが確認できるはずだ。

画面3 種別が「RIP」になり、付加情報としてメトリックが表示される
次に、当初の目的であるルーティングテーブルの動的更新を試してみたい。今回はルータAとルータCをつなぐケーブルを抜くことで、障害発生をシミュレートした。

画面4 ルータCを経由してルータBに至るので、192.168.2.0/24宛の経路はメトリックが2になる
その結果、予想通りルーティングテーブルが更新され、パケットが無事通るようになった(画面4、5)。
●
以上が、小規模ネットワークで利用するルーティングプロトコルであるRIPの概要だ。次回は、大規模なLANでも利用可能な「OSPF」について紹介しよう。
本記事は、ネットワークマガジン2008年11月号の特集1「試してわかるルーティング」を再編集したものです。内容は原則として掲載当時のものであり、現在とは異なる場合もあります。 |

この連載の記事
- 第13回 OSPFを実際に設定してみよう!
- 第12回 OSPFの通信手順と代表ルータを理解しよう
- 第11回 大規模ネットワークでも使えるOSPFとは?
- 第9回 経路が複数あるときのルータ設定とその動作
- 第8回 ルーティングの基礎「静的ルーティング」を試してみよう
- 第7回 ルータとルータを結ぶネットワークの仕組みを知ろう
- 第6回 ルーティングテーブルからパケットの経路を決める手順とは?
- 第5回 ルーティングの基本動作を見てみよう
- 第4回 IPアドレスからMACアドレスを導くARPの中身を見てみよう
- 第3回 TCP/IPの基本、IPアドレスで直接通信する仕組みを知ろう
- この連載の一覧へ