VRRP( Virtual Router Redundancy Protocol )<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

全称 Virtual Router Redundancy Protocol ,在功能上与 HSRP 类似,只是 HSRP Cisco 专有的协议,只应用在 Cisco 设备上。 VRRP 符合 Internet 标准,定义见 RFC2338 ,是不同厂家之间共同遵循的标准。 VRRP 负责从 VRRP 路由器组中选择一个作为 Master ,然后客户端使用虚拟路由器地址作为其默认网关。

HSRP 的区别:
1
VRRP 使用多播虚拟 MAC 地址( 0000.5E00.01xx )( xx VRRP 组号的十六进制表示)
2
VRRP 使用 IOS 对象追踪特性,而不采用内部追踪机制来追踪接口状态
3
VRRP 的主( Master )与 HSRP 的激活( Active )同义
4
)在 VRRP 中, VRRP 组的 IP 地址就是某个 VRRP 路由器的接口 IP 地址

 

VRRP 工作原理
      
一个 VRRP 路由器有唯一的标识: VRID ,范围为 0-255 。该路由器对外表现为唯一的虚拟 MAC 地址,地址的格式为 00-00-5E-00-01-[VRID] 主控路由器负责对 ARP 请求用该 MAC 地址做应答。这样,无论如何切换,保证给终端设备的是唯一一致的 IP MAC 地址,减少了切换对终端设备的影响。 VRRP 控制报文只有一种: VRRP 通告( advertisement) 。它使用 IP 多播数据包进行封装,组地址为 224.0.0.18 发布范围只限于同一局域网内。这保证了 VRID 在不同网络中可以重复使用。为了减少网络带宽消耗只有主控路由器才可以周期性的发送 VRRP 通告报文。备份路由器在连续三个通告间隔内收不到 VRRP 或收到优先级为 0 的通告后启动新的一轮 VRRP 选举。  

     VRRP 路由器组中,按优先级选举主控路由器, VRRP 协议中优先级范围是 0-255 默认为 100 VRRP 路由器的 IP 地址和虚拟路由器的接口 IP 地址相同,则称该虚拟路由器作 VRRP 组中的 IP 地址所有者; IP 地址所有者自动具有最高优先级: 255 优先级 0 一般 IP 地址所有者主动放弃主控者角色时使用 。可配置的优先级范围为 1-254 。优先级的配置原则可以依据链路的速度和成本路由器性能和可靠性以及其它管理策略设定。主控路由器的选举中,高优先级的虚拟路由器获胜,因此,如果在 VRRP 组中有 IP 地址所有者,则它总是作为主控路由的角色出现。 对于相同优先级的候选路由器,按照 IP 地址大小顺序选举 VRRP 还提供了优先级抢占策略,如果配置了该策略,高优先级的备份路由器便会剥夺当前低优先级的主控路由器而成为新的主控路由器。

VRRP 有两个时间:通告间隔和主路由器失效( master-down )间隔。通告间隔是通告之间的间隔时间(秒),默认为 1 秒。主路由器失效间隔指的是多长时间没有收到通告后,备用路由器将认为主路由器已失效,单位为秒。主路由器失效间隔是不能配置的,其值至少是为通告间隔的 3 倍。

 

VRRP 状态
组成虚拟路由器的路由器会有三种状态 分别是 Initialize Master Backup
1
Initialize
系统启动后进入此状态,当收到接口 startup 的消息,将转入 Backup (优先级不为 255 时)或 Master 状态(优先级为 255 时)。在此状态时,路由器不会对 VRRP 报文做任何处理。


2
Master
当路由器处于 Master 状态时 它将会做下列工作  
*
定期发送 VRRP 组播报文
*
发送免费( gratuitous ARP 报文,以使网络内各主机知道虚拟 IP 地址所对应的虚拟 MAC 地址
*
响应对虚拟 IP 地址的 ARP 请求,并且响应的是虚拟 MAC 地址,而不是接口的真实 MAC 地址  
*
转发目的 MAC 地址为虚拟 MAC 地址的 IP 报文  
*
如果它是这个虚拟 IP 地址的拥有者,则接收目的 IP 地址为这个虚拟 IP 地址的 IP 报文,否则,丢弃这个 IP 报文。需要注意的是,由于有这一点要求,所以除非主路由器是 IP 地址拥有者,否则主机 ping 虚拟 IP 地址不能 ping 通。
    
Master 状态中只有接收到比自己的优先级大的 VRRP 报文时,才会转为 Backup 。只有当接收到接口的 Shutdown 事件时才会转为 Initialize


3
Backup
当路由器处于 Backup 状态时 它将会做下列工作 :
*
接收 Master 发送的 VRRP 组播报文 从中了解 Master 的状态
l*
对虚拟 IP 地址的 ARP 请求 不做响应
*
丢弃目的 MAC 地址为虚拟 MAC 地址的 IP 报文  
*
丢弃目的 IP 地址为虚拟 IP 地址的 IP 报文    
只有当 Backup 接收到 MASTER_DOWN 这个定时器到时的事件时,才会转为 Master 而当接收到比自己的优先级小的 VRRP 报文时,它只是做丢弃这个报文的处理,从而就不对定时器做重置处理。 这样定时器就会在若干次这样的处理之后到时,于是就转为 Master 。只有当接收到接口的 Shutdown 事件时才会转为 Initialize

VRRP 配置过程:
1
  进入全局模式    configure terminal
2
  进入接口模式    interface 接口
3
  配置 vrrp 组和虚拟路由器的 IP 地址 ( 如果对端口进行跟踪的话,应该在全局模式下设置跟踪组,并分配一个编号 )
       vrrp group-number ip ip-address

 4   配置优先级
       vrrp group-number priority priority
5
  配置抢占模式
        vrrp group-number preempt
6
  配置 vrrp 的通告时间
       vrrp group-number  timer advertise sec
,默认为 1
7
配置 VRRP 认证
       (1)MD5
认证 :

       vrrp group-number authentication md5 key-string passwd  timeout second
       (2)MD5key-chain
认证:

       vrrp 组号 authentication md5 key-chain keychain-name
      
注意:在应用 KEYCHAIN 之前必须事先已经定义了 key-chain
       (3)
明文认证:

        vrrp 组号 authentication text password
8
跟踪端口
      (1)
定义跟踪 , 全局模式:   track 编号 interface 接口 [line-protocol | ip-routing]
      (2) vrrp group-number track
编号 decrement priority
9
验证结果
      show vrrp
      show vrrp interface ethernet0/0

      show track

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

基本配置:1、全网接口地址按拓扑图设置好,其中R1起个换回口用作虚拟的PC

2   R1,R2,R3OSPF

3 PC1PC2关闭路由选择功能,两台PC分别将默认网关指向R2,R3

 

验证由PC1\PC2分别访问远端R1上的环回地址1.1.1.1.

R4#p 1.1.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 84/155/220 ms

 

R5#p 1.1.1.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:

.!!!!

可见网络通信状态良好,接下来配置VRRP

1、  R2上配置vrrp group10,使其成为PC1的主路由器,配置vrrp group20,使其成为PC2的备份路由器。

R2: CONFIG 模式下:

track 11 interface Serial1/2 line-protocol

!

接口下:interface Ethernet0/0

 ip address 192.168.1.2 255.255.255.0

 full-duplex

 vrrp 10 ip 192.168.1.254-------------------- 接口下配置虚拟网关IP192.168.1.253

 vrrp 10 priority 110------------------------- 设置优先级110

 vrrp 10 authentication md5 key-string ccie 设置VRRP密码验证,密码明文是:ccie

 vrrp 10 track 11 decrement 20 设定接口跟踪,并设置惩罚值为20

vrrp 10 preempt------------------------------ 配置抢占

 vrrp 20 ip 192.168.1.253------------------- 设置VRRP group20的虚拟网关IP192.168.1.253

! vrrp 20 preempt----------------------------- 配置group20 的抢占

!

!  

R3 R3作为PC2的主虚拟路由器group20,并且是group10的备份路由器。

配置与R1类似,在此不做赘述。

当我们完成配置之后,会发现如下消息提示:

R2 上:*Mar  1 00:41:52.983: %VRRP-6-STATECHANGE: Et0/0 Grp 10 state Backup -> Master

*Mar  1 00:45:43.879: %VRRP-6-STATECHANGE: Et0/0 Grp 20 state Backup -> Master

 *Mar  1 00:45:45.051: %VRRP-6-STATECHANGE: Et0/0 Grp 20 state Master -> Backup

R3 上:*Mar  1 00:42:24.363: %VRRP-6-STATECHANGE: Et0/0 Grp 10 state Master -> Backup

*Mar  1 00:43:34.359: %VRRP-6-STATECHANGE: Et0/0 Grp 20 state Backup -> Master

跟踪一下去往1.1.1.1的路径:

R4#traceroute 1.1.1.1

Type escape sequence to abort.

Tracing the route to 1.1.1.1

  1 192.168.1.2 136 msec 68 msec 96 msec

  2 192.168.12.1 48 msec *  124 msec

可见,R4是通R2这个主虚拟网关进行访问1.1.1.1

R5#traceroute 1.1.1.1

Type escape sequence to abort.

Tracing the route to 1.1.1.1

  1 192.168.1.3 92 msec 168 msec 100 msec

  2 192.168.13.1 140 msec *  72 msec

此处证实R5是通过R3进行访问1.1.1.1

备份性能验证:

1、  关闭R2的一个接口S1/2(就是被跟踪的接口)

此时R2会显示:

*Mar  1 00:42:24.363: %VRRP-6-STATECHANGE: Et0/0 Grp 10 state Master -> Backup

R3 会显示:

*Mar  1 00:43:34.359: %VRRP-6-STATECHANGE: Et0/0 Grp 10 state Backup -> Master

R2已经DOWN掉,由R3作为group10的主虚拟路由器。

验证traceroute1.1.1.1的路径:

R4#traceroute 1.1.1.1

Type escape sequence to abort.

Tracing the route to 1.1.1.1

  1 192.168.1.3 92 msec 168 msec 100 msec

  2 192.168.13.1 140 msec *  72 msec

R5#traceroute 1.1.1.1

Type escape sequence to abort.

Tracing the route to 1.1.1.1

  1 192.168.1.3 92 msec 168 msec 100 msec

  2 192.168.13.1 140 msec *  72 msec

可见R4已经换路经由R3访问1.1.1.1R5由于没有更换虚拟网关,所以依然会使用R3访问1.1.1.1.

恢复S1/2端口之后,有如下提示:

R2 上:*Mar  1 00:41:52.983: %VRRP-6-STATECHANGE: Et0/0 Grp 10 state Backup -> Master

R3 上:*Mar  1 00:42:24.363: %VRRP-6-STATECHANGE: Et0/0 Grp 10 state Master -> Backup

这次再traceroute1.1.1.1,验证访问1.1.1.1的路径:

R4#traceroute 1.1.1.1

Type escape sequence to abort.

Tracing the route to 1.1.1.1

  1 192.168.1.2 136 msec 68 msec 96 msec

  2 192.168.12.1 48 msec *  124 msec

可见,R4恢复了通过R2这个主虚拟网关进行访问1.1.1.1

R5#traceroute 1.1.1.1

Type escape sequence to abort.

Tracing the route to 1.1.1.1

  1 192.168.1.3 92 msec 168 msec 100 msec

  2 192.168.13.1 140 msec *  72 msec

可见R5依然是是通过R3进行访问1.1.1.1。(因为group20并没有发生网关的切换)

2、  管理性关闭R3S1/3端口,现象与上述现象基本类似,group20的网关也进行了切换,在端口恢复的时候group20又恢复为R3作为主网关。

写在试验后面的话:

VRRP中,如果虚拟网关的IP地址为主网关的真实IP地址,即此台路由器为虚拟IP地址的拥有者,那么它的优先级为255,这点需要在设置抢占与惩罚值的时候适当调整阀值大小。在做这个实验中的md5验证部分的时候,发现当一台做好验证之后,另外一台没有配置验证,这时候开启debug vrrp events,会发现正确的实验现象:即提示两端验证规格不相同,所以不能进行VRRP的协商,所导致的实验现象是R2\R3均认为自己是group10的主网关,当全部配置完同一种验证方式之后,错误现象消除,R2\R3之间正确的选取了主备路由器。

本文的前部分是参照网友博客归纳的VRRP的理论部分,言简意赅,很容易理解,后部分的实验是用dynamips搭建而成,运行良好。

                                                    Vanyoung  18th Jan2009,@Beijing.VRRP