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

目录

[1. P/A机制简介](#1. P/A机制简介)

[1.1 P/A机制的作用](#1.1 P/A机制的作用)

[1.2 P/A协商的前提条件](#1.2 P/A协商的前提条件)

[1.3 RSTP选举思路](#1.3 RSTP选举思路)

[2. P/A协商过程](#2. P/A协商过程)

[3. 举例说明RSTP的生成树形成过程](#3. 举例说明RSTP的生成树形成过程)

[3.1 示例环境要求](#3.1 示例环境要求)

[3.2 RSTP的生成树形成过程](#3.2 RSTP的生成树形成过程)

[3.2.1 SW和SW1之间链路上抓包分析](#3.2.1 SW和SW1之间链路上抓包分析)

[3.2.2 SW和SW2之间链路上抓包分析](#3.2.2 SW和SW2之间链路上抓包分析)

[3.2.3 SW1和SW2之间链路上抓包分析](#3.2.3 SW1和SW2之间链路上抓包分析)

[3.2.4 SW2和SW3之间链路上抓包分析](#3.2.4 SW2和SW3之间链路上抓包分析)

[3.2.5 SW1和SW3之间链路上抓包分析](#3.2.5 SW1和SW3之间链路上抓包分析)

[3.2.6 备份端口选举抓包分析](#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报文而阻塞的端口。
相关推荐
€☞扫地僧☜€1 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
其乐无涯1 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
写bug的小屁孩1 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
紅色彼岸花1 小时前
第六章:DNS域名解析服务器
运维·服务器
✿ ༺ ོIT技术༻1 小时前
Linux:认识文件系统
linux·运维·服务器
会掉头发2 小时前
Linux进程通信之共享内存
linux·运维·共享内存·进程通信
我言秋日胜春朝★2 小时前
【Linux】冯诺依曼体系、再谈操作系统
linux·运维·服务器
饮啦冰美式2 小时前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu