生成树协议--STP及RSTP
STP
普通生成树的帧的源MAC以自己的接口MAC地址,目的MAC地址为0180-C200-0000来发送的,如果交换机未开启生成树协议收到目的地址为0180-C200-0000的帧会直接丢弃该数据帧
普通生成树的帧格式如下:
Protocol Identifier:协议标识,生成树协议只能为0x0000,无论是RSTP和MSTP
Protocol Version Identifier:协议版本标识,普通生成树为0,RSTP为2,MSTP为3
BPDU Type:配置BPDU为0x00,TCN的BPDU为0x80,RSTP和MSTP为0x02
BPDU flags:普通生成树协议使用了0bit和7bit位,分别代表了TCA和TC帧
选举规则如下:
1.选举ROOT
比较BID,BID包括优先级和MAC地址,优先级默认为32768,调整只能是4096的倍数,越小越优
2.选举RP
<1>比较到达ROOT的路径开销
<2>比较发送者(对端)的BID
<3>比较发送者(对端)的PID
<4>比较本端的PID
3.选举DP
<1>比较到达ROOT的路径开销
<2>比较发送者(本端)的BID
<3>比较发送者(本端)的PID
注:以上选举规则都是越小越优,且发送方一定要注意
拓扑改变的判定唯一规则为:端口状态迁移为forwarding状态。
端口状态
1.disable
2.blocking 接受BPDU
3.listening 确定端口的角色,收发BPDU
4.learning 学习mac,收发BPDU
5.forwarding 学习MAC,收发BPDU
端口角色
1.AP
2.DP
3.Blocking Port(BP)
故障的处理方法及时间
1.直连故障:
直连故障是针对具有阻塞端口的交换机来判定的,即SW3的G2口故障之后,SW3本身是可以感知到RP端口DOWN掉,此时SW3的G1接口直接经过两个forwarding delay(30S)端口角色由BP转变为RP,状态由discarding变为forwarding
2.非直连故障
当SW2的G1接口接收不到根桥的BPDU之后,SW2等待最近从SW1接收到的BPDU老化之后(需要20S),会认为自己是根桥,通过G2接口发送BPDU,当SW3的G1接收到SW2的次优BPDU之后会对比本地保存的BPDU,发现没有本地保存的BPDU更优,故丢弃SW2发送过来的BPDU,并且将G1接口经过两个forwarding delay转变为DP接口(30S),向SW2发送更优的BPDU,当SW2的G2接口接收之后将G2装变为RP接口。所以非直连故障恢复正常需要50S
注:当拓扑发生改变时,交换机的接口会发送TCN的BPDU,该BPDU被其他交换机的接受之后,向下游的交换机发送TCA置位的BPDU,且复制该BPDU向上游发送直至ROOT接受,当根桥接受之后会发送TC置位的BPDU,通知所有交换机刷新其MAC地址表。
TCN的BPDU只能有DP处理,当RP接受到了TCN的BPDU之后会直接丢弃该BPDU
RSTP
报文格式:
不同于普通STP协议的是在BPDU Flags位中增加了P/A置位、端口角色及端口状态;RP为1,AP/BP为2,DP为3
端口状态
1.discarding:将STP中的disable、blocking及lisening合称为discarding
2.learning
3.forwarding
端口角色
1.RP
2.DP
3.BP:作为DP端口的备份,如果DP端口出现故障,BP端口直接变为forwarding
4.AP:作为RP端口的备份,可以直接转变为RP
根据端口收到更优BPDU的转发桥ID来判断。 如果更优BPDU的转发桥ID不是自己, 那么这个端口就是AP; 如果更优BPDU的转发桥ID是自己, 那么这个端口就是BP
故障判定
若一个端口超过3个hello time未收到BPDU报文,则代表故障;阻塞端口如果接收到次优的BPDU报文,2个hello time以后进行选举。如果上连接口故障,则直接进行PA协商。
当发生故障时,RSTP不再是只有根桥发送TC置位的BPDU报文,所有的交换机都会发送TC置位的BPDU报文。
标准PA协商
SW1和SW2进行PA协商时,第一步双方互相发送P置位的BPDU报文,当SW2收到SW1的报文发现SW1发送的BPDU更优则同步相关参数,阻塞除G1和边缘端口之外的所有端口,第二步,SW1回复给SW2一个A置位的BPDU并且将自己的端口角色和端口状态迁移为RP和forwarding,第三步,当SW1收到A置位的BPDU之后将自己的端口角色及端口状态变为DP和forwarding。
SW时2和SW3进行PA协商时互相发送P置位的BPDU,但是由于SW3的G1口为AP端口不会回复A置位的BPDU,等待2个forwarding delay之后将端口角色转变为AP并将端口状态转变为discarding。
增强式PA协商
以SW1和SW2为例:第一步,双方互相发送P和A同时置位的BPDU,第二步,当SW2接收到该BPDU时对比相关参数,将端口转变为RP且forwarding状态,并且向SW1发送A置位的BPDU报文,第三步,当SW1收到该BPDU时将端口变为RP且forwarding。
安全特性
1.BPDU保护:如果一个边缘端口开启了BPDU保护,收到了一个BPDU报文,则该端口直接shutdown
2.LOOP保护:在具有阻塞端口的交换机上使用,当RP收不到BPDU时,直接将RP的状态置为discarding状态
3.TC保护:在单位时间内处理TC的次数,如果超过该的次数,则直接丢弃之后收到的所有TC报文
4.ROOT保护:在所有的指定端口使用,当指定端口收到更优的BPDU报文时,将该指定端口状态置为discarding
边缘端口
一般用于连接PC及其他终端,连接终端时直接将端口状态置为forwarding状态,如果边缘端口收到BPDU报文时,则丧失边缘端口的属性。
边缘端口的缺陷:
1.容易造成临时性环路
当SW1开启边缘端口时,G1和G2立即进入forwarding状态,此时产生了临时性环路,直至G1和G2接口收到对方的BPDU,将边缘端口属性丧失,进行正常生成树协商,最终阻塞G2接口消除环路。
2.造成永久性环路
假使SW1开启生成树且将G1、G2设置成了边缘端口,SW2关闭生成树协议,此时会造成永久环路。。。。