网络工程师修练指北—STP(Spanning Tree Protocol)
Hello哇,欢迎来到《网络工程是修练指北系列》,今天我们接着上一篇VLAN的内容,继续为大家介绍网络交换二层技术中另一个重要的内容—STP
一口小酒🍸,一首歌📻,阿轩带你修成XIAN!
上一篇中我们讲到,通过VLAN的技术可以实现交换机之间通过一根线缆能够实现所有VLAN间的通信。
那么大家有没有想过一个问题,就是如果我这根线缆出现了故障,那是否就意味着我所有的通信就中断了呢?那么我又没有什么方法避免呢?
有的人可能就会说了,那可以再接一根线,这样一根线断了的话另一根还在。
没错,这确实是一个好办法,但是有没有想过这样的一个问题呢:
如图:
我们说交换机是工作在二层的,他们之间的通信和信息的宣告是通过ARP广播报文来实现的.
假设现在A和B都是两个全新的交换机;
那么当交换机刚开机的时候,我们以交换机A为例,首先它看到的是我在0/3接口上对应的一个11的地址,然后我发送广播,架设从0/1发送,那么B接收,并查看MAC地址表,这个时候发现B上面是没有MAC地址表的,所有我接收完成后会再发送广播,这个广播将从0/1和0/3发送;
这个时候A将从0/2接收到B发送的广播报文,那A就会产生疑惑,为什么我之前记录的是11对应的是从0/3过来的,现在变成了0/2?
那这个时候是不是就产生了环路呢?
这其实就是我们所说的二层环路,二层环路是一件很危险的事情的,二层的环路会带来广播风暴,大量的广播风暴会使交换机高负荷工作,轻则设备宕机,严重的甚至会造成设备过温,烧坏硬盘,配置丢失
那么我们有没有一种技术,既能够避免二层环路的产生,又能够支持我接入多条链路为主用链路做备份呢?
这其实就是STP协议出现的初衷
STP的好处
讲到这里,其实我们能够很清楚的看到,STP的好处就是避免二层网络出现环路,避免二层网络中的广播风暴的产生
STP的工作原理
其实STP的工作原理就是在逻辑上把交换机中的一个端口断开,防止环路的产生,当主用链路故障的时候,会将这个端口自动启起来,开启备用链路,恢复通信(不要指望能够很快,这个后面应该会讲到—如果没有喝多的话)
STP的算法
那么STP是如何工作呢?STP的工作大致遵循下面的几个步骤:
首先STP需要选择根网桥;
其次选择根端口;
第三选择指定端口;
最后将其余端口逻辑down掉。
接下来我们依次来讲解每个步骤的工作内容和规则
选择根网桥
生成树协议,你就想象成有一棵树,有树的话就必须要有根
那么这个根要如何定义呢,主要是遵循以下规则:选择根网桥ID最小的作为根
那么什么是根网桥ID呢?
网桥ID即BID(Bridge ID),是由网桥优先级+网桥MAC组成的。
网桥优先级的取值范围为0-61440,默认值是32768,所以一般没有特殊设定的话我们在选取根的时候是选择网桥MAC地址最小的,当然优先级是能够手动指定的。
手动配置的话需要遵循以下几点:
- 必须是2的整数倍
- 必须是16的证书倍
- 最小值是4096
因此常用的优先级为4096/8192/24576/32768
选择根端口
选择完根网桥后,需要选择根端口。
根端口是用来做什么的呢?
根端口是用来接收从根过来的消息的端口,所以必须是要在非根网桥上去进行选择,并且选择一个到达根最近的端口作为根端口
根端口的选择遵循以下顺序:
- 最低的到达根网桥的路径开销,带宽越高,开销越小,如果开销值一致,则进行下一步比较;
- 最低的发送方网桥ID,如果一样,则进行下一步比较;
- 最低的端口优先级,端口优先级的取值范围是0-240,默认是128,如果一致则进行下一步比较;
- 发送方最低的端口ID,每个端口都有端口ID,端口ID由端口优先级+端口编号组成
选择指定端口
指定端口是指用来传递消息的端口
首先需要确认的一点就是,根网桥上的所有端口都是指定端口。
这个应该就很好理解了,根网桥,所有的端口肯定都要传递数据转发数据帧的,总不至于把根都切断了吧(断。。。。根。。。。。断子绝孙?😱👀)
所以指定端口是在非根网桥上进行选择的,需要遵循以下四步:
- BPDU中的根网桥ID
- 到达根网桥的最低开销
- 发送方的网桥ID
- 若优先级相同则选择最低MAC地址
BPDU
那么在STP协议中,端口的变化,或者说选举过程中的数据包和信息又要通过什么来传递呢?
STP的信息其实是通过BPDU来传递的,我们可以将BPDU理解为信息的载体,将需要比较的信息来进行传递和交换
BPDU是通过组播来传递的,组播地址为01-80-C2-00-00-00
BPDU其实分为两种:
- 配置BPDU,用于首次生成树的计算
- 拓扑变更BPDU(TCN BPDU),用于通告网络拓扑的变化
在一个二层网络中,不太可能说是不限制整个网络的大小的,所以在BPDU中由一个参数叫Message Age,从根出来的Message Age的值为0,每经过一个交换机,该值加一,默认的最大值为20,当Message Age的值达到Max Age值的时候,非根网桥将丢弃该配置BPDU
那么前面我们说了STP的作用主要是将端口逻辑Down掉,那么其实在STP中有以下几种端口状态:
端口状态
- 禁用状态,Disable,不发送不接收BPDU,不学习MAC,不转发
- 阻塞,Discarding,不发送BPDU,但接收BPDU,不学习MAC,不转发数据
- 侦听,Listening,发送和接收BPDU,不学习MAC,不转发数据
- 学习,Learning,学习MAC,发送和接收BPDU
- 转发,Forwarding,发送和接收BPDU,学习MAC地址,转发数据
侦听和学习称为中间态,是端口状态变化的中间状态
根据上图,我们知道,端口从阻塞状态变为转发状态总共需要50秒的时间,也就是前面讲的当主用链路故障的时候,会将这个端口自动启起来,开启备用链路,恢复通信所需要的时间
实验
## 实验目的
令SWA是VLAN1的主根桥,在VLAN 1的STP中阻塞SWC的E0/0/2端口,当SWA失效时,SWB接替SWA成为VLAN1的主根桥
----------
SWA:
<Huawei>
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]sysname SWA
[SWA]undo info-center enable
Jan 9 2025 16:52:19-08:00 SWA DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5.25
.191.3.1 configurations have been changed. The current change number is 4, the c
hange loop count is 0, and the maximum number of records is 4095.
Info: Information center is disabled.
[SWA]stp enable
[SWA]stp mode stp
Info: This operation may take a few seconds. Please wait for a moment...done.
[SWA]interface E0/0/1
[SWA-Ethernet0/0/1]port link-type trunk
[SWA-Ethernet0/0/1]port trunk allow-pass vlan all
[SWA-Ethernet0/0/1]interface E0/0/2
[SWA-Ethernet0/0/2]port link-type trunk
[SWA-Ethernet0/0/2]port trunk allow-pass vlan all
[SWA-Ethernet0/0/2]stp priority 4096
[SWA]display current-configuration
\#
sysname SWA
\#
undo info-center enable
\#
stp mode stp
stp instance 0 priority 4096
\#
cluster enable
ntdp enable
ndp enable
\#
drop illegal-mac alarm
\#
diffserv domain default
\#
drop-profile default
\#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password simple admin
local-user admin service-type http
\#
interface Vlanif1
\#
interface MEth0/0/1
\#
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
interface Ethernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
[SWA]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
0 Ethernet0/0/2 DESI FORWARDING NONE
SWB:
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]undo info-center enable
Info: Information center is disabled.
[Huawei]sysname SWB
[SWB]stp enable
[SWB]stp mode stp
Info: This operation may take a few seconds. Please wait for a moment...done.
[SWB]interface E0/0/1
[SWB-Ethernet0/0/1]port link-type trunk
[SWB-Ethernet0/0/1]port trunk allow-pass vlan all
[SWB-Ethernet0/0/1]interface E0/0/2
[SWB-Ethernet0/0/2]port link-type trunk
[SWB-Ethernet0/0/2]port trunk allow-pass vlan all
[SWB-Ethernet0/0/2]stp priority 8192
[SWB]display current-configuration
\#
sysname SWB
\#
undo info-center enable
\#
stp mode stp
stp instance 0 priority 8192
\#
cluster enable
ntdp enable
ndp enable
\#
drop illegal-mac alarm
\#
diffserv domain default
\#
drop-profile default
\#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password simple admin
local-user admin service-type http
\#
interface Vlanif1
\#
interface MEth0/0/1
\#
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
interface Ethernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
[SWB] display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
0 Ethernet0/0/2 ROOT FORWARDING NONE
关闭SWA后,SWB状态变化
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI DISCARDING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI LEARNING NONE
[SWB]
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI LEARNING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI LEARNING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
[SWB]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 DESI FORWARDING NONE
SWC:
<Huawei>
<Huawei>system-view
Enter system view, return user view with Ctrl+Z.
[Huawei]undo info-center enable
Info: Information center is disabled.
[Huawei]sysname SWC
[SWC]stp enable
[SWC]stp mode stp
Info: This operation may take a few seconds. Please wait for a moment...done.
[SWC]interface E0/0/1
[SWC-Ethernet0/0/1]port link-type trunk
[SWC-Ethernet0/0/1]port trunk allow-pass vlan all
[SWC-Ethernet0/0/1]interface E0/0/2
[SWC-Ethernet0/0/2]port link-type trunk
[SWC-Ethernet0/0/2]port trunk allow-pass vlan all
[SWC-Ethernet0/0/2]display current-configuration
\#
sysname SWC
\#
undo info-center enable
\#
stp mode stp
\#
cluster enable
ntdp enable
ndp enable
\#
drop illegal-mac alarm
\#
diffserv domain default
\#
drop-profile default
\#
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password simple admin
local-user admin service-type http
\#
interface Vlanif1
\#
interface MEth0/0/1
\#
interface Ethernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
interface Ethernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 4094
\#
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 ALTE DISCARDING NONE
关闭SWA后,SWC状态变化
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/1 ROOT FORWARDING NONE
0 Ethernet0/0/2 ALTE DISCARDING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT DISCARDING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT LEARNING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT LEARNING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT LEARNING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT LEARNING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT FORWARDING NONE
[SWC]display stp brief
MSTID Port Role STP State Protection
0 Ethernet0/0/2 ROOT FORWARDING NONE
最后,给各位兄弟们加点氮!
部分图片来源于网络,如有侵权请联系删除
See yo!
Motto: Actions speak louder than words.
欢迎大家关注我的微信公众号,方便大家手机查看~也会不定期分享读书心得、育儿想法