Skip to main content

6.8.7. Transmitting BFD Control Packets (发送 BFD Control 报文)

传输间隔规则

除本节其余部分列出的例外情况外,系统不得以小于 bfd.DesiredMinTxInterval 和 bfd.RemoteMinRxInterval 中较大值减去应用的抖动(见下文)的间隔传输 BFD Control 报文。换句话说,报告较慢速率的系统决定传输速率。

抖动要求

BFD Control 报文的周期性传输必须在每个报文的基础上进行最多 25% 的抖动,即间隔必须减少 0 到 25% 的随机值,以避免与同一子网上的其他系统自同步。因此,报文之间的平均间隔将比协商的间隔少大约 12.5%。

如果 bfd.DetectMult 等于 1,则传输的 BFD Control 报文之间的间隔不得超过协商传输间隔的 90%,并且不得少于协商传输间隔的 75%。这是为了确保在远程系统上,计算的 Detection Time 在收到下一个 BFD Control 报文之前不会过去。

传输间隔重新计算

每当 bfd.DesiredMinTxInterval 更改或 bfd.RemoteMinRxInterval 更改时,必须重新计算传输间隔,并且等于这两个值中的较大值。有关传输定时器的详细信息,请参见第 6.8.2 节和第 6.8.3 节。

传输限制条件

系统不得在 bfd.RemoteDiscr 为零且系统采用 Passive 角色时传输 BFD Control 报文。

如果 bfd.RemoteMinRxInterval 为零,系统不得周期性地传输 BFD Control 报文。

如果 Demand 模式在远程系统上激活(bfd.RemoteDemandMode 为 1、bfd.SessionState 为 Up 并且 bfd.RemoteSessionState 为 Up)并且未传输 Poll Sequence,则系统不得周期性地传输 BFD Control 报文。

Poll 位响应

如果接收到设置了 Poll (P) 位为 1 的 BFD Control 报文,则接收系统必须尽快传输一个清除了 Poll (P) 位并设置了 Final (F) 位的 BFD Control 报文,而不考虑传输定时器或任何其他传输限制,不考虑会话状态,也不考虑任一系统上是否激活了 Demand 模式。系统可以限制此类报文的传输速率。如果速率限制生效,则 Desired Min TX Interval 的通告值必须大于或等于由速率限制功能施加的传输报文之间的间隔。

Demand 位设置规则

除非 bfd.DemandMode 为 1、bfd.SessionState 为 Up 并且 bfd.RemoteSessionState 为 Up,否则系统不得设置 Demand (D) 位。

额外传输建议

当周期性 Control 报文传输之间的间隔内要传输的报文的内容与先前传输的报文中的内容不同时(除了 Poll 和 Final 位之外),应传输 BFD Control 报文,以便更快速地传达状态更改。

BFD Control 报文内容

传输的 BFD Control 报文的内容必须按如下方式设置:

Version (版本):

设置为当前版本号(1)。

Diagnostic (Diag) (诊断):

设置为 bfd.LocalDiag。

State (Sta) (状态):

设置为 bfd.SessionState 指示的值。

Poll (P) (轮询):

如果本地系统正在发送 Poll Sequence,则设置为 1,否则设置为 0。

Final (F) (最终):

如果本地系统正在响应接收到的设置了 Poll (P) 位的 Control 报文,则设置为 1,否则设置为 0。

Control Plane Independent (C) (控制平面独立):

如果本地系统的 BFD 实现独立于控制平面(它可以在控制平面中断的情况下继续运行),则设置为 1。

Authentication Present (A) (认证存在):

如果此会话正在使用认证(bfd.AuthType 非零),则设置为 1,否则设置为 0。

Demand (D) (按需):

如果 bfd.SessionState 为 Up 并且 bfd.RemoteSessionState 为 Up,则设置为 bfd.DemandMode。否则,设置为 0。

Multipoint (M) (多点):

设置为 0。

Detect Mult (检测倍数):

设置为 bfd.DetectMult。

Length (长度):

根据固定头长度(24)加上任何 Authentication Section 设置为适当的长度。

My Discriminator (我的鉴别符):

设置为 bfd.LocalDiscr。

Your Discriminator (你的鉴别符):

设置为 bfd.RemoteDiscr。

Desired Min TX Interval (期望最小 TX 间隔):

设置为 bfd.DesiredMinTxInterval。

Required Min RX Interval (所需最小 RX 间隔):

设置为 bfd.RequiredMinRxInterval。

Required Min Echo RX Interval (所需最小 Echo RX 间隔):

设置为此会话所需的最小 Echo 报文接收间隔。如果此字段设置为零,则本地系统不愿意或无法将 BFD Echo 报文回送到远程系统,并且远程系统将不会发送 Echo 报文。

Authentication Section (认证部分):

如果正在使用认证(bfd.AuthType 非零),则根据第 6.7 节中的规则包含并设置。否则,此部分不存在。