MSTP基础
对于规模比较大,结构比较复杂,特别是多VLAN的交换网络,生成树的计算复杂,甚至无法最终形成一颗无环路的生成树。这就得用到MSTP(Multiple Spanning Tree Protocol,多生成树协议)。MSTP与RSTP在许多方面是完全一样的,包括主要的五种端口角色、三种端口状态、三种收敛机制、三种定时器,以及影响拓扑收敛的参数配置等,主要区别就在于MSTP可以在一个交换网络中划分多个MST(多生成树)域,在一个MST域中又可以有多个MSTI(多生成树实例)
IEEE于2002年发布的802.1s标准定义了MSTP,MSTP兼容了STP和RSTP,既可以快速收敛,又能使不同VLAN的流量沿各自的路径转发,从而为冗余链路提供了更好的负载分担机制。
MSTP通过把一个交换网络划分成多个域,每个域内单独形成一棵生成树,整个交换网络就可形成多棵互不影响的生成树。在MSTP中,每棵生成树叫做一个多生成树实例MSTI(Multiple Spanning Tree Instance),每个域叫做一个MST域(MST Region:MultipleSpanning Tree Region)。
MSTP把一个生成树网络划分成多个域,每个域内形成多棵内部生成树,各个生成树实例之间彼此独立。然后,MSTP通过VLAN-生成树实例映射表把VLAN和生成树实例联系起来,将多个VLAN捆绑到一个实例中,并以实例为基础实现负载均衡。
所谓实例就是一棵生成树中所包含的交换网段。通过将多个VLAN捆绑到一个实例,可以节省通信开销和资源占用率。MSTP各个实例拓扑的计算相互独立,在这些实例上可以实现负载均衡。可以把多个相同拓扑结构的VLAN映射到一个实例里,这些VLAN在端口上的转发状态取决于端口在对应MSTP实例的状体。
MSTP基本概念
因为在MSTP网络中可以有多棵生成树实例,就涉及到生成树实例的划分及各生成树实例之间的关系等问题。
1、MSTP网络的层次结构
MSTP不仅涉及多个MSTI(生成树实例),而且还可划分多个MST域(MST Region,也称为MST区域)。总的来说,一个MSTP网络可以包含一个或多MST域,而每个MST域中又可包含一个或多个MSTI。组成每个MSTI的是其中运行STP/RSTP/MSTP的交换设备,是这些交换设备经MSTP协议计算后形成的树状网络。如下图的MSTP网络中划分了3个MST区域,每个区域又包含了3个MSTI。
MST域
MST域(MultipleSpanning Tree Region,多生成树域),由交换网络中的多台交换设备以及他们之间的网段所构成。同一个MST域的设备具有下列特点:
(1)都启动了MSTP
(2)具有相同的域名。
(3)具有相同的VLAN到生成树实例映射配置。
(4)具有相同的MSTP修订级别配置。
一个MSTP网络可以存在多个MST域,各MST域之间在物理上直接或间接相连。用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
如下图的MST域D0中是由交换机S1、S2、S3和S4构成的,域中有3个MSTI,即MSTI0、MSTI1和MSTI2。
MSTI
MSTI(MultipleSpanning Tree Instance,多生成树实例)是指MST域内的生成树。一个MST域内可以通过MSTP生成多棵生成树,各棵生成树之间彼此独立。一个MSTI可以与一个或多个VLAN对应,但一个VLAN只能与一个MSTI对应。
既然是生成树,那就不允许存在环路。以图8-27所示的MSTP网络为例,这个MST域中包括了3个MSTI(图中MSTI0、MSTI1、MSTI2,注意它们的拓扑,总有一个方向的交换机连接是断开的),每个MSTI都没有环路。
在一般的企业网络中,通常是将支持MSTP的设备全部划分到一个MST域中,而将不支持MSTP的设备划分到另一个MST域中。对于MSTI来说,通常是将具有相同转发路径的VLAN映射到一个MSTI中,以形成一棵独立的生成树
VLAN映射表
VLAN映射表是MST域的属性,描述了VLAN和MST域中对应MSTI之间的映射关系。也就是把哪些VLAN分别加入哪个MSTI中。一个VLAN只能加入一个MSTI中,即同一VLAN的数据只能在一个MSTI中传输,而一个MSTI可能对应多个VLAN。但是一台交换机可以位于多个MSTI中,毕竟一台交换机上可以划分多个VLAN。
如图8-27所示的MSTP网络,MST域D0中所包括的VLAN映射表如下:
(1)VLAN1映射到MSTI1。
(2)VLAN2和VLAN3映射到MSTI2。
(3)其余VLAN映射到MSTI0。
IST
IST(InternalSpanning Tree,内部生成树)是各个MST域内部的一棵生成树,是仅针对具体的MST域来计算的。但它是一个特殊的MSTI,其MSTI ID为0,即IST通常称为MSTI0。每个MST域中只有一个IST,包括对应MST域中所有互联的交换机。
如下图所示的MSTP网络中(包括了多个MST域)每个MST域内部用细线连接的各交换机就构成了对应MST域中的IST。(既然有多个MSTI,如何确定IST?)
CST
CST(CommonSpanning Tree,公共生成树)是连接整个MSTP网络内所有MST域的一棵单生成树,是针对整个MSTP网络来计算的。如果把每个MST域看做一台“交换机”,每个MST域看成CST的一个节点,则CST就是这些节点“交换机”通过STP或RSTP协议计算生成的一棵生成树(SST)。即每个MSTP网络中只有一个CST。每个MST域中的IST是整个SMTP网络CIST在对应MST域中的一个片段。
图8-31中用于连接各个MST域的粗线连接就构成了CST。
7、CIST
CIST(Common andInternal Spanning Tree,公共和内部生成树)是通过STP或RSTP协议计算生成的,连接整个MSTP网络内所有交换机的单生成树,由IST和CST共同构成。CST是连接交换网络中所有MST域的单生成树,而此处的CIST则是连接交换网络内的所有交换机的单生成树。即每个MSTP网络中也只有一个CIST。交换网络中的所有MST域的IST和CST一起构成一棵完整的生成树,也就是CIST。
图8-31中,A0、B0、C0、D0四个MST区域中的IST,再加上MST域间的CST就是整个交换网络的CIST。
8、SST
构成SST(SingleSpanning Tree,单生成树)有两种情况:
(1)运行STP或RSTP生成树协议的交换机只属于一个生成树。
(2)MST域中只有一个交换机,这个交换机构成单生成树。
图8-31中,B0域中的交换机就是一棵单生成树,因为此域中只有一台交换机。
9、总根
总根是CIST生成树的根桥,通常是交换网络中最上层的交换机。8-31图中总根是在A0域中IST生成树的根桥。一个MSTP网络只有一个总根。
10、域根
因为在MSTP网络中,每MST域都有一个特殊的IST实例,以及许多MSTI实例,所以域根(RegionRoot)又分为IST域根和MSTI域根。
各个MST域中的IST生成树中距离CIST总根最近的交换机是IST域根。总根所在MST域的IST域根就是总根。图8-31中,也已标出了非总根所在的B0、C0和D0三个MST域的IST域根。
MSTI的域根是对应生成树实例的树根,域中不同的MSTI有各自的域根。而且,MST域内各棵生成树的拓扑不同,域根也可能不同。
MSTP的端口角色
MSTP中的端口角色主要有根端口(rootport)、指定端口(designated port)、替代端口(Alternate port)、备份端口(backup port)、主端口(master port)、域边缘端口和边缘端口。其中,根端口、指定端口、Alternate端口、Backup端口和边缘端口这五种主要端口角色的作用与RSTP协议中对应的端口角色定义完全相同。
1、根端口
根端口仅针对非根桥而言,非根桥上到根桥距离开销最小的端口就是本交换机的根端口。在到根桥距离开销相同的情况下,离根桥最近的端口是本交换机的根端口。根端口负责向树根方向转发数据。根桥上没有根端口,只有指定端口。
2、指定端口
对一台交换机而言,它的指定端口是向下游交换机转发BPDU报文的端口。交换机连接下级交换机的所有端口都是指定端口,不仅根桥上有,非根桥上同样有。
3、边缘端口
如果指定端口位于整个域的边缘,不再与任何交换机连接,这种端口叫做边缘端口。边缘端口一般与用户终端设备(如PC)直接连接。
4、Alternate端口
从发送BPDU来看,Alternate端口就是由于学习到其他交换机发送的BPDU而被阻塞的端口。从转发用户流量来看,Alternate端口提供了从指定桥到根桥的一条备份路径,所以Alternate端口是根端口的备份端口,如果根端口被阻塞后,Alternate端口将成为新的根端口。
5、Backup端口
当同一台交换机的两个端口同时连接一个设备时就存在一个环路,此时交换机会将其中一个端口阻塞,这个端口就是Backup端口。
从发送BPDU来看,Backup端口就是由于学习到本设备上其他端口发送的BPDU而被阻塞的端口。从转发用户流量来看,Backup端口,作为指定端口的备份,提供了一条从根桥到下级设备的备份通路。
6、Master端口
Master端口是MST域和总根相连的所有路径中最短路径上的端口,它是交换机上连接MST域到总根的端口。Master端口是域中的报文去往总根的必经之路。Master端口是特殊域边缘端口,Master端口在CST/CIST上的角色是根端口,在其他各实例上的角色都是Master。
图8-32中,交换设备S1、S2、S3、S4和它们之间的链路构成一个MST域,S1交换设备的端口AP1在域内的所有端口中到总根的路径开销最小,所以AP1为Master端口。
7、域边缘端口
域边缘端口是指位于MST域的边缘并连接其他MST域或SST的端口。进行MSTP计算时,域边缘端口在MSTI上的角色和CIST实例的角色保持一致。即如果边缘端口在CIST实例上的角色是Master端口(连接域到总根的端口),则它在域内所有MSTI上的角色也是Master端口。
图8-32中,AP1是域边缘端口,它在CIST上的角色是Master端口,则AP1在MST域内所有生成树实例上的角色都是Master端口。
MSTP的端口状态与收敛机制
MSTP拓扑计算原理
MSTP将整个二层网络划分为多个MST域,把每个域视为一个节点。各个MST域之间按照STP或者RSTP协议算法进行计算并生成CST(是单生成树);在一个MST域内则是通过MSTP协议算法计算生成若干个MSTI(是多生成树),其中示例0被称为IST。MSTP使用MST BPDU(MultipleSpanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。
MSTP向量优先级
MSTI和CIST拓扑都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换机互相交换MST BPDU来生成MSTI和CIST。
参与CIST计算的优先级向量按优先级别从高到低依次是根桥ID、外部路径开销、域根ID、内部路径开销指定桥ID、指定端口ID、接收端口ID;参与MSTI计算的优先级向量按优先级别从高到低依次是域根ID、内部路径开销、指定桥ID、指定端口ID、接收端口ID。
MSTP BPDU报文
MSTP使用MST BPDU(MultipleSpanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。
STP中定义的配置BPDU、RSTP中定义的RST BPDU、MSTP中定义的MST BPDU及TCN BPDU在版本号和类型值方面的比较:
MSTP BPDU报文格式
MST BPDU报文结构如下。无论是域内的MST BPDU还是域间的MST BPDU,前36个字节和RST BPDU相同。从第37个字节开始是MSTP专用字段。最后的MSTI配置信息字段由若干MSTI配置信息组连缀而成。这里的CIST相当于RSTP中的单生成树
MSTP BPDU报文格式可配置功能
目前MSTP的BPDU报文存在两种格式:
(1)dot1s:IEEE802.1s规定的报文格式。
(2)legacy:华为私有协议报文格式。
如果端口收发报文格式为缺省支持dot1s或者legacy,这样就存在一个缺点:需要人工识别对端的BPDU报文格式,然后手工配置命令来决定支持哪种格式。
华为采用的端口收发MSTP报文格式可配置(stpcompliance)功能,支持自动识别(auto)模式,这样就能够实现对BPDU报文格式的自适应。在自适应的情况下,接口初始支持dot1s格式,收到报文后,格式则和收到的报文格式保持一致。
MSTP配置
华为S系列交换机的MSTP相关参数缺省配置
MSTP基本功能主要配置任务
MSTP可以把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立,实现不同VLAN流量的分离,达到网络负载均衡的目的。
通过给交换设备配置MSTP的工作模式、配置域并激活后,启动MSTP,MSTP便开始进行生成树计算,将网络修剪成树状,破坏环路。如需认为干预生成树计算结果,可进行手工配置:手动配置指定根桥和备份根桥设备,配置交换设备在指定生成树实例中的优先级数值,配置端口在指定生成树实例中的路径开销数值,配置端口在指定生成树实例中的优先级数值。
1、配置MSTP工作模式
就是指定交换设备工作在MSTP协议下。MSTP兼容STP和RSTP,缺省情况下,交换设备的工作模式为MSTP。因为STP和MSTP不能互相识别报文,而MSTP和RSTP可以互相识别报文,所以如果设备工作在MSTP工作模式下就会设置所有与运行STP的交换设备直接相连的端口工作在STP模式下,其他端口工作在MSTP模式下,实现运行不同生成树协议的设备之间的互通。
2、配置并激活MST域
MST域是由交换网络中的多台交换设备以及他们之间的网段所构成。这些交换设备启动MSTP后,具有相同域名、相同VLAN到生成树映射配置和相同MSTP修订级别配置,并且物理上直接相连。一个交换网络可以存在多个MST域,用户可以通过MSTP配置命令把多台交换设备划分在同一个MST域内。
3、(可选)配置根桥和备份根桥
4、(可选)配置交换设备在指定生成树实例中的优先级
在一个生成树实例中有且仅有一个根桥,它是该生成树实例的逻辑中心。在进行根桥的选择时,一般会希望选择性能高、网络层次高的交换设备作为根桥。但这样的设备优先级不一定高。
5、(可选)配置端口在指定生成树实例中的路径开销
6、(可选)配置端口在指定生成树实例中的优先级
7、启用MSTP
当交换设备配置MSTP基本功能后,必须使能设备MSTP功能,MSTP相关配置才能生效。
8、配置收敛方式
当生成树的拓扑结构发生改变时,和它建立映射关系的VLAN的转发路径也将发生变化。此时,交换设备的ARP表中与这些VLAN相关的表项也需要更新。根据对ARP表项的处理方式不同,MSTP的收敛方式分为fast和Normal两种:
(1)fast:ARP表将需要更新的表项直接删除。
(2)normal:ARP表中将需要更新的表项快速老化。
MSTP的基本配置思路如下:
(1)在环形网络中,划分MST域,在域中配置不同的MSTI。
(2)为各个MSTI选出其中的一个交换设备作为根桥。
(3)在各个MSTI中计算出其他交换设备到根桥的最短路径,为每个非根桥设备选举一个根端口。
(4)在各个MSTI中通过端口ID为每个连接选举出一个指定端口。
MSTP多进程基本功能及主要配置任务
在二层单接环和二层双接环混合组网环境下,交换设备同时承载二三层业务。为了实现不同的环完成不同的业务,可在该组网上部署MSTP多进程,实现不同环上的生成树协议进行独立计算,互不影响。
(此处不是很明白什么是二层单接环和二层双接环)
如上图网络中,SwitchA、SwitchB和SwitchC之间通过二层链路相连,并同时启动MSTP协议。环上的CE设备只支持STP/RSTP协议并且存在多个接入环,不同的接入环在SwitchA和SwitchB上通过不同的端口接入。
通过网上查询,在华为的资料中看到的是如下的拓扑图:
SwitchA和SwitchB之间的链路也是二层链路,并运行MSTP协议,但SwitchA和SwitchB之间的链路是多接入环的共享链路,它与其他接入环链路的不同在于:共享链路上的端口需要参与多个接入环和多个MSTP进程的计算,这样SwitchA和SwitchB之间的MSTP协议报文就需要能区分是来自哪个进程的MSTP协议报文。
此外,共享链路上的同一个端口同时参与多个MSTP进程的计算,多个MSTP进程中都会计算出端口状态,这样端口就可能同时存在多个状态,从而无法决定采用哪个生成树的状态。要注意的是,虽然共享链路上的端口参与了多个MSTP进程的状态计算,但是该共享链路只具有MSTP进程0的状态,不会影响其他MSTP进程。
MSTP的多进程功能实现了各个环之间的MSTP独立运行,每个MSTP进程可以管理设备上的部分端口,即设备的二层端口资源被多个MSTP进程分割管理,每个MSTP进程上都运行标准的MSTP协议。在配置MSTP多进程基本功能之前,需完成MST域配置并激活。
MSTP多进程下的基本功能配置,需要创建多个MSTP进程,然后在对应进程下为对应的MSTI配置MSTP基本功能,而且必须先完成上面介绍的单进程下的MSTP工作模式和MST域名并激活配置。
(1)创建MSTP进程。进程的ID是识别MSTP多进程的唯一标识。MSTP设备将端口绑定在进程中,设备将以进程为边界进行MSTP协议计算,不在此进程内的端口将不参与此进程的协议计算。需要在与多个接入环相连接的设备上进行MSTP进程创建配置。
(2)配置端口加入MSTP进程。通过将端口加入MSTP进程中,可使其参与MSTP协议计算。使能MSTP功能的设备与接入环相连的链路叫做接入链路,多个接入环公用的链路叫做共享链路。共享链路上的端口需要参与多个接入环和多个MSTP进程的计算,所以需要加入多个MSTP进程。
(3)(可选)配置根桥和备份根桥。可以通过计算自动确定生成树的根桥,也可手动配置设备为指定MSTP进程下的指定MSTI配置根桥或备份根桥。
(4)(可选)配置交换设备在指定生成树实例中的优先级。可以为各交换设备配置在指定MSTP进程下的指定MSTI中的桥优先级,以便参与在指定MSTI中的根桥选举。
(5)(可选)配置端口在指定生成树实例中的路径开销。同样可以为各运行MSTP协议的端口配置在指定MSTP进程下的指定MSTI中的路径开销,以便参与在指定MSTI中的根端口的选举。
(6)(可选)配置端口在指定生成树实例中的优先级。为各运行MSTP协议的端口配置在指定MSTP进程下的指定MSTI中的优先级值,以便参与在指定MSTI中的指定端口的选举。
(7)配置MSTP多进程的TC通告功能。配置MSTP多进程的TC通告功能后,当前MSTP进程在收到TC报文后,能够及时通告给其他指定MSTP进程中的实例,以便使其及时刷新MAC表项和ARP表项,从而保证业务不中断。这需要在与接入环相连接的设备上进行配置。
(8)启用MSTP。当交换设备配置MSTP多进程基本功能后,必须在指定进程视图下使能MSTP功能,该进程的MSTP相关配置才能生效。
配置影响MSTP拓扑收敛的参数
配置参数前,需完成MSTP基本功能配置。整个影响MSTP拓扑收敛的参数配置,主要也是网络直径、超时时间、定时器、影响带宽的最大连接数、端口的链路类型、端口的最大发送速率、执行MCheck操作、边缘端口和BPDU报文过滤功能等,与RSTP中的配置不同的只是原来在系统视图中的配置现在需要在对应的MSTP进程视图下进行配置,除了在全局模式下配置边缘端口和BPDU报文过滤功能。
配置影响MSTP拓扑收敛的参数
配置参数前,需完成MSTP基本功能配置。整个影响MSTP拓扑收敛的参数配置,主要也是网络直径、超时时间、定时器、影响带宽的最大连接数、端口的链路类型、端口的最大发送速率、执行MCheck操作、边缘端口和BPDU报文过滤功能等,与RSTP中的配置不同的只是原来在系统视图中的配置现在需要在对应的MSTP进程视图下进行配置,除了在全局模式下配置边缘端口和BPDU报文过滤功能。
MSTP功能配置示例
如下图拓扑结构,SwitchA、B、C、D都运行MSTP。彼此相连形成了一个环网,因为在SwitchA与SwitchB之间,以及SwitchC与SwitchD之间都存在冗余链路。为实现VLAN2~VLAN10和VLAN11~VLAN20的流量负载分担,采用MSTP协议配置了两个MSTI,即MSTI1和MSTI2。
配置思路
(1)在四台交换机创建一个相同的MST域,然后在这个MST域中创建两个MSTI(1和2),生成树拓扑如上图右边,把ID号为2~10的VLAN映射到MSTI1中,把ID号为11~20的VLAN映射到MSTI2中。
(2)为了实现两个MSTI无二层环路,在MSTI1中阻塞了SwitchD上的GE0/0/2端口,在MSTI2中阻塞了SwitchC上的GE0/0/2端口。
(3)配置MSTI的根桥为SwitchA,MSTI2的根桥为SwitchB,这样就实现了MSTI1中的VLAN2~VLAN10和MSTI2中的VLAN11~VLAN20的流量通过上行两条链路进行负载分担。
(4)最后在这台交换机上启用了MSTP协议,使以上配置生效。
(5)为了确保两个MSTI中的根桥不会发生变化,分别在SwitchA和SwitchB两指定端口上配置根保护功能。
(6)在各交换机上创建ID号为2~20的共19 个VLAN,配置各链路间端口的类型,并允许对应的VLAN通过。之所以要把VLAN的创建与配置放在最后,就是为了预防环路的发生,因为如果在启用MSTP协议前创建了这些VLAN,肯定会发生二层环路的,也起不到负载分担的目的。
具体配置步骤
(1)在4台交换机上分别创建一个相同的MST域(域名RG1)、两个多生成树实例MSTI1和MSTI2,然后创建ID为2~10的VLAN映射到MSTI1的映射,创建ID为11~20的VLAN映射到MSTI2的映射,并激活MST域配置。
(2)配置MSTI1与MSTI2的根桥与备份根桥
(3)配置MSTI1和MSTI2中要被阻塞的端口,以便消除二层环路。配置示例MSTI1和MSTI2中将被阻塞的端口(分别为SwitchD中的GE0/0/2和SwitchC中的GE0/0/2)的路径开销值为20000。端口路径开销计算方法采用华为私有方法。
(4)在四台交换机上全局使能MSTP,使以上MSTP配置生效,消除二层环路。
(5)将与终端PC相连的端口去使能MSTP。
(6)在两实例的根桥设备的指定端口上配置根保护功能。
(7)最后在各交换机上创建ID号为2~20的共19个VLAN,然后把四台交换机间的直连链路的端口配置为Trunk类型,并允许这19个VLAN通过。把连接PC的链路端口设置为Access类型,加入对应的VLAN。
配置后查看结果: