没别的,就聊聊RSTP协议

系列文章目录

没别的,就聊聊自动驾驶网络



零、前言

上次说到STP的收敛时间,不知各位还记得吗?重新回忆一下蛤,快的话30秒,慢的话52秒。怎么想30秒的延迟都实在太久了,咱们有办法能够让网络快速稳定下来吗?今天咱们就聊聊,RSTP(Rapid Spanning Tree Protocol,快速生成树协议)怎么就让网络恢复稳定得快 “亿” 点!!!


一、STP有哪些能够优化的地方?

咱们慢慢来聊啊,先仔细想想,STP都有哪些能改进的地方,然后咱们再看看RSTP都改进了啥东西:

  1. STP划分了5种状态,但对于用户来说,其实只有三种状态:接口关闭,接口不可发数据,接口可收发数据。实际上没必要划分这么多状态。
  2. STP算法依赖于定时器,拓扑发生变化的时候需要等待定时器的结束。
  3. 根桥主动发出配置BPDU,而对于非根桥的设备只是处理配置BPDU,从而传到整个STP网络中,这效率实在太低了,拓扑变化时需要将TCN(Topology Change Notification,拓扑变化通知)报文传到根桥才能处理下一步。
  4. 对于直接连接用户终端设备(例如:个人电脑)的接口完全不用参与拓扑计算,毕竟终端设备接入就是直连,不会形成环路。

二、RSTP优化了上面的哪些问题?

答案:全解决了!!!

  1. RSTP将STP的5种状态减少到了3种:转发(Forwarding)、学习(Learning)、丢弃(Discarding)。
  2. 当拓扑发生变化时,不再需要将拓扑变化通知(TCN)报文传到根桥,而是交换机连续三次没接收到上游(当前节点的上一个节点)交换机发送的RST BPDU,重新与上游链路进行选举,然后通过P/A协商后,再根据情况切换接口状态。
  3. 上游交换机都会按照Hello Timer规定的时间间隔发送BPDU,这个过程都是设备自主进行的。
  4. 管理员可以手动配置边缘端口(PortFast),这个端口比较特别,不接受BPDU,不参与RSTP计算,但是可以快速从Discarding状态切换到Forwarding状态,但假如边缘端口接收到BPDU就会变成普通STP端口(比如终端用户自己接入一个交换机进来),从而引起网络震荡。
  5. 同时还增加了两种接口状态:Alternate端口与Backup端口
角色描述
BackupBackup端口作为指定端口的备份,提供了另外一种从根桥到非根桥的备份链路。
AlternateAlternate端口作为根端口的备份端口,提供了从指定桥到根桥的另一条备份路径。

三、STP与RSTP有哪些异同?

先看端口状态,废话不多说,直接上图表比较:

STP接口状态RSTP接口状态接口在拓扑中的角色
ForwardingForwarding包括根接口、指定接口
LearningLearning包括根接口、指定接口
ListeningDiscarding包括根接口、指定接口
BlockingDiscarding包括Alternate接口、Backup接口
DisabledDiscarding包括Disable接口

所以说RSTP站在用户的角度,将STP中间的侦听、学习时间缩短了:

  • Discarding状态:端口既不转发用户流量,也不学习MAC地址
  • Learning状态:端口不转发用户流量,但学习MAC地址
  • Forwarding状态:端口转发用户流量,也学习MAC地址

然后咱们再来看看BPDU报文,还记得之前STP第一篇文章说的STP配置BPDU报文格式吗?咱们来回忆一下:
BPDU报文格式
其中Flags字段仅仅包括两个字段:TCA(拓扑变化确认,Topology Change Acknowledgment)、TC(拓扑变化,Topology Change)

先看看下面这个图,单单看这两个报文是不是感觉一摸一样?其实就是RSTP借鉴STP的BPDU报文格式,只不过BPDU Type(BPDU报文类型)不一样,除此之外最关键的区分点在于RSTP将Flags字段包含了更多信息。
RST BPDU报文
在RST BPDU的Flags中定义了TCA(拓扑变化确认)、Agreement(同意)、Forwarding(转发)、Learning(学习)、Port Role(端口角色,例如指定端口、根端口等)、Proposal(协商)、TC(拓扑变化)

这里的协商(Peoposal)和同意(Agreement)(P/A机制)我们会在后面RSTP收敛过程中聊到,这两个字段就是使得RSTP快速收敛的“法宝”

四、RSTP如何做到比STP更快收敛的?

从“根源”下手,咱们来看看RSTP的收敛过程:

  1. 每台交换机启动后,都认为自己是“根桥”,并且发送RST BPDU。这个时候所有端口都是指定端口,且都处于Discarding(丢弃)状态。
    RSTP收敛过程(1)

  2. 交换机相互发送Proposal置位为1的RST BPDU,接收到对端的RST BPDU的更优的交换机会丢弃次优交换机发过来的RST BPDU,并且回复Proposal置位为1的本地RST BPDU。
    RSTP收敛过程(2)

  3. 左下角的交换机收到更好的RST BPDU,就停止发送自己的RST BPDU,并执行同步。(除Alternate端口与边缘端口之外,所有下游指定端口都变为Discarding状态)
    RSTP收敛过程(3)

  4. 阻塞完所有非边缘端口之后,会回应给上游交换机Agreement置为1的RST BPDU。
    RSTP收敛过程(4)

  5. 根桥接收到下游发送的Agreement置为1的RST BPDU报文时,上游交换机会立马将指定端口从Discarding(丢弃)状态切换到Forwarding(转发)状态,然后P/A协商继续向下传播。
    RSTP收敛过程(5)

也就是说,当链路上的P/A协商结束时,这条链路就能进入到转发状态了,比STP的两个Forwarding Delay不知道要快多少去了。

五、RSTP又是如何应对链路故障?

其实挺直接的,以前还需要一层层往上通知“大哥”,然后让“大哥”说怎么办,现在不用了,还记得上面说的设备自主进行上游RST BPDU接收吗?RSTP就借助这条特性,将网络拓扑得变化感知得更加迅速。

上游交换机都会按照Hello Timer规定的时间间隔发送BPDU,这个过程都是设备自主进行的。

当规定的连续3次Hello Timer时间间隔过去了还没接收到上游发下来的RST BPDU,就确定了本端口与对端口通信失败,然后重新进行RSTP计算。并且根据情况切换另外的端口状态(从Alternate Port切换到Root Port,并立即进入Forwarding状态),然后发送TC(Topology Change)置为1的报文,从而通知上游清除除了接收TC报文之外的端口的MAC地址表,再重新学习MAC地址。这一趟“操作”下来就能快速应对拓扑变化。

对了,别忘了咱们之前还说过有一种配置的端口叫做边缘端口(PortFast)吧?这个端口有点意思,不接受BPDU,也不参与计算,从Discarding状态直接切换到Forwarding状态,也就是说即使网络震荡了也和它没关系,该转发流量还是照常转发流量,是不是听起来感觉RSTP针对“快”的研究还是很下功夫的。


六、结尾

收敛快是快了,但现在来看,交换机要阻塞一个端口来生成一个树形结构,从而防止环路,但另外一个端口一直没用上,这么感觉也挺浪费的,毕竟设备贵,还不好好利用,插个口还用不上,所以在解决速度之后,又开始研究怎么才能把那些阻塞的端口也用上了,于是诞生了后面要聊的MSTP(多生成树协议,Multiple Spanning Tree Protocol )。不过在MSTP之前还有个小插曲,咱们先来聊聊另外一个技术:VLAN(虚拟局域网,Virtual Local Area Network),“虚拟”两字听起来是不是感觉头大了?可别被名字吓到,没别的,就聊聊而已。

上一篇 没别的,就聊聊STP协议(二)

下一篇 没别的,就聊聊VLAN

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫零NET

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值