在交换机启动后,端口要过度到转发状态,需要会经历如下状态变化:

1.从initialization(初始化)到blocking

2.从blocking到listening或disabled

3.从listening到learning或disabled

4.从learning到forwarding或disabled

被disabled的端口相当于关闭,每个状态的功能如下:

Blocking:

丢弃所有收到的数据帧,不学习MAC地址,接收BPDU,但是不发送BPDU。

Listening:

丢弃所有收到的数据帧,不学习MAC地址,接收并处理BPDU,参与STP的计算

Learning:

丢弃所有收到的数据帧,学习MAC地址,接收并处理BPDU

Forwarding:

正常状态,转发收到数据帧,学习MAC地址,接收并处理BPDU

Disabled:

不是STP的一部分,端口被shutdown


当交换机启动后,都认为自己是根交换机,然后从所有接口向网络中发送BPDU,称为configuration BPDU,所以configuration BPDU是根交换机发出的。当交换机收到更优Bridge-ID 的configuration BPDU,会将它从自己所有接口转发出去,并保存在接口,如果收到差的configuration BPDU,则全部丢掉,所以在交换网络中,只有根交换机的BPDU在转发,其它普通交换机的BPDU不会出现在网络中。


根交换机的BPDU会在每个hello时间往网络中发送一次,hello时间默认为2秒钟,也就是交换机的BPDU会在每2秒钟往网络中发送一次,如果普通交换机在max-age时间内没有收到根交换机的BPDU,则认为根交换机已经失效,便开始重新选举BPDU,默认max-age时间为20秒,即10倍hello时间。除了hello时间和max-age时间外,还有一个forward delay时间,默认为15秒,接口在经过Listening 和Learning状态时,都会分别停留一个  forward delay时间,也就是说接口从Listening状态到Learning状态,最后变成转发状态,需要经过两个forward delay时间共计30秒。