一、BFD双向转发检测 :
(一)BFD:Bidirectional Forwarding Detection
1.BFD目的:双向转发检测机制是一套全网统一的检测机制,用于快速检测,监控网络中链路或者IP路由的转发连通状况。2.BFD作用: 改善网络性能,是相邻系统之间快速检测到通信故障,更快的建立起备用通道恢复通信。
(二)BFD工作原理
1. 建立会话:
两端建立BFD的检测会话,互相发送类似“hello”包的BFD检测包 ,通过BFD控制报文中的本地标识符合远端标识符来区分不同的BFD会话。 (1)静态会话:手动配置BFD会话参数(手动指定标识符和远端标识符 1-8191,0保留作为动态BFD协商时使用),手动下发BFD会话建立请求。
- 开启BFD会话
- 创建BFD会话名称
- 指定检测源检测端地址
- 指定本地和远端的BFD会话标识符
- 激活/下发BFD会话
(2)动态会话:
动态BFD联动由各种路由协议(如RIP,OSPF)触发,在建立BFD会话时系统对本地标识符合远端标识符分别采用如下处理
- 动态分配本地标识符;
- 动态学习远端标识符。
1-----开启BFD会话
2-----开启与应用协议的BFD联动(自动创建BFD会话,BFD会话源目的,动态下发本地标识符,动态学习对端标识符)
2. 检验方式:
(1)异步模式:系统之间互相周期性的发送BFD控制包,如果在某个系统检测时间内没有收到对端的BFD控制包,就判断会话down,告知联动应用执行相应策略动作。(2)查询模式:每个系统都有一个独立的方法用来确认它所连接的系统,一旦一个会话建立后,系统停止发送控制报文,只有在需要显示地验证连接性,发送一个短系列的控制包,再检测时间内没有收到返回的报文就宣布会话为down。(3)回声模式:本地发送一系列回声报文,远端系统正常情况下会将这些控制报文环回回来。如果联系几个回合或者时间内都没有收到回声报文,判断检测端故障,告知本端联动应用执行相应策略动作。
3.会话状态:
Down,Init;Up;AdminDown
- Down:启动本地BFD会话,初始状态为Down;发送状态为Down的BFD报文
- Init :收到邻居端状态为Down的BFD报文后对邻居状态为Init;发送状态为Init的BFD报文
- Up :收到邻居端状态为Init的BFD报文后对邻居状态为Up;本端对邻居的会话建立完毕。
- AdminDown:
1)故障发生被检测到后,最先感知到故障端会发送状态为AdminDown的BFD报文;2)对端收到这个报文后会发状态为Down的BFD报文,同时关闭自己的的BFD会话,告知联动的上层应用执行动作 3)源端收到对端状态为Down的BFD报文后,关闭本端的BFD会话告知联动的上层应用执行动作 。
(三)BFD特点:
- BFD能够在系统之间的任何类型通道上进行故障检测,这些通道包括(直连物理链路;虚电路;隧道;MPLS LSP ;多跳路由通道)
- BFD通过在双向链路两端同时发送检测报文,检测两个方向上的链路状态,实现毫秒级别的链路故障检测。
- BFD可以实现单跳(直连两路IP连通性)或者多跳(非直连,在IP需要跨多跳)检测。
(四)BFD与应用联动
- 支持所有路由协议的动态BFD联动(RIP;OSPF;IS-IS;BGP;)实现链路故障时路由的快速收敛,
- 支持静态路由;MPLS LDP;组播等协议于BFD的联动
- 支持与VRRP;接口状态的BFD联动。
(五)静态BFD会话的特殊形式----单臂回声BFD
1.单臂回声BFD简介:
单臂回声功能是指通过BFD报文的环回操作来检测转发链路的联通性,主要针对对端系统不支持BFD会话的情景。
2.单臂回声特殊性:单臂回声功能只适用于BFD单跳检测,且不支持二层设备间的链路检测;即只能做直节连接链路的检测。
3.单臂回声BFD原理:
源端发起的BFD控制报文目的端收到后直接将网络层的报文环回
二、BFD配置
(一)静态BFD单跳检测配置
[AR-1] [AR-1]bfd --开启BFD会话 [AR-1-bfd]default-ip-address 224.0.0.184 --指定本BFD报文发往目的的组播地址(默认为224.0.0.184,范围为224.0.0.107--225.0.0.250;BFD会话两端必须一致) [AR-1-bfd]quit [AR-1]bfd AAA bind bind ldp-lsp------针对动态下发LSP的协议的ldp的BFD检测 bind mpls-te------针对MPL转发链路的BFD bind peer-ip-----指定BFD会话绑定的对端为IP地址 [AR-1]bfd AAA bind [AR-1]bfd AAA bind peer-ip 12.1.1.2 ? 12.1.1.2 interface-----检测对端地址12.1.1.2时使用指定本端源接口 12.1.1.2 source-ip-----检测对端地址1 2.1.1.2是指定本端的源IP地址 12.1.1.2 vpn-instance-----检测对端地址12.1.1.2时指定BFD绑定的VPN实例 [AR-1] [AR-1]bfd AAA bind peer-ip 12.1.1.2 interface G0/0/0 --创建名称为AAA的BFD检测会话,检测对端地址为12.1.1.2,使用本地接口G0/0/0作为BFD报文的源第和源地址 [AR-1-bfd-session-aaa]discriminator local 12 --指定本BFD会话本端标识符为12(取值范围1--8191) [AR-1-bfd-session-aaa]discriminator remote 21----指定本BFD会话对端BFD的标识符为21(取值范围1--8191) [AR-1-bfd-session-aaa]min-rx-interval 300 --设定本BFD会话接收BFD报文的间隔时间为300毫秒(默认1000毫秒,取值范围10---2000毫秒) [AR-1-bfd-session-aaa]min-tx-interval 300 --设定本BFD会话发送BFD的间隔时间为300毫秒(默认1000毫秒,取值范围10---2000毫秒) [AR-1-bfd-session-aaa]detect-multiplier 3 --设定本BFD会话超时次数为3次(默认3次,取值范围3--50次) [AR-1-bfd-session-aaa]commit --下发/激活本BFD会话
(二)静态BFD多跳检测配置
[AR-1]bfd CCC bind peer-ip 3.3.3.3 [AR-1-bfd-session-ccc]discriminator local 30 [AR-1-bfd-session-ccc]discriminator remote 10 [AR-1-bfd-session-ccc]min-rx-interval 300 [AR-1-bfd-session-ccc]min-tx-interval 300 [AR-1-bfd-session-ccc]detect-multiplier 3 [AR-1-bfd-session-ccc]commit [AR-1-bfd-session-ccc]quit [AR-1]
(三)静态BFD-----单臂回声BFD
[AR-1] [AR-1]bfd ZZZ bind peer-ip 12.1.1.2 interface G0/0/0 one-arm-echo [AR-1-bfd-session-zzz]discriminator local 100 [AR-1-bfd-session-zzz]min-echo-rx-interval 300 [AR-1-bfd-session-zzz]detect-multiplier 3 [AR-1-bfd-session-zzz]commit [AR-1-bfd-session-zzz]quit [AR-1] [AR-1]bfd VVV bind peer-ip 12.1.1.2 interface G0/0/1 source-ip 12.1.1.1 auto --配置静态标识符自协商BFD BFD的检测时间=接收到远端的Detect Multi * MAX =接收端的倍数 X 本端最短BFD报文的接收时间 [AR-1]dis bfd session all --查看本设备的所有BFD会话的状态 [AR-1]dis bfd interface G0/0/0 --查看配置了BFD会话下的接口信息 [AR-1]dis bfd statistics session --查看所有的BFD会话统计信息