EIGRP选路和DUAL算法

拓扑

路由器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<FD,即邻居告诉我到目的地的距离必须小于我自己到目的地的距离(举个例子,假如你(本地路由器)开车要去一个目的地(目的网络),你知道离目的地有多远该怎么走(FD),碰巧你原来的这条路遇到堵车(FD链路不可达)。你隔壁(村或者镇)的几个朋友(邻居路由)他们也都知道怎么去目的地(他们自己的FD),他们挨个他打电话告诉你(路由宣告),他们开车去这个地方要多久,你从朋友提供的信息中挑选去目的地最近的邻居走(FS),然后你就从邻居那里开车到目的地,如果有朋友提供的路径比你原来自己开车去目的地都要远的话(AD>FD),你就不会把它当成备用路线(Successo),下次再遇到堵车的时候你就直接从最近的朋友那里去目的地了)

我们针对本次的实验环境分析一下这几个术语:

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如下个参数:

  1. Bandwidth(带宽)

  2. Delay(延迟)

  3. Reliability(可靠性)

  4. Loading(负载)

  5. 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

本文出自 “E网情深” 博客,请务必保留此出处http://jettcai.blog.51cto.com/1447637/1660169


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注