虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
##目的:
VRRP能够在不改变组网的情况下,采用将多台路由设备组成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现默认网关的备份。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
在具有多播或广播能力的局域网(如以太网)中,借助VRRP能在网关设备出现故障时仍然提供高可靠的缺省链路,无需修改主机及网关设备的配置信息便可有效避免单一链路发生故障后的网络中断问题。
VRRP协议报文用来将Master设备的优先级和状态通告给同一备份组的所有Backup设备。
VRRP协议报文封装在IP报文中,发送到分配给VRRP的IP组播地址。在IP报文头中,源地址为发送报文接口的主IP地址(不是虚拟IP地址),目的地址是224.0.0.18,TTL是255,协议号是112。
VRRP报文的IP头中,TTL必须为255。当VRRP路由器收到TTL不等于255的VRRP协议报文后,必须丢弃。
主IP地址(Primary IP Address):从接口的真实IP地址中选出来的一个主用IP地址,通常选择配置的第一个IP地址。
目前,VRRP协议包括两个版本:VRRPv2和VRRPv3。VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
基于不同的网络类型,VRRP可以分为VRRP for IPv4和VRRP for IPv6(简称VRRP6)。VRRP for IPv4支持VRRPv2和VRRPv3,而VRRP for IPv6仅支持VRRPv3。
字段 | 长度 | 描述 |
---|---|---|
Version | 4比特 | 指VRRP协议版本,VRRPv2此字段为2,VRRPv3此字段为3。 |
Type | 4比特 | 定义了VRRP报文的类型。本版本的协议仅定义了一个报文类型:1:ADVERTISEMENT 带有未知类型的报文必须被丢弃。 |
Virtual Rtr ID8 | 8比特 | 虚拟路由器标识(VRID)字段标识了此报文所报告状态的虚拟路由器。可配置的范围是1–255。没有缺省值。 |
Priority | 8比特 | Priority字段申明了发送此报文的VRRP路由器的优先级。值越高优先级越高。该字段为8位无符号整型。如果VRRP路由器是虚拟路由器地址的IP地址所有者,那么其优先级必须为255。起备用作用的VRRP路由器的优先级必须在1–254之间。缺省的VRRP路由器优先级为100。优先级值0 用于指示当前虚拟路由器的主路由器停止参与VRRP组。主要用于触发备用路由器快速地迁移到主路由器,而不用等待当前主路由器超时。 |
Count IP Addrs | 8比特 | 在此VRRP通告中包含的IP地址的数量。 |
Auth Type | 8比特 | 认证类型字段用于标识要用到的认证方法。在一个虚拟路由器组内认证类型是唯一的。认证类型字段是一个8位无符号整型。如果报文携带未知的认证类型或者该认证类型和本地配置的认证方法不匹配,那么该报文必须被丢弃。目前定义的认证方法有:0 : No Authentication 不认证该认证类型表明VRRP协议报文的交换不需要认证。在发送VRRP协议报文时,Authentication Data 字段将被置为0;而在接收协议报文时,Authentication Data 字段被忽略。 1 : Simple Text Password,表示明文认证方式。2: IP Authentication Header,表示MD5认证方式。 |
Adver Int | 8比特 | VRRP通告间隔时间,单位为秒。缺省为1秒。这个字段主要用于错误配置路由器时的故障定位和解决。 |
Checksum | 16比特 | 16位校验和,用于检测VRRP报文中的数据破坏情况。 |
IP Address | 32比特 | VRRP备份组的虚拟IPv4地址 或者虚拟IPv6地址 |
Authentication Data | 32比特 | VRRP报文的认证字。目前只有明文认证和MD5认证才用到该部分,对于其它认证方式,一律填0。 |
支持的网络类型不同。VRRPv3适用于IPv4和IPv6两种网络,而VRRPv2仅适用于IPv4网络。
认证功能不同。VRRPv3不支持认证功能,而VRRPv2支持认证功能。
VRRPv2版本保留报文的认证字段,是为了兼容早期版本(RFC2338),VRRP认证并不能提高安全性。
发送通告报文的时间间隔的单位不同。VRRPv3支持的是厘秒级,而VRRPv2支持的是秒级。
VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于Master状态的设备才可以转发那些发送到虚拟IP地址的报文。
当VRRP设备处于Master状态时,它将会做下列工作:
当VRRP设备处于Backup状态时,它将会做下列工作:
接收Master设备发送的VRRP通告报文,判断Master设备的状态是否正常。
对虚拟IP地址的ARP请求,不做响应。
丢弃目的IP地址为虚拟IP地址的IP报文。
如果收到优先级和自己相同或者比自己大的报文,则重置Master_Down_Interval定时器,不进一步比较IP地址。
Master_Down_Interval定时器:Backup设备在该定时器超时后仍未收到通告报文,则会转换为Master状态。计算公式如下:Master_Down_Interval=(3*Advertisement_Interval) + Skew_time。其中,Skew_Time=(256–Priority)/256。
如果收到比自己优先级小的报文且该报文优先级是0时,定时器时间设置为Skew_time(偏移时间),如果该报文优先级不是0,丢弃报文,立刻成为Master。
VRRP的工作过程如下:
Master设备的选举
VRRP根据优先级来确定虚拟路由器中每台设备的角色(Master设备或Backup设备)。优先级越高,则越有可能成为Master设备。
Master设备状态的通告
在性能不稳定的网络中,网络堵塞可能导致Backup设备在Master_Down_Interval期间没有收到Master设备的报文,Backup设备则会主动切换为Master。如果此时原Master设备的报文又到达了,新Master设备将再次切换回Backup。如此则会出现VRRP备份组成员状态频繁切换的现象。为了缓解这种现象,可以配置抢占延时,使得Backup设备在等待了Master_Down_Interval后,再等待抢占延迟时间。如在此期间仍没有收到通告报文,Backup设备才会切换为Master设备。
负载分担是指多个VRRP备份组同时承担业务,VRRP负载分担与VRRP主备备份的基本原理和报文协商过程都是相同的。同样对于每一个VRRP备份组,都包含一个Master设备和若干Backup设备。与主备备份方式不同点在于:负载分担方式需要建立多个VRRP备份组,各备份组的Master设备可以不同;同一台VRRP设备可以加入多个备份组,在不同的备份组中具有不同的优先级。
通过创建多个带虚拟IP地址的VRRP备份组,为不同的用户指定不同的VRRP备份组作为网关,实现负载分担。
VRRP报文通告是通过组播来通告的,组播地址:224.0.0.18,组播MAC:01-00-5e-00-00-12,VRRP是三层协议,通过IP协议承载,协议号112。同时IP包中的TTL值为255。
VRRP需要通过VRRP报文来选举Master和Backup,只有Master才能装发数据,而backup不装发数据,收到数据帧后丢弃。
比较优先级,默认情况下优先级为100,最大可以配置的优先级为1-254,优先级越大越优。
255(V-IP = Interface ip),优先级如果为0,说明退出Master(Master离组,例如在Master的接口下删除VRRP配置)
如果优先级一样,IP地址大的一端成为Master。
Master:
Backup:
#VRRP应用
VRRP备份组只能感知其所在接口状态的变化,当VRRP设备上行接口或直连链路发生故障时,VRRP无法感知,此时会引起业务流量中断。通过部署VRRP与接口状态联动监视上行接口可以有效地解决上述问题,当Master设备的上行接口或直连链路发生故障时,通过调整自身优先级,触发主备切换,确保流量正常转发。
VRRP只能感知VRRP备份组之间的故障,而配置VRRP监视上行接口仅能感知Master设备上行接口或直连链路的故障,当Master设备上行非直连链路故障时,VRRP无法感知,此时会导致用户流量丢失。通过部署VRRP与BFD/NQA/路由联动监视上行链路,可以有效地解决上述问题。通过配置BFD/NQA/路由检测Master上行链路的连通状况,当Master设备的上行链路发生故障时,BFD/NQA/路由可以快速检测故障并通知Master设备调整自身优先级,触发主备切换,确保流量正常转发。
VRRP备份组通过收发VRRP协议报文进行主备状态的协商,以实现设备的冗余备份功能。当VRRP备份组之间的链路出现故障时,Backup设备需要等待Master_Down_Interval后才能感知故障并切换为Master设备,切换时间通常在3秒以上。在等待切换期间内,业务流量仍会发往Master设备,此时会造成数据丢失。通过部署VRRP与BFD联动功能,可以有效解决上述问题。通过在Master设备和Backup设备之间建立BFD会话并与VRRP备份组进行绑定,快速检测VRRP备份组之间的连通状态,并在出现故障时及时通知VRRP备份组进行主备切换,实现了毫秒级的切换速度,减少了流量丢失。
VRRP支持与静态的BFD会话类型或静态标识符自协商的BFD会话类型的联动。
在路由器上部署VRRP功能时需注意:
缺省配置:
参数 | 缺省值 |
---|---|
设备在VRRP备份组中的优先级 | 100 |
抢占方式 | 立即抢占 |
通告报文发送间隔 | 1秒 |
发送免费ARP报文时间间隔 | 120秒 |
[接口视图] vrrp vrid 1 virtual-ip 192.168.1.1
//创建VRRP备份组并给备份组配置虚拟IP地址。
多网关负载分担
实现多网关负载分担,需要重复执行上述“主备备份”的操作步骤,在接口上配置两个或多个VRRP备份组,各备份组之间以备份组号(virtual-router-id)区分。
VRRP根据优先级决定设备在备份组中的地位,优先级越高,越可能成为Master设备。通过配置优先级,可以指定Master设备,以承担流量转发业务。
[接口视图] vrrp vrid 1 priority 100
//配置路由器在备份组中的优先级。
//缺省情况下,优先级的取值是100。数值越大,优先级越高。
基于IPv4的VRRP支持VRRPv2和VRRPv3两个版本。如果VRRP备份组内各路由器上配置的协议版本不同,可能导致VRRP报文不能互通。
vrrp version { v2 | v3 }
//配置当前设备的VRRP协议版本号。 默认v2。
vrrp version-3 send-packet-mode { v2-noly | v3-only | v2v3-both }
//配置VRRPv3发送通告报文的模式。
//缺省情况下,VRRPv3版本备份组发送通告报文的模式为v3-only。
功能 | 应用场景 |
---|---|
配置VRRP通告报文的发送间隔 | Master设备定时(Advertisement_Interval)向组内的Backup设备发送VRRP通告报文,通告自己工作正常。如果Backup设备在Master_Down_Interval定时器超时后仍未收到VRRP通告报文,则重新选举Master。网络流量过大或设备的定时器差异等因素会导致Backup设备无法及时接收到VRRP报文而发生状态转换,当原Master发送的报文到达新Master时,新Master将再次发生状态切换。通过延长Master设备发送VRRP报文的时间间隔可以解决此类问题。 |
配置路由器在VRRP备份组中的抢占延时 | 在不稳定的网络中,可能存在VRRP备份组监测的BFD等状态频繁振荡或Backup设备不能及时收到VRRP通告报文的情况,导致VRRP发生频繁切换而造成网络振荡。通过调整路由器在VRRP备份组中的抢占延时,使Backup设备在指定的时间后再进行抢占,有效避免了VRRP备份组状态的频繁切换。 |
配置Master设备发送免费ARP报文的超时时间 | VRRP备份组中,为了确保下游交换机的MAC表项正确,Master设备会定时发送免费ARP报文,用来刷新下游交换机上的MAC地址表项。说明: 为避免VRRP协议震荡,请不要在VRRP备用设备上把系统MAC或VRRP虚MAC等一些特殊的MAC地址配置成黑洞MAC。 |
配置VRRP备份组的状态恢复延迟时间 | 在不稳定的网络中,VRRP备份组监测的BFD或接口等状态频繁振荡会导致VRRP备份组状态频繁切换。通过配置VRRP备份组的状态恢复延迟时间,VRRP备份组在接收到接口或BFD会话的Up事件时不会立刻响应,而是等待配置的状态恢复的延迟时间后,再进行相应的处理,防止因接口或BFD会话的频繁震荡而导致的VRRP状态的频繁切换。 |
[接口视图] vrrp vrid 1 timer advertise 1
//置发送VRRP通告报文的时间间隔。
//缺省情况下,发送VRRP通告报文的时间间隔是1秒。
[接口视图] vrrp vrid 1 preempt-mode timer delay 0
//配置备份组中路由器的抢占延迟时间。
//缺省情况下,抢占延迟时间为0,即立即抢占。
vrrp vrid 1 preempt-mode disable
//设置备份组中路由器采用非抢占方式。
vrrp gratuitous-arp timeout 120
//配置Master发送免费ARP报文的超时时间。
//缺省情况下,Master每隔120秒发送一次免费ARP报文。
vrrp gratutious-arp timeout disable
//禁止发送免费ARP
vrrp recover-deley 0
//配置VRRP备份组的状态恢复延迟时间。
//缺省情况下,VRRP备份组状态恢复延迟时间为0秒。
当VRRP备份组配置在VLAN聚合时,用户可以通过命令行配置,使VRRP报文在指定的Sub-VLAN中传输,避免VRRP通告报文在所有Sub-VLAN内广播,以节约网络带宽。
vrrp advertise send-mode { sub-vlan | all}
//配置VRRP通告报文在Super-VLAN中的发送方式。
缺省情况下,Master设备向Super-VLAN中状态为Up且VLAN ID最小的Sub-VLAN发送VRRP通告报文。
系统对收到的VRRP通告报文的TTL值进行检测,如果TTL值不等于255,则丢弃这个报文。在不同设备制造商的设备配合使用的组网环境中,检测VRRP报文的TTL值可能导致错误地丢弃合法报文,此时用户可以配置系统不检测VRRP报文的TTL值,以实现不同设备制造商设备之间的互通。
vrrp un-check ttl
//禁止检测VRRP报文的TTL值。
VRRPv2支持在通告报文中设定不同的认证方式和认证字。
注:目前仅VRRPv2版本支持认证,VRRPv3版本不支持认证。VRRPv2版本保留报文的认证字段,是为了兼容早期版本(RFC2338),VRRP认证并不能提高安全性。
vrrp vrid 1 authentication-mode { simple {key | plain key | cipher cipher-key} | md5 md5-key}
//配置VRRP报文认证方式。
路由器支持对虚拟IP地址的Ping功能,可用于:
vrrp virtual-ip ping enable
//使能虚拟地址可达性功能。
//缺省情况下,该功能处于使能状态,Master设备响应对本备份组虚拟IP地址的Ping报文。
vrrp arp send-mode simple
//使能Master设备使用QinQ终结子接口下配置的外层Tag
//的VLAN和内层Tag段内的第一个VLAN发送免费ARP报文。
如下图拓扑,AR1,AR2为内网路由器,配置VRRP虚拟IP实现备份。同时在AR1与AR2之间配置了BFD,使它们之间可以快速检测链路故障。
AR3,4,5为外网路由器。在AR1与AR3上配置了上行接口检测,当上行接口GE1/0/0状态Down时,VRRP备份组能够及时感知并进行主备切换,由AR2接替作为网关继续承担业务转发,以减小接口状态Down对业务传输的影响。
在AR2和上还配置了IP检测,检测到4.4.4.4 的链路是否有故障。 配置VRRP与路由联动监视上行链路。当非直连上行链路Down时,VRRP优先级自动降低,实现主备快速切换。
在AR1和AR2上还配置了负载分担。现在内网流量通过不同网关走不同路由器。
在AR2上配置的检测到4.4.4.4网段的NQA,ICMP直连检测,当传输质量低于百分之八十时,VRRP vrid 2 优先级自动降低,实现主备快速切换。
AR1:
<AR1>dis current-configuration
#
sysname AR1
#
vrrp gratuitous-arp timeout 100
//配置免费ARP发送时间间隔为100s
vrrp version v3
//VRRP选择版本v3
vrrp recover-delay 3
//VRRP 恢复延迟3s
#
bfd
#
acl number 2000
rule 5 permit source 192.168.1.0 0.0.0.255
rule 10 permit source 192.168.2.0 0.0.0.255
rule 15 deny
#
interface GigabitEthernet0/0/0
ip address 13.1.1.1 255.255.255.0
nat outbound 2000
//nat ,easy IP,实现内网到外网的地址转换
#
interface GigabitEthernet0/0/1
ip address 192.168.1.1 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.254
vrrp vrid 1 priority 110
vrrp vrid 1 timer advertise 2
vrrp vrid 1 track interface GigabitEthernet0/0/0 reduced 30
vrrp vrid 1 version-3 send-packet-mode v2v3-both
vrrp vrid 1 track ip route 4.4.4.4 255.255.255.0 reduced 30
vrrp vrid 1 authentication-mode md5 %$%$[U*W7Y)upJ3N*0#HA_x~~A=8%$%$
//VRRP vrid 1 认证密码 huawei
vrrp vrid 2 virtual-ip 192.168.1.253
vrrp vrid 2 version-3 send-packet-mode v2v3-both
#
bfd 1 bind peer-ip 192.168.1.2 source-ip 192.168.1.1 auto
commit
#
rip 1
version 2
network 13.0.0.0
#
AR2:
<AR2>display current-configuration
#
sysname AR2
#
bfd
#
acl number 2000
rule 5 permit source 192.168.1.0 0.0.0.255
rule 10 permit source 192.168.2.0 0.0.0.255
rule 15 deny
#
interface GigabitEthernet0/0/0
ip address 25.1.1.2 255.255.255.0
nat outbound 2000
#
interface GigabitEthernet0/0/1
ip address 192.168.1.2 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.254
vrrp vrid 1 preempt-mode timer delay 3
vrrp vrid 1 authentication-mode md5 %$%$)vYYTI4Nv=@M5_0,Yx^/~BLU%$%$
vrrp vrid 2 virtual-ip 192.168.1.253
vrrp vrid 2 track nqa vrrp test reduced 20
#
interface GigabitEthernet0/0/2
#
interface NULL0
#
bfd 1 bind peer-ip 192.168.1.1 source-ip 192.168.1.2 auto
commit
#
rip 1
version 2
network 25.0.0.0
#
nqa test-instance vrrp test
test-type icmp
destination-address ipv4 4.4.4.4
fail-percent 80
frequency 20
probe-count 5
start now
#
AR3:
<AR3>dis current-configuration
#
sysname AR3
#
interface GigabitEthernet0/0/0
ip address 13.1.1.3 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 23.1.1.3 255.255.255.0
#
interface GigabitEthernet0/0/2
ip address 34.1.1.3 255.255.255.0
#
rip 1
version 2
network 34.0.0.0
network 13.0.0.0
#
AR4:
<AR4>dis current-configuration
#
sysname AR4
#
interface GigabitEthernet0/0/0
ip address 34.1.1.4 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 45.1.1.4 255.255.255.0
#
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
#
rip 1
version 2
network 34.0.0.0
network 45.0.0.0
network 4.0.0.0
#
AR5:
[AR5]dis current-configuration
#
sysname AR5
#
interface GigabitEthernet0/0/0
ip address 45.1.1.5 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 25.1.1.5 255.255.255.128
#
rip 1
version 2
network 25.0.0.0
network 45.0.0.0
参考文档:华为HedEx文档