CCNP——EIGRP算法詳解(進階篇)

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

圖2

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

配置末節路由器中的一種特殊情況

圖3

這裏將R3配置成stub路由器,然後我們發現:R2的拓撲表中有這麼一條路由信息:

圖4

到達1.1.1.0/24(這個用來模擬與R1連接的出故障的網段)的這條路由沒有後繼路由器,且FD爲無窮大,按理說這樣的一條路由應該刪掉了,這裏爲什麼不刪呢?
主要原因是因爲這裏R3雖然接口down掉了,但是由於hold time的原因,R2還認爲R3是鄰居,所以R2現在在不斷地給R3發送update報文,想告訴R3這條路由沒用了,讓R3刪掉。但是R3此時根本收不到。所以這條路由信息R2保存的唯一作用就是給R3發送更新報文。等到hold time時間一過,R2把R3的鄰居關係一斷,R2纔會把這條路由信息刪掉。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章