为了防止广播风暴和其他不必要的循环副作用,数字设备公司创建了生成树协议 (STP),该协议已被电气和电子工程师协会 (IEEE) 标准化为 802.1d 规范。本质上,生成树使用生成树算法 (STA),该算法会感知交换机有不止一种方式与节点通信,确定哪种方式最佳,并阻塞其他路径。很酷的是,它会跟踪其他路径,以防主路径不可用。
STP 的工作原理如下
每个交换机都被分配一组 ID,一个用于交换机本身,一个用于交换机上的每个端口。交换机的标识符,称为桥 ID (BID),长度为 8 字节,包含桥优先级(2 字节)以及交换机的一个 MAC 地址(6 字节)。每个端口 ID 长度为 16 位,由两部分组成:一个 6 位优先级设置和一个 10 位端口号。
每个端口都被赋予一个路径成本值。成本通常基于 802.1d 中建立的指导方针。根据原始规范,成本是 1,000 Mbps(1 吉比特每秒)除以连接到端口的网段带宽。因此,10 Mbps 连接的成本将为 (1,000/10) 100。
为了弥补网络速度超过千兆范围,标准成本已略有修改。新的成本值为
带宽 4 Mbps = 250 STP 成本值
带宽 10 Mbps = 100 STP 成本值
带宽 16 Mbps = 62 STP 成本值
带宽 45 Mbps = 39 STP 成本值
带宽 100 Mbps = 19 STP 成本值
带宽 155 Mbps = 14 STP 成本值
带宽 622 Mbps = 6 STP 成本值
带宽 1 Gbps = 4 STP 成本值
带宽 10 Gbps = 2 STP 成本值
您还应该注意,路径成本可以是由网络管理员分配的任意值,而不是标准成本值之一。每个交换机都会开始一个发现过程,以选择它应该为每个网段使用的网络路径。此信息通过称为桥协议数据单元 (BPDU) 的特殊网络帧在所有交换机之间共享。BPDU 的组成部分是
- 根 BID - 这是当前根桥的 BID。
- 到根桥的路径成本 - 这决定了根桥的距离。例如,如果数据必须通过三个 100 Mbps 网段才能到达根桥,则成本为 (19 + 19 + 0) 38。连接到根桥的网段通常具有零路径成本。
- 发送方 BID - 这是发送 BPDU 的交换机的 BID。
- 端口 ID - 这是发送 BPDU 的交换机上的实际端口。
- 所有交换机不断地相互发送 BPDU,试图确定各个网段之间的最佳路径。当交换机收到一个(来自另一个交换机)比它为同一网段广播的 BPDU 更好的 BPDU 时,它将停止在该网段上广播其 BPDU。相反,它将存储其他交换机的 BPDU 以供参考,并将其广播到劣质网段,例如那些离根桥更远的网段。
- 根桥是根据交换机之间 BPDU 过程的结果选择的。最初,每个交换机都认为自己是根桥。当交换机首次在网络上启动时,它会发送一个以其自身 BID 作为根 BID 的 BPDU。当其他交换机收到 BPDU 时,它们会将 BID 与它们已经存储为根 BID 的 BID 进行比较。如果新的根 BID 具有较低的值,它们会替换保存的 BID。但如果保存的根 BID 较低,则会向新交换机发送一个 BPDU,并将此 BID 作为根 BID。当新交换机收到 BPDU 时,它意识到自己不是根桥,并将其表中的根 BID 替换为刚刚收到的 BID。结果是,具有最低 BID 的交换机被其他交换机选举为根桥。
- 根据根桥的位置,其他交换机确定它们哪个端口到根桥的路径成本最低。这些端口称为根端口,并且每个交换机(当前根桥除外)都必须有一个。
- 交换机确定谁将拥有指定端口。指定端口是用于在特定网段上发送和接收数据包的连接。通过每个网段只有一个指定端口,所有循环问题都得到解决!指定端口是根据到网段根桥的最低路径成本选择的。由于根桥的路径成本为“0”,因此其上连接到网段的任何端口都将成为指定端口。对于其他交换机,会比较给定网段的路径成本。如果确定一个端口具有较低的路径成本,则它成为该网段的指定端口。如果两个或更多端口具有相同的路径成本,则选择 BID 最低的交换机。
- 一旦选择了网络网段的指定端口,连接到该网段的任何其他端口都将成为非指定端口。它们会阻止网络流量通过该路径,因此只能通过指定端口访问该网段。
每个交换机都有一张 BPDU 表,它会不断更新。网络现在被配置为单个生成树,根桥为主干,所有其他交换机为分支。每个交换机通过根端口与根桥通信,并通过指定端口与每个网段通信,从而维护一个无环路网络。如果根桥开始出现故障或网络问题,STP 允许其他交换机立即重新配置网络,由另一个交换机充当根桥。这个惊人的过程使公司能够拥有一个复杂且容错,但又相当易于维护的网络。