如果只看表面,很容易误以为“冗余链路”就是多插几根网线那么简单。很多刚接触交换机的同学,第一次在公司或实验环境里做两台交换机互联时,都会遇到同一个困惑:明明配好了VLAN,也把互联口设成了Trunk,但接上第二条冗余链路后,网络反而变卡、变慢,甚至整个VLAN都不通了。
这不是VLAN配置错了,而是你还没有理解冗余链路和VLAN之间的协作关系。冗余链路解决的是“物理链路断了怎么办”的问题,VLAN解决的是“二层广播域怎么隔离”的问题。如果把这两件事割裂开来配置,轻则STP阻塞了所有冗余路径,带宽白白浪费;重则形成广播风暴,把整台交换机打瘫。
这篇文章围绕交换机的冗余链路场景,讲清楚VLAN的划分、Trunk接口配置、STP环路防护以及链路聚合这四者之间的关系。我会以华为VRP平台为例,给出两台交换机之间通过冗余链路承载多VLAN流量的完整配置方法,并解释每一步为什么要这么做。读完你不仅能配通,还能知道配置完成后怎么验证、怎么排查。
1. 冗余链路与VLAN配置为什么必须一起考虑
1.1 冗余链路的本质是消除单点故障
在中小型企业和机房的典型组网中,接入层交换机通常需要同时连接两台上游设备,或者两台汇聚交换机之间用两根以上的物理线路互相连接。这样做的目的很直接:任何一根光纤、一个光模块、一个端口出问题,业务流量都能自动切换到另一条路径上。
但问题是,二层网络天然不允许物理环路存在。一个广播帧如果沿着环路转发下去,会在两台交换机之间不断复制、回灌,最终形成广播风暴,CPU占用率飙升,所有VLAN全部瘫痪。这正是“冗余链路必须配合环路防护机制”的根本原因。
1.2 VLAN隔离了广播域,但没有消除环路
VLAN可以把一台物理交换机分割成多个逻辑局域网,让广播帧只在同一VLAN内部传播。这是VLAN的核心价值。可一旦两台交换机之间允许Trunk通过多个VLAN,那么每个VLAN的广播帧都会进入这个Trunk链路。如果有物理环路,每个VLAN的广播帧都会在环路上无限循环。
因此,“交换机的冗余链路的vlan配置”并不是简单的VLAN划分加Trunk放行,而是要在多链路、多VLAN的环境里,同时解决三个问题:
- 哪些VLAN需要跨交换机通信。
- 哪些物理链路承载这些VLAN流量。
- 如何防止物理环路对每个VLAN造成影响。
这里的核心判断是:VLAN决定了流量能不能走某条链路,而冗余机制决定了流量走哪条链路。两者必须同时规划,不能先配完VLAN再考虑冗余。
1.3 两种主流的冗余实现思路
解决冗余链路问题,有两条技术路线:
- STP/RSTP/MSTP生成树方案:多条Trunk链路都允许相同VLAN通过,由生成树协议阻塞冗余路径,收敛时间在秒级到亚秒级。优点是配置简单、兼容性好;缺点是同一时刻只有一条链路在转发流量,带宽利用率低。
- 链路聚合(Eth-Trunk)方案:把多条物理链路捆绑成一个逻辑接口,既做负载均衡又做链路备份。优点是带宽叠加、收敛快,而且没有环路问题,不需要STP阻塞,配置清晰;缺点是需要两端交换机同时支持链路聚合协议。
在实际生产环境中,两台交换机之间的冗余链路,我更推荐直接使用链路聚合。在整网存在物理环路、需要从拓扑层面兜底的场景里,再叠加STP。接下来我会把这两种方案都写清楚。
2. 核心概念:端口类型、VLAN标签、冗余协议
在开始敲命令之前,先把几个容易混淆的概念理清楚。很多配置错误,本质上是对这几个概念的理解有偏差。
2.1 Access端口与Trunk端口的定位
- Access端口:接入端口,通常连接终端设备(PC、服务器、打印机)。它只属于一个VLAN,收到不带标签的帧后打上该VLAN的标签,转发给其他同VLAN端口时再剥离标签。配置时用
port default vlan指定所属VLAN。 - Trunk端口:干道端口,通常连接交换机、路由器。它默认放行多个VLAN,通过802.1Q标签区分不同VLAN的帧。配置时用
port trunk allow-pass vlan指定需要放行的VLAN列表。
用一句话总结:Access端口是“一个VLAN的大门”,Trunk端口是“多个VLAN共用的管道”。
2.2 VLAN Tag在链路中的传递过程
当PC-A(VLAN 10)发送一个无标签数据帧到交换机SW-A的Access口,SW-A会给这个帧打上VLAN 10的标签。如果这个帧需要跨交换机到达PC-B,SW-A会通过Trunk口把它发出去,帧带着VLAN 10的标签在Trunk链路中传输。SW-B从Trunk口收到后,识别出VLAN 10,转发给VLAN 10的Access口,再从Access口剥离标签送给PC-B。
这就能解释一个常见问题:为什么Trunk口没有放行VLAN 10时,VLAN 10的跨交换机通信就断了?因为SW-A根本没有把打上VLAN 10标签的帧往Trunk口发,或者SW-B收到后不认这个标签。
2.3 STP与链路聚合在冗余方案中的不同作用
STP(Spanning Tree Protocol)不是用来提升性能的,它是用来“破坏”环路的。它会计算出一棵无环的转发树,把冗余端口置为Blocking状态。这样做保证了安全,但代价是冗余链路平时闲着,只有主链路断开时才切换。
链路聚合则完全不同。它把多个成员口捆成一个逻辑口,所有成员口同时转发流量,通过哈希算法基于源MAC、目的MAC、IP地址等参数做负载均衡。其中任何一个成员口故障,流量自动重新哈希到剩余成员口。它天然没有环路,因为整个Eth-Trunk就是一个逻辑端口。
2.4 PVID的隐藏作用
PVID(Port VLAN ID)是端口缺省VLAN的编号。Access口的PVID就是它所属的VLAN;Trunk口也有PVID,默认是VLAN 1。
在Trunk口上,如果收到无标签帧,交换机会把它当作PVID对应VLAN的帧。因此,如果Trunk口的PVID保持默认VLAN 1,而两端又把VLAN 1用作管理VLAN,可能会出现管理流量和一些杂散流量混跑的情况。严谨的做法是:承载业务的Trunk口把PVID改成专用的管理VLAN或直接保持默认VLAN 1不放行业务,避免管理流量和业务流量混淆。
3. 组网需求与拓扑规划
3.1 场景描述
假设我们有两台汇聚/接入交换机:SW-A和SW-B,它们之间用光纤互联。为了可靠,物理上计划连接两条链路。交换机上有以下需求:
- VLAN 10:办公网段。
- VLAN 20:监控网段。
- 客户端PC分散在SW-A和SW-B下,同一VLAN的主机需要跨交换机二层互通。
- 两条互联链路需要承载VLAN 10和VLAN 20的流量。
3.2 方案对比
先看最直观的错误做法:直接把两根网线分别接在SW-A和SW-B上,两个口都设置成相同的Trunk配置。
这样做的结果是什么?物理环路形成。虽然STP会阻塞其中一条链路,业务可以通,但你会发现:
- 只有一条链路在工作,冗余带宽被浪费。
- 每次拓扑变化,STP重新收敛需要时间。
- 如果忘记开启STP,广播风暴直接打瘫网络。
再看推荐做法一:使用Eth-Trunk把两条物理链路捆绑成一个逻辑链路,同时承载VLAN 10和VLAN 20。流量自动负载均衡,任何一条物理线路故障,另一条继续转发。
推荐做法二:在必须保留多条Trunk链路的网络中,开启RSTP,让冗余端口进入阻塞状态。此时VLAN配置要保证放行VLAN列表一致,STP要设置为相同的模式。
这篇文章的配置部分会同时给出这两种方案的完整命令。
核心配置信息: 交换机型号:华为 S5700/S6720 系列(VRP平台) 互联端口:GE0/0/23、GE0/0/24 业务VLAN:VLAN 10(办公)、VLAN 20(监控) 管理VLAN:VLAN 1(默认)4. 冗余链路的VLAN配置步骤(基于Trunk + STP方案)
这一节先写传统的Trunk+STP方案。它的优点是不要求两台交换机支持链路聚合,兼容老设备,适合先理解冗余链路和VLAN的协作逻辑。
4.1 第一步:在两台交换机上创建VLAN
在SW-A和SW-B上分别创建VLAN 10和VLAN 20。
system-view sysname SW-A vlan batch 10 20 quitsystem-view sysname SW-B vlan batch 10 20 quit说明:vlan batch用于批量创建VLAN,比逐条vlan 10和vlan 20更高效。
4.2 第二步:配置接入端口
假设SW-A的GE0/0/1和GE0/0/2分别连接PC-A1和摄像头CAM-A1,SW-B的GE0/0/1和GE0/0/2分别连接PC-B1和摄像头CAM-B1。
SW-A配置:
interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quitSW-B配置:
interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit注意:终端设备不要使用Trunk口。接入设备如果用的是Trunk口,VLAN Tag可能无法被PC正确识别,导致设备获取不到IP或通信异常。
4.3 第三步:配置Trunk互联口
这是本方案的核心。
SW-A上,GE0/0/23和GE0/0/24作为互联口:
interface GigabitEthernet0/0/23 port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quitSW-B上执行相同配置:
interface GigabitEthernet0/0/23 port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit4.4 第四步:配置STP,解决物理环路
两条Trunk链路都放行VLAN 10和VLAN 20,物理环路必然存在。因此必须开启STP。
建议直接使用RSTP,收敛速度更快:
stp mode rstp stp enableSW-A和SW-B都要配置。如果网络里还有其他交换机,建议在核心/汇聚设备上执行:
stp root primary让SW-A成为根桥,STP拓扑更稳定。如果SW-A和SW-B之间还有第三台交换机,根桥选择就非常关键。
4.5 第五步:查看STP阻塞状态
配置完成后,可以用下面命令查看端口状态:
display stp brief预期效果是:SW-A的GE0/0/23和GE0/0/24中,一个处于Forwarding状态,另一个处于Discarding/Blocking状态。这是正常的,冗余链路此时没有转发流量,但它就在那里,主链路断开时会立即切换。
如果两条链路都显示Forwarding,那才需要担心:环路没有被阻断,广播风暴已经在酝酿了。
到这里,你已经配通了“Trunk+STP”方案的冗余链路。这个方案能保证冗余,但带宽浪费。下一节换成更实用的链路聚合方案。
5. 用Eth-Trunk实现冗余链路与VLAN流量的负载均衡
Eth-Trunk方案是我在实际项目中更推荐的做法。它把两条物理链路捆绑成一个逻辑链路,在VLAN配置上更简洁,性能上也更有优势。
5.1 为什么Eth-Trunk比双Trunk更好用
双Trunk+STP方案中,同一时间只有一条链路转发流量,物理带宽被砍半。Eth-Trunk能把两条物理链路的带宽叠加起来,同时通过哈希在两条链路上分担不同VLAN的流量。
更关键的是,Eth-Trunk是一个逻辑口,不存在环路,STP可以不用在成员口上做阻塞判断,网络拓扑更简单。
5.2 Eth-Trunk配置命令
还是使用GE0/0/23和GE0/0/24这两条链路。
SW-A配置:
interface Eth-Trunk 1 port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet0/0/23 eth-trunk 1 quit interface GigabitEthernet0/0/24 eth-trunk 1 quitSW-B配置:
interface Eth-Trunk 1 port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet0/0/23 eth-trunk 1 quit interface GigabitEthernet0/0/24 eth-trunk 1 quit注意几个关键点:
- 两端Eth-Trunk编号必须一致,这里都是1。
- 进入Eth-Trunk接口后,要像普通Trunk口一样配置
port link-type trunk和port trunk allow-pass vlan。 - 成员口加入Eth-Trunk后,成员口上原有的端口配置会失效,所有配置以Eth-Trunk接口为准。
- 两端成员口数量、速率、双工模式需要保持一致,否则可能出现成员口协商失败。
5.3 手动模式与LACP模式选择
上面的命令是手动负载均衡模式,两端配置一致就能聚合成功。另一种方式是LACP模式,使用标准协议协商,推荐在生产环境使用,因为两端能自动检测配置不一致问题。
LACP模式配置示例:
interface Eth-Trunk 1 mode lacp-static port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet0/0/23 eth-trunk 1 quit interface GigabitEthernet0/0/24 eth-trunk 1 quit两端都要配置mode lacp-static。LACP模式配置更稳,但要求两端的聚合参数(如系统优先级、端口优先级)能协商成功。手动模式虽然不协商,但在排查问题时更容易定位,适合先跑通实验。
5.4 Eth-Trunk下的VLAN流量分担
Eth-Trunk的负载均衡是基于哈希的,不是按VLAN数均分。默认情况下,设备会基于源MAC和目的MAC计算哈希值。如果想让流量更均匀,可以根据场景配置负载分担方式:
load-balance src-dst-mac还可以选择基于IP、基于VLAN等方式。华为设备在Eth-Trunk接口视图下执行:
display eth-trunk 1会显示成员口状态、流量分担模式、发送/接收统计。这个命令也是判断Eth-Trunk是否正常工作最重要的命令。
5.5 主备模式与负载均衡模式的取舍
Eth-Trunk还能配置1:1主备模式,正常情况下只有主链路转发流量,主链路故障后切换到备链路。这种模式适合两条链路带宽不一致、不希望流量哈希到慢速链路的场景。
配置方式是在Eth-Trunk接口下执行:
interface Eth-Trunk 1 port trunk allow-pass vlan 10 20 port load-balance 1:1不过绝大多数场景还是建议使用负载均衡模式,因为两条链路通常都是同规格光纤,负载均衡能最大化利用带宽。
6. 三层交换场景下的冗余与VLAN间通信
如果网络规模再大一点,VLAN 10和VLAN 20之间需要三层互通,而SW-A和SW-B是三层交换机,那么还需要配置VLANIF接口。
6.1 配置VLANIF接口地址
在SW-A上:
interface Vlanif 10 ip address 192.168.10.1 255.255.255.0 quit interface Vlanif 20 ip address 192.168.20.1 255.255.255.0 quit在SW-B上:
interface Vlanif 10 ip address 192.168.10.2 255.255.255.0 quit interface Vlanif 20 ip address 192.168.20.2 255.255.255.0 quit这样两个VLAN的网关分别出现在两台交换机上。PC的网关指向哪台交换机,就由哪台交换机做三层转发。如果两台交换机之间配置了Eth-Trunk,VLANIF接口的流量会通过Eth-Trunk转发,实现跨交换机的VLAN间通信。
6.2 在冗余链路中配置VRRP实现网关冗余
当VLANIF网关分布在不同交换机上,并且希望任意一台交换机故障时网关不中断,可以配置VRRP(虚拟路由冗余协议)。
SW-A配置为VLAN 10和VLAN 20的主网关:
interface Vlanif 10 vrrp vrid 10 virtual-ip 192.168.10.254 vrrp vrid 10 priority 120 quit interface Vlanif 20 vrrp vrid 20 virtual-ip 192.168.20.254 vrrp vrid 20 priority 120 quitSW-B配置为备份网关:
interface Vlanif 10 vrrp vrid 10 virtual-ip 192.168.10.254 quit interface Vlanif 20 vrrp vrid 20 virtual-ip 192.168.20.254 quitPC的网关统一指向192.168.10.254和192.168.20.254。正常情况下SW-A承担网关转发,SW-A故障后SW-B接管虚拟IP,网关不中断。这个配置结合Eth-Trunk,就同时实现了链路级冗余和设备级冗余。
VRRP配置虽然多几条命令,但是生产环境中设备冗余的标配。只要涉及交换机冗余,建议优先规划。
7. 配置验证与效果检查
配置完成后,不要急着收工。以下验证步骤一步都不能省。
7.1 验证VLAN信息
display vlan在SW-A上执行后,能看到VLAN 10和VLAN 20的端口成员表。确认GE0/0/1属于VLAN 10,GE0/0/2属于VLAN 20,Eth-Trunk 1口同时出现在VLAN 10和VLAN 20中。
7.2 验证Trunk放行列表
display interface Eth-Trunk 1输出中的Port Trunk Allow-Pass VLAN一行会列出10和20。如果这里只显示VLAN 1,说明allow-pass vlan配置没生效,跨交换机通信肯定失败。
7.3 验证Eth-Trunk成员口状态
display eth-trunk 1重点关注每个成员口的State是否为Up,以及Mode是否为LACP或Manual。如果某个成员口是Down,说明物理链路或光模块有问题。
7.4 验证STP端口状态
如果是双Trunk+STP方案:
display stp brief看到有一条链路为Discarding状态,说明STP正常工作。如果两条链路都Forwarding,需要检查是不是没有启用STP。
7.5 验证主机连通性
在各VLAN终端上ping对端同VLAN主机:
ping 192.168.10.2例如,SW-A下的PC-A1(192.168.10.10)ping SW-B下的PC-B1(192.168.10.20),如果通了,说明VLAN 10跨交换机二层通信正常。如果通了但时延很高,检查Trunk口是否出现CRC错误或丢包统计。
7.6 模拟故障验证冗余
在生产环境或实验环境测试时,可以将Eth-Trunk中的一个成员口shutdown:
interface GigabitEthernet0/0/23 shutdown然后再次display eth-trunk 1,确认流量切换到剩余成员口,业务不中断。如果是双Trunk+STP方案,shutdown主链路后,等待STP收敛(RSTP通常在秒级内),再确认备份链路进入Forwarding状态。
这个模拟测试一定要做。不做故障演练的冗余配置,都是“纸面冗余”。
8. 常见问题与排查思路
下表列出冗余链路VLAN配置中最常见的6个问题。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| VLAN 10跨交换机不通 | Trunk口未放行VLAN 10 | display interface trunk查看allow-pass列表 | port trunk allow-pass vlan 10 |
| 全网变慢、交换机CPU高 | STP未开启,物理环路产生广播风暴 | display stp brief是否所有端口Forwarding | 全局开启stp enable,并配置stp mode rstp |
| Eth-Trunk只有一个成员口Up | 成员口配置不一致或物理链路故障 | display eth-trunk 1查看故障口状态 | 检查光模块、光纤;确保两端成员口数量/速率一致 |
| 接入终端获取不到IP地址 | Access口VLAN配错,或上联Trunk未放行对应VLAN | display vlan查看端口归属 | 修正Access口port default vlan |
| 管理流量和业务流量混在一起 | Trunk口PVID未调整,默认VLAN 1放行 | display interface Ethernet0/0/1查看PVID | 不建议业务Trunk放行VLAN 1 |
| 冗余切换后业务中断时间长 | STP模式不是RSTP,或Eth-Trunk未配置 | display stp查看模式 | 切换到RSTP;链路多时用Eth-Trunk替代纯STP阻塞 |
每个问题排查时,最先看的应该是这台交换机上的display logbuffer和display interface的计数信息。很多问题在日志里有直接提示,比如LACP协商失败、STP拓扑变化频繁、端口Down/Up抖动等。
9. 最佳实践与工程建议
9.1 端口角色标准化
网络配置最怕“每个人有每个人的写法”。我建议团队内形成统一规范:
- 连接终端一律使用Access口。
- 连接交换机、路由器、防火墙一律使用Trunk口。
- 交换机间多条链路一律使用Eth-Trunk,不再单独配置多条Trunk。
- 业务Trunk口不放行VLAN 1,管理VLAN单独规划。
9.2 配置前备份,变更前回滚
交换机配置不是写完就完,要养成save保存配置的习惯:
save对于生产网络,变更前建议先导出当前配置:
display current-configuration放到本地留档。发生配置错误时,可以直接用备份文件回退,避免现场逐条敲命令恢复。
9.3 标准化VLAN规划
VLAN ID建议按照业务模块、网段、部门做统一规划。例如:
- VLAN 10:办公网段。
- VLAN 20:监控网段。
- VLAN 30:无线网段。
- VLAN 99:管理网段。
不要随手用几个VLAN,时间一长谁也记不住哪个VLAN对应哪个业务。可以在交换机上配置VLAN描述:
vlan 10 description Office-10.1.10.0/24 quit9.4 安全边界不要漏掉
冗余链路解决的是可用性,但VLAN之间默认互不相通,这一层隔离本身就是安全设计。如果配置了三层VLANIF,就一定要小心VLAN间路由开了之后,原本隔离的广播域已经可以通过IP互访了,此时需要靠ACL来做访问控制。
另外,接入交换机建议开启DHCP Snooping和IPSG,防止终端私设IP或伪造DHCP报文,这在部署了多VLAN和冗余链路的交换机环境下尤其重要。
9.5 使用eNSP做实验验证
如果你手头没有真实设备,想先验证本文的配置,推荐使用华为eNSP模拟器。在eNSP里拖两台S5700交换机,按拓扑连线,用本文命令即可完整跑通。模拟器和真实设备在VLAN、Trunk、STP、Eth-Trunk这些二层功能上差异不大,适合学习验证。生产环境操作前,务必确认设备型号和版本,VRP V5和VRP V8在某些命令细节上有差异。
10. 总结与后续学习方向
交换机的冗余链路和VLAN配置,本质上是一个“先设计、再配置、后验证”的工程过程。先画拓扑,规划VLAN和端口角色;再配置VLAN、Trunk、Eth-Trunk或STP;最后通过display vlan、display eth-trunk、display stp brief做系统验证。千万不要跳过规划直接敲命令,那是接下来一切故障的起点。
这篇文章里最值得记住的判断有三条:
- 冗余链路不是简单的多插几根线,而是要在二层环路保护和VLAN流量承载之间找到平衡。
- 两交换机之间多链路互联,优先用Eth-Trunk,因为它既消除了环路,又叠加了带宽。
- STP是兜底方案而不是性能方案,它保证“活着”,但不保证“带宽好用”。
如果还想深入,下一步可以学习RSTP与MSTP的差异,理解多实例生成树如何在不同VLAN之间实现负载均衡;再进一步可以研究链路聚合的负载均衡算法,以及LACP和静态聚合在故障切换时的行为差异。掌握这些,你再看企业级三层园区网络的时候,就不会觉得配置堆砌,而是清楚每一行命令在保护什么、优化什么。