6.8.3. Timer Manipulation (定时器操作)
用于确定 BFD 报文传输间隔和会话 Detection Time (检测时间) 的时间值可以随时修改,而不会影响会话的状态。当定时器参数因任何原因更改时,本节的要求适用。
如果 bfd.DesiredMinTxInterval 或 bfd.RequiredMinRxInterval 发生更改,则必须启动 Poll Sequence (轮询序列)(参见第 6.5 节)。如果接收 Poll Sequence 的系统希望更改本段描述的参数,则可以在设置了 Final (F) 位的报文中携带新的参数值,即使 Poll Sequence 尚未发送。
如果 bfd.DesiredMinTxInterval 增加且 bfd.SessionState 为 Up,则在上述 Poll Sequence 终止之前,使用的实际传输间隔不得更改。这是为了确保远程系统在传输间隔增加之前更新其 Detection Time。
如果 bfd.RequiredMinRxInterval 减少且 bfd.SessionState 为 Up,则在上述 Poll Sequence 终止之前,必须使用 bfd.RequiredMinRxInterval 的先前值来计算远程系统的 Detection Time。这是为了确保在 Detection Time 减少之前,远程系统正在以更高的速率传输报文(并且正在接收这些报文)。
当 bfd.SessionState 不是 Up 时,系统必须将 bfd.DesiredMinTxInterval 设置为不小于 1 秒(1,000,000 微秒)的值。这旨在确保未处于 Up 状态的 BFD 会话消耗的带宽可以忽略不计,特别是在邻居可能未运行 BFD 的情况下。
如果本地系统由于 bfd.RemoteMinRxInterval 减少(远程系统在 Required Min RX Interval 中发布了减少的值)而减少其传输间隔,并且远程系统不处于 Demand 模式,则本地系统必须立即遵守新间隔。换句话说,本地系统在上一次报文传输和下一次报文传输之间等待的时间不能超过新间隔。如果自上次传输以来该间隔已经过去(因为新间隔明显更短),则本地系统必须尽快发送下一个周期性 BFD Control 报文。
当 Echo 功能激活时,系统应将 bfd.RequiredMinRxInterval 设置为不小于 1 秒(1,000,000 微秒)的值。这旨在将接收到的 BFD Control 流量保持在可忽略不计的水平,因为实际的检测功能是使用 BFD Echo 报文执行的。
在除上述明确指出的情况外的任何其他情况下,定时参数更改必须立即生效(更改传输速率和/或 Detection Time)。
请注意,如果进行了多个需要使用 Poll Sequence 的参数更改,并且这些多个更改分布在多个报文中,则 Poll Sequence 机制是不明确的(因为返回的 Final 的语义不清楚)。因此,如果进行了需要使用 Poll Sequence 的多个更改,则有三个选择:
- 它们必须在单个 BFD Control 报文中传达(这样 Final 回复的语义就很清楚),或
- 自 Poll Sequence 完成以来必须经过足够的时间来消除歧义(至少自上次发送 Poll 以来的往返时间),然后再启动另一个 Poll Sequence,或
- 在 Poll Sequence 完成后,在启动另一个 Poll Sequence 之前,必须接收到一个 Final (F) 位清除的额外 BFD Control 报文(当 Demand 模式激活时,此选项不可用)。