EIGRP前身是IGRP協議,由于IGRP協議存在諸多缺點,因此Cisco對其進行了“增強(Enhance)”,注意,EIGRP是Cisco私有的協議,即只能在Cisco的路由器上運行,諸如華為等廠商的路由器可能不支持該協議。
EIGRP的幾大特點:
EIGRP協議是無類別的路由協議。
EIGRP是高級的距離矢量協議。//這點要特別注意
核心算法是DUAL算法,形成無環路由。
支持等價和非等價的負載均衡。
支持自動及手工路由匯總。
支持多種網絡層協議(IP ,etc…);
[*1*].EIGRP特性與基本配置
EIGRP(Enhanced Interior Gateway Routing Protocol,增強型內部網關路由協議),是思科私有的,高級距離矢量、無類的路由選擇協議。
* EIGRP特性
復合度量值:使用帶寬(bandwidth)、負載(load)、延時(delay)、可靠性(reliability),默認只使用帶寬和延時做為度量值計算的參數。
快速收斂:使用DUAL算法,通過在拓撲表中保存可行性后繼,相當于次優路由,當可用路由消失后,次優路由馬上進入路由表。
100%無環路:主要受益于DUAL算法。
配置簡單。
可靠的更新:采用RTP(可靠傳輸協議),并為每個鄰居保存一個重傳列表。
建立鄰居關系:運行EIGRP的路由器中有三張表,路由表、鄰居表、拓撲表。
支持多種網絡協議。
支持VLSM和CIDR。
支持手動匯總,能關閉自動匯總。
使用組播地址224.0.0.10發送更新。
支持等價和非等價負載均衡。
兼容IGRP。
增量式更新:僅發送變化的路由信息。
路由標記功能:從IGRP何任何外部源收到的更新都標記成EX(外部)。
* EIGRP包格式
EIGRP被設計成一個傳輸層協議,協議號是88,EIGRP使用RTP(Reliable Transport Protocol,可靠傳輸協議)傳送和接收EIGRP分組
EIGRP的包格式如下圖:
數據鏈路層頭部:每個組播IP都有一個對應的MAC地址,組播廠商編碼為“01-00-5E”,后面的編號部分根據不同的組播IP計算得來,224.0.0.10對應的MAC地址是“01-00-5E-00-00-0A”。
* EIGRP分組類型
EIGRP使用5種分組類型:
1,Hello分組
Hello分組用來發現、驗證和重新發現鄰居路由器。默認的Hello分組發送間隔,除小于等于1.544Mb/s的多點幀中繼鏈路是60秒外,其他鏈路都是5秒。使用組播地址224.0.0.10發送,在鄰居表中包含一個“保持時間”字段,記錄了最后收到hello分組的時間,如果在保持時間到期前沒有收到鄰居路由器的任何Hello分組,就認為這個鄰居出現了故障,默認的保持時間是Hello時間的3倍,即15秒。EIGRP僅在宣告進EIGRP進程的接口的主IP地址上發送分組。
* EIGRP基本配置
下面使用一個實例演示EIGRP基本配置以及Hello分組的參數設置:
圖中,R1和R2使用串行線路和以太網線路相連,在R1上有兩個回環接口其中除Lo1(3.3.3.3)外,R1和R2的其他接口都宣告進EIGRP進程,自制系統號100(AS=100)。
(本文[1][2][3]部分使用此拓撲來介紹EIGRP配置)
R1配置:
1R1(config)#int s 0/0
2R1(config-if)#ip add 12.1.1.1 255.255.255.0
3R1(config-if)#no shut
4R1(config-if)#int fa 1/0
5R1(config-if)#ip add 21.1.1.1 255.255.255.0
6R1(config-if)#no shut
7R1(config-if)#int lo 0
8R1(config-if)#ip add 1.1.1.1 255.255.255.0
9R1(config-if)#no shut
10R1(config-if)#int lo 1
11R1(config-if)#ip add 3.3.3.3 255.255.255.0
12R1(config-if)#no shut
13R1(config-if)#router eigrp 100 /*EIGRP需要配置AS號*/
14R1(config-router)#net 1.1.1.0 0.0.0.255 /*宣告接口使用的是反掩碼形式*/
15R1(config-router)#net 12.1.1.0 0.0.0.255
16R1(config-router)#net 21.1.1.0 0.0.0.255
17R1(config-router)#end
18R1#
19
20/*
21 * router eigrp 100
22 * EIGRP進程需要配置AS號(自制系統號),這里的100就是AS號,
23 * AS標識了屬于一個互連網絡中的所有路由器,
24 * 同一個AS內的不同路由如果想要互相學習路由信息,必須配置相同的AS號。
25 *
26 * net 12.1.1.0 0.0.0.255
27 * 在EIGRP中宣告接口需要使用反掩碼,如果不輸入反掩碼,
28 * 路由默認會使用接口的主類網絡號,
29 * “net 12.1.1.0” 等價于 “net 12.0.0.0 0.255.255.255”
30 *
31 * 如果路由的所有接口都宣告進EIGRP進程,則可以使用“net 0.0.0.0”一次性宣告所有接口。
32 *
33 */
R2配置:
1R2(config)#int s 0/1
2R2(config-if)#ip add 12.1.1.2 255.255.255.0
3R2(config-if)#no shut
4R2(config-if)#int lo 0
5R2(config-if)#ip add 2.2.2.2 255.255.255.0
6R2(config-if)#no shut
7R2(config-if)#int fa 1/0
8R2(config-if)#ip add 21.1.1.2 255.255.255.0
9R2(config-if)#router eigrp 100 /*自制系統號和R1相同*/
10R2(config-router)#net 0.0.0.0 /*宣告所有接口接入EIGRP進程*/
11R2(config-router)#end
12R2#
* 查看和修改Hello分組發送間隔
配置完成后使用下面的命令查看Hello分組默認發送間隔:
1/*顯示R1的s0/0接口上EIGRP配置信息*/
2R1#show ip eigrp interfaces detail s0/0
3IP-EIGRP interfaces for process 100
4
5 Xmit Queue Mean Pacing Time Multicast Pending
6Interface Peers Un/Reliable SRTT Un/Reliable Flow Timer Routes
7Se0/0 1 0/0 37 0/15 163 0
8 Hello interval is 5 sec /*這里就是Hello分組發送間隔,默認5秒*/
9 Next xmit serial 《none》
10 Un/reliable mcasts: 0/0 Un/reliable ucasts: 1/3
11 Mcast exceptions: 0 CR packets: 0 ACKs suppressed: 3
12 Retransmissions sent: 0 Out-of-sequence rcvd: 1
13 Authentication mode is not set
14 Use unicast
15R1#
可以使用下面的命令修改Hello分組發送間隔:
1/*修改hello時間間隔為30秒*/
2R1(config)#int s 0/0
3R1(config-if)#ip hello-interval eigrp 100 30
4
5/*再次查看,發現hello時間變成30秒了*/
6R1#show ip eigrp interfaces detail s 0/0
7.。。。。
8 Hello interval is 30 sec
9.。。。。
10R1#
11
12/*這樣修改后,會遇到一個問題,因為默認的EIGRP保持時間是15秒,而R1發給R2的hello間隔卻被修改成了30秒,我們將看到路由上面反復的出現鄰居關系down掉后又建立的消息,*/
13*Mar 1 00:31:28.823: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.2 (Serial0/0) is down: Interface
14
15Goodbye received
16R1(config-if)#
17*Mar 1 00:31:33.739: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.2 (Serial0/0) is up: new adjacency
18
19/*解決的辦法是修改保持時間大于hello時間,一般修改成hello時間的3倍(90秒)*/
20R1(config-if)#ip hold-time eigrp 100 90
21R1(config-if)#end
22R1#
23
24/*修改后在R2上查看EIGRP鄰居表,可以看到R1發送過來的保持時間有是從90秒開始倒計時了*/
25R2#show ip eigrp neighbors
26IP-EIGRP neighbors for process 100
27H Address Interface Hold Uptime SRTT RTO Q Seq
28 (sec) (ms) Cnt Num
291 21.1.1.1 Fa1/0 70 00:01:07 1025 5000 0 9
300 12.1.1.1 Se0/1 70 00:01:07 58 348 0 7
31
32/*上面的Hold下面的70,代表已經收到hello分組20秒了,根據我們的改動再過10秒R2將再次收到R1發送過來的hello分組*/
在EIGRP中,鄰居的建立不需要有相同的hello時間和保持時間,而OSPF中必須要有相同的Hello時間和保持時間,否則鄰居關系建立將不會成功。
2,ACK(確認)分組
路由器在交換期間,使用確認分組來確認收到了EIGRP分組,確認分組單播發送。
3,Update(更新)分組
更新分組是可靠傳送的,需要被確認,當路由發現新鄰居或檢測到網絡拓撲發生變化時,使用更新分組。
4,Query(查詢)分組
當EIGRP路由器需要從一個或所有鄰居那里得到指定信息時,使用查詢分組。查詢分組也是可靠傳送的,需要被確認。
5,Reply(回復)分組
對鄰居的查詢信息進行單播回復,可靠傳送,需要被確認。
EIGRP分組對照表:
[*2*].EIGRP表
EIGRP中有三張表:鄰居表、路由表、拓撲表。
* 鄰居表(Neighbor Table)
兩臺相鄰路由器要建立起鄰接關系需要滿足兩個條件:
具有相同的AS號
具有相匹配的K值
可以通過下面的命令來查看EIGRP默認的K值:
1R1#show ip protocols
2Routing Protocol is “eigrp 100” /*AS=100*/
3 Outgoing update filter list for all interfaces is not set
4 Incoming update filter list for all interfaces is not set
5 Default networks flagged in outgoing updates
6 Default networks accepted from incoming updates
7 EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
8 EIGRP maximum hopcount 100
9 EIGRP maximum metric variance 1
10 Redistributing: eigrp 100
11 EIGRP NSF-aware route hold timer is 240s
12 Automatic network summarization is in effect
13 Automatic address summarization:
14 21.0.0.0/8 for Loopback0, Serial0/0
15 Summarizing with metric 28160
16 12.0.0.0/8 for Loopback0, FastEthernet1/0
17 Summarizing with metric 2169856
18 1.0.0.0/8 for FastEthernet1/0, Serial0/0
19 Summarizing with metric 128256
20 Maximum path: 4
21 Routing for Networks: /*本路由運行了EIGRP的接口*/
22 1.1.1.0/24
23 12.1.1.0/24
24 21.1.1.0/24
25 Routing Information Sources: /*從哪些源接收到了更新*/
26 Gateway Distance Last Update
27 (this router) 90 00:02:29
28 12.1.1.2 90 00:02:29
29 21.1.1.2 90 00:02:24
30 Distance: internal 90 external 170 /*內部管理距離和外部管理距離*/
31
32/*
33 * 從輸出可以看到自制系統號AS=100。
34 *
35 * Maximum path: 4 代表最大允許4條線路的負載均衡,
36 * 可以使用R1(config-router)#maximum-paths 16來修改成16條,或者其他數值
37 *
38 * 可以看到上面的輸出中有這么一行:
39 * EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
40 * 其中K1代表帶寬,K2代表負載,K3代表延時,K4和K5代表可靠性,
41 * 默認EIGRP只使用了帶寬和負載作為度量值計算參數。
42 *
43 */
可以使用下面的命令來修改K值:
“metric weights tos k1 k2 k3 k4 k5″
其中tos被用作服務質量區分服務等級,這里暫時用不到,0為不啟用,1為啟用。
1/*修改EIGRP K值,只使用帶寬作為度量值計算參數*/
2R1(config)#router eigrp 100
3R1(config-router)#metric weights 0 1 0 0 0 0
4
5/*修改后馬上看到了與鄰路由K值不匹配的消息*/
6*Mar 1 00:45:32.391: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.2 (Serial0/0) is down: K-value
7
8mismatch
9
10/*接著就發現與鄰居的鄰接關系down掉了*/
11*Mar 1 00:45:32.391: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 100: Neighbor 12.1.1.2 (Serial0/0) is down: K-value
12
13mismatch
14
15/*重新將K值改成默認的帶寬和延時有效的狀態*/
16R1(config-router)#metric weights 0 1 0 1 0 0
下圖是EIGRP建立鄰接關系的過程:
可以使用下面的命令查看鄰居表:
1R1#show ip eigrp neighbors
2IP-EIGRP neighbors for process 100
3H Address Interface Hold Uptime SRTT RTO Q Seq
4 (sec) (ms) Cnt Num
51 21.1.1.2 Fa1/0 11 00:04:50 52 312 0 9
60 12.1.1.2 Se0/0 10 00:04:50 59 354 0 10
7
8/*
9 * “H”表示鄰居被學到的先后順序,0是最先學到的鄰居。
10 * “Address”是鄰居路由接口IP。
11 * “Interface”是本地路由和這個鄰居相連的接口
12 * “Hold”是當前的保持時間,默認15秒,是一個遞減的數值。
13 * “Uptime”是鄰居進入鄰居表到當前經過了多長時間。
14 * 后面的參數在CCNA中暫時不討論。
15 */
* 路由表
使用下面的命令顯示R1的路由表:
1R1#show ip route
2Gateway of last resort is not set
3
4 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
5C 1.1.1.0/24 is directly connected, Loopback0
6D 1.0.0.0/8 is a summary, 00:06:49, Null0
7D 2.0.0.0/8 [90/156160] via 21.1.1.2, 00:06:49, FastEthernet1/0
8 3.0.0.0/24 is subnetted, 1 subnets
9C 3.3.3.0 is directly connected, Loopback1
10 21.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
11C 21.1.1.0/24 is directly connected, FastEthernet1/0
12D 21.0.0.0/8 is a summary, 00:06:51, Null0
13 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
14C 12.1.1.0/24 is directly connected, Serial0/0
15D 12.0.0.0/8 is a summary, 00:06:50, Null0
16R1#
17
18/*
19 *
20 * 路由表中的“D 1.0.0.0/8 is a summary, 01:40:23, Null0”,
21 * 是一條自動匯總產生的路由,EIGRP和RIP默認都在主網邊界自動匯總,
22 * 而不同的是EIGRP會在本地產生一條自動匯總后的路由,目標指向空接口(Null0)
23 * 發往空接口的數據會被丟棄。這可以有效的避免路由環路的產生。
24 *
25 * “D 2.0.0.0/8 [90/156160] via 21.1.1.2, 00:06:49, FastEthernet1/0
26 * 這是一條通過EIGRP學習到的最終路由,D代表是通過EIGRP學習到的,
27 * 可以看到R1上的2.2.2.2/24被匯總成了2.0.0.0/8發送過來,
28 * [90/156160]中的90是EIGRP默認的管理距離,后面是度量值。
29 * 從這條路由可以得知,去往2.0.0.0/8網絡的數據發往21.1.1.2,
30 * 從本地的FastEthernet1/0發出。
31 *
32 */
下面這個例子解釋了,為什么EIGRP要在本地產生一條去往空接口的匯總路由:
假設R1和R2都運行了RIP協議,R1和R2相連的串行線路屬于12.1.1.0/24網段,R1將自己回環接口lo0匯總成1.0.0.0/8發送給R2,并且在R1上有一條默認路由指向R2。此時,在R2上面有一個去往1.1.2.1的數據包,R2根據R1發過來的路由1.0.0.0/8匹配,將數據發給R1,R1上面只有默認路由可以匹配,它又將數據發回R2,這樣路由環路形成。
假設R1和R2都運行了EIGRP協議,R1和R2相連的串行線路屬于12.1.1.0/24網段,R1將自己回環接口lo0匯總成1.0.0.0/8發送給R2,并且在R1上有一條默認路由指向R2。此時,在R2上面有一個去往1.1.2.1的數據包,R2根據R1發過來的路由1.0.0.0/8匹配,將數據發給R1,R1發現路由表中有一條1.0.0.0/8的條目能夠匹配(子網掩碼最長匹配,這個條目比默認路由子網掩碼長,所以優先選取),所以最終R1將數據發往了空接口,即丟棄。有效的避免了路由環路的形成。
* 拓撲表
顯示拓撲表:
1/*顯示R1的拓撲表*/
2R1#show ip eigrp topology
3IP-EIGRP Topology Table for AS(100)/ID(3.3.3.3)
4
5Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
6 r - reply Status, s - sia Status
7
8P 1.0.0.0/8, 1 successors, FD is 128256
9 via Summary (128256/0), Null0
10P 1.1.1.0/24, 1 successors, FD is 128256
11 via Connected, Loopback0
12P 2.0.0.0/8, 1 successors, FD is 156160
13 via 21.1.1.2 (156160/128256), FastEthernet1/0
14 via 12.1.1.2 (2297856/128256), Serial0/0
15P 12.0.0.0/8, 1 successors, FD is 2169856
16 via Summary (2169856/0), Null0
17P 12.1.1.0/24, 1 successors, FD is 2169856
18 via Connected, Serial0/0
19P 21.0.0.0/8, 1 successors, FD is 28160
20 via Summary (28160/0), Null0
21P 21.1.1.0/24, 1 successors, FD is 28160
22 via Connected, FastEthernet1/0
23R1#
24
25/*
26 * 路由狀態:
27 * P 表示被動路由(Passive),即路由是穩定可用的,
28 * A 表示是活躍路由(Active),即路由正在使用DUAL重新計算中,不可用。
29 *
30 * 網絡目標: 2.0.0.0/8就是一個網絡目標。
31 *
32 * 后繼(Successor):到達遠程網絡的主要路由,對任何特定的路由可以有多達4條后繼路由。
33 * ”2.0.0.0/8, 1 successors“,代表去往2.0.0.0/8只有一條最佳路徑。
34 *
35 * 可行距離(FD,Feasible Distance):
36 * 是下一跳路由的報告距離和本路由到下一跳路由的距離之和,
37 * R1去往2.0.0.0/8的路徑有兩條,距離分別是156160和2297856,
38 * 最小距離156160成為可行距離,即從快速以太網接口到達R2。
39 *
40 * 路由來源:是指最初發布這條路由的路由器標識(via 12.1.1.2),
41 * 這個標識僅當路由是從其他EIGRP路由器學到時才填入。
42 *
43 * 報告距離(RD,Reported Distance):
44 * 報告距離是鄰路由報告的,到一個指定目標網絡的距離,
45 * “via 21.1.1.2 (156160/128256), FastEthernet1/0”
46 * 128256就是R2報告給R1達自己lo0接口的報告距離,
47 *
48 * 接收端口如”FastEthernet1/0“,是本路由從哪個接口可以到達目的地。
49 *
50 */
[*3*]。度量值的計算
EIGRP使用復合度量值計算到目的地址最佳路徑,復合度量值是帶寬、延時、可靠性和負載的組合。在K1、K2、K3、K4、K5都不
為0的前提下,復合度量值的計算公式:
1Metric=[K1*Bandwidth+(K2*Bandwidth)/(256-Load)+K3*Delay]*[K5/(Reliability+K4)]
K1影響的是帶寬(Bandwidth),K2影響的是負載(Load),K3影響的是延時(Delay),K4和K5影響的是可靠性(Reliability)。
默認情況下Cisco路由器只使用K1和K3來進行復合度量值的計算,所以公式可以簡化成:
1Metric=(10000M/源和目的之間最低鏈路帶寬+源和目的之間所有鏈路延時總和/10)*256
2
3/*
4 * 源和目的之間最低鏈路帶寬,單位是M。
5 * 源和目的之間所有鏈路延時總和,單位是微秒(usec)。
6 * 至于這里為什么要用延時總和除以10,
7 * 那是因為EIGRP度量值計算中是使用10微秒作為單位進行計算的。
8 */
下面舉個例子,計算一下R1到R2的lo0接口的復合度量值。注意,R1到R2的lo0接口的度量值,要使用R1去往R2 Lo0接口方向的出接口的帶寬和延時作為參數來計算:
1/*
2 * 查看R1的s 0/0接口參數
3 * 可以看到 BW帶寬等于1.544M,延時為20000微秒。
4 */
5R1#show interfaces s 0/0
6Serial0/0 is up, line protocol is up
7 Hardware is M4T
8 Internet address is 12.1.1.1/24
9 MTU 1500 bytes, BW 1544 Kbit, DLY 20000 usec,
10
11/*
12 * 查看R1的fa 1/0接口參數
13 * 可以看到 BW帶寬等于100M,延時為100微秒。
14 */
15R1#show interfaces fastEthernet 1/0
16FastEthernet1/0 is up, line protocol is up
17 Hardware is AmdFE, address is cc00.04b0.0010 (bia cc00.04b0.0010)
18 Internet address is 21.1.1.1/24
19 MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
20
21/*
22 * 再查看R2的Lo0接口的參數
23 * 帶寬為8000M,延時為5000微秒。
24 */
25R2#show int lo 0
26Loopback0 is up, line protocol is up
27 Hardware is Loopback
28 Internet address is 2.2.2.2/24
29 MTU 1514 bytes, BW 8000000 Kbit, DLY 5000 usec,
根據公式”Metric=(10000M/源和目的之間最低鏈路帶寬+源和目的之間所有鏈路延時總和/10)*256″,如果從s0/0去往R2 lo0,最低鏈路帶寬是1.544,延時總和是s0/0的延時+R2的lo0的延時=20000+5000,代入公式計算:
[10000/R1的s0/0接口帶寬(單位M)+(R1的s0/0接口延時+R2的lo0接口延時)/10]*256
[10000/1.544+(20000+5000)/10]*256
注意,這個公式的計算每部分都是取整的,比如:
10000/1.544≈6476 ,小數部分直接舍去,且不四舍五入。
(20000+5000)/10=2500
8976*256=2297856
如果從R1的fa1/0去往R2的lo0的度量值就是:
[10000/R1的fa1/0接口帶寬(單位M)+(R1的fa1/0接口延時+R2的lo0接口延時)/10]*256
[10000/100+(100+5000)/10]*256=156160
使用show ip eigrp topology看看結果是否相同:
1R1#show ip eigrp topology
2
3P 2.0.0.0/8, 1 successors, FD is 156160
4 via 21.1.1.2 (156160/128256), FastEthernet1/0
5 via 12.1.1.2 (2297856/128256), Serial0/0
6
7/*顯示的可行距離和自己計算的,完全相同*/
上面的輸出中報告距離128256,也可以使用公式計算出來:
[10000/R2的lo0接口帶寬(單位M)+(R2的lo0接口延時)/10]*256
[10000/8000+(5000)/10]*256=
10000/8000≈1 , 直接舍去小數位,且不四舍五入。
501*256=128256
計算中,除法出現小數都直接舍去小數部分,且不四舍五入。
如果此時我們更改R2的s0/1或R2的fa1/0帶寬,是不會影響R1上面去往R2的lo0接口的度量值的,因為R1去往R2的lo0接口的度量值計算是根據出接口,即R1的s0/0和f1/0以及R2的lo0接口的帶寬和延時作為參數來計算的,但是會影響R2到R1的lo0接口的度量值,可以使用下面的方法來驗證:
1/*沒有更改帶寬前,查看R2上去往R1的lo0接口的度量值*/
2R2#show ip eigrp topology
3
4P 1.0.0.0/8, 1 successors, FD is 156160
5 via 21.1.1.1 (156160/128256), FastEthernet1/0
6 via 12.1.1.1 (2297856/128256), Serial0/1
7
8/*下面我們更改R2的出接口s0/1的帶寬,看會不會改變2297856這個數值大小*/
9R2(config)#int s 0/1
10R2(config-if)#bandwidth 1000000 /*將帶寬改成1000M*/
11R2(config-if)#end
12
13/*查看一下,確實修改成功了*/
14R2#show interfaces s 0/1
15 MTU 1500 bytes, BW 1000000 Kbit, DLY 20000 usec,
16
17/*再看R2拓撲表*/
18R2#show ip eigrp topology
19
20P 1.0.0.0/8, 1 successors, FD is 156160
21 via 21.1.1.1 (156160/128256), FastEthernet1/0
22 via 12.1.1.1 (642560/128256), Serial0/1
23/*
24 * 可以看到,從s0/1去往1.0.0.0/8的度量值變成了642560,
25 * 可以用公式來驗證這個數值是更改后的1000M帶寬作為參數計算得到的。
26 */
可以通過下面的命令來查看某條路由的明細拓撲數據庫:
1R2#show ip eigrp topology 1.0.0.0
2IP-EIGRP (AS 100): Topology entry for 1.0.0.0/8
3 State is Passive, Query origin flag is 1, 1 Successor(s), FD is 156160
4 Routing Descriptor Blocks:
5 21.1.1.1 (FastEthernet1/0), from 21.1.1.1, Send flag is 0x0
6 Composite metric is (156160/128256), Route is Internal
7 Vector metric:
8 Minimum bandwidth is 100000 Kbit
9 Total delay is 5100 microseconds
10 Reliability is 255/255
11 Load is 1/255
12 Minimum MTU is 1500
13 Hop count is 1
14 12.1.1.1 (Serial0/1), from 12.1.1.1, Send flag is 0x0
15 Composite metric is (642560/128256), Route is Internal
16 Vector metric:
17 Minimum bandwidth is 1000000 Kbit /*這是我們剛才修改的帶寬*/
18 Total delay is 25000 microseconds
19 Reliability is 255/255
20 Load is 1/255
21 Minimum MTU is 1500
22 Hop count is 1
23R2#
[*4*].EIGRP高級配置
介紹EIGRP高級配置前,先介紹一下DUAL算法的相關術語:
Successor(后繼):后繼就是到目標網絡花費最少的路由。
FD(Feasible Distance,可行距離):到目標網絡的最小度量值。
RD(Reported Distance,報告距離)又稱AD(Advertised Distance,通告距離):下一跳路由器通告的到相同目標網絡的距離。
FS(Feasible Successor,可行后繼):可行后繼就是次優路徑。
FC(Feasibility Condition,可行條件):可行條件是報告距離必須小于可行距離,也就是鄰路由到目標網絡的距離必須小于本路由到目標網絡的距離。
能出現在”show ip eigrp topology”中的非可行距離路徑,都滿足可行條件,都是可行后繼。
下面這個例子中列出的拓撲表很好的解釋了上面這些概念:
1R2#show ip eigrp topology
2
3P 1.0.0.0/8, 1 successors, FD is 156160
4 via 21.1.1.1 (156160/128256), FastEthernet1/0
5 via 12.1.1.1 (2297856/128256), Serial0/1
6
7/*
8 * 在上面的拓撲表顯示中:
9 * R2去往1.0.0.0/8網絡有一條后繼”1 successors“,
10 * 可行距離是”FD is 156160“,
11 * 報告距離是”128256“,
12 * 可行后繼是”via 12.1.1.1 (2297856/128256), Serial0/1“
13 * 能出現在這個命令下的,都滿足可行條件。
14 */
* EIGRP非等值負載均衡
用下面這個實例來講解EIGRP非等值負載均衡的配置:
R1配置:
1R1(config)#no cdp run /*關閉CDP協議,否則在以太網會有不匹配提示*/
2R1(config)#int lo 0
3R1(config-if)#ip add 1.1.1.1 255.255.255.0
4R1(config-if)#no shut
5R1(config-if)#int s 0/0
6R1(config-if)#ip add 12.1.1.1 255.255.255.0
7R1(config-if)#no shut
8R1(config-if)#int fa 1/0
9R1(config-if)#ip add 13.1.1.1 255.255.255.0
10R1(config-if)#no shut
11R1(config-if)#router eigrp 100
12R1(config-router)#net 0.0.0.0
13R1(config-router)#end
14R1#
R2配置:
1R2(config)#int lo 0
2R2(config-if)#ip add 2.2.2.2 255.255.255.0
3R2(config-if)#no shut
4R2(config-if)#int s 0/1
5R2(config-if)#ip add 12.1.1.2 255.255.255.0
6R2(config-if)#no shut
7R2(config-if)#int s 0/0
8R2(config-if)#ip add 23.1.1.2 255.255.255.0
9R2(config-if)#no shut
10R2(config-if)#router eigrp 100
11R2(config-router)#net 0.0.0.0
12R2(config-router)#end
13R2#
R3配置:
1R3(config)#no cdp run
2R3(config)#int lo 0
3R3(config-if)#ip add 3.3.3.3 255.255.255.0
4R3(config-if)#no shut
5R3(config-if)#int s 0/1
6R3(config-if)#ip add 23.1.1.3 255.255.255.0
7R3(config-if)#no shut
8R3(config-if)#int fa 1/0
9R3(config-if)#ip add 13.1.1.3 255.255.255.0
10R3(config-if)#no shut
11R3(config-if)#router eigrp 100
12R3(config-router)#net 0.0.0.0
13R3(config-router)#end
14R3#
配置完成后查看R1路由表:
1R1#show ip route
2
3 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
4C 1.1.1.0/24 is directly connected, Loopback0
5D 1.0.0.0/8 is a summary, 00:07:03, Null0
6D 2.0.0.0/8 [90/2297856] via 12.1.1.2, 00:03:10, Serial0/0
7D 3.0.0.0/8 [90/156160] via 13.1.1.3, 00:03:10, FastEthernet1/0
8D 23.0.0.0/8 [90/2172416] via 13.1.1.3, 00:03:10, FastEthernet1/0
9 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
10C 12.1.1.0/24 is directly connected, Serial0/0
11D 12.0.0.0/8 is a summary, 00:05:02, Null0
12 13.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
13C 13.1.1.0/24 is directly connected, FastEthernet1/0
14D 13.0.0.0/8 is a summary, 00:07:04, Null0
15R1#
16
17/*注意,路由表中去往23.0.0.0/8的路徑只顯示了一條,而RIP則會顯示兩條,因為RIP僅僅通過跳數去判斷路徑的好壞,而EIGRP使用復合度量值,默認和帶寬和延時有關,前面已經說明。*/
實際上去往23.0.0.0/8的路徑還有一條可行后繼,即通過R1,可以通過查看R1上針對23.0.0.0/8的拓撲數據庫看到另外一條可行后繼:
1R1#show ip eigrp topology 23.0.0.0
2IP-EIGRP (AS 100): Topology entry for 23.0.0.0/8
3 State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2172416
4 Routing Descriptor Blocks:
5
6/*這一條是后繼路由*/
7 13.1.1.3 (FastEthernet1/0), from 13.1.1.3, Send flag is 0x0
8 Composite metric is (2172416/2169856), Route is Internal
9 Vector metric:
10 Minimum bandwidth is 1544 Kbit
11 Total delay is 20100 microseconds
12 Reliability is 255/255
13 Load is 1/255
14 Minimum MTU is 1500
15 Hop count is 1
16
17/*這一條是可行后繼*/
18 12.1.1.2 (Serial0/0), from 12.1.1.2, Send flag is 0x0
19 Composite metric is (2681856/2169856), Route is Internal
20 Vector metric:
21 Minimum bandwidth is 1544 Kbit
22 Total delay is 40000 microseconds
23 Reliability is 255/255
24 Load is 1/255
25 Minimum MTU is 1500
26 Hop count is 1
27R1#
可以使用下面的方法讓去往23.0.0.0/8的數據能夠很好的被分配到兩條線路上:
我們使用上面拓撲數據中最大的可行后繼的度量值(本例只有一個可行后繼度量值是2681856)除以后繼路徑的度量值(2172416),取不小于結果的整數:
2681856/2172416≈1.234 , 所以取值等于2作為不等價因子來配置非等值負載均衡:
1R1(config)#router eigrp 100
2R1(config-router)#variance 2 /*配置非等值負載均衡*/
3R1(config-router)#end
4R1#
5
6/*再次查看R1路由表,發現23.0.0.0/8出現了兩條路徑*/
7R1#show ip route
8
9 1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
10C 1.1.1.0/24 is directly connected, Loopback0
11D 1.0.0.0/8 is a summary, 00:00:42, Null0
12D 2.0.0.0/8 [90/2297856] via 12.1.1.2, 00:00:42, Serial0/0
13D 3.0.0.0/8 [90/156160] via 13.1.1.3, 00:00:42, FastEthernet1/0
14D 23.0.0.0/8 [90/2172416] via 13.1.1.3, 00:00:42, FastEthernet1/0
15 [90/2681856] via 12.1.1.2, 00:00:42, Serial0/0
16 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
17C 12.1.1.0/24 is directly connected, Serial0/0
18D 12.0.0.0/8 is a summary, 00:00:43, Null0
19 13.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
20C 13.1.1.0/24 is directly connected, FastEthernet1/0
21D 13.0.0.0/8 is a summary, 00:00:43, Null0
22R1#
這里用到的不等價因子2,代表度量值小于“可行距離*2”且報告距離小于可行距離的路徑可以進入路由表,可以使用下面的命令來驗證這一點:
1/*
2 * 這條命令可以顯示所有的路由鏈路,即使不滿足可行條件的也會顯示出來
3 * 可以看到2.0.0.0/8、3.0.0.0/8,
4 * 他們的第二條鏈路的度量值也小于”可行距離*2“,
5 * 但是這兩條鏈路不滿足可行條件,所以不能進入路由表。
6 */
7R1#show ip eigrp topology all-links
8
9P 1.0.0.0/8, 1 successors, FD is 128256, serno 6
10 via Summary (128256/0), Null0
11P 1.1.1.0/24, 1 successors, FD is 128256, serno 3
12 via Connected, Loopback0
13P 2.0.0.0/8, 1 successors, FD is 2297856, serno 10
14 via 12.1.1.2 (2297856/128256), Serial0/0
15 via 13.1.1.3 (2300416/2297856), FastEthernet1/0
16P 3.0.0.0/8, 1 successors, FD is 156160, serno 14
17 via 13.1.1.3 (156160/128256), FastEthernet1/0
18 via 12.1.1.2 (2809856/2297856), Serial0/0
19P 12.0.0.0/8, 1 successors, FD is 2169856, serno 8
20 via Summary (2169856/0), Null0
21P 12.1.1.0/24, 1 successors, FD is 2169856, serno 7
22 via Connected, Serial0/0
23P 13.0.0.0/8, 1 successors, FD is 28160, serno 5
24 via Summary (28160/0), Null0
25P 13.1.1.0/24, 1 successors, FD is 28160, serno 2
26 via Connected, FastEthernet1/0
27P 23.0.0.0/8, 1 successors, FD is 2172416, serno 13
28 via 13.1.1.3 (2172416/2169856), FastEthernet1/0
29 via 12.1.1.2 (2681856/2169856), Serial0/0
* EIGRP手動匯總
EIGRP和RIP一樣,默認在主類網絡的邊界自動匯總,我們來看下面這個實例:
R1配置:
1R1(config)#int lo 0
2R1(config-if)#ip add 12.1.2.1 255.255.255.128
3R1(config-if)#no shut
4R1(config-if)#int s 0/0
5R1(config-if)#ip add 12.1.1.1 255.255.255.0
6R1(config-if)#no shut
7R1(config-if)#router eigrp 100
8R1(config-router)#net 12.1.1.0 0.0.0.255
9R1(config-router)#net 12.1.2.0 0.0.0.127
10R1(config-router)#end
11R1#
R2配置:
1R2(config)#int lo 0
2R2(config-if)#ip add 2.2.0.1 255.255.255.0
3R2(config-if)#no shut
4R2(config-if)#int lo 1
5R2(config-if)#ip add 2.2.1.1 255.255.255.0
6R2(config-if)#no shut
7R2(config-if)#int s 0/1
8R2(config-if)#ip add 12.1.1.2 255.255.255.0
9R2(config-if)#no shut1
10R2(config-if)#router eigrp 100
11R2(config-router)#net 0.0.0.0
12R2(config-router)#end
13R2#
配置完成后分別查看R1和R2的路由表:
1/*
2 * 可以看到R1的路由表中2.0.0.0/8是R2匯總后發送過來的條目
3 * R2在將自己的Lo0和Lo1從s0/1向外發送的時候,
4 * 發現發送的接口s0/1的IP是12.1.1.2,默認的主類網絡是12.0.0.0/8,
5 * 這和Lo0和Lo1的默認主類網絡(2.0.0.0/8)不同,
6 * 所以R2在自己的s0/1自動匯總這兩條路由成2.0.0.0/8發送給R1。
7 */
8R1#show ip route
9
10D 2.0.0.0/8 [90/2297856] via 12.1.1.2, 00:00:53, Serial0/0
11 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
12C 12.1.1.0/24 is directly connected, Serial0/0
13C 12.1.2.0/25 is directly connected, Loopback0
14R1#
15
16/*
17 * 與RIP不同的是,EIGRP自動匯總后,會在本地產生一條指向空接口的匯總路由
18 *
19 * ”2.0.0.0/8 is a summary, 00:02:59, Null0“,
20 * 是Lo0和Lo1在本地s0/1匯總時產生的。
21 *
22 * ”12.0.0.0/8 is a summary, 00:02:59, Null0“,
23 * 是R2將自己的s0/1接口路由和從R2接收到的12.1.2.0/25,
24 * 從Lo0和Lo1發送出去時的匯總路由。
25 *
26 * ”12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:00:50, Serial0/1“
27 * 這一條從R1發過來的路由沒有被匯總的原因是,
28 * R1的發送接口s0/0(12.1.1.1)的默認主類網絡地址12.0.0.0/8,
29 * 和這條被發送的路由條目的默認主類網絡地址相同,
30 * 自動匯總只發生在主類網絡邊界。并且從這里可以看出EIGRP支持VLSM。
31 */
32R2#show ip route
33
34 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
35C 2.2.0.0/24 is directly connected, Loopback0
36C 2.2.1.0/24 is directly connected, Loopback1
37D 2.0.0.0/8 is a summary, 00:02:59, Null0
38 12.0.0.0/8 is variably subnetted, 3 subnets, 3 masks
39C 12.1.1.0/24 is directly connected, Serial0/1
40D 12.0.0.0/8 is a summary, 00:02:59, Null0
41D 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:00:50, Serial0/1
42R2#
關于上面的R2的路由表中“12.0.0.0/8 is a summary, 00:02:59, Null0”這條匯總條目是沒有必要的,因為是R2向自己的回環接口發送EIGEP分組的時候產生的匯總路由,可以使用下面的命令將回環接口設置成被動接口,即不發送分組,來減小路由表大小:
1/*將回環接口設置成被動接口*/
2R2(config)#router eigrp 100
3R2(config-router)#passive-interface lo 0
4R2(config-router)#passive-interface lo 1
5R2(config-router)#end
6
7/*再次查看R2的路由表,就看不到12.0.0.0/8的匯總路由了*/
8R2#show ip route
9
10 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
11C 2.2.0.0/24 is directly connected, Loopback0
12C 2.2.1.0/24 is directly connected, Loopback1
13D 2.0.0.0/8 is a summary, 00:18:02, Null0
14 12.0.0.0/8 is variably subnetted, 3 subnets, 3 masks
15C 12.1.1.0/24 is directly connected, Serial0/1
16D 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:15:53, Serial0/1
17R2#
接下來,關閉EIGRP的自動匯總,使用手動匯總:
1/*關閉R1的自動匯總*/
2R1(config)#router eigrp 100
3R1(config-router)#no auto-summary
4
5/*關閉R2的自動匯總*/
6R2(config)#router eigrp 100
7R2(config-router)#no auto-summary
8
9/*
10 * 關閉匯總后查看R1和R2的路由表
11 * R1上的2.0.0.0/8匯總路由變成了兩條明細路由,
12 * 所有的指向空接口的條目消失了
13 */
14R1#show ip route
15
16 2.0.0.0/24 is subnetted, 2 subnets
17D 2.2.0.0 [90/2297856] via 12.1.1.2, 00:00:06, Serial0/0
18D 2.2.1.0 [90/2297856] via 12.1.1.2, 00:00:06, Serial0/0
19 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
20C 12.1.1.0/24 is directly connected, Serial0/0
21C 12.1.2.0/25 is directly connected, Loopback0
22
23R2#show ip route
24
25 2.0.0.0/24 is subnetted, 2 subnets
26C 2.2.0.0 is directly connected, Loopback0
27C 2.2.1.0 is directly connected, Loopback1
28 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
29C 12.1.1.0/24 is directly connected, Serial0/1
30D 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:25:08, Serial0/1
31
32/*在R2上使用手動匯總將Lo0和Lo1匯總成一條*/
33R2(config)#int s 0/1 /*手動匯總是在主類網絡的邊界接口上配置的*/
34R2(config-if)#ip summary-address eigrp 100 2.2.0.0 255.255.254.0
35R2(config-if)#end
36R2#
37
38/*再次查看R1和R2的路由表*/
39R1#show ip route
40
41 2.0.0.0/23 is subnetted, 1 subnets /*匯總后發過來的條目*/
42D 2.2.0.0 [90/2297856] via 12.1.1.2, 00:01:32, Serial0/0
43 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
44C 12.1.1.0/24 is directly connected, Serial0/0
45C 12.1.2.0/25 is directly connected, Loopback0
46R1#
47
48/*手動匯總后R2上自動生成了一條匯總路由,指向空接口*/
49R2#show ip route
50
51 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
52C 2.2.0.0/24 is directly connected, Loopback0
53D 2.2.0.0/23 is a summary, 00:02:20, Null0
54C 2.2.1.0/24 is directly connected, Loopback1
55 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
56C 12.1.1.0/24 is directly connected, Serial0/1
57D 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:30:19, Serial0/1
58R2#
* EIGRP外部路由
接著上面的實驗,在R1上新增一個Loopback1,IP地址設置成1.1.1.1/24 :
1R1(config)#int lo 1
2R1(config-if)#ip add 1.1.1.1 255.255.255.0
3R1(config-if)#no shut
4R1(config-if)#end
5R1#
這個時候在R2上查看路由表,看不到R1的回環接口lo1的條目,這是因為前面配置的時候,并沒有使用net 0.0.0.0宣告全部的接口,這里要使用路由重發布技術,將R1的lo1接口發布進EIGRP,R1配置如下:
1R1(config)#router eigrp 100
2R1(config-router)#redistribute connected /*重發布直連路由*/
3R1(config-router)#end
4R1#
5
6/*
7 * 在R2上查看路由表,發現一條D EX開頭的條目,
8 * “D EX”表示這條路由條目是EIGRP外部路由,不是起源EIGRP內部,
9 * 可能是用重發布發布進EIGRP進程的,EIGRP外部路由默認管理距離是170。
10 */
11R2#show ip route
12
13 1.0.0.0/24 is subnetted, 1 subnets
14D EX 1.1.1.0 [170/2297856] via 12.1.1.1, 00:00:51, Serial0/1
15 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
16C 2.2.0.0/24 is directly connected, Loopback0
17D 2.2.0.0/23 is a summary, 00:13:00, Null0
18C 2.2.1.0/24 is directly connected, Loopback1
19 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
20C 12.1.1.0/24 is directly connected, Serial0/1
21D 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:40:59, Serial0/1
22R2#
23
24/*可以在拓撲表中看到這條外部路由的詳細信息*/
25R2#show ip eigrp topology 1.1.1.0/24
26IP-EIGRP (AS 100): Topology entry for 1.1.1.0/24
27 State is Passive, Query origin flag is 1, 1 Successor(s), FD is 2297856
28 Routing Descriptor Blocks:
29 12.1.1.1 (Serial0/1), from 12.1.1.1, Send flag is 0x0
30/*Route is External,這是一條外部路由*/
31 Composite metric is (2297856/128256), Route is External
32 Vector metric:
33 Minimum bandwidth is 1544 Kbit
34 Total delay is 25000 microseconds
35 Reliability is 255/255
36 Load is 1/255
37 Minimum MTU is 1500
38 Hop count is 1
39 External data:
40 Originating router is 12.1.2.1
41 AS number of route is 0
42/*External protocol is Connected,重發布的是外部直連路由*/
43 External protocol is Connected, external metric is 0
44 Administrator tag is 0 (0x00000000)
45R2#
* EIGRP重發布默認路由
可以使用相同的方法重發布一條外部默認路由,在R1上配置一條默認路由,然后再將這條默認路由使用靜態路由的形式重發布到EIGRP進程里:
1R1(config)#ip route 0.0.0.0 0.0.0.0 lo1 /*所有未知數據從lo1接口發出*/
2R1(config)#router eigrp 100
3R1(config-router)#redistribute static /*重發布靜態路由*/
4R1(config-router)#end
5R1#
6
7/*在R2上查看路由表,可以看到來自外部的默認路由”D*EX“*/
8R2#show ip route
9
10Gateway of last resort is 12.1.1.1 to network 0.0.0.0
11
12 1.0.0.0/24 is subnetted, 1 subnets
13D EX 1.1.1.0 [170/2297856] via 12.1.1.1, 00:15:54, Serial0/1
14 2.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
15C 2.2.0.0/24 is directly connected, Loopback0
16D 2.2.0.0/23 is a summary, 00:28:03, Null0
17C 2.2.1.0/24 is directly connected, Loopback1
18 12.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
19C 12.1.1.0/24 is directly connected, Serial0/1
20D 12.1.2.0/25 [90/2297856] via 12.1.1.1, 00:56:02, Serial0/1
21D*EX 0.0.0.0/0 [170/2297856] via 12.1.1.1, 00:00:05, Serial0/1
* EIGRP驗證
EIGRP配置驗證的模式和RIPv2協議一樣,在全局配置模式下創建密鑰鏈,在接口中調用密鑰鏈并且制定驗證模式,接著上面的實驗,在R1和R2之間,使用MD5驗證:
1/*R1配置驗證*/
2R1(config)#key chain ccnakey1 /*密鑰鏈標識ccnakey1,只具有本地意義*/
3R1(config-keychain)#key 1
4R1(config-keychain-key)#key-string eigrp123456 /*密鑰密碼,雙方需要相同*/
5R1(config-keychain-key)#int s 0/0 /*在和R2相連的接口上調用密鑰鏈,并指MD5加密。*/
6R1(config-if)#ip authentication key-chain eigrp 100 ccnakey1
7R1(config-if)#ip authentication mode eigrp 100 md5
8R1(config-if)#end
9R1#
10
11/*R2配置驗證*/
12R2(config)#key chain ccnakey2
13R2(config-keychain)#key 1
14R2(config-keychain-key)#key
15R2(config-keychain-key)#key-string eigrp123456
16R2(config-keychain-key)#int s 0/1
17R2(config-if)#ip authentication mode eigrp 100 md5
18R2(config-if)#ip authentication key-chain eigrp 100 ccnakey2
19R2(config-if)#end
20R2#
配置完成后,R1和R2鄰居關系將重新建立,并且能夠交互信息。大家可以將兩邊的密鑰密碼配置的不相同,看看它們可不可以交互信息。
* EIGRP性能調整
默認情況下EIGRP使用接口50%的帶寬來傳遞EIGRP信息,可以使用下面的命令來更改EIGRP默認的接口帶寬占用率:
1/*將R1的s0/0接口的EIGRP帶寬占用率調整成5%*/
2R1(config)#int s 0/0
3R1(config-if)#ip bandwidth-percent eigrp 100 5
-
EIGRP
+關注
關注
0文章
13瀏覽量
9100 -
eigrp協議
+關注
關注
0文章
3瀏覽量
1405 -
igrp協議
+關注
關注
0文章
1瀏覽量
1735
發布評論請先 登錄
相關推薦
評論