![生成树协议:如何选择端口为指定或非指定?](https://linux22.com/image/774502/%E7%94%9F%E6%88%90%E6%A0%91%E5%8D%8F%E8%AE%AE%EF%BC%9A%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9%E7%AB%AF%E5%8F%A3%E4%B8%BA%E6%8C%87%E5%AE%9A%E6%88%96%E9%9D%9E%E6%8C%87%E5%AE%9A%EF%BC%9F.png)
我现在已经阅读了很多关于 STP 的资料。也许还不够,但要获得详细信息已经变得困难了。
我理解了所有网桥选择根端口的机制。在交换了足够多的包含潜在根桥信息的 BPDU 之后,有关实际根桥的信息将渗透到网络中,为每个网桥提供到根桥的路径成本信息。然后,每个网桥将其根端口设置为路径成本最小的端口。但仅凭这一点并不能防止循环。网桥必须将所有其他端口中的一些设置为指定端口,将一些设置为非指定端口。后者将保持阻塞状态,而指定端口最终将切换到转发模式。
我不明白如何区分指定端口和非指定端口。我认为必须有一些关于不同方向的信息。假设网桥 A 距离根网桥较远,而网桥 B 是 A 的对等体。在某个时候,网桥 A 必须告诉网桥 B:“嘿,我的根端口现在指向你,所以你必须将你的对端端口设为指定端口。”
但我没有找到任何参考资料,据我所知,BPDU 中没有关于此问题的信息。然而,肯定存在一种机制,但我目前还看不到。
编辑
更简洁地说:在一个网络段上可以连接许多网桥的许多端口。连接到此网段的每个网桥可能有 0 个或 1 个根端口。并且,一旦一个根端口连接到此网段,另一个网桥的一个端口就必须变为指定端口。我非常理解这一点,但我觉得我必须写得更清楚。
我的问题仍然是:如何确定该网段上的哪个端口将变为指定端口? STP 算法的哪个部分负责做出此决定以及如何做出此决定?
编辑
我添加了一个示例图片,以便再次清晰地显示问题。假设有一个网段,上半部分的两个交换机 A 和 G 在其指向上的端口上各自具有最小路径成本。因此,它们到受检查网段的接口只能是指定的或非指定的。我们下面有一个或多个其他交换机,它们在它们选择的网络上有一个端口作为根端口。
我了解到,包括 B 在内的以下交换机发送 BPDU,明确表示至少有一个根端口连接到该段。这清楚地表明,只需要一个指定端口即可满足 B 和其他具有连接性的根端口。但是,由于 BPDU 是多播的,因此不存在“链接伙伴”之类的东西。A 和 G 如何知道哪个必须将其端口设为指定端口或非指定端口?
答案1
本质上,当某个端口是另一侧的根端口(对于 STP 网桥)或边缘端口(终端节点,无 STP 网桥)时,该端口即被指定。
802.1Q 第 13.4 条规定
根端口的端口角色 (13.12) 被分配给每个桥接器上提供到根桥的最低成本路径的一个端口,指定端口的端口角色被分配给每个桥接器上提供到根桥的最低成本路径的一个端口。提供从连接的 LAN 到根桥的最低成本路径。
[编辑] 虽然现在所有端口都使用全双工模式(半双工模式仅存在于 100 Mbit/s 以下),但您问的是共享媒体链接。好吧,这就是点对点端口状态发挥作用。全双工链路被视为点对点(参见 802.1Q 第 13.4 条),我的简化表述另一侧的根端口或边缘节点适用。
共享媒体链路使用上述 IEEE 802.1Q 引述中更通用的规则:如果该冲突域上的任何 STP 桥接器选择相关端口作为其根路径,则本地端口将被指定。请注意,同一网段上的其他 STP 桥接器要么选择同一桥接器来提供其根路径,要么使用另一个成本较低的端口连接该桥接器。