11 STP基础

以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。运行STP协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个接口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。

image

二层环路带来的问题

image

STP(Spanning Tree Protocol)

在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路。且会通过报文监控网络的拓扑结构,正常情况下是将SW3上的一个接口进行阻塞(Block),从而打破环路,当监控到SW1与SW3之间出现链路故障则
恢复阻塞端口进入转发状态。

image
image

STP 基本概念

桥ID

在STP中,每一台交换机都有一个标示符,叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768,可以修改但是修改值必须为4096的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC
地址越小则越优先。

image

根桥

STP的主要作用之一是在整个交换网络中计算出一棵无环的“树”(STP树)。根桥是一个STP交换网络中的“树根”,STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定。

image

Cost

每一个激活了STP的接口都维护着一个Cost值,接口的Cost主要用于计算根路径开销,也就是到达根的开销。接口带宽越大,则Cost值越小,用户也可以根据需要通过命令调整接口的Cost。

image

RPC

在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”,交换机某个接口到根桥的“成本”,也即RPC。一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加,在本例中,SW3从GE0/0/1接口到达根桥的RPC等于接口1的Cost加上接口2的Cost。

image

Port ID

运行STP的交换机使用接口ID来标识每个接口,接口ID主要用于在特定场景下选举指定接口。接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128。用户可以根据实际需要,通过命令修改该优先级。

image

BPDU

为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU
中。BPDU有两种类型:配置BPDU和TCN BPDU。配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。

image

BPDU报文格式
image

配置BPDU转发过程

端口角色

STP定义了三种端口角色:指定端口,根端口和预备端口

指定端口是交换机向所连链路发配置BPDU的端口,每个链路有且只有一个指定端口。一般情况下根桥的每个端口都是指定端口。
根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的的交换机上最多只有一个根端口,但是根桥上没有根端口
如果一个端口既不是根端口也不是指定端口,则此端口为预备端口。预备端口将被阻塞。

STP工作流程

一.选举根桥

交换机在刚启动时都认为自己是根桥,互相发送配置BPDU进行STP运算,配置BPDU中包含自己的桥ID,当交换机收到来自其他设备的BPDU,会将BPDU中的根桥ID和自己的桥ID比较,最后根据拥有最小桥ID的交换机成功为根桥,其余的为非根桥,根桥的角色是可抢占的。如图三台交换机的桥优先级相同则比较MAC地址,SW1的MAC地址最小,则SW1为根桥

2.非根交换机选举出一个根接口

每一台非根交换机都会在自己的接口中选举出一个根接口,由根端口作为非根交换机和根交换机的报文交互的端口。在选举出根桥后,根桥还会不停的发送BPDU,而非根桥会不断的接受BPDU,根据不同端口接收到的BPDU来判断哪个最优,选举顺序具体如下:

  • 一.RPC,越小越优
  • 二.上行交换机的BID,越小越优
  • 三.上行端口的PID,越小越优
  • 四.本地交换机的PID,越小越优

image

3.在每条链路上选举一个指定端口

网络中的每个链路于根桥之间的工作路径必须是唯一且最优的。当一个链路中有两条及以上的路径通往根桥时,与该链路相连的交换机就必须选出唯一的指定端口。根接口选举出来以后,非根桥会使用其在该接口收到的最优BPDU进行计算,让将计算出来的配置BPDU与除了根接口之外的所有其他接口所受到的BPDU进行比较,比较更优着成为指定接口,选举过程:

  • 一.RPC
  • 二.BID
  • 三.PID

image

4.非指定接口阻塞

一台交换机上,既不是根接口,又不是指定接口的接口被称为非指定接口,STP操作的最后一步就是阻塞网络网络中的非指定接口。这一步完成后,二层环路就此消除

image

练习

SW1为根桥,SW2的1口为根接口,2口为指定接口,SW3的1口为根端口,2口为非指定端口
image

SW1为根桥,SW2的1口为根接口,2口为指定接口,SW2的2口为根接口,1口为指定接口,SW3的1口为根接口,2口为非指定接口
image

STP接口状态及其状态迁移

Disable: 禁用状态,端口既不处理和转发BPDUB报文,也不转发用户流量

Blocking:阻塞状态。端口仅仅能接受并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态

Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。

Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加learning状态是为防止临时环路。

Forwarding:转发状态。端口既可以转发用户流量也可以转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态

image

一.接口初始化或激活,自动进入阻塞状态

二.接口被选举为根接口或指定接口,自动进入侦听状态

三.转发延迟计时器超时且接口依然为根接口或指定接口

四.接口不再是根接口或指定接口或指定状态

五.接口被禁用或或者链路失效

image-20230910153800814

STP故障

根桥故障

SW1发送故障时,SW2和SW3在超过MAX Age(20秒)没有收到根桥的配置BPDU,则会认为自己是根桥,重新进行选举,端口侦听和学习状态的时间分别为15秒,总计30秒完成端口收敛,加上端口状态转换时间,所以当SW1根桥出现故障,总共需要50秒才能再恢复网络

image-20230910160350043

直连故障

当两台交换机间用两条链路互连时,其中一条是主用链路,另一条为备用链路。当网络稳定时,交换机SW2检测到根端口的链路发生故障(端口状态变为Down),则其备用端口会进入用户流量转发状态。

端口状态变化过程:

备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态。收敛时间:直连链路故障,备用端口会经过30s后恢复转发状态。

image-20230910160825376

非直连链路故障

在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。若SW1与SW2之间的链路发生了某种故障(非物理故障),因此SW2一直收不到来自根桥SW1的BPDU报文,Max Age计时器(缺省: 20 s)就会超时,从而导致已经收到的BPDU报文失效。此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置BPDU给SW3,通知SW3自己是新的根桥。SW3收到SW2发来的非最优的BPDU,会将从SW1收到的最优的BPDU转发给SW2。因此,SW2发现SW3发来的BPDU更优,就放弃宣称自己是根桥并重新确定端口角色。

端口状态:

SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。非物理链路故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛时间。

image-20230910162154489

拓扑改变导致MAC地址表错误

在交换网络中,交换机依赖MAC地址表转发数据帧。缺省情况下,MAC地址表项的老化时间是300秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时MAC地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新MAC地址表项。本例中,SW2中的MAC地址表项定义了通过端口GigabitEthernet 0/0/1可以到达主机A,通过端口GigabitEthernet 0/0/3可以到达主机B。由于SW3的根端口产生故障,导致生成树拓
扑重新收敛,在生成树拓扑完成收敛之后,从主机A到主机B的帧仍然不能到达目的地。这是因为MAC地址表项老化时间是300秒,主机A发往主机B的帧到达SW2后,SW2会继续通过端口GigabitEthernet0/0/3转发该数据帧。

image-20230910184735927

拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。拓扑变更以及MAC地址表项更新的具体过程如下:

一.SW3感知到网络拓扑发送变化后,回不间断地向SW2发送TCN BPDU报文

二.SW2收到SW3发来地TCN BPDU报文后,会把配置BPDU报文中flags的TCA为设置为1,然后发送给SW3,告知SW3停止发送TCN BPDU报文

三.SW2向根桥转发TCN BPDU报文

四.SW1把配置BPDU中的flags的TC位设置位1后发送,通过下游设备把MAC地址表项的老化时间由默认的300s修改位Forward Delay的时间(默认为15s)

五.最终等待15秒后,SW2中的错误MAC地址表项会被自动清除。此后,SW2就能重新开始MAC表项的学习及转发操作

image-20230910185130505

边缘端口

开启了STP功能的交换机,连接了PC终端后,连接终端的接口也需要经过五种端口状态(30秒),在此期间无法正常通信,将连接PC终端的接口设置为边缘端口即可,当接口激活后直接为FORWARDING状态

如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。

命令:

[接口视图]stp edged enable

image-20230910192549500

边缘端口保护机制

如果误操作将边缘端口和交换机相连,交换机发出BPDU报文,边缘端口接受到了BPDU报文会立马失去边缘端口的特性,设置了边缘端口保护后,如果边缘端口接受到了BPDU报文,则关闭端口(防止误操作导致网络震荡),一般边缘端口和边缘端口保护结合使用

命令:

[系统视图]stp bpdu-protection

posted @   搞笑一下  阅读(153)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示