STP(spanning tree protocol),生成树协议,用于在存在环路的网络中构建树形拓扑,避免环路,同时实现链路的冗余备份。
STP定义了几种重要的角色:
1、根桥(Root),树的根
2、指定桥,就是设备上行连接的一个设备
3、根端口,连接指定桥的端口
4、指定端口,链接下行设备的端口
                                             SW1
                                            /     \
                                           /       \
                                          /         \
                                         /           \
                             port A /              \
                                   SW2           SW3
                             port B|                 |
                                      |                 |
                                      |                 |
                                      |                 |
                            port C |                 |
                                   SW4            SW5
在上图中,SW1是根桥,SW2是SW4的指定桥,port A是SW2的根端口,port B是SW2的指定端口,port C是SW4的根端口。
在网络设备上使能了STP之后,设备之间通过发送和接收BPDU(Bridge Protocol Data Unit,就是STP的协议报文),构建树形拓扑。
BPDU中主要携带以下几个字段:
1、根桥ID,指明树的根是哪一台设备。每台设备都可以设置自己的ID,ID最小的设备成为树的根。
2、到根桥的路径开销
3、指定桥ID
4、指定桥的指定端口
5、hello time(BPDU发送时间间隔)
6、max age(BPDU消息最大生存时间)
7、message age(BPDU消息当前存活的时间)
8、forward delay(端口角色变化的时延)
在生成树构建过程中,每一台设备都从使能了STP协议的端口向外发送BPDU报文,同时也会从各个端口收到其他设备发送过来的BPDU报文。设备会比较收到的各个BPDU报文,选出一个最好的,然后根据这个BPUD报文确定端口角色(是根端口还是指定端口,或者是blocking的端口),当网络上的所有设备都完成这个过程之后,生成树就构建好了。
那么如何选择最好的BPDU呢?是按照下面的优先级进行比较的:
1、BPDU中根桥ID最小的最好
2、如果根桥ID相同,根路径开销最小的最好
3、如果根路径开销也相同,指定桥ID最小的最好
4、如果指定桥ID也相同,那么指定桥的指定端口最小的BPDU最好
构建好生成树之后,各个设备仍然需要按照hello time间隔向往发送BPDU报文,来对生成树进行保活。
对于一台设备的一个端口,如果在定时器时间内没有从该端口收到BPDU保活报文,那么说明网络拓扑已经发生了变化,该设备会重新进行生成树计算,重新指定端口角色,从而使网络重新生成一个新的生成树。
为了避免临时环路,端口由blocking状态转换的forward状态需要2倍的forward delay,这大大限制了STP的倒换性能。
STP协议的倒换时间可以控制在1s之内,不过这个倒换时间满足不了实际应用,于是RSTP协议产生了。
RSTP(Rapid spanning tree protocol),快速生成树协议,基本原理与STP相同,只不过在STP的基础了做了三点改进:
1、分别为根端口和指定端口定义了替换端口和备份端口,如果根端口被阻塞了,那么替换端口可以无时延的转换的转发状态(不用2倍的forward delay了),指定端口也是如此。
2、新定义了一个握手机制,上下行设备之间只需要一次简单的握手就可以使设备之间的链路处于转发状态
3、边缘端口可以无时延的转换的转发状态
由于上面的改进,RSTP的倒换时间可以控制在毫秒级。
需要注意的时,不是所有的根端口都有替换端口,也不是所有的指定端口都有备份端口,这取决于实际的网络环境,也就是说,不一定RSTP倒换的就会快。
待续。。。