STP回顾及不足

回顾

STP的工作原理

image-1

STP树的生成过程

image-2

STP的端口状态迁移

image-3

不足

STP虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍受的。

STP的不足:

STP没有细致区分端口状态和端口角色,不利于初学者学习及部署。

  • 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流量。
  • 从使用和配置角度来讲,端口之间最本质的区别并不在于端口状态,而是在于端口扮演的角色。

STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。

STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备再进行处理,最终传遍整个STP网络。

STP对计时器的依赖

image-4

STP重收敛过程慢

image-5

STP拓扑变更机制

image-6

RSTP

概述

IEEE 802.1W中定义的RSTP可以视为STP的改进版本,RSTP在许多方面对STP进行了优化,它的收敛速度更快,而且能够兼容STP。

RSTP对STP的改进:

  • 通过端口角色的增补,简化了生成树协议的理解及部署;
  • 端口状态的重新划分;
  • 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色;
  • 配置BPDU的处理发生变化;
  • 快速收敛;
  • 增加保护功能。

改进点

端口角色

通过端口角色的增补,简化了生成树协议的理解与部署。

替代端口即是根端口的备份端口,当根端口不可用时会立马切换到替代端口进入转发状态,没有切换时间。

备份端口是指定端口的备份,当指定端口不可用时,会有30s的切换时间切换到备份端口,这30s的时间内可能会存在环路问题。

image-7

端口状态

RSTP的状态规范缩减为3种,根据端口是否转发用户流量和学习MAC地址来划分:

Discarding状态:不转发用户流量也不学习MAC地址;

Learning状态:不转发用户流量但是学习MAC地址;

Forwarding状态:既转发用户流量又学习MAC地址。

image-8

配置BPDU-RST BPDU

RSTP的配置BPDU充分利用了STP报文的Flag字段,明确了端口角色。

除了保证和STP格式基本一致之外,RSTP作了如下变化:

Type字段:配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。

Flag字段:使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。

RST BPDU报文格式

image-9

配置BPDU的处理

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

image-10

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

image-11

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

image-12

快速收敛机制

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

image-13

image-14

image-15

P/A机制详解

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

image-16

image-17

image-18

拓扑变更机制

image-19

拓扑变化引发的问题

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

image-20

拓扑变化处理

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

image-21

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

SWA收到SWC泛洪的TC报文后会将除E2外的非边缘端口的MAC地址表清空。

保护功能

BPDU保护

image-22

1
2
3
4
5
#设置接口为边缘端口
int g0/0/1
stp edged-port enable
#设置bpdu保护
[SW3]stp bpdu-protection

根保护

image-23

1
2
3
#进入指定接口,开启根保护功能,以SW1的g0/0/1口为例
int g0/0/1
stp root-protection

环路保护

image-24

防TC-BPDU攻击

image-25

RSTP的工作过程

RSTP拓扑收敛过程

image-26

image-27

image-28

MSTP

RSTP与STP的不足

image-29

image-30

多生成树协议概述

MSTP是IEEE 802.1S中定义的生成树协议,MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。

MSTP可以将一个或多个VLAN映射到一个Instance(实例),再基于Instance计算生成树,映射到同一个Instance的VLAN共享同一棵生成树。

image-31

MSTP的基本配置

image-32

默认情况下,交换机都是用的MSTP模式,但是属于同一个实例。

SW1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[SW1]vlan batch 10 20
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW1]int g0/0/1
[SW1-GigabitEthernet0/0/1]port link-type trunk
[SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20
[SW1-GigabitEthernet0/0/1]quit
[SW1]int g0/0/2
[SW1-GigabitEthernet0/0/2]port link-type trunk
[SW1-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 20
[SW1-GigabitEthernet0/0/2]quit
[SW1]stp region-configuration //进入stp的域配置视图
[SW1-mst-region]region-name mstp //配置stp域的名称
[SW1-mst-region]revision-level 1 //配置修订等级
[SW1-mst-region]instance 1 vlan 10 //将vlan10映射到实例1
[SW1-mst-region]instance 2 vlan 20 //将vlan20映射到实例2
[SW1-mst-region]active region-configuration //激活stp的域配置
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW1-mst-region]quit
#查看STP树的变化,可以看到STP树新生成了1、2的MSTID
[SW1]dis stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ALTE DISCARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1 GigabitEthernet0/0/1 ALTE DISCARDING NONE
1 GigabitEthernet0/0/2 ROOT FORWARDING NONE
2 GigabitEthernet0/0/1 ALTE DISCARDING NONE
2 GigabitEthernet0/0/2 ROOT FORWARDING NONE
#设置SW1为实例1的根桥
[SW1]stp instance 1 root primary
#再次查看SW1的STP树结构,可以发现较未设置SW1为实例1的根桥和未设置SW2为实例2的根桥,树的结构已经发生了改变,SW1上实例1中两个端口变为指定端口且都为转发状态,实例2中端口1为根端口,端口2为阻塞端口。
[SW1]dis stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 ALTE DISCARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1 GigabitEthernet0/0/1 DESI FORWARDING NONE
1 GigabitEthernet0/0/2 DESI FORWARDING NONE
2 GigabitEthernet0/0/1 ROOT FORWARDING NONE
2 GigabitEthernet0/0/2 ALTE DISCARDING NONE

SW2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[SW2]vlan batch 10 20
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW2]int g0/0/1
[SW2-GigabitEthernet0/0/1]port link-type trunk
[SW2-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20
[SW2-GigabitEthernet0/0/1]int g0/0/02
[SW2-GigabitEthernet0/0/2]port link-type trunk
[SW2-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 20
[SW2-GigabitEthernet0/0/2]quit
[SW2]stp region-configuration
[SW2-mst-region]revision-level 1
[SW2-mst-region]region-name mstp
[SW2-mst-region]instance 1 vlan 10
[SW2-mst-region]instance 2 vlan 20
[SW2-mst-region]active region-configuration
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW2-mst-region]quit
#设置SW2为实例2的根桥
[SW2]stp instance 2 root primary
#查看SW2的STP树结构,会发现实例1中1端口为根端口,2端口为阻塞端口,实例2中两个端口都为指定端口。
[SW2]dis stp brief
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1 GigabitEthernet0/0/1 ROOT FORWARDING NONE
1 GigabitEthernet0/0/2 ALTE DISCARDING NONE
2 GigabitEthernet0/0/1 DESI FORWARDING NONE
2 GigabitEthernet0/0/2 DESI FORWARDING NONE

SW3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[SW3]vlan batch 10 20
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW3]int g0/0/2
[SW3-GigabitEthernet0/0/2]port link-type trunk
[SW3-GigabitEthernet0/0/2]port trunk allow-pass vlan 10 20
[SW3-GigabitEthernet0/0/2]int g0/0/1
[SW3-GigabitEthernet0/0/1]port link-type trunk
[SW3-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20
[SW3-GigabitEthernet0/0/1]int g0/0/3
[SW3-GigabitEthernet0/0/3]port link-type access
[SW3-GigabitEthernet0/0/3]port default vlan 10
[SW3-GigabitEthernet0/0/3]int g0/0/4
[SW3-GigabitEthernet0/0/4]port link-type access
[SW3-GigabitEthernet0/0/4]port default vlan 20
[SW3-GigabitEthernet0/0/4]quit
[SW3]stp region-configuration
[SW3-mst-region]region-name mstp
[SW3-mst-region]revision-level 1
[SW3-mst-region]instance 1 vlan 10
[SW3-mst-region]instance 2 vlan 20
[SW3-mst-region]active region-configuration
Info: This operation may take a few seconds. Please wait for a moment...done.
[SW3-mst-region]quit
#查看SW3的STP树结构。
[SW3]dis stp br
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING NONE
0 GigabitEthernet0/0/4 DESI FORWARDING NONE
1 GigabitEthernet0/0/1 DESI FORWARDING NONE
1 GigabitEthernet0/0/2 ROOT FORWARDING NONE
1 GigabitEthernet0/0/3 DESI FORWARDING NONE
2 GigabitEthernet0/0/1 ROOT FORWARDING NONE
2 GigabitEthernet0/0/2 DESI FORWARDING NONE
2 GigabitEthernet0/0/4 DESI FORWARDING NONE

MSTP基本概念

MSTP网络层次

MST Region

MSTP网络层次:

  • MSTP把一个交换网络划分为多个域,每个域内形成多棵生成树,生成树之间彼此独立。

MST Region(Multiple Spanning Tree Region,多生成树域),也可简称MST域:

  • 由交换网络中的多台交换设备以及它们之间的网段所构成。
  • 一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
  • MSTP网络中包含1个或多个MST域,每个MST域中包含一个或多个多生成树实例。

image-33

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

image-34

CST

CST(Common Spanning Tree,公共生成树)

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

image-35

IST

IST(Internal Spanning Tree,内部生成树)

是各MST域内的一棵生成树。

IST是一个特殊的MSTI,MSTI的Instance ID为0。

如下图所示的MST Region 4,黑色细线条在域中连接该域的所有交换设备构成IST。

image-36

CIST

CIST(Common and Internal Spanning Tree,公共和内部生成树)

  • 通过生成树协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
  • 如下图所示,所有MST域的IST加上CST就构成一棵完整的生成树,即CIST。

image-37

SST

SST(Single Spanning Tree,单生成树)有两种情况:

  • 运行生成树协议的交换设备只能属于一个生成树。
  • MST域中只有一个交换设备,这个交换设备构成单生成树。

如下图所示的MST Region 3,该域中的唯一的交换设备构成SST。

image-38

总根、域根和主桥

总根(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域中,则总根为该域的主桥。

image-39

小结

image-40

MSTP端口

端口角色

MSTP中定义的所有端口角色包括:根端口、指定端口、Alternate端口(阻塞)、Backup端口(指定端口的备份端口)、Master端口、域边缘端口和边缘端口。

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

image-41

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

image-42

端口状态

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报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。

image-43

image-44

MSTP工作原理

CIST计算

经过比较MST BPDU消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根,即总根。

在每个MST域内,MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。CST和IST构成了整个交换设备的CIST。

image-45

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

image-46

MSTI计算

在MSTI域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。

每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似。

image-47

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

image-48

MSTP网络数据转发

在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径进行转发:

  • 在MST域内,沿着其对应的MSTI转发。
  • 在MST域间,沿着CST转发。

image-49

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

image-50

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
2
[Huawei]stp region-configuration
[Huawei-mst-region]

配置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]