MSTP的概述
MSTP(多生成树协议),MSTP解决了STP和RSTP没有考虑vlan的问题,STP和RSTP将所有的vlan共享为一个生成树实例,无法实现负载分担,这样就导致了网络中一些设备出现闲置状态,没有流量通过。MSTP将这个交换网络分成多个生成树,每一棵树对应一个实例,每一个实例之间对应多个vlan,实例与实例之间互不影响。
华为和思科生成树的区别
MSTP(华为):一个实例可以对应多个vlan
PVST(思科):一个实例只能够对应一个vlan
MST域
确定网络中的交换机在同一个MST域的三个条件
- 域名相同
- 修订级别
- vlan的映射关系
MSTP的保护功能
BPDU保护
通常我们将交换机和PC连接的端口叫做边缘端口,这一些端口是不会参与生成树计算的,也就是默认状态不会接收和转发BPDU报文信息,如果有人伪造BPDU报文信息来对交换设备进行攻击,当接口收到BPDU报文,就会将该端口设置为非边缘端口,整个网络就会从新参与生成树计算,以此对整个网络造成不好的影响
stp bpdu-protection //我们可以该端口处执行该命令 表示开启bpdu报文包含
RSTP边缘端口开启的写法为:prot edged port enable
根保护
当网络中出现了一个比根交换机优先级大的交换机,整个网络又要重新进行生成树计算,这样就会导致网络结构链路上的改变。所有对于根交换机我们可以执行以下命令来做一个保护功能,在所有交换机的指定端口上执行以下命令,当该指定端口收到比跟交换机优先级高的BPDU报文,就立即进入侦听状态,只接受BPDU报文,而不进行转发,等过了很长时间,没有收到BPDU报文后,就转换为指定端口角色状态
stp root protection //开启根保护
根保护功能仅仅在指定端口生效,不能配置在边缘端口或者阻塞端口上。
临时环路保护机制
防止整个交换网络中出现根交换机的变换以及链路故障而发生的临时环路现象,因为出现如上故障,整个网络又要重新生成树计算,端口的角色也会随之改变,所以我们通过在根端口以及阻塞端口上输入以下命令即可防止这种环路的产生
stop loop-protection //开启临时环路保护机制
仅在根端口和阻塞端口上打
TC保护
stp tc-protection enable //开启TC保护
主要防止TC-BPDU报文攻击,给交换机增加负载量
MSTP实验搭建
实验要求
配置好对应设备的IP地址,配置access以及trunk,所有交换机都在uu这个域上,修订级别为1,vlan10对应实例10,实例10的根网桥在LSW1上。vlan20对应实例20,实例20的根网桥在LSW2上,最终要实现PC1能够走LSW3—LSW1—AR1 成功访问PC2,最短路径优先,PC2也是如此
拓扑图
IP地址的配置以及vlan的划分配置
LSW3交换机的配置
vlan的划分
[LSW3]vlan batch 10 20 //创建vlan 10 20
[LSW3]int g0/0/1
[LSW3-GigabitEthernet0/0/1]port link-type access
[LSW3-GigabitEthernet0/0/1]port default vlan 10
[LSW3-GigabitEthernet0/0/1]int g0/0/2
[LSW3-GigabitEthernet0/0/2]port link-type access
[LSW3-GigabitEthernet0/0/2]port default vlan 20
[LSW3-GigabitEthernet0/0/2]int g0/0/4
[LSW3-GigabitEthernet0/0/4]port link-type trunk
[LSW3-GigabitEthernet0/0/4]port trunk allow-pass vlan all
[LSW3-GigabitEthernet0/0/4]int g0/0/3
[LSW3-GigabitEthernet0/0/3]port link-type trunk
[LSW3-GigabitEthernet0/0/3]port trunk allow-pass vlan all
AR1路由器的配置
配置主机的网关
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip address 192.168.1.2 24
[AR1-GigabitEthernet0/0/1]int g0/0/2
[AR1-GigabitEthernet0/0/2]ip address 192.168.2.2 24
LSW1交换机的配置
[LSW1]vlan batch 10 20 //创建vlan 10 20
[LSW1]int g0/0/4
[LSW1-GigabitEthernet0/0/4]port link-type trunk
[LSW1-GigabitEthernet0/0/4]port trunk allow-pass vlan all
[LSW1-GigabitEthernet0/0/4]int g0/0/5
[LSW1-GigabitEthernet0/0/5]port link-type trunk
[LSW1-GigabitEthernet0/0/5]port trunk allow-pass vlan all
[LSW1-GigabitEthernet0/0/5]int g0/0/1 //进入交换机与路由器连接的端口
[LSW1-GigabitEthernet0/0/1]port link-type hybrid //将端口类型设置为hybrid 默认也是这个 这一步可以不用进行
[LSW1-GigabitEthernet0/0/1]port hybrid untagged vlan 10 //设置从这个端口出的vlan都去掉标签在网络中传输
[LSW1-GigabitEthernet0/0/1]port hybrid pvid vlan 10 //设置从这个端口进来的流量都打上vlan 10 的标签
LSW2交换机的配置
[LSW2]vlan batch 10 20
[LSW2]int g0/0/3
[LSW2-GigabitEthernet0/0/3]port link-type trunk
[LSW2-GigabitEthernet0/0/3]port trunk allow-pass vlan all
[LSW2-GigabitEthernet0/0/3]int g0/0/5
[LSW2-GigabitEthernet0/0/5]port link-type trunk
[LSW2-GigabitEthernet0/0/5]port trunk allow-pass vlan all
[LSW2-GigabitEthernet0/0/5]int g0/0/2
[LSW2-GigabitEthernet0/0/2]port link-type hybrid
[LSW2-GigabitEthernet0/0/2]port hybrid untagged vlan 20
[LSW2-GigabitEthernet0/0/2]port hybrid pvid vlan 20
以上配置好了以后,其实PC1和PC2是可以ping通的,因为整个网络就只存在一个生成树,且无环路,但是走的路可能不是最优的,有一些链路也存在闲置状态,完全没有达到负载分担的效果
MSTP的配置
所有的交换机都要配置MSTP
LSW1交换机的配置
[LSW1]stp mode mstp //将当前交换机的模式设置为MSTP
[LSW1]stp region-configuration //配置MSTP
[LSW1-mst-region]region-name uu //设置域名
[LSW1-mst-region]revision-level 1 //设置修订级别
[LSW1-mst-region]instance 10 vlan 10 //创建实例10对应vlan 10
[LSW1-mst-region]instance 20 vlan 20 //创建实例20对应vlan 20
[LSW1-mst-region]active region-configuration //激活配置
[LSW1-mst-region]q
[LSW1]stp instance 10 root primary //设置实例10为主根
[LSW1]stp instance 20 root secondary //设置实例20为备用根
如果当前实例存在的交换机不是跟桥,我们可以使用以下命令来修改为跟桥
stp instance 10 priority 0 //修改优先级即可
LSW2交换机的配置
[LSW2]stp mode mstp
[LSW2]stp region-configuration
[LSW2-mst-region]region-name uu
[LSW2-mst-region]revision-level 1
[LSW2-mst-region]instance 10 vlan 10
[LSW2-mst-region]instance 20 vlan 20
[LSW2-mst-region]active region-configuration
[LSW2-mst-region]q
[LSW2]stp instance 20 root primary
[LSW2]stp instance 10 root secondary
LSW3交换机的配置
[LSW3]stp mode mstp
[LSW3]stp region-configuration
[LSW3-mst-region]region-name uu
[LSW3-mst-region]revision-level 1
[LSW3-mst-region]instance 10 vlan 10
[LSW3-mst-region]instance 20 vlan 20
[LSW3-mst-region]active region-configuration
查看MSTP的状态(在LSW3上查看)
[LSW3]dis stp br //简洁查看stp的状态
MSTID Port Role STP State Protection
0 GigabitEthernet0/0/1 DESI FORWARDING NONE
0 GigabitEthernet0/0/2 DESI FORWARDING NONE
0 GigabitEthernet0/0/3 DESI FORWARDING NONE
0 GigabitEthernet0/0/4 DESI FORWARDING NONE
10 GigabitEthernet0/0/1 DESI FORWARDING NONE
10 GigabitEthernet0/0/3 ALTE DISCARDING NONE
10 GigabitEthernet0/0/4 ROOT FORWARDING NONE
20 GigabitEthernet0/0/2 DESI FORWARDING NONE
20 GigabitEthernet0/0/3 ROOT FORWARDING NONE
20 GigabitEthernet0/0/4 ALTE DISCARDING NONE
从上面的信息我们可以看出,对于实例10 g0/0/3端口为阻塞端口,对于实例20 g0/0/4端口为阻塞端口,
这样,我们就确保了vlan10 的数据只能够经过LSW3---LSW1---AR1了,效果达到
连通测试
我们不断的ping网关,然后使用抓包分别抓取两个端口看看流量通过情况,
LSW1上的g0/0/4端口抓包测试 有流量通过
LSW2上的g0/0/3端口抓包测试 没有流量通过
实验搭建完成,整个环境划分了连个实例,每一个实例都是一个新的生成树,效果达到