一、 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中的内容。

传统生成树抓包:

传统STP、快速STP、MSTP的总结和比较_第1张图片

快速生成树抓包:

传统STP、快速STP、MSTP的总结和比较_第2张图片

MSTP抓包:

传统STP、快速STP、MSTP的总结和比较_第3张图片


二、 收敛

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