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:今天我们聊聊静态路由相关话题: 回顾 ...
随机推荐
- 50、django工程(ajax)
50.1.ajax介绍: 1.ajax是在不跳转当前url地址的情况偷偷的往后台发送数据做增删改数据的操作,如果成功返回结果刷新当前页面,失败则提醒, 使用 id 或 name 属性. 2.模态对话框 ...
- 25、mysqlreport(my.cnf)调优工具
25.1.mysqlreport介绍: mysqlreport以很友好的方式显示 MySQL状态变.事实上,它几乎报告了所有的状态.不像 SHOW STATUS 只是在显示 了100多个状态值,mys ...
- MySQL 查看命令执行时间
查看执行时间 1 show profiles; 2 show variables like "%pro%";查看profiling 是否是on状态: 3 如果是off,则执行se ...
- mac 中一些日常小问题与快捷键
1.备忘录中的中英文符号问题 比如:在备忘录中使用英文符号时,总是会被自动的修改为中文符号 解决方法:系统偏好设置-键盘-文本,去选"使用智能引号和存折号" p.p1 { marg ...
- Neural Approaches to Conversational AI
Neural Approaches to Conversational AI 学姐介绍的一篇综述阅读笔记 SIGIR 2018 主要贡献: 提出一个综合的调查关于最近几年的应用在QA,任务导向和闲聊对 ...
- 多es 集群数据迁移方案
前言 加入新公司的第二个星期的星期二 遇到另一个项目需要技术性支持:验证es多集群的数据备份方案,需要我参与验证,在这个项目中需要关注到两个集群的互通性.es集群是部署在不同的k8s环境中,K8s环境 ...
- python使用笔记29--代码驱动
1 import unittest 2 import requests 3 import jsonpath 4 import time 5 import nnreport 6 7 def get_va ...
- C语言共同体
结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员.在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为: union 共用体名{ ...
- Maven BOM!拿来吧你
what BOM? BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合, 使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包, ...
- ML-支持向量机(SVM)
简介 支持向量机是一种二分类模型,寻找一个超平面来对样本进行分割,分割的原则是保证间隔最大化. 如果一个线性函数能够将样本分开,称这些数据样本是线性可分的. 在二维空间线性函数就是一条直线,在三维空间 ...