グレースフル リスタートと長時間のグレースフル リスタートの設定
グレースフル リスタートおよび長時間グレースフル リスタート BGP ヘルパー モードは、Contrail 制御ノードと XMPP ヘルパー モードでサポートされています。
グレースフルリスタートと長時間グレースフルリスタートの適用
BGPピアセッションがダウンしていることが検出されるたびに、ピアから学習したルートはすべて削除され、アドバタイズされたピアから直ちに取り消されます。これにより、データプレーンのvrouterカーネルに保持されているルートがそのまま残っている場合でも、エンドツーエンドで流れるトラフィックが瞬時に中断されます。
グレースフル リスタート機能と長時間のグレースフル リスタート機能を使用して、ダウンによるトラフィックの中断を軽減できます。
グレースフル リスタート機能を設定すると、Contrail コントローラのプロセスがダウンしても、既存のネットワーク トラフィックは影響を受けないようにすることができます。Contrailの実装により、Contrail制御モジュールが再起動した場合に、BGPピアが提供するグレースフルリスタート機能を使用できるようになります。または、BGPピアが再起動すると、Contrailはネットワークへの影響を最小限に抑えるためにグレースフルリスタートヘルパーモードを提供します。グレースフル リスタート機能を使用すると、プロセスの一時的な停止によってトラフィックが影響を受けないようにすることができます。
グレースフル リスタートはデフォルトでは有効になっていません。
グレースフル リスタート機能を有効にすると、セッションがダウンしても学習したルートは削除されず、アドバタイズされたピアからルートが取り消されることはありません。代わりに、ルートは保持され、「古い」としてマークされます。したがって、セッションが復旧し、ルートが再学習されていれば、ネットワークへの全体的な影響は最小限に抑えられます。
一定時間が経過してもダウンしたセッションが復帰しない場合、残りの古いルートはすべて削除され、アドバタイズされたピアから取り消されます。
BGPグレースフルリスタートヘルパーモード
BGPヘルパーモードを使用すると、BGPセッションがフラップするたびに、BGP のルーティング チャーンを最小限に抑えることができます。これは、MXシリーズJunosデバイスでのrpdクラッシュや再起動など、SDNゲートウェイルーターが正常にダウンした場合に特に役立ちます。その場合、contrail-control は、ゲートウェイから学習したルートを保持し、必要に応じてネットワークの残りの部分にアドバタイズすることで、ゲートウェイのグレースフル リスタート ヘルパーとして機能します。これが機能するためには、再起動ルーター(この場合は SDN ゲートウェイ)が、使用されているすべてのアドレス ファミリーのグレースフル リスタートをサポートし、グレースフル リスタートで構成されている必要があります。
グレースフルリスタートヘルパーモードは、BGP-as-a-Service(BGPaaS)クライアントでもサポートされています。設定されている場合、contrail-control は、再起動中の BGPaaS クライアントにグレースフル リスタートまたは長時間のグレースフル リスタート ヘルパー モードを提供できます。
機能のハイライト
以下は、グレースフル リスタート機能と長寿命グレースフル リスタート機能のハイライトです。
ゼロ以外のリスタート時間を設定することで、BGPでグレースフルリスタートおよび長時間のグレースフルリスタート機能をアドバタイズできるようになります。
ヘルパーモードを設定することで、グレースフルリスタートおよび長時間のグレースフルリスタートヘルパーモードがセッションがダウンした後もルートを保持できるようになります。
グレースフル リスタートを設定すると、セッション ダウン イベントが検出され、終了プロセスがトリガーされるたびに、すべてのアドレス ファミリーにわたるすべてのルートが古いとマークされます。古いルートは、設定されたグレースフルリスタート時間にわたって、最適パス選択の対象となります。
長時間のグレースフル リスタートが有効な場合、グレースフル リスタートのみで許可される時間よりもはるかに長い期間、古いルートを保持できます。長時間のグレースフル リスタートでは、ルート優先度が保持され、最適なパスが再計算されます。LLGR_STALEとマークされたコミュニティには、古いパスのタグが付けられ、再アドバタイズされます。ただし、受信した古いルートに有効期間の長いグレースフルリスタートコミュニティが関連付けられていない場合、それらのルートは保持されず、代わりに削除されます。
一定時間が経過した後、セッションが復旧すると、残りの古いルートはすべて削除されます。セッションが復旧しない場合、保持されている古いルートはすべて完全に削除され、アドバタイズされたピアから取り消されます。
XMPPヘルパーモード
Contrail Networkingは、Contrail Networkingリリース2011.L2のXMPPヘルパーモードを使用したLLGR(Long-Lived Graceful Restart)のサポートを更新しました。リリース 2011.L2 以降、Contrail vRouter データパス エージェントは、XMPP ヘルパー モードを使用した LLGR が有効になっている場合、コントローラー ピアでのルート保持をサポートします。このルート保持により、XMPP ベースの接続が失われたときに、データパス エージェントは Contrail コントローラからの最後のルート パスを保持できます。ルートパスは、Contrailコントローラの1つに新しいXMPPベースの接続が確立されるまで、エージェントによって保持されます。XMPP 接続がアップし、事前定義された期間安定すると、古い XMPP 接続からのルートパスがフラッシュされます。このルート保持のサポートにより、コントローラを正常にダウンさせることができますが、コントローラへの接続が回復したときに転送が中断されます。
LLGRをXMPPヘルパーモードで使用すると、以下の注目すべき動作が見られます。
ローカル vRouter が Contrail コントローラから分離されると、リモート vRouter 上の VN 内 EVPN ルートが削除されます。
Contrail vRouter データパス エージェントの再起動中、転送状態が常に保持されるとは限りません。
Contrail Networking は、すべての Contrail リリース 4、5、19 ソフトウェア、および Contrail Networking リリース 2011.L1 までのすべての Contrail リリース 20 ソフトウェアで、グレースフル リスタートと XMPP ヘルパー モードを使用した長時間のグレースフル リスタート(LLGR)に対する限定的なサポートを提供しています。グレースフル リスタートと XMPP を使用した LLGR は、ほとんどの環境では使用すべきではなく、このセクションで後述する理由により、これらの Contrail Networking リリースを実行する特殊な状況にあるエキスパート ユーザーのみが使用する必要があります。
グレースフル リスタートと LLGR は、Contrailコマンド、Contrail Web UI、または provision_control スクリプトを使用して、XMPP ヘルパー モードで有効にできます。ヘルパー モードはスキーマを介して有効にすることもでき、/etc/contrail/contrail-control.conf 設定ファイルで gr_helper_disable を設定することで、BGP または XMPP セッションの contrail-control ノードで選択的に無効にすることができます。
XMPPヘルパーモードでグレースフルリスタートとLLGRを有効にする場合は、以下の依存関係に注意する必要があります。
BGPヘルパーを有効にせずに、XMPPヘルパーモードでグレースフルリスタートとLLGRを有効にすることができます。グレースフルリスタート、XMPP、およびすべての適切なタイマーを有効にする場合は、BGPヘルパーなしでXMPPヘルパーモードでグレースフルリスタートとLLGRを有効にする必要があります。
高速コンバージェンスのためのLLGRとXMPPサブセカンドタイマーを同時に使用しないでください。
XMPP ヘルパー モードを備えた LLGR が有効になっているときに制御ノードに障害が発生した場合、vRouter は GR および LLGR タイムアウト値の長さの間ルートを保持し、トラフィックを渡し続けます。タイムアウト間隔が経過すると、ルートはvRouterから削除され、その時点でトラフィックは転送されなくなります。
タイムアウト間隔が経過する前に制御ノードがアップ状態に戻ると、再接続中に少量のトラフィックが失われます。
グレースフル リスタートと XMPP を使用した LLGR は、以下の問題のため、Contrail Networking リリース 4、5、19 ソフトウェア、および Contrail Networking リリース 2011.L1 以降のすべての Contrail リリース 20 ソフトウェアを実行する場合、特殊な状況にあるエキスパート ユーザーのみが使用してください。
グレースフル リスタートは、contrail-vrouter-agent ではまだ完全にはサポートされていません。
グレースフル リスタートは contrail-vrouter-agent ではまだサポートされていないため、
graceful_restart_xmpp_helper_enableにパラメーターを設定しないでください。vRouterエージェントが再起動すると、データプレーンがリセットされ、ルートとフローが新たに再プログラムされます。この再プログラミングでは、通常、新規および既存のフローのトラフィックが数秒間失われ、さらに長いトラフィック損失期間が発生する可能性があります。グレースフル リスタートを有効にすることで vRouter エージェントが再起動すると、contrail-vrouter-agent が使用するルーティングテーブルに古いルートが追加される可能性があります。
この問題は、contrail-vrouter-agent のリセット後に発生します。リセット後も、以前の XMPP 制御ノードは、古いルートを他の制御ノードに送信し続けます。以前の XMPP 制御ノードによって送信された古いルートは、最終的に contrail-vrouter-agent に渡され、NH1/drop ルートとしてそのルーティングテーブルにインストールされ、トラフィックのドロップにつながる可能性があります。古くなったルートがルーティングテーブルから削除されるのは、グレースフルリスタートがグローバルに有効化された後、またはタイマー(ユーザーが設定可能だが長い間隔に設定可能)が終了したときのみです。
設定パラメータ
グレースフル リスタート パラメーターは、スキーマの global-system-config で設定されます。これらは、プロビジョニングスクリプトを使用するか、Contrail Web UIを使用して設定できます。
ゼロ以外のリスタート時間を設定して、ピアからのグレースフルリスタートおよび長時間のグレースフルリスタート機能をアドバタイズします。
グレースフル リスタートと長時間グレースフル リスタートのヘルパー モードを設定して、セッションがダウンした後もルートを保持します。
設定パラメータは次のとおりです。
enableまたは、すべてのグレースフルリスタートパラメーターのdisable:restart-timelong-lived-restart-timeend-of-rib-timeout
bgp-helper-enableContrail-Control で BGP ピアのグレースフル リスタート ヘルパー モードを有効にするにはxmpp-helper-enableContrail-Control で XMPP ピア(エージェント)のグレースフル リスタート ヘルパー モードを有効にするには
以下に、プロビジョニングスクリプトによる設定を示します。
/opt/contrail/utils/provision_control.py
--api_server_ip 10.xx.xx.20
--api_server_port 8082
--router_asn 64512
--admin_user admin
--admin_password <password>
--admin_tenant_name admin
--set_graceful_restart_parameters
--graceful_restart_time 60
--long_lived_graceful_restart_time 300
--end_of_rib_timeout 30
--graceful_restart_enable
--graceful_restart_bgp_helper_enable
以下はパラメータの例です。
-set_graceful_restart_parameters
--graceful_restart_time 300
--long_lived_graceful_restart_time 60000
--end_of_rib_timeout 30
--graceful_restart_enable
--graceful_restart_bgp_helper_enable
ジュニパーネットワークスデバイスとBGPピアリングする場合、次の例に示すように、Junosもグレースフルリスタート/長時間グレースフルリスタート用に明示的に設定する必要があります。
set routing-options graceful-restart set protocols bgp group <a1234> type internal set protocols bgp group <a1234> local-address 10.xx.xxx.181 set protocols bgp group <a1234> keep all set protocols bgp group <a1234> family inet-vpn unicast graceful-restart long-lived restarter stale-time 20 set protocols bgp group <a1234> family route-target graceful-restart long-lived restarter stale-time 20 set protocols bgp group <a1234> graceful-restart restart-time 600 set protocols bgp group <a1234> neighbor 10.xx.xx.20 peer-as 64512
グレースフル リスタート ヘルパー モードは、スキーマで有効にできます。ヘルパーモードは、/etc/contrail/contrail-control.conf ファイルでgr_helper_disableを設定することで、BGPセッションのcontrail-control.confで選択的に無効にすることができます。
以下に例を示します。
/usr/bin/openstack-config /etc/contrail/contrail-control.conf DEFAULT gr_helper_bgp_disable 1
/usr/bin/openstack-config /etc/contrail/contrail-control.conf DEFAULT gr_helper_xmpp_disable 1
service contrail-control restart
グレースフルリスタート設定の詳細については、 https://github.com/Juniper/contrail-controller/wiki/Graceful-Restart を参照してください。
グレースフルリスタート時の注意事項
グレースフル リスタートの設定および使用に際しては、以下の点に注意してください。
ピアでグレースフル リスタート/長時間のグレースフル リスタート機能を使用することは、ネゴシエートされたすべてのアドレス ファミリーに有効か、まったく有効ではありません。ピアが、ネゴシエートされたアドレスファミリーのサブセットに対してのみグレースフルリスタート/長時間のグレースフルリスタートのサポートをシグナルした場合、グレースフルリスタートヘルパーモードは、ネゴシエートされたアドレスファミリーのセット内のどのファミリーに対しても有効になりません。
グレースフル リスタートは contrail-vrouter-agent ではまだサポートされていないため、
graceful_restart_xmpp_helper_enableにパラメーターを設定しないでください。vRouterエージェントが再起動すると、データプレーンがリセットされ、ルートとフローが新たに再プログラムされます。この再プログラミングでは、通常、新規および既存のフローのトラフィックが数秒間失われ、さらに長いトラフィック損失期間が発生する可能性があります。さらに、以前の XMPP 制御ノードが古くなったルートを他の制御ノードに送信し続ける可能性があり、これらの古くなったルーターを contrail-vrouter-agent に渡すことができます。contrail-vrouter-agentは、これらの古いルートをNH1/ドロップルートとしてルーティングテーブルにインストールすることができ、トラフィック損失を引き起こす可能性があります。古いルートは、グレースフルリスタートがグローバルに有効化された後、またはタイマー(ユーザーが設定可能だが複数日に設定可能)が期限切れになったときにのみ削除されます。
グレースフル リスタート/長時間のグレースフル リスタートは、マルチキャスト ルートではサポートされていません。
再起動ノードがEVPNルートの転送状態を保持しない場合、グレースフルリスタート/長時間のグレースフルリスタートヘルパーモードがEVPNルートで正しく機能しない可能性があります。
グレースフル リスタートの設定
Contrailコマンドを使用してグレースフルリスタートを設定することをお勧めします。ただし、Contrailコマンドを使用していない環境でも、Contrailユーザーインターフェイスを使用してグレースフルリスタートを設定することもできます。
Contrailコマンドを使用したグレースフルリスタートの設定
Contrailコマンドでグレースフルリスタートを設定するには、 インフラストラクチャ>クラスター>詳細オプション に移動し、画面の右上隅にある編集アイコンを選択します。
システム構成の編集ウィンドウが開きます。グレースフルリスタートのボックスをクリックしてグレースフルリスタートを有効にし、0以外の数値を入力して再起動時間を秒単位で定義します。このウィンドウから、LLGR(長時間グレースフル リスタート)の時刻と RIB タイマーの終了時刻を指定することもできます。
Contrail ユーザー インターフェイスを使用したグレースフル リスタートの設定
Contrail UIでグレースフルリスタートを設定するには、 グローバル設定>インフラストラクチャの設定>に移動し、 BGPオプション タブを選択します。 BGPオプションの編集 ウィンドウが開きます。グレー スフルリスタート のボックスをクリックしてグレースフルリスタートを有効にし、 再起動時間にゼロ以外の値を入力します。必要に応じて、BGPヘルパーとXMPPヘルパーのヘルパーボックスをクリックします。また、長時間のグレースフル リスタート時間の値を秒単位で、RIB の終了時刻の値を秒単位で入力することもできます。 図3をご覧ください。
の設定
グレースフル リスタート タイマーについて
表1は 、グレースフルリスタートタイマーとそれに関連する動作の概要を示しています。
タイマー |
説明 |
|---|---|
再起動時間 |
BGP helper mode—BGPピアによってアドバタイズされたルートは、再起動時間の間保持されます。 XMPP helper mode—XMPPピアによってアドバタイズされたルートは、再起動時間の間保持されます。 |
LLGR時間 |
BGP helper mode—BGPピアによってアドバタイズされたルートは、BGPヘルパーモードが有効になっている場合、LLGRタイマーの間保持されます。 XMPP helper mode—XMPPヘルパーモードが有効になっている場合、XMPPピアによってアドバタイズされたルートはLLGPタイマーの間保持されます。 グレースフル リスタート(GR)と長時間のグレースフル リスタート(LLGR)の両方が設定されている場合、LLGR タイマーの持続時間は両方のタイマーの合計になります。 |
RIB終了タイマー |
EOR(End of RIB)タイマーは、vRouterエージェントのRIBから古いルートを削除するために制御ノードが待機する時間を指定します。 vRouterエージェントとコントロールノード間の接続が回復すると、vRouterエージェントはコントロールノードからその設定をダウンロードします。この設定手順が完了すると、制御ノードからvRouterエージェントに設定終了メッセージが送信されます。 EORタイマーは、このEnd of ConfigメッセージがvRouterエージェントによって受信されると開始されます。EORタイマーが終了すると、EORメッセージがvRouterエージェントから制御ノードに送信されます。制御ノードはこのEORメッセージを受信し、vRouterエージェントによって以前にアドバタイズされた古いルートをRIBから削除します。 |
EVPNタイプ2ルートのグレースフルリスタートまたは長時間のグレースフルリスタートのサポート
現在、BGP/XXMP ピア セッションが再起動またはダウンすると、Contrail Web UI でグレースフル リスタートまたは長時間のグレースフル リスタート タイマーを設定していても、学習した EVPN タイプ 2 ルートは 古い ものとしてマークされず、ルート データベースから削除されます(制御ノードは EVPN ルートを明示的に削除します)。これにより、EVPNファミリルートのトラフィックが失われます。
Contrail Networking リリース 21.4 以降、グレースフル リスタートまたは長時間のグレースフル リスタート機能は EVPN タイプ 2 ルートをサポートし、以下の点で役立ちます。
セッションに障害が発生しても、学習されたEVPNタイプ2ルートは削除または削除されません。
学習したEVPNタイプ2ルートを保持し、設定されたグレースフルリスタートまたは長時間のグレースフルリスタートタイマーが期限切れになるまで、 それらを古い ものとしてマークします。
その結果、セッションを再開してルートを再学習し、ネットワーク全体への影響を軽減します。
グレースフルリスタートまたは長時間のグレースフルリスタートタイマーが終了した後もダウンしたセッションがダウンしたままの場合、古いルートは削除され、アドバタイズされたピアから削除されます。
変更履歴テーブル
サポートされる機能は、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がお使いのプラットフォームでサポートされているかどうかを確認します。