動的ルーティング(EIGRP概要編)
EIGRPの特徴
DUALを使用した高速コンバージェンス
ルーティングアルゴリズムにDUAL(Diffusing Updete ALgorithm)を使用し、各宛先ネットワークに対し、ループフリーな最適経路とバックアップルート(代替パス)を選択し、ルーティングテーブルに格納する。
ネイバー(隣接ルータ)から受信したすべての経路をトポロジテーブルに格納するため、最適経路障害時には迅速にバックアップルートを適用し、高速コンバージェンスを実現する。
部分的アップデート
安定したネットワーク下ではネイバー(隣接)関係を維持するためのHelloパケットだけを送信し、定期的なアップデートは行わない。
経路パス・メトリックに変更があった場合に、影響を受けるルータに対してのみ、該当経路に関する部分的な情報をトリガードアップデートで送信する。
等・不等コスト経路のロードバランシング(負荷分散)対応
ネットワークのトラフィックフロー(特定通信相手間での通信パケット量・通信状態)をより適切に分散させることが可能。
EIGRPの動作
EIGRPパケットの分類
EIGRPで使用されるパケットは、受信時に確認応答が必要な「高信頼性パケット」と確認応答不要の「無信頼性パケット」に大別できる。
高信頼性パケット
- アップデートパケット(Update)
ルーティング情報を通知するために使用。EIGRP設定ルータはネイバー(隣接ルータ)を検出すると、アップデートパケットを送信する。
このパケットはユニキャスト(1対1)またはマルチキャスト(1対多)で送信される。
- クエリパケット(Query)
宛先へのサクセサ(最適ルート)がダウンし、その宛先へのフィージブルサクセサ(バックアップルート)が存在しない場合にネイバーに対しての問い合わせに使用する。
ネイバーはクエリパケットを受信することで、宛先へのルートがダウンしたことを把握する。
- 応答パケット(Reply)
クエリへの応答として使用する。このパケットはクエリパケットの送信者に対してユニキャストで送信される。
無信頼性パケット
- Helloパケット
EIGRP設定ルータはネイバーの検出にHelloパケットを使用する。
- Ackパケット
アップデート・クエリ・応答の各高信頼性パケットを受信した際に、信頼性を高めるための確認応答として使用される。
このパケットはユニキャストで送信される。
EIGRPテーブル
- ネイバーテーブル
ネイバー(隣接)関係を確立したEIGRPルータのリスト。
ネイバーのアドレス・リンクしているインターフェイスが記録されている。
- トポロジテーブル
1:ネイバーによってアドバタイズ(通知)されたすべてのネットワーク経路情報
2:EIGRPを有効化したインターフェイスの直接接続ネットワーク
3:ルータで実行した集約経路情報
4:他のルーティングプロセスからEIGRPに配布されたネットワーク経路情報
以上の4点が格納される。
各エントリでは、宛先ネットワークとそれを通知したネイバーが関連付けされている。
また、通知されたメトリックと、自身からその宛先に到達するまでのメトリックが記録されている。
※トポロジテーブルのエントリ状態
Passive:経路が利用可能でルーティングできる状態 Active:クエリを送信・応答待ち(経路使用不能)状態
- ルーティングテーブル
トポロジテーブルから得た最適経路のリスト。
DUAL(Diffusing Update Algorithm)
DUALはすべてのネイバーが通知した全経路をチェックし、メトリックによって各宛先へのループのない経路を選択し、その経路をルーティングテーブルに格納する。
ADとFD
- AD(アドバタイズドディスタンス)
ネクストホップルータ(隣接ルータ)から宛先ネットワークまでのメトリック値
- FD(フィージブルディスタンス)
ローカルルータ(送信元)から宛先ネットワークまでのメトリック値
サクセサとフィージブルサクセサ
- サクセサ
ループしないことが保証されている最小メトリック(FD)をもつネクストホップルータを指す。
最適経路のネクストホップとしてルーティングテーブルに格納され、実際にパケット転送に使用される。
- フィージブルサクセサ
バックアップ用のネクストホップルータを指す。
選定の条件として、ADが現在指定されているサクセサのFDよりも小さい必要がある。
サクセサの選択
宛先ネットワークまでのFDが最小となるネクストホップルータがサクセサに選択される。
最小FDの経路が複数ある場合はサクセサが複数存在する。
デフォルト設定では最大4個のサクセサをルーティングテーブルに格納できる。
下図の場合、R2経由のルートがサクセサに選択される。
フィージブルサクセサの選択
フィージブルサクセサは、サクセサに選択された経路以外のものから以下の条件によって決定される。
サクセサ以外の経路のAD < サクセサ経路のFD
特定の宛先ネットワークに対して複数の経路がフィージブルサクセサとしての条件を満たしている場合には、該当する複数の経路がトポロジテーブルに保持される。
トポロジ変更によるルーティングテーブルの更新(サクセサダウン時のフローチャート)
1:DUALがリンク障害を検知 ↓ 2:ネイバー関係を解消 ↓ 3:ネイバーから学習した全ルート情報を削除 ↓ 4:フィージブルサクセサの有無の確認 →YES:フィージブルサクセサをサクセサに切り替えてルーティングテーブルを更新(ローカル処理による高速コンバージェンス) ※更新経路はすぐにPassive(利用可能)となる。 →NO :他のネイバーにQueryを送信して問い合わせ ※この時点で経路はActive(利用不可)状態となる ↓ 全てのネイバーからReplyを受信 ↓ DUAL再計算でサクセサを選択しルーティングテーブルを更新 ※この時点で経路がPassive(利用可能)となる。
メトリック
EIGRPは複合メトリックによって最適経路を決定する。
- 遅延
- 信頼性(オプション※)
- 負荷(オプション※)
※信頼性・負荷をメトリックに追加するとトポロジテーブルの再計算頻度が高くなるため、メトリックへの追加は非推奨されている。
メトリック計算法
宛先ネットワークまでのリンクが持つ変数(帯域幅・遅延など)に重み付けをした数値の合計。
重み付けとなる係数はK値と呼ばれる。
K1=1 K2=0 K3=1 K4=0 K5=0
EIGRPメトリック計算には以下の公式を使用する。
メトリック = 256*[(K1*帯域幅)+(K2*帯域幅)/(256-負荷)+(K3*遅延)]*[K5/(信頼性+K4)]
ただし、K2・K4・K5の値は0なので、実際は以下の式に簡略化が可能。
メトリック = 256*(帯域幅+遅延) 帯域幅 = 10^7/リンクの最小帯域幅(kbps) 遅延 = リンクの累積遅延/10
※メトリック計算例
R1からネットワーク10.1.1.0/24までのルートは
①R2-R3経由
②R4経由
となるため各メトリックは以下のようになる。
R2-R3経由のメトリック
リンクの最小帯域幅 = 128kbps 累積遅延 = (20,000+20,000+20,000+100)/10 = 6,010 ↓ 帯域幅 = 10^7/128*256 = 20,000,000 遅延 = 6,010*256 = 1,538,560 20,000,000+1,538,560=21,538,560
R4経由のメトリック
リンクの最小帯域幅 = 64kbps 累積遅延 = (20,000+20,000+100)/10 = 4,010 ↓ 帯域幅 = 10^7/64*256 = 40,000,000 遅延 = 4,010*256 = 1,026,560 40,000,000+1,026,560=41,026,560
R2経由のメトリック<R4経由のメトリックとなるため、R2がサクセサ(最適ルート)となりルーティングテーブルに格納される。