MPLS の BFD(双方向フォワーディング検出)
MPLS の双方向転送検出の設定(CLI 手順)
EX8200スタンドアロンスイッチおよびEX8200バーチャルシャーシでBFD(双方向フォワーディング検出)プロトコルを設定し、MPLSラベルスイッチパス(LSP)の障害を検出することができます。BFDプロトコルは、ネットワーク内の障害を検出するための単純なhelloメカニズムです。Helloパケットは指定された、定期的な間隔で送信されます。ネイバー障害は、ルーティングデバイスが指定した時間経過後にネイバーからの応答を受信しなくなった場合に検出されます。BFDは、さまざまなネットワーク環境とトポロジーで動作します。BFDの障害検出タイマーは、静的ルートの障害検出メカニズムのタイマーよりも制限時間が短いため、より高速に検出できます。これらのタイマーも適応型です。例えば、隣接関係に障害が発生した場合にタイマーをより高い値に適応したり、ネイバーが設定されている値よりも高い値をネゴシエートしたりすることができます。
このトピックでは、LDP ベース LSP および RSVP ベース LSP をサポートするための、PE(プロバイダ エッジ)スイッチとプロバイダ スイッチの設定について説明します。
このトピックには以下のものが含まれます。
LDP ベースの LSP のプロバイダ エッジおよびプロバイダ スイッチでの BFD の設定
特定の転送等価クラス(FEC)に関連付けられているLDPベースLSPまたはRSVPベースLSPに対してBFDを有効にすることができます。または、運用管理および保守(OAM)イングレスポリシーを設定して、FECアドレスの範囲でBFDを有効にすることもできます。
LDP ベース LSP に BFD を設定する前に、MPLS ネットワークの基本コンポーネントを設定する必要があります。
2 つの PE スイッチを設定します。IP-over-MPLSを使用したプロバイダエッジスイッチでのMPLSの設定を参照してください。
1 つ以上のプロバイダー スイッチを構成します。EX8200およびEX4500プロバイダスイッチでのMPLSの設定を参照してください。
PE およびプロバイダ スイッチで BFD を設定するには、次の手順に従います。
プロバイダエッジおよびプロバイダスイッチでRSVPベースのLSPに対してBFDを設定する
イングレススイッチでRSVPベースのLSPにBFDが設定されている場合、そのLSPのプライマリパスとすべてのスタンバイセカンダリパスでBFDが有効になります。スイッチ上のすべての LSP または特定の LSP に対して BFD をイネーブルにできます。特定の LSP に対して BFD を設定すると、BFD に対してグローバルに設定された値はすべて、その LSP 上で上書きされます。BFD セッションは、イングレス スイッチでのみ発信され、エグレス スイッチで終了します。
RSVP ベースの LSP に BFD を設定する前に、MPLS ネットワークの基本コンポーネントを設定する必要があります。
2 つの PE スイッチを設定します。IP-over-MPLSを使用したプロバイダエッジスイッチでのMPLSの設定を参照してください。
1 つ以上のプロバイダー スイッチを構成します。EX8200およびEX4500プロバイダスイッチでのMPLSの設定を参照してください。
PE およびプロバイダ スイッチで BFD を設定するには、次の手順に従います。
BFDによってトリガーされる局所修復による迅速なコンバージェンス
BFD トリガーによるローカル保護について
リンクまたはノードの障害後にネットワークが収束するのにかかる時間は、ネットワークのサイズ、使用するプロトコル、ネットワーク設計など、さまざまな要因によって大きく異なります。ただし、特定の収束イベントはそれぞれ異なりますが、収束のプロセスは基本的に一貫しています。障害が検出され、ネットワーク内で障害が報告され(フラッディングされ)、トラフィックの代替パスが検出され、新しいパスでトラフィックを渡すように転送プレーンが更新されます。
この概要では、BFD(双方向フォワーディング検出)によってトリガーされるローカル修復が、MPLS ネットワークの迅速なコンバージェンスのための迅速な復旧時間にどのように貢献するかについて説明します。
BFD トリガーによるローカル修復の目的
Junos OS では、RSVP シグナルのラベルスイッチ パス(LSP)障害に対する一般的な MPLS トラフィック保護は、いくつかの補完的なメカニズムによって提供されます。これらの保護メカニズムには、ローカル保護(高速再ルート、リンク保護、ノードリンク保護)とパス保護(プライマリおよびセカンダリパス)が含まれます。ローカル保護とパス保護を組み合わせることで、LSP のパケット損失を最小限に抑え、障害発生後の LSP の再ルーティング方法を制御することができます。従来は、どちらのタイプの保護も、物理レベルでの接続障害の迅速な検出に依存していました。ただし、物理レベルが高速検出されない伝送メディアの場合、Junos OSはBFDとMPLS pingをサポートし、高速障害検出を実現します。
ルーター間のリンクでは、ルートがダウンすると、ルーティング プロトコル プロセスは次善のパスを再計算します。MPLS高速リルート(FRR)が有効な場合、iflメッセージはすべてのFPC(フレキシブルPICコンセントレータ)にフラッディングされます。エッジ FPC は、バイパス MPLS LSP トンネルを有効にします。最後に、すべてのルートが修復され、バイパス MPLS LSP トンネルを介して送信されます。すべてのルートの修復にかかる時間は、ルートの数に比例します。
この修復シナリオは、スイッチが2つのリンク間にある場合、より困難になります。「図 1」を参照してください。
リンクがリモート エンドでダウンした場合、IGP(内部ゲートウェイ プロトコル)がダウンするまで、ローカル エンドで障害は検出されません。ルーティングプロトコルプロセスが次善のパスを再計算するのを待つのは時間がかかりすぎます。
BFD トリガーによるローカル修復を有効にすると、パケット転送エンジンは、まずバイパス MPLS LSP トンネル(事前設定およびインストール済み)を使用して修復を完了し、次にルーティング プロトコル プロセスに新しいルートを再計算するように通知します。これにより、プライマリMPLS LSPトンネルがダウンした際に、FPCは、バイパスMPLS LSPトンネルで、トラフィックを断続的かつ即座にFPCに迂回させることができます。
この方法でローカル修復を使用すると、50 ミリ秒未満の高速復元時間が達成されます。
BFD によってトリガーされるローカル リペアの設定
BFD トリガーによるローカル修復は設定できませんが、デフォルト設定の一部です。
レガシーJunos OS内でBFDをトリガーしたローカル修復作業には、MPLS-FRR、IGP 用 BFD、LFA(ループフリー代替)などがあります。
BFD トリガーによるローカル修復の無効化
デフォルトでは、BFD トリガーによるローカル修復は、すべてのルーティング インターフェイスに対して有効です。必要に応じて、[edit routing-options] 階層レベルで BFD トリガーによるローカル修復を無効にできます。
BFD によってトリガーされるローカル修復を明示的に無効にするには:
[ルーティングオプションを編集]階層レベルで
no-bfd-triggered-local-repair
ステートメントを含めます。user@host# set no-bfd-triggered-local-repair
(オプション)コミットする前に、
show routing-options
コマンドを使用して構成設定を確認します。user@host# run show routing-options
show routing-options コマンドを発行して、構成を確認します。
user@host# show routing-options ... no-bfd-triggered-local-repair; }
この機能を無効にする場合は、IGP の graceful-restart ステートメントを含めてルーティングを再開する必要もあります。例えば、OSPF の場合、これは [edit protocols ospf]
階層レベルに graceful-restart ステートメントをインクルードすることで実現されます。
MPLS IPv4 LSP の BFD の設定
インターネットドラフトdraft-ietf-bfd-mpls-02.txt、 MPLS LSPのBFDに記載されているように、MPLS IPv4 LSPに双方向フォワーディング検出(BFD)プロトコルを設定することができます。BFD は、LSP データ プレーンの障害を検出するために、LSP の定期的な運用、管理、保守(OAM)機能として使用されます。シグナリング プロトコルとして LDP または RSVP のいずれかを使用する LSP に対して BFD を設定できます。
MPLS IPv4 LSPのBFDは、ルーティングエンジンに基づいており、配信されません。その結果、サポートされる最小 BFD タイマー間隔は 1 つの LSP セッションあたり (100 ミリ秒 * 3) であり、拡張 LSP セッションの場合、サポートされる最小 BFD タイマー間隔は (300 ミリ秒 * 3) です。BFD で LSP セッションの数を増やすと、ネットワークをサポートするためにインターバル タイマーも増加(スケーリング)する必要があります。
ノンストップアクティブルーティング(NSR)をサポートするルーティングエンジンスイッチオーバーインスタンスの場合、サポートされる最小BFDタイマー間隔は(2.5秒 * 3)です。
また、LSP ping
コマンドを使用して、LSP データ プレーンの障害を検出することもできます。ただし、BFD にはいくつかの利点があります。LSP ping
コマンドよりもコンピュータの処理が少なくて済み、大量の LSP の障害を迅速に検出できます(LSP ping
コマンドは LSP ごとに個別に発行する必要があります)。一方、BFD を使用して、エグレス LSR でコントロール プレーンをデータ プレーンと照合することはできません。LSP ping
エコー要求が FEC(転送等価クラス)に関連付けられている場合は可能です。
BFDの障害検出タイマーは適応型であり、より厳格に、またはよりゆるめに調整することができます。例えば、隣接関係に障害が発生した場合にタイマーをより高い値に適応したり、ネイバーが設定されている値よりも高い値のタイマーをネゴシエートしたりすることができます。BFDセッションのフラップが15秒間に3回以上発生すると、タイマーはより高い値に適応します。バックオフアルゴリズムは、ローカルBFDインスタンスがセッションフラップの原因である場合に、受信(Rx)の間隔を2つ増加させます。リモートBFDインスタンスがセッションフラップの原因である場合は、送信(Tx)の間隔が2つ増加します。clear bfd adaptation
コマンドを使用すれば、BFD間隔タイマーを設定した値に戻すことができます。clear bfd adaptation
コマンドはヒットレスであり、コマンドがルーティングデバイスのトラフィックフローに影響を及ぼすことはありません。
Junos OS Release 13.2R4、13.3R2、14.1 以降では、LSP ping メッセージと LSP ping 応答の数の間の時間間隔をそれぞれ設定できます。その後、双方向転送検出(BFD)セッションがダウンします。そのためには、[edit protocols mpls oam]
階層レベルで lsp-ping-interval
ステートメントと lsp-ping-multiplier
ステートメントを設定します。
LDP シグナル LSP の設定手順については、 LDP LSP 用の BFD の設定を参照してください。RSVP信号LSPの設定手順については、次のセクションを参照してください。
RSVP シグナル付き LSP に対して BFD を設定する
RSVP 向け BFD は、ユニキャスト IPv4 LSP をサポートします。イングレスルーターでRSVP LSPにBFDが設定されている場合、そのLSPのプライマリパスとすべてのスタンバイセカンダリパスでBFDが有効になります。MPLS BFD セッションのエグレス側から発信する BFD パケットの送信元 IP アドレスは、発信インターフェイス IP アドレスに基づきます。BFDは、ルーター上のすべてのLSPまたは特定のLSPに対して有効にすることができます。特定の LSP に対して BFD を設定すると、BFD に対してグローバルに設定された値はすべて上書きされます。BFD セッションは、イングレス ルーターでのみ発信され、エグレス ルーターで終了します。
パスのBFDセッションが失敗するたびにエラーがログに記録されます。以下の例は、RSVP LSP に対する BFD のログ メッセージの一例を示しています。
RPD_MPLS_PATH_BFD_UP: MPLS BFD session for path path1 up on LSP R0_to_R3 RPD_MPLS_PATH_BFD_DOWN: MPLS BFD session for path path1 down on LSP R0_to_R3
BFDは、ルーター上のすべてのRSVP LSP、特定のLSP、または特定のLSPのプライマリパスに対して設定できます。RSVP LSPに対してBFDを設定するには、 oam
および bfd-liveness-detection
ステートメントを含めます。
oam { bfd-liveness-detection { failure-action { make-before-break teardown-timeout seconds; teardown; } failure-action teardown; minimum-interval milliseconds; minimum-receive-interval milliseconds; minimum-transmit-interval milliseconds; multiplier detection-time-multiplier; } lsp-ping-interval time-interval; lsp-ping-multiplier multiplier; }
以下の階層レベルでこのステートメントを設定することができます。
[edit protocols mpls]
[edit protocols mpls label-switched-path lsp-name]
[edit protocols mpls label-switched-path lsp-name primary path-name]
bfd-liveness-detection
ステートメントには、以下のオプションが含まれます。
minimum-interval
- 最小の送受信間隔を指定します。minimum-receive-interval
- 最小の受信間隔を指定します。1~255,000ミリ秒の範囲になります。minimum-transmit-interval
- 最小の送信間隔を指定します。1~255,000ミリ秒の範囲になります。lsp-ping-multiplier
- 検出時間の倍率を指定します。1~255の範囲になります。注:偽陰性のトリガーを回避するには、高速再ルート時間よりも長い BFD 障害検出時間を設定します。
また、 lsp-ping-interval
オプションを設定して、LSP ping の間隔を調整することもできます。RSVPシグナル化されたLSPのLSPpingコマンドは ping mpls rsvp
です。ping mpls rsvp
コマンドの詳細については、CLI エクスプローラーを参照してください。
RSVP LSP での BFD セッションの障害アクションの設定
RSVP LSP の BFD セッションがダウンすると、LSP は破棄され、再度シグナル化されます。トラフィックはスタンバイLSPに切り替えることも、単にLSPパスを破棄することもできます。実行されたアクションはすべてログに記録されます。
RSVP LSP パスの BFD セッションがダウンした場合、Junos OS を設定して LSP パスを再シグナルするか、単に LSP パスを無効にすることができます。スタンバイLSPパスは、プライマリLSPパスが利用できない間、トラフィックを処理するように設定できます。ルーターは、BFD で検出できる LSP 障害から自動的に回復できます。デフォルトでは、BFD セッションが失敗した場合、イベントは単にログに記録されます。
BFD イベントが発生した場合に、Junos OS が RSVP LSP パスを破棄できるようにするには、 failure-action
ステートメントを含めます。
failure-action { make-before-break teardown-timeout seconds; teardown; }
このステートメントを含めることができる階層レベルの一覧は、このステートメントのステートメント概要セクションを参照してください。
teardown
オプションまたはmake-before-break
オプションのいずれかを設定できます。
teardown
- LSP パスを停止し、直ちに再シグナリングします。make-before-break
- Junos OSが古いLSPパスを破棄する前に、新しいLSPパスのシグナリングを試みます。また、teardown-timeout
オプションを設定して、LSP への再シグナル化の試みがteardown-timeout
間隔内に失敗した場合、指定した時間が経過すると自動的に LSP を破棄することもできます。teardown-timeout
間隔に値0を指定すると、LSPはダウンし、ただちに再シグナル化されます(teardown
オプションを設定した場合と同じ動作)。
すべての RSVP LSP に対して失敗アクションを設定するには、[edit protocols mpls oam bfd-liveness-detection]
階層レベルに failure-action
ステートメントを含めます。特定の RSVP LSP に対して失敗アクションを設定するには、[edit protocols mpls label-switched-path lsp-name oam bfd-liveness-detection]
階層レベルで failure-action
ステートメントを含めます。
特定のプライマリパスに対する失敗アクションを設定するには、[edit protocols mpls label-switched path lsp-name primary path-name oam bfd-liveness-detection]
階層レベルで failure-action
ステートメントを含めます。特定のセカンダリ LSP パスに対する障害アクションを設定するには、[edit protocols mpls label-switched-path lsp-name secondary path-name oam bfd-liveness-detection]
階層レベルで failure-action
ステートメントを含めます。
変更履歴
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 特定の機能がお使いのプラットフォームでサポートされているかどうかを確認するには、 Feature Explorer をご利用ください。