生成树协议配置与管理STP——3

来源:互联网 发布:软件项目实施方案模板 编辑:程序博客网 时间:2024/06/05 01:03

MSTP基础

    无论STP还是RSTP,都是针对一个完整的交换网络来计算单一生成树的(所以都为单生成树)。这对小型网络是有效的,对于规模比较大,结构比较复杂,特别是多VLAN的交换网络,会使生成树的计算更复杂,甚至无法最终形成一颗无环路的生成树。这就得用到MSTP(Multiple Spanning Tree Protocol,多生成树协议)。

MSTP与RSTP在许多方面是完全一样的,包括主要的5种端口角色、三种端口状态、三种收敛机制、三种定时器,以及影响拓扑收敛的参数配置等,主要区别就在于MSTP可以在一个交换网络中划分多个MST(多生成树)域,在一个MST域中又可以有多个MSTI(多生成树实例)。总体上说,MSTP的基本配置就像RSTP一样,不同的只是与多MST、多MSTI相关的特性了。

一、MSTP产生的背景

RSTP是在STP基础上进行了改进,实现了网络拓扑的快速收敛。RSTP和STP存在同一个缺陷:由于局域网内所有的VLAN共享一颗生成树,因此无法在VLAN间实现数据流量的负载均衡,被阻塞的冗余链路将不承载任何流量,造成带宽浪费,还有可能造成部分VLAN的报文无法转发。

如下图网络中


如果在局域网内应用STP或RSTP,生成树结构在图中用虚线表示,S6为根交换设备。S2和S5之间、S1和S4之间的链路被阻塞,除了图中标注了“VLAN2”或“VLAN3”的链路允许对应的VLAN报文通过外,其他链路均不允许VLAN2、VALN3的报文通过。另外,HostA和HostB同属于VLAN2,由于S1和S4之间以及S2和S5之间的链路被阻塞,S3和S6之间的链路又不允许VLAN2的报文通过,因此HostA和HostB之间无法互相通信。

为了弥补STP和RSTP的缺陷,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,就可以完全解答前面STP和RSTP的问题。在这里可以生成以下两颗生成树,即把网络中的各VLAN划分到两个MSTI中,每个VLAN只能对应一个MSTI,即同一VLAN的数据只能在一个MSTI中传输,而一个MSTI可能对应多个VLAN。但是一个交换机可以位于多个MSTI中。


(1)MSTI1:以S4为根桥(非根桥包括S5、S2、S3),转发VLAN2的报文。

(2)MSTI2:以S6为根桥(非根桥包括S3、S2、S1),转发VLAN3的报文。

S1与S4之间的链路仍是阻塞的,新增了S5与S6之间的链路阻塞。这样所有VLAN内部可以互通,同时不同VLAN的报文沿不同的路径转发,实现了负载分担,如上图中的S3~S6链路负责VLAN3报文的转发,而S2~S5链路负责VLAN2报文的转发。

    二、MSTP基本概念

因为在MSTP网络中可以有多棵生成树实例,就涉及到生成树实例的划分及各生成树实例之间的关系等问题。

1、MSTP网络的层次结构

MSTP不仅涉及多个MSTI(生成树实例),而且还可划分多个MST域(MST Region,也称为MST区域)。总的来说,一个MSTP网络可以包含一个或多MST域,而每个MST域中又可包含一个或多个MSTI。组成每个MSTI的是其中运行STP/RSTP/MSTP的交换设备,是这些交换设备经MSTP协议计算后形成的树状网络。如下图的MSTP网络中划分了3个MST区域,每个区域又包含了3个MSTI。


2、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。


3、MSTI

MSTI(MultipleSpanning Tree Instance,多生成树实例)是指MST域内的生成树。一个MST域内可以通过MSTP生成多棵生成树,各棵生成树之间彼此独立。一个MSTI可以与一个或多个VLAN对应,但一个VLAN只能与一个MSTI对应。

既然是生成树,那就不允许存在环路。以图8-27所示的MSTP网络为例,这个MST域中包括了3个MSTI(图中MSTI0、MSTI1、MSTI2,注意它们的拓扑,总有一个方向的交换机连接是断开的),每个MSTI都没有环路。

再看下图,


这个MST与的交换网络中包括了3个VLAN:VLAN10、VLAN20、VLAN30。这时又该划分成几个MSTI??如果把VLAN10和VLAN20放进一个MSTI中,则所得到的拓扑如图8-29的左图所示,明显存在环路;如果把VLAN10和VLAN30放进一个MSTI中,得到图8-29中间的拓扑,也明显存在环路;同样把VLAN20和VLAN30划分到一个MSTI中,拓扑如8-29的右图,也存在环路。这时只好为每个VLAN单独划分到一个MSTI,得到的每个MSTI拓扑如图8-30所示的3个MSTI,就不存在环路了(虚线代表的是通过MSTP协议配置阻塞的链路)。


    在一般的企业网络中,通常是将支持MSTP的设备全部划分到一个MST域中,而将不支持MSTP的设备划分到另一个MST域中。对于MSTI来说,通常是将具有相同转发路径的VLAN映射到一个MSTI中,以形成一棵独立的生成树。

4、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。

5、IST

IST(InternalSpanning Tree,内部生成树)是各个MST域内部的一棵生成树,是仅针对具体的MST域来计算的。但它是一个特殊的MSTI,其MSTI ID为0,即IST通常称为MSTI0。每个MST域中只有一个IST,包括对应MST域中所有互联的交换机

如下图所示的MSTP网络中(包括了多个MST域)每个MST域内部用细线连接的各交换机就构成了对应MST域中的IST。


6、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协议中对应的端口角色定义完全相同。

与RSTP一样,在MSTP中也是除边缘端口外,其他端口角色都参与MSTP的计算过程。而且同一端口在不同的生成树实例中可以担任不同的角色。如下图:


    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定义的端口状态也与RSTP协议中的定义完全相同,也是根据端口是否转发用户流量、接收/发送BPDU报文,把端口状态划分为3种。

(1)Forwarding状态:转发状态,既转发用户流量又接收/发送BPDU报文。

(2)Learning状态:学习状态,不转发用户流量,只接收/发送BPDU报文

(3)Discarding状态:丢弃状态,只接收BPDU报文,不转发报文。

与RSTP中的端口状态一样,MSTP的端口状态和端口角色是没有必然联系的。


五、MSTP拓扑计算原理

MSTP将整个二层网络划分为多个MST域,把每个域视为一个节点。各个MST域之间按照STP或者RSTP协议算法进行计算并生成CST(是单生成树);在一个MST域内则是通过MSTP协议算法计算生成若干个MSTI(是多生成树),其中示例0被称为IST。MSTP使用MST BPDU(MultipleSpanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。

1、MSTP向量优先级

MSTI和CIST拓扑都是根据优先级向量来计算的,这些优先级向量信息都包含在MST BPDU中。各交换机互相交换MST BPDU来生成MSTI和CIST。

参与CIST计算的优先级向量按优先级别从高到低依次是根桥ID、外部路径开销、域根ID、内部路径开销指定桥ID、指定端口ID、接收端口ID;参与MSTI计算的优先级向量按优先级别从高到低依次是域根ID、内部路径开销、指定桥ID、指定端口ID、接收端口ID。


同一类向量比较时,值最小的向量具有最高优先级。比较规则如下:

(1)首先,比较根桥ID。

(2)如果根桥ID相同,再比较外部路径开销。

(3)如果外部路径开销相同,再比较域根ID。

(4)如果域根ID仍然相同,再比较内部路径开销

(5)如果内部路径仍然相同,再比较指定桥ID。

(6)如果指定桥ID仍然相同,再比较指定端口ID。

(7)如果指定端口ID还相同,再比较接收端口ID。

如果端口接收到的BPDU内包含的配置信息优于端口上保存的配置消息,则端口上原来保存的配置消息被新收到的配置消息替代。端口同时更新交换机保存的全局配置消息。反之,新收到的BPDU被丢弃。

2、CIST的计算

经过配置消息比较后,首先在整个网络中选择一个优先级最高的交换机作为CIST的树根,然后在每个MST域内通过MSTP协议算法计算生成IST;同时MSTP将每个MST域作为单台交换机对待,通过STP或RSTP协议算法在MST域间计算生成CST。CST和IST构成了整个交换机网络的CIST。

3、MSTI的计算

在MST域内,MSTP根据VLAN和生成树实例的映射关系,针对不同的VLAN生成不同的生成树实例。MSTI具有以下的特点:

(1)每个MSTI独立计算自己的生成树,互不干扰。

(2)每个MSTI的生成树计算方法与RSTP基本相同。

(3)每个MSTI的生成树可以有不同的根,不同的拓扑。

(4)每个MSTI在自己的生成树内发送BPDU

(5)每个MSTI的拓扑通过命令配置决定(不是自动生成的)。

(6)每个端口在不同MSTI上的生成树参数可以不同。

(7)每个端口在不同MSTI上的角色、状态可以不同。

4、MSTI生成树算法实现

在一开始,每台交换机的各个端口会生成以自身交换机为根桥的配置消息,其中根路径开销为0,指定桥ID为自身交换机ID,指定端口为本端口。每台交换机都向外发送自己的配置消息,并在接收到其他配置消息后进行如下处理:

(1)当端口收到比自身的配置消息优先级低的配置消息时,交换机把接收到的而消息丢弃,对该端口的配置消息不做任何处理。

(2)当端口收到比本端口配置消息优先级高的配置消息时,交换机把接收到的配置消息中的内容替换该端口的配置消息中的内容;然后交换机将该端口的配置消息和交换机上的其他端口的配置消息进行比较,选出最优的配置消息。

计算生成树的步骤如下:

(1)选举根桥。此步是通过比较所有交换机发送的配置消息的树根ID,树根ID值最小的交换机为CIST根桥,或者MST域根桥。

(2)选举非根桥上的根端口。每台非根桥把接收到最优配置消息的那个端口定为自身交换机的根端口。

(3)选举指定端口。在这一步又分为以下两个子步骤:

首先,交换机根据根端口的配置消息和根端口的路径开销,为每个端口计算一个标准的指定端口配置消息:用树根ID替换为根端口配置消息中的树根ID;用根路径开销替换为根端口配置消息中的根路径开销加上根端口的路径开销;用指定桥ID替换为自身交换机的ID;用指定端口ID替换为自身端口ID。

然后交换机对以上规则计算出来的配置消息和对应端口上原来的配置消息进行比较。如果端口上原来的配置消息更优,则交换机将此端口阻塞,端口的配置消息不变,并且此端口将不再转发数据,只接收配置消息(相当于根端口);如果通过以上替换计算出来的配置消息比端口上原来的配置消息更优,则交换机就将该端口设置为指定端口,端口上的配置消息替换成通过以上替换计算出来的配置消息,并周期性向外发送。

(4)在MSTI生成树拓扑收敛后,无论非根桥是否接收到根桥传来的信息都按照Hello 定时器周期性发送BPDU。如果一个端口连续3个Hello时间(这是个缺省的设置)接收不到指定桥(也就是它所连接的上一级交换机)送来的BPDU,那么该交换机认为与此邻居之间的链路失败。

5、MSTP对拓扑变化的处理

在MSTP中检测拓扑是否发生了变化的标准是根据一个非边缘端口的状态是否迁移到Forwarding状态,如果是迁移到了Forwarding状态,则会发生拓扑变化。

交换机一旦检测到拓扑发生变化,进行如下处理:

(1)为本交换机的所有非边缘指定端口启动一个TC While Timer(该计时器值是Hello Time的两倍),并在这个时间内,清空这些端口上学来的MAC地址。如果是根端口上有状态变化,则启动根端口。

(2)发送状态变化的这些端口向外发送TC BPDU,其中的TC置位,直到TC While Timer超时。根端口总是要发送这种TC BPDU。

其他交换机接收到TC BPDU,进行如下处理

(1)清空所有端口学来的MAC地址,收到TC BPDU的端口除外。

(2)为所有自己的非边缘指定端口和自己的根端口启动TC While计时器,重复上述过程。

六、MSTP BPDU报文

MSTP使用MST BPDU(MultipleSpanning Tree Bridge Protocol Data Unit,多生成树桥协议数据单元)作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。

STP中定义的配置BPDU、RSTP中定义的RST BPDU、MSTP中定义的MST BPDU及TCN BPDU在版本号和类型值方面的比较:


    1、MSTP BPDU报文格式

   MST BPDU报文结构如下。无论是域内的MST BPDU还是域间的MST BPDU,前36个字节和RST BPDU相同。从第37个字节开始是MSTP专用字段。最后的MSTI配置信息字段由若干MSTI配置信息组连缀而成。这里的CIST相当于RSTP中的单生成树。




2、MSTP BPDU报文格式可配置功能

目前MSTP的BPDU报文存在两种格式:

(1)dot1s:IEEE802.1s规定的报文格式。

(2)legacy:华为私有协议报文格式。

如果端口收发报文格式为缺省支持dot1s或者legacy,这样就存在一个缺点:需要人工识别对端的BPDU报文格式,然后手工配置命令来决定支持哪种格式。

华为采用的端口收发MSTP报文格式可配置(stpcompliance)功能,支持自动识别(auto)模式,这样就能够实现对BPDU报文格式的自适应。在自适应的情况下,接口初始支持dot1s格式,收到报文后,格式则和收到的报文格式保持一致。

3、每个Hello Time时间内端口最多能发送BPDU的报文数可配置功能

Hello Time定时器用于生成树协议定时发送配置消息维护生成树的稳定。如果交换设备在一段时间内没有收到BPDU报文,则会由于超时而对生成树进行重新计算。当交换设备成为根交换设备时,该交换设备会以该该设置值为时间间隔发送BPDU报文。非根交换设备采用根交换设备所设置的Hello Time时间值。