计算机网络-RSTP工作过程与原理

前面我们已经学习了RSTP的一些基础概念以及对于STP的改进之处,因为RSTP兼容STP,所以实际上两者工作原理是一致的,这里只简单过一遍,然后进行一些基础实验即可,大致还是遵循选举根桥确定端口角色与状态全网收敛的思路。

一、RSTP 工作过程

1、初始化:RSTP收敛与STP收敛过程类似。每一台交换机启动RSTP后,都认为自己是"根桥",并且发送RST BPDU。所有端口都为指定端口,处于Discarding状态。
初始化

实际网络部署建议提前根据设备性能、网络架构规划网桥优先级。

2、上游链路的设备互联端口通过P/A机制,快速进入转发状态。

  • 缺省桥ID为32768,然后根据MAC地址确定根桥位置。
  • SW2收到更优的RST BPDU后,经比较认为SW1才是当前根桥,此时SW2的端口将成为根端口,而不是指定端口,停止发送RST BPDU。
  • SW1的端口进入Discarding状态,发送Proposal位置位的RST BPDU。SW2收到后阻塞除边缘端口以外的所有其他端口(该过程称为同步过程)。
  • SW2的各端口同步后,根端口立即进入Forwarding状态,并向SW1返回Agreement位置位的RST BPDU。SW1收到该报文后,会让指定端口立即进入Forwarding状态。

就是三台交换机互相发送RST BPDU,然后经过比较确定SW1为根桥 ,然后SW2和SW3连接SW1的接口为根端口。然后SW1通过两个接口发送Proposal位置位的RST BPDU ,SW2和SW3收到后将其它端口阻塞掉 ,确定SW2和SW3的各个端口角色(根端口、指定端口、边缘端口..),确定完成后根端口进入转发状态并回复SW1一个Agreement位置位的RST BPDU 。SW1收到后接口直接进入转发状态而不需要等待30S,实现指定端口快速转发与收敛。
P/A机制快速进行端口角色确认

3、下游链路的设备互联端口会进行新一轮的P/A协商,也就是SW2--SW3之间的端口角色确认。

如图,RSTP下游链路的设备互联端口会进入慢收敛过程,以SW2与SW3为例。
下游链路端口角色确认

其他下游设备比较:

  • 下游链路的设备互联端口会进行新一轮的P/A协商。
  • SW2的下游端口设置为指定端口,持续发送Proposal位置位的RST BPDU。
  • SW3的下游端口收到该BPDU后,发现不是本设备收到的最优BPDU,则会忽略,不会发送Agreement位置位的RST BPDU。
  • SW2的下游端口一直收不到Agreement位置位的回应报文,等待2倍的Forward Delay后,进入转发状态。

简单说就是SW2和SW3下游链路继续发送RST BPDU ,然后经过比较发现SW2的更优先,SW2就发送Proposal位置位的RST BPDU ,但是因为SW3从另外接口已经收到根桥的BPDU,因此SW2的不是最优,SW3不会回复Agreement位置位的回应报文 ,然后SW2经过30s自动进入转发状态,SW3的下游接口成为替代端口,最终整网拓扑收敛完成。

实际上SW1与SW2、SW3的P/A协商机制是同时进行,通过P/A快速确定根桥与根端口并进入转发状态,然后SW2与SW3因为不会发生A置位BPDU因此需要等待2个Forward Delay时间然后优先级更高的SW2成为指定端口。

二、Proposal/Agreement(P/A)协商机制

简单说P/A协商机制用于在初始化过程中或者新增链路时候使指定端口快速进入转发状态的机制。P/A机制是每段链路独立进行,速度较快。

下面以新增链路进行P/A协商为例:

1、新增链路端口都先成为指定端口发送RST BPDU
新增链路 发送RST BPDU

2、SW2 与SW1互联的端口收到更优的RST BPDU后成为根端口 ,那SW1端口就成为指定端口 了。然后SW1指定端口进入Discarding状态,发送Proposal位置位的RST BPSU。
通过BPDU确定互联端口角色

SW2收到P置位的报文,将除了根端口以外的端口进入Discarding状态(就是先禁用下),然后根端口进入转发状态并回复A置位的BPDU ,其它端口还是Discarding状态。

3、SW1收到A置位BPDU,指定端口立刻进入转发状态。
SW1收到A置位BPDU

因此SW1和SW2的根端口都进入了转发状态,SW2的下游端口继续进行P/A协商,一段段完成端口收敛。
下游链路继续协商

通过P/A协商机制可以使得指定端口快速进入转发状态,不需要等待2个Forward Delay时间。

总结:集团学习了RSTP的网络收敛与P/A协商机制。工作原理与STP大致一样,通过发送BPDU确定根桥,通过P/A机制使得指定端口与根端口快速进入转发状态。

本文由mdnice多平台发布

相关推荐
这个DBA有点耶18 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
空中湖2 天前
电池简史(五):极限之梦与终章——锂硫、锂空气、量子电池,以及你该知道的电池投资与生活指南
数据库·程序人生
言乐62 天前
技术员与健康
程序人生
️学习的小王2 天前
itnan.cc(艾恩网址导航):一款面向开发者的可私有化自定义导航站
程序人生·全文检索
可爱系程序猿2 天前
dinput8.dll 缺失导致游戏启动失败?DirectInput 和模组冲突排查记录
程序人生·游戏·电脑
郝学胜-神的一滴3 天前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
思维矩阵K3 天前
从“打螺丝宿命论”重思教育焦虑与阶级斗争的当代意义
程序人生
白鳯4 天前
《索拉里斯星》星海未知处,爱与理性的边界
程序人生·其他·读书·感悟·科幻小说·索拉里斯星·莱姆
郝学胜-神的一滴5 天前
Qt 高级编程 035:无边框窗口+自定义标题栏 完整实现详解
开发语言·c++·qt·程序人生·用户界面
CoderYanger5 天前
视频切割脚本(Python版)
linux·开发语言·windows·后端·python·程序人生·职场和发展