EIGRPが使用しているアルゴリズムであるDUAL(Diffusing Update ALgorithm)は,ルーティングループを防ぎ,コンバージェンスが高速化な優れたアルゴリズムです。しかし,問題もあります。今回はDUALが持つ問題点である「SIA」(Stuck In Active)と呼ばれる現象を学びましょう。
代替経路を探し続ける状態
EIGRPのルーティングアルゴリズムであるDUALは,ある経路に対するサクセサを失った場合,代替経路を見つけるための再計算に入ります(この状態を「アクティブ」と呼びます)。ルータは,フィージブルサクセサがあればそれをサクセサに昇格させますが,もしフィージブルサクセサが存在しない場合は,旧サクセサのインタフェース以外の全ネイバーにその経路を問い合わせます。旧サクセサのインタフェース以外となるのは,スプリットホライズンが使われるためです。この問い合わせ(クエリ)に対する応答(リプライ)を受けて,ルータは経路の再計算を終了します(この状態を「パッシブ」と呼びます)。しかし,リプライが返ってこない場合もあります。それにより,ルーターが代替経路を探し続けるアクティブ状態のままになってしまうことを「SIA」(Stuck In Active)と言います(図1)。
図1 「SIA」(Stuck In Active)とは?
EIGRPでは,経路情報のやりとりの確実性を高めるため,クエリを送ったルータからリプライが返ってこない限り,アクティブを解除できません。それにより永遠にコンバージェンスにならない可能性があります(図2)。
図2 SIAによってコンバージェンスにならない現象
こうした事態を防ぐため,EIGRPでは「アクティブタイマ」というタイマが設定されています。アクティブタイマは通常3分で,アクティブタイマを経過してもリプライが返ってこない場合,ルータはリプライを返してこないネイバーとの隣接関係をリセットします(図3)。
図3 アクティブタイマによるリセット
アクティブタイマの変更は,timers active-timeコマンドで実行します。
- (config-router)# timers active-time [時間 | disabled]
- [時間 | disabled]
- アクティブタイマの時間(分)。disabledの場合,タイマなし
- [時間 | disabled]
なお,一度リセットされたネイバーと再び隣接関係を結ぶこともできます。
SIAの問題点と解決
アクティブタイマによりSIAは防ぐことができますが,アクティブタイマによりネイバーとの隣接関係をリセットすると別の問題が発生します。ルータ自体は問題なく稼動しているのに,隣接関係がリセットされてしまうという問題です。隣接関係をリセットするということは,そのネイバーから通知されてきた全ルートを破棄し,新たにルートの問い合わせをすることになります。場合によってはルータはすべての経路を失う場合もあります。図4のような場合,ルータAは他ネットワークへの全経路を失ってしまいます。ルータBとの隣接関係は再度Helloにより結ぶことができますが,一時的にせよ経路を失ってしまうのは,安定性に欠けることになります(図4)。
図4 リセットによるルート消失
つまり,アクティブタイマによるリセットは,ネットワークの安定性の問題や,クエリの増加などを引き起こす可能性があるということです。この問題はアクティブタイマをなしにする(timers active-time disabledコマンドを入力する)ことでも防げますが,なしにしてしまうとSIAが発生した場合,解決できなくなります。
よって,EIGRPを使う際には,SIAを防止する手段を講じる必要が出てきます。SIAの防止としては次の方法があります。
- クエリの到達範囲(スコープ)の制限
- ルートフィルタリング(ディストリビューションリスト)を使用する
- 通信状態の正常化(パケットロスの防止)
2番目の解決方法であるルートフィルタリングは,先の回で説明します。3番目のパケットロスの防止は,EIGRPと直接関係ありませんので省略します。ここでは,1番目の「クエリの到達範囲の制限」によるSIAの防止について見てみましょう。
先ほどのような通信障害によるSIAではなく,問い合わせの連鎖でもSIAは発生します(図5)。
図5 問い合わせの連鎖によるSIA
このSIAは,ネットワークが大きい場合や,遅延が発生する場合,途中のルータで障害が発生する場合などで起こりえます。そのため,リプライが戻ってくるのが通常より遅くなり,アクティブタイマによるリセットが発生します。
このような時は,クエリが遠くまで連鎖していくことに問題がある場合があります。このときは,ネットワークを階層化し,アドレスを集約できる形にネットワークを構成することで,SIAを防ぐことができます(図6)。
図6 クエリの到達範囲を制限してSIAを防ぐ
このように,経路集約を使ってクエリが届く範囲を制限することで,SIAを防止するわけです。