STP --- 生成树协议
二层设备连接成环遇到的问题:
1.广播风暴 --- 广播帧在二层环路中形成顺时针和逆时针两重环路,无限循环,极大的消耗设备资源
2.MAC地址表的翻摆(MAC地址表的飘移)
3.多帧复制
生成树协议就是,在二层交换网络中,逻辑上阻塞部分接口,实现根交换机到所有节点的唯一且最短的路径(最短路径树),形成一个没有环路的拓扑,当最佳路径出现故障时,个别阻塞端口打开,形成备份路径
STP --- 标准的生成树协议 --- 802.1D --- IEE组织 --- 公有协议
PVST、PVST+ --- 思科的私有协议
RSTP --- 快速生成树 --- 802.1W --- 公有协议
MSTP --- 多生成树协议 --- 802.1S --- 公有协议
802.1D标准生成树协议
BPDU --- 生成树的数据包
配置BPDU --- 协商生成树形结构时使用的BPDU
TCN BPDU --- 在拓扑结构发生变化时,传递变化信息的BPDU
配置BPDU

协议版本ID --- 802.1D标准的生成树 --- 0
802.1W快速生成树 --- 2
802.1S多生成树 --- 3
标志位 --- 占8位 --- 在802.1D中,仅使用最低位(TC位)和最高位(TCA位),其中中间6位没有启用
根网桥ID --- 拓扑中为根的交换机的网桥ID --- 802.1D生成树中,一个拓扑中仅生成一棵树
**网桥ID ---**所有拓扑中的交换机都需要一个身份标识,使用网桥ID来标识
8个字节构成 --- 2个字节 + 6个字节
(优先级)(MAC地址 )
如果交换机中存在多个MAC地址,则将选规择数值最小的成为网桥ID中的MAC地址
**RPC ---**根路径开销 --- 当前交换机达到根网桥的距离开销
**接口ID ---**2个字节 --- 前4位 + 12位
(优先级)(接口编号)
以上四个参数将参与生成树的角色选举
消息寿命 --- 每经过一个交换机转发会加1,存在一个MAX-HOP为20,当超过该值时,将不再认可该BPDU
TCN BPDU

配置BPDU的工作过程

配置BPUD的发送,使得网络中所有交换机均收到其他设备配置BPDU,之后,基于数据报中参数进行比对,选举出网桥,之后,所有非根网桥不再发送配置BPDU,仅根网桥周期性发送BPUD,其他网桥仅转发,周期2S,最大老化时间为20S
TCN BPDU

TCN BPDU --- 本地链路发生故障后,STP重新收敛,为了快速刷新全网所有交换机MAC地址表,将向本地所有STP接口发送TCN BPDU;邻居交换机收到TCN BPDU之后,会先回复一个TCA位置1的配置BPDU,代表确认,之后,继续逐级向上传递TCN BPDU,最终发送到根网桥处,根网桥收到后,也会进行TCA的确认,之后,发送一个TC位置1的配置BPDU,逐级转发到所有交换设备上,收到TC位置1的配置BPDU的设备,会临时将MAC地址表的老化时间从300S修改为15S
1.根网桥(RB)
选举方法:比较配置BPDU中的BID
8个字节构成 --- 2个字节 + 6个字节
(优先级)(MAC地址)
先比较优先级,选择优先级数值较低的作为根网桥
优先级我们只使用了前4位二进制,后面12位二进制 --- 系统拓展ID(在802.1D中没有使用) 所以,优先级在进行修改时,必须按照4096的倍数来进行修改;存在默认优先级32768;如 果优先级相同,则比较MAC地址,选择MAC地址数值较小的作为网桥
2.根端口(RP)--- 每一个非根网桥都需要选举一个距离根网桥最近的端口作为根端口(有且仅有一个),用来接收根网桥发送的配置BPDU

Huawei\]stp pathcost-standardr? dot1d-1998 IEEE 802.1D-1998 dot1t IEEE 802.1T legacy Legacy 1.优先比较接口接收到的配置BPDU时的开销值,选择开销值最小的接口作为根接口 2.如果一台设备存在接口到达根网桥开销大小相同时,则可以比较其对端(上级)设备的 BID,选择对端设备BID小的对应的接口为根接口 3.如果对端的BID也相同,则比较对端的PID,优先选择对端PID较小的所对应的端口为根端口 接口ID --- 2个字节 --- 前4位 + 12位 取值范围0 - 240,默认以16为步调递增,初始默认值为128 4.如果对端的PID也相同,则比较本端的PID,优先选择本端PID小的端口为根端口 3.指定端口(DP)--- 每一条链路上选择仅有一个端口作为指定端口,指定端口用来转发根网桥发送的配置BPUD 所有根端口对端的端口一定是指定端口,并且,根网桥的所有接口都是指定端口 1.优先比较两个端口在转发根网桥BPDU时RPC的大小,优先选择RPC小的作为指定端口 2.如果两个端口发出的RPC相同,则比较本地的BID,选择本地设备BID小的对应的端口作为 指定端口 3.如果本地的BID也相同,则比较本地的PID,优先选择本地PID小的端口作为指定端口 4.如果本地的PID也相同,则直接阻塞该接口 4.非指定端口(NDP)--- 所有没有角色的端口,都是非指定端口,非指定端口需要被阻塞 接口的状态  禁用状态 --- 1.物理接口关闭;2.接口禁用生成树 阻塞状态 --- 所有接口启用生成树后,首先进入到阻塞状态中,在这个状态下,仅能侦听BPDU,不能转发BPDU,也不能转发业务数据帧,不能学习MAC地址 这样的状态将持续20S,超过最大老化时间后,接口进入到下一个状态 侦听状态 --- 会收发BPDU,但是不能转发业务帧,也不能学习MAC地址 --- 15S 该状态主要目的就是进行角色选举 指定端口和根端口将进入到下一个状态,而非指定端口,将退回到阻塞状态 这里给15S的侦听时间,主要是为了避免临时环路的出现 学习状态 ---可以正常收发BPDU,依然不转发业务帧,但是会学习业务帧的MAC地址到本地的MAC地址表中 --- 15S --- 该状态的主要目的是尽量减少未知单播的泛洪 转发状态 --- 可以正常转发BPDU,可以转发业务帧,也可以学习MAC地址 一次完整的收敛 --- 50S 结构突变的场景 --- 50S,30S 1.根桥故障:50S 2.直连链路故障:30S 3.非直连链路故障:50S 生成树的配置 1.启动生成树协议(华为设备默认开启生成树) \[Huawei\]stp enable 2.选择生成树的协议版本 \[Huawei\]stp mode stp --- 华为设备默认选择的是MSTP \[SW1\]display stp brief --- 查看生成树接口状态及角色 \[SW2\]stp priority 4096 --- 修改BID中优先级的命令 \[SW1\]stp root primary --- 将该设备设置为生成树的主根 --- 相当于将优先级设置为0 \[SW1\]stp root secondary --- 将设备设置为生成树的备份根 --- 相当于将优先级设置为4096 \[SW1-GigabitEthernet0/0/1\]stp port priority INTEGER\<0-240\> Port priority, in steps of 16 \[SW1-GigabitEthernet0/0/1\]stp cost ? --- 修改接口的开销值 INTEGER\<1-200000000\> Port path cost