MSTP 和快速 PVST+

网络工程 思科 杜松 生成树
2021-08-02 00:22:11

我们有一个中等规模的网络,运行除一栋大楼外的所有瞻博网络。这栋大楼与另一组共享,完全是思科的。我们只是将我们的 VLAN 中继到那里。

我们的瞻博网络配置了 MSTP,所有 VLAN 都属于 CIST。另一栋楼的所有 Cisco 都运行快速 pvst。

这两种协议根本不能很好地协同工作。连接到我们瞻博网络的 Cisco 已多次将中继端口置于阻塞状态,即使该链路是两座建筑物之间的唯一链路。

推荐的实现方式是什么?我倾向于仅禁用建筑物上行链路端口上的生成树,让 Cisco 将该建筑物作为自己单独的生成树进行管理,然后瞻博网络可以将其他所有内容作为自己的生成树进行管理。

谢谢。

1个回答

您可以通过发出以下命令(在配置模式下)将 Cisco 设备设置为运行 MST:

spanning-tree mode mst

除此之外,我将在 Cisco 支持论坛上留下 Peter Paluch (CCIE) 的精彩解释,为什么您不应该将 Rapid PVST 与 MST 一起使用。

让我先解释一下 MSTP/PVST+ 互操作的问题是什么。需要注意的是互操作限制的直接后果,因此了解正在发生的事情至关重要。

当 MSTP 区域连接到 (R)PVST+ 区域时,它会尝试发言 (R)PVST+ 并处理收到的 (R)PVST+ BPDU。这个过程称为 PVST 模拟。但是,此过程存在重大困难:(R)PVST+ 使用每个 VLAN 语义,而 MSTP 运行实例时仅将 VLAN 映射到它们上。MSTP 边界端口的角色和状态始终由与外界通信的 IST(= MSTI0)实例决定,并且由运行在 MSTP 区域中的所有实例简单地继承。这意味着,如果端口在 IST 中被丢弃,那么它在所有实例中(以及所有 VLAN)都会被丢弃。如果端口在 IST 中转发,则它在所有实例(以及所有 VLAN)中转发。每个角色/状态组合也是如此。这一事实使得无法在 MSTP 边界端口上执行任何每 VLAN 语义。

这些限制是 PVST 模拟工作所依据的准则。由于 MSTP 边界端口在与外界通话时应仅使用 IST 数据(这就是 MSTP 边界端口应根据 IEEE 规范运行的方式),PVST Simulation 利用了它:它获取 IST 数据并将其复制到发送的 PVST+ BPDU 中out 用于交换机上定义的所有 VLAN。换句话说,与 PVST+ 区域通信的 MSTP 边界端口为交换机上定义的每个 VLAN 发送一个 PVST+ BPDU,使用 IST 数据作为此 BPDU 的内容。从本质上讲,这使得整个 MSTP 区域看起来像一个单独的大型交换机,为每个 VLAN 配置相同的配置,而配置只是从 IST 中获取的。

这样做很容易。然而,相反的过程更具约束力:MSTP 边界端口尝试使用 IST 实例处理每个收到的 PVST+ BPDU。这就是麻烦开始的地方。如果所有接收到的 PVST+ BPDU 都应该允许稳定和明确地确定 MSTP 边界端口角色和状态,则它们必须相同,即相同的根桥 ID、相同的发送桥 ID、相同的根路径成本、相同的发送端口 ID、甚至可能在每个收到的 PVST+ BPDU 中使用相同的计时器(抱歉这里的“可能”这个词 - PVST 模拟实际上没有记录,这些只是我的经验 - 有些区域仍然是白色的)。未能满足此要求,即在 MSTP 边界端口上接收两个或更多不同的 PVST+ BPDU,

请注意,使用当前 Catalyst 交换机无法实现接收相同 PVST+ BPDU 的这一要求:每个最近的 Catalyst 交换机都使用扩展系统 ID,即在为特定 VLAN 创建 BPDU 时,它会将 VLAN ID 插入网桥 ID。即使您将 PVST+ 区域配置为单个交换机作为所有 VLAN 的根网桥,其 PVST+ BPDU 仍会有所不同,因为它们中的每一个都将在 RBID/SBID 字段中携带不同的扩展系统 ID。

防止这些问题的唯一方法是确保将 MSTP 区域视为所有 VLAN 的根交换机。由于 IST 的数据在 MSTP 区域外可见,因此可以通过将 IST 根网桥上的网桥优先级配置得如此低以击败 PVST+ 区域中的所有交换机,从而成为所有 VLAN 的根网桥来实现这一点。

链接中的更多信息:

https://community.cisco.com/t5/switching/migrating-from-rapid-pvst-to-mst/td-p/1792071