RSTP看的比较混乱,先放一放1、RSTP BPDU报文格式相对于STP BPDU报文格式,RSTP与之相差不大,主要区别在于取消了TCN BPDU,Protocol Version ID字段值为0x
.
RSTP看的比较混乱,先放一放
1、RSTP BPDU报文格式
相对于STP BPDU报文格式,RSTP与之相差不大,主要区别在于取消了TCN BPDU,Protocol Version ID字段值为0x02代表RSTP,BPDU Type字段值为0x02代表RSTP BPDU,使用了Flags字段中的全部8位,另外还增加了Version 1 Length字段,该字段值为0x00代表本DPBU中不包含Version 1的内容,其含义表示该BPDU仅支持RSTP(0x02)、MSTP(0x03)、SPT(0x04)三种协议。
Protocol ID | Protocol Version ID | BPDU Type | Flags | Root ID | Root Path Cost |
2字节 | 1字节 | 1字节 | 1字节 | 8字节 | 4字节 |
Bridge ID | Port ID | Message Age | Max Age | Hello Time | Fonward Delay | Version 1 Length |
8字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 | 2字节 |
Protocol Version ID:协议版本号,生成树目前有三个版本,0x02代表RSTP。
BPDU Type:BPDU类型,0x02代表RSTP BPDU。
Flags:BPDU标志位,由8位组成,详细内容如下:
TCA | Agreement | Forwarding | Learning | Port Role | Proposal | TC |
1位 | 1位 | 1位 | 1位 | 2位 | 1位 | 1位 |
TCA:拓扑改变确认标志位。
Agreement:握手回应标志位,收到握手请求标志位被置一的BPDU后,若网桥的所有端口均处于Synced状态,则返回Agreement置位的BPDU。
Forwarding:转发状态标志位,该位被置一就表明发送此BPDU的端口处于转发状态。
Learning:学习状态标志位,该位被置一就表明发送此BPDU的端口处于学习状态。
Port Role:端口角色标志位,用于标识发送本BPDU端口的角色,包括:
00:Unknown 未知角色
01:Alternate/Backup Port 替换端口或备份端口
10:Root Port 根端口
11:Designated Port 指定端口
Proposal:握手请求标志位,用于向对端协商成为转发状态。所有处于Discarding/Learning状态的端口生成的BPDU都将Proposal置位,若收到对端Agreement置位的BPDU,则立即进入Learning状态,并在随后进入Forwarding状态。
TC:拓扑改变标志位。
2、RSTP端口角色
除了STP中原有的根端口和指定端口之外,RSTP还增加了替换端口、备份端口和边缘端口。
根端口:同STP。
指定端口:同STP。
替换端口:当根端口被阻塞后,替换端口将成为新的根端口。
备份端口:当指定端口失效后,备份端口将成为新的指定端口。
边缘端口:不与其他设备连接的端口,一般与用户终端连接。
3、RSTP端口状态
RSTP将STP中原有的监听、学习、转发、阻塞、禁用缩减为三个。
Discarding:禁止,RSTP将STP中的监听、阻塞和禁用合并为RSTP中的禁止状态。该状态下不能接收和转发数据,也不能学习MAC地址表,但可以接收BPDU。RSTP会在禁止状态下完成各端口的角色选举,被选举为根端口或指定端口的端口会进入学习状态,确定为替换端口和备份端口的会保持禁止状态。
Learning:学习,选举完成的根端口和指定端口会进入学习状态,该状态下端口工作内容与STP相同,学习MAC地址并随后进入转发状态开始收发用户流量。
Forwarding:转发,与STP一样,MAC地址学习完成的根端口和指定端口就会进入转发状态,开始收发用户流量。
4、RSTP工作过程
选举根桥:RSTP根桥选举过程与STP基本一致,开启RSTP协议的交换机启动后默认自己为根桥,此时所有端口进入禁止状态,并向相邻的其他设备发送BPDU报文,该报文中根桥ID就是发送设备自己的ID。比较过程与STP类似,并继续向相邻设备转发最优的BPDU报文,最终选出BPDU最优的根桥。
上图所示的网络中,由于交换机的默认优先级一致,所以比较其MAC地址得到SW1的优先级最高,故选SW1为根桥。
选举根端口:根桥选举完成后,根桥sw1会发送一个BPDU给相邻的交换机,该BPDU中Proposal被置位,其含义是告诉接收的设备若该BPDU是最优的则应将收到该BPDU的端口定为根端口,且立即进入转发状态,所以sw2-0和sw4-0将被选为根端口。而后sw2和sw4分别向相邻的设备发送BPDU,该BPDU中包含了前面路径的开销,且Proposal被置位。后面的设备会重复这个过程,路径开销与STP计算方式一样。
交换机 | 端口 | 路径开销 | 根端口 |
sw2 | sw2-0 | 19 | sw2-0 |
sw2-1 | 19+4+19 | ||
sw3 | sw3-0 | 19+19 | sw3-1 |
sw3-1 | 19+4 | ||
sw3-2 | 19+19+19+19 | ||
sw4 | sw4-0 | 19 | sw4-0 |
sw4-1 | 19+19+4 | ||
sw4-2 | 19+19+19+19+19 | ||
sw5 | sw5-0 | 19+19 | sw5-0 |
sw5-1 | 19+4+19+19 | ||
sw6 | sw6-0 | 19+4+19 | sw6-0 |
sw6-1 | 19+19+19 |
选举指定端口:进行根端口选举时,各交换机会向相邻的设备发送BPDU,收到该BPDU的设备若没有根端口则会将收到该BPDU的端口定为根端口,若设备已有根端口,则会将收到该BPDU的端口定为指定端口,将非最优的端口定为替换端口。