Bidirectional Forwarding Detection(BFD)の概要

このページでは、Cloud Router の Bidirectional Forwarding Detection(BFD)について説明します。

BFD(RFC 5880RFC 5881)は、ほとんどの商用ルーターでサポートされている転送パス停止検出プロトコルです。Cloud Router の BFD を使用すると、BGP セッション内で BFD 機能を有効にして、リンクダウン イベントなどの転送パスの停止を検出できます。この機能により、ハイブリッド ネットワークの復元力が高まります。

Dedicated Interconnect または Partner Interconnect を使用してオンプレミス ネットワークから Google Cloud とピアリングすると、リンク障害をすばやく検出し、バックアップ BGP セッションのある代替リンクにトラフィックをフェイルオーバーできます。このように、BFD はリンク障害に迅速に応答できる高可用性ネットワーク接続パスを提供します。

BFD のメリット

デフォルトの設定で構成された BFD は、5 秒で障害を検出しますが、BGP ベースの障害検出では 60 秒です。BFD を実装した Cloud Router では、エンドツーエンドの障害をわずか 5 秒で検出できます。

BFD は、接続の両端が転送パスを介して定期的にパケットを送信する、固定長の hello プロトコルです。

BFD は UDP ベースの検出プロトコルです。これは、隣接する 2 つのルーター間の転送パスの障害を検出する、オーバーヘッドの少ない方法を提供します。これには、インターフェース、データリンク、転送プレーンの障害の検出も含まれます。BFD はルーティング プロトコル レベルで有効にできます。

BFD の制限事項

BFD は、Dedicated Interconnect または Partner Interconnect で VLAN アタッチメント用に構成した BGP セッションでのみ有効にできます。Network Connectivity Center の一部である HA VPN トンネルまたはルーター アプライアンスに構成されている BGP セッションでは、BFD はサポートされていません。

BFD セッションの確立

BFD セッションを確立するには、両方の BGP ピア(Cloud Router と BFD を実行しているオンプレミス ルーター)で BFD を構成します。ルーターの BGP ルーティング プロトコルに対して BFD を有効にすると、BFD セッションが作成され、BFD タイマーがネゴシエートされ、ネゴシエートされた間隔で BFD ピアが相互に BFD 制御パケットの送信を開始します。

ローカル ルーターの BGP に迅速な障害検出通知を送信して、ルーティング テーブルの再計算プロセスを開始することによって、BFD は全体的なネットワーク収束時間を大幅に短縮します。

次の図は、BGP と BFD を実行する 2 つのルーターがある単純なネットワークを示しています。番号は BFD セッションの確立プロセスを表します。

  1. BGP ネイバーが設定されます。
  2. BGP は、BGP ピア / ネイバー ルーターとの BFD ネイバー セッションを開始するリクエストをローカル BFD プロセスに送信します。
  3. BGP ネイバー ルーターとの BFD ネイバー セッションが確立されます。
BFD セッションの確立。
BFD セッションの確立(クリックして拡大)

障害イベント時の BFD

次の図は、ネットワークで障害が発生した場合に何が起こるかを示しています。

BFD コントロール専用モードでは、Cloud Router とオンプレミス ルーターは定期的に BFD 制御パケットを相互に送信します。Cloud Router の bfd multiplier 構成で構成された行の制御パケットの数が相手ルーターで受信されない場合、セッションの停止は宣言されません。この場合、次のことが起こります。

  1. Google Cloud とオンプレミス ルーターの間でリンクの障害が発生します。
  2. BGP ネイバー ルーターとの BFD ネイバー セッションが切断されます。
  3. BFD は、BFD ネイバーが到達できないことをローカル BGP プロセスに通知します。
  4. ローカル BGP プロセスは、BGP ネイバーの関係を破棄します。

代替パスが使用可能な場合、ルーターはそのパスへの収束をすぐに開始します。

障害イベント時の BFD。
障害イベント時の BFD(クリックして拡大)

BFD 減衰

Cloud Router は、BFD 減衰を内部に実装し、BGP に対する頻繁な BFD セッション フラップの悪影響を抑制します。BFD 減衰は、ユーザーが変更できないデフォルト パラメータを使用します。

BFD 減衰にはペナルティ システムが使用されます。ペナルティ値は 0 から始まり、最初のフラップで 1 になります。最初のフラップの後は、別の BFD フラップが発生するたびにペナルティが 2 倍になります。ペナルティがしきい値の 4 を超えると、BFD は BGP への通知を抑制します。この間にフラップが発生しなかった場合、ペナルティは 10 分ごとに半分に減ります。

ペナルティが再利用しきい値 4 を下回ると、BFD は BGP への通知を再び有効にします。

BGP に対する BFD 通知の最大抑制間隔は 1 時間です。これにより、BFD セッションの停止通知の永続的な減衰を防ぐことができます。

BFD 非同期モード

Cloud Router は、関連するシステムが BFD 制御パケットを互いに定期的に送信する非同期モードをサポートしています。構成された数の連続したパケットが他のシステムで受信されない場合、セッションの停止が宣言されます。

BFD オペレーションのデマンドモードはサポートされていません。パケットモードの場合、BFD はコントロール専用モードをサポートします(エコーモードはサポートされていません)。

コントロール専用パケットモードで、非同期モードのオペレーションを行うと、BFD はコントロール プレーンで実行され、オーバーヘッドと CPU 処理時間がわずかに長くなります。

デフォルトでは、Cloud Router BGP セッションで BFD は無効になっています。BFD を使用するには、有効にする必要があります。

次の障害シナリオの場合、ルーターは次のように設定されています。

  • Cloud Router の BFD 受信間隔は、5,000 ミリ秒の検出タイマー設定に対して、1,000 ミリ秒(ms)に 5 の BFD 乗数を掛けた値に設定されています。
  • ピアルーターの BFD 送信間隔は、5,000 ミリ秒の検出タイマー設定に対して、1,000 ミリ秒に 5 の BFD 乗数を掛けた値に設定されています。

Cloud Router はピアルーターとネゴシエートし、ピアルーターから 1,000 ミリ秒ごとに制御パケットを受信することを想定します。Cloud Router が制御パケットを受信せずに 5,000 ミリ秒が経過すると、検出タイマーが期限切れになり、BFD セッションの停止が宣言されます。

エコーパケットのない BFD。
エコーパケットのない BFD(クリックして拡大)

グレースフル リスタートと BFD

Cloud Router のソフトウェア メンテナンス イベント中のトラフィックへの影響を最小限に抑えるため、BGP グレースフル リスタートを有効にすることをおすすめします。

BGP グレースフル リスタートと BFD の両方が有効になっている場合、Cloud Router は再起動時に、AdminDown メッセージをオンプレミス ルーターに送信して BFD をオフにしようとします。この場合、BGP セッションはオンプレミス側で維持され、オンプレミス ルーターはグレースフル リスタート モードに入ります。オンプレミス ルーターがグレースフル リスタート モードになっている間、Cloud Router はデータプレーンのトラフィックに影響を与えずに再起動できます。

同様に、コントロール プレーンが再起動する前にオンプレミス ルーターが AdminDown メッセージを送信すると、Cloud Router はグレースフル リスタート モードになります。Cloud Router がグレースフル リスタート モードになっている間は、オンプレミス ルーターはデータプレーンのトラフィックに影響を与えずに再起動できます。

Cloud Router はピアルーターとの BFD を確立するときに、コントロール プレーン非依存ビットを 0 に設定し、BFD の実装がコントロール プレーンに依存することを通知します。インターフェース障害が発生した場合、ピアルーターは、コントロール プレーンの障害に起因する BFD の障害か、またはデータプレーンの障害に起因する BFD の障害かを区別できない可能性があります。たとえば、インターフェースの障害によって、オンプレミス ルーターがグレースフル リスタート モードに入ると、影響を受けるリンクからのトラフィックのフェイルオーバーが不必要に遅延する可能性があります。

BFD の障害の曖昧さが生じる可能性があるため、このような特定のシナリオの扱いはベンダーごとに異なり、デフォルトの動作を変更する構成設定を提供しています。ルーター ベンダーのドキュメントを確認してオンプレミス ルーターを構成し、BGP グレースフル リスタートを使用している場合は、コントロール プレーンに依存する BFD ピアで BFD インターフェースの障害イベントが発生しても、すぐにフェイルオーバーがトリガーされるようにすることをおすすめします。

BFD の設定とタイマー

このセクションでは、Cloud Router で構成できる BFD の設定について説明します。

BFD セッションの初期化モード

説明 この BGP ピアの BFD セッション初期化モード。
gcloud コマンド --bfd-session-initialization-mode
API フィールド bgpPeers[].bfd.sessionInitializationMode
デフォルト設定 Disabled

BFD モードの設定には、ActivePassiveDisabled の 3 つがあります。このモードを設定しない場合、デフォルトで非エコーモード(制御パケットのみ)を使用する Disabled の設定になります。

  • Disabled(デフォルト): BFD はこの BGP ピアに対して無効になります。
  • Passive: Cloud Router はピアルーターがこの BGP ピアの BFD セッションを開始するのを待機します。
  • Active: Cloud Router はこの BGP ピアの BFD セッションを開始します。

接続の少なくとも片側(Cloud Router またはピアルーター)でルーターを Active に設定する必要があります。2 つの Cloud Router 間で BGP セッションを構成するときは、1 つのルーターの BFD セッションの初期化モードを Active に設定します。

両側を Active に設定すると、双方が初期制御パケットを送信してパラメータをネゴシエートし、最終的にセッションが確立されます。

BFD セッションの初期化モードを Disabled に設定すると、必要に応じて残りの BFD 設定を構成できます。これらの設定は、BFD を再度有効にすると有効になります。

BFD の最小送信間隔(ピアへの BFD パケット)

説明 BGP ピアに送信される BFD 制御パケットの最小間隔。
gcloud コマンド --bfd-min-transmit-interval
API フィールド bgpPeers[].bfd.minTransmitInterval
デフォルト設定

1,000 ミリ秒。1,000 ミリ秒から 30,000 ミリ秒の間で設定を指定できます。

BFD の最小受信間隔(ピアからの BFD パケット)

説明 BGP ピアから受信する BFD 制御パケットの最小受信間隔。
gcloud コマンド --bfd-min-receive-interval
API フィールド bgpPeers[].bfd.minReceiveInterval
デフォルト設定

1,000 ミリ秒。1,000 ミリ秒から 30,000 ミリ秒の間で設定を指定できます。

BFD の乗数

説明 BFD でピアが使用不可と宣言される前に失われる連続する BFD 制御パケットの数。
gcloud コマンド --bfd-multiplier
API フィールド bgpPeers[].bfd.multiplier
デフォルト設定

5 パケット。5 パケットから 16 パケットまでの範囲で設定できます。

次のステップ