华为---RSTP(三)---P/A机制及RSTP的生成树形成过程

2024-02-25 14:04

本文主要是介绍华为---RSTP(三)---P/A机制及RSTP的生成树形成过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1. P/A机制简介

1.1 P/A机制的作用

1.2 P/A协商的前提条件

1.3 RSTP选举思路

2. P/A协商过程

3. 举例说明RSTP的生成树形成过程

3.1 示例环境要求

3.2 RSTP的生成树形成过程

3.2.1 SW和SW1之间链路上抓包分析

3.2.2 SW和SW2之间链路上抓包分析

3.2.3 SW1和SW2之间链路上抓包分析

3.2.4 SW2和SW3之间链路上抓包分析

3.2.5 SW1和SW3之间链路上抓包分析

3.2.6 备份端口选举抓包分析


1. P/A机制简介

P(Proposal)/A(Agreement)机制---请求/确认机制
        P/A机制        P:Proposal-协商        A:Agreement-同意
        P/A机制是RSTP( Rapid Spanning Tree Protocol,快速生成树协议)中的一个关键组成部分,它允许指定的端口在满足一定条件下快速进入转发状态,而无需等待定时器的超时。

1.1 P/A机制的作用

        为了使生成树链路上的端口(根端口、指定端口)快速进入转发状态,不用等待30秒延时(2个转发延时)。

1.2 P/A协商的前提条件

        P/A机制的触发前提是DP端口处于Discarding状态,两台交换设备之间链路必须是点对点的全双工模式,一旦P/A协商不成功,指定端口到转发状态就需要等待两个转发延时(30秒),协商过程与STP一样。

1.3 RSTP选举思路

        RSTP选举原理和STP本质上相同:选举根交换机->选举非根交换机上的根端口->选举指定端口->选举预备端口和备份端口。
        事实上对于STP,指定端口的选择可以很快完成,主要的速度瓶颈在于:为了避免环路,必须等待足够长的时间,使全网的端口状态全部确定,也就是说必须要等待至少一个Forward Delay所有端口才能进行转发。而RSTP的主要目的就是消除这个瓶颈,通过阻塞自己的非根端口来保证不会出现环路。而使用P/A机制加快了上游端口转到Forwarding状态的速度。

        RSTP在选举的过程中加入了“发起请求-回复同意”(P/A机制)这种确认机制,由于每个步骤有确认就不需要依赖计时器来保证网络拓扑无环后才进入转发状态,只需要考虑BPDU发送报文并计算无环拓扑的时间(一般都是秒级)。解决了STP网络收敛慢问题。

2. P/A协商过程

        如下图所示,根桥S1和S2之间新添加了一条链路。在当前状态下,S2的另外几个端口p2是Alternate端口,p3是指定端口且处于Forwarding状态,p4是边缘端口。

        Proposal/Agreement过程示意图

新链路连接成功后,P/A机制协商过程如下:

  1. p0和p1两个端口马上都先成为指定端口,发送RST BPDU。
  2. S2的p1口收到更优的RST BPDU,马上意识到自己将成为根端口,而不是指定端口,停止发送RST BPDU。
  3. S1的p0进入Discarding状态,于是发送的RST BPDU中把proposal置1。
  4. S2收到根桥发送来的携带proposal的RST BPDU,开始将自己的所有端口进入sync变量置位。
  5. p2已经阻塞,状态不变;p4是边缘端口,不参与运算;所以只需要阻塞非边缘指定端口p3。
  6. 各端口的synced变量置位后,p2、p3进入Discarding状态,p1进入Forwarding状态并向S1返回Agreement位置位的回应RST BPDU。
  7. 当S1判断出这是对刚刚发出的Proposal的回应,于是端口p0马上进入Forwarding状态。

        上述P/A机制协商过程是华为官方资料描述,说明了两个RSTP交换机端口之间新加链路的P/A协商过程,没有讲述整个RSTP网络如何进行P/A协商的?生成树如何形成的?。

3. 举例说明RSTP的生成树形成过程

3.1 示例环境要求

        组网如下图所示,提前配置SW为根交换机,所有交换机都配置成RSTP模式。为便于网络数据抓取,每两台交换机之间用两台集线器hub相连,先开启所有集线器,然后在集线器间的节点上抓取数据,最后选中所有交换机点击开启设备。

3.2 RSTP的生成树形成过程

        通过抓包分析根交换机、根端口、指定端口、预备端口和备份端口的选举,RSTP的生成树形成过程。

3.2.1 SW和SW1之间链路上抓包分析


        SW的Eth 0/0/1和SW1的Eth 0/0/3两个端口马上都先成为指定端口,并处于Discarding状态,发送Proposal位置位1的RST BPDU。

        SW1的Eth 0/0/3口收到更优的Proposal位置位1的RST BPDU:
        (1)马上意识到自己将成为根端口,而不是指定端口;
        (2)阻塞除SW1的Eth 0/0/3口和边缘端口外的所有端口;
        (3)给SW的Eth 0/0/1口回复Agreement位置位1的RST BPDU;
        (4)SW1所有非边缘端口发送Topology Change位置位1的RST BPDU,更新Mac地址表;
        (5)停止发送RST BPDU。

        SW交换机收到P/A请求的回应后:
        (1)SW的Eth 0/0/1端口马上进入Forwarding状态;
        (2)SW的所有指定端口发送Topology Change位置位1的RST BPDU,更新Mac地址表。

        到此SW的Eth 0/0/1端口和SW1的Eth 0/0/3端口之间的链路P/A协商完成,SW为根交换机,SW的Eth 0/0/1为指定端口,SW1的Eth 0/0/3为根端口。

3.2.2 SW和SW2之间链路上抓包分析

        分析过程和SW的Eth 0/0/1端口至SW1的Eth 0/0/3端口之间的链路P/A协商一样,不再赘述,确认SW为根交换机,SW的Eth 0/0/2为指定端口,SW2的Eth 0/0/3为根端口。

3.2.3 SW1和SW2之间链路上抓包分析


        SW1的Eth 0/0/1和SW2的Eth 0/0/1两个端口马上都先成为指定端口,并处于Discarding状态,发送Proposal位置位1的RST BPDU。

        上述图说明P/A协商失败,SW2交换机发送了约15秒的P置位 RST BPDU,SW2的Eth 0/0/1端口进入Learning状态,15秒后进入forwarding状态。

        一旦P/A协商不成功,指定端口的选择就需要等待两个Forward Delay,协商过程与STP一样,SW1和SW2交换机根交换机ID和根路径开销都一样,所以按照STP指定端口选举规则进行选举,需要通过比较各自的交换机ID(BID)选举指定端口,SW1的ID是32768.4c1f-ccbe-6957,SW2的ID是32768.4c1f-cc16-6c7a,SW1的ID大于SW2的ID,所以SW2的Eth 0/0/1口为指定端口,SW1的Eth 0/0/1口为预备端口。

3.2.4 SW2和SW3之间链路上抓包分析

        分析过程和SW的Eth 0/0/1端口至SW1的Eth 0/0/3端口之间的链路P/A协商一样,不再赘述,确认SW为根交换机,SW2的Eth 0/0/2为指定端口,SW3的Eth 0/0/1为根端口。

3.2.5 SW1和SW3之间链路上抓包分析

        SW1的Eth 0/0/2和SW3的Eth 0/0/2两个端口马上都先成为指定端口,并处于Discarding状态,发送Proposal位置位1的RST BPDU。

        上述图说明P/A协商失败,SW1交换机发送了约15秒的P置位 RST BPDU,SW1的Eth 0/0/2端口进入Learning状态,15秒后进入forwarding状态。

        一旦P/A协商不成功,指定端口的选择就需要等待两个Forward Delay,协商过程与STP一样。SW1和SW3交换机根交换机ID一样,SW1根路径开销是200000,SW3根路径开销是400000,按照STP指定端口选举规则进行选举,SW1根路径开销小,所以SW1的Eth 0/0/2口为指定端口,SW3的Eth 0/0/2口为预备端口。

3.2.6 备份端口选举抓包分析

        如上网络拓扑图所示,在链路6和链路7上抓包:


        从上图可以看出,数据都是从SW3的Eth 0/0/3口发出的RST BPDU,说明SW3在发送RST BPDU前,因为根交换机ID、跟路径开销、当前交换机ID都一样,所以通过比较端口ID(PID),选择小端口ID的Eth 0/0/3端口为指定端口,大端口ID的Eth 0/0/4端口为备份端口。

SW3的Eth 0/0/3口P/A协商是失败的,是按照STP指定端口选举规则进行选举的。

  • RSTP的生成树是每条链路之间进行P/A协商,有更优RST BPDU立即更新。
  • Alternate端口就是由于学习到其它交换机发来的更优配置BPDU报文(更小的RID)而阻塞的端口。
  • Backup端口就是由于学习到自己发送的更优配置BPDU报文而阻塞的端口。

这篇关于华为---RSTP(三)---P/A机制及RSTP的生成树形成过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745703

相关文章

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

java内存泄漏排查过程及解决

《java内存泄漏排查过程及解决》公司某服务内存持续增长,疑似内存泄漏,未触发OOM,排查方法包括检查JVM配置、分析GC执行状态、导出堆内存快照并用IDEAProfiler工具定位大对象及代码... 目录内存泄漏内存问题排查1.查看JVM内存配置2.分析gc是否正常执行3.导出 dump 各种工具分析4.

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并