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

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

STP的端口状态机

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

STP五种端口状态

状态名称

 描述

禁用(Disable)

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

阻塞(Blocking)

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

侦听(listening)

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

学习(Learning)

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

转发(Forwarding)

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

图片

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的拓扑变化机制

图片

现在正常路径访问同网段的是办公区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的状态跟我们在提到的不太一样,并没有阻塞、侦听这2个状态,而是DISCARDING,这个待会说明,迁移的过程中大概花费了30秒左右。

(2)实际STP的变化过程

图片

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

图片

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

图片

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

图片

图片

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

图片

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

图片

这个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)边缘端口

图片

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

图片

图片

图片

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

图片

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

图片

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

 配置方法一:接口下开启[bg3]interface  Ethernet0/0/2[bg3-Ethernet0/0/2]stp  edged-port enable
配置方法二:全局开启stp edged-port  default
通常在工作中用接口开启的比较多,对接终端的接口全部开启,也非常建议开启。如果是对接了交换机的接口,只有接口收到BPDU,改接口的边缘端口特性失效,恢复成正常的STP接口。

图片

再次的关闭跟开启下

图片

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

(4)华三边缘端口配置​​​​​​​

[H3C]interface  g1/0/1[H3C-GigabitEthernet1/0/1]stp  edged-portEdge 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应用的一些经验,跟遇到环路的时候应该注意什么。

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Cisco设备上查看STP状态需要以下步骤: 1. 进入config模式,在命令行中输入“enable”命令,激活管理员权限,再输入“config terminal”命令进入config模式。 2. 查看STP配置,在config模式下输入“show spanning-tree”命令,可以查看当前STP的配置信息。 3. 查看STP状态,在config模式下输入“show spanning-tree summary”命令,可以查看当前启用的STP协议以及各个端口状态。 4. 查看端口状态,在config模式下输入“show spanning-tree interface <interface name>”命令,可以查看指定端口STP状态信息。 需要注意的是,在查看STP状态时需要确保设备上已经启用了STP协议。如果STP协议未启用,可以在config模式下输入“spanning-tree mode”命令启用STP。同时还需要注意,不同型号的Cisco设备可能会有不同的命令和参数,具体操作时需要参考设备手册和命令指南。 ### 回答2: Cisco对于查看Spanning Tree Protocol(STP状态提供了各种不同的方法和命令。以下是一些常用的方法: 1. 通过show spanning-tree命令查看STP状态。在命令行界面(CLI)中输入此命令,您将能够查看当前与STP相关的信息。您可以通过使用不同的选项来控制显示的详细程度和内容。例如,show spanning-tree summary命令将显示每个VLAN的STP状态摘要,而show spanning-tree vlan [vlan-id]命令将显示指定VLAN的STP状态。 2. 通过show interface命令查看每个交换机接口的STP状态。此命令显示了有关每个接口的各种信息,包括与STP相关的信息,如端口状态,连接速度和模式等。您可以通过show interface [interface-id]命令查看指定接口的STP状态。 3. 通过show spanning-tree detail命令查看STP详细信息。此命令显示有关STP根桥,指定交换机的端口角色和状态以及与所选端口相关的各种信息。这是一种非常详细的命令,可以帮助您详细了解如何配置和调试STP。 4. 通过使用SNMP查看STP状态。如果您使用Simple Network Management Protocol(SNMP)来监视网络设备,您可以访问MIB(Management Information Base),以检索与STP相关的信息。例如,您可以使用ciscoStpExtensionsMIB来查看有关STP根桥和端口状态的信息。 总之,Cisco提供了多种不同的方法来查看STP状态。通过熟练使用这些命令和工具,您可以更好地了解您的网络并调试任何与STP相关的问题。 ### 回答3: 在 Cisco 网络设备中查看 Spanning Tree Protocol(STP状态有两种常见方法。下面我将介绍这两种方法。 第一种方法是使用命令行界面(CLI)。首先要进入设备的 enable 模式,然后输入以下命令: show spanning-tree 这个命令可以显示所有 VLAN 的 STP 状态。如果你只想查看某个 VLAN 的状态,可以输入以下命令: show spanning-tree vlan [vlan-id] 其中 [vlan-id] 指定要查看的 VLAN 号。如果还想查看某个端口STP 状态,可以输入以下命令: show spanning-tree interface [interface] 其中 [interface] 指定要查看的接口,比如 FastEthernet0/1 或 GigabitEthernet1/0/1。 除了这个基本命令,还有一些其他的命令可以用来查看 STP 状态,比如: show spanning-tree summary:显示 STP 摘要信息,包括设备的 STP 模式、根交换机信息等。 show spanning-tree detail:显示 STP 的详细信息,包括端口状态、优先级等。 第二种方法是使用图形用户界面(GUI)。在 Cisco 网络设备中,通常会有一个 Web 界面或者类似的管理界面,可以通过浏览器访问。在这个界面中,可以找到一个 STP 配置页面或者状态页面,可以根据页面上的提示操作来查看 STP 状态。 通常来说,使用 CLI 查看 STP 状态更为常见和方便,因为 CLI 可以在终端直接显示出来,而 GUI 则需要打开浏览器并登录到设备管理界面中。不过,GUI 也有其优点,比如更直观易懂,适合一些不太熟悉 CLI 操作的人员。因此,具体使用哪种方法来查看 STP 状态,可以根据自己的需要和习惯来决定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值