2. Design (设计)
2. Design (设计)
BFD 被设计用于检测与转发平面下一跳的通信故障。它旨在在系统转发引擎的某个组件中实现, 在转发引擎和控制引擎分离的情况下。这不仅将协议更紧密地绑定到转发平面, 而且将协议与路由协议引擎的命运解耦, 使其在与这些协议的各种 "优雅重启 (graceful restart)" 机制配合使用时非常有用。BFD 也可以在控制引擎中实现, 尽管这样做可能会排除某些类型故障的检测。
BFD 在两个系统之间转发的任何数据协议 (网络层, 链路层, 隧道等) 之上运行。它始终以单播, 点对点模式运行。BFD 数据包作为适合媒体和网络的任何封装协议的有效载荷传输。BFD 可能在系统的多个层运行。任何特定 BFD 会话的操作上下文绑定到其封装。
BFD 可以在系统之间的任何类型的路径上提供故障检测, 包括直接物理链路, 虚拟电路, 隧道, MPLS 标签交换路径 (LSP, Label Switched Path), 多跳路由路径, 以及单向链路 (当然, 只要存在某种返回路径)。当多条路径在至少一个方向上存在时, 即使在另一个方向上可用的路径数量较少 (例如, 多个并行单向链路或 MPLS LSP), 也可以在同一对系统之间建立多个 BFD 会话。
BFD 状态机实现三次握手, 无论是在建立 BFD 会话时还是因任何原因拆除会话时, 以确保两个系统都知道状态变化。
BFD 可以被抽象为一个简单的服务。BFD 提供的服务原语是创建, 销毁和修改会话, 给定目标地址和其他参数。BFD 反过来向其客户端提供一个信号, 指示 BFD 会话何时启动或关闭。