初级应该掌握的破环技术(STP状态机与迁移过程)
  xpmJefiPD9zg 2023年11月26日 12 0

作者:网络之路一天  首发公众号:网络之路博客(ID:NetworkBlog)

STP的端口状态机

上一篇主要讲了根桥与三种端口角色(根端口、指定端口、备用端口)的选举过程,这个选举是要时间的,随着二层的网络拓扑越来越大,STP的选举就会越久,同时某一台设备出现故障,STP完成整个状态的收敛也需要时间,那什么时候可以发送数据就成了一个问题,所以在三种端口角色的基础上面,还定义了五种端口状态来确保整个二层网络选举完毕以及出现故障的时候能够完成网络的恢复。

STP五种端口状态

状态名称

 描述

禁用(Disable)

端口没连接线或者被人为关闭,什么都干不了

阻塞(Blocking)

STP树稳定后,被STP阻塞,只接收处理BPDU,不转发BPDU,不能转发数据帧、不学习MAC地址

侦听(listening)

过度状态,开始STP的计算过程,该状态可以收发并处理BPDU,但不能转发数据帧,也不学习MAC地址

学习(Learning)

过度状态,建立无环的MAC地址转发表,不转发用户的流量

转发(Forwarding)

稳定状态,当根端口与指定端口选举完毕后处于该状态,端口可以正常收发数据帧,学习MAC地址,并且处理BPDU。

初级应该掌握的破环技术(STP状态机与迁移过程)_生成树

STP交换机在端口up后的情况

  • 在STP交换机启动开始,都会认为自己是根桥,都会发送BPDU告知其他交换机,然后STP状态从禁用状态进入到阻塞状态,该状态下,端口只能接收和处理分析BPDU,不能发送BPDU。
  • 通过BPDU交互后,开始选举根桥、以及根端口、指定端口,有了角色的端口开始进入侦听状态,这些端口可以接收、发送BPDU,这个过程持续一个Forward     Delay时间,默认是15秒。
  • 15后端口进入到学习状态,该状态开始学习MAC地址,构建一个无环的表项,为数据转发做准备,同时可以发送和接收BPDU,整个过程也持续一个Forward     Delay时间。
  • 最后,端口由学习状态进入到转发状态,开始进行数据转发,整个迁移过程中,中途端口关闭或者链路故障,就会进入到禁用状态,原本处于被阻塞的接口,收到网络结构变更开始进行状态迁移,完成链路恢复,最终保证数据可以正常发送。

STP的时间参数

在STP里面定义了三个重要的时间参数

  • Hello     Time(hello 时间):STP交换机发送配置BPDU的时间间隔,默认是2秒
  • Forward     Delay(转发延迟):接口从侦听到学习状态、学习状态进入转发状态的延迟时间,默认是15秒,这是避免STP树在计算过程中出现临时环路、导致数据帧泛洪现象,所以在侦听阶段等待15秒让STP树能够选举完成,在学习阶段等待15秒构建出无环的MAC表。一个阻塞接口选举成为根端口或者指定端口后,进入转发状态至少需要经历30秒的时间。
  • Max Age(最大生存时间):BPDU最大的生存时间,也称为BPDU的老化时间,如果非根桥设备的所有端口在20秒内没有收到根桥的BPDU,自己缓存的BPDU信息老化,设备会重新在接口上选择其他最优的BPDU,重新进行选举。

可以发现这三个时间参数的设计,一个接口从阻塞状态进入到转发状态,是需要等待30~50秒的时间,这个时间内,网络无法正常使用。

STP的拓扑变化机制


初级应该掌握的破环技术(STP状态机与迁移过程)_生成树_02

现在正常路径访问同网段的是办公区1-------办公区3,跨网段的是,办公区1---核心---办公区1----办公区3,我们关闭办公区1到办公区3的链路,抓取核心G0/0/3的包,看看会发生什么。(在PC1上面开启ping 192.168.255.6 -t)

(1)实际操作感受

[bg1]interface  Ethernet0/0/4
[bg1-Ethernet0/0/4]shutdown

初级应该掌握的破环技术(STP状态机与迁移过程)_链路_03

初级应该掌握的破环技术(STP状态机与迁移过程)_生成树_04

可以发现,STP的状态跟我们在提到的不太一样,并没有阻塞、侦听这2个状态,而是DISCARDING,这个待会说明,迁移的过程中大概花费了30秒左右。

(2)实际STP的变化过程

初级应该掌握的破环技术(STP状态机与迁移过程)_链路_05


上面是抓包看到的内容,有两个信息需要我们了解的

初级应该掌握的破环技术(STP状态机与迁移过程)_数据帧_06

办公区三发现E0/0/4(RP)口发现故障,于是把E0/0/1得状态由AP转变成RP,STP状态由阻塞---侦听---学习---转发改变,变成转发的时候

初级应该掌握的破环技术(STP状态机与迁移过程)_链路_07

E0/0/1口会发送一个TCN报文告知上游交换机,我这边发生了拓扑改变(TCN就是拓扑变更通知),核心交换机收到以后,会回应一个TCA(TN与TCA都置位1)表示我已经知道了。

初级应该掌握的破环技术(STP状态机与迁移过程)_生成树_08

初级应该掌握的破环技术(STP状态机与迁移过程)_生成树_09

核心交换机会复制该TCN报文,继续向根方向发送,作用就是告知根桥,拓扑发生了改变办公区一(根桥)收到后,会回应TCA表示我已经收到了。

初级应该掌握的破环技术(STP状态机与迁移过程)_数据帧_10

根桥知道网络结构发送了变化,发送频繁发送TC来刷新整个STP网络

初级应该掌握的破环技术(STP状态机与迁移过程)_数据帧_11

这个TC的作用就是通知下游交换机把MAC地址表项的老化时间变成15秒,让之前MAC的表项快速老化掉,学习新的MAC表。

内容总结(我们需要记住的)

  • 平时根交换机发送的BPDU为配置BPDU,用于构建、维护STP树
  • 当STP树稳定后,突然链路发生故障导致网络拓扑结构发生改变,接口变化的那台交换机会发送TCN     BPDU从上游交换机往根桥方向发送出去,主要目的是告知根桥拓扑变化了。
  • 上游交换机收到以后会置位TCA标记的配置BPDU用于回应下游交换机,我已经知道拓扑变化的情况了,也顺便让下游交换机停止发送TCN BPDU报文。
  • 上游交换机如果不是根交换机,会继续复制TCN报文,往根方向发送,直到根交换机收到,中途收到的上游交换机都会回应TCA信息用于确认。
  • 根交换机收到以后,会置位TC标记的配置BPDU,用于告诉下游设备拓扑发生了变化,让下游设备快速老化MAC地址表项,开始重新学习,这样实现快速收敛。

RSTP与MSTP的简单了解(入门阶段)

STP其实是有非常多的缺点的,比如下面的

  • 收敛速度非常慢:STP属于被动算法,依赖定时器的方式来判断网络拓扑的变化,比如BPDU的Max Age值是20秒,失效后才知道对方发生了故障,接口从侦听到学习状态,在从学习到转发状态都分别有一个15秒的转发延迟时间,一个接口链路发生变化,收敛时间需要30~50秒的时间,这段时间是无法转发数据的,不适合目前的网络需求。
  • 接口状态的重合度:  Blocking、Listening、Learning这三个状态都不转发用户的数据,从用户角度来说,这三种状态没有什么区别。
  • 不合理的拓扑变跟机制:变更设备朝根方向发送TCN消息,上游设备收到以后回复TCA,在复制TCN往根桥发,直到到了根桥后,在由根桥发送TC消息来通知整个网络老化MAC表,效率其实非常的低下。


RSTP与MSTP的改进

RSTP与MSTP是在STP的基础上面做了大量的改进,更加适用于网络对于快速收敛的要求

  • 加强AP接口的作用,在交换机的根端口失效后,立即成为新的根端口
  • 新增P/A机制,让指定接口能够快速进入转发状态,不像 STP需要经过2个15秒的时间
  • 新增边缘端口,接入终端的设备立即进入转发状态
  • 删除三种端口状态(Disabled、Blocking、Listening)统一为Discarding
  • Flag字段的全部利用,不在跟STP一样只用2个字段。
  • 新增BPDU保护功能、根保护、环路保护、拓扑变更保护。
  • MSTP增加了多VLAN生成树的支持,解决了RSTP多VLAN共用一颗生成树,导致无法实现链路的负载分担情况。


入门阶段要知道的内容(经验的分享)

对于RSTP与MSTP来说内容其实非常的多,这些就放到进阶里面,否则内容过多,影响学习的积极性,也不利于学习,但是有几个内容是我们工作中必须要知道的,所以这里来说下。

[bg1]interface  Ethernet0/0/4
[bg1-Ethernet0/0/4]undo shutdown

(1)华为、华三设备的STP的状态

<bg3>display  stp brief
 MSTID   Port                         Role  STP State     Protection
   0     Ethernet0/0/1                ALTE  DISCARDING      NONE
   0     Ethernet0/0/2                DESI  FORWARDING      NONE
   0     Ethernet0/0/3                DESI  FORWARDING      NONE
   0     Ethernet0/0/4                ROOT  FORWARDING      NONE
<bg3>
<bg3>
<bg3>display  stp     
-------[CIST Global  Info][Mode STP]-------

标准STP端口状态

RSTP端口状态(华为华三STP)

Forwarding

Forwarding

Learning

Learning

Listening

Discarding

Blocking

Discarding

Disabled

Discarding

在华为跟华三的设备里面STP其实是已经融入了RSTP的一些特性的,所以会发现不管运行在STP、RSTP、MSTP,它的状态都是以RSTP的状态显示,这个是需要知道的。(在其他厂商设备上面看到的则是标准的,避免产生误差)

(2)实际中使用MSTP

[Core]stp mode mstp

[bg1]stp mode mstp

[bg3]stp mode mstp

在实际使用中,华为华三只要不是特别老的设备,它默认就工作在MSTP模式,这也是最推荐的模式,不需要去需改它,前一篇与这篇上面的内容都是为了了解STP的选举过程以及状态的变更才进行切换的,实际组网我们使用默认的MSTP即可,如果真的遇到老的设备不支持MSTP,也用对应的RSTP。

(3)边缘端口

初级应该掌握的破环技术(STP状态机与迁移过程)_链路_12

开启办公区三E0/0/4抓包 ,以及把PC5 关机,然后开机

初级应该掌握的破环技术(STP状态机与迁移过程)_生成树_13

初级应该掌握的破环技术(STP状态机与迁移过程)_链路_14

初级应该掌握的破环技术(STP状态机与迁移过程)_生成树_15

对于一个终端来说,它完全是不需要参与选举,也没必要经历这些状态的,但是实际只要你运行了STP(广义上),不管是终端还是交换机都需要经历状态的演变,我们需要做下优化,开启一个功能,叫做边缘端口,标准中是由RSTP才引进的,但是这里华为、华三在STP就已经开始支持,并且最早由思科提出来的概念,属于STP的补丁,后面把IEEE加入到了RSTP中。(华为、华三中STP是可以支持边缘端口的,标准中并没有)

初级应该掌握的破环技术(STP状态机与迁移过程)_数据帧_16

如果说运行在STP的情况下,还有更糟糕的事情,就是接口从blocking到forwarding状态后,该交换机会认为这一次拓扑改变,于是会发送TCN通知上游交换机,一直到根交换机,然后整个网络TC泛洪刷新MAC老化时间,这无疑是浪费整个交换网络设备的资源(整个二层网络的交换机需要处理TC报文,还要加速MAC地址表的老化,另外在华为、华三设备除了老化MAC地址表,还会老化ARP表项,让三层网关能够快速的学习新的ARP记录)

初级应该掌握的破环技术(STP状态机与迁移过程)_数据帧_17

在RSTP或者MSTP里面,无需根交换机来发送TC,自身就可以发起,减少了收敛的时间,但是对于资源浪费还是存在的。

配置方法一:接口下开启
[bg3]interface  Ethernet0/0/2
[bg3-Ethernet0/0/2]stp  edged-port enable


配置方法二:全局开启
stp edged-port  default


通常在工作中用接口开启的比较多,对接终端的接口全部开启,也非常建议开启。如果是对接了交换机的接口,只有接口收到BPDU,改接口的边缘端口特性失效,恢复成正常的STP接口。

初级应该掌握的破环技术(STP状态机与迁移过程)_生成树_18

再次的关闭跟开启下

初级应该掌握的破环技术(STP状态机与迁移过程)_生成树_19

可以看到,立马就变成forwarding状态了,边缘端口就是表示该接口不参与生成树计算,但是要注意,如果设备从边缘端口收到BPDU,那么它会还原成正常的STP接口,开始重新状态的迁移。

(4)华三边缘端口配置

[H3C]interface  g1/0/1
[H3C-GigabitEthernet1/0/1]stp  edged-port
Edge port should only  be connected to terminal. It will cause temporary loops if port  GigabitEthernet1/0/1 is connected to bridges. Please use it carefully.


华三的配置不需要enable,直接stp  edged-port即可,但是注意这个是V7的版本,如果是V5版本跟华为一样,需要后面跟enable

(5)关于WEB操作

WEB操作我会单独在实战里面全方面演示

最后的结束语

对于STP整体的知识点其实算是我写课件来最头疼的一件事了(光18 19写了差不多一个星期,不知道怎么下手),第一个是因为它有三种模式,每种模式状态跟角色都非常的多,对于初学者来说,其实不是很好理解,还一个比较重要的地方就是,STP、RSTP、MSTP在实际应用中越来越被边缘化了,存在感不是很强,就算是MSTP,它对于高要求的网络收敛来说还是很慢的,后续在进阶里面,我们会讲讲RSTP跟MSTP,作为一个知识框架的扩展,主要讲解替代的技术以及网络目前架构的变化,对于入门级别的朋友来说呢,掌握了STP的选举过程,以及几种状态、TCN、TCA、TC的作用就可以了,这个不管在考试还是面试中会经常遇到,工作中相对来说可能你如果不去复习的话,随着时间的推移,这些理论会慢慢的忘记掉,这个是作为一个过来人的经历分享,下一篇我会介绍一些在实际关于STP应用的一些经验,跟遇到环路的时候应该注意什么。

初级应该掌握的破环技术(STP状态机与迁移过程)_数据帧_20

作者:网络之路一天,公众号:网络之路博客(ID:NetworkBlog)。让你的网络之路不在孤单,一起学习,一起成长。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月26日 0

暂无评论

推荐阅读
  4i8hCvzXKbg6   2023年11月20日   21   0   0 链路
  4i8hCvzXKbg6   2023年12月06日   18   0   0 链路ip地址子网掩码
  4i8hCvzXKbg6   2023年12月06日   57   0   0 链路优先级Database
  4i8hCvzXKbg6   2023年12月06日   17   0   0 链路DatabaseNetwork
  4i8hCvzXKbg6   2023年12月07日   20   0   0 链路校验和Database
xpmJefiPD9zg