6.8.7. Transmitting BFD Control Packets (BFD制御パケットの送信)
6.8.7. Transmitting BFD Control Packets (BFD制御パケットの送信)
このセクションの残りの部分にリストされている例外を除いて, システムは bfd.DesiredMinTxInterval と bfd.RemoteMinRxInterval のうち大きい方の値から適用されるジッタを引いた値 (以下参照) よりも短い間隔で BFD Control パケットを送信してはなりません (MUST NOT)。言い換えれば, より遅いレートを報告するシステムが送信レートを決定します。
BFD Control パケットの定期送信は, パケットごとに最大25%までジッタを加えなければなりません (MUST)。つまり, 同じサブネットワーク上の他のシステムとの自己同期を避けるために, 間隔は0から25%のランダムな値だけ減少されなければなりません (MUST)。したがって, パケット間の平均間隔は, ネゴシエートされた値よりも約12.5%短くなります。
bfd.DetectMult が 1 に等しい場合, 送信される BFD Control パケット間の間隔は, ネゴシエートされた送信間隔の90%以下でなければならず (MUST), ネゴシエートされた送信間隔の75%以上でなければなりません (MUST)。これは, リモートシステムで計算された検出時間が次の BFD Control パケットの受信前に経過しないことを保証するためです。
送信間隔は, bfd.DesiredMinTxInterval が変更されるか, bfd.RemoteMinRxInterval が変更されるたびに再計算されなければならず (MUST), これら2つの値のうち大きい方に等しくなります。送信タイマーの詳細については, セクション 6.8.2 および 6.8.3 を参照してください。
システムは, bfd.RemoteDiscr がゼロで, システムが Passive role を取っている場合, BFD Control パケットを送信してはなりません (MUST NOT)。
システムは, bfd.RemoteMinRxInterval がゼロの場合, 定期的に BFD Control パケットを送信してはなりません (MUST NOT)。
システムは, リモートシステムで Demand mode がアクティブ (bfd.RemoteDemandMode が 1, bfd.SessionState が Up, bfd.RemoteSessionState が Up) で, Poll Sequence が送信されていない場合, 定期的に BFD Control パケットを送信してはなりません (MUST NOT)。
Poll (P) ビットが 1 に設定された BFD Control パケットが受信された場合, 受信システムは送信タイマー, その他の送信制限, セッション状態, およびどちらのシステムで Demand mode がアクティブであるかに関係なく, 実行可能な限り早く Poll (P) ビットをクリアし Final (F) ビットをセットした BFD Control パケットを送信しなければなりません (MUST)。システムは, このようなパケットが送信されるレートを制限してもかまいません (MAY)。レート制限が有効な場合, Desired Min TX Interval のアドバタイズされた値は, レート制限機能によって課される送信パケット間の間隔以上でなければなりません (MUST)。
システムは, bfd.DemandMode が 1, bfd.SessionState が Up, bfd.RemoteSessionState が Up でない限り, Demand (D) ビットを設定してはなりません (MUST NOT)。
以前に送信されたパケット (Poll と Final ビットを除く) とは異なる内容を持つパケットが定期的な Control パケット送信間の間隔中に送信されるべきです (SHOULD)。これにより, 状態変更をより迅速に通信できます。
送信される BFD Control パケットの内容は以下のように設定されなければなりません (MUST):
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
bfd.DesiredMinTxInterval に設定します。
Required Min RX Interval
bfd.RequiredMinRxInterval に設定します。
Required Min Echo RX Interval
このセッションの最小必要 Echo パケット受信間隔に設定します。このフィールドがゼロに設定されている場合, ローカルシステムは BFD Echo パケットをリモートシステムにループバックすることを望まないか不可能であり, リモートシステムは Echo パケットを送信しません。
Authentication Section
認証が使用されている (bfd.AuthType が非ゼロ) 場合, セクション 6.7 のルールに従って含まれ設定されます。それ以外の場合, このセクションは存在しません。