跳到主要内容

6.2. BFD State Machine (BFD 状态机)

6.2. BFD State Machine (BFD 状态机)

BFD 状态机非常简单。会话通常通过三个状态进行: 两个用于建立会话 (Init 和 Up) 和一个用于拆除会话 (Down)。这允许会话建立和会话拆除的三次握手 (确保两个系统都知道所有会话状态变化)。存在第四个状态 (AdminDown), 以便可以无限期地管理性地关闭会话。

每个系统在 BFD 控制包的 State (Sta) 字段中通信其会话状态, 并且接收到的状态与本地会话状态的组合驱动状态机。

Down 状态意味着会话已关闭 (或刚刚创建)。会话保持在 Down 状态, 直到远程系统通过发送 State 字段设置为除 Up 之外的任何值的 BFD 控制包来表示它同意会话已关闭。如果该数据包发出 Down 状态信号, 则会话前进到 Init 状态; 如果该数据包发出 Init 状态信号, 则会话前进到 Up 状态。从语义上讲, Down 状态表示转发路径不可用, 并且监视 BFD 会话状态的应用应采取适当的操作。系统可以无限期地将会话保持在 Down 状态 (通过简单地拒绝推进会话状态)。这可能出于操作或管理原因等而这样做。

Init 状态意味着远程系统正在通信, 并且本地系统希望启动会话, 但远程系统尚未意识到这一点。会话将保持在 Init 状态, 直到接收到发出 Init 或 Up 状态信号的 BFD 控制包 (在这种情况下会话前进到 Up 状态) 或检测时间到期, 这意味着与远程系统的通信已丢失 (在这种情况下会话前进到 Down 状态)。

Up 状态意味着 BFD 会话已成功建立, 并暗示系统之间的连接正在工作。会话将保持在 Up 状态, 直到连接失败或会话被管理性关闭。如果远程系统发出 Down 状态信号或检测时间到期, 则会话前进到 Down 状态。

AdminDown 状态意味着会话被管理性关闭。这导致远程系统进入 Down 状态, 并保持在那里直到本地系统退出 AdminDown 状态。AdminDown 状态对转发路径的可用性没有语义含义。

以下图表提供了状态机的概述。涉及 AdminDown 状态的转换为清楚起见被删除 (但在第 6.8.6 和 6.8.16 节中完全指定)。每个弧上的符号表示远程系统的状态 (如在 BFD 控制包的 State 字段中接收到的) 或指示检测定时器的到期。

                        +--+
| | UP, ADMIN DOWN, TIMER
| V
DOWN +------+ INIT
+------------| |------------+
| | DOWN | |
| +-------->| |<--------+ |
| | +------+ | |
| | | |
| | ADMIN DOWN,| |
| |ADMIN DOWN, DOWN,| |
| |TIMER TIMER| |
V | | V
+------+ +------+
+----| | | |----+
DOWN| | INIT |--------------------->| UP | |INIT, UP
+--->| | INIT, UP | |<---+
+------+ +------+