ルーティングプロトコルの中でも,基礎ともいえるプロトコルがディスタンスベクタ型のルーティングプロトコルです。ルーティングプロトコルの基本的な概念は,ディスタンスベクタ型によって学ぶことができます。ルーティングプロトコルの基礎であるRIPと,Cisco社独自のディスタンスベクタ型プロトコルであるIGRPの2つを学び,ルーティングプロトコルの理解を深めましょう。
ディスタンスベクタ型ルーティングプロトコル
第2回で説明したルーティングプロトコルの種別のうち,RIPとIGRPはディスタンスベクタ型ルーティングプロトコルです。ディスタンスベクタ型ルーティングプロトコルは,隣接ルータからの情報のみからルーティングテーブルを構成します。隣接していないルータ・ネットワークの情報は,すべて隣接ルータ経由で取得します。
ディスタンスベクタ型ルーティングプロトコルを動作させているルータは,自分が持つルーティングテーブルの情報,つまりそれぞれのネットワークへのベストパスを隣接ルータへルーティング情報(ルーティングアップデート)として渡します。ルーティングアップデートを受け取ったルータは,その内容と自身のテーブルを見比べて,ルーティングテーブルを更新します。RIPを例にディスタンスベクタ型ルーティングプロトコルの動作を図示します(図1)。
図1 ルーティングテーブルの更新
「伝言ゲーム」のように隣接ルータへ情報を伝えていくことになります。ディスタンスベクタ型でルーティングテーブルに情報を追加していく手順は,ベルマンフォードアルゴリズムと呼ばれる方法で,以下のようになります。
- ルーティングアップデートで受け取ったネットワークがルーティングテーブルにあるか
- ない ・・・ テーブルに追加
- ある ・・・ 2へ
- ルーティングテーブルにあるエントリの次ホップのルータからアップデートを受け取ったか
- 受け取った ・・・ テーブルに追加
- 違うルータから受け取った ・・・ 3へ
- アップデートのメトリックが今のメトリックより小さいか
- 小さい ・・・ テーブルに追加
- 大きい ・・・ アップデートは無視
ディスタンスベクタ型では,隣接していないルータ・ネットワークの情報は順番にルーティングアップデートが回ってくるまで知ることができません(図2)。
図2 コンバージェンスにかかる時間
上記のように最悪の場合は,コンバージェンスに60秒かかってしまいます。特にネットワークが大きくてルータ数が多い場合,離れたルータ間でのコンバージェンスの時間は膨大になってしまいます。このため,ディスタンスベクタ型は大規模ネットワークに不向きであるといえます。
ルーティングループ
ディスタンスベクタ型ルーティングプロトコルが抱える欠点として,ルーティングループがあります(図3)。
図3 ルーティングループ
このルーティングアップデートが起こる最大の原因は,コンバージェンスが遅いことにあります。図3の例でいえば,1.0.0.0の障害が直ちに伝わっていれば,ルータBからのアップデートに1.0.0.0が含まれなくなり,ルーティングループは発生しなくなるでしょう。
このルーティングループを防ぐ手法として,RIPやIGRPでは次の手法のいくつかがとられています(図4)。
- イベントトリガアップデート
- 無限カウント
- ホールドダウンタイム
- スプリットホライズン
- ルートポイゾニング・ポイズンリバース
図4 ルーティングループの防止
これらの手法を1つ,あるいは複数を組み合わせてルーティングループを防止します。
RIPとIGRP
RIPは最初期に作られたルーティングプロトコルで,現在ではかなり古いプロトコルとして知られています。このため,改良が施され,バージョン2が存在します(RIP2またはRIPv2と表記して区別します。この場合改良前のバージョンはRIP1またはRIPv1と表記します)。RIPは動作が単純で,ルータに対する負荷も小さいため,現在でも小規模ネットワークではよく利用されています。
一方,IGRPはCisco社がRIPの改良として独自で作成したディスタンスベクタ型のルーティングプロトコルです。RIPのいくつかの弱点を改良し,RIPよりも拡張性に富んでいます。ですが,やはりディスタンスベクタ型なので中~大規模には向いていません。現在ではIGRPの拡張型であるEIGRPがCisco社独自のルーティングプロトコルとしてよく利用されています。
RIPv1,RIPv2,IGRPのそれぞれの特徴は以下の通りになります(表1)。
表1 RIPv1,RIPv2,IGRPの特徴
RIPv1 | RIPv2 | IGRP | |
---|---|---|---|
クラスルレスのサポート | クラスフルのみ | クラスレス可能 | クラスフルのみ |
メトリック | ホップ数 | 複合メトリック | |
最大ホップ数 | 16 | 100(255まで拡張可能) | |
アップデート間隔 | 30秒 | 90秒 | |
イベントトリガアップデート | しない | する | |
アップデートの宛先アドレス | ブロードキャスト (255.255.255.255) | マルチキャスト (224.0.0.9) | ブロードキャスト (255.255.255.255) |
RIPの設定と確認
RIPの設定は以前のIOS編第8回で解説しましたが,もう一度確認のために説明します。基本的な設定は,routerコマンドとnetworkコマンドの2つを使います(図5)。
- (config)# router rip・・・ RIPを有効にし,RIP設定モードに入る
- (config-router)# network [ネットワークアドレス] ・・・ ルーティングプロトコルを有効にするネットワークを決定
- [ネットワークアドレス]
- ルーティングプロトコルを有効にするネットワークのネットワークアドレス
- [ネットワークアドレス]
図5 RIPの設定
RIPはクラスフルルーティングプロトコルなので,networkコマンドはクラスで設定します。例えば,172.16.1.0/24と172.16.2.0/24の2つのサブネットがあった場合,networkコマンドはnetwork 172.16.0.0でよいことになります。
また,RIPをバージョン2で動作させたい場合は,version 2コマンドをルータ設定モードで実行します。
- (config-router)# version 2 ・・・ RIPv2で動作させる
RIPの動作を確認するには,show ip protocolsコマンドを使います(図6)。
- (config)# show ip protocols ・・・ ルーティングプロトコルの動作を確認
図6 show ip protocols
一番上に書かれているタイマは以下の意味があります(カッコ内はデフォルト値)。
- Update (30秒) ・・・ ルーティングアップデートの送信間隔
- Invalid (180秒) ・・・ アップデートがこのInvalidタイマ内に受信されなければ,そのエントリはホールドダウンになる
- Hold down (180秒) ・・・ ホールドダウン時間。このタイマ内ではそのエントリに対するアップデートは無視される
- Flush (240秒) ・・・ この時間を経過してもアップデートが受信されなければ,そのエントリは削除される
また,RIPのアップデートの送受信を確認するには,debugコマンドを使用します(図7)。
- (config)# debug ip rip ・・・ RIPアップデートの送受信を表示する
図7 debug ip rip
IGRPの設定と確認
IGRPの基本的な設定は,RIPと大した違いはありません。routerコマンドと,networkコマンドを使います(図8)。
- (config)# router igrp [AS番号] ・・・ IGRPを有効にし,IGRP設定モードに入る
- [AS番号]
- 同一のAS番号に設定されたルータ間でしか情報をやりとりしないため,同じ番号に指定する
- [AS番号]
- (config-router)# network [ネットワークアドレス] ・・・ ルーティングプロトコルを有効にするネットワークを決定
- [ネットワークアドレス]
- ルーティングプロトコルを有効にするネットワークのネットワークアドレス
- [ネットワークアドレス]
図8 IGRPの設定
IGRPの動作確認にも,show ip protocolsコマンドを使います(図9)。
図9 show ip protocols
基本的な表示結果は同じですが,2つの点で注意が必要です。まず,タイマがRIPとは異なります(表2)。
RIP | IGRP | |
---|---|---|
Update | 30 | 90 |
Invalid | 180 | 270 |
Holddown | 180 | 280 |
Flush | 240 | 630 |
もう1つがメトリックです。IGRPは複合メトリックを使用しています。複合メトリックは,以下の5つの値の計算結果から求められます。
- 帯域幅
- 遅延
- 信頼性
- 負荷
- MTUサイズ
この5つの値にそれぞれK値と呼ばれる重みを掛け,その結果がメトリックになります。デフォルトでは帯域幅に掛けるK値(K1)と,遅延に掛けるK値(K3)以外はゼロになっています。したがって,デフォルトでは帯域幅と遅延から計算されます。