STP收敛过程需要详细解释,请

网络工程 思科 转变 生成树 IEEE-802.1w 环形
2021-07-25 08:09:14

所以,我了解 STP 收敛是如何在高层次上工作的。然而,当我试图更深入地研究这个过程时,我遇到了一些疑问,我希望有人能向我澄清。

开始了:

我知道根桥的选举是在每个交换机之间交换 BPDU 的帮助下发生的,每个交换机首先假设它是根桥。因此具有最低桥 ID(优先级 + VLAN ID + MAC 地址)的交换机将成为根。我也明白在 STP 中没有任何机制可以用于一个给定的交换机来确认结构中的其他交换机在同一个根网桥上达成一致。换句话说,对于每个交换机 X,没有办法检查相邻交换机 Y 是否选择了与交换机 X 相同的根交换机 Z。

问题:每个给定的交换机如何决定何时停止根桥选择并进入下一阶段(根端口选择)?或者没有“选举停止”这样的事情,这是一个相当持续的过程?如果这个过程是连续的,是不是也意味着每台交换机每次收到更好的BPDU就开始选择根端口?例如:具有 MAC "f" 的 SW1 从具有 MAC "e" 的 SW2 收到更好的 BPDU(因此 SW1 现在认为 SW2 是根网桥)并立即开始为 SW2 选择根端口,但在下一瞬间 SW1 收到偶数更好的来自 SW3 的 BPDU 和 MAC“a”,现在开始为 SW3 选举根端口,它继续发生,直到 SW1 不再收到更好的 BPDU,所以它的配置稳定了。

2个回答

这是一个持续的过程。它是连续的,因为根网桥(或任何其他网桥)可能会发生故障。如果 root 失败,则需要选择新的 root,如果其他人失败,则需要再次重新计算树的受影响部分。

为了防止拓扑中的循环,当树收敛时,有一个单独的机制将端口从非转发状态切换到转发状态,其工作方式或多或少类似于“等待 30 秒,在 30 秒内树肯定会收敛,因此它端口仍处于转发状态,打开转发是安全的”。

如果您以分布式算法 [*] 中定义的方式考虑“终止”,则没有这种终止。Root(以及其他所有人)认为它是一个根,除非它听说有更好的根(如果稍后将更好的根添加到拓扑中,或者更改了其他一些交换机的优先级,则可能会发生这种情况)。

每个给定的交换机如何决定何时停止根桥选择并进入下一阶段(根端口选择)?

不,从协议的角度来看,只有一个阶段,其中每个网桥处理收到的 PDU 并相应地采取行动。

网桥会考虑每个 LAN(包括它自己的)上的所有 BPDU 并决定谁是根网桥,谁是它所连接的每个 LAN 的指定网桥,以及他的根端口在哪里。然后它决定是否需要发送消息。

或者没有“选举停止”这样的事情,这是一个相当持续的过程?如果这个过程是连续的,是不是也意味着每台交换机每次收到更好的BPDU就开始选择根端口?

每次收到新的 BPDU 时都会发生上述情况。该协议在每个 PDU 上执行的完全相同。同样,这是必要的,因为协议需要处理网桥/交换机故障。

例如:具有 MAC "f" 的 SW1 从具有 MAC "e" 的 SW2 收到更好的 BPDU(因此 SW1 现在认为 SW2 是根网桥)并立即开始为 SW2 选择根端口,但在下一瞬间 SW1 收到偶数更好的来自 SW3 的 BPDU 和 MAC“a”,现在开始为 SW3 选举根端口,它继续发生,直到 SW1 不再收到更好的 BPDU,所以它的配置稳定了。

基本上是的。

注 1:BDPU 内间隔最小,因此 SW1 不能以每秒一条的速度发送新消息(请检查此值的标准)

注 2:根选举是根据网桥 ID 进行的。网桥 ID 是 <prio, MAC address> 的组合,其中 MAC 是 MAC 地址之一。Prio 在标准中设置为某个默认值(如果我没记错的话,是其最大值的一半),并且可以设置为其他值。这允许网络运营商配置,哪个网桥将被选择根(但如果没有人接触任何东西,协议仍然有效)。

注 3:根,即没有听说过比它自己的桥 ID 更好的桥,每 N 秒继续创建新的 BPDU(也称为周期 BPDU 或 hello BPDU)。这些作为一种保活,告诉大家根桥没有失败。这些 BPDU 的处理方式也与其他 BPDU 完全相同。在稳定状态下,它们将导致每个网桥在所有指定端口上发送根 BPDU 的副本,从而通知每个其他网桥/交换机树没有改变。

[*] 参见例如南希·林奇 (Nancy Lynch) 的书中的第 15.2

“选举”实际上是一个概念性的想法。每个网桥开始发送自己的网桥 ID 作为根网桥。如果它听到更好的 ID,它就会开始发送那个 ID。当所有网桥都发送相同的根 ID 时,我们说网络已经“收敛”,但网桥并不知道这已经发生了。根端口只是接收到根的最佳成本的端口。

根端口和/或根 ID 可以随收到的每个 BPDU 更改。