vpc 循环避免场景

网络工程 个人电脑 环形
2022-02-04 11:43:47

考虑附加的拓扑。 在此处输入图像描述

有一个 vPC 域,vPC 20 用于 Sw2,vPC 10 用于 Sw1。NxOS1 和 NxOS2 之间存在 vPC 对等链路。

假设,Sw2 发送广播流量。此广播流量(经过哈希处理)将选择任何链接,同时上行到 NxOS1。现在在 NXOS1 上接收到广播流量。

NxOS1 将广播流量发送到除端口 20 之外的所有端口。因此,NxOS1 将通过端口 10 和对等链路发送流量出口。

现在,NxOS2 接收到流量,它知道 NxOS1 的端口 10 和端口 20 的状态(通过 CFS 协议)。因此,NxOS2 知道 SW1 可能已经通过 NxOS1 的端口 10 接收到来自 NxOS1 的流量。

NxOS2 还知道(通过 CFS 协议)广播流量会从 SW2 到达 NxOS1(在端口 20 上)。(我相信当端口通道建立时,NxOS1 和 NxOS2 都知道 Sw2 的 system-mac)。

因此,NxOS2 不会在 NxOS2 的端口 20 和端口 10 上进一步发送广播流量(在出口方向下行)。

Q1:请验证我的上述理解是否正确。

Q2:CFSoE在这里发挥了很大的作用(用于mac地址同步)。如果CFSoE停止工作会发生什么(假设对等链路断开)?即便如此,在上述情况下会如何发生循环?

2个回答

VPC 对等链路有一些特殊的作用 - 它承载 CFSoE 流量(如下所述)以允许对等方同步(打开时自动启用feature vpc)并承载孤立端口的流量。它的行为并不完全像普通端口通道,因此,最好将非 VPC VLAN 保留在不同的物理链路上。如前所述,一个显着的区别是,广播流量是通过对等链路发送的,但通常不会发送到任何非孤立成员链路。孤儿仍然需要接收广播。 设计最佳实践指南适用于 7K,但或多或​​少同样适用于 5K、9K 或 3K。

CFS 基本上是在 VPC 成员之间同步状态的机制。它是交换参数以确保配置一致性的方式,是标准化 STP 配置的地方,编程多播/IGMP 信息的地方,以及如果配置了 IP ARP 和/或 IPv6 ND 信息的抢先同步方式。显然情况并非如此,CFS 以每个数据包为基础跟踪哪些流量应该和不应该通过对等链路。它的工作基本上是保持基本配置状态的同步,而不是实时流量控制。

对于您的具体问题-

VPC 环境中的假设是,在正常操作条件下,所有设备都具有到两个 VPC 对等点的成员链接。因此,在您的图表中的 NXOS1 上接收到的广播将被发送到同一交换机上的其他成员链接(......也就是说 NXOS2)。它还通过对等链路发送到 NXOS2。NXOS2 不会将在对等链路上接收到的广播发送到它的任何成员端口(同样,假设 NXOS1 已经这样做了)。但是,如果它有任何孤立端口,它将复制到它们。举个例子——想象一下从 SW1 到 NXOS1 的链接失败了。SW2 向 NXOS1 发送恰好散列的广播。NXOS1 通过其对等链路转发到 NXOS2,NXOS2 认为 SW1 正在作为孤儿运行(通过 CFS 学习)并将相应地发送广播。

对于您的第二个问题 - 如果 VPC 对等链路发生故障但保持活动状态仍处于启动状态,则作为辅助设备运行的 VPC 对等方将关闭其 VPC 成员端口(包括 L3 SVI),从而迫使下游交换机仅使用链路到 VPC 主节点。有一些旋钮可以解决这个问题 - 例如,允许孤儿或某些 SVI 保持正常运行,但这应该非常小心,因为您很容易陷入辅助交换机从上游吸引 L3 流量的情况,它可以' t 实际上到达 L2。

编辑(回答评论中的问题)

在脑裂情况(即 P/L 和 keep-alive 失败)中出了什么问题的问题取决于周围的拓扑结构。在您绘制的拓扑中,实际上只有 L2 设备并且交换机都双连接到两个 VPC 对等设备并且没有任何其他链接?如果下游交换机继续将成员链路视为正确聚合,则不会有很大的环路风险,因为将正确维护水平分割以进行广播。可能存在一些协议问题,具体取决于 VPC 配置,因为下游交换机会看到 STP PDU 具有来自端口通道的不同成员的不同来源,但该行为取决于 VPC 在两个交换机上的配置方式。

双/独立(非同步)IGMP 会破坏一些事情,并且可能会看到重复的多播数据包被淹没,因为两个 VPC 主服务器将独立执行相同的功能(......这是 CFS 通过对等链路处理的重要事情之一) .

现在 - 如果拓扑涉及更多?它可以变得更丑陋。在该 VPC 对上添加 L3,也许还有一些孤立链接,突然之间,您将丢弃流量,因为两个路由器向它们只能部分看到的子网通告可达性。在 S1 和 S2 之间建立一个链接,您最终可能会遇到一个不稳定的网络,因为他们一直看到 TCN,因为两个 VPC 对不断发送带有冲突信息的 BPDU。或者想象一个背靠背的 VPC,其中上游 VPC 对现在正在跨两个 VPC 交换机散列流量(包括广播/多播),这反过来又会在各个下游成员链路上泛滥相同的数据包。重复广播、不当泛滥等的大量机会。

最后 - 如果这些问题中的任何一个导致 LACP 中断 - 或者如果看到不同通道上显示的不同 LACP 捆绑信息会破坏下游交换机,那么您就会遇到下游交换机现在可能在 VPC 交换机之间转发的情况。对于 L2 循环来说,这绝对是成熟的。

这些类型的场景是为什么最佳实践文档如此严格地强调物理冗余对等链路的必要性(5K 上的两个链路,分布在 9500 或 7K 上的多个模块)以及为什么在一组完全独立的链路上运行保活流量(和基础设施)非常重要。与任何主动/主动集群系统一样,脑裂总是很危险的。

我不太确定 CFS 是防止循环的东西。它更多的是关于同步和一致性检查。但是有一个简单的规则:如果通过对等链接接收到流量,则不要将流量发送到成员端口之外。

如果对等链接断开,则无济于事。这是一个脑裂的场景,每个交换机都认为自己是主控。理论上可以存在循环(可以看到开关之间的“8”),但情况本身是不正常的,因此很难确定实际行为。