STP与RSTP简介

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倒换的就会快。




1、当拓扑建立起来自后,所有网桥仍然从指定端口向外发送BPDU报文

2、如果某端口接收BPDU超时了,则该桥认为需要重新计算生成树,于是以自己为根桥,从所有端口向外发送BPDU报文

3、STP与RSTP的报文格式有所区别,STP包括TCN、TC、TCA报文和configure报文,RSTP只有一种configure报文,该报文中携带的一个字节的标志位可以标志7种报文:TC、握手、端口类型(根端口、指定端口、替换端口、备份端口)、learning、forwarding、握手的ACK、TCA

4、RSTP的握手在拓扑改变的过程中进行。在拓扑改变的过程中,如果某网桥的discarding端口要变为forwarding状态,则通过与下面的网桥进行一次握手就可以实现。而对于STP来说,由blocking到forwarding只能通过等待2倍的forward delay实现,这也说明了为什么RSTP要比STP倒换的快。

5、握手过程:SWA端口向下发握手请求——SWB收到请求的网桥把自己所有forwarding的端口阻塞掉,然后响应该握手请求,向上发送握手ACK,同时把收到握手请求的端口置为forwarding——SWA收到握手ACK后,把端口状态置为forwarding——SWB通过阻塞掉的端口向下(SWC)发握手请求,如此循环,握手不断向下传播。

6、对于STP,某个网桥发现拓扑改变(有端口由阻塞变转发)之后,主动向根桥发送拓扑改变TCN报文,根桥收到后发送应答TCA报文,并且从所有指定端口发送TC报文,其他桥收到TC报文后,清FDB表并从所有指定端口转发TC报文。

7、对于RSTP,某个网桥发现拓扑改变(有端口由阻塞变转发)之后,从根端口发送带有TC标志的config报文并清FDB表,其他桥收到该报文后,清FDB表并从根端口和指定端口发送带有TC标志的config报文。


你可能感兴趣的:(网络)