IP : 边界网关协议(BGP)

负载均衡如何工作?

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 22 日) | 反馈


目录


简介

负载均衡是Cisco IOS 路由器软件的一个标准的功能,并且在所有路由器平台间是可用的。如果路由选择表中有多条通往目标的路径,则此功能是路由器中转发过程所固有的功能并且会自动激活。它基于标准路由选择协议(如路由选择信息协议 (RIP)、RIPv2、增强型内部网关路由协议 (EIGRP)、开放最短路径优先 (OSPF) 和内部网关路由选择协议 (IGRP))或源自静态配置的路由和数据包转发机制。当转发数据包时,它允许路由器通过多条路径到达目标。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档不限于特定的软件和硬件版本。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示规则

负载均衡

如果路由器通过多个路由选择进程(或路由选择协议,如 RIP、RIPv2、IGRP、EIGRP 和 OSPF)获知多个通往特定网络的路由,它会将管理距离最短的路由安装在路由选择表中。有关详细信息,请参阅 Cisco 路由器的路由选择

有时,路由器必须从通过同一路由进程获知的具有相同管理距离的多个路由中选择一条路由。在这种情况下,路由器会选择到目标的成本(也称为度量值)最低的路径。每个路由进程都会以不同方式计算其成本,为达到负载平衡可能需要对这些成本进行操作。

如果路由器接收并安装了多条到目标的管理距离和成本均相同的路径,则会发生负载平衡。可使用的路径数受路由选择协议放置到路由选择表中的条目数量的限制。在 IOS 中,除默认条目数为一条的边界网关协议 (BGP) 之外,大多数 IP 路由选择协议的默认条目数均为四条。最多可配置六条不同的路径。

IGRP 和 EIGRP 路由选择进程还支持不等价负载平衡。可对 IGRP 和 EIGRP 使用 variance 命令来实现非等价负载平衡。若要根据针对协议配置的值确定可安装的路由数,请发出 maximum-paths 命令。如果将路由选择表设置为一个条目,它会禁用负载平衡功能。请参阅非等价负载平衡 (Variance) 在 IGRP 和 EIGRP 中的工作原理。以了解关于 variance 的详细信息。

通常可使用 show ip route 命令来查找等价路由。例如,以下是某个具有多条路由的特定子网的 show ip route 命令输出。请注意,有两个路由选择描述符块。每一个块都是一条路由。其中一个块条目旁还有一个星号 (*)。这个符号对应于用于新流量的活动路由。术语“新流量”对应于发往目标的单个数据包或整个流,具体取决于所配置的交换类型。

  • 对于进程交换 - 负载平衡以数据包为基础,星号 (*) 指向通过其发送下一个数据包的接口。

  • 对于快速交换 - 负载平衡以目标为基础,星号 (*) 指向通过其发送下一个基于目标的流的接口。

每提供一次数据包/流,星号 (*) 的位置就会在等价路径之间轮换一次。

M2515-B# show ip route 1.0.0.0
Routing entry for 1.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 的所有数据包会通过第二条路径传输,依此类推。这样可保持数据包的顺序,但可能会不均衡地使用链路。如果一台主机收到的绝大多数流量或所有数据包使用一条链路,则会使其他链路上的带宽闲置。目标地址较多可使链路得到更加均衡的利用。若要更均衡地利用链路,请使用 IOS 软件为每个目标地址(而不是每个目标网络)生成一个路由缓存条目,就像只存在一条路径一样。这样发往同一目标网络上不同主机的流量即可使用不同的路径。这种方法的缺点是,对于传送发往数千个目标主机的流量的核心主干路由器来说,维护缓存所需的内存和处理要求变得非常高。

基于数据包的负载平衡表示,路由器通过第一条路径将一个数据包发送到 destination1,通过第二条路径将第二个数据包同样发送到 destination1,依此类推。基于数据包的负载平衡可以确保所有链路上的负荷保持均衡。不过,数据包到达目标的顺序可能会乱,因为网络内可能存在各种延迟。在 Cisco IOS 软件中,除 11.1CC 版之外,基于数据包的负载平衡会禁用路由缓存的转发加速功能,因为路由缓存信息包括出接口。对于基于数据包的负载平衡,转发进程会通过查询路由表并选择使用频率最低的接口来确定每个数据包的出接口。这样可以保证均衡利用链路,但却是一项需要大量占用处理器的任务,并且会影响整体转发性能。这种基于数据包的负载平衡并不太适合速度较高的接口。

使用基于目标还是基于数据包的负载平衡取决于 IP 数据包使用的交换方案的类型。默认情况下,在大多数 Cisco 路由器上,接口下都启用了快速交换功能。这是一种执行基于目标负载平衡的按需缓存方案。若要设置基于数据包的负载平衡,请使用以下命令启用进程交换(或禁用快速交换):

Router# config t
Router(config)# interface Ethernet 0
Router(config-if)# no ip route-cache
Router(config-if)# ^Z

现在,路由器 CPU 会根据路由选择表中通往目标的路由数查看每一个数据包和负载平衡。这可能会使低端路由器崩溃,因为 CPU 必须执行所有处理。若要重新启用快速交换,请使用以下命令:

Router# config t
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 执行负载平衡

这些文档提供了有关不同协议如何选择最佳路径、如何计算其到达特定目标的成本,以及它们如何在适用时执行负载平衡的详细信息。

相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


相关信息


Document ID: 5212