協定特點
快速收斂
EIGRP採用DUAL來實現快速收斂。運行EIGRP的路由器存儲了鄰居的路由表,因此能夠快速適應網路中的變化。如果本地路由表中沒有合適的路由且拓撲表中沒有合適的備用路由,EIGRP將查詢鄰居以發現替代路由。查詢將不斷傳播,直到找到替代路由或確定不存在替代路由
2.部分更新
EIGRP傳送部分更新而不是定期更新,且僅在路由路徑或者度量值發生變化時才傳送。更新中只包含已變化的鏈路的信息,而不是整個路由表,可以減少頻寬的占用。此外,還自動限制這些部分更新的傳播,只將其傳遞給需要的路由器,因此EIGRP消耗的頻寬比IGRP少很多。這種行為也不同於鏈路狀態路由協定,後者將更新傳送給區域內的所有路由器。
3.支持多種網路層協定
EIGRP使用協定相關模組來支持IPv4、IPv6、Apple Talk和IPX,以滿足特定網路層需求。
4.使用多播和單播
EIGRP在路由器之間通信時使用多播和單播而不是廣播,因此終端站不受路由更新和查詢的影響。EIGRP使用的多播地址是224.0.0.10
EIGRP是一種無類路由協定,它將通告每個目標網路的子網掩碼,支持不連續子網和VLSM
6.無縫連線數據鏈路層協定和拓撲結構
EIGRP不要求對OSI參考模型的2層協定做特別的配置.不像OSPF,OSPF對不同的2層協定要做不同配置,比如
乙太網和
幀中繼,EIGRP能夠有效的工作在LAN和WAN中,而且EIGRP保證網路及不會產生環路(loop-free);而且配置起來很簡單;支持VLSM;它使用
組播和
單播,不使用廣播,這樣做節約了
頻寬;它使用和IGRP一樣的度量值算法,但是EIGRP度量值是32位的;它可以做非等價的路徑的
負載平衡.
7.配置簡單
使用EIGRP協定組建網路,路由器配置非常簡單,它沒有複雜的區域設定,也無需針對不同網路接口類型實施不同的配置方法。使用EIGRP協定只需使用router eigrp命令在路由器上啟動EIGRP路由進程,然後再使用network命令使能網路範圍內的接口即可。
技術
1.協定相關模組 (Protocol-Dependent Module,PDM)
2.可靠傳輸協定(Reliable Transport Protocol,RTP)
3.鄰居的發現/恢復
4.擴散更新算法(Diffusing Update Algorithm,DUAL)
傳輸協定
RTP負責
EIGRP packet(下面有講)的按順序(可靠)的傳送和接收,這個可靠的保障是通過Cisco私有的一個算法,reliable multicast實現的,使用
組播地址224.0.0.10,每個鄰居接收到這個可靠的組播包的時候就會以一個unicast作為確認按順序的傳送是通過packet里的2個序列號實現的,每個packet都包含傳送方分配的1個序列號,傳送方每傳送1個packet,這個序列號就遞增1.另外,傳送方也會把從目標
路由器接收到的packet的序列號放在這個要傳送的packet里,在某些情況下,RTP也可以使用無需確認的不可靠的傳送,並且使用這種不可靠傳送的packet中不包含序列號.EIGRP第一次傳輸都採用組播形式,重傳輸都採用
單播。
計算方法
EIGRP選擇一條主
路由(最佳路由)和一條備份路由放在
topology table(EIGRP到目的地支持最多16條鏈路。從12.3T IOS版本之後,最多支持16條負載均衡,之前為6條).它支持幾種路由類型:內部,外部(非EIGRP)和匯總路由.EIGRP使用混合度量值.
EIGRP Metric的5個標準
10的7次方除以源和目標之間最低的頻寬乘以256(10的7次方除以以Kbit/s為單位的最小頻寬,然後加上延遲之和除以10,最後乘於256)
接口的累積延遲乘以256,單位是10微秒
根據keepalive而定的源和目的之間最不可靠的可靠度的值
根據包速率和接口配置頻寬而定的源和目的之間最不差的負載的值
路徑中最小的MTU.MTU包含在EIGRP的路由更新里,但是一般不參與EIGRP度的運算
EIGRP Metric的計算
一般情況下,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配置模式使用命令:Metric weight
TosK1 K2 K3 K4 K5 來修改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,
幀中繼(Frame Relay,FR)和ATM接口(比如ATM SVC)和ISDN PRI接口上,Hello包的傳送間隔是
60秒.
在所有的情況中,Hello包是不需要確認的.可以在接口配置模式下修改該接口的Hello包默認的傳送間隔,命令為
當一個
路由器收到從鄰居發來的Hello包的時候,這個Hello包包含了一個
holdon time,這個holdown time告訴這個路由器等待後續Hello包的最大時間.如果在超出這個holdown time之前沒有收到後續Hello包,那么這個鄰居就會被宣告為不可達,並通知DUAL這個鄰居已丟失.默認hold time是3倍於Hello包傳送間隔的, 更高鏈路-- 默認Hello間隔和保持時間是5s和15s T1或低於T1鏈路-- 分別是60s和180s可以在接口配置模式下修改這個默認的holdown time,命令為
EIGRP鄰居信息都記錄在鄰居表(neighbor table)中,使用show ip eigrpneighbors命令查看IP EIGRP的鄰居.
特點
通過傳送和接收Hello包來建立和維持鄰居關係,並交換路由信息;
採用組播(224.0.0.10)或單播進行路由更新;
EIGRP的管理距離為90或170;
採用增量更新,減少頻寬占用;
支持可變長子網掩碼(VLSM),默認開啟自動匯總功能;
支持IP、IPX和AppleTalk等多種網路層協定;
對每一種網路協定,EIGRP都維持獨立的鄰居表、拓撲表和路由表;
EIGRP使用Diffusing Update算法(DUAL)來實現快速收斂並確保沒有路由環路;
存儲整個網路拓撲結構的信息,以便快速適應網路變化;
支持等價和非等價的負載均衡;
使用可靠傳輸協定(RTP)保證路由信息傳輸的可靠性。
無縫連線數據鏈路層協定和拓撲結構,EIGRP不要求對OSI參考模型的2層協定進行特別的配置。
環路解決
如果EIGRP不考慮環路的問題,那么當右圖中連線路由3和4的線路斷開後會因到不了network a而使路由1-3相互查詢怎么去network a而產生環路。因此EIGRP對於環路的防止考慮兩方面:
永遠不會在同一個接口下通告一條該接口學到的路由信息
2.
路由的毒性逆轉(Poison reverse)
接收路由信息的接口,再從該接口通告出剛才學到的路由為不可達
觸發條件:
當兩台
路由器進行鄰居初始化時,他們會互相以最大的metric值通告回剛才學到的路由信息(
路由中毒)
當拓撲發生改變時,會臨時關閉
水平分割和毒性逆轉,重新學習拓撲
傳送查詢請求時,會引起水平分割,比如當一個路由器查詢一條未知網段去向時,他會向每一個鄰居傳送查詢,處於該網段的繼承者(successor)會返回查詢給該路由器,而該路由器會反饋一個查詢結果給其他鄰居,不會再次告訴那個繼承者要走這個網段應該要經過自己
路由分發
在一些大型網路中,往往存在不同的自治區域需要互聯的情況。比如在右圖的情況下,AS號為1000的要與AS號為2000的兩個EIGRP相互通信,只需要在中間路由器配置重分發,注意配置重分發也要避免
路由環路。
示例:
Router One
router e
igrp2000 network 172.16.1.0 0.0.0.255
Router Two
router eigrp2000
redistribute eigrp1000 route-map to-eigrp2000
network 172.16.1.0 0.0.0.255--在AS=2000內定義鄰居AS=1000去AS=2000的網段
!
redistribute eigrp2000 route-map to-eigrp1000--在AS=1000內定義鄰居AS=2000去AS=1000的網段
network 10.1.0.0 0.0.255.255
route-map to-eigrp1000 deny 10
match tag 1000
!
route-map to-eigrp1000 permit 20
set tag 2000
!
route-map to-e
igrp2000 deny 10
match tag 2000
!
route-map to-eigrp2000 permit 20
set tag 1000
--當AS=1000的網段被標上(tag)1000的標記,當AS=2000重分發進AS=1000時,被標上1000的
路由信息將被拒絕,以防產生環路;反之在AS=2000上亦然。
Router Three
router eigrp 1000network 10.1.0.0 0.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協定組建網路,路由器配置非常簡單,它沒有複雜的區域設定,也無需針對不同網路接口類型實施不同的配置方法。使用EIGRP協定只需使用router e
igrp命令在
路由器上啟動EIGRP 路由進程,然後再使用network 命令使能網路範圍內的接口即可。
區域概念,EIGRP已經引用AS概念,可以進行大規模網路的路由支持了。
(2)EIGRP路由協定主要缺點
定時傳送HELLO報文。運行EIGRP的路由器之間必須通過定時傳送HELLO報文來維持鄰居關係,這種鄰居關係即使在撥號網路上,也需要定時傳送HELLO報文,這樣在按需撥號的網路上,無法定位這是有用的業務報文還是EIGRP傳送的定時探詢報文,從而可能誤觸發按需撥號網路發起連線,尤其在備份網路上,引起不必要的麻煩。所以,一般運行EIGRP的
路由器,在
撥號備份連線埠還需配置Dialer list和Dialer group,以便過濾不必要的報文,或者運行TRIP協定,這樣做增加路由器運行的開銷。而OSPF可以提供對撥號網路按需撥號的支持,只用一種
路由協定就可以滿足各種專線或撥號網路套用的需求。
基於分散式的DUAL算法。EIGRP的無環路計算和收斂速度是基於分散式的DUAL算法的,這種算法實際上是將不確定的路由信息散播(向鄰居發query報文),得到所有鄰居的確認後(reply報文)再收斂的過程,鄰居在不確定該路由信息可靠性的情況下又會重複這種散播,因此某些情況下可能會出現該路由信息一直處於活動狀態(這種路由被稱為活動路由棧),並且,如果在活動路由的這次DUAL計算過程中,出現到該路由的後繼(successor)的測量發生變化的情況,就會進入多重計算,這些都會影響DUAL算法的收斂速度。而OSPF算法則沒有這種問題,所以從收斂速度上看,雖然整體相近,但在某種特殊情況下,EIGRP還有不理想的情況。
EIGRP是Cisco公司的私有協定。Cisco公司是該協定的發明者和唯一具備該協定解釋和修改權的廠商。如果要支持EIGRP協定需向Cisco公司購買相應著作權,並且Cisco公司修改該協定沒有義務通知任何其他廠家和使用該協定的用戶。而OSPF是開放的協定,是IETF組織公布的標準。世界上主要的
網路設備廠商都支持該協定,所以它的互操作性和可靠性由於公開而得到保障,並且在眾多的廠商支持下,該協定也會不斷走向更加完善。
區別
IGRP(Interior Gateway Routing Protocol,內部
網關路由選擇協定)是Cisco特有的基於
距離向量的
路由協定,雖然同樣套用於規模較小的區域網路,但是,與RIP路由協定有所不同,IGRP使用IP層的
連線埠號9進行報文交換,而RIP則是使用520連線埠進行報文交換。
IGRP同樣是一種動態
距離向量路由協定,它由Cisco公司20世界80年代中期設計推出,使用跳數來確定到達一個網路的最佳路徑,使用延遲、
頻寬、可靠性和負載來確定最優路由。默認狀態下,IGRP每90秒鐘傳送一次
路由更新廣播,在3個更新周期(即270秒)內,如果沒有從路由中的第一個
路由器接受到更新,則宣布路由器不可訪問。在7個周期(即630秒)後,Cisco IOS(網際作業系統)軟體會從
路由表中清除該路由。
EIGRP結合了鏈路狀態和
距離矢量型路由選擇協定的Cisco專用協定,採用彌散修正算法(DUAL)來實現
快速收斂,可以不傳送定期的路由更新信息以減少
頻寬的占用,支持Appletalk、IP、Novell和NetWare等多種網路層協定。自從EIGRP
路由協定誕生後,IGRP路由協定便很少再被使用了。
基本配置
r1(config)#router e
igrp AS號(0~65535) 激活eigrp
r1(config-router)#net 192.168.1.0 通配符 激活接口,下行等價命令
r1(config-router)#passive-interface fastEthernet 0/1 不從F0/1發hello包
neib 192.168.1.2 / lo 0
單播variance <multiplier> 非等價
負載均衡bandwidth <kbps> 頻寬
ip bandwidth-parcent AS 占用頻寬
key chain <name> MD5驗證
key <ID>
key-string <string>
ip authenticatian mode e
igrp<AS> md5
ip authentication key-chain eigrp <AS> <name-of-chain>
show命令:
show ip eigrpint / nei / top / tra/
show ip pro
K值詳解
1. EIGRP metric = (IGRP metric) * 256 IGRP metric is 24 bits in length. EIGRP metric is 32 bits in length.
2. K1 :: Bandwidth = (10,000,000 / bandwidth on interface,kbps) * 256 56K 45714176 1.544M 1657856 (10,000,000 / 1544 = 6476) * 256 10M 256000 100M 25600 1G 2560
3. K2 :: Loading
4. K3 :: Delay sum of delays in the path,in tens of microseconds,mutliplied by 256 Delay = [(sum of the DLY,in microseconds) / 10] * 256
這裡的DLY是從本地接口發出後,沿途所經所有源接口的DLY。
6. K5 :: Reliability(可靠性)
7. K1~K5 ---> B-L-D-R-M ---> BLack DReaM (這是我的一個記憶技巧)
8.Formula with default K values (K1=1,K2=0,K3=1,K4=0,K5=0): metric = K1*BW + ((K2*BW)/(256-load)) + K3*delay = BW + delay
9. If K5 is not equal to 0: metric = metric * [ K5/(reliability + K4) ]
10.K values are carried in EIGRP hello packets.
11.Mismatched K values can cause a neighbor to be reset.
排錯命令
show run | begin router e
igrp//查看配置檔案中eigrp的配置命令
show ip protocols//查看當前
路由器運行的eigrp協定狀態
show ip route summary//查看eigrp
路由匯總狀態
show ip eigrp neighbors//查看eigrp鄰居狀態
show ip eigrp interface//查看各個運行eigrp的接口狀態
show ip eigrp interface detail//查看各個運行eigrp的接口詳細狀態
show ip route e
igrp//查看eigrp協定學習到的路由表
show ip eigrptopology//查看eigrp的拓撲表
show ip eigrptopology all-links//查看eigrp完整的拓撲表
show ip eigrptopology 10.1.1.0 255.255.255.0//查看指定的某個網路參數信息
debug eigrp packets//調試eigrp的查訊包
debug eigrp fsm //調試eigrp的dual算法調試信息
其他區別
EIGRP是cisco專用的,而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-two way的過程,只要一個
路由器看到鄰居的hello包,它就與之建立鄰接關係。
在匯總功能的實現上,EIGRP可以在任何路由器的任何接口實現,而OSPF則只能在ABR和
ASBR上實現,而且它的路由匯總不是基於接口的。
EIGRP支持不等路徑
度量值的負載均衡,而OSPF則只支持相等度量值的負載均衡。
EIGRP使用DUAL算法計算
最短路徑,而且它採用了有限狀態機(finite-state machine)來跟蹤所有的
路由信息包,保證無迴路(loop-free)以及後繼路由的選擇。OSPF採用Dijikstra算法計算最短路徑,它不採用有限狀態機。
EIGRP鄰接關係的確立只要兩個參數相符合就行:K-value和AS number;而OSPF的鄰接關係的建立需要多個參數符合:hello/dead timer,authentication password,area id,stub flag等。
最後就是它們配置以及檢查(show command)上的不同了,這方面不同點很多,就要慢慢體會了。如ospf 中的show ip ospf database對應e
igrp中的show ip eigrp topology。
Cisco 公司於2013年3月將EIGRP路由協定以
RFC文檔的形勢提交給
IETF。