其他分享
首页 > 其他分享> > TCPIP卷一(12):EIGRP的负载均衡方式 And RouterID、default Rout

TCPIP卷一(12):EIGRP的负载均衡方式 And RouterID、default Rout

作者:互联网

说明

    关于EIGRP的负载均衡方式在所有IGP协议中是比较特别的,我们都知道RIP、OSPF这些路由协议都只支持等价方式的负载均衡,也就是说当有多条路径去往同一个目的地的时候,并且在这个协议认为多条路径的开销是一致的,那么就会在路由表中出现负载均衡的方式。而EIGRP则支持一个另外的特性,就是非等价负载均衡,当多条路径的开销不一致的时候,也能实现负载均衡,并且是根据链路的优劣来自动分配流量。

案例分析一:等价和非等价负载均衡 And EIGRP Metric计算

tcpip

地址信息如图,R1为.1,R2为.2, 主要研究EIGRP的Metric计算和非等价负载均衡。

R1(config)#router eigrp 1
R1(config-router)#no auto-summary
R1(config-router)#network 0.0.0.0 0.0.0.0

R2(config)#router eigrp 1
R2(config-router)#no auto-summary
R2(config-router)#network 0.0.0.0 0.0.0.0

R3(config)#router eigrp 1
R3(config-router)#no auto-summary
R3(config-router)#network 0.0.0.0 0.0.0.0

R4(config)#router eigrp 1
R4(config-router)#no auto-summary
R4(config-router)#network 0.0.0.0 0.0.0.0

R5(config)#router eigrp 1
R5(config-router)#no auto-summary

R5(config-router)#network 45.1.1.5 0.0.0.0
R5(config-router)#network 5.5.5.5 0.0.0.0

分析:R5的5.5.5.5,在传递到R1的时候,R1可以经过两个路径去往5.5.5.5,一个是R1—-R2—–R4—-R5,另外一个R1—-R3—-R4—-R5,但是,由于R3和R4之间是串行链路,所以,路由表出现的肯定是去往最优路径的,也就下一跳12.1.1.2

tcpip

在topology中发现,关于5.5.5.5只有Successor存在,并没有FS的存在,因为另外一条链路的AD大于了,Successor的FD了,所以,并不满足FC条件。

tcpip

这里加上了all-links参数,发现还是没有看到关于另外一条路径的信息,这是因为EIGRP不会把差距太大的路径放入拓扑表中,而发现34.1.1.0/24则出现了,它FS的AD=S的FD了。

这时候就需要想办法让另外一条路径出现在拓扑表中,我们必须先了解EIGRP的Metric计算。

一、EIGRP计算Metric的时候会考虑五个因素: 1、Bandwidth K1 2、Delay (10微秒) K3 3、Reliabitity K2 4、Loading K4 5、MTU K5。其中,可靠性、负载、MTU都是经常变化的值,所以并不作为Metric计算的一部分。 K1=1. K2=0 K3=1 K4=0 K5=0

简化后的公式就是

10的七次方 Delay之和
(—————— + —————— ) *256 只取整数,不能四舍五入。
BW(KB) 10 其中 Bandwidth 取沿途更新入向接口带宽的最小值。 Dealy取沿途更新入向接口延迟总和

关于5.5.5.5学习到的Metric是 460800, 带宽取沿途更新入向接口带宽最小值,由于上面链路都是快速以太网,也就是100M,那么10^7/100M=1000KB,延迟之和是取沿途更新入向接口延迟总和,R5(Loopback 5000 usec),R4(F0/0 1000 usec),R2 (F0/1,1000 usec), R1( F0/0, 1000 usec,),总共为8000/10=800。 这里注意5.5.5.5就是Loopback自身,它更新出来也算作入方向,另外接口上面的延迟是以 usec计算的,而EIGRP则以10 usec为单位,所以必须要除以10.

10^7 8000
(—————— + —————— ) *256 =1800*256=460800. 只取整数,不能四舍五入。
10000(KB) 10

这时候知道EIGRP的Metric怎么计算了,则可以计算出R1——R3—–R4——–R5经过的了,通过一些手段让它出现在拓扑表中。

带宽:在整个入向接口中,肯定是串口链路的带宽最小了,1544KB,10^7/1544=6476,(计算出来后面的小数点全部省略,不能四舍五入)延迟,R5(Loopback 5000 usec),R4(F0/0 1000 usec),R3 (S1/0,20000 usec), R1( F0/0, 1000 usec,)
27000/10=2700

10^7 27000
(—————— + —————— ) *256 =(6476+2700)*256=2349056. 只取整数,不能四舍五入。
1544(KB) 10

与最优链路之间的Metric相差5倍!!,我们都知道EIGRP参考的Metric计算是带宽和延迟,通常情况下是不建议修改带宽的,因为可能网络中还存在其他应用,比如OSPF,QOS,那么 修改延迟成为了更好的选择, 但是,如果一旦修改了延迟,那么整个拓扑表的信息都会跟着改变,有时候是不希望的。那么EIGRP提供了另外一个功能,就是offic-list,这对于距离矢量协议来说,都具有这个特性。它只修改定义的路由条目,而不改变其他的。

2349056-460800=1888256,我们只需要把最优路径的关于5.5.5.5的路由的Metric增加这么多,那么是不是就负载均衡了呢?

tcpip

可以看到关于5.5.5.5的延迟现在8000,当通过offic-list修改后,看它是否会发生改变?

R1(config)#access-list 1 permit 5.5.5.5 0.0.0.0
R1(config)#router eigrp 1
R1(config-router)#offset-list 1 in 1888256 f0/0

对于R1来说,5.5.5.5是进入方向的,所有为in,而1888256则控制的是在现有的Metric上增加这么多,而且不能减少,后面接口是明确定义修改从哪个接口进入的,如果不定义的话,则影响运行了EIGRP进程的接口。

tcpip

这时候,关于5.5.5.5就负载均衡了。

tcpip

这时候在看关于5.5.5.5,下一跳12.1.1.2的delay时候,已经发生了改变,之前是8000,而现在是81760,也就是说offic-list其实改变的最终还是delay,只是用一种更加直观的方式转换成了Metric。

非等价负载均衡的条件必须是FS存在的,也就是满足了FC条件, FS的AD小于S的FD,那么我们可以把关于5.5.5.5的Metric改成比FS的小点,这样它就不负载均衡了。

R1(config-router)#offset-list 1 in 1888200 fastEthernet 0/0

这时候更改Metric增加1888200,比FS的路由的Metric要小。

tcpip

可以看到关于5.5.5.5是有FS存在的,它的AD是2323456,小于S的FD 2349000,也就是说满足FS条件,那么它可以作为非等价负载均衡的出现。

tcpip

卷一提到,用于实现非等价负载均衡的参数叫做 差异变量 variance,它默认为1,也就是只能实现负载均衡方式,度量值必须相同,我们可以通过拓扑表看到,它们的FD是不相等的,那么相差多少呢,2349056/2349000,明显是大于1了,那么只能取整数为2.

R1(config)#router eigrp 1
R1(config-router)#variance 2

tcpip

可以看到关于5.5.5.5已经负载均衡了,这个负载均衡是非等价的,也就是说当有多个主机访问的时候,它会按比例分配到不同的链路上去,为什么说是不同主机呢,因为现在的负载均衡都是基于CEF,也就是基于每目的的,而不是基于每数据包,之前在探讨负载均衡方式的时候已经说过了每数据包的弊端,所以,有些朋友在做实验的时候,发现关于5.5.5.5负载均衡走的是同一条路径,感觉没有负载均衡。其实,是负载均衡的,当不同的源访问相同的目的地时候,会走不同的路径,这样避免中间有防火墙,而出现状态化表项不一致的情况。更多的分析参考之前的负载均衡方式。

案例分析二:EIGRP下的RID

tcpip

关于EIGRP来说,它也是有RID的,但是,它的RID作用仅仅在于外部路由的时候才有效,但是,也是不能被忽略的。 环境,跟之前差不多,只是R4——R5运行在AS2。

R1(config)#router eigrp 1
R1(config-router)#no auto-summary
R1(config-router)#network 0.0.0.0 0.0.0.0

R2(config)#router eigrp 1
R2(config-router)#no auto-summary
R2(config-router)#network 0.0.0.0 0.0.0.0

R3(config)#router eigrp 1
R3(config-router)#no auto-summary
R3(config-router)#network 0.0.0.0 0.0.0.0
R4(config)#router eigrp 1
R4(config-router)#no auto-summary
R4(config-router)#network 0.0.0.0 0.0.0.0

R4(config)#router eigrp 2
R4(config-router)#network 45.1.1.4 0.0.0.0
R4(config-router)#no auto-summary

R5(config)#router eigrp 2
R5(config-router)#no auto-summary
R5(config-router)#network 0.0.0.0 0.0.0.0

这时候R1是收不到关于R5的路由的,因为他们处于不同的AS中,那么我们必须通过R4来进行重分布,把路由重分布进AS1中。
R4(config)#router eigrp 1
R4(config-router)#redistribute eigrp 2 metric 1500 100 255 1 1500

tcpip

可以看到收到了关于5.5.5.5的路由,是外部路由。

tcpip

关于EIGRP的RID查看,可以通过 show ip eigrp topology。

EIGRP RID的选举方式,也是跟OSPF一样,1、手动指定优先 2、当没有手动指定时候,Loopback IP地址最大的优先 3、最后参考物理接口地址最大的。 4、RID并不需要参与EIGRP进程

R4(config)#router eigrp 1
R4(config-router)#eigrp router-id 4.4.4.4

我们抓包看下R1收到关于5.5.5.5的时候,携带的内容

tcpip

回忆下,之前介绍的,关于外部路由的TLV,它会携带源路由器,也就是重分布该路由器的EIGRP RID地址,这个地址对于内部来说非常重要。

tcpip

可以看到 originating router is 4.4.4.4,它表示一个外部路由的起源,也就是从4.4.4.4 R4传递过来的。

R1(config)#router eigrp 1
R1(config-router)#eigrp router-id 4.4.4.4

这时候,我们更改EIGRP的RID也为4.4.4.4,查看会发生什么变化。

tcpip

发现关于5.5.5.5的路由消失了,而其余的内部路由则存在,这是为什么?

我们发现R1的RID和R4的RID都是4.4.4.4,回想下,之前提到过的 源路由器,它表示一个外部路由从哪学习到,它的作用就是为了防止环路存在的,当一个EIGRP收到一个外部路由的时候,它会检查源路由器标识的地址是否与自己的冲突了,如果冲突了,那么它就会拒收这条路由,这是一种防止环路的表现,也是IE考点中可能会出现的,如果在做TS的时候,如果发现什么配置都没错误,但是,就是收不到外部路由,那么很可能就是RID重复了,另外RID只是对外部路由有效,内部则不存在这样的问题。

关于多AS的设计是存在现网中的,多AS的设计可以帮助EIGRP设计出层次化的概念出来,所以,本身不自带,另外还可以避免SIA的出现,但是,在规划的时候一定要注意 RID的设计,否则很容易出现外边路由收不到的情况。

案例分析三:EIGRP下放默认路由的几种方式

tcpip

配置还是引用之前的配置,只是查看下EIGRP下放默认路由的不同方式。

一、重分布静态
R4(config)#ip route 0.0.0.0 0.0.0.0 null 0
R4(config)#router eigrp 2
R4(config-router)#redistribute static

tcpip

R5已经收到关于默认路由了

二、network 0.0.0.0

R4(config)#router eigrp 2
R4(config-router)#no redistribute static
R4(config-router)#network 0.0.0.0 0.0.0.0

tcpip

可以看到,收到的是一条内部的默认路由,而且发现除了默认路由以外,其余自身的网段都被学习到了,这是为什么呢?首先,0.0.0.0是代表所有的网段,所以,学习到了其他明细路由,但是,为什么会把null0这条默认路由,作为内部路由宣告进来呢,这条缺省路由必须是指向出接口的,EIGRP会认为是直连,所以可以宣告 ,反而如果指向的是下一跳的话则不可以了,所以,很不推荐

三、通过汇总来实现默认路由
R4(config)#router eigrp 2
R4(config-router)#no network 0.0.0.0 0.0.0.0
R4(config-router)#int f0/0
R4(config-if)#ip summary-address eigrp 2 0.0.0.0 0.0.0.0

tcpip

这种方式,很适合中小型企业,网络结构不是很复杂的情况下,可以看到,即省略了路由表,还能下放默认路由

四、ip default-network

R4(config)#int f0/0
R4(config-if)#no ip summary-address eigrp 2 0.0.0.0 0.0.0.0

R4(config)#int lo 1
R4(config-if)#ip add 192.168.1.1 255.255.255.0

R4(config)#ip default-network 192.168.1.0

R4(config)#router eigrp 2
R4(config-router)#network 192.168.1.0

tcpip

这时候收到了一条关于192.168.1.0的路由,但是,注意它是*的,也就是candidate default,候选默认。

tcpip

可以看到,路由表中没有关于其他路由的信息,但是还能通信,就是因为这个明细路由承载着默认路由的方式。

关于ip default-netowrk 它是以一个明细路由承载默认路由的方式,但是,有一个弊端就是 ip default-network必须是主类路由,也就是说 必须是以自然网段才行,那么导致的情况就是 EIGRP必须开启自动汇总,这样是我们不想的,唯一的解决方案就是,以C内地址作为承载,这样又不需要关闭自动汇总即可。

总结:关于负载均衡的方式,其实了解下就可以了,对于现网来说,不是负载均衡的链路越多就是越好的,一般情况下2条路径就够了,太多的话,会造成路由器的负担和大大影响收敛的速度,甚至SIA状态的出现,因为链路一多,对EIGRP来说,它认为是多个邻居存在。 对于RID来说,了解它的特性是有必要的,这是卷一中没有提到的,很容易被忽略掉。

本文首发于公众号:网络之路博客

标签:12,5.5,default,0.0,Rout,EIGRP,router,config,路由
来源: https://blog.51cto.com/ccieh3c/2653169