BFD ルーティングについて
BFD はあらゆるメディア タイプ、カプセル化、トポロジ、およびルーティング プロトコルの高速転送パス障害検出回数を提供するように設計された検出プロトコルです。BFD は、2 つのシステム間の転送データ プロトコルすべてに加えて、ユニキャストのポイントツーポイント モードで動作します。パケットは、メディアやネットワークに対して適切なカプセル化プロトコルのペイロードで送信されます。
BFD は高速転送パス障害検出に加えて、ネットワーク管理者に一貫した障害検出方法を提供します。ネットワーク管理者は BFD を使用することで、さまざまなルーティング プロトコルの HELLO メカニズムにより、変動速度ではなく一定速度で転送パス障害を検出できるため、ネットワーク プロファイリングおよびプランニングが容易になります。また、再収束時間の整合性が保たれ、予測可能になります。
BFD 非同期モードおよびエコー機能
BFD は、エコー機能が有効であるかどうかに関わらず非同期モードで動作できます。
- 非同期モード
-
非同期モードでは、システムが相互に BFD 制御パケットを定期的に送信します。一方のシステムがこれらのパケットの多くを連続して受信しない場合、セッションはダウンしているものと宣言されます。純粋な非同期モード(エコー機能なし)では、エコー機能に必要な特定の検出時間を達成するのに必要なパケットの数が半分で済むため、便利です。
- BFD エコー機能
-
BFD エコー機能は、フォワーディング エンジンから、直接接続シングル ホップ BFD ネイバーへエコー パケットを送信します。エコー パケットはフォワーディング エンジンによって送信され、検出を実行するために同じパスに沿って返信されます。もう一方の BFD セッションは、エコー パケットの実際のフォワーディングに参加しません。エコー機能およびフォワーディング エンジンが検出プロセスを処理するため、BFD ネイバー間で送信される BFD 制御パケットの数が減少します。また、フォワーディング エンジンがリモート ネイバー システムでフォワーディング パスをテストする際にリモート システムが関与しないため、パケット間の遅延のばらつきが改善します。この結果、障害検出にかかる時間が短くなります。
エコー機能が有効な場合、BFD はスロー タイマーを使用して、非同期セッションの時間を長くし、BFD ネイバー間で送信される BFD 制御パケットの数を減らすことができます。これにより、処理オーバーヘッドが削減し、同時に障害検出時間が短くなります。
(注)
IPv4 マルチホップまたは IPv6 シングルホップ BFD ネイバーでは、エコー機能はサポートされていません。
BFD はインターフェイス レベルとルーティング プロトコル レベルで有効にできます。両方のシステム(BFD ピア)で BFD を設定する必要があります。インターフェイスと、該当するルーティング プロトコルのルータ レベルで BFD を有効にすると、BFD セッションが作成され、BFD タイマーがネゴシエートされ、BFD ピアが BFD コントロール パケットをネゴシエートされたレベルで相互に送信し始めます。
BFD セッション確立
次の例は、ASA と Border Gateway Protocol(BGP)を実行する隣接ルータを示します。両方のデバイスが起動する時点では、デバイス間で BFD セッションは確立されていません。
BGP は、BGP ネイバーの特定後に、そのネイバーの IP アドレスを使用して BFD プロセスをブートストラップします。BFD はそのピアを動的に検出しません。BFD は、設定されているルーティング プロトコルから、使用する IP アドレスと形成するピア関係を把握します。
ルータの BFD と ASA の BFD により BFD 制御パケットが形成され、BFD セッションが確立されるまで 1 秒間隔でこのパケットが相互に送信されます。両方のシステムの最初の制御パケットは非常によく似ています。たとえば、Vers、Diag、H、D、P、および F ビットはすべてゼロに設定され、State は Down に設定されます。[My Discriminator] フィールドには、送信デバイスで一意の値が設定されます。[Your Discriminator] フィールドにはゼロが設定されます。これは、BFD セッションがまだ確立されていないためです。TX タイマーと RX タイマーには、デバイスの設定で検出された値が設定されます。
リモート BFD デバイスは、セッション開始フェーズで BFD 制御パケットを受信すると、[My Discriminator] フィールドの値をデバイス自体の [Your Discriminator] フィールドに設定し、[Down] 状態から [Init] 状態、そして最終的には [Up] 状態に移行します。両方のシステムが、相互の制御パケットで各自の Discriminator を検出すると、セッションが正式に確立されます。
次の図は、確立された BFD 接続を示します。
BFD タイマー ネゴシエーション
BFD デバイスは、BFD 制御パケットの送信速度を制御および同期するため、BFD タイマーをネゴシエートする必要があります。BFD タイマーをネゴシエートする前に、デバイスは以下の点を確認する必要があります。
-
そのピア デバイスが、ローカル デイバスの提示されるタイマーを含むパケットを確認している。
-
ピアで設定されている BFD 制御パケットの受信速度を上回る速度でデバイスが BFD 制御パケットを送信することがない。
-
ローカル システムで設定されている BFD 制御パケットの受信速度を上回る速度でピアが BFD 制御パケットを送信することがない。
[Your Discriminator] フィールドと H ビットの設定は、初期タイマーの期間中にリモート デバイスがそのパケットを確認するローカル デバイスを交換できるようにするのに十分です。各システムは BFD 制御パケットを受信すると、Required Min RX Interval をシステム自体の Desired Min TX Interval と比較し、2 つの値のうち大きい方の値(低速な値)を、BDF パケットの転送速度として使用します。2 つのシステムのうち低速なシステムによって、転送速度が決定します。
これらのタイマーがネゴシエートされていない場合、セッション中の任意の時点で、セッションをリセットすることなく再ネゴシエートできます。タイマーを変更するデバイスは、F ビットがセットされている BFD 制御パケットをリモート システムから受信するまで、後続のすべての BFD 制御パケットの P ビットをセットします。このビット交換により、転送中に失われる可能性があるパケットが保護されます。
(注) |
リモート システムによって F ビットがセットされている場合、新たに提示されるタイマーをリモート システムが受け入れることを意味しているわけではありません。これは、タイマーが変更されたパケットをリモート システムが確認したことを意味します。 |
BFD 障害検出
BFD セッションとタイマーがネゴシエートすると、BFD のピアは、ネゴシエートされた間隔で BFD 制御パケットを相互に送信します。これらの制御パケットはハートビートの役割を果たします。これは、IGP Hello プロトコルとよく似ていますが、レートはさらに速くなっています。
設定されている検出間隔(必要な最小 RX 間隔)内の BFD 制御パケットを各 BFD ピアが受信する限り、BFD セッションは有効であり、BFD と関連付けられたルーティング プロトコルは隣接関係を維持します。BFD ピアがこの間隔内に制御パケットを受信しない場合、その BFD セッションに参加しているクライアントに障害発生を通知します。ルーティング プロトコルにより、その情報に対する適切な応答が決定されます。標準的な応答は、ルーティング プロトコル ピア セッションを終了し、再コンバージェンスの後、障害の発生したピアをバイパスすることです。
BFD セッション中に BFD ピアが正常に BFD 制御パケットを受信するたびに、このセッションの検出タイマーがゼロにリセットされます。したがって、障害検出は、受信側が最後にパケットを送信した時点ではなく、パケット受信に依存しています。
BFD 導入シナリオ
具体的なシナリオで BFD がどのように動作するかについて、以下に説明します。
- フェールオーバー
-
フェールオーバー シナリオでは、アクティブ ユニットとネイバー ユニット間で BFD セッションが確立、維持されます。スタンバイ ユニットはネイバーとの BFD セッションを維持しません。フェールオーバーが発生すると、新しいアクティブ ユニットがネイバーとのセッション確立を開始する必要があります。これは、アクティブ ユニットとスタンバイ ユニットの間ではセッション情報が同期されないためです。
グレースフル リスタート/NSF シナリオでは、クライアント(BGP IPv4/IPv6)がそのネイバーに対してイベントを通知します。ネイバーはこの情報を受信すると、フェールオーバーが完了するまで RIB テーブルを維持します。フェールオーバー中に、デバイスで BFD と BGP セッションがダウンします。フェールオーバーが完了し、BGP セッションがアップになると、ネイバー間で新しい BFD セッションが確立されます。
- スパンド EtherChannel および L2 クラスタ
-
スパンド EtherChannel クラスタ シナリオでは、プライマリ ユニットとそのネイバー間で BFD セッションが確立、維持されます。従属ユニットはネイバーとの間の BFD セッションを維持しません。スイッチでのロード バランシングが原因で BFD パケットが従属ユニットにルーティングされる場合、従属ユニットはこのパケットをクラスタ リンク経由でプライマリ ユニットに転送する必要があります。クラスタ スイッチオーバーが発生すると、新しいプライマリ ユニットがネイバーとのセッション確立を開始します。これは、プライマリ ユニットと従属ユニットの間でセッション情報が同期されていないためです。
- 個別インターフェイス モードと L 3 クラスタ
-
個別インターフェイス モード クラスタのシナリオでは、個々のユニットが各自のネイバーとの BFD セッションを維持します。