Multipoint BFD(M-BFD)

2021-04-28 10:27:37 2454

一、概述    

M-BFD是在最新的RFC8562(Bidirectional Forwarding Detection (BFD) for Multipoint Networks,2019年4月Release)中定义,针对多点或组播网络中的一种特殊应用,它和传统BFD的双向检测是有“冲突”的,因为多点传输本质上是单向的,仅仅是为了验证单向连接的连通性,在RFC8562中定义了两种角色:Head和Tail,对于BFD报文,Head端上的MEP只发不收,而Tail端的MEP只收不发,协议的本质是只为了检测Head–>Tail的单向的连通性,如下图所示,BFD的报文只会从Head发向Tail,只在Tail检测Head到Tail的连通性,Head不需要知道Tail是否丢失。


1.jpg


 Head端MEP不运行状态机,它的状态依靠管理员配置维护,只有Up一种状态,用户可通过BFD报文通告远端Tail本地状Up,Down,AdminDown;而Tail状态机相对RFC5880也较为简单,没有INIT状态,只有Down、UP两种状态,其状态机如下:


2.png


在时间协商方面,其原理和RFC5880定义的基本是一样的,在Head端由于只发不收故本地RequiredMinRxInterval = 0,DesiredMinTxInterval !=0为期望发送报文间隔,而Tail只收不发故本RequiredMinRxInterval != 0为期望接收间隔,DesiredMinTxInterval ==0;当Head期望发送的时间间隔发生变化,也会发P请求修改,Tail端不需要回F,直接修改ActualRxInterval= DesiredMinTxInterval

(报文),而在故障检测方面,Tail端的故障检测时间DetecTime = ActualRxInterval  * DetectMult(报文),每当收到BFD控制报文时,就会重置检测时间DetecTime ,并保持会话UP状态。如果在检测时间内没有收到BFD控制报文,即DetecTime减为0时,BFD会话会迁移到DOWN状态,并产生dLoc,通知该会话所服务的上层应用发生故障,由上层应用采取相应的保护措施。

二、RFC8563

RFC8563(Bidirectional Forwarding Detection (BFD) Multipoint Active Tails,2019年4月Release)是对RFC8562的一个补充,在某些特定的应用中,Head可能需要获取各个Tail的连接情况而引入的标准,总共有三种方法:

Tail当检测到fail时,主动发送单播BFD给Client告知;

 Head 偶尔发送Poll(仍为组播)查询所有Tail,Tail回复单播Final告知;

 Client主动发送Poll到Tail(单播)查询指定Tail状态,Tail回复单播Final告知。

在RFC8563中对Head定义了两个角色MultipointClient和MultipointHead,MultipointHead承担head公共的一个角色,它承担向Tail发送定时发送BFD Hello报文,同时也可以按需发送Multipoint Poll sequence的报文,对接收到的BFD根据YourDisc查到得到LMEP,其LMEP配置的角色是MultipointHead,然后根据BFD中携带的MYDisc查找得到RMEP,其RMEP配置的角色为MultipointClient。为了查询远端Tail的状态,在RFC8563中可通过MultipointHead发送P轮询(组播)远端Tail的状态,远端Tail收到P之后会将P清为0 ,F置为1,并通过反向路径进行回复;如果Client需要单独查询远端某个Tail信息时,可发送单播BFD 置P为1查询对应的远端Tail,远端Tail收到P之后会将P清为0 ,F置为1,并通过反向路径进行回复。


3.png


1.状态机

Head或Client同样没有状态机的概念,Tail的状态机同RFC8562。

2. 时间协商

Tail端的故障检测和RFC5862是一样的;而Head或Client端只是为了查询状态,也不需要时间协

商。

3. 故障检测

a.Tail故障检测

Tail端的故障检测和RFC8562是一样的。

b.Client故障检测

当Client发送P包是目的是对某个Tail查询状态,其DetectTime = bfd.detectMult * actualTxInterval;而当Head统一向所有Tail发送P时,Client上DetectTime 大于或等bfd.RequiredMinRxInteral时间,或者远大于这个时间,以保证报文能走一圈的时间;但是如果detecTime超时后没有收到回复,只表示本次查询失败,不代表Tail没有收到Head的报文。所以对于Client端MEP而言,不存在故障检测一说,它只是作为Client会记录或查询远端Tail的状态信息。

三、应用

如下是华为NE40交换机中部署BFD for组播VPLS可以对组播VPLS链路进行检测的一种典型应用,当链路或中间节点故障时,叶子节点上BFD能够快速感知,并触发保护组切换到备份组播隧道上接收流量,从而满足用户对于组播业务的可靠性需求。


4.jpg


如上图所示,当链路1(AC链路)发生故障时,根节点上BFD感知到接口Down,立即停止发送BFD报文,所有叶子节点收不到BFD报文上报Down,触发保护组切换到备份组播隧道上接收流量;当节点2、链路3、节点4、链路5故障时,叶子节点收不到BFD报文上报Down,触发保护组切换到备份组播隧道上接收流量。故障恢复后,BFD重新建立,叶子节点感知故障恢复后,回切到主路径接收组播数据。



提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: