华为---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报文而阻塞的端口。
相关推荐
檀越剑指大厂20 分钟前
【Linux系列】Shell 脚本中的条件判断:`[ ]`与`[[ ]]`的比较
linux·运维·服务器
轻口味1 小时前
【每日学点鸿蒙知识】沙箱目录、图片压缩、characteristicsArray、gm-crypto 国密加解密、通知权限
pytorch·华为·harmonyos
2301_819287122 小时前
ce第六次作业
linux·运维·服务器·网络
CIb0la2 小时前
GitLab 停止为中国区用户提供 GitLab.com 账号服务
运维·网络·程序人生
武汉联从信息3 小时前
如何使用linux日志管理工具来管理oracle osb服务器日志文件?
linux·运维·服务器
天天进步20153 小时前
STUN服务器实现NAT穿透
运维·服务器
PieroPc3 小时前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
冷曦_sole4 小时前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒4 小时前
Linux(二)_清理空间
linux·运维·服务器
tntlbb4 小时前
Ubuntu20.4 VPN+Docker代理配置
运维·ubuntu·docker·容器