二层环路产生的问题
1、广播风暴 --- 广播帧在二层环路中会形成一个顺时针和一个逆时针的环路,并且会无限循环下去,最终导致设备宕机。
2、MAC地址表翻摆(漂移)--- 因为数据帧环路的存在交换机的MAC地址表中会不断更新MAC地址和接口对应关系。
3、多帧复制 --- 重复收到相同的数据帧
什么是生成树
在二层交换网络中,逻辑上阻塞部分接口,实现从根交换机到所有节点的最短路径的拓扑结构,生成一个没有环路的拓扑。当其中最佳的路径出现故障时,则将个别阻塞的接口打开,实现链路资源的备份。
STP历史发展
最早STP --- 标准生成树协议---802.1D标准
PVST、PVST+ --- 思科私有的生成树协议
802.1W --- RSTP ---快速生成树协议
802.1S --- MSTP --- 多生成树协议
BPDU
配置BPDU
最常用最主要的BPDU,整个树形结构生成过程中,使用BPDU协商交流。
协议版本ID --- 802.1D --- 0
802.1W --- 2
802.1S --- 3
以下四个参数都会参与生成树的角色选举中
1、
根桥ID(根网桥ID)
--- 为根的交换机的身份ID --- 802.1D中,一个交换网络只有一棵树
2、
网桥ID --- BID --- 每一台交换机的身份标识 --- 8个字节构成
前两个字节--- 优先级
后六个字节 --- MAC地址
因为需要支持生成树协议,所以交换机至少需要一个MAC地址,则可以使用这个MAC地址作为BID中的MAC地址,但是如果是三层交换机,可能会有多个MAC地址,则会选择其中数值最小的作为BID中的MAC地址。
3、
根路径开销 --- RPC --- 发出该BPDU设备到达根网桥的开销
4、
接口ID --- 2个字节构成,用于区分和标识交换机不同的接口,发出该BPDU设备接口的ID。
前4位 --- 优先级
后12位 -- 接口的标识
消息寿命 --- MAX HOP -- 20
配置BPDU ---只有根网桥可以发送,在一开始,交换网络的初始阶段,所有设备都认为自己是根网桥,则都会从自己所有激活STP协议的接口发出配置BPDU,基于收到BPDU进行角色选
举,选出真正的根。之后,所有的非根网桥不再主动发送配置BPDU,仅转发根网桥的配置
BPDU,根网桥会每隔2S周期发送,20S老化时间。
根路径开销在转法时的计算方法是将接收到的BPDU中的RPC加上进入接口的开销值
TCN BPDU
只在一种特殊的场景中存在,如果网络拓扑发生变化时,TCN BPDU需要把变化信息传递出去,相当于报信。

TCN BPDU ---本地交换链路出现故障之后,
STP重新收敛,为了快速刷新交换MAC地址表中的错误信息,当事机会首先发出TCN BPDU,对端收到之后,将回复一个TCA置1的配置BPDU,之 后,再逐级上报TCN BPDU到根网桥。根网桥收到后,会下发一个TC置1的配置BPDU,再逐级
下发到所有设备,所有收到TC置1的配置BPDU的设备会临时将MAC地址的老化时间由360S减少
到15S.(和转发延迟同步)

STP的选举
四个角色
根网桥
:RB。发送周期--2s 老化时间--20s
根端口:RP。所有的非根网桥都必须选取有且只有一个接口作为根端口,用于
接收根网桥发送到BPDU。(选择离根网桥最近的端口)
指定端口 :DP。每一条链路上有且一个端口是指定端口。用于
转发根网桥发送的BPDU
非指定端口:NDP。所有没有角色的端口,即需要被阻塞的端口。
选举过程
1、根网桥 --- 在802.1D中,一个交换网络一棵树,仅选择一个根网桥
对比BID --- 8个字节 --- 前两个字节--- 优先级
后六个字节 --- MAC地址
后六个字节 --- MAC地址
首先,先比较BID中优先级,优先选择优先级 数值小的作为根网桥。优先级:取值范围理论上是0-65535,实际上取值范围0-61440,默认值为32768。
优先级只使用了前4位,后面12位称为 拓展系统ID,只有在802.1S中启用 --- 所以 优先级的修改需要按照4096的倍数来进行修改。如果优先级相同,则比较MAC地址,选择MAC地址数值 最小的作为根网桥。
2、根端口 --- 所有非根网桥上有且仅有一个距离根网桥最近的端口,用来接受根网桥的
BPDU

修改开销值的方法(注意:华为默认使用标准为802.1t)

1,选择在接受根网桥BPDU是RPC 最小 的端口作为根端口。2,如果多个接口到达根网桥的开销值相同,则比较接口对端设备的BID ,优先选择 BID 小 的设备所对应的接口为根端口。3,如果对端的BID 也相同(连接在同一设备),则比较对端的 PID ,优先选择 PID 小 的接口对应的接口为根端口。PID:2个字节---前4位为优先级后12位为接口标识先比较优先级,优先选择优先级数值小的优先级取值范围0 -240,默认值为128,每一位代表16,修改优先级时也只能按照16的倍数修改如果优先级相同,则比较接口标识4,如果对端的 PID 也相同,则比较本地接口的 PID ,选择 PID 小 的作为根端口
3、指定端口 --- 每一条链路上有且仅有一个端口作为指定端口,用来发送或者转发根网桥的
BPDU。
根网桥所有的接口都是指定端口,根端口的对端一定时是指定端口
1,优先选择发出根网桥BPDU时RPC最小的端口作为指定端口。2,如果发出时的开销值相同,则比较接口链接设备的BID ,优先选择 BID 小的设备的接口作为指定端口3,如果本端的BID 也相同,则比较接口的 PID ,优先选择 PID 小的作为指定端口4,如果本端的PID 也相同,则直接阻塞
4、非指定端口 --- 所有没有角色的端口都是非指定端口,需要被阻塞。
接口状态

1、禁用 --- 1.接口关闭 2.接口没有激活生成树
2、阻塞 --- 接口激活生成树后第一个进入的状态,只能侦听BPDU,不能发送BPDU也不能处理数据帧
设备20s没有侦听到BPDU,则认为根网桥不存在或者失效,则进入到下一个状态。
3、侦听 --- 进行角色选举的状态。可以接受和发送BPDU,但是,不能处理业务帧。15后(转发延迟时间)将进入到下一个状态
4、学习 --- 开始接收业务数据帧,但是只记录MAC地址和接口的休息,并不去转发业务数据帧,停留时间15s。
5、转发 --- 可以进行BPDU的处理,也可以转发业务数据帧
最终可能停留的状态:转发和阻塞
侦听和学习是两个过渡状态
首次收敛所需要时间为50s
结果突变
1、根网桥故障 --- 50s
2、直连链路故障 --- 30s
3、非直连链路故障 --- 50s
STP配置
1、启动STP生成树协议
[sw1]stp enable ----启动生成树---华为默认开启生成树
2、选择生成树版本
[sw1]stp mode ?
mstp Multiple Spanning Tree Protocol(MSTP) mode
rstp Rapid Spanning Tree Protocol (RSTP) mode
stp Spanning Tree Protocol (STP) mode
[sw1]stp mode stp
注意:华为设备默认选择MSTP