vrrp
vrrp基本概念
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)能够实现网关的冗余备份,并且不会引起多网关的冲突。
通过把几台路由设备联合组成一台虚拟的“路由设备”,使用一定的机制保证当主机的下一跳路由设备出现故障时,及时将业务切换到备份路由设备,从而保持通讯的连续性和可靠性。
vrrp路由器:指运行vrrp协议的路由器,如图中R1,R2,vrrp配置在接口上,也是基于接口运行的。
VRID:一个VRRP组(VRRP Group)由多台协同工作的路由器(的接口)组成,使用相同的VRID(Virtual Router Identifier,虚拟路由器标识符)进行标识。属于同一个VRRP组的路由器之间交互VRRP协议报文并产生一台虚拟“路由器”。
虚拟路由器:由多个vrrp组的路由器虚拟成的路由器(只有一台)
虚拟IP和虚拟MAC地址:虚拟路由器的IP和MAC地址,其中IP地址由网络管理员在配置VRRP时指定,一台虚拟路由器可以有一个或多个IP地址(可以配置多个vrrp组实现负载分担分流),通常情况下用户使用该地址作为网关地址。
Master路由器:每个vrrp组只有一个,承担报文转发任务,响应虚拟IP和MAC地址的arp request。并且会周期性发送vrrp报文,给同一个组的路由器告知存活情况。
Backup路由器:备份路由器,当Master路由器故障会接替任务,在接替任务之前不会处理关于虚拟IP和MAC地址的报文,同时实时监听Master路由器的vrrp报文。
Priority:是竞选Master路由器的主要依据,范围0-255(0表示不参与选举),优先级越大越优先,再比较IP地址大小,越大越优先。前提是本身IP地址不是虚拟IP地址,否则会直接成为Master路由器(无需比较优先级)。
vrrp报文
VRRP只有一种报文,即Advertisement报文,基于组播方式发送,因此只能在同一个广播域(即同组vrrp)传递。 Advertisement报文的目的组播地址为224.0.0.18。
VRRP报文字段含义如下:
Ver:VRRP目前有两个版本,其中VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。 Virtual Rtr ID:该报文所关联的虚拟路由器的标识。 Priority:发送该报文的VRRP路由器的优先级。 Count IP Addrs:该VRRP报文中所包含的虚拟IP地址的数量。 Auth Type:VRRP支持三种认证类型:不认证、纯文本密码认证、MD5方式认证,对应值分别为0、1、2。 Adver Int:发送VRRP通告消息的间隔。默认为1秒 IP Address:所关联的虚拟路由器的虚拟IP地址,可以为多个。 Authentication Data:验证所需要的密码信息。
VRRP定时器:
在VRRP协议工作过程中,VRRP定义了两个定时器:
ADVER_INTERVAL定时器:Master发送VRRP通告报文时间周期,缺省值为1秒。
MASTER_DOWN定时器:Backup设备监听该定时器超时后,会变为Master状态。
MASTER_DOWN定时器计算公式如下: MASTER_DOWN =(3* ADVER_INTERVAL)+ Skew_time(偏移时间) 其中,Skew_Time=(256–Priority)/256
状态机:
VRRP协议状态机有三种状态:Initialize(初始状态)、Master(活动状态)、Backup(备份状态)。
主备选举:
R1的接口VRRP优先级为200,R2的接口VRRP优先级为100,两台设备完成初始化后首先切换至Backup状态。 R1与R2根据各自MASTER_DOWN定时器超时时间由Backup切换到Master状态,所以R1比R2更快切换至Master状态(暂时的)。 R1和R2通过相互发送VRRP报文进行Master选举,优先级高的被选举为Master设备,因此R1被选为Master路由器 。 R1被选举为Master路由器后,立即发送免费ARP报文将虚拟MAC地址通告给与它连接的设备和主机。
无法手动将VRRP接口优先级配置为255,当接口IP地址为IP地址拥有者时,优先级自动成为255。
主备回切:
VRRP抢占模式(Preempt Mode) :
抢占模式(默认激活):如果Backup路由器激活了抢占功能,那么当它发现Master路由器的优先级比自己更低时,它将立即切换至Master状态,成为新的Master路由器
非抢占模式:如果Backup路由器没有激活抢占功能,那么即使它发现Master路由器的优先级比自己更低,也只能依然保持Backup状态,直到Master路由器失效。
开启抢占模式的VRRP备份组,当主备进行切换时,总共时长为:3xAdver_Interval+Skew_time+Delay_time 在抢占模式下,当Master的设备状态不稳定或者网络质量差时,会导致VRRP备份组频繁切换,从而引发终端ARP表项频繁刷新,为缓解此问题,通常设置抢占延时定时器,通过MASTER_INTERVAL定时器超时时间加上延时时间,确定状态稳定后,再进行主备回切。
典型应用:
基础配置:
(都在接口视图下)
创建VRRP备份组并给备份组配置虚拟IP地址:vrrp vrid x virtual-ip xxxx
配置路由器在备份组中的优先级:vrrp vrid priority x
配置备份组中设备的抢占延迟时间:vrrp vrid x preempt-mode timer delay x
配置VRRP备份组中设备采用非抢占模式: vrrp vrid x preempt-mode disable
配置VRRP备份组监视接口: vrrp vrid x track int g 0/0/x increased/reduced x
(改变优先级,可配置设备当检测到上行接口或链路出现故障时,增加或者减少自身优先级,IP地址拥有者和Eth-trunk成员口不允许配置VRRP监视功能。)
配置VRRP备份组联动普通BFD会话:vrrp vrid x track bfd-session x session-name x increased/reduced x
(改变优先级,如果选择参数session-name bfd-configure-name,可以绑定静态BFD会话或者标识符自协商的静态BFD会话。 如果选择参数bfd-session-id,只能绑定静态BFD会话。)
BFD
基本概念
BFD(Bidirectional Forwarding Detection,双向转发检测)提供了一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状态。(类似于更精确的hello报文)
hello报文的限制:在无法通过硬件信号检测故障的系统中,应用通常采用上层协议本身的Hello报文机制检测网络故障。 常用路由协议的Hello报文机制检测时间较长,检测时间超过1秒钟。当应用在网络中传输的数据超过GB/s时,秒级的检测时间将会导致应用传输的数据大量丢失。
在三层网络中,静态路由本身没有故障检查机制。
比如在ospf中的情况如下:
BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,有以下两大优点:
对相邻转发引擎之间的通道提供轻负荷、快速故障检测。 用单一的机制对任何介质、任何协议层进行实时检测。
BFD是一个简单的“Hello”协议。两个系统之间建立BFD会话通道,并周期性发送BFD检测报文,如果某个系统在规定的时间内没有收到对端的检测报文,则认为该通道的某个部分发生了故障。
工作原理
BFD检测是通过维护在两个系统之间建立的BFD会话来实现的,系统通过发送BFD报文建立会话。 BFD控制报文根据场景不同封装不同,报文结构由强制部分和可选的认证字段组成。
BFD会话的建立有两种方式,即静态建立BFD会话和动态建立BFD会话。
BFD通过控制报文中的本地标识符和远端标识符区分不同的会话。静态和动态创建BFD会话的主要区别在于Local Discriminator和Remote Discriminator的配置方式不同。
BFD会话有四种状态:Down、Init、Up和AdminDown。会话状态变化通过BFD报文的State字段传递,系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变,如左下图所示。BFD状态机的建立和拆除都采用三次握手机制,如右下图所示,以确保两端系统都能知道状态的变化。
BFD检测模式:两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障。分为异步模式和查询模式。
BFD检测时间:
BFD会话检测时长由TX(Desired Min TX Interval),RX(Required Min RX Interval),DM(Detect Multi)三个参数决定。BFD报文的实际发送时间间隔,实际接受时间间隔由BFD会话协商决定。
本地BFD报文实际发送时间间隔=MAX { 本地配置的发送时间间隔,对端配置的接收时间间隔 }
本地BFD报文实际接收时间间隔=MAX { 对端配置的发送时间间隔,本地配置的接收时间间隔 }
本地BFD报文实际检测时间:
异步模式:本地BFD报文实际检测时间=本地BFD报文实际接收时间间隔×对端配置的BFD检测倍数(双方都发送)
查询模式:本地BFD报文实际检测时间 = 本地BFD报文实际接收时间间隔×本端配置的BFD检测倍数(受限于对方的回复)
BFD缺省时间参数 BFD报文发送间隔默认1000毫秒,接受间隔默认1000毫秒,本地检测倍数3次。
BFD会话等待恢复时间0秒,会话延迟Up时间0秒。 检测超时倍数,用于检测方计算检测超时时间。 查询模式:采用本地检测倍数。 异步模式:采用对端检测倍数。
BFD Echo功能:
用于检测对方不支持bfd功能的设备,只支持基本的网络层转发。为了能够快速的检测这两台设备之间的故障,可以在支持BFD功能的设备上创建单臂回声功能的BFD会话。支持BFD功能的设备主动发起回声请求功能,不支持BFD功能的设备接收到该报文后直接将其环回,从而实现转发链路的连通性检测功能。
联动功能简介:
联动功能由检测模块、Track和应用模块三部分组成。
监测模块负责对链路状态、网络性能等进行监测,并将探测结果通知给Track模块 。
Track模块收到监测模块的探测结果后,及时改变Track项的状态,并通知应用模块。
应用模块根据Track项的状态,进行相应的处理,从而实现联动。
静态路由与BFD联动:
静态路由自身没有检测机制,如果静态路由存在冗余路径,通过静态路由与BFD联动,当主用路径故障时,实现静态路由的快速切换 。
OSPF与BFD联动:
OSPF在未绑定BFD的情况下,链路故障检测时间由协议Hello机制决定,通常是秒级(40s)。通过绑定BFD,可以实现毫秒级故障检测。
BFD与OSPF联动就是将BFD和OSPF协议关联起来, BFD将链路故障的快速检测结果告知OSPF协议。
BFD会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。
写一下基于lsa和路由建立关系的区别:
- 链路状态协议(OSPF):通过 “全局拓扑共识”(LSDB 同步)实现路由计算,强调 “先了解全网地图,再规划路径”。
- 距离矢量协议(RIP):通过 “局部信息传递”(路由条目交换)推断网络可达性,强调 “只告诉邻居我知道的路由,不关心拓扑细节”。
基本配置
创建BFD会话绑定信息,并进入BFD会话视图:bfd x bind peer-ip ip-address interface g 0/0/x source-ip ip-address
(在第一次创建单跳BFD会话时,必须绑定对端IP地址和本端相应接口,且创建后不可修改。如果需要修改,则只能删除后重新创建)
创建使用组播地址作为对端地址的BFD会话,并进入BFD会话视图:bfd x bind peer-id default-ip interface g 0/0/x source-ip ip-address
创建BFD for IPv6的绑定信息,并进入BFD会话视图:bfd x bind peer-ipv6 ip-address interface g 0/0/x source-ipv6 ip-address
(在第一次创建单跳BFD6会话时,必须绑定对端IPv6地址和本端相应接口,且创建后不可修改)
创建静态标识符自协商BFD会话:bfd x bind peer-ip ip-address int g 0/0/x source-ip ip-address auto (动态bfd,静态不加auto参数)
配置BFD会话的本地标识符:(bfd视图下)discriminator local x
配置BFD会话的远端标识符:(bfd视图下)discriminator remote x
配置标识符时,本端的本地标识符与对端的远端标识符必需相同,否则BFD会话无法正确建立。并且,本地标识符和远端标识符配置成功后不可修改。