我现在已经阅读了很多关于 STP 的内容。也许还不够,但要获得详细信息开始变得困难。
我已经了解所有网桥如何选择其根端口的机制。在交换了足够多的包含有关潜在根桥的信息的 BPDU 之后,有关真实根桥的信息将渗透到网络中,为每个桥提供到根桥的路径成本信息。然后,每个网桥都会将其根端口设置为路径成本最低的端口。但仅此一项并不能防止循环。在所有其他端口中,网桥必须将一些设置为指定角色,一些设置为非指定角色。后者将保持阻塞,而指定的最终将切换到转发模式。
我不明白,如何区分指定端口和非指定端口。在我看来,必须有一些关于不同方向的信息。假设网桥 A 离根网桥相当远,而网桥 B 是 A 的对等点。在某些时候网桥 A 必须告诉网桥 B:“嘿,我的根端口现在指向你,所以你必须创建对端端口你的一个指定的。”
但我没有找到任何参考资料,据我所知,BPDU 中没有关于此问题的信息。但是必须有一个机制,但我还看不到它。
编辑
为了更简洁:在一个网段上,可以连接许多网桥的许多端口。每个连接到该网段的网桥可能有 0 个或 1 个端口一个根端口。并且只要一个根端口连接到该网段,就必须将另一个网桥的一个端口转换为指定端口。我很明白这一点,但我觉得我必须把它写得更清楚。
我的问题仍然是:如何确定该段上的哪个端口将变成指定端口?STP 算法的哪一部分做出这个决定以及如何做出决定?
编辑
我添加了一张示例图片以使问题再次可见。假设有一个段,其中上半部分的两个交换机 A 和 G 在其指向上的端口上各自具有最小路径成本。因此,它们与被检查段的接口只能指定或不指定。我们有一个或多个其他交换机,它们在他们选择作为根端口的网络上有一个端口。
我知道下面的交换机包括 B 发送的 BPDU 清楚地表明,至少有一个根端口连接到该网段。这清楚地表明,需要一个指定端口来满足 B 的根端口和其他具有连通性的端口。但是,由于 BPDU 是多播的,因此不存在“链路伙伴”之类的东西。A 和 G 如何知道哪个端口必须指定或不指定端口?
本质上,当端口是另一侧的根端口(对于 STP 网桥)或边缘端口(端节点,无 STP 网桥)时,它会被指定。
802.1Q 第 13.4 条说
[编辑] 虽然现在所有端口都使用全双工模式(半双工模式仅存在最高 100 Mbit/s),但您正在询问共享媒体链接。嗯,这就是端口的点对点状态发挥作用的地方。全双工链路被认为是点对点的(参见 802.1Q 第 13.4 条),我的简化语句根端口或另一侧的边缘节点适用。
共享媒体链接使用上述 IEEE 802.1Q 引用中更通用的规则:如果该冲突域上的任何 STP 网桥选择有问题的端口作为其根路径,则指定本地端口。请注意,同一网段上的其他 STP 网桥要么选择同一个网桥来提供其根路径,要么使用另一个成本较低的端口通向网桥。