6.8.6. Reception of BFD Control Packets (BFD制御パケットの受信)
6.8.6. Reception of BFD Control Packets (BFD制御パケットの受信)
BFD Control パケットが受信されると, 以下の手順が指定された順序で実行されなければなりません (MUST)。これらのルールに従ってパケットが破棄された場合, パケットの処理はその時点で停止しなければなりません (MUST)。
-
バージョン番号が正しくない (1) 場合, パケットは破棄されなければなりません (MUST)。
-
Length フィールドが最小正値 (A ビットがクリアの場合は 24, A ビットがセットの場合は 26) よりも小さい場合, パケットは破棄されなければなりません (MUST)。
-
Length フィールドがカプセル化プロトコルのペイロードよりも大きい場合, パケットは破棄されなければなりません (MUST)。
-
Detect Mult フィールドがゼロの場合, パケットは破棄されなければなりません (MUST)。
-
Multipoint (M) ビットが非ゼロの場合, パケットは破棄されなければなりません (MUST)。
-
My Discriminator フィールドがゼロの場合, パケットは破棄されなければなりません (MUST)。
-
Your Discriminator フィールドが非ゼロの場合, この BFD パケットが関連付けられているセッションを選択するために使用されなければなりません (MUST)。セッションが見つからない場合, パケットは破棄されなければなりません (MUST)。
-
Your Discriminator フィールドがゼロで, State フィールドが Down または AdminDown でない場合, パケットは破棄されなければなりません (MUST)。
-
Your Discriminator フィールドがゼロの場合, セッションは他のフィールドの組み合わせに基づいて選択されなければなりません (MUST)。これには, 送信元アドレス情報, My Discriminator フィールド, およびパケットが受信されたインターフェースが含まれる可能性があります。選択の正確な方法はアプリケーション固有であり, したがってこの仕様の範囲外です。一致するセッションが見つからない場合, 新しいセッションが作成されてもかまいません (MAY)。または, パケットが破棄されてもかまいません (MAY)。この選択は, この仕様の範囲外です。
-
A ビットがセットされており, 認証が使用されていない (bfd.AuthType がゼロ) 場合, パケットは破棄されなければなりません (MUST)。
-
A ビットがクリアされており, 認証が使用されている (bfd.AuthType が非ゼロ) 場合, パケットは破棄されなければなりません (MUST)。
-
A ビットがセットされている場合, パケットは使用されている認証タイプ (bfd.AuthType) に基づいて, セクション 6.7 のルールに従って認証されなければなりません (MUST)。これにより, パケットが破棄される可能性があります。
-
bfd.RemoteDiscr を My Discriminator の値に設定します。
-
bfd.RemoteState を State (Sta) フィールドの値に設定します。
-
bfd.RemoteDemandMode を Demand (D) ビットの値に設定します。
-
bfd.RemoteMinRxInterval を Required Min RX Interval の値に設定します。
-
Required Min Echo RX Interval フィールドがゼロの場合, Echo パケットの送信 (存在する場合) は停止しなければなりません (MUST)。
-
Poll Sequence がローカルシステムによって送信されており, 受信したパケットの Final (F) ビットがセットされている場合, Poll Sequence は終了しなければなりません (MUST)。
-
セクション 6.8.2 に記載されているように送信間隔を更新します。
-
セクション 6.8.4 に記載されているように検出時間を更新します。
-
bfd.SessionState が AdminDown の場合
- パケットを破棄
-
受信した状態が AdminDown の場合
- bfd.SessionState が Down でない場合
- bfd.LocalDiag を 3 (Neighbor signaled session down) に設定
- bfd.SessionState を Down に設定
- bfd.SessionState が Down でない場合
-
それ以外
-
bfd.SessionState が Down の場合
- 受信した State が Down の場合
- bfd.SessionState を Init に設定
- それ以外で受信した State が Init の場合
- bfd.SessionState を Up に設定
- 受信した State が Down の場合
-
それ以外で bfd.SessionState が Init の場合
- 受信した State が Init または Up の場合
- bfd.SessionState を Up に設定
- 受信した State が Init または Up の場合
-
それ以外 (bfd.SessionState が Up)
- 受信した State が Down の場合
- bfd.LocalDiag を 3 (Neighbor signaled session down) に設定
- bfd.SessionState を Down に設定
- 受信した State が Down の場合
-
-
Demand mode がアクティブになるかどうかを確認します (セクション 6.6 参照)。
-
bfd.RemoteDemandMode が 1 で, bfd.SessionState が Up で, bfd.RemoteSessionState が Up の場合, Demand mode がリモートシステムでアクティブであり, ローカルシステムは BFD Control パケットの定期送信を停止しなければなりません (MUST) (セクション 6.8.7 参照)。
-
bfd.RemoteDemandMode が 0, または bfd.SessionState が Up でない, または bfd.RemoteSessionState が Up でない場合, Demand mode はリモートシステムでアクティブではなく, ローカルシステムは定期的な BFD Control パケットを送信しなければなりません (MUST) (セクション 6.8.7 参照)。
-
Poll (P) ビットがセットされている場合, Poll (P) ビットをクリアし, Final (F) ビットをセットして, BFD Control パケットをリモートシステムに送信します (セクション 6.8.7 参照)。
-
パケットが破棄されなかった場合, セクション 6.8.4 の検出時間期限切れルールの目的でパケットが受信されました。