STP生成树协议

本文详细介绍了STP(Spanning Tree Protocol)的工作原理,包括其出现背景、工作过程、端口状态机以及BPDU的相关信息。在冗余链路可能导致网络环路的情况下,STP通过选举根桥、阻塞非根非指定端口来消除环路,确保网络稳定性。同时,文章还阐述了STP如何应对根桥故障、链路故障等拓扑变化,并给出了具体的端口状态转换过程。最后,讨论了STP的配置命令及拓扑变化对MAC地址表的影响。
摘要由CSDN通过智能技术生成

一、STP出现背景

如果网络不启用STP协议,一般的为了使网络更加的可靠稳定,一般采用冗余链路的做法,但是这样做会使网络中出现环路,例如:在这里插入图片描述
而环路会照成以下问题:

  • a.广播风暴
  • b.网络中的主机会接受到重复的数据帧
  • c.Mac地址表震荡

二、STP工作原理

在冗余的网络中通过阻塞端口来消除环路,并实现链路备份。

三、STP工作过程

3.1 过程简述:

  1. 选举一个根桥,每个网络中只有一个
  2. 非根交换机选举根端口,每台非根交换机能有一个根端口,去往根桥距离最近的端口
  3. 为每条链路选举一个指定端口
  4. 阻塞非根、非指定端口

3.2 过程详述:

  1. 每台交换机启动时,都以为自己是根交换机,都会发送BPDU(STP的选举报文,此外还有TC BPDU:topo变更报文),BPDU中包含桥ID(bridge ID,格式为优先级[16位]+mac[48位]),最终桥ID最小的被选为根交换机,优先级默认为32768,可以修改,但必须是4096的倍数。
    注:
    在这里插入图片描述
    在这里插入图片描述
stp root primary  # 设置交换机优先级为0
stp root secondary   # 设置交换机优先级为4096
undo stp root     # 撤销交换机STP  Root 设定
stp priority 32768     # 设置交换机的优先级为32768
  1. 根端口选举
    依据:最小开销、对端BID、对端PID,本端PID

最小开销:交换机的每个端口都有一个端口开销,此参数表示该端口发送数据时的开销值,即出端口的开销。STP认为从一个端口接收数据是没有开销的。端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有出端口的端口开销总和,即根路径开销RPC(Root Path Cost)。非根桥根据根路径开销来确定到达根桥的最短路径,并生成无环树状网络。根桥的根路径开销是0。

连接速率开销RPC
100G200
10G2000
1G20000
100M200000
10M2000000

图例:在这里插入图片描述

假设SW1为根桥,SW2的GE0/0/1开销应该为20000,GE0/0/2的开销应该为40000,故选择GE0/0/1口为Sw2的根端口,SW3同理会选择GE0/0/2为他的根端口。
当最小开销也相同时比较对端的桥ID,以SW2为例,GE0/0/1口对端桥ID为32768.4c1f-cc82-311b,GE0/0/2口对端桥ID为32768.4c1f-cc76-5ec4,GE0/0/2口对端桥ID小于GE0/0/1口对端桥ID,故选择GE0/0/2口为根端口;当最小开销和对端桥ID都相同时(交换机的备份链路)比较对端PID,还是以SW2为例:GE0/0/1口对端PID为128.1,GE0/0/2口对端PID也为128.1,无法选择,那么比较本段的PID,GE0/0/1口PID为128.1,GE0/0/2口PID为128.2,故选择GE0/0/1口为他的根端口。

  1. 指定端口的选举

在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。
指定端口的选举也是首先比较累计根路径开销,累计根路径开销最小的端口就是指定端口。如果累计根路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计根路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。

  1. 其余端口作为预备端口,被阻塞。

四、STP端口状态机

4.1 端口状态转换过程

在这里插入图片描述
1.端口初始化或使能
2.端口被选举为根端口或指定端口
3. 端口不再是根端口或指定端口
4. FwDly计时器超时
5. 端口被禁用或链路失效

4.2 状态解释:

Disable(禁用状态):这个二层端口不会参与生成树计算也不会转发数据帧,端口会在这种状态下停留10秒。

Blocking(阻塞状态):此时,二层端口为非根、指定端口,不会参与数据帧的转发,该端口通过接受BPDU来判断根交换机的位置和根ID,以及STP收敛结束后,各个交换机端看应当处于什么状态,默认情况下端口在这种状态下停留20秒。

Listening(侦听状态):生成树此时以及已经根据交换机所接收到的BPDU而判断出这个端口应该参与数据帧的转发,于是交换机的端口不在满足于接收BPDU,同时也发送自己的BPDU,并一次来通过相邻的交换机该端口在活动拓扑中参与数据帧的转发工作,默认情况下,端口会在这种状态下停留15秒。

Learning(学习状态):这个二层端口准备参与数据帧的转发,并开始填写Mac地址表,默认情况下,端口在这个状态下停留15秒。

Fowarding(转发状态):这个二层端口已经成为活动拓扑的一个组成部分,他会转发数据帧并同时收发BPDU。

五、BPDU和计时器

BPDU中包含桥ID、路径开销、端口ID、计时器等。
在这里插入图片描述
配置BPDU中包含了足够的信息来保障完成生成树计算

名称含义
PID指定的STP协议
BPDU Type标识BPDU的类型
Root ID根桥ID(优先级+mac)
RPC到根桥的最短路径开销
Bridge ID发送方的桥ID
port ID发送方的端口ID
Message Age配置BPDU在网络中的生存周期,除正常加时外,每经过一个设备加一秒
Max Age配置BPDU在网络中最大生存期(20秒)
Hello Age配置BPDU的发送周期(2秒)
Fwd Delay端口状态迁移延时(15秒)

六、STP拓扑变化

1.根桥故障:
非根桥会在BPDU老化后重新选举根桥

在稳定的STP拓扑里,非根桥会定期收到来自根桥的BPDU报文。如果根桥发生了故障,停止发送BPDU报文,下游交换机就无法收到来自根桥的BPDU报文。如果下游交换机一直收不到BPDU报文,Max Age定时器就会超时(Max Age的默认值为20秒),从而导致已经收到的BPDU报文失效,此时,非根交换机会互相发送配置BPDU报文,重新选举新的根桥。根桥故障会导致50秒左右的恢复时间,恢复时间约等于Max Age加上两倍的Forward Delay收敛时间。

2.直连链路故障

在这里插入图片描述

SWA和SWB使用了两条链路互连,其中一条是主用链路,另外一条是备份链路。生成树正常收敛之后,如果SWB检测到根端口的链路发生物理故障,则其Alternate端口(备份端口)会迁移到Listening、 Learning、Forwarding状态,经过2倍的Forward Delay后恢复到转发状态。

3.非直连链路故障
在这里插入图片描述

SWB与SWA之间的链路发生了某种故障(非物理层故障),SWB因此一直收不到来自SWA的BPDU报文。此时,SWB会认为根桥SWA不再有效,于是开始发送BPDU报文给SWC,通知SWC自己作为新的根桥。SWC也会继续从原根桥接收BPDU报文,因此会忽略SWB发送的BPDU报文。由于SWC的Alternate端口再也不能收到包含原根桥ID的BPDU报文。其Max Age定时器超时后,SWC会切换Alternate端口为指定端口并且转发来自其根端口的BPDU报文给SWB。SWB放弃宣称自己是根桥并开始收敛端口为根端口。非直连链路故障后,由于需要等待Max Age加上两倍的Forward Delay时间,端口需要大约50秒才能恢复到转发状态。

4.拓扑改变导致MAC地址表错误
在这里插入图片描述

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

5.拓扑改变导致MAC地址表变化
在这里插入图片描述

拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。
拓扑变更以及MAC地址表项更新的具体过程如下:
======================================
a.SWC感知到网络拓扑发生变化后,会不间断地向SWB发送TCN BPDU报文。
======================================
b.SWB收到SWC发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SWC,告知SWC停止发送TCN BPDU报文。
======================================
c.SWB向根桥转发TCN BPDU报文。
======================================
d.SWA把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300秒修改为Forwarding Delay的时间(默认为15秒)。
======================================
e.最多等待15秒之后,SWB中的错误映射关系会被自动清除。此后,SWB就能通过G0/0/2端口把从主机A到主机B的帧正确地进行转发。

七、STP配置

< Huawei>sys # 进入系统视图
[Huawei] dis stp # 显示STP信息
[Huawei] dis stp brief # 显示STP简要信息

[Huawei]stp mode stp # 设置STP协议模式(STP、RSTP、MSTP)
[Huawei]stp priority 4096 # 设置交换机根桥优先级
[Huawei]stp root primary # 设置本交换机为根桥
[Huawei]stp root secondary # 设置交换机为备份根桥
[Huawei]interface GigabitEthernet 0/0/1
[Huawei-GigabitEthernet0/0/1]stp cost 2000 #修改接口开销

[Huawei]stp timer forward-delay ?

INTEGER<400-3000> STP forward delay in centiseconds, in steps of 100, the default value is 1500

[Huawei]stp timer hello ?

INTEGER<100-1000> Hello time in centiseconds, in steps of 100, the default value is 200

[Huawei]stp timer max-age ?

INTEGER<600-4000> Max age in centiseconds, in steps of 100, the default value is 2000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值