如上图所示,如果我们局域网中只有一个路由器作为网关,假如某天我们的路由器宕机了,那么整个局域网就无法上网,我们一般称之为单点故障。那么如何解决网关的单点故障呢? 我们可以在加一个网关。就变成了下面的图:
如图所示,我们加了一个路由器,设置了两个网关,如果AR1宕机了,我们可以使用AR2 这样就可以解决网关单点故障。那么问题又来了,如何来切换客户端的网关呢?假如客户端有500台PC,如果AR1宕机,我们需要将客户端的网关修改为:192.168.1.253,500台客户端不可能一个一个去修改。也不可能让员工自己去修改。我们如何解决呢?就是我们今天要说的VRRP。
首先我们设想,可不可以让客户端的网关指向一个虚拟的网关:192.168.1.254
(上图中黄色的路由器),然后这个虚拟的网关代理真实的R1、R2网关,然后再在真实的网关之间来回的自动切换。答案是可以的。VRRP就是做这个的。
Virtual Router Redundancy Protocol 虚拟路由器冗余协议,简称VRRP
VRRP(虚拟路由冗余协议):通过把几台路由设备联合组成一台虚拟路由设备,将虚拟路由设备的ip地址作为用户的默认网关地址实现与外部的通讯。当网关设备发生故障时,VRRP协议能够快速选举新的网关设备承担数据流量,保障网络的可靠通信。VRRP使用ip报文作为传输协议报文,协议号为112,使用固定的组播地址224.0.0.18进行发送,通过协议报文选举处一台路由器作为master,其他设备作为backup,来实现网关备份功能。VRRP只使用到advertisement这一种报文。
master路由器的选举:首先比较每台路由器的优先级,优先级大的成为master,优先级相同的话,就比较接口ip地址,ip地址大的成为master。master会周期性的发送advertisement报文,其实也就是一秒发送一次,如果backup每隔3秒没收到master发来的advertisement报文,则认为master down,就会进行新一轮的选举。
运行VRRP的路由器,一台VRRP路由器可以同时参与到多个VRRP组中,在不同的组中,一台VRRP路由器可以充当不同的角色。
一个VRRP组由多个VRRP路由器组成,使用
group ID
进行标识,属于同一VRRP组的VRRP路由器互相交换信息,每一个VRRP组中只能有一个Master。
对于每一个VRRP组,抽象出来的一个逻辑路由器,该路由器充当网络用户的网关,该路由器并非真实存在,事实上对于用户而言,只需要知道虚拟路由器的IP,至于具体的虚拟路由器的角色由谁来承担、数据转发任务由谁来承担、Master挂掉之后谁来接替,这是VRRP的工作。
虚拟IP地址表示虚拟路由器,该地址实际上就是用户的网关。与虚拟IP地址对应的MAC也是虚拟的,该MAC地址由固定位加上VRRP组ID构成,当PC发ARP请求虚拟IP地址对应的MAC地址,Master路由器响应这个RP请求并告知虚拟MAC地址。
Master路由器:就是VRRP组实际转发数据包的路由器,在每个VRRP组中,仅有Master响应对虚拟IP地址的ARP请求。Master路由器同时以一定的时间间隔发送VRRP消息,以便通知Backup路由器自己的存活。
Backup路由器:就是在VRRP组处于监听状态的路由器。一旦Master路由器出现故障,Backup路由器就开始接替工作。
选举依据:先比较接口优先级(比大),如果相等则比接口IP地址(比大)。
通过VRRP形成的虚拟路由器使用虚拟IP地址和虚拟MAC与网络中的PC进行通信。虚拟MAC的格式如下,最后1个字节的VRID表示VRRP ID号是16进制,例如VRID是1,虚拟MAC地址为00-00-5E-00-01-01
<Huawei>sy
Enter system view, return user view with Ctrl+Z.
[Huawei]sy R1
[R1]un in en
Info: Information center is disabled.
[R1]in g0/0/1
[R1-GigabitEthernet0/0/1]ip add 192.168.1.253 24
[R1-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 192.168.1.254
[R1-GigabitEthernet0/0/1]vrrp vrid 1 priority 120
[R1-GigabitEthernet0/0/1]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.1.253 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.254
vrrp vrid 1 priority 120
#
return
[R1-GigabitEthernet0/0/1]q
[R1]dis vrrp
GigabitEthernet0/0/1 | Virtual Router 1 #在GigabitEthernet0/0/1接口上启用了VRRP
State : Master
Virtual IP : 192.168.1.254 #虚拟IP地址192.168.1.254
Master IP : 192.168.1.253 #当前组的主路由器IP地址,是本地
PriorityRun : 120 #自己的优先级是120
PriorityConfig : 120 #配置的优先级是120
MasterPriority : 120 #当前组Master的优先级
Preempt : YES Delay Time : 0 s #抢占是开启的,延迟的时间是0秒
TimerRun : 1 s #运行了多长时间
TimerConfig : 1 s
Auth type : NONE #验证类型,暂时没有
Virtual MAC : 0000-5e00-0101 #虚拟MAC
Check TTL : YES
Config type : normal-vrrp
Backup-forward : disabled
Create time : 2021-02-25 13:22:59 UTC-08:00
Last change time : 2021-02-25 13:23:03 UTC-08:00
[R1]
[Huawei]sys R2
[R2]un in en
Info: Information center is disabled
[R2]in g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.1.252 24
[R2-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 192.168.1.254
[R2-GigabitEthernet0/0/1]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.1.252 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.254
#
return
[R2-GigabitEthernet0/0/1]
[R2]dis vrrp
GigabitEthernet0/0/1 | Virtual Router 1
State : Backup
Virtual IP : 192.168.1.254
Master IP : 192.168.1.253
PriorityRun : 100 #自己的优先级100
PriorityConfig : 100 #配置的优先级100,其实SW2上我没有配置,默认是100
MasterPriority : 120 #Master的优先级120
Preempt : YES Delay Time : 0 s
TimerRun : 1 s
TimerConfig : 1 s
Auth type : NONE
Virtual MAC : 0000-5e00-0101
Check TTL : YES
Config type : normal-vrrp
Backup-forward : disabled
Create time : 2021-02-25 13:24:45 UTC-08:00
Last change time : 2021-02-25 13:24:45 UTC-08:00
Welcome to use PC Simulator!
PC>ping 192.168.1.253
Ping 192.168.1.253: 32 data bytes, Press Ctrl_C to break
From 192.168.1.253: bytes=32 seq=1 ttl=255 time=63 ms
From 192.168.1.253: bytes=32 seq=2 ttl=255 time=31 ms
From 192.168.1.253: bytes=32 seq=3 ttl=255 time=47 ms
From 192.168.1.253: bytes=32 seq=4 ttl=255 time=31 ms
From 192.168.1.253: bytes=32 seq=5 ttl=255 time=31 ms
--- 192.168.1.253 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 31/40/63 ms
PC>ping 192.168.1.252
Ping 192.168.1.252: 32 data bytes, Press Ctrl_C to break
From 192.168.1.252: bytes=32 seq=1 ttl=255 time=47 ms
From 192.168.1.252: bytes=32 seq=2 ttl=255 time=31 ms
From 192.168.1.252: bytes=32 seq=3 ttl=255 time=31 ms
From 192.168.1.252: bytes=32 seq=4 ttl=255 time=31 ms
From 192.168.1.252: bytes=32 seq=5 ttl=255 time=31 ms
--- 192.168.1.252 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 31/34/47 ms
PC>ping 192.168.1.254
Ping 192.168.1.254: 32 data bytes, Press Ctrl_C to break
From 192.168.1.254: bytes=32 seq=1 ttl=255 time=31 ms
From 192.168.1.254: bytes=32 seq=2 ttl=255 time=31 ms
From 192.168.1.254: bytes=32 seq=3 ttl=255 time=32 ms
From 192.168.1.254: bytes=32 seq=4 ttl=255 time=31 ms
From 192.168.1.254: bytes=32 seq=5 ttl=255 time=47 ms
--- 192.168.1.254 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 31/34/47 ms
PC>arp -a
Internet Address Physical Address Type
192.168.1.252 00-E0-FC-D3-09-0E dynamic #backup
192.168.1.253 00-E0-FC-5E-02-D1 dynamic #master
192.168.1.254 00-00-5E-00-01-01 dynamic #虚拟
PC>
如图所示,假如R1是Master,如红色箭头所指的上联接口挡掉会不会切换呢?答案是不会,因为R1G0/0/0是OK的。不会切换,那就意味着我们配置的主备切换就没有意义,所以我们必须配置跟踪g0/0/1接口的状态。让VRRP去检测R1的g0/0/1口,如果挡掉。则自动减去优先级某一个值,达到切换的目的。
sw1
<Huawei>sy
Enter system view, return user view with Ctrl+Z.
[Huawei]sy R1
[R1]un in en
Info: Information center is disabled.
[R1]in g0/0/1
[R1-GigabitEthernet0/0/1]ip add 192.168.1.253 24
[R1-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 192.168.1.254
[R1-GigabitEthernet0/0/1]vrrp vrid 1 priority 120
[R1-GigabitEthernet0/0/1]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.1.253 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.254
vrrp vrid 1 priority 120
#
return
[R1-GigabitEthernet0/0/1]q
[R1]in g0/0/0
[R1-GigabitEthernet0/0/0]ip add 10.1.1.253 24
[R1-GigabitEthernet0/0/0]vrrp vrid 2 virtual-ip 10.1.1.254
[R1-GigabitEthernet0/0/0]vrrp vrid 2 priority 120
[R1-GigabitEthernet0/0/0]dis this
[R1]dis vrrp
GigabitEthernet0/0/1 | Virtual Router 1 #在GigabitEthernet0/0/1接口上启用了VRRP
State : Master
Virtual IP : 192.168.1.254 #虚拟IP地址192.168.1.254
Master IP : 192.168.1.253 #当前组的主路由器IP地址,是本地
PriorityRun : 120 #自己的优先级是120
PriorityConfig : 120 #配置的优先级是120
MasterPriority : 120 #当前组Master的优先级
Preempt : YES Delay Time : 0 s #抢占是开启的,延迟的时间是0秒
TimerRun : 1 s #运行了多长时间
TimerConfig : 1 s
Auth type : NONE #验证类型,暂时没有
Virtual MAC : 0000-5e00-0101 #虚拟MAC
Check TTL : YES
Config type : normal-vrrp
Backup-forward : disabled
Create time : 2021-02-25 13:22:59 UTC-08:00
Last change time : 2021-02-25 13:23:03 UTC-08:00
GigabitEthernet0/0/0 | Virtual Router 2
State : Master
Virtual IP : 10.1.1.254
Master IP : 10.1.1.253
PriorityRun : 120
PriorityConfig : 120
MasterPriority : 120
Preempt : YES Delay Time : 0 s
TimerRun : 1 s
TimerConfig : 1 s
Auth type : NONE
Virtual MAC : 0000-5e00-0102
Check TTL : YES
Config type : normal-vrrp
Backup-forward : disabled
Create time : 2021-02-25 14:06:14 UTC-08:00
Last change time : 2021-02-25 14:06:18 UTC-08:00
[R1]
SW2
[Huawei]sys R2
[R2]un in en
Info: Information center is disabled
[R2]in g0/0/1
[R2-GigabitEthernet0/0/1]ip add 192.168.1.252 24
[R2-GigabitEthernet0/0/1]vrrp vrid 1 virtual-ip 192.168.1.254
[R2-GigabitEthernet0/0/1]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.1.252 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.254
#
return
[R2-GigabitEthernet0/0/1]q
[R2]in g0/0/0
[R2-GigabitEthernet0/0/0]ip add 10.1.1.252 24
[R2-GigabitEthernet0/0/0]vrrp vrid 2 virtual-ip 10.1.1.254
[R2]dis vrrp
GigabitEthernet0/0/1 | Virtual Router 1
State : Backup
Virtual IP : 192.168.1.254
Master IP : 192.168.1.253
PriorityRun : 100 #自己的优先级100
PriorityConfig : 100 #配置的优先级100,其实SW2上我没有配置,默认是100
MasterPriority : 120 #Master的优先级120
Preempt : YES Delay Time : 0 s
TimerRun : 1 s
TimerConfig : 1 s
Auth type : NONE
Virtual MAC : 0000-5e00-0101
Check TTL : YES
Config type : normal-vrrp
Backup-forward : disabled
Create time : 2021-02-25 13:24:45 UTC-08:00
Last change time : 2021-02-25 13:24:45 UTC-08:00
GigabitEthernet0/0/0 | Virtual Router 2
State : Backup
Virtual IP : 10.1.1.254
Master IP : 10.1.1.253
PriorityRun : 100
PriorityConfig : 100
MasterPriority : 120
Preempt : YES Delay Time : 0 s
TimerRun : 1 s
TimerConfig : 1 s
Auth type : NONE
Virtual MAC : 0000-5e00-0102
Check TTL : YES
Config type : normal-vrrp
Backup-forward : disabled
Create time : 2021-02-25 14:07:53 UTC-08:00
Last change time : 2021-02-25 14:07:53 UTC-08:00
用PC1 ping PC2验证
PC>ping 192.168.1.1
Ping 192.168.1.1: 32 data bytes, Press Ctrl_C to break
From 192.168.1.1: bytes=32 seq=1 ttl=127 time=63 ms
From 192.168.1.1: bytes=32 seq=2 ttl=127 time=62 ms
From 192.168.1.1: bytes=32 seq=3 ttl=127 time=63 ms
--- 192.168.1.1 ping statistics ---
3 packet(s) transmitted
3 packet(s) received
0.00% packet loss
round-trip min/avg/max = 62/62/63 ms
PC>tracert 192.168.1.1
traceroute to 192.168.1.1, 8 hops max
(ICMP), press Ctrl+C to stop
1 10.1.1.253 31 ms 47 ms 47 ms #VRRP组1是从10.1.1.253走的
2 192.168.1.1 62 ms 63 ms 62 ms
用PC2 ping PC1验证
PC>ping 10.1.1.1
Ping 10.1.1.1: 32 data bytes, Press Ctrl_C to break
From 10.1.1.1: bytes=32 seq=1 ttl=127 time=47 ms
From 10.1.1.1: bytes=32 seq=2 ttl=127 time=78 ms
From 10.1.1.1: bytes=32 seq=3 ttl=127 time=47 ms
From 10.1.1.1: bytes=32 seq=4 ttl=127 time=62 ms
From 10.1.1.1: bytes=32 seq=5 ttl=127 time=63 ms
--- 10.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 47/59/78 ms
PC>tracert 10.1.1.1
traceroute to 10.1.1.1, 8 hops max
(ICMP), press Ctrl+C to stop
1 192.168.1.253 31 ms 31 ms 47 ms #VRRP组1是从192.168.1.253走的
2 10.1.1.1 63 ms 62 ms 63 ms
PC>
接下来我们配置分别来配置VRRP组1、VRRP组2的跟踪接口
如图所示,我们的优先级分别是120、100,那么我们减掉的值必须大于20。这里我们选择30
[R1]in g0/0/1
[R1-GigabitEthernet0/0/1]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.1.253 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.254
vrrp vrid 1 priority 120
#
return
[R1-GigabitEthernet0/0/1]vrrp vrid 1 track interface GigabitEthernet 0/0/0 reduced 30
[R1-GigabitEthernet0/0/1]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 192.168.1.253 255.255.255.0
vrrp vrid 1 virtual-ip 192.168.1.254
vrrp vrid 1 priority 120
vrrp vrid 1 track interface GigabitEthernet0/0/0 reduced 30
#
return
[R1]in g0/0/0
[R1-GigabitEthernet0/0/0]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/0
ip address 10.1.1.253 255.255.255.0
vrrp vrid 2 virtual-ip 10.1.1.254
vrrp vrid 2 priority 120
#
return
[R1-GigabitEthernet0/0/0]vrrp vrid 2 track interface GigabitEthernet 0/0/1 reduced 30
[R1-GigabitEthernet0/0/0]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/0
ip address 10.1.1.253 255.255.255.0
vrrp vrid 2 virtual-ip 10.1.1.254
vrrp vrid 2 priority 120
vrrp vrid 2 track interface GigabitEthernet0/0/1 reduced 30
#
return
[R1-GigabitEthernet0/0/0]