HCNA Routing&Switching之STP端口状态、计时器以及拓扑变化
前文我们了解了STP选举规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15131999.html;今天我们来聊一聊STP的端口状态、计时器、端口状态转换以及拓扑变化相关话题;
STP端口状态

提示:STP的端口有5个状态,分别是disabled、blocking、listening、learning、forwarding;默认情况下,一个物理的交换机上的同VLAN下的所有端口都参与STP;其中Disabled是指未接线的端口;我们可以理解未激活的端口,它不接收和转发BPDU,也不学习mac地址和转发数据,是一种稳定的状态;Blocking状态是指端口激活了,通过STP选举以后未被选举成为根端口或指定端口的端口状态;该状态下的端口只接收BPDU,不转发BPDU,同时也不学习mac和转发数据,是一种稳定的状态;listening状态是disabled或blocking状态的端口向forwarding状态转换的一个过渡状态;该状态的端口只接收和转发BPDU,并不学习mac和转发数据,是一种非稳定状态;learning是从listening状态的端口向forward状态过渡的状态;该状态端口会接收和转发BPDU,同时也会学习mac,但不转发数据,是一种非稳定状态;Forwarding是STP稳定以后,除开预备端口和未激活的端口的状态;该状态下的端口可以正常接收和转发BPDU,同时也可以正常学习mac和转发数据,是稳定状态;
实验:如下实验拓扑,更改交换机stp模式为stp,然后看看交换机的各端口状态变化

验证:在s1上查看各端口状态

提示:在华为的交换机上我们是看不到blocking和listening这两种状态,其原因是华为交换机显示是以rstp和mstp为主,对于stp来说disabled、blocking、listening这三种状态被打包为discarding状态;

STP计时器
从上面的拓扑中,我们任意链路上抓一个STP包

提示:hello time字段用来表示根桥多久发送一次BPDU,默认情况是2秒一次;forward delay用来表示从learning状态到forwarding状态的延迟时长,默认15秒;max age表示预备端口最长多久没收到BPDU包的存活时长,默认20秒;

提示:预备端口从阻塞状态到转发状态,首先预备端口要等待max age超时以后,才会进入到listening,从listening到learning中间会间隔15秒;从learning到forwarding中间会间隔15秒,所以一个预备端口从阻塞状态转变为转发状态,最长时间需要50秒;
message age:该字段用于表示BPDU消息年龄,默认从根桥发送出来的BPDU为0,当BPDU没经过一个交换机,maessage age会加1,当交换机收到的BPDU中message age大于max age时,该交换机会丢弃该BPDU;
验证:在根桥上转包,看看message age是否为0?

提示:可以看到,从上述的实验拓扑中,s1(根桥)上抓包抓到的BPDU中message age为0;
验证:如下拓扑,在非根桥(s6)抓包,看看对应message age是多少呢?

分析:从s1发送的BPDU中message age 为0,当BPUD从S1的eth0/0/2口发送出来,经过S3从eth0/0/3转发出去,对应的message age会加1,所以从s3转发出去的BPUD,message age为1;同样的道理当s3的eth0/0/3转发出来的BPDU,在s4接收以后再从s4口的eth0/0/2转发出去,对应的message age也会再加1,所以从s4转发出去的BPDU中message age就为2,依次类推到达s6的BPDU中message age 的值就应该为3;
验证:在s6上转包,看看对应的BPDU中message age是否是3呢?

提示:其实这个message age我们可以理解为从根出发,中间经历多少个交换机;从上面的实验可以看到一般二层链路上的交换机不宜串联太多,超过20个会导致stp无法正常工作;
STP端口状态转换

提示:当端口初始化或从开启时,对应端口的状态会从disabled状态转换为blocking状态;如果端口被选举成为根端口或指定端口时,对应状态会从blocking开始转换--->listening,经过15秒---->learning,经过15秒----->forwarding;如果端口不再是根端口或指定端口,对应端口会从当前状态立刻转变为blocking状态;如果forward delay计时器超时,对应端口会从当前状态转换为下一个状态,比如从listening转换为learning;从learning转换为forwarding状态;如果端口被禁用或链路失效,则对应端口会从当前端口状态立刻变为disabled状态;
验证交换机端口状态

提示:默认情况下,只会显示两种稳定状态,第一种是forwarding状态,一种是预备端口的阻塞状态;disabled这种稳定状态需要手动去看对应端口才会显示;
查看disabled状态的端口

提示:只要显示锁disabled port,说明该端口为激活,或者我们可以理解为参与stp,但状态为disabled状态;
STP拓扑变化
1、根桥故障

提示:根桥故障会导致直连根桥的交换机对应的链路挂掉,此时对于非根桥就会收不到根桥的BPDU,理论上来讲,非根交换机对应的端口收不到BPDU,最大等待20秒(默认max age为20秒),然后就会触发对应端口发送自己的BPDU,进行根桥的选举;根桥选举各交换机上的端口都会转变为discarding状态,然后持续15秒从discarding状态转变为learning状态,这个状态也会持续15秒;然后从learning状态转变为forwarding状态;这个状态对于stp来说是一个稳定状态,对应端口才可以正常转发数据包;通过上述的描述,如果根桥故障最长需要50秒对应二层网络才能恢复;
2、直连链路故障

提示:直连故障是相对于有预备端口的交换机来说的;对应的交换机是能够感知到故障的发生,此时对应的端口会从forwarding状态转换为discarding状态;然后持续15秒,再从discarding状态转变为learning状态;此状态也会持续15秒,最后从lerarning状态转变为forwarding状态,开始转发数据;这也就告诉我们直连故障最短也需要等待30秒对应网络才能正常使用;
3、非直连链路故障

提示:非直连链路故障也是相对于有预备端口的交换机来说的,这种故障对于有预备端口的交换机是感知不到的,所以理论上来讲,预备端口需要等待20秒的时间,然后才从blocking转变为discarding状态,然后持续15秒,再转换为learnging,然后再持续15秒,再从learning状态转变为forwarding状态;也就是说非直连链路故障最长也需要等待50秒;
从上述的描述不难想象,不管是根桥故障还是直连链路或非直连链路故障,对于stp来说只要有故障,最短需要等待30秒,对应网络才能正常使用;
拓扑变化导致mac地址表错误

如上图所示,主机A和主机B通讯,在链路都正常的情况下主机A和主机B通讯,对于交换机B来说,它学习到的mac地址表示aa在3口,bb在一口;如果此时交换机c的g0/0/1口坏了;那么对于主机A和主机B的通讯最长也需要等待50秒,最短需要等待30秒对应stp链路才会正常被切换成功;此时我们想一个问题,但stp链路切换成功以后,对于交换机B来说,它的mac地址表并没有老化(默认老化时间是300秒),当它收到aa向bb通信的数据包,此时他还是会将数据包从1口转发出去;这也就造成了,stp链路切换成共,但对应交换机mac地址表并没有更新,导致mac地址表错误的指向;这会直接影响主机A和主机B通讯;为了解决这个问题,stp里加入了另一种类型BPDU,TCN;

提示:TCN是(topology change notification)拓扑变化通知;下游交换机一旦检测到拓扑变化,向上游发送的拓扑变化通知,上游交换机收到TCN后回应TCA(topology change acknowledgment)进行确认,然后下游交换机停止发送TCN;上游交换机通过根端口发送TCN直到根桥收到,根桥通过指定端口发送TC通知所有下游交换机把MAC地址表记录老化时间从300秒变为15秒;以便让交换机的mac地址表更快的老化,实现对应stp链路切换,对应mac地址表也随之更新;
HCNA Routing&Switching之STP端口状态、计时器以及拓扑变化的更多相关文章
- HCNA Routing&Switching之STP基础
前文我们了解了VLAN动态注册协议GVRP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15113770.html:今天我们来讨论下二层环路和STP相 ...
- HCNA Routing&Switching之STP选举规则
前文我们了解了二层环路对网络带来的影响,以及STP工作流程和BPDU数据包结构和相关字段的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15121317. ...
- HCNA Routing&Switching之DHCP服务
前文我们了解了STP的端口状态.计时器以及端口状态切换和网络拓扑变化相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15140672.html:今天我们 ...
- HCNA Routing&Switching之动态路由协议OSPF基础(一)
前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...
- HCNA Routing&Switching之动态路由协议RIP
前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html ...
- HCNA Routing&Switching之静态路由
前文我们聊到了路由的相关概念和路由基础方面的话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14947897.html:今天我们聊聊静态路由相关话题: 回顾 ...
- HCNA Routing&Switching之路由基础
在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...
- HCNA Routing&Switching之RIP防环机制
前文我们了解了RIP的基础概念.RIP的特点.RIP报文格式.RIP度量以及RIP配置认证等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/150085 ...
- HCNA Routing&Switching之交换技术基础
什么是交换机?顾名思义,交换机就是用来数据包交换的:广泛用于终端接入:它的前身是hub(集线器),hub是一个古老的设备,它的作用也是用于终端接入,但hub有一个最大的缺点是它不能隔离冲突域:所谓冲突 ...
随机推荐
- mysql,mongodb,redis区别
MongoDB: 它是一个内存数据库,数据都是放在内存里面的. 对数据的操作大部分都在内存中,但 MongoDB 并不是单纯的内存数据库. MongoDB 是由 C++ 语言编写的,是一个基于分布式文 ...
- Java核心基础第4篇-Java数组的常规操作
Java数组 一.数组简介 数组是多个相同类型数据的组合,实现对这些数据的统一管理 数组属引用类型,数组型数据是对象(Object) 数组中的元素可以是任何数据类型,包括基本类型和引用类型 数组类型是 ...
- centos7 U盘安装及Raid划分的完整流程
目录 一.Centos7的新特性: 二.安装方法与准备工作(U盘镜像) 1. 安装方法介绍 2. Centos iso 常用镜像下载地址: 3. UltraISO制作U盘系统镜像 3.1 准备工作: ...
- java基础---常用类
一.字符串类String String:字符串,使用一对""引起来表示,字符串常量池在方法区中 public final class String implements java. ...
- Django基础009--Paginator分页
1.引入 from django.core.paginator import Paginator 2.Paginator对象提供的方法 articles = models.Article.object ...
- if语句 条件测试 shell编程之条件语句
shell 编程之条件语句一.条件测试 ① test命令 测试 ② 文件测试 ③ 整数值比较 ④ 字符串比较 ⑤ 逻辑测试二.if语句的结构 单分支结构 双分支结构 多分支结构三.ca ...
- 公钥-私钥 白名单-黑名单 Linux 远程访问及控制(SSH)
远程访问及控制一.SSH远程管理二.OpenSSH服务器① SSH (Secure Shell)协议② OpenSSH三.配置OpenSSH服务器举例四.sshd 服务支持两种验证方式五.使用SSH客 ...
- [刘阳Java]_MySQL数据优化总结_查询备忘录
数据库优化是在后端开发中必备技能,今天写一篇MySQL数据优化的总结,供大家看看 一.MySQL数据库优化分类 我们通过一个图片形式来看看数据优化一些策略问题 不难看出,优化有两条路可以选择:硬件与技 ...
- python函数的坑
一.默认参数的坑,如果你的默认参数指向的是可变的数据类型,那么你无论调用多少次这个默认参数,都是同一个. def func(a,list=[]): list.append(a) return list ...
- PHP 多进程下载必应壁纸
手里拿着锤子,看什么都像是钉子 在放假的这几天,断断续续的看了老李关于 PHP 多进程的文章. PHP多进程初探 --- 开篇 PHP多进程初探 --- 孤儿和僵尸 PHP多进程初探 --- 信号 P ...