此产品的文档集力求使用非歧视性语言。在本文档集中,非歧视性语言是指不隐含针对年龄、残障、性别、种族身份、族群身份、性取向、社会经济地位和交叉性的歧视的语言。由于产品软件的用户界面中使用的硬编码语言、基于 RFP 文档使用的语言或引用的第三方产品使用的语言,文档中可能无法确保完全使用非歧视性语言。 深入了解思科如何使用包容性语言。
思科采用人工翻译与机器翻译相结合的方式将此文档翻译成不同语言,希望全球的用户都能通过各自的语言得到支持性的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 Cisco Systems, Inc. 对于翻译的准确性不承担任何责任,并建议您总是参考英文原始文档(已提供链接)。
本文档介绍在 vPC 域中的 Cisco Nexus 交换机上配置的常见虚拟端口通道 (vPC) 增强功能。
思科建议您了解有关虚拟端口通道 (vPC) 使用案例、配置和实施的基本信息。 有关此功能的详细信息,请参阅以下适用文档之一:
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
从 Cisco Nexus 数据中心交换机使用 Cisco NX-OS 以来,虚拟端口通道 (vPC) 功能获得了全方位增强,可在出现故障时提高 vPC 连接设备的可靠性,并且优化两台 vPC 对等交换机的转发行为。了解每项增强功能的目的、增强功能引入的行为更改以及增强功能解决的故障场景,可帮助您了解为何以及何时可以在vPC域内配置增强功能,以帮助最好地满足业务需求和要求。
本文档中介绍的操作过程适用于所有支持 vPC 的 Cisco Nexus 数据中心交换机。
本部分介绍 vPC 对等网关增强功能;可通过 peer-switch vPC 域配置命令启用此功能。
在很多环境中,vPC 域中的一对 Nexus 交换机是汇聚交换机或核心交换机,充当第 2 层交换以太网域和第 3 层路由域之间的边界。这两台交换机都配置了多个 VLAN,负责路由 VLAN 间东西向流量和南北向流量。在这些环境中,从生成树协议的角度来看,Nexus 交换机通常还充当根网桥。
通常将一个 vPC 对等体的生成树优先级设置为 0 等较低的值,以将其配置为生成树的根网桥。 对于另一个 vPC 对等体,则将其生成树优先级配置为 4096 等较高的值;这样,在充当根网桥的 vPC 对等体发生故障时,该 vPC 对等体就能够接管生成树中的根网桥角色。通过此配置,充当根网桥的 vPC 对等体会生成“生成树网桥协议数据单元 (BPDU)”,包含带有其系统 MAC 地址的网桥 ID。
但是,如果充当根网桥的vPC对等体发生故障并导致另一个vPC对等体接管生成树根网桥,则另一个vPC对等体会使用包含其系统MAC地址的网桥ID创建生成树BPDU,该网桥ID不同于原始根网桥系统MAC地址。根据下游网桥的连接方式,此更改的影响会有所变化,这些小节对此进行了说明。
如果非 vPC 连接的网桥使用冗余链路(从生成树协议的角度来看,一个链路处于阻塞状态)连接到两个 vPC 对等体,在检测到 BPDU 的变化以及由此导致的根网桥的变化时,非 vPC 连接的网桥会发现根端口的变化。其他指定转发接口会立即转换为阻塞状态,然后遍历生成树协议有限状态机(“阻塞”、“学习”和“转发”),暂停时间与已配置的生成树协议转发延迟计时器相同,默认为 15 秒。
根端口的变化以及随之发生的生成树协议有限状态机的遍历可能会导致网络中发生大量中断。引入 vPC 对等交换机增强功能的主要目的是,防止在其中一个 vPC 对等体离线时以上问题导致网络中断。借助 vPC 对等交换机增强功能,非 vPC 连接网桥仍拥有处于阻塞状态的单个冗余链路,但如果现有根端口由于链路故障而关闭,连接冗余链路的接口会立即转换为转发状态。当离线 vPC 对等体恢复在线时,也会发生相同的过程:根网桥开销最低的接口会接管根端口角色,冗余链路会立即转换为阻塞状态。对数据平面的唯一可见影响是,在 vPC 对等体离线时通过其传输的数据包不可避免地丢失。
生成树域中 vPC 连接的网桥会检测 BPDU 的变化以及由此导致的根网桥的变化,并在其本地 MAC 地址表中刷新动态获知的 MAC 地址。在采用 vPC 连接的设备的拓扑中,此行为效率低下且不必要,因为这些设备不依赖于生成树协议来避免拓扑环路。从生成树协议的角度来看,vPC 被视为单个逻辑接口,就像正常端口通道一样,因此 vPC 对等体的丢失类似于端口通道成员中单个链路的丢失。在任何一种情况下,生成树都不会更改,因此不需要刷新从生成树域中的网桥动态获取的MAC地址(目的是允许以太网泛洪和学习行为在生成树的新转发接口上重新学习MAC地址)。
此外,动态获取的MAC地址可能会造成中断。请思考如下场景:两台主机传输大量基于 UDP 的单向流(例如 TFTP 客户端将数据发送到 TFTP 服务器)。 在此流中,数据主要从 TFTP 客户端流向 TFTP 服务器,而 TFTP 服务器很少向 TFTP 客户端发回数据包。因此,在生成树域中动态获取的MAC地址刷新后,TFTP服务器MAC在一段时间内无法获取。这意味着发送到TFTP服务器的TFTP客户端数据在整个VLAN中泛洪,因为流量是未知单播流量。这可能会导致大量数据流传输到网络内预期之外的地方;如果流经网络的超订用部分,则可能会导致性能问题。
这种行为效率低下且不必要,思科为此引入了 vPC 对等交换机增强功能,以防在重新加载或关闭充当一个或多个 VLAN 的生成树根网桥的 vPC 对等体时发生类似情况。
为了启用 vPC 对等交换机增强功能,两个 vPC 对等体必须采用完全相同的生成树协议配置(包括所有 vPC VLAN 的生成树优先级值),并且要成为所有 vPC VLAN 的根网桥。满足这些必备条件后,必须使用 peer-switch vPC 域配置命令启用 vPC 对等交换机增强功能。
注意:仅在包含所有 VLAN 的根的 vPC 域上支持 vPC 对等交换机增强功能。
启用 vPC 对等交换机增强功能后,两个 vPC 对等体将开始生成完全相同的生成树 BPDU,其网桥 ID 包含两个 vPC 对等体共享的 vPC 系统 MAC 地址。即使重新加载一个 vPC 对等体,另一个 vPC 对等体生成的生成树 BPDU 也不会变化,因此生成树域中的其他网桥不会看到根网桥的任何变化,也不会对网络的变化做出次优反应。
vPC对等交换机增强功能有一些警告,您在配置生产环境之前必须了解这些警告。
在启用 vPC 对等交换机增强功能之前,必须修改所有 vPC VLAN 的生成树优先级配置,使两个 vPC 对等体的配置完全相同。
请思考此处的配置,其中 N9K-1 配置为 VLAN 1、10 和 20 的生成树根网桥,优先级为 0。 N9K-2 是 VLAN 1、10 和 20 的辅助生成树根网桥,优先级为 4096。
N9K-1# show running-config spanning-tree spanning-tree vlan 1,10,20 priority 0 interface port-channel1 spanning-tree port type network N9K-2# show running-config spanning-tree spanning-tree vlan 1,10,20 priority 4096 interface port-channel1 spanning-tree port type network
在启用 vPC 对等交换机增强功能之前,必须修改 N9K-2 上 VLAN 1、10 和 20 的生成树优先级配置,以匹配 N9K-1 上相同 VLAN 的生成树优先级配置。 此修改的示例如下所示。
N9K-2# configure terminal Enter configuration commands, one per line. End with CNTL/Z. N9K-2(config)# spanning-tree vlan 1,10,20 priority 0 N9K-2(config)# end N9K-2# show running-config spanning-tree spanning-tree vlan 1,10,20 priority 0 interface port-channel1 spanning-tree port type network N9K-1# show running-config spanning-tree spanning-tree vlan 1,10,20 priority 0 interface port-channel1 spanning-tree port type network
请思考以下拓扑:
在此拓扑中,两个 vPC 对等体(N9K-1 和 N9K-2)之间有两个第 2 层中继:Po1 和 Po2。 Po1 是承载 vPC VLAN 的 vPC 对等链路,而 Po2 是承载所有非 vPC VLAN 的第 2 层中继。如果 Po2 承载的非 vPC VLAN 的生成树优先级值在 N9K-1 和 N9K-2 上完全相同,则每个 vPC 对等体基于两台交换机上完全相同的 vPC 系统 MAC 地址生成“生成树 BPDU”帧。因此,即使 N9K-2 是生成“生成树 BPDU”的交换机,但 N9K-1 仍似乎在 Po2 上为每个非 vPC VLAN 接收自己的生成树 BPDU。从生成树的角度来看,N9K-1 会针对所有非 vPC VLAN 将 Po2 置于阻塞状态。
这是预料之中的现象。为了防止发生此行为或解决此问题,两个 vPC 对等体必须为所有非 vPC VLAN 配置不同的生成树优先级值。这样,一个 vPC 对等体可成为非 vPC VLAN 的根网桥,并可将 vPC 对等体之间的第 2 层中继转换为指定转发状态。同样,远程 vPC 对等体可将 vPC 对等体之间的第 2 层中继转换为指定根状态。这允许非 vPC VLAN 中的流量通过第 2 层中继在两个 vPC 对等体之间传输。
有关如何配置 vPC 对等交换机功能,请参阅以下示例。
在此示例中,N9K-1 配置为 VLAN 1、10 和 20 的生成树根网桥,优先级为 0。 N9K-2 是 VLAN 1、10 和 20 的辅助生成树根网桥,优先级为 4096。
N9K-1# show running-config vpc <snip> vpc domain 1 role priority 150 peer-keepalive destination 10.122.190.196 interface port-channel1 vpc peer-link N9K-2# show running-config vpc <snip> vpc domain 1 peer-keepalive destination 10.122.190.195 interface port-channel1 vpc peer-link N9K-1# show running-config spanning-tree spanning-tree vlan 1,10,20 priority 0 interface port-channel1 spanning-tree port type network N9K-2# show running-config spanning-tree spanning-tree vlan 1,10,20 priority 4096 interface port-channel1 spanning-tree port type network
首先,必须把 N9K-2 的生成树优先级配置改为与 N9K-1 完全相同。这是使 vPC 对等交换机功能按预期运行的前提条件。如果 N9K-2 的系统 MAC 地址低于 N9K-1 的系统 MAC 地址,N9K-2 会接管生成树域的根网桥角色,这会导致生成树域中的其他网桥为所有受影响的 VLAN 刷新其本地 MAC 地址表。此现象的一个示例如下所示。
N9K-1# show spanning-tree vlan 1 VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 689e.0baa.dea7 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 1 (priority 0 sys-id-ext 1) Address 689e.0baa.dea7 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Po1 Desg FWD 1 128.4096 (vPC peer-link) Network P2p Po10 Desg FWD 1 128.4105 (vPC) P2p Po20 Desg FWD 1 128.4115 (vPC) P2p N9K-2# show spanning-tree vlan 1 VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 689e.0baa.dea7 Cost 1 Port 4096 (port-channel1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 4097 (priority 4096 sys-id-ext 1) Address 689e.0baa.de07 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Po1 Root FWD 1 128.4096 (vPC peer-link) Network P2p Po10 Desg FWD 1 128.4105 (vPC) P2p Po20 Desg FWD 1 128.4115 (vPC) P2p N9K-2# configure terminal Enter configuration commands, one per line. End with CNTL/Z. N9K-2(config)# spanning-tree vlan 1,10,20 priority 0 N9K-2(config)# end N9K-2# show spanning-tree vlan 1 VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 689e.0baa.de07 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 1 (priority 0 sys-id-ext 1) Address 689e.0baa.de07 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Po1 Desg FWD 1 128.4096 (vPC peer-link) Network P2p Po10 Desg FWD 1 128.4105 (vPC) P2p Po20 Desg FWD 1 128.4115 (vPC) P2p
接下来,我们可以通过 peer-switch vPC 域配置命令启用 vPC 对等交换机功能。这会更改两个 vPC 对等体生成的生成树 BPDU 中的网桥 ID,导致生成树域中的其他网桥为所有受影响的 VLAN 刷新其本地 MAC 地址表。
N9K-1# configure terminal N9K-1(config)# vpc domain 1 N9K-1(config-vpc-domain)# peer-switch N9K-1(config-vpc-domain)# end N9K-1# N9K-2# configure terminal N9K-2(config)# vpc domain 1 N9K-2(config-vpc-domain)# peer-switch N9K-2(config-vpc-domain)# end N9K-2#
您可以使用 show spanning-tree summary 命令验证两个声明自己为 vPC VLAN 根网桥的 vPC 对等体,从而验证 vPC 对等交换机功能是否按预期运行。此输出还必须说明vPC对等交换机功能已启用且运行正常。
N9K-1# show spanning-tree summary Switch is in rapid-pvst mode Root bridge for: VLAN0001, VLAN0010, VLAN0020 L2 Gateway STP is disabled Port Type Default is disable Edge Port [PortFast] BPDU Guard Default is disabled Edge Port [PortFast] BPDU Filter Default is disabled Bridge Assurance is enabled Loopguard Default is disabled Pathcost method used is short vPC peer-switch is enabled (operational) STP-Lite is disabled Name Blocking Listening Learning Forwarding STP Active ---------------------- -------- --------- -------- ---------- ---------- VLAN0001 0 0 0 3 3 VLAN0010 0 0 0 3 3 VLAN0020 0 0 0 3 3 ---------------------- -------- --------- -------- ---------- ---------- 3 vlans 0 0 0 9 9 N9K-2# show spanning-tree summary Switch is in rapid-pvst mode Root bridge for: VLAN0001, VLAN0010, VLAN0020 L2 Gateway STP is disabled Port Type Default is disable Edge Port [PortFast] BPDU Guard Default is disabled Edge Port [PortFast] BPDU Filter Default is disabled Bridge Assurance is enabled Loopguard Default is disabled Pathcost method used is short vPC peer-switch is enabled (operational) STP-Lite is disabled Name Blocking Listening Learning Forwarding STP Active ---------------------- -------- --------- -------- ---------- ---------- VLAN0001 0 0 0 3 3 VLAN0010 0 0 0 3 3 VLAN0020 0 0 0 3 3 ---------------------- -------- --------- -------- ---------- ---------- 3 vlans 0 0 0 9 9
使用 show spanning-tree vlan{x} 命令可查看特定 VLAN 的更多详细信息。充当主用或工作主用 vPC 角色的交换机上的所有接口都处于指定转发状态。充当辅助/工作备用 vPC 角色的交换机上的所有接口都处于指定转发状态,只有 vPC 对等链路处于根转发状态。请注意,show vpc role 输出中显示的 vPC 系统 MAC 地址与每个 vPC 对等体的根网桥 ID 和网桥 ID 完全相同。
N9K-1# show vpc role vPC Role status ---------------------------------------------------- vPC role : primary Dual Active Detection Status : 0 vPC system-mac : 00:23:04:ee:be:01 vPC system-priority : 32667 vPC local system-mac : 68:9e:0b:aa:de:a7 vPC local role-priority : 150 vPC local config role-priority : 150 vPC peer system-mac : 68:9e:0b:aa:de:07 vPC peer role-priority : 32667 vPC peer config role-priority : 32667 N9K-1# show spanning-tree vlan 1 VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 0023.04ee.be01 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 1 (priority 0 sys-id-ext 1) Address 0023.04ee.be01 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Po1 Desg FWD 1 128.4096 (vPC peer-link) Network P2p Po10 Desg FWD 1 128.4105 (vPC) P2p Po20 Desg FWD 1 128.4115 (vPC) P2p N9K-2# show vpc role vPC Role status ---------------------------------------------------- vPC role : secondary Dual Active Detection Status : 0 vPC system-mac : 00:23:04:ee:be:01 vPC system-priority : 32667 vPC local system-mac : 68:9e:0b:aa:de:07 vPC local role-priority : 32667 vPC local config role-priority : 32667 vPC peer system-mac : 68:9e:0b:aa:de:a7 vPC peer role-priority : 150 vPC peer config role-priority : 150 N9K-2# show spanning-tree vlan 1 VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 1 Address 0023.04ee.be01 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 1 (priority 0 sys-id-ext 1) Address 0023.04ee.be01 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Po1 Root FWD 1 128.4096 (vPC peer-link) Network P2p Po10 Desg FWD 1 128.4105 (vPC) P2p Po20 Desg FWD 1 128.4115 (vPC) P2p
最后,我们可以在任一 vPC 对等体上使用 Ethanalyzer 控制平面数据包捕获实用程序,以确认两个 vPC 对等体都生成了生成树 BPDU,该 BPDU 的网桥 ID 和根网桥 ID 包含两个 vPC 对等体之间共用的 vPC 系统 MAC 地址。
N9K-1# ethanalyzer local interface inband display-filter stp limit-captured-frames 0 <snip> Capturing on inband 2021-05-13 01:59:51.664206 68:9e:0b:aa:de:d4 -> 01:80:c2:00:00:00 STP RST. Root = 0/1/00:23:04:ee:be:01 Cost = 0 Port = 0x9000 N9K-2# ethanalyzer local interface inband display-filter stp limit-captured-frames 0 <snip> Capturing on inband 2021-05-13 01:59:51.777034 68:9e:0b:aa:de:34 -> 01:80:c2:00:00:00 STP RST. Root = 0/1/00:23:04:ee:be:01 Cost = 0 Port = 0x9000
启用 vPC 对等交换机增强功能的影响会有所不同,具体取决于生成树域中的其他网桥是通过 vPC 连接到两个 vPC 对等体,还是在不使用 vPC 的情况下冗余连接到两个 vPC 对等体。
如果与两个vPC对等体具有冗余链路的非vPC连接网桥(因此,从生成树协议角度而言,一个链路处于阻塞状态)检测到生成树BPDU中通告的生成树根网桥发生变化,则网桥的根端口可以在两个冗余接口之间更改。其他指定转发接口将立即转换为阻塞状态,然后遍历生成树协议有限状态机(“阻塞”“学习”和“转发”),暂停时间与已配置的生成树协议转发延迟计时器相同,默认为 15 秒。 根端口的变化以及随之发生的生成树协议有限状态机的遍历可能会导致网络中发生大量中断。
需要指出的是,每次作为当前生成树域根网桥的 vPC 对等体离线时(例如在电源故障、硬件故障或重新加载的情况下),就会发生这一影响。 并非只有 vPC 对等交换机增强功能会导致此行为;从生成树角度来看,启用 vPC 对等交换机增强功能只是导致与 vPC 对等体离线类似的行为。
如果 vPC 连接的网桥检测到生成树 BPDU 中通告的生成树根网桥发生变化,该网桥会在其 MAC 地址表中刷新动态获知的 MAC 地址。配置vPC对等交换机功能时,您可以在以下两种情况下观察此行为:
在大多数场景和拓扑中,以上两种场景都不会影响数据平面。但是,在短时间内,由于未知单播流量泛洪,数据平面流量会在 VLAN 内泛洪,因为当刷新动态获知的 MAC 地址时,任何交换机端口都不会获知帧的目的 MAC 地址。在某些拓扑中,如果数据平面流量泛洪到 VLAN 内超订用的网络设备,可能会导致短暂的性能问题或丢包。这还会导致带宽密集型单向流量或静默主机(即,主要接收数据包但很少发送数据包的主机)出现问题,因为此流量会在 VLAN 中泛洪较长时间,而不是像正常情况那样直接切换到目的主机。
值得一提的是,这一影响与刷新从受影响 VLAN 内的网桥 MAC 地址表中动态获知的 MAC 地址有关。并非只有 vPC 对等交换机增强功能或根网桥的变化会导致此行为,由于 VLAN 中出现非边缘端口而生成的拓扑变化通知也会导致此行为。
请思考以下拓扑:
在此拓扑中,N9K-1 和 N9K-2 是 vPC 域中的 vPC 对等体。N9K-1 为所有 VLAN 配置了生成树优先级值为 0,使 N9K-1 成为所有 VLAN 的根网桥。N9K-2 为所有 VLAN 配置了生成树优先级值为 4096,使 N9K-2 成为所有 VLAN 的辅助根网桥。Access-1 是通过第 2 层交换机端口冗余连接到 N9K-1 和 N9K-2 的交换机。这些交换机端口未捆绑到端口通道中,因此生成树协议将连接到 N9K-1 的链路置于指定根状态,将连接到 N9K-2 的链路置于备用阻塞状态。
请考虑 N9K-1 因硬件故障、电源故障或交换机重新加载而离线的故障情形。N9K-2 会通告使用其系统 MAC 地址作为网桥 ID 的生成树 BPDU 以声明自己为所有 VLAN 的根网桥。Access-1发现根网桥ID发生变化。此外,它的指定根端口会转换为关闭/关闭状态,这意味着新的指定根端口是面向 N9K-2 的处于备用阻塞状态的链路。
指定根端口的此变化会导致所有非边缘生成树端口逐步通过生成树协议有限状态机(“阻塞”、“学习”和“转发”),其间的暂停时间与配置的生成树协议转发延迟计时器相同,默认为 15 秒。 此过程可能对网络造成极大中断。
在同一故障情形中,当启用 vPC 对等交换机增强功能时,N9K-1 和 N9K-2 会传输使用共享 vPC 系统 MAC 地址作为网桥 ID 的相同的生成树 BPDU。如果 N9k-1 发生故障,N9K-2 将继续传输相同的生成树 BPDU。因此,Access-1 会立即将面向 N9K-2 的备用阻塞链路转换为指定根状态,并开始通过该链路转发流量。此外,生成树根网桥 ID 不会发生变化,这会阻止非边缘端口遍历生成树协议有限状态机,从而减少网络中断。
请思考以下拓扑:
在此拓扑中,N9K-1 和 N9K-2 是 vPC 域中的 vPC 对等体,负责 VLAN 10 和 VLAN 20 之间的路由。 N9K-1 为 VLAN 10 和 VLAN 20 配置了生成树优先级值 0,使 N9K-1 成为两个 VLAN 的根网桥。N9K-2 配置了 VLAN 10 和 VLAN 20 的生成树优先级值 4096,使 N9K-2 成为两个 VLAN 的辅助根网桥。Host-1、Host-2、Host- 3 和 Host-4 都在相互持续通信。
请考虑 N9K-1 因硬件故障、电源故障或交换机重新加载而离线的故障情形。N9K-2 会通告使用其系统 MAC 地址作为网桥 ID 的生成树 BPDU 以声明自己为 VLAN 10 和 VLAN 20 的根网桥。Access-1和Access-2看到根网桥ID发生变化,尽管生成树保持不变(即面向N9K-1和N9K-2的vPC仍为指定根端口),但Access-1和Access-2都会刷新VLAN 10和VLAN 20中所有动态获知的MAC地址的MAC地址。
在大多数环境中,刷新动态获取的 MAC 地址只会产生极小的影响。除了在 N9K-1 离线时正好传输给它而丢失的数据包,没有任何其他数据包丢失,但流量会作为未知单播流量在每个广播域中暂时泛洪,而广播域中的所有交换机都重新获取动态 MAC 地址。
在同一故障情形中,当启用 vPC 对等交换机增强功能时,N9K-1 和 N9K-2 会传输使用共享 vPC 系统 MAC 地址作为网桥 ID 的相同的生成树 BPDU。如果 N9k-1 发生故障,N9K-2 将继续传输相同的生成树 BPDU。因此,Access-1和Access-2不知道生成树拓扑发生了任何变化 — 从它们的角度来看,根网桥生成树BPDU是相同的,因此无需刷新相关VLAN中动态获取的MAC地址。这可以防止在此故障情形中未知单播流量在每个广播域中泛洪。
本部分介绍使用 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能。
默认情况下,在 vPC 域中配置的 Nexus 交换机根据双主用第一跳冗余协议 (FHRP) 转发流量。这意味着,如果任一 vPC 对等体收到的数据包的目的 MAC 地址属于交换机上配置的热备份路由器协议 (HSRP) 或虚拟路由器冗余协议 (VRRP) 组,则交换机会根据其本地路由表路由数据包,无论其 HSRP 或 VRRP 控制平面状态如何。换句话说,处于 HSRP 备用或 VRRP 备份状态的 vPC 对等体的预期行为是路由发往 HSRP 或 VRRP 虚拟 MAC 地址的数据包。
当 vPC 对等体路由发往 FHRP 虚拟 MAC 地址的数据包时,它会使用新的源 MAC 地址和目的 MAC 地址重写数据包。源MAC地址是数据包路由到的VLAN中的vPC对等交换虚拟接口(SVI)的MAC地址。根据vPC对等本地路由表,目的MAC地址是与数据包目的IP地址的下一跳IP地址关联的MAC地址。在 VLAN 间路由的场景中,数据包重写后的目的 MAC 地址是数据包最终要发往的主机的 MAC 地址。
某些主机不遵循标准转发行为以优化功能。在此种行为中,主机在应答传入数据包时不会查找路由表和/或 ARP 缓存。相反,主机会为应答数据包翻转传入数据包的源 MAC 地址和目的 MAC 地址。换言之,传入数据包的源 MAC 地址成为应答数据包的目的 MAC 地址,而传入数据包的目的 MAC 地址成为应答数据包的源 MAC 地址。此行为不同于遵循标准转发行为的主机;这些主机将查找本地路由表和/或 ARP 缓存,并将应答数据包的目的 MAC 地址设置为 FHRP 虚拟 MAC 地址。
如果主机生成的应答数据包应发往一个 vPC 对等体,但是此 vPC 把数据包出口转发给另一个 vPC ,这种非标准主机行为可能违反 vPC 环路规避规则。另一个 vPC 对等体接收发往属于其 vPC 对等体的 MAC 地址的数据包,并将数据包经由 vPC 对等链路转发给相应 vPC 对等体(该对等体拥有该数据包目的 MAC 地址字段中的 MAC 地址)。拥有相应 MAC 地址的 vPC 对等体尝试在本地路由数据包。如果数据包需要 vPC 出口转发,则 vPC 对等体会因为违反 vPC 环路规避规则而丢弃此数据包。因此,您可以观察来自或发往使用此非标准行为的主机的某些流的连接问题或数据包丢失。
我们引入了 vPC 对等网关增强功能,以消除主机采取此非标准行为造成的丢包。实现的方法是允许一个 vPC 对等体在本地路由发往另一个 vPC 对等体 MAC 地址的数据包,这样发往远程 vPC 对等体的数据包就无需从 vPC 对等链路上出口转发,即可路由。换言之,vPC 对等网关增强功能允许一个 vPC 对等体“代表”远程 vPC 对等体路由数据包。我们可以使用 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能。
如果两个vPC对等体与连接vPC的路由器或通过vPC孤立端口连接的路由器之间形成动态单播路由协议邻接,则如果在启用vPC对等网关增强后未立即配置通过vPC的路由/第3层增强,则路由协议邻接可以在启用vPC对等网关增强后持续抖动。本文档在“带 vPC 对等网关的 vPC 上的单播路由协议邻接故障情形示例”和“带 vPC 对等网关的 vPC VLAN 上的单播路由协议邻接”等部分详描述了这些故障情形。
若要解决此问题,请在使用 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能后,立即使用 Layer3 peer-router vPC 域配置命令启用路由/第 3 层 vPC 增强功能。
启用 vPC 对等网关增强功能后,系统会在所有 vPC VLAN SVI(即与通过 vPC 对等链路中继的 VLAN 关联的任何 SVI)上自动禁用 ICMP 和 ICMPv6 重定向数据包的生成。 交换机通过在所有 vPC VLAN SVI 上配置 no ip redirects 和 no ipv6 redirects 来实现此目的。这可以防止交换机生成ICMP重定向数据包,以响应传入交换机,但具有交换机vPC对等体的目标MAC和IP地址的数据包。
如果在环境中的特定 VLAN 内需要使用 ICMP 或 ICMPv6 重定向数据包,请使用 peer-gateway exclude-vlan<vlan-id> vPC 域配置命令排除此 VLAN,使其不能利用 vPC 对等网关增强功能。
注意:Nexus 9000 系列交换机不支持 peer-gateway exclude-vlan<vlan-id> vPC 域配置命令。
有关如何配置 vPC 对等网关功能,请参阅此处。
在本例中,N9K-1 和 N9K-2 是 vPC 域中的 vPC 对等体。两个 vPC 对等体都为 VLAN 10 配置了 HSRP 组。 N9K-1 是 HSRP 主用路由器,优先级为 150,而 N9K-2 是 HSRP 备用路由器,默认优先级为 100。
N9K-1# show running-config vpc <snip> vpc domain 1 role priority 150 peer-keepalive destination 10.82.140.43 interface port-channel1 vpc peer-link N9K-2# show running-config vpc <snip> vpc domain 1 peer-keepalive destination 10.82.140.42 interface port-channel1 vpc peer-link N9K-1# show running-config interface vlan 10 <snip> interface Vlan10 no shutdown ip address 192.168.10.2/24 hsrp 10 preempt priority 150 ip 192.168.10.1 N9K-2# show running-config interface vlan 10 <snip> interface Vlan10 no shutdown ip address 192.168.10.3/24 hsrp 10 ip 192.168.10.1 N9K-1# show hsrp interface vlan 10 brief *:IPv6 group #:group belongs to a bundle P indicates configured to preempt. | Interface Grp Prio P State Active addr Standby addr Group addr Vlan10 10 150 P Active local 192.168.10.3 192.168.10.1 (conf) N9K-2# show hsrp interface vlan 10 brief *:IPv6 group #:group belongs to a bundle P indicates configured to preempt. | Interface Grp Prio P State Active addr Standby addr Group addr Vlan10 10 100 Standby 192.168.10.2 local 192.168.10.1 (conf)
N9K-1 的 VLAN 10 SVI 的 MAC 地址为 00ee.ab67.db47,N9K-2 的 VLAN 10 SVI 的 MAC 地址为 00ee.abd8.747f。VLAN 10 的 HSRP 虚拟 MAC 地址为 0000.0c07.ac0a。在此状态下,每台交换机的VLAN 10 SVI MAC地址和HSRP虚拟MAC地址存在于每台交换机的MAC地址表中。每台交换机的VLAN 10 SVI MAC地址和HSRP虚拟MAC地址都存在网关(G)标志,这表示交换机在本地路由发往此MAC地址的数据包。
请注意,在 N9K-1 的 MAC 地址表中,N9K-2 的 VLAN 10 SVI MAC 地址不带网关标记。同样,在 N9K-2 的 MAC 地址表中,N9K-1 的 VLAN 10 SVI MAC 地址不带网关标记。
N9K-1# show mac address-table vlan 10 Legend: * - primary entry, G - Gateway MAC, (R) - Routed MAC, O - Overlay MAC age - seconds since last seen,+ - primary entry using vPC Peer-Link, (T) - True, (F) - False, C - ControlPlane MAC, ~ - vsan VLAN MAC Address Type age Secure NTFY Ports ---------+-----------------+--------+---------+------+----+------------------ G 10 0000.0c07.ac0a static - F F sup-eth1(R) G 10 00ee.ab67.db47 static - F F sup-eth1(R) * 10 00ee.abd8.747f static - F F vPC Peer-Link(R) N9K-2# show mac address-table vlan 10 Legend: * - primary entry, G - Gateway MAC, (R) - Routed MAC, O - Overlay MAC age - seconds since last seen,+ - primary entry using vPC Peer-Link, (T) - True, (F) - False, C - ControlPlane MAC, ~ - vsan VLAN MAC Address Type age Secure NTFY Ports ---------+-----------------+--------+---------+------+----+------------------ G 10 0000.0c07.ac0a static - F F vPC Peer-Link(R) * 10 00ee.ab67.db47 static - F F vPC Peer-Link(R) G 10 00ee.abd8.747f static - F F sup-eth1(R)
我们可以通过 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能。这使交换机能够在本地路由收到的数据包,其中目标MAC地址属于在vPC对等链路上获知的vPC对等MAC地址。这是通过在交换机的MAC地址表中的vPC对等MAC地址上设置网关标志来实现的。
N9K-1# configure terminal Enter configuration commands, one per line. End with CNTL/Z. N9K-1(config)# vpc domain 1 N9K-1(config-vpc-domain)# peer-gateway N9K-1(config-vpc-domain)# end N9K-1# N9K-2# configure terminal Enter configuration commands, one per line. End with CNTL/Z. N9K-2(config)# vpc domain 1 N9K-2(config-vpc-domain)# peer-gateway N9K-2(config-vpc-domain)# end N9K-2#
您可以通过验证 MAC 地址表中的 vPC 对等体 MAC 地址是否带有网关标记来验证 vPC 对等网关增强功能是否按预期运行。
N9K-1# show mac address-table vlan 10 Legend: * - primary entry, G - Gateway MAC, (R) - Routed MAC, O - Overlay MAC age - seconds since last seen,+ - primary entry using vPC Peer-Link, (T) - True, (F) - False, C - ControlPlane MAC, ~ - vsan VLAN MAC Address Type age Secure NTFY Ports ---------+-----------------+--------+---------+------+----+------------------ G 10 0000.0c07.ac0a static - F F sup-eth1(R) G 10 00ee.ab67.db47 static - F F sup-eth1(R) G 10 00ee.abd8.747f static - F F vPC Peer-Link(R) N9K-2# show mac address-table vlan 10 Legend: * - primary entry, G - Gateway MAC, (R) - Routed MAC, O - Overlay MAC age - seconds since last seen,+ - primary entry using vPC Peer-Link, (T) - True, (F) - False, C - ControlPlane MAC, ~ - vsan VLAN MAC Address Type age Secure NTFY Ports ---------+-----------------+--------+---------+------+----+------------------ G 10 0000.0c07.ac0a static - F F vPC Peer-Link(R) G 10 00ee.ab67.db47 static - F F vPC Peer-Link(R) G 10 00ee.abd8.747f static - F F sup-eth1(R)
启用vPC对等网关增强功能的影响可能因周围拓扑和所连接主机的行为而异,如以下小节所述。如果这两个子部分均不适用于您的环境,则启用vPC对等网关增强功能不会造成中断并且不会影响您的环境。
如果两个vPC对等体与连接vPC的路由器或通过vPC孤立端口连接的路由器之间形成动态单播路由协议邻接,则如果在启用vPC对等网关增强后未立即配置通过vPC的路由/第3层增强,则路由协议邻接可以在启用vPC对等网关增强后持续抖动。本文档在“带 vPC 对等网关的 vPC 上的单播路由协议邻接故障情形示例”和“带 vPC 对等网关的 vPC VLAN 上的单播路由协议邻接”等部分详描述了这些故障情形。
若要解决此问题,请在使用 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能后,立即使用 Layer3 peer-router vPC 域配置命令启用路由/第 3 层 vPC 增强功能。
启用 vPC 对等网关增强功能后,系统会在所有 vPC VLAN SVI(即与通过 vPC 对等链路中继的 VLAN 关联的任何 SVI)上自动禁用 ICMP 和 ICMPv6 重定向数据包的生成。 交换机通过在所有 vPC VLAN SVI 上配置 no ip redirects 和 no ipv6 redirects 来实现此目的。这可以防止交换机生成ICMP重定向数据包,以响应传入交换机,但具有交换机vPC对等体的目标MAC和IP地址的数据包。
如果在环境中的特定 VLAN 内需要使用 ICMP 或 ICMPv6 重定向数据包,请使用 peer-gateway exclude-vlan<vlan-id> vPC 域配置命令排除此 VLAN,使其不能利用 vPC 对等网关增强功能。
注意:Nexus 9000 系列交换机不支持 peer-gateway exclude-vlan<vlan-id> vPC 域配置命令。
请思考以下拓扑:
在此拓扑中,N9K-1 和 N9K-2 是 vPC 域中的 vPC 对等体,负责 VLAN 10 和 VLAN 20 之间的路由。 接口 Po1 是 vPC 对等链路。名为 Host-1 的主机通过 vPC Po10 连接到 VLAN 10 中的 N9K-1 和 N9K-2。 Host-1 拥有 IP 地址192.168.10.10,MAC 地址为 0000.0000.0010。 名为 Host-2 的主机通过 vPC Po20 连接到 VLAN 20 中的 N9K-1 和 N9K-2。 Host-2 拥有 IP 地址 192.168.20.10,MAC 地址为 0000.0000.0020。
N9K-1 和 N9K-2 在 VLAN 10 和 VLAN 20 中都有 SVI,并在每个 SVI 下都激活了 HSRP。N9K-1 的 VLAN 10 接口的 IP 地址为 192.168.10.2,N9K-1的 VLAN 20 接口的 IP 地址为 192.168.20.2。 两个 N9K-1 的 SVI 物理 MAC 地址均为 00ee.ab67.db47。 N9K-2 的 VLAN 10 接口的 IP 地址为 192.168.10.3,N9K-2 的 VLAN 20 接口的 IP 地址为 192.168.20.3。 两个 N9K-2 的 SVI 物理 MAC 地址均为 00ee.abd8.747f。VLAN 10 的 HSRP 虚拟 IP 地址为 192.168.10.1,HSRP 虚拟 MAC 地址为 0000.0c07.ac0a。VLAN 20 的 HSRP 虚拟 IP 地址为 192.168.20.1,HSRP 虚拟 MAC 地址为 0000.0c07.ac14。
请考虑 Host-1 向 Host-2 发送 ICMP 回应请求数据包的场景。 在 Host-1 解析其默认网关(HSRP 虚拟 IP 地址)的 ARP 后, Host-1 遵循标准转发行为并生成源 IP 地址为 192.168.10.10、目的 IP 地址为 192.168.20.10 的 ICMP 回应请求数据包,而源 MAC 地址为0000.0000.0010,目的 MAC 地址为 0000.0c07.ac0a。此数据包向 N9K-1 发出。 此处显示了一个直观示例。
N9K-1 收到此数据包。由于此数据包发往 HSRP 虚拟 MAC 地址,因此无论其 HSRP 控制平面状态如何,N9K-1 能够根据本地路由表路由此数据包。此数据包从VLAN 10路由到VLAN 20。作为数据包路由的一部分,N9K-1会通过重新寻址数据包的源MAC地址和目标MAC地址字段来执行数据包重写。数据包的新源 MAC 地址将是与 N9K-1 的 VLAN 20 SVI (00ee.ab67.db47) 关联的物理 MAC 地址,新目的 MAC 地址将是与 Host-2 (0000.0000.0020) 关联的 MAC 地址。此处显示了一个直观示例。
Host-2 收到此数据包并生成 ICMP 回应应答数据包,以响应 Host-1 的 ICMP 回应请求数据包。但是,当 Host-2 不遵循标准转发行为时,为了优化其转发,Host-2 不会为 Host-1 的 IP 地址 (192.168.10.10) 查找路由表或 ARP 缓存,而是翻转原先收到的 ICMP 回应请求数据包主机的源 MAC 地址和目的 MAC 地址字段。因此,Host-2 生成的 ICMP 回应应答数据包的源 IP 地址为 192.168.20.10,目的 IP 地址为 192.168.10.10;源 MAC 地址为 0000.0000.0020,目的 MAC 地址为 00ee .ab67.db47。
如果此 ICMP 回应应答数据包向 N9K-1 发出,此数据包将被转发到 Host-1,而不会出现问题。但是,请考虑此 ICMP 回应应答数据包向 N9K-2 发出的情形,如下所示。
N9K-2 收到此数据包。由于此数据包的目的地是N9K-1的VLAN 20 SVI的物理MAC地址,因此N9K-2通过vPC对等链路将此数据包转发到N9K-1,因为N9K-2无法代表N9K-1路由此数据包。这里显示了一个直观示例。
N9K-1 收到此数据包。由于此数据包发往 N9K-1 的 VLAN 20 的 SVI 物理 MAC 地址,因此无论其 HSRP 控制平面状态如何,N9K-1 都能够根据本地路由表路由此数据包。此数据包从VLAN 20路由到VLAN 10。但是,此路由的出口接口解析为vPC Po10,该接口在N9K-2上处于运行状态。 这是对vPC环路避免规则的违反 — 如果N9K-1通过vPC对等链路收到数据包,如果N9K-2上同一vPC接口已启用,则N9K-1无法将该数据包从vPC接口转发出去。N9K-1会因此丢弃此数据包。此处显示了一个直观示例。
您可以通过使用 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能来解决此问题。这样一来,即使数据包的目的 MAC 地址属于 N9K-1 而非 N9K-2,N9K-2 也可以代表 N9K-1 路由 ICMP 回应应答数据包以及其他类似寻址的数据包。 因此,N9K-2 可以将此数据包从其 vPC Po10 接口转发出去,而无需通过 vPC 对等链路转发。
本部分介绍通过 layer3 peer-router vPC 域配置命令启用 vPC 路由/第 3 层增强功能。
注意:在 vPC 上启用路由/第 3 层增强功能时,系统不支持在 vPC 上形成组播路由协议邻接(协议无关组播邻接,也即 PIM)。
在某些环境中,客户希望通过 vPC 将路由器连接到一对 Nexus 交换机,并通过 vPC 与两个 vPC 对等体形成单播路由协议邻接。或者,一些用户喜欢通过vPC VLAN将路由器连接到单个vPC对等设备,并通过vPC VLAN与两个vPC对等设备形成单播路由协议邻接。因此,vPC 连接的路由器将为两台 Nexus 交换机通告的前缀提供等价多路径 (ECMP) 路由。这比在与vPC连接的路由器和两个vPC对等设备之间使用专用路由链路来节省IP地址利用率(需要3个IP地址而不是4个IP地址)或降低配置复杂性(路由接口与SVI并行,特别是在需要子接口的VRF-Lite环境中)。
过去,思科 Nexus 平台不支持通过 vPC 形成单播路由协议邻接。但是,有些用户可能实施了一种拓扑,在这种拓扑中,即使不支持单播路由协议邻接,也会在vPC上顺利形成邻接关系。在网络中发生某些变化(例如,vPC 连接的路由器或 vPC 对等体的软件升级、防火墙故障切换等)后,vPC上 的单播路由协议邻接停止工作,导致数据平面流量丢包,或单播路由协议邻接无法与一个或两个 vPC 对等体上建立起来。本文档的“故障情形示例”部分将讨论这些失败和不受支持的场景背后的技术细节。
我们引入了基于 vPC 的路由/第 3 层增强功能,以更多地支持在 vPC 上形成单播路由协议邻接。实现的方法是允许在 vPC 对等链路上转发 TTL 为 1 的单播路由协议数据包,同时不递减数据包的 TTL。因此,可以在 vPC 或 vPC VLAN 上形成单播路由协议邻接而不会出现问题。在使用 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能后,可以使用第 3 层 peer-router vPC 域配置命令启用路由/第 3 层 vPC 增强功能。
NX-OS 软件版本引入了对每个思科 Nexus 平台的路由/第 3 层 vPC 增强功能的支持,详情请参阅 Nexus 平台说明文档中的“通过虚拟端口通道进行路由所支持的拓扑”(详见表 2:“vPC VLAN 上的路由协议邻接支持”)。
启用vPC上的路由/第3层增强功能后,两台vPC对等设备开始每小时生成一次类似于此的系统日志:
2021 May 26 19:13:47.079 switch %VPC-2-L3_VPC_UNEQUAL_WEIGHT: Layer3 peer-router is enabled. Please make sure both vPC peers have the same L3 routing configuration. 2021 May 26 19:13:47.351 switch %VPC-2-L3_VPC_UNEQUAL_WEIGHT: Unequal weight routing is not supported in L3 over vPC. Please make sure both vPC peers have equal link cost configuration
这两种系统日志均不表示交换机存在问题。这些系统日志向管理员发出警告,当启用通过vPC的路由/第3层增强功能时,两个vPC对等设备上的路由配置、成本和权重必须相同,以确保两个vPC对等设备能够相同地路由流量。它不一定表示任一 vPC 对等体上存在不匹配的路由、配置开销或权重。
这些系统日志可通过此处所示的配置禁用。
switch# configure terminal switch(config)# vpc domain 1 switch(config-vpc-domain)# no layer3 peer-router syslog switch(config-vpc-domain)# end switch#
需要在两个 vPC 对等体上执行这一配置,才能在两个 vPC 对等体上禁用系统日志。
当在配备 Cloud Scale ASIC 并运行 NX-OS 软件版本 9.3(6) 之前的 NX-OS 软件版本的 Nexus 9000 系列交换机上启用基于 vPC 的路由/第 3 层增强功能时,与单播路由协议无关联且 TTL 为 1 的数据平面流量将被发送到管理引擎,并且将通过软件而非硬件转发。根据Nexus交换机是固定机箱(也称为“架顶式”)交换机还是模块化机箱(也称为“行尾式”)交换机,以及交换机当前的NX-OS软件版本,此问题的根本原因可能是软件缺陷Cisco Bug ID CSCvs82183 或软件缺陷“思科 CSCvw16965 漏洞” .这两个软件缺陷仅影响配备了 Cloud Scale ASIC 的 Nexus 9000 系列交换机,任何其他思科 Nexus 硬件平台均不受它们的影响。有关详细信息,请参阅每个软件缺陷中的信息。
为避免这些软件缺陷,思科建议升级到 NX-OS 软件版本 9.3(6) 或更高版本。作为一般建议,思科建议定期升级到当前推荐的适用于 Nexus 9000 系列交换机的 NX-OS 软件版本(参见文档思科 Nexus 9000 系列交换机的思科推荐 NX-OS 版本)。
请点击此处,详细了解如何通过 vPC 增强配置路由/第 3 层的示例。
在本例中,N9K-1 和 N9K-2 是 vPC 域中的 vPC 对等体。两个 vPC 对等体都已启用 vPC 对等网关增强功能,这是启用 vPC 上的路由/第 3 层增强功能必需的前提条件。两个 vPC 对等体在 VLAN 10 中都配置了一个 SVI,并已在 OSPF 进程 1 下启用。 N9K-1 和 N9K-3 处于“OSPF EXSTART / EXCHANGE”状态,面向 IP 地址和邻居 ID 为192.168.10.3 的 与 vPC 连接的 OSPF 路由器。
N9K-1# show running-config vpc <snip> vpc domain 1 role priority 150 peer-keepalive destination 10.122.190.196 peer-gateway interface port-channel1 vpc peer-link N9K-2# show running-config vpc <snip> vpc domain 1 peer-keepalive destination 10.122.190.195 peer-gateway interface port-channel1 vpc peer-link N9K-1# show running-config interface Vlan10 interface Vlan10 no shutdown no ip redirects ip address 192.168.10.1/24 no ipv6 redirects ip router ospf 1 area 0.0.0.0 N9K-2# show running-config interface Vlan10 interface Vlan10 no shutdown no ip redirects ip address 192.168.10.2/24 no ipv6 redirects ip router ospf 1 area 0.0.0.0 N9K-1# show running-config ospf feature ospf router ospf 1 interface Vlan10 ip router ospf 1 area 0.0.0.0 N9K-2# show running-config ospf feature ospf router ospf 1 interface Vlan10 ip router ospf 1 area 0.0.0.0 N9K-1# show ip ospf neighbors OSPF Process ID 1 VRF default Total number of neighbors: 3 Neighbor ID Pri State Up Time Address Interface 192.168.10.2 1 TWOWAY/DROTHER 00:08:10 192.168.10.2 Vlan10 192.168.10.3 1 EXCHANGE/BDR 00:07:43 192.168.10.3 Vlan10 N9K-2# show ip ospf neighbors OSPF Process ID 1 VRF default Total number of neighbors: 3 Neighbor ID Pri State Up Time Address Interface 192.168.10.1 1 TWOWAY/DROTHER 00:08:21 192.168.10.1 Vlan10 192.168.10.3 1 EXSTART/BDR 00:07:48 192.168.10.3 Vlan10
我们可以通过 layer3 peer-router vPC 域配置命令启用基于 vPC 的路由/第 3 层增强功能。这将防止 vPC 对等体因启用 vPC 对等网关增强功能而递减被路由的单播路由协议数据包的 TTL。
N9K-1# configure terminal Enter configuration commands, one per line. End with CNTL/Z. N9K-1(config)# vpc domain 1 N9K-1(config-vpc-domain)# layer3 peer-router N9K-1(config-vpc-domain)# end N9K-1# N9K-2# configure terminal Enter configuration commands, one per line. End with CNTL/Z. N9K-2(config)# vpc domain 1 N9K-2(config-vpc-domain)# layer3 peer-router N9K-2(config-vpc-domain)# end N9K-2#
您可以验证 vPC 上的路由/第 3 层增强功能是否按预期运行,方法是在启用该功能后,验证与 vPC 连接的 OSPF 邻居的 OSPF 邻接很快过渡到“FULL”状态。
N9K-1# show ip ospf neighbors OSPF Process ID 1 VRF default Total number of neighbors: 3 Neighbor ID Pri State Up Time Address Interface 192.168.10.2 1 TWOWAY/DROTHER 00:12:17 192.168.10.2 Vlan10 192.168.10.3 1 FULL/BDR 00:00:29 192.168.10.3 Vlan10 N9K-2# show ip ospf neighbors OSPF Process ID 1 VRF default Total number of neighbors: 3 Neighbor ID Pri State Up Time Address Interface 192.168.10.1 1 TWOWAY/DROTHER 00:12:27 192.168.10.1 Vlan10 192.168.10.3 1 FULL/BDR 00:00:19 192.168.10.3 Vlan10
在 vPC 上启用路由/第 3 层增强功能不会对 vPC 域造成任何本质上的影响。这意味着当您启用基于 vPC 的路由/第 3 层增强功能时,两个 vPC 对等体不会暂停任何 vPC,任何数据平面流量本身也不会因为启用此增强功能而受到影响。
但是,如果之前因未启用vPC上的路由/第3层增强功能而关闭的动态路由协议邻接关系因启用此增强功能而突然出现,则取决于受影响的路由协议邻接关系、通过这些邻接关系通告的特定前缀以及单播路由表的当前状态,在启用vPC上的路由/第3层增强功能时,可能会出现一些中断。
因此,思科建议客户在维护时段启用此增强功能,并期望出现控制平面和数据平面中断,除非客户非常确信受影响的路由协议邻接关系不会显着影响网络运行。
思科还建议仔细查看本文档的警告部分,以了解影响NX-OS软件版本的任何软件缺陷,这些缺陷可能导致TTL为1的自然数据平面流量在软件而非硬件中处理。
考虑图中显示的拓扑:
在此拓扑中,Nexus 交换机 N9K-1 和 N9K-2 是未启用 vPC 对等网关增强功能的 vPC 域内的 vPC 对等体。接口 Po1 是 vPC 对等链路。主机名为Router的路由器通过vPC Po10连接到N9K-1和N9K-2。主机通过vPC Po20连接到N9K-1和N9K-2。路由器的Po10接口是路由端口通道,在单播路由协议下激活。N9K-1 和 N9K-2 都使用相同的单播路由协议激活 SVI 接口,并且与路由器位于同一广播域中。
不支持vPC上未启用vPC对等网关增强的单播路由协议邻接,因为vPC连接的路由器的ECMP散列决策和第2层端口通道散列决策可能不同。在此拓扑中,路由器、N9K-1和N9K-2之间将成功形成路由协议邻接。请考虑路由器和主机之间的流量传输。通过路由器的发往主机的数据平面流量可以使用属于N9K-1的SVI MAC地址的目标MAC地址重写(由于路由器做出的ECMP散列决定),但传出接口Ethernet1/2(由于路由器作出的第2层端口通道散列决定)。
因为目的 MAC 地址属于 N9K-1,并且 vPC 对等网关增强功能(允许 N9K-2 代表 N9K-1 路由数据包)未启用,N9K-2 将接收此数据包并通过 vPC 对等链路转发。N9K-1 在 vPC 对等链路上收到此数据包,并意识到需要将数据包从 vPC Po20 中的以太网接口1/2 转发出去。 这会违反 vPC 环路规避规则,因此 N9K-1 在硬件中丢弃该数据包。因此,您可以观察此拓扑中通过vPC域的一些流的连接问题或丢包。
您可以通过使用 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能,然后使用 layer3 peer-router vPC 域配置命令启用 vPC 上的路由/第 3 层增强功能来解决此问题。为了最大限度地减少中断,您需要快速连续启用两个vPC增强功能,以便通过具有vPC对等网关的vPC的单播路由协议邻接关系中描述的故障场景没有时间发生。
考虑图中显示的拓扑:
在此拓扑中,Nexus 交换机 N9K-1 和 N9K-2 是启用了 vPC 对等网关增强功能的 vPC 域内的 vPC 对等体。接口 Po1 是 vPC 对等链路。主机名为Router的路由器通过vPC Po10连接到N9K-1和N9K-2。路由器的Po10接口是路由端口通道,在单播路由协议下激活。N9K-1 和 N9K-2 都使用相同的单播路由协议激活 SVI 接口,并且与路由器位于同一广播域中。
不支持vPC上启用了vPC对等网关增强的单播路由协议邻接,因为vPC对等网关增强可以防止与vPC连接的路由器和两个vPC对等设备之间形成单播路由协议邻接。在此拓扑中,路由器与N9K-1或N9K-2之间的路由协议邻接关系可能无法按预期建立,具体取决于路由器通过vPC Po10向N9K-1或N9K-2散列发起的单播路由协议数据包的方式。
所有路由器都能够发送和接收本地链路组播路由协议数据包(通常称为“Hello”数据包),因为这些数据包已成功泛洪到 vPC VLAN。但是,请考虑以下场景:由于路由器的第2层端口通道散列决策,从路由器发往N9K-1的单播路由协议数据包从Ethernet1/2发往N9K-2。此数据包将发往 N9K-1 的 SVI MAC 地址,但会从 N9K-2 的 Ethernet1/1 接口传入。N9K-2 将看到数据包发往 N9K-1 的 SVI MAC 地址;因为 vPC 对等网关增强功能已启用,该地址会存储在 N9K-2 的 MAC 地址表中,并带有“G”或“Gateway”标记。因此,N9K-2 将尝试代表 N9K-1 在本地路由单播路由协议数据包。
但是,通过路由数据包,数据包的生存时间(TTL)会减少,而大多数单播路由协议数据包的TTL是1。因此,数据包的TTL会减为0,然后由N9K-2丢弃。从N9K-1的角度来看,N9K-1正在从路由器接收本地链路组播路由协议数据包,能够向路由器发送单播路由协议数据包,但不接收来自路由器的单播路由协议数据包。因此,N9K-1 将断开与路由器的路由协议邻接,并为重获路由协议重新启动其本地有限状态机。同样,路由器将为重获路由协议重新启动其本地有限状态机。
我们可以通过 layer3 peer-router vPC 域配置命令启用基于 vPC 的路由/第 3 层增强功能以解决此问题。结果是允许在 vPC 对等链路上转发 TTL 为 1 的单播路由协议数据包,而无需递减数据包的 TTL。因此,可以在 vPC 或 vPC VLAN 上形成单播路由协议邻接而不会出现问题。
考虑图中显示的拓扑:
在此拓扑中,Nexus 交换机 N9K-1 和 N9K-2 是未启用 vPC 对等网关增强功能的 vPC 域内的 vPC 对等体。接口 Po1 是 vPC 对等链路。主机名为Router的路由器通过Ethernet1/1连接到N9K-1的Ethernet1/1。路由器的Ethernet1/1接口是一个路由接口,在单播路由协议下激活。N9K-1 和 N9K-2 都使用相同的单播路由协议激活 SVI 接口,并且与路由器位于同一广播域中。
不支持未启用vPC对等网关增强功能的vPC VLAN上的单播路由协议邻接,因为与vPC VLAN连接的路由器的ECMP散列决策可能导致N9K-2丢弃违反vPC环路避免规则的数据平面流量。在此拓扑中,路由器、N9K-1和N9K-2之间将成功形成路由协议邻接。请考虑路由器和主机之间的流量传输。通过路由器的数据平面流量发往主机时,可以使用属于N9K-2的SVI MAC地址的目标MAC地址(由于路由器做出的ECMP散列决策)重写,然后从接口Ethernet1/1传出,到达N9K-1。
因为目的 MAC 地址属于 N9K-2,并且 vPC 对等网关增强功能(允许 N9K-1 代表 N9K-2 路由数据包)未启用,N9K-1 将接收此数据包并通过 vPC 对等链路转发。N9K2 在 vPC 对等链路上收到此数据包,并意识到需要将数据包从 vPC Po20 中的以太网接口1/2 转发出去。 这会违反 vPC 环路规避规则,因此 N9K-2 在硬件中丢弃该数据包。因此,您可以观察此拓扑中通过vPC域的一些流的连接问题或丢包。
您可以通过使用 peer-gateway vPC 域配置命令启用 vPC 对等网关增强功能,然后使用 layer3 peer-router vPC 域配置命令启用 vPC 上的路由/第 3 层增强功能来解决此问题。为了最大限度地减少中断,您需要快速连续启用两个vPC增强功能,以便通过具有vPC对等网关的vPC的单播路由协议邻接关系中描述的故障场景没有时间发生。
考虑图中显示的拓扑:
在此拓扑中,Nexus 交换机 N9K-1 和 N9K-2 是启用了 vPC 对等网关增强功能的 vPC 域内的 vPC 对等体。接口 Po1 是 vPC 对等链路。主机名为Router的路由器通过Ethernet1/1连接到N9K-1的Ethernet1/1。路由器的Ethernet1/1接口是一个路由接口,在单播路由协议下激活。N9K-1 和 N9K-2 都使用相同的单播路由协议激活 SVI 接口,并且与路由器位于同一广播域中。
在启用了 vPC 对等网关增强功能的 vPC VLAN 上不支持单播路由协议邻接,因为 vPC 对等网关增强功能会阻止连接 vPC VLAN 的路由器与连接 vPC VLAN 的路由器不直接连接到的 vPC 对等体之间形成单播路由协议邻接。在此拓扑中,由于启用了 vPC 对等网关增强功能,N9K-1 路由单播路由协议数据包会发往 N9K-2 的 SVI MAC 地址,因此路由器和 N9K-2 之间的路由协议邻接无法按预期建立。由于数据包正在经路由传输,其生存时间 (TTL) 必须递减。单播路由协议数据包的TTL通常为1,将数据包的TTL减小为0的路由器必须丢弃该数据包。
所有路由器都能够发送和接收本地链路组播路由协议数据包(通常称为“Hello”数据包),因为这些数据包已成功泛洪到 vPC VLAN。但是,请考虑以下场景:从路由器发往N9K-2的单播路由协议数据包从Ethernet1/1发往N9K-1。此数据包发往N9K-2的SVI MAC地址,但进入N9K-1的Ethernet1/1接口。N9K-1 将看到数据包发往 N9K-2 的 SVI MAC 地址;因为 vPC 对等网关增强功能已启用,该地址会存储在 N9K-1 的 MAC 地址表中,并带有“G”或“Gateway”标记。因此,N9K-1 将尝试代表 N9K-2 在本地路由单播路由协议数据包。
但是,通过路由数据包,数据包的TTL会递减,而大多数单播路由协议数据包的TTL会递减1。因此,数据包的TTL会递减为0,然后由N9K-1丢弃。从N9K-2的角度来看,N9K-2正在接收来自路由器的本地链路组播路由协议数据包,能够向路由器发送单播路由协议数据包,但不会接收来自路由器的单播路由协议数据包。因此,N9K-2 将断开与路由器的路由协议邻接,并为重获路由协议重新启动其本地有限状态机。同样,路由器将为重获路由协议重新启动其本地有限状态机。
我们可以通过 layer3 peer-router vPC 域配置命令启用基于 vPC 的路由/第 3 层增强功能以解决此问题。结果是允许在 vPC 对等链路上转发 TTL 为 1 的单播路由协议数据包,而无需递减数据包的 TTL。因此,可以在 vPC 或 vPC VLAN 上形成单播路由协议邻接而不会出现问题。
考虑图中显示的拓扑:
在此拓扑中,Nexus 交换机 N9K-1 和 N9K-2 是启用了 vPC 对等网关增强功能的 vPC 域内的 vPC 对等体。Nexus 交换机 N9K-3 和 N9K-4 是启用了 vPC 对等网关增强功能的 vPC 域内的 vPC 对等体。两个 vPC 域通过背靠背的 vPC Po10 相互连接。 所有 4 台交换机都具有在单播路由协议下激活的 SVI 接口,并且位于同一广播域中。
不支持已启用 vPC 对等网关增强功能的背靠背 vPC 之间的单播路由协议邻接,因为 vPC 对等网关增强功能可能会阻止两个 vPC 域之间形成单播路由协议邻接。在此拓扑中,N9K-1 和 N9K-3 或 N9K-4(或两者)之间的路由协议邻接可能无法按预期建立。同样,N9K-2 和 N9K-3 或 N9K-4(或两者)之间的路由协议邻接可能无法按预期建立。这是因为根据始发路由器的第2层端口通道散列决策,单播路由协议数据包可以发往一个路由器(例如N9K-3),但可以转发到另一个路由器(例如N9K-4)。
此问题的根本原因与本文档的“带 vPC 对等网关的 vPC 上的单播路由协议邻接”部分所述的根本原因相同。我们可以通过 layer3 peer-router vPC 域配置命令启用基于 vPC 的路由/第 3 层增强功能以解决此问题。结果是允许在 vPC 对等链路上转发 TTL 为 1 的单播路由协议数据包,而无需递减数据包的 TTL。因此,可以在背靠背 vPC 上形成单播路由协议邻接而不会出现问题。
考虑图中显示的拓扑:
在此拓扑中,Nexus 交换机 N9K-1 和 N9K-2 是启用了 vPC 对等网关增强功能的 vPC 域内的 vPC 对等体。Nexus 交换机 N9K-3 和 N9K-4 是启用了 vPC 对等网关增强功能的 vPC 域内的 vPC 对等体。两个 vPC 域通过背靠背的 vPC Po10 相互连接。 所有 4 台交换机都具有在单播路由协议下激活的 SVI 接口,并且位于同一广播域中。N9K-4 是广播域的 OSPF 指定路由器 (DR),而 N9K-3 是广播域的 OSPF 备用指定路由器 (BDR)。
在此场景中,由于单播 OSPF 数据包从两台交换机的 Ethernet1/1 接口传出,N9K-1 和 N9K-3 之间的 OSPF 邻接会转换为“FULL”状态。同样,由于单播 OSPF 数据包从两台交换机的 Ethernet1/2 传出,N9K-2 和 N9K-3 之间的 OSPF 邻接会转换为“FULL”状态。
但是,由于单播 OSPF 数据包从两台交换机的 Ethernet1/1 传出并被 N9K-2 和 N9K-4 丢弃(如本文档的“带有 vPC对等网关的背靠背 vPC 上的单播路由协议邻接”部分所述),N9K-1 和 N9K-4 之间的 OSPF 邻接卡在“EXSTART“或“EXCHANGE”状态。同样,由于单播 OSPF 数据包从两台交换机的 Ethernet1/2 传出并被 N9K-1 和 N9K-3 丢弃(如本文档的“带有 vPC对等网关的背靠背 vPC 上的单播路由协议邻接”部分所述),N9K-2和 N9K-4 之间的 OSPF 邻接卡在“EXSTART”或“EXCHANGE”状态。
因此,N9K-1 和N9K-2 在广播域的 BDR 处于“FULL”状态,但在广播域的 DR 处于“EXSTART”或“EXCHANGE”状态。广播域的 DR 和 BDR 都保留 OSPF 链路状态数据库 (LSDB) 的完整副本,但 OSPF DROTHER 路由器必须针对广播域中的 DR 处于“FULL”状态,以便安装通过 DR 或 BDR 获取的前缀。因此,N9K-1 和 N9K-2 都将在 OSPF LSDB 中包含从 N9K-3 和 N9K-4 获知的前缀,但在 N9K-1 和 N9K-2 针对 N9K-4(广播域的 DR)转换为“FULL”状态之前,这些前缀不会存储在单播路由表中。
我们可以通过 layer3 peer-router vPC 域配置命令启用基于 vPC 的路由/第 3 层增强功能以解决此问题。结果是允许在 vPC 对等链路上转发 TTL 为 1 的单播路由协议数据包,而无需递减数据包的 TTL。因此,可以在背靠背 vPC 上形成单播路由协议邻接而不会出现问题。因此,N9K-1 和 N9K-2 将针对 N9K-4(广播域的 DR)转换为“FULL”状态,并将通过 OSPF 从 N9K-3 和 N9K-4 获知的前缀成功存储到各自的单播路由表中。
版本 | 发布日期 | 备注 |
---|---|---|
5.0 |
05-Dec-2024 |
固定报头和链路、机器转换和SEO优化 |
4.0 |
12-Dec-2022 |
重新认证 |
3.0 |
29-Oct-2021 |
纠正了vPC对等网关故障场景中的拼写错误。 |
2.0 |
15-Sep-2021 |
添加有关在Nexus 9000系列交换机上如何不支持“peer-gateway exclude-vlan”vPC域配置命令的说明。 |
1.0 |
30-Jul-2021 |
初始版本 |