要让一个没有配置MSTP,也就是跑在默认所有VLAN属于同一实例的网络里,实现特定端口阻塞,确实可以做到。这个问题的关键在于理解,当STP全局开启时,它会自动作用于所有端口。只有手动为特定端口设置一个“绝对优先级”,阻断默认的计算过程,才能实现永久性的阻塞。
这里有几种可行的方法,你可以根据实际网络需求来选择:
这种方法最“优雅”,可以让STP协议根据你指定的“路径成本”自动帮你阻塞端口。
进入端口视图:首先确认要阻塞的端口,比如在上层汇聚交换机的视图下,进入连接下级交换机的物理端口。
设置极高路径开销:执行 stp cost 200000(开销值可设置范围为1-200000),这样STP会因开销过高而自动阻塞该链路,消除环路。
验证:使用 display stp brief 查看端口状态是否为 DISCARDING。
优点:随网络拓扑变化自动调整,规范标准。
缺点:配置时需确保开销值足够高,且路径唯一。
这种方法最为强硬,直接告诉交换机:“别管STP那一套,它就是不通”。可以理解为在物理上“剪断”了这根网线。
创建ACL:在系统视图下,执行 acl number 4000(4000-4999为二层ACL),创建高级ACL。
编写规则:执行 rule 0 deny dest-mac 0180-c200-0000 ffff-ffff-ffff,匹配并丢弃STP的BPDU报文。
应用ACL:
进入端口视图 interface GigabitEthernet1/0/X。
应用规则 packet-filter 4000 inbound。
优点:配置生效后,能确保端口100%被阻塞。
缺点:不会自动跟随网络变化,后期维护时可能忘记配置而导致永久不通。
这是另一种思路,它并非由STP协议驱动,而是直接建立端口之间的“隔离墙”。
进入端口视图:interface GigabitEthernet1/0/X。
加入隔离组:port-isolate enable group 1(隔离组号可自定义)。
局限:相同隔离组内的端口之间不能互通,但它与其它设备的连接不受影响。这只能阻断单点流量,无法阻断整个环路的生成。
对于连接终端(如服务器、PC)的下行接口,正确做法是设置其为边缘端口,这样它既能快速转发又不会参与STP计算、也不会影响上级环路。
进入端口视图:interface GigabitEthernet1/0/X。
设置为边缘端口:stp edged-port enable。
配合Root保护:stp root-protection。
优点:既能确保下行业务快速转发,又能保护核心根桥的稳定。
我cost改为最大了 没有阻塞
我cost改为最大了 没有阻塞
结论先给你:单实例 STP(所有 VLAN 都在实例 1 里),无法实现你图中这种 “非对称阻塞”。
一、先讲清楚核心原因
标准 STP(包括单实例 MSTP)的本质,是在全网构建唯一一棵无环树:
根桥只有 1 个,全网统一
根端口、指定端口、阻塞端口的角色,全网统一
一旦阻塞端口确定,所有 VLAN 的流量都会绕开它,无法实现 “左链路阻塞、右链路转发” 这种非对称负载分担
你现在的情况:
两台 S5820V2 上的端口已经被阻塞(说明当前生成树已经选好了阻塞点)
你想让右侧 S6850-3 的端口也阻塞,变成两条链路分别被阻塞,在单实例下做不到,因为:
单实例只有一个根桥,S6850-2 和 S6850-3 之间的链路,只能有一个端口被选为阻塞点,不可能同时阻塞两边的端口
单实例无法让不同链路在不同交换机上被阻塞,必须有一条链路是 “两端都转发” 的,否则会出现网络分区
二、你图里的拓扑分析
1. 现在的状态(当前阻塞)
两条下连链路(S6850-2→S5820V2-4、S6850-3→S5820V2-5),各有一个端口被阻塞
上连的 S6850-2 和 S6850-3 之间的链路,目前两端都在转发,没有被阻塞
这种状态是单实例 STP 收敛后的正常结果,只会阻塞冗余的下连链路,不会阻塞上连链路
2. 你想要的状态(理想阻塞)
下连的两条链路继续保持阻塞
上连的 S6850-2 和 S6850-3 之间的链路,也有端口被阻塞
最终形成两条独立的阻塞链路,分别在不同交换机上
这种状态,在单实例 STP 里是无法实现的,因为:
S6850-2 和 S6850-3 之间的链路,只能有一个端口被选为 “非指定端口”,进入阻塞状态,另一个端口一定是转发状态
不可能同时阻塞这条链路的两个端口,否则 S6850-2 和 S6850-3 会变成两个独立的网络,无法互通
三、两种解决方法(按推荐优先级排序)
方案 1:改成多实例 MSTP(推荐,最标准)
把 VLAN 划分到不同的 MST 实例中,每个实例单独运行一棵生成树
实例 1 的根桥设为 S6850-2,实例 2 的根桥设为 S6850-3
这样:
实例 1 的流量会阻塞 S6850-3 侧的端口
实例 2 的流量会阻塞 S6850-2 侧的端口
最终实现链路的负载分担,和你图里想要的阻塞效果一致
配置示例(H3C 设备):
bash
运行
# 1. 配置MST域(所有交换机配置相同)
stp region-configuration
region-name MSTP-TEST
instance 1 vlan 10 to 100
instance 2 vlan 101 to 200
revision-level 1
active
# 2. S6850-2配置为实例1的根桥
system-view
stp instance 1 root primary
stp instance 2 root secondary
# 3. S6850-3配置为实例2的根桥
system-view
stp instance 2 root primary
stp instance 1 root secondary
方案 2:不改实例,强行修改端口优先级(只能实现单条链路阻塞)
如果你不想用多实例,只能在单实例里修改端口开销 / 优先级,强制阻塞你想让它阻塞的端口:
bash
运行
# 例如,强制让S6850-3上的GE0/2进入阻塞状态
system-view
interface GigabitEthernet 0/2
stp cost 2000000 # 把端口开销改大,让它失去指定端口角色,进入阻塞
但这种方法的问题是:
只能阻塞一条链路,无法实现你图里的 “两边同时阻塞”
流量会全部走 S6850-2,S6850-3 只做备份,无法负载分担
链路故障切换时,会有 STP 的 30 秒收敛时间(如果没开 RSTP)
四、关键补充:为什么你说 “都在实例 1 里” 就不行?
你说 “没有做 mstp 的都是实例 1 里面”,意思是所有 VLAN 都映射到了 MST 实例 1 里,本质上还是单实例:
单实例 STP 只能有一棵生成树,全网只有一个阻塞点
你图里想要的 “两条链路分别在不同交换机上被阻塞”,本质上是两棵不同的生成树,必须用多实例才能实现
五、总结
单实例 STP(包括所有 VLAN 都在实例 1 里),无法实现你图里的非对称阻塞效果,只能阻塞一条冗余链路
要实现你想要的 “两条链路分别阻塞、负载分担”,必须改成多实例 MSTP,为不同 VLAN 配置不同的根桥
临时应急可以改端口开销强制阻塞,但无法实现负载分担,只能单链路转发
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
确定可以嘛 怎么调整