十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

交换机冗余链路VLAN配置详解:Trunk、STP与Eth-Trunk实战

交换机冗余链路VLAN配置详解:Trunk、STP与Eth-Trunk实战 如果只看表面很容易误以为“冗余链路”就是多插几根网线那么简单。很多刚接触交换机的同学第一次在公司或实验环境里做两台交换机互联时都会遇到同一个困惑明明配好了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-AVLAN 10发送一个无标签数据帧到交换机SW-A的Access口SW-A会给这个帧打上VLAN 10的标签。如果这个帧需要跨交换机到达PC-BSW-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与链路聚合在冗余方案中的不同作用STPSpanning Tree Protocol不是用来提升性能的它是用来“破坏”环路的。它会计算出一棵无环的转发树把冗余端口置为Blocking状态。这样做保证了安全但代价是冗余链路平时闲着只有主链路断开时才切换。链路聚合则完全不同。它把多个成员口捆成一个逻辑口所有成员口同时转发流量通过哈希算法基于源MAC、目的MAC、IP地址等参数做负载均衡。其中任何一个成员口故障流量自动重新哈希到剩余成员口。它天然没有环路因为整个Eth-Trunk就是一个逻辑端口。2.4 PVID的隐藏作用PVIDPort VLAN ID是端口缺省VLAN的编号。Access口的PVID就是它所属的VLANTrunk口也有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 业务VLANVLAN 10办公、VLAN 20监控 管理VLANVLAN 1默认4. 冗余链路的VLAN配置步骤基于Trunk STP方案这一节先写传统的TrunkSTP方案。它的优点是不要求两台交换机支持链路聚合兼容老设备适合先理解冗余链路和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-A1SW-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那才需要担心环路没有被阻断广播风暴已经在酝酿了。到这里你已经配通了“TrunkSTP”方案的冗余链路。这个方案能保证冗余但带宽浪费。下一节换成更实用的链路聚合方案。5. 用Eth-Trunk实现冗余链路与VLAN流量的负载均衡Eth-Trunk方案是我在实际项目中更推荐的做法。它把两条物理链路捆绑成一个逻辑链路在VLAN配置上更简洁性能上也更有优势。5.1 为什么Eth-Trunk比双Trunk更好用双TrunkSTP方案中同一时间只有一条链路转发流量物理带宽被砍半。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-TrunkVLANIF接口的流量会通过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 10GE0/0/2属于VLAN 20Eth-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端口状态如果是双TrunkSTP方案display stp brief看到有一条链路为Discarding状态说明STP正常工作。如果两条链路都Forwarding需要检查是不是没有启用STP。7.5 验证主机连通性在各VLAN终端上ping对端同VLAN主机ping 192.168.10.2例如SW-A下的PC-A1192.168.10.10ping SW-B下的PC-B1192.168.10.20如果通了说明VLAN 10跨交换机二层通信正常。如果通了但时延很高检查Trunk口是否出现CRC错误或丢包统计。7.6 模拟故障验证冗余在生产环境或实验环境测试时可以将Eth-Trunk中的一个成员口shutdowninterface GigabitEthernet0/0/23 shutdown然后再次display eth-trunk 1确认流量切换到剩余成员口业务不中断。如果是双TrunkSTP方案shutdown主链路后等待STP收敛RSTP通常在秒级内再确认备份链路进入Forwarding状态。这个模拟测试一定要做。不做故障演练的冗余配置都是“纸面冗余”。8. 常见问题与排查思路下表列出冗余链路VLAN配置中最常见的6个问题。问题现象可能原因排查方式解决方案VLAN 10跨交换机不通Trunk口未放行VLAN 10display interface trunk查看allow-pass列表port trunk allow-pass vlan 10全网变慢、交换机CPU高STP未开启物理环路产生广播风暴display stp brief是否所有端口Forwarding全局开启stp enable并配置stp mode rstpEth-Trunk只有一个成员口Up成员口配置不一致或物理链路故障display eth-trunk 1查看故障口状态检查光模块、光纤确保两端成员口数量/速率一致接入终端获取不到IP地址Access口VLAN配错或上联Trunk未放行对应VLANdisplay 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和静态聚合在故障切换时的行为差异。掌握这些你再看企业级三层园区网络的时候就不会觉得配置堆砌而是清楚每一行命令在保护什么、优化什么。
返回列表