加強型閘道間選徑協定

加強型閘道間選徑協定(英語: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