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