1. 一台网关挂掉之后:VRRP要填的那个坑到底有多大
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)在eNSP模拟器里配置起来不过四五条命令,但真正决定这套方案能不能在实际环境里顶住故障的,是配置之前对"网关单点故障"这个问题的理解深度。我见过太多实验报告,命令敲得一字不差,display vrrp回显也漂漂亮亮,可一旦把主用设备的接口关掉,业务照断不误——因为二层没收敛、因为抢占延时配得太短、因为上行链路断了但VRRP还认为自己是Master。这篇文章就从这个"命令会背、故障不抗"的坎儿说起,把VRRP的原理、eNSP里的完整配置命令、回显解读和排错链路一次讲透。适合刚接触三层冗余的网络方向学习者,也适合已经会敲命令但没搞清楚细节的在岗运维。
1.1 静态路由和策略路由补不上的一环
终端访问外网靠的是什么?很多人第一反应是"路由"。但请你想清楚:PC发出去的第一个包,目的IP是8.8.8.8(举例),它在自己网段之外,于是它不会去查路由表,它只做一件事——把包丢给网关。这个动作发生在PC的IP层,跟路由协议一点关系都没有。网关地址是人工配死在PC上的,或者由DHCP下发,它天然就是一个单点。
所以不管核心层跑的是OSPF还是IS-IS,不管路由收敛有多快,只要PC配置的那一个网关地址对应的设备宕机或者接口down,PC就彻底失联。路由协议的收敛发生在网关设备之间,而PC到网关这一段,路由协议管不着。这是一个非常关键的分层认知:动态路由解决的是"网关之间怎么走",VRRP解决的是"终端怎么找到还活着的网关"。两者是接力关系,不是替代关系。
有人会想到配两个网关。Windows确实支持在高级TCP/IP设置里加多个默认网关,但这个机制本质上是个"失败后重试"的兜底,切换时间取决于TCP重传超时,实测下来几十秒起步,而且Linux下多默认网关是按metric选一条,压根不做故障检测。还有方案是在PC上跑动态路由协议,比如某些场景下的RIP客户端,但这会带来安全和管理上的巨大麻烦。真正在工程上被广泛采用的,就是让多台三层设备共同"扮演"一个网关IP。
1.2 VRRP用"多台设备共用一个IP"来解题
VRRP的核心思路非常朴素:把N台物理三层设备编成一个组,组内选出一个老大(Master),由老大真实地持有那个虚拟IP并应答ARP,其他设备(Backup)只是待命。终端侧的配置完全不变——网关还是那个IP,只是这个IP背后的物理设备从一台变成了一个可以自动切换的集群。
这里有一个容易被忽略的细节:终端感知不到切换,是因为虚拟IP和虚拟MAC是绑定在一起的一组。VRRP规定虚拟路由器拥有一个虚拟MAC地址,格式固定为00-00-5E-00-01-{VRID}。当Master切换时,新Master会立刻发出一个免费ARP(Gratuitous ARP),把自己的物理MAC和这个虚拟MAC的映射关系广播出去,同时刷新上游交换机的MAC地址表。终端和中间交换机的ARP缓存、MAC表在几百毫秒内就被纠正过来,业务流的下一跳自动指向新设备。
这也是为什么VRRP的切换能做到秒级甚至亚秒级,而"配两个网关"的方案只能做到几十秒。差别不在于设备性能,而在于是否有一套主动的、带心跳的选举与通告机制。理解到这一层,后面所有的配置命令你就都能对上号了:vrid决定虚拟MAC的后两位,priority决定谁是老大,advertisement-interval决定心跳多快,preempt-mode决定老大的位置能不能被抢。
2. 报文格式、状态机与选举规则:把"谁是Master"这件事讲透
配置命令敲错,回显里往往能看出来;但选举逻辑理解错了,配置全对,拓扑一切换就出问题,而且极难定位。这一章把VRRP的报文、定时器和选举规则拆开讲,后面配置章节的每一条命令,你都能在这里找到它对应的字段。
2.1 五种字段直接决定选举结果
VRRP报文封装在IP之上,协议号112,目的地址是组播224.0.0.18,TTL固定为255(这个TTL值本身是一个防欺骗设计:设备收到TTL不为255的VRRP报文会直接丢弃,因为正常通信不可能不经过任何路由跳数)。报文里跟选举强相关的字段有这么几个:
| 字段 | 取值范围 | 作用与注意点 |
|---|---|---|
| VRID | 1–255 | 标识虚拟路由器组,同一组内必须一致;同时决定虚拟MAC末字节 |
| Priority | 0–255 | 竞选权重,默认100;0为特殊值,255为IP拥有者专用 |
| Advertisement_Interval | 默认1秒 | Master发通告的周期,组内所有设备必须一致 |
| Preempt_Mode | 开启/关闭 | 高优先级设备是否抢回Master身份 |
| Auth Type | 无/简单字符/MD5 | VRRPv2支持,VRRPv3已取消认证字段 |
优先级这里有两个特殊值必须记牢。优先级255是"IP地址拥有者"专用:如果某台设备的接口真实IP恰好等于虚拟IP,它的优先级自动被视为255,直接成为Master,且不参与抢占逻辑(因为它本来就是主人)。很多人在实验里把优先级手工配成255,结果发现抢占延时不生效、切换行为跟预期不符,就是因为踩了这个保留值。优先级0则是设备主动"让位"时发送的,表示我不干了,你们重新选,用于优雅退出。
优先级相同时怎么选?比较接口的主IP地址,数值大的当选。这一条在双机配置对称、忘了改优先级的场景里经常成为"为什么主用是它不是我"的答案。所以规范做法是:优先级别配成相同值,主用一侧显式提高,不要依赖IP比较这个兜底规则。
2.2 三个定时器与Master_Down_Interval的推算
VRRP有三个时间参数,理解它们的换算关系,是排查"切换慢"问题的钥匙:
- Advertisement_Interval:Master发通告的间隔,默认1秒,可配范围为1–255秒。
- Skew_Time:偏移时间,计算公式为
(256 - Priority) / 256秒。优先级越高,偏移越小。它的作用是让多个Backup在Master失效后错开切换动作,避免同时抢占造成冲突。 - Master_Down_Interval:Backup判定Master失效的等待时间,计算公式为
3 × Advertisement_Interval + Skew_Time。
按默认值算一遍:主用优先级120,备用优先级100。备用侧等待时间 = 3×1 + (256-100)/256 = 3 + 0.609 ≈ 3.61秒。也就是说默认配置下,从主用设备彻底静默到备用接管,大约要3.6秒。这个时间对普通办公网够用,对实时性业务就偏长了。
想缩短怎么办?把advertisement-interval调小,比如调到200毫秒(注意部分版本只支持整秒,需要看设备能力)。这里有个坑:组内所有设备的通告间隔必须一致,否则会出现"Backup认为Master超时、Master认为自己还活着"的双主隐患。所以改这个参数一定要两端同时改,且改之前先确认设备平台的取值范围限制。
2.3 虚拟MAC为什么锁定在00-00-5E-00-01-XX
这个前缀不是随便定的。00-00-5E是IANA分配给VRRP协议使用的OUI,00-01表明这是VRRP虚拟路由器类型,最后两位就是VRID的十六进制。VRID为1时,虚拟MAC就是00-00-5E-00-01-01。
这个设计的工程价值在于:虚拟MAC与物理设备解耦。当Master从设备A切到设备B,虚拟MAC保持不变,终端ARP表里"虚拟IP → 虚拟MAC"这条记录压根不需要更新,只有交换机侧"虚拟MAC → 出端口"的MAC表项需要刷新。这就是为什么VRRP切换对终端几乎透明,而如果改用"两个真实IP轮流上线"的方案,终端必须感知ARP变化,切换必然有感知。
顺着这个逻辑,你也能理解为什么同一个二层域内不同VRRP组的虚拟MAC必须不同:如果两个组用了同一个VRID,它们会生成相同的虚拟MAC,交换机的MAC表就会来回翻动,形成MAC漂移,直接把网络搞乱。做负载分担时这一点尤其致命,后面第6章会展开。
3. eNSP实验拓扑与地址规划:先画图再敲命令
我一直建议初学的人别急着敲命令,先把拓扑画清楚、把地址表列出来。VRRP的配置错误里有相当一部分不是命令写错,而是VLAN、接口、网段三者没对齐。本章给出一个可以直接照着搭的最小可复现拓扑,后面的配置和验证都在这个拓扑上完成。
3.1 拓扑搭建与设备选型
在eNSP里拖两台三层交换机(S5700系列即可,支持完整的VRRP功能)、一台二层接入交换机、一台路由器作为出口、两台PC作为终端。连线方式如下:
- PC1、PC2 接入二层交换机,二层交换机通过两条链路分别上联到 SW1 和 SW2(形成二层冗余,这里可以后续接MSTP,本文先按单链路讲,第7章再说双链路)。
- SW1 的 Gi0/0/1 接出口路由器 AR1 的 Gi0/0/0。
- SW2 的 Gi0/0/1 接出口路由器 AR1 的 Gi0/0/1。
- SW1 和 SW2 之间用 Gi0/0/2 互联,作为VRRP心跳的二层通道。
提示:SW1与SW2之间的互联链路不是VRRP的必需品,VRRP报文本质是组播,只要两台设备在同一个二层广播域内就能互相收到。但如果两台设备之间没有直连,报文必须经过接入交换机绕行,实验时容易出现"链路通了但报文被过滤"的问题,所以直连一条更省事。
3.2 地址与VLAN规划表
规划这部分我吃过亏。早期做实验时习惯随手起网段,结果配到一半发现VRRP组的虚拟IP和某台设备的接口IP冲突,或者两台设备的接口IP配到了同一个地址上,排错花了半小时。所以现在一律先列表:
| 设备 | 接口 | VLAN | IP地址 | 说明 |
|---|---|---|---|---|
| SW1 | Vlanif10 | 10 | 192.168.10.2/24 | 真实接口地址,VRRP优先级120 |
| SW2 | Vlanif10 | 10 | 192.168.10.3/24 | 真实接口地址,VRRP优先级100 |
| 虚拟 | Vlanif10 | 10 | 192.168.10.1/24 | VRRP虚拟IP,即终端网关 |
| SW1 | Vlanif20 | 20 | 10.1.1.1/30 | 上联AR1 |
| SW2 | Vlanif20 | 20 | 10.1.1.5/30 | 上联AR1 |
| AR1 | Gi0/0/0 | — | 10.1.1.2/30 | 对接SW1 |
| AR1 | Gi0/0/1 | — | 10.1.1.6/30 | 对接SW2 |
| PC1 | — | 10 | 192.168.10.10/24 | 网关192.168.10.1 |
| PC2 | — | 10 | 192.168.10.11/24 | 网关192.168.10.1 |
这张表里有三个刻意的设计。第一,虚拟IP取网段的.1,两台设备的真实地址取.2和.3,虚拟IP不与任何真实地址重合,避免触发255优先级的"IP拥有者"逻辑。第二,两台设备的真实地址必须在同一个网段内,这是VRRP的硬性要求,不在同网段连报文都发不出去。第三,上联用/30掩码,两个地址刚好够用,既节省地址空间又避免误配。
3.3 二层与三层基础配置
先把二层打通,再配三层。SW1上创建VLAN 10和VLAN 20,把接PC的接口划进VLAN 10(access模式),把接AR1的接口划进VLAN 20,把两台交换机互联的Gi0/0/2配成trunk并放行VLAN 10。SW2做对称配置。
# SW1 二层配置 vlan batch 10 20 interface GigabitEthernet0/0/3 port link-type access port default vlan 10 interface GigabitEthernet0/0/1 port link-type access port default vlan 20 interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 10三层配置就是给Vlanif接口配地址。SW1的Vlanif10配192.168.10.2,Vlanif20配10.1.1.1;SW2对称。配完之后先别急着上VRRP,用PC ping一下192.168.10.2和192.168.10.3,确认二层和直连三层都通。这一步看着多余,实际上是给后面排错留一条基准线——如果VRRP配完不通,你能立刻判断问题出在VRRP本身还是基础连通性。
另外别忘了给出口路由器配一条回程路由,指向192.168.10.0/24,下一跳可以指向SW1也可以指向SW2,或者干脆跑个OSPF让路由自动收敛。实验环境为了简化,静态路由指向虚拟IP也可以,因为虚拟IP始终有一个Master在应答。
4. 主备模式的配置全流程:从vrid到抢占延时
基础通了,VRRP的配置本身其实很短。但短不等于简单,每条命令背后的意图必须清楚,否则调参就是瞎猜。
4.1 Master端与Backup端的命令差异
SW1(计划作为主用)的Vlanif10配置:
interface Vlanif10 ip address 192.168.10.2 24 vrrp vrid 1 virtual-ip 192.168.10.1 vrrp vrid 1 priority 120 vrrp vrid 1 preempt-mode timer delay 20 vrrp vrid 1 advertisement-interval 1 vrrp vrid 1 track interface GigabitEthernet0/0/1 reduced 30SW2(备用)的Vlanif10配置:
interface Vlanif10 ip address 192.168.10.3 24 vrrp vrid 1 virtual-ip 192.168.10.1 vrrp vrid 1 priority 100 vrrp vrid 1 preempt-mode timer delay 20 vrrp vrid 1 advertisement-interval 1 vrrp vrid 1 track interface GigabitEthernet0/0/1 reduced 30逐条解读。vrrp vrid 1 virtual-ip 192.168.10.1是核心命令,一个接口下可以配多个VRRP组,只要VRID不同。两端这条命令必须完全一致:VRID一致、虚拟IP一致。如果一端写成了vrid 2,两端各自成组,都是Master,都去应答同一个IP的ARP,那就形成了双主,网络会时通时断,而且display vrrp在各自设备上看都是正常的Master,极具迷惑性。
priority 120只在主用侧显式配置,备用侧保持默认100。差值20是个经验值,留出足够的余量,将来如果要跟踪多条上行链路,每条降10,降两次还有余量。如果差值只有1,一条链路故障后优先级降到99,反而比备用低,效果一样但余量没了。
preempt-mode timer delay 20是抢占延时20秒,这条命令是本篇里我认为最容易被省略、也最不能省略的一条,下一节专门讲。
advertisement-interval 1保持默认,显式写出来是为了在多人协作的实验环境里让配置意图清晰,同时也提醒自己:要改就两端一起改。
track interface GigabitEthernet0/0/1 reduced 30是上行链路联动,意思是当Gi0/0/1这个接口down掉时,本设备的VRRP优先级降低30,从120降到90,低于备用的100,从而主动让位。更深入的用法在第6章展开。
配完之后,等几秒,在两台设备上分别执行display vrrp,正常应该看到SW1是Master、SW2是Backup,虚拟IP的State都是Up。
4.2 preempt-mode timer delay为什么必须要配
抢占(Preempt)的含义是:优先级高的设备一旦发现当前Master优先级比自己低,就抢回Master身份。这个机制默认是开启的,而且没有延时——一旦发现就抢。
问题出在"一旦发现"这四个字上。假设SW1因为上行链路闪断被降优先级、让位给SW2,几秒后链路恢复,SW1优先级回升,立刻抢回Master。如果这条链路不稳定,反复闪断,VRRP就会反复切换:SW1让位→SW2接管→SW1抢回→SW1让位……每次切换都伴随一次免费ARP广播和全网MAC表刷新,业务表现为周期性的几秒卡顿,这种故障在现场极其难查,因为每次你去测的时候它恰好是通的。
配置了preempt-mode timer delay 20之后,设备即使发现自己应该抢,也要先等20秒。这20秒是个"冷静期":如果链路在这期间又断了,优先级再次下降,抢占就不会发生。工程上把这个值设在20–60秒比较常见,具体看业务对切换时间的容忍度和链路抖动的时间尺度。
有一个细节要注意:抢占延时对"Master设备主动失效后的重新选举"不起作用。如果SW2作为Master直接宕机,SW1作为Backup在Master_Down_Interval超时后接管,这个接管是选举行为,不受抢占延时约束。抢占延时只影响"Backup发现Master优先级比自己低"这一种场景。所以别指望配了这个延时会让故障切换变慢,它俩是两回事。
还有一点:备用侧我也配了preempt-mode timer delay 20。虽然它当前优先级低、抢不了,但将来如果主备角色互换(比如做了双主负载分担),这行配置就有意义了。保持两端对称,是减少后期维护心智负担的好习惯。
5. display vrrp输出逐行拆解:怎么从回显里看出真实状态
命令敲完不算完,能读懂回显才算真的会配。display vrrp和display vrrp verbose这两条命令里藏着的信息量,比大多数人以为的多得多。
5.1 关键字段解读
在Master设备上执行display vrrp verbose,典型回显里会包含这几块内容:VRRP组的基本信息、状态信息、配置信息和统计信息。逐个看:
- State:Master还是Backup。这是最直观的,但也是最容易骗人的。如果拓扑里两台设备都显示Master,别怀疑回显,直接去查VRID和虚拟IP是否配错、或者中间的二层链路是否把组播过滤了。
- Virtual IP:确认虚拟IP是否正确,以及后面是否标注了"IP address owner"。如果出现了这个标注,说明有设备的真实IP和虚拟IP重合了,前面提到的255优先级逻辑被触发。
- Priority:当前生效的优先级。注意这里显示的是"运行时优先级",如果配置了track并且上行链路已down,这里会显示降低后的值,而不是配置文件里的原值。这一点在排查"为什么它明明是主用却让位了"时是关键证据。
- Preempt Mode:是否开启,以及延时值。
- Advertisement Interval:通告间隔,两端对比一下,必须一致。
- Master IP:当前Master的接口真实IP。在Backup设备上,这个字段告诉你"我现在听谁的"。
- Master Down Interval:根据当前优先级算出来的超时时间,可以直接印证第2章那个公式。
统计信息里关注两个计数:Received和Sent。Master的Sent应该随时间稳定增长(每秒1个),Backup的Received也应该同步增长。如果Backup的Received一直是0,说明报文没收到,往二层方向查;如果Received在涨但State一直是Backup,那优先级可能真的比对方低,回显里的Priority字段会说明一切。
5.2 切换过程的抓包与验证
光看稳态回显不够,必须做一次完整的切换演练,而且要抓包看过程。eNSP支持在链路上抓包,把抓包点设在SW1的上联口和PC1的接入链路,然后执行shutdown关掉SW1的Vlanif10(或者关掉物理口)。
抓包能看到的关键节点:
- SW1最后发出的几条VRRP通告(目的224.0.0.18)消失了。
- 大约3.6秒后,SW2开始以1秒间隔发送VRRP通告,报文的源IP变成10.1.1.x(SW2的真实地址),优先级100。
- SW2立即发出一个免费ARP,广播"192.168.10.1 is at 00-00-5E-00-01-01",这个ARP在抓包里非常显眼,目的MAC是全F。
- PC1侧如果正在ping,会看到丢3–4个包后恢复。
这个演练建议至少做三遍:手工shutdown主用接口、手工shutdown主用上行链路(验证track生效)、直接关闭主用设备电源(模拟真实宕机)。三种场景的切换时间、切换后路径都不一样,只有都做过,心里才有底。
验证恢复时记得用reset vrrp statistics清一次计数,否则统计信息里的历史数据会干扰判断。另外,切换演练做完后一定要把主用设备恢复,并观察抢占延时是否按预期生效——如果恢复后立刻抢回,说明preempt-mode timer delay没配上或者配错了接口。
6. 负载分担与上行链路联动:别让Backup常年吃灰
主备模式下,备用设备在99%的时间里什么都不干,硬件资源完全闲置。对于预算紧张又要提升性能的场景,负载分担是非常实用的方案。
6.1 双VRID负载分担的配置
思路是建两个VRRP组,把终端分成两拨,一半用组1的虚拟IP做网关,另一半用组2的虚拟IP做网关,两组的主用分别落在两台设备上。
SW1的Vlanif10追加:
vrrp vrid 2 virtual-ip 192.168.10.254 vrrp vrid 2 priority 100 vrrp vrid 2 preempt-mode timer delay 20SW2的Vlanif10追加:
vrrp vrid 2 virtual-ip 192.168.10.254 vrrp vrid 2 priority 120 vrrp vrid 2 preempt-mode timer delay 20这样组1(VIP 192.168.10.1)的Master是SW1,组2(VIP 192.168.10.254)的Master是SW2。PC1的网关配.1,PC2的网关配.254,流量就从两个方向出去了。
这里有两个必须注意的点。第一,两个组的虚拟MAC必须不同,因为VRID不同(1和2),虚拟MAC末字节分别是01和02,自动满足。如果为了"好记"把两组都配成vrid 1,虚拟MAC就撞了,交换机的MAC表会在两个端口之间反复漂移,网络直接瘫掉。第二,两个虚拟IP不能落在同一台设备的同一个接口上还配成同一优先级,否则两台设备各在一个组里当Master,看起来是负载分担了,但实际上如果某台设备整体宕机,另一个组的主用也会跟着丢,因为那台设备同时是两个组的Backup。所以负载分担模式下,两台设备互为备份的关系依然成立,只是每台都同时扮演"一个组的主、另一个组的备"。
这种方案还有一个隐性收益:两个方向的流量在正常状态下都只走单跳,不经过设备间互联链路,节省了互联带宽。而在主备模式下,所有流量都集中在一台设备上,互联链路平时空闲。
6.2 track接口与BFD联动的降优先级
track interface解决的是"直连链路断了"这一类故障,它的检测速度取决于接口的物理状态变化,通常很快。但它有一个明显的盲区:如果故障发生在上行设备之后,而不是本设备的接口上,接口本身不会down,track就检测不到。比如SW1上联的口是通的,但AR1那台设备挂了,或者AR1的上联断了,SW1仍然认为自己的上行正常,继续当Master,结果所有流量到了SW1之后无路可走,形成黑洞。
解决这条链路有两种做法。一种是跑路由协议,通过路由收敛让SW1发现自己没有去往外网的路由,然后主动降优先级(部分平台支持这种联动,配置复杂度较高)。另一种更轻量的做法是用BFD或NQA做端到端的探测,探测目标选一个稳定的远端地址,探测失败就降优先级。
bfd quit bfd atob bind peer-ip 10.1.1.2 source-ip 10.1.1.1 discriminator local 1 discriminator remote 2 commit interface Vlanif10 vrrp vrid 1 track bfd-session 1 reduced 40这段配置的意思是:跟对端10.1.1.2建立BFD会话,如果会话down,VRRP优先级降40,从120降到80,低于备用的100,主动让位。BFD的检测周期可以配到毫秒级,所以这种方案的切换时间能压到1秒以内,比默认的3.6秒强得多。
需要注意的是,降的数值要算清楚。主用优先级120,备用100,差20。降30之后变成90,够了;降40变成80,也够。但如果跟踪了两条链路、每条降30,同时故障就是降60,变成60,也低于100,没问题。可如果将来有人把备用优先级改成了80,主用降之后是80,两者相等,就变成比IP大小了,结果不可控。所以降优先级的数值设计必须留足余量,并且把两端的初始优先级和所有track的减值写进文档,这是团队协作里最容易失控的地方。
7. 实验里最容易翻车的七个地方
这一章是我自己在eNSP里反复折腾之后攒下来的问题清单,按出现频率排序,从最常见的往下走。
第一,双主。表现为网络时通时断、display vrrp两台都是Master。原因几乎总是VRID或虚拟IP不一致,或者中间二层链路把224.0.0.18的组播过滤了。排查方法是在两端同时执行display vrrp statistics,看Received是否在增长。如果一端Sent在涨、另一端Received为0,问题在链路。
第二,优先级配了255。配成255之后设备成为IP地址拥有者,不参与抢占,抢占延时失效。很多人以为255是"最高优先级所以最好",实际上这是个保留值,正常配置应使用1–254。
第三,抢占延时没配,链路抖动导致反复切换。典型表现是业务周期性卡顿几秒,每次抓包都能看到免费ARP。这个坑的隐蔽性极强,因为你去测的时候网络恰好是恢复的。
第四,二层没收敛就切了VRRP。如果SW1和SW2之间有冗余链路跑STP,SW1宕机后VRRP可能在3.6秒内就切换了,但STP的拓扑收敛要30秒以上,新Master的流量在二层上还找不到路径,形成黑洞。这种情况下必须配边缘端口、快速收敛(比如RSTP或MSTP配边缘端口和P/A机制),必要时调整VRRP的检测时间,让三层切换和二层收敛的节奏匹配。这是"三层冗余和二层冗余必须一起设计"的典型案例。
第五,VRRP和MSTP的实例映射错位。做了MSTP多实例之后,VLAN 10的根桥应该和VRRP组1的Master在同一台设备上,否则流量会先到SW1的网关,再从二层链路上绕到SW2出去,形成次优路径。验证方法是在两台设备上看display stp instance的根桥位置,跟display vrrp的Master位置对照。
第六,改advertisement-interval只改了一端。结果一端认为1秒一次,另一端认为200毫秒一次,超时判断错乱,间歇性双主。
第七,忘了在VLANIF接口上配VRRP,跑到物理口上去了。VRRP必须配在三层接口上,eNSP里的三层交换机对应的是Vlanif接口,路由器对应的是物理口或子接口。配错位置的话命令会报错,这一条本身不难发现,难的是有些版本对配置位置的要求不那么严格,配上去能生效,但跟VLAN的对应关系就乱了。
最后一个心得:做VRRP实验,一定要养成"改完配置就reset统计、抓一次包、做一次切换"的习惯。稳态下一切正常不代表故障时能顶住,VRRP的价值恰恰体现在那几秒钟里,而那几秒钟的真相只有抓包能告诉你。这个协议本身的原理并不复杂,真正花时间的是把二层收敛、上行联动、抢占时序这几件事捏在一起调通,这部分只能靠一遍遍地关接口、看回显、改参数堆出来。