一、为什么需要生成树
因为二层交换机依靠泛洪转发广播,冗余链路会形成二层环路:
1、广播风暴:二层交换机一旦形成环路就会出现顺时针和逆时针循环的两种环路,并且其中轨道数据帧将永远循环下去,最终会造成设备宕机。
2、MAC地址漂移/MAC地址翻摆:也就是同一个MAC地址和接口的对应关系会来回变化,导致消耗交换机设备的性能。
3、多帧复制:同一台设备将重复收到同一个数据帧,导致设备性能被消耗。
而生成树协议就是在二层交换机网络中从逻辑上阻塞部分接口,实现从根交换机到各个节点的最短路径树结构,从而形成一个无环拓扑。当最优路径出现问题时,生成树协议就会开放某些被阻塞的接口,从而实现链路冗余。
二、STP标准生成树协议------802.1D生成树
1.什么是BPDU、配置BPDU、TCN BPDU?
1.1BPDU------交换机所发送的数据包
配置BPDU ------生成树形结构以及维护树形结构的数据包,生成树的角色选举用的就是配置BPDU
TCN BPDU------用于传递拓扑变更信息的数据包
1.2配置BPDU

【协议版本ID】
STP--802.1D--0
RSTP--802.1W--2
MSTP--802.1S--3
【RPC】根路径开销--发出该BPDU的设备到达根交换机的开销值
【PID】Port端口ID--用于发出BPDU接口的身份标识
【消息寿命】当一个BPDU的消息寿命到达最大条数(20跳)时,设备将不再处理该BPDU.
1.3配置BPDU的工作过程
一开始,所有交换机运行之后,都将认为自己是根网桥,则会主动的去发送配置BPDU,从所有激活STP 的接口上发出,此时也能接收到其他设备的配置BPDU,则进行参数选举,选择参数最好的作为根,之后,将仅由根网桥周期发送配置BPDU(2s),其他设备仅接收根网桥的BPDU之后转发(转发过程中 也会修改部分的参数),周期保活的老化时间20s
1.4TCN BPDU 报文

1.5 TCN BPDU的工作过程

本地的交换链路发生故障后,STP要重新收敛,为了加速刷新MAC地址表,将会给自己所有本地的接口 发送TCN BPDU,之后,上级设备收到之后,将回复TCA位置1的配置BPDU作为确认,之后逐级向上转 发 TCN BPDU,同时也要逐级确认,最终传递到根网桥身上。之后,根网桥下发 TC位置1 的配置 BPDU,再逐级下发到每一台设备上,所有收到 TC位置1 的配置BPDU的设备,将自己的MAC地址表的 老化时间从默认的300s减少到15s(和转发延迟同步)
2.生成树的角色选举
(1)根交换机/根网桥(RB)
在802.1D中一个交换机仅生成一棵树。所以根交换机只有一台
【BID】网桥ID------占8个字节,其中前2个字节为优先级,后6字节是MAC地址。也就是:
BID=网桥优先级+交换机MAC地址
选举条件:
1.优先级比较网桥优先级,数值越小越优。默认取值0-61440。修改优先级只能按照4096的倍数修改。
2.如果优先级相等,则比较MAC地址,数值越小越优
3.全网BID最小的交换机成为根网桥
(2)根端口(RP)
非根交换机上距离根交换机最优、最近的端口。------用于接收根网桥发送的配置BPDU
选举条件:
1.到根交换机的累计路径开销最小
2.若开销相同,则比较对端设备BID值,最小当选
3.若对端设备BID值相同,则比较对端PID值,最小当选。
4.若对端PID值相同,则比较本端PID值,最小当选。
(3)指定端口(DP)
每条物理链路两端,负责向该链路转发BPDU、转发流量的端口。根交换机的所有端口都是指定端口,也就是根端口的对端一定是指定端口。
选举条件:
1.到根交换机累计路径开销小当选。
2.若开销相等,则比较本地BID值,小当选。
3.若BID值相等,则比较本地端口PID值,小当选。
(4)非指定端口(NDP)
剩余所有没有角色的端口均为非指定端口,均需要被阻塞。
3.接口状态

【禁用状态】1.接口关闭 2。接口未激活STP
【阻塞状态】所有接口激活生成树协议之后进入的第一个状态,仅侦听BPDU,不发送BPDU和业务数据帧,如果一直监听不到BPDU,设备将会在20s老化时间到达后,进入下一个状态。
【侦听状态】角色选举的状态,可以收发BPDU,但不转发业务帧,也不能学习MAC地址。15s进入下一个状态。
【学习状态】可收发BPDU、接收业务帧、学习MAC地址,不能转发业务帧。15s进入下一个状态。
【转发状态】可收发BPDU、接收发送业务帧、学习MAC地址。
三、RSTP(快速生成树)--802.1w
1.为什么有STP还会出现RSTP?
传统 STP(802.1D)收敛太慢,端口状态切换耗时长达 30~50 秒,无法满足现代网络;RSTP (802.1w) 是 STP 的优化升级版,向下兼容 STP。依旧是一个交换网络只有一棵树。既然是STP的升级 版本那RSTP基于STP做了哪些改进呢?
2.RSTP基于STP进行的改进
2.1基于STP修改了接口角色
802.1D:根端口、指定端口、非指定端口
802.1W:根端口、指定端口、替代端口、备份端口
【替代端口】指定端口的备份。所有因为和其他设备比较参数最终落败导致被阻塞的接口都是替代端口。一台设备可以存在多个替代端口。当根端口出现故障时,可以立即将所有替代端口中选出参数最优的成为根端口,并直接进入到转发状态。
【备份端口】指定端口的备份。所有和自己参数落败导致被阻塞的端口都可以成为备份端口。当指定端口出现故障时,备份端口将立即成为指定端口,并直接进入转发状态,加快收敛。
2.2 优化了接口的状态
802.1D:禁用、阻塞、侦听、学习、转发
802.1W**:丢弃(discarding)、学习(leaning)、转发(fowarding)**
丢弃(discarding):可接收发送BPDU,不能学习MAC地址,也不能转发业务帧
学习(leaning):可接收发送BPDU,可以学习MAC地址,可接收业务帧,但是不能转发业务帧
转发(fowarding):可接收发送BPDU,可以学习MAC地址,也可以转发业务帧
2.3 对配置BPDU的报文内容进行了修改

P/A****机制 -- RSTP加速收敛的核心机制
可以理解为摆脱了基于计时器收敛的逻辑,变成了一旦角色确定,则直接进入到后续状态的逻辑。将角色选举变成两两之间的选举,角色相对确定后,指定端口会发送一个 RST BPDU,其中的位 会置 1,之后,对端收到后会进入到同步状态。将其他接口置于丢弃状态,同时,对端接口直接进入转 发状态,并回复 RST BPDU,其中 A 位置 1,指定端口收到后,则也将立即进入到转发状态,加速收敛
2.4 对配置BPDU的处理进行了优化
802.1D:拓扑收敛后,为根的设备会周期(2s)发送配置BPDU,其余设备仅转发 -- 仅针对根做保活
802.1W:拓扑收敛后,所有设备可以主动发送****RST BPDU-- 所有设备都可以做保活
802.1D:需要等待最大老化时间,默认20s
802.1W:仅需要等待超时时间(3****倍的周期时间),默认6s,如果没有收到对端的BPDU,则将认定失效
2.5 对拓扑变更机制进行了修改

由SW3直接通告修改MAC地址表时间,加快MAC地址表中的删除错误信息
四、MSTP(多生成树协议)--802.1S
802.1S向下兼容RSTP、STP
【Instance --实例】 -- vlan的集合 -- 可以理解为一个或者多个vlan组成的vlan集合
--每一个实例生成一颗树形结构,既减少了树的个数,减少了维护成本,也使得所有的链路得到了充分利用
【instance ID】 -- 实例的编号 --12位二进制 -- 0-4094 -- 其中instance 0是默认存在的,所有vlan一开始都属于instance 0
【域 (region)】 -- 如果交换网络规模较大,则可以分为多个域分别生成树形结构;如果交换网络规模不大,也可以只使用一个域 -- MST域
【同一个域需要满足的条件】
相同的域名
相同的修订等级
域内所有的设备必须拥有相同的实例和vlan的对应关系
**BID的优先级当中,将使用12位的拓展系统ID来携带instance ID,用来区分不同的树**