<EIGRP(Enhanced Interior Gateway Routing Protocol )>
·EIGRP是Cisco私有的路由協議,采用DUAL(擴散更新算法)(彌散更新算法)。
·EIGRP屬於IGP,是Hybrid協議,基於IP Pro 88。
·支持等價/不等價的負載均衡。
·支持VLSM,手工匯總。
·支持多種網絡協議(IP/IPX)。
eigrp的組播地址:224.0.0.10
EIGRP為各種協議都維護的3張表:
1)Neighbor Table:
確保直接鄰居之間能夠雙向通信。
2)Topology Table:
拓撲表中存放着前往目標地址的所有路由。
3)Routing Table:
從拓撲表中選擇到達目標地址的最佳路由放入路由表。
DUAL算法:
AD(通告距離)--鄰居通告的到達目的的Metric,鄰居到達目標網絡
FD(可行距離)--本路由器到達目的的Metric,自己達到目標網絡
successor(繼任者)--具有最優Metric值的路由
Feasible successor--符合條件的后備路由 AD<FD
成為Feasible Successor的條件:
FD of Best Route > AD of Second best Route
(Successor)
EIGRP的Metric值計算:
EIGRP Metric = 256 * (IGRP Metric) (256=8bit)
K1=帶寬bandwidth(源和目的之間的最小帶寬) 1
K2=負載loading(源和目的之間的最大負載 ) 0
K3=延遲delay(源和目的之間的延遲總和) 1
K4=可靠性reliability(源和目的之間的最低可靠性) 0
K5=MTU(源和目的之間的最小MTU) 0
延遲是取路由來的方向的入接口的延遲總和,環回口也有延遲
EIGRP Metric = 256*(107/BW+DLY/10)
[BW(min) KB/ DL (sum)] 路由入方向接口的延遲之和
Interface BW(kbps) DLY(μsec)
Ethernet 10000 1000
Serial 1544 20000
Loopback 8000000 5000
RTP(Reliable Transport Protocol)
用來管理EIGRP報文的發送和接收,實現可靠傳輸。
Hello:用於鄰居的發現和恢復。(Multicast)發現鄰居、建立鄰居、維持鄰居
Update:傳遞路由更新,僅包含需要的路由條目,當為指定的一台路由器發更新時使用Unicast(P-TO-P) ,當為多台路由器發更新時使用Multicast.(MA)
Query:當找不到Feasible Successor時,發送查詢報文(Multicast)
Reply:回應查詢報文。(Unicast)
ACK:用來確認Update/Query/Reply (Unicast)向鄰居連發16次,如果沒有回復,重置鄰居
Reliable packets :Update/Query/Reply
Unreliable packets :Hello/ACK
·Hello Address = 224.0.0.10
·要形成鄰居關系,雙方K Value & AS Num &authentication都必須一致。
·Hello Timer
5S:≥T1 (1.544Mbps)
60S:<T1
·Hold Timer = 3 * Hello Timer
·即使雙方的Hello Timer & Hold Timer不一致,也可形成鄰居關系。但有可能出問題。
·SRTT(Smooth Round-Trip Time):
從發送3種可靠包,到對方回應ACK的時間。(ms)
·RTO(Retransmission TimeOut):
重傳超時的定時器。
·Queue count 隊列數 還在排隊的報文數
·針對3種可靠包最大重傳16次,如果16次還沒ACK,則重置鄰居關系。
<EIGRP>
R2(config)#router eigrp 90
R2(config-router)#network 12.1.1.0 0.0.0.255
R2(config-router)#network 2.2.0.0 255.255.0.0 (正/反掩碼皆可)
R2#show ip protocols
R2#show ip eigrp interfaces
R1#show ip eigrp neighbors
R1#show ip eigrp traffic
R1#show ip eigrp topology 只能顯示successor和feasible successor
R1#show ip eigrp topology all-links 可顯示拓撲表中的所有條目
測試不同AS NUM能不能建起鄰居。
測試Hello/Hold Timer不一致能不能建起鄰居。
·修改Hello/Hold Timer
R1(config-if)#ip hello-interval eigrp 90 60
R1(config-if)#ip hold-time eigrp 90 180
HOLDTIME是給鄰居用的,不是給自己設置的
·修改K值
R3(config)#router eigrp 90
R3(config-router)#metric weights 0 1 1 1 0 0
K值不一樣不能建立鄰居關系
-------------------------------------------------------------------------------------
自動匯總
EIGRP在默認auto-summary時,跨越不同網絡邊界時,還是會匯總成主類。
所以:R1(config-router)#no auto-summary
·Eigrp在auto-summary有如下特點:
1)D 2.0.0.0/8 is a summary, 00:02:30, Null0
(本地匯總成主類指向Null0)
指向NULL0的路由是一個防環的機制
2)僅將本地的路由匯總成主類,對於收到的路由不做匯總,然后發出。
show ip route 172.16.0.0 255.255.0.0 可以看到匯總路由的管理距離
<手工匯總>
R2(config-if)#ip summary-address eigrp 90 20.1.4.0 255.255.252.0
(在路由流向的出接口作)
本地會產生:D 20.1.4.0/22 is a summary, 00:00:02, Null0
1、本地必須有明細路由,才會從做匯總的接口發出匯總路由。
2、直到明細的最后一條路由消失,匯總才會消失。
3、匯總路由的metric值會取最小的metric值
EIGRP匯總路由的AD值是5
EIGRP只會對本地路由進行匯總,不會對過路的路由匯總
<等價負載均衡>
·EIGRP默認支持4條負載均衡,最大支持6條。
R1#show ip protocols
R1(config)#router eigrp 90
R1(config-router)#maximum-paths 6(最多6條)
如何通過修改Metric值來實現負載均衡:
<計算EIGRP Metric>
·在路由流向的入口改。
·改延遲時,如果想把延遲改成2000usec,不建議修改帶寬
則要R3(config-if)#delay 200 (/10) 輸入的值默認會*10
R3(E0): delay 20000
<偏移列表>
用這個玩意將不同路由的metric值改為一樣,用來實現負載均衡
R3(config)#access-list 1 permit 1.1.1.0 0.0.0.0 ACL卡路由的時候其實不用打后面的0.0.0.0
R3(config-router)#offset-list 1 in 3 Serial 1 本命令只能在原有基礎上增加metric值
(原有Metric + 3)
R3(config-router)#offset-list 0 in 3 ethernet 0 從E0接口進來的所有路由的metric值都加3
(0代表所有網絡)
<不等價的負載均衡>
R3(config-router)#variance 2 默認情況下EIGRP只支持等價的負載均衡(默認1)
FS's FD < U*Successor's FD
U值由自已決定(1-128)
前提是這條路由必須要先成為Feasible successor ,否則不會被用來做負載均衡
<EIGRP占用帶寬>
·默認,EIGRP最多只占用接口的配置帶寬的50%。
如果沒有使用Bandwidth設置帶寬,則使用接口默認帶寬。
R1(config-if)#ip bandwidth-percent eigrp 90 200 本命令只能show run interface看
(BW * 200%)
R1(config-if)#bandwidth 100 修改參考帶寬
------------------------------------------------------------------------------------
<EIGRP Authentication>僅支持MD5,不支持明文認證
R2(config)#key chain R2 (本地有效)定義KEY庫名為R2
R2(config-keychain)#key 1(兩端一致)定義KEY號為1
R2(config-keychain-key)#key-string cisco 定義KEY值為cisco
R2(config-if)#ip authentication key-chain eigrp 90 R2 指定使用哪個庫
R2(config-if)#ip authentication mode eigrp 90 md5 開啟認證
R1#show key chain
R1#debug eigrp packet
R2(config-keychain-key)#Accept-lifetime 04:00:00 jan 2006 infinite 定時接收
R2(config-keychain-key)#Send-lifetime 04:00:00 jan 2006 04:01:00 jan 2006 定時發送
R2(config-keychain-key)#Send-lifetime 04:00:00 jan 2006 duration 300 有效期300S
-------------------------------------------------------------------------------------
<Query>
·限制查詢范圍:
1)Summary
·僅當路由表中有完全匹配的明細條目時,才會傳播該查詢。
否則直接回應網絡不可達。
·使用不同AS做雙向重分布,是不能限制查詢范圍的。
2)Stub
·一般把遠程路由器配置成Stub路由器,並向所有鄰居發送特殊信息告之,這樣,鄰居將不會向Stub發送查詢。
R3(config)#router ei 90
R3(config-router)#eigrp stub (默認通告直連&匯總)
(在config中會自動變成 eigrp stub connected summary )
R3(config-router)#eigrp stub connected (只通告直連路由)
R3(config-router)#eigrp stub summary (只通告匯總路由)
R3(config-router)#eigrp stub redistributed (只通告重分布的路由)
R3(config-router)#eigrp stub static (只通告靜態路由)
R3(config-router)#eigrp stub receive-only (只接收不通告)
SIA(Stuck in Active)卡在活動狀態
路由器在三分鍾內沒有收到鄰居的回應,就認為路由已進入SIA狀態,這時會重置鄰居關系.
·導致SIA的常見原因:
1)查詢范圍太大
2)路由器太忙無法回答查詢。
3)路由器之間的鏈路質量低劣,導致查詢包丟失。
4)某些單向鏈路失效。
R1(config-router)#timers active-time [2|disable]
(SIA計時器,默認是3分鍾,超過3分鍾就重置鄰居關系,避免卡在活動狀態)
<被動接口>
R1(config-router)#passive-interface loopback 0 必須在進程中
不發送不接受任何報文。
接口將不收發Hello包,但此接口還是被宣告進Eigrp。
對於環回口來說其他路由器仍可收到這接口的路由。對於物理接口來說則根本無法建立鄰居關系
<水平分割>
在幀中繼的HUB的接口上要關閉EIGRP的水平分割,不然無法傳路由
Router(config-if)#no ip split-horizon eigrp 90
<EIGRP最大hop數>
默認情況下是100,最大可修改為255
R1(config-router)#metric maximum-hops 255
show ip protocol 可查看
<EIGRP區域生成默認路由>
1)Redistribute Static:
R1(config)#ip route 0.0.0.0 0.0.0.0 serial 0
R1(config)#router eigrp 90
R1(config-router)#redistribute static
(默認是按靜態路由出接口類型計算Metric)
R1(config-router)#redistribute static metric 1544 100 255 1 1500
EX* 0.0.0.0/0 [170/2707456]
2)Network 0.0.0.0:
R1(config)#ip route 0.0.0.0 0.0.0.0 serial 0(寫下一跳不行,必須寫接口)
R1(config)#router eigrp 90
R1(config-router)#network 0.0.0.0
D* 0.0.0.0/0 [90/2707456]
3)default-network:(基本不用)
必須先把出接口宣告進EIGRP中,再用下面的命令
R1(config)#ip default-network 192.12.1.0(寫成主類)
這樣就可以把這條路由下發給其它的路由器
注意:接口也必須是主類地址