HSRP 和 ECMP 结合的最佳实践

网络工程 思科 最佳实践 高铁 电调 arp
2021-07-08 15:04:01

ECMP(或其他非对称路径的原因)和HSRP的组合在 Cisco IOS 中默认被破坏;这种设计的默认行为会过度淹没单播流量。

将 HSRP 与 ECMP 结合使用以防止未知单播泛洪的最佳实践是什么?

详情/背景

对于我们的许多设施,我们的 HSRP 拓扑类似于下面的第一个图。我们的 Cisco WAN 路由器具有到所有其他站点的等价路由;因此我们可以一直看到非对称路由的影响。通常我们将 R1 指定为 HSRP 主节点,但 ECMP 允许返回流量通过 R1 或 R2。

问题是当 PC1 通过 WAN 安装远程 iSCSI 驱动器时,流量通过 R1 离开站点,但可能通过 R2 返回。只要 iSCSI 流量通过 R1 返回,就没有问题。

HSRP_Broken_00

当 PC1 的流量通过 R2 返回时,就会出现问题。假设 iSCSI 会话在 8:00:00 开始,并且两个路由器和两个交换机同时学习 PC1 的 mac。在 8:00:00 和 8:00:05 之间,没有泛洪问题,因为两台交换机的 CAM 表中仍然有 PC1 的 mac 地址。

HSRP_Broken_01

iSCSI 会话开始五分钟后,S2 的 PC1 mac 的 CAM 条目从 CAM 表中过期,并且 S2 将 PC1 的流量从所有端口(在本例中为 Po1、Gi0/3 和 Gi0/4)泛滥。如果 PC1 的 iSCSI 会话消耗大量带宽,这种未知的单播泛洪可能会从连接到 PC3 和 PC4 的链接中吸收大量容量。

Cisco IOS 交换机的默认 CAM 计时器为 300 秒...

S2# show mac address-table aging-time
Vlan Aging Time
---- ----------
1    300
17   300

但是,Cisco IOS 的默认接口 ARP 计时器是 4 小时...

R2# show interface gi0/0
GigabitEthernet0/0 is up, line protocol is up 
  Hardware is AmdP2, address is 000a.dead.beef (bia 000a.dead.beef)
  Internet address is 172.17.1.252/24
  MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, 
     reliability 255/255, txload 1/255, rxload 1/255
  Encapsulation ARPA, loopback not set
  Keepalive set (10 sec)
  ARP type: ARPA, ARP Timeout 04:00:00       <--------------

因此,S2 在五分钟后开始泛洪 PC1 的 iSCSI 流量。

HSRP_Broken_02

4个回答

简单的答案是让 CAM 定时器等于或略长于相应的接口 ARP 定时器,但至少有三种不同的选项可供选择……

选项 1:降低所有接口 ARP 定时器

如果您有一个大小合适的第 2 层交换网络、合理数量的 ARP 条目和很少的路由接口,则此选项最有效。如果您希望看到 PC mac 条目快速从拓扑中老化,则此方法也更可取。

  • 在面向以太网交换机的所有 IOS 以太网接口上: arp timeout 240
  • 在面向以太网交换机的所有 IOS 以太网接口上:hold-queue 200 inhold-queue 200 out避免在定期 ARP 刷新期间丢弃 ARP 数据包(这些限制可能更高或更低,具体取决于您认为需要一次处理的 ARP 刷新次数)。如果您正在调整Selective Packet Discard值,那么您应该遵循我链接的论文中的指南。

这会强制 Cisco IOS 在四分钟内刷新 ARP 表,如果给定的 ARP 条目没有发生这种情况。明显的缺点是,如果您有很多 ARP 条目,这将无法很好地扩展……限制因平台而异。我在 Catalyst 4500 / 6500(第 3 层 SVI)上的每个路由器上使用了几百个 ARP,没有任何问题。

方案二:增加开关CAM定时器

如果您有大量 ARP 条目(即数千个,例如密集的 VMWare 环境可以看到),则此选项最有效。

  • 在所有 IOS 交换机上:mac address-table aging-time 14400,或mac address-table aging-time 14400 vlan <vlan-id>任何相关的 Vlan。

此更改调整了大多数人认为固定在 300 秒(在 Cisco IOS 上)的计时器,因此请务必将其包含在连续性文档中。这样做的副作用是 CAM 表条目在 PC 移除后会保留 4 小时(这可能是好的也可能是坏的,取决于您的 PoV)。如果 4 小时太长,请参阅下一个选项...

选项 3:更改接口 ARP 计时器和交换机 CAM 计时器

此选项以更多配置为代价避免了选项 2 中长得可怕的 CAM 计时器。您可以选择是否需要 900 秒、1800 秒或其他时间……只要确保您的 CAM 和 ARP 计时器匹配;因此,您需要在拓扑中配置选项 1 和选项 2。

对我来说,ECMP 才是真正的问题——所以除了上述限制未知单播泛洪的步骤之外,您还可以调整通往 WAN 的路由指标,以便 R1 优先于 R2 返回流量。实现此目的的一种方法是通过 R2 上的分发列表,如下所示:(EIGRP 仅用作示例,使用 OSPF 或 BGP 和其他命令也可以实现相同的目的)


ip 前缀列表 R1-PREFER seq 5 允许 172.17.1.0/24
路由映射 R1-PREFER-MAP 允许 10
 匹配 ip 地址前缀列表 R1-PREFER
 设置指标 1 1 1 1 1
...(允许所有其他路线)
路由器 eigrp 1
 ....
 分发列表路由映射 R1-PREFER-MAP 输出 Ser1/0
 ....

这将导致 WAN 将 172.17.1.0 的所有流量转发到 R1。如果 R1 Se1/0 出现故障,路由将安装到 R2。您可以进一步调整这些指标,以便到 R2 的备份路由实际上是实现更快故障转移的可行后继路由。HSRP 和跟踪将处理出口流量。

如果 HSRP 正在使用,则不使用 ECMP 的想法可能适用于入口流量可能高于出口流量的服务器,在 PC 情况下,一般情况下来自 WAN 的入口流量(响应)高于出口流量(入口)。我们像大多数人一样只是设置 ARP 计时器。您可能会弄乱 CAM 计时器,但是如果您说带有第 3 层交换机的 MDF 和带有 2 个收集交换机的 IDF 以及 5 个接入交换机,那么在 L3 SVI 上进行配置比在所有接入交换机上配置要容易得多。

可以使用一堆交换机来缓解第二个交换机中 MAC 地址条目过期的问题。