首页 / 资讯中心 / 文章详情

VRRP与MSTP联合实验:双网关冗余与二层负载均衡配置指南

VRRP与MSTP联合实验:双网关冗余与二层负载均衡配置指南 ★ FEATURED ARTICLE
最近在做一套综合实验把VRRP和MSTP放到同一个网络里跑折腾了两天踩了不少坑。这个实验用到的设备是某厂商的VRP命令行交换机拓扑不算复杂但把双网关冗余和二层环路消除揉在一起后很多隐藏问题就冒出来了。这套实验非常适合刚学完STP和VRRP的人做进阶练习也适合准备数通面试前拿来梳理思路。我尽量把完整规划和配置过程写清楚尤其是那些文档里不会写的坑比如根桥选错导致流量绕路、VRRP双主、MSTP实例映射不一致等等。只要跟着这个思路做一遍你对网关冗余和二层拓扑的关系会有非常直观的理解。1. 实验整体设计与思路拆解1.1 为什么要把VRRP和MSTP放在一起很多初学者习惯把两个技术分开做实验要么只玩STP看阻塞端口要么只配VRRP主备切换。但真实网络中这两个东西是同时存在的接入交换机负责二层转发需要MSTP防止环路核心交换机负责网关需要VRRP保证网关冗余。如果两者各玩各的会出现一个尴尬局面——VRRP的Master在A设备上但STP的根桥在B设备上数据从接入层上来后明明A是网关却需要绕到B再转发路径莫名其妙变长。这个实验的核心价值就是让你学会让MSTP的实例根桥和VRRP的Master位置对齐实现流量就近转发、故障自动切换。同时通过多实例设计让两条上行链路都能干活而不是一条链路闲着一台设备在睡大觉。1.2 拓扑规划与地址分配我用的拓扑是两台核心加两台接入的双归结构。核心交换机分别是SW1和SW2接入交换机是SW3和SW4。SW3和SW4分别双上行连接到SW1和SW2SW1和SW2之间再拉一条互联链路。这个互联链路非常关键后面会讲为什么。业务上划分两个VLANVLAN10作为办公网段VLAN20作为服务器网段。网关虚拟IP分别规划成192.168.10.1和192.168.20.1。核心交换机的三层接口和VRRP配置都建在VLANIF接口上这样一台核心挂了另一台能立刻顶上终端无感知。MSTP这边规划两个实例实例1只映射VLAN10实例2只映射VLAN20。SW1作为实例1的根桥SW2作为实例2的根桥。这样VLAN10的流量在接入层会优先走向SW1VLAN20的流量优先走向SW2。VRRP那边对应着来VLAN10的Master是SW1VLAN20的Master是SW2。根桥和Master一一配对就实现了真正的负载分担。2. 关键原理梳理2.1 MSTP是怎么做到多实例的传统STP整个交换网络只有一个生成树实例所有VLAN共用一颗树必然导致大量端口被阻塞链路利用率很低。MSTP能创建多个生成树实例每个实例独立计算拓扑再把不同的VLAN映射到不同实例上。这样VLAN10走实例1的树VLAN20走实例2的树两条上行链路都能转发天然做了负载均衡。不过MSTP有个前提同一个MST域内的交换机必须配置相同的域名、修订级别、实例与VLAN映射关系。只要有一台设备映射不对MSTP就会认为它不在同一个域退化成普通的STP甚至产生次优路径这是个很隐蔽的坑。2.2 VRRP的主备本质VRRP把两台核心交换机抽象成一个虚拟路由器对外只暴露一个虚拟IP。设备之间通过组播报文互相通报状态优先级高的成为Master低的成为Backup。Master负责转发终端发往网关的流量Backup在Master故障时立即接管。这里有个细节VRRP抢占模式默认是开启的但如果没有做延迟优先级的抖动会让主备频繁切换。生产环境一般会设置抢占延迟比如20秒让故障恢复后有足够时间稳定拓扑避免网络震荡。2.3 MSTP和VRRP的联动逻辑两者单独看都不复杂但放在一起就要对齐角色。MSTP决定的是二层报文从接入交换机走哪条物理链路上来VRRP决定的是三层网关的Master在哪台设备。如果两者不对齐比如某个VLAN的STP根桥在SW2但VRRP Master在SW1那么接入交换机从根端口发出的数据会先到达SW2SW2查路由发现网关在SW1又从互联链路把报文送过去来回绕一圈。所以实验的核心设计原则是每一个VLAN的MSTP根桥必须和该VLAN的VRRP Master在同一台设备上。这句话是整套实验的灵魂。3. 实验配置实操3.1 基础配置VLAN、Trunk和接口先把VLAN建好所有设备统一规划。# SW1/SW2/SW3/SW4均执行 system-view vlan batch 10 20接入交换机连接核心的两条链路配置为Trunk放行所有业务VLAN。核心连接接入的接口也是Trunk。# SW3连接SW1的接口假设是GE0/0/1 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 # SW3连接SW2的接口假设是GE0/0/2 interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 10 20SW4同样配置。SW1和SW2之间的互联接口我用的是Trunk放行VLAN10和20同时还要确保这个互连链路在MSTP的两个实例里都是转发状态这一点后面验证时会专门讲。核心设备互联接口建议放到一个专门的管理VLAN但这里为了简化就直接放行业务VLAN。3.2 MSTP域配置与实例映射MSTP配置的重点是域参数一致。先在三台参与二层转发的设备上统一配置域# SW1/SW2/SW3/SW4均执行 stp mode mstp stp region-configuration region-name CORE_LAB revision-level 1 instance 1 vlan 10 instance 2 vlan 20 active region-configuration这里要注意active region-configuration这条命令必须敲否则前面的配置不生效。而且四台设备的region-name、revision-level和实例映射必须一字不差大小写都不能错否则MSTP域就分裂了。3.3 配置MSTP根桥和优先级根桥配置分主备。SW1是实例1的主根实例2的备根SW2反过来。# SW1 stp instance 1 root primary stp instance 2 root secondary # SW2 stp instance 1 root secondary stp instance 2 root primary用root primary命令会让设备自动把实例优先级设置为4096root secondary设置为8192比自己手工改优先级省事。但有一点要注意如果网络中已经有其他优先级更低的设备root primary会强制抢占根桥位置可能引起短暂的拓扑震荡。所以生产环境一般提前规划好优先级实验环境倒无所谓。配置完成后可以查看根桥信息确认结果display stp instance 1 brief display stp instance 2 brief如果看到SW1在实例1中的端口角色有Root根端口或Designated指定端口并且该实例的根桥MAC指向SW1说明配置正确。3.4 VRRP配置与优先级调优VRRP配置在核心交换机的VLANIF接口上。先看SW1。# SW1 interface Vlanif10 ip address 192.168.10.2 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.1 vrrp vrid 10 priority 120 vrrp vrid 10 preempt-mode timer delay 20 interface Vlanif20 ip address 192.168.20.2 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.1 vrrp vrid 20 priority 100 vrrp vrid 20 preempt-mode timer delay 20再看SW2。# SW2 interface Vlanif10 ip address 192.168.10.3 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.1 vrrp vrid 10 priority 100 vrrp vrid 10 preempt-mode timer delay 20 interface Vlanif20 ip address 192.168.20.3 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.1 vrrp vrid 20 priority 120 vrrp vrid 20 preempt-mode timer delay 20这样VLAN10的Master是SW1VLAN20的Master是SW2和MSTP实例根桥完全对齐。preempt-mode timer delay 20表示抢占前等待20秒避免因端口震荡导致来回切换。接口上配置的IP必须和虚拟IP不在同一地址否则接口IP和虚拟IP冲突。3.5 上行链路联动VRRP追踪接入接口现实中最怕一种情况SW1是VLAN10的Master但SW1连接SW3的上行接口挂了。此时SW1仍然认为自己是Master继续通告可实际上VLAN10的终端从SW3无法访问SW1了。解决办法是让VRRP追踪上行接口状态一旦接口down自动降低优先级让对端抢占。# SW1追踪连接SW3的上行接口 interface Vlanif10 vrrp vrid 10 track interface GigabitEthernet0/0/1 reduced 30reduced 30表示接口down时优先级降低30原来120变成90SW2的100就比它高了会立即抢占成为Master。SW2的VLAN20也要做同样的追踪追踪到它连接SW3或SW4的接口。注意这里追踪的是二层物理接口不是VLANIF因为物理接口才能反映链路状态。接入交换机不需要配VRRP但需要把连接终端的接口配置为边缘端口避免终端反复上下线触发STP重新计算。# SW3/SW4 interface GigabitEthernet0/0/10 stp edged-port enable4. 验证与测试过程4.1 验证MSTP生成树状态配置完成后先在接入交换机SW3上查看MSTP端口角色display stp instance 1 brief display stp instance 2 brief我实验中的输出摘要类似这样MSTID Port Role State 1 GE0/0/1 ROOT FORWARDING 1 GE0/0/2 ALTE DISCARDING 2 GE0/0/1 ALTE DISCARDING 2 GE0/0/2 ROOT FORWARDING这就对了实例1中SW3到SW1的接口是根端口转发到SW2的接口是Alternate端口阻塞。实例2完全反过来。两个实例各用一条链路谁都没闲着。SW4上的输出也应该类似确保两条接入交换机的事件独立。如果SW3和SW4相同说明拓扑正常。4.2 验证VRRP主备状态在核心交换机上执行display vrrp输出里能看到VLAN10的Master是SW1IP地址192.168.10.2那台VLAN20的Master是SW2。虚拟IP都是192.168.10.1和192.168.20.1。如果看到两台设备同时显示Master那就是出现了双主后面排查部分会讲。还要验证VRRP和MSTP是否对齐。一种快速检查方法在SW1上用display vrrp看Master再到SW3上用display stp instance 1看根桥MAC两者指向同一台设备就是对齐的。如果不对齐就要检查是不是实例映射反了或者优先级配错了。4.3 业务连通性测试与主备切换拿一台测试PC网关配成192.168.10.1ping服务器地址192.168.20.10在VLAN20网段。然后模拟故障。第一种故障把SW1上连接SW3的接口shutdown。正常情况下VLAN10的VRRP应该检测到上行口down优先级降到90SW2抢占成为Master。终端ping网关会有短暂丢包但20秒抢占延迟内能恢复。如果没恢复检查track配置。第二种故障直接把SW1整机关机。此时SW2必须接管VLAN10和VLAN20两个网关。由于SW1的VRRP报文消失SW2在3倍hello时间大概3秒后就会成为Master业务中断时间非常短。这里补充一个小技巧用display vrrp brief可以快速看每个VRID的Master状态比display vrrp输出更精简适合在切换测试时反复刷新。5. 常见问题与排查实录5.1 MSTP域不一致导致端口异常我第一次做这个实验时SW3上的region-name多了个空格结果四台设备看起来配置一样但SW3的MSTP端口全部变成了Forwarding环路直接在接入层出现。查看边界端口信息display stp region-configuration四台设备的域名、修订级别、实例映射必须完全一致。这个命令只要有一台输出不同就把配置复制粘贴吧别手动敲了。5.2 VRRP双主核心互联链路被阻塞实验中我故意把SW1和SW2之间的互联链路设为Access只放行VLAN1结果VLAN10和VLAN20的VRRP报文无法通过互联链路互通两台核心都认为自己应该当Master。检查display vrrp看到两个Master。解决办法核心互联Trunk要放行所有承载VRRP的VLAN。同时要确认这条互联链路在MSTP的实例1和实例2中都是Designated端口。当SW1是实例1的根桥、SW2是实例2的根桥时互联链路在两边各自是指定端口不会阻塞。如果你发现互联链路在某个实例中被阻塞八成是根桥选择出了问题回到3.3节检查根优先级。5.3 流量路径绕路MSTP根桥和VRRP Master不对齐这是一种比较隐蔽的问题。SW1是VLAN10的Master但SW3在实例1中的根端口在SW2一侧所有VLAN10的流量先从SW3到SW2再经SW2从互联链路送到SW1的网关路径多了一跳。虽然业务能通但延迟和带宽都有浪费。排查方法很直接在接入交换机上用display stp instance 1 brief看根端口连到哪台设备再用display vrrp看VLAN10的Master是哪台。两者不一致就调整MSTP实例的根桥优先级让根桥和Master统一。5.4 抢占延迟引发的切换回来了但业务还是断排查过一个问题主链路恢复后VRRP抢占延迟20秒到了Master抢回来了但终端还是无法上网。后来发现是接入交换机上的STP还在收敛根端口虽然切换到恢复的那条链路但MAC地址表没老化还在往阻塞端口发流量。解决办法是配置STP拓扑变化触发MAC地址表刷新或者把连接终端的接口配置为边缘端口减少拓扑变化次数。5.5 常用排查命令速查表目的命令查看MSTP实例端口角色display stp instance 1 brief查看MSTP域配置display stp region-configuration查看VRRP摘要display vrrp brief查看VRRP详情display vrrp查看MAC地址表display mac-address查看接口状态display interface brief查看STP根桥display stp root这套实验做完最重要的收获不是背会命令而是建立一种角色对齐思维。MSTP和VRRP是两个层面的协议一个管链路一个管网关但最终服务的是同一条流量路径。配置前先画一张表把VLAN、MSTP实例、根桥、VRRP主备、物理链路全列出来对着表配基本不会乱。最后再分享一个小技巧实验里所有MSTP实例的映射尽量控制在少数几个不要一个VLAN一个实例。实例太多会加大CPU和内存开销而且根桥计算复杂。像我这样两个VLAN、两个实例既能演示负载分担又不会把排错复杂度拉满。如果你打算扩展到多VLAN场景建议把网段、VLAN、实例、VRRP备份组做成一张映射表后续维护会轻松很多。
阅读完成 · 觉得有帮助?
咨询建站