eigrp 负载平衡 - 每个数据包或每个目的地

网络工程 思科 路由 路由器 eigrp 负载均衡
2021-07-22 20:03:18

假设我没有启用 cef 并且有 2 条路径具有相同的成本(两个流量份额数 = 1)

Router#show ip route 20.20.20.1
Routing entry for 20.20.20.0/24
  Known via "eigrp 10", distance 90, metric 156160, type internal
  Redistributing via eigrp 10
  Last update from 192.168.10.2 on FastEthernet0/0, 00:57:33 ago
  Routing Descriptor Blocks:
  * 192.168.20.2, from 192.168.20.2, 00:57:33 ago, via FastEthernet0/1
      Route metric is 156160, traffic share count is 1
      Total delay is 5100 microseconds, minimum bandwidth is 100000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 1
    192.168.10.2, from 192.168.10.2, 00:57:33 ago, via FastEthernet0/0
      Route metric is 156160, traffic share count is 1
      Total delay is 5100 microseconds, minimum bandwidth is 100000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 1

q1) 如果我在两个接口上都设置了 ip route-cache,这是否意味着即使两条路径具有相同的流量共享计数,到达同一目的地的数据包也将始终退出同一个接口?

q2) 如果我有两个不等价的路径,两个接口上的流量共享计数不同(例如 60,40)和 ip 路由缓存。这是否意味着如果曾经采用“40 份额”路径到达特定目的地(例如 20.20.20.2),那么随后到达 20.20.20.2 的尝试将始终采用“40 份额”路径?

1个回答

q1) 如果我在两个接口上都设置了 ip route-cache,这是否意味着即使两条路径具有相同的流量共享计数,到达同一目的地的数据包也将始终退出同一个接口?

ip route-cache在每个目的地的负载平衡中使用结果。Cisco 在负载平衡如何工作?

按目的地和按数据包负载平衡

您可以将负载平衡设置为按目的地或按数据包工作。Per-destination 负载均衡是指路由器根据目的地址分配数据包。给定到同一网络的两条路径,该网络上目的地 1 的所有数据包都通过第一条路径,该网络上目的地 2 的所有数据包都通过第二条路径,依此类推。这保留了数据包顺序,潜在地不均衡地使用链路。如果一台主机接收大部分流量,则所有数据包都使用一条链路,从而使其他链路上的带宽未使用。更多的目标地址会导致更多的同等使用链接。为了实现更平等使用的链接,使用 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 Express Forwarding (CEF) 等较新的交换方案允许您更快地执行按数据包和按目的地的负载平衡。但是,这确实意味着您有额外的资源来处理维护 CEF 条目和邻接关系。

当您使用 CEF 时,您可能会问:谁在使用负载平衡、CEF 或路由协议?CEF 的工作方式是,CEF 根据路由表(如 EIGRP 等路由协议填充)来交换数据包。简而言之,一旦计算出路由协议表,CEF 就会执行负载均衡。

按数据包的负载平衡可能会导致问题,因此,通常应使用按目标的负载平衡。

q2) 如果我有两个不等价的路径,两个接口上的流量共享计数不同(例如 60,40)和 ip 路由缓存。这是否意味着如果曾经采用“40 份额”路径到达特定目的地(例如 20.20.20.2),那么随后到达 20.20.20.2 的尝试将始终采用“40 份额”路径?

默认情况下,Cisco 路由器使用 CEF。不等价路径负载平衡(方差)如何在 IGRP 和 EIGRP 中工作?

CEF 中的负载平衡

Cisco Express Forwarding (CEF) 是一种先进的第 3 层交换技术,可用于路由器中的负载平衡。默认情况下,CEF 使用每个目标的负载平衡。如果在接口上启用它,则按目的地的负载平衡根据到达目的地的路径转发数据包。如果一个目的地存在两条或更多条并行路径,CEF 会采用相同的路径(单一路径)并避开并行路径。这是 CEF 默认行为的结果。在不同物理类型的接口(例如串行和隧道)上同时进行负载共享的情况下,CEF 将采用单一路径。哈希算法确定要选择的路径。为了利用 CEF 中的所有并行路径并平衡流量,当您有不同的物理接口(如串行和隧道)时,您必须启用按数据包的负载平衡。因此,根据配置和拓扑(串行或隧道),负载共享可能无法在默认 CEF 负载平衡模式下正常工作。

启用这些命令以基于每个数据包进行负载共享:

configure terminal
interface serial 0
ip load-sharing per-packet