多生成树协议MSTP

一、MSTP简介

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

MSTP兼容STP和RSTP,既可以快速收敛,又提供了数据转发的多个冗余路径,在数据转发过程中实现VLAN数据的负载均衡。

通过MSTP把一个交换网络划分成多个域,每个域内形成多棵生成树,生成树之间彼此独立。每棵生成树叫做一个多生成树实例MSTI(Multiple Spanning Tree Instance),每个域叫做一个MST域(MST Region:Multiple Spanning Tree Region)

二、MSTP实验案例

实验要求:

  • 1)、每个交换机创建VLAN10、VLAN20
  • 2)、交换机所有接口Trunk,都可以承载VLAN10 VLAN20
  • 3)、配置SMTP,在VLAN10上阻塞LSW3的g0/0/9接口,VLAN20上阻塞LSW5的g0/0/17接口

如图所示,标记了各个交换机的BID,其中LSW3为根网桥,阻塞端口为LSW5G0/0/13,如果VLAN10VLAN20共用一棵生成树,会造成交换机LSW4负载过大,所以需要配置MSTP,使VLAN10VLAN20使用不同的生成树实例
在这里插入图片描述1、每台交换机创建VLAN10、VLAN20,并将交换机接口类型配置为Trunk,可以承载vlan10 vlan20(通过命令display vlan可以看到将交换机相应的接口加入了相应的VLAN

#LSW1
<Huawei>sys
[Huawei]undo info-center enable 
[Huawei]vlan batch 10 20
[Huawei]int g0/0/8
[Huawei-GigabitEthernet0/0/8]port link-type trunk 
[Huawei-GigabitEthernet0/0/8]port trunk allow-pass vlan 10 20

[Huawei-GigabitEthernet0/0/8]int g0/0/12
[Huawei-GigabitEthernet0/0/12]port link-type trunk 
[Huawei-GigabitEthernet0/0/12]port trunk allow-pass vlan 10 20     
#同样,对交换机LSW3、LSW4、LSW5进行相同的配置      

在这里插入图片描述2、配置MSTP,在每一台交换机都创建MSTP域,并创建对应实例(使用display stp brief命令,可以查看STP所有实例接口状态)

#LSW1
[Huawei]stp region-configuration        #进入MSTP域视图
[Huawei-mst-region]region-name RG1      #配置MSTP域的域名为RG1,需要将各设备的MSTP域的域名设置一致
[Huawei-mst-region]instance 1 vlan 10   #配置多生成树实例和VLAN的映射关系,实例1承载VLAN10
[Huawei-mst-region]instance 2 vlan 20   #配置多生成树实例和VLAN的映射关系,实例2承载VLAN20
[Huawei-mst-region]active region-configuration    # 激活MSTP域的配置
#同样,对交换机LSW3、LSW4、LSW5进行相同的配置   

在这里插入图片描述3、配置不同的实例承载不同的VLAN
 1)、配置MSTP实例1

  • 要使MSTP实例1阻塞LSW3g0/0/9接口,则应使LSW5成为MSTP实例1的根网桥
#LSW5
[Huawei]stp instance 1 root primary    #配置当前设备为实例1的根桥设备
  • 配置后可以使用display stp instance 1命令查看实例1的信息,可以看到实例1的BID的优先级变为0
    在这里插入图片描述
  • 此时,查看LSW3STP实例接口状态,可以看到,实例1的g0/0/9接口成为阻塞状态,如果VLAN10想要通信,只能通过LSW4
    在这里插入图片描述

如果g0/0/17是阻塞端口,g0/0/9是根端口,此时需要配置交换机LSW4对应实例1的网桥优先级,使其优先级高于LSW1对应实例1的网桥优先级

 2)、配置MSTP实例2

  • 同理,要使MSTP实例2阻塞LSW5g0/0/17接口,则应使LSW3成为MSTP实例2的根网桥
#LSW3
[Huawei]stp instance 2 root primary    #配置当前设备为实例2的根桥设备
  • 配置后查看实例2的信息,可以看到实例2的BID的优先级变为0
    在这里插入图片描述
  • 此时,查看LSW5STP实例接口状态,可以看到,实例2的g0/0/13接口成为阻塞状态
    在这里插入图片描述
  • 我们的目的是阻塞g0/0/17,所以要配置交换机LSW1对应实例2的网桥优先级,使其优先级高于LSW4对应实例2的网桥优先级
#LSW1
stp instance 2 priority 8192	#优先级是4096的倍数
  • 配置后查看LSW5的STP实例接口状态,可以看到,实例2的g0/0/17接口成为阻塞状态,此时,VLAN20想要通信,通过LSW1转发数据;VLAN10通信,通过LSW4转发数据,从而实现了不同VLAN间的负载均衡
    在这里插入图片描述
  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我非常乐意为你提供帮助。下面是Python代码实现多生成树协议MSTP的整个实现流程的步骤: 1. 导入必要的模块 ``` python import networkx as nx from networkx.utils.union_find import UnionFind ``` 2. 定义MSTP类,初始化交换机数量、边的数量和边的列表 ``` python class MSTP: def __init__(self, switch_num, edge_num, edge_list): self.switch_num = switch_num self.edge_num = edge_num self.edge_list = edge_list ``` 3. 编写Kruskal算法,实现生成最小生成树 ``` python def kruskal(self): uf = UnionFind(range(self.switch_num)) self.edge_list.sort(key=lambda x: x[2]) mst_edges = [] for edge in self.edge_list: u, v, w = edge if uf[u] != uf[v]: uf.union(u, v) mst_edges.append(edge) return mst_edges ``` 4. 编写Prim算法,实现生成最小生成树 ``` python def prim(self, graph): mst = [] visited = [False] * self.switch_num visited[0] = True for i in range(self.switch_num - 1): min_edge = float('inf') u, v = -1, -1 for j in range(self.switch_num): if visited[j]: for k in range(self.switch_num): if not visited[k] and graph[j][k] and graph[j][k] < min_edge: min_edge = graph[j][k] u, v = j, k mst.append((u, v, min_edge)) visited[v] = True return mst ``` 5. 编写MSTP算法,实现生成多个生成树 ``` python def mstp(self): graph = [[0] * self.switch_num for _ in range(self.switch_num)] for edge in self.edge_list: u, v, w = edge graph[u][v] = w graph[v][u] = w mst_edges = self.kruskal() mst_adj = [[] for _ in range(self.switch_num)] for edge in mst_edges: u, v, w = edge mst_adj[u].append(v) mst_adj[v].append(u) tree_edges = [] for i in range(self.switch_num): for j in mst_adj[i]: if (j, i) not in tree_edges: tree_edges.append((i, j)) trees = [] for edge in tree_edges: u, v = edge graph[u][v], graph[v][u] = 0, 0 trees.append(self.prim(graph)) graph[u][v], graph[v][u] = 1, 1 return trees ``` 完成以上步骤,你已经成功的实现了多生成树协议MSTP的整个实现流程的Python代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值