生成树技术背景
以太网交换网络上为了进行链路备份,通常会使用冗余链路,但是使用冗余链路会在交换网络上形成环路,并导致广播风暴以及 MAC 地址表不稳定等故障现象,从而导致用户通信质量较差,甚至通信中断。生成树协议(STP)运行以太网交换机上,为解决网络中的环路问题再网络上修剪出一颗无环的树,并在主链路出现故障后自动启用备份链路,使网络工作正常。最新的 STP 标准由 1998 年发布的 IEEE802.1D 标准文档定义。
简单来说有以下几点:
- 交换机单链路上行,存在单点故障,线路和设备都不具备冗余性。
- 任何一条链路或者设备故障,网络将面临断网。
二层环路
冗余拓扑能够解决单点故障问题。但是冗余拓扑带来了二层环路问题。实际网络环境中,经常产生二层环路从而引发网络故障。
如果为了保证网络运行的稳定性,在以太网交换网络上使用冗余链路进行了链路备份,如下图:
在使用了冗余链路后,出现了二成交换网络的环路,引发了广播风暴、MAC 地址表不稳定等问题。
1. 广播风暴
- 网络中若存在二层环路,一旦出现广播数据帧,这些数据帧将被交换机不断泛洪,造成广播风暴。
- 广播风暴对网络危害非常大,将严重消耗设备CPU资源及网络带宽,需要格外注意。
- 广播风暴现象:网络慢、所有指示灯高速闪烁、CPU使用率高、CLI卡顿。
2. MAC 地址表不稳定
- PC 发送数据帧给 Server
- SW3没有目的MAC表项,于是将数据帧进行泛洪
- SW1 和 SW2 都收到这个帧并学习源 MAC,同时将数据帧进一步泛洪
- SW3 将从 GE0/0/1 和 GE0/0/2 都收到这个帧并学习源 MAC,更新 MAC 地址表
STP 基本概念
STP 主要用于在存在环路结构的二层网络中构建一个无环的树形的二层拓扑,协议由 IEEE802.1D 定义。
采用生成树(Spanning-tree)技术,能够在网络中存在二层环路时,通过逻辑阻塞(Block)特定端口,从而打破环路,并且在网络出现拓扑变更时及时收敛,保障网络冗余性。
- 防止环路
- 保证网络冗余性
基本术语
1. 网桥 ID(Bridge ID)
桥 ID 一共 8 个字节,由 2 个字节优先级和 6 个字节的 MAC 地址构成。
- 桥优先级默认为 32768,可以手工修改。
- MAC 地址为交换机背板 MAC。
2. 根桥(Root Bridge)
根桥是桥 ID 最小的交换机,可以认为是树形二层拓扑的根。对于 STP 来说,网络中所有的交换机选举出一个根交换机,然后其他交换机角色和端口角色的选举,都会参考根桥的判断来进行选择。除了根桥外,网络中其余所有的交换机都称为非根交换机(Nonroot Bridge)。
3. 端口开销(Port Cost)
端口开销表示数据从该端口发送时的开销值,也即出端口的开销。STP 认为从一个端口接收数据是没有开销的。交换机的每个端口都有一个端口开销值。端口的开销和端口的带宽有关,
4. 路径开销(Path Cost)
路径的开销,即为该路径经过的所有端口的开销总和。
- 路径开销是一个端口量,是 STP/RSTP 协议用于选择链路的参考值
- 端口路径开销的默认值及取值范围由选定的路径开销算法决定,路径开销与端口带宽成反比。
- 华为设备路径开销标准有:802.1d-1998、802.1t 及私有的 legacy,默认为 802.1t 标准。
5. 根端口(Root Port)
根端口是指从一个非根交换机到根交换机总开销最小的路径所经过的本地端口。这个最小的总开销值也称为交换机的根路径开销(Root Path Cost)。
6. 端口 ID(Port Identifier)
端口 ID 是用于区分描述交换机上不同端口的,PID 只在某些情况下对选择指定端口有作用。它的定义方法有很多种。
常见的两种定义:
- 高 4 位是端口优先,低 12 位是端口号
- 高 8 位是端口编号,端口优先级默认取值为 128
7. 指定端口(Designated Port)
STP 为每个网段选出一个指定端口,指定端口为每个网段转发发往根交换机方向的数据,并且转发由根交换机方向发往该网段的数据。
8. 预备端口(Alternate Potr)
既不是根端口也不是指定端口的交换机称为预备端口。预备端口不转发数据,处于阻塞状态。但被阻塞的端口仍会监听 STP 帧,以便链路出现故障后快速恢复被阻塞端口,将流量引导到保护路径上。
9. 网桥协议数据单元(BPDU)
在 STP 计算中,交换机之间需要交换信息,并利用这些信息进行 STP 的根交换机、根端口等选举。承载 STP 信息交换的报文被称为网桥协议数据单元(Bridge Protocol Data Unit,BPDU)报文。
STP 选举操作
1. 根桥选举
确定一个根桥(Root Bridge),选优先级和 MAC 地址最小的网桥。
2. 根端口选举
确定其他网桥的根端口(Root Port),非根桥的端口到根桥最近的端口。
3. 指定端口选举
每个段选择一个指定端口(Designated Port),先选指定桥,指定桥上为指定端口。
4. 阻塞预备端口
选出非指定端口(NonDesignated Port)。
生成树的端口状态
STP 通过根端口、指定端口、预备端口的选举,构建了无环的树形拓扑结构,各端口的状态描述总结如下:
端口角色 | 描述 |
---|---|
Root Port | 根端口:所在交换机上离根交换机最近的端口,处于转发状态 |
Designated Port | 指定端口:转发所连接的网段发往根交换机方向的数据和从交换机方向发往所连接的网段的数据 |
Alternate Port | 预备端口:不向所连接网段转发任何数据 |
五种端口状态
STP 端口状态迁移图
- 端口初始化或者使能,进入阻塞状态
- 端口被选为根端口或者指定端口,进入监听状态
- 端口的临时状态停留时间到,进入下一状态
(学习状态或者转发状态)端口被选为根端口或指定端口 - 端口不再是根端口、指定端口或者指定状态,进入阻塞状态
- 端口被禁用或者链路失效
BDPU 报文的两种类型
STP 生成树的计算,根端口、指定端口的选举,都是借助于 BPDU 报文来进行信息的传递和交换的。在向整网泛洪 STP 拓扑信息的过程中,会涉及两种 BPDU :配置 BPDU 和 TCN BPDU。
BPDU 报文采用 IEEE 802.3 的封装格式,以多播的方式发送,多播地址为 01-80-c2-00-00-00。默认每 2s 发送一个 BPDU 报文。
- 配置BPDU
包含了桥 ID,路径开销,端口 ID 等参数。
- TCN BPDU
下游交换机感知到拓扑发生变化时向上游交换机发送拓扑变化通知。用以快速刷新 MAC 地址表。
BPDU 参数含义
几种生成树协议
- 生成树协议:802.1d STP (慢,拓扑收敛需要30-50s)
- 快速生成树协议:802.1w RSTP (快,6s内完成收敛)
- 多生成树协议:802.1s MSTP (实现多个 VLAN 负载均衡)
6666
软考终于结束啦~
学到了
点个赞
233
还行
得到大佬的认可也是不易!