一:什么是VRRP?

  1. 虚拟路由冗余协议VRRPVirtual Router Redundancy Protocol)是一种用于提高网络可靠性的容错协议。通过VRRP,可以在主机的下一跳设备出现故障时,及时将业务切换到备份设备,从而保障网络通信的连续性和可靠性。

二:为什么需要VRRP

  1. 随着网络的快速普及和相关应用的日益深入,各种增值业务(如IPTV、视频会议等)已经开始广泛部署,基础网络的可靠性日益成为用户关注的焦点,能够保证网络传输不中断对于终端用户非常重要。
  2. 现网中的主机使用缺省网关与外部网络联系时,如果Gateway出现故障,与其相连的主机将与外界失去联系,导致业务中断。

  • 局域网缺省网关示意图
  1. VRRP的出现很好地解决了这个问题。VRRP将多台设备组成一个虚拟设备,通过配置虚拟设备的IP地址为缺省网关,实现缺省网关的备份。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。如下图所示,当Master设备故障时,发往缺省网关的流量将由Backup设备进行转发。

  • VRRP备份组示意图

三:VRRP的工作原理

1.VRRP的三种状态
  • VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于Master状态的设备才可以转发那些发送到虚拟IP地址的报文。
  • 下表详细描述了三种状态。
  • VRRP协议状态:

2.VRRP选举机制
  1. 由几台路由器组成的虚拟路由器又称为VRRP备份组。一个VRRP备份组在逻辑上为一台路由器。VRRP备份组建立后,各设备会根据所配置的优先级来选举Master设备,选举方式如下图所示。

  • Master设备选举过程
3.VRRP工作原理
  1. 如下图所示,路由器ABC通过配置VRRP组成一个虚拟路由器。虚拟路由器的IP地址可以与设备上某台设备的实际IP地址一致(实际上直接指定此设备为Master),也可以与它们的地址在同一个网段但不一致。在本例中,我们以前一种方式来举例说明,虚拟路由器的IP地址为路由器AIP地址(注意:虚拟路由器的IP地址可以与设备上某台设备的实际IP地址一致,也可以与它们呢的地址在同一个网段但不一致。在本例中,我们以前一种方式来举例说明)。由于虚拟路由器的IP地址与路由器AIP地址相同,因此路由器AMaster设备,路由器BCBackup设备。Client1~3的默认网关为10.10.0.1。作为Master设备,路由器A处理着Client1~3发往默认网关10.10.0.1的报文。

  • VRRP工作原理
  1. Master设备出现故障时,路由器B和路由器C会选举出新的Master设备。新的Master设备开始响应对虚拟IP地址的ARP响应,并定期发送VRRP通告报文。

四:VRRP的详细工作过程如下:

  • VRRP备份组中的设备根据优先级选举出Master。Master设备通过发送免费ARP报文,将虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务。

  • Master设备周期性向备份组内所有Backup设备发送VRRP通告报文,通告其配置信息(优先级等)和工作状况。

  • 如果Master设备出现故障,VRRP备份组中的Backup设备将根据优先级重新选举新的Master。

  • VRRP备份组状态切换时,Master设备由一台设备切换为另外一台设备,新的Master设备会立即发送携带虚拟路由器的虚拟MAC地址和虚拟IP地址信息的免费ARP报文,刷新与它连接的设备或者主机的MAC表项,从而把用户流量引到新的Master设备上来,整个过程对用户完全透明。

  • 原Master设备故障恢复时,若该设备为IP地址拥有者(优先级为255),将直接切换至Master状态。若该设备优先级小于255,将首先切换至Backup状态,且其优先级恢复为故障前配置的优先级。

  • Backup设备的优先级高于Master设备时,由Backup设备的工作方式(抢占方式和非抢占方式)决定是否重新选举Master。

五:VRRP应用场景

  1. 在网络中,VRRP不仅仅在设备故障时触发Master设备的切换,它也能感知某个接口、某条路由的状态。
1.与接口状态联动
  1. 如下图所示,VRRP可以与上行接口的状态绑定在一起,当承担转发任务的Master设备的上行接口出现异常时,Master设备会降低一定的优先级,当优先级低于Backup设备的优先级时,Backup设备就会切换为Master设备,从而防止因为上行接口的异常导致业务受损。

  • VRRP与接口联动
2.与路由状态联动
  1. 如下图所示,VRRP可以与上行路由的状态绑定在一起,当上行路由出现异常时,Master设备可以降低一定的优先级,当优先级低于Backup设备的优先级时,Backup设备就会切换为Master设备,从而防止因为上行路由的异常导致业务受损。

  • VRRP与路由联动

什么是VRRP?的更多相关文章

  1. 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)

    本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...

  2. VRRP虚拟路由器冗余协议

    VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议)是一种容错协议.通常,一个网络内的所有主机都设置一条缺省路由,这样,主机发出的目的地址不在本网段的报文将被通 ...

  3. Vrrp协议

    一.简介 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简 ...

  4. vrrp两用

    早上想了想vrrp的使用,1,网关冗余 2,服务器热备 思想稍微有点不一样.主要在于监控口 服务器的话有心跳线,用户同步一些配置和迁移一些服务.达到热备的目的.:牵涉到四个优先级:建议这样排序: 主机 ...

  5. VRRP配置与维护手册-1

    http://www.gpxz.com/diannao/hulianwang/80526.html 一  VRRP简介< xmlnamespace prefix ="o" n ...

  6. VRRP协议具体解释

    转帖:http://blog.chinaunix.net/space.php?uid=11654074&do=blog&id=2857384 Contents              ...

  7. KeepAlived(三):vrrp实例故障转移(keepalived+haproxy)

    keepalived使用脚本进行健康检查时的相关配置项.例如keepalived+haproxy实现haproxy的高可用. keepalived分为vrrp实例的心跳检查和后端服务的健康检查.如果要 ...

  8. VRRP技术总结和配置实践

    1.VRRP作为网关可靠性的常用方法,基本思路是,两台路由器组成一个虚拟路由器,通过VRRP协议对内网呈现一个虚拟的网关ip, 以便让局域网内部的终端通过这个虚拟网关对外进行通信. 2.VRRP的最简 ...

  9. 【原理】VRRP详解

    写在前面 keepalived是一个基于VRRP协议来实现的服务高可用方案,从而可以避免IP单点故障.一般与其他负载均衡技术,如LVS,Nginx等一起来工作来达到集群高可用的目的 关于Keepali ...

  10. Keepalived原理与实战精讲--VRRP协议

    . 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简 ...

随机推荐

  1. 【LeetCode】1221. Split a String in Balanced Strings 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 统计 日期 题目地址:https://leetcode ...

  2. 【LeetCode】266. Palindrome Permutation 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...

  3. 【LeetCode】506. Relative Ranks 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序 argsort 堆 日期 题目地址:https ...

  4. Java不可变类与final类

    概念 Java的不可变类是指八个基础类型的包装类和String,他们的数据成员是不可变的.使用加法等操作时,其实是创建了一个新的对象. Java的final类是对类用关键字final进行修饰,说明该类 ...

  5. Arm64架构下静态编译Nginx

    这段时间,我一直忙于将 Rainbond 源码构建模块移植到 Arm64/aarch64 架构中.这一源码构建模块可以将指定代码仓库中包含的源码,拉取构建成为容器镜像,在各种容器平台中运行.目前支持的 ...

  6. MongoDB基本介绍与安装(1)

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...

  7. [opencv]zxing c++ 库的编译,安装,以及api的介绍

    环境:ubuntu 16.04 1. 下载:zxing的源码 git clone https://github.com/15903016222/zxing-cpp.git2. 安装编译依赖的工具:cm ...

  8. Python的面向对象常见概念解析

    [常见概念简介] 类(class)-- 用来描述某些具有相同属性和方法的对象的集合.格式如下 class test(): class_variable ... def f(self,*arg,**ar ...

  9. Java高级大一结业认证考试试题 - 云南农业职业技术学院 - 互联网技术学院 - 美和易思校企合作专业

     第1题 .关于XML的文档结构描述错误的是 一个基本的XML文档通常由序言和文档元素两部分组成 XML文档中的序言可以包括XML声明.处理指令和注释 XML文档中的元素以树形结构排列 XML文档的声 ...

  10. SpringBoot 之 控制器层

    @Controller public class EmployeeController { @Autowired EmployeeDao employeeDao; @Autowired Departm ...