网络工程师修仙指北---STP(Spanning Tree Protocol)
Hello哇,欢迎来到《网络工程是修仙指北系列》,今天我们接着上一篇VLAN的内容,继续为大家介绍网络交换二层技术中另一个重要的内容---STP
一口小酒🍸,一首歌📻,阿轩带你修成仙!
上一篇中我们讲到,通过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-viewEnter system view, return user view with Ctrl+Z.[Huawei]sysname SWA[SWA]undo info-center enableJan 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 change loop count is 0, and the maximum number of records is 4095.Info: Information center is disabled.[SWA]stp enable[SWA]stp mode stpInfo: 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 stpstp instance 0 priority 4096\#cluster enablentdp enablendp enable\#drop illegal-mac alarm\#diffserv domain default\#drop-profile default\#aaaauthentication-scheme defaultauthorization-scheme defaultaccounting-scheme defaultdomain defaultdomain default_adminlocal-user admin password simple adminlocal-user admin service-type http\#interface Vlanif1\#interface MEth0/0/1\#interface Ethernet0/0/1port link-type trunkport trunk allow-pass vlan 2 to 4094\#interface Ethernet0/0/2port link-type trunkport trunk allow-pass vlan 2 to 4094[SWA]display stp brief MSTID Port Role STP State Protection0 Ethernet0/0/1 DESI FORWARDING NONE0 Ethernet0/0/2 DESI FORWARDING NONE
SWB:
<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]sysname SWB[SWB]stp enable[SWB]stp mode stpInfo: 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 stpstp instance 0 priority 8192\#cluster enablentdp enablendp enable\#drop illegal-mac alarm\#diffserv domain default\#drop-profile default\#aaaauthentication-scheme defaultauthorization-scheme defaultaccounting-scheme defaultdomain defaultdomain default_adminlocal-user admin password simple adminlocal-user admin service-type http\#interface Vlanif1\#interface MEth0/0/1\#interface Ethernet0/0/1port link-type trunkport trunk allow-pass vlan 2 to 4094\#interface Ethernet0/0/2port link-type trunkport trunk allow-pass vlan 2 to 4094\#[SWB] display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/1 DESI FORWARDING NONE0 Ethernet0/0/2 ROOT FORWARDING NONE
关闭SWA后,SWB状态变化
[SWB]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/1 DESI DISCARDING NONE[SWB]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/1 DESI LEARNING NONE[SWB][SWB]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/1 DESI LEARNING NONE[SWB]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/1 DESI LEARNING NONE[SWB]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/1 DESI FORWARDING NONE[SWB]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/1 DESI FORWARDING NONE
SWC:
<Huawei><Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]sysname SWC[SWC]stp enable [SWC]stp mode stpInfo: 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 enablentdp enablendp enable\#drop illegal-mac alarm\#diffserv domain default\#drop-profile default\#aaaauthentication-scheme defaultauthorization-scheme defaultaccounting-scheme defaultdomain defaultdomain default_adminlocal-user admin password simple adminlocal-user admin service-type http\#interface Vlanif1\#interface MEth0/0/1\#interface Ethernet0/0/1port link-type trunkport trunk allow-pass vlan 2 to 4094\#interface Ethernet0/0/2port link-type trunkport trunk allow-pass vlan 2 to 4094\#[SWC]display stp brief MSTID Port Role STP State Protection0 Ethernet0/0/1 ROOT FORWARDING NONE0 Ethernet0/0/2 ALTE DISCARDING NONE
关闭SWA后,SWC状态变化
[SWC]display stp brief MSTID Port Role STP State Protection0 Ethernet0/0/1 ROOT FORWARDING NONE0 Ethernet0/0/2 ALTE DISCARDING NONE[SWC]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/2 ROOT DISCARDING NONE[SWC]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/2 ROOT LEARNING NONE[SWC]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/2 ROOT LEARNING NONE[SWC]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/2 ROOT LEARNING NONE[SWC]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/2 ROOT LEARNING NONE[SWC]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/2 ROOT FORWARDING NONE[SWC]display stp briefMSTID Port Role STP State Protection0 Ethernet0/0/2 ROOT FORWARDING NONE
最后,给各位兄弟们加点氮!
部分图片来源于网络,如有侵权请联系删除
See yo!
Motto: Actions speak louder than words.