拓扑
路由器A和路由器B之间有3条链路(两条FastEthnet和一条Serial),两台路由器都启用EIGRP并在同一自治系统90内,为了让中间3条线路不会挤成一堆,中间用了两台交换机来连接两条线路(不影响实验结果)。
环境
GNS3
配置
接口IP配置(略)
EIGRP宣告
A#show running-config | section eigrp
router eigrp 90
network 172.16.0.0
network 192.168.1.0
auto-summary
eigrp router-id 1.1.1.1
B#show running-config | section eigrp
router eigrp 90
network 172.16.0.0
network 192.168.2.0
auto-summary
eigrp router-id 2.2.2.2
路由器B此时已经和A建立了3组邻居关系
B#show ip eigrp neighbors
IP-EIGRP neighbors for process 90
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
2 172.16.22.1 Se0/2 14 02:05:32 67 402 0 17
1 172.16.33.1 Fa3/0 14 02:05:35 70 420 0 19
0 172.16.11.1 Fa1/0 11 02:05:35 71 426 0 18
但是路由器B中填充进路由表的只有如下面高亮所示3条路径中的两条。这是为什么呢?这就涉及到了EIGRP中的选路问题了。
B#show ip route eigrp
172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
D 172.16.0.0/16 is a summary, 02:06:17, Null0
D 192.168.1.0/24 [90/156160] via 172.16.33.1, 02:06:31, FastEthernet3/0
[90/156160] via 172.16.11.1, 02:06:31, FastEthernet1/0
EIGRP选路
首先EIGRP采用DUAL(弥散更新算法)来计算到达目标网络的最优无环路径。选路时会用到一些术语,下面简单介绍一下这些术语:
AD(Announce Distance):通告距离,也叫RD(Reoprt Distance)报告距离,AD是EIGRP邻居路由器到达目标网络的度量值,也就是下一跳路由器到达目标网络的最佳度量值。
FD(Feasible Distance):可行距离,是当前路由器前往目标网络的度量值,它是从EIGRP邻居获悉的AD和它自己到达邻居的度量值之和。
Successor:后继站,针对本地路由器而言,具有最低开销的下一跳。
FS(Feasible Successor):可行后继站,针对本路由器而言,具有次优开销的下一跳。(可以有多个FS)
FC(Feasible Condition):可行条件,AD
我们针对本次的实验环境分析一下这几个术语:
A#show ip eigrp topology
IP-EIGRP Topology Table for AS(90)/ID(1.1.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 192.168.1.0/24, 1 successors, FD is 128256
via Connected, Loopback1
P 192.168.2.0/24, 2 successors, FD is 156160
via 172.16.11.2 (156160/128256), FastEthernet1/0
via 172.16.33.2 (156160/128256), FastEthernet3/0
via 172.16.22.2 (2297856/128256), Serial0/2
P 172.16.33.0/30, 1 successors, FD is 28160
via Connected, FastEthernet3/0
P 172.16.22.0/30, 1 successors, FD is 2169856
via Connected, Serial0/2
P 172.16.11.0/30, 1 successors, FD is 28160
via Connected, FastEthernet1/0
P 172.16.0.0/16, 1 successors, FD is 28160
via Summary (28160/0), Null0
对于路由器A上面***高亮部分的192.168.2.0/24这条路由而言 172.16.11.2(F1/0)和172.16.33.2(F3/0)都是Successor(后继站),对于172.16.22.2(S0/2)其AD=128256,小于当前FD=156160所以满足FC可以作为FC(可行条件)。如果不满足的话将不会出现在show ip eigrp topology中但是会出现在show ip eigrp topology all-links中。
选出的所有successor将会被提交到路由表中,下面验证一下:
A#show ip route eigrp
172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
D 172.16.0.0/16 is a summary, 03:26:57, Null0
D 192.168.2.0/24 [90/156160] via 172.16.33.2, 03:26:17, FastEthernet3/0
[90/156160] via 172.16.11.2, 03:26:17, FastEthernet1/0
再来看一个实例
上图中路由器D把身后的路由条目传给路由器A有两条路径:
路径1:D-->C-->A,FD=5+10+2=17
路径2:D-->B-->A,FD=5+5+3=13
上面的两条路径中,最小的FD是13。
第一条路径的AD是C报告的AD=5+10=15,15>13。这条路径不满足FC(Feasible Condition),所以不能成为FS(Feasible Successor)。
第二条路径的AD是B报告的AD=5+5=10,10<13。这条路径满足FS(Feasible Condition),所以能成为FS(Feasible Successor)。
上面的15610/128256等参数是怎么算出来的呢?EIGRP通过一个复合开销来计算最优路由,计算时会用到5如下个参数:Bandwidth(带宽)
Delay(延迟)
Reliability(可靠性)
Loading(负载)
MTU(最大传输单元)
计算时会用到开销权重(K值,K1,K2,K3,K4,K5)来决定在开销计算中哪些K值会被代入参与计算。这5个K值可以在查看路由协议的时候看到,如下:
A#show ip protocol
Routing Protocol is "eigrp 90"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Default networks flagged in outgoing updates
Default networks accepted from incoming updates
EIGRP metric weight K1=1, K2=0, K3=1, K4=0, K5=0
有人会问,上面提到的带宽,延迟,可靠性,负载,MTU5个参数是否就对应这5个K值啊?
答案是No!请看下面计算公式:
Metric=【K1*BW+{(K2*BW)/(256 - Load)}+(K3*Delay)】*256
由于默认情况下:K1=K3=1;K2=K4=K5=0。所以上面的公式就简化成如下:
Metric=(BW+Delay)*256,其中BW=10的7次方除以沿途最小带宽(kbps);Delay=沿途路由入向接口Delay(10us)之和。
上面公式中如果K5=1的话,则还有计算一步:
Metric=Metric*【K5/(Reliability+K4)】
你会发现公式中MTU并没有参与计算,这是因为设计之初本打算把它带入计算的,但是后来发现如果把MTU带入计算的话会带来不少问题,所以后来干脆就把它忽略计算了。
注意:在计算时,每个接口都有自己的带宽、时延等参数,一条链路两端的接口参数未必完全相同(一般情况下都是相同的)。在计算路径开销时,先找出需要计算的接口是哪些,规则是:路由传播方向的入向接口(数据包发送方向的出向接口)。下面用几个实例来加固一下理论:
如上图所示,R1要访问R4的话,则路由传播方向就是R4-R3-R2-R1,沿途经过的入向接口是上图用红色圈住部分。
沿途最小带宽=10Mbps=10000kbps
沿途时延之和=50ms+10ms+40ms=100ms=100000um=10000*(10us)
由于默认情况下的计算公式:Metric=(BW+Delay)*256
Metric=(107/10000+10000)*256=2816000