组⽹图形MSTP简介
以太⽹交换⽹络中为了进⾏链路备份,提⾼⽹络可靠性,通常会使⽤冗余链路。但是使⽤冗余链路会在交换⽹络上产⽣环路,引发⼴播风暴以及MAC地址表不稳定等故障现象,从⽽导致⽤户通信质量较差,甚⾄通信中断。为解决交换⽹络中的环路问题,提出了⽣成树协议STP(Spanning Tree Protocol)。STP(Spanning Tree Protocol)是⽤来解决⽹络中环路问题的协议。运⾏该协议的设备通过彼此交互信息⽽发现⽹络中的环路,并对某些端⼝进⾏阻塞以消除环路。
与众多协议的发展过程⼀样,⽣成树协议也是随着⽹络的发展⽽不断更新的,从最初的IEEE 802.1D中定义的STP到IEEE 802.1W中定义的快速⽣成树协议RSTP(Rapid Spanning Tree Protocol),再到最新的IEEE 802.1S中定义的多⽣成树协议MSTP(MultipleSpanning Tree Protocol)。
⽣成树协议中,MSTP兼容RSTP、STP,RSTP兼容STP。三种⽣成树协议的⽐较如表1所⽰。
表1 三种⽣成树协议的⽐较⽣成树协议STP特点形成⼀棵⽆环路的树,解决⼴播风暴并实现冗余备份。收敛速度较慢。RSTP()形成⼀棵⽆环路的树,解决⼴播风暴并实现冗余备份。收敛速度快。形成多棵⽆环路的树,解决⼴播风暴并实现冗余备份。收敛速度快。多棵⽣成树在VLAN间实现负载均衡,不同VLAN的流量按照不同的路径转发。需要区分⽤户或业务流量,并实现负载分担。不同的VLAN通过不同的⽣成树转发流量,每棵⽣成树之间相互独⽴。应⽤场景⽆需区分⽤户或业务流量,所有VLAN共享⼀棵⽣成树。MSTP组⽹需求
在⼀个复杂的⽹络中,由于冗余备份的需要,⽹络规划者⼀般都倾向于在设备之间部署多条物理链路,其中⼀条作为主⽤链路,其他作为备份链路。这样就难免会形成环路,若⽹络中存在环路,可能会引起⼴播风暴和MAC表项被破坏。为此,可以在⽹络中部署MSTP协议预防环路。MSTP可阻塞⼆层⽹络中的冗余链路,将⽹络修剪成树状,达到消除环路的⽬的。
如图1所⽰,SwitchA、SwitchB、SwitchC和SwitchD都运⾏MSTP。为实现VLAN2~VLAN10和VLAN11~VLAN20的流量负载分担,MSTP引⼊了多实例。MSTP可设置VLAN映射表,把VLAN和⽣成树实例相关联。配置思路
在处于环形⽹络中的交换设备上配置MSTP基本功能。
配置保护功能,实现对设备或链路的保护。例如:在各实例的根桥设备指定端⼝配置根保护功能。配置设备的⼆层转发功能。
说明:
设备配置根保护功能后,如果根桥和备份根桥之间的链路down了,则配置根保护的端⼝状态会因为根保护功能⽣效直接变成discarding状态。为了提⾼可靠性,建议根桥和备份根桥之间的链路绑定Eth-Trunk。
操作步骤
配置MSTP基本功能
a.配置SwitchA、SwitchB、SwitchC和SwitchD到域名为RG1的域内,创建实例MSTI1和实例MSTI2 # 配置实例1的根桥SwitchA的MST域。
1 3 [SwitchA] stp region-configuration 4 [SwitchA-mst-region] region-name RG1 //配置域名为RG1。 5 [SwitchA-mst-region] instance 1 vlan 2 to 10 //将VLAN 2⾄VLAN 10映射到实例1上。6 [SwitchA-mst-region] instance 2 vlan 11 to 20 //将VLAN 11⾄VLAN 20映射到实例2上。7 [SwitchA-mst-region] active region-configuration //激活MST域的配置。8 [SwitchA-mst-region] quit # 配置实例2的根桥SwitchB的MST域。 1 3 [SwitchB] stp region-configuration 4 [SwitchB-mst-region] region-name RG1 //配置域名为RG1。 5 [SwitchB-mst-region] instance 1 vlan 2 to 10 //将VLAN 2⾄VLAN 10映射到实例1上。6 [SwitchB-mst-region] instance 2 vlan 11 to 20 //将VLAN 11⾄VLAN 20映射到实例2上。7 [SwitchB-mst-region] active region-configuration //激活MST域的配置。8 [SwitchB-mst-region] quit # 配置接⼊交换机SwitchC的MST域。 1 4 [SwitchC-mst-region] region-name RG1 //配置域名为RG1。 5 [SwitchC-mst-region] instance 1 vlan 2 to 10 //将VLAN 2⾄VLAN 10映射到实例1上。6 [SwitchC-mst-region] instance 2 vlan 11 to 20 //将VLAN 11⾄VLAN 20映射到实例2上。7 [SwitchC-mst-region] active region-configuration //激活MST域的配置。8 [SwitchC-mst-region] quit # 配置接⼊交换机SwitchD的MST域。 1 4 [SwitchD-mst-region] region-name RG1 //配置域名为RG1。 5 [SwitchD-mst-region] instance 1 vlan 2 to 10 //将VLAN 2⾄VLAN 10映射到实例1上。6 [SwitchD-mst-region] instance 2 vlan 11 to 20 //将VLAN 11⾄VLAN 20映射到实例2上。7 [SwitchD-mst-region] active region-configuration //激活MST域的配置。8 [SwitchD-mst-region] quit b.在域RG1内,配置MSTI1与MSTI2的根桥与备份根桥 配置MSTI1的根桥与备份根桥 # 配置SwitchA为MSTI1的根桥。 1 [SwitchA] stp instance 1 root primary # 配置SwitchB为MSTI1的备份根桥。 1 [SwitchB] stp instance 1 root secondary 配置MSTI2的根桥与备份根桥 # 配置SwitchB为MSTI2的根桥。 1 [SwitchB] stp instance 2 root primary # 配置SwitchA为MSTI2的备份根桥。 1 [SwitchA] stp instance 2 root secondary c.配置实例MSTI1和MSTI2中将要被阻塞端⼝的路径开销值⼤于缺省值 说明: •端⼝路径开销值取值范围由路径开销计算⽅法决定,这⾥选择使⽤华为计算⽅法为例,配置实例MSTI1和MSTI2中将被阻塞端⼝的路径开销值为20000。•同⼀⽹络内所有交换设备的端⼝路径开销应使⽤相同的计算⽅法。 # 配置实例1的根桥SwitchA的端⼝路径开销。 1 [SwitchA] stp pathcost-standard legacy # 配置实例2的根桥SwitchB的端⼝路径开销。 1 [SwitchB] stp pathcost-standard legacy # 配置接⼊交换机SwitchC的端⼝路径开销,将端⼝GE0/0/2在实例MSTI2中的路径开销值配置为20000。 1 [SwitchC] stp pathcost-standard legacy2 [SwitchC] interface gigabitethernet 0/0/2 3 [SwitchC-GigabitEthernet0/0/2] stp instance 2 cost 200004 [SwitchC-GigabitEthernet0/0/2] quit # 配置接⼊交换机SwitchD的端⼝路径开销,将端⼝GE0/0/2在实例MSTI1中的路径开销值配置为20000。 1 [SwitchD] stp pathcost-standard legacy2 [SwitchD] interface gigabitethernet 0/0/2 3 [SwitchD-GigabitEthernet0/0/2] stp instance 1 cost 200004 [SwitchD-GigabitEthernet0/0/2] quit d.使能MSTP,实现破除环路 设备全局使能MSTP # 在SwitchA/B/C/D上启动MSTP。 1 [SwitchA] stp enable2 3 [SwitchB] stp enable4 5 [SwitchC] stp enable6 7 [SwitchD] stp enable 将与终端相连的端⼝设置为边缘端⼝并使能端⼝的BPDU报⽂过滤功能 # 配置SwitchC端⼝GE0/0/1设置为边缘端⼝并使能端⼝的BPDU报⽂过滤功能。 1 [SwitchC] interface gigabitethernet 0/0/1 2 [SwitchC-GigabitEthernet0/0/1] stp edged-port enable3 [SwitchC-GigabitEthernet0/0/1] stp bpdu-filter enable4 [SwitchC-GigabitEthernet0/0/1] quit # 配置SwitchD端⼝GE0/0/1设置为边缘端⼝并使能端⼝的BPDU报⽂过滤功能。 1 [SwitchD] interface gigabitethernet 0/0/1 2 [SwitchD-GigabitEthernet0/0/1] stp edged-port enable3 [SwitchD-GigabitEthernet0/0/1] stp bpdu-filter enable4 [SwitchD-GigabitEthernet0/0/1] quit 配置保护功能,如在各实例的根桥设备的指定端⼝配置根保护功能 # 在实例1根桥SwitchA端⼝GE0/0/1上启动根保护。 1 [SwitchA] interface gigabitethernet 0/0/1 2 [SwitchA-GigabitEthernet0/0/1] stp root-protection3 [SwitchA-GigabitEthernet0/0/1] quit # 在实例2根桥SwitchB端⼝GE0/0/1上启动根保护。 1 [SwitchB] interface gigabitethernet 0/0/1 2 [SwitchB-GigabitEthernet0/0/1] stp root-protection3 [SwitchB-GigabitEthernet0/0/1] quit 配置处于环⽹中的设备的⼆层转发功能 在交换设备SwitchA、SwitchB、SwitchC和SwitchD上创建VLAN2~20 1 [SwitchA] vlan batch 2 to 202 3 [SwitchB] vlan batch 2 to 204 5 [SwitchC] vlan batch 2 to 206 7 [SwitchD] vlan batch 2 to 20 将交换设备上接⼊环路中的端⼝加⼊VLAN # 将实例1的根桥SwitchA端⼝GE0/0/1加⼊VLAN。 1 [SwitchA] interface gigabitethernet 0/0/1 2 [SwitchA-GigabitEthernet0/0/1] port link-type trunk 3 [SwitchA-GigabitEthernet0/0/1] port trunk allow-pass vlan 2 to 204 [SwitchA-GigabitEthernet0/0/1] quit # 将实例1的根桥SwitchA端⼝Eth-Trunk1加⼊VLAN。 1 [SwitchA] interface Eth-Trunk 1 2 [SwitchA-Eth-Trunk1] trunkport gigabitethernet 0/0/23 [SwitchA-Eth-Trunk1] trunkport gigabitethernet 0/0/34 [SwitchA-Eth-Trunk1] port link-type trunk 5 [SwitchA-Eth-Trunk1] port trunk allow-pass vlan 2 to 206 [SwitchA-Eth-Trunk1] quit # 将实例2的根桥SwitchB端⼝GE0/0/1加⼊VLAN。 1 [SwitchB] interface gigabitethernet 0/0/1 2 [SwitchB-GigabitEthernet0/0/1] port link-type trunk 3 [SwitchB-GigabitEthernet0/0/1] port trunk allow-pass vlan 2 to 204 [SwitchB-GigabitEthernet0/0/1] quit # 将实例2的根桥SwitchB端⼝Eth-Trunk1加⼊VLAN。 1 [SwitchB] interface Eth-Trunk 1 2 [SwitchB-Eth-Trunk1] trunkport gigabitethernet 0/0/23 [SwitchB-Eth-Trunk1] trunkport gigabitethernet 0/0/34 [SwitchB-Eth-Trunk1] port link-type trunk 5 [SwitchB-Eth-Trunk1] port trunk allow-pass vlan 2 to 206 [SwitchB-Eth-Trunk1] quit # 将接⼊交换机SwitchC端⼝GE0/0/1加⼊VLAN。 1 [SwitchC] interface gigabitethernet 0/0/1 2 [SwitchC-GigabitEthernet0/0/1] port link-type access3 [SwitchC-GigabitEthernet0/0/1] port default vlan 24 [SwitchC-GigabitEthernet0/0/1] quit # 将接⼊交换机SwitchC端⼝GE0/0/2加⼊VLAN。 1 [SwitchC] interface gigabitethernet 0/0/2 2 [SwitchC-GigabitEthernet0/0/2] port link-type trunk 3 [SwitchC-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 to 204 [SwitchC-GigabitEthernet0/0/2] quit # 将接⼊交换机SwitchC端⼝GE0/0/3加⼊VLAN。 1 [SwitchC] interface gigabitethernet 0/0/3 2 [SwitchC-GigabitEthernet0/0/3] port link-type trunk 3 [SwitchC-GigabitEthernet0/0/3] port trunk allow-pass vlan 2 to 204 [SwitchC-GigabitEthernet0/0/3] quit # 将接⼊交换机SwitchD端⼝GE0/0/1加⼊VLAN。 1 [SwitchD] interface gigabitethernet 0/0/1 2 [SwitchD-GigabitEthernet0/0/1] port link-type access3 [SwitchD-GigabitEthernet0/0/1] port default vlan 114 [SwitchD-GigabitEthernet0/0/1] quit # 将接⼊交换机SwitchD端⼝GE0/0/2加⼊VLAN。 1 [SwitchD] interface gigabitethernet 0/0/2 2 [SwitchD-GigabitEthernet0/0/2] port link-type trunk 3 [SwitchD-GigabitEthernet0/0/2] port trunk allow-pass vlan 2 to 204 [SwitchD-GigabitEthernet0/0/2] quit # 将接⼊交换机SwitchD端⼝GE0/0/3加⼊VLAN。 1 [SwitchD] interface gigabitethernet 0/0/3 2 [SwitchD-GigabitEthernet0/0/3] port link-type trunk 3 [SwitchD-GigabitEthernet0/0/3] port trunk allow-pass vlan 2 to 204 [SwitchD-GigabitEthernet0/0/3] quit 验证配置结果 说明: 本配置举例以实例1和实例2为例,因此不⽤关注实例0中端⼝的状态。 # 在实例1的根桥SwitchA上执⾏display stp brief命令,查看端⼝状态和端⼝的保护类型,结果如下: 1 [SwitchA] display stp brief 2 MSTID Port Role STP State Protection3 0 GigabitEthernet0/0/1 DESI FORWARDING ROOT4 0 Eth-Trunk1 DESI FORWARDING NONE5 1 GigabitEthernet0/0/1 DESI FORWARDING ROOT6 1 Eth-Trunk1 DESI FORWARDING NONE7 2 GigabitEthernet0/0/1 DESI FORWARDING ROOT8 2 Eth-Trunk1 ROOT FORWARDING NONE 在MSTI1中,由于SwitchA是根桥,SwitchA的端⼝Eth-Trunk1和GE0/0/1成为指定端⼝。在MSTI2中,SwitchA的端⼝GE0/0/1成为指定端⼝,端⼝Eth-Trunk1成为根端⼝。 # 在实例2的根桥SwitchB上执⾏display stp brief命令,结果如下: 1 [SwitchB] display stp brief 2 MSTID Port Role STP State Protection3 0 GigabitEthernet0/0/1 DESI FORWARDING ROOT4 0 Eth-Trunk1 ROOT FORWARDING NONE5 1 GigabitEthernet0/0/1 DESI FORWARDING ROOT6 1 Eth-Trunk1 ROOT FORWARDING NONE7 2 GigabitEthernet0/0/1 DESI FORWARDING ROOT8 2 Eth-Trunk1 DESI FORWARDING NONE 在MSTI2中,由于SwitchB是根桥,端⼝GE0/0/1和Eth-Trunk1在MSTI2中成为指定端⼝。在MSTI1中,SwitchB的端⼝GE0/0/1成为指定端⼝,端⼝Eth-Trunk1成为根端⼝。 # 在接⼊交换机SwitchC上执⾏display stp interface brief命令,结果如下: 1 [SwitchC] display stp interface gigabitethernet 0/0/3 brief 2 MSTID Port Role STP State Protection3 0 GigabitEthernet0/0/3 ROOT FORWARDING NONE4 1 GigabitEthernet0/0/3 ROOT FORWARDING NONE5 2 GigabitEthernet0/0/3 ROOT FORWARDING NONE1 [SwitchC] display stp interface gigabitethernet 0/0/2 brief 2 MSTID Port Role STP State Protection3 0 GigabitEthernet0/0/2 DESI FORWARDING NONE4 1 GigabitEthernet0/0/2 DESI FORWARDING NONE5 2 GigabitEthernet0/0/2 ALTE DISCARDING NONE SwitchC的端⼝GE0/0/3在MSTI1和MSTI2中为根端⼝。SwitchC的另⼀个端⼝GE0/0/2,在MSTI2中被阻塞,在MSTI1中被计算为指定端⼝。 # 在接⼊交换机SwitchD上执⾏display stp interface brief命令,结果如下: 1 [SwitchD] display stp interface gigabitethernet 0/0/3 brief 2 MSTID Port Role STP State Protection3 0 GigabitEthernet0/0/3 ROOT FORWARDING NONE4 1 GigabitEthernet0/0/3 ROOT FORWARDING NONE5 2 GigabitEthernet0/0/3 ROOT FORWARDING NONE1 [SwitchD] display stp interface gigabitethernet 0/0/2 brief 2 MSTID Port Role STP State Protection3 0 GigabitEthernet0/0/2 ALTE DISCARDING NONE4 1 GigabitEthernet0/0/2 ALTE DISCARDING NONE5 2 GigabitEthernet0/0/2 DESI FORWARDING NONE SwitchD的端⼝GE0/0/3在MSTI1和MSTI2中为根端⼝。SwitchD的另⼀个端⼝GE0/0/2,在MSTI1中被阻塞,在MSTI2中被计算为指定端⼝。 因篇幅问题不能全部显示,请点此查看更多更全内容