RIP (Routing Information Protocol) とは、AS内部における経路情報を交換するために用いられるルーティングプロトコルの1つ。隣接するルーター同士が自らが保有するネットワーク情報を交換しあうことで、ルーティングテーブルを自動的に作成するために用いられます。
参考 プロトコルとは?
このページではネットワーク初心者向けにRIPを1からわかりやすく解説します。1つ1つの用語の意味を知らない方でも必ず理解できるように、前提となる知識もこのページですべてご説明していますのでご安心ください。
ネットワークエンジニアを目指す方であれば知らないと恥ずかしい基本知識の1つです。
CCNAやネットワークスペシャリスト試験などでも頻出の内容。是非最後までご覧ください。
RIPとは?IT初心者向けにわかりやすく
RIPを一言で解説すると上記のようになります。
ですが↑のままでは「ちょっと理解しきれない・・・!」という方のために、このページでは前提となる基本知識から網羅的に解説していきます。
RIPを正しく理解するために、以下の3つのポイントを復習しておきしょう。
前提知識1:ルーティングとは
RIP (Routing Information Protocol) は「ルーティングプロトコル」の1つです。
したがって、ルーティングを行うためのルーティングテーブル(=経路制御表)を自動的にアップデートするのがRIPの役割であると言えます。
そもそもルーティングが何か?を知らないとRIPを理解することができないので、この章ではルーティングについて簡単におさらいしておきます。
ルーティングについてもう少ししっかり理解したい!という方は以下の記事をご覧ください。
前提知識2:AS (Autonomous System) とは
RIP (Routing Information Protocol) は、ルーティングプロトコルの中でも特に「AS内部における経路情報を交換する」ために用いられるプロトコルです。
AS (Autonomous System) とは何か?
RIPを完全に理解するにはASについても正しく把握しておく必要があるので、この章ではASについて簡単におさらいします。
前提知識3:IGPとEGP
ルーティングプロトコルは大きく以下の2つに分類することができます。
このうち、RIP (Routing Information Protocol) はIGPに分類されます。
RIPがルーティングプロトコルの1つであること。そして特にAS内部のルーティングテーブルのアップデートに利用されるIGP (Interior Gateway Protocol) に分類されること。
上記の2つが頭に入っていればまずはOKです。
ここまでがRIPに関する概要です。ここからは、具体的にRIPがどのように経路情報を交換するのか?を解説していきます。
RIPによる経路制御
ここからは、RIP (Routing Information Protocol) を用いてルータ同士がどのようにお互いのルーティング情報を交換しているか?どのように経路制御を行っているのか?を見ていきましょう。
RIPを理解するためのポイントは以下の2点です。
ステップ1:経路制御情報のブロードキャスト
参考 ブロードキャストとは?
RIPでは、自分が知っている経路制御情報を他のルータに30秒間隔で送りつけることから始まります。この定期的なブロードキャストをレギュラーアップデートと呼びます。
レギュラーアップデートでは、隣接するルーターに対して経路制御情報(自分が知っているネットワークまでの「距離=目的地に到着するまでに経由するルーター数」)を通知します。
以下はRIPのレギュラーアップデートに関する簡単な仕組みです。
こちらの図の「ルーターA」は「ルーターB」「ネットワークA」と隣接しています。RIPでは、隣接するルーターにネットワーク情報をレギュラーアップデートで送りつけます。つまり、この場合ルーターAはルーターBに対して「ネットワークA」の場所と「ネットワークA」までに経由するルーター数を通知します。
ルーターBから見ると「ネットワークA」までの距離は1であることが通知されます。
RIPでは全てのルーターが隣接するルーターにレギュラーアップデートを送付します。したがって、上記の通知と同様にルーターBもルーターCへ。ルーターCはルータDへ・・・バケツリレーのように経路制御情報を共有していきます。
このように経路制御情報を1つ1つ隣接するルーターに少しずつ届けていきます。
最終的にルーターDはネットワークAまでの距離(=経由するルーター数)が「3」であることが分かります。
ただし、現実のインターネットの世界ではこのルーターの数は2つや3つではありません。したがって、実際にネットワークの情報(場所と距離)をすべてのルーターに伝えるにはかなりの時間が必要となることが分かります。これはRIP/ディスタンスベクタ型のルーティングプロトコルにおける大きな弱点の1つです。
ステップ2:距離ベクトルを基準にルーティングテーブルを作成
続いてRIPによりブロードキャストされた経路制御情報をもとにルーティングテーブル(=ネットワークの道案内図)を作成していきます。
RIPでは、どの経路をたどるのが最も適切か?(効率的か?)というのを対象までの「距離」を基準に判断します。
以下の図をご覧ください。
ネットワークAとPCの間には2本のルートが存在する場合を図示したものです。
ルーターEにはルーターAとルーターDから、同じネットワークAに対する経路制御情報が届けられています。RIPではネットワークAの方向と距離が通知されるので、単純な表に示すと以下の情報をルーターEが知っている状態です。
さて、このときルーターEはどのようにルーティングテーブルを作成するのでしょう?
このときRIPでは「距離」を基準にルーティングテーブルを作成します。つまり、対象PCからネットワークAにデータを送る際にはルーターAを経由したほうが最短であることが分かるので、ルーティングテーブルにはネットワークAに送る場合にはルーターAにデータを転送できるように値を設定します。
このように、受け取った経路制御情報のうち「距離」が最小となる情報をルーティングテーブルに登録していく方法を採用しているプロトコルを「距離ベクトル型」「ディスタンスベクタ型」のルーティングプロトコルと呼びます。
冒頭で説明したRIPの説明を再度掲載します。
RIPの動作原理をさらに詳しく
RIPの動作原理をさらに深堀してみていきましょう。ここではサンプルとして具体的なネットワークを例にRIPの動作・弱点やRIPのバージョンによる違いをご説明します。
このネットワーク構成では、2つのサブネットが直接接続された2つのルーターを介して通信します。左側のサブネットは192.168.10.0/24
、右側のサブネットは192.168.20.0/24
です。
参考 サブネットとは?
RIPの設定を行っていない状態では、IPアドレス 192.168.10.1 のPCから 192.168.20.1 のPCへの通信を行うことはできません。ルーターはPC(192.168.10.1)からPC(192.168.20.1)へのパケットを受け取っても、どのルーターにパケットを流せばよいのかが分からないためです。この場合パケットは破棄されてしまいます。
ここでRIPを使用して、これらのサブネット間でのルーティングを可能にしていきます。
ステップ1 RIPの設定
- ルーターのRIPプロセスの起動
- 各ルーターにてRIPプロトコルを有効化します。
- ネットワークの宣言
- 各ルーターにて、自身が接続されているサブネットをRIPプロセスに宣言します。
以下は、CiscoのIOSを使用したルーターでRIPを設定するためのコマンドの例です。この例では、2つのルーターの間でRIPを設定して、それぞれが自身のローカルネットワークを他のルーターにアドバタイズする方法を示しています。
サンプル ルーターAのRIP設定例
RouterA> enable RouterA# configure terminal RouterA(config)# router rip RouterA(config-router)# version 2 RouterA(config-router)# network 192.168.10.0 RouterA(config-router)# no auto-summary RouterA(config-router)# exit RouterA(config)# exit RouterA# write memory
enable
: 特権EXECモードに切り替えconfigure terminal
: 設定モードに切り替えrouter rip
: RIPルーティングプロトコルをの有効化version 2
: RIPのバージョン2を使用するように設定network 192.168.10.0
: ルーターが192.168.10.0/24ネットワーク上のインターフェースでRIPをアドバタイズするように指示no auto-summary
: 自動要約を無効にして、クラスレスルーティングを有効化。write memory
: 設定を保存
サンプル ルーターBのRIP設定例
RouterB> enable RouterB# configure terminal RouterB(config)# router rip RouterB(config-router)# version 2 RouterB(config-router)# network 192.168.20.0 RouterB(config-router)# no auto-summary RouterB(config-router)# exit RouterB(config)# exit RouterB# write memory
これらのコマンドにより、各ルーターは隣接するルーターとの間でRIPを使用してルーティング情報を交換(レギュラーアップデート)するようになります。
ステップ2 ルーティングテーブルの交換
- ルーティング情報のブロードキャスト
- 各ルーターが30秒ごとに自身のルーティングテーブルを隣接ルーターにブロードキャスト(=レギュラーアップデート)
- ルーティングテーブルの更新
- ルーターは受信したルーティング情報に基づいて自身のルーティングテーブルを更新
ステップ2では、RIPを使用してルーティング情報の交換が行われます。RIPでやりとりされるデータは一般的に「RIPレスポンスメッセージ」と呼ばれ、各アドバタイズされるネットワークのルート情報を含みます。
Command: 2 (Response) Version: 2 Must be zero: 0 Address Family Identifier (AFI): 2 (IP) Route Tag: 0 IP Address: 192.168.10.0 Subnet Mask: 255.255.255.0 Next Hop: 0.0.0.0 Metric: 1
このメッセージは、ルーターAがルーターBに対して自身の直接接続されているネットワーク192.168.10.0/24
の情報をアドバタイズしていることを意味します。ここでのMetric: 1
は、ルーターAから192.168.10.0/24
ネットワークまで1ホップであることを示しており、Next Hop: 0.0.0.0
は、このネットワークがルーターAに直接接続されていることを意味しており、他のルーターを経由せずに到達できることを示しています。
対照的に、ルーターAがルーターBに対して192.168.20.0/24
ネットワークの情報を送る場合、ホップ数は2になります(ルーターB経由でのみ到達可能であるため)。ただし、実際のメトリック値はルーターBがルーターAに到達するための経路をどのように学習するかによります。
この情報交換により、ルーターBはルーターAが提供するルート情報を得て、ルーティングテーブルの更新を行うことができます。
ルーティングテーブルの更新は、ルーターが隣接するルーターから受信したRIPレスポンスメッセージを基に行われます。更新プロセスでは、新しいルート情報が既存のルートよりも良い(メトリックが低い)場合、ルーティングテーブルが新しい情報で上書きされます。同じメトリックのルート情報が受信された場合、ルーティングテーブルは更新されますが、これによりロードバランシングが可能になる場合があります。
以下は、ルーターBがルーターAからのRIPレスポンスを受信してルーティングテーブルを更新する例です。
サンプル ルーターBにおけるルーティングテーブル更新前
Destination | Subnet Mask | Next Hop | Metric |
---|---|---|---|
0.0.0.0 | 0.0.0.0 | N/A | 0 |
192.168.20.0 | 255.255.255.0 | 0.0.0.0 | 1 |
サンプル ルーターBがルーターAから受信したRIPレスポンスメッセージ
Command: 2 (Response) Version: 2 Must be zero: 0 Address Family Identifier (AFI): 2 (IP) Route Tag: 0 IP Address: 192.168.10.0 Subnet Mask: 255.255.255.0 Next Hop: (ルーターAのインターフェースIP) Metric: 1
サンプル ルーターBにおけるルーティングテーブル更新後
Destination | Subnet Mask | Next Hop | Metric |
---|---|---|---|
0.0.0.0 | 0.0.0.0 | N/A | 0 |
192.168.20.0 | 255.255.255.0 | 0.0.0.0 | 1 |
192.168.10.0 | 255.255.255.0 | ルーターAのインターフェースIP | 2 |
ルーティングテーブルを更新する際には、以下の点が考慮されます。
- メトリックの加算
- ルーターBは、受信したメトリックに1を加え(ルーターAを経由するため)、新しいメトリックとして2を算出します。
- ルーティングテーブルの更新
- 192.168.10.0/24への新しいルートがルーティングテーブルに追加されます。このルートはルーターAを次のホップとし、メトリックは2です。
- ルートの有効化
- この新しいルートは、ルーティングテーブルで有効になり、ルーターBから192.168.10.0/24へのパケットは、このルート情報に基づいてルーターAに転送されます。
このようにして、RIPはネットワーク内の各ルーターのルーティングテーブルを更新し続け、ネットワークのトポロジーに変更があった場合にはそれを反映させます。これにより、ネットワーク内でのルートの安定性とパケットの最適な配送が保証されます。
ステップ3 パケットの交換
ステップ3では、ルーティングテーブルに基づいてパケットがどのようにルーター間で交換されるかを詳しく説明します。以下に、ネットワーク 192.168.10.0/24
のホストA(IP: 192.168.10.
1)が、ネットワーク 192.168.20.0/24
のホストB(IP: 192.168.20.1
)にパケットを送る例を示します。
- パケット生成:
- ホストAは宛先IP
192.168.20.
1、送信元IP192.168.10.1
のパケットを生成します。
- ホストAは宛先IP
- ルーターAへの送信:
- ホストAはデフォルトゲートウェイ(ルーターA)にパケットを送ります。
- ルーターAのルーティングテーブル参照:
- ルーターAはルーティングテーブルを参照し、次のホップ(ルーターB)へ転送することを決定します。
- ルーターBへのパケット転送:
- ルーターAはパケットをルーターBに転送します。
- ルーターBのルーティングテーブル参照:
- ルーターBはルーティングテーブルを参照し、パケットを宛先ネットワーク
192.168.20.0/24
にあるホストBに配送することを決定します。
- ルーターBはルーティングテーブルを参照し、パケットを宛先ネットワーク
- パケットの配送:
- ルーターBはパケットをネットワーク
192.168.20.0/24
上のホストBに配送。
- ルーターBはパケットをネットワーク
このようにRIPレスポンスメッセージのやり取り→ルーティングテーブルの更新→パケットの送信が行われます。
距離ベクトル型のルーティングプロトコルであるがゆえにいくつかの問題点も存在します。
その問題点を解消するために、RIPには以下の5つの機能を備えています。RIPをより深く知りたい!という方は以下の用語についても合わせて学習するようにしましょう!
ネットワーク学習の決定版(ネットワークエンジニアを目指すなら必見!)
↑ページ数が多く誰でも手軽に読める内容ではありませんが、ネットワークエンジニアであれば、ほぼ全員が一度は読んだことがある超・有料書籍。是非一度読破しておきたい1冊のご紹介です。
読者特典> 0から学ぶネットワーク入門