一般来说,负载均衡是指路由器将流量均匀分配给与目标地址距离相同的所有路由器网络端口的功能。负载均衡可提高网段的使用率,从而提高有效网络带宽。有两种类型的负载均衡:
等价路径 - 当指向目标网络的不同路径报告相同的路由度量值时适用。maximum-paths 命令确定路由协议可以使用的最大路由数。
不等价路径 – 当指向目标网络的不同路径报告不同的路由度量值时适用。variance 命令确定路由器使用了其中的哪些路由。
本文档介绍了不等价路径负载均衡在增强型内部网关路由协议 (EIGRP) 中的工作原理。
本文档要求您对 IP 路由协议和 EIGRP 路由协议有基本的了解。要了解有关 IP 路由协议和 EIGRP 的更多信息,请参考下列文档:
Cisco IOS® 软件版本 9.21 及更高版本支持 EIGRP。
您可以在所有路由器(例如 Cisco 2500 系列和 Cisco 2600 系列)和所有第 3 层交换机中配置 EIGRP。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
每个路由协议都支持等价路径负载均衡。此外,Interior Gateway Routing Protocol (IGRP) 和 EIGRP 还支持不等价路径负载均衡。要指示路由器包含度量值小于该目标最小度量路由 n 倍的路由,请使用 variance n 命令。变量n可以采用介于1和128之间的值。默认值为1,表示等价负载均衡。还会根据度量在不等价链路上按比例分配流量。
注意:如果路径不是可行后继,则该路径不用于负载均衡。有关详细信息,请参考增强型内部网关路由协议中的可行距离、报告距离和可行后继路由部分。
本部分提供了一个示例。在网络示意图中,可通过三种方法到达网络 X:
度量为 30 的 E-B-A
度量为 20 的 E-C-A
度量为 45 的 E-D-A
路由器E选择度量为20的路径E-C-A,因为20比30和45好。为了指示EIGRP也选择路径E-B-A,请使用乘数2配置variance:
router eigrp 1
network x.x.x.x
variance 2
此配置会将最小度量增加到 40 (2 * 20 = 40)。EIGRP 包括度量小于或等于 40 并满足可行性条件的所有路由。在本节的配置中,EIGRP现在使用两条路径来到达网络X、E-C-A和E-B-A,因为两条路径的度量都小于40。EIGRP不使用路径E-D-A,因为由于配置差异,该路径的度量为45,不小于最小度量的值40。此外,邻居D的报告距离为25,大于可行距离(FD)20到C。这意味着,即使方差设置为3,也不会选择E-D-A路径进行负载均衡,因为路由器D不是可行后继。
注意: 有关差异的详细信息,请参阅排除EIGRP差异故障命令。
EIGRP 不仅提供不等价路径负载均衡,而且还提供智能负载均衡,例如流量共享。当同一目标网络存在开销不同的多个路由时,要控制在路由之间分配流量的方式,请使用 traffic-share balanced 命令。使用关键字 balanced,路由器可以根据与不同路由关联的度量比率,按比例分配流量。下面是默认设置:
router eigrp 1
network x.x.x.x
variance 2
traffic-share balanced
本示例的流量份数为:
对于路径 E-C-A:30/20 = 3/2 = 1
对于路径 E-B-A:30/30 = 1
由于比率不是整数,将会向下舍入为最接近的整数。在本示例中,EIGRP 将会向 E-C-A 和 E-B-A 各发送一个数据包。
现在,假设E-B之间的度量为25,B-A之间的度量为15。在本例中,E-B-A度量为40。但是,不会选择此路径进行负载均衡,因为此路径的开销不小于(20 * 2),其中20是FD,2是差异。要将此路径同时包括在负载分担中,应该将方差更改为 3。在这种情况下,流量份数比率为:
对于路径 E-C-A:40/20 = 2
对于路径 E-B-A:40/40 = 1
在这种情况下, EIGRP 会向 E-C-A 发送两个数据包,并向 E-B-A 发送一个数据包。这样,EIGRP 便可以同时提供不等价路径负载均衡和智能负载均衡。有关 EIGRP 如何通过不等价链路对流量进行负载均衡的详细信息,请参阅增强型内部网关路由协议的负载均衡部分。
同样,将 traffic-share 命令与关键字 min 结合使用时,只会通过成本最低的路径发送流量,即使路由表中存在多个路径也是如此。
router eigrp 1
network x.x.x.x
variance 3
traffic-share min across-interfaces
在这种情况下,EIGRP 只会通过 E-C-A(指向目标网络的最佳路径)发送数据包。这与不使用 variance 命令进行的转发行为相同。但是,如果同时使用 traffic-share min 命令和 variance 命令,则即使只通过成本最低的路径发送流量,所有可行路由也将被安装到路由表中,这会减少收敛时间。
您已经了解了如何在 EIGRP 中配置不等价路径负载均衡。同样,您在 IGRP 中也能执行相同的配置,不过可行性条件相关配置除外。此条件不适用于 IGRP。
Cisco Express Forwarding (CEF) 是一种先进的第 3 层交换技术,可用于在路由器中实现负载均衡。默认情况下,CEF 使用基于目标的负载均衡。如果已在某个接口上启用基于目标的负载均衡,则它会根据路径转发数据包,以到达目标。如果目标存在两个或更多个并行路径,CEF 将采用同一个路径(单一路径),并避免并行路径。这是 CEF 默认行为的结果。如果在物理类型不同的接口(例如串行接口和隧道)上同时执行负载分担,CEF 将采用单一路径。散列算法将会确定要选择的路径。当您具有不同的物理接口(例如串行接口和隧道)时,要利用 CEF 中的所有并行路径并对流量进行负载均衡,您必须启用基于数据包的负载均衡。因此,根据配置和拓扑(串行接口或隧道),负载分担在默认的 CEF 负载均衡模式下可能无法正常工作。
请基于数据包启用这些命令来实现负载分担:
configure terminal interface serial 0 ip load-sharing per-packet