在VRRP标准协议模式中,只有Master路由器可以转发报文,Backup路由器处于监听状态,无法转发报文。虽然创建多个备份组可以实现多台路由器之间的负载分担,但是局域网内的主机需要设置不同的网关,增加了配置的复杂性。
VRRP负载均衡模式在VRRP提供的虚拟网关冗余备份功能基础上,增加了负载均衡功能。其实现原理为:将一个虚拟IP地址与多个虚拟MAC地址对应,VRRP备份组中的每台路由器都对应一个虚拟MAC地址;使用不同的虚拟MAC地址应答主机的ARP(IPv4网络中)/ND(IPv6网络中)请求,从而使得不同主机的流量发送到不同的路由器,备份组中的每台路由器都能转发流量。在VRRP负载均衡模式中,只需创建一个备份组,就可以实现备份组中多台路由器之间的负载分担,避免了标准协议模式下VRRP备份组中Backup路由器始终处于空闲状态、网络资源利用率不高的问题。
VRRP负载均衡模式以VRRP标准协议模式为基础,VRRP标准协议模式中的工作机制(如Master路由器的选举、抢占、监视功能等),VRRP负载均衡模式均支持。VRRP负载均衡模式还在此基础上,增加了新的工作机制,详见下面的介绍。
VRRP负载均衡模式中,Master路由器负责为备份组中的路由器分配虚拟MAC地址,并为来自不同主机的ARP/ND请求,应答不同的虚拟MAC地址,从而实现流量在多台路由器之间分担。备份组中的Backup路由器不会应答主机的ARP/ND请求。
以IPv4网络为例,VRRP负载均衡模式的具体工作过程为:
(1) Master路由器为备份组中的路由器(包括Master自身)分配虚拟MAC地址。如下图所示,虚拟IP地址为10.1.1.1/24的备份组中,Router A作为Master路由器,Router B作为Backup路由器。Router A为自己分配的虚拟MAC地址为000f-e2ff-0011,为Router B分配的虚拟MAC地址为000f-e2ff-0012。
Master分配虚拟MAC地址示意图:
(2) Master路由器接收到主机发送的目标IP地址为虚拟IP地址的ARP请求后,根据负载均衡算法使用不同的虚拟MAC地址应答主机的ARP请求。如下图所示,Host A发送ARP请求获取网关10.1.1.1对应的MAC地址时,Master路由器(即Router A)使用Router A的虚拟MAC地址应答该请求;Host B发送ARP请求获取网关10.1.1.1对应的MAC地址时,Master路由器使用Router B的虚拟MAC地址应答该请求。
Mast应答ARP请求示意图:
(3) 通过使用不同的虚拟MAC地址应答主机的ARP请求,可以实现不同主机的流量发送给不同的路由器。如下图所示,Host A认为网关的MAC地址为Router A的虚拟MAC地址,从而保证Host A的流量通过Router A转发;Host B认为网关的MAC地址为Router B的虚拟MAC地址,从而保证Host B的流量通过Router B转发。
主机通过不同路由器转发流量示意图
当Master路由器收到ARP请求报文后,发出的ARP应答报文中以太网报文头部中的源MAC地址和ARP报文内容的源MAC地址不一致。这样,就需要对和VRRP备份组配合使用的二层设备做如下限制:
(1)不能启用ARP报文源MAC地址一致性检查功能;
(2)如果启用了ARP Detection功能,不能启用ARP报文有效性检查功能的源MAC地址检查模式。
1. 虚拟转发器的创建
虚拟MAC地址的分配,实现了不同主机将流量发送给备份组中不同的路由器。为了使备份组中的路由器能够转发主机发送的流量,需要在路由器上创建虚拟转发器。每个虚拟转发器都对应备份组的一个虚拟MAC地址,负责转发目的MAC地址为该虚拟MAC地址的流量。
虚拟转发器的创建过程为:
(1) 备份组中的路由器获取到Master路由器为其分配的虚拟MAC地址后,创建该MAC地址对应的虚拟转发器,该路由器称为此虚拟MAC地址对应虚拟转发器的VF Owner(Virtual Forwarder Owner,虚拟转发器拥有者)。
(2) VF Owner将虚拟转发器的信息通告给备份组内其它的路由器。
(3) 备份组内的路由器接收到虚拟转发器信息后,在本地创建对应的虚拟转发器。
由此可见,备份组中的路由器上不仅需要创建Master路由器为其分配的虚拟MAC地址对应的虚拟转发器,还需要创建其它路由器通告的虚拟MAC地址对应的虚拟转发器。
2. 虚拟转发器的权重和优先级
虚拟转发器的权重标识了虚拟转发器的转发能力。权重值越高,虚拟转发器的转发能力越强。当权重低于一定的值——失效下限时,虚拟转发器无法再为主机转发流量。
虚拟转发器的优先级用来决定虚拟转发器的状态:不同路由器上同一个虚拟MAC地址对应的虚拟转发器中,优先级最高的虚拟转发器处于Active状态,称为AVF(Active Virtual Forwarder,动态虚拟转发器),负责转发流量;其它虚拟转发器处于Listening状态,称为LVF(Listening Virtual Forwarder,监听虚拟转发器),监听AVF的状态,不转发流量。虚拟转发器的优先级取值范围为0~255,其中,255保留给VF Owner使用。如果VF Owner的权重高于或等于失效下限,则VF Owner的优先级为最高值255。
设备根据虚拟转发器的权重计算虚拟转发器的优先级:
· 如果权重高于或等于失效下限,且设备为VF Owner,则虚拟转发器的优先级为最高值255;
· 如果权重高于或等于失效下限,且设备不是VF Owner,则虚拟转发器的优先级为权重/(本地AVF的数目+1);
· 如果权重低于失效下限,则虚拟转发器的优先级为0。
3. 虚拟转发器备份
备份组中不同路由器上同一个虚拟MAC地址对应的虚拟转发器之间形成备份关系。当为主机转发流量的虚拟转发器或其对应的路由器出现故障后,可以由其它路由器上备份的虚拟转发器接替其为主机转发流量。
虚拟转发器示意图
上图举例说明了备份组中每台路由器上的虚拟转发器信息及其备份关系。Master路由器Router A为自己、Router B和Router C分配的虚拟MAC地址分别为000f-e2ff-0011、000f-e2ff-0012和000f-e2ff-0013。这些虚拟MAC地址对应的虚拟转发器分别为VF 1、VF 2和VF 3。在Router A、Router B和Router C上都创建了这三个虚拟转发器,并形成备份关系。例如,Router A、Router B和Router C上的VF 1互相备份:
虚拟转发器始终工作在抢占模式。对于不同路由器上互相备份的LVF和AVF,如果LVF接收到AVF发送的虚拟转发器信息中虚拟转发器优先级低于本地虚拟转发器假设变成AVF后的优先级,则LVF将会抢占成为AVF。
4. 虚拟转发器的定时器
虚拟转发器的AVF出现故障后,接替其工作的新的AVF将为该VF创建Redirect Timer和Timeout Timer两个定时器。
· Redirect Timer:VF重定向定时器。该定时器超时前,Master路由器还会采用该VF对应的虚拟MAC地址应答主机的ARP/ND请求;该定时器超时后,Master路由器不再采用该VF对应的虚拟MAC地址应答主机的ARP/ND请求。如果VF Owner在Redirect Timer超时前恢复,则VF Owner可以迅速参与流量的负载分担。
· Timeout Timer:VF生存定时器,即AVF接替VF Owner工作的期限。该定时器超时前,备份组中的路由器上都保留该VF,AVF负责转发目的MAC地址为该VF对应虚拟MAC地址的报文;该定时器超时后,备份组中的路由器上都删除该VF,不再转发目的MAC地址为该VF对应虚拟MAC地址的报文。
5. 虚拟转发器监视功能
AVF负责转发目的MAC地址为虚拟转发器MAC地址的流量,当AVF连接的上行链路出现故障时,如果不能及时通知LVF接替其工作,局域网中以此虚拟转发器MAC地址为网关MAC地址的主机将无法访问外部网络。
虚拟转发器的监视功能可以解决上述问题。利用NQA、BFD等监测AVF连接的上行链路的状态,并通过Track功能在虚拟转发器和NQA/BFD之间建立联动。当上行链路出现故障,Track项的状态变为Negative,虚拟转发器的权重将降低指定的数额,以便虚拟转发器优先级更高的路由器抢占成为AVF,接替其转发流量。
1. 组网需求
2. 组网图
VRRP负载均衡模式配置组网图
3. 配置步骤
(1) 配置Router A
# 配置VRRP工作在负载均衡模式。
[RouterA] vrrp mode load-balance
# 创建备份组1,并配置备份组1的虚拟IP地址为10.1.1.1。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] ip address 10.1.1.2 24
[RouterA-GigabitEthernet2/0/1] vrrp vrid 1 virtual-ip 10.1.1.1
# 配置Router A在备份组1中的优先级为120,高于Router B的优先级110和Router C的优先级100,以保证Router A成为Master。
[RouterA-GigabitEthernet2/0/1] vrrp vrid 1 priority 120
# 配置Router A工作在抢占方式,以保证Router A故障恢复后,能再次抢占成为Master,即只要Router A正常工作,Router A就会成为Master。为了避免频繁地进行状态切换,配置抢占延迟时间为5秒。
[RouterA-GigabitEthernet2/0/1] vrrp vrid 1 preempt-mode delay 5
[RouterA-GigabitEthernet2/0/1] quit
# 创建和上行接口GigabitEthernet2/0/2物理状态关联的Track项1。如果Track项的状态为Negative,则说明Router A的上行接口出现故障。
[RouterA] track 1 interface gigabitethernet 2/0/2
# 配置虚拟转发器监视Track项1。Track项的状态为Negative时,降低Router A上虚拟转发器的权重,使其低于失效下限10,即权重降低的数额大于245,以便其它设备接管Router A的转发任务。本例中,配置虚拟转发器权重降低数额为250。
[RouterA] interface gigabitethernet 2/0/1
[RouterA-GigabitEthernet2/0/1] vrrp vrid 1 track 1 weight reduced 250
(2) 配置Router B
# 配置VRRP工作在负载均衡模式。
[RouterB] vrrp mode load-balance
# 创建备份组1,并配置备份组1的虚拟IP地址为10.1.1.1。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] ip address 10.1.1.3 24
[RouterB-GigabitEthernet2/0/1] vrrp vrid 1 virtual-ip 10.1.1.1
# 配置Router B在备份组1中的优先级为110,高于Router C的优先级100,以保证Router A出现故障时,Router B成为Master。
[RouterB-GigabitEthernet2/0/1] vrrp vrid 1 priority 110
# 配置Router B工作在抢占方式,抢占延迟时间为5秒。
[RouterB-GigabitEthernet2/0/1] vrrp vrid 1 preempt-mode delay 5
[RouterB-GigabitEthernet2/0/1] quit
# 创建和上行接口GigabitEthernet2/0/2物理状态关联的Track项1。如果Track项的状态为Negative,则说明Router B的上行接口出现故障。
[RouterB] track 1 interface gigabitethernet 2/0/2
# 配置虚拟转发器监视Track项1。Track项的状态为Negative时,降低Router B上虚拟转发器的权重,使其低于失效下限10,即权重降低的数额大于245,以便其它设备接管Router B的转发任务。本例中,配置虚拟转发器权重降低数额为250。
[RouterB] interface gigabitethernet 2/0/1
[RouterB-GigabitEthernet2/0/1] vrrp vrid 1 track 1 weight reduced 250
(3) 配置Router C
# 配置VRRP工作在负载均衡模式。
[RouterC] vrrp mode load-balance
# 创建备份组1,并配置备份组1的虚拟IP地址为10.1.1.1。
[RouterC] interface gigabitethernet 2/0/1
[RouterC-GigabitEthernet2/0/1] ip address 10.1.1.4 24
[RouterC-GigabitEthernet2/0/1] vrrp vrid 1 virtual-ip 10.1.1.1
# 配置Router C工作在抢占方式,抢占延迟时间为5秒。
[RouterC-GigabitEthernet2/0/1] vrrp vrid 1 preempt-mode delay 5
[RouterC-GigabitEthernet2/0/1] quit
# 创建和上行接口GigabitEthernet2/0/2物理状态关联的Track项1。如果Track项的状态为Negative,则说明Router C的上行接口出现故障。
[RouterC] track 1 interface gigabitethernet 2/0/2
# 配置虚拟转发器监视Track项1。Track项的状态为Negative时,降低Router C上虚拟转发器的权重,使其低于失效下限10,即权重降低的数额大于245,以便其它设备接管Router C的转发任务。本例中,配置虚拟转发器权重降低数额为250。
[RouterC] interface gigabitethernet 2/0/1
[RouterC-GigabitEthernet2/0/1] vrrp vrid 1 track 1 weight reduced 250
4. 验证配置
配置完成后,在Host A上可以ping通外网。通过display vrrp verbose命令查看配置后的结果。
# 显示Router A上备份组1的详细信息。
[RouterA-GigabitEthernet2/0/1] display vrrp verbose
IPv4 Virtual Router Information:
Running Mode : Load Balance
Total number of virtual routers : 1
Interface GigabitEthernet2/0/1
VRID : 1 Adver Timer : 100
Admin Status : Up State : Master
Config Pri : 120 Running Pri : 120
Preempt Mode : Yes Delay Time : 5
Auth Type : None
Virtual IP : 10.1.1.1
Member IP List : 10.1.1.2 (Local, Master)
10.1.1.3 (Backup)
10.1.1.4 (Backup)
Forwarder Information: 3 Forwarders 1 Active
Config Weight : 255
Running Weight : 255
Forwarder 01
State : Active
Virtual MAC : 000f-e2ff-0011 (Owner)
Owner ID : 0000-5e01-1101
Priority : 255
Active : local
Forwarder 02
State : Listening
Virtual MAC : 000f-e2ff-0012 (Learnt)
Owner ID : 0000-5e01-1103
Priority : 127
Active : 10.1.1.3
Forwarder 03
State : Listening
Virtual MAC : 000f-e2ff-0013 (Learnt)
Owner ID : 0000-5e01-1105
Priority : 127
Active : 10.1.1.4
Forwarder Weight Track Information:
Track Object : 1 State : Positive Weight Reduced : 250
# 显示Router B上备份组1的详细信息。
[RouterB-GigabitEthernet2/0/1] display vrrp verbose
IPv4 Virtual Router Information:
Running Mode : Load Balance
Total number of virtual routers : 1
Interface GigabitEthernet2/0/1
VRID : 1 Adver Timer : 100
Admin Status : Up State : Backup
Config Pri : 110 Running Pri : 110
Preempt Mode : Yes Delay Time : 5
Become Master : 426ms left
Auth Type : None
Virtual IP : 10.1.1.1
Member IP List : 10.1.1.3 (Local, Backup)
10.1.1.2 (Master)
10.1.1.4 (Backup)
Forwarder Information: 3 Forwarders 1 Active
Config Weight : 255
Running Weight : 255
Forwarder 01
State : Listening
Virtual MAC : 000f-e2ff-0011 (Learnt)
Owner ID : 0000-5e01-1101
Priority : 127
Active : 10.1.1.2
Forwarder 02
State : Active
Virtual MAC : 000f-e2ff-0012 (Owner)
Owner ID : 0000-5e01-1103
Priority : 255
Active : local
Forwarder 03
State : Listening
Virtual MAC : 000f-e2ff-0013 (Learnt)
Owner ID : 0000-5e01-1105
Priority : 127
Active : 10.1.1.4
Forwarder Weight Track Information:
Track Object : 1 State : Positive Weight Reduced : 250
# 显示Router C上备份组1的详细信息。
[RouterC-GigabitEthernet2/0/1] display vrrp verbose
IPv4 Virtual Router Information:
Running Mode : Load Balance
Total number of virtual routers : 1
Interface GigabitEthernet2/0/1
VRID : 1 Adver Timer : 100
Admin Status : Up State : Backup
Config Pri : 100 Running Pri : 100
Preempt Mode : Yes Delay Time : 5
Become Master : 417ms left
Auth Type : None
Virtual IP : 10.1.1.1
Member IP List : 10.1.1.4 (Local, Backup)
10.1.1.2 (Master)
10.1.1.3 (Backup)
Forwarder Information: 3 Forwarders 1 Active
Config Weight : 255
Running Weight : 255
Forwarder 01
State : Listening
Virtual MAC : 000f-e2ff-0011 (Learnt)
Owner ID : 0000-5e01-1101
Priority : 127
Active : 10.1.1.2
Forwarder 02
State : Listening
Virtual MAC : 000f-e2ff-0012 (Learnt)
Owner ID : 0000-5e01-1103
Priority : 127
Active : 10.1.1.3
Forwarder 03
State : Active
Virtual MAC : 000f-e2ff-0013 (Owner)
Owner ID : 0000-5e01-1105
Priority : 255
Active : local
Forwarder Weight Track Information:
Track Object : 1 State : Positive Weight Reduced : 250
以上显示信息表示在备份组1中Router A为Master路由器,Router B和Router C 为Backup路由器。Router A、Router B和Router C上各自存在一个AVF,并存在作为备份的两个LVF。
# 当Router A的上行接口GigabitEthernet2/0/2出现故障后,通过display vrrp verbose命令查看Router A上备份组的详细信息。
[RouterA-GigabitEthernet2/0/1] display vrrp verbose
IPv4 Virtual Router Information:
Running Mode : Load Balance
Total number of virtual routers : 1
Interface GigabitEthernet2/0/1
VRID : 1 Adver Timer : 100
Admin Status : Up State : Master
Config Pri : 120 Running Pri : 120
Preempt Mode : Yes Delay Time : 5
Auth Type : None
Virtual IP : 10.1.1.1
Member IP List : 10.1.1.2 (Local, Master)
10.1.1.3 (Backup)
10.1.1.4 (Backup)
Forwarder Information: 3 Forwarders 0 Active
Config Weight : 255
Running Weight : 5
Forwarder 01
State : Initialize
Virtual MAC : 000f-e2ff-0011 (Owner)
Owner ID : 0000-5e01-1101
Priority : 0
Active : 10.1.1.4
Forwarder 02
State : Initialize
Virtual MAC : 000f-e2ff-0012 (Learnt)
Owner ID : 0000-5e01-1103
Priority : 0
Active : 10.1.1.3
Forwarder 03
State : Initialize
Virtual MAC : 000f-e2ff-0013 (Learnt)
Owner ID : 0000-5e01-1105
Priority : 0
Active : 10.1.1.4
Forwarder Weight Track Information:
Track Object : 1 State : Negative Weight Reduced : 250
# 通过display vrrp verbose命令查看Router C上备份组的详细信息。
[RouterC-GigabitEthernet2/0/1] display vrrp verbose
IPv4 Virtual Router Information:
Running Mode : Load Balance
Total number of virtual routers : 1
Interface GigabitEthernet2/0/1
VRID : 1 Adver Timer : 100
Admin Status : Up State : Backup
Config Pri : 100 Running Pri : 100
Preempt Mode : Yes Delay Time : 5
Become Master : 412ms left
Auth Type : None
Virtual IP : 10.1.1.1
Member IP List : 10.1.1.4 (Local, Backup)
10.1.1.2 (Master)
10.1.1.3 (Backup)
Forwarder Information: 3 Forwarders 2 Active
Config Weight : 255
Running Weight : 255
Forwarder 01
State : Active
Virtual MAC : 000f-e2ff-0011 (Take Over)
Owner ID : 0000-5e01-1101
Priority : 85
Active : local
Forwarder 02
State : Listening
Virtual MAC : 000f-e2ff-0012 (Learnt)
Owner ID : 0000-5e01-1103
Priority : 85
Active : 10.1.1.3
Forwarder 03
State : Active
Virtual MAC : 000f-e2ff-0013 (Owner)
Owner ID : 0000-5e01-1105
Priority : 255
Active : local
Forwarder Weight Track Information:
Track Object : 1 State : Positive Weight Reduced : 250
以上显示信息表示Router A的上行接口出现故障后,Router A上虚拟转发器的权重降低为5,低于失效下限。Router A上所有虚拟转发器的状态均变为Initialized,不能再用于转发。Router C成为虚拟MAC地址000f-e2ff-0011对应虚拟转发器的AVF,接管Router A的转发任务。
# Timeout Timer超时后(约1800秒后),查看Router C上备份组的详细信息。
[RouterC-GigabitEthernet2/0/1] display vrrp verbose
IPv4 Virtual Router Information:
Running Mode : Load Balance
Total number of virtual routers : 1
Interface GigabitEthernet2/0/1
VRID : 1 Adver Timer : 100
Admin Status : Up State : Backup
Config Pri : 100 Running Pri : 100
Preempt Mode : Yes Delay Time : 5
Auth Type : None
Virtual IP : 10.1.1.1
Member IP List : 10.1.1.4 (Local, Backup)
10.1.1.2 (Master)
10.1.1.3 (Backup)
Forwarder Information: 2 Forwarders 1 Active
Config Weight : 255
Running Weight : 255
Forwarder 02
State : Listening
Virtual MAC : 000f-e2ff-0012 (Learnt)
Owner ID : 0000-5e01-1103
Priority : 127
Active : 10.1.1.3
Forwarder 03
State : Active
Virtual MAC : 000f-e2ff-0013 (Owner)
Owner ID : 0000-5e01-1105
Priority : 255
Active : local
Forwarder Weight Track Information:
Track Object : 1 State : Positive Weight Reduced : 250
以上显示信息表示,Timeout Timer超时后,删除虚拟MAC地址000f-e2ff-0011对应的虚拟转发器,不再转发目的MAC地址为该MAC的报文。
# Router A出现故障后,通过display vrrp verbose命令查看Router B上备份组的详细信息。
[RouterB-GigabitEthernet2/0/1] display vrrp verbose
IPv4 Virtual Router Information:
Running Mode : Load Balance
Total number of virtual routers : 1
Interface GigabitEthernet2/0/1
VRID : 1 Adver Timer : 100
Admin Status : Up State : Master
Config Pri : 110 Running Pri : 110
Preempt Mode : Yes Delay Time : 5
Auth Type : None
Virtual IP : 10.1.1.1
Member IP List : 10.1.1.3 (Local, Master)
10.1.1.4 (Backup)
Forwarder Information: 2 Forwarders 1 Active
Config Weight : 255
Running Weight : 255
Forwarder 02
State : Active
Virtual MAC : 000f-e2ff-0012 (Owner)
Owner ID : 0000-5e01-1103
Priority : 255
Active : local
Forwarder 03
State : Listening
Virtual MAC : 000f-e2ff-0013 (Learnt)
Owner ID : 0000-5e01-1105
Priority : 127
Active : 10.1.1.4
Forwarder Weight Track Information:
Track Object : 1 State : Positive Weight Reduced : 250
以上显示信息表示Router A出现故障后,Router B的优先级高于Router C,将抢占成为Master路由器,同时删除了虚拟MAC地址000f-e2ff-0011对应的虚拟转发器。