6.8.4. Calculating the Detection Time (検出時間の計算)
6.8.4. Calculating the Detection Time (検出時間の計算)
検出時間 (BFD パケットを受信せずにセッションが失敗したと判断される期間) は, プロトコルで明示的に運ばれません。むしろ, ネゴシエートされた送信間隔と検出乗数に基づいて, 各方向で受信システムによって独立して計算されます。各方向で異なる検出時間が存在する可能性があることに注意してください。
検出時間の計算は, Demand mode と Asynchronous mode では若干異なります。
Asynchronous mode では, ローカルシステムで計算される検出時間は, リモートシステムから受信した Detect Mult の値に, リモートシステムの合意された送信間隔 (bfd.RequiredMinRxInterval と最後に受信した Desired Min TX Interval のうち大きい方) を掛けたものに等しくなります。Detect Mult 値は (ジッタのために大まかに言えば), セッションがダウンしていると宣言するために連続して失われる必要があるパケットの数です。
Demand mode がアクティブでなく, 検出時間に等しい期間がリモートシステムから BFD Control パケットを受信せずに経過し, bfd.SessionState が Init または Up の場合, セッションはダウンしています。ローカルシステムは bfd.SessionState を Down に設定し (MUST), bfd.LocalDiag を 1 (Control Detection Time Expired) に設定しなければなりません (MUST)。
Demand mode では, ローカルシステムで計算される検出時間は, bfd.DetectMult に, ローカルシステムの合意された送信間隔 (bfd.DesiredMinTxInterval と bfd.RemoteMinRxInterval のうち大きい方) を掛けたものに等しくなります。bfd.DetectMult は (ジッタのために大まかに言えば), セッションがダウンしていると宣言するために連続して失われる必要があるパケットの数です。
Demand mode がアクティブで, Poll Sequence の開始 (Poll ビットがセットされた最初の BFD Control パケットの送信) 後に検出時間に等しい期間が経過した場合, セッションはダウンしています。ローカルシステムは bfd.SessionState を Down に設定し (MUST), bfd.LocalDiag を 1 (Control Detection Time Expired) に設定しなければなりません (MUST)。
(パケットは, 検出時間の期限切れの目的で受信されたと見なされるのは, セクション 6.8.6 のルールに従って "破棄" されていない場合のみであることに注意してください)。