加強型閘道間選徑協定

加強型閘道間選徑協定(英語:Enhanced Interior Gateway Routing Protocol,縮寫為EIGRP),又譯增強型內聯網關路由協定,一種內聯網關協定(IGP)。在內聯網關路由協定(IGRP)的基礎上,由思科公司發展而成,於2013年Cisco將此標準公開,不再是私有的路由協定[1],在同樣。EIGRP是一種進階距離向量路由協定(也稱混合型路由協定)。

EIGRP的基本操作

編輯

EIGRP所收集的資訊存放在以下三個表中:

  • 鄰居表(Neighbor Table):用來存放和鄰居路由器相關的數據。如鄰居路由器IP位址、與鄰居路由器相連的本地介面、保持時間等。
  • 拓撲表(Topology Table):該表用來存放所有從鄰居路由器學習到的路徑資訊。拓撲表中的每一條路徑都至少有一個後繼(Successor)。該表中的每一條路徑資訊可以被標記為被動(Passive)狀態或者活動(Active)狀態。被動狀態說明此路徑處於穩定狀態,並且路由器知道如何到達該目的地。活動狀態則說明網絡拓撲發生變化,並且路由器正在處理相關資訊,以得到一條新的到達該目的地的最佳路徑。
  • 路由表(Routing Table):拓撲表中的後繼(Successor)會被放入路由表,路由器根據路由表來轉發封包。

EIGRP有以下四個基本組件:

  • 鄰居發現和恢復(Neighbor discovery/recovery):鄰居發現和恢復機制使得執行EIGRP的路由器可以自動的發現與之直接相連的其他執行EIGRP的路由器,並與它們建立鄰居關係。鄰居發現和恢復機制還維護路由器與其他路由器之間的鄰居關係。EIGRP路由器通過傳送Hello包來建立和維護鄰居關係,如果在一定的時間間隔內沒有收到鄰居路由器發來的Hello包,則認為該鄰居已經死亡,並中斷鄰居關係,將鄰居從鄰居表中清除。
  • 可靠傳輸協定(Reliable Transport Protocol RTP):可靠傳輸協定的作用是保障EIGRP協定封包的可靠的、有序的傳送。RTP同時使用單播和組播來傳送EIGRP協定封包。有些類型的EIGRP封包必須被可靠的傳送,有些則無需可靠的傳送。所謂可靠的傳送,即傳送的封包需要被接收方顯示或隱式的確認。
  • DUAL有限狀態機(DUAL finite-state machine DUAL FSM):DUAL有限狀態機是EIGRP用來計算最佳路徑的機制。
  • 協定相關模組(Protocol-dependent modules PDMs ):協定相關模組的引進,使得EIGRP可以支援不同的網絡層協定,如IPXAppleTalkIPv6,而不僅僅是IPv4協定。

混合度量值

編輯

EIGRP同時考慮了鏈路的頻寬、延遲、可靠性、負載4個因素來計算路由的度量值:

Router>show ip eigrp topology 10.0.0.1 255.255.255.255
IP-EIGRP topology entry for 10.0.0.1/32
  State is Passive, Query origin flag is 1, 1 Successor(s) , FD is 40640000
  Routing Descriptor Blocks:
  10.0.0.1 (Serial0/0/0) , from 10.0.0.1, Send flag is 0x0
      Composite metric is (40640000/128256) , Route is Internal
      Vector metric:
        Minimum bandwidth is 64 Kbit
        Total delay is 25000 microseconds
        Reliability is 255/255
        Load is 197/255
        Minimum MTU is 576
        Hop count is 1
  • 頻寬(Bandwidth):源和目的地之間的鏈路的最小頻寬,單位為kbp。
  • 負載(Load):源和目的地之間的鏈路的最重負載,該負載基於分組速率和介面的組態頻寬。
  • 延時(Delay):源和目的地之間介面的累計延時,單位為ms。
  • 可靠性(Reliability):源和目的地之間的最低可靠性,該可靠性基於存活訊息。

EIGRP在計算混合度量值的時候還引入了5個K值:K1到K5。注意K值在計算的時候僅僅作為一個乘數,而不等於所對應的真實值,如K1的數值不等於頻寬的數值。

預設情況下,EIGRP在計算混合度量值的時候只考慮了頻寬和延遲(即K1和K3)兩個因素,但是可以人工的修改K值來控制所考慮的因素。

EIGRP的混合度量值根據以下公式來計算:

 

公式中K1到K5的值可以手工的設為0~255之間任意整數。

預設情況下K1和K3設為1,其他K值設為0,公式可以簡化為(Bandwidth + Delay) * 256。

EIGRP域內所有路由器的K值都必須設為相同的值,否則可能會產生路由環路。Cisco規定如果兩台EIGRP路由器的K值不同,那麼它們不會建立鄰居關係。

EIGRP使用以下公式來計算頻寬:

Bandwidth for EIGRP = 107 / Interface Bandwidth

其中:Interface Bandwidth為使用鏈路(由目的到源)所有區間上的最小頻寬,使用千位元每秒(kilobits per second/kbps)為計量單位; Interface Delay為各鏈路總延遲,單位為10μs(tens of microseconds)。[2]

在Cisco路由器上,頻寬和延時都是可以手工設置的。

IGRP也使用相同的基本公式來計算混合度量值,唯一不同的是該公式沒有乘數256。

EIGRP同樣也使用了跳數(Hop),不過在計算混合度量值的時候跳數並沒有包括在其中。在Cisco路由器上,預設的跳數最大值為100,任何跳數超過100的路由都將被視為不可達。當然亦可調整每台Cisco路由器上頭的EIGR跳數來增加網絡路由的範圍,最大跳數為244。

後繼

編輯

後繼(Successor),是指從當前路由器到目的路由器路徑最佳的路由。後繼必須同時滿足以下兩個條件:

  • 它到某目的地的路徑具有最低的度量值。
  • 它不是路由環路的一部分。

第一個條件可以通過比較所有從鄰居路由器接收到的到相同目的地的路由的度量值,來選出具有最低度量值的路由器。 第二個條件可以通過可行條件(Feasibility Condition,FC)來保證。對於去往同一個目的地的路由,若有多個相同的目的地路由度量質,則會有多個後繼,以達到負載平衡(Load Balance)。

後繼會被載入到路由表以供路由器轉發數據,並且EIGRP路由器會將載入到路由表中的路由通告給其他EIGRP鄰居。

可行後繼

編輯

除了度量值最低的路徑外,拓撲表還會儲存前往每個目的地的後備路徑。要成為可行後繼,下一跳路由器的通告距離(Advertisement Distance)必須小於當前路由的可行距離(Feasible Distance),即AD<FD。可行後繼比當前路由器離目的地更近,但不是度量值最小的路徑,所以不會載入到路由表中,只會儲存在拓撲表中。和後繼一樣,對於同一個目的地,可以有多個可行後繼。

通告距離和可行距離

編輯

通告距離(Advertised Distance,AD)是到目的地的下一跳路由器到該目的地的度量值。通告距離的英文也可寫作Reported Distance(RD)。

可行距離(Feasible Distance,FD)是路由器到某目的地的最低度量值。FD等於AD加上從當前路由器到下一跳路由器的度量值。

可行條件

編輯

eigrp的可行條件為: 路由的AD< successor的FD

路由的狀態

編輯

被動(Passive)狀態:EIGRP網絡收斂完成後,並能提供無路由環路(Loop-Free Route)路由狀態。當前網絡為可用。

活動(Active)狀態:當前的網絡正處於傳送查詢狀態,當前網絡不可用。若拓樸表一直出現此狀態,則EIGRP這條路由已經進入到 Stuck-in-Active (SIA)的狀態,提示EIGRP網絡的收斂發生了問題。

更新(Update)等待狀態:當前網絡正處於等待更新包的回應狀態。(較少看見)

查詢(Query)等待狀態:當前網絡正處於等待查詢包的回應的狀態。(較少看見)

EIGRP的路由協定類型

編輯

EIGRP其他特性

編輯

⒈支援 Classful 與 Classless 路由特性: EIGRP一改以往IGRP不支援Classless的缺點。在於傳送路由更新的時候,亦攜帶該路徑的子網遮罩(submask)。而支援自動路由彙總(auto-summary)的功能,而這項功能是預設啟用。不過通常在於專業的網管人員使用EIGRP的時候,會強烈建議關閉該項自動路由彙總的功能。

⒉支援不對等路徑度量負載平衡(Unequal Cost Path Load Balancing): 雖然EIGRP支援不對等路徑度量負載平衡;但於Cisco路由器上仍需手動啟用此項功能。而要使用此項功能的要求在於拓樸表(topology table)當中必須擁有可行後繼(Feasible Sucessor)才可啟用此功能。而可行後繼路由路徑度量必須小於或等於所設置的變數(variance)的倍數值(1-128)才能啟用負載平衡的功能,符合該倍數值的可行後繼路由則會出現在路由表當中。目前此特性是所有路由協定(除IGRP外)望塵莫及。

⒊路由更新佔用較少的介面頻寬(interface bandwidth): EIGRP預設情況下,最多佔用介面或子介面組態頻寬的50%。由於在早期的網絡頻寬較少的狀況下,EIGRP協定能夠減少路由協定之間的溝通所佔用的頻寬。至今頻寬較大的今日,這個功能也就顯得沒有那麼重要。目前此特性是獨一無二。當然亦可在Cisco路由器上的介面上組態頻寬或者調整佔用的百分比等等。

⒋Stuck-in-Active: EIGRP的路由環境在於中小型的路由環境中(小於20台)的路由收斂速度是首屈一指(由於使用DUAL演算法,並且擁有自身的拓樸表。);但是在於大型的的路由環境中(大於50台)的路由收斂速度反而會因為DUAL演算法而導致路由收斂產生SIA(Stuck-in-Active)的問題發生。而這個問題的解決方案就是限制EIGRP查詢範圍,並且在路由器的介面(interface)上設置路由匯總(route summary),如此才能夠阻止EIGRP的SIA狀況。

參考文獻

編輯

TCP/IP路由技術(第一卷)(第二版)(美)多伊爾,(美)卡羅爾 著,葛建立,吳劍章 譯 / 人民郵電出版社

外部連結

編輯
  1. ^ Cisco公開EIGRP路由協議. [2014-09-18]. (原始內容存檔於2014-09-07). 
  2. ^ IETF RFC7868 文件頁面存檔備份,存於互聯網檔案館) 5.6.1.1