生成树协议配置与分析(华为eNSP实验环境)
一、实验目的
(1)理解生成树协议和vlan之间的关系
(2)理解 Root Bridge 是如何选出来的
(3)理解STP不仅能防环,还能提供冗余备份
(4)理解STP选择Root Port时,不只是看直连,还看路径开销
二、实验背景知识
STP(生成树协议) 的核心作用是防止交换机环路带来的网络灾难,同时实现冗余备份。STP是交换机上的一个自动协议,既防止网络环路导致广播风暴,又能在主链路故障时自动启用备用链路。后来出现了RSTP(快速生成树协议),收敛时间可缩短到几秒;还有MSTP(多生成树协议),允许多个VLAN独立运行生成树,以充分利用链路带宽。
三、实验网络拓扑图

相关的一些交换机CLI命令:
[Huawei]stp enable //启动stp服务(华为交换机默认是启动该协议的)
[Huawei]display stp brief //显示stp状态信息
[Huawei]stp priority 4096 //配置交换机在默认生成树实例中的优先级为4096
[Huawei]stp instance 1 priority 4096 //配置交换机在生成树实例1中的优先级为4096
交换机的STP信息及其解释:(以LSW1为例)

Root Port(ROOT):根端口,去往根网桥开销最短的端口,负责接收数据。
Designated Port(DESI):指定端口,每个网段上离根桥最近的端口,负责发送数据。
Alternate Port(ALTE):阻塞端口,禁止转发数据。
通过查看每一台交换机的STP信息可以得知,交换机LSW3为根网桥,交换机LSW1的G0/0/1接口被阻塞。(可能具体情况不同,但结果类似)
四、实验步骤
(1)观察stp被关闭后产生的广播风暴
关闭所有交换机的stp服务协议:undo stp enable
清空pc1的arp缓存,然后执行ping命令测试与其他主机的连通性并在交换机LSW1的g0/0/1接口处开启抓包,观察实验现象。


可以看到,因为stp协议关闭,交换机之间产生环路(捕获大量arp广播帧和重复的arp单播帧),从而导致广播风暴,导致交换机无法正常工作。原因在于交换机收到广播或未知目的 MAC 帧时,会向所有端口转发,以确保数据到达目标。如果网络里存在环路(环形拓扑),数据包会沿环路无限循环,每次循环,交换机会再次转发,从而产生指数级增长的广播包。
(2)理解生成树协议与vlan之间的联系
在交换机LSW1、LSW2和LSW3中创建vlan10、vlan20和vlan30

在交换机LSW1上做如下配置(LSW2和3配置类似)
[LSW1]vlan batch 10 20 30 //在系统视图下,批量创建 VLAN 10、VLAN 20 和 VLAN 30
[LSW1]int eth0/0/1
[LSW1-Ethernet0/0/1]port link-type access //将该接口的链路类型设置为 access 模式
[LSW1-Ethernet0/0/1]port default vlan 10 //将该接口的缺省 VLAN(即 PVID)设置为 VLAN 10
[LSW1-Ethernet0/0/1]int eth0/0/2
[LSW1-Ethernet0/0/2]port link-type access
[LSW1-Ethernet0/0/2]port default vlan 30
[LSW1-Ethernet0/0/2]int g0/0/1
[LSW1-GigabitEthernet0/0/1]port link-type access
[LSW1-GigabitEthernet0/0/1]port default vlan 10
[LSW1-GigabitEthernet0/0/1]int g0/0/2
[LSW1-GigabitEthernet0/0/1]port link-type access
[LSW1-GigabitEthernet0/0/1]port default vlan 30
[LSW1-GigabitEthernet0/0/1]quit
测试同一vlan下的主机间连通性,发现主机PC1和PC2是无法通信的,原因在于LSW1 和 LSW2 之间这条链路被 STP 阻塞了。VLAN10 的帧无法通过交换机间的链路传递,即使 STP 打开,备用链路或者跨交换机的转发也没办法把 VLAN10 带过去,交换机间承载 VLAN 流量必须 trunk,Access 口只在单 VLAN 内有效。即使配置MSTP也是不行的,MSTP(多实例生成树)解决的是 环路和不同 VLAN 流量的负载分配,能决定哪条链路阻塞、哪条链路转发,但它不负责把 VLAN 流量标记和传递,如果交换机间链路不是 Trunk,VLAN 标签没法传递,MSTP 无法让 VLAN10 的流量绕过备用链路。
(3)配置trunk链路
具体命令如下:
interface GE0/0/1[交换机互相连接的每一个接口]
undo port default vlan //将access接口从vlan中删除
port link-type trunk
port trunk allow-pass vlan 10 20 30
这样可以做到任何一条链路出现故障,各vlan都还能够保证联通。
此时主机1再去和主机2通信,是可以完成的

探究一:强制切换根桥
命令:
stp priority 0 //优先级越小,越容易成为根桥
再分别执行“display stp brief”,可以观察到根桥和阻断链路全部发生变化,这就是STP的路径计算过程。
探究二:链路故障切换
关闭主链路(具体关哪个口,要看哪个是ROOT Port),在根桥切换后的背景下,拓扑图切换为如图所示

关闭LSW1的g0/0/1,可以发现主机1和2仍然能够通信,LSW1的g0/0/2变为root。
Root Port 断开 → Alternate Port 自动转发 → 通信恢复/保持
此时回复链路,网络会重新收敛
探究三:MSTP 多实例配置与 VLAN 负载分配
为每一台交换机做如下配置:
[LSW1]stp region-configuration //进入MST视图
[LSW1-mst-region]region-name Huawei //配置MST域名为Huawei
[LSW1-mst-region]revision-level 1 //配置MST修订级别为1,默认为0
[LSW1-mst-region]instance 1 vlan 10 //指定vlan10映射到MST1
[LSW1-mst-region]instance 2 vlan 20 //指定vlan20映射到MST2
[LSW1-mst-region]instance 3 vlan 30 //指定vlan20映射到MST3
[LSW1-mst-region]active region-configuration //激活MST域配置
观察点:不同 VLAN 的通信流量是否分布在不同物理链路上。
观察点:断开某条链路后,备用端口是否接管不同实例的通信。
观察点:Region 名称、版本号以及 VLAN→MSTI 的映射是否一致。
五、实验小结
本实验通过 MSTP 多实例将 VLAN10、VLAN20、VLAN30 映射到不同生成树实例,使不同 VLAN 可以选择不同转发路径,实现链路负载分担。
当 LSW1 与 LSW3 之间链路故障时,MSTP 能重新计算端口角色并切换备用路径,保证各 VLAN 主机通信的可靠性。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)