STP对次优BPDU的处理:

通常情况下,只有根桥交换机才会发送配置BPDU,其他非根网桥只从指定端口转发从根端口接收到的配置BDPU。但是在上图的环境下,S4新加入了环境中,认为自己是根,发送相应的BPDU。非根网桥指定端口只有在接收到次优BPDU时,才会主动发送最优BPDU,然后对方接收到以后,用更优先的BPUD更新自己的BPDU。

拓扑描述:
当S2收到S4的次优BPDU后,这是因为网桥都会保存当前最优的配置BPDU,会向S4发送最优的BPDU。S4收到了回应的BPDU后,将根桥设置为S1,连接入网络的端口设置为根接口。

补充:阻塞端口和根接口收到在次优的BPDU将不会处理。如果阻塞接口和根接口在MAX Age中一直收到次优的BPDU,而没有其他的BPDU,则超时后变为指定接口,再主动向下行发送自己计算出的BPDU。

STP临时环路的产生:


拓扑描述:
假设开始时拓扑如左侧所示,且路径开销均相同。交换机S1、S2和S3相连,根桥确定为S1,相应互联端口均处于转发状态。当S1和S2之间新增链路后,最开始两个接口都认为自己是指定接口,S2收到S1和S3发送的BPDU,经计算,S2确定与S1互联的端口为新的根端口,与S3互联的端口为指定端口。这样,所有端口要么是根端口,要么是指定端口,即均处于转发状态,于是便产生了环路。只有当配置BDPU传播到每个网桥,交换机S2经过计算阻塞与S3互联的端口,环路才会消除。

所以在一个端口从不转发状态进入转发状态之前(例如S2与S1的互连端口),需要等待一段足够长的时间(2个forward delay),以使需要进入阻塞状态的端口有足够的时间完成生成树计算,并停止转发数据。

STP环境中的收敛时长:30s或者48s-50s


根桥失效:
当S1出现故障(例如关闭了stp协议),S2和S3的根端口都不能收到来自根桥的BPDU报文,他们在等待最长max age时间后,才能发现根桥失效,进而进行新的根桥选举、根端口和指定端口的确定。所以到达最终的拓扑稳定需要经历BPDU的老化、2个forwarding delay(listening+learning)时长,即50秒。当然,指定接口没有收到BPDU报文是正常的情况,阻塞接口20s内没有收到对方的更优的BPDU自己会变为指定接口并且进入监听状态。48s指的是根端口已经收到2s以后,链路才发生故障,这样从故障到最终完成重新收敛为48s。

链路失效:
当S3连接S1的链路失效后,S3马上感知到这一情况的发生。S3的阻塞端口立即进入listening状态,并发送以自己为根的配置BPDU。S2收到S3的次优BPDU后,立即回复以S1为根的配置BPDU,因此S2连接S3的端口成为根端口,S3连接S2的端口成为指定端口。S3的面向S2的端口状态要经历listening、learning再到forwarding,即经历30秒。

链路失效或者链路增加均需要经历30秒,才能恢复故障。

当拓扑发送改变,STP重新计算的过程:

配置BPDU的FLAG字段:

第一位表示是TC的配置报文,第八位表示为TCA的配置报文,注意这是配置报文,并不是TCN BPDU,没有置位表示普通的配置BPDU。

配置BPDU和TCN BPDU:
配置BPDU 34个字节,且类型字段取值为固定的0x00,TCN BPDU只有4字节,也就是配置BPDU的前3个字段,并且类型字段取值为固定的0x80。

流程:

  1. 在网络拓扑发生变化后,有端口转为转发状态的下游设备会不间断地向上游设备发送TCN BPDU报文。
    上游设备收到下游设备发来的TCN BPDU报文后,只有指定端口处理TCN BPDU报文。其它端口也有可能收到TCN BPDU报文,但不会处理。
  2. 上游设备会把配置BPDU报文中的Flags的TCA位设置1,然后通过接收到TCN BPDU的接口发送给下游设备,告知下游设备停止发送TCN BPDU报文。
  3. 上游设备复制一份TCN BPDU报文,从根接口向根桥方向发送。
  4. 重复步骤1、2、3、4,直到根桥收到TCN BPDU报文。
  5. 根桥收到TCN BPDU后,会将下一个要发送的配置BPDU中的TCA位置位,从相应接收到的指定接口发送出去,作为对收到的TCN的确认,还会将该配置BPDU报文中的Flags的TC位置1,从自己所有的指定接口发送出去,用于通知所有网桥拓扑发生了变化。
  6. 根桥在之后的max age+forwarding delay时间内,将发送BPDU中的TC置位的报文,收到该配置BDPU的网桥,会将自身MAC地址老化时间缩短为forwarding delay。
  7. 当非根桥从自己的根端口接收到以后TC位为1的BPDU后将从自己的所有指定接口复制一份发送出去。

拓扑描述:

  1. 拓扑中,经由STP计算,S1为根桥,S4的E1端口被阻塞。
  2. 当S3的面向PC1的链路断掉之后,网络中的STP将进行重算,S4的E1端口将转变为指定端口(经过20s对方没有发送BPDU报文),然后经过30s进入转发状态,此时S4会向上游发送TCN消息。这里如果拓扑没有PC机,而是两个交换机直接连接,一边断开后,另外一边的链路也down掉。
  3. S2收到S3的TCN消息之后,将下一个配置BPDU中的TCA置位并从端口E3发送给S4,S2也从自己的根端口E1向根发送TCN BPDU。
  4. S1收到S2发送的TCN消息之后,将下一个配置BPDU中的TCA和TC置位并从指定端口E1发送给S2。此后的(20秒+15秒)时间内,S1均将配置BPDU中的TC置位,各个网桥收到TC置位的BPDU后,将MAC地址的老化时间置为15秒。
  5. 于是网络拓扑改变后,网络中交换机上的MAC地址表将很快收敛,避免无效流量浪费带宽。

参考资料:华为HCIE培训文档

STP重新收敛过程和补充内容相关推荐

  1. STP的收敛及高级特性

    签:STP BPDU GUARD STP安全特性 STP高级特性 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://tangfang ...

  2. 【汇编语言与计算机系统结构笔记20】补充内容:可定制处理器指令集

    本次笔记内容: 31.补充内容--可定制处理器指令集-1 32.补充内容--可定制处理器指令集-2 注:我找到了对应内容的课件,请见我于GitHub的CS笔记仓库. 本节课对应幻灯片:汇编语言程序设计 ...

  3. 【体系结构】有关Oracle SCN知识点的整理--补充内容

    [体系结构]有关Oracle SCN知识点的整理--补充内容 小麦苗自己整理的内容参考:[体系结构]有关Oracle SCN知识点的整理  http://blog.itpub.net/26736162 ...

  4. 华为HCIE RS笔记-17OSPF收敛过程

    OSPF收敛过程: OSPF收敛需要经过八种状态机制: ① down ② Attempt ③ Init ④ Two-way ⑤ Exstart ⑥ Exchange ⑦ Loading ⑧ Full ...

  5. 第二十五章补充内容 3 assert()宏

    //第二十五章补充内容 3 assert()宏 //有的编译器还提供了assert()宏,这个宏在许多书中被翻译为断言,它的作用是当assert()的参数为真时,返回真,假如参数值为假,那么它将执行某 ...

  6. 第二十五章补充内容 5 不能为0的变量

    // 第二十五章补充内容 5 不能为0的变量 /*#define DEBUG #include <iostream> #include <string> using names ...

  7. app测试的过程和重点关注内容

    针对app测试的过程和重点关注内容,做以下梳理和总结: 1. 首先是测试资源确认及准备 (1) 产品需求文档.产品原型图.接口说明文档以及设计说明文档等应齐全: (2) 测试设备及工具的准备:IOS和 ...

  8. 对于HTTP过程中POST内容加密的解决方案

    对于HTTP过程中POST内容加密的解决方案 参考文章: (1)对于HTTP过程中POST内容加密的解决方案 (2)https://www.cnblogs.com/Wh7Ro/p/11297501.h ...

  9. app自动化测试appium教程之番外1——进阶补充内容

    app自动化测试appium教程之番外1--进阶补充内容 混合app测试 1. 打开app内webview debug模式 2. 验证是否为混合app 3. 切换至H5页面 4. 切回原生app 5. ...

  10. 总结:详细讲解MapReduce过程(整理补充)

    从启动和资源调度来看MapReduce过程 Hadoop 1.x版本 首先-先了解一下必知概念 From:MapReduce工作原理图文详解,JobTracker和TaskTracker概述 客户端( ...

最新文章

  1. 基于函数计算的 BFF 架构
  2. 我国是世界最大石油进口国,但是大家知道从哪些国家进口吗?
  3. Java子类的成员方法可以直接调用父类的成员方法和成员变量
  4. CentOS6上Hadoop集群中服务器cpu sys态异常的定位与解决
  5. vs2010常见错误记录
  6. apache poi 修改docx表格_JAVA poi对word.docx文件的修改
  7. JVM学习-垃圾回收调优
  8. RTMPdump 使用说明
  9. android webkit js脚本注入(js内部对象由java层构建)
  10. 基于3DMM的三维人脸重建技术总结
  11. 怎么彻底关闭UAC(user account control)?
  12. Proteus仿真:MSP430
  13. Python: dict vs defaultdict
  14. 坚持学习、只是尽力维持不退步吧了
  15. android 地球坐标 火星坐标系,IOS开发入门之iOS开发火星坐标系与地球坐标系解析...
  16. 如何将国外的ftp气象大数据下载回来(by quqi99)
  17. 浅谈面试与简历——总结于尚硅谷视频《程序员面试指南》
  18. 004-如何用PS把彩色图片设置成黑白图片?
  19. spring boot新闻管理系统 毕业设计源码211113
  20. 人过青年,我们的黄金时代过去了吗?

热门文章

  1. 四则表达式求值—中缀表达式先转变成后缀表达式再求值python实现
  2. 《MYSQL必知必会》— 14~17.子查询、联结、高级联结、组合查询
  3. 【回血赠书第4期】9月新书不一般,你涨知识我买单
  4. 数据标准是物联网大集成应用的核心
  5. 分享程序员成长故事 解析IT职场困惑
  6. 8.13 Prototypical Networks 原型网络
  7. python地理数据处理库geopy
  8. python手机能学吗_学习大数据是否可以不学习Python?
  9. stackexchange.mysql_StackExchange.Redis客户端读写主从配置,以及哨兵配置。
  10. 树莓派 红灯不亮_关闭树莓派的电源指示灯和状态指示灯