1.Introduction

     终端主机决定到外部网络的第一跳路由器方法:

          运行或监听动态路由协议;

     运行IDRP协议;

     静态配置默认网关;

2.VRRP仅为IPV4准备的;(VRRPv2基于IPv4VRRPv3基于IPv6) 

3.Definition:

     VRRP Router      运行了VRRP协议的路由器;

     Virtual Router       在多路访问LAN中,行使默认网关功能的抽象的对象;

     Ip 地址拥有者          把虚拟路由器的ip地址作为真实物理接口地址的VRRP路由器;

         主ip地址              从一组真实接口地址选出来的一个ip地址;VRRP通告总是使用其作为IP数据包              的源IP(真正用作虚拟路由器ipIP) (从虚拟路由器的一组真实的ip中选            出的一个地址???)

    虚拟路由器Master       负责转发发送给虚拟路由器的数据包;回应对虚拟路由器IPARP请求;如果一            个IP地址拥有者可用,则它将一直是Master

        虚拟路由器Backup       在目前的Master失效后,能够承担转发发送给虚拟路由器数据包的责任                                                                 的VRRP路由器;

    虚拟路由器的IP地址可以是备份组所在网段中未被分配的IP地址,也可以和备份组内的某个路由器的接  口IP地址相同。

    接口IP地址与虚拟IP地址相同的路由器被称为地址拥有者

    在同一个VRRP备份组中,只允许配置一个地址拥有者

4.所有的VRRP协议消息都使用IP广播数据包;

每个虚拟路由器都有一个分配给它的周知的MAC地址;

虚拟路由器的MAC地址被Master用作发送周期性VRRP消息的源MAC地址;

虚拟路由器是通过虚拟路由器标识符(VRID)和一组IP地址定义的;

同一台路由器上的相同VRID可以配置在不同的局域网接口中;

为了减少网络流量,只有Master为虚拟路由器发送周期性的通告消息;

Backup路由器不会抢占成为Master,除非它拥有更高的priority

   默认开启了preempt;

5.VRRP定义了三种验证方法;1)、不验证;2)、Clear text;3)、AH;

6.Protocal:

VRRP数据包的目的是为了让所有VRRP路由器知道有特定VRID Master路由器的优先级

和状态;

  VRRP数据包封装在IP数据包中,发送给分配给VRRP IPV4组播地址; 

7.1VRRP 数据包格式:

|Version| Type | Virtual Rtr ID|   Priority     | Count IP Addrs|

| Auth Type     | Adver Int      |        Checksum                   |

| IP Address (1) |

| IP Address (n) |

| Authentication Data (1) |

| Authentication Data (2) |

IP域部分:

源地址:某个发送数据包的接口的Primary_address;

目的地址:IANA分配给VRRP协议的组播地址是 224.0.0.18

TTL Must 被设置为255;若VRRP路由器接收到TTL不等于255的数据包,Must丢弃;

IP协议号:IANA分配给VRRP的协议号是112 

注:HSRP允许在UDP层上,端口号 1985,发送给224.0.0.2 TTL=1

VRRP域部分:

Version: 本文档定义为version 2

Type:本版本的VRRP协议仅定义了一种VRRP数据包类型;未知类型的包Must 被丢弃;

      1   Advertisemnet;

VRID:标识被通告状态的虚拟路由器;1-255

Priority:为某个虚拟路由器的VRRP路由器的优先级;0-255;值越大,优先级越高;

           优先级0系统保留给特殊用途使用,255则是系统保留给IP地址拥有者的。

           若为ip地址拥有者,改变优先级对其无效;

           默认值为 100

           地址拥有者的优先级Must  255

           其它的处于备份虚拟路由器的VRRP路由器的优先级在 1-254之间;

           优先级为0的预示着目前的Master已经停止参加VRRP了;用于触发备份路由器立即转化为Master,而无需等待目前的Master过期;

Count IP Addrs:VRRP通告中包含的IP地址的数量;

认证类型:0-255   未知的认证类型或与本地匹配的认证类型的包都Must被丢弃;

RFC2338的认证类型   0    无验证    1    clear text   2    IP Authentication Header 

RFC3768中的认证类型:

0 - No Authentication  1 – Reserved  向后兼容RFC2338的;

2 – Reserve     向后兼容RFC2338的;

通告间隔:连续两个通告之间的时间间隔;默认1s

Checksum:校验和,校验VRRP消息的完整性;

IP_Address:与虚拟路由器关联的IP地址;

8.VRRP协议的状态机制:

每个接口参数:认证类型;认证数据;

每个虚拟路由器参数:VRID  1-255

     Priority  缺省1000保留,255保留;1-254

     Ip_address

     Advertisement_interval           默认1s

    Skew_Time (256-priority)/256skew master-down-interval in second;

     Master-Down-Interval   (3*Advertisement_interval)+skew_time

     Preempt-Mode              true允许抢占;false不允;缺省为true

 

计时器: Master-Down-timer         Adver-timer                

9.状态机制:

Initialize

  这个状态是等待一个startup_event;如果收到了一个启动事件,则:

   1).如果Priority=255(路由器是ip地址拥有者)

   发送一个通告advertisement;

   广播一个reply/gratuitous ARP请求,请求虚拟路由器关联的每个IP地址的MAC

  把计时器Adver_Timer设置成Advertisement_Interval的值;

   转换成Master状态;

  2).否则:

   把计时器Master_Down_Timer设置成Master_Down_Interval的值;

   转换成Backup状态 

Backup状态

这个状态是为了监控Master_Router的可用性和状态;

不可对请求虚拟路由器关联的IP地址的ARP请求做出回应;

必须丢弃链路层目的地址为虚拟路由器MAC的数据包;

必须不能接受目的地址为虚拟路由器关联的IP地址的数据包;

1).如果接收到shutdown事件:

  删除Master_Down_Timer计时器;

  转换成Initialize状态;

2).如果Master_Down_Timer期满:

  发送一个Advertisement通告;

  广播一个gratuitous ARP请求,请求虚拟路由器关联的每个IP地址的MAC

  Adver_Timer计时器设置成Advertisement_Interval的值;

  转换为Master状态;

3).如果接收到Advertisement包:

  若报文中的Priority=0,那么把Master_Down_Timer设置成Skew_Timer值;

  若抢占模式是False或者报文中的优先级大于或等于本地的,重置Master_Down_TimerMaseter_Down_interval的值;

    否则,丢弃该advertisement报文;Master-Down-Timer就会过期;

Master:这个状态实行转发功能;

  必须对请求与虚拟路由器相关联IPARP包进行回应;

  必须转发链路层地址等于虚拟路由器MAC的数据包;

  如果它不是ip地址拥有者,它一定不可以接受目的IP为虚拟路由器的IP的数据包;

  如果它是IP地址拥有者,它必须接受目的IP为虚拟路由器的IP的数据包;

思考:是否ping的问题,即若不是ip拥有者,不能不能对ping 做出回应??

1).如果接收到shutdown事件:

  删除Adver_Timer计时器;

  发送一个priority=0Advertisement报文;

  转换成Initialize状态;

2).如果Adver_Timer计时器期满:

  发送一个Advertisement包;

  重置Adver_TiemrAdvertisement_Interval的值;

3).如果接收到一个Advertisement报文:

  如果报文中的priority=0,则

                发送一个advertisement报文;

                重置Adver_Timer计时器为advertisement_Interval的值;

      否则:若优先级比本地的高或者是优先级等于本地的并且主IP地址比本地的大,则,

                删除Adver_Timer

                Master_Down_timer设置成Master_Interval的值;

                转换成Backup状态;

     否则,丢弃数据包;

(注:优先级相等,就看接口IP地址的大小,类似HSRPActive的选举;)

思考:Master什么时候会收到advertisement报文呢??

10.VRRP的选举机制:VRRP优先级;接口IP地址大小; 

11.发送和接受VRRP数据包:

接收到VRRP数据包,必须:

            检测IP_TTL=255

            检测VRRP_version 2

            检测接收到的报文长度大于或等于VRRP_Header

            检测接收接口的VRID被配置以及本地路由器不是ip地址拥有者;

            检测checksum;

            检测认证类型和认证数据;

                  以上有任何一个不符合,接收者都必须丢弃数据包;

            检测接收接口上的VRID;若失败,则丢弃数据包;

            可能会检测VRID关联的ip地址是否合法;(countlist;

            若失败,接收者应该记录配置错误信息;

            若不是由IP地址拥有者生成的包,必须丢弃;

            必须检测Adver_Interval与本地的相同;若失败,必须丢弃包;

发送VRRP数据包:

            填写虚拟路由器的正确的配置状态;

            计算checksum;

            把源MAC地址设置成虚拟路由器的MAC

            把源IP地址设置成虚拟路由器的接口主IP地址;

            IP协议设置为VRRP

            VRRP数据包发送给IP组播组 224.0.0.18

注意:VRRP数据包的发送使用的是虚拟路由器的MAC地址;

      VRRP数据包的发送使用的是实际物理接口的IP

      VRRP数据包的发送的目的MAC是组播MAC01-00-5e-00-00-12;

      VRRP数据包的发送的目的IP是组播224.0.0.18

12.虚拟路由器的MAC地址:

格式:    00-00-5E-00-01-{VRID}

3个八元组,是IANAOUICiscoOUI是:0000.0c

  接下来的两个八元祖,是分配给VRRP协议的地址块;

  最后一个八元组,是VRRP虚拟路由器的标识符;

13. 操作性事件:ICMP 重定向:类似HSRP中的;

主机ARP请求:

   Master 虚拟路由器必须用虚拟路由器的MAC对其做出回应;

   Master不可以用其真实的物理MAC地址来回应;

   当一个VRRP路由器重启或重新加载,它不应该用其物理MAC地址为其拥有的IP地址发送任何的ARP消息;仅应当用其虚拟路由器的MAC地址来发送ARP消息;包括:

     当配置一个接口时,VRRP路由器应当为那个接口上的每个IP地址广播一个ARP请求;

     系统启动,初始化接口的VRRP操作时,只有IP地址和虚拟路由器的MAC配置后才发送ARP请求; 

代理ARP

   当使用proxy-ARP时,VRRP路由器必须用虚拟路由器的MAC地址来通告;

   否则,可能会导致终端机学到VRRP路由器的真实MAC地址;

潜在的转发环路:

A VRRP router SHOULD not forward packets addressed to the IP

Address(es) it becomes Master for if it is not the owner.

14.安全考虑:

TTL设置成255,在接收到消息时,检测;以此避免从外部网络注入VRRP数据包;

15.配置:

 配置备份组的虚拟IP地址可以被Ping通;

   本配置需要在备份组创建之前就进行设定。如果路由器上已经创建了备份组,将不允许再进行本配置。

   进入系统视图: system-view

                Vrrp ping-enable       缺省,可以被ping通; 

 MAC地址和虚拟IP地址的对应关系有两种:

   本配置需要在备份组创建之前就进行设定。如果路由器上已经创建了备份组,则不允许修改MAC地址和虚拟IP地址的对应关系。

                System-view;

                Vrrp method {real-mac|virtual-mac}  缺省,采用虚拟路由器的MAC和虚拟路由器                                     的ip地址对应; 

创建备份组并配置虚拟IP地址:

# int

# vrrp {vrid} ip {virtual_ip_add} [s];

创建备份组,并配置虚拟IP地址: vrrp vrid  {}virtual-ip {}   缺省,没有创建备份组;

单接口可以配置最大VRRP组数为16,单个备份组可配置最大IP地址数为16个。

备份组中所有虚拟IP地址都被删除后,该备份组也将同时被删除掉,并且该备份组的所有配置都不再有效。

备份组的虚拟IP地址不能为全零地址(0.0.0.0)、广播地址(255.255.255.255)、环回地址、A/B/C类地址和其它非法IP地址(0.0.0.1)

只有配置的虚拟IP地址和接口IP地址在同一网段,且为合法的主机地址时,备份组才能够正常工作;否则,如果配置的虚拟IP地址和接口IP地址不在同一网段,或为接口IP地址所在网段的网络地址或网络广播地址,则可以配置成功,但是备份组的状态始终会处于Initialize状态。

配置备份组优先级、抢占方式及监视指定接口:                                          

在配置备份组优先级、抢占方式及监视指定接口之前,需要先在接口上创建备份组并配置虚拟IP地址。

# interface

# vrrp {vrid} priority           缺省为100

# vrrp {vrid} preempt [ delay {delay-value}] 缺省工作在抢占,抢占延迟为0秒;

        如果设置备份组中的路由器工作在非抢占工作,则抢占延迟时间会自动变为0

# vrrp {vrid} track interface {int} [reduced priority-reduced]     缺省没有启用接口监视; 

对于IP地址拥有者,在VRRP报文中的优先级始终为255,无需用户配置。

不允许对IP地址拥有者进行监视指定接口的配置。

被监视的接口可以是三层以太网接口、VLAN接口、同异步串口和MP-group端口。

被监视接口的状态由down变为up后,对应设备的优先级数会自动恢复。

配置VRRP报文的相关属性:                                                       

在配置VRRP报文的相关属性之前,需要先在接口上创建备份组并配置虚拟IP地址;

# interface

# vrrp {vrid} authentication {md5|text} {key} 缺省,不验证;

# vrrp {vrid} timers advetise {adver_interval}   缺省为1s0-254

# vrrp {vrid} timers learn

在设置了定时器学习功能后,它会从主路由器的VRRP广告中学习VRRP广告发送间隔,并由此计算Master路由器失效间隔,而不是使用自己本地设置的VRRP广告发送间隔来计算,本命令可以实现与Master路由器的VRRP广告发送定时器同步。