前文我们了解了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端口状态、计时器以及拓扑变化的更多相关文章

  1. HCNA Routing&Switching之STP基础

    前文我们了解了VLAN动态注册协议GVRP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15113770.html:今天我们来讨论下二层环路和STP相 ...

  2. HCNA Routing&Switching之STP选举规则

    前文我们了解了二层环路对网络带来的影响,以及STP工作流程和BPDU数据包结构和相关字段的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15121317. ...

  3. HCNA Routing&Switching之DHCP服务

    前文我们了解了STP的端口状态.计时器以及端口状态切换和网络拓扑变化相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15140672.html:今天我们 ...

  4. HCNA Routing&Switching之动态路由协议OSPF基础(一)

    前文我们了解了基于路径矢量算法的动态路由协议RIP防环以及度量值的修改相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15012895.html:今天我 ...

  5. HCNA Routing&Switching之动态路由协议RIP

    前文我们了解了动态路由的基本概念,以及动态路由和静态路由的区别,优缺点,动态路由的分类,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14995317.html ...

  6. HCNA Routing&Switching之静态路由

    前文我们聊到了路由的相关概念和路由基础方面的话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14947897.html:今天我们聊聊静态路由相关话题: 回顾 ...

  7. HCNA Routing&Switching之路由基础

    在开始聊路由之前,我们首先要明白在网络通讯里,什么是路由?什么是路由表.路由器以及网关的相关术语:路由简单讲就是指网络数据包从源头到目标的路径,主要用来为不同网络间通讯提供数据包转发依据:路由表就是多 ...

  8. HCNA Routing&Switching之RIP防环机制

    前文我们了解了RIP的基础概念.RIP的特点.RIP报文格式.RIP度量以及RIP配置认证等相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/150085 ...

  9. HCNA Routing&Switching之交换技术基础

    什么是交换机?顾名思义,交换机就是用来数据包交换的:广泛用于终端接入:它的前身是hub(集线器),hub是一个古老的设备,它的作用也是用于终端接入,但hub有一个最大的缺点是它不能隔离冲突域:所谓冲突 ...

随机推荐

  1. Zabbix5.0Yum安装

    1.1.操作系统配置: 1.操作系统属性(虚拟机下环境): (1)操作系统版本: [root@localhost ~]# cat /etc/redhat-release CentOS Linux re ...

  2. 跟我一起学Go系列:Go gRPC 安全认证方式-Token和自定义认证

    Go gRPC 系列: 跟我一起学Go系列:gRPC安全认证机制-SSL/TLS认证 跟我一起学 Go 系列:gRPC 拦截器使用 跟我一起学 Go 系列:gRPC 入门必备 接上一篇继续讲 gRPC ...

  3. Murmur3 Hash 128位java和C#方法

    java调用com.google.guava 引入依赖 <dependency> <groupId>com.google.guava</groupId> <a ...

  4. ES2021 新特性!

    大家好,我是前端队长Daotin,想要获取更多前端精彩内容,关注我(全网同名),解锁前端成长新姿势. 以下正文: 2021 年 6 月 22 日,第 121 届 Ecma 国际(Ecma Intern ...

  5. WebService:java配置类形式发布WebService接口及遇见的问题总结

    配置WebService前需要以下依赖jar包 #版本只供参考,具体看项目 <dependency> <grouId>org.apache.cxf</grouId> ...

  6. jar打包

    1.jar文件? 学过java的同学应该都听过吧!所以第一站是:打包发布 2.如何把 java 程序编译成 .exe 文件? 通常回答只有两种: 1)一种是制作一个可执行的 JAR 文件包,然后就可以 ...

  7. PL/SQL语法

    PL/SQL语法 由于pl/sql是编译后执行的,而sql语句是未经编译的,因此pl/sql语句在执行速度上更快,同时也减少了客户机和服务器的传输. 基本结构 DECLARE 声明变量.常量.用户定义 ...

  8. 微信app支付,完整流程,完整代码 (转)

    微信app支付流程 需要的配置参数 private function wechat($body,$indent_id,$cou,$user_id,$total_fee,$ip,$domain,$non ...

  9. 【转载】每天一个linux命令(11):nl命令

    转载至:http://www.cnblogs.com/peida/archive/2012/11/01/2749048.html nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内 ...

  10. 剖析虚幻渲染体系(06)- UE5特辑Part 2(Lumen和其它)

    目录 6.5 Lumen 6.5.1 Lumen技术特性 6.5.1.1 表面缓存(Surface Cache) 6.5.1.2 屏幕追踪(Screen Tracing) 6.5.1.3 Lumen光 ...