HCIP-STP进阶
STP回顾及不足
回顾
STP的工作原理

STP树的生成过程

STP的端口状态迁移

不足
STP虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。
STP的不足:
STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。
- 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
- 从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。
STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备再进行处理,最终传遍整个STP网络。
STP对计时器的依赖

STP重收敛过程慢

STP拓扑变更机制

RSTP
概述
IEEE 802.1W中定义的RSTP可以视为STP的改进版本,RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。
RSTP对STP的改进:
- 通过端口角色的增补,简化了生成树协议的理解及部署;
- 端口状态的重新划分;
- 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色;
- 配置BPDU的处理发生变化;
- 快速收敛;
- 增加保护功能。
改进点
端口角色
通过端口角色的增补,简化了生成树协议的理解与部署。
替代端口即是根端口的备份端口,当根端口不可用时会立马切换到替代端口进入转发状态,没有切换时间。
备份端口是指定端口的备份,当指定端口不可用时,会有30s的切换时间切换到备份端口,这30s的时间内可能会存在环路问题。

端口状态
RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:
Discarding状态:不转发用户流量也不学习MAC地址;
Learning状态:不转发用户流量但是学习MAC地址;
Forwarding状态:既转发用户流量又学习MAC地址。

配置BPDU-RST BPDU
RSTP的配置BPDU充分利用了STP报文的Flag字段,明确了端口角色。
除了保证和STP格式基本一致之外,RSTP作了如下变化:
Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
RST BPDU报文格式

配置BPDU的处理
RSTP会主动发送BPDU每2s发送,STP被动发送BPDU即当有设备催促才会发送。

对于STP来说,发现邻居失效需要20s,而RSTP发现设备失效仅需要6s。

对于STP,当链路发生故障之后会向其他链路发送自己的BPDU,但是需要等到其他链路设备的BPDU老化之后(20s)才会将自己的BPDU发送出去,而RSTP会根据发送来的BPDU立马进行回应。

快速收敛机制
注意:备份端口不会马上进入转发状态,需要一定的时间才会进入转发状态。



P/A机制详解
对于STP的阻塞端口切换为转发端口,会有一个30s的等待时间。而RSTP可以依靠P/A机制进行协商加快端口的选举。



拓扑变更机制

拓扑变化引发的问题
若是SWA与SWB之间的链路断掉,PCB访问PCA的流量经过SWA后转发到SWB,因为链路的问题,SWA接收到数据无法转发到SWB则会丢弃,正常来说SWA与SWB之间的链路出现故障,PCB访问PCA的流量会直接走SWB去访问PCA,这就是拓扑变化引发的MAC地址表错误的问题。

拓扑变化处理
当SWA与SWB之间的链路出现故障之后,RSTP会将E2端口切换为新的根端口,而SWC的E2端口变化为指定端口,而SWB检测到网络拓扑发生变化后会在TC While Timer(4s)内清空发生故障的MAC地址表,随后向外部泛洪TC报文

SWC接收到SWB的TC报文后会将除E2端口外的非边缘端口的MAC地址表清空,同时SWC也会向外部泛洪TC报文。
SWA收到SWC泛洪的TC报文后会将除E2外的非边缘端口的MAC地址表清空。
保护功能
BPDU保护

1 | #设置接口为边缘端口 |
根保护

1 | #进入指定接口,开启根保护功能,以SW1的g0/0/1口为例 |
环路保护

防TC-BPDU攻击

RSTP的工作过程
RSTP拓扑收敛过程



MSTP
RSTP与STP的不足


多生成树协议概述
MSTP是IEEE 802.1S中定义的生成树协议,MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。
MSTP可以将一个或多个VLAN映射到一个Instance(实例),再基于Instance计算生成树,映射到同一个Instance的VLAN共享同一棵生成树。

MSTP的基本配置

默认情况下,交换机都是用的MSTP模式,但是属于同一个实例。
SW1
1 | [SW1]vlan batch 10 20 |
SW2
1 | [SW2]vlan batch 10 20 |
SW3
1 | [SW3]vlan batch 10 20 |
MSTP基本概念
MSTP网络层次
MST Region
MSTP网络层次:
- MSTP把一个交换网络划分为多个域,每个域内形成多棵生成树,生成树之间彼此独立。
MST Region(Multiple Spanning Tree Region,多生成树域),也可简称MST域:
- 由交换网络中的多台交换设备以及它们之间的网段所构成。
- 一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
- MSTP网络中包含1个或多个MST域,每个MST域中包含一个或多个多生成树实例。

MSTI
MSTI(Multiple Spanning Tree Instance,多生成树实例):
- 一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。
- MSTI使用Instance ID标识,华为设备取值为0~4094。
VLAN映射表
MST域的属性,描述了VLAN和MSTI之间的映射关系。
如下图所示的MST Region 4的VLAN映射有:
- VLAN1映射到MSTI 1
- VLAN2映射到MSTI 2
- 其余VLAN映射到MSTI 3

CST
CST(Common Spanning Tree,公共生成树)
- 是连接交换网络内所有MST域的一颗生成树。
- 如果把每个MST域看作是一个节点,CST就是这些节点通过生成树协议计算生成的一棵生成树。
- 如下图深蓝色粗线条连接各个域构成CST。

IST
IST(Internal Spanning Tree,内部生成树)
是各MST域内的一棵生成树。
IST是一个特殊的MSTI,MSTI的Instance ID为0。
如下图所示的MST Region 4,黑色细线条在域中连接该域的所有交换设备构成IST。

CIST
CIST(Common and Internal Spanning Tree,公共和内部生成树)
- 通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
- 如下图所示,所有MST域的IST加上CST就构成一棵完整的生成树,即CIST。

SST
SST(Single Spanning Tree,单生成树)有两种情况:
- 运行生成树协议的交换设备只能属于一个生成树。
- MST域中只有一个交换设备,这个交换设备构成单生成树。
如下图所示的MST Region 3,该域中的唯一的交换设备构成SST。

总根、域根和主桥
总根(CIST Root)
- 是CIST的根桥,如下图中的SW1。
域根(Regional Root)
- 分为IST域根和MSTI域根。
- IST域根,在MST域中IST生成树中距离总根最近的交换设备是IST域根,如下图中SW2、SW3、SW4。
- MSTI域根是每个多生成树实例的树根。
主桥(Master Bridge)
- 是IST Master,它是域内距离总根最近的交换设备,如下图中的SW1、SW2、SW3、SW4。
- 如果总根在MST域中,则总根为该域的主桥。

小结

MSTP端口
端口角色
MSTP中定义的所有端口角色包括:根端口、指定端口、Alternate端口(阻塞)、Backup端口(指定端口的备份端口)、Master端口、域边缘端口和边缘端口。
| 端口角色 | 说明 |
|---|---|
| 根端口 | 在非根桥上,离根桥最近的端口是本交换设备的根端口。根端口负责向树根方向转发数据。 |
| 指定端口 | 对一台交换设备而言,它的指定端口是向下游交换设备转发BPDU报文的端口。 |
| Alternate端口 | 从配置BPDU报文发送角度来看,Alternate端口就是由于学习到其他网桥发送的配置BPDU报文而阻塞的端口。 从用户流量角度来看,Alternate端口提供了指定桥到根的另一条可切换路径,作为根端口的备份端口。 |
| Backup端口 | 从配置BPDU报文发送角度来看,Backup端口就是由于学习到自己发送的配置BPDU报文而阻塞的端口。 从用户流量角度来看,Backup端口作为指定端口的备份,提供了另外一条从根节点到叶节点的备份通路。 |
| 边缘端口 | 如果指定端口位于整个域的边缘,不在于任何交换设备连接,这种端口叫做边缘端口。 边缘端口一般与终端设备直接连接。 |

| 端口角色 | 说明 |
|---|---|
| Master端口 | Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换设备上连接MST域到总根的端口。 Master端口是域中的报文去往总根的必经之路。 Master端口是特殊域边缘端口,Master端口在CIST上的角色是Root Port,在其它实例上的角色都是Master端口。 |
| 域边缘端口 | 域边缘端口是位于MST域的边缘并连接其他MST域或SST的端口。 |

端口状态
MSTP定义的端口状态与RSTP协议中定义相同:
- Forwarding状态:端口既转发用户流量,学习MAC地址,又收到/发送BPDU报文。
- Learing状态:过渡状态,端口接收/发送BPDU报文,不转发用户流量但是学习MAC地址。
- Discarding状态:端口只接受BPDU报文,不转发用户流量也不学习MAC地址。
| MSTP端口状态 | 端口在拓扑中的角色 |
|---|---|
| Forwarding | 包括根端口、指定端口、Master端口、域边缘端口 |
| Learning | 包括根端口、指定端口、Master端口、域边缘端口 |
| Discarding | 包括根端口、指定端口、Master端口、域边缘端口、Altrnate端口、Backup端口 |
MSTP报文
MSTP使用MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。
MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。


MSTP工作原理
CIST计算
经过比较MST BPDU消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根,即总根。
在每个MST域内,MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。CST和IST构成了整个交换设备的CIST。

假设将红色作为总根,通过CIST的计算,黄色即是各个区域的域根。

MSTI计算
在MSTI域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。
每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似。

以区域4为例,可以计算出域内的3个MSTI。

MSTP网络数据转发
在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径进行转发:
- 在MST域内,沿着其对应的MSTI转发。
- 在MST域间,沿着CST转发。

以区域1的实例2为例,假设区域1的2号交换机还连着一台PC机,想要访问区域4的3号交换机连着的PC机,则需要通过以下路径进行数据转发。

MSTP总结
MSTP的基础配置命令
配置生成树工作模式
交换机支持STP、RSTP和MSTP三种生成树工作模式。默认情况共工作在MSTP模式。
1 | [Huawei]stp mode {stp|rstp|mstp} |
启用MSTP
使能交换设备或端口上的STP/RSTP/MSTP功能。缺省情况下,全局和端口的STP/RSTP/MSTP均使能。
注意:为了保证生成树计算过程快速而且稳定,必须在启用STP/RSTP/MSTP之前,完成对交换设备及其端口必要的基础配置
1 | [Huawei]stp enable |
配置MST域并激活
进入MST域视图
1 | [Huawei]stp region-configuration |
配置MST域的域名
缺省情况下,MST域名等于交换设备的桥MAC地址。
1 | [Huawei-mst-region]region-name name |
配置多生成树实例与VLAN的映射关系
将指定VLAN映射到指定的生成树实例上。缺省情况下,所有VLAN均映射到CIST,即实例0上。
1 | [Huawei-mst-region]instance instance-id vlan {vlan-id1[to vlan-id2]} |
配置MST域的MSTP修订级别
配置交换设备的MSTP修订级别。缺省情况下,交换设备MST域的修订级别是0。
1 | [Huawei-mst-region]revision-level level-number |
激活MST域的配置
使域名、VLAN映射表和MSTP修订级别生效。
1 | [Huawei-mst-region]active region-configuration |
MSTP可选配置命令
配置根桥和备份根桥
配置当前交换设备为指定生成树的根桥或备份根桥。
1 | [Huawei]stp [instance instance-id] root {primary|secondary} |
配置交换设备在指定生成树实例中的优先级
配置交换设备在指定生成树中的优先级。缺省情况下交换设备在指定生成树中的优先级是32768。
1 | [Huawei]stp instance [instance-id] priority [priority-number] |
配置端口在指定生成树实例中的路径开销
配置路径开销值的计算方式。在缺省情况下,路径开销值的计算方法为IEEE 802.1T标准。
1 | [Huawei]stp pathcost-standard {dot1q-1998|dpt1t|legacy} |
配置当前端口在指定生成树上的端口路径开销。缺省情况下,端口在各个生成树上的路径开销为端口速率对应的路径开销。
1 | [Huawei-GigabitEethernet0/0/1]stp instance [instance-id] cost [cost-value] |
配置端口在指定生成树实例中的优先级
配置当前端口在生成树计算时的优先级,缺省情况下,交换设备端口的优先级取值是128。
1 | [Huawei-GigabitEethernet0/0/1]stp instance [instance-id] port priority [priority-value] |


