STP生成树协议
STP(Spanning TreeProtocol)802.1D是一种二层管理协议,该协议可应用于在网络中建立树形拓扑,消除网络中的环路,并且可能以一定的方法实现路径冗余,适用于所有厂商的网络设备。
各版本生成树协议兼容性:
名称 | 全称 | 兼容性 | IEEE | 状态 | 特征 | |
---|---|---|---|---|---|---|
STP | 生成树协议 | Spanning TreeProtocol | 无 | IEEE 802.1D | 公有 | 基于端口 |
RSTP | 快速生成树协议 | Rapid Spanning Tree Protocol | STP | IEEE 802.1W | 公有 | 基于端口 |
PVST | VLAN生成树 | Per VLAN Spanning Tree | 无 | Cisco私有LSP中继协议 | Cisco私有 | 基于vlan |
PVST+ | VLAN生成树+ | Per VLAN Spanning Tree+ | 兼容RSTP、不兼容MSTP | 基于IEEE 802.1W | Cisco私有 | 基于vlan |
MSTP | 多生成树协议 | Multiple Spanning Tree Protocol | STP、RSTP、不兼容PVST、PVST+ | IEEE 802.1S | 公有 | 基于实例 |
- Bridge ID(BID)
网桥ID,用于选举根网桥。BID=StpBridgePriority优先级(默认32768,取值范围0-65535)+48bit的网桥MAC地址。
- Port ID(PID)
端口ID,用于各种端口的选举。PID=StpPortPriority优先级(默认128,取值范围0-255)+Cost(路径开销)。
- Root ID(RID)
根桥的桥ID就叫RID。
- Edged Port
边缘端口,RSTP之后新增端口类型,允许从阻塞状态(20s)直接进入转发状态,边缘端口的UP/DOWN不会触发拓扑改变,且不会被PA协商阻塞。
端口类型
端口角色 | 英文名称 | 所在位置 | 解释 |
---|---|---|---|
禁用端口 | Disable Port | 非根网桥、根网桥 | 生成树中不起作用的端口。 |
根端口 | Root Port(RP) | 非根网桥 | 非根交换机上距离根交换机最近的端口,根端口会将数据传送给根桥用于传输,是交换机端口去往跟桥的最佳路径,每个非根设备上有且只能有一个根端口。 |
替代端口 | Alternative Port | 非根网桥 | 备份根端口,优先级仅次于根端口的被选举为替代端口,工作在稳定拓扑中为Drop状态。(除STP外都有) |
指定端口 | Design Port(DP) | 非根网桥、根网桥 | 根网桥下所有端口均为指定端口;非根网桥来说每一网段均有一个指定端口,用于和根网桥收发该网段数据使用,每个端口同时只可能属于一种状态下。 |
备份端口 | Backup Port | 非根网桥 | 备份指定端口,优先级仅次于根端口的被选举为备份端口,工作在稳定拓扑中为Drop状态。(除STP外都有) |
阻塞端口 | Block Port(BP) | 非根网桥 | 不转发数据,被阻塞了的端口,只侦听BPDU报文。 |
端口状态
端口角色 | 英文名称 | 所在位置 | 解释 |
---|---|---|---|
禁用 | Disabled | 非根网桥、根网桥 | 不收发任何报文。(端口未被启用) |
阻塞 | Blocking | 非根网桥、根网桥 | 不接收或者转发数据,接收但不发送BPDU,不进行地址学习。(端口启用后会立即进入阻塞状态,如果老化时间内未收到BPDU,则进入侦听状态,默认老化时间20s,调节范围:6-40s) |
侦听 | Listening | 非根网桥、根网桥 | 不接收或者转发数据,接收并发送BPDU,不进行地址学习。(用于确定根,根端口和指定端口默认时间15s,调节范围4-30s) |
学习 | Learning | 非根网桥、根网桥 | 不接收或者转发数据,接收并发送BPDU,开始进行地址学习。(用于学习MAC地址,为转发状态做准备,并防止因侦听状态下突然发生的拓扑变更造成的环路、断路问题默认时间15s) |
转发 | Forwarding | 非根网桥、根网桥 | 接收或者转发数据,接收并发送BPDU,进行地址学习。(正常工作状态) |
端口状态流机
- 端口初始化或使能,进入阻塞状态。
- 老化时间到进入监听状态(20s)。
- 端口的临时状态停留时间到,进入下一状态(学习状态或转发状态),端口被选举为根端口或指定端口(15s)。
- 端口不再是根端口、指定端口或指定状态,进入阻塞状态。
- 端口被禁用或链路失效。
1、链路启动Disabled->2、阻塞Blocking(最大老化时间20s)->3、侦听Listening(转发延迟15s)->4、学习Learning(15s)->5、转发Forwarding
生成树算法SPA(Spanning TreeAlgorithm):(依此步骤依次进行)
一、选举根网桥
1、priority值小的交换机优先。
2、mac地址小的交换机优先。
每台网络中的交换机启动后都会认为自己是根桥,会在BPDU中写入自己的BID,然后向外泛洪。
当交换机收到其他比自己优先级高的BID后,他会把正在发送的BPDU中的Root BID替换为优先级较高的Root BID,再向外发送。
当所有交换机都比较完BID后,优先级最高的会被选举为根桥。如果有新交换机接入进来,也会在网络中进行通告,并可能引发拓扑变更,造成网络中断。
二、选举根端口
1、cost值小的端口优先。
2、BID的priority值小的交换机优先。
3、BID的mac值小的交换机优先。
4、发送者BID相同,比较发送者PID。
5、发送者PID相同,比较接受者的PID。
三、选举指定端口
1、cost值小的优先。
2、BID值小的优先。
3、PID值小的优先。
四、阻塞端口
端口选举完成后会阻塞除根端口和指定端口外的其他所有端口
1、每个网络中只有一个根网桥。
2、每个非根网桥只有一个根端口。
3、每个网段只能有一个指定端口。
4、根网桥无根端口。
5、根网桥端口全为指定端口。
STP拓扑变更流程
- 发生拓扑变更的交换机先由根端口向根桥发送TCN BPDU(BPDU报文中TYPE字段=0x80)。
- 中间交换机在收到了变更交换机发送上来的TCN BPDU后,会继续向自己的上一级交换机发送TCN BPDU,并且回送一个TCA
BPDU(FLAG字段中TCA位为1的配置BPDU)的确认信息给变更交换机。 - 根桥接收到TCN后意识到了拓扑变化,会向所有网桥发送TC BPDU(BPDU FLAG字段中TC位为1持续时间为Forward
Delay Time + Max Age,默认35s)。 - 交换机们收到根桥发出来的TC
BPDU后,会将自己的MAC地址表的老化时间由缺省的300s减少为15s(用于加快MAC地址学习速度),直到一段时间内不再收到根桥的TC
BPDU为止。
STP链路开销(Path Cost)值:
链路速度 | 新版 | 旧版 |
---|---|---|
10Gbps | 2 | 1 |
1Gbps | 4 | 1 |
100Mbps | 19 | 10 |
10Mbps | 100 | 100 |