ルーティングプロトコルの中でも,基礎ともいえるプロトコルがディスタンスベクタ型のルーティングプロトコルです。ルーティングプロトコルの基本的な概念は,ディスタンスベクタ型によって学ぶことができます。ルーティングプロトコルの基礎であるRIPと,Cisco社独自のディスタンスベクタ型プロトコルであるIGRPの2つを学び,ルーティングプロトコルの理解を深めましょう。

ディスタンスベクタ型ルーティングプロトコル


 第2回で説明したルーティングプロトコルの種別のうち,RIPとIGRPはディスタンスベクタ型ルーティングプロトコルです。ディスタンスベクタ型ルーティングプロトコルは,隣接ルータからの情報のみからルーティングテーブルを構成します。隣接していないルータ・ネットワークの情報は,すべて隣接ルータ経由で取得します。


 ディスタンスベクタ型ルーティングプロトコルを動作させているルータは,自分が持つルーティングテーブルの情報,つまりそれぞれのネットワークへのベストパスを隣接ルータへルーティング情報(ルーティングアップデート)として渡します。ルーティングアップデートを受け取ったルータは,その内容と自身のテーブルを見比べて,ルーティングテーブルを更新します。RIPを例にディスタンスベクタ型ルーティングプロトコルの動作を図示します(図1)。


 図1 ルーティングテーブルの更新


 「伝言ゲーム」のように隣接ルータへ情報を伝えていくことになります。ディスタンスベクタ型でルーティングテーブルに情報を追加していく手順は,ベルマンフォードアルゴリズムと呼ばれる方法で,以下のようになります。

  1. ルーティングアップデートで受け取ったネットワークがルーティングテーブルにあるか

    • ない ・・・ テーブルに追加

    • ある ・・・ 2へ

  2. ルーティングテーブルにあるエントリの次ホップのルータからアップデートを受け取ったか

    • 受け取った ・・・ テーブルに追加

    • 違うルータから受け取った ・・・ 3へ

  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の特徴

 RIPv1RIPv2IGRP
クラスルレスのサポートクラスフルのみクラスレス可能クラスフルのみ
メトリックホップ数複合メトリック
最大ホップ数16100(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の設定


 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
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
debug ip rip

IGRPの設定と確認


 IGRPの基本的な設定は,RIPと大した違いはありません。routerコマンドと,networkコマンドを使います(図8)。

  • (config)# router igrp [AS番号] ・・・ IGRPを有効にし,IGRP設定モードに入る
    • [AS番号]
      • 同一のAS番号に設定されたルータ間でしか情報をやりとりしないため,同じ番号に指定する
  • (config-router)# network [ネットワークアドレス] ・・・ ルーティングプロトコルを有効にするネットワークを決定
    • [ネットワークアドレス]
      • ルーティングプロトコルを有効にするネットワークのネットワークアドレス


 図8 IGRPの設定
IGRPの設定


 IGRPの動作確認にも,show ip protocolsコマンドを使います(図9)。


 図9 show ip protocols
show ip protocols


 基本的な表示結果は同じですが,2つの点で注意が必要です。まず,タイマがRIPとは異なります(表2)。

表2 RIPとIGRPのタイマの違い
 RIPIGRP
Update3090
Invalid180270
Holddown180280
Flush240630


 もう1つがメトリックです。IGRPは複合メトリックを使用しています。複合メトリックは,以下の5つの値の計算結果から求められます。

  • 帯域幅
  • 遅延
  • 信頼性
  • 負荷
  • MTUサイズ


 この5つの値にそれぞれK値と呼ばれる重みを掛け,その結果がメトリックになります。デフォルトでは帯域幅に掛けるK値(K1)と,遅延に掛けるK値(K3)以外はゼロになっています。したがって,デフォルトでは帯域幅と遅延から計算されます。