分享

负载均衡如何工作?

 xxqa的新文艺 2019-08-09

Introduction

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

Prerequisites

Requirements

There are no specific requirements for this document.

Components Used

This document is not restricted to specific software and hardware versions.

Conventions

有关文档规则的详细信息,请参阅 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 执行负载平衡

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

Related Information

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多