为了提高网络可靠性,交换网络中通常会使用冗余链路。然而,冗余链路会给交换网络带来环路风险,并导致广播风暴以及MAC地址表不稳定等问题,进而会影响到用户的通信质量。生成树协议STP(Spanning Tree Protocol)可以在提高可靠性的同时又能避免环路带来的各种问题。
技术提出起因
交换机主要靠MAC地址表转发数据,网络刚开始没有MAC地址表的时候,会从接口上学习MAC地址
当网络的交换机多起来,做了冗余后就会出现环路、出现广播风暴和MAC地址表震荡;交换机性能会因此急速下降,并会导致业务中断。
在以太网中,二层网络的环路会带来广播风暴,MAC地址表震荡,重复数据帧等问题,为解决交换网络中的环路问题,提出了STP。
STP的主要作用:
- 消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
- 链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。
STP中定义了三种端口角色:指定端口,根端口和预备端口。
- 指定端口:指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
- 根端口:非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
- 预备端口:如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。
如上图所示:
假设SWA为根桥,那么网络中的其他交换机则为非根桥;
由于上方指定端口的定义则SWA根桥交换机连接其他非根桥交换机的口都为指定端口;
那么非根桥SW连接 根桥SW的直连端口就为根端口;
那么剩下的两个非根交换机相连的两个口只能是一个指定端口另一个就是预备端口了
这个根端口是选举出来的,谁NB哪个口就是根端口。
根桥选举
上图中所示为STP的端口状态迁移机制,运行STP协议的设备上端口状态有5种:
- Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文,只有根端口或指定端口才能进入Forwarding状态。
- Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
- Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
- Blocking:阻塞状态。端口仅仅能接收并处理BPDU,不能转发BPDU,也不能转发用户流量。此状态是预备端口的最终状态。
- Disabled:禁用状态。端口既不处理和转发BPDU报文,也不转发用户流量。
执行display stp brief命令查看STP信息
执行display stp interface命令查看端口的STP状态
目前的生成树协议有STP、MSTP、RSTP、PVST
STP (Spanning Tree Protocol):
- 最初的生成树协议,设计用于防止二层网络中的环路。
- 收敛速度较慢,因为它的计时器较长(如Forward Delay默认为15秒)。
- 不适用于大型复杂网络,因为所有VLAN共享同一棵生成树。
RSTP (Rapid Spanning Tree Protocol):
- STP的改进版,显著提高了收敛速度。
- 引入了快速收敛机制,如边缘端口、快速转发等。
- 更适合需要快速恢复的网络环境。
MSTP (Multiple Spanning Tree Protocol):
- 允许创建多个生成树实例,每个实例可以对应一组VLAN。
- 提供了VLAN间负载均衡的能力,同时保持了RSTP的快速收敛特性。
- 适用于需要更精细VLAN管理和负载分担的复杂网络环境。
PVST/PVST+ (Per-VLAN Spanning Tree/Per-VLAN Spanning Tree Plus):
- 思科私有协议,为每个VLAN创建一个独立的STP实例。
- 能够在每个VLAN级别上避免环路,提供良好的隔离性。
- 收敛速度较RSTP慢,但提供了高度的灵活性和故障隔离能力。
- 需要更多的CPU和内存资源,因为每个VLAN都需要维护一个生成树实例。