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:今天我们聊聊静态路由相关话题: 回顾 ...
随机推荐
- Ansible自动化运维应用实战
实验环境 centos7.4 主机名称 IP 配置 用途 controlnode 172.16.1.120 1核/1G/60G ansible slavenode1 172.16.1.121 1核/1 ...
- MyBatis温故而知新-底层运行原理
准备工作 public class MainClass { public static void main(String[] args) throws Exception { String resou ...
- centos 8 下解压.tar.gz文件
执行命令 tar 参数 文件名 参数: -c :建立一个压缩文件的参数指令(create 的意思): -x :解开一个压缩文件的参数指令: -t :查看 tarfile 里面的文件: 特别注意,在参数 ...
- javax.naming.NoInitialContextException:Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
小弟初次用JNDI,使用数据源连接数据库,配置完相关的xml文件后,激动的我赶紧测试了一下,结果悲剧了,报出了错误: javax.naming.NoInitialContextException:Ne ...
- 了解Javascript中函数作为对象的魅力
前言 Javascript赋予了函数非常多的特性,其中最重要的特性之一就是将函数作为第一型的对象.那就意味着在javascript中函数可以有属性,可以有方法, 可以享有所有对象所拥有的特性.并且最重 ...
- 『心善渊』Selenium3.0基础 — 23、Selenium元素等待
目录 1.什么是元素等待 2.为什么要设置元素等待 3.Selenium中常用的等待方式 4.强制等待 5.隐式等待 (1)隐式等待介绍 (2)示例 6.显式等待 (1)显式等待介绍 (2)语法 (3 ...
- STM32笔记四
1.时钟振荡器:产生时钟信号送给单片机内部各电路,并且控制这些电路,使它们有节拍的工作. 2.ROM是一种具有存储功能的电路,断电后信息不回丢失.RAM也是一种存储电路,断电后信息丢失. 3.串行通信 ...
- 从2021强网杯的一道题学习docx文件操作
[强网先锋]寻宝 啊对就是这道题,大佬们都贼快,菜如我还得慢慢整 key1 大佬们都一笔带过,哎,虽然简单,但是也别这么虐我们啊 我来简单写一下吧 <?php header('Content-t ...
- ARTS第十周
之前忘了发布 1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的 ...
- 以太网MAC地址组成与交换机基本知识
以太网MAC地址 MAC地址由48位二进制组成,通常分为六段,用十六进制表示,工作在数据链路层. 数据链路层功能: 链路的建立,维护与拆除 帧包装,帧传输,帧同步 帧的差错恢复 简单的流量控制 第八位 ...