背景:
RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。但在划分VLAN的网络中运行RSTP/STP,局域网内所有的VLAN共享一棵生成树,被阻塞后的链路将不承载任何流量,无法在VLAN间实现数据流量的负载均衡,存在二层次优路径,导致链路带宽利用率、设备资源利用率较低。
为了弥补RSTP/STP的缺陷,IEEE于2002年发布的802.1S标准定义了MSTP(Multiple Spanning Tree Protocol,多生成树协议)。MSTP兼容STP和RSTP,通过建立多棵无环路的树,解决广播风暴并实现冗余备份。
学习任务:
- 描述MSTP的各种概念
- 描述MSTP的工作过程
- Mstp和stp/rstp的不同点
- 实验任务
目录
描述MSTP的各种概念
MSTP的网络层次
MSTP网络中包含1个或多个MST域(MST Region),每个MST Region中包含一个或多个MSTI。组成MSTI的是运行STP/RSTP/MSTP的交换设备,MSTI是所有运行STP/RSTP/MSTP的交换设备经MSTP协议计算后形成的树状网络。
MST域(MST Region)
MST域是多生成树域(Multiple Spanning Tree Region),由交换网络中的多台交换设备以及它们之间的网段所构成。同一个MST域的设备具有下列特点:
- 都启动了MSTP。
- 具有相同的域名。
- 具有相同的VLAN到生成树实例映射配置。
- 具有相同的MSTP修订级别配置。
一个局域网可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
VLAN映射表
VLAN映射表是MST域的属性,它描述了VLAN和MSTI之间的映射关系。
MST Region 4的VLAN映射表是:
VLAN1映射到MSTI1
VLAN2映射到MSTI2
其余VLAN映射到MSTI3
CST
公共生成树CST(Common Spanning Tree)是连接交换网络内所有MST域的一棵生成树。
如果把每个MST域看作是一个节点,CST就是这些节点通过STP或RSTP协议计算生成的一棵生成树。
IST
内部生成树IST(Internal Spanning Tree)是各MST域内的一棵生成树。
IST是一个特殊的MSTI,MSTI的ID为0,通常称为MSTI0。
IST是CIST在MST域中的一个片段。
SST
构成单生成树SST(Single Spanning Tree)有两种情况:
运行STP或RSTP的交换设备只能属于一个生成树。
MST域中只有一个交换设备,这个交换设备构成单生成树。
CIST
公共和内部生成树CIST(Common and Internal Spanning Tree)是通过STP或RSTP协议计算生成的,连接一个交换网络内所有交换设备的单生成树。
域根
域根(Regional Root)分为IST域根和MSTI域根。
一个MST域内可以生成多棵生成树,每棵生成树都称为一个MSTI。MSTI域根是每个多生成树实例的树根。
总根
总根是CIST(Common and Internal Spanning Tree)的根桥。
主桥
主桥(Master Bridge)也就是IST Master,它是域内距离总根最近的交换设备。如果总根在MST域中,则总根为该域的主桥。
MSTP的端口角色
MSTP中定义的所有端口角色包括:
根端口、指定端口、Alternate端口、Backup端口、Master端口、域边缘端口和边缘端口。
说明:
除边缘端口外,其他端口角色都参与MSTP的计算过程。
同一端口在不同的生成树实例中可以担任不同的角色。
表1 端口角色 | |
端口角色 | 说明 |
根端口 | 在非根桥上,离根桥最近的端口是本交换设备的根端口。根交换设备没有根端口。 根端口负责向树根方向转发数据。 |
指定端口 | 对一台交换设备而言,它的指定端口是向下游交换设备转发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功能后,会默认启用边缘端口自动探测功能,当端口在(2 × Hello Timer + 1)秒的时间内收不到BPDU报文,自动将端口设置为边缘端口,否则设置为非边缘端口。 |
MSTP的端口状态
MSTP定义的端口状态与RSTP协议中定义相同,如表2所示。
端口状态 | 说明 |
Forwarding | 在这种状态下,端口既转发用户流量又处理BPDU报文。 |
Learning | 这是一种过渡状态。在Learning下,交换设备会根据收到的用户流量,构建MAC地址表,但不转发用户流量,所以叫做学习状态。 Learning状态的端口处理BPDU报文,不转发用户流量。 |
Discarding | Discarding状态的端口只处理BPDU报文。 |
说明:
根端口、Master端口、指定端口和域边缘端口支持Forwarding、Learning和Discarding状态,Alternate端口和Backup端口仅支持Discarding状态。
MSTP报文
MSTP使用多生成树桥协议数据单元MST BPDU(Multiple Spanning Tree Bridge Protocol Data Unit)作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。
描述MSTP的工作过程
MSTP拓扑计算
MSTP可以将整个二层网络划分为多个MST域,各个域之间通过计算生成CST。域内则通过计算生成多棵生成树,每棵生成树都被称为是一个多生成树实例。其中实例0被称为IST,其他的多生成树实例为MSTI。MSTP同STP一样,使用配置消息进行生成树的计算,只是配置消息中携带的是设备上MSTP的配置信息。
MSTP可以将整个二层网络划分为多个MST域,各个域之间通过计算生成CST,域内生成IST,CST和IST构成了整个交换设备网络的CIST。
域内还可以基于实例计算生成多棵生成树,每棵生成树都被称为是一个MSTI。
CIST和MSTI都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换设备互相交换MST BPDU来生成CIST和MSTI 。
参与CIST计算的优先级向量为:
{ 根交换设备ID,外部路径开销,域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
参与MSTI计算的优先级向量为:
{ 域根ID,内部路径开销,指定交换设备ID,指定端口ID,接收端口ID }
注意:括号中的向量的优先级从左到右依次递减。
比较原则
同一向量比较,值最小的向量具有最高优先级。
优先级向量比较原则如下。
- 首先,比较根交换设备ID。
- 如果根交换设备ID相同,再比较外部路径开销。
- 如果外部路径开销相同,再比较域根ID。
- 如果域根ID仍然相同,再比较内部路径开销。
- 如果内部路径仍然相同,再比较指定交换设备ID。
- 如果指定交换设备ID仍然相同,再比较指定端口ID。
- 如果指定端口ID还相同,再比较接收端口ID。
- 如果端口接收到的BPDU内包含的配置消息优于端口上保存的配置消息,则端口上原来保存的配置消息被新收到的配置消息替代。端口同时更新交换设备保存的全局配置消息。反之,新收到的BPDU被丢弃。
CIST的计算
经过比较配置消息后,在整个网络中选择一个优先级最高的交换设备作为CIST的树根。在每个MST域内MSTP通过计算生成IST;同时MSTP将每个MST域作为单台交换设备对待,通过计算在MST域间生成CST。CST和IST构成了整个交换设备网络的CIST。
MSTI的计算
在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。每棵生成树独立进行计算,计算过程与STP计算生成树的过程类似,
MSTI的特点
- 每个MSTI独立计算自己的生成树,互不干扰。
- 每个MSTI的生成树计算方法与STP基本相同。
- 每个MSTI的生成树可以有不同的根,不同的拓扑。
- 每个MSTI在自己的生成树内发送BPDU。
- 每个MSTI的拓扑通过命令配置决定。
- 每个端口在不同MSTI上的生成树参数可以不同。
- 每个端口在不同MSTI上的角色、状态可以不同。
在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径进行转发:
在MST域内,沿着其对应的MSTI转发。
在MST域间,沿着CST转发。
MSTP快速收敛机制
MSTP支持普通方式和增强方式两种P/A(Proposal/Agreement)机制:
普通方式
MSTP支持普通方式的P/A机制实现与RSTP支持的P/A机制实现相同,RSTP支持的P/A机制请见RSTP技术细节中的P/A机制。
图1 增强方式的P/A机制
如图1所示,在MSTP中,P/A机制工作过程如下:
- 协商开始时,每一台设备都认为自己是根桥,根桥上的端口是指定端口,端口状态为Discarding,端口的synced变量置位,触发Proposal和Agreement同时置位。上游设备发送Proposal报文,请求进行快速迁移。下游设备接收到后,把与上游设备相连的端口设置为根端口,并阻塞所有非边缘端口。
- 上游设备继续发送Agreement报文。下游设备接收到后,根端口转为Forwarding状态。
- 下游设备回应Agreement报文。上游设备接收到后,把与下游设备相连的端口设置为指定端口,指定端口进入Forwarding状态。
缺省情况下,华为数据通信设备使用增强的快速迁移机制。如果华为数据通信设备和其他制造商的设备进行互通,而其他制造商的设备P/A机制使用普通的快速迁移机制,此时,可在华为数据通信设备上通过设置P/A机制为普通的快速迁移机制,从而实现华为数据通信设备和其他制造商的设备进行互通。
Mstp和stp/rstp的不同点
实验配置:
图1 配置MSTP功能组网图
组网需求
在一个复杂的网络中,由于冗余备份的需要,网络规划者一般都倾向于在设备之间部署多条物理链路,其中一条作为主用链路,其他作为备份链路。这样就难免会形成环路,若网络中存在环路,可能会引起广播风暴和MAC表项被破坏。为此,可以在网络中部署MSTP协议预防环路。MSTP可阻塞二层网络中的冗余链路,将网络修剪成树状,达到消除环路的目的。
如图1所示,SwitchA、SwitchB、SwitchC和SwitchD都运行MSTP。为实现VLAN2~VLAN10和VLAN11~VLAN20的流量负载分担,MSTP引入了多实例。MSTP可设置VLAN映射表,把VLAN和生成树实例相关联。
配置思路
采用以下思路配置MSTP功能:
- 在处于环形网络中的交换设备上配置MSTP基本功能。与PC相连的端口不用参与MSTP计算,将其设置为边缘端口。
- 配置保护功能,实现对设备或链路的保护。例如:在各实例的根桥设备指定端口配置根保护功能。
- 配置设备的二层转发功能。
SwitchA的配置文件:
#
sysname SwitchA
#
vlan batch 2 to 20
#
stp instance 1 root primary
stp instance 2 root secondary
#
stp region-configuration
region-name RG1
instance 1 vlan 2 to 10
instance 2 vlan 11 to 20
active region-configuration
#
interface Eth-Trunk1
port link-type trunk
port trunk allow-pass vlan 2 to 20
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 20
stp root-protection
#
interface GigabitEthernet0/0/2
eth-trunk 1
#
interface GigabitEthernet0/0/3
eth-trunk 1
#
return
SwitchB的配置文件:
#
sysname SwitchB
#
vlan batch 2 to 20
#
stp instance 1 root secondary
stp instance 2 root primary
#
stp region-configuration
region-name RG1
instance 1 vlan 2 to 10
instance 2 vlan 11 to 20
active region-configuration
#
interface Eth-Trunk1
port link-type trunk
port trunk allow-pass vlan 2 to 20
#
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 2 to 20
stp root-protection
#
interface GigabitEthernet0/0/2
eth-trunk 1
#
interface GigabitEthernet0/0/3
eth-trunk 1
#
return
SwitchC的配置文件:
#
vlan batch 2 to 20
#
stp bpdu-protection
#
stp region-configuration
region-name RG1
instance 1 vlan 2 to 10
instance 2 vlan 11 to 20
active region-configuration
#
interface GigabitEthernet0/0/1
port link-type access
port default vlan 2
stp edged-port enable
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 20
stp instance 2 cost 20000
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 2 to 20
#
return
SwitchD的配置文件:
#
sysname SwitchD
#
vlan batch 2 to 20
#
stp bpdu-protection
#
stp region-configuration
region-name RG1
instance 1 vlan 2 to 10
instance 2 vlan 11 to 20
active region-configuration
#
interface GigabitEthernet0/0/1
port link-type access
port default vlan 11
stp edged-port enable
#
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 2 to 20
stp instance 1 cost 20000
#
interface GigabitEthernet0/0/3
port link-type trunk
port trunk allow-pass vlan 2 to 20
#
return
注意: active region-configuration 激活实例,如果没有这条命令则在mstp实例下的配置不生效。
我们在接入交换机CD处配置了bpdu保护,在连接pc处做了边缘端口
在交换AB连接CD接口做了 根保护
使用此命令查看各个端口的状态:
display stp interface brief