文章目录

  • 前言
  • 一、VRRP技术产生背景
  • 二、VRRP基本概念
  • 三、VRRP定时器
    • 1、ADVER_INTERVAL定时器
    • 2、MASTER_DOWN定时器
  • 四、VRRP状态机
  • 五、VRRP主备选举
  • 六、主备切换及主备回切
  • 七、监视上行端口
  • 八、VRRP与MSTP的结合应用

前言

之前我们一直学习的是二层冗余备份,例如害怕链路损坏增加多条链路所以有了LACP,害怕二层转发设备损坏增加二层转发设备同时又为了防环所以产生了STP、RSTP、MSTP生成树协议,二层的冗余备份已经完善,我们接下来考虑三层冗余备份,那就是网关冗余备份VRRP技术

一、VRRP技术产生背景

我们都清楚的知道,局域网内的用户想要上网必须通过网关来进行转发。但是思考过没有网关也只是配置在接口上的一个IP地址,假如接口或者设备二者其一损坏,那么都代表着该局域网内的所有用户都无法访问外部网络。为了解决单点故障我们可以配置多个网关来进行解决,但是存在多个网关又会产生冲突问题。为了能够存在多个网关并且能够解决冲突问题,提高网络可靠性所以就产生了VRRP(Virtual Router Redundancy Protocol -虚拟路由冗余协议)

二、VRRP基本概念

  • VRRP路由器:就是运行VRRP协议的路由器,确切的说是接口,因为VRRP是配置在路由器接口上进行工作的。
  • VRID(Virtual Router Identifier -虚拟路由器标识符):同一个VRRP组内协同工作的路由器都有一个相同的VRID(可以理解为老大)进行标识,并且每一个VRRP组内只能有一台Master路由器(一个团体内只能有一个老大)。
  • 虚拟路由器(Virtual Router):VRRP的每一个组就是一台虚拟路由器,也就是把VRRP组逻辑化为一台虚拟路由器,并且每个组只能产生一台虚拟路由器。
  • 虚拟IP地址及虚拟MAC地址:每一个由若干路由器接口组成的VRRP组虚拟成的一台虚拟路由器当然需要配置虚拟IP地址及虚拟MAC地址啦,一台虚拟路由器可以有一个或者多个IP地址,该地址尽量不要与真实接口配置地址相重复,虚拟mac地址格式为“0000-5e00-01xx”xx就是你的VRID.
  • Master路由器:就是VRRP组内唯一的“老大”,在VRRP组内承担报文转发任务,一个VRRP组内只有Master才可以对虚拟IP的请求进行响应,Master还会定期发送VRRP报文来表明自己还存活。
  • Backup路由器:也可以理解为备份路由器。Backup路由器时时监听Master的VRRP报文,随时准备替代”老大“老进行工作.
  • Priority:优先级取值范围0-255,值越大越优先,值相等的则比较接口IP地址大小,接口越大越优先。
  • VRRP报文格式:VRRP只有一种报文格式,就是Advertisement报文,基于组播方式进行发送,报文目的组播地址为224.0.0.18.

三、VRRP定时器

在VRRP协议工作过程中一共有需要用到两个定时器:

1、ADVER_INTERVAL定时器

这个也是比较容易理解,用来定时Master给Backup发送自己还存活报文的时间周期缺省为1秒。

2、MASTER_DOWN定时器

就是 Backup设备在该定时器超时后就会自动变为Master状态,就是在山头老大不发消息后等待定时器规定的这莫长时间后,就开始揭竿而起,自立为王。

  • MASTER_DOWN = (3 * ADVER_INTERVAL) + Skew_time
  • Skew_time=(256-Priority)/256
    所以说优先级越大,Skew_time(偏移时间)越小,MASTER_DOWN也就越短,这也是优先级大的设备能够成为Master的原因。

四、VRRP状态机

  • 初始状态为initialize,当收到startup且优先级小于255就变为Backup,当收到startup且优先级等于255就变为Master(优先级最大为255)
  • 当为Backup状态时,因为只有Master才可以发送VRRP报文,所以当收到优先级为0(代表Master放弃了老大位置)或者比自己优先级小的报文(实力没有自己强劲了)再或者就是等待超时后(老大不给传消息,估计挂了),就会变为Master状态。
  • 当为Master状态时,收到比自己优先级大的报文(后生实力比自己强劲,自己甘愿退位)就会变为Backup状态。
  • 无论是Master还是Backup状态,只要是收到shutdown消息就变为初始化状态initialize。

五、VRRP主备选举

主要分为优先级不同主备选举、优先级相同主备选举、真实接口地址和虚拟IP地址相同三种情况,都挺简单的。

  • 优先级不同主备选举上来成员都为Backup状态,然后等待Master_DOWN时间,因为优先级越大的等待时间越短,所以优先级大的设备就会成为Master,然后昭告天下,其他设备收到比自己优先级大的报文就甘愿沦为Backup状态。
  • 优先级相同主备选举:上来成员都为Backup状态,然后等待Master_DOWN时间,因为优先级相同所以等待时间也相同,所以两台设备都会成为Master,然后向外发送报文,通过进一步比对接口的IP地址来进行选举Master路由器,越大越优先。
  • 真实接口地址和虚拟IP地址相同:这种就不用选举了,地址相同自然为Master,但是慎用!!! 因为用了之后就不能够达成网关冗余备份的效果了,损坏后无法切换Backup设备。
    总而言之,优先级不同越大越优先,优先级相同接口越大越优先,接口和虚拟ip相同定为Master.

六、主备切换及主备回切


主备切换分两种情况
第一是Master不想干了,自动退出,他就会发出VRRP优先级为0的报文,其他设备收到比自己优先级小的报文从而改为Master,无需等待MASTER_DOWN时间(因为老大自己都说不干了)。
第二是Master还想干,但是年老身心疲惫,无法向外发送消息说自己还想干,备份设备等待MASTER_DOWN时间超时后,认为老大已经挂了,于是备份改为主设备。

主备回切就是(接着上图),老大突然又想干了,从前的老大收到优先级比自己低的报文在宣告自己的地位,所以在抢占模式的帮助下立即切换为Master。

  • 抢占模式:从前的老大收到优先级比自己低的报文在宣告自己的地位,所以在抢占模式的帮助下立即切换为Master,还可以设置抢占时间,等待网络稳定后在进行抢占 — 缺省开启。
  • 非抢占模式:从前的老大收到优先级比自己低的报文在宣告自己的地位,也不会去搭理,有种 “摆烂” 的感觉,这种模式并不是没有用,网络不稳定的时候或者设备不佳时,会导致VRRP主备来回切换,将会加大设备的负担。--- 直到Master失效才会成为Master.

七、监视上行端口


这个功能其实是很必要的,因为VRRP是在路由器接口上运行的,所以当Master的上游设备链路或者接口设备出现故障时,下游链路是不会感知到的,局域网信息还是源源不断通向Master,但是Master收到报文后因为上游链路损坏所以无法进行转发,主备也不会进行切换(因为Master接口没坏),这也就产生了出名的流量黑洞。

八、VRRP与MSTP的结合应用


一定要注意根桥要和Master为同一台设备,或者同一条链路上的设备,不然报文走着走着就会发现 “路断了” 哈哈。

【VRRP】来给你的网关加一个备份吧相关推荐

  1. 给你的开源项目加一个绶带吧

    D2 Ribbons 是一套为开发者准备的开源社区绶带资源,你你可以下载图片到你的项目中使用或者直接使用仓库资源链接. 素材地址 github.com/d2-projects- Features 扁平 ...

  2. pthread_cond_wait()加一个while为什么的解释

    等号上面这段是大多数网上给pthread_cond_wait()加一个while为什么的解释:但是有些地方不太明白或者说没有解释清晰: 准备:1:pthread_cond_singal是唤醒至少一个线 ...

  3. 接到一个需求,想在页面上加一个链接有多难?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 程序师 来源 | www.techug.com ...

  4. cassandra——可以预料的查询,如果你的查询条件有一个是根据索引查询,那其它非索引非主键字段,可以通过加一个ALLOW FILTERING来过滤实现...

    cassandra的索引查询和排序 转自:http://zhaoyanblog.com/archives/499.html cassandra的索引查询和排序 cassandra的查询虽然很弱,但是它 ...

  5. 数值格式化,每隔三位加一个逗号

    数值整数和小数 每隔三位加一个逗号方便阅读 function addCommas(nStr){ nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x[1 ...

  6. 给博客园加一个会动的小人-spig.js

    给博客园加一个会动的小人-spig.js 效果大概是这样,感觉十分可爱qvq 那么怎么添加呢? 首先需要开通js/html权限. 然后在页脚html代码中加入以下代码 <script src=& ...

  7. 命令前面加一个!的意思如!python

    正常的python的命令的前面加一个! 就说明这个是放在cmd里面来执行的

  8. zend framework1.12 没找到php.exe,请加一个zend framework的有关问题

    请加一个zend framework的问题 我在用phpunit测试zend项目里的model, 这个model是这样的: PHP codeclass Application_Model_AdminG ...

  9. Applese 的回文串(加一个字符的回文)

    链接:https://ac.nowcoder.com/acm/contest/330/I 来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如--判断一个字符串是不是回文串. ...

最新文章

  1. 浅谈企业IT应用的访问方式之:乱想
  2. LeetCode 59 _ Sprial Matrix II 旋转矩阵2
  3. 商城html源码_延边小程序商城
  4. php配置mysql集群_mysql的集群配置
  5. Android QEMU 高速管道
  6. GTK+ 2.4 or later isn't available
  7. GCC中SIMD指令的应用方法
  8. ise的时钟ip核_Vivado CIC IP核滤波器详解(一)
  9. Centos(Linux)升级git最新版本
  10. Mysql Alter table 操作
  11. 【2016Esri全球用户大会主题亮点】GIS Apps的交响乐
  12. android 横向长图,Android实现截超长图
  13. RSA加密算法流程图
  14. vue 子页面调用父页面的参数_Vue子父组件间的数据传递
  15. xpath获取同级元素 子元素,子元素取父元素等
  16. 计算机Word2010在线做题,Word2010试题练习题库(答案).doc
  17. 内部收益率(二分法)
  18. Autumn中文文档2:控制器
  19. 用python 编写一个简单的游戏
  20. 面向95后的营销和增长,你需要知道这些( ゜- ゜)つロ 乾杯

热门文章

  1. 技术、产业、人才三管齐下,数字人民币渐行渐近 | 产业区块链发展周报
  2. 特斯拉AI Day:车企能造好机器人吗?
  3. Factoryio的应用
  4. RPA对银行业的重塑:3个大型国际银行RPA应用案例
  5. Word去除目录主页页码
  6. 源码天空java新闻_Java UpdateRequest类代码示例
  7. VR垃圾分类游戏的“入门”场景|广州华锐互动
  8. com.alibaba.dubbo.rpc.RpcException: No provider available from registry 127.0.0.1:2181 for..
  9. 摘抄“学习笔记”时想到的
  10. Python摄氏度与华氏度的相互转换