STP(Spanning Tree Protocol,生成树协议)是一种在网络中消除循环路径的二层协议,主要用于局域网环境。在存在冗余链路的网络中,STP通过构建一个无环的数据传输树形结构,确保数据包只沿着单一路径转发,从而防止广播风暴和循环数据流,同时提供链路备份,增强网络的可靠性。
1. **STP基本概念**
- **环路问题**:在多路径网络中,环路可能导致广播风暴和MAC地址表的不稳定。
- **桥和端口角色**:
- **根桥(Root Bridge)**:网络中优先级最高的桥,所有流量都经过根桥转发。
- **指定桥(Designated Bridge)**:非根桥中距离根桥最近的桥,负责转发数据到其连接的段。
- **根端口(Root Port)**:每个非根桥上,到根桥路径开销最小的端口,用于接收来自根桥的BPDU。
- **指定端口(Designated Port)**:在每个网段上,距离根桥最近的端口,用于转发数据。
- **Alternate端口**:作为备份,当指定端口故障时成为新的指定端口。
- **桥ID**:由桥优先级(16位,可配置)和MAC地址(48位)组成,用于选举根桥。
- **路径开销(Path Cost)**:衡量路径优劣的指标,根据链路速率计算,用于确定最短路径。
2. **STP计算过程**
- **选举根桥**:比较所有桥的桥ID,最小的成为根桥。
- **计算根路径成本**:每个端口到根桥的路径成本,根据链路速率和预定义的标准计算。
- **确定根端口**:每个非根桥的每个端口计算到根桥的路径成本,最低者为根端口。
- **确定指定端口**:在每个网段上,路径成本最低的端口成为指定端口,其他端口被阻塞。
- **形成无环树形结构**:阻塞所有非根端口和Alternate端口,形成从根桥到各网段的无环路径。
3. **STP端口状态**
- **Blocking**:不转发数据,不学习MAC地址,不接收或发送BPDU。
- **Listening**:不转发数据,学习MAC地址,接收并发送BPDU,参与根桥选举。
- **Learning**:不转发数据,学习MAC地址,接收并发送BPDU,准备进入转发状态。
- **Forwarding**:转发数据,学习MAC地址,接收并发送BPDU。
- **Disabled**:端口被管理员关闭,不参与任何操作。
4. **STP拓扑改变处理过程**
- **检测拓扑变化**:通过比较收到的BPDU中的拓扑变化标志来识别。
- **发送拓扑改变通知**:根桥发送TCN(Topology Change Notification),通知其他桥。
- **拓扑改变传播**:非根桥收到TCN后,转发TCN BPDU,直到整个网络得知拓扑变化。
- **更新MAC地址表**:受影响的设备清除旧的MAC地址表项,重新学习。
5. **STP协议的不足**
- **收敛速度慢**:RSTP( Rapid Spanning Tree Protocol)和MSTP(Multiple Spanning Tree Protocol)为解决此问题而出现,提供更快的收敛速度。
- **资源浪费**:部分端口长期处于阻塞状态,导致链路资源未充分利用。
- **静态树结构**:不能动态适应网络变化,如链路带宽增加或减少。
STP的学习目标是理解其消除环路的思想,掌握基本概念,理解计算过程,熟悉端口状态转换以及拓扑改变的处理,同时要意识到STP的局限性,并寻求更先进的解决方案如RSTP和MSTP。