跳到主要内容

6.8.6. Reception of BFD Control Packets (接收 BFD 控制包)

6.8.6. Reception of BFD Control Packets (接收 BFD 控制包)

当接收到 BFD 控制包时, 必须按照指定的顺序遵循以下过程。如果根据这些规则丢弃数据包, 则必须在该点停止处理数据包。

如果版本号不正确 (1), 则必须丢弃数据包。

如果 Length 字段小于最小正确值 (如果 A 位清除则为 24, 如果 A 位设置则为 26), 则必须丢弃数据包。

如果 Length 字段大于封装协议的有效载荷, 则必须丢弃数据包。

如果 Detect Mult 字段为零, 则必须丢弃数据包。

如果 Multipoint (M) 位非零, 则必须丢弃数据包。

如果 My Discriminator 字段为零, 则必须丢弃数据包。

如果 Your Discriminator 字段非零, 则必须使用它来选择与此 BFD 数据包关联的会话。如果未找到会话, 则必须丢弃数据包。

如果 Your Discriminator 字段为零并且 State 字段不是 Down 或 AdminDown, 则必须丢弃数据包。

如果 Your Discriminator 字段为零, 则必须根据其他字段的某种组合来选择会话, 可能包括源地址信息, My Discriminator 字段, 以及接收数据包的接口。确切的选择方法是应用特定的, 因此超出了本规范的范围。如果未找到匹配的会话, 则可以创建新会话, 或者可以丢弃数据包。此选择超出了本规范的范围。

如果设置了 A 位并且没有使用认证 (bfd.AuthType 为零), 则必须丢弃数据包。

如果清除了 A 位并且正在使用认证 (bfd.AuthType 非零), 则必须丢弃数据包。

如果设置了 A 位, 则必须根据第 6.7 节的规则, 基于正在使用的认证类型 (bfd.AuthType) 对数据包进行认证。这可能导致数据包被丢弃。

将 bfd.RemoteDiscr 设置为 My Discriminator 的值。

将 bfd.RemoteState 设置为 State (Sta) 字段的值。

将 bfd.RemoteDemandMode 设置为 Demand (D) 位的值。

将 bfd.RemoteMinRxInterval 设置为 Required Min RX Interval 的值。

如果 Required Min Echo RX Interval 字段为零, 则必须停止传输回显包 (如果有)。

如果本地系统正在传输轮询序列并且接收到的数据包中设置了 Final (F) 位, 则必须终止轮询序列。

按第 6.8.2 节中的描述更新传输间隔。

按第 6.8.4 节中的描述更新检测时间。

如果 bfd.SessionState 为 AdminDown

丢弃数据包

如果接收到的 state 为 AdminDown

如果 bfd.SessionState 不是 Down

将 bfd.LocalDiag 设置为 3 (邻居发出会话关闭信号, Neighbor signaled session down)

将 bfd.SessionState 设置为 Down

否则

如果 bfd.SessionState 为 Down

如果接收到的 State 为 Down

将 bfd.SessionState 设置为 Init

否则如果接收到的 State 为 Init

将 bfd.SessionState 设置为 Up

否则如果 bfd.SessionState 为 Init

如果接收到的 State 为 Init 或 Up

将 bfd.SessionState 设置为 Up

否则 (bfd.SessionState 为 Up)

如果接收到的 State 为 Down

将 bfd.LocalDiag 设置为 3 (邻居发出会话关闭信号)

将 bfd.SessionState 设置为 Down

检查是否应激活按需模式 (参见第 6.6 节)。

如果 bfd.RemoteDemandMode 为 1, bfd.SessionState 为 Up, 并且 bfd.RemoteSessionState 为 Up, 则远程系统上激活按需模式, 并且本地系统必须停止 BFD 控制包的周期性传输 (参见第 6.8.7 节)。

如果 bfd.RemoteDemandMode 为 0, 或 bfd.SessionState 不是 Up, 或 bfd.RemoteSessionState 不是 Up, 则远程系统上未激活按需模式, 并且本地系统必须发送周期性 BFD 控制包 (参见第 6.8.7 节)。

如果设置了 Poll (P) 位, 则向远程系统发送清除 Poll (P) 位并设置 Final (F) 位的 BFD 控制包 (参见第 6.8.7 节)。

如果数据包未被丢弃, 则就第 6.8.4 节中的检测时间到期规则而言, 它已被接收。