EIGRP基本配置
命令:
R1(config)#router eigrp 1 //啓動EIGRP進程,進程號爲1
R1(config-router)#network 172.31.1.0 0.0.0.255 //通告172.31.1.0/24網段
R1(config-router)#auto-summary //啓用自動彙總(默認啓用)
R1(config)#router eigrp 1
R1(config-router)#network 172.31.1.0 0.0.0.255
R1(config-router)#network 172.31.12.0 0.0.0.3
R1(config-router)#auto-summary
R2(config)#router eigrp 1
R2(config-router)#network 172.31.0.0
R2(config-router)#network 172.16.0.0
R3(config)#router eigrp 1
R3(config-router)#network 172.16.0.0
R4(config)#router eigrp 1
R4(config-router)#network 172.16.0.0
說明:
1.“R1(config)#router eigrp autonomous-system”的作用是用來啓動EIGRP的路由進程。參數“autonomous-
system”由管理員選擇,取值範圍在1-65535之間。儘管EIGRP將進程ID稱爲“自治系統”ID,它實際上起進程
ID的作用,與ISP的自治系統ID無關。EIGRP路由域內的所有路由器都必須使用相同的進程ID號。
2.“R1(config-router)#network network_number”通告直連網段,匹配的接口都將被啓用EIGRP。諸如通告
“172.31.0.0”等有類網絡地址時,該路由器上屬於該有類網絡地址的所有接口都將啓用EIGRP。有時管理員
並不想爲所有接口啓用EIGRP,僅想通告某些特定的子網,這時可以使用“wildcard-mask”(通配符掩碼)選項
與“network”命令一起使用,通配符掩碼是用廣播地址(255.255.255.255)減去子網掩碼得到的。例如:
“R1(confg-router)#172.31.12.0 0.0.0.3”。在高版本的IOS中,通配符掩碼也支持網絡掩碼的寫法,如:
“R1(confg-router)#172.31.12.0 255.255.255.252”。
3.“R1(config-router)#auto-summary”啓用自動彙總,EIGRP默認開啓有類網絡邊界自動彙總,但是隻對本地
產生的路由進行自動彙總,對於穿越本路由器的路由條目,EIGRP不能自動彙總,這一點和RIP不同。
R2#show ip rotue //查看路由表
術語:
1級路由:指子網掩碼等於或小於網絡地址有類掩碼的路由條。如:192.168.1.0/24屬於1級網絡路由,因爲它
的子網掩碼等於網絡有類掩碼。1級路由可以是:
① 默認路由:是指地址爲0.0.0.0/0的靜態路由,或者路由代碼後緊跟“*”的路由條目。
② 超網路由:是指掩碼小於有類掩碼的網絡地址。
③ 網絡路由:是指子網掩碼等於有類掩碼的路由。網絡路由也可以是父路由。
最終路由:指路由條目中包含下一跳IP地址或送出接口的路由。
1級父路由:指路由條目中不包含任何網絡的下一跳IP地址或送出接口的網絡路由。父路由實際上是表示存在2
級路由的一個標題,2級路由也稱爲子路由。只要向路由表中添加一個子網,就會在路由表中自動創建1級父
路由。
2級路由:指有類網絡地址的子網路由,2級路由也稱爲子路由,2級路由的來源可以是直連網絡、靜態路由或動
態路由協議。2級子路由也屬於最終路由,因爲2級路由包含下一跳IP地址或送出接口。
指向Null0接口的彙總路由
以上輸出包含兩條指向Null0接口的彙總路由,Null0接口實際上不存在。默認情況下,EIGRP使用Null0接口來丟棄與主類網絡路由條目匹配但與該主類下所有子網路由都不匹配的數據包。
說明:EIGRP向路由表中自動加入一條Null0總結路由的條件必須同時滿足下面三點:
① 至少有兩個不同主類的網絡在EIGRP進程中通告;
② 每個主類網絡通過EIGRP至少發現了一個子網;
③ EIGRP進程中啓用了自動彙總,或接口下執行了手動彙總。如果關閉自動彙總,則Null0彙總路由將被刪除。
EIGRP度量值的計算
EIGRP度量值計算公式
= [K1×Bandwidth + K2×Bandwidth/(256 - Load) + K3×Delay] + [K5/(Reliability + K4)]×256
Bandwidth = [10^7/傳遞路由條目所經由鏈路中入口帶寬(單位:kbps)的最小值]×256
Delay = [傳遞路由條目所經由鏈路中入口的延遲之和(單位:μs)/10]×256
EIGRP度量值計算公式又
= [K1×10^7/mixBW + K2×10^7/mixBW×(256 - Load) + K3×sumDelay/10 + K5/(Reliability + K4)]×256
默認情況下,K1 = K3 =1,K2 = K4 = K5 = 0。
= (10^7/mixBandwidth + sumDelay/10)×256
可以通過“R2#show interface s0/0”查看 Bandwidth 和 Delay;
“R2(config-if)#bandwidth 2000 //單位kb/s,R2(config-if)#delay 20000 //單位μs”設置帶寬和延遲。
說明:默認情況下,EIGRP會使用不超過50%的接口帶寬來傳輸EIGRP數據。這可以避免因EIGRP進程過度佔用鏈路帶寬而使得路由正常數據流量所需的帶寬不足。配置接口上可供EIGRP使用的帶寬百分百命令如下:
R1(config-if)#ip bandwidth-percent eigrp 1 50 //該接口傳輸EIGRP 1 的數據帶寬不超過總帶寬的50%
最長匹配原則:
1.路由器會查找1級路由(包括網絡路由和超網路由),查找與IP數據包的目的地址最匹配的路由;
2.如果最佳匹配的路由是1級最終路由,則會使用該路由轉發數據包;
3.如果最佳匹配的路由是1級父路由,則路由器檢查該父路由的子路由,以找到最佳匹配的路由;
4.如果在2級路由中存在匹配的路由,則會使用該子路由轉發數據包;
5.如果所有的2級子路由都不符合匹配條件,則判斷路由器當前執行的是有類路由行爲還是無類路由行爲?;
6.如果執行的是有類路由行爲,則會終止查找過程並丟棄數據包;
7.如果執行的是無類路由行爲,則繼續在路由表中搜索1級超網路由或默認路由以尋找匹配條目;
8.如果此時存在匹配位數相對較少的1級超網路由或默認路由,那麼路由器會使用該路由轉發數據包;
9.如果路由表中沒有匹配的路由,則路由器會丟棄數據包。
說明:上述步驟進行到第5步時,路由器執行的有類路由行爲或無類路由行爲會影響到路由表的查找。可以通過命令:“R1(config)#ip classless”來配置無類路由行爲,或通過命令:“R1(config)#no ip classless”來配置有類路由行爲。在IOS 11.3和以後版本中,默認啓用“ip classless”即執行無類路由查找。
注意:有類和無類路由行爲不同於有類和無類路由協議,有類和無類路由協議影響路由表的填充方式,而有類和無類路由行爲則確定在填充路由表後如何搜索路由表。
R2#show ip protocols //查看啓用的IP路由協議
R2#show ip eigrp neighbors //查看EIGRP鄰居信息
運行EIGRP路由協議的路由器不能建立鄰居關係的可能原因是:
1.EIGRP進程的AS號碼不同;
2.計算度量值的K值不同,修改K值命令:
R2(config-router)#metric weights tos K1 K2 K3 K4 K5
R2#show ip eigrp topology //查看EIGRP拓撲結構數據庫
術語:
可行距離(FD):到達一個目的網絡的最小度量值;
通告距離(AD):鄰居路由器所通告的它自己到達目的網絡的最小的度量值;
可行條件(FC):是EIGRP路由器更新路由表和拓撲表的依據,可行條件可以有效地阻止路由環路,實現路由的快
速收斂,可行條件的公式爲:FC = AD < FD。
後繼(S):是一個鄰居路由器,通過它到達目的網絡的路由最優;
可行後繼(FS):是一個鄰居路由器,但是通過它到達目的地的度量值比其它路由器高,而且它的通告距離小於
通過後繼路由器到達目的網絡的可行距離,即滿足FC,因而被保存在拓撲表中,用作備份路由。
R2#show ip eigrp interfaces //查看運行EIGRP路由協議的接口狀況
R2#show ip eigrp traffic //查看EIGRP發送和接收到的數據包的統計情況
R2#debug eigrp neighbors //動態地查看EIGRP鄰居關係的情況
在路由器R2上先將s0/0接口shutdown,然後再no shutdown,可以看到EIGRP鄰居建立的過程。
R2#debug eigrp packets //動態地顯示EIGRP發送和接收到的數據包
術語:
在EIGRP中,有如下5種類型的數據包。
Hello:以組播的方式定期發送,用於建立和維持鄰居關係。在大多數網絡中,每5s發送一次EIGRP Hello數據
包。在NBMA(非廣播多路訪問)網絡上,每60s發送一次Hello數據包。保持時間用於告訴路由器在宣告鄰居無
法到達前應等待設備發送下一個Hello的最長時間。默認情況下,保持時間是Hello間隔時間的3倍,即在大多
數網絡上爲15s,在低速NBMA網絡上則爲180s。保持時間截止後,EIGRP將宣告路由發生故障,而DUALL將通過
發出查詢來尋找新路徑。可以通過如下的命令修改Hello發送間隔和保持時間:
R1(config-if)#ip hello-interval eigrp 1 10 //設置EIGRP 1 的Hello數據包發送間隔爲10s
R1(config-if)#ip hold-time eigrp 1 30 //設置EIGRP 1 的保持時間爲30s
更新:當路由器收到某個鄰居路由器的第一個Hello包時,以單播傳送方式回送一個包含它所知道的路由信息的
更新包;當路由信息發生變化時,以組播方式發送只包含變化路由信息的更新包。
查詢:當一條鏈路失效,路由器重新進行路由計算,但在拓撲表中沒有可行的後繼路由時,路由器就以組播的方
式向它的鄰居發送一個查詢包,以詢問它們是否有一條到目的地的後繼路由器。
答覆:以單播的方式回傳給查詢方,對查詢數據包進行應答。
確認:以單播的方式傳送,用來確認更新、查詢和答覆數據包。
EIGRP負載均衡
命令:
R4(config-router)#variance 2
R4(config-if)#delay 2000
R4(config-if)#bandwidth 100000
R1(config)#router eigrp 1
R1(config-router)#network 172.16.12.0 0.0.0.255
R1(config-router)#network 172.16.14.0 0.0.0.255
R1(config-router)#no auto-summary
R2(config)#router eigrp 1
R2(config-router)#network 172.16.2.0 0.0.0.255
R2(config-router)#network 172.16.12.0 0.0.0.255
R2(config-router)#network 172.16.23.0 0.0.0.255
R2(config-router)#no auto-summary
R3(config)#router eigrp 1
R3(config-router)#network 172.16.23.0 0.0.0.255
R3(config-router)#network 172.16.34.0 0.0.0.255
R3(config-router)#no auto-summary
R4config)#router eigrp 1
R4config-router)#network 172.16.4.0 0.0.0.255
R4config-router)#network 172.16.14 0.0.0.255
R4config-router)#network 172.16.34 0.0.0.255
R4config-router)#no auto-summary
實驗調試
路由器R4到路由器R2的Loopback0網絡有兩條路徑,但是路由器會將FD最小的放入路由表,選擇走F1/0接口。
查看路由表:
查看拓撲表:
第二條路徑選擇S0/0接口的AD爲“2297856”,而最優路由(選擇F0/0接口)的FD爲“2300416”,AD < FD,滿足可行性條件 FC,所以第二條路徑(選擇S0/0接口)是最優路由(選擇F0/0接口)的可行後繼。
說明:如果不滿足FC條件的路由條目在拓撲表中是看不到的,可以通過如下命令看到:
R4#show ip eigrp topology all-links
非等價負載均衡:
R4(config)#router eigrp 1
R4(config-router)#variance 2
算法:FD(FS)/FD(S)取整 + 1,即要實現非等價負載均衡的路由的FD除以後繼路由的FD,得數取整數後加1。
例如: 2809856 ÷ 2300416 取整= 1,1 + 1 = 2。
以上輸出表明路由器R4到“172.16.2.0”網絡有兩條路徑可達,但是它們的度量值不同,這就是非等價負載均衡。兩條鏈路按照鏈路的度量值的倍數分配數據包實現負載均衡。即使路由表中有其它的非等價路徑的配置,如果只想選擇最佳的路由轉發數據包,可以進行如下配置:
R4(config-router)#traffic-share min across-interfaces
說明:只選擇最佳路由轉發需要關閉cef。
等價負載均衡:
根據EIGRP度量值計算公式,這兩條路徑的最小帶寬是相同的,只要他們的延遲之和相同,就能實現等價路由。
R4(config)#int f1/0
EIGRP路由彙總和EIGRP認證
命令:
R1(config)#key chain ccnp //配置鑰匙鏈
R1(config-keychain)#key 1 //配置KEY ID
R1(config-keychain-key)#key-string cisco //配置KEY ID的密匙
R1(config-if)#ip authentication mode eigrp 1 md5 //配置認證模式爲MD5
R1(config-if)#ip authentication key-chain eigrp 1 ccnp //在接口調用鑰匙鏈
R4(config-if)#ip summar-address eigrp 1 172.16.0.0 255.255.252.0 //配置彙總路由
R1(config)#key chain ccnp
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string cisco
R1(config)#int s0/0
R1(config-if)#ip authentication mode eigrp 1 md5
R1(config-if)#ip authentication key-chain eigrp 1 ccnp
R1(config)#router eigrp 1
R1(config-router)#network 172.16.12.0 0.0.0.255
R1(config-router)#no auto-summary
R2(config)#key chain ccnp
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string cisco
R2(config)#int s0/0
R2(config-if)#ip authentication mode eigrp 1 md5
R2(config-if)#ip authentication key-chain eigrp 1 ccnp
R2(config)#int s0/1
R2(config-if)#ip authentication mode eigrp 1 md5
R2(config-if)#ip authentication key-chain eigrp 1 ccnp
R2(config)#router eigrp 1
R2(config-router)#network 172.16.12.0 0.0.0.255
R2(config-router)#network 172.16.23.0 0.0.0.255
R2(config-router)#no auto-summary
R3(config)#key chain ccnp
R3(config-keychain)#key 1
R3(config-keychain-key)#key-string cisco
R3(config)#int s0/0
R3(config-if)#ip authentication mode eigrp 1 md5
R3(config-if)#ip authentication key-chain eigrp 1 ccnp
R3(config)#int s0/1
R3(config-if)#ip authentication mode eigrp 1 md5
R3(config-if)#ip authentication key-chain eigrp 1 ccnp
R3(config)#router eigrp 1
R3(config-router)#network 172.16.23.0 0.0.0.255
R3(config-router)#network 172.16.34.0 0.0.0.255
R3(config-router)#no auto-summary
R4(config)#key chain ccnp
R4(config-keychain)#key 1
R4(config-keychain-key)#key-string cisco
R4(config)#int s0/0
R4(config-if)#ip authentication mode eigrp 1 md5
R4(config-if)#ip authentication key-chain eigrp 1 ccnp
R4(config-if)#ip summar-address eigrp 1 172.16.0.0 255.255.252.0
R4(config)#router eigrp 1
R4(config-router)#network 172.16.0.0 0.0.3.255
R4(config-router)#network 172.16.34.0 0.0.0.255
R4(config-router)#no auto-summary
路由彙總調試
路由器R3上只收到了被總結的路由條目“172.16.0.0/22”,沒有收到明細路由。
說明:總結路由的度量值是學到的明細路由度量值中最小的。
注意:當總結的明細路由全部down掉以後,彙總路由才自動從路由表裏被刪除,從而可以有效避免路由抖動。
路由器R4執行手動彙總後,在自己路由表中產生了一條指向“Null0”的EIGRP路由,目的是爲了防止路由環路。
注意:EIGRP既支持路由彙總又支持CIDR彙總(這一點和RIPv2是不相同的)!
認證信息調試
調試在R2和R3之間串行鏈路的EIGRP認證信息。
R2認證配置正確,R3配置有誤,在R3上開啓debug命令:
R3#debug eigrp packets //抓取所有EIGRP數據包
默認路由再發布
R1(config)#router eigrp 1
R1(config-router)#network 172.16.12.0 0.0.0.255
R1(config-router)#no auto-summary
R2(config)#router eigrp 1
R2(config-router)#network 172.16.12.0 0.0.0.255
R2(config-router)#network 172.16.23.0 0.0.0.255
R2(config-router)#no auto-summary
R3(config)#router eigrp 1
R3(config-router)#network 172.16.23.0 0.0.0.255
R3(config-router)#no auto-summary
R4(config)#ip rotue 172.16.0.0 255.255.0.0 s0/0
再發布默認路由一:(本地:直連默認路由 C*,靜態默認路由 S*;其它:通告缺省默認路由 D*)
命令:
R3(config)#router eigrp 1
R3(config-router)#network 192.168.34.0 //通告要發佈的默認網絡
R3(config)#ip default-network 192.168.34.0 //指定本地的默認網絡,並再發佈默認路由
R3(config)#ip route 0.0.0.0 0.0.0.0 s0/0 192.168.34.4 //添加靜態默認路由
“ip default-network”命令說明:
①該命令後面的網絡必須被“network”進行通告,這點和RIP不同(RIP沒有要求);
②該命令後面的網絡一定要是主類網絡;
③該命令後面的主類網絡一定要在路由表中,即可以是直連的或者通過其它路由協議學習到的網絡。
1>可以通過“auto-summary”啓用自動彙總,或ip route 192.168.34.0 255.255.255.0 null 0來添加;
2>也可以通過ip route 192.168.34.0 255.255.255.0 s0/0或其它方法來添加。
實驗調試
查看R3、R2的路由表:
“default-information”控制“ip default-network”產生的默認路由的接收和發送
如果不想讓路由器R1和路由器R2接收到默認路由,可以通過命令:“default-information”來控制由
“ip default-network”產生的默認路由的接收和發送。
R3(config)#router eigrp 1
R3(config-router)#no default-information out //拒絕發送默認路由
R2(config)#router eigrp 1
R2(config-router)#no default-information in //拒絕接收默認路由
以上輸出表明路由器R2和R1沒有接收到帶“*”的默認路由,而只是接收到了EIGRP的普通路由條目
“D 192.168.34.0/24”,這是因爲在路由器R3使用了“network”命令通告了該網絡。此時在路由器R1和R2上是不能ping通路由器R4的環回接口地址的。
再發布靜態路由二:(本地:靜態默認路由 S*;其它:通告缺省默認外部路由 D*EX)
命令:
R3(config)#ip route 0.0.0.0 0.0.0.0 s0/0 192.168.34.4 //添加靜態默認路由
R3(config)#router eigrp 1
R3(config-router)#redistribute static //再發布添加的靜態默認路由
以上輸出表明通過再發布靜態默認路由也可以向EIGRP網絡注入默認路由,默認路由的表示方式是“0.0.0.0”,這一點和“ip default-network”命令產生的默認路由的表示方式是不一樣的。
說明:“D*EX”中的EX表示該路由是通過再發布進入EIGRP網絡的。