这是一个持续的过程。它是连续的,因为根网桥(或任何其他网桥)可能会发生故障。如果 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章