Vrrp概述:

VRRP简介

通常,同一网段内的所有主机都设置一条相同的、以网关为下一跳的缺省路由。主机发往其他网段的报文将通过缺省路由发往网关,再由网关进行转发,从而实现主机与外部网络的通信。当网关发生故障时,本网段内所有以网关为缺省路由的主机将无法与外部网络通信。这样缺乏冗余性。

 

增加出口网关是提高系统可靠性的常见方法,此时如何在多个出口之间进行选路就成为需要解决的问题。而vrrp可以很好的解决这个问题。当然cisco的hsrp也可以解决这个问题,这里我们只谈谈vrrp。

VRRPVirtual Router Redundancy Protocol,虚拟路由器冗余协议)将可以承担网关功能的一组路由器加入到备份组中,形成一台虚拟路由器,这样主机的网关设置成虚拟网关,就能够实现冗余。

VRRP是一种容错协议,在提高可靠性的同时,简化了主机的配置。在具有多播或广播能力的局域网(如以太网)中,借助VRRP能在某台路由器出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息。

VRRP协议的实现有VRRPv2VRRPv3两个版本。其中,VRRPv2基于IPv4VRRPv3基于IPv6VRRPv2VRRPv3在功能实现上并没有区别,只是应用的网络环境不同。

VRRP备份组简介

VRRP将局域网内的一组路由器划分在一起,称为一个备份组。备份组由一个Master路由器和多个Backup路由器组成,功能上相当于一台虚拟路由器。

VRRP备份组具有以下特点:

虚拟路由器具有IP地址,称为虚拟IP地址。局域网内的主机仅需要知道这个虚拟路由器的IP地址,并将其设置为缺省路由的下一跳地址。

网络内的主机通过这个虚拟路由器与外部网络进行通信。

备份组内的路由器根据优先级,选举出Master路由器,承担网关功能。其他路由器作为Backup路由器,当Master路由器发生故障时,取代Master继续履行网关职责,从而保证网络内的主机不间断地与外部网络进行通信。

1 VRRP组网示意图

如图 1所示,Router ARouter BRouter C组成一个虚拟路由器。此虚拟路由器有自己的IP地址。局域网内的主机将虚拟路由器设置为缺省网关。Router ARouter BRouter C中优先级最高的路由器作为Master路由器,承担网关的功能。其余两台路由器作为Backup路由器。

1. 备份组中路由器的优先级

VRRP根据优先级来确定备份组中每台路由器的角色(Master路由器或Backup路由器)。优先级越高,则越有可能成为Master路由器。

VRRP优先级的取值范围为0255(数值越大表明优先级越高),可配置的范围是1254,优先级0为系统保留给特殊用途来使用,255则是系统保留给IP地址拥有者。当路由器为IP地址拥有者时,其优先级始终为255。因此,当备份组内存在IP地址拥有者时,只要其工作正常,则为Master路由器。

2. 备份组中路由器的工作方式

备份组中的路由器具有以下两种工作方式:

非抢占方式:如果备份组中的路由器工作在非抢占方式下,则只要Master路由器没有出现故障,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。

抢占方式:如果备份组中的路由器工作在抢占方式下,它一旦发现自己的优先级比当前的Master路由器的优先级高,就会对外发送VRRP通告报文。导致备份组内路由器重新选举Master路由器,并最终取代原有的Master路由器。相应地,原来的Master路由器将会变成Backup路由器。

3. 备份组中路由器的认证方式

为了防止非法用户构造报文***备份组,VRRP通过在VRRP报文中增加认证字的方式,验证接收到的VRRP报文。VRRP提供了两种认证方式:

simple:简单字符认证。发送VRRP报文的路由器将认证字填入到VRRP报文中,而收到VRRP报文的路由器会将收到的VRRP报文中的认证字和本地配置的认证字进行比较。如果认证字相同,则认为接收到的报文是真实、合法的VRRP报文;否则认为接收到的报文是一个非法报文。

md5MD5认证。发送VRRP报文的路由器利用认证字和MD5算法对VRRP报文进行摘要运算,运算结果保存在Authentication Header(认证头)中。收到VRRP报文的路由器会利用认证字和MD5算法进行同样的运算,并将运算结果与认证头的内容进行比较。如果相同,则认为接收到的报文是真实、合法的VRRP报文;否则认为接收到的报文是一个非法报文。

在一个安全的网络中,用户也可以不设置认证方式。

VRRP报文格式(看看就行)

Master路由器以组播的方式定时发送VRRP报文通告它的存在。这些报文可以用来检测虚拟路由器的各种参数,还可以用于Master路由器的选举。

VRRPv2的报文格式如图 3所示,VRRPv3的报文格式如图 4所示。

3 VRRPv2的报文格式

 

4 VRRPv3的报文格式

各字段解释如下:

• Version:协议版本号。VRRPv2对应的版本号为2VRRPv3对应的版本号为3

• TypeVRRP报文的类型。VRRPv2VRRPv3报文只有一种类型,即VRRP通告报文(Advertisement),该字段取值为1

• Virtual Rtr IDVRID):虚拟路由器号(即备份组号),取值范围1255

• Priority:路由器在备份组中的优先级,取值范围0255,数值越大表明优先级越高。

• Count IP Addrs/Count IPv6 Addrs:备份组虚拟IP地址的个数。1个备份组可对应多个虚拟IP地址。

• Auth Type:认证类型。该值为0表示无认证,为1表示简单字符认证,为2表示MD5认证。VRRPv3不支持MD5认证。

• Adver Int:发送通告报文的时间间隔。VRRPv2中单位为秒,缺省为1秒;VRRPv3中单位为厘秒,缺省为100厘秒。

• Checksum16位校验和,用于检测VRRP报文中的数据破坏情况。

• IP Address/IPv6 Address:备份组虚拟IP地址表项。所包含的地址数定义在Count IP Addrs/Count IPv6 Addrs字段。

• Authentication Data:验证字,目前只用于简单字符认证,对于其它认证方式一律填0

VRRP工作过程

VRRP的工作过程如下:

(1) 路由器使能VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master路由器,优先级低的成为Backup路由器。Master路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常;Backup路由器则启动定时器等待通告报文的到来。

(2) 在抢占方式下,当Backup路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master路由器;否则将保持Backup状态。

(3) 在非抢占方式下,只要Master路由器没有出现故障,备份组中的路由器始终保持MasterBackup状态,Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。

(4) 如果Backup路由器的定时器超时后仍未收到Master路由器发送来的VRRP通告报文,则认为Master路由器已经无法正常工作,此时Backup路由器会认为自己是Master路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出Master路由器,承担报文的转发功能。

VRRP监视功能

1. 监视指定接口功能

VRRP的监视接口功能使其在路由器连接上行链路的接口出现故障时,备份组无法感知上行链路的故障,如果该路由器此时处于Master状态,将会导致局域网内的主机无法访问外部网络。通过监视指定接口的功能,可以解决该问题。当连接上行链路的接口处于DownRemoved状态时,路由器主动降低自己的优先级,使得备份组内其它路由器的优先级高于这个路由器,以便优先级最高的路由器成为Master,承担转发任务。

2. 监视Track项功能

通过VRRP监视Track项功能,可以实现:

根据上行链路的状态,降低路由器的优先级。当上行链路出现故障,局域网内的主机无法通过路由器访问外部网络时,被监视Track项的状态为Negative,并将路由器的优先级降低指定的数额。从而,使得备份组内其它路由器的优先级高于这个路由器的优先级,成为Master路由器,保证局域网内主机与外部网络的通信不会中断。

Backup路由器上监视Master路由器的状态。当Master路由器出现故障时,工作在切换模式的Backup路由器能够迅速成为Master路由器,以保证通信不会中断。

 

Vrrp实战:

拓扑图:

 

本实验依靠vrrp实现高可用性,vrrp追踪实现上行链路(s0连接s0,以及s1连接s11的地方)故障时也能实现切换,nat实现vlan10 和vlan20 中的主机访问外部服务器。pc1和pc2分别属于vlan10 和vlan20, 外部服务器地址是192.168.100.187。在r1和r2 上分别做两个vrrp组10 、20 ,其中r1上的10是主用,r2上20是主用,这样可以实现冗余和负载均衡。

 

R2的配置:

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控制列表用于nat转换

  !

  controller e1 0

  !

  interface Aux0

    async mode flow

    link-protocol ppp

  !

  interface Ethernet0

    ip address 192.168.100.1 255.255.255.0

  !

  interface Ethernet1

  !

  interface Ethernet1.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配置vrrp10

  !

  interface Ethernet1.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配置vrrp20

    vrrp vrid 20 priority 120  # 配置其优先级为120 使其成为vlan20的主用路由器,默认优先级120

    vrrp vrid 20 track Serial1 reduced 30配置端口追踪,实现上行链路故障依然可以切换。

  !

  interface Serial0

    link-protocol ppp

  !

  interface Serial1

    link-protocol ppp

    ip address 222.222.222.2 255.255.255.0

    nat outbound 2000 interface

  !                                    

!

  quit

  ip route-static 0.0.0.0 0.0.0.0 222.222.222.1 preference 60

  !

R1的配置:

!

  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

    ip address 192.168.100.13 255.255.255.0

  !

  interface Ethernet1

  !                                      

  interface Ethernet1.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

    vrrp vrid 10 track Serial0 reduced 30

  !

  interface Ethernet1.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 Serial0

    clock DTECLK1

    link-protocol ppp

    ip address 200.200.200.2 255.255.255.0

    nat outbound 2000 interface

  !

  interface Serial1

    link-protocol ppp

  !

  quit

  ip route-static 0.0.0.0 0.0.0.0 200.200.200.1 preference 60

  !

  Return

R3的配置:

!

  interface Ethernet0

    ip address 192.168.100.11 255.255.255.0

  !

  interface Serial0

    link-protocol ppp

    ip address 200.200.200.1 255.255.255.0

  !

  interface Serial1

    clock DTECLK1

    link-protocol ppp                     

    ip address 222.222.222.1 255.255.255.0

  !

  return

Sw2配置:

#

vlan 1

#

vlan 10

#

vlan 20

#

interface Vlan-interface1

 ip address 192.168.100.22 255.255.255.0

#

interface Aux1/0/0

#                                        

interface Ethernet1/0/1

 port link-type trunk

 port trunk permit vlan all

 port link-aggregation group 1将相应端口加入链路聚合组。

#

interface Ethernet1/0/2

 port link-type trunk

 port trunk permit vlan all

 port link-aggregation group 1

#

Sw3配置:

level 3

#

vlan 1

#

vlan 10

#

vlan 20

#

interface Vlan-interface1

 ip address 192.168.100.23 255.255.255.0

#

interface Aux1/0/0

#                                        

interface Ethernet1/0/1

 port link-type trunk

 port trunk permit vlan all

 port link-aggregation group 1

#

interface Ethernet1/0/2

 port link-type trunk

 port trunk permit vlan all

 port link-aggregation group

 

测试配置:

pc2上测试是否在上行链路发生故障时其仍然可以访问外部的主机192.168.100.187

 

vlan20中的pc2 ping vlan10的虚拟网关:

 

 pc2 ping 外部主机本机是vlan20 ,并且在此过程中让r2的s1端口down掉,中间发生超时一次,然后又ping通,证明发生切换。

 

 

down掉

r2的s1接口时其优先级降低30 为90,成为backup

 

 

r2接口up时其又恢复为master状态:

 

 

通过追踪观察pc2上发出的数据包的路径:证明其从主用vrrp(优先级120)20组走。

 

 

本实验到此结束,有不清楚地方可以留言的嘻嘻。