EIGRP 特性
EIGRP(增強內部閘道器路由協議)是思科的私有協議,屬於距離向量路由協議,但又具有鏈路狀態的特性。並且支援 VLSM(可變長子網和無類路由協議)。但在本質上說還是傳送路由條目。
具有如下的特性:
- EIGRP 收斂速度快,依靠 DUAL 演算法,無環路。EIGRP 能夠做到比鏈路狀態路由協議還要迅速的收斂,快速的響應拓撲變更。
- 支援多種網路層協議,如 IP,IPX,Apple Talk. 協議報文直接封裝在 IP 報文中,Protocol = 88,表示 ERGRP
- 使⽤AS的概念,AS基於接⼝定義,⼀臺EIGRP路由器可與屬於多個AS. 但在實際場景中,一般一臺裝置只屬於一個 AS.
- 支援組播和單播,組播地址 244.0.0.10
- 支援大型的網路,最大支援 255 跳,預設 100 跳。
- 支援等價和非等級負載分攤, 目前只有 EIGRP 能夠支援非等價的負載均衡。
- 頻寬佔用不超過本地鏈路的 50%
- 觸發更新,部分更新,邊界更新。只在鄰居剛剛建立時傳送一次完整更新,之後只傳送更新的內容。
- 支援認證
EIGRP 可靠傳輸的機制
EIGRP 可以實現可靠傳輸的機制:
通過思科私有演算法 RTP,來實現資料包的可靠傳送,該演算法又稱“可靠組播”。使用組播地址 224.0.0.10,每一個接受到可靠組播的資料包的鄰居都會傳送單播的資料包進行確認。
並且在組播傳送時,每個資料包都是有序列號。
進而通過序列號和ACK來保證可靠性。
EIGRP 報文及通訊過程
Hello 報文:不可靠傳輸,就是不用確認。發現鄰居,建立鄰居,維護(週期性傳送)組播傳送。
- 高速鏈路(大於 1.544 Mbps)每 5s 傳送一次,Hold 時間為 15 s.
- 低速鏈路(小於 1.544 Mbps):60s,180s
Update 報文:傳遞路由更新,單播或組播傳送,需要確認
-
單播:當路由器收到某個鄰居的第一個 HELLO 報文,以單播傳送自己已知路由資訊的 Update
-
組播:當路由資訊變化(路由增加或減少),以組播方式傳送只包含變化資訊的 Update
Query 報文:當路由失效後,且拓撲表沒有 FS 時。向鄰居傳送查詢,查詢可行後繼路由器。組播傳送。當沒有應答時,會觸發 SIA-Query 查詢。
Reply 報文:應答報文,單播傳送。對 Query 報文的應答。
ACK 報文:確認報文。用來確認 Update,Query,Reply 報文,單播傳送。
SIA-Query 報文:⽤於避免 SIA 超時導致鄰居關係重置⽽傳送的查詢報⽂,單播傳送
SIA-Reply:⽤於避免SIA超時導致鄰居關係重置⽽傳送的響應報⽂,單播傳送
當路由器傳送 Query 報文後,當 Active Timer 超過一半,會向鄰居傳送⼀個SIA Query報⽂。 如果鄰居正在進⾏DUAL計算,則會回覆⼀個SIA Reply
報⽂,此時Active Timer置0,重新計時,當計時器到⼀半時間後再次傳送SIA Query,如果反覆7次仍沒有計算成功,則在
第8次180秒到期後,重置鄰居關係。
總結一下通訊過程:
- 週期性的傳送組播 Hello 報文,建立鄰居關係。
- 建立鄰居後,傳送 Update 報文傳遞路由(注意單播和組播)
- 鄰居收到 Update 後,回覆 ACK 確認,並將最優路由加入到路由表。
- 當路由失效後,重新進行路由計算。
- 有 FS,直接使用 FS 的路由
- 沒有FS,傳送 Query 報文給鄰居,查詢可行後繼路由。
資料結構
鄰居表:和路由器建⽴鄰居關係的路由器
引數 | 解釋 |
---|---|
Address | 鄰居路由器的地址 |
H | 路由器所建⽴的鄰居的順序號 |
Interface | 本地到鄰居的接⼝ |
Hold time | 等待從鄰居收到訊息的時間 |
SRTT | 平均回程時間(Smooth Round-Trip Time),⼀個EIGRP報⽂傳送給鄰居後到本地路由器從鄰居收到確認報⽂所花費的時間。單位 ms。 |
RTO | 重傳超時(Retransmission Timeout,RTO),⼤概是SRTT的6倍,重新傳輸報⽂之前等待確認的時間,單位是ms |
Q cnt | 佇列計數,等待傳送的EIGRP報⽂數,如果這個數值持續⾼於0,說明⽹絡發⽣了擁塞 |
Seq Num | 從鄰居收到的最新的更新、查詢或應答資料包的序列號 |
在通過組播傳送資料包時,如果沒有從鄰居收到 Ack 確認,那麼這個資料包就會以單播⽅式被重新傳送給那個沒有響應的鄰
居,如果重傳16次還沒得到確認,這個鄰居就被宣佈⽆效。從組播⽅式切換到單播⽅式之前等待⼀個 Ack 時間由組播流計時器指定,後
續的單播之間的時間由重傳超時 RTO 指定。組播流計時器和重傳超時都通過SRTT來計算。
Router#show ip eigrp neighbor
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
2 14.1.1.2 Et0/2 11 00:30:16 9 100 0 5
1 13.1.1.2 Et0/1 11 00:31:13 9 100 0 15
0 12.1.1.2 Et0/0 11 00:32:08 6 100 0 8
拓撲表:包含路由器學習到達⽬的地的所有路由條⽬
引數 | 描述 |
---|---|
P:Passive | 表示⽹絡處於穩定狀態。是⼀種⽬前有正確的路由到達⽬的地的狀態。 當路由器失去了 S ⽽有⼀個 FS 時,或者再找到⼀個 FS 時, 該路由進⼊被動狀態,表明是⼀條可⽤路由。 |
A:Active | 表示當前⽹絡不可⽤,正處於傳送查詢狀態。 是⼀種正在搜尋 FS 的狀態,當路由器丟失了S,並且沒有FS可⽤時, 該路由進⼊活動狀態,是⼀條不可⽤的路由。當⼀條路由處於活動狀態時, 路由器向所有鄰居傳送查詢來尋找另外⼀條到達該⽬的地的路由。 |
U:Update | 表示⽹絡處於等待 Update 包確認的狀態 |
Q:Query | 表示⽹絡處於等待 Query 包確認的狀態 |
Reply Status | 送了Query,收到了Ack,等待 Reply |
SIA:Stuck-In-Active | 表示⽹絡持續處於 Active 狀態,說明 EIGRP ⽹絡收斂發⽣了問題 |
Router#show ip eigrp neighbor
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
2 14.1.1.2 Et0/2 11 00:30:58 9 100 0 5
1 13.1.1.2 Et0/1 12 00:31:55 9 100 0 15
0 12.1.1.2 Et0/0 12 00:32:50 6 100 0 8
路由表:最佳路徑的路由表
引數 | 描述 |
---|---|
D | 本⾃治系統⾥學到的路由 |
D EX | 通過自治系統外的路由引入到 EIGRP 中,但因為有可能出現環路,所以 AD 較低 |
Router#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
a - application route
+ - replicated route, % - next hop override, p - overrides from PfR
Gateway of last resort is not set
12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 12.1.1.0/24 is directly connected, Ethernet0/0
L 12.1.1.1/32 is directly connected, Ethernet0/0
13.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 13.1.1.0/24 is directly connected, Ethernet0/1
L 13.1.1.1/32 is directly connected, Ethernet0/1
14.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 14.1.1.0/24 is directly connected, Ethernet0/2
L 14.1.1.1/32 is directly connected, Ethernet0/2
25.0.0.0/24 is subnetted, 1 subnets
D 25.1.1.0 [90/332800] via 13.1.1.2, 00:15:43, Ethernet0/1
35.0.0.0/24 is subnetted, 1 subnets
D 35.1.1.0 [90/307200] via 13.1.1.2, 00:26:24, Ethernet0/1
45.0.0.0/24 is subnetted, 1 subnets
D 45.1.1.0 [90/307200] via 14.1.1.2, 00:15:29, Ethernet0/2
相關術語
FD:可⾏距離,到達⼀個⽬的地的最⼩度量值
AD/RD:通告距離/報告距離,鄰居路由器所通告的它⾃⼰到達某個⽬的地的最⼩度量值
FC:可⾏性條件,AD<FD,鄰居路由器到達⽬的地的度量值必須⼩於本地路由器達到⽬的地的度量值
Successor:後繼路由器,是⼀個直連的鄰居路由器,它滿⾜FC,通過它具有到達⽬的地的最⼩度量值,是去往⽬的地的下⼀跳
Feasible Successor:可⾏後繼路由器,是⼀個鄰居路由器,它滿⾜FC,當主路由不可⽤時,FS⽤來代替主路由,當做備⽤路由。
S:後繼路由器
滿足 FC,且 CD 最小的路由
FS:可行後繼路由器
滿足 FC,但 CD 比 S 要大的路由
AD(RD):通告距離/報告距離
上游路由器通告給本地路由器,到達一個目標網路的距離
FD:可行距離
進入被動狀態後,路由曾經擁有過的最小距離
CD:計算距離
本地路由器到達一個上游鄰居的距離加上該上游鄰居的 AD
FC(可行性條件)
FC 是 EIGRP 防止環路的重要引數,該條件為如果一條路由想要成為 FS,它的 AD 必須小於當前 FD。由於產生環路時,資料一定是經過了一定的路由器後又回到了某臺路由器,這時,該路由累加的開銷,一定會大於當前從這臺路由器到達目的網路的開銷。
路由選擇過程
假設預設 metric 為圖中的固定值,並且路由器剛啟動 FD 預設為無窮大
以 R1 為視角,從 1.0 到 2.0 網路選擇路由的過程:
router | AD(RD):自己到目標網路的距離 | CD: R1 到通告路由的距離 |
---|---|---|
R2 | 30 | 60 = 30 + 30 (R1 到 R2 ) |
--- | --- | --- |
R3 | 20 | 60 = 20 + 40 |
--- | --- | --- |
R4 | 15 | 35 = 20 + 15 |
-
首先由於 CD 最小的是 R4 ,故 S 為 R4.
-
由於 FD 無窮大 ,故 FS 為 R2,R3
-
此時 FD 為 35,同時發現 R3 的 RD 為 40,大於 FD 所以將 R3 到 2.0 網路的這條路刪除
通過這裡可以看到,其實並沒構成環路,所以 EIGRP 在消除環路時,也錯誤的隔離了一些正確的路徑
如之前所提到的,一旦 S 出現問題,FS 就會馬上替代
特殊情況一旦 FS 也變空,會將 FD 設為無限大
EIGRP 配置
# R1 開啟 EIGRP 程式1(注意,這個 1 是AS號,與 OSPF 不同,如果AS號不一致,EIGRP無法建立鄰居關係)
R1(config)# router eigrp 100
R1(config-router)# no au
R1(config-router)# network 14.1.1.1 0.0.0.0
R1(config-router)# network 15.1.1.1 0.0.0.0
R1(config-router)# network 13.1.1.1 0.0.0.0
# R2 , R3 ,R4 ,R5 同理
# 排錯命令
R1# show ip route
# 檢視有沒有建立鄰居關係
R1# show ip eigrp neighbor
R1# show ip protocol
# 檢視 EIGRP 拓撲表的摘要資訊
R1# show ip eigrp topology
Metric 計算
在路由器收到路由後,可能到達同一目的,有多條路由可以選擇。這時就需要將最優的路由條目更新到路由表中,而 Metric 越低則表明該路由更優秀。
在這裡,以 R1 的視角檢視下路由表的資訊:
Router#show ip route
12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 12.1.1.0/24 is directly connected, Ethernet0/0
L 12.1.1.1/32 is directly connected, Ethernet0/0
13.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 13.1.1.0/24 is directly connected, Ethernet0/1
L 13.1.1.1/32 is directly connected, Ethernet0/1
14.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 14.1.1.0/24 is directly connected, Serial1/0
L 14.1.1.1/32 is directly connected, Serial1/0
25.0.0.0/24 is subnetted, 1 subnets
D 25.1.1.0 [90/307200] via 12.1.1.2, 00:00:11, Ethernet0/0
35.0.0.0/24 is subnetted, 1 subnets
D 35.1.1.0 [90/307200] via 13.1.1.2, 00:00:11, Ethernet0/1
45.0.0.0/24 is subnetted, 1 subnets
D 45.1.1.0 [90/2221056] via 13.1.1.2, 00:00:11, Ethernet0/1
[90/2221056] via 12.1.1.2, 00:00:11, Ethernet0/0
可以發現去往 45 網路的下一跳介面為 R3 的 Ethernet0/0,並不是在距離看見來更短 R4 的 S1/0. 原因就在與經過計算後,走 R4 的 Metric 更大,因為所用介面為序列鏈路,相對於乙太網鏈路頻寬更小。那麼 EIGRP 在計算機時會考慮哪些引數呢?
ERGRP 在計算 Metric 時,會考慮如下的引數:
-
頻寬:路徑上沿途出站介面上的最小頻寬,單位為 kbit/s.
-
時延:路徑上沿途出站介面上的時延綜合,單位為 10 微秒。1000000μs = 1s,1000μs = 1ms。
Router#show interface e 0/0
Ethernet0/0 is up, line protocol is up
Hardware is AmdP2, address is aabb.cc00.5000 (bia aabb.cc00.5000)
Internet address is 25.1.1.2/24
MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec, => 頻寬為 10000 kbit/sec
Router#show interface s 1/0
Serial1/0 is up, line protocol is up
Hardware is M4T
Internet address is 45.1.1.2/24
MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec => 頻寬為 1544 kbit/sec
可手動修改頻寬和時延, 僅在計算 Metric 時有意義,並無法真正改變物理頻寬:
# modify bandwidth
Router(config-if)#bandwidth 10000
# modify delay,unit is 10 microseconds
Router(config-if)#delay 10 # actually delay is 100
-
可靠性:動態的度量引數,描述出錯率,最大值為 255,表示 100% 可靠。1 表示 1% 可靠。
-
負載:基於單位時間內傳送的包率,描述佔用率。1 表示最小負載。255 表示 100% 負載。
-
最大傳輸單元:不參與計算,但會記錄。最小 MTU.
計算公式,負載和可靠性,在人工配置後會參與計算:
但由於預設,K1, K3 等於 1,K2, K4, K5 等於 0. 所以公式可簡化為:
頻寬:路徑上沿途出站介面上的最小頻寬
時延:時延求和
這裡舉個例子。求 R1 通過 R4 到 R5 的 45 網路的 metric 值,途經兩個介面:
(10^7 / 1544 + 20000 * 2 / 10) * 256 = 2681856
# 可以看到計算的沒有問題
Router#show ip eigrp topology
P 45.1.1.0/24, 1 successors, FD is 2221056
P 45.1.1.0/24, 2 successors, FD is 2221056
via 12.1.1.2 (2221056/2195456), Ethernet0/0
via 13.1.1.2 (2221056/2195456), Ethernet0/1
via 14.1.1.2 (2681856/2169856), Serial1/0
負載均衡
等價負載:到達同一目的有多條路徑,且 Metric 一樣
# EIGRP中預設為4條,可通過命令修改,最⼤數量根據IOS版本不同⽽不同。
R1(config)#router eigrp 100
R1(config-router)#maximum-paths 32
非等價負載:到達同一目的有多條路徑,且 Metric 不同
# 通過設定 variance (差異變數)來進行非等價負載分擔,預設為 1,最大為 128
# 如果某條路由的 Metric 小於 FD * variance 的值,表示該路由可用。
R1(config)# router eigrp 100
R1(config-router)# variance 6
比如這裡如果想讓 R4 兩端介面的序列鏈路,可以作為非等價負載分攤的路由:
- 首先修改頻寬和時延,讓其計算出的值 AD 小於 FD 稱為後繼路由器
- 修改 variance 值,使其 metric 小於 FD * variance 的值
Traffic Share:
由於 Metric 值小的路由表示鏈路狀態更好,所以在負載均衡時希望 Metric 值小的路由傳輸更多的流量。
# 預設開啟
R1(config)#router eigrp 100
R1(config-router)#traffic-share balanced
當配置 traffic-share min across-interfaces
命令時,表示路由表中有多條路徑,流量也只通過最低成本的路徑傳送。
R1(config)#router eigrp 100
R1(config-router)#traffic-share min across-interfaces
Auto Summary
當路由器存在多個網路時,如果希望在傳輸路由時,將其彙總成一個大網段進行傳送,可以設定彙總。
有兩種方式:
-
自動彙總
- 只能將本地路由彙總,不會彙總鄰居的路由, 路由將被彙總為主類⽹絡,為防⽌路由遞迴,進⾏彙總的裝置會
⾃動產⽣⼀條指向 Null0 接⼝的路由。
- 只能將本地路由彙總,不會彙總鄰居的路由, 路由將被彙總為主類⽹絡,為防⽌路由遞迴,進⾏彙總的裝置會
-
手動彙總
-
⽀持本地以及鄰居傳遞過來的路由彙總。為防⽌路由遞迴,進⾏彙總的裝置會⾃動產⽣⼀條指向Null0接⼝的路由。
-
R2(config)#interface e0/1
R2(config-if)#ip summary-address eigrp 100 10.1.0.0 255.255.252.0
-
-
-
同時配置⾃動彙總和⼿⼯彙總,優先傳送⾃動彙總的路由。
開啟彙總後的裝置會自動產生一個 NULL 開頭的介面,用於防止環路。
看這樣一個場景,一般在公司內部都有一臺路由器和 ISP 連線,用於通過外網進行通訊,這裡以 R5 表示。
通常會在這臺路由器上配置一條預設路由將無法識別的報文,扔給 ISP 的介面。假設區域內的路由器執行 EIGRP 協議,則該預設路由會自動分發給其他的路由器進行學習。
此時假設 R1 的某個介面出現問題,丟失了一個網段。而此時路由器中是彙總後的網路段,依然會正常傳遞資料。
假設 R2 給 R1 傳輸資料,但原來 R1 網段已經 down,所以它也無法處理,正常來說該資料包就會被丟棄了。
但由於預設路由的存在,又會將該資料包扔給 R2,此時 R2 收到又會將資料包傳給 R1,形成環路。
為了解決這個問題,會增加一個網段是彙總網段 NULL0 介面,在匹配預設路由前,會先匹配 NULL0,匹配成功後把該資料包丟棄。
配置
在 R1 路由器上增加多個網路,開啟彙總:
自動彙總
# R1 增加四個網路,並宣告
Router#show ip route
10.0.0.0/8 is variably subnetted, 8 subnets, 2 masks
C 10.1.0.0/24 is directly connected, Loopback0
L 10.1.0.1/32 is directly connected, Loopback0
C 10.2.0.0/24 is directly connected, Loopback1
L 10.2.0.1/32 is directly connected, Loopback1
C 10.3.0.0/24 is directly connected, Loopback2
L 10.3.0.1/32 is directly connected, Loopback2
C 10.4.0.0/24 is directly connected, Loopback3
L 10.4.0.1/32 is directly connected, Loopback3
Router(config)#router eigrp 100
Router(config-router)#network 10.0.0.0 0.255.255.255
# 在 R5 檢視,增加對應的網段
Router5#show ip route
10.0.0.0/8 is variably subnetted, 9 subnets, 3 masks
D 10.0.0.0/8 is a summary, 00:03:30, Null0
C 10.1.0.0/24 is directly connected, Loopback0
L 10.1.0.1/32 is directly connected, Loopback0
C 10.2.0.0/24 is directly connected, Loopback1
L 10.2.0.1/32 is directly connected, Loopback1
C 10.3.0.0/24 is directly connected, Loopback2
L 10.3.0.1/32 is directly connected, Loopback2
C 10.4.0.0/24 is directly connected, Loopback3
L 10.4.0.1/32 is directly connected, Loopback3
12.0.0.0/8 is variably subnetted, 3 subnets, 3 masks
D 12.0.0.0/8 is a summary, 00:03:30, Null0
C 12.1.1.0/24 is directly connected, Ethernet0/0
L 12.1.1.1/32 is directly connected, Ethernet0/0
13.0.0.0/8 is variably subnetted, 3 subnets, 3 masks
D 13.0.0.0/8 is a summary, 00:03:30, Null0
C 13.1.1.0/24 is directly connected, Ethernet0/1
L 13.1.1.1/32 is directly connected, Ethernet0/1
14.0.0.0/8 is variably subnetted, 3 subnets, 3 masks
D 14.0.0.0/8 is a summary, 00:03:30, Null0
C 14.1.1.0/24 is directly connected, Serial1/0
L 14.1.1.1/32 is directly connected, Serial1/0
25.0.0.0/24 is subnetted, 1 subnets
D 25.1.1.0 [90/307200] via 12.1.1.2, 03:46:59, Ethernet0/0
35.0.0.0/24 is subnetted, 1 subnets
D 35.1.1.0 [90/307200] via 13.1.1.2, 03:46:59, Ethernet0/1
45.0.0.0/24 is subnetted, 1 subnets
D 45.1.1.0 [90/2221056] via 13.1.1.2, 03:46:59, Ethernet0/1
[90/2221056] via 12.1.1.2, 03:46:59, Ethernet0/0
# 在 R1 開啟自動彙總
R1(config)#router eigrp 100
R1(config-router)# auto-summary
# 在 R5 上再次檢視,可以看到彙總成 10.0.0.0/8 的大網路
Router#show ip route
10.0.0.0/8 is subnetted, 1 subnets
D 10.0.0.0 [90/435200] via 35.1.1.1, 00:00:25, Ethernet0/1
[90/435200] via 25.1.1.1, 00:00:25, Ethernet0/0
12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
手動彙總:
Router(config-router)#no auto-summary
# 手動彙總支援本地和鄰居的路由
# 在 R2 上手動彙總
Router(config-if)#ip summary-address eigrp 1 10.1.0.0 255.252.0.0
# 在 R5 上檢視
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
D 10.0.0.0/14 [90/486400] via 35.1.1.1, 00:00:34, Ethernet0/1
D 10.1.0.0/24 [90/435200] via 35.1.1.1, 00:06:32, Ethernet0/1
[90/435200] via 25.1.1.1, 00:06:32, Ethernet0/0
D 10.2.0.0/24 [90/435200] via 35.1.1.1, 00:06:32, Ethernet0/1
[90/435200] via 25.1.1.1, 00:06:32, Ethernet0/0
D 10.3.0.0/24 [90/435200] via 35.1.1.1, 00:06:32, Ethernet0/1
[90/435200] via 25.1.1.1, 00:06:32, Ethernet0/0
D 10.4.0.0/24 [90/435200] via 35.1.1.1, 00:06:32, Ethernet0/1
[90/435200] via 25.1.1.1, 00:06:32, Ethernet0/0
被動介面
路由器的某個介面會與交換機建立連線,而交換機通過會下掛多臺 PC. 由於在路由器上執行如 EIGRP 類似的協議,會週期性的傳送 Hello 報文,這些報文會通過交換機傳送給 PC,但這些報文對於交換機和 PC 來說,並沒有意義,反而會佔用頻寬,所以可將和交換機連線的埠設定成被動介面。
當不希望從某個接⼝向外傳送路由更新時,可以將該接⼝配置為被動接⼝,配置以後,被動接⼝將不接收、不傳送任何EIGRP報⽂。
R1(config)#router eigrp 100
R1(config-router)#passive-interface e0/0
預設路由注入
如之前的 R5 所示,通常和 ISP 相連,用於將自己不知道的網段傳送給 ISP 在外網上傳輸。所以就需要將 R5 配置的預設路由引入到其他路由器中。
路由重分佈
# 在AS的邊界路由器上配置預設路由,再將此預設路由重分佈到EIGRP域內。
R5(config)#ip route 0.0.0.0 0.0.0.0 56.1.1.6
R5(config)#router eigrp 100
R5(config-router)#redistribute static
手動彙總進行下發
在AS的邊界路由器連線內⽹的接⼝,通過⼿⼯路由彙總實現預設路由下放。
R5(config)#interface e0/0
R5(config-if)#ip summary-address eigrp 100 0.0.0.0 0.0.0.0
認證
EIGRP協議能夠配置認證來驗證鄰居/訊息的合法性,EIGRP 僅⽀持 MD5 加密認證,也是 EIGRP 協議唯⼀⽀持的認證⽅式。
區分加密和認證:
加密:通過如 DES,3DES 等演算法加密後生成一段密文
認證:對資料完整性進行檢查有沒有被篡改
配置:
# 建立鑰匙鏈
R1(config)#key chain test
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string cisco
# 接⼝下開啟認證並調⽤鑰匙鏈
R1(config)#interface e0/0
R1(config-if)#ip authentication mode eigrp 100 md5
R1(config-if)#ip authentication key-chain eigrp 100 test
EIGRP Stub
為了減少⽹絡不穩定的⻛險,抑制某些裝置查詢報⽂過多,引起“卡在活動狀態”的情形發⽣,可以將某些裝置配置為Stub路由器
看如下的場景:
這裡假設在 R1,R3 和 R5 之間已經建立了 EIGRP 的鄰居關係後,突然 R1 到 R3 的網路不可用,而此時沒有 FS (後繼路由器),所以 R3 就會給 R5 傳送 Query 訊息,獲取後繼路由器。
但這時 R5 並沒給出回覆,R3 一直等待,但 R1 和 R3 之間的網路突然有恢復了,但此時 R3 到 R1 的拓撲表中依然是 Active 狀態。也是是說,即使⽹絡恢復了,也依然不 Passive 穩定的狀態。
為了解決這樣的問題,通常會在末節路由器(即邊緣裝置)配置成 Stub 裝置。
Stub 的特性:
- ⼀臺具有EIGRP Stub鄰居的路由器,將不會向它的 Stub 鄰居傳送查詢。
- 查詢也沒有意義,因為在邊緣
- 配置為Stub的路由器與⾮Stub路由器鄰居關係不受影響,隻影響路由的傳遞。
- 配置為Stub路由器後,預設只傳送本地路由和彙總路由。
配置:
R1(config)#router eigrp 100
# 隱含了connected summary, 也就是說預設傳送 connected 和 summary 路由
R1(config-router)#eigrp stub
Router#show running-config | s router
router eigrp 1
network 12.1.1.0 0.0.0.255
network 13.1.1.0 0.0.0.255
network 14.1.1.0 0.0.0.255
eigrp stub connected summary
# 如果想要開啟 stub 的裝置傳遞靜態路由
Router(config-router)#eigrp stub redistributed
# 如果想要開啟直連,彙總,重分佈需要一起
Router(config-router)#eigrp stub summary connected redistributed
# 檢視 stub 鄰居
R3# show ip eigrp neighbor detail
Router#show ip eigrp neighbor detail
EIGRP-IPv4 Neighbors for AS(1)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
1 13.1.1.1 Et0/0 13 00:02:07 15 100 0 32
Version 23.0/2.0, Retrans: 0, Retries: 0, Prefixes: 2
Topology-ids from peer - 0
Topologies advertised to peer: base
Stub Peer Advertising (CONNECTED SUMMARY ) Routes
Suppressing queries
0 35.1.1.2 Et0/1 12 02:15:20 272 1632 0 33
Version 23.0/2.0, Retrans: 1, Retries: 0, Prefixes: 3
Topology-ids from peer - 0
Topologies advertised to peer: base
命名 EIGRP
在某些較新的IOS版本⽀持命名EIGRP配置,名字區分⼤⼩寫。
相⽐較傳統EIGPR配置,命名版有以下優點:
- 所有配置在⼀個地⽅完成
- IPv4、IPv6版本的 EIGRP 配置統⼀,向後相容
- ⽀持⾼速鏈路(更寬範圍的Metric)
新的 Metric 計算方式
(K1 × Bandwidth + K2 × Bandwidth / (256 - load) + K3 × delay + K6 × Extended Attributes) × K5 / (Reliability+K4) × 65536
係數 K1-K6 是可配置的加權值,預設值為:K1=K3=1,K2=K4=K5=K6=0
公式簡化:
(K1 × Bandwidth + K2 × Bandwidth / (256 - load) + K3 × delay) × 65536 =
(Bandwidth + delay) × 65536 EIGRP_Bandwidth = 10^7 / min_Bandwidth
EIGRP_Dealy = Sum(Link_Delay / 10000000)
命名EIGRP延遲單位為⽪秒(Picosecond),1000000ps=1μ
配置
地址族下配置, 為了適應多個 IP 版本:
R1(config)#router eigrp cisco
R1(config-router)#address-family ipv4 unicast autonomous-system 100
R1(config-router-af)#network 12.1.1.1 0.0.0.0
R1(config-router-af)#network 13.1.1.1 0.0.0.0
R1(config-router-af)#network 14.1.1.1 0.0.0.0
R1(config-router-af)#eigrp stub connected summary
地址族接⼝配置模式:
R1(config-router-af)#af-interface e0/0
R1(config-router-af-interface)#summary-address 10.1.0.0 255.255.252.0
R1(config-router-af-interface)#authentication mode md5
R1(config-router-af-interface)#authentication key-chain cisco
R1(config-router-af-interface)#exit
R1(config-router-af)#af-interface loopback 0
R1(config-router-af-interface)#passive-interface
R1(config-router-af-interface)#exit
地址族拓撲庫配置模式:
R1(config-router-af)#topology base
R1(config-router-af-topology)#variance 6
R1(config-router-af-topology)#exit
可以發現由之前的分開配置,變成現在的全在 #address-family ipv4 unicast autonomous-system 100
下進行配置。
IPV6 EIGRP 配置
EIGRP for IPv6和IPv4在原理上沒有區別:
同樣使⽤DUAL演算法,有鄰居的機制,⽀持認證,⽀持彙總,採⽤組播更新、觸發更新、部分更新。
配置區別
- EIGRP for IPv6 需要⼀個Router ID(如果沒有IPv4地址,需要⼿⼯配置RID),用來唯一標識路由器
- 在 IPv4 沒有配置,會自動生成
- 有環回介面,則使用最大 IP
- 沒有換回介面,使用物理介面最大 IP
- EIGRP for IPv6的程式是關閉的,需要⼿⼯開啟(no shutdown)
- EIGRP可直接在接⼝上配置,接⼝上可以沒有 IPv6 全域性單播地址,依靠 Link-Local 地址建⽴鄰居,稱為Eigrp for IPv6⽆⽹絡狀態
配置
配置⽅法⼀:程式及接⼝下配置
# 開啟 IPV6 功能
R5(config)#ipv6 unicast-routing
R5(config)#interface e0/2
# 開啟 IPV6 功能
R5(config-if)#ipv6 enable
R5(config-if)#ipv6 address 2000::5/64
R5(config-if)#no shutdown
# IPV6 EIGRP 配置
R5(config)#ipv6 router eigrp 100
R5(config-rtr)#eigrp router-id 5.5.5.5
# 開啟 eigrp 程式,預設關閉,手動開啟
R5(config-rtr)#no shutdown
# 應用 ERGRP 配置到介面上
R5(config)#interface e0/2
R5(config-if)#ipv6 eigrp 100
R5(config-if)#exit
# 應用 ERGRP 配置到介面上
R5(config)#interface loopback 10
# 開啟 IPV6 功能
R5(config-if)#ipv6 enable
R5(config-if)#ipv6 address 3005::5/64
R5(config-if)#ipv6 eigrp 100
配置⽅法⼆:命名EIGRP配置
R5(config)# router eigrp cisco
R5(config-router)#address-family ipv6 unicast autonomous-system 100
# 如果沒有環回介面,則需要指定一個 router-id
R5(config-rtr)#eigrp router-id 5.5.5.5
# 預設所有接⼝開啟EIGRP,不需要則⼿⼯關閉。只要介面下開啟 IPV6 enable,就會自動學習鄰居地址
R5(config-router-af)#af-interface e0/0
R5(config-router-af-interface)#shutdown
EIGRP 排錯
-
測試直連連通性(ping)
-
檢視鄰居表是否有鄰居(show ip eigrp neighbors)
- 接⼝是正常雙 up(show ip interface brief)
- AS 號碼是否匹配(show ip protocols)
- 是否配置了被動接⼝(show ip protocols)
- K 值是否匹配(show ip protocols)
- 認證金鑰是否相同(show run interface x)(show key chain)
-
檢視是否有需要的路由(show ip route)
- 對應⽹絡的接⼝是否通告(show run | s eigrp)
- 是否配置了ACL(show ip access-lists)(show ip interface x)
- 是否有⽹絡不連續問題(show run | s eigrp)