计算机网络-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多平台发布

相关推荐
Xiao Fei Xiangζั͡ޓއއ6 小时前
一觉睡醒,全世界计算机水平下降100倍,而我却精通C语言——scanf函数
c语言·开发语言·笔记·程序人生·面试·蓝桥杯·学习方法
糊涂君-Q8 小时前
Python小白学习教程从入门到入坑------第三十一课 迭代器(语法进阶)
python·学习·程序人生·考研·职场和发展·学习方法·改行学it
吾店云建站21 小时前
WordPress 6.7 “Rollins”发布
科技·程序人生·职场和发展·创业创新·程序员创富
Tiger Z1 天前
文献阅读 | Nature Methods:使用 STAMP 对空间转录组进行可解释的空间感知降维
程序人生
少喝冰美式2 天前
大语言模型在序列推荐中的应用
人工智能·程序人生·自然语言处理·大模型·大语言模型·计算机技术·大模型应用
百晓生说测试2 天前
15:00面试,15:08就出来了,问的问题有点变态。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展
提笔惊蚂蚁2 天前
java-web-苍穹外卖-day1:软件开发步骤简化版+后端环境搭建
java·开发语言·前端·程序人生
吾店云建站2 天前
使用ACF插件向WooCommerce商城产品添加自定义字段
程序人生·职场和发展·创业创新·流量运营·程序员创富
程序员曦曦3 天前
一文熟悉redis安装和字符串基本操作
自动化测试·软件测试·数据库·redis·功能测试·程序人生·缓存
看山还是山,看水还是。3 天前
Oracle 外键
运维·数据结构·数据库·笔记·程序人生·oracle·全文检索