VRRP协议(以下所说的“路由器”均为 服务器)
为了防止单点故障的发生,网络在设计的时候必须考虑到冗余灾,而VRRP协议就是为了消除在静态缺省路由环境下的静态缺省路由单点故障引起的网络失效而设计的主备模式的协议,使得在发生故障 进行设备切换时 不影响内外的数据通信,不需要在修改内部网络的网络参数。VRRP协议具有 IP地址备份、优先路由选择、 减少不必要的路由之间通信 等功能。
VRRP协议将两台或多台路由器虚拟成为一个设备,对外提供(一个或多个)虚拟的路由IP(VIP),在路由器组内部,如果实际拥有这个 VIP 的路由器工作正常,那它就是 MASTER ,MASTER 实现针对 VIP 的各种网络功能,如ARP请求,ICMP,以及各种数据的转发;没有 VIP 的路由器,状态为BACKUP,除了接收 MASTER 的VRRP状态信息通告(主给备的 心跳检测包)外,不执行对外的网络功能。 主机(MASTER)失效的时候 备机(BACKUP)会接管主机实现对外的网络功能。 主机会主动给备机发送心跳检测包 以及 对外的网络功能,而备机只负责接收主机的心跳检测包,随时准备接管主机。
配置VRRP协议时,需要配置每个路由器的虚拟路由ID(VRID)和 优先权值 (priority),使用VRID对路由器进行分组,VRID相同的路由器为一组,VRID是一个 0 ~ 255 的正整数;同一组路由器中通过优先权值来选择 MASTER,优先权之大者为MASTER,优先权值也是一个 0 ~ 255 正整数。
VRRP使用多播数据来传输VRRP数据,VRRP数据使用虚拟的MAC地址发送数据而不是使用自身的MAC地址,VRRP使用时只有MASTER定时发送通告信息,表示MASTER工作正常,BACKUP只接收VRRP数据,不发送数据,如果一定时间没有收到MASTER发来的通告信息,各个BACKUP就会宣告自己成为MASTER,发送通告信息,重新选举产生MASTER。
MASTER的选举:
如果对外的VIP就是路由器(服务器)本身的IP地址,那么该服务器就始终是MASTER,这时的优先级是255;
否则如果不具备VIP的话,就进行MASTER的选举,各个BACKUP都宣告自己是MASTER,发送VRRP信息;
如果其他机器发送过来的通告信息的优先级比自己高,就会转回BACKUP状态;
如果优先级相等,将会比较 服务器实际的IP地址,IP地址大的优先权高.
协议状态机:
VRRP协议就三种状态:初始化、主机、、备机
初始化:
路由器(服务器)启动时如果优先级是255,此时要发送VRRP信息,并且发送广播ARP通告。
路由器IP地址对应的MAC为路由虚拟MAC,设置通告信息定时器准备定时发送通告信息,转为MASTER;
否则转为BACKUP,设置定时器检查是否定时收到MASTER的通告信息。
主机 状态下的路由器要完成以下功能:
设置定时通告定时器;
用VRRP虚拟MAC响应路由器IP的ARP请求;
转发目的MAC是VRRP虚拟MAC的数据包;
如果是VIP的拥有者,将接受目的地址是VIP的数据包;
当遇到 shutdown 事件时删除定时通告器,发送优先权级为0的通告包,并转为初始化状态;
如果定时通告器超时,发送VRRP通告信息;
收到VRRP通告信息时,如果优先权为0,发送VRRP通告信息;否则判断数据的优先权是否高于本机,复位主机超时定时器,转为BACKUP状态;否则丢弃该通告包。
备机 状态下的路由器要完成的功能:
设置主机超时定时器;
不响应针对VIP的ARP请求;
丢弃所有目的MAC是虚拟路由器MAC的数据包;
不接受目的是VIP的数据包;
当收到shutdown事件时,删除 主机超时定时器 ,转为初始化状态;
主机超时定时器超市的时候,发送VRRP通告信息,广播ARP地址信息,转为MASTER状态;
收到VRRP通告信息时,如果优先权为0,表示进入MASTER选举;否则判断优先级是否高于本机,高的话承认MASTER有效,复位主机超时定时器;否则丢弃该包。
ARP查询处理:
当内部主机通过ARP查询VIP对应的MAC地址时,MASTER回复的是 虚拟的VRRP的MAC地址,而不是MASTER实际的MAC地址,这样在路由器切换时内部机器察觉不到。
协议定义:
以太头:
源MAC为虚拟MAC地址: 00-00-5E-00-01-{VRID},VRID为虚拟路由器ID值,16进制形式,所以同一网段中最多只能有255个VRRP路由器;目的MAC为多播类型的MAC。
IP头参数:
VRRP包的原地址是本机地址,目的地址必须为 224.0.0.18,是一个多播地址。
总结:
VRRP协议实现了对路由器IP地址的冗余功能,防止单点故障造成的网络失效,VRRP本身是热备形式的,但可以通过互相热备实现路由器的均衡处理。