思科eigrp技術總結

來源:本站原創 網絡技術詳解 超過1,533 views圍觀 1條評論

Operation of EIGRP

EIGRP 是一個距離向量路由協議,但是它還具有鏈路狀態路由協議的一些特征。距離向量的路由協議一般都是基于Bellman-Ford(或 Ford-Fulkerson)算法的。這樣的算法容易引起路由循環(loop)和計數無窮大(counting to infinity),所以就必須采取些減少和避免上述問題的措施比如水平分割、holddown timer、毒性反轉等。

在距離向量路由協議環境里,由于路由器在給別的鄰居(neighbor)傳輸它所接收到的路由之前,先要進行路由的計算,所以在大型網絡里,收斂會比較慢,并且一旦鏈路變化,又會引起大量的路由被宣告和距離向量路由協議相比,鏈路狀態路由協議受上述問題的影響就小的多。

1.鏈路狀態包(Link-State Packet,LSP)的轉發是不依靠路由計算的,所以大型網絡可以較為快速的進行收斂.

2.它只宣告鏈路和鏈路狀態,而不宣告路由,所以即使鏈路發生了變化,不會引起該鏈路的路由被宣告。但是鏈路狀態路由協議使用的是Dijkstra算法,該算法比較復雜,并且較占CPU和內存資源。和其他路由協議單獨計算路由相比,鏈路狀態路由協議采用種擴散計算(diffusing computations ),通過多個路由器并行的記性路由計算,這樣就可以在無環路產生的情況下快速的收斂

EIGRP 的路由 update(更新)的發送周期的不固定的,它只在網絡鏈路發生變化以后才被發送,并且更新中可以只包含發生變化了的路由條目,而且只發給受到影響的路由器.這樣就對鏈路帶寬進行了節約。在WAN低速鏈路上,EIGRP可能會占用大量帶寬,默認只占用鏈路帶寬50%,使用命令ip bandwidth-percent eigrp 來修改這一默認值。

EIGRP是一種基于無類的路由協議, EIGRP packet只能用MD5加密的方式進行驗證

EIGRP支持IP,IPX和AppleTalk

EIGRP使用和IGRP相同的公式來計算metric,然而,這個metric要在IGRP算出來的metric 之上乘以1個256

clip_image002

EIGRP的4個組件如上圖:

1. Protocol-Dependent Module (PDM)

2.可靠傳輸協議(Reliable Transport Protocol,RTP)

3.鄰居的發現/恢復

4.擴散更新算法(Diffusing Update Algorithm, DUAL)

Reliable Transport Protocol

RTP負責EIGRP packet的可靠的、按順序的發送和接收,這個可靠的保障是通過Cisco私有的一個算法“reliable multicast(可靠組播)” 實現的,使用組播地址 224.0.0.10,每個鄰居接收到這個可靠的組播包的時候就會以一個 unicast 作為確認。按順序的發送是通過 packet 里的 2 個序列號實現的,每個 packet 都包含發送方分配的 1 個序列號,發送方每發送 1 個 packet,這個序列號就遞增 1.另外,發送方也會把最近從目標路由器接收到的 packet 的序列號放在這個要發送的packet里

EIGRP使用多種類型的packet,這些packet通過IP包頭信息里的協議號 88 來標識:

1. Hello packet:用來發現和恢復鄰居,通過組播的方式發送,使用不可靠的發送

2. ACK(acknowledgement) packet:不包含數據的Hello包,使用unicast的方式,不可靠的發送

3. Update packet:傳播路由更新信息,不定期的通過可靠的方式發送(比如網絡鏈路發生變化)。當只有一臺路由器需要路由更新時,update通過unicast的方式發送;當有多個路由器需要路由更新的時候,通過組播的方式發送

4. Query(查詢) & Reply(應答) packet:是 DUAL finite state machine 用來管理擴散計算用的,查詢包可以是組播或unicast;應答包是通過unicast的方式發送,并且方式都是可靠的

5. Request(請求) packet:最初是打算提供給路由服務器(server)使用的,但是從來沒實現過

如果packet通過可靠的組播方式發送出去,并且沒有收到鄰居反饋的ACK包,那么這個 packet會再次以unicast的方式發送給那個未響應的鄰居,如果經過16次的重傳unicast,仍然沒有收到ACK包的話,那么這個鄰居就宣告為無效。

在從組播切換到 unicast 之前,等待ACK包的時間可以由multicast flow timer(MFT)指定,后續的重新傳unicast的發送間隔可以由 RTO(retransmission timeout)指定。每個鄰居的 MFT 和 RTO 都可以通過 SRTT(smooth round-trip time)來計算,SRTT的單位是(毫秒)ms,用來衡量路由器從發送EIGRP packet到某個鄰居并接收到這個鄰居的ACK包所花費的平均時間。

Neighbor Discovery/Recovery

在這里,鄰居是指網絡中直連的通告EIGRP的路由器。EIGRP的Hello包在一般的網絡中(比如點到點,point-to-point)是每5秒組播1次(要隨機減去 1 個很小的時間防止同步);在多點(multipoint)X.25,幀中繼(Frame Relay,FR)和 ATM 接口(比如 ATM SVC)和ISDN PRI接口上,Hello包的發送間隔是60秒。在所有的情況中,Hello包是不需要確認的。可以在接口配置模式下修改該接口的Hello包默認的發送間隔,命令為ip hello-interval eigrp

當一個路由器收到從鄰居發來的Hello包的時候,這個Hello包包含了一個hold time,這個hold time告訴這個路由器等待后續 Hello 包的最大時間。如果在超出這個 hold time 之前沒有收到后續 Hello 包,那么這個鄰居就會被宣告為不可達,并通知DUAL這個鄰居已丟失。默認hold time是3倍于Hello包發送間隔的, 可以在接口配置模式下修改這個默認的hold time,命令為ip hold-time eigrp

EIGRP鄰居信息都記錄在鄰居表(neighbor table)中,使用show ip eigrp neighbors命令查看IP EIGRP的鄰居

The Diffusing Update Algorithm

DUAL: Preliminary Concepts(預備概念)

為了能夠讓DUAL正確的操作,低層協議必須滿足以下幾個條件:

1.一個節點要在有限的時間里檢測到新鄰居的存在或和一個鄰居的連接的丟失

2.在鏈路上傳輸的所有信息必須在有限的時間里按正確的順序收到

3.所有的消息,包括鏈路cost的更改、鏈路故障和新鄰居的發現,都應該是在有限時間里,一個一個的依次處理

Cisco的EIGRP 使用鄰居的發現/恢復和RTP 來確保上述前提條件

adjacency(鄰接):

在剛啟動的時候,路由器使用 Hello 包來發現鄰居并標識自己用于鄰居的識別。當鄰居被發現以后,EIGRP 會在它們之間形成一種鄰接關系。鄰接是指在這 2 個鄰居之間形成一條交換路由信息的虛鏈路(virtual link)。當鄰接關系形成以后,它們之間就可以相互發送路由update,這些update包括路由器它所知道的所有的路由及其metric。對于每個路由,路由器都會基于它鄰居宣告的距離(distance)和到達那個鄰居的鏈路的cost來計算出一個距離

Feasible Distance(FD,可行距離):

到達每個目標網絡的最小的 metric 將作為那個目標網絡的 FD。比如,路由器可能有 3 條到達網絡 172.16.5.0 的路由,metric分別為380672,12381440和660868,那么380672 就成了FD

Feasible Condition(FC,可行條件):

鄰居宣告到達目標網絡的的距離小于本地路由器到達目標網絡的FD

Feasible Successor(FS,可行后繼路由器):

如果一個鄰居宣告到達目標網絡的距離滿足FC,那么這個鄰居就成為FS。比如,路由器到達目標網絡172.16.5.0的FD為 380672,而他鄰居所宣告到達目標網絡的距離為 355072,這個鄰居路由器滿足 FC,它就成為 FS;如果鄰居路由器宣告到達目標網絡的距離為380928,即不滿足FC,那么這個鄰居路由器就不能成為FS

注意:FSFC是避免環路的核心技術,FS也是downstream router(下游路由器),因為從FS到達目標網絡的距離比本地路由器到達目標網絡的FD要小

Successor(后繼路由器):

對于列舉在拓撲表里的每個目標網絡,將選取 metric 最小的的路由放置在路由表里,宣告這條路由的鄰居就成為Successor,或者是下一跳路由器

命令show ip eigrp topology 可查看每個目標網絡及相應的FD、FS和Successor

如果FS宣告的路由的metric比當前Successor的metric小的話,那么這個FS就將成為新的Successor,如下幾種情況可能會引起這個現象的發生:

1.發現一條新的路由

2.現有Successor的metric增加,超過了FS的metric,或現有FS的metric減小到小于現有Successor的metric

FS減少了擴散計算的次數,提高了網絡性能,同時也降低了收斂的次數.如果到達Successor的鏈路出故障,或者鏈路的 cost 增加,并超過了 FD,那么路由器會先在它的拓撲表中查找 FS,如果有 FS 的話,這個FS將成為新的Successor;如果找不到可用的FS,它才重新進行擴散計算

The DUAL Finite Machine

當 EIGRP 路由器不進行擴散計算的時候,所有的路由都處于被動(passive)狀態。當發生輸入事件(input event)的時候,路由器會對路由的FS列表進行重新評估,輸入事件的源:

1.直連鏈路的cost發生變化

2.直連鏈路狀態的變化(比如up或down)

3.收到更新包

4.收到查詢包

5.收到應答包

路由器重新評估的第一步是在本地路由器上執行本地計算(local computation),可能的結果如下:

1.如果FS的metric最小,并且和現有Successor不同的話,那這個FS就成為新的Successor

2.如果新的距離(distance)小于FD,FD將被更新

3.如果新的距離和已經存在的距離不同,將向所有鄰居發送更新包

當路由器執行本地計算的時候,路由仍然處于被動狀態,如果本地路由器在它的拓撲表里發現可用的 FS,更新包將發送給它所有的鄰居,但是路由狀態不會改變;如果沒有發現可用的 FS,路由器將進行擴散計算并且路由會進入活躍(active)狀態。

在路由器擴散計算完成和路由狀態返回為被動狀態之前,路由器:

1.不能更改路由的Successor

2.不能更改正在宣告的路由的距離

3.不能更改路由的FD

4.不能開始進行路由的另一個擴散計算

路由器是通過向它所有鄰居發送一個查詢來開始一個擴散計算的。查詢包包含了本地路由器計算出來的到達目標地址的新的距離,當每個鄰居收到這個查詢包的時候,就開始進行自己的本地計算:

1. 如果鄰居有到達目標地址的一個或多個 FS,它就反饋應答包給產生這個查詢包的路由器。這個應答包包含了這個鄰居所計算出的它到達目標地址的最小的距離

2. 如果鄰居沒有FS,它就把路由更改為活躍狀態并進行擴散計算

擴散計算在查詢的時候,范圍是擴大,在應答的時候,范圍是縮小

對于每一臺接收查詢的鄰居路由器,本地路由器會設置一個答復狀態標記(reply status flag,r)來不斷地跟蹤這些所有未處理的查詢包。當本地路由器接收到所有發出去的查詢包的應答的時候,擴散計算就完成了

在擴散計算的開始,active timer 設置為3分鐘(早期 IOS版本設置為 1分鐘),如果在這個 active timer 超時之前仍然沒有收到發出去的查詢包的所反饋的所有的應答包的時候,那么這些沒有收到應答包的路由就被標記為stuck-in-active(SIA),這些沒有反饋應答的鄰居將從鄰居表中被刪除,而且擴散計算會認為是這個鄰居反饋了一個為無窮大的metric。active timer的修改命令為timers active-time

在擴散計算完成后,最初發送查詢包的路由器會把FD設置為無窮大,這樣確保了任何反饋應答包的路由器都滿足FC并且能夠成為 FS。對于這些應答包,metric 的計算是基于應答包中宣告的距離加上到達這個反饋應答包的鄰居路由器的鏈路cost。metric 最小的成為Successor,并且FD就設置為這個最低的 metric。任何不滿足 FC的 FS 將從拓撲表中被刪除。注意在收到所有的應答之前是不會選擇Successor的

擴散計算的核心思想如下:

1.任何時間發生了IE的話,將執行本地計算

2.如果在拓撲表里發現了多個FS,metric 最低的作為新的Successor

3.如果沒有找到可用的FS,路由進入活躍狀態,并向鄰居發出查詢包,尋找新的FS

4.當所有發出去的查詢包都被應答包響應,或者在active timer超出之前,路由會一直處于活躍狀態

5.如果擴散計算結果沒有找到新的可用FS 的話,那么將宣告目標不可達

EIGRP packet 的活動可以通過命令 debug eigrp packets 來跟蹤,默認情況下會顯示所有的 EIGRP packet,由于 Hello 包和 ACK 包的數量可能過大導致不便于跟蹤,所以可以使用關鍵字來指定跟蹤的 EIGRP packet 類型:debug eigrp packet query reply update

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3040轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
下篇文章:
?
?
萌宠夺宝游戏