メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

EIGRPのDiffusing Computation SIA編

今回もEIGRPネタ。
HelloのHold Interval経過を待つ事なく、ネイバーのLink Down検知やネイバーから受信するUpdate、QueryをトリガーとしてDiffusing ComputationやLocal Computationが実行されてEIGRPトポロジテーブルが更新...という、EIGRPの迅速なコンバージェンスを前回や前々回等で見てきたが、この迅速なコンバージェンスは良い点ばかりではない。

例えば、ネイバーに対し代替経路をQueryで問い合わせした際、何らかの理由でReply(返答)がなかなか受信しない事がある。
DUAL処理が代替経路を探し続けるところから先に進まなくなり、対象となる経路がActiveステータス付与のまま、つまりいつまで経っても対象となる経路へ通信が出来ない状態が続いてしまう。
Activeから動かない(Stuck)という事で、Stuck In Active(SIA)と言う。
そもそもDiffusing Computationとは?に関しては、以下の記事を参照。
https://debslink.hatenadiary.jp/entry/20150415/1429107405 EIGRPのDiffusing Computation


当方の環境
構成(クリックすると拡大表示)

MI-CAT3750-ME-SW-01:Catalyst 3750Metro
MI-CAT3750-ME-SW-02:Catalyst 3750Metro
MI-CAT3750-ME-SW-03:Catalyst 3750Metro
MI-CAT3750-ME-SW-02のFa1/0/2にて、ip address 10.200.2.5 255.255.255.252とip address 10.200.1.5 255.255.255.252 secondaryが「誤投入」された状態。
IPアドレスのサブネットマスクが/30である為に双方で合わずHelloの送受信が出来ない。
よって、MI-CAT3750-ME-SW-02とMI-CAT3750-ME-SW-03との間でEIGRPネイバー関係が正常に確立出来ない。

その状態で、MI-CAT3750-ME-SW-01のFa1/0/3にてno ip addressコマンドを打つ事により、10.200.3.0/28を消失。
MI-CAT3750-ME-SW-02にてDUAL処理の様子を見てみた。


Diffusing Computationの流れ
1.MI-CAT3750-ME-SW-02のEIGRPトポロジテーブルを確認。
今の段階では、10.200.10.0/24の経路情報はまだPassiveステータスで載っている。
FD(Feasible Distance)値は7680、AD(Advertised Distance、Reported Distanceとも言う)値は5120、MI-CAT3750-ME-SW-02自信から宛先NWへのメトリック値は7680である事がわかる。

MI-CAT3750-ME-SW-02#sh ip eigrp topology all-links
EIGRP-IPv4 Topology Table for AS(1)/ID(10.1.1.2)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
    r - reply Status, s - sia Status

P 10.1.1.1/32, 1 successors, FD is 133120, serno 42
    via 10.200.1.1 (133120/128256), FastEthernet1/0/1
P 10.200.10.0/24, 1 successors, FD is 7680, serno 46
    via 10.200.1.1 (7680/5120), FastEthernet1/0/1
P 10.200.1.0/30, 1 successors, FD is 5120, serno 39
    via Connected, FastEthernet1/0/1
P 10.1.1.2/32, 1 successors, FD is 128256, serno 1, anchored
    via Connected, Loopback0
P 10.200.1.4/30, 1 successors, FD is 5120, serno 44
    via Connected, FastEthernet1/0/2
MI-CAT3750-ME-SW-02#

※ 10.200.1.4のエントリーに注意。
誤投入が無ければ、Connectedではなく「via 10.200.1.5〜」で始まる出力となる。
MI-CAT3750-ME-SW-02側のIPアドレスは10.200.2.5/30、MI-CAT3750-ME-SW-03側は10.200.1.6/30である為にHelloがネイバーに届けられず、EIGRPネイバー関係が正常に確立出来ない状態。


2.MI-CAT3750-ME-SW-02にてdebugコマンドを打ち、FSM(Finite State Machine)でDUAL処理の遷移を確認。

MI-CAT3750-ME-SW-02#debug eigrp fsm
EIGRP FSM Events/Actions debugging is on


3.ここで、MI-CAT3750-ME-SW-01のFa1/0/3にてshutdownコマンド実行。
10.200.10.0/24のネットワークを消失させてみる。

MI-CAT3750-ME-SW-01#conf t
MI-CAT3750-ME-SW-01(config)#interface fa1/0/3
MI-CAT3750-ME-SW-01(config-if)#shutdown
MI-CAT3750-ME-SW-01(config-if)#exit
MI-CAT3750-ME-SW-01#


4.上記2にてMI-CAT3750-ME-SW-01 Fa1/0/3をshutdownすると即座に、MI-CAT3750-ME-SW-02側にてQueryを受信。
そしてDUAL処理が開始されたのだが.....

MI-CAT3750-ME-SW-02#
Aug  18 01:26:41.703: DUAL: AS(1) rcvquery: 10.200.10.0/24 via 10.200.1.1 metric 4294967295/4294967295, 
RD is 7680 for tid 0
Aug  18 01:26:41.703: EIGRP-IPv4(1): Find FS for dest 10.200.10.0/24. FD is 7680, RD is
 7680 on tid 0  [1]
Aug  18 01:26:41.703: EIGRP-IPv4(1):    10.200.1.1 metric 4294967295/4294967295 not found
 Dmin is 4294967295 [1]
Aug  18 01:26:41.703: DUAL: AS(1) Peer total 2 stub 0 template 2 for tid 0
Aug  18 01:26:41.703: DUAL: AS(1) Dest 10.200.10.0/24 entering active state for tid 0.  [2]
Aug  18 01:26:41.703: EIGRP-IPv4(1): Set reply-status table. Count is 2. [3]
Aug  18 01:26:41.703: EIGRP-IPv4(1): Not doing split horizon
Aug  18 01:26:41.703: DUAL: AS(1) Going from state 1 to state 3
Aug  18 01:26:41.762: EIGRP-IPv4(1): rcvreply: 10.200.10.0/24 via 10.200.1.1 metric 4294967295/
4294967295 for tid 0 [4]
Aug  18 01:26:41.762: EIGRP-IPv4(1): reply count is 2
Aug  18 01:26:41.762: DUAL: AS(1) Clearing handle 0, count now 1
MI-CAT3750-ME-SW-02#


上記の一連の処理は以下のとおり。
・対象経路10.200.10.0/24のフィージブルサクセサを探すものの、MI-CAT3750-ME-SW-01から返ってきたのは(rcvquery)メトリック値が最大値の情報のみ。(上記[1])
代替経路は無いも同然。
・対象経路に対し、Activeのステータスが付与される。(上記[2])
・Reply Statusを初期化し、10.200.10.0/24への最適な経路情報を待つ。(上記[3])
この辺で、ネイバーに対しQueryを送信し最適な経路情報を催促する。
※ debug eigrp packetコマンドを打っていないので出力されていない。
・上記[3]の返答をMI-CAT3750-ME-SW-01から受信する。メトリック値は最大値である為、上記[1]同様に到達不可扱い。(上記[4])


5.この段階で、MI-CAT3750-ME-SW-02のEIGRPトポロジテーブルを確認。
対象経路10.200.10.0/24にActiveステータスが付与されている事がわかる。
「Remaining replies:」の項目は、Fa1/0/2からReplyが受信出来ていない事を示す。Replyを受信しない限りこの項目は出力され続ける。そしてDiffusing Computationは完了出来ないまま。

MI-CAT3750-ME-SW-02#sh ip eigrp topology all-links
EIGRP-IPv4 Topology Table for AS(1)/ID(10.1.1.2)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 10.1.1.1/32, 1 successors, FD is 133120, serno 42
    via 10.200.1.1 (133120/128256), FastEthernet1/0/1
A 10.200.10.0/24, 1 successors, FD is Inaccessible, Q, serno 47, refcount 1
  1 replies, active 00:00:04, query-origin: Successor Origin
    via 10.200.1.1 (Infinity/Infinity), FastEthernet1/0/1
   Remaining replies:
     via 10.200.1.6, r, FastEthernet1/0/2
P 10.200.1.0/30, 1 successors, FD is 5120, serno 39
    via Connected, FastEthernet1/0/1
P 10.1.1.2/32, 1 successors, FD is 128256, serno 1, anchored
    via Connected, Loopback0
P 10.200.1.4/30, 1 successors, FD is 5120, serno 44
    via Connected, FastEthernet1/0/2

※ 上記show ip eigrp topology all-linksの出力内容は以下のとおり。

・active 00:00:04 :Activeタイマーの経過時間
・(Infinity/Infinity):メトリック値が無限。到達不可を示す。
・Remaining replies:受信していないReplyを示す。ここではFa1/0/2側からまだ受信していない事を示す。
・r (小文字のr):Replyステータス。


6.MI-CAT3750-ME-SW-03に対し、SIA Queryを送信し代替経路を催促。10.200.10.0/24はSIA状態となってしまった。

MI-CAT3750-ME-SW-02#
Aug  18 01:27:11.894: EIGRP-IPv4(1): dest(10.200.10.0/24) active
Aug  18 01:27:11.894: DUAL: AS(1) Send SIAQUERY(r40/n40) about 10.200.10.0/24 to 10.200.1.6 for tid 0
MI-CAT3750-ME-SW-02#


7.この段階で、MI-CAT3750-ME-SW-02にてEIGRPトポロジテーブルを確認。
10.200.10.0/24のエントリのvia 10.200.1.6で始まる行は、ReplyがMI-CAT3750-ME-SW-03から受信するのを待ち続けている為にMI-CAT3750-ME-SW-01への返答が不可の状態であり、結果としてSIA状態になってしまった事を示す。
(小文字のrとs)

MI-CAT3750-ME-SW-02#sh ip eigrp topology all-links
EIGRP-IPv4 Topology Table for AS(1)/ID(10.1.1.2)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
    r - reply Status, s - sia Status

P 10.1.1.1/32, 1 successors, FD is 133120, serno 42
    via 10.200.1.1 (133120/128256), FastEthernet1/0/1
A 10.200.10.0/24, 1 successors, FD is Inaccessible, Qq, serno 47, refcount 1
  1 replies, active 00:00:34, query-origin: Successor Origin, retries(1)
    via 10.200.1.1 (Infinity/Infinity), FastEthernet1/0/1
    via 10.200.1.6 (Infinity/Infinity), rs, q, FastEthernet1/0/2, serno 48
P 10.200.1.0/30, 1 successors, FD is 5120, serno 39
    via Connected, FastEthernet1/0/1
P 10.1.1.2/32, 1 successors, FD is 128256, serno 1, anchored
    via Connected, Loopback0
P 10.200.1.4/30, 1 successors, FD is 5120, serno 44
    via Connected, FastEthernet1/0/2
MI-CAT3750-ME-SW-02#


8.以下は、debug eigrp fsmの続き。

Aug  18 01:27:44.207: %DUAL-3-SIA: Route 10.200.10.0/24 stuck-in-active state in base 1.  Cleaning up [5]
Aug  18 01:27:44.207: DUAL: AS(1) Clearing handle 1, count now 0
Aug  18 01:27:44.207: DUAL: AS(1) Clearing handle 1, count now 0
Aug  18 01:27:44.207: DUAL: AS(1) Clearing handle 1, count now 0
Aug  18 01:27:44.207: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 10.200.1.6 (FastEthernet1/0/2) is
 down: stuck in active  [6]
Aug  18 01:27:44.207: IGRP2: linkdown: start - 10.200.1.6 via FastEthernet1/0/2  [7]
Aug  18 01:27:44.207: DUAL: Destination 10.1.1.1/32 for tid 0
Aug  18 01:27:44.207: DUAL: Destination 10.200.10.0/24 for tid 0
Aug  18 01:27:44.207: DUAL: AS(1) Freeing reply status table 
Aug  18 01:27:44.207: EIGRP-IPv4(1): Find FS for dest 10.200.10.0/24. FD is 4294967295, RD is 4294967295 on tid 0
Aug  18 01:27:44.207: DUAL: AS(1) Send REPLY(r1/n1) about 10.200.10.0/24 to 10.200.1.1 for tid 0 [8]
Aug  18 01:27:44.207: DUAL: AS(1) Removing dest 10.200.10.0/24, nexthop 10.200.1.6 [9]
Aug  18 01:27:44.207: DUAL: AS(1) Going from state 3 to state 1
Aug  18 01:27:44.207: DUAL: Destination 10.200.1.0/30 for tid 0
Aug  18 01:27:44.207: DUAL: Destination 10.1.1.2/32 for tid 0
Aug  18 01:27:44.207: DUAL: Destination 10.200.1.4/30 for tid 0
Aug  18 01:27:44.207: DUAL: linkdown: finish
Aug  18 01:27:44.249: DUAL: AS(1) Removing dest 10.200.10.0/24, nexthop 10.200.1.1 [10]
Aug  18 01:27:44.249: DUAL: AS(1) No routes.  Flushing dest 10.200.10.0/24


上記の一連の処理は以下のとおり。
・10.200.10.0/24の経路情報はSIA状態である事をSyslogで出力し、⑥でMI-CAT3750-ME-SW-03とのEIGRPネイバー関係を解消。デフォルトではActiveステータスが付与されてから3分後に解消されるのだが、今回は1分に設定されている為に(timers active-timeコマンド)、10.200.10.0/24にActiveステータスが付与されてから1分後にネイバー関係が解消された。(上記[6])
・MI-CAT3750-ME-SW-03とのネイバー関係が解消された事でReplyを待ち続ける必要が無くなり、Diffusing Computationが再開。(上記[7])
・ここでようやく、MI-CAT3750-ME-SW-01に対しReplyを返す事が出来た。(上記[8])
・Next Hopが10.200.1.6 (MI-CAT3750-ME-SW-03向き)の経路情報10.200.10.0/24がトポロジテーブルから削除された。(上記[8])
・Next Hopが10.200.1.1 (MI-CAT3750-ME-SW-01向き)の経路情報10.200.10.0/24がトポロジテーブルから削除された。(上記[9])
後は、MI-CAT3750-ME-SW-01に対しUpdateを送信すればDiffusing Computationは完了となる。


9.この状態でMI-CAT3750-ME-SW-02にてEIGRPトポロジテーブルを確認。
10.200.10.0/24のエントリが削除された事がわかる。

MI-CAT3750-ME-SW-02#sh ip eigrp topology all-links
EIGRP-IPv4 Topology Table for AS(1)/ID(10.1.1.2)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
    r - reply Status, s - sia Status

P 10.1.1.1/32, 1 successors, FD is 133120, serno 42
    via 10.200.1.1 (133120/128256), FastEthernet1/0/1
P 10.200.1.0/30, 1 successors, FD is 5120, serno 39
    via Connected, FastEthernet1/0/1
P 10.1.1.2/32, 1 successors, FD is 128256, serno 1, anchored
    via Connected, Loopback0
P 10.200.1.4/30, 1 successors, FD is 5120, serno 44
    via Connected, FastEthernet1/0/2
MI-CAT3750-ME-SW-02#


上記では、設定誤投入が原因でMI-CAT3750-ME-SW-02とMI-CAT3750-ME-SW-03との間でEIGRPネイバー関係が正常に確立出来きず、SIA状態になった事を示した。
他に以下の原因でSIA状態になる事がある。

・Interfaceのフラッピング
・ルーティング ループ
・フレームリレー環境
・ネイバーのIOSバージョンがネイバーと合わない。(例:ネイバーが11.0で自機が12.2)


リンク集
https://www.amazon.co.jp/dp/1578701651 EIGRP Network Design Solutions
https://debslink.hatenadiary.jp/entry/20150416/1429195527 EIGRPのLocal Computation
https://debslink.hatenadiary.jp/entry/20150415/1429107405 EIGRPのDiffusing Computation
https://debslink.hatenadiary.jp/entry/20150419/1429422783 EIGRPのDiffusing Computationその2
https://debslink.hatenadiary.jp/entry/20150503/1430659609 EIGRPのDiffusing Computation 経路追加編
https://debslink.hatenadiary.jp/entry/20150417/1429268810 EIGRPの優先ルートの選定 offset-list編