一、STP端口状态

1 写在前面的话:

由于网络设备存在固有的滞后,所以交换网络中也存在数据传播延迟。基于上述原因,拓扑变更就可能发生在交换网络中的不同时间和不同的网段。如果2层接口直接从生成树的Blocking切换到Forwading,就可能会出现暂时的数据环路或者暂时的大量数据泛洪。为了缓解这种问题,在开始转发数据帧之前,端口应当等待新的拓扑信息传播到整个交换网络中。
2 STP计时器
STP有三个非常重要的计时器:
  • Hello Timer                    根网桥周期性发送配置BPDU的时间间隔,缺省为2s
  • Forward Delay Timer     转发延迟计时器,从Listening到Learning状态,或者从Learning转换到Forwarding状态所需要的等待的时间,缺省为15s。
  • Max Age Timer              最大生存时间。在丢弃BPDU之前,网桥用来存储BPDU的时间,缺省为20s。如果一个被阻塞的接口(非指定端口)在收到一个BPDU后,20s的时间内再没有收到BPDU了,则开始进入Listening状态。
网络中的生成树拓扑依附于根网桥的计时器,根桥将BPDU中的计时器传递给所有交换机。对于802.1D的STP而言,端口从Blocking到Forwarding通常要30-50s(30s是15+15,也就是两个转发延迟时间,50s即20+15+15)。
3 STP 定义的端口状态如下:
 
关于为什么要定义这么多的端口状态,其实很好理解,拿Learning来说,为什么不让端口一旦被选举为指定端口后立即进入转发状态呢?设想一下,端口激活后,在它上面是没有学习到任何的MAC地址表项的,如果没有Learning状态的话,端口直接进入转发状态,就有可能引发短暂的数据泛洪。
4 STP端口状态转换过程
 
二、STP拓扑变更
1 STP拓扑变更概述
当网络拓扑发生变化的时候,最先意识到变化的交换机会从根端口发送TCN BPDU(BPDU报文中TYPE字段=0x80),也就是朝着根桥的方向发送TCN BPDU,这个消息会一跳一跳地传递到根交换机。上联的交换机在收到了该交换机发送上来的TCN BPDU后,除了向它自己的上一级交换机继续发送TCN BPDU外,还需回送一个TCA BPDU(FLAG字段中TCA位为1的配置BPDU)的确认信息给该交换机。当根桥接收到TCN后意识到了拓扑变化,遂向所有网桥发送TC BPDU(FLAG字段中TC位为1的配置BPDU)。
交换机们收到根桥发出来的TC BPDU后,会将自己的MAC地址表的老化时间由缺省的300s减少为15s(转发延迟计时器的时间),根桥发送的这个TC置位一直会持续35s(20+15)。
在发生以下时间时,交换机发送TCN:
  • 对于处于转发和监听状态的接口,过渡到Block状态(链路故障的情况)
  • 端口进入转发状态,并且网桥已经拥有指定端口
  • 非根桥在它的指定端口收到TCN
2 TCN BPDU

TCN BPDU包含3个字段,它与配置BPDU除了type字段之外的前3个字段完全相同。
3 拓扑变更过程 范例
 
 
  1. 1SwitchA挂掉;
  2. SwitchB最先检测到拓扑变化,于是产生TCN BPDU并从自己的根端口发送出去(因为根端口是朝着根桥的方向),B将连续发送TCN BPDU直到上游的指定交换机C发送TCN ACK进行确认;
  3. SwitchB收到这个TCN BPDU,回送一个TC ACK位置位的配置BPDU进行确认,同时向自己的根端口转发这个TCN BPDU;
  4. Root收到这个TCN BPDU,回送一个TC ACK位置位的配置BPDU给C;
  5. Root修改自己的配置BPDU,以此来通告整个交换网络关于拓扑变更的情况。 Root在配置BPDU中设置一段时间的拓扑变更(将配置BPDU中FLAG字段的TC位设置为1),这段时间等于Forward Delay Time + Max Age,默认35s。这个配置BPDU消息会泛洪到整个交换网络;
  6. 当交换机收到Root发出的这个TC置位的配置BPDU,它们使用转发延迟计时器(默认15s)来更新其MAC地址表中的条目。也就是说条目的寿命由原来的300s的默认值变成15s,这样能保证MAC地址条目更快速的刷新。交换机将持续这个过程,直到不再从Root收到TC BPDU消息为止。
我们会发现当拓扑变更的时候,就会产生TCN,然而有些情况下TCN的过渡泛洪可能会对网络才成不必要的影响,通过在接入层交换机上、连接PC终端设备的接口设置为portfast可以在一定程度上优化网络,防止由于PC的开关机导致的接入交换机端口updown而产生过多的TCN。
4 BPDU Flags
 
红茶三杯
网络工程 | 项目管理 | 技术培训
学习 沉淀 成长 分享
微博:http://weibo.com/vinsoney
博客:http://blog.sina.com.cn/vinsoney
站点:http://ccietea.com

【STP】STP(802.1D)端口状态及拓扑变更相关推荐

  1. STP报文格式与端口状态

    1.STP交换机通过交换STP协议帧来建立和维护STP树,并在网络的物理拓扑发生变化时重新建立STP树. 2.STP协议帧由STP交换机产生,发送.接收和处理.STP协议帧是一种组播帧,组播地址是01 ...

  2. STP:五种端口状态与角色 RSTP:3种端口状态与角色

    阻塞(blocking):该端口是非指定端口,不参与帧转发.此类端口接收 BPDU 帧来确定根桥交换机的位置和根 ID,以及最终的活动 STP 拓扑中每个交换机端口扮演的端口角色. 侦听(listen ...

  3. 2022-08-14 网工进阶(二十六) MSTP-网络层次、端口角色、端口状态、拓扑计算

    MSTP简介 RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛.但在划分VLAN的网络中运行RSTP/STP,局域网内所有的VLAN共享一棵生成树,被阻塞后的链路将不承载任何流量,无法在VLA ...

  4. RSTP快速生成树简介、RSTP与STP的区别、RSTP BPDU字段信息、RSTP角色与端口状态介绍、RSTP工作过程之P/A机制详细分解)

    2.11.0 以太网 RSTP快速生成树(简介.RSTP与STP.RSTP BPDU.RSTP端口状态.RSTP工作过程之P/A机制) RSTP快速生成树 简介 RSTP.STP的区别 RSTP BP ...

  5. STP——STP生成树协议讲解

    目录 STP基本概念 STP端口角色的选举 两种端口角色 首先先了解两个概念 STP选举步骤 端口角色如何选举 选举根桥 选举根端口RP--交换机上能够接收最好的BPDU报文的端口 选举指定端口DP- ...

  6. STP生成树协议:802.1D、PVST、PVST+、RSTP、MSTP;

    索引 STP802.1D 端口角色: 端口状态: 802.1D收敛时间: STP生成树选举: 生成树配置: 802.1D生成树的缺点 PVST -- Cisco私有生成树协议 PVST+ :在PVST ...

  7. CCNP2交换:生成树:STP(802.1D)、PVST、PVST+、RSTP/RPVST、802.1W、MSTP

    文章目录 CCNP2交换:生成树:STP(802.1D).PVST.PVST+.RSTP/RPVST.802.1W.MSTP 一.线路冗余导致的问题: 1.广播风暴 2.MAC地址表翻滚: 3.同一数 ...

  8. 快速了解STP生成树——作用,端口角色,端口状态,选举规则

    STP生成树 环路产生的问题 stp生成树的作用 BPDU网桥协议数据单元 1.什么是BPDU 2.BPDU消息的分类 3.BPDU消息的功能 stp生成树选举根端口的规则 stp生成树的端口角色和端 ...

  9. STP端口状态特点、STP端口角色特点、链路状态发生变化,STP如何重新收敛? TCN何时发?uplinkfast技术、Portfast技术、backbonefast技术、常见的STP调整命令:

    目录 STP端口状态: STP端口角色: 链路状态发生变化,STP如何重新收敛? 概述: 图解: --------------------------------------------------- ...

  10. HCIA STP的端口状态与BPDU

    一.前言 前面我们研究了STP原理: HCIA STP原理_布兰姥爷的博客-CSDN博客 先回顾一下根桥.根端口.指定端口的选举依据. 根网桥选举依据: 1)先看优先级 2)优先级一样看MAC地址 3 ...

最新文章

  1. android视频播放指定位置,android – 如何在某个特定位置的视图中查看视频?
  2. iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
  3. scala创建并使用Enumerations
  4. scala 字段覆盖_Scala中的字段覆盖
  5. java操作数据库 jdbc
  6. python选择排序算法图解_简单选择排序算法(C语言详解版)
  7. iOS:fishhook原理分析
  8. 如何生成网站地图(Sitemap)
  9. psd转html的素材,Ai转PSD格式完美保留图层脚本插件
  10. Failure obtaining db row lock: Lock wait timeout exceeded; try restarting transaction java定时任务
  11. RxJS 6 —— Subscription
  12. nodejs+vue+elementui摄影作品图片展示交流网站express
  13. html5拖放详解,HTML5拖拽/拖放(drag drop)详解
  14. strcpy()的使用注意事项
  15. 程序人生:扒一扒程序员为什么总在加班?拿生命敲代码?
  16. 除了迅雷还有什么靠谱的下载软件
  17. 火山PC-安卓-易语言混合通讯教程(火山视窗)
  18. 每天学一点英文:Espresso 20210906
  19. 语言学句法分析树形图怎么画_语言学第四章树形图句法.doc
  20. 【PHP】一个类完成支付宝当面付及WAP支付(手机网站支付)

热门文章

  1. 软件配置管理计划示例
  2. 74HC595芯片引脚,功能介绍【250字】【原创】
  3. java 游戏编程 (一)
  4. 《麦肯锡方法》读书笔记15
  5. ASP.NET MVC 5高级编程 (pdf书)
  6. 一分钟搞定网页监控,实现网站链接百度自动推送
  7. 从APNIC获取中国IP地址列表
  8. 如何获取 Boot Camp for Windows(Mac电脑装Windows后如何安装驱动)
  9. 不知道怎样计算权重?告诉你8种确定权重方法
  10. ubuntu16.04安装NVIDIA显卡驱动