HCIE-RS面试---STP拓扑变化过程
BPDU:bridge protocol data unit,网桥协议数据单元。
网络中所有设备使能STP后,每一台设备都以为自己是根桥。此时,每台设备仅仅收发配置BPDU,而不转发用户流量,所有的端口都处于listening状态,所有设备通过交换配置BPDU后,进行选举工作,选出根桥、根端口和指定端口。
BPDU报文的交互过程
根桥BID,累计根路径开销、发送者BID,发送端口PID构成有序组。配置BPDU会按照Hello Timer规定的时间间隔来发送。
STP算法实现的基本过程
1、初始状态
由于每个桥都以为自己是根桥,所以在每个端口所发出的BPDU中,根桥字段都是用各自的BID,root path cost字段是累计的到达根桥的开销,发送者BID是自己的BID,端口PID是发送该BPDU端口的端口ID。
2、选择根桥
网络初始化时,网络中所有的STP设备都自以为根桥,根桥ID为自身的BID,通过交换BPDU,设备之间比较BID,BID最小的设备被公认为根桥。至此,根桥确定。
3、选择根端口和指定端口
3.1 非根桥将接收最优BPDU的那个端口定为根端口。
最优配置消息的选择过程
1 每个端口将收到的配置消息与自己的配置消息进行比较
- 如果收到的配置消息优先级比较低,则将其直接丢弃,对自己的配置消息不进行任何处理;
- 如果收到的配置消息优先级较高,则用该配置消息的内容将自己配置消息的内容替换掉。
- 如果收到的配置消息优先级与自己相同, 则将其直接丢弃。
2 设备将所有端口的配置消息进行比较,选出最优的配置消息
3.2 设备根据根端口的配置消息和根端口的路劲开销,为每个端口计算一个指定端口配置消息:
- RBID字段替换为RP的收到的BPDU中的RBID字段(BPDU中原来的RBID字段为自身BID,由于从RP收到的BPDU中得到了真正的RBID,将此字段进行替换)
- 根路径开销字段替换为RP收到的根路径开销加上RP对应的路径开销。(原来为0,即根桥所有端口到根桥的路径开销为0)
- 发送者BID替换为自身设备的ID
- 发送端口PID替换为自身端口ID
3.3 设备将计算出的配置消息与角色待定端口自己的配置消息进行比较:
- 如果计算出的配置消息更优,则该端口被确定为指定端口,其配置消息也被计算出的配置消息替换,并周期性地向外发送;
- 如果该端口自己的配置消息更优,则不更新该端口的配置消息并将该端口阻塞,该端口将不再转发数据,且只接收不发送配置消息。
STP算法实现过程
A,B,C的优先级分别为0,1,2,A与B之间,A与C之间,B与C之间链路的路径开销分别为5,10,4.
1 各设备的初始状态
注意:四元组:{根桥ID,累计根路径开销,发送者BID,发送端口PID}
A
端口名称 | 端口的配置消息 |
---|---|
Port A1 | {0,0,0,pa1} |
Port A2 | {0,0,0,pa2} |
B
端口名称 | 端口的配置消息 |
---|---|
Port B1 | {1,0,1,pb1} |
Port B2 | {1,0,1,pb2} |
C
端口名称 | 端口的配置消息 |
---|---|
Port C1 | {2,0,2,pc1} |
Port C2 | {2,0,2,pc2} |
2 各设备的比较过程及结果
A
比较过程
- Port A1收到Port B1的配置消息{1,0,1,Port B1},发现自己的配置消息{0,0,0,Port A1}更优,于是将其丢弃。
- Port A2收到Port C1的配置消息{2,0,2,Port C1},发现自己的配置消息{0,0,0,Port A2}更优,于是将其丢弃。
- DeviceA发现自己各端口的配置消息中的根桥和指定桥都是自己,于是认为自己就是根桥,各端口的配置消息都不作任何修改,此后便周期性地向外发送配置消息。
比较结果
- Port A1:{0,0,0,Port A1}
- Port A2:{0,0,0,Port A2}
B
比较过程一
- pb1收到pa1的发来的配置消息{0,0,0,pa1},发现比自己的配置消息{1,0,1,pb1}更优,于是更新自己的配置消息。
- pb2收到pc2发来的配置消息{2,0,2,pc2},发现自己的配置消息{1,0,1,pb2}更优,于是将其丢弃。
比较结果二
- PB1:{0,0,0,PA1}
- PB2:{1,0,1,PB2}
比较过程二
- B比较自己各端口的配置消息,发现PB1的配置消息最优,于是将其指定为根端口,,其配置消息不变。
- B根据根端口PB1的配置消息和路径开销,为PB2计算出指定端口的配置消息{0,5,1,PB2},然后与BP2本身的配置消息进行比较,发现计算出的配置消息更优,于是PB2被定为指定端口,其配置消息也被替换为计算出的配置消息,并周期性向外发送。
计算结果二
- 根端口PB1:{0,0,0,PA1}
- 指定端口PB2:{0,5,1,PB2}
C
计算过程一
- PC1收到PA2的配置消息{0,0,0,PA2},发现其比自己的配置消息{2,0,2,PC1}更优,于是更新自己的配置消息。
- PC2收到PB2更新前的配置消息{1,0,1,PB2},发现其比自己的配置消息{2,0,2,PC2}更优,于是更新自己的配置消息。
计算结果一
- PC1:{0,0,0,PA2}
- PC2:{1,0,1,PB2}
计算过程二
- C比较自己各端口的配置消息,发现PC1的配置消息最优,于是该端口被确定为根端口,其配置消息不变。
- C根据根端口的配置消息和路径开销,为PC2计算出指定端口的配置消息{0,10,2,PC2},然后与PC2本身的配置消息{1,0,1,PB2}进行比较,发现计算出的配置消息更优,于是PC2被确定为指定端口,其配置消息更新为计算出的配置消息
计算结果二
- PC1:{0,0,0,PA2}
- PC2:{0,5,1,PB2}
计算过程三
- C比较PC1的根路径开销10与PC2的根路劲开销9,发现后者更小,于是PC2的配置消息更优,于是PC2被确定为根端口,其配置消息不变。
- C根据根端口的配置消息和路径开销,为PC1计算出指定端口的配置消息{0,9,2,PC1},然后与PC1本身的配置消息{0,0,0,PA2}进行比较,发现本身的配置消息更优,,于是PC1被阻塞,其配置消息不变。从此,,PC1不再转发数据,直到有触发STP计算的新情况出现,如B与C之间的链路down掉。
网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备收到该配置BPDU后,如果优先级比自己的配置BPDU高,则非根桥设备会根据收到的配置BPDU中携带的信息更新自己相应的端口存储的配置BPDU信息,否则会丢弃该配置BPDU。
STP 拓扑变化
- T点接口发生变更后,下游设备会不间端地向上游设备发送TCN BPDU报文。
- 上游设备收到下游设备发来的TCN BPDU报文后,只有指定端口处理TCN BPDU报文,其他端口也有可能收到TCN BPDU报文,但不会处理。
- 上游设备会将配置BPDU报文中的flags字段中的TCA位置1,然后发送给下游设备,告知下游设备停止发送TCN BPDU报文。
- 上游设备复制一份TCN BPDU报文,向根桥方向发送。
- 重复步骤1,2,3,4.直到根桥收到TCN BPDU报文。
- 根桥把配置BPDU报文中flags的TC位和TCA位同时置1 后发送,TC位置1 是为了通知下游设备直接删除桥MAC地址表项,TCA位置1 是为了通知下游设备停止发送TCN BPDU报文。
说明:
- TCN BPDU报文主要用来向上游设备乃至根桥通知拓扑变化。
- 置位的TCA标记的配置BPDU报文主要是上游设备用来告知下游设备已经知道拓扑变化,通知下游设备停止发送TCN BPDU报文。
- 置位的TC标记的配置BPDU报文主要是上游设备用来告知下游设备拓扑发生变化,请下游设备直接删除桥MAC地址表项,从而达到快速收敛的目的。
总结
选举方法
- 1、选择根桥
- 2、非根桥上选择根端口
- 3、冲突域上选择指定端口
- 4、既不是RP也不是DP的就是AP
在稳定STP网络中端口状态只有2种
1、discasrding(AP)
2、forwarding(RP.DP)
最优BPDU的选择
- 1 root id 最小
- 2 rpc积累和
- 3 bid最小
- 4 pid最小
选举的算法
- root id 最小是根桥
- 非根桥bpdu最好的端口是RP
- 根据RP计算DP的BPDU参数,如果比指定端口的本身的BPDU参数好,则该端口为DP端口,如果没有比指定端口本身的BPDU参数好,则该端口为AP。
RP失效,存在AP,网络需要30s恢复连接
RP失效,不存在AP,网络需要50s恢复连接
HCIE-RS面试---STP拓扑变化过程相关推荐
- 快速生成树(RSTP)和传统生成树(STP)的区别(华为数通HCIE认证面试真题)...
快速生成树(RSTP,802.1w)和生成树(STP,802.1D)的区别总结 1.最重要的区别即快速收敛(最本质在于BPDU结构的变化) A.RSTP的proposal和aggrement机制(发生 ...
- arcgis悬挂点修改_ArcGis拓扑的那些事儿(拓扑应用过程三)
(,,・∀・)ノ゛hello,小编又来啦(一不小心又拖更这么长时间),感觉大家都是催更小能手,天天定时定点的发消息催更,(其实很感谢大家的关注与催更,说明我写的这些对大家都有很大的用处!让我感到挺高兴 ...
- Flink并行度优先级_集群操作常用指令_运行组件_任务提交流程_数据流图变化过程
Flink并行度优先级(从高到低) sum(1).setParallelism(1) env.setParallelism(1) ApacheFlinkDashboard任务添加并行度配置 flink ...
- python matplotlib 播放图片变化过程
最近想将原图片和处理后的图片放在一起观察图片的变化过程.但是网上并么有找到有用的示例代码,所以粘出来和大家分享一下. import numpy as np import matplotlib.pypl ...
- 简单观察HoudiniAssetComponent状态(AssetState)的变化过程
目标 UHoudiniAssetComponent的成员 AssetState,它是一个枚举EHoudiniAssetState: enum class EHoudiniAssetState : ui ...
- 频率控制和滞环控制的半桥/全桥LLC电路仿真对比 两种方式下均可实现输出电压闭环控制 ,模型中包含负载的阶跃变化过程 ,可以验证闭环系统稳定性
频率控制和滞环控制的半桥/全桥LLC电路仿真对比 两种方式下均可实现输出电压闭环控制 ,模型中包含负载的阶跃变化过程 ,可以验证闭环系统稳定性 滞环控制和变频控制下的电感电流和输出电压波形图如第二幅图 ...
- 冲压过程中,冲裁力的变化过程
冲裁力即冲剪产品时, 所需的冲床压力, 计算冲裁力, 是为了合理选择冲床的吨位, 使冲床得到更合理更经济的利用. 1.1 冲压过程中, 冲裁力的变化过程 首先冲头下降达到材料板上开始冲剪, 冲剪力会逐 ...
- CommonServiceLocator/Microsoft.Practices.ServiceLocation的变化过程
CommonServiceLocator的类最主要的获取服务对对象的代码如下: TService ServiceLocator.Current.GetInstance<TService>( ...
- SCRATCH演示三角函数正弦函数的变化过程
用SCRATCH绘制三角函数的变化过程 曲线变化过程 小猫的代码 笔得代码 动画角色
- 华为HCIE RS笔记-17OSPF收敛过程
OSPF收敛过程: OSPF收敛需要经过八种状态机制: ① down ② Attempt ③ Init ④ Two-way ⑤ Exstart ⑥ Exchange ⑦ Loading ⑧ Full ...
最新文章
- 个性化排序的神经协同过滤
- 区块链概况:什么是区块链
- 周志华《机器学习》读书笔记(一)
- javascript控制html高,Javascript可以控制css吗?
- Gentoo 网络接口配置文件说明
- Easyjs 细说Javascript里的 闭包(Closure)
- 36岁程序员:领导平时称兄道弟,裁员时立刻变脸,看透人性
- python读取txt文件并输出到表格_Python读取txt内容写入xls格式excel中的方法
- 分红酒(广度优先搜索)
- linux xargs命令
- 安卓调用系统拍照功能:1、启动拍照返回图片,2、启动拍照,图片存储在指定路径下
- 万稞pw80线切割编程软件_模具设计编程培训哪些内容?
- mysql数据库银行项目题_银行数据库笔试编程题
- 大学生计算机应用大赛广告设计,计算机应用工程系第四届“经纬在线杯”网页广告设计大赛圆满结束...
- 鸿鹄系统和鸿蒙系统的区别,华为鸿蒙系统和全新的鸿鹄处理器将于8月9日正式发布,荣耀首发...
- Nginx之web前言
- 显示器接口:VGA、HDMI、DVI 、DisplayPort
- 大学计算机素质教育认识,试论技术院校中计算机教育与素质教育的关系
- 计算机系统实验--DataLab
- 王小二分饼 JAVA