協定概況
EIGRP是Cisco的私有路由協定,它綜合了距離矢量和鏈路狀態2者的優點,
協定特點
1.快速收斂:EIGRP使用DiffusingUpdate算法(DUAL)來實現快速收斂.路由器使用EIGRP來存儲所有到達目的地的備份路由,以便進行快速切換.如果沒有合適的或備份路由在本地路由表中的話.路由器向它的鄰居進行查詢來選擇一條備份路由
2.減少頻寬占用:EIGRP不作周期性的更新,它只在路由的路徑和度發生變化以後做部分更新.當路徑信息改變以後,DUAL只傳送那條路由信息改變了的更新,而不是傳送整個路由表.和更新傳輸到一個區域內的所有路由器上的鏈路狀態路由協定相比,DUAL只傳送更新給需要該更新信息的路由器
3.支持多種網路層協定:EIGRP通過使用protocol-dependentmodules(PDMs),可以支持ApplleTalk,IP和NovellNetware等協定,現在還支持IPv6
4.無縫連線數據鏈路層協定和拓撲結構:EIGRP不要求對OSI參考模型的層2協定做特別是配置.不像OSPF,OSPF對不同的層2協定要做不同配置,比如乙太網和幀中繼總之,EIGRP能夠有效的工作在LAN和WAN中,而且EIGRP保證網路不會產生環路(loop-free);而且配置起來很簡單;支持VLSM;它使用多播和單播,不使用廣播,這樣做節約了頻寬;它使用和IGRP一樣的度的算法,但是是32位長的;它可以做非等價的路徑的負載平衡
協定技術
EIGRPDatabases
運行了EIGRP的路由器維持3張表:neighbortable,topologytable和routingtable.其中neighbortable保存了和路由器建立了鄰居關係的,直接相連的路由器;topologytable包含路由器學習到的到達目的地的所有路由條目,其過程如下:
1.neighbortable中的每個鄰居都轉發1份IP路由表的拷貝給它們的鄰居
2.然後每個鄰居把從它們自己的鄰居處得來的路由表存儲在自己的EIGRP拓撲資料庫中
3.EIGRP檢查拓撲資料庫,然後選擇出一條到達目的地的最佳路由
4.EIGRP從拓撲資料庫中選擇到達目的地的最佳的successorroutes,然後把它們放到路由表里.路由器為每種協定(比如IP,IPX)各自保持1張單獨是路由表
FeasibleDistancevs.AdvertisedDistance
為了決定到達目的地的最佳路由(successor)和備份路由(feasiblesuccessor),EIGRP使用下面2個參數:
1.advertiseddistance:EIGRP鄰居到達目標網路的度
2.feasibledistance:到達鄰居路由器的度加上advertiseddistance(即鄰居到達目標網路的度)
路由器比較所有的FD,然後選擇FD值最低的放進IP路由表
EIGRPMetricCalculation
EIGRP選擇一條主路由(最佳路由)和一條備份路由放在topologytable(EIGRP到目的地支持最多6條鏈路).它支持幾種路由類型:內部,外部(非EIGRP)和匯總路由.EIGRP使用混合度
EIGRP度的5個標準如下:
1.頻寬:10的7次方除以源和目標之間最低的頻寬乘以256
2.延遲(delay):接口的累積延遲乘以256,單位是微秒
以上是默認的2個,下面是可選的3個標準:
3.可靠性(reliability):根據keepalive而定的源和目的之間最不可靠的可靠度的值
4.負載(loading):根據包速率和接口配置頻寬而定的源和目的之間最不差的負載的值
5.最大傳輸單元(MTU):路徑中最小的MTU.MTU包含在EIGRP的路由更新里,但是一般不參與EIGRP度的運算
EIGRP使用DUAL來決定到達目的地的最佳路由(successor).當最佳路由出問題的時候,EIGRP不使用holddowntimer而立即使用備份路由(feasiblesuccessor),這樣就使得EIGRP可以進行快速收斂
看看EIGRP計算度的公式,K是常量,公式如下:
metric=[K1*bandwidth+(K2*bandwidth)/(256–load)+K3*delay]*[K5/(reliability+K4)]
默認:K1=1,K2=0,K3=1,K4=0,K5=0
這樣就得到默認的度的簡化計算公式,如下:
metric=bandwidth+delay
注意,不推薦修改K值.K值通過EIGRP的hello包運載.如果兩個路由器的K值不匹配的話它們是不會形成鄰居關係的
EIGRPMetricsBackwardCompatibletoIGRP
EIGRP的度和IGRP的度能夠很好的進行兼容.IGRP的度是以24位的格式,而EIGRP是32位的格式.它們之間的關係是EIGRP的度是256倍於IGRP的度.也就是說假如IGRP的度為1000的話,換算成EIGRP的度為256000
EIGRPPackets
EIGRP的5種包的類型,如下:
1.hello包:路由器使用hello包來發現鄰居,採用多播的方式
2.update包:採用單播或多播的方式傳送.更新發生在路由器啟動,拓撲或度發生變化,和路由狀態的遷移(主動到被動)
3.query包:當路由器開始進行路由計算和沒有FD的時候,它就傳送給鄰居一個可靠的查詢包來詢問是否有到達目的地的FD.查詢包通常以多播的方式傳送
4.reply包:以單播的方式發回給發出查詢包的路由起,作為應答
5.acknowledge(ACK)包:ACK包是採用單播的hello包,包含非0的確認數字.update包,query包和reply包均是可靠傳送,所以它們都需要確認;而hello包和ACK包就不需要確認
EIGRPHelloPackets
當你在路由器的接口配置了EIGRP以後,路由器會周期性的以組多播的方式向外傳送hello包.多播地址是224.0.0.10.當和它在1個AS里的其他運行了EIGRP的路由器接收到hello包以後,就會和它形成鄰居關係.不在1個AS里,而且度的計算方式不一樣(即K值不同),是不會形成鄰居關係的
EIGRPTimers
hello包在不同的介質上傳送間隔是不一樣的,如下:
1.在以下介質中是以每5秒進行傳送:廣播型介質,比如乙太網,令牌環(TokenRing)和分散式光纖接口(FDDI);在點到點類型的串列鏈路中比如PPP和HDLC,還有幀中繼和ATM;頻寬大於T1線路的多點線路,比如交換式多兆位數據服務(SMDS),幀中繼,ATM和ISDNPRI
2.在以下類型中間隔時間是60秒:頻寬小於T1線路的多點線路,比如ISDNBRI,幀中繼,SMDS,ATM和X.25當配置EIGRP的時候,EIGRP進程動態發現和它直接相連的運行了EIGRP的路由器.每個路由器在它自己的neighbortable中都保持的有鄰居的信息,包括到達鄰居路由器的地址和接口.還保持的有holdtime.holdtime是3倍於hellotime
EIGRP在低速鏈路上傳送hello包的頻率較低,因為hello包會占用額外的頻寬.不過可以在接口配置模式對默認時間進行修改,使用iphello-intervaleigrp{AS-number}{seconds}命令;修改holdtime的時間的命令也是在接口配置模式,使用iphold-timeeigrp{AS-number}{seconds}命令.當你修改了hello包的時間間隔以後,holdtime是不會自動修改的(之前holdtime=hellotime*3)所以要人工進行修改
EIGRPAdjacencyEstablishmentConditions
即使兩個路由器的hellotime和holdtime相互之間不匹配,它們仍然有可能成為鄰居.hello包包含了holdtime的信息和保持跟蹤每個EIGRP鄰居路由器的holdtime如果EIGRP路由器在holdtime超出之前沒有收到EIGRP包,路由器就會察覺拓撲的變化.路由器刪除鄰居路由器的相關信息,包括從鄰居那裡認可的topologytable條目.假如FD可用的話,EIGRP進程將進行重新收斂
EIGRP不會基於次要地址(secondaryaddress)建立鄰居關係,因為EIGRP使用接口的主地址 。