BFD Echo功能
BFD Echo即回声功能,是由本地发送BFD Echo报文,远端系统将报文环回的一种检测机制。本节将分为被动Echo和单臂Echo功能分别进行介绍,因为这两种Echo功能虽然检测机制一样,但是适用的场景不同。最后对两种Echo功能的相同和不同点进行了罗列,供用户更好的理解Echo功能。
被动Echo功能
NE40E支持BFD被动Echo功能,以实现与其他厂商设备互通。
被动Echo功能只适用于单跳IP链路的场景,并且必须与异步模式配合使用,BFD会话在异步Echo模式下,一边以异步模式进行慢检测,一边以Echo模式进行快检测。
如图2-9所示,DeviceA与DeviceB直连,且已经建立了异步模式的BFD会话,在DeviceB上使能主动Echo功能,DeviceA上使能被动Echo功能后,两台设备会进入异步Echo模式,向对端分别发送单跳检测报文和Echo检测报文。
假设,DeviceA的BFD能力较强,DeviceB的BFD能力较弱(例如DeviceA支持的BFD报文最小接收时间间隔为3ms,DeviceB支持的最小接收时间间隔为100ms),异步模式下BFD只能采用较弱端的检测时间间隔。而使能了Echo功能后,DeviceA可以通过Echo报文实现链路快速检测;当BFD Echo功能失效时,两端仍然可以通过异步报文检测链路,只是此时的检测能力只能达到能力较弱一端的水平。
以图2-9场景为例,BFD被动Echo会话的建立过程如下:
- DeviceB作为会话的主动发起端,向DeviceA发送一个BFD异步报文,报文中的Required Min Echo RX Interval字段非零,表示要求对端支持BFD Echo功能。
- DeviceA收到BFD异步报文后,发现报文的Required Min Echo RX Interval字段非零,如果本端使能了被动Echo功能,检查是否引用了ACL对被动Echo功能进行限制。如果引用了ACL,则只有满足特定条件的会话才能进入异步Echo模式;否则直接进入异步Echo模式。
- DeviceB以一定的周期发送Echo检测报文,DeviceA以本端Rx为周期发送BFD Echo检测报文(源和目的地址是本机IP地址,目的物理地址是对端设备物理地址),两端分别启动接收定时器,接收周期与各自的发送周期一致。
- 两台设备收到对端的BFD Echo检测报文后,立即在转发层面进行报文环回。同时,两台设备还会向对方发送异步检测报文,异步报文的发送周期远小于Echo检测报文的发送周期。
单臂Echo功能
单臂Echo功能也只适用于单跳IP链路的场景,但是一般用于两台直接相连的设备中,其中一台设备支持BFD功能,另一台设备不支持BFD功能的情况下。通过在支持BFD功能的设备上创建单臂Echo功能的BFD会话,不支持BFD功能的设备接收到该BFD报文后,直接将该报文环回,从而达到快速检测链路的目的。
单臂Echo不需要双方协商Echo能力,一端配置BFD检测,另一端无需有BFD能力,使能单臂Echo的设备发送特殊的BFD报文(IP头中的源和目的IP都是本端设备的IP地址,BFD净荷中的MD和YD相同),对端收到后直接环回到本端,以此判断链路是否正常,对低端设备就有很强的适应能力。
被动Echo和单臂Echo的相同和不同点
被动Echo和单臂Echo使用时都有如下限制:BFD Echo报文的发送端不可以使能严格模式的URPF,否则会导致BFD Echo功能失效。
在严格模式下,URPF会通过获取报文的源地址和入接口,在转发表中查找以源地址为目的地址的表项,检查该表项对应的出接口是否与入接口匹配,如果不匹配,则认为源地址是非法的,直接丢弃该报文。通过这种方式,URPF能够有效地防范网络中通过修改报文源IP地址而进行恶意攻击。BFD Echo报文的发送端收到环回的报文后,若启动了严格模式的URPF,则会进行报文源地址检查,此时由于源地址为发送端IP地址,其传递的路径是向本机上层传递而非接口,URPF会认为是欺骗报文,将丢弃之。
BFD会话 |
支持的IP类型 |
会话类型 |
描述符 |
协商前提 |
报文IP头 |
---|---|---|---|---|---|
普通静态单跳会话 |
IPv4和IPv6 |
静态单跳会话 |
需要配置MD和YD |
需要对端存在匹配会话 |
源和目的IP地址不同 |
BFD被动Echo会话 |
IPv4和IPv6 |
动态单跳会话 |
不需要配置MD和YD |
需要对端存在匹配会话且使能echo功能 |
源和目的IP地址相同且为本机IP地址 |
BFD单臂Echo会话 |
IPv4 |
静态单跳会话 |
只需要配置MD(MD和YD相同) |
不需要对端有匹配会话 |
源和目的IP地址相同且为本机IP地址 |