VRRP简介:
VRRP(Virtual router redundancy protocol, 虚拟路由器冗余协议)(RFC2338)提供了局域网上的设备备份机制。
VRRP 协议是一种容错协议,它与CISCO公司的私有协议HSRP(Hot Standby Redundency Protocol)实现相同的功能。它保证当主机的下一跳路由器坏掉时,可以及时由另一台路由器来代替,从而保持通讯的连续性和可靠性。
VRRP基本概念:
VRRP路由器:
运行VRRP协议的路由器,一台VRRP路由器可以同时参与到多个VRRP组中,在不同的组中,一台VRRP路由器可以充当不同的角色.
虚拟IP地址、MAC地址:
用于标示虚拟的路由器,该地址实际上就是用户的默认网关.
IP地址所有者:
将局域网的接口地址作为虚拟路由器的IP地址的路由器。当运行时,该路由器将响应寻址到该IP地址的数据包。
MASTER、BACKUP路由器:
MASTER路由器就是在VRRP组实际转发数据包的路由器
BACKUP路由器就是在VRRP组中处于监听状态的路由器
一种报文:
VRRP广播报文:由主路由器定时发出来通告它的存在,使用这些报文可以检测虚拟路由器各种参数,还可以用于主路由器的选举。
三种状态机:
初始状态(Initialize)、主状态(Master)、备份状态(Backup)
主路由选择:
根据优先级的大小挑选主路由器,优先级最大的为主路由器,若优先级相同,则比较接口的主IP地址,主IP地址大的就成为主路由器,由它提供实际的路由服务。(下图中RTA为Master,RTB为Backup)
VRRP工作原理:
VRRP运行在同一局域网的RouterA和RouterB两个路由器上,它将RouterA和RouterB组成了一个虚拟路由器,这个虚拟路由器拥有自已的IP地址10.10.10.1和MAC地址(VRRP计算生成的)。当然,物理路由器也有自己的真实IP地址,RouterA的真实IP地址是10.10.10.2;RouterB的真实IP地址是10.10.10.3。我们配置局域网内的主机上的默认网关是虚拟路由器的IP地址10.10.10.1,这样主机只知道虚拟路由器的IP地址,而不知道真实的RouterA 和 RouterB 的IP地址。
局域网的主机通过虚拟路由器的IP地址与外部网络联系,对于一个虚拟路由器,我们还需要确定如何选举主虚拟路由器。
1.根据路由器配置的优先级的大小,优先级最大的为主虚拟路由器,指定状态为Master,若优先级相同,则比较路由器接口的IP地址,IP地址大的就成为主虚拟路由器,由主虚拟路由器为主机提供实际的路由转发服务。
2.在一个虚拟路由器中的其它路由器(除主虚拟路由器之外)作为备份虚拟路由器,随时监测主虚拟路由器的状态。当主路由器正常工作时,它会每隔一段时间发送一个VRRP组播报文,以通知其它的备份路由器,主虚拟路由器处于正常工作状态。如果备份虚拟路由器长时间没有接收到来自主虚拟路由器的报文,则将自己状态转为Master。当在一个虚拟路由器中有多个备份虚拟路由器时,将有可能产生多个主虚拟路由器。这时每一个主虚拟路由器就会比较VRRP报文中的优先级和自己本地的优先级,如果本地的优先级小于VRRP报文中的优先级,则将自己的状态转为Backup,否则保持自己的状态不变。通过这样一个过程,就会将优先级最大的路由器选成新的主虚拟路由器。
VRRP 主要特点:
IP地址备份:
在局域网内多个路由器共用一个虚拟IP地址,实现对用户主机的默认网关的备份,可以将网络中断时间减少至最低。将一个路由器配置到多个虚拟路由器中,也可以实现负载均衡。
选择最优路径:
根据优先级和接口IP地址的配置,从多个路由器中选举的主虚拟路由器,可以为用户提供最优的网络路由路径。
高效率的运作:
除主虚拟路由器定时发送VRRP组播报文之外,主虚拟路由器与备份路由器之间没有多余的通信。任何优先级低或相等的备份路由器不能发起状态转移,这样主虚拟路由器可以持续可靠地运行。
安全机制:
VRRP协议支持对VRRP报文的认证方式。在一个安全性要求不高的网络环境中,我们可以不考虑认证方式的配置,路由器不会对发送的VRRP报文做认证处理,而接受VRRP报文的路由器也不会对VRRP做认证比较,就认为是一个合法的VRRP报文。但是,在一个有安全性要求的网络环境中,可以对VRRP报文增加认证方式,路由器对发送VRRP报文增加认证字,而接受VRRP报文的路由器会将收到的VRRP报文的认证字与本地配置的认证字进行比较,若相同,就认为是一个合法的VRRP报文,进行处理;若不相同,则认为是一个不合法VRRP报文,就会丢弃。
vrrp的基本配置指令:
设置备份组的优先级
Router(config-if)# vrrp group priority level
恢复VRRP优先级的默认值 (默认100)
Router(config-if)# no vrrp group priority [level]
设置VRRP备份组处于抢占模式(默认为抢占模式)
Router(config-if)# vrrp group preempt [delay seconds]
设置VRRP备份组处于非抢占模式
Router(config-if)# no vrrp group preempt
设置VRRP备份组监视的接口
Router(config-if)# vrrp group track interface-type number [interface –priority]
举例:
取消VRRP备份组监视接口设置
Router(config-if)# no vrrp group track interface-type number
可以使用本命令监视出口链路,需要注意的是被监视的接口只允许是三层可路由的逻辑接口(如Routed Port ,SVI ,Loopback,Tunnel 等等)。
思科hsrp配置:
配置步骤:
R1配置:
Router#;en
Router#conf t
Router(config)#hostname R1
R1(config)#int s0
R1(config-if)#ip add 2.2.2.1 255.255.255.252
R1(config-if)#no shut
R1(config-if)#int e0
R1(config-if)#ip add 192.168.10.100 255.255.255.0
R1(config-if)#no shut
R1(config-if)#exit
R1(config)#ip route 0.0.0.0 0.0.0.0 s0
R1(config)#access-list 10 permit 192.168.10.0 255.255.255.0
R1(config)#ip nat inside source list 10 interface s0 overload
R1(config)#end
R2配置:
Router#en
Router#conf t
Router(config)#hostname R2
R2(config)#int s0
R2(config-if)#ip add 2.2.2.2 255.255.255.252
R2(config-if)#no shut
R2(config-if)#clock rate 64000
R2(config-if)#int s1
R2(config-if)#ip add 1.1.1.2 255.255.255.248
R2(config-if)#no shut
R2(config-if)#clock rate 64000
R2(config-if)#end
R3配置:
Router#en
Router#conf t
Router(config)#hostname R3
R3(config)#int s0
R3(config-if)#ip add 1.1.1.1 255.255.255.248
R3(config-if)#no shut
R3(config-if)#int e0
R3(config-if)#ip add 192.168.20.100 255.255.255.0
R3(config-if)#no shut
R3(config-if)#exit
R3(config)#ip route 0.0.0.0 0.0.0.0 S0
R3(config)#access-list 20 permit 192.168.20.0 255.255.255.0
R3(config)#ip nat inside source list 20 interface s0 overload
R3(config) #end
hsrp配置:
R1上配置:
R1#conf t
R1(config)#int e0
R1(config-if)#standby 1 ip add 192.168.10.254 //激活HSRP,设置R1连接的内网的虚拟网关
R1(config-if)#standby 1 priority 120 //用于设定端口的HSRP优先级,具有最高备份优先级的HSRP成员将成为激活路由器
R1(config-if)#standby 1 preempt //表明当本地路由器的备份优先级超过当前激活路由器时,它就将接管控制权,成为激活路由器
R1(config-if)#standby 1 track serial 0 40 //用于设置允许路由器端口根据另一端口的可用性而修改自己的HSRP优先级值(即监视端口状态)
R1(config-if)#standby use-bia //启用HSRP多组均衡负载
R1(config-if)#standby 2 ip add 192.168.20.254
R1(config-if)#standby 2 prempt
R3上配置:
R3#conf t
R3(config)#int E0
R3(config-if)#standby 2 ip add 192.168.20.254 //激活HSRP,设置R3连接的内网的虚拟网关
R3(config-if)#standby 2 priority 120 //用于设定端口的HSRP优先级,具有最高备份优先级的HSRP成员将成为激活路由器
R3(config-if)#standby 2 preempt //表明当本地路由器的备份优先级超过当前激活路由器时,它就将接管控制权,成为激活路由器
R3(config-if)#standby 2 track serial 0 40 //用于设置允许路由器端口根据另一端口的可用性而修改自己的HSRP优先级值
R3(config-if)#standby use-bia //启用HSRP多组均衡负载
R3(config-if)#standby 1 ip add 192.168.20.254
R3(config-if)#standby 1 prempt
华为vrrp实例应用:
实验要求:
R5为vlan10的主路由,为vlan20的备份路由。R9为vlan20的主路由,为vlan10的备份路由。R10为外网,现要求vlan10的的请求都经过S13从R5向服务器发出请求。vlan20的请求都经过S11从R9向服务器发出请求。当一条路由出故障时,都任然能从另一条路由通信。
配置信息:
R5配置信息:
[r5]dis cur
Now create configuration...
Current configuration
!
version 1.74
sysname r5
firewall enable
aaa-enable
aaa accounting-scheme optional
vrrp ping-enable
!
acl 2000 match-order auto
rule normal permit source 192.168.10.0 0.0.0.255
rule normal permit source 192.168.20.0 0.0.0.255
!
interface Aux0
async mode flow
link-protocol ppp
!
interface Ethernet0
!
interface Ethernet0.10
vlan-type dot1q vid 10
ip address 192.168.10.1 255.255.255.0
vrrp vrid 10 virtual-ip 192.168.10.254
vrrp vrid 10 priority 120
!
interface Ethernet0.20
vlan-type dot1q vid 20
ip address 192.168.20.1 255.255.255.0
vrrp vrid 20 virtual-ip 192.168.20.254
!
interface Ethernet1
!
interface Serial0
link-protocol ppp
!
interface Serial1
link-protocol ppp
ip address 192.168.30.2 255.255.255.0
nat outbound 2000 interface
!
voice-setup
!
subscriber-line 0
!
subscriber-line 1
!
quit
!
quit
ip route-static 0.0.0.0 0.0.0.0 192.168.30.1 preference 60
!
return
R9配置信息:
[R9]
[R9]dis cur
Now create configuration...
Current configuration
!
version 1.74
local-user user1 service-type administrator password simple 123
sysname R9
firewall enable
aaa-enable
aaa accounting-scheme optional
vrrp ping-enable
!
acl 2000 match-order auto
rule normal permit source 192.168.10.1 0.0.0.255
rule normal permit source 192.168.20.1 0.0.0.255
!
interface Aux0
async mode flow
link-protocol ppp
!
interface Ethernet0
ip address 192.168.100.9 255.255.255.0
!
interface Ethernet0.10
vlan-type dot1q vid 10
ip address 192.168.10.2 255.255.255.0
vrrp vrid 10 virtual-ip 192.168.10.254
!
interface Ethernet0.20
vlan-type dot1q vid 20
ip address 192.168.20.2 255.255.255.0
vrrp vrid 20 virtual-ip 192.168.20.254
vrrp vrid 20 priority 120
vrrp vrid 20 track Serial1 reduced 30
!
interface Ethernet1
!
interface Serial0
link-protocol ppp
!
interface Serial1
clock DTECLK1
link-protocol ppp
ip address 192.168.40.2 255.255.255.0
nat outbound 2000 interface
!
quit
ip route-static 0.0.0.0 0.0.0.0 192.168.40.1 preference 60
!
return
R10配置信息:
[r10]dis cur
Now create configuration...
Current configuration
!
version 1.74
local-user user1 service-type administrator password simple 123
sysname r10
firewall enable
aaa-enable
aaa accounting-scheme optional
!
interface Aux0
async mode flow
link-protocol ppp
!
interface Ethernet0
ip address 192.168.100.10 255.255.255.0
!
interface Ethernet1
!
interface Serial0
link-protocol ppp
ip address 192.168.40.1 255.255.255.0
!
interface Serial1
clock DTECLK1
link-protocol ppp
ip address 192.168.30.1 255.255.255.0
!
interface LoopBack1
ip address 2.2.2.2 255.255.255.0
!
return
SW13配置信息:
[SW13]dis cur
#
sysname SW13
#
radius scheme system
server-type huawei
primary authentication 127.0.0.1 1645
primary accounting 127.0.0.1 1646
user-name-format without-domain
domain system
radius-scheme system
access-limit disable
state active
vlan-assignment-mode integer
idle-cut disable
self-service-url disable
messenger time disable
domain default enable system
#
local-server nas-ip 127.0.0.1 key huawei
local-user user1
password simple 123
service-type telnet level 3
#
stp enable
#
vlan 1
#
vlan 10
#
vlan 20
#
interface Vlan-interface1
ip address 192.168.100.33 255.255.255.0
#
interface Aux0/0
#
interface Ethernet0/1
port link-type trunk
port trunk permit vlan all
#
interface Ethernet0/2
port link-type trunk
port trunk permit vlan all
#
interface Ethernet0/10
port access vlan 10
#
#
interface Ethernet0/24
port link-type trunk
port trunk permit vlan all
#
interface NULL0
#
user-interface aux 0
user-interface vty 0 4
authentication-mode scheme
#
return
SW11配置信息:
<sw11>dis cur
#
sysname sw11
#
radius scheme system
server-type huawei
primary authentication 127.0.0.1 1645
primary accounting 127.0.0.1 1646
user-name-format without-domain
domain system
radius-scheme system
access-limit disable
state active
idle-cut disable
self-service-url disable
messenger time disable
domain default enable system
#
local-server nas-ip 127.0.0.1 key huawei
local-user user1
password simple 123
service-type telnet level 3
#
stp enable
#
vlan 1
#
vlan 10
#
vlan 20
#
interface Vlan-interface1
ip address 192.168.100.41 255.255.255.0
#
interface Aux0/0
#
interface Ethernet0/1
port link-type trunk
port trunk permit vlan all
#
interface Ethernet0/2
port link-type trunk
port trunk permit vlan all
#
interface Ethernet0/10
port access vlan 10
#
interface Ethernet0/20
port access vlan 20
#
interface Ethernet0/21
#
interface Ethernet0/22
#
interface Ethernet0/23
#
interface Ethernet0/24
port link-type trunk
port trunk permit vlan all
#
interface NULL0
#
验证信息:
192.168.10.x主机:
当vlan10的主路由R5出现故障时,vlan10备份路由R9启用:
对路由信息进行追踪:
192.168.20.X主机对路由信息追踪:
vrrp知识拓展:
VRRP报文:
报文的发送:当Master正常工作时,它会每隔一段时间(缺省为1秒)发送一个VRRP广播报文,以通知组内的备份路由器,主路由器处于正常工作状态。(注意:只有Master发送VRRP报文)
VRRP广播报文被封装在IP报文里,通过组播地址发送。
相应的IP头域:
Source Address: 发送报文的主接口地址(非虚拟地址,非辅助地址)
Destination Address: 224.0.0.18
TTL: 255
Protocol: 112 (decimal) ; 0x
接收到VRRP广播报文后:
收到报文后进行检验:
IP TTL =255
VRRP version =2
收到的报文的程度>= VRRP header
VRRP checksum
验证类型检验(包括类型和验证字)
验证备份组号是否有效
备份组配置的地址列表是否相同(MAY)
报文的发送时间间隔是否一致如果验证不通过,则丢弃报文。VRRP广播报文被封装在IP报文里,通过组播地址发送。
VRRP三种状态:
初始状态(Initialize):
一开始的状态,等待着触发
收到触发时:
如果优先级为255(配置的虚拟地址与接口地址相同)-->将状态设置为Master,发送报文。否则,将状态设置为Backup在此状态时,不会对VRRP报文做任何处理。
如果配置的虚拟地址与接口地址相同,我们称该路由器为IP地址拥有者。
备份状态(Backup):
功能:
接收Master发送的VRRP广播报文,从中了解Master
对虚拟IP地址的ARP请求,不做响应
丢弃目的MAC地址为虚拟MAC地址的IP报文。
丢弃目的IP地址为虚拟IP地址的IP报文。
接收到VRRP广播报文后:
如果收到报文的优先级为0-->将状态设置为Master,开始发送报文
如果收到报文优先级小于本地优先级而且本地设置了抢占方式;则丢弃报文(一段时 间后由于没有接收到报文自己变为Master)
否则正常接收,对定时器进行重
主状态(Master):
功能:
定期发送VRRP广播报文
响应对虚拟IP地址的ARP请求,并且响应的是虚拟MAC地址,而不是接口的真实 MAC地址。
转发目的MAC地址为虚拟MAC地址的IP报文。
如果它是这个虚拟IP地址的拥有者(IPAddressOwner),则接收目的IP地址为这个虚拟IP地址的IP报文。否则,丢弃这个IP报文。
接收到VRRP广播报文后:
如果收到报文的优先级大于本地优先级或者:两者优先级相等但接收报文的主IP地址大于本地主IP地址;将状态设置为Backup
否则丢弃报文
收到shutdown事件后,转为初始状态。
VRRP常见问题:
1.ICMPRedirects
ICMP重定向会导致将路由器的真实接口IP地址通过重定向报文通知给网络内的主机
如果重定向报文中的目的地址的下一跳是一个备份组的MASTER,就将这个备份组的虚拟IP地址填充到ICMP重定向报文中的下一跳。
如果重定向报文中的目的地址地下一跳是一个备份组的BACKUP,就不发送ICMP重定向报文中。
如果重定向报文中的目的地址地下一跳是一个没有运行VRRP的路由器,就将这个路由器的真实接口IP地址填充到ICMP重定向报文中的下一跳。
2.HostARPRequests
当主机发出对虚拟路由器IP地址的请求时,以虚拟MAC地址回应
3.ProxyARP
如果在VRRP路由器中应用了ProxyARP,那么以虚拟MAC地址填充ProxyARP消息。
VRRP的虚拟地址是否可以访问?比如ping通,或使用网管访问?
对于这个问题一直有争议,因为“MUST NOT accept packets addressed to the IP address(es) associated with the virtual router if it is not the IP address owner.”由此认为访问虚拟IP地址的报文比如ping报文,除非Master是IP address owner,否则都不应该处理。但是,这一限制会造成一些困惑,很多用户有ping网关的习惯,并且并不懂VRRP,如果ping不通网关他们会认为网络有问题并可能引发纠纷,造成不必要的误会。目前基本上所有厂家的设备事实上都支持对虚拟地址的ping。我司的路由器一直支持,三层交换机有一段时间不支持,后来在用户的压力下也支持了,有些设备版本还搞了一个命令vrrp ping-enable。
怎么有些启用了VRRP的设备,Master回的MAC地址不是00-00-5e-00-01-groupnumber?
如果采用00-00-5e-00-01-groupnumber形式的MAC,在一个三层接口上只能支持一个或少量备份组,不能实现负载均衡功能,不能满足一些应用场合的要求。为了解决这个问题,采用了实MAC方式,即虚拟IP地址的MAC为Master的三层接口的实际MAC。这会带来以下问题:Master改变的情况下,虚拟IP地址对应的MAC随即改变。虽然新的Master被选举出来后会发一个免费ARP(gratuitous ARP),但是有些主机或网络设备不会根据免费ARP更新ARP表项,这导致在这些主机或网络设备的ARP表项老化之前,不能通过新Master访问外部网络。
VRRP的排错:
故障之一:控制台上频频给出配置错误的提示
这表明收到一个错误的VRRP报文,一种可能是备份组内的另一台路由器由于配置不一致造成的,另一种可能是有的机器试图发送非法的VRRP报文。对于第一种可能,可以通过修改配置来解决。对于第二种可能,则是有些机器有不良企图,应当通过非技术手段来解决。
VRRP是在收到与本地配置不相同的设备发出的协议报文时打印出告警信息的,此协议报文缺省为3秒一个,每次判断配置不一致都会有错误信息打印。
故障之二:同一个备份组内出现多个MASTER路由器
这分为两种情况,一种是多个MASTER并存时间较短,这种情况是正常的。无需进行人工干预。另一种是多个MASTER长时间共存,这很有可能是由于MASTER之间收不到VRRP报文,或者收到的报文不合法造成的。
解决的方法是,先互相在多个MASTER之间互相ping,如果ping不通,则是其他问题。如果能ping通,则一定是配置不同造成的,对于同一个VRRP备份组的配置,必须要保证虚拟Ip地址个数,每个虚拟IP地址,定时器间隔时间,认证方式完全一样。
故障之三:VRRP的状态频繁转换
原因:备份组的定时器时间间隔设置太短
解决办法:加大定时器时间间隔
设置抢占延迟时间