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

系列文章目录

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


零、前言

在第一篇STP文章中,咱们只是就STP的建立做了一些了解:怎么选举根桥,怎么选举根端口,怎么选举指定端口以及阻塞那些端口。站在我们的视角来看每个交换机以及它的端口处于各自的角色,但站在交换机的视角来看问题,是不是会不一样呢?咱们今天就来聊聊STP协议下的交换机的五种状态,以及当网络中拓扑发生变化时(设备变动或链路变动等等),交换机又如何应对这些计划之外的意外?


一、STP下的交换机有哪些状态?

状态名称状态描述
禁用(Disable)该接口不能收发BPDU,也不能收发业务数据帧,例如接口为down
阻塞(Blocking)该接口被STP阻塞。处于阻塞状态的接口不能发送BPDU,但是会持续侦听BPDU,而且不能收发业务数据帧,也不会进行MAC地址学习
侦听(Listening)当接口处于该状态时,表明STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习
学习(Learning)当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习
转发(Forwarding)处于该状态的接口可以正常地收发业务数据帧,也会进行BPDU处理。接口的角色需是根接口或指定接口才能进入转发状态
表1 五种STP状态

这次站在交换机角度,来想想交换机每个接口在各个状态都要做些什么:

  1. 禁用状态:“休眠阶段”,接口关闭,不管谁发的数据我都不接受。
  2. 阻塞状态:“潜水阶段”,不说话,但一直监听着,听完左耳朵进右耳朵出。
  3. 侦听状态:“群内选举管理员阶段”,通常这个时候各个交换机都在炫耀自己的“光辉事迹”,除了选举之外的事一点都不讨论。
  4. 学习状态:“相互认识阶段”,当管理员选完了,都得认识各位其他交换机了,等熟悉了各个交换机的路径开销,就能开始考虑干活了。
  5. 转发状态:“群聊开始”,现在知道群里各个交换机的路径信息了,就能愉快的传输数据了。当然,群主(根桥)会定时在群里喊话(BPDU),然后每个交换机就会从根端口接收,指定端口发送,一直传下去。

下面这张就是每个状态之间的切换流程图:
STP接口状态变化

图1 五种STP状态切换

还记得上一篇咱们提到过3个与时间相关的字段吗?重新放到下面帮各位回忆一下:

字段名描述
Max Age最大寿命,当一段时间未收到任何BPDU,生存期到达最大寿命时,网桥认为该接口连接的链路发生故障。默认20s
Hello Time根网桥连续发送的BPDU之间的时间间隔,默认2s
Forward Delay转发延迟,在侦听和学习状态所停留的时间间隔,默认15s
表2 三个时间相关报文字段

Forward Delay字段也了从学习状态到转发状态的延迟时间,也就是说,运气差到无底线的情况下,Hello包刚发完,链路就出问题,那最后要多久才能稳定?(网络从变化到稳定我们叫做 网络收敛 ,反之我们叫 网络震荡

总时间 = Hello报文间隔(0~2秒) + 最大寿命(20秒) + 转发延迟间隔(15秒,侦听状态到学习状态) + 转发延迟间隔(15秒,学习状态到转发状态) = 50~52秒!!!

想想这50秒~52秒的收敛时间,是不是也太长了点?那有没有办法稍微快点?比如这个“最大寿命(Max Age)的20秒”,就不能“干掉”得快一点吗?咱们接下来就聊聊STP中怎么才能让收敛快那么一点。

二、怎么才能收敛得快一点呢?

还是先来一张拓扑:

STP拓扑

图2 STP拓扑

然后咱们先介绍三种报文,TC报文,TCA报文与TCN报文:

  • TC(Topology Change,拓扑变化)报文:其实就是配置BPDU的Flags位中的Topology Change字段置为1而已。
  • TCA(Topology Change Acknowledgement,拓扑变化确认)报文:Flags位中的Topology Change Acknowledgement置为1。
  • TCN(Topology Change Notification)报文:包含协议标识、版本号和类型字段,只用于通知“拓扑变化”这个动作。

回忆一下哈,忘记的话也可以看看上一篇文章中的报文格式:

字段描述
Flags标志,STP只使用了该字段的最高及最低两个比特位,最低位是TC(Topology Change,拓扑变更)标志,最高位是TCA(Topology Change Acknowledgment,拓扑变更确认)标志
表3 Flags字段

假如咱们把右侧的线路直接断掉会怎么样呢?就能看到下面这样的报文交换的过程(起手抓个包):
STP拓扑变化后

图3 拓扑变化后的STP报文通信流程

截一个TC报文出来(TCA就是把上面的Topology Change Acknowledgement置为1):

TC报文

图4 捕获TC报文

相对而言,TCN报文就简洁多了,毕竟只是通知一下对端拓扑变化了而已,也截一个TCN出来看看:

TCN报文

图5 捕获TCN报文

那这三种报文有什么作用呢?这TCN将拓扑变化的消息传到根桥那里,然后根桥再下发TC来通知进行选举,然后咱们就成功得省去了最大寿命等待的20秒,是不是感觉稍微好一些了?


三、结尾

虽然说的确是借助TC、TCA、TCN省去了20秒,但依旧还有30秒~32秒的延迟,这也忍不了啊。所以为了改进STP,制定了STP的升级版本:RSTP(Rapid spanning Tree Protocol,快速生成树),这玩意儿能节省多少时间呢?下一篇文章咱们继续。

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

下一篇 没别的,就聊聊RSTP协议

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枫零NET

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

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

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

打赏作者

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

抵扣说明:

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

余额充值