当前位置: 代码迷 >> 综合 >> STP、RSTP、MSTP协议
  详细解决方案

STP、RSTP、MSTP协议

热度:54   发布时间:2023-12-05 12:25:05.0

常见的单点故障

二层

解决方案:链路聚合,STP生成树协议

新的问题产生:环路产生---产生了广播风暴,导致资源震荡

MAC地址表震荡

三层

解决方案:VRRP协议

---------------------------------------------------------------------------------------------------------------------------------

STP生成树协议

作用:物理线路的备份

逻辑阻塞端口,实现逻辑上无环

STP版本 :STP 802.1D 生成树协议

RSTP 802.1W 快速生成树协议

MSTP 802.1S 多实例生成树协议

STP算法:

BPDU的核心参数:
ROOT ID:用于标识当前根桥的桥iD。
RPC:用于描述根路径开销。

sender BID:BPDU发送者的桥ID。
sender PID:BPDU发送者的端口ID。
 

   1.确定树根--------确定根网桥

                      ------对比桥ID     ID=优先级+MAC

                                                      2字节   6字节

                                        默认优先级32768 ,步长4096

                                         选举规则:优先级高的(数值小的),优选为根网桥

                                                          优先级相等的,对比MAC地址小的为根网桥

   2.确定树干----------在非根网桥上确定根端口

                    选举规则:到达根网桥的开销小的接口作为根端口

                                      开销一样,就比较与自己直连的桥ID小的接口为根端口

                                     对端桥ID一样,就对比端口ID

                     端口号=优先级+端口号

                                    1字节    1字节

                                    默认端口优先级128

   3.确定树叶----------确定指定端口

                     规则:1.每个物理段上都有一个指定端口(转发数据)

                                2.根网桥上的所有端口都是指定端口

                     选举规则:1.到达根网桥开销小的接口为指定端口

                                       2.开销一样的话就对比自己所属交换机的桥ID(选小的)

                                       3.对端桥ID相等就选端口ID

       BPDU报文      :配置BPDU

                                  拓扑变更通告BPDU  --tu-BPDU

报文结构: 根网桥    桥ID  开销值   端口ID   版本   周期,老化时间

计时器:hello  2s              两秒发一个hello报文

               MAX AGE  20s     BPDU的最大年龄  (20s没收到BPDU)

            FORWARD  DELAY 15s    转发延迟 (拓扑变更后,会重新进行根网桥,根端口的选举15s)

                                                           (形成MAC地址表需要15s)

              Message     BPDU当前年龄

[sw1]dis stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge         :32768.4c1f-cc59-2cf5                        //描述自己的桥ID
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-cc54-58eb / 20000                //描述根桥的桥ID
CIST RegRoot/IRPC   :32768.4c1f-cc59-2cf5 / 0 //在MSTP才会用到,stp和rstp用于描述自己的桥ID
CIST RootPortId     :128.1                                        //端口ID=优先级+端口号----[Port1(GigabitEthernet0/0/1)][FORWARDING]----Port Protocol       :Enabled                                  //接口开启的stpPort Role           :Root Port                                //当前接口角色为根端口Port Priority       :128                                      //接口优先级128Port Cost(Dot1T )   :Config=auto / Active=20000               //描述当前接口的costDesignated Bridge/Port   :32768.4c1f-cc54-58eb / 128.1        //指定桥,用于描述当前链路上指定端口所在的桥ID  Port STP Mode       :STP                                      //运行模式为stp

STP缺点:延迟大,至少30s-50s+

--------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------

RSTP   快速生成树

           STP不足:

1.初始化----收敛速度慢---30s

2.根端口和阻塞端口在一个设备上,根端口出现问题,阻塞端口开始转发数据(需要30s:侦听+学习)

3.根端口和阻塞端口不在一个设备上,根端口出现问题,阻塞端口需要50s(BPDU老化时间+侦听+学习)

4.终端设备在接入的时候,STP重新计算,因为终端设备不会产生环路,所有终端设备在RSTP不需参加计算

5.STP拓扑变更机制问题:出现问题的设备向上游设备发送TCN消息,上游设备收到后返回一个TCA消息,然后复制一份TCN消息向上游发送,直到根网桥收到TCN消息,从根网桥向全网发送TC消息,从而网络里面的其他设备收到TC消息之后,开始清除错误的MAC信息(把MAC地址表老化时间变为15s,原来的是300s)

6.端口状态分的太细:

disable:禁用状态,没有启用STP协议的端口或者人为关闭的端口处于禁用状态。

listending :侦听状态,可以发送BPDD接收BDPD 不学习MAC地址不转发数据

Learning:学习状态:可以发送BPDU接受BPDU学习MAC地址不转发数据

forwarding:转发状态,可以发送BPDU接收BDPU学习MAC地址转发数据

blocking:阻塞状态,不可以发送BDPU可以接受BPDU不学习MAC地址不转发数据。

7.端口角色:根端口,指定端口

RSTP针对STP不足点进行改进

1.使用发起请求/确认回复机制           P/A机制

   (P/A机制就是实现指定端口快速进入转发状态)

我们以下图为例,介绍RSTP协议中的P/A机制。
 

RSTP协议中的P/A机制工作如下:1> S1、S2、S3的网桥优先级如上图所示。2> S1通过端口E1发送Proposal置位的RST BPDU消息给S2。3> S2收到该消息后,通过比较BPDU,判断端口E2为根端口。启用同步机制阻塞指定端口E1和E3以避免产生环路。然后将根端口设置为转发状态,并向S1发送Agreement消息。4> S1收到Agreement消息后,指定端口E1马上进入转发状态。5> S2的E1、E3端口是指定端口,并且不是转发状态。S2通过指定端口E1和E3发送Proposal报文。6> S3收到S2发送的Proposal报文后,判断E1为根端口,启动同步过程,由于S3下游均为边缘端口,所以已经实现了同步,因此S3直接向S2回复Agreement消息。7> S2收到S3发送的Agreement消息后,端口E1马上进入转发状态。8> S4收到S2发送的Proposal报文后,判断E1为根端口,启动同步过程,由于S4下游均为边缘端口,所以已经实现了同步,因此S4直接向S2回复Agreement消息。9> S2收到S4发送的Agreement消息后,端口E3马上进入转发状态。P/A过程结束

2.根端口快速切换                              预备端口

(RP和AP在同一个设备,AP快速替代RP)

(在RSTP中可以直接转为RP,立即进入转发状态,不需要等30s)

3.次等BPDU处理机制    结合P/A                    备份端口(AP快速备份DP)

4.针对终端接入的时候,不需要进行STP计算,可以设置边缘端口

当把交换机的一个接口设置为EP的时候,交换机一旦开机,STP进程在接口上运行,此时发现接口为EP,则会直接进入到转发状态,而无需等待30S时间。

int g0/0/0

stp edged-port enable

5.允许RSTP的设备拓扑发生变化后,直接向网络其他设备发送TC变更信息,从而快速收敛

—旦检测到拓扑发生变化,将进行如下处理:
为本交换设备的所有非边缘指定端口启动一个TC While Timer,该计时器值是Hello Time的两倍。
在这个时间内,清空状态发生变化的端口上学习到的MAC地址。同时,由这些端口向外发送RSTBPDU,其中TC置位。一旦TC While Timer超时,则停止发送RST BPDU。
其他交换设备接收到RST BPDU后,清空所有端口学习到MAC地址,除了收到RST BPDU的端口。
然后也为自己所有的非边缘指定端口和根端口启动TC While Timer,重复上述过程。如此,网络中就会产生RST BPDU的泛洪。

6.端口状态:discarding(失效状态):不学习MAC地址,不转发数据,处理BPDU

           learning:学习MAC地址,不转发数据,处理BPDU

           forwarding:学习MAC地址转发数据,处理BPDU

7.端口角色:根端口

                  指定端口

                  预备端口(RP和AP在同一个设备,替代的根端口)

                  备份端口(RP和AP不在同一个设备上,备份的是指定端口DP)

                  边缘端口(终端主机接入的端口)

--------------------------------------------------------------------------------------------------------------------------------

1.BPBU保护

接口配置边缘接口,实现终端接入网络的时候减少网络的动荡,但是如果在配置边缘端口的情况下收到了BPDU,这个接口重新参与stp计算,会影响网络,为防止这种情况,系统视图下配置BPDU保护,当边缘端口收到BPDU后,端口直接会DOWN掉

int g0/0/3

[Huawei-GigabitEthernet0/0/3]stp edged-port enable

[Huawei]stp bpdu-protection 

将3口设置为边缘端口,开启bpdu保护后,连入新的交换机,3口收到bpdu后直接会将接口down掉

手动开启:int g0/0/3 
[Huawei-GigabitEthernet0/0/3]undo shutdown 

自动开启:

[Huawei]error-down auto-recovery cause bpdu-protection interval 30
 

2.根保护

网络里面添加了一个新交换设备,如果这台设备的桥ID优先级比现网里面的根网桥优先级还高,那么会影响现网的稳定,所有在与设备相连的指定端口上配置根保护,防止网络动荡,当接口上配置根保护之后,再次受到桥ID优先级比当前根网桥还高的BPDU,此接口状态会变为discarding状态

interface GigabitEthernet0/0/4
 stp root-protection

场景:针对于不是边缘端口的DP接口,如果接入了优先级更高的交换机,那么将会导致二层网络产生震荡,此时可以使用根保护来解决这个问题。
作用:强制一个接口永远为DP端口,不能变为RP端口,防止周围交换机成为根桥。
恢复:当接口不再收到更优的BPDU之后,接口等待两个转发延迟时间(15S),进入转发状态
 

3.泛洪TC-BPDU保护(拓扑变更通告)

在网络中,连接终端的接口,频繁收到TC-BPDU,会导致网络设备频繁刷新MAC地址表项,影响网络的稳定性,所有在连接终端的接口配置为边缘接口的情况下,设置TC-BPDU发送的阈值,此设备只处理阈值以内的TC-BPDU,比如10S处理2此TC BPDU,其他超出阈值,交换机不会处理,当设备的计时器达到一定时间,会统一处理一次((即执行MAC地址表和ARP表项删除的动作一次)
)

[sw3]stp tc-protection threshold 3

4.环路保护


场景:当网络发生拥塞或者出现单向故障的时候,很有可能导致AP和RP在BPDU超时之后,依然没有收到任何BPBU报文,那么此时可能导致网络中出现单向环路的风险。此时可以在AP或者RP上开启环路保护功能。
作用:当一个接口开启环路保护功能之后,接口在BPDU超时之后,没有收到任何BPDU报文,
将会把接口变为DP处于Disacarding状态。
恢复:直到端口重新收到BPDU,或者单向故障恢复将会进行P/A的协商,之后进入到转发状态。
[sw3]stp loop-protection

---------------------------------------------------------------------------------------------------------------------------------

MSTP单域配置

拓扑

配置MSTP单域多实例步骤

1.配置基本信息如:ip,vlan,链路类型

2.配置MST域

      配置域名

      创建实例并绑定vlan

       激活MST域

[sw1-mst-region]dis this 
stp region-configurationregion-name aaainstance 1 vlan 10instance 2 vlan 20active region-configuration
(每个交换机都是如此)

3.可以手动选择实例的主根次根

[sw1]stp instance 1 root primary
[sw1]stp instance 2 root secondary[sw2]stp instance 1 root secondary
[sw2]stp instance 2 root primary

4.也可以手动影响信息发送的路径

如果不手动选择阻塞端口,默认就是这样

[sw3]dis stp brief MSTID  Port                        Role  STP State     Protection0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE0    GigabitEthernet0/0/3        DESI  FORWARDING      NONE0    GigabitEthernet0/0/4        ROOT  FORWARDING      NONE0    GigabitEthernet0/0/5        DESI  FORWARDING      NONE1    GigabitEthernet0/0/1        DESI  FORWARDING      NONE1    GigabitEthernet0/0/3        ROOT  FORWARDING      NONE1    GigabitEthernet0/0/4        DESI  FORWARDING      NONE1    GigabitEthernet0/0/5        ALTE  DISCARDING      NONE2    GigabitEthernet0/0/2        DESI  FORWARDING      NONE2    GigabitEthernet0/0/3        ALTE  DISCARDING      NONE2    GigabitEthernet0/0/4        ALTE  DISCARDING      NONE2    GigabitEthernet0/0/5        ROOT  FORWARDING      NONE
[sw3]
[sw4]dis stp brief MSTID  Port                        Role  STP State     Protection0    GigabitEthernet0/0/1        DESI  FORWARDING      NONE0    GigabitEthernet0/0/2        DESI  FORWARDING      NONE0    GigabitEthernet0/0/3        DESI  FORWARDING      NONE0    GigabitEthernet0/0/4        DESI  FORWARDING      NONE0    GigabitEthernet0/0/5        DESI  FORWARDING      NONE1    GigabitEthernet0/0/1        DESI  FORWARDING      NONE1    GigabitEthernet0/0/3        ROOT  FORWARDING      NONE1    GigabitEthernet0/0/4        ALTE  DISCARDING      NONE1    GigabitEthernet0/0/5        ALTE  DISCARDING      NONE2    GigabitEthernet0/0/2        DESI  FORWARDING      NONE2    GigabitEthernet0/0/3        ROOT  FORWARDING      NONE2    GigabitEthernet0/0/4        DESI  FORWARDING      NONE2    GigabitEthernet0/0/5        ALTE  DISCARDING      NONE
[sw4]

 如果需要选择路径,就需要将不想走的路开销调大

[sw3-GigabitEthernet0/0/5]stp instance 1 cost 200000

这样就会将这个端口阻塞,从别的路转发数据了

多域MSTP配置过程

拓扑:

 配置思路:

1.配置IP,将连接pc端的端口链路类型都改成access,交换机直连的都改成trunk,允许所有vlan通过

2.在sw1、2、3创建域aaa1,创建实例1实例2,绑定vlan,激活域,sw1为两个实例的主根

sw1,2,3同配置
[sw1-mst-region]dis this 
stp region-configurationregion-name aaa1instance 1 vlan 2instance 2 vlan 3active region-configuration
stp instance 1 root primary
stp instance 2 root primary

3.在sw4、5、6创建域aaa2,创建实例1实例2,绑定vlan,激活域,配置两个实例的主根和次根

sw4,5,6同配置
[sw5-mst-region]dis this 
stp region-configurationregion-name aaa2instance 1 vlan 2instance 2 vlan 3active region-configuration
sw5配置
stp instance 1 root primary
stp instance 2 root secondary
sw6配置
stp instance 1 root secondary
stp instance 2 root primary

3.在sw7、8、9创建域aaa3,创建实例1实例2,绑定vlan,激活域,配置两个实例的主根和次根

sw7,8,9同
[sw8-mst-region]dis this 
stp region-configurationregion-name aaa3instance 1 vlan 2instance 2 vlan 3active region-configuration
sw8配置
stp instance 1 root secondary
stp instance 2 root primary
sw9配置
stp instance 1 root primary
stp instance 2 root secondary

测试:

pc1 ping  pc7

 pc2  ping  pc8