入木三分学网络第一篇--VRRP协议详解-----(1)
原帖:http://blog.chinaunix.net/uid-11654074-id-2857384.html
目录
入木三分学网络第一篇--VRRP协议详解
1. VRRP产生背景及应用环境
1.1为什么要用VRRP
2.VRRP基本原理及实现过程
2.1 VRRP基本概念
2.2 VRRP报文组成
2.3 VRRP协议状态机
2.3.1初始状态(Initialize)
2.3.2备份路由器状态(Backup)
2.3.3 Master路由器(Master state)
2.4 VRRP通告报文的发送与接收处理流程
3. VRRP的两种应用需求:
冗余备份、负载均衡
4. 实例研究
4.1 VRRP在Cisco路由器上的实现
4.2 VRRP在Redback路由器上的实现
4.3 VRRP在Juniper路由器上的实现
5. VRRP的安全性
6. 一个典型的VRRP故障分析
7.后记
- 作者:张蒙 (zmouc)
- 电子邮箱:qdzhangmeng@163.com
- MSN:qdzhangmeng@163.com
- QQ : 407-960-134
- 博客地址:http://zmouc.cublog.cn
- 建立日期:2010年07月23日
- 版 本:1.0
- 版权说明:本文基于创作共用约定,内容归作者版权所有,欢迎大家转载,但要保留 作者的完整信息和出处,谢谢!
1. VRRP产生背景及应用环境
1.1为什么要用VRRP
VRRP(Virtual Router Redundancy Protocol)------虚拟路由器冗余协议,其最新技术标准是RFC3768。
为什么要用VRRP呢,主要是为了实现数据链路层互通设备的冗余备份功能,我们来看图一:
所以说我们要避免出现这种情况,本着冗余备份的思想,我们对上面的网络进行物理改造,如下图:
现在,这个网络一共有两个Internet出口,这样任何一个出口路由器出现故障都不会导致终端用户的上行流量断掉。
假定我们在终端PC上部署了动态路由协议,那么每一个终端用户都会遇到下面这种情况:
10086:尊敬的用户您好,申报RIP故障请按1,申报OSPF故障请按2,申报ISIS故障请按3……….
10086:您好,您申报的故障是OSPF,请进一步选择,OSPF邻居无法建立请按1,OSPF密钥不对请按2,链路状态数据库异常请按3,路由表错误请按4…………..
用户:( ⊙ o ⊙ )啊!……………然后吐血身亡………….
所以说,N多现实问题和困难导致在终端PC上部署动态路由协议具有不可行性。
1. 对于下行设备是PC来讲,配置了多个默认网关之后,其中一个会作为活动默认
网关,其它的作为备份默认网关,其按照下列过程执行流量转发和失效网关检测:
死网关检测仅监视TCP流量,如果其他类型的流量连接失败,不会切换默认网关。另外TCP是端到端的协议,因此即使当前默认网关完全正常,本地计算机的TCP通信失败也可能会导致切换默认网关。
2.对于下行设备是路由器的情况,其不会切换默认路由,只会按照配置好的缺省
结合上面两个原因,在网络出口路由器的下行设备上配置缺省路由的方法也不可行。
综上所述,要想消除单点故障,又同时实现下行设备在故障发生时的流量无障碍
转发,以上的三个方法均不可行,所以人们开发出了一种全新的协议:VRRP,这
种协议无需下行设备与出口路由器进行交互性操作,却完全实现了网络出口的冗
余备份,下一节,我们就来详细讨论下VRRP的基本原理及实现过程。
2.VRRP基本原理及实现过程
2.1 VRRP基本概念
虚拟路由器:由一个Master路由器和多个Backup路由器组成。其中,无论Master路由器还是Backup路由器都是一台VRRP路由器,下行设备将虚拟路由器当做默认网关。
Backup路由器:当一个虚拟路由器中的Master路由器出现故障时,能够代替Master路由器工作的路由器
虚拟IP地址:虚拟路由器的IP地址,一个虚拟路由器可以拥有一个或多个虚拟IP地址。
IP地址拥有者:接口IP和虚拟路由器IP地址相同的路由器就叫做IP地址拥有者。
主IP地址:从物理接口设置的IP地址中选择,一个选择规则是总是选用第一个IP地址,VRRP通告报文总是用主IP地址作为该报文IP包头的源IP。
2.2 VRRP报文组成
Version:VRRP协议版本号,RFC3768定义了版本2.
Type:该字段指明了VRRP报文的类型,RFC3768只定义了一种VRRP报文,那就是
VRRP通告报文,所以该字段总是置为1,若收到的VRRP通告报文拥有非1的类型
Virtual Rtr ID:也就是我们上面介绍过的VRID,一个VRID唯一地标识了一个虚拟
路由器,取值范围是[1,255],所以一台路由器的接口可以同时运行最多255个VRRP
Count IP Addrs:VRRP通告报文中包含的IP地址数量,这个字段其实就是为一个VRRP虚拟路由器所分配的IP地址的数量,我们来看一个cisco的实际例子:
ip address 192.168.10.102 255.255.255.0
vrrp 1 ip 192.168.10.51 secondary
vrrp 1 ip 192.168.10.53 secondary
我们来看一下上面的配置在封装成VRRP通告报文的时候,是如何进行的,如下
大家可以看到,VRRP通告报文中的Count IP Addrs字段的值为3,这是因为我们配置了3个虚拟IP地址,另外,下面的IP Address字段也按照我们配置虚拟IP的顺序进行了封装。
Auth Type:认证类型字段,是一个8位的无符号整数,一个虚拟路由器只能使用一种认证类型,如果Backup路由器收到的通告报文中认证类型字段是未知的或和本地配置的不匹配,那么它将丢弃该数据包。
0 – 无认证,此时下面的Authentication Data字段将会被置为全0,接收到的路由器也会忽略此字段。
Adver Int::此字段规定了Mater路由器向外发送VRRP通告报文的时间间隔,以秒为单位,取值范围是[1,255],若没有人工配置,缺省为1秒。
Checksum:整个VRRP报文的校验和,计算过程中,将Checksum字段置为0,计算完成后将结果填入此字段。若希望进一步了解Checksum的计算,可以查看RFC1071(CKSM)。
IP Address:此字段存放3个VRRP虚拟路由器的虚拟IP地址,配置了几个就封装几个,在上面的cisco实例中我们配置了三个,那么VRRP通告报文就会封装3个。
Authentication Data:RFC3768中规定,此字段只是为了向RFC2338兼容,在实际的封装时,全置为0.,接收方也会忽略此字段。
2.3 VRRP协议状态机
2.3.1初始状态(Initialize)
这是配置好VRRP后,VRRP等待一个开始事件时的状态,当本地VRRP进程切换到此状态后,会依次执行下列操作:
2.3.1.1如果本地优先级为255,也就是说自己是IP拥有者路由器,那么接下来它会:
2.广播免费ARP请求报文,内部封装是虚拟MAC和虚拟IP的对应,有几个虚拟IP地址,那么就发送几个免费ARP请求报文。
3.启动一个Adver_Timer计时器,初始值为Advertisement_Interval(缺省是1秒),当该计时器超时后,会发送下一个VRRP通告报文
2.3.1.2如果,本地优先级不是255,,那么接下来它会:
1.设置Master_Down_Timer计时器等于Master_Down_Interval,也就是主路由器死亡时
间间隔,如果此计时器超时,那么Backup路由器就会宣布主路由器死亡。
间隔是1秒,那么Master_Down_Interval = 3*1s + (256-100)/256s = 3.609秒。
2.3.2备份路由器状态(Backup)
2.3.2.1
备份路由器是为了监控Master路由器的状态,如果一个VRRP路由器处于此状态,那么它会:
1. 不响应对虚拟IP地址的ARP请求报文
2. 丢弃帧头目的MAC地址是虚拟MAC的帧
3. 丢弃IP头中目的IP地址是虚拟IP的IP包
2.3.2.2
如果此时该VRRP路由器收到了一个shutdown事件,那么它会:
1. 取消Master_Down_Timer
2. 转换为初始状态(Initialize state)
2.3.2.3
如果Master_Down_Timer超时,那么该VRRP路由器会执行:
1. 发送一个VRRP通告报文,
2. 广播免费ARP请求报文,内部封装是虚拟MAC和虚拟IP的对应,有几个虚拟IP
地址,那么就发送几个免费ARP请求报文。
3. 设置Adver_Timer计时器为Advertisement_Interval(缺省为1秒)
4. 切换到Master状态
2.3.2.4
如果该Backup状态的VRRP路由器收到了一个VRRP通告报文;
当该VRRP通告报文的优先级字段为0时,那么路由器会将当前的
Master_Down_Timer 设置为Skew_Time;
如果优先级不为0,并且大于或等于本地优先级,那么本地路由器会重置Master_Down_Timer计时器并保持Backup状态;
如果优先级不为0,并且小于本地优先级,如果开启了抢占模式(Preempt mode),
那么该Backup路由器等待指定的抢占延迟时间后将自己切换为Master路由器;并执
行Master路由器的所有动作;例如:vrrp 1 preempt delay minimum 10,表示等待10秒
后切换自己为Master;
如果优先级不为0,并且小于本地优先级,如果没有开启抢占模式(Preempt mode),那么本地路由器保持Backup状态。
2.3.3 Master路由器(Master state)
处于Master状态的路由器会执行目的MAC为虚拟MAC数据帧的转发,这里要清楚的是对于下行设备的arp表里,该虚拟MAC是和虚拟IP地址相对应的。
2.3.3.1
当路由器处于Master状态时,会进行下面的动作:
1. 响应对虚拟IP地址的ARP请求
2. 转发目的MAC地址是虚拟MAC的数据帧
3. 拒绝目的IP地址是虚拟IP的数据包,除非它是IP地址拥有者(也就是优先级是
255的那个路由器)。
2.3.3.2
如果处于Master状态的VRRP进程收到了一个shutdown事件,那么它会:
1. 取消Adver_Timer计时器
2. 发送一个优先级字段置零的VRRP通告报文
3. 切换为初始状态(Intialize state)
2.3.3.3
如果Adver_Timer计时器超时,那么:
1. 发送一个VRRP通告报文
2. 重置Adver_Timer计时器
2.3.3.4
如果收到了一个VRRP报文且其优先级为0,那么:
1. 发送一个VRRP通告报文
2. 重置Adver_Timer计时器
2.3.3.5
如果收到了一个VRRP报文且其优先级高于本地优先级,或者收到的VRRP报文优先级等于本地优先级但是主IP地址高于本地的主IP地址,那么:
1. 取消Adver_Timer计时器
2. 设置Master_Down_Timer计时器为Master_Down_Interval
3. 切换为Backup状态
入木三分学网络第一篇--VRRP协议详解-----(1)相关推荐
- 入木三分学网络第一篇--VRRP协议详解-----(2)
原帖:http://blog.chinaunix.net/uid-11654074-id-2857385.html 2.4 VRRP通告报文的发送与接收处理流程 2.4.1 当收到一个VRRP通告报文 ...
- VRRP协议详解-----(1)
目录 入木三分学网络第一篇--VRRP协议详解 1. VRRP产生背景及应用环境 1.1为什么要用VRRP 2.VRRP基本原理及实现过程 2.1 VRRP基本概念 2.2 VRRP报文组成 2.3 ...
- TCP/IP网络协议栈:ARP协议详解
<TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...
- 【网络篇】第十七篇——IP协议详解
IP协议 网络层与数据链路层有什么关系? 基本概念 IP协议格式 分卡与组装 网段划分 IP地址的构成 DHCP协议 IP地址的分类 IP分类的缺点 无分类地址 CIDR 特殊的IP地址 IP地址的数 ...
- WinSock API网络编程——TCP/IP协议详解
WinSock API网络编程--TCP/IP协议(http://www.impcas.ac.cn/usr/lujun/browse.asp?id=winsock_tcp) ...
- KANZI入门第一篇之kanzi详解,教你轻松学kanzi
1.安装Kanzi. 2.使用Kanzi studio创建工程. Kanzi创建的工程会包含以下目录结构: 其中, Tool_project文件夹中存放的是设计师设计的工程,包含kanzi UI的工程 ...
- MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解
MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...
- MySQL数据库,从入门到精通:第十四篇——MySQL视图详解
MySQL数据库,从入门到精通:第十四篇--MySQL视图详解 第 14 篇_视图 1. 常见的数据库对象 2. 视图概述 2. 1 为什么使用视图? 2. 2 视图的理解 3. 创建视图 3. 1 ...
- 虚拟路由器冗余协议VRRP原理详解!
虚拟路由器冗余协议VRRP原理详解! https://virtual.51cto.com/art/201905/596666.htm?pc 我们知道,为了实现不同子网之间的设备通信,需要配置路由.目前 ...
最新文章
- 数学建模学习笔记——图论最短路径
- DNS服务器的默认区域文件名,DNS服务器全攻略之三 :创建与管理DNS区域.doc
- 安装phpstudy之后发现80端口被占用
- eclipse3.2配置开发C/C++
- 玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历
- 喷喷计算机语言掌握的程度
- 北美暴风雨,Linux5.12被延迟6天发布
- webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
- WCF技术剖析之十七:消息(Message)详解(上篇)
- php怎麼开bcmath_php-如何启用BCMath CentOS 6
- Linux内核部件分析 记录生命周期的kref
- fanuc系统网络服务器,FANUC的网络配置.doc
- 解决Mac版 snipaste 不在菜单栏显示,无法修改快捷键
- 恶意代码分析平台Truman相关资料
- c语言数字转换为字符串补位,String字符串补位
- 图解HTTP(读书笔记01)
- 爱学术,让论文写作不再难!
- 尚硅谷大数据视频_Hive视频教程
- 关于SpringMVC运行项目时出现404错误
- development 和 production 模式的区别
热门文章
- Linux驱动学习9(同步/异步与阻塞/非阻塞的区别 )
- 使用Velocity导出Word文档
- centos 7 时间与网络同步
- ueditor编辑器右键粘贴、复制不能用的解决办法
- [转载] linux程序后台挂起demo——nohup
- 《人性的弱点》(一)
- SQL语法分析-基础篇
- Oracle: SQL精妙SQL语句讲解(常用sql) .
- System.nanoTime()
- 本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。