BPDU 包中有几个与时间相关的字段:
Bytes |
Field |
2 |
Protocol ID |
1 |
Version |
1 |
Message Type
|
1 |
Flags |
8 |
Root ID |
4 |
Cost of Path |
8 |
Bridge ID |
2 |
Port ID |
2 |
Message Age |
2 |
Maximum Time
|
2 |
Hello time
|
2 |
Forward Delay
|
这些时间字段是为了防环机制存在的,同时也决定了链路出现问题后,冗余链路启用,以至于整个拓扑收敛完成,达到稳定状态的时间。
这三个timers影响了STP的性能以及状态改变。
hello time:这个值决定了BPDU发送间隔,默认每2秒一次,可在1-10秒内取值。
forward delay:决定了listening与learning状态之间的切换时间,默认为15秒,可在4-30秒内取值
max age:控制一台交换机所能保存BPDU信息的最长时间,默认为20秒,可在6-40秒内取值
两种情况下,端口状态会由blocking向listening状态转变:
1、一台交换机的所有端口初始情况下均处于blocking状态,当它启动时,会将自已看作整个拓扑中的root bridge,所有的端口随之转入listening state。
2、一段时间内(20秒max age)交换机未收到其它交换机发来的BPDU包,会将自已端口转为listening状态。
在listening 状态下,端口可以send and receive BPDU包,但是无用户数据发送。在这个状态下,要做三件事:
1、elect root bridge
2、elect root port
3、elect designate port
所有处于root 或 designate state下的端口经过15秒的forward delay时间,将切换到learning状态,这个时候端口可以学习MAC地址,生成MAC地址表。但是也不能转发用户数据。
再经过15秒,剩余的处于root 和 designate 状态下的端口进入正常转发状态,即forwarding state,以便转发用户数据.
本文转自 ciscodocu51CTO博客,原文链接:http://blog.51cto.com/ciscodocu/52846,如需转载请自行联系原作者