STP协议的核心是BPDU报文
BPDU报文:Root BridgeID | Cost | BridgeID| PortID
其初始值为:BridgeID | 0 | BridgeID | PortID
- Root BridgeID:Root Bridge 的 BridgeID
- Cost:本Bridge 到Root Bridge的距离,实际上,其是由逐步更新逐渐生成的。
- BridgeID :网桥ID,由Bridge Priority 和 Bridge MacAddress组成,其数值可以作为一个有效的定序尺度。
BridgeID = Bridge Priority<<48 + MacAddress - PortID:端口ID,其由Port Priority 和 Port Index组成,其数值可以作为一个有效的定序尺度。
BPDU报文可以比较大小,比较方法按元组(Root BridgeID ,Cost ,BridgeID,PortID )的比较方式。
如果一个Bridge 有 N 个 Port, 那么其在同一时刻自己有N种BPDU报文,一个 Port 一种。
生成树步骤:
1.分别从自己的Port 出发,分享自己的这个Port的BPDU 到相连的LAN上
2.接收来自LAN上的BPDU,如果这个Port收到的BPDU比这个Port的BPDU好(值更小),那么更新本Port的BPDU。
3.循环1,2
输出:
- 找到本Bridge中使BDPU.Cost最小的那个Port,然后把这个Port打上标记 [Root Port , R]
- for 本Bridge的 each Port:
如果发现这个Port收到的BPDU中的Cost都比自己的这个Port的BPDU大,
那么把这个Port打上标记[Designated Port ,D]