简介
本文档介绍负载均衡在路由器软件和平台功能中的工作方式。
先决条件
要求
本文档没有任何特定的要求。
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
背景信息
负载均衡是Cisco IOS®路由器软件的标准功能,可在所有路由器平台上使用。如果路由选择表中有多条通往目标的路径,则此功能是路由器中转发过程所固有的功能并且会自动激活。它基于标准路由选择协议(如路由选择信息协议 (RIP)、RIPv2、增强型内部网关路由协议 (EIGRP)、开放最短路径优先 (OSPF) 和内部网关路由选择协议 (IGRP))或源自静态配置的路由和数据包转发机制。当转发数据包时,它允许路由器通过多条路径到达目标。
负载平衡
如果路由器通过多个路由选择进程(或路由选择协议,如 RIP、RIPv2、IGRP、EIGRP 和 OSPF)获知多个通往特定网络的路由,它会将管理距离最短的路由安装在路由选择表中。有关详细信息,请参阅 Cisco 路由器的路由选择。
有时,路由器必须从通过同一路由进程获知的具有相同管理距离的多个路由中选择一条路由。在这种情况下,路由器会选择到目标的成本(也称为度量值)最低的路径。每个路由进程会以不同的方式计算其成本,有时需要控制成本以实现负载均衡。
如果路由器接收并安装多条路径,并且这些路径与目的地的管理距离和开销相同,则会发生负载均衡。可使用的路径数受路由选择协议放置到路由选择表中的条目数量的限制。在Cisco IOS中,除边界网关协议(BGP)外,大多数IP路由协议的默认条目有四条,其中一条是默认条目。最多可配置六条不同的路径。
IGRP和EIGRP路由进程还支持不等价负载均衡。您可以将variance命令与IGRP和EIGRP配合使用,以实现不等价负载均衡。若要根据针对协议配置的值确定可安装的路由数,请发出 maximum-paths 命令。如果将路由选择表设置为一个条目,它会禁用负载平衡功能。有关差异的详细信息,请参阅非等价路径负载均衡(差异)在IGRP和EIGRP中如何工作。
通常可使用 show ip route 命令来查找等价路由。下一个示例是show ip route命令输出到具有多个路由的特定子网。请注意,有两个路由选择描述符块。每一个块都是一条路由。其中一个块条目旁还有一个星号 (*)。这个符号对应于用于新流量的活动路由。术语“新流量”根据配置的交换类型对应到目的地的单个数据包或整个流。
每次为数据包/流提供服务时,星号(*)的位置在等价路径中继续旋转。
M2515-B#show ip route 10.0.0.0
Routing entry for 10.0.0.0/8
Known via "rip", distance 120, metric 1
Redistributing via rip
Advertised by rip (self originated)
Last update from 192.168.75.7 on Serial1, 00:00:00 ago
Routing Descriptor Blocks:
* 192.168.57.7, from 192.168.57.7, 00:00:18 ago, via Serial0
Route metric is 1, traffic share count is 1
192.168.75.7, from 192.168.75.7, 00:00:00 ago, via Serial1
Route metric is 1, traffic share count is 1
基于目标和基于数据包的负载平衡
可以将负载均衡设置为按目标或按数据包工作。每个目的地的负载均衡意味着路由器根据目的地址分配数据包。如果有两条通往同一个网络的路径,则发往该网络上的 destination1 的所有数据包会通过第一条路径传输,而发往该网络上的 destination2 的所有数据包会通过第二条路径传输,依此类推。这样可保持数据包的顺序,但可能会不均衡地使用链路。如果一台主机收到的绝大多数流量或所有数据包使用一条链路,则会使其他链路上的带宽闲置。目标地址较多可使链路得到更加均衡的利用。要实现更均衡使用的链路,请使用Cisco IOS软件为每个目标地址(而不是每个目标网络)构建一个路由缓存条目,就像只存在一条路径时一样。因此,同一目标网络中不同主机的流量可以使用不同路径。此方法的缺点是,对于为数千台目的主机、内存和处理要求传输流量的核心主干路由器而言,维护缓存成了一项挑战。
每数据包负载均衡意味着路由器通过第一路径向destination1发送一个数据包,通过第二路径向(相同)destination1发送第二个数据包,依此类推。基于数据包的负载平衡可以确保所有链路上的负荷保持均衡。但是,由于网络中可能存在差分延迟,因此数据包到达目的地的顺序可能混乱。在 Cisco IOS 软件中,除 11.1CC 版之外,基于数据包的负载平衡会禁用路由缓存的转发加速功能,因为路由缓存信息包括出接口。对于每数据包负载均衡,转发进程在查找路由表并挑选使用最少的接口时确定每个数据包的传出接口。这可以确保链路的同等利用率,但它是处理器密集型任务,并且会影响整体转发性能。这种基于数据包的负载平衡并不太适合速度较高的接口。
每个目标或每个数据包的负载均衡取决于用于IP数据包的交换方案的类型。默认情况下,在大多数 Cisco 路由器上,接口下都启用了快速交换功能。这是一种按目标执行负载均衡的需求缓存方案。若要设置基于数据包的负载平衡,请使用以下命令启用进程交换(或禁用快速交换):
Router#configure terminal
Router(config)#interface Ethernet 0
Router(config-if)#no ip route-cache
Router(config-if)#^Z
现在,路由器 CPU 会根据路由选择表中通往目标的路由数查看每一个数据包和负载平衡。这可能会使低端路由器崩溃,因为 CPU 必须执行所有处理。若要重新启用快速交换,请使用以下命令:
Router#configure terminal
Router(config)#interface Ethernet 0
Router(config-if)#ip route-cache
Router(config-if)#^Z
使用较新的交换方案(如 Cisco 快速转发 (CEF))可更快地执行基于数据包和基于目标的负载平衡。但是,这确实意味着您有额外的资源来维护CEF条目和邻接关系。
使用CEF时,您可能会问:负载均衡、CEF或使用的路由协议由谁执行?CEF 的工作方式是,CEF 根据要由 EIGRP 等路由协议填充的路由表来执行数据包的交换。简而言之,CEF 会在计算出路由选择协议表之后执行负载平衡。
有关 CEF 负载平衡的详细信息,请参阅使用 Cisco 快速转发排除并行链路上的负载平衡故障和使用 CEF 执行负载平衡。
这些后续文档将详细介绍各种协议如何选择最佳路径、如何计算到达特定目的地的开销以及应用时如何执行负载均衡。
相关信息