之前我们也做过STP实验以及STP的原理,以及RSTP的实验与原理讲解。我们经过之前的讲解可以看出STP确实从根本上解决了网络环路所带来的问题,RSTP在一定程度上通过引入P/A机制缩短了收敛时间,但是我们也说过,由于局域网内所有的Vlan共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡。
为了解决局域网内所有的VLAN共享一棵生成树,无法在VLAN间实现数据流量的负载均衡的问题所以我们又引入了截止今日所普遍常用的MSTP(Multiple Spanning Tree Protocol)多生成树协议。
今天我们正式进入STP的完结篇,也提前恭喜坚持学习STP知识的小伙伴准备毕业了!!!!!!!
我们今天就带着最后的问题进行学习吧。
MSTP是什么?
MSTP(Multiple Spanning Tree Protocol)模式即多生成树协议,它增加了实例和VLAN映射的概念。SSTP模式和RSTP模式均可以当作MSTP模式的一种特例,即只存在一个实例0的情况。MSTP模式还提供了VIL.AN环境的快速聚合和负载均衡。
为什么引入MSTP?
RSTP和STP还存在同一个缺陷:由于局域网内所有的VLAN共享一棵生成树,因此无法在VLAN间实现数据流量的负载均衡。另外,链路被阻塞后将不承载任何流量,造成了资源、带宽浪费,还有可能造成部分VLAN的报文无法转发和次优二层路径问题。为此,引入了MSTP,用以解决上述问题。
如下所示:
如图所示网络中,生成树结构在图中用虚线表示,所有链路开销相同,BID大小S6<S5<S4<S3<S2<S1。经RSTP计算,S6为根交换设备,S2和S5之间、S1和S4之间的链路被阻塞。HostA和B同属于VLAN2,由于S2和S5之间的链路被阻塞,S3和S6之间的链路又不允许VLAN2的报文通过,因此HostA和HostB之间无法互相通讯。 MSTP有什么作用? MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,每个生成树对应着多个结构相同的VLAN,生成树之间彼此独立。 每个域叫做一个MST域;每棵生成树叫做一个多生成树实例MSTI;VLAN与MSTI的对应关系叫做VLAN映射表。 如下图所示:
如图所示,MSTP通过设置VLAN映射表,把VLAN和MSTI联系起来。每个VLAN只能对应一个MSTI(即同一VLAN的数据只能在一个MSTI中传输),而一个MSTI可能对应多个VLAN。经计算,最终生成两棵生成树:MSTI1以S4为根,转发VLAN2的报文;MSTI2以S6为根,转发VLAN3的报文。这样,不同VLAN的报文沿不同的路径转发,实现了负载分担,同时,解决了VLAN2内主机A和主机B的不互通问题。 MSTP中名词的概念: MST域、MSTI、VLAN映射表 MST域,由交换网络中的多台交换设备以及它们之间的网段构成。同一个MST域的设备具有以下特点:均使能MSTP,有相同的域名、有相同的修订级别、有相同的VLAN映射表。 多生成树实例MSTI,可以看成是多个拓扑结构相同的VLAN的一个集合。通过将多个结构相同的VLAN捆绑到一个MSTI,即把多个相同拓扑结构的VLAN映射到一个实例里,可以节省通信开销和资源占用率。MSTI的计算相互独立,在这些实例上可以实现负载均衡。 VLAN映射表,即VLAN和MSTI的对应关系。一个VLAN只能对应一个MSTI(即同一VLAN的数据只能在一个MSTI中传输),一个MSTI可能对应多个拓扑结构相同的VLAN。
CST、IST、CIST、总根、域根、主桥
CST:公共生成树,连接所有MST域的一棵生成树。它将每个MST域看成是一个交换机,通过STP或RSTP协议计算生成的一棵生成树。 IST:内部生成树,是各MST域内的一棵生成树。它是一个特殊的MSTI:MSTI的ID为0;无论有没有配置,IST都是存在的;所有VLAN默认都映射到IST实例。 CIST:所有MST域内的IST加上CST就构成了CIST。 总根:即CIST的根交换机。在整个网络中,每台交换机都有IST,IST中BID最小的交换机就是总根。
域根:分为IST域根和MSTI域根。IST域根,是指IST中距离总根最近(域间)的交换设备;MSTI域根,是每个生成树实例MSTI的树根,即每个MSTI中BID最小的交换设备。 主桥:每个MST域各一个,是MST域内距离总根最近(这里的“最近”是仅考虑区域间路径而言的)的交换设备。因此,每个MST域中,主桥就是该MST域的IST域根。 *IST域根,并不是BID最小的,而是距离总根最近的(域间).在各MST域中,IST域根、主桥,二者是同一设备。 MSTP端口角色: MSTP在RSTP的基础上新增了2种端口角色,MSTP的端口角色共有7种:RP、DP、AP、BP、EP、域边缘端口和Master端口。前5种与RSTP中的定义一致。 域边缘端口:位于MST域的边缘并连接其它MST域的端口。 Master端口:主桥上距离总根最近的端口(即主桥上CIST的RP端口)。
Master端口解读: 【Master端口,是一种特殊的域边缘端口。特殊,是因为它是MST域中的报文去往总根的必经之路(最近),也是唯一出口。 Master端口,在CIST上的角色是RP端口,MST域中,在各MSTI的角色都是Master端口。】 MSTP与RSTP的端口状态是一样的。
MSTP报文:
MSTP使用多生成树桥接协议数据单元MST BPDU作为生成树计算的依据。MST BPDU报文用来计算生成树的拓扑、维护网络拓扑以及传达拓扑变化记录。
MSTP二层网络中,一个MST域中可以定义多个MSTI,但所有自定义的MSTI和IST实例共用一批MST BPDU来进行生成树的计算,通过这批MST BPDU的交互完成所有树的收敛。
MST BPDU报文格式
目前,MSTP的报文存在两种格式: dot1s:IEEE802.1S规定的报文格式 legacy:私有协议报文格式 华为采用的是端口收发MSTP报文格式可配置功能(stp compliance),能够实现对BPDU报文格式的自适应。
在IEEE802.1S规定的报文格式(dot1s)中,除MST专有字段外,其它字段与RST BPDU类似。某些类似字段: CIST RID:表示总根。 CIST ERPC:CIST外部路径开销,表示发送此BPDU的网桥所属的域距离总根所属的域的CST路径开销。 CIST Region Root ID:表示IST域根的ID(也即主桥的ID)。如果把一个MST域看成是一个交换设备,用IST域根代表一个MST域,则CIST Region Root ID与RST BPDU中的BID类似。 CIST PID:表示MST BPDU的发送端口ID。
某些MST专有字段: MST Configuration ID:MST配置标识,表示MST域的标识信息。共包括4个字段,只有4个字段全相同并且互联的交换设备才被认为是在同一MST域中。Format Selector固定为0,Config Digest(配置摘要)是利用MD5算法把MST配置表(即VLAN映射表)加密成摘要信息。 CIST IRPC:CIST内部路径开销,表示从本端口到IST域根(即主桥)的路径开销。 CIST BID:发送此MST BPDU的交换机BID。
MSTI Configuration Messages:MSTI配置信息。每个MSTI的配置信息占16B,总大小为16B*n。每个MSTI包含有6个字段: MSTI Flags:新增Master标志位取代了TCA位,表示该交换设备是否为主桥。 MSTI Region Root ID:表示MSTI域根。 MSTI IRPC:MSTI内部路径开销,表示从本端口到MSTI域根的路径开销。 MSTI Bridge Pri:交换机在此MSTI中的优先级。 MSTI Port Pri:端口在此MSTI中的优先级。 MSTI 剩余跳数:BPDU报文在MSTI中的剩余跳数。
MSTP拓扑计算过程:
MSTP通过交互MST BPDU进行MSTP拓扑计算。MSTP拓扑计算过程可分为2大部分:CIST的计算和MSTI的计算。具体过程如下: (1)先选出总根,即CIST根桥。 (2)在每个MST域中选出IST域根,即主桥。 (3)在IST域根(即主桥)上选出RP端口,即主桥在CIST上的RP端口。 (4)计算出MST域间链路的DP和AP/BP端口。 (5)在每个MST域中,IST和MST上计算出相应角色的端口。
优先级向量及比较规则: CIST和MSTI都是根据优先级向量来计算的,而这些优先级向量信息都包含在MST BPDU中。各交换设备通过交互MST BPDU来生成MSTI和CIST。 参与CIST计算的优先级向量:{总根ID、ERPC、IST域根ID、IRPC、发送者ID、发送端口ID、接收端口ID}。 参与MSTI计算的优先级向量:{MSTI域根ID、IRPC、发送者ID、发送端口ID、接收端口ID}。 比较规则如下: 依次比较优先级向量内部的各个变量,值越小优先级越高,值相同比较下一个变量。 如果接口收到的BPDU优于接口缓存的BPDU,则接口缓存的BPDU被替换,同时,更新交换设备保存的全局BPDU;反之,新收到的BPDU被丢弃。 MSTI的特点: 每个MSTI独立计算自己的生成树,互不干扰。 每个MSTI的生成树可以有不同的树根,不同的拓扑。 每个MSTI在自己的生成树内发送MST BPDU,进行维护。 每个MSTI的拓扑通过命令配置决定。 每个端口在不同MSTI上的生成树参数可以不同。 每个端口在不同MSTI上的角色、状态可以不同。 另外需要注意的是,在运行MSTP协议的网络中,一个VLAN报文将沿着如下路径转发:在MST域内,沿着其对应的MSTI转发,在MST域间沿着CST转发。 我们以下图为案例进行分析: 已知交换机BID:SW1<SW2<SW3…<SW10,则CIST实例拓扑计算过程如下:
第一,选举CIST根桥。BID最小的交换机就是CIST的根桥,即总根。启动时,10台交换机都认为自己既是CIST根桥,同时也是域内主桥,所有端口都是DP/Discarding,所以开始向外发送自己的BPDU。例如SW1中,参与CIST拓扑计算的优先级向量是{SW1,0,SW1,0,SW1,X}。所有交换机产生的BPDU经过比较后,最终SW1因在实例0中的BID最小而成为CIST的根桥,同时也是region1的主桥。 第二,选举MST域内主桥。依次比较外部路径开销ERPC和BID,较小者优选。在region1中主桥就是SW1(总根也是所在MST域的主桥),首先根据定义主桥一定是边界交换机,依据比较选举规则,在region2中主桥是SW4,在region3中主桥是SW7。如果把SW2-SW4之间的链路成本加倍,这时在region2中SW4和SW6到CIST根桥所在域的ERPC是一样的,继续比较BID,由于SW4小于SW6,所以SW4是region2的主桥。 第三,在每个MST域中,选出IST域根(即主桥)的RP端口。依次比较ERPC、指定交换机ID、指定端口ID和接收端口ID,较小者优选。如下图所示,新增2条链路。这时,主桥SW4上RP端口选举,ERPC相同,指定交换机SW2<SW3,再比较指定端口ID,则优选e0/0/2口为RP端口。 第四,计算出MST域间链路的DP和AP/BP端口。依次比较ERPC、指定交换机ID和指定端口ID,较小者优选。总根所在MST域的边界交换机上的对外端口都是DP端口(不考虑自环而致的BP端口),所以SW2和SW3上的对外端口都是DP端口;SW6和SW8间的互连链路的两个端口,ERPC相同,由于SW6<SW8,所以优选SW6上的e0/0/1口为DP端口,而SW8上的为AP端口。 第五,在每个MST域内,计算IST和MSTI的拓扑。(与STP类似) ——————————————————————–
大家可以根据下面的拓扑思考一下下面的案例: 案例思考: 如图,SW1是CIST的根桥,BID:SW1<SW4<SW11<SW22<SW33<SW44。请分析SW4访问SW1的路径。
与上一个案例的分析过程类似,最终得出:SW1是CIST根桥(即总根),SW4的e0/0/2口是RP端口,e0/0/1口是AP端口。
——————————————————————–
多区域案例分析:
多区域的问题:多区域会造成区域间流量没有负载分担能力,及可能存在次优路径,如非必要,尽量使用单区域去设计生成树。
区域之间主桥上的RP口是唯一出口
如图所示,公司有4台交换设备,核心层设备SW1和SW2处在区域1,汇聚层设备SW3和SW4处在区域2中,交换机彼此之间全互连。Vlan和实例的映射关系如图所示。其中,BID关系:SW1<SW2<SW3<SW4。分析核心层和汇聚层的访问链路;如果4台设备在同一区域会如何? 分析过程: 首先,很容易看出:SW1是CIST的根桥,也是region1的主桥,SW3是region2的主桥。 其次,SW3 G0/2口收到的BPDU{SW1,0,SW1,0,SW2,G0/2},SW3 G0/3口收到BPDU{SW1,0,SW1,0,SW1,G0/3},经计算,依次比较ERPC(均为10),指定交换机ID(SW1<SW2),得出G0/3口是RP端口。由于区域之间主桥上的RP口是唯一出口,所以两个区域间的其它链路被阻塞,即SW3 G0/2口,SW4的对外两个端口都是AP。 所以,核心层和汇聚层的访问链路就是SW1和SW3之间的G0/3接口链路。 若配置多区域,区域间互访仅一条互通链路,没有负载分担能力,流量集中在单根链路上容易形成瓶颈。比如此例中,SW1-SW3链路是2个区域间的唯一互访路径。 而配置单区域,上下两部分互访时,可能存在多条互通链路。比如,若SW1是根桥,则上下两部分互访时可通过SW1-SW3和SW1-SW4这两条链路。 若配置多区域,区域间互访时流量一定经过主桥,可能存在次优路径。比如,PC4访问PC2,流量访问路径是SW4-SW3-SW1-SW2(次优路径)。而配置单区域,访问路径是SW4-SW1-SW2,优于多区域时的访问路径。 MSTP的快速收敛机制:
MSTP支持普通P/A机制和增强P/A机制。其中,普通P/A机制与RSTP中的P/A机制相同。增强P/A机制,是在普通P/A机制的基础上,改变下游根端口进入Forwarding状态的条件。普通P/A机制中,下游根端口是当同步过程完成后(所有其他端口的synced置位后根端口的synced置位),进入Forwarding状态;增强P/A机制中,上游交换机(DP)主动发送Agreement使下游根端口进入转发Forwarding状态。
所以增强型的P/A机制为: 1.上游设备发送Proposal报文,请求进行快速迁移。下游设备接收到后,若与上游设备相连的端口被设置为根端口,则阻塞所有非边缘端口。 2.上游设备继续发送Agreement报文。下游设备接收到后,根端口转为Forwarding。 3.下游设备回应Agreement报文。上游设备接收到后,把与下游设备相连的端口设置为指定端口,并立即进入Forwarding状态。 备注:缺省情况下,华为设备使用增强型PA机制。如果华为设备与使用普通P/A机制的厂商设备进行互通,需要在华为设备上配置命令“stp no-agreement-check”使其转变为普通P/A机制。 还是那句话STP知识点比较多,所以要学习就需要耐心去学习,不明白的就先去看之前发的STP、RSTP的分享贴,以上就是MSTP的知识,以案例为基础,大家可以自行根据我的叙述进行研究,思考一下中间留下的案例是否你的思路跟答案一致。
|