写在前面
VRRP(virtual router redundancy protocol)和HSRP非常相似,原理相同,只不过VRRP是公有的(RFC 3768),HSRP是思科私有的。《HSRP简述》中对虚拟路由冗余协议做了基本的阐述和实验说明,这篇文章主要描述两者之间的差异,然后做个实验来验证下。
VRRP与HSRP的差异
| HSRP | VRRP | |
|---|---|---|
| protocol | cisco proprietary | IETF-RFC3768 |
| number of groups | 0-255,0是默认 | 1-255 |
| active/standby | 一个active, 一个standby,多个候选者 | 术语叫法不同,一个master,多个backups |
| Vip | 不能和三层接口ip相同 | 可以相同,如果相同,优先级直接变成最高 |
| Vmac | v1,v2有差异,见hsrp简述 | 00:00:5e:00:01:xx, xx是group id |
| multicast address | 224.0.0.2 | 224.0.0.18 |
| tracking | interfaces or objects, 触发后降低优先级或退出组 | objeects,触发后降低优先级,没有退出组 |
| timers | hello timer 3秒,hold time 10秒 | hello 1秒,holdtime 3秒 |
| authentication | 支持 | rfc中不支持,厂家支持 |
| preempt | 默认不开启,可配置 | 默认开启抢占 |
| 报文封装 | UDP 1985 | 基于IP |
| version | 默认v1 | v2,v3两个版本,默认v2,v3才支持ipv6 |
| load balancing | 支持不同组之间 | 支持不同组之间 |
| priority | 不支持辞职,优先级为0可以手动配置,没有特殊含义 | 优先级为0表示放弃master位置,优先级0不能手动配置 |
关于辞职,当master路由器接口shutdown时,会立即发送优先级为0的通告,vrrp中优先级为0表示不参与虚拟组计算,收到的backups之间会立即重新选举出新的master,否则就要等待3秒的报文超时再选举,这样可以加快收敛时间。优先级为0的报文如下:

在HSRP中,tracking中触发支持shutdown,如果active路由器接口shutdown,那么standby只能等待10秒超时后变成active. VRRP tracking中不支持shutdown,嗯,也就是说只有路由接口手动shutdown或物理线路挂掉才会触发优先级为0的报文,而上行链路挂掉tracking无法触发?
实验说明
实验拓扑图如下:

S2、S3、S4的interface vlan1加入虚拟组组成虚拟路由器,虚拟组对外提供网关服务。基本配置如下:
1 | S2 |
show vrrp brief查看vrrp状态
1 | S4#show vrrp brief |
vrrp的默认优先级也是100,超期时间单位是毫秒,有计算公式,是hello的三倍多点,own表示是否是虚拟组的拥有者,当物理接口ip和虚拟组ip一致时成为owner, 通过将优先级置位最大值255实,如将S3设置成owner
1 | S3(config-if)#ip address 192.168.1.254 255.255.255.0 |
优先级为255的报文为:

owner不能被配置优先级。 vrrp默认开启preempt,所以pre是Y。注意vrrp组中除master外,其余都是backup,即master挂掉后,会从backup中重新选举出新的master。而hsrp中master挂掉后,standby接替,之后在candidate中选举出新的standby。
所以VRRP中只有master发送announcement,backup监听。hsrp中active和backup都需要发送hello报文。
当然,FHRP中一般搞两台路由器做网关冗余就行了。
其它实验
tracking上行链路故障,不同组之间的负载均衡,和HSRP没区别,这里就不重复了。
双活网关
HSRP/VRRP只能实现单活网关,只有active进行arp应答和转发业务流量,standby则完全闲置。结合MLAG则可实现双活网关:
- active负责arp应答,standby会将arp中继给active
- 控制面视角而言,依然是active/standby,数据面而言active/active转发
- 接入交换机上mac地址表中vmac对应的端口是mlag聚合端口,所以active/standby都有可能收到报文,收到后按路由表正常转发即可。如果不是mlag场景,standby收到目的地址是vmac的报文。
- eveng中不支持vpc模拟,vpc的peer-link需要10G端口才能运行,不然会后各种问题。
为甚vip不会冲突
在两台设备上部署了相同的vip+vmac,为什么不会冲突?
IP通信通过arp报文获取mac,主机请求网关vip时,只有active才会做出回应,所以除了active外,网络中并不会有其它设备感知到standby。
从另外一个角度来说?一般设备配置ip地址后会向外发送免费arp报文,一是避免ip冲突,而是主动告知其它设备自己arp信息。交换机变成active后也会主动发送免费arp,standby收到后也不会处理,所以就不冲突了。
从实际通信报文的角度来看,standby是收不到vmac的报文的,如果能收到,也能正常转发,这就是mlag+vrrp实现双活网关的原理。