第一个 IEEE 标准化的STP也常称为“ 传统”STP,最初在802. 1D中进行了描述。
之后得到了改进,发布在所谓的修正案中:快速 STP( RSTP),在修正案802. 1w 中描述了它的标准化定义,
而修正案 802. 1s中描述了多STP( MSTP)。
此后,修正案被整合到现有的标准里。最新的 802. 1D - 2004 标准中完全没有包含传统的STP(认为已过时);相反,其中涵盖了原来在 802. 1w 中的RSTP。 802. 1s MSTP 被整合到 802. 1Q- 2005 及之后的修订版本中。
因此,对于当前的标准来说,RSTP涵盖在802. 1D中,MSTP涵盖在802. 1Q中,而传统STP被丢弃了。仍有许多人习惯于旧的命名方式,也就是使用802. 1D代指STP,802. 1w代指RSPT,802. 1s代指MSTP。
STP通过在交换机之间交互消息,使网络处于稳定的逻辑无环拓扑。
STP协议消息称为BPDU(网桥协议数据单元),基本结构如下所示:
对于STP来说,协议标识符字段设置为0x0000,协议版本字段设置为0x00。BPDU类型字段标识了两种类型的STP BPDU:配置BPDU(类型0x00)和TCN BPDU(拓扑变化通知BPDU,类型0x80)。标志字段使用8比特中的2比特来处理拓扑变化事件:TCA(拓扑变化确认)标志和TC(拓扑变化)标志。标志位之后,有一系列字段分别标识了根桥、BPDU发送方距离根桥的距离、发送方网桥的自我标识符,以及发送方网桥上转发此BPDU的端口标识符。消息老化字段是BPDU自从被根桥生成后的老化时间。在根桥上,该值被设置为0。任何其他交换机会递增这个值,通常它们会在进一步转发此BPDU前加1。BPDU被交换机收到之后的剩余生存时间为最大老化(MaxAge)减去消息老化值(MessageAge)。最后,剩余的字段携带STP计时器值:最大老化、Hello时间、转发延迟(Forward Delay)。这些计时器值总是反映根交换机上的计时器设置。非根交换机上配置的计时器并不使用,这些设置会在交换机成为根交换机后生效。
STP会比较两个配置BPDU并确定哪个最优,其他为次优,按以下顺序比较:
根桥ID(RBID)
根路径开销(RPC)
发送方网桥ID(SBID)
发送方端口ID(SPID)
接收方端口ID(RPID,不包含在bpdu中,在本地计算)
越小越优,只比较配置bpdu,tcn bpdu不承载用于构建无环拓扑的信息。
STP中的每个端口都会保存它发送或接收的最优BPDU。如果一个端口保存了它收到的bpdu,它必须在最大老化减去消息老化时间的间隔内再次收到,否则这个bpdu就会在此时间后超时。配置bpdu简称hello bpdu或hello。因为它受制于hello计时器。