指定端口在 STP 算法中的意义是什么?我没有达到他们的目标,我们有 RootPort 和 DesignatedPort
生成树-指定端口
我会尽量回答这个问题,让你明白这个想法,而不是深入细节。
STP 构建一棵树。因此,从您通过这棵树的方向的角度考虑这些端口角色 - 上游(到根网桥)或下游(从根网桥)。
根端口基本上是一个上行端口,而指定端口是一个下行端口。根端口从根桥接器(直接或间接)接收 BPDU,缓存它们,并复制它的指定端口。
为什么这有关系?STP 的最终目标是确保拓扑中的任意两点之间只有一条逻辑路径 - 这就是它如何使拓扑无环路。这就是为什么每台交换机可能只有一个根端口的原因——这是交换机上到达根网桥的唯一出口点。
相反,指定端口是发送 BPDU 并将网段连接到根网桥的端口(这就是为什么根网桥将其所有端口都设为指定端口)。因此,每个交换机有多个指定端口 - 与特定交换机服务的物理段(从端口到端口,或者像 matteo 提到的冲突域)的数量一样多。记住 STP 的目标,很明显每个网段可能只有一个指定端口(以确保从网段到根网桥的逻辑路径只有一个)。
这些端口角色正是关于树的实际构建方式。一旦选择了根网桥,您就拥有了树的根。现在,您需要构建树本身。
该树以下游方式构建,即从根桥向下到拓扑的其余部分。这是通过交换 BPDU 来完成的。在大多数 STP 版本中(我不会在这里接触 STP 工具包或 MSTP 中的不同“添加”,以避免使事情过于复杂)根桥是 BDPU 的唯一来源——其余的交换机只是接收它们,缓存一段时间,然后复制拓扑下游(更改其中的几个参数)。看下图,想象一下构建树的过程:

- 根桥被选举出来,它的所有端口都被指定。已经存在根桥的事实意味着,到目前为止,所有交换机都拥有构建树所需的所有信息——它们交换 BDPU 有一段时间了,现在他们只知道根桥是谁以及它位于何处,就术语而言方向(端口)、距离(到达它的成本)以及到达它的路上的上游交换机。
- 每个下游网桥都选择一个根端口 - 到根的路径。
- 一旦选择了根端口,每个网桥就会选择它的指定端口。
- 如果指定端口(下游端口)也接收 BPDU,这意味着它连接到类似的指定端口 - 即你有两个端口都通向根桥 - 这直接违反了 STP 的目标,因为你有两个逻辑路径到同一点(根桥),它本质上是一个循环(想象帧从根桥流出,从这些指定端口之一退出并进入另一个端口,回到根桥)。因此,为了避免这种情况,STP 只是简单地阻塞了其中一个端口,从而打破了环路。
实际上,您可能会发现在网段方面处理生成树操作很有用。
段是一个冲突域,或者从技术上讲,是网络的一部分,其中连接的设备使用相同的物理层。
因此,例如,连接交换机端口和 PC 的 5 类线是一个网段,如果 2 个不同交换机的 2 个交换机端口连接到分配了公共 IP 子网的旧集线器,则这两个端口在同一网段上, 等等。
从生成树的角度来看,在单个网段中只允许1个交换机端口向该网段转发帧,并且它是指定端口,其他任何端口都应该被阻塞,除非有交换机选择该网段为最佳到根桥的路径。
事实上,每个交换机都会选择它的哪个网段是到达根网桥的最佳网段(并且它定义了一个且只有一个根端口)。
因此,在没有任何人选择作为通往根网桥的路径(即我们树的叶子)的段中,会选择一个指定端口并负责将帧转发到该段中。在一个或多个交换机用于到达根网桥的段中(即我们树的一个节点 - 例如级联的 2 个交换机之间的典型连接),具有最佳 BID 的交换机的交换机端口将处于指定模式,所有其他交换机在根模式下各有 1 个端口。
换句话说,指定端口将流量从 STP 树的根转发到其叶子,而根端口将帧从叶子和节点转发到根(或适当的中间注释)。
