BPDU报文
为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU(Bridge Protocol Data Unit)中。BPDU有两种类型:配置BPDU和TCN BPDU。
配置BPDU中包含了足够的信息来保证设备完成生成树计算,其中包含的重要信息如下: |
||
报文字段 | 字节数 | 说明 |
PID | 2字节 | STP协议ID,该字段总是为0 |
PVI | 1字节 |
STP协议版本,
|
BPDU Type | 1字节 |
指示当前BPDU消息类型:配置BPDU和TCN BPDU
|
Flags | 1字节 |
标志
|
Root ID | 8字节 | 根桥ID,指示当前根桥的RID(即“根ID”),由2字节的桥优先级和6字节MAC地址构成 |
RPC | 4字节 | 根路径开销,指示发送该BPDU报文的端口累计到根桥的开销 |
Bridge ID | 8字节 | 桥ID,指示发送该BPDU报文的交换设备的BID(即“发送者BID”),也是由2字节的桥优先级和6字节MAC地址构成 |
Port ID | 2字节 | 端口ID,指示发送该BPDU报文的端口ID,即“发送端口ID” |
Message Age | 2字节 | 消息生存时间,指示该BPDU报文的生存时间,即端口保存BPDU的最长时间,过期后将删除,要在这个时间内转发才有效,如果配置BPDU是直接来自根桥的,则Message Age为0,如果是其他桥转发的,则Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文经过一个桥,Message Age增加1,如果Message Age大于Max Age,非根桥会丢弃该配置BPDU。 |
Max Age | 2字节 | 最大生存时间,指示BPDU消息的最大生存时间,也即老化时间 |
Hello Time | 2字节 | Hello消息定时器,指示发送两个相邻BPDU的时间间隔,根桥通过不断发送STP维持自己的地位,Hello time 是发送的间隔时间 |
Fwd Delay | 2字节 | 转发延时,指示控制listening和learning状态的持续时间,表示在拓扑结构改变后,交换机在发送数据包前维持在监听和学习状态的时间 |
STP 计时器
Hello Time是指运行STP协议的设备发送配置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥上修改才有效。 Message Age是从根桥发送到当前交换机接收到BPDU的总时间,包括传输延时等。如果配置BPDU是根桥发出的,则Message Age为0。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1。 Max Age是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的Message Age和Max Age进行比较:如果Message Age小于等于Max Age,则该非根桥设备会继续转发配置BPDU报文。如果Message Age大于Max Age,则该配置BPDU报文将被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为是网络直径过大,导致了根桥连接失败。 Forward Delay是指端口状态迁移时间。STP生成树需要一定的时间,如果选出来的根端口或者指定端口马上进入转发状态的话,可能就会总成临时工作环路。forward delay机制:新选出来的根端口和指定端口需要经过两倍的forward delay时间延时后才可以进入用户数据帧的转发状态,保证此时工作拓扑已无环路。 |