一、 BPDU类型
1. 传统生成树:包括了两种BPDU,一种是配置BPDU,一种是TCNBPDU,配置BPDU由根桥每Hello时间发出;TCN BPDU由感知到拓扑发生变更的网桥从根端口发送出去。 配置BPDU中的Flag包括了两个字段,第7位是TCA,第0位是TC, TCA置位的配置BPDU表示一台上游交换机收到下游发过来的TCN,进行的回复,确认知道拓扑改变了, TC置位的BPDU由根桥发出,告知全网拓扑发生了变更,通知所有交换机将MAC表的老化时间改成15秒。
2. 快速生成树:只有一种BPDU,叫RST BPDU,它的BPDU类型有变更为0X02;它的Flag中的8位全部都使用了,Topology Change Ack、Agreement、Forwarding、Learning、Port Role(2位)、Proposal、Topology Change。
3. MSTP:MSTP的BPDU中,有一个MST Exension的字段,它包括了CIST的相关信息以及每个MSTI的相关信息,每个MSTI的内容相当于RST BPDU中的内容。
传统生成树抓包:
快速生成树抓包:
MSTP抓包:
二、 收敛
1. 传统STP:30-50秒
A. 直接链路失效(链路DOWN),如果失效链路一头交换机失效的端口是根端口,并且该交换机有预备端口,那么收敛时间是30S; 如果失效链路一头交换机失效的端口是根端口,它没有预备端口,只有指定端口,那么收敛时间是50S。 为什么这里会有一个20秒的差别? 交换机丢失根端口,会发送以自己为根的配置BPDU,如果在链路断开以前,本端的接口是AP,对端是DP,本端发送的次优BPDU,对端DP收到以后,会立即回应最优BPDU,所以不必要等待20秒超时; 如果在链路断开以前,本端的接口是DP,对端是AP,那么本端发送以自己为根的次优BPDU以后,对端的原AP端口需要等待20秒超时才会进行回应,所以需要50秒。
B. 间接链路失效(HUB链路、或者BPDU被过滤等):需要等待20S的超时时间,需要50S收敛。
2. 快速生成树:被定义为几秒内可以收敛
A. 选举新的根端口:选举新的根端口,不会存在环路风险,所以新的根端口可以直接进入转发状态。
B. 边缘端口:边缘端口用于连接主机等设备,不会引起环路风险,由管理员手工进行配置。所以不参与STP的计算,可立即进入转发状态。
C. P/A机制:在点对点的链路上,DP会发起P/A的同步机制,即上游交换机在DP发送Proposal置位的BPDU,下游交换机收到的端口如果是RP,则会进行同步过程,会将本交换机的其他处于转发状态的端口置为Discarding状态,并将RP置转发状态;同时会发送Agreement置位的BPDU给上游;这样就完成了一轮的同步; 下游交换机会再向DP发起P/A同步过程。
D. 接收次级BPDU不用等待Max_age超时,和传统STP不同,不管是AP还是DP,只要接收到了次级BPDU,会立即进行端口角色的运算; 3倍Hello时间超时,如果在2倍Hello时间接收不到BPDU,就会老化这个BPDU并进行STP的运算。
E. 在P/A协商失败或者共享链路上,需要按传统STP的方法等待2倍转发延迟才能收敛。
三、TCN
1. 传统STP:端口由不转发到转发,或者由转发到不转发都认为发生了拓扑变更。
A. 由感知到拓扑发生变化的交换机从根端口持续发出TCN BPDU;
B. 上游交换机收到TCN BPDU以后,会回应一个TCA置位的配置BPDU;(只有指定端口会处理)
C. 感知到拓扑发生变化的交换机收到上游交换机的TCA置位的BPDU后,不再发送TCN BPDU;
D. 上游交换机从自己的根端口方向传播TCN BPDU;
E. 这个过程一级一级上传到根桥;
F. 当根桥知道拓扑发生变更以后,会发送TC置位的配置BPDU,泛洪到全网;根桥会持续发送TC置位的配置BPDU,这个时间是Max age + Forwarding delay的时间;
G. 收到TC置位的下游交换机会将MAC地址的老化时间从300S改到15S;
在华为设备上: 配置传统STP,只有当端口从不转发过渡到转发状态才会产生TCN,端口DOWN不会触发TCN; 当交换机收到TC置位的BPDU以后,不是将MAC老化时间改为15秒,而是直接清空MAC地址表。
2. RSTP:非边缘端口进入转发状态才会定义为拓扑发生了变更(连接丢失不产生TCN,端口进入 阻塞状态不产生TCN)。
A. 由感知拓扑发生变化的交换机产生通知,该交换机将TC置位的BPDU,向非边缘的DP、RP扩散
B. 为转发端口开启TC While计时器,时长是2倍Hello时间(TC While超时则停止发送TC置位的BPDU)
C. 清空除边缘端口以外的其他端口的MAC地址表
D. 邻居交换机接收到TC置位的BPDU后:清除所有端口上学习到的MAC地址(接收拓扑变更的端口除外), 启动TC Whilie计时器,并且在非边缘的指定端口和根端口发送TC置位的BPDU。通过这种方法扩散到全网。
四、端口状态
1. 传统STP包括了五种端口状态
A. Disabled: 端口未启用时,处于此状态。
B. Listening: 参与STP运算,选举端口角色,接收发送BPDU,不学习MAC,不转发数据帧
C. Learning:接收发送BPDU,学习MAC地址,不转发数据帧
D. Forwarding:接收发送BPDU,学习MAC地址,转发数据帧
E. Blocking:接收但不发送BPDU,不学习MAC地址,不转发数据帧
2. RSTP:
A. 摒弃了Disabled、Listening、Blocking三种状态
B. 增加了Discarding状态:这个端口状态不学习MAC地址,不转发数据帧,参与STP的运算。
五、端口角色
1. 传统生成树
A. 根端口:每个根桥选举一个根端口,该端口去往根桥的Cost最低;
B. 指定端口:每个网段(链路)选举一个指定端口,它在这个网段上是最优的。转发本网段去往根桥的数据,转发从交换机方向发往所连接的网段的数据。
C. 阻塞端口:被阻塞的端口,在STP中,除了根端口和指定端口,其他的端口都属于阻塞端口(华为在传统STP也存在DP、BP)
2. 快速生成树:定义了新的端口角色
A. Alternate Port:当一个端口能收到其他交换机发过来的配置BPDU,并且处于被阻塞状态,它就是预备端口。它是根端口竞争失败的端口,是根端口的备份。
B. Backup Port:如果一个端口能收到本交换机发过来的配置BPDU,并且在这个网段上不是最优的端口,则当选为备份端口,备份端口是指定端口的备份。
3. MSTP:定义了新的端口角色
A. 域边缘端口:处于Region边界的端口,边缘端口的链路对端是另一个Region。
B. Master端口:在非CIST根桥所在区域中的IST的根端口,在其他实例里称为Master端口。它是一个Region里去往CIST根桥Cost最小的端口。
六、基本配置
1. 全局开关
开启STP: stp enable
关闭STP: stp disabled | undo stp enable
2. 时间因子:华为特有的一个值,用于Hello超时,标准的协议里没有这个时间因子,华为定义默认为3
stp timer-factor <1-10>
3. 修改Hello时间: stp time hello <100-1000>,默认是200,单位是厘秒,即2S,这个值不建议进行修改,同理可以修改转发延迟和最大老化时间
4. 传统STP
stp mode stp
3. 快速STP
stp mode rstp
4. 多生成树:处于同一个region的交换机,其配置ID必须相同,配置ID包括三个参数:区域名称、修订版本号以及映射关系。MSTP在交换消息的时候,会传递配置ID的MD5值,如果匹配则认为在一个Region,如果不匹配则认为不是一个Region。在配置完成以后,需要激活配置,MSTP才可以生效。
stp region-configration
region-name CDE
revision-level 10
instance 2 vlan 10
instance 3 vlan 20
active redion-configration
、