{所有内容均来自于西安欧鹏的陈俊老师}
STP生成树
当二层交换机意外成环路的时候会发生:
1.广播风暴:当广播帧进入环路时,会被不断复制并传输,导致网络中的广播流量急剧增加,消耗大量的网络带宽,降低网络性能,形成广播风暴。
2.MAC地址表的漂移(偏移)(不稳定):每一次数据帧在环路中循环,交换机的MAC地址表记录可能会不断更新,导致MAC地址表不稳定。
3.多帧复制:在二层网络中,由于环路的存在,导致同一数据帧被多次复制并传输到目的设备的现象(比如,如图所示环路,数据帧从PC1发出向LSW3,LSW3广播向LSW1、2,数据帧再从LSW1、2广播向LSW3,LSW3会向除了接收数据帧的接口再次广播其余接口,这是由PC1发出的数据帧就发回了PC1,由此除非环路解除,不然PC1回一直接收这段数据帧。)
破解环路最简单的办法就是截断某些链路,所以恭喜你发现生成树stp工作原理
stp生成树:将原来的环形拓扑结构转换为最短路径生成树,通过逻辑上阻塞一些接口,以生成最短路径生成树,在达到解决环形拓扑的目标,继续实时监控整个拓扑环境是否发生改变,若改变,则自动将原本阻塞接口重新打开再次生成最短路径生成树。
stp的分类:
STP---生成树协议
PVST PVST+----思科:是一种思科专有的生成树协议扩展,它允许在同一个交换机上为每个VLAN运行一个独立的生成树实例。这意味着每个VLAN都可以有自己的根桥和拓扑结构,从而提高了网络的灵活性和性能。
Rstp---快速生成树
Mstp---多生成树
stp传递的报文---BPDU:
1.配置BPDU:协商参数的报文
2.TCN-BPDU:实时的监听整个拓扑环境是否发生改变,一旦检测到变化会发出通告TCN-BPDU
【生成树所有协商的参数均为越小越优先】
补充:
PVI--协议版本号:
STP--0
RSTP--2
MSTP--3
TCN-BPDU
TCN-BPDU--作用
1.通告网络发生变化;
2.用来刷新MAC地址表中的错误记录--存在逐级上报的机制(避免重复刷新MAC地址表)。
TCN-BPDU报文的应用:
当某一端的设备检测到自身的网络结构发生改变时,会主动向所有运行STP设备发送TCN-BPDU,其他设备接收到之后会回复TCA标志位为1的配置BPDU用以向该设备确认,然后会逐级向上转发一直到根桥设备,之后根桥设备会主动发送TC标志位(拓扑发生改变的标志位)为1的配置BPDU,最终会传递到交换网络的所有设备,当这些收到TC标志位为1的报文,会将自身的MAC地址表老化时间设置为15s,用以刷新错误信息
角色选举
【当生成树生成后,只有根桥设备才会主动发送配置BPDU,其他非根桥设备仅转发由根桥设备发送的配置BPDU】
生成树一共要选举四种角色:根网桥RB,根端口RP,指定端口DP,非指定端口NDP
根网桥RB
根网桥RB--整个交换网络必须选择唯一的一个根桥设备。
通过比较BID最小的设备成为根桥设备
BID--网桥ID作用:
1.用来标识和区分不同的运行stp的交换机设备身份
2.用来协商生成树角色
组成:前16位二进制是优先级,后48位二进制是设备的MAC地址
比较规则:
1.比较优先级
2.比较MAC地址
[LSW1]display stp
-------[CIST Global Info][Mode MSTP]-------
CIST Bridge :32768.4c1f-cc1f-4349 //BID
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-cc1f-4349 / 0
CIST RegRoot/IRPC :32768.4c1f-cc1f-4349 / 0
CIST RootPortId :0.0
BPDU-Protection :Disabled
TC or TCN received :3
TC count per hello :0
STP Converge Mode :Normal
Time since last TC :0 days 0h:0m:24s
Number of TC :3
Last TC occurred :GigabitEthernet0/0/2
----[Port1(GigabitEthernet0/0/1)][FORWARDING]----
Port Protocol :Enabled
Port Role :Designated Port
Port Priority :128
Port Cost(Dot1T ) :Config=auto / Active=20000
Designated Bridge/Port :32768.4c1f-cc1f-4349 / 128.1
Port Edged :Config=default / Active=disabled
Point-to-point :Config=auto / Active=true
Transit Limit :147 packets/hello-time
Protection Type :None
根端口RP
根端口RP--所有非根设备必须选择唯一一个端口成为根端口,用来接收根桥发送的配置BPDU。
RPC--根路径开销--设备接口到达根桥的开销值--类似cost。
生成树RPC(开销)的计算公式--等于沿途所有入接口的开销值累加和接口的开销值。
[LSW3]stp pathcost-standard ?
dot1d-1998 IEEE 802.1D-1998
dot1t IEEE 802.1T
legacy Legacy
比较规则:
1.会比较接口的入向RPC值,会选择入向RPC值更小的接口作为根端口
【入向RPC值----接口收到的配置BPDU中携带的开销值】
2.如果IRPC一致,那么会比较收到的配置BPDU中对端设备的BID大小,会选择BID更小的所对应的接口;
3.如果对端设备BID一致,那么会比较对端设备的PID,选择更小PID对应的接口;
4.如果对端设备PID一致,那么会比较自身设备的PID,选择更小PID对应的接口;
指定端口DP
指定端口DP---设备用来转发根网桥发送的配置BPDU的接口,每段链路都需 要选择一个接口成为指定端口
1.选择接口出向RPC值最小的端口作为根端口;
【出向RPC---设备发出的配置BPDU中携带的RPC值】
2.会比较自身本地的配置BPDU中携带的BID,选择数值更小的;
3.当本地bid一致那么会比较发出接口的pid选择接口pid小的接口作为指定端口;
4.当收到的配置BPDU报文pid一致,那么会直接阻塞该接口。
非指定端口NDP
非指定端口NDP--剩下所有没有角色的端口就是非指定端口,最终需要被阻塞的端口。
STP的接口状态:
阻塞状态:所有运行STP协议的接口最先进入的状态,为了避免此时协议刚起到,还没有彻底收敛,就已经出现环路问题。
【初次收敛时,因为所有设备的接口都是阻塞状态,会导致没有任何设备发送BPDU报文,无法协商参数,所以设备会自动关联最大寿命,如果20S没有收到任何BPDU报文,那么会视为根桥故障,会自动进入侦听状态,主动发送BPDU报文】
侦听状态:STP进行角色选举的状态,一旦接口被选举未根端口或者指定端口均会进入下一个状态(会经过15S的选举时间,为了让所有设备所有接口均完成角色选举,避免临时环路---一些设备任处于选举过程中,角色没有选完,自然不会阻塞接口),如果接口被选举未非指定端口,那么该接口最终回退到阻塞状态,被阻塞。
学习状态:STP为了尽量避免初次访问时,产生大量的广播报文影响通讯质量,尽量记录本设备用户的MAC地址信息。
STP首次收敛至少50S才能完成收敛,收敛速度很慢
[LSW1]undo stp enable 直接关闭协议
Warning: The global STP state will be changed. Continue? [Y/N]y
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW1]
Apr 4 2025 21:23:31-08:00 LSW1 DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.2
5.191.3.1 configurations have been changed. The current change number is 5, the
change loop count is 0, and the maximum number of records is 4095.
[LSW1]display stp
Protocol Status :Disabled
Protocol Standard :IEEE 802.1s
Version :3
CIST Bridge Priority :32768
MAC address :4c1f-cc1f-4349
Max age(s) :20
Forward delay(s) :15
Hello time(s) :2
Max hops :20
[LSW1]
Apr 4 2025 21:23:42-08:00 LSW1 %%01PHY/1/PHY(l)[0]: GigabitEthernet0/0/2: ch
ange status to down
Apr 4 2025 21:23:43-08:00 LSW1 %%01PHY/1/PHY(l)[1]: GigabitEthernet0/0/2: ch
ange status to up
[LSW3-GigabitEthernet0/0/1]undo stp enable 关闭单个接口stp协议
[LSW3-GigabitEthernet0/0/1]display this
#
interface GigabitEthernet0/0/1
stp disable
#
return
stp的重新收敛
就是当运行STP的设备网络结构发生改变而进行重新选举角色,将原本的非指定端口开放
1.根桥故障【需要50s进行重新收敛】
2.根桥直连链路故障【需要30s进行重新选举角色】
非根桥设备检测到自身的根端口所在链路发生故障,但是其他端口可以收到根桥发送的配置BPDU,此时会将自身被阻塞的端口打开并进入侦听状态,重新选举角色,但是不需要选举根桥
3.根桥非直连链路故障【需要50s重新收敛】
设备检测到自身根端口所在链路故障,但是不能通过其他端口收到根桥发出的配置BPDU,那么只有等待身背最大寿命20s后进行重新选举。需要经过15s的侦听喝15s学习状态。
STP配置
[LSW1]stp enable //开启设备stp协议
Warning: The global STP state will be changed. Continue? [Y/N]y
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW1]stp mode ? //所有设备需要确保协议一致,华为设备默认开启STP协议
mstp Multiple Spanning Tree Protocol (MSTP) mode
rstp Rapid Spanning Tree Protocol (RSTP) mode
stp Spanning Tree Protocol (STP) mode[LSW1]stp mode stp
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW1]display stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
[LSW1]display stp
-------[CIST Global Info][Mode STP]-------
CIST Bridge :32768.4c1f-cc1f-4349
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-cc1f-4349 / 0
CIST RegRoot/IRPC :32768.4c1f-cc1f-4349 / 0
CIST RootPortId :0.0
BPDU-Protection :Disabled
TC or TCN received :24
TC count per hello :0
STP Converge Mode :Normal
Time since last TC :0 days 0h:0m:31s
Number of TC :27
Last TC occurred :GigabitEthernet0/0/2
----[Port25(GigabitEthernet0/0/1)][FORWARDING]----
Port Protocol :Enabled
Port Role :Designated Port
Port Priority :128
Port Cost(Dot1T ) :Config=auto / Active=20000
Designated Bridge/Port :32768.4c1f-cc1f-4349 / 128.25
Port Edged :Config=default / Active=disabled
Point-to-point :Config=auto / Active=true
Transit Limit :147 packets/hello-time
Protection Type :NoneApr 5 2025 19:34:59-08:00 LSW1 %%01PHY/1/PHY(l)[0]: GigabitEthernet0/0/2: ch
ange status to down
Apr 5 2025 19:35:00-08:00 LSW1 %%01PHY/1/PHY(l)[1]: GigabitEthernet0/0/2: ch
ange status to up Port STP Mode :STP
[LSW1]stp priority 28672 //修改BID(32768-4096)【修改设备BID需要安4096为步 调加减
[LSW1]stp root primary //将某设备配置为根桥,本质上是将该设备优先级改为0
[LSW1]stp root secondary //将某设备配置为备份根桥,本质将该设备优先级改为4096
MSTP多生成树(802.M树--链路利用率)
MSTP提出可以将多个VLAN绑定在一起,提出实例instance的概念,实例的实质是12位二进制,范围是0~4095,其中默认存在实例0,初始所有VLAN均属于实例0,所有VLAN为一棵树。
单域MSTP的配置要求:
[LSW3-mst-region]display stp region-configuration
[LSW2-mst-region]display stp region-configuration
Oper configuration
Format selector :0
Region name :4c1fcc427b2c //默认设备存在名称(初始为设备的MAC地址)必须确保单域的name一致
Revision level :0 //修订等级(多域才会用,必须一致,单域随意)Instance VLANs Mapped //实例喝VLAN对应关系必须一致
0 1 to 4094
[LSW3-mst-region]
配置完成实例:
[LSW3-mst-region]display stp region-configuration
Oper configuration
Format selector :0
Region name :aa
Revision level :10Instance VLANs Mapped
0 21 to 4094
1 1 to 10
2 11 to 20
[LSW3-mst-region]
配置过程与解析:
[LSW3]stp enable //启动协议
[LSW3]stp mode mstp
[LSW3]stp region-configuration
[LSW3-mst-region]region-name aa //注意区别大小写
[LSW3-mst-region]revision-level 10
[LSW3-mst-region]instance 1 vlan 1 to 10 //根据需求配置VLAN喝实例的对应关系
[LSW3-mst-region]instance 2 vlan 11 to 20
[LSW3-mst-region]active region-configuration //激活配置!!!
Info: This operation may take a few seconds. Please wait for a moment...done.
[LSW3-mst-region]display this
#
stp region-configuration
region-name aa
revision-level 10
instance 1 vlan 1 to 10
instance 2 vlan 11 to 20
active region-configuration
#
return
[LSW3-mst-region]q
[LSW3]stp instance 1 root primary //将该设备配置为实例1的主根
[LSW3]stp instance 2 root secondary //将该设备配置为实例2的备份根桥
[LSW3]display this
#
sysname LSW3
#
vlan batch 2 to 20
#
stp instance 1 root primary
stp instance 2 root secondary
#
cluster enable
ntdp enable
ndp enable
#
drop illegal-mac alarm
#
return
[LSW3]stp region-configuration
[LSW3-mst-region]display stp region-configuration
Oper configuration
Format selector :0
Region name :aa
Revision level :10Instance VLANs Mapped
0 21 to 4094
1 1 to 10
2 11 to 20
[LSW3-mst-region]
RSTP快速生成树(802.W树--收敛速度)
RSTP的改进点:
1.变更端口角色
STP的端口角色:根端口,指定端口,非指定端口
RSTP/MSTP的端口角色::根端口,替代端口,备份端口
替代端口:作为根端口的替代,由于收到对端设备发送到饿配置BPDU儿导致参数不优最终被阻塞的端口。【作用:作为根端口的备份,当根端口出现故障时,设备会从自身所有的替代端口中找出参数最优的直接成为新的根端口。】
备份端口【back】:作为指定端口的备份,由于收到自身发送的配置BPDU从而参数不优而阻塞的端口,一个设备可能有多个备份端口。【作用:作为指定端口的备份,当指定端口出现故障时,设备会从自身所有的备份端口中找出参数最优的直接成为新的指定端口。】
2变更了端口状态:
STP的端口状态:禁用状态,阻塞状态,侦听状态,学习状态,转发状态
RSTP/MSTP将状态进行合并:
1.丢弃状态DISCARDING--该接口只能处理BPDU报文,不能收发数据流量,不能记录MAC 地址表
2.学习状态
3.转发状态
3.修改了配置BPDU报文的一些参数
RST-BPDU---P/A---RSTP利用该机制将STP的收敛速度从分钟级优化到秒级(主要针对指定端口的快速收敛机制)
4.加快了生成树的失效判断时间
优化根桥失效判断时间--将原本为MAX-Age默认20s,在RSTP协议下位3个hello时间--6s
5.快速收敛机制
1.根端口的快速切换;
2.设置边缘接口;(需要配置,可以将所有连接PC用户的接口配置为边缘接口)
[LSW3-GigabitEthernet0/0/2]stp edged-port enable //边缘接口
1.如果将连接PC的接口配置为边缘接口,那么该接口不需要进行STP选举,直接进入到转发状态。
2.如果边缘接口收到BPDU报文,那么会变成普通接口,重新协商。(防止将连接设备的接口配置为边缘接口)
3.一般连接 PC 的接口不需要接收 STP 的 bpdu 报文,所以会和边缘接口配置结合使用。[LSW3]stp bpdu-protection //BPDU保护(建议配置)如果边缘接口收到BPDU报文,则会直接物理关闭该接口,防止PC使用BPDU攻击[LSW3-GigabitEthernet0/0/2]stp bpdu-filter enable //过滤接口发出的BPDU报文
3.P/A机制 。