双方向フォワーディング検出ルーティング

この章では、双方向フォワーディング検出(BFD)ルーティング プロトコルを使用するように ASA を設定する方法について説明します。

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 セッションは確立されていません。

図 1. 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 接続を示します。

図 2. BFD セッションが確立されていない BGP


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 セッションを維持します。

BFD ルーティングのガイドライン

コンテキスト モードのガイドライン

シングル コンテキスト モードとマルチ コンテキスト モードでサポートされています。

ファイアウォール モードのガイドライン

ルーテッド ファイアウォール モードでサポートされます。スタンドアロン、フェールオーバー、およびクラスタ モードをサポートします。BFD は、フェールオーバーおよびクラスタ インターフェイスではサポートされません。クラスタリングでは、この機能はプライマリ ユニットでのみサポートされます。BFD は、トランスペアレント モードではサポートされません。

IPv6 のガイドライン

エコー モードは IPv6 ではサポートされません。

その他のガイドライン

OSPFv2、OSPFv3、BGP IPv4および BGP IPv6 プロトコルがサポートされています。

IS-ISおよび EiGRP プロトコルはサポートされていません。

スタティック ルートの BFD はサポートされません。

転送およびトンネルでの BFD はサポートされません。


(注)  


最適なルーティングを行うため、NSF の BGP グレースフル リスタートがデバイスで設定されている場合は、BFD を設定しないでください。


BFD の設定

ここでは、システムで BGP ルーティング プロセスを有効にして設定する方法について説明します。

手順


ステップ 1

BFD テンプレートの作成

ステップ 2

BFD インターフェイスの設定

ステップ 3

BFD マップの設定


BFD テンプレートの作成

このセクションでは、BFD テンプレートを作成して BFD コンフィギュレーション モードを開始するために必要な手順を説明します。

BFD テンプレートは、一連の BFD 間隔値を指定します。BFD テンプレートで指定された BFD 間隔値は、1 つのインターフェイスに限定されるものではありません。また、シングルホップ セッションとマルチホップ セッションの認証も設定できます。エコーをイネーブルにできるのは、シングルホップのみです。

手順


ステップ 1

BFD を ASA 上のルーティング プロトコルとしてイネーブルにするために、BFD テンプレート(シングルホップまたはマルチホップ)を作成します。

bfd-template [single-hop | multi-hop] template-name

例:


ciscoasa(config)# bfd-template single-hop TEMPLATE1
ciscoasa(config-bfd)#

  • single-hop :シングルホップ BFD テンプレートを指定します。

  • multi-hop :マルチホップ BFD テンプレートを指定します。

  • template-name :テンプレート名を指定します。テンプレート名にスペースを含めることはできません。

bfd-template コマンドを使用して、BFD テンプレートを作成し、BFD コンフィギュレーション モードを開始できます。

ステップ 2

(オプション)シングルホップ BFD テンプレートでエコーを設定します。

bfd-template single-hop template_name

例:

 
ciscoasa(config)# bfd-template single-hop TEMPLATE1
ciscoasa (config-bfd)# echo

エコー モードをイネーブルにできるのは、シングルホップ テンプレートのみです。BFD エコーは、IPv6 BFD セッションではサポートされません。

ステップ 3

BFD テンプレートで間隔を設定します。

interval [both milliseconds | microseconds {both | min-tx} microseconds | min-tx milliseconds

例:


ciscoasa(config)# bfd-template single-hop TEMPLATE1
ciscoasa(config-bfd)# interval both 50  

  • both :最小送受信間隔機能。

  • milliseconds :間隔(ミリ秒数)を指定します。指定できる範囲は 50 ~ 999 です。

  • microseconds both および min-tx の BFD 間隔をミリ秒で指定します。

  • microseconds :指定できる範囲は 50,000 ~ 999,000 です。

  • min-tx :最小送信間隔機能。

BFD テンプレートの一部として指定される BFD 間隔値は、1 つのインターフェイスに限定されるものではありません。インターフェイスごとに個別の BFD テンプレートを適用できます。BFD インターフェイスの設定を参照してください。

ステップ 4

BFD テンプレートで認証を設定します。

authentication {md5 | meticulous-mds | meticulous-sha-1 | sha-1} [0|8] word key-id id

例:


ciscoasa(config)# bfd-template single-hop TEMPLATE1
ciscoasa(config-bfd)# authentication sha-1 0 cisco key-id 10

  • authentication :認証タイプを指定します。

  • md5 :Message Digest 5(MD5)認証。

  • meticulous-md5 :Meticulous キー MD5 認証。

  • meticulous-sha-1 :Meticulous キー SHA-1 認証。

  • sha-1 :キー SHA-1 認証。

  • 0|8 :0 は、暗号化されていないパスワードが後に続くことを示します。8:暗号化されたパスワードが後に続くことを示します。

  • word :BFD パスワード(キー)。最大 29 文字からなる 1 桁のパスワード/キーです。最初の数字の後にスペースが続くパスワードはサポートされていません。たとえば、「0 pass」と「1」は無効です。

  • key-id :認証キー ID。
  • id :キー文字列に一致する共有キー ID。範囲は 0 ~ 255 文字です。

認証は、シングルホップ テンプレートとマルチホップ テンプレートに設定できます。セキュリティを強化するために認証を設定することをお勧めします。BFD の送信元と宛先のペアごとに認証を設定し、両方のデバイスで認証パラメータが一致する必要があります。


BFD インターフェイスの設定

BFD テンプレートをインターフェイスにバインドすることで、基準 BFD セッション パラメータの設定およびエコー モードのイネーブル化をインターフェイスごとに行うことができるようになります。

手順


ステップ 1

インターフェイス コンフィギュレーション モードを開始します。

interface interface_id

例:


ciscoasa(config)# interface GigabitEthernet0/0
ciscoasa(config-if)# 

ステップ 2

BFD テンプレートをインターフェイスに適用します。

bfd template template-name

例:

ciscoasa(config)# interface GigabitEthernet0/0
ciscoasa(config-if)# bfd template TEMPLATE1

bfd-template コマンドを使用してテンプレートを作成していない場合でも、インターフェイスでテンプレート名を設定できますが、そのテンプレートを定義するまでテンプレートは無効と見なされます。テンプレート名を再設定する必要はありません。名前は自動的に有効になります。

ステップ 3

BFD セッション パラメータを設定します。

bfd interval milliseconds min_rx milliseconds multiplier multiplier-value

例:


ciscoasa(config)# interface GigabitEthernet0/0
ciscoasa(config-router)# bfd interval 200 min_rx 200 multiplier 3

  • interval milliseconds :BFD 制御パケットが BFD ピアに送信される速度を指定します。有効値は 50 ~ 999 ミリ秒です。

  • min_rx milliseconds :BFD 制御パケットが BFD ピアから受信されるときに期待される速度を指定します。有効値は 50 ~ 999 ミリ秒です。

  • multiplier multiplier-value :BFD ピアから連続して紛失してよい BFD 制御パケットの数を指定します。この数に達すると、BFD はそのピアが利用不可になっていることを宣言し、レイヤ 3 BFD ピアに障害が伝えられます。指定できる範囲は 3 ~ 50 です。

ステップ 4

インターフェイスで BFD エコー モードをイネーブルにします。

bfd echo

例:


ciscoasa(config)# interface gigabitethernet 0/0
ciscoasa(if)# bfd echo

エコー モードはデフォルトでイネーブルになっていますが、BFD IPv6 セッションではサポートされていません。エコー モードを有効にすると、最小エコー送信レベルと必要最短送信間隔の値が bfd intervalmilliseconds min_rx milliseconds 設定から取得されます。

(注)  

 

BFD エコー モードを使用するには、no ip redirects コマンドを使用して ICMP リダイレクト メッセージを無効にする必要があります。これにより、CPU 使用率が高くなることを回避できます。


BFD マップの設定

マルチホップ テンプレートに関連付けることができる宛先が含まれている BFD マップを作成できます。マルチホップ BFD テンプレートがすでに設定されている必要があります。

手順


ステップ 1

マルチホップ BFD テンプレートを作成します。手順については、BFD テンプレートの作成を参照してください。

ステップ 2

BFD マルチホップ テンプレートを宛先のマップに関連付けます。

bfd map {ipv4 | ipv6} destination/cdir source/cdire template-name

例:


ciscoasa(config)# bfd map ipv4 10.11.11.0/24 10.36.42.5/32 MULTI-TEMPLATE1
ciscoasa(config-bfd)# 

  • ipv4 :IPv4 アドレスを設定します。

  • ipv6 :IPv6 アドレスを設定します。

  • destination/cdir :宛先プレフィックス/長さを指定します。形式は A.B.C.D/<0-32> です。

  • source/cdir :送信元プレフィックス/長さを指定します。形式は X:X:X;X::X/<0-128> です。

  • template-name :この BFD マップに関連付けられているマルチホップ テンプレートの名前を指定します。

ステップ 3

(オプション)BFD スロー タイマー値を設定します。

bfd slow-timers [milliseconds]

例:

ciscoasa(config)# bfd slow-timers 14000
ciscoasa(config-bfd)#

milliseconds :(オプション)BFD スロー タイマーの値。指定できる範囲は 1000 ~ 30000 です。デフォルトは 1000 です。


BFD のモニタリング

次のコマンドを使用して、BFD ルーティング プロセスをモニターできます。コマンド出力の例と説明については、コマンド リファレンスを参照してください。

さまざまな BFD ルーティング統計情報をモニターまたは無効にするには、次のいずれかのコマンドを入力します。

  • show bfd neighbors

    既存の BFD 隣接関係の詳細なリストを表示します。

  • show bfd summary

    BFD、BFD クライアント、または BFD セッションの概要情報を表示します。

  • show bfd drops

    BFD でドロップされたパケットの数を表示します。

  • show bfd map

    設定済みの BFD マップを表示します。

  • show running-config bfd

    BFD マップおよびその他の BFD に関するコンフィギュレーションを表示します。

  • show running-config bfd-template

    BFD テンプレートに関するコンフィギュレーションを表示します。

BFD ルーティングの履歴

表 1. BFD ルーティングの機能履歴

機能名

プラットフォーム リリース

機能情報

BFD ルーティング サポート

9.6(2)

ASAは、BFD ルーティング プロトコルをサポートするようになりました。BFD テンプレート、インターフェイスおよびマッピングの設定が新たにサポートされました。BFD を使用するための BGP ルーティング プロトコルのサポートも追加されました。

次のコマンドが追加されました。 bfd echo、bfd interval、bfd map、bfd slow-timers、bfd-template、clear bfd counters、clear conf bfd、neighbor fall-over bfd、show bfd drops、show bfd map、show bfd neighbors、show bfd summary、show running-config bfd