EIGRP路由协议算法
EIGRP路由协议采用的是DUAL算法(扩散更新算法/弥散修正算法)
为了对DUAL算法进行解释,先来介绍几个概念:
- FD(可行距离)
源端到目的端的最短距离(metric最小) - AD(通告距离)advertise
邻居告诉我,它到目的端的最短距离是多少 - FC(可行性条件)
如果邻居给我发送的AD大于我的FD,那么我就不会将邻居通告给我的路由加入到拓扑表中,如果把这个路由加到拓扑表中,可能会成环(邻居必须比我离目的端要近,我才会把邻居通告给我的路由加入我的拓扑表中) - S 后继路由器(下一跳路由器)
到目的端最短路径的下一跳路由器 - FS 可行后继路由器(备份的下一跳路由器)
下面用一个网络拓扑来对这几个概念进行详细解释
图中给出四个路由器和一个A网络,其中,A网络到R4的距离(metric值)为200,这里我们通过分别给链路一,二,三,四赋不同的metric值来对这个拓扑进行分析:
1、链路一:1000,链路二:500,链路三:500,链路四:1000
- 首先,R4知道自己到A网络的距离是200,当四个路由器都开始运行EIGRP的时候,R4开始将自己的路由通告给R2和R3,此时,R4的FD是200
- 然后R4告诉R2和R3,我现在有一条到A网络的路由,我到它的距离是200,这个时候,R2和R3从R4收到的是AD,AD值是200,R2和R3根据AD,再根据自己到R4的距离,算出到A网络的FD值,分别是1200,700
- R2和R3算出自己的FD值以后,便将到A网络的路由通告给R1。这个时候,R2告诉R1的是,我到A网络的最短距离是1200,R3告诉R1的是,我到A网络的最短距离是700,于是R1根据R2和R3传过来的路由,计算自己的FD,发现两条路由的metric值是一样的,于是两条路由会同时加入R1的路由表,并且R2和R3都是R1的后继路由器
2、链路一:1000,链路二:500,链路三:400,链路四:1000
- 首先,R4知道自己到A网络的距离是200,当四个路由器都开始运行EIGRP的时候,R4开始将自己的路由通告给R2和R3,此时,R4的FD是200
- 然后R4告诉R2和R3,我现在有一条到A网络的路由,我到它的距离是200,这个时候,R2和R3从R4收到的是AD,AD值是200,R2和R3根据AD,再根据自己到R4的距离,算出到A网络的FD值,分别是1200,600
- R2和R3算出自己的FD值以后,便将到A网络的路由通告给R1。这个时候,R2告诉R1的是,我到A网络的最短距离是1200,R3告诉R1的是,我到A网络的最短距离是700,于是R1根据R2和R3传过来的路由,计算自己的FD,发现从R3传过来的路由的metric值是1600,R2传过来的路由的metric值是1700,所以这个时候R3传过来的路由被加入路由表,R2传过来的路由表依然保留在拓扑表,这个时候R3是R1的后继路由器,R2是R1的可行后继路由器
EIGRP的Mertic计算
五个参数共同参与Metric计算
- bandwidth 带宽
- delay 延迟
- relibaility 可靠性
- loading 负载
- MTU 最大传输单元
默认情况下只有带宽和延迟参与计算
- DLY=延迟(us)/10*256
在网络中只考虑出接口的延迟,不考虑入接口的延迟,延迟取值为沿路径上所有出接口延迟累加 - BW=[10000000/带宽(kbps)]*256
带宽取值为沿路径上所有数据出接口带宽的最低值计算
EIGRP路由metric计算默认为BW+DLY
EVE环境下查看相关信息的命令:
- show interface e0/0 可以查看带宽
- show ip eigrp topology 查看EIGRP的拓扑表
- r3(config-if)#bandwidth 9000 修改接口带宽为9000kbps
- show ip eigrp topology all-links 查看所有路径,该命令的意思是哪怕不满足FC的路由我也会显示出来
- show ip route 目的网络 查看两条路由发包比例
- r1(config-router)#variance 2 表示metric小于FD值的两倍的值的路由都可以加进路由表