资讯动态

eNSP实战:VRRP与STP协同配置双核心冗余网络

发布时间:2026/10/22 21:15:53 来源:尧图企业网站定制
前两天有人问我eNSP里VRRP和STP该怎么放在一张拓扑里练网上的教程要么单讲VRRP要么单讲STP合在一起就不知道怎么搭。这个问题我太有感触了。练协议就像练武功单个招式都会一上实战就乱。VRRP是网关冗余STP是二层防环真实园区网里几乎永远同时出现。这篇就按一个完整的双核心冗余场景从头到尾走一遍包含拓扑规划、原理回顾、完整配置、故障演练、排错速查所有命令都在eNSP里实测可跑。适合刚学数通、准备网工认证、或者协议忘得差不多想捡回来的人。1. 实验需求与拓扑规划先把设备摆明白1.1 为什么VRRP和STP要放到同一张拓扑里练先说需求来源。很多教程在讲VRRP时只有两台交换机加一台PC看起来很简单讲STP的时候又是另一套拓扑。但真实项目里这两个协议是同时起作用的网络要有网关冗余就必然有两台核心设备同时接在二层网络上既然两台核心都要接接入交换机物理链路就一定会出现环路而出现环路就必须让STP挡掉多余的路径。把两个协议拆开练的问题在于你永远看不到它们之间的互相影响。比如VRRP的心跳报文走的是二层组播如果中间路径被STP阻塞了主备状态会不会出问题再比如STP的根桥和VRRP的Master要不要选在同一台设备上这些只有在完整拓扑里才会暴露出来。所以这次实验的核心不是“会敲命令”而是让读者明白两个协议是怎么在同一个网络里协作的。1.2 拓扑结构与VLAN/网关规划表我设计的拓扑是这样的两台核心交换机SW1、SW2两台接入交换机SW3、SW4。SW1和SW2之间有一条互联链路SW3、SW4各自双上联到SW1和SW2物理上形成两个环路。PC1接在SW3下PC2接在SW4下分属VLAN 10和VLAN 20。为了演示负载分担VLAN 10的VRRP主设备选SW1VLAN 20的VRRP主设备选SW2STP根桥选SW1。设备角色互联接口备注SW1核心AGE0/0/1连SW2GE0/0/2连SW3GE0/0/3连SW4STP根桥VLAN10的VRRP MasterSW2核心BGE0/0/1连SW1GE0/0/2连SW3GE0/0/3连SW4VRRP优先级更高的是VLAN20SW3接入一GE0/0/1连SW1GE0/0/2连SW2GE0/0/3接PC1PC1划入VLAN10SW4接入二GE0/0/1连SW1GE0/0/2连SW2GE0/0/3接PC2PC2划入VLAN20地址规划直接抄这张表VLAN网段虚拟网关SW1 VLANIFSW2 VLANIF终端VLAN 10192.168.10.0/24192.168.10.254192.168.10.251192.168.10.252PC1: 192.168.10.10VLAN 20192.168.20.0/24192.168.20.254192.168.20.251192.168.20.252PC2: 192.168.20.10这里特别注意两台核心的VLANIF真实地址不能配成虚拟IP否则就成了虚拟IP拥有者VRRP的优先级逻辑会变成255负载分担效果就不对了。1.3 eNSP环境准备与设备选型建议eNSP版本不用太纠结近几年的版本都行。设备选型建议核心交换机选S5700接入交换机也用S5700没有额外差别两台接入如果型号不同也没关系不影响二层功能。所有PC用基础PC型号配置静态IP。有一点必须提醒eNSP里S5700默认工作模式是MSTP不是经典STP也不是RSTP。如果你在配置时不主动把模式改成RSTP后续查看STP端口角色时容易和自己脑子里的模型对不上。所以实验第一步建议先把所有设备统一改成RSTP。另外eNSP启动四个交换机后需要一点时间不要刚启动就急着敲配置等接口状态稳定再操作否则容易出现端口还没UP导致VRRP初始化的假象。2. 核心原理解读VRRP和STP各自管什么2.1 VRRP的虚拟IP、状态机与主备切换VRRP全称虚拟路由冗余协议核心思想是一组设备共享同一个虚拟IP终端把这个虚拟IP当网关。正常时只有Master响应终端的ARP请求Backup只默默收Master周期发送的VRRP通告报文。通告报文目的组播地址是224.0.0.18IP协议号112默认1秒发一次。判断主备切换的机制很简单Backup连续3个通告周期没收到Master的报文也就是3秒它就会认为Master挂了自己升为Master。升级之后虚拟IP对应的虚拟MAC也一起接管终端不需要任何感知。比如虚拟MAC是0000-5e00-01xxxx就是VRIDVRID 10对应0a这样终端ARP缓存的网关MAC会自动通过新报文刷新。优先级范围是0到255默认100。两台设备优先级相同时接口IP地址大的设备优先成为Master但这个细节不建议依赖练习时明确配置优先级更直观。抢占模式默认开启优先级高的设备恢复后会重新夺回Master为了防止主备反复横跳可以给抢占加一个延迟时间。在华为设备上写VRRP必须把VRID和虚拟IP配置到VLANIF接口下同一个VRID内的虚拟IP在所有设备上必须一致否则两台设备各说各话根本组不成一个虚拟路由器。这个点很多人第一次做容易踩后面排错部分还会提到。2.2 STP的BPDU、根桥选举与端口角色STP解决的是二层环路问题。没有STP时交换网络出现物理环路会引发广播风暴、MAC地址抖动交换机CPU被打满整个网络瘫痪。STP的解决思路是让交换机之间交换BPDU报文也就是桥协议数据单元通过比较选举出一棵无环的树。BPDU里有几个关键字段根桥ID、根路径开销、发送者桥ID、发送者端口ID。选举过程分三层。第一层全网络优先级最小的桥成为根桥优先级一样时MAC地址小的胜出。第二层每个非根桥挑一条到根桥开销最小的路径对应的本地端口叫根端口。第三层每条链路上再比较发送者离根更近的那台交换机的端口成为指定端口剩下既不是根端口也不是指定端口的端口就进入阻塞状态。现代网络一般不用经典STP而是RSTP。RSTP把端口角色细分为根端口、指定端口、Alternate端口和Backup端口状态收敛从几十秒缩短到秒级。阻塞端口在RSTP里叫Discarding状态术语上要能区分。配置层面只是一个stp mode rstp的差别但理解RSTP的快速收敛机制对排障很有帮助。2.3 两个协议配合时的协同点与常见误区一个很常见的误区是担心STP把核心交换机之间的互联链路阻塞掉导致VRRP心跳不通。实际上STP选路有严格逻辑根桥上的所有端口都是指定端口如果核心A选了STP根桥核心A到核心B的互联端口一定是指定端口不会被阻塞真正被阻塞的是接入交换机到核心B的上联口。所以VRRP通告报文能正常走核心间链路。另一个协同点是根桥位置。如果VRRP的Master和STP的根桥不在同一台设备终端流量到达网关后还要再从根桥路径绕一圈转发效率变差。比如VLAN 10的Master在SW1根桥却是SW2PC的流量先上到SW1网关访问外网或跨VLAN时还要经过SW2路径浪费。所以练习规划时就让SW1既是STP根桥又是VLAN10的MasterSW2承担VLAN20的Master两台都不闲着。还有一个容易忽视的点VRRP心跳报文属于二层组播它依赖的是VLAN广播域的通畅性。两台核心之间的Trunk必须放通VRRP所在的所有VLAN如果只放通了业务VLAN忘了放通VLAN10结果就是VRRP组10的两个设备互不可见全部认为自己应该当Master出现双主脑裂。3. 完整配置过程从VLAN到VRRP一次打通3.1 基础二层配置VLAN与Trunk链路配置顺序建议从底层到上层。先创建VLAN再放通Trunk再配STP最后配VRRP这样后面出问题时排查层次清晰。SW1上的基础配置system-view 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、SW3、SW4的Trunk配置几乎一样区别只是接口编号。这里提醒一个细节核心与接入之间的Trunk仅放行需要的VLAN就够了不要图方便写成port trunk allow-pass vlan all。练习里没问题但真实环境中Trunk上意外放行VLAN会扩大广播域甚至把环路延伸到不该有环的地方。SW3和SW4上连接PC的接口配置为Access并划入对应VLAN。以SW3为例vlan batch 10 20 interface GigabitEthernet0/0/3 port link-type access port default vlan 10 stp edged-port enable我特意在这里把stp edged-port enable一起配了。这个命令的意思是把接入PC的端口声明为边缘端口交换机一UP就直接进入转发状态不用等STP收敛。PC终端不会发BPDU所以这样配置安全且高效。SW4的GE0/0/3对应VLAN 20命令格式完全一样。3.2 STP配置切换RSTP、指定根桥、开启保护四台设备都进入系统视图执行stp mode rstp然后分别在SW1和SW2上设置根桥优先级stp priority 4096stp priority 8192优先级越小越容易成为根桥所以SW1是根桥SW2是备份根桥。SW3、SW4维持默认优先级32768即可。如果不想记优先级数值也可以在SW1上直接用stp root primary在SW2上用stp root secondary效果等价但练习里建议用优先级方便理解选举逻辑。在接入交换机上全局开启BPDU保护stp bpdu-protection有了这个保护如果边缘端口意外收到BPDU报文交换机会把端口关闭而不是让该端口参与STP计算防止有人私接交换机导致环路。注意这句话的意思是一旦触发端口状态会变成Down需要手动restart或重新undo shutdown恢复不是自动恢复。3.3 VRRP配置虚拟网关与负载分担核心交换机上先给VLANIF配真实IP再创建VRRP组。SW1这样配置interface Vlanif10 ip address 192.168.10.251 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.254 vrrp vrid 10 priority 120 vrrp vrid 10 preempt-mode timer delay 5 interface Vlanif20 ip address 192.168.20.251 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.254SW2配置要反过来让VLAN 20成为它的强项interface Vlanif10 ip address 192.168.10.252 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.254 interface Vlanif20 ip address 192.168.20.252 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.254 vrrp vrid 20 priority 120 vrrp vrid 20 preempt-mode timer delay 5解释一下为什么加preempt-mode timer delay 5。抢占默认是立即生效的如果SW1从故障中恢复它会立刻把VLAN10的Master抢回来而抢回来的瞬间会造成一次短时切换。加上5秒延迟可以让网络先稳定一小段避免主备来回抖动。在真实环境里这个延迟时间根据业务重要性调整一般3到10秒。另外如果实验拓扑有连接外网的出口链路通常还会配合vrrp vrid 10 track interface监控上行口上行口掉线时降低自身优先级主动让位。本实验没有配置出口就不做这步但要知道有这个机制。3.4 终端PC配置与基础连通性验证PC1和PC2在eNSP里直接双击配置PC1IP 192.168.10.10掩码255.255.255.0网关192.168.10.254PC2IP 192.168.20.10掩码255.255.255.0网关192.168.20.254配置完成后先做一次基础验证。PC1 ping 网关192.168.10.254应该通PC2 ping 网关192.168.20.254应该通。PC1再ping PC2的192.168.20.10应该也通。因为PC1把报文发给虚拟网关SW1作为VLAN10的Master查路由表VLAN20是直连网段直接转发。如果PC1能ping通网关但ping不通PC2优先检查两台核心的VLANIF是否都配了IP以及两个VLAN是否都存在于所有Trunk的放行列表里。4. 故障演练与验证方法协议不是配完就完事4.1 静态验证看懂display vrrp和display stp输出配置完成后先看静态状态。在SW1上执行display vrrp正常输出里VRID 10的状态是MasterVRID 20的状态是Backup。在SW2上看结果应该反过来。这个输出第一屏就够判断主备关系了不需要看全量。如果显示Initialize说明VLANIF没有UP优先检查接口状态和IP配置。再在SW3上执行display stp brief会看到两个上联口一个角色是ROOT、状态FORWARDING另一个角色是ALTERNATE、状态DISCARDING。ALTERNATE端口就是被阻塞的备用路径这是正常现象不是故障。在SW4上看应该是同样的结果因为根桥是SW1两个接入交换机到根桥的最近路径都走SW1。SW2上执行display stp可以看到自己的桥优先级是8192根桥是SW1的桥ID。这四个命令组合起来就能把“根桥在哪里、备份端口在哪里、主备状态对不对”全部确认。4.2 故障模拟一核心设备宕机后的VRRP切换静态验证只是开头真正的关键是让故障发生一次。我在实验里常用的办法是模拟SW1整台设备宕机在SW1上把GE0/0/1、GE0/0/2、GE0/0/3全部shutdown同时保持VLANIF10还在但底层接口全断相当于核心设备从网络中消失。操作前先在PC1上连续ping网关192.168.10.254观察输出。然后执行shutdown操作你会看到ping丢几个包随后恢复。丢包数量取决于切换速度和ping间隔通常不超过3到5个。因为SW2在连续3个通告周期没收到SW1的报文后会升为Master并开始响应虚拟IP整个过程3秒左右。此时再到SW2上执行display vrrpVRID 10已经变成Master。这就是VRRP的价值终端只是短暂丢包不需要改任何配置网关自动由另一台设备接管。恢复SW1的接口后由于配置了5秒抢占延迟需要等约5秒SW1会重新抢回VLAN10的Master。如果没有延迟恢复瞬间可能出现一次不必要的切换。实操中你会发现这个延迟配置对网络稳定性非常重要。如果想看得更细可以在SW2的GE0/0/1上开启抓包观察VRRP组播224.0.0.18的报文。正常时1秒一个Master故障后SW2发不出周期性报文不对应该是SW2作为Backup只收不发故障切换后SW2开始周期性发送VRRP通告。这个抓包过程能直观看到协议时间线比单纯看命令输出有趣得多。4.3 故障模拟二链路中断后的STP收敛STP的验证和网络环路相关。在SW3上当前根端口是连接SW1的GE0/0/1备用阻塞端口是连接SW2的GE0/0/2。现在模拟上联链路中断在SW3上执行interface GigabitEthernet0/0/1 shutdown此时SW3到根桥的路径断掉原本阻塞的GE0/0/2会在RSTP机制下迅速从Discarding转为ForwardingPC1的流量改从SW2上联出去。PC1持续ping网关你会发现丢包时间比VRRP切换更短RSTP收敛通常在秒级完成。恢复GE0/0/1后RSTP会重新计算根端口切回GE0/0/1GE0/0/2回到ALTERNATE状态。注意如果用的是经典STP这个收敛过程可能要几十秒这也是我强烈建议实验里用RSTP的原因。体验完RSTP之后你可以自己把模式改成stp mode stp对比一下感受收敛时间的差异这对理解802.1w改进点很有帮助。这个实验环节容易忽略的是故障模拟要交替进行不能只测一次。建议把VRRP切换和STP收敛拆成两次独立演练每次都先确认基线状态再制造故障最后观察恢复形成习惯。这样才能真正形成肌肉记忆。5. 常见问题与排错速查我在eNSP里踩过的坑5.1 VRRP状态异常排查实验里最容易碰到的坑集中在VRRP上。我把典型现象和排查思路整理成了一张表现象可能原因排查方向display vrrp显示InitializeVLANIF接口没有UP检查VLANIF是否配置IP底层物理口是否shutdown两台设备都是MasterVRRP心跳报文不通检查核心间Trunk是否放通对应VLANSTP是否阻塞了唯一路径虚拟IP ping不通终端网关配置错误检查PC网关、VLAN归属确认VRID与虚拟IP在同一广播域一致配置了priority但主备没按预期配置写错了VRIDdisplay vrrp看PriorityRun和PriorityConfig是否一致恢复后主备频繁切换抢占立即生效配置preempt-mode timer delay通常3到5秒第一个场景我实测遇到最多。很多时候是模拟器刚启动交换机接口还没完全UP你急着敲完配置一看VRRP是Initialize以为配置错了其实等十几秒接口起来就好了。双主的问题更要重视。有一次我把SW1和SW2之间互联口的port trunk allow-pass vlan 10 20敲成了只放行VLAN10结果VLAN20的VRRP组两边互相看不见两个设备的VRID 20同时变Master。这种问题用display vrrp一眼能看到异常但如果设备多、VRRP组多就必须靠逐台查看和display current-configuration核对Trunk放行列表。5.2 STP引发业务中断的排查STP故障的表现通常不是“不通”而是“意外不通”或者“时通时断”。最常见的一种是边缘端口没生效PC接上去后等了几十秒才能上网。这是因为没有在接PC的端口上配置stp edged-port enable端口参与了STP计算收敛时间拖长了业务启动时间。另一种相反的情况是边缘端口触发了BPDU保护端口直接Down。此时在接口下执行display interface看错误计数或display stp看端口状态多半能看到BPDU保护相关记录。处理方法是确认端口确实只接终端然后undo shutdown恢复端口。还有一种隐藏较深的问题是STP根桥没按预期选出来。比如SW1明明配置了4096display stp一看根桥却是SW2。原因通常是命令敲到了错误的设备上或者配置没有保存模拟器重启丢了。遇到这种情况逐台执行display stp确认本机优先级和根桥ID比对桥优先级问题马上暴露。5.3 排错命令组合拳遇到网络异常我最建议按下面的顺序排查底层物理状态、VLAN放行、STP计算、VRRP状态、终端网关。命令组合如下排查目的命令关键输出查看接口状态display interface brief物理口UP还是DOWN查看VLAN端口归属display vlan端口是否在正确VLAN查看Trunk放行display port vlan哪些VLAN放行了查看STP端口角色display stp briefROOT/ALTERNATE/DISCARDING查看STP根桥display stpCIST Root和Bridge是否一致查看VRRP状态display vrrpState、PriorityRun查看完整配置display current-configuration确认命令没敲错设备这一套下来95%的实验问题都能定位。如果还查不出来就抓包看ARP、VRRP和STP三种报文是否正常基本没有死角。我在实际练习里还养成了一个习惯每次做完一个阶段就执行一次save把配置保存到模拟器里。eNSP偶尔会崩尤其是开了抓包之后不保存配置重来一遍非常浪费时间。另外所有配置修改都按设备、按功能模块分步骤做不要一口气贴一大段否则出问题根本不知道是哪个命令引起了连锁反应。最后再分享一个我觉得最值得养成的操作习惯协议配置完一定要亲手制造故障看它怎么恢复。我第一次做这个实验时只看状态没实际断过线自我感觉全通。后来真拿去排障才发现自己连主备切换的预期和实际丢包数都对不上。只有真正拔过一次线、看过一次状态翻转、盯着屏幕等过一次收敛你对VRRP和STP的理解才算落地。顺着这个实验做完你还可以把RSTP换成MSTP给不同VLAN划分多实例再配合VRRP的负载分担整个园区网的冗余骨架就算是彻底打通了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑