EIGRP一共七種報文,除了之前講的三種(update,hello,ack),還有四種(query,reply,SIA query,SIA reply)
EIGRP Queries(EIGRP查詢報文)/Reply(EIGRP回覆報文)
- 如圖所示,到達192.168.14.0/24網段出現了故障,R1發現192.168.14.0/24網段不可達,丟失了去往192.168.14.0/24這條路由的後繼。
- 這時,若找不到其他的可行後繼時,DUAL算法則將這條路由置爲活動狀態,即把這條路由從passive狀態變成active狀態,同時啓動active-time定時器,數值爲180s,一旦到了180s沒有收到reply回覆,則斷掉鄰居關係。
- 然後路由器向所有的鄰居(除了我自己的後繼路由器)進行組播(或者單播)查詢。於是它便給R2一直髮query報文,直到R2給他回覆ack,告訴R1我收到了你的查詢報文。
- 這個時候,如果R2有到達丟失網段的路由信息,於是會在回覆完ack後,繼續向R1回覆reply報文,告訴R1:哥們兒,別慌!我有這條路由信息,然後R1更新路由信息後,這條路由重新從active狀態變爲passive狀態。
- 如果R2沒有這條路由信息,這時R2發現:原本我到達192.168.14.0/24網段的路由的後繼路由器是R1,但是現在R1卻來向我查詢有沒有這條路由信息,所以這就說明我的這條路由的後繼出問題了,並且也找不到可行後繼,於是DUAL算法開始把這條路由置爲活躍狀態。然後R2向R3和R4發送查詢報文,查詢該條路由信息。於是他便給R3和R4一直髮query報文,直到R3和R4給出ack。
- R3和R4的操作與R2類似,開始向R5,R6,R7和R8進行查詢。
- R5,R6,R7和R8發現:我只有一個鄰居啊, 我的路由信息都是你給的,你怎麼還向我查呢,於是直接告訴R3和R4,我沒有這條路由信息,這條信息是錯誤的,你刪了吧。於是這四個路由器先向R3和R4回覆ack,告訴R3和R4我收到了你的查詢報文,接着便向R3和R4回覆了reply報文。於是R3和R4收到了R5,R6,R7和R8的reply報文後,將這條 路由信息刪掉了。
- 然後R3和R4告訴R2這條路由信息有問題,沒有到達這個網段的路由信息,你可以刪掉了。
- 然後R2以相同的方式告訴R1,最後所有路由器都刪掉這這條路由信息。
SIA-Query/SIA-Reply
Stuck in Active(即SIA,卡在active狀態)
- 如圖所示,若192.168.14.0/24這個網段出現了故障,R1發現到達192.168.14.0/24這個網段不可達,也沒有其他的可行後繼路由器,於是開始向R2發送query報文
- R2收到R1的query報文後,先向R1回覆ack報文,從圖中拓撲很容易看出,R2到達192.168.14.0/24的後繼是R1,現在R1出問題了,R2只能繼續向R3發送query報文查詢
- 這個時候,R3很不巧,由於某些原因無法回覆ack,所以等到180秒以後,鄰居就斷開了。
- 而且,由於R3沒有給R2回覆,R2也無法給R1回覆reply報文,於是等到180秒以後,R1和R2的鄰居關係也就斷了。
所以,如果由於某個路由器故障,無法回覆ack,則它的前一個路由器便卡在了active狀態,結果會導致與之相關的所有鄰居全部斷掉,導致許多路由器的路由條目都要更新,會使網絡不穩定。
所以爲了應對這種情況,新版本的EIGRP又增加了兩種報文,SIA-Query報文和SIA-Reply報文
新版本的工作流程
- 如圖所示,若192.168.14.0/24這個網段出現了故障,R1發現到達192.168.14.0/24這個網段不可達,也沒有其他的可行後繼路由器,於是開始向R2發送query報文
- R2收到R1的query報文後,先向R1回覆ack報文,從圖中拓撲很容易看出,R2到達192.168.14.0/24的後繼是R1,現在R1出問題了,R2只能繼續向R3發送query報文查詢
- 這個時候,R3很不巧,由於某些原因無法回覆ack,所以等到180秒以後,鄰居就斷開了。
- 但是當active-time到了90秒的時候,R1會給R2發送SIA-Query報文,詢問你是否也卡在了active狀態,這個時候R2先回復一個ack報文,然後再回復SIA-Reply告訴R1是的,這個時候R1發現R2這裏沒問題,於是等180秒到了以後,鄰居關係就不會斷掉。
- 同樣地,R2也會給R3發送SIA-query報文,但是R3由於某些原因無法回覆,所以等180秒到了以後,R2和R3的鄰居關係就斷掉了,但是R1和R2的鄰居關係正常維持。
相關的配置命令
- r3(config-router)#timers active-time 1(單位:分鐘)修改active-time的值
EIGRP的末節路由器配置
EIGRP末節路由器不收query報文!!一個普通路由器若是和末節路由器建立鄰居以後,二者之間的hello報文和普通路由器之間建立鄰居所發的hello報文不一樣,會多一個peer stub information的字段!!所以普通路由器不會向stub路由器發送查詢報文!
EIGRP末節路由器(eigrp stub)配置:
r3(config-if)#router eigrp 100
r3(config-router)#eigrp stub