在现代网络中,稳定性和可靠性是至关重要的。网络环路(Loop)问题往往会导致网络拥塞,甚至引发整个网络的瘫痪。为了有效防止这种情况的发生,生成树协议(Spanning Tree Protocol, STP)应运而生。今天,我们就来深入浅出地了解一下这个网络环路的终结者——STP。
01
前言
● 以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree Protocol)。
● 运行STP协议的设备通过彼此交互信息发现网络中的环路,并有选择的对某个接口进行阻塞,最终将环形网络结构修剪成无环路的树形网络结构,从而防止报文在环形网络中不断循环,避免设备由于重复接收相同的报文造成处理能力下降。
02
什么是生成树协议(STP)?
● STP是一个用于局域网中消除环路的协议。
● 运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。
● STP在网络中运行后会持续监控网络的状态,当网络出现拓扑变更时,STP能够感知并且进行自动响应,从而使得网络状态适应新的拓扑结构,保证网络可靠性。
● 由于局域网规模的不断增长,生成树协议已经成为了当前最重要的局域网协议之一。
03
STP的基本概念
生成树协议(Spanning Tree Protocol,STP)是一个网络协议,用于防止以太网交换机之间出现环路。环路在网络中会导致广播风暴、重复数据包、以及网络的不稳定,STP通过创建一个无环的树状拓扑结构来解决这些问题。以下是STP的基本概念:
1. 桥ID(Bridge ID)
在STP中,每一台交换机都有一个标示符,叫做Bridge ID或者桥ID,桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址两部分构成:
-
优先级(Priority):取值范围是0~65535,默认值为32768,可以修改但是修改值必须为4096的倍数。
-
MAC地址:每个交换机的唯一MAC地址。
桥ID用于在网络中选举根桥(Root Bridge)。
2. 根桥(Root Bridge)
● 树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念。对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。
● STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的重要“参考点”,是STP计算得出的无环拓扑的“树根”。在STP网络中,桥ID最小的设备会被选举为根桥。
3. 开销(cost)
交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。常见的路径成本值如下:
-
10 Mbps:100
-
100 Mbps:19
-
1 Gbps:4
-
10 Gbps:2
4. 根路径开销(Root Path Cost)
● 在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本”,也即RPC。
● 一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost累加。
● 在本例中,SW3从GE0/0/1接口到达根桥的RPC等于接口1的Cost加上接口2的Cost。
5. 端口ID( Port ID)
运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确定端口角色。
6. BPDU(Bridge Protocol Data Unit,网桥协议数据单元)
● BPDU是STP能够正常工作的根本。BPDU是STP的协议报文。
● STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息,正是基于这些信息,STP才能够顺利工作。
● BPDU分为两种类型:
① 配置BPDU(Configuration BPDU):配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
② TCN BPDU(Topology Change Notification BPDU):TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知。
● 配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发生变更时才会被触发。
04
STP的计算过程
-
选举根桥:
网络中的所有交换机会通过比较自己的桥ID(Bridge ID)来选举一个根桥。桥ID由优先级和MAC地址组成,优先级越低的交换机越有可能成为根桥。如果优先级相同,则比较MAC地址,MAC地址越小的交换机当选。
● 选举过程:
① STP交换机初始启动之后,都会认为自己是根桥,并在发送给其他交换机的BPDU中宣告自己为根桥。因此,此时BPDU中的根桥ID为各自设备的网桥ID。
② 当交换机收到网络中其他设备发送来的BPDU后,会比较BPDU中的根桥ID和自己的BID。
③ 交换机不断交互BPDU,同时对BID进行比较,最终选举一台BID最小的交换机作为根桥,其他的则为非根桥。
④ 如图:根桥的选举先比较优先级,交换机SW1、2、3的优先级相等,则比较MAC地址,也优选最小的,所以SW1的BID最小,因此SW1为根桥,SW2和SW3为非根桥。
● 注意:根桥的角色可抢占。当有更优的BID的交换机加入网络时,网络会重新进行STP计算,选出新的根桥。
-
选举根端口:
每台非根桥交换机会选择一个到根桥路径成本最低的端口作为根端口(Root Port),这个端口将作为通向根桥的最佳路径。
● 选举过程:
① 交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“RootID、RPC、BID、PID”等关键字段,端口会针对这些字段进行PK。
② 首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。
③ 当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。
④ 当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口。
⑤ 当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。
-
选举指定端口:
在每个网络段(即每个冲突域)中,选择一个具有最低路径成本的端口作为指定端口(Designated Port),这个端口负责转发该网络段的数据。
● 选举过程:
① 指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID。
② 首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作为指定端口。
③ 若RPC相等,则比较链路两端交换机的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口。
④ 若BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口。
● 注意:一般情况下,根桥上不存在任何根端口,只存在指定端口。
-
阻塞非指定端口:
一台交换机上,既不是根接口,又不是指定接口的接口被称为非指定接口。STP操作的最后一步是阻塞网络中的非指定接口。这一步完成后,网络中的二层环路就此消除。
● STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发送的帧(用户数据帧)。
● 一旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了。
● 注意:
▫非指定端口可以接收并处理BPDU。
▫根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧。
-
思考题:
识别以下拓扑中的根桥及各种接口角色
解析:
•如图,首先选举根桥,四台交换机的桥优先级相同,则比较桥MAC地址,谁小谁优先,最终选举SW1为根桥;
•其次选举根端口,SW2上GE0/0/1距离根桥最近,RPC最小,所以SW2的GE0/0/1为根端口,同理SW3的GE0/0/2也为根端口,SW4的两个端口RPC相同,然后比较SW4的G0/0/1对应的交换机SW2的BID与G0/0/2对应的交换机SW3的BID,谁小谁优先,最终选举出SW4的GE0/0/1端口为根端口;
•然后选举指定端口,SW1为根桥,所以SW1上的GE0/0/0和GE0/0/1端口为指定端口,SW2的GE0/0/2端口接收到SW4的配置BPDU,比较RPC,SW2比SW4的RPC更小,所以SW2的GE0/0/2端口为指定端口,同理可得SW3的GE0/0/1端口为指定端口;
•最终非根端口,非指定端口的SW4的GE0/0/2端口为预备端口。
05
STP的接口状态及其迁移机制
STP通过五种状态来管理端口:
STP的接口状态迁移如下图所示:
06
STP的基础配置
1. 实验拓扑
2. 实验需求
● 在上述三台交换机上部署STP,以便消除网络中的二层环路。
● 通过配置,将SW1指定为根桥,并使SW3的GE0/0/22接口被STP阻塞。
3. 配置命令
SW1:
[SW1] stp mode stp //配置生成树工作模式
[SW1] stp enable //启用STP
[SW1] stp priority 0 //配置交换机的STP优先级
SW2:
[SW2] stp mode stp
[SW2] stp enable
[SW2] stp priority 4096
SW3:
[SW3] stp mode stp
[SW3] stp enable
4. 在SW3上查看STP接口状态摘要:
07
STP的优势与局限性
1. 优势:
-
防止网络环路:通过阻塞冗余路径,避免了环路的产生,保障了网络的稳定性。
-
自动恢复:当网络拓扑发生变化时(如链路故障或设备更换),STP能够自动重新计算路径,恢复网络的无环结构。
2. 局限性:
-
收敛时间长:传统STP在网络拓扑发生变化后,需要一定时间完成重新计算和状态转换,可能导致短暂的网络中断。
-
带宽浪费:阻塞的端口无法转发流量,导致网络资源未得到充分利用。
08
生成树协议的改进版本
为了克服传统STP的局限性,IEEE引入了多个改进版本,如快速生成树协议(Rapid Spanning Tree Protocol, RSTP,IEEE 802.1w)和多生成树协议(Multiple Spanning Tree Protocol, MSTP,IEEE 802.1s)。这些改进版本在收敛时间和网络资源利用率方面有了显著提升。
-
RSTP:相比STP,RSTP大大缩短了收敛时间,从传统的30-50秒减少到几秒钟。
-
MSTP:允许在同一个网络中创建多个生成树实例,每个实例可以独立地管理和优化一部分VLAN,从而提高网络资源的利用效率。
09
总结
生成树协议(STP)作为网络环路的终结者,保障了以太网环境下的网络稳定和可靠。虽然它有一定的局限性,但通过RSTP和MSTP等改进版本,这些问题得到了有效解决。在现代网络设计中,理解和掌握STP及其改进版本是网络工程师的必备技能。希望这篇文章能帮助你更好地理解生成树协议的原理和应用,让你的网络架构更加稳健高效。