A007 - 基础 - BFD

路由失效的前提是下一跳不可达,所以路由经过迭代后,最终的依据是直连路由的状态,而只要端口是 up 的,直连路由即存在,但端口 up 并不意味着三层通讯状态正常。

一. 概述

BFD 是一个简单的 Hello 协议,两个系统间建立 BFD 会话通道,通过周期性的检测报文,检测系统间三层通讯的状态:

  1. BFD 提供了一种通用的、标准化的、介质无关和协议无关的三层故障快速检测机制;
  2. BFD 常用于加速上层协议的故障收敛,或为无检测机制的协议提供检测支持,比如静态路由;
  3. 通常在同一条三层链路上,只能建立一个 BFD 会话,但这个会话可以由多个上层协议同时调用。

二. 原理

2.1 包的组成

  1. sta:BFD 的本地状态 down/init/up;
  2. Detect Mult: 检测超时倍数;
  3. My discriminator: 本地标识符,用于区分一个系统的多个 BFD 会话;
  4. Your discriminator: 远端标识符,用于一个 BFD 进程确定远端 BFD 进程是否合法,可动态或静态配置;
  5. Desired Min TX interval: 期望的发送间隔 ms;
  6. Required Min RX interval: 支持的最小接收间隔 ms;
  7. Required Min Echo RX Interval: 支持的最小的 echo 请求报文的接收间隔 ms,为 0 则表示不支持查询模式;

2.2 工作过程

2.2.1 会话建立
  1. 静态方式: 手工指定 BFD 会话参数,主要是本地和远端标识符,也可以指定时间相关的参数;
  2. 动态方式: 本地动态生成本地标识符,从远端学习远端标识符;
2.2.2 超时时间

超时时间 = Detect Mult * 周期

超时时间的计算依据检测机制的不同,共分为三种:

  1. 异步模式 - 本端按照一定周期发送报文,检测位置在对端:
周期协商: (思路: 要综合两端的发送能力和接收能力,选个下限,即更大的间隔)
	本端发送周期: 从本端的 Desired Min TX interval 和远端的 Required Min RX interval 中选个大的;
	本端接收周期: 从本端的 Required Min RX interval 和远端的 Desired Min TX interval 中选个大的;
Detect Mult 选择: (思路: 谁触发的会话用谁)(本端发送-对端接收): 用本端的 Detect Mult;
	流(本端接收-对端发送): 用对端的 Detect Mult;
  1. 查询模式(很少使用,可能不在被支持) - 本端按照一定周期发送报文,对端收到报文后直接回复,检测位置在本端:
周期协商: (思路: 要综合两端的发送能力和接收能力,选个下限,即更大的间隔)
	本端发送周期: 从本端的 Desired Min TX interval 和远端的 Required Min Echo RX Interval 中选个大的;
Detect Mult 选择: (思路: 谁触发的会话用谁)
	本端单侧查询模式: 用本端的 Detect Mult;
  1. 单臂模式 - 本端按照一定周期发送源目IP/discriminator 均为自身的BFD报文,对端不起 BFD 进程,直接将该包发回;
周期协商: (思路: 要综合两端的发送能力和接收能力,选个下限,即更大的间隔)
	本端发送周期: 从本端的 Desired Min TX interval 和本端的 Required Min RX interval中选个大的;
Detect Mult 选择: (思路: 谁触发的会话用谁)
	本端单臂模式: 用本端的 Detect Mult;
2.2.3 状态迁移
  1. down 时: 会话未建立,BFD 处于异常状态
    • 收到对端 sta = down 报文进入 init 状态,并发送 sta = init 报文;
    • 收到对端 sta = init 报文进入 up 状态,并发送 sta = up 报文;
    • 收到对端 sta = up 报文时保持 down 状态不变。
  2. init 时: 会话正在建立,BFD 处于异常状态
    • 收到对端 sta = init/up 报文进入 up 状态, 否则超时时间到了后进入 down 状态;
  3. up 状态: 会话稳定态, BFD 处于正常状态
    • 收到对端 sta = down 报文或超时时间内未收到报文,进入 down 状态;

还有一个状态机: 管理 down 状态 - 手工 shutdown 了 bfd 会话,就会处于这个状态。

三. 使用

3.1 配置

# 创建会话并进入视图
bfd session-name bind peer-ip ip-address [ vpn-instance vpn-name ] interface interface-type interface-number [ source-ip ip-address ][auto]
# 是否为单臂模式 
one-arm-echo
# 配置本地和远端标识符
discriminator local/remote discr-value
# 查看命令 
display bfd session all verbose

3.2 应用

  1. BFD 与 track 模块联动: …
  2. BFD 与 静态路由联动:…
  3. BFD 与 OSPF 联动:…
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值