• 华为交换机:STP的详解和试验


    在这里插入图片描述

    前言

    为了解决网络冗余链路所产生的问题,IEEE定义了802.1D协议,即生成树协议STP,利用生成树协议可以避免帧在环路中的增生和无限循环,生成树的主要思想是,当两个交换机之间存在多条链路时,通过一定的算法只激活其中最主要的一条链路,而将其他冗余链路阻塞掉变为备用链路,当主链路出现问题时,生成树协议将自动启用备用链路,整个过程不需要认为干预.

    STP协议中定义了,根桥(RootBridge),根端口(Root Port),指定端口(Designated Port),路径开销(Path Cost)等概念,目的在于通过构建一棵自然树的方法阻塞冗余链路,同时实现链路备份和链路最优化.

    STP协议的通信,是通过桥协议数据单元(BPDU)进行通信的,它是运行STP的交换机之间交流消息帧,所有的支持STP协议的交换机都能接收并处理BPDU报文.

    STP工作过程

    选举根桥->选举根端口->选举指定端口->STP阻塞非根

    • 1.选举根桥:交换机假定自己是根,然后发送BPDU报文给其他交换机,最终选出ID号最小的交换机作为根桥.
    • 2.选举根端口:每台非根交换机都会选举出一个根端口,并且仅有一个根端口,并按照优先级选择一个根端口.
    • 3.选举指定端口:选择一条网桥到根桥的路径成本最小的路径,或者发送方的网桥ID最大的作为指定端口.
    • 4.选择阻塞端口:至此,就会根据STP算法,从多个链路中选择性的阻塞掉一些端口的数据通信.

    STP端口状态:

    1.阻塞(Blocking):端口只接受BPDU,不能接收或发送数据,也不能把学习到的MAC地址天机到MAC地址表中.
    2.转发(Forwarding):端口能够接收并转发数据,也能够学习MAC地址,并添加到MAC地址表中.
    3.侦听(Listening):该状态是从阻塞到转发状态过程中的临时状态,该状态只能发送和接受BPDU数据.
    4.学习(Learning):该状态是从阻塞到转发状态过程中的临时状态,该状态不能够发送或接收数据.
    5.关闭(Disable):该状态端口只提供网络管理服务,不能接受发送任何数据,也就是停止服务的状态.

    指定端口 Designated Port
    根端口 Root Port
    预备端口 Alternate Port

    RSTP快速生成树

    TP协议虽然解决了链路闭合引起的死循环问题,但是在端口从阻塞状态到转发状态间经过了一个只学习MAC地址但不参与转发的过程,产生了转发延时(默认15秒),从而使得生成树的收敛过程需要较长的时间,一般是转发延时的两倍.

    为了解决STP收敛时间过长的缺点,IEEE又推出了802.1w标准,定义了RSTP(快速生成树)协议.RSTP协议在网络配置参数发生变化时,能够显著的减少网络的收敛时间,由于RSTP是从STP发展而来的,其与STP协议保持高度的兼容性,RSTP协议规定,在某些情况下,处于阻塞状态的端口不必经历阻塞->侦听->学习->转发这一个过程,就可以直接进入转发状态.

    RSTP协议只有以下三种:
    1.丢弃(Discarding):RSTP将STP中的阻塞,禁用,和侦听统称为丢弃模式.
    2.学习(Learning):拓扑有所变动情况下,端口处于学习状态并学习MAC地址,将其添加到MAC地址表.
    3.转发(Forwarding):在网络拓扑稳定后,端口处于转发状态,并开始转发数据包.

    以上就是生成树协议的常用内容,对比后会发现,RSTP的收敛时间明显低于STP,解决了数据同步过慢的问题所在.

    生成树的配置

    在华为设备中STP默认是开启的,如下拓扑当设备启动之后,就已经开始选举根桥了。三台设备仅改了名字,其他什么都没有配置。我们来查看一下哪个是根桥。
    在这里插入图片描述

    判断根桥

    首先我们需要判断当前的根桥是哪一个设备,我们分别在四台交换机上执行.
    我们分别在3台交换机上执行display stp命令或者执行display stp brief,来查询默认那一台是根桥设备

    SW1

    <sw1>dis stp
    -------[CIST Global Info][Mode MSTP]-------
    CIST Bridge         :32768.4c1f-cc84-251c        // 本机优先级
    Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20   // 数据包发送时间
    Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
    CIST Root/ERPC      :32768.4c1f-cc07-29f3 / 20000      // 根桥MAC地址
    CIST RegRoot/IRPC   :32768.4c1f-cc84-251c / 0		// 备份根桥MAC地址
    CIST RootPortId     :128.1     //根端口ID
    ...
    
    <sw1>dis stp brief 
     MSTID  Port                        Role  STP State     Protection
       0    GigabitEthernet0/0/1        ROOT  FORWARDING      NONE
       0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    知识点:

    • 优先级(CIST Bridge)的组成:默认是32768.+本地MAC,根桥的优先级默认为32768,,MAC地址由交换机的VLAN1接口的MAC地址决定,优先级越小的交换机越有可能被选为根桥
    • 根端口ID(CIST RootPortId)的组成:默认128.+端口号的总和

    判断技巧:根据上面的注释,以及知识点第一条,我们可以发现一个规律,本地优先级CIST Bridge 中MAC部分如果和CIST Root/ERPC,即根桥MAC地址相同,则就是根桥。显然SW1不是根桥。

    SW2
    根据上面的知识点,发现SW2就是根桥

    <sw2>dis stp
    -------[CIST Global Info][Mode MSTP]-------
    CIST Bridge         :32768.4c1f-cc07-29f3
    Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
    Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
    CIST Root/ERPC      :32768.4c1f-cc07-29f3 / 0
    CIST RegRoot/IRPC   :32768.4c1f-cc07-29f3 / 0
    CIST RootPortId     :0.0
    
    
    <sw2>dis stp brief 
     MSTID  Port                        Role  STP State     Protection
       0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE
       0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    SW3

    [sw3]dis stp
    -------[CIST Global Info][Mode MSTP]-------
    CIST Bridge         :32768.4c1f-ccea-78bd
    Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
    Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
    CIST Root/ERPC      :32768.4c1f-cc07-29f3 / 20000
    CIST RegRoot/IRPC   :32768.4c1f-ccea-78bd / 0
    CIST RootPortId     :128.2
    
    
    <sw3>dis stp brief 
     MSTID  Port                        Role  STP State     Protection
       0    GigabitEthernet0/0/1        ALTE  DISCARDING      NONE
       0    GigabitEthernet0/0/2        ROOT  FORWARDING      NONE
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    判断根桥总结
    在这里插入图片描述

    指定根桥

    我们在设计这个拓扑时,想让SW1作为根桥,此时可在三层交换机上,直接通过以下命令,更换根桥设备.

    方法1:指定根桥

    [sw1]stp root ?
      primary    Primary root switch    //根桥
      secondary  Secondary root switch   //备份根桥,本次试验不涉及备份根桥
    [sw1]stp root primary 
    
    [sw1]dis stp
    -------[CIST Global Info][Mode MSTP]-------
    CIST Bridge         :0    .4c1f-cc84-251c
    Config Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
    Active Times        :Hello 2s MaxAge 20s FwDly 15s MaxHop 20
    CIST Root/ERPC      :0    .4c1f-cc84-251c / 0
    CIST RegRoot/IRPC   :0    .4c1f-cc84-251c / 0
    CIST RootPortId     :0.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    方法2:更改优先级

    [sw1]stp priority ?
      INTEGER<0-61440>  Bridge priority, in steps of 4096
    
    • 1
    • 2

    注意:必须是4096的倍数

    配置边缘端口

    对于运行生成树协议的二层网络,与终端相连的端口不用参与生成树计算,这些端口参与计算会影响网络拓扑的收敛速度,而且这些端口的状态改变也可能会引起网络震荡,导致用户流最中断.此时,可以通过执行命令stp edged-port enable将当前端口配置成边缘端口,该端口便不再参与生成树计算,从而帮助加快网络拓扑的收敛时间以及加强网络的稳定性.

    需要注意:当前端口配置成边缘端口后,如果收到BPDU报文,那么交换设备会自动将边缘端口设置为非边缘端口,并重新进行生成树计算,接下来将通过一个实验来演示边缘端口的配置,其配置拓扑图如下所示:

    在这里插入图片描述

    给指定端口配置

    这里我们指定配置两台交换机的边缘端口,将Ge0/0/2配置为边缘端口.

    #----在LSW1上操作-------------------------
    <Huawei> system-view
    [LSW1] stp mode rstp                                   // 设置成快速生成树
    [LSW1] interface GigabitEthernet 0/0/2                 // 选择要配置的接口
    [LSW1-GigabitEthernet0/0/2] stp edged-port enable      // 配置成边缘接口
    
    #----在LSW2上操作-------------------------
    <Huawei> system-view
    [LSW2] stp mode rstp                                   // 设置成快速生成树
    [LSW2] interface GigabitEthernet 0/0/2                 // 选择要配置的接口
    [LSW2-GigabitEthernet0/0/2] stp edged-port enable      // 配置成边缘接口
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    给全局端口配置

    也可以给将边缘端口配置为全局模式,以下案例将配置全局端口.
    其实就是指定把参与stp的端口配置成非边缘端口

    [LSW1] stp mode rstp                  // 配置成快速生成树
    [LSW1] stp edged-port default         // 配置边缘端口为全局模式
    
    [LSW1] interface GigabitEthernet 0/0/1              // 选择接口
    [LSW1-GigabitEthernet0/0/1] stp edged-port disable  // 配置为非边缘端口
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    【数据结构与算法】链表
    RabbitMQ(二)
    @Autowired注解和@Resource注解的区别
    整理Meta GDC 2024 上关于XR、空间计算相关的分享
    2022年第四届计算机视觉与模式识别国际会议(CCVPR 2022)
    SpringBoot——自定义自动配置与起步依赖
    06-React的路由
    革命性创新,动画杀手锏 @scroll-timeline
    IoT 设备物联网通信中 NB-IoT、Cat.1、Cat.M 如何选型?
    【muduo源码剖析】Thread/ThreadPool源码解析
  • 原文地址:https://blog.csdn.net/annita2019/article/details/132810044