EIGRP

增強內部網關路由協議

EIGRP:Enhanced Interior Gateway Routing Protocol,即增強內部網關路由協議。也翻譯為加強型內部網關路由協議。EIGRP是Cisco公司的私有協議(2013年已經公有化)。

協議特點


是Cisco的私有路由協議,它綜合了距離矢量和鏈路狀態2者的優點,它的特點包括:
1.快速收斂
EIGRP採用DUAL來實現快速收斂。運行EIGRP的路由器存儲了鄰居的路由表,因此能夠快速適應網路中的變化。如果本地路由表中沒有合適的路由且拓撲表中沒有合適的備用路由,EIGRP將查詢鄰居以發現替代路由。查詢將不斷傳播,直到找到替代路由或確定不存在替代路由
2.部分更新
EIGRP發送部分更新而不是定期更新,且僅在路由路徑或者度量值發生變化時才發送。更新中只包含已變化的鏈路的信息,而不是整個路由表,可以減少帶寬的佔用。此外,還自動限制這些部分更新的傳播,只將其傳遞給需要的路由器,因此EIGRP消耗的帶寬比IGRP少很多。這種行為也不同於鏈路狀態路由協議,後者將更新發送給區域內的所有路由器。
3.支持多種網路層協議
EIGRP使用協議相關模塊來支持IPv4IPv6、AppleTalk和IPX,以滿足特定網路層需求。
4.使用多播和單播
EIGRP在路由器之間通信時使用多播和單播而不是廣播,因此終端站不受路由更新和查詢的影響。EIGRP使用的多播地址是224.0.0.10
5.支持變長子網掩碼(VLSM)
EIGRP是一種無類路由協議,它將通告每個目標網路的子網掩碼,支持不連續子網和VLSM
6.無縫連接數據鏈路層協議和拓撲結構
EIGRP不要求對OSI參考模型的2層協議做特別的配置.不像OSPF,OSPF對不同的2層協議要做不同配置,比如乙太網和幀中繼,EIGRP能夠有效的工作在LAN和WAN中,而且EIGRP保證網路及不會產生環路(loop-free);而且配置起來很簡單;支持VLSM;它使用組播和單播,不使用廣播,這樣做節約了帶寬;它使用和IGRP一樣的度量值演演算法,但是EIGRP度量值是32位的;它可以做非等價的路徑的負載平衡.
7.配置簡單
使用EIGRP協議組建網路,路由器配置非常簡單,它沒有複雜的區域設置,也無需針對不同網路介面類型實施不同的配置方法。使用EIGRP協議只需使用routereigrp命令在路由器上啟動EIGRP路由進程,然後再使用network命令使能網路範圍內的介面即可。

技術

1.協議相關模塊(Protocol-DependentModule,PDM)
2.可靠傳輸協議(ReliableTransportProtocol,RTP)
3.鄰居的發現/恢復
4.擴散更新演演算法(DiffusingUpdateAlgorithm,DUAL)

傳輸協議

RTP負責EIGRPpacket(下面有講)的按順序(可靠)的發送和接收,這個可靠的保障是通過Cisco私有的一個演演算法,reliablemulticast實現的,使用組播地址,每個鄰居接收到這個可靠的組播包的時候就會以一個unicast作為確認按順序的發送是通過packet里的2個序列號實現的,每個packet都包含發送方分配的1個序列號,發送方每發送1個packet,這個序列號就遞增1.另外,發送方也會把從目標路由器接收到的packet的序列號放在這個要發送的packet里,在某些情況下,RTP也可以使用無需確認的不可靠的發送,並且使用這種不可靠發送的packet中不包含序列號.EIGRP第一次傳輸都採用組播形式,重傳輸都採用單播。

計算方法


EIGRP選擇一條主路由(最佳路由)和一條備份路由放在topologytable(EIGRP到目的地支持最多16條鏈路。從12.3TIOS版本之後,最多支持16條負載均衡,之前為6條).它支持幾種路由類型:內部,外部(非EIGRP)和匯總路由.EIGRP使用混合度量值.
EIGRPMetric的5個標準
• 帶寬(bandwidth)
10的7次方除以源和目標之間最低的帶寬乘以256(10的7次方除以以Kbit/s為單位的最小帶寬,然後加上延遲之和除以10,最後乘於256)
• 延遲(delay)
介面的累積延遲乘以256,單位是10微秒
• 可靠性(reliability)
根據keepalive而定的源和目的之間最不可靠的可靠度的值
• 負載(loading)
根據包速率和介面配置帶寬而定的源和目的之間最不差的負載的值
• 最大傳輸單元(MTU)
路徑中最小的MTU.MTU包含在EIGRP的路由更新里,但是一般不參與EIGRP度的運算
EIGRPMetric的計算
一般情況下,K5=0;EIGRP度量值的計算公式為:256*{K1(10^7/帶寬)+K2(10^7/帶寬)/(256-負載)+K3(延遲)}
由於默認情況下,K1和K3是1,其他的K值都是0.
所以通常情況下,度量值=256×(10^7/最小帶寬+累積延時/10)
如果修改K值,使K5不等於0,則Metric計算式變成:256*[K1(10^7/帶寬)+K2(10^7/帶寬)/(256-負載)+K3(延遲)]*[K5/(可靠性+K4)]
計算出的Metric值不是整數時自動取整,比如計算結果為8501.39,顯示值將為8501。
通過配置權重(K值),可以修改EIGRP度量值計算方式。可以再EIGRP配置模式使用命令:MetricweightTosK1K2K3K4K5來修改K值,Tos只有一個有效值0,否則將被忽略。
EIGRP要求兩台路由器的K值必須相同才能成為鄰居。另外,K2,K4,,K5最好不要設置,因為這些參數設置為非零之後,會導致計算度量值時會考慮介面的負載和可靠性,而負載和可靠性會隨時間變化,這將導致EIGRP重新泛洪拓撲數據,還可能導致路由器不斷地選擇不同的路由,由此導致網路不穩定。

Packet

EIGRP使用多種類型的packet,這些packet通過IP頭部信息里的協議號88來標識:
在EIGRP協議中,總共會使用5種類型的數據包,分別為Hello、Update、Query、Reply、Ack,下面介紹各種數據包的功能與用途:
Hello
是用來發現和維護EIGRP鄰居關係的,目標地址為224.0.0.10,Hello包在鄰居收到后不需要確認。
Update
發給鄰居的路由表,通過組播發送Update數據包,鄰居收到后必須回復確認消息。
Query
當路由信息丟失並沒有備用路由時,使用Query數據包向鄰居查詢,鄰居必須回復確認。
Reply
是對鄰居Query數據包的回復,也需要鄰居回復確認。
Ack
是對收到的數據包的確認,告訴鄰居自己已經收到數據包了,收到Ack后,不需要再對Ack做回復,因為這是沒有意義的,並且可能造成死循環。
由以上可以看出,5種數據包中,Update、Query、Reply在對方收到后,都需要回復確認,這些數據包是可靠的,回復是發送Ack;而Hello和Ack,是不需要回復的,因此被認為不可靠。

恢復協議

EIGRP的Update包是非周期性發送的,
1.Hello包在一般的網路中(比如點到點,point-to-point)是每5秒組播1次(要隨機減去1個很小的時間防止同步);
2.在多點(multipoint)X.25,幀中繼(FrameRelay,FR)和ATM介面(比如ATMSVC)和ISDNPRI介面上,Hello包的發送間隔是60秒.
在所有的情況中,Hello包是不需要確認的.可以在介面配置模式下修改該介面的Hello包默認的發送間隔,命令為
iphello-intervaleigrp
當一個路由器收到從鄰居發來的Hello包的時候,這個Hello包包含了一個holdontime,這個holdowntime告訴這個路由器等待後續Hello包的最大時間.如果在超出這個holdowntime之前沒有收到後續Hello包,那麼這個鄰居就會被宣告為不可達,並通知DUAL這個鄰居已丟失.默認holdtime是3倍於Hello包發送間隔的,更高鏈路--默認Hello間隔和保持時間是5s和15sT1或低於T1鏈路--分別是60s和180s可以在介面配置模式下修改這個默認的holdowntime,命令為
iphold-timeeigrp.
EIGRP鄰居信息都記錄在鄰居表(neighbortable)中,使用showipeigrpneighbors命令查看IPEIGRP的鄰居.

特點


通過發送和接收Hello包來建立和維持鄰居關係,並交換路由信息;
採用組播(224.0.0.10)或單播進行路由更新;
EIGRP的管理距離為90或170;
採用增量更新,減少帶寬佔用;
支持可變長子網掩碼(VLSM),默認開啟自動匯總功能;
支持IP、IPX和AppleTalk等多種網路層協議;
對每一種網路協議,EIGRP都維持獨立的鄰居表、拓撲表和路由表;
EIGRP使用DiffusingUpdate演演算法(DUAL)來實現快速收斂並確保沒有路由環路;
存儲整個網路拓撲結構的信息,以便快速適應網路變化;
支持等價和非等價的負載均衡;
使用可靠傳輸協議(RTP)保證路由信息傳輸的可靠性。
無縫連接數據鏈路層協議和拓撲結構,EIGRP不要求對OSI參考模型的2層協議進行特別的配置。

環路解決


如果EIGRP不考慮環路的問題,那麼當右圖中連接路由3和4的線路斷開後會因到不了networka而使路由1-3相互查詢怎麼去networka而產生環路。因此EIGRP對於環路的防止考慮兩方面:
1.水平分割(SplitHorizon)
永遠不會在同一個介面下通告一條該介面學到的路由信息
2.路由的毒性逆轉(Poisonreverse)
接收路由信息的介面,再從該介面通告出剛才學到的路由為不可達
觸發條件:
當兩台路由器進行鄰居初始化時,他們會互相以最大的metric值通告回剛才學到的路由信息(路由中毒)
當拓撲發生改變時,會臨時關閉水平分割和毒性逆轉,重新學習拓撲
發送查詢請求時,會引起水平分割,比如當一個路由器查詢一條未知網段去向時,他會向每一個鄰居發送查詢,處於該網段的繼承者(successor)會返回查詢給該路由器,而該路由器會反饋一個查詢結果給其他鄰居,不會再次告訴那個繼承者要走這個網段應該要經過自己

路由分發


EIGRP重分發
EIGRP重分發
在一些大型網路中,往往存在不同的自治區域需要互聯的情況。比如在右圖的情況下,AS號為1000的要與AS號為2000的兩個EIGRP相互通信,只需要在中間路由器配置重分發,注意配置重分發也要避免路由環路。
示例:
routereigrp2000network172.16.1.00.0.0.255
RouterTwo
routereigrp2000
redistributeeigrp1000route-mapto-eigrp2000
network172.16.1.00.0.0.255--在AS=2000內定義鄰居AS=1000去AS=2000的網段
!
routereigrp1000
redistributeeigrp2000route-mapto-eigrp1000--在AS=1000內定義鄰居AS=2000去AS=1000的網段
network10.1.0.00.0.255.255
route-mapto-eigrp1000deny10
matchtag1000
!
route-mapto-eigrp1000permit20
settag2000
!
route-mapto-eigrp2000deny10
matchtag2000
!
route-mapto-eigrp2000permit20
settag1000
--當AS=1000的網段被標上(tag)1000的標記,當AS=2000重分發進AS=1000時,被標上1000的路由信息將被拒絕,以防產生環路;反之在AS=2000上亦然。
RouterThree
routereigrp1000network10.1.0.00.0.255.255
路由1和3之間就能互訪了。

術語定義


● ● 彌散更新演演算法簡介
(彌散更新演演算法可以保證路由100%無環路loopfree)為了能夠讓DUAL正確的操作,低層協議必須滿足以下幾個條件:
● ● 一個節點要在有限的時間裡檢測到新鄰居的存在或和一個鄰居的連接的丟失
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 AD < FD => FC=ture.
● ● Feasible Successor(FS,可行後繼路由)
如果一個鄰居宣告到達目標網路的距離滿足FC,那麼這個鄰居就成為FS.比如,路由器到達目標網路172.16.5.0的FD為380672,而他鄰居所宣告到達目標網路的距離為355072,這個鄰居路由器滿足FC,它就成為FS;如果鄰居路由器宣告到達目標網路的距離為380928,即不滿足FC,那麼這個鄰居路由器就不能成為FS,FS和FC是避免環路的核心技術,FS也是downstream router(下游路由器),因為從FS到達目標網路的距離比本地路由器到達目標網路的FD要小,存在一個或多個FS的目標網路被記錄在拓撲表中。
● ● 拓撲表(Topological Table)
拓撲表包括以下內容:
目標網路的FD.
所有的FD.
每一個FS所宣告的到達目標網路的距離.
本地路由器計算出的,經過每個FS到達目標網路的距離,即基於FS所宣告到達目標網路的距離和本地路由器到達那個FS的鏈路的cost.
發現FS的網路相連的介面.
● ● 鄰居表(Neighbor Table)
每個路由器的RAM中都保存有關於鄰居的地址和介面信息的表。
● ● 後繼路由(Successor)
又稱成功者(Secessful),是到達遠程網路的最佳路由。是EIGRP用於轉發業務量的路由,它被存儲在路由表中。
● ● 後繼路由器:
是一個直接連接的鄰居路由器,通過它到達目的網路的路由最優。
● ● 可行後繼路由器:
是一個鄰居路由器,但是通過它到達目的地的度量值比後繼路由器高,但它的通告距離小於通過後繼路由器到達目的網路的可行距離,因而被保存在拓撲表中,用做備份路由。

優缺點


(1)EIGRP路由協議主要優點
精確路由計算和多路由支持。EIGRP協議繼承了IGRP協議的最大的優點是矢量路由權。EIGRP協議在路由計算中要對網路帶寬、網路時延、通道佔用率和通道可信度等因素作全面的綜合考慮,所以EIGRP的路由計算更為準確,更能反映網路的實際情況。同時EIGRP協議支持多路由,使路由器可以按照不同的路徑進行負載分擔。
較少帶寬佔用。使用EIGRP協議的對等路由器之間周期性的發送很小的hello報文,以此來保證從前發送報文的有效性。路由的發送使用增量發送方法,即每次只發送發生變化的路由。發送的路由更新報文採用可靠傳輸,如果沒有收到確認信息則重新發送,直至確認。EIGRP還可以對發送的EIGRP報文進行控制,減少EIGRP報文對介面帶寬的佔用率,從而避免連續大量發送路由報文而影響正常數據業務的事情發生。
快速收斂。路由計算的無環路和路由的收斂速度是路由計算的重要指標。EIGRP協議由於使用了DUAL演演算法,使得EIGRP協議在路由計算中不可能有環路路由產生,同時路由計算的收斂時間也有很好的保證。因為,DUAL演演算法使得EIGRP在路由計算時,只會對發生變化的路由進行重新計算;對一條路由,也只有此路由影響的路由器才會介入路由的重新計算。
MD5認證。為確保路由獲得的正確性,運行EIGRP協議進程的路由器之間可以配置MD5認證,對不符合認證的報文丟棄不理,從而確保路由獲得的安全。
路由聚合。EIGRP協議可以通過配置,對所有的EIGRP路由進行任意掩碼長度的路由聚合,從而減少路由信息傳輸,節省帶寬。
實現負載分擔。去往同一目的的路由表項,可根據介面的速率、連接質量和可靠性等屬性,自動生成路由優先順序,報文發送時可根據這些信息自動匹配介面的流量,達到幾個介面負載分擔的目的。
區域概念,EIGRP已經引用AS概念,可以進行大規模網路的路由支持了。
(2)EIGRP路由協議主要缺點
定時發送HELLO報文。運行EIGRP的路由器之間必須通過定時發送HELLO報文來維持鄰居關係,這種鄰居關係即使在撥號網路上,也需要定時發送HELLO報文,這樣在按需撥號的網路上,無法定位這是有用的業務報文還是EIGRP發送的定時探詢報文,從而可能誤觸發按需撥號網路發起連接,尤其在備份網路上,引起不必要的麻煩。所以,一般運行EIGRP的路由器,在撥號備份埠還需配置Dialerlist和Dialergroup,以便過濾不必要的報文,或者運行TRIP協議,這樣做增加路由器運行的開銷。而OSPF可以提供對撥號網路按需撥號的支持,只用一種路由協議就可以滿足各種專線或撥號網路應用的需求。
基於分散式的DUAL演演算法。EIGRP的無環路計算和收斂速度是基於分散式的DUAL演演算法的,這種演演算法實際上是將不確定的路由信息散播(向鄰居發query報文),得到所有鄰居的確認后(reply報文)再收斂的過程,鄰居在不確定該路由信息可靠性的情況下又會重複這種散播,因此某些情況下可能會出現該路由信息一直處於活動狀態(這種路由被稱為活動路由棧),並且,如果在活動路由的這次DUAL計算過程中,出現到該路由的後繼(successor)的測量發生變化的情況,就會進入多重計算,這些都會影響DUAL演演算法的收斂速度。而OSPF演演算法則沒有這種問題,所以從收斂速度上看,雖然整體相近,但在某種特殊情況下,EIGRP還有不理想的情況。
EIGRP是Cisco公司的私有協議。Cisco公司是該協議的發明者和唯一具備該協議解釋和修改權的廠商。如果要支持EIGRP協議需向Cisco公司購買相應版權,並且Cisco公司修改該協議沒有義務通知任何其他廠家和使用該協議的用戶。而OSPF是開放的協議,是IETF組織公布的標準。世界上主要的網路設備廠商都支持該協議,所以它的互操作性和可靠性由於公開而得到保障,並且在眾多的廠商支持下,該協議也會不斷走向更加完善。

區別

IGRP(InteriorGatewayRoutingProtocol,內部網關路由選擇協議)是Cisco特有的基於距離向量的路由協議,雖然同樣應用於規模較小的區域網路,但是,與RIP路由協議有所不同,IGRP使用IP層的埠號9進行報文交換,而RIP則是使用520埠進行報文交換。
IGRP同樣是一種動態距離向量路由協議,它由Cisco公司20世界80年代中期設計推出,使用跳數來確定到達一個網路的最佳路徑,使用延遲、帶寬、可靠性和負載來確定最優路由。默認狀態下,IGRP每90秒鐘發送一次路由更新廣播,在3個更新周期(即270秒)內,如果沒有從路由中的第一個路由器接受到更新,則宣布路由器不可訪問。在7個周期(即630秒)后,CiscoIOS(網際操作系統)軟體會從路由表中清除該路由。
EIGRP結合了鏈路狀態和距離矢量型路由選擇協議的Cisco專用協議,採用彌散修正演演算法(DUAL)來實現快速收斂,可以不發送定期的路由更新信息以減少帶寬的佔用,支持Appletalk、IP、Novell和NetWare等多種網路層協議。自從EIGRP路由協議誕生后,IGRP路由協議便很少再被使用了。

基本配置

r1(config)#routereigrpAS號(0~65535)激活eigrp
r1(config-router)#net192.168.1.0通配符激活介面,下行等價命令
r1(config-router)#passive-interfacefastEthernet0/1不從F0/1發hello包
neib192.168.1.2/lo0單播
variance非等價負載均衡
bandwidth帶寬
ipbandwidth-parcentAS佔用帶寬
keychainMD5驗證
key
key-string
ipauthenticatianmodeeigrpmd5
ipauthenticationkey-chaineigrp
show命令:
showipeigrpint/nei/top/tra/
showippro

K值詳解


1.EIGRPmetric=(IGRPmetric)*256IGRPmetricis24bitsinlength.EIGRPmetricis32bitsinlength.
2.K1::Bandwidth=(10,000,000/bandwidthoninterface,kbps)*25656K457141761.544M1657856(10,000,000/1544=6476)*25610M256000100M256001G2560
3.K2::Loading
4.K3::Delaysumofdelaysinthepath,intensofmicroseconds,mutlipliedby256Delay=[(sumoftheDLY,inmicroseconds)/10]*256
這裡的DLY是從本地介面發出后,沿途所經所有源介面的DLY。
6.K5::Reliability(可靠性)
7.K1~K5--->B-L-D-R-M--->BLackDReaM(這是我的一個記憶技巧)
8.FormulawithdefaultKvalues(K1=1,K2=0,K3=1,K4=0,K5=0):metric=K1*BW+((K2*BW)/(256-load))+K3*delay=BW+delay
9.IfK5isnotequalto0:metric=metric*[K5/(reliability+K4)]
10.KvaluesarecarriedinEIGRPhellopackets.
11.MismatchedKvaluescancauseaneighbortobereset.

排錯命令


showrun|beginroutereigrp//查看配置文件中eigrp的配置命令
showipprotocols//查看當前路由器運行的eigrp協議狀態
showiproutesummary//查看eigrp路由匯總狀態
showipeigrpneighbors//查看eigrp鄰居狀態
showipeigrpinterface//查看各個運行eigrp的介面狀態
showipeigrpinterfacedetail//查看各個運行eigrp的介面詳細狀態
showiprouteeigrp//查看eigrp協議學習到的路由表
showipeigrptopology//查看eigrp的拓撲表
showipeigrptopologyall-links//查看eigrp完整的拓撲表
showipeigrptopology10.1.1.0255.255.255.0//查看指定的某個網路參數信息
debugeigrppackets//調試eigrp的查訊包
debugeigrpfsm//調試eigrp的dual演演算法調試信息

其他區別


EIGRP是cisco專用的,而OSPF則是通用的協議。
EIGRP是一個距離矢量協議,而OSPF是鏈路狀態協議。
EIGRP支持自動匯總功能,它可以在A.B.C類網路的邊界實現自動匯總,同時也支持手動配置;而OSPF則不可以,匯總必須手動配置
EIGRP的匯聚速度要比OSPF快,因為在它的拓撲圖中保存了可選後繼,直接後繼找不到時可以直接通過可選後繼轉發。
EIGRP的多播地址是224.0.0.10,OSPF是224.0.0.5和224.0.0.6。
EIGRP的路徑度量是複合型的,OSPF則是Cost型的(當然一般的cost還是根據bandwidth來計算的)
儘管EIGRP支持路由匯總功能,但是它沒有分級(hierachical)路由的概念,不像OSPF那樣對網路進行分級。
在鄰居關係的建立上,EIGRP沒有OSPF那麼複雜的down-init-twoway的過程,只要一個路由器看到鄰居的hello包,它就與之建立鄰接關係。
在匯總功能的實現上,EIGRP可以在任何路由器的任何介面實現,而OSPF則只能在ABR和ASBR上實現,而且它的路由匯總不是基於介面的。
EIGRP支持不等路徑度量值的負載均衡,而OSPF則只支持相等度量值的負載均衡。
EIGRP使用DUAL演演算法計算最短路徑,而且它採用了有限狀態機(finite-statemachine)來跟蹤所有的路由信息包,保證無迴路(loop-free)以及後繼路由的選擇。OSPF採用Dijikstra演演算法計算最短路徑,它不採用有限狀態機。
EIGRP鄰接關係的確立只要兩個參數相符合就行:K-value和ASnumber;而OSPF的鄰接關係的建立需要多個參數符合:hello/deadtimer,authenticationpassword,areaid,stubflag等。
最後就是它們配置以及檢查(showcommand)上的不同了,這方面不同點很多,就要慢慢體會了。如ospf中的showipospfdatabase對應eigrp中的showipeigrptopology。