HCNA Routing&Switching之STP选举规则
前文我们了解了二层环路对网络带来的影响,以及STP工作流程和BPDU数据包结构和相关字段的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15121317.html;今天我们主要来讨论下STP具体选举流程相关话题;
我们知道STP主要是通过构造“一棵树”来消除二层网络中可能存在的环路,同时当活动链路发生故障,激活备份链路,从而实现网络的可靠性;它的工作过程过程如下

1、选举根桥的规则
根桥的选举规则很简单,在STP初始化时,每一台交换机都会认为自己是根桥,都会发送BPDU;根据各交换机发送的BPDU中BID,首先比较各自的BID中优先级,优先级最小对应设备就是根桥;如果优先级都一样,则比较BID中的mac地址,mac地址最小的设备成为根桥;根桥选举完成以后,非根桥设备不主动发送BPDU,只有根桥设备主动发送BPDU,非根桥设备转发BPDU;

提示:选举根桥只是比较各交换机发送的BPDU中的BID,BID最小为根桥(BID由优先级和mac地址组成,先比较优先级,再比较MAC地址);上图中swa的优先级最小,所以swa就是根桥;剩下的swb和swc就是非根桥设备;
2、在非根桥设备上选举根端口

提示:选举根端口是通过对应端口收到的BPDU中,根据端口的根路径开销(到达根桥最短路径开销)、对端BID、对端PID和本端PID;根路径开销最小的端口成为根端口;如果根路径开销一样,则比较对端BID(对应端口连接的设备);比较对端BID的规则是先比较优先级,优先级小者,对应端口成为根端口;如果对端BID中的优先级一样,则比较mac地址,对端mac地址小者成为根端口;如果对端的BID一样,则比较对端PID,比较对端PID的规则是,先比较优先级,再比较端口编号,对端pid中优先级小者为根端口;如果优先级一样,则端口编号小者为根端口;如果对端PID也一样,则比较本端PID,比较规则和比较对端PID一样,先比较优先级,优先级小者为根端口,如果优先级一样,则比较端口编号,端口编号小者为根端口;
实验:如下拓扑,三个交换机都运行STP,看看对应的根桥和根端口是怎么选举的;

分析:上述拓扑,首先三个交换机会选举根桥,根桥的选举只看BID;从上面的信息可以看到当三个交换机发送的BID中的优先级都有一样(默认都是32768),此时根桥的选举就比较那个mac较小了,最小的是根桥;很容易判断出s2就是根桥;那么s1的eth0/0/1就是根端口(因为在s1上eth0/0/1到达根桥的路径开销为200000,而eth0/0/2到达根桥的路径开销为400000);同样在s3上eth0/0/2是根端口;
验证:查看s2是否是根桥?

提示:可以看到在s2上查看stp接口信息,其中root的mac地址就是s2自己 ,说明s2就是根;
验证:在s1上查看对应根端口是否是eth0/0/1?

提示:可以看到在s1上,eth0/0/1是根端口;
验证:在s3上查看对应根端口是否是eth0/0/2?

提示:可以看到s3上eth0/0/2就是根端口;
上述实验选举根端口就是通过根路径开销来选举的;接下来我们来看看当到达根路径开销相等时,又该如何选举根端口呢?
实验拓扑

分析:从上面拓扑的bid可以看到,当前根桥还是s2;那么对于s3来说,eth0/0/1和eth0/0/2到达根路径开销都是400000,此时在s3上那个端口为根端口呢?从选举规则来讲,当根路径开销一样时,则看看对端的BID;那么确定s3的根端口就只需要比较eth0/0/1的对端s1的BID和eth0/0/2的对端s4的BID,谁小,对应的端口就是根端口;从上面的拓扑可以看到s4的BID要大于s1的BID,所以对应s3上的eth0/0/1就是根端口;
验证:在s3上查看是否是eth0/0/1为根端口?

提示:可以看到s3之前的eth0/0/1是阻塞的,新加了一个s4以后,对应端口的角色也发生了变化,从阻塞端口变为了根端口;其原因就是因为eth0/0/1的对端s1的BID要小于eth0/0/2的对端s4的BID;
当对端BID相同时?对应根端口该如何选择呢?

分析:如上拓扑,根桥还是s2;那么对于s1来说,到底那个端口才是根端口呢?首先看根路径开销都一样,都是200000;看对端BID,对端BID都一样,都是s2的BID;此时在s1上选举根桥会看对端PID,谁小谁就是根端口;
在s2上查看eth0/0/1和eth0/0/2的PID

提示:可以看到在s2上eth0/0/1的PID为128.1,eth0/0/2的PID为128.2;那么对于s1来说,此时根端口就应该是eth0/0/1(原因是它的对端是s2的eth0/0/1);
验证:在s1上查看对应的根端口

提示:可以看到s1上根端口为eth0/0/1;从上面的实验过程可以看到对端BID相同时,根端口的选举会根据对端PID,对端PID小者,对应本端端口就是根端口;
当对端PID相同时,根端口又将如何选择呢?

分析:从上面的拓扑可以确定根桥还是s2,对于s1来说eth0/0/1和eth0/0/2谁才是根桥呢?首先在s1上选举根端口,会看根路径开销,两个端口到根路径开销都是200000;当根路径开销相同时,比较对端BID,上图中s1的对端是s2,所以BID相同;当BID相同我们需要比较对端PID,从上图中我们可以看到s1的两个端口的对端都是s2的eth0/0/1,所以对端PID也相同;此时在s1上选举根端口就会看本端的PID,谁小谁就是根端口,默认情况端口的优先级都是默认值128,比较PID就是看那个端口的端口编号小;很显然eth0/0/1的端口编号要小一点,所以s1上的根端口为eth0/0/1;
验证:查看s1上的eth0/0/1,看看它是否是根端口?

提示:可以看到s1的eth0/0/1就是根端口;
3、在链路上选举指定端口
选择指定端口的规则是先看该端口转发出来的bpdu中根路径开销,开销小者为指定端口,如果开销一样则比较BID,BID小者为指定端口;如果BID相等则比较PID,PID小者为指定端口;
实验:根据以下拓扑图,选出指定端口

分析:根据stp选举根桥的规则,上述实验根桥一定是s3,因为根桥选举看BID,优先级一样比较mac大小,小者为根桥;其次选举根端口,根据根端口的选举规则,在s1上根端口是eth0/0/2(因为eth0/0/2到根桥的路径开销为200000,而eth0/0/1到根桥的路径开销为400000);对于s2上来说,根端口为eth0/0/2(因为eth0/0/1到达根桥的路径开销为400000);接下来选择指定端口,根据指定端口选举规则,先看发出bpdu中的根路径开销;对于s1的eth0/0/1和s2的eth0/0/1直连的链路上,s1的eth0/0/1发出的bpdu中根路径开销为200000,s2的eth0/0/1发出的bpdu中根路径开销为200000;所以根路径开销一样的情况,此时选举指定端口就需要比较BID;因为s1的BID要小于s2的BID,所以指定端口为s1的eth0/0/1;对于根桥上的端口来说,因为它发出的bpdu中根路径开销为0;所以根桥上的端口都是指定端口(排除自环,如果根桥上有端口自环,自环的两个端口中一定有一个端口处于阻塞,这样一来根桥的端口就不是都是指定端口);
验证:查看s3是否是根桥?

提示:可以看到在s3上的stp相关信息中,根桥的BID和s3的BID相同,说明s3就是根桥;
验证:查看s1的eth0/0/1是否是指定端口,eth0/0/2是否是根端口?


提示:可以看到s1上的eth0/0/1是指定端口,eth0/0/2是根端口;
验证:查看根桥的端口,看看是否都是指定端口?

提示:可以看到非自环的情况下,根桥上的所有端口都是指定端口;
实验:当BID相同时,看看对应指定端口该如何选举?

分析:从上面的BID就可以看到s1为根桥,s2为非根桥;对于s2来说,根端口是eth0/0/1(因为eth0/0/1、eth0/0/2和eth0/0/3的根路径开销都为200000,此时选举根端口就比较对端BID,eth0/0/1对端BID就是根桥,而eth0/0/2和eth0/0/3对端BID是s2,所以eth0/0/1为根端口)那么对于s2的eth0/0/2和eth0/0/3之间的链路选举指定端口该怎么选呢?从上面选举指定端口的规则来讲,首先比较发出bpdu中的根路径开销,这两个端口的发出BPDU中的根路径开销都是200000;如果发送的BPDU中根路径开销相同,则比较BID;eth0/0/2和eth0/0/3都是s2的端口,所以BID就是s2,两个端口的BID也相同;此时选举指定端口就需要比较pid;pid小者为指定端口;因为eth0/0/2的端口编号小于eth0/0/3的端口编号;所以eth0/0/2为指定端口;(因为默认PID中的优先级都一样,我们只需要判断端口编号大小即可);
验证:查看s2各端口情况?

提示:可以看到s2的1口为根端口,2口为指定端口,3口为阻塞端口,也叫备份端口;
4、预备端口的确定
通过上述的选举,最终没有被选举成为根端口或指定端口的端口,都会被确定为预备端口;该端口会一直处于阻塞状态,只接受BPDU,不转发数据;直到正常链路故障,该端口才有可能转变为其他角色和状态,进行数据转发;
HCNA Routing&Switching之STP选举规则的更多相关文章
- HCNA Routing&Switching之STP端口状态、计时器以及拓扑变化
前文我们了解了STP选举规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15131999.html:今天我们来聊一聊STP的端口状态.计时器.端口状 ...
- HCNA Routing&Switching之STP基础
前文我们了解了VLAN动态注册协议GVRP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15113770.html:今天我们来讨论下二层环路和STP相 ...
- HCNA Routing&Switching之动态路由协议OSPF DR和BDR
前文我们了解了OSPF建立邻居关系的条件,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15032907.html:今天我们来聊一聊OSPF中的DR和BDR: ...
- HCNA Routing&Switching之OSPF度量值和基础配置命令总结
前文我们了解了OSPF的网络类型,OSPF中的DR和BDR的选举规则.作用等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15054938.html: ...
- HCNA Routing&Switching之动态路由协议RIP
前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html ...
- HCNA Routing&Switching之动态路由协议OSPF基础(二)
前文我们主要了解了OSPF的区域.区域分类.路由器类型.OSPF的核心工作流程,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/15025533.html:今天 ...
- HCNA Routing&Switching之交换技术基础
什么是交换机?顾名思义,交换机就是用来数据包交换的:广泛用于终端接入:它的前身是hub(集线器),hub是一个古老的设备,它的作用也是用于终端接入,但hub有一个最大的缺点是它不能隔离冲突域:所谓冲突 ...
- HCNA Routing&Switching之动态路由基本概念
前文我们了解了静态路由的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14965433.html:今天我们来聊一聊动态路由相关概念: 首先我们要清楚什 ...
- HCNA Routing&Switching之静态路由
前文我们聊到了路由的相关概念和路由基础方面的话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14947897.html:今天我们聊聊静态路由相关话题: 回顾 ...
随机推荐
- 14、oracle sql语法
14.0.注释: 1.单行注释:-- 2.多行注释:/* */ 14.1.sqlplus中的set指令: 1.设置每行显示的数据长度: SET LINESIZE 500; #有效范围是1-32767, ...
- Docker:Docker常用命令
docker信息 ##查看docker容器版本 docker version ##查看docker容器信息 docker info ##查看docker容器帮助 docker --help 镜像列表 ...
- Spring:Spring中bean的生命周期
Spring中,从BeanFactory或ApplicationContext取得的实例为Singleton(单例模式),就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使 ...
- Linux文件目录结构详解 (转)
整理自<鸟哥的私房菜> 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能, ...
- Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议
目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径.看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如 ...
- Kubernetes 1.13.3 部署 Prometheus+Grafana-7.5.2(最新版本踩坑)
本教程直接在 Kubernetes 1.13.3 版本上安装 Prometheus 和 Grafana-7.5.2,至于它们的原理和概念就不再赘述,这里就直接开始操作. Git 下载相关 YAML 文 ...
- python使用笔记10--os,sy模块
os操作文件,可以输入绝对路径,也可以输入相对路径 windows使用路径用\连接 Linux使用路径用/连接 但是我的电脑是windows 用/也没问题 1.os常用方法 1 import os 2 ...
- 以太网MAC地址组成与交换机基本知识
以太网MAC地址 MAC地址由48位二进制组成,通常分为六段,用十六进制表示,工作在数据链路层. 数据链路层功能: 链路的建立,维护与拆除 帧包装,帧传输,帧同步 帧的差错恢复 简单的流量控制 第八位 ...
- prignMVC+myBatis整合—— 基于MapperFactoryBean
学习本节内容请先看"MyBatis的基本应用".地址:http://lydia-fly.iteye.com/admin/blogs/2152948 Spring与MyBatis整合 ...
- 在SublimeText3中搭建Verilog开发环境记录(二)
接上文 SublimeText3中搭建Verilog开发环境记录(一) 在实现了基础功能后,继续添加插件,让功能更为完善: 快速创建代码模块(snippet) Ctrl+鼠标左键实现模块跳转 通过iV ...