STP 的端到端传播延迟计算

网络工程 生成树
2022-02-19 01:52:04

在此 Cisco 网站https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/19120-122.html#f1上阅读有关 STP 计时器的大量详细信息时

我不明白他们是如何得出端到端传播延迟的公式的。

这是网站上的公式

端到端 BPDU 传播延迟 - 该值是 BPDU 从网络一端传播到另一端所需的时间量。假设直径为 7 跳,可能丢失 3 个 BPDU,hello 时间为 2 秒。在这种情况下,公式为:

End-to-end_BPDU_propa_delay
= ((lost_msg + 1) x hello) + ((BPDU_Delay x (dia – 1)) 
= ((3 + 1) x hello) + ((1 x (dia – 1)) 
= 4 x hello + dia – 1 
= 4 x 2 + 6 
= 14 sec

我不明白丢失的 BPDU 如何影响公式。他们假设我们可能会丢失 BPDU,但实际上这些 BPDU 是如何恢复的呢?由于只有以太网帧,因此没有恢复选项。

想象一下下面的网络图

(SW1)--(SW2)--(SW3)--(SW4)

SW1开始发送Hello BPDU(假设它的接口已经被激活。接口在发送它的BPDU之后将立即处于LISTENING状态。

这是我的问题:如果 BPDU 在 SW2 和 SW3 之间丢失;它永远不会达到 SW4。但是 SW1 在正常的转发延迟后仍将其 LISTENING 状态更改为 LEARNING,与 BPDU 丢失无关!因此,SW1 可以学习“损坏的”mac 地址,因为 SW4 不知道拓扑变化并且没有恢复方法。如果没有恢复均值;为什么“官方”公式包括几个数据包丢失(好像一个丢失可以由下一代 BPDU 恢复)?

我在这里做错了什么?

感谢您的时间和专业知识,

1个回答

丢失的 BPDU 只是保持丢失状态,无法恢复。相反,下一个 hello 间隔会发出一个新的 BPDU,该 BPDU 会继续传播链路状态。因此,当 BDPU 丢失时,需要一个额外的 hello 间隔才能通过网络。

此外,不转发 BPDU。每台交换机都会产生自己的 BPDU,并且只将它们发送给其直接邻居。STP BPDU 使用不由符合 802.1D 的网桥转发的多播寻址。即使帧本身没有被转发,它们的信息也会被传递。

正如您所指出的,生成树重新收敛的较长延迟是原始(和过时)802.1D STP 实施的问题。较新的协议版本 RSTP 和 MSTP 通过显式传播拓扑变化对拓扑变化的反应要快得多。

尽管如此,传播延迟可能是“深度”网络的一个问题——这是为数据链路层设计一个小直径网络的一个很好的理由。

因此,不要链接交换机,而是始终使用分层设计:(折叠)核心⇔访问。对于具有完整层次结构的大型网络,核心⇔分布⇔访问,至少在核心和分布之间使用路由。多路径路由可以比 STP 更好地处理冗余链路。