STP报文格式
在前面的章节中介绍了桥ID、路径开销和端口ID等信息,所有这些信息都是通过BPDU协议报文传输。
- 配置BPDU是一种心跳报文,只要端口使能STP,则配置BPDU就会按照Hello Time定时器规定的时间间隔从指定端口发出。
- TCN BPDU是在设备检测到网络拓扑发生变化时才发出。
BPDU报文被封装在以太网数据帧中,目的MAC是组播MAC:01-80-C2-00-00-00,Length/Type字段为MAC数据长度,后面是LLC头,LLC之后是BPDU报文头。以太网数据帧格式如图9-6所示。
配置BPDU
通常所说的BPDU报文多数指配置BPDU。
在初始化过程中,每个桥都主动发送配置BPDU。但在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他桥在收到上游传来的配置BPDU后,才触发发送自己的配置BPDU。配置BPDU的长度至少要35个字节,包含了桥ID、路径开销和端口ID等参数。只有当发送者的BID或端口的PID两个字段中至少有一个和本桥接收端口不同,BPDU报文才会被处理,否则丢弃。这样避免了处理和本端口信息一致的BPDU报文。
- 只要端口使能STP,则配置BPDU就会按照Hello Time定时器规定的时间间隔从指定端口发出。
- 当根端口收到配置BPDU时,根端口所在的设备会向自己的每一个指定端口复制一份配置BPDU。
- 当指定端口收到比自己差的配置BPDU时,会立刻向下游设备发送自己的BPDU。
配置BPDU报文基本格式如表9-7所示。
域 |
字节 |
说明 |
---|---|---|
Protocol Identifier |
2 |
总是0。 |
Protocol Version Identifier |
1 |
总是0。 |
BPDU Type |
1 |
当前BPDU类型:
|
Flags |
1 |
网络拓扑变化标志:
|
Root Identifier |
8 |
当前根桥的BID。 |
Root Path Cost |
4 |
本端口累计到根桥的开销。 |
Bridge Identifier |
8 |
本交换设备的BID。 |
Port Identifier |
2 |
发送该BPDU的端口ID。 |
Message Age |
2 |
该BPDU的消息年龄。 如果配置BPDU是根桥发出的,则Message Age为0。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文经过一个桥,Message Age增加1。 |
Max Age |
2 |
消息老化年龄。 |
Hello Time |
2 |
发送两个相邻BPDU的时间间隔。 |
Forward Delay |
2 |
控制Listening和Learning状态的持续时间。 |
标志字段如图9-7所示,STP中只使用了其最高位和最低位。
TCN BPDU
TCN BPDU内容比较简单,只有表9-7中列出的前3个字段:协议号、版本和类型。类型字段是固定值0x80,长度只有4个字节。
- 端口状态变为Forwarding状态。
- 指定端口收到TCN BPDU,复制TCN BPDU并发往根桥。