资讯详情

VRRP+MSTP双冗余实验:华为园区网高可用从原理到排障

📅 2026/10/19 5:26:12 | 华诺云谱 👁 阅读
VRRP+MSTP双冗余实验:华为园区网高可用从原理到排障
做网络实验这么多年要说最值得花时间亲手敲一遍的组合VRRPMSTP这个“双冗余”方案绝对排在前列。标题看起来只是两个协议缩写但放进一套华为实验环境里实际操作下来你会发现二层冗余和三层冗余的协同机制、故障切换的细节、甚至排障时的判断逻辑全都串在了一起。这篇文章我就以一套双核心、双接入的园区网拓扑为例把VRRPMSTP综合实验从原理到配置、从验证到排障完整过一遍。这套实验解决的痛点其实非常现实网络里有多个VLAN、多台核心交换机、多条上联链路时网关挂了怎么办二层环路怎么消除两条链路只走一条岂不是浪费VRRP负责让两台三层设备共享一个虚拟网关做到“网关不裸奔”MSTP负责在多个VLAN场景里让不同VLAN走不同链路既能防环又能负载分担。两个协议叠加起来就是一个典型的高可用网络模型。这篇文章适合刚学完网络基础想进阶的朋友也适合正在备考认证、想在模拟器里做综合练习的人老手也可以看看我在排障环节踩过的那些坑。1. 这个实验到底在解决什么问题1.1 一个典型的单点故障场景想象一下某公司的网络终端分布在好几栋楼核心层两台交换机汇聚层、接入层各有若干台。如果只给一台核心交换机配了业务网关它一旦宕机整个网段的终端全部断网如果接入交换机到核心只有一根线这根线被施工挖断业务也得停。传统STP能防环路但大量VLAN共用一棵树很多链路被阻塞带宽资源白白浪费。这个实验想要模拟的就是在这种“既要有冗余、又要尽量不浪费链路”的要求下怎么把网络调成一台设备故障时业务依然在线、平时流量又能分流的状态。我在设计实验时选了4台交换机两台做核心、两台做接入核心之间、接入到核心之间都用双链路互连。这样的拓扑在真实场景里非常常见交换机数量也不多eNSP启动起来很轻松。不要小看这4台设备组成的“小网络”它把生产环境里最核心的冗余设计逻辑都浓缩进去了。1.2 VRRP和MSTP各自负责什么虚拟路由冗余协议VRRP解决的是三层网关冗余问题多台路由器或三层交换机组成一个VRRP组对外提供一个虚拟IP作为终端网关。实际只有一台Master在工作其余Backup在监听Master故障后Backup自动接手终端感知到的网关地址始终不变。MSTP多生成树协议解决的是二层问题它在交换机之间通过BPDU协商出一棵无环的逻辑树不同VLAN可以映射到不同实例每个实例独立计算阻塞端口从而实现链路负载分担。两者一上一下正好把三层和二层的高可用都覆盖了。打个比方VRRP像是给一栋楼备了两个前台对外只有一个总机号码一个前台忙的时候另一个能立刻顶上MSTP则像是给楼里的不同部门规划了不同的疏散通道避免所有人挤在同一条走廊里也让楼里不会因为走不通而出现混乱。两套机制各管各的但要配合得好得遵循后面讲的“主备对齐”原则。1.3 这次实验适合谁如果你是刚开始学交换技术的阶段建议先把STP/RSTP、VRRP单点实验做熟再来碰这个综合实验。这个实验的价值不在于命令本身有多难而在于它强迫你理解“链路状态”与“网关状态”之间的联动关系为什么根桥要跟着VRRP Master走为什么VLAN要映射到不同实例为什么一条链路断了之后阻塞端口会切换、VRRP组成员会变化这些问题的答案都是靠自己做一遍实验、再亲手制造故障才能体会到的。只会背配置命令不够能解释清楚“故障发生后流量绕到了哪里”才算真正吃透。2. 核心原理拆解VRRP和MSTP怎么配合2.1 VRRP的选举与工作流程VRRP的工作机制可以类比成小区门口的两个保安。对外只公布一个“门牌号”虚拟IP业主们只认这个门牌号平时由其中一个保安Master出来接待另一个Backup在旁边待命。Master每隔一秒发送一次VRRP通告报文目的组播地址224.0.0.18告诉Backup“我活着”。如果Backup连续3秒收不到通告就会立刻接管虚拟IP成为新的Master。选举Master时优先级1254默认100最大的设备胜出优先级相同时接口IP更大的设备胜出。实验里为了明确主备关系通常会把一台核心的优先级调高比如120另一台保持默认。这里有一个很容易被人忽略的点VRRP默认是开启抢占的也就是说现在Master的优先级更高时它会把当前的Master抢过来。这在设备上线、网络抖动的场景下会引起不必要的切换所以生产环境一般会配置抢占延时比如20秒让设备稳定后再接管。华为设备上查看VRRP状态用的是display vrrp输出里的State字段会明确显示Master还是Backup。我实验时习惯清空后再看有时候因为配置没刷新容易误判。2.2 MSTP的多实例与根桥选举MSTP在RSTP的基础上引入了“实例”的概念。实例可以理解成独立的生成树每个实例可以绑定一批VLANVLAN的数据就在各自实例的树内转发。华为交换机默认所有VLAN都挂在实例0上你如果想让VLAN 10走实例1、VLAN 20走实例2就必须在MSTP域配置里把它们分别映射进去。MSTP还有“域”的概念类似给一组交换机贴相同的标签区域名region-name、修订级别revision-level和实例与VLAN的映射关系必须完全一致设备才会认为彼此在同一个域里。否则BPDU虽然能互通但MSTP计算出来的生成树会不一致很多新手在这里翻车。域内每个实例独立选举根桥根桥优先级的默认值是32768配置了stp instance 1 root primary之后优先级会变成0配置root secondary会变成4096这样就能人为地把不同实例的根桥固定到不同核心上。根桥的位置决定了所有二层流量的汇聚方向。接入交换机上拿到最优BPDU的那个端口会成为根端口Root次优路径会变成Alternate口并处于阻塞状态。这就解释了为什么MSTP能实现负载分担只要让VLAN 10和VLAN 20的根桥分别落在两台核心上接入交换机就会为不同实例选择不同的上联口作为根端口另一个实例则走另一条上联。2.3 主备对齐二层根桥要跟三层Master站在一起这是整个实验最核心的一条设计原则。如果没有把VRRP Master和MSTP实例根桥放在同一台设备上会让流量绕远路。举个例子VLAN 10的VRRP Master在SW1但实例1的根桥在SW2。终端要访问外网时二层流量顺着MSTP树先汇聚到根桥SW2再由SW2经核心间链路送到SW1上的网关SW1转发出去以后回程报文又要从SW1绕回根桥SW2才能进入二层网络。一来一回核心间链路带宽被白白占用时延也增加了。万一核心间链路出了故障业务会直接中断。所以规范的做法是VLAN 10的VRRP Master和实例1的根桥都放在SW1VLAN 20的VRRP Master和实例2的根桥都放在SW2两台核心互为备份、各司其职。这样每个VLAN从二层到三层都是“一条直线”出故障时另一台核心又能完整接管。做综合实验时这个对齐关系一定要先在规划表里写清楚别到了配命令的时候再临场拍脑袋。很多真实网络卡顿查不出原因最后发现就是根桥和Master位置错开导致的绕路。3. 实验拓扑和地址规划3.1 拓扑结构和接口连接我使用的是华为eNSP模拟器交换机型号选S5700系列。拓扑如下SW1和SW2为核心层SW3和SW4为接入层。SW1与SW2之间用GE0/0/3互连SW1的GE0/0/1接SW3的GE0/0/1SW1的GE0/0/2接SW4的GE0/0/1SW2的GE0/0/1接SW3的GE0/0/2SW2的GE0/0/2接SW4的GE0/0/2。每对上联都是Trunk放行实验涉及的所有VLAN。PC1连接在SW3的GE0/0/3上划入VLAN 10PC2连接在SW4的GE0/0/3上划入VLAN 20。核心之间的链路也是Trunk。这样画出来之后SW3—SW1—SW2—SW3本身是一个环SW4—SW1—SW2—SW4同样是一个环MSTP会在这些环上选择性地阻塞端口防止广播风暴。这里要注意接入交换机到核心的两条上联不能只考虑“一个VLAN走一条线”因为Trunk放行的是两个VLANMSTP实例决定谁在哪条链路上转发。3.2 地址、VLAN、VRID和MSTP实例规划表在做实验之前我建议先把规划表写出来避免配置一半又回头改。以下是我这次实验的参数参数项VLAN 10VLAN 20网段192.168.10.0/24192.168.20.0/24终端PCPC1: 192.168.10.10/24PC2: 192.168.20.10/24虚拟网关192.168.10.254192.168.20.254VRRP组编号VRID 1VRID 2SW1角色Master优先级120Backup默认100SW2角色BackupMaster优先级120MSTP实例Instance 1Instance 2SW1根桥角色实例1主根实例2备根SW2根桥角色实例1备根实例2主根从表里能直接看出来主备对齐的设计思路VLAN 10的主网关和主根都在SW1VLAN 20的主网关和主根都在SW2。SW1和SW2各自的Vlanif接口地址分别配置为192.168.10.1、192.168.20.1和192.168.10.2、192.168.20.2。虚拟IP不占用接口IP接口IP是为了让设备本身参与三层通信也可以用于管理。3.3 环境准备与基础链路检查开始配置之前先把4台交换机的接口up状态确认一下。eNSP启动后等设备运行到能登录再配置设备没起来就敲命令容易出现命令丢失的情况。特别提醒一下eNSP里有些设备的STP默认是启用的有些版本默认关闭最好进入系统视图后执行display stp先看一眼如果显示STP未使能后面再手动执行stp enable。先做最基础的链路检查在所有Trunk口上配置好VLAN放行之后我一般会在SW3上执行display port vlan确认上行接口已经把VLAN 10和20都放行了再用display mac-address看看能不能学到终端的MAC。二层链路通了再往下做MSTP和VRRP排障范围会小很多。这里多做一步检查能省下后面排障的好几个小时。4. 华为设备配置全流程4.1 交换机基础配置先给4台交换机制建VLAN并配置接口。以SW1为例sysname SW1 vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 10 20 interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20SW2的三条Trunk口配置完全类似只是编号对应自己的接口。SW3和SW4除了两条上联Trunk之外还要把连接PC的接口配成Access并划入对应VLAN。SW3连接PC1的接口interface GigabitEthernet0/0/3 port link-type access port default vlan 10SW4连接PC2的接口划入VLAN 20。这里有个细节接入交换机的两个上联口也要放行两个VLAN不要只放行本机PC所在的VLAN。因为VRRP通告报文要从Vlanif10这个三层接口发出而Vlanif10的底层是VLAN 10的广播域如果Trunk没把VLAN 10放到SW2SW2的VRRP Backup就收不到Master的通告主备状态会一直处于不稳定状态。我见过有朋友为了“隔离”只放行单个VLAN结果VRRP状态起不来就是这个原因。4.2 MSTP域与根桥配置四台交换机都要进入MSTP域配置内容必须完全一致。先在每台交换机上把STP模式改成MSTPstp mode mstp然后配置MSTP域。以SW1为例stp region-configuration region-name LAB revision-level 1 instance 1 vlan 10 instance 2 vlan 20 active region-configurationregion-name可以随便起但四台必须相同revision-level默认是0我习惯写成1同样四台一致instance 1 vlan 10的意思是把VLAN 10从默认的实例0迁移到实例1里。配置完不要忘记执行active region-configuration这条命令才是真正让配置生效的动作很多人就是漏了它导致后来查看配置一切正常但MSTP完全没有按实例工作。四台全部配完后在SW1上把实例1设为主根、实例2设为备根。root primary会把优先级调整到0root secondary调整到4096这样人为指定的根桥在MSTP选举中几乎不可能被其它默认优先级设备抢走stp instance 1 root primary stp instance 2 root secondary在SW2上执行相反的配置stp instance 1 root secondary stp instance 2 root primarySW3和SW4不配置根桥保持默认优先级。配完后在SW1上执行display stp instance 1 brief正常情况会看到SW1自己是根桥在SW3上执行同样的命令会看到一个上联口是Root角色另一个上联口是Alternate角色阻塞。实例2的情况正好相反SW3的上联口角色互换。看到这种现象就说明MSTP的负载分担已经生效了。4.3 VRRP网关冗余配置接下来在核心交换机上配置三层接口和VRRP。SW1的配置如下interface Vlanif10 ip address 192.168.10.1 255.255.255.0 vrrp vrid 1 virtual-ip 192.168.10.254 vrrp vrid 1 priority 120 vrrp vrid 1 preempt-mode timer delay 20 interface Vlanif20 ip address 192.168.20.1 255.255.255.0 vrrp vrid 2 virtual-ip 192.168.20.254SW2的配置如下interface Vlanif10 ip address 192.168.10.2 255.255.255.0 vrrp vrid 1 virtual-ip 192.168.10.254 interface Vlanif20 ip address 192.168.20.2 255.255.255.0 vrrp vrid 2 virtual-ip 192.168.20.254 vrrp vrid 2 priority 120 vrrp vrid 2 preempt-mode timer delay 20解释一下这些参数vrrp vrid用来标识VRRP组VLAN 10和VLAN 20是两组独立的VRRPVRID可以都叫1也可以叫1和2我习惯按VLAN号区分好记好查virtual-ip必须和PC上配置的网关一致这是最关键的一行priority 120让SW1在VRID 1里成为MasterSW2在VRID 2里成为Masterpreempt-mode timer delay 20表示抢占开启但延时20秒避免网络抖动时来回切换。配置完执行display vrrp正常情况下SW1上VRID 1状态是Master、VRID 2状态是BackupSW2正好相反。有一点要说明Backup接口上虽然配置了虚拟IP但它不会响应ARP请求只有Master才会把虚拟IP映射到自己的MAC。换句话说终端网关的ARP条目里看到的MAC永远是Master设备的虚拟MAC华为的虚拟MAC一般以00-00-5e-00-01开头后面带VRID编号。看到这个MAC就知道网关冗余已经工作了。4.4 联调验证从二层转发到三层切换配置完成后先用display stp region-configuration在每台设备上确认四台交换机的域配置一致再在PC1上ping 192.168.10.254PC2上ping 192.168.20.254两个虚拟网关必须都能通。如果ping不通先回头看二层链路和ARP不要急着改VRRP参数。接下来看路径是否正确。在SW3上分别执行display stp instance 1 brief display stp instance 2 brief实例1的结果如果显示上联SW1的口是ROOT上联SW2的口是ALT就说明VLAN 10的二层流量确实走SW1方向实例2则相反说明VLAN 20走SW2方向。再回SW1执行display vrrp确认VRID 1是Master这样就能证明VLAN 10的三层网关也在SW1。二层和三层在同一台设备上路径是最优的。我当时做完这步还试过在PC1上持续ping网关然后循环执行display vrrp看状态是否稳定。VRRP状态稳定这一步很重要因为如果STP收敛有问题VLAN 10的广播域会间歇性不稳定VRRP通告也容易被影响表现为Master频繁变化、ping时通时断。遇到这种情况先解决STP的问题再回头看VRRP。4.5 故障切换模拟综合实验里最过瘾的一步就是制造故障。我推荐做两个故障。故障一断掉SW3到SW1之间的链路。在SW1的GE0/0/1口执行shutdown然后在SW3上重新观察实例1的端口角色原来阻塞的Alternate口会在几秒内变成RootVLAN 10的流量全部改走SW2方向。由于VLAN 10的网关Master仍在SW1流量到SW2之后会通过核心间链路进入SW1的三层网关所以业务不会中断但这段期间路径确实绕了。如果你想做更彻底的故障模拟可以把核心间链路也断开此时MSTP重新收敛VRRP的Master会切换到SW2不过网络会短暂中断几秒。注意做这类模拟前先保存好配置文件结束后记得undo shutdown恢复端口。故障二SW1设备整体故障。我直接关掉SW1PC1重新ping网关会发现大约3秒左右VLAN 10的VRRP组被SW2接管虚拟IP从SW2的Vlanif10上响应PC1网关依然可通。这个场景最能说明VRRP的价值。做完记得把SW1重新启动等VRRP和MSTP重新收敛后再看两台设备的状态是否回到预期。5. 常见问题与排查实录5.1 高频问题速查表我把这个实验里各种常见问题整理成一个速查表基本覆盖了eNSP和真机实验里会遇到的情况排查的时候可以直接按图索骥问题现象可能原因排查命令与思路VRRP两组都显示Master或都显示Backup两台设备之间VLAN没放行通告无法互通或其中一台没配虚拟IPdisplay port vlan检查Trunk放行display vrrp对比两台设备状态MSTP实例阻塞端口位置不对根桥没有固定在预期设备上或域配置不一致display stp instance x brief查看根桥和端口角色display stp region-configuration对比域参数VLAN 10的流量绕路实例1主根和VRRP Master不在同一台设备对比display stp和display vrrp按主备对齐原则调整PC一直拿不到网关响应三层Vlanif没有配IP或虚拟IP没生效PC网关填写错误在PC上查看 arp -a看网关MAC是不是虚拟MAC核心设备重启后VRRP频繁切换抢占默认开启原Master恢复后又抢回来配置preempt-mode timer delay 20display stp显示STP未使能eNSP部分设备默认关闭STP系统视图下执行stp enableMSTP配置完了没反应没有执行active region-configuration重新进入region-configuration补一条active5.2 几个值得记住的排查细节排查VRRP问题时我习惯先在PC上ping虚拟IP如果通再在核心交换机上查看Master状态如果不通先别急着怀疑VRRP优先查二层连通性。二层不通VRRP的通告和业务流量都走不了三层状态再正常也是白搭。怎么快速判断二层在接入交换机上执行display mac-address看能不能学到PC的MAC以及两个VLAN对应的MAC表项是否正确。MAC表正常说明广播域已经通了。排查STP问题时有一个特别有用的命令是display stp abnormal它会直接列出异常端口。不过这个命令在eNSP的有些版本里不支持所以更通用的做法还是display stp instance x brief看角色再用display stp interface GigabitEthernet0/0/1查看端口详细状态。如果某个端口一直被阻塞而你希望它恢复多半是优先级参数没有生效回查根桥配置。还有一个真机才会出现、模拟器里遇不到的问题别忽略了交换机上的Trunk口如果不指定PVID默认PVID是VLAN 1。如果上游交换机的接口PVID对应成了其它VLAN二层标签行为就会异常。遇到排查不通的情况顺手在两端对比一下display port vlan和PVID很多时候问题就是这种基础配置造成的。6. 个人实操经验与后续扩展方向这类综合实验我在eNSP里做过很多遍每次都有不同收获。我最开始做的时候习惯把所有配置一股脑敲完再验证结果STP、VRRP、链路状态混在一起出了问题完全不知道从哪查起。后来我总结出一套顺序先配VLAN和Trunk再启用MSTP并验证端口角色最后配VRRP。每一步验证通过再进入下一步排障范围会非常清晰。用大白话说就是“先通二层再通三层最后做冗余联动”。配置VRRP时还有一个小技巧值得分享在命令行里给每个Vlanif配置完成后可以紧接着用display this看看当前接口配置确认命令没有因为敲错而没生效。模拟器里最常见的错误是敲命令时上下文不对命令虽然进去了但落在错误的接口或错误的视图里。养成display vrrp、display stp、display current-configuration三步检查的好习惯比遇到问题翻文档有用得多。这个实验的扩展空间也很大。比如给核心交换机的上行口配上Eth-Trunk把两条物理链路捆绑成一个逻辑链路STP上看成一个端口配置和维护都简化了再比如用BFD联动VRRP让Master在检测到上行链路故障时自动降低优先级实现更快的三级联动切换。也可以在接入层把交换机和核心之间的链路配置成监视链路让接入交换机跟随核心状态自动调整。把这些扩展点一一试过之后你对园区网高可用设计的感觉会完全不一样。最后说说我个人在故障切换体会最深的一点VRRP的切换并不等于业务无感知终端侧还要等待ARP重新解析新的网关切换期间会出现几秒钟的丢包。所以不要以为在交换机上看到VRRP状态秒切就万事大吉真正验收实验时一定要在PC上持续ping全程观察丢包时间和恢复时间。能做到这个颗粒度的实验复盘才算真正做完了VRRPMSTP的综合实验。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑