负载均衡(Load-Balancing)是一种转发数据包的方式,可以让路由器更好的利用所有的链路。负载均衡分为等价负载均衡(ECMP)和不等价负载均衡(UCMP)两种。(思科的CEF的负载均衡方式有per-destination和per-packet两种方式,本文不牵涉这两种方式的讨论)
l 等价负载均衡是指去往目的地的两条或多条路径的metric值相同,这些路径之间以1:1的方式平均的转发流量。
l 不等价负载均衡是指去往目的地的两条或多条路径间的metric值不同,这些路径之间以一定的比例,将流量转发出去。
在以前我们学习网络的时候,知道静态路由、RIP、OSPF、IS-IS只支持等价负载均衡,EIGRP和BGP既可以支持等价负载均衡,也可以支持不等价负载均衡。但随着网络的发展,接口的速率慢慢再提升2.5G、10G、40G、100G、400G速率的板卡都已经出现,板卡的换代不可能一蹴而就,所以同一时间,在网络中可能会出现不同速率的板卡接口,这时可能就需要设置不一样的cost值来标识不同的链路,等价负载均衡的话,会使某些路径一直使用,一些路径做备份(或称为低延迟路径)。所以不等价负载均衡的话,可以更好的利用所有的路径。
中间系统到中间系统IS-IS是一种内部网关协议,是电信运营商普遍采用的技术。也是SP CCIE的学习中比较重要的路由协议。
下面我们讨论在IOS-XR上IS-IS的负载均衡的方法。
实验拓扑如上图,每条链路的cost值都为10,在R8上查看R1的路由(10.1.0.1/32)从两条路径可以到达,并且metric值相同,都是40,这是等价负载均衡:
查看CEF表中这条路由的负载均衡方式(show cef 10.1.0.1 detail),通过命令输出可以看到R4和R7是等价的,1:1的关系。
这是IS-IS在IOS-XR的第一种负载均衡方式,也就是基本的等价负载均衡。下面我们来讨论下IS-IS第二种的负载均衡方式,使用等价的路径,但是通过weight来控制流量向直连链路发送流量的比例。好,还是相同的拓扑,我们在R8的IS-IS中,将连接R7的链路G0/0/0/1口设置weight为300,连接R4的链路G0/0/0/3口设置weight为200。
这时我们先查看路由表,发现路由表中,路由还是等价的。
下面我们查看cef表(show cef 10.1.0.1 detail)
可以看到:
slot 0,weight 300,normalized_weight 3
slot 1,weight 200,normalized_weight 2
其中slot 0和1跟接口对应;weight 300和200是我们设置的值;normalized_weight是计算出来的,计算的方法为先找到最大公约数(greatest common divisor (GCD)):
1. 如果GCD不等于1,normalized_weight = weight / GCD;
2. 如果GCD等于1,则normalized_weight = (Path weight/Total weight) * Maximum bucket size;
我们这个配置中,G0/0/0/1配置weight为300,G0/0/0/3配置weight为200,所以GCD为100,那么G0/0/0/1的normalized_weight为3,G0/0/0/3口为2,所以G0/0/0/1口与G0/0/0/3口负载均衡的比例为3:2,可以看到3个包或流走G0/0/0/1,2个包或流走G0/0/0/3。这个就是第二种负载均衡方式,通过weight来调整等价的两条或多条路径的负载均衡比例。weight这个值,不能累加,只能本路由器直连的接口上设置才能有效。
下面我们来讨论第三种负载均衡方式,IS-IS的不等价负载均衡(ucmp)方式。不等价负载均衡指的是两条或多条路径的metric不一样的情况下,负载均衡的比例还是按照weight来计算,如果没有配置weight,则会根据metric值来计算weight,这次我们讨论的是路径的metric值不一样,同时配置weight的情况。首先修改下配置,修改G0/0/0/1口的metric为70,G0/0/0/3口的metric为170,之前配置的weight值不变,G0/0/0/1口的weight为300,G0/0/0/2口的weight为200。
先查看路由表,在R8上可以看到,R1的路由(10.1.0.1)指向R7,因为从R7走metric为100,从R4走metric为200,根据最短路径的原则,放进路由表的是G0/0/0/1口指向的R7。
查看CEF表(show cef 10.1.0.1 detail),也是相同的结果,指向R7
下面我们在R8的IS-IS中配置ucmp,设置10.1.0.1这条路由可以做不等价负载均衡。
配置完成后,查看路由表,可以看到10.1.0.1这条路由,两条路径不等价,也可以做负载均衡:
继续查看CEF表,可以看到IS-IS可以继续在两个接口上以weight的比值按比例的进行负载分担。
以上是对IOS-XR中IS-IS负载均衡方式的介绍,还有种通过metric值计算weight的方法。
关于骨干网,超大网络技术及架构在思科SP CCIE课程中会有更为详尽的讲解,当下随着网络规模的逐渐扩展,大网技术的应用也越来越多,所有网络工程师都应该在大网的技术和架构上有所研究。不应在用到时才想起来找视频和文档,早做知识储备才会有更多职业发展的机会。思科SP CCIE的知识体系是目前最实用的网络技术方向。