VRRP
产生原因
一般来说,主机通过设置默认网关来与外部网络联系。
主机将发送给外部网络的报文发给网关,网关传递给外部网路,从而实现主机与外网通信,但当网关坏掉后,通信会中断。
解决中断可以再添加个网关,或运用动态路由协议来解决,如运行RIP,OSPF,IRDP等,然而这些配置复杂度和安全性问题不能满足需求,所以就有了VRRP,它可以很好地避免静态指定网关的缺陷。
VRRP
VRRP是一种容错协议,它保证当主机的下一跳路由器出现故障时,有另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。
在VRRP协议中有两组重要的概念:
1)VRRP路由器和虚拟路由器
VRRP路由器是指运行VRRP的路由器,是物理实体。
虚拟机路由器是指VRRP协议创建的,是逻辑概念。
2)主控路由器和备用路由器
VRRP工作原理
一个VRRP路由器有唯一的标识:VRID,范围为0-255。
一组VRRP路由器协同工作,共同构成一台虚拟路由器,该虚拟路由器对外表现为一个具有唯一固定ip地址和MAC地址的逻辑路由器,MAC地址格式为00-00-5E-00-01-{VRID}。
处于同一个VRRP组中的路由器具有两种互斥的角色,主控路由器和备用路由器。
一个VRRP组中有且只有一台处于主控角色的路由器,可以有一个或多个处于备用角色的路由器。
VRRP协议使用策略从路由器组中选出一台作为主控,主控路由器负责对ARP请求用MAC地址做应答和转发ip数据包,组中的其他路由器作为备用待命。
这样无论如何切换,保证给终端设备是唯一一致的ip和MAC地址,减少了切换对终端设备的影响。
主控路由器故障时,备用路由器能在几秒中的时延后升级为主控路由器,由于切换非常迅速且不改变ip地址和MAC地址,故对终端使用者系统是透明的。
VRRP优点
简化网络管理。
借助VRRP能在某台设备出现故障时仍然提供可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,无需修改动态路由协议,路由发现协议,也无需修改主机的默认网关配置。
适应性强。
VRRP报文封装在ip报文中,支持各种上层协议。
网络开销小。
VRRP只定义了一种报文,也就是VRRP通告报文,并且只有处理Master状态的路由器可以发现VRRP报文。
VRRP工作过程
1》虚拟路由器中的路由器根据优先级选举出Master,Master 路由器通过发送免费ARP 报文,将自己的虚拟MAC 地址通知给与它连接的设备或者主机,从而承担报文转发任务。
2》Master 路由器周期性发送VRRP 报文,以公布其配置信息(优先级等)和工作状况。
3》如果Master 路由器出现故障,虚拟路由器中的Backup 路由器将根据优先级重新选举新的Master。
4》虚拟路由器状态切换时,Master 路由器由一台设备切换为另外一台设备,新的Master 路由器只是简单地发送一个携带虚拟路由器的MAC 地址和虚拟IP地址信息的免费ARP 报文,这样就可以更新与它连接的主机或设备中的ARP 相关信息,网络中的主机感知不到Master 路由器已经切换为另外一台设备。
5》Backup 路由器的优先级高于Master 路由器时,由Backup 路由器的工作方式(抢占方式和非抢占方式)决定是否重新选举Master。
6》由此可见,为了保证Master路由器和Backup路由器能够协调工作,VRRP需要实现以下功能:
Master 路由器的选举,
Master 路由器状态的通告,
同时,为了提高安全性,VRRP 还提供了认证功能。
VRRP提供了三种认证方式
无认证:
不进行任何 VRRP 报文的合法性认证,不提供安全性保障。
简单字符认证:
在一个有可能受到安全威胁的网络中,可以将认证方式设置为简单字符认证。
发送VRRP 报文的路由器将认证字填入到VRRP 报文中,而收到VRRP 报文的路由器会将收到的VRRP 报文中的认证字和本地配置的认证字进行比较。
如果认证字相同,则认为接收到的报文是合法的VRRP 报文,否则认为接收到的报文是一个非法报文。
MD5 认证:
在一个非常不安全的网络中,可以将认证方式设置为MD5 认证。
发送VRRP 报文的路由器利用认证字和MD5 算法对VRRP 报文进行加密,加密后的报文保存在Authentication Header(认证头)中。
收到VRRP报文的路由器会利用认证字解密报文,检查该报文的合法性。
VRRP Master选举机制
1》VRRP根据优先级来来确定路由器角色,优先级越高,则越有可能成为master路由器。
2》如果VRRP报文中master路由器优先级高于自己的优先级,则路由器保持在Backup状态。
3》如果VRRP报文中master路由器优先级低于自己的优先级,采用抢占工作方式的路由器抢占为master状态,周期性地发送VRRP报文,采用非抢占工作方式的路由器仍然保持Backup状态。
4》如果在一定时间内没有收到VRRP报文,则路由器切换为Master状态。
5》VRRP优先级的取值范围为0到255(数值越大表明优先级越高),可配置的范围是1到254,优先级0为系统保留给路由器放弃Master位置时候使用,255则是系统保留给IP地址拥有者使用。
当路由器为IP地址拥有者时,其优先级始终为255。
因此,当虚拟路由器内存在IP地址拥有者时,只要其工作正常,则为Master路由器。
6》VRRP组中的ip拥有者:
如果虚拟ip地址与VRRP组中的某台VRRP路由器ip地址相同,则此路由器为ip地址拥有者,这台路由器将被定位主路由器。
7》比较ip地址:
在没有ip地址拥有者,且优先级相同的情况下,ip地址大的作为主路由器。
VRRP的报文格式
VRRP报文被封装在ip包中,使用专门的VRRP IPv4组播地址(协议号112,组播地址224.0.0.18)。
IANA分配给VRRP的ip协议号为112(10进制),IANA给VRRP分配的ip组播地址为224.0.0.18,这是本地范围的多播地址。
不论TTL的值是多少,路由器都被禁止转发以此地址为目标的报文。
VRRP报文的ip头中,TTL必须为255,当VRRP路由器收到TTL不等于255的VRRP协议报文后,必须丢弃。
(TTL是Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量,TTL是IPv4包头的一个8 bit字段)
各字段的含义:
Version:协议版本号,现在的VRRP为版本2。
Type:报文类型,只有一种取值,1,表示Advertisement。
Virtual Rtr ID(VRID):虚拟路由器ID,取值范围是1~255。
Priority:发送报文的VRRP路由器在虚拟路由器中的优先级。取值范围是0~255,其中可用的范围是1~254。0表示设备停止参与VRRP,用来使备份路由器尽快成为主路由器,而不必等到计时器超时;255则保留给IP地址拥有者。缺省值是100。
Count IP Addrs:VRRP广播中包含的虚拟IP地址个数
Authentication Type:验证类型,协议中指定了3种类型:
将Authentication Type取值变更如下:
0 - No Authentication
1 - Reserved
2 - Reserved
变更的原因:实践和分析证明,这些认证方式不能提供真正的安全。而限制TTL=255可以阻止大多数对本地脆弱性的攻击。实现了Simple Text Password认证方式
Advertisement Interval:发送通告报文的时间间隔,缺省为1秒。
Checksum:校验和。
IP Address(es):虚拟路由器IP地址,地址个数是Count IP Addrs的值。
Authentication Data:验证字,目前只有明文认证才用到该部分,对于其它认证方式,一律填0。
虚拟路由器
VRRP将局域网内的一组路由器划分在一起,形成一个VRRP备份组,它在功能上相当于一台虚拟路由器,使用虚拟路由器号进行标识。
以下使用虚拟路由器代替VRRP备份组进行描述
虚拟路由器有自己的虚拟IP地址和虚拟MAC地址,它的外在表现形式和实际的物理路由器完全一样。
局域网内的主机将虚拟路由器的IP地址设置为默认网关,通过虚拟路由器与外部网络进行通信。
虚拟路由器是工作在实际的物理路由器之上的,它由多个实际的路由器组成,包括一个Master路由器和多个Backup路由器。
Master路由器正常工作时,局域网内的主机通过Master与外界通信。
当Master路由器出现故障时,Backup路由器中的一台设备将成为新的Master路由器,接替转发报文的工作。
VRRP路由器运行过程中的三种状态(状态机)
1)initialize状态:
系统启动后就进入initialize,此状态下路由器不对VRRP报文做任何处理,可以理解为初始化。
设备启动时进入此状态,当收到接口Startup的消息,将转入Backup或Master状态(IP地址拥有者的接口优先级为255,直接转为Master)。
2)master状态:
路由器会发送VRRP通告,发送免费ARP报文。
当路由器处于Master状态时,它将会做下列工作:
定期发送VRRP报文。
以虚拟MAC地址响应对虚拟IP地址的ARP请求。
转发目的MAC地址为虚拟MAC地址的IP报文。
如果它是这个虚拟IP地址的拥有者,则接收目的IP地址为这个虚拟IP地址的IP报文,否则丢弃这个IP报文。
如果收到比自己优先级大的报文则转为Backup状态。
如果收到优先级和自己相同的报文,并且发送端的主IP地址比自己的主IP地址大,则转为Backup状态。
当接收到接口的Shutdown事件时,转为Initialize。
3)backup状态:
接收VRRP通告。
当路由器处于Backup状态时,它将会做下列工作:
接收Master发送的VRRP报文,判断Master的状态是否正常。
对虚拟IP地址的ARP请求,不做响应。
丢弃目的MAC地址为虚拟MAC地址的IP报文。
丢弃目的IP地址为虚拟IP地址的IP报文。
Backup状态下如果收到比自己优先级小的报文时,丢弃报文,不重置定时器。
如果收到优先级和自己相同的报文,则重置定时器,不进一步比较IP地址。
当Backup接收到MASTER_DOWN_TIMER定时器超时的事件时,才会转为Master。
当接收到接口的Shutdown事件时,转为Initialize。
VRRP状态上报机制
一般主路由器处理master状态,备份路由器处理backup状态。
master和backup之间需要实时通信,master路由器周期性地发送VRRP报文,在虚拟路由器中公布其配置信息(优先级等)和工作状况。
backup路由器通过接受到VRRP报文的情况来判断master路由器的工作是否正常。
1》VRRP通告报文时间间隔定时器
1>VRRP备份组中的master路由器会定时发送VRRP通告报文,通知备份组内的路由器自己工作正常。
2>用户可以通过设置VRRP定时器来调整master路由器发送VRRP通告报文的时间间隔
3>如果backup路由器在等待了3个间隔小时后,依然没有收到VRRP通告报文,则认为自己是master路由,并对外发送VRRP通告报文,重新进行master路由器选择。
4>如果master发现自己的链路不同,master路由器主动放弃master地位,会发送优先级为0的VRRP报文,致使backup路由器快速切换为master路由器。
这个切换时间为skew time,计算方式为256-backup的路由器优先级/256,单位是秒。
5>当master路由器发生网络故障而不能发送VRRP报文的时候,backup路由器并不能立即知道其工作状况。
backup路由器等待一段时间,如还没有收到VRRP报文,那么会认为master路由器无法工作,而把自己升级为master路由,并周期性发送VRRP报文。
如果此时有多个backup路由器,将会通过优先级俩选择master路由器。
backup路由器默认等待时间为Master_Down_Interval,取值为3*VRRP报文的发送时间间隔+SKewtime,单位是秒。
2》VRRP抢占延迟时间定时器
在性能不稳定的网络中,backup路由器可能因为网络堵塞而在master_down_interval期间没有收到master路由器包文,而主动抢占master位置,如果此时原master路由器报文又到达了,就会出现虚拟路由器的成员频繁进行master抢占现象。
为避免这一现象,特制定了延迟等待定时器,让backup路由器有足够的时间来搜集信息。
延迟等待定时器可以使得backup路由器等待了master_down_interval后再等待延迟时间,之后还没有收到master报文,就切换为master并发报文。
Backup抢占方式
备份组中的路由器有两种工作方式:
1)非抢占方式:
即只要master路由器没有出现故障,backup路由器即使随后被配置了更改的优先级也不会成为master路由器。
2)抢占方式(默认)
即优先级谁高谁做master路由器。
监听
VRRP可以直接监视连接上行链路的端口状态,当接口down时,将master路由器降低指定的优先级。
VRRP可以利用NQA技术监视上行链路连接的远端主机或网络状况。
如当master路由器上启动了NQA的ICMP-echo探测功能,探测远端主机的可达性,当探测失败时,它可以通知本设备探测结果,达到降低VRRP优先级的目的。
VRRP可以使用BFD技术监视上行连接连接到远端主机或网络状况,BFD精度可以达到10ms。
backup设备提供了一个监听master工作状态的功能,使得master路由器坏掉后backup能立即快速的切换为master,维持网络通信。
backup使用BFD技术监视master路由器的状态,可以在毫秒级的快速进行切换。
VRRP负载均衡
实现原理:
将以虚拟ip地址与多个虚拟MAC地址对应,VRRP备份组中的每个路由器都对应一个虚拟MAC地址,使得每个路由器都能转发流量。
在VRRP负载均衡模式中,只需创建一个备份组,就可以实现备份组中多个路由器之间的负载分担,避免了VRRP备份组中Backup设备始终处于空闲状态,网络资源利用不高的问题。