冗長性サポート

機能の概要と変更履歴

要約データ

表 1. 要約データ

該当製品または機能エリア

SMF

該当するプラットフォーム

SMI

機能のデフォルト設定

  • 冗長性サポート:有効の構成を無効にする必要があります。

  • アクティブ インスタンスの L2 VIP でのトラフィック モニタリング:無効の構成を有効にする必要があります。

  • 地理強化:有効の構成を無効にする必要があります。

  • アプリケーション VIP スイッチ オーバー時のセッション損失の最小化:該当なし。

関連資料

該当なし

更新履歴

表 2. マニュアルの変更履歴

改訂の詳細

リリース

高可用性冗長性のサポートが強化され、マスター ノード間のアプリケーション VIP スイッチオーバー時のセッション損失を最小限に抑えました。

2023.04.0

次のサブ機能のサポートが追加されました。

  • アクティブ インスタンスの L2 VIP でのトラフィック モニタリング

  • サイト間の冗長性

  • GR の強化:

2023.03.0

メンテナンス モードのサポートが追加されました。

2021.04.0

地理的冗長(GR)サポートが導入されました。

2021.02.0

最初の導入。

2020.02.0 より前

機能説明

この章では、フェールオーバー シナリオの機能を達成するために必要な冗長性機能、アーキテクチャ、および構成の概要を示します。

サポートされる冗長性のタイプ

SMF は、次のタイプの冗長性をサポートしています:

冗長タイプ

説明

[サーバ(Server)]

このソリューションは、サーバ障害を持続させ、クラスタ内の別のサーバにワークロードを分散するように設計されています。

このシナリオでは、Essential ポッドおよびサービス クリティカルなポッドのほとんどがアクティブ モードとスタンバイ モードで実行されており、ハードウェア障害が発生した場合の影響を最小限に抑えるために、異なるサーバーに存在します。

ラック

このシナリオでは、Kubernetes クラスタが同じデータセンター内で異なるラックにミラーリングされます。

複数のサーバ障害、ソフトウェア障害、または隣接ルーティング層の問題が発生した場合、セッションは他のラックに切り替えられます。このようにして、新しいラックと同じレベルのサービスを確実に達成できるようになります。

サイト

このシナリオでは、Kubernetes クラスタは異なる地理的なデータセンターにミラーリングされます。

データセンター全体がダウンタイムしている場合、セッションは別のデータセンターの他のラックに切り替えられます。これにより、新しいラックと同じレベルのサービスを確実に実現できます。

高可用性のサポート

表 3. 機能の履歴

機能名

リリース情報

説明

アプリケーション VIP スイッチ オーバー時のセッション損失の最小化

2023.04

高可用性の冗長性サポートは、gRPC IPC ストリームが中断すると、App-Infra ライブラリがただちに再試行し、gRPC エンドポイント間で IPC 接続を数ミリ秒以内に再確立する方法で SMF で強化されています。

機能説明

SMFは Kubernetes クラスタ戦略に基づいて構築されているため、K8 クラスタ展開の高可用性の側面を継承します。SMF は、ポッドやサービスなどのコンポーネントを含む構造を使用します。

各ポッドには、次に対して高可用性を確保するために少なくとも 2 つのインスタンスがあります

  • ポッド インスタンスの再起動または障害

  • ノードの再起動または障害によりポッドが失われました

ポッドとサービスの詳細については、このガイドの「ポッドとサービスの参考資料」の章を参照してください。

UDP プロキシの高可用性

SMF は、UDP プロキシの高可用性(HA)をサポートしています。UDP プロキシの HA モデルは、キープアライブ仮想 IP の概念に基づいています。

UDP プロキシ冗長性に関する情報について、「ポッドとサービスの参考資料」章の「UDP プロキシの高可用性」セクションを参照してください。

ノード マネージャの高可用性

SMF は、各 UPF の IPAM 冗長性とロード バランシングをサポートしています。ノード マネージャ マイクロサービスで実行されている IPAM には、各 UPF に関連付けられた 2 つの IPAM インスタンスがあります。1 つの IPAM インスタンスが非アクティブになると、もう 1 つの IPAM インスタンスが UPF のアドレス割り当て要求を管理します。

ノード マネージャ冗長性に関する情報については、「IP アドレス管理」章の「UPF ごとの IPAM 冗長性サポート」セクションを参照してください。

内部ラックの高可用性

ラック内の高可用性は、サーバ レベルの冗長性を処理する配置です。このソリューションでは、1 つのサーバで障害が発生した場合、設計に応じたいくつかのポッドが利用可能な別のサーバに分散される場合があります。一方、他のポッドは、サーバが復帰するまで保留状態のままです。

このシナリオでは、外部トラフィックを処理する重要なポッドが、別のサーバのアクティブ/スタンバイ ペアで実行されます。ルーティング レイヤでの冗長性サポートは、リーフおよびスパイン レイヤによって提供されます。

図 1. 高可用性レイアウト

アーキテクチャ

このセクションでは、SMF ポッドと VM の推奨レイアウトについて説明します。

SMF ポッドおよび VM の展開レイアウト

ここでは、SMF ポッドとそのマイクロサービスの展開について説明します。

次の図は、SMF における 6 つの VM の導入モデルを示しています。

図 2. VM 導入モデル

このモデルでは、ポッドは VM ペアに展開されます。各プロトコル ポッド(rest-ep、protocol-ep、gtp-ep など)に対して 2 つのレプリカを使用できます。各プロトコル VM に 1 つのインスタンスが展開されます。

同様に、サービス ポッドとセッション ポッドは、サービス VM とセッション VM の両方に均等に分散されます。このような分散は、VM にラベルを付け、ポッドのスケジューリング中に K8 アフィニティ ルールとアンチアフィニティルールを実装することによって制御されます。

このモデルにより、VM の再起動シナリオ中に、各 ポッドタイプの少なくとも 50% のレプリカがユーザー シグナリングの処理に使用可能になります。

ポッドのグレースフル再起動により、ポッドは進行中の処理を 30 秒以内に完了できます。ポッドの突然の再起動は、PDU セッションに影響を与えずに、進行中のトランザクションに影響を与えます。

機能の仕組み

ここでは、復元力と HA を実現する方法について説明します。

SMF は、ポッドの障害中または再起動中にポッド間通信を可能にします。

ポッドのグレースフル再起動中:

  • 進行中の処理は影響を受けません。

  • 新しいメッセージは、Kubernetes サービスを介してポッドに送信されません。

  • セッション アフィニティを持つメッセージは、引き続きポッドで受信されます。

  • 既存のコール フローは 30 秒以内に完了することが予想されます。

ポッドの再起動後:

  • ポッドのすべての Prometheus メトリックがリセットされます。

  • 内部ポッド診断に合格すると、ポッドのステータスが準備完了に変更されます。

  • ポッドは新しいメッセージを処理する準備ができています。

SMF VM が再起動するか、VM が使用できない場合:

  • VM 上のすべてのポッドが失われます。

  • 使用可能な他の VM 上のポッドは処理を継続するため、高可用性が提供されます。

  • VIP(存在する場合)は、他の使用可能なノードに切り替えられます。

  • Kubernetes がノードをダウン状態として検出するには、ノードが到達不能になってから約 5 分間かかります。

  • その後、ノード上のポッドは、Kubernetes サービスでは検出できません。

ポッドが再起動すると、VM 上のポッドが順次スケジュールされます。この操作は、ポッドの再起動に似ています。

VIP と VM の再起動中に、仮想 IP は単一の VM に関連付けられます。UDP プロキシは、UPF との通信のために N4 VIP アドレスにバインドします。UDP プロキシは、cnSGW との通信用に S5 VIP アドレスにバインドします。

アクティブな VIP で VM を再起動すると、VIP は他のプロトコルの VM に切り替わります。アクティブな UDP プロキシに障害が発生すると、VIP は他のプロトコル VM に切り替わります。

サブスクライバ マイクロサービス インフラストラクチャ(SMI)が VIP のモニタリングとスイッチオーバーを処理する前に、SMI デプロイメントで適切な VIP 構成が使用可能であることを確認してください。また、ポートが 28000 に設定されており、ホストの優先順位が同じであるかどうかを確認します。

BGP スピーカーは、そのノードでの IP アドレスの変更をモニタします。サービス IP アドレスが追加または削除されると、ネットリンクによる「IP モニタ」サポートを使用して、適切な Med 値でそれらをすぐにアドバタイズします。

VIP スイッチオーバー中に、gRPC IPC ストリームが中断すると、App-Infra ライブラリはすぐに再試行し、ミリ秒以内に gRPC エンドポイント間で IPC 接続が再確立されます。

BGP POD のグレースフル シャットダウン中、すべての VIP は他のマスターにフェールオーバーし、トラフィックは他のノードによってすぐに処理される必要があります。ピア ポッド/ノードの即時トラフィックを取得するために、ポッドをシャットダウンすると Med の優先順位(1217/1218)が低下します。

BFD リンクが両方のリーフからダウンしていると検出された場合、BGP スピーカーは VIP を他のマスターにすぐに移動する必要があります。これは、BGP スピーカーからのキープアライブ インターフェイスのモニタリングを再開し、BFD リンクがダウンしたときに特定することで実現されます。

ポッドレベルのラベル付けとレプリカの構成

ノード ラベルは、SMI クラスタ デプロイヤで構成されます。構成コマンドに関する詳細は、「」章の構成コマンドを参照してください。

設定例

次に、VM のラベル付けとレプリカの構成例を示します。

k8 label protocol-layer key smi.cisco.com/node-type value smf-proto
exit
k8 label service-layer key vm-type value smf-svc
exit
k8 label cdl-layer key smi.cisco.com/node-type value smf-cdl
exit
k8 label oam-layer key smi.cisco.com/node-type value oam
exit

endpoint pfcp
 replicas 1
 nodes    2
exit
endpoint service
 replicas 1
 nodes    2
exit
endpoint protocol
 replicas 1
 nodes    2
 vip-ip 209.165.201.28
exit
endpoint sbi
 replicas 1
 nodes    2

設定の確認

構成を確認するには、次の show コマンドを使用します。

show running-config instance instance-id instance_id endpoint 

以下は、この show コマンドの出力例です。

[unknown] smf# show running-config instance instance-id 1 endpoint 
instance instance-id 1
 endpoint nodemgr
  replicas 1
  nodes    2
 exit
 endpoint gtp
  replicas 1
  vip-ip 209.165.202.149
 exit
 endpoint pfcp
  replicas                2
  enable-cpu-optimization true
  interface n4
   heartbeat
    interval               0
    retransmission-timeout 3
    max-retransmissions    5
   exit
  exit
 exit
 endpoint service
  replicas 2
 exit
 endpoint protocol
  replicas 1
  vip-ip 209.165.202.149
 exit
exit 

このコマンド出力には、エンドポイント名、ポッド レプリカ、ノードなど、複数のエンドポイントに関連する構成が表示されます。

アクティブ インスタンスの L2 VIP でのトラフィック モニタリング

機能説明

SMF は、トラフィックがないプロトコル ノード上のアクティブな L2 VIP を識別します。アクティブな L2 VIP の場合、ネットワーク接続の問題など、さまざまな理由によりトラフィックが存在しない場合があります。

アクティブな L2 VIP でトラフィックがないシナリオを検出すると、SMF はポッドの再起動を試みるか、CLI 構成アクションに基づいて GR をトリガーします。トラフィックの復元を容易にし、セッションの損失を最小限に抑えます。

この機能は、CLI を使用して有効または無効にすることができます。

機能の仕組み

  • IPC L2 VIP でのトラフィックのモニタリングは定期的に行われ、構成可能な no-traffic-duration 時間と一致しています。

  • 構成された時間内にアクティブ IPC L2 VIP にトラフィックがない場合、構成されたアクションに応じて、GR トリガーが発生し、他のラックがトラフィックを処理できるようにするか、ポッドが再起動され、VIP が他のポッドに切り替わります。トラフィックを復元します。

  • ポッド再起動アクションが設定され、VIP スイッチオーバー後でもトラフィックが復元されない場合、IPC 接続モニタリング機能は、影響を最小限に抑えるように構成されていれば、GR シナリオをトリガーします。

  • 次のチェックは定期的にモニターされます。チェックが条件を満たしている場合、トラフィックはモニターされます。

    • CLI 構成 no-traffic-duration は 10 秒より長くする必要があります。

    • CLI 構成 session-threshold は1000以上にする必要があります。デフォルト値は 1000 です。

    • GR インスタンス ID ロールのいずれかが PRIMARY であるかどうか。

    • 内部 VIP がプロトコル ノードに存在するかどうか。

    • セッション数が CLI を使用して設定したセッションしきい値以上の場合、トラフィック モニタリングがトリガーされます。ただし、セッション数が 1000 未満の場合、トラフィックの監視は停止します。

  • 単一の IPC エンドポイントは、GR モードで両方の GR インスタンス ID のトラフィックを処理します。IPC エンドポイントでのトラフィック モニタリングは、GR インスタンス ID 固有ではありません。ただし、両方の GR インスタンス ID に対してチェックが実行されます。

HA および GR シナリオの構成

HA(ポッド再起動)シナリオまたは GR(トリガ スイッチオーバー)シナリオをトリガするには、次の構成を使用します。

config 
   monitor 
      active-instance-traffic {  no-traffic-duration no_traffic_duration session-threshold session_threshold action { pod-restart | trigger-switch-over  } } 

注:

  • active-instance-traffic :このキーワードを指定して、アクティブ トラフィック モニタリングを有効または無効にします。

  • no-traffic-duration no_traffic_duration :アクティブ インスタンスでトラフィックが発生しない場合の最大許容時間(秒単位)。値の範囲は 10 ~ 300 です。この CLI に設定されているデフォルト値はありません。 no-traffic-duration の値は、max-conn-downtime の値よりも小さい値にする必要があります。

  • session-threshold session_threshold :アクティブ インスタンス トラフィック モニタリングを開始するために必要な最小セッション数。値の範囲は 10 ~ 10000000 です。デフォルト値は 1000 です。

  • action { pod-restart | trigger-switch-over } :条件を満たす際に実行するアクション。このコマンドに使用できる値は 、pod-restart および trigger-switch-over です。デフォルト値は pod-restart です。

設定例

次の例は、この機能の構成を示したものです:

smf(config)# monitor active-instance-traffic no-traffic-duration 15 session-threshold 1000 action pod-restart
設定の確認

次のコマンドは、この機能の出力を表示します:

smf# show running-config monitor active-instance-traffic
monitor active-instance-traffic no-traffic-duration 15 session-threshold 1000 action pod-restart

OAM サポート

このセクションでは、この機能でサポートされているさまざまな統計情報を定義します。

KPI

次の KPI じゃ、この機能の一部としてサポートされいています:

アクティブ インスタンスのトラフィック モニター サービス KPI

KPI 名

説明

ラベル

active_instance_traffic_monitor_services

この統計情報には、トラフィックモニタリングのために登録されているサービスが表示されます。

interface_name

internal_vip_ip

アクティブ インスタンスのトラフィック モニターのステータス KPI

KPI 名

説明

ラベル

有効な値

active_instance_traffic_monitor_status

この統計には、アクティブ インスタンスのトラフィック モニタリングのステータスが表示されます。

interface_name

internal_vip_ip

0 :モニタリングしません

1:モニタリング

アクティブ インスタンスのトラフィック モニタの理由 KPI

KPI 名

説明

ラベル

有効な値

active_instance_traffic_monitor_reason

この統計には、モニタリング状態または非モニタリング状態でのアクティブ インスタンス トラフィックのモニタリングの条件が一致しない場合の理由が表示されます。

interface_name

internal_vip_ip

1:GRインスタンス ID がプライマリではありません

2:現在のセッション数は、セッションしきい値数未満です

3:内部 VIP がアクティブでない

4:アクティブ インスタンス トラフィック モニターが設定されていない

アクティブ インスタンスのトラフィック モニターのセッション数 KPI

KPI 名

説明

ラベル

active_instance_traffic_monitor_session_count

この統計情報には、現在のセッション数が表示されます。

interface_name

internal_vip_ip


(注)  


表示される数は、アフィニティ キャッシュから取得されます。


アクティブ インスタンスのトラフィック モニターの最後の受信トラフィック KPI

KPI 名

説明

ラベル

active_instance_traffic_monitor_last_recv_traffic

この統計情報には、トラフィックの最終受信時間が秒単位で表示されます。

interface_name

internal_vip_ip


(注)  


この統計は 、アクティブ インスタンス トラフィック モニター のすべての条件が満たされている場合にのみ計算されます。


ラック間冗長性サポート

ラック間冗長性サポートとは、1 つのラックで障害や停止が発生した場合でも、システムまたはサービスがその機能と可用性を維持する機能を意味します。これは、同じ地理的な場所にある別のラックに操作を移動することで軽減できます。

機能説明

SMF は 、アクティブ-アクティブ モードのラック間冗長性をサポートします。ラック間の冗長性は、リモート ラックへのサービスのシームレスなフェールオーバーとフェールバックに必要なセッション、構成、およびその他のデータのレプリケーションによって実現されます。

機能の仕組み

SMF (CNF)を同じデータセンターに展開して、SMF SMF クラスタをホストするラックにローカライズされた致命的な障害にサービスを提供できます。

各 CNF インスタンス サービスは、MME/SGW の DNS エントリのために NRF および S11/S5 に登録されます。ローカル HA 冗長性により、インスタンスは、同じデータセンター内の K8 クラスタ レベルの障害に加えて、ラック レベルの冗長性を実現したり、障害のあるコンテナがタイプ 2 < nごとである場合に、同じ K8 クラスタ内でローカルに処理したりできます。

n は値です。コンテナ障害の 50% 未満の場合は、HA で障害を処理する必要があります。コンテナ障害の 50% を超えると、ラック間スイッチオーバーがトリガされます。

概要

アクティブ - アクティブモード

  • ラック間展開は、隣接する NF に対して透過的です。

  • ラック間の展開には CCG 機能の 2 つのインスタンスが含まれ、各インスタンスは一連のインターフェイス IP で識別されます。

  • 各インスタンスは一連のセッションをサポートし、セッションの一貫性のために同じ IP を使用し続けます。

  • 特定の期間において、1つの CCG インスタンスは一方のラックでのみプライマリとして動作し、もう一方のラックではスタンバイとして動作します。

  • CCG インスタンスに関連付けられている一連のインターフェイス IP は、インスタンスのプライマリ ラックにダイナミックにルーティングされます。

SMF は 、データがプライマリからスタンバイ インスタンスに複製されるプライマリ/スタンバイ冗長性をサポートします。通常の動作では、プライマリ インスタンスがサービスを提供します。プライマリ インスタンスで障害が発生すると、スタンバイ インスタンスがプライマリになり、動作を引き継ぎます。ラック間の冗長性を実現するために、2 つのプライマリ/スタンバイ ペアを設定できます。この場合は各ラックがアクティブにトラフィックを処理し、スタンバイ側がリモートラックのバックアップとして機能します。

アクティブ-アクティブのラック間冗長性展開で、同じデータセンターに 2 つのラックがあるとします(Rack-1 と Rack-2)。すべての NF が instance-1 と instance-2 に到達しようとしています。

図 3. アクティブ-アクティブラック間冗長性展開

NF の場合、両方のインスタンスがアクティブになります。しかし実際には、instance-1 と instance-2 はラックにまたがって分割されます。

Rack-1 には instance-1 と instance-2 があります。トリガー前のシナリオでは、instance-1 はローカルでプライマリとして機能し、instance-2 はスタンバイ モードになります。

Rack-2 には instance-1 と instance-2 も含まれています。トリガー前のシナリオでは、instance-2 はローカルでプライマリとして機能し、instance-1 はスタンバイ モードす。

Rack-1 がダウンすると、トラフィックは Rack-2 に移動します。ラック 2 では、instance-1 と instance-2 の両方がプライマリとして機能します。

ラック間冗長性トリガ

ラック間冗長性は、次のトリガをサポートしています。

  • CLI ベースのスイッチオーバー: 手動の CLI コマンドを使用して、ロールを切り替え、ラック間冗長性フェールオーバーをトリガします。

  • BFD リンク フェールオーバー検出: 接続されたラックとリーフ間の両方の BFD リンクがダウンすると、ラック間冗長性フェールオーバーがトリガされます。

  • ローカル ラック POD 障害検出: ポッド レプリカ セットの障害のしきい値パーセンテージが、構成されたしきい値より大きい場合、ラック間冗長性フェールオーバーがトリガされます。

  • リモート ラック ポッド障害検出: リモート POD モニタリングで障害しきい値パーセンテージが検出されると、POD はそのインスタンスに対してセルフプライマリになります。

  • リモート ラック ロール モニタリング: リモート ロール モニタリングで、ラックが Standy_error 状態であることが検出されると、そのラックはセルフプライマリになります。

  • マルチコンピューティング障害: 2 つ以上のサーバの電源がオフになると、ラック間冗長性フェールオーバーがトリガされます。

ラック NF ロール

次に、適用可能なラック NF ロールのリストを示します。


(注)  


  • Cachepod/etcd および CDL レプリケーションは、 次のセクションで説明されているすべてのロール中に発生します。

  • ラック間リンクがダウンしているか、定期的なハートビートに失敗すると、これらのラック間冗長性トリガが一時停止します。


  • PRIMARY:このロールでは、ラックは準備完了状態で、特定のインスタンスのトラフィックをアクティブに取得しています。

  • [スタンバイ(STANDBY)]:このロールでは、ラックはスタンバイ モードであり、トラフィックを取得する準備ができていますが、特定のインスタンスのトラフィックを取得しません。

  • STANDBY_ERROR:このロールでは、ラックは問題のある状態で、アクティブではなく、特定のインスタンスのトラフィックを取得する準備ができていません。


    (注)  


    インスタンス ロールが STANDBY_ERROR の状態の場合、データの複製は停止します。この状態では、show georeplication-status コマンドは常に失敗します。ただし、インスタンスのロールが STANDBYに移行されると、データの複製が自動的に再開され、 コマンドは結果が passであると表示します。


  • FAILOVER_INIT:このロールでは、ラックはフェールオーバーを開始し、トラフィックを取得する状態ではありません。アプリケーションがアクティビティを完了するまでのバッファ時間は 2 秒です。

新規インストールの場合、ラックは次のロールでブートアップします。

  • PRIMARY:このロールでは、ラックはローカル インスタンス用です(各ラックには、ローカル インスタンスを識別するように構成されたローカル インスタンス ID があります)。新規インストール中は、ポッドをモニタリング用に構成しないことをお勧めします。セットアップの準備ができたら、モニタリング用にポッドを構成できます。

  • STANDBY:このロールでは、ラックは他のインスタンスの にあります。

アップグレードの場合、ラックは次のロールでブートアップします。

  • STANDBY_ERROR:このロールでは、アップグレード後にトラフィックを移動させるには手動の介入が必要なため、すべてのインスタンスがラックになります。

一般的なガイドライン

ラック間冗長性展開を構成する前に、一般的な注意事項を次に示します。

  • 両方のラックのソフトウェア バージョンが同じである必要があります。

  • 両方のラックの構成を同じにする必要があります。

  • インスタンス 1 とインスタンス 2 のループバック ポートは異なる必要があります。そうしないと、K8 IP/ポートの競合が原因で REST-EP POD は起動しません。

  • 両方のラックのそれぞれのインターフェイスは、同じ VLAN 上にある必要があります。たとえば、インスタンス 1 とインスタンス 2 の N4 VLAN は、同じ VLAN 上にある必要があります。そうでない場合、BGP ポリシーを適用しているときに、カーネルでルートの競合が発生します。

  • 適切なロールが割り当てられていることを確認するには、Cisco のテクニカル担当者に問い合わせて、次の手順を実行してください。

    詳細については、GR ペアのソフトウェア アップデートを参照してください。

  • フェールオーバー後、ラックが正常であることを確認してから、フェールバックを手動で実行します。自律フェールバックはサポートされていません。

    詳細については、回復手順を参照してください。

  • BGP ピアリングには、BGP スピーカー POD で非結合インターフェイスを使用します。

  • Proto ノードごとの BGP ピアリングは、2 つの BGP ルータ/リーフのみでサポートされます。2 つの Proto ノードを考慮すると、最大 4 つの BGP ネイバーシップを設定できます。

  • サービス トラフィックには結合インターフェイスを使用します。

  • Geo ポッドでは、次の 2 つの VIP を使用します。

    • ポッド間通信用の内部 VIP(ラック内)

    • ラック間 Geo ポッド通信用の外部 VIP。L2 サブネットの Proto ノードでのみ構成します。これはラック間の通信に使用されます。このノードには他のラックへの外部接続があります。

  • ラック内のすべてのノードに到達可能な Geo 内部 IP。

  • Geo 外部 IP:

  • CDL/Kafka VIP:L2 サブネット上の CDL ラベル付きノードで構成します。

  • 両方のラックで LI タップを有効にします。

  • MDF サーバは、両方のラックから到達可能である必要があります。

インスタンス認識

SMF でのインスタンス認識構成は、ローカル ラック インスタンスとリモート ラック インスタンスを区別するのに役立ちます。

ラック間冗長性インスタンスの構成

この設定は、複数ラックのラック間冗長性構成を提供するために必要です。インスタンス ID を使用して、ラックごとにエンドポイントを構成する必要があります。

構成例 1

以下は、1 つのインスタンスにおけるエンドポイント VIP 構成の構成例です。

config 
  instance instance-id gr_instanceId 
    endpoint endpoint_name 
        vip-ip vip_ip_address 
  exit 
exit 

例:

config
instance instance-id 1
 endpoint sbi
  vip-ip 209.165.201.21
 exit
exit
構成例 2

次に、インスタンスのシステム ID、クラスタ ID、スライス名に関する情報を提供する構成例を示します。

config 
  instances instance instance_id 
   system-id system_id 
   cluster-id cluster_id 
   slice-name cdl_slice_name 
  exit 
exit 

例:

config
 instances instance 1
  system-id smf
  cluster-id smf
  slice-name 1
 exit
exit

(注)  


インスタンスの system-idcluster-id 、および展開の app-namecluster-name に同じ値を使用することをお勧めします。


エンドポイント インスタンス認識の構成

ローカル ラックとリモート ラックごとに 2 つの インスタンスのみを構成でき、対応するエンドポイントをインスタンス化できます。

ローカル インスタンス ID は、ラックが冗長かどうかに関係なく、ローカル ラックの ID です。

ローカル インスタンス ID の構成

ローカル インスタンスは、 local-instance コマンドを使用して構成されます。

local-instance instance 1

エンドポイント構成は、各一意のインスタンス ID で指定されたインスタンスの下にある必要があります。

エンドポイントの構成例

次の構成例を参照してください。


(注)  


次の例では、 instance-id "1" がローカ ルインスタンス ID であり、その下に構成されたエンドポイントはローカル サイトに属しています。

必要に応じて、リモート ラック インスタンス ID2」をラックに属するエンドポイントに構成できます。


instance instance-id 1
 endpoint li
  replicas 1
  nodes    2
  vip-ip 209.165.201.6
  vip-ip 209.165.201.13
 exit
 endpoint gtp
  replicas 1
  nodes    2
  retransmission timeout 5 max-retry 4
  vip-ip 209.165.201.6
  vip-ip 209.165.201.4
  interface s5
   echo interval          60
   echo retransmission-timeout 5
   echo max-retransmissions 4
  exit
  interface s2b
   echo interval 60
   echo retransmission-timeout 5
   echo max-retransmissions 4
  exit
 exit
exit
instance instance-id 2
 endpoint li
  replicas 1
  nodes    2
  vip-ip 209.165.201.6
  vip-ip 209.165.201.13
 exit
exit
endpoint gtp
  replicas 1
  nodes    2
  retransmission timeout 5 max-retry 4
  vip-ip 209.165.201.6
  vip-ip 209.165.201.5
  interface s5
   echo interval 60
   echo retransmission-timeout 5
   echo max-retransmissions 4
  exit
  interface s2b
   echo interval 60
   echo retransmission-timeout 5
   echo max-retransmissions 4
  exit
 exit
exit

プロファイル SMF インスタンス認識の構成

ローカルおよびリモート インスタンスに対応する PGW FQDN のインスタンスを追加します。

次に、構成例を示します。


(注)  


次の例では、 instance-id1」がローカル インスタンス ID であり、その下に構成された SMF プロファイルがローカル ラックに属しています。

必要に応じて、リモート ラック インスタンス ID2」をラック間に属する FQDN に構成できます。


profile smf smf1
locality LOC1
allowed-nssai [ slice1 ]
instances 1 fqdn cisco.com.apn.epc.mnc456.mcc123
instances 2 fqdn cisco.com.apn.epc.mnc567.mcc123

ダイナミック ルーティング

ボーダー ゲートウェイ プロトコル(BGP)では、自律システム(AS)間にループフリーのドメイン間ルーティングを作成可能です。AS は、単一の技術管理に基づくルータのまとまりです。ルータは、外部ゲートウェイ プロトコルを使用して AS の外部にパケットをルーティングできます。BGP を使用したダイナミック ルーティング機能を使用すると、優先順位とルートとともに IP アドレスにサービスを提供する代替ローカル アドレスを持つ BGP ルータのネクストホップ属性を構成できます。App-Infra BGP スピーカー ポッドは、BGP を使用してポッド ルートをサービス VIP にアドバタイズすることにより、トラフィックのダイナミック ルーティングを可能にします。

この機能は、次の機能をサポートしています。

  • BGP を使用したダイナミック ルーティングによる着信トラフィックのサービス IP アドレスのアドバタイズ。

  • 発信トラフィックのルートの学習。

  • BGP ポッド フェールオーバーの処理。

  • プロトコル ポッド フェールオーバーの処理。

  • BGP スピーカーの統計と KPI。

  • BGP スピーカーをデバッグするためのログ メッセージ。

  • BGP スピーカー ポッドを有効または無効にします。

  • BGP を構成するための新しい CLI コマンド。

着信トラフィック

BGP は、ポート 179 でトランスポートプロトコルとして TCP を使用します。2 台の BGP ルータは相互に TCP 接続を形成し、各ルータはピアルータです。ピアルータはメッセージを交換し、接続パラメータを開いて確認します。

BGP スピーカーは、アクティブ/スタンバイ モードで着信トラフィックのプロトコル ポッドのルーティング情報を公開します。次の図を例として使用して、ダイナミック ルーティングの機能を理解してください。pod1 と pod2 の 2 つのプロトコル ポッドがあります。pod1 はアクティブで、pod2 はスタンバイ モードになっています。サービス IP アドレス 209.165.200.225 は、209.165.200.226 と 209.165.200.227 の両方のノードで構成されています。 pod1 はホスト 209.165.200.226 で、pod2 はホスト 209.165.200.227 で実行されています。ホスト IP アドレスはポッドサービスを公開します。BGP スピーカーは、ルート 209.165.200.225、209.165.200.226 および 209.165.200.227 に公開します。また、ポッドの優先順位を決定するために、プリファレンス値 110 と 100 を公開します。

図 4. アクティブ/スタンバイ トポロジでの着信トラフィックのダイナミック ルーティング

高可用性を実現するため、各クラスタにはアクティブ/スタンバイ トポロジを備えた 2 つの BGP スピーカー ポッドがあります。カーネルルートの変更は、プロトコル ポッドが実行されているホスト/ネットワーク レベルで実行されます。

MED 値

ローカル プリファレンスは IGP ネイバーでのみ使用され、MED 属性は EGP ネイバーでのみ使用されます。BGP では、より低い MED 値が推奨されます。

表 4. MED 値

ボンディング インターフェイスがアクティブ

VIP の存在

MED 値

Local Preference

はい

はい

1210

2220

はい

非対応

1220

2210

非対応

はい

1215

2215

いいえ

非対応

1225

2205

BGP スピーカー ポッドのブートストラップ

次の一連の手順で、BGP スピーカー ポッドをセットアップします。

  1. BGP スピーカー ポッドは、ポート 179 でトランスポート プロトコルとして TCP を使用し、これらのポッドは、Ops Center CLI で構成された AS 番号を使用します。

  2. Topology Manager を登録します。

  3. リーダー ポッドを選択します。アクティブなスピーカー ポッドがデフォルトの選択肢です。

  4. Ops Center CLI によって提供されるすべての BGP ピアへの接続を確立します。

  5. ETCD から既存のすべてのルートを公開します。

  6. CLI 構成を使用して、ルーティングのインポート ポリシーを構成します。

  7. 両方のスピーカー ポッドで gRPC ストリーム サーバを開始します。

  8. キャッシュ ポッドと同様に、各名前空間で 2 つの BGP スピーカー ポッドを実行する必要があります。

外部ネットワーク障害

NF インスタンスの起動により、BGP スピーカー K8s ポッドは、優先順位とルートとともに IP アドレスにサービスを提供するための代替ローカル アドレスを使用して、BGP ルータのネクストホップ属性を構成します。

地理的 HA がトリガされると、宛先サービスの IP アドレス、パスの接続性、および優先度の値に基づいてパスが選択されます。


Note


ポッド間の透過的な移行により、サブスクライバ セッションは影響を受けません。


Geo スイッチオーバー

SMF は、サービス IP アドレスを、対応するピア K8s クラスタ、コロケーションされたラック、または地理的に配置されたラックに透過的に移行することで、Geo スイッチオーバーを実現します。NF の起動時に、すべての K8s クラスタ名前空間はネクストホップの BGP ルータに登録し、サービス IP アドレスとローカル IP アドレス、優先順位とルート修飾値をアドバタイズします。

各論理 NF は、NRF または DNS に対する個別の NF インスタンス、個別の構成、および名前空間の個別 LCM を公開する。

内部ネットワーク障害

マスター ノードとのサーバ通信の中断、BFD の障害、または K8s ポッドのネットワークの問題が原因で、機能している K8s クラスタに内部ネットワーク障害が発生した場合、K8s の稼働状態の障害に基づく K8s の依存関係チェックにより、Geo HA がトリガされます。

次の図に示した例では、AMF または MME が透過的に代替ラック サーバの使用を開始しています。N11/S11/S5 および N4/Sxa サービスアドレスはサイト B のラック B に移行されます。システムはラック A のラック B からのシグナリングを継続します。ラック B では、既存のサブスクライバ セッションに影響を与えることなくセッションが続行されます。


Note


UE が再接続する前にコールが終了される状態によっては、接続中のコールがほとんど失敗する場合があります。


Figure 5. 内部ネットワーク障害に対する Geo HA

ローカル スイッチオーバー

SMF は、同じデータセンター内に配置されたピア K8s クラスタまたはラックにサービス IP アドレスを透過的に移行することで、Geo スイッチオーバーを実現します。NF の起動時に、すべての K8s クラスタ名前空間はネクストホップの BGP ルータに登録し、サービス IP アドレスとローカル IP アドレス、優先順位とルート修飾値をアドバタイズします。各論理 NF は、NRF または DNS に対する個別の NF インスタンス、個別の構成、および名前空間の個別 LCM を公開する。

リカバリとフェールバック

シームレスなフェールオーバーとフェールバックのために、UE セッションと対応するサービス IP アドレスがグループ化されます。

次のシナリオでは、UE セッションのシームレスなフェールオーバーとフェールバックのメカニズムについて説明します。

  • 通常:UE セッション セットは、最初のラックから作成、更新、または削除され、2 番目のラックに複製されます。

  • 失敗:UE セッション セットは、2 番目のラックから作成、更新、または削除されますが、可用性が低いため、最初のラックには複製されません。

  • リカバリ:すべての UE セッション データをリカバリするために、最初のラックの CDL が 2 番目のラックの CDL と自動同期を実行します。リカバリ中は、2 番目のラックはセッション セットからのトラフィックを処理し続けます。

コール フロー

ここでは、BGP を使用したダイナミック ルーティングの主要なコール フローについて説明します。

アクティブ/スタンバイ モードでの着信トラフィックのルートの公開

ここでは、アクティブ/スタンバイ モードでのコントロール プレーンとデータ プレーンのコール フローについて説明します。

コントロール プレーンのコール フロー

ここでは、コントロール プレーンのコール フローについて説明します。

Figure 6. コントロール プレーンのコール フロー
Table 5. コントロール プレーンのコール フローの説明

ステップ

説明

1

BGP スピーカーポッドが起動し、サービス IP アドレス、ネクストホップ IP アドレス(ホスト IP または loopbackEth)、および BGP スピーカー ポッドのインスタンス ID を取得します。

ポッド サービスは、ホスト IP または構成された loopbackEth を介して公開されます。

NF インスタンス ID は、ルートの優先順位やプリファレンスを検索するために使用されます。

2

BGP スピーカー ポッドは、Ops Center から vip-ip(サービス IP アドレス)を取得してルートをアドバタイズします。

データ プレーンのコール フロー

ここでは、データ プレーンのコール フローについて説明します。

Figure 7. データ プレーンのコール フロー
Table 6. データ プレーンのコール フローの説明

ステップ

説明

1

サービス IP アドレスの AMF 要求。要求は、複数の外部ルータを介して、接続された最も近いルータに送信されます。次に、ルータは優先順位が最も高い BGP スピーカー ポッドに要求を送信します。

2

BGP ルータは、プリファレンス値に基づいてデータ プレーン フローを設定します。前述のコール フローの例では、ルータは、プリファレンス値がより高いため、サービス要求をホスト 209.165.200.226 を介してポッド 1 にルーティングします。

ホスト(209.165.200.226)からのトラフィックは K8 サービス IP アドレス(209.165.201.10)に転送され、プロトコルポッド 1(209.165.200.226)またはポッド 2(209.165.200.227)に送信されます。

シングル プロトコル ポッド障害コール フロー

ここでは、シングル プロトコル ポッド障害コール フローについて説明します。

Figure 8. シングル プロトコル ポッド障害コール フロー
Table 7. シングル プロトコル ポッド障害コール フローの説明

ステップ

説明

1

サービス IP アドレスの AMF 要求。要求は、次に高いプリファレンス値に基づいて、複数の外部ルータを介して、最も近く接続された BGP ルータに送信されます。

2

BGP ルータは、プリファレンス値に基づいてデータ プレーン フローを設定します。最も高いプリファレンス値を持つポッドが使用できない場合、要求は K8 サービス ポッドを介して次に高いプリファレンス値を持つポッドにルーティングされます。

前述のコール フローの図に示した例では、IP アドレスの 209.165.200.227 を持つポッド 2 が、より高いプリファレンス値のために要求を処理します。

発信トラフィック コール フローのルートの学習

ここでは、発信トラフィックのルートの学習コール フローについて説明します。

Figure 9. 発信トラフィックのルートの学習コール フロー

AMF などのシステムが外部 BGP ルートにルートをアドバタイズします。次に、外部 BGP ルータがBGP を介してそのサービスのルートをアドバタイズします。

Table 8. 発信トラフィックのルートの学習コール フローの説明

ステップ

説明

1

BGP スピーカーがルーティング情報を受信します。

2

BGP プロトコルを使用してルートを学習します。

3

構成ポリシーに基づいて、システムはルーティング情報を確認するか、無視します。

4

ポリシーが許可されていない場合、システムはメッセージをログに記録し、統計情報を更新します。

5

プロトコル ポッドは、netlink go API を介してホスト上のカーネル スペースでルートを構成します。

BGP を使用したダイナミック ルーティングの構成

ここでは、BGP を使用してダイナミック ルーティングを構成する方法について説明します。

AS と BGP ルータの IP アドレスの構成

BGP ルータの AS と IP アドレスを構成するには、次のコマンドを使用します。

config 
   router bgp local_as_number 
   exit 
exit 

  • router bgp local_as_number :BGP ルータの AS の ID 番号を指定します。

BGP サービス リスニング IP アドレスの構成

BGP サービス リスニング IP アドレスを構成するには、次のコマンドを使用します。

config 
   router bgp local_as_number 
      interface interface_name 
   exit 
exit 

  • router bgp local_as_number :BGP ルータの AS の ID 番号を指定します。

  • interface interface_name :インターフェイスの名前を指定します。

BGP ネイバーの構成

BGP ネイバーを構成するには、次のコマンドを使用します。

config 
   router bgp local_as_number 
      interface interface_name 
      neighbor neighbor_ip_address remote-as as_number 
   exit 
exit 

  • router bgp local_as_number :BGP ルータの AS の ID 番号を指定します。

  • interface interface_name :インターフェイスの名前を指定します。

  • neighbor neighbor_ip_address :ネイバー BGP ルータの IP アドレスを指定します。

  • remote-as as_number :AS の ID 番号を指定します。

ボンディング インターフェイスの構成

インターフェイスに関連するボンディング インターフェイスを構成するには、次のコマンドを使用します。

config 
   router bgp local_as_number 
      interface interface_name 
      bondingInterface interface_name 
   exit 
exit 

  • router bgp local_as_number :BGP ルータの AS の ID 番号を指定します。

  • interface interface_name :インターフェイスの名前を指定します。

  • bondingInterface interface_name :インターフェイスに関連するボンディングインターフェイスを指定します。ボンディング インターフェイスがアクティブである場合、BGP は、より低い MED 値を提供することで、インターフェイス サービスに高いプリファレンスを与えます。

学習デフォルト ルートの構成

システム上に特定のルートを構成し、すべてのルートをサポートする必要があるユーザーは、learnDefaultRoutetrue に設定する必要があります。


Note


この設定は任意です。


デフォルト ルートの学習を構成するには、次のコマンドを使用します。

config 
   router bgp local_as_number 
      learnDefaultRoute true/false 
   exit 
exit 

  • router bgp local_as_number :BGP ルータの AS の ID 番号を指定します。

  • learnDefaultRoute true/false learnDefaultRoute パラメータを有効または無効にするオプションを指定します。true に設定すると、BGP はデフォルト ルートを学習し、カーネル スペースに追加します。デフォルトは False です。

BGP ポートの構成

BGP サービスのポート番号を構成するには、次のコマンドを使用します。

config 
   router bgp local_as_number 
      loopbackPort port_number 
   exit 
exit 

  • router bgp local_as_number :BGP ルータの AS の ID 番号を指定します。

  • loopbackPort port_number :BGP サービスのポート番号を指定します。デフォルト値は 179 です。

ポリシーの追加

BGP スピーカー ポッドは、ネイバーから多くのルート情報を学習します。ただし、発信トラフィックのサポートに使用されるのはそのうちのごく一部です。これは、 SMF が 外部の AMF/PCF に情報を送信している場合、出力トラフィックの処理にのみ必要です。ルートは、BGP スピーカーでインポート ポリシーを構成することでフィルタリングされ、学習したルートをプロトコルポッドに送信するために使用されます。

ポリシー追加用のサンプル CLI コードと、各パラメータに対応する説明を以下に示します。

$bgp policy <policy_Name> ip-prefix 209.165.200.225 subnet 16 masklength-range 21..24 as-path-set “^65100”
Table 9. インポート ポリシーのパラメータ
要素 説明 オプション
as-path-set AS パス値 “^65100” 対応
ip-prefix プレフィックス値 “209.165.200.225/16” 対応
masklength-range 長さの範囲 “21..24” はい
interface 送信元 IP として設定するインターフェイス(デフォルトは VM IP) eth0 対応
gateWay 着信ルートのゲートウェイを変更します 209.165.201.30 対応
modifySourceIp 着信ルートの送信元 IP の変更

デフォルト値は False です。

true はい
isStaticRoute カーネル ルートにスタティック IP アドレスを追加するフラグ

デフォルト値は False です。

true はい

BGP スピーカーの構成

この構成は、展開内の BGP スピーカーポッドの数を制御します。BGP スピーカーは、両方のラックからの着信トラフィックのサービス IP 情報をアドバタイズします。


(注)  


  • BGP ピアリングには、BGP スピーカーポッドで非結合インターフェイスを使用します。

  • Proto ノードごとの BGP ピアリングは、2 つの BGP ルータ/リーフのみでサポートされます。2 つの Proto ノードを考慮すると、最大 4 つの BGP ネイバーシップを設定できます。


instance instance-id  instance_id endpoint bgpspeaker interface { bgp | bfd } internal base-port start base_port_number 
config 
instance instance-id instance_id 
 endpoint bgpspeaker 
   replicas replica_id 
   nodes node_id 
   interface bgp 
     internal base-port start base_port_number  
   exit 
   interface bfd 
     internal base-port start base_port_number 
  exit 
exit 

  • instance instance-id instance_id :GR インスタンス ID を指定します。

  • base_port_number :論理 NF が構成されている場合にのみ、ポート範囲を指定します。この範囲は、展開によって異なります。

次に、設定例を示します。

instance instance-id 1
endpoint bgpspeaker
   replicas 1
   nodes    2
   interface bgp
     internal base-port start {24000}
   exit
   interface bfd
     internal base-port start {25000}
 exit

モニタリングおよびトラブルシューティング

この項では、BGP を使用したダイナミック ルーティング機能でサポートされている show コマンドについて説明します。

show bgp-kernel-route

BGP ルータのカーネル レベルのすべてのルートを表示するには、 show bgp-kernel-route コマンドを使用します。

以下の構成は、show bgp-kernel-route コマンドの出力例です。

kernel-route

-----bgpspeaker-pod-1 ----

 DestinationIP       SourceIP        Gateway

 209.165.200.235     209.165.200.239   209.165.200.239

-----bgpspeaker-pod-2 ----

 DestinationIP       SourceIP        Gateway

 209.165.200.235     209.165.200.229   209.165.200.244
show bgp-global

すべての BGP グローバル コンフィギュレーションを表示するには、 show bgp-global コマンドを使用します。

以下の構成は、show bgp-global コマンドの出力例です。

global-details

-----bgpspeaker-pod-1 ----
AS:        65000
Router-ID: 209.165.200.239
Listening Port: 179, Addresses: 209.165.200.239
AS:        65000
Router-ID: 209.165.200.232
Listening Port: 179, Addresses: 209.165.200.232

-----bgpspeaker-pod-2 ----
AS:        65000
Router-ID: 209.165.200.235
Listening Port: 179, Addresses: 209.165.200.235
AS:        65000
Router-ID: 209.165.200.246
Listening Port: 179, Addresses: 209.165.200.246
show bgp-neighbors

BGP ルータのすべての BGP ネイバーを表示するには、show bgp-neighbors コマンドを使用します。

以下の構成は、show bgp-neighbors コマンドの出力例です。

neighbor-details

-----bgpspeaker-pod-2 ----
Peer             AS  Up/Down State       |#Received  Accepted
209.165.200.244 60000 00:34:20 Establ      |       10        10
Peer           AS  Up/Down State       |#Received  Accepted
209.165.200.250 60000 00:34:16 Establ      |        3         3

-----bgpspeaker-pod-1 ----
Peer             AS  Up/Down State       |#Received  Accepted
209.165.200.244 60000 00:33:53 Establ      |       10        10
Peer           AS  Up/Down State       |#Received  Accepted
209.165.200.250 60000 00:33:53 Establ      |        3         3
show bgp-neighbors ip

BGP ルータのネイバーの詳細を表示するには、show bgp-neighbors ip コマンドを使用します。

以下の構成は、show bgp-neighbors ip コマンドの出力例です。

neighbor-details

-----bgpspeaker-pod-1 ----
BGP neighbor is 209.165.200.244, remote AS 60000
  BGP version 4, remote router ID 209.165.200.244
  BGP state = ESTABLISHED, up for 00:34:50
  BGP OutQ = 0, Flops = 0
  Hold time is 90, keepalive interval is 30 seconds
  Configured hold time is 90, keepalive interval is 30 seconds

  Neighbor capabilities:
    multiprotocol:
        ipv4-unicast:   advertised and received
    route-refresh:      advertised and received
    extended-nexthop:   advertised
        Local:  nlri: ipv4-unicast, nexthop: ipv6
    4-octet-as: advertised and received
  Message statistics:
                         Sent       Rcvd
    Opens:                  1          1
    Notifications:          0          0
    Updates:                1          2
    Keepalives:            70         70
    Route Refresh:          0          0
    Discarded:              0          0
    Total:                 72         73
  Route statistics:
    Advertised:             0
    Received:              10
    Accepted:              10

-----bgpspeaker-pod-2 ----
BGP neighbor is 209.165.200.244, remote AS 60000
  BGP version 4, remote router ID 209.165.200.244
  BGP state = ESTABLISHED, up for 00:35:17
  BGP OutQ = 0, Flops = 0
  Hold time is 90, keepalive interval is 30 seconds
  Configured hold time is 90, keepalive interval is 30 seconds

  Neighbor capabilities:
    multiprotocol:
        ipv4-unicast:   advertised and received
    route-refresh:      advertised and received
    extended-nexthop:   advertised
        Local:  nlri: ipv4-unicast, nexthop: ipv6
    4-octet-as: advertised and received
  Message statistics:
                         Sent       Rcvd
    Opens:                  1          1
    Notifications:          0          0
    Updates:                1          2
    Keepalives:            71         71
    Route Refresh:          0          0
    Discarded:              0          0
    Total:                 73         74
  Route statistics:
    Advertised:             0
    Received:              10
    Accepted:              10
show bgp-route-summary

BGP ルータのすべてのルートの詳細を表示するには、show bgp-route-summary コマンドを使用します。

以下の構成は、show bgp-route-summary コマンドの出力例です。

route-details

-----bgpspeaker-pod-1 ----
Table afi:AFI_IP safi:SAFI_UNICAST
Destination: 5, Path: 5

-----bgpspeaker-pod-2 ----
Table afi:AFI_IP safi:SAFI_UNICAST
Destination: 5, Path: 5
show bgp-routes

BGP ルータのすべてのルートを表示するには、show bgp-routes コマンドを使用します。

以下の構成は、show bgp-routes コマンドの出力例です。

bgp-route

-----bgpspeaker-pod-1 ----
   Network              Next Hop             AS_PATH       Age        Attrs
*> 209.165.200.235/24   209.165.200.250      60000         00:36:39   [{Origin: i} {Med: 0}]
*> 209.165.200.227/32   209.165.200.232                    00:36:44   [{Origin: e} {LocalPref: 220} {Med: 3220}]
*> 209.165.200.247/24   209.165.200.250      60000         00:36:39   [{Origin: i} {Med: 0}]
*> 209.165.200.251/24   209.165.200.250      60000         00:36:39   [{Origin: i} {Med: 0}]
*> 209.165.200.252/32   209.165.200.232                    00:36:44   [{Origin: e} {LocalPref: 220} {Med: 3220}]

-----bgpspeaker-pod-2 ----
   Network              Next Hop             AS_PATH        Age        Attrs
*> 209.165.200.235/24   209.165.200.250      60000          00:37:02   [{Origin: i} {Med: 0}]
*> 209.165.200.227/32   209.165.200.246                     00:37:11   [{Origin: e} {LocalPref: 220} {Med: 3220}]
*> 209.165.200.228/24   209.165.200.234      60000          00:37:02   [{Origin: i} {Med: 0}]
*> 209.165.200.229/24   209.165.200.234      60000          00:37:02   [{Origin: i} {Med: 0}]
*> 209.165.200.230/32   209.165.200.246                     00:37:11   [{Origin: e} {LocalPref: 220} {Med: 3220}]
KPI

以下の KPI は、この機能でサポートされます。

Table 10. BGP を使用したダイナミック ルーティングの統計情報

KPI 名

タイプ

説明/式

ラベル

bgp_outgoing_route

request_total

カウンタ

受信ルートの総数。

local_pref、med、next_hope、service_IP

bgp_outgoing_failed route

request_total

カウンタ

障害の発生した受信ルートの総数。

local_pref、med、next_hope、service_IP

bgp_incoming_route

request_total

カウンタ

着信ルートの総数。

interface、next_hope、service_IP

bgp_incoming_failedroute

request_total

カウンタ

障害の発生した着信ルートの総数。

interface、next_hope、service_IP

bgp_peers_total

カウンタ

追加されたピアの総数。

peer_ip、as_path

bgp_failed_peertotal

カウンタ

障害が発生したピアの総数。

peer_ip、as_path、error

IPAM

ここでは、ラック レベルでの IP アドレス管理(IPAM)について説明します。

図 10. IPAM

UPF 登録時、アクティブな IPAM インスタンスは、各 DNN の UPF ごとに 4 つのアドレス範囲を予約します。

  • 範囲 1:アクティブ クラスタ、nodemgr-1

  • 範囲 2:アクティブ クラスタ、nodemgr-2

  • 範囲 3:スタンバイ クラスタ、nomgr-1

  • 範囲-4:スタンバイ クラスタ、nodemgr-2

通常の動作中、Rack-1 は GR-instance-1 で起動するサブスクライバの UPF 登録/リリース、アドレス割り当て/リリースを処理します。

Rack-2 がダウンすると、Rack-1 が GR-Instance-2 のロール変更トリガを取得します。

  • Rack-1 の IPAM は、local-cache-pod(すでに同期されている)から GR-Instance-2 のコンテンツを復元します。

  • Rack-1 の IPAM は、GR-Instance-1 の処理に加えて、復元されたコンテンツを使用して GR-Instance-2 で起動するサブスクライバの UPF-Register/Release および address-allocate/release を処理します。

各 IPAM プールは、次のように GR インスタンスに関連付けられます。

  • プール名は、すべての インスタンスで一意です。

  • アドレス範囲は、VRF 内およびすべてのインスタンスにわたって一意です。

特定の インスタンスのアクティブとスタンバイの両方の SMF クラスタで、同じプールを構成する必要があります。

アドレス割り当て中に、アクティブ インスタンスは UPF 用に予約されたアドレス範囲から空き IP を割り当てます。

新しいアドレス範囲を使用できない場合は、スタンバイのアドレス範囲の所有権を現在のアクティブ インスタンスに変更し、そこからアドレス範囲の割り当てを続行します。

IPAM の構成

次のセクションでは、IPAM の構成例を示します。

SMF-1 の例

SMF-1 の構成例を次に示します。

ipam
 instance 1
  address-pool pool-1
  vrf-name ISP
   tags
   dnn dnn-1
  exit
  ipv4
    address-range 209.165.201.1 209.165.201.31
 exit
instance 2
 address-pool pool-2
  vrf-name ISP
  tags
   dnn dnn-2
  exit
  ipv4
    address-range 209.165.202.129 209.165.202.159
 exit
exit
SMF-2 の例

次に、 SMF-2の構成例を示します。

ipam
 instance 1
 address-pool pool-1
  vrf-name ISP
  tags
   dnn dnn-1
  exit
  ipv4
    address-range 209.165.201.1 209.165.201.31
 exit
 instance 2
 address-pool pool-2
  vrf-name ISP
   tags
   dnn dnn-2
  exit
  ipv4
    address-range 209.165.202.129 209.165.202.159
 exit
exit

Geo レプリケーション

Geo レプリケーションはラック間通信で、ラック内の POD、VIP、または BFD のモニタリングで使用されます。地理的冗長性は、次で構成されます。

  • ラックごとに Geo ポッドの 2 つのインスタンスが実行されていること。

  • 2 つの Geo ポッドがアクティブ/スタンバイモードで機能する。

  • 各 Geo ポッド インスタンスは、異なる Proto ノードまたは VM で生成されます。

  • Proto ノードまたは VIP を持つ VM で実行されている Geo ポッドがアクティブな Geo ポッドです。

  • アクティブな Geo ポッドが再起動した場合、VIP は他の Proto ノードまたは VM に切り替えられ、他の Proto ノードまたは VM で実行されているスタンバイ Geo ポッドがアクティブになります。

  • 地理ポッドは、ホスト ネットワーキング モードを使用します(UDP プロキシと同様)。

  • Geo ポッドでは、次の 2 つの VIP を使用します。

    • 内部:POD 間通信用の VIP(ラック内)

    • 外部:ラック間 Geo ポッド通信の VIP

      L2 サブネット上の Proto ノードでのみ構成されます。ラック間の通信に使用されます。このノードは他のラックに外部接続されています。

  • Logical-NF-InstanceID は、GR-Pair の両方の SMF で同じに設定する必要があります。

  • KeepAliveD モニタリングの場合:

    • 地理ポッドは、15000+(Logical-NF-InstanceID * 32)+ 4 としてベース ポートを使用します。

      Geo ポッドのベース ポートは、BGP スピーカーのポッド ポートとは異なる必要があります。

      • デフォルト ポート(論理 SMFなし):15004

      • Logical-nf-instance-id が 1 に構成され、ポートが 15036 に構成された論理 SMF の場合

    • UDP プロキシ ポッドは、ベースポートを 28000+Logical-NF-InstanceID として使用します。

      • デフォルト ポート(論理 SMFなし):28000

      • Logical-nf-instance-id が 1 に構成され、ポートが 28001 に構成された論理 SMF の場合

    • BGP スピーカー ポッドは、デフォルトのベース ポートを 20000+(Logical-NF-InstanceID * 32)+4 として使用します。

      • デフォルト ポート(論理 SMFなし):20004

      • 論理的 SMF の場合、logical-nf-instance-id が 1 に構成され、ポートが 20036 に設定される


(注)  


ETCD およびキャッシュ ポッド データのみがスタンバイ ラックに複製されます。


ETCD/CachePod レプリケーションの構成

エンドポイントは、インスタンス下で構成する必要があります。各ラックには 2 つの Geo 冗長ポッドが必要です。また、ETCD/CachePod レプリケーショのために、内部および外部の地理的インターフェイスに VIP を構成する必要があります。

instance instance-id  instance_id endpoint geo interface { geo-internal | geo-external } vip-ip { vip_ip_address } vip-port { vip_port_number }
 
config 
instance instance-id instance_id 
 endpoint geo 
  replicas replica_id 
  nodes node_id 
  internal base-port start base_port_number 
  interface geo-internal 
   vip-ip vip_ip_address vip-port vip_port_number 
  exit 
  interface geo-external 
   vip-ip vip_ip_address vip-port vip_port_number 
  exit 
exit 
exit 

  • instance instance-id instance_id :GR インスタンス ID を指定します。1 つのインスタンス ID はローカル ラック用、もう 1 つは別のラック用です。

  • vip-ip vip_ip_address :内部/外部の地理的インターフェイスの VIP IP アドレスを指定します。

  • vip-port vip_port_number :VIP ポート番号を指定します。

  • internal base-port start base_port_number :論理 NF が構成されている場合にのみ、ポート範囲を指定します。

次に、設定例を示します。

instance instance-id 1
endpoint geo
  replicas 1
  nodes 2
  internal base-port start 25000
  interface geo-internal
   vip-ip 209.165.201.8 vip-port 7001
  exit
  interface geo-external
   vip-ip 209.165.201.8 vip-port 7002
  exit
exit

Geo モニタリング

このセクションでは、Geo モニタリングについて説明します。

ポッド モニタリング

ラック間セットアップでポッド モニタリングおよびフェールオーバーしきい値を設定するには、次の構成例を使用します。地理ポッドは、構成されたポッド名をモニタします。

config 
 geomonitor 
  podmonitor pods pod_name 
   retryCount value 
   retryInterval interval_value 
   retryFailOverInterval failover_interval 
   failedReplicaPercent percent_value 
  exit 
 exit 

  • pods pod_name :モニタされるポッドの名前を指定します。たとえば、Cache-pod、rest-ep などです。

  • retryCount value :ポッドが ping に失敗した場合に再試行する再試行カウンタ値を指定します。その後、ポッドはダウンとしてマークされます。1 〜 10 の範囲の整数である必要があります。

  • retryInterval interval_value :ポッドが ping に成功した場合の再試行間隔をミリ秒単位で指定します。200 ~ 10000 の範囲の整数である必要があります。

  • retryFailOverInterval failover_interval :ポッドが ping に失敗した場合の再試行間隔をミリ秒単位で指定します。200 ~ 10000 の範囲の整数である必要があります。

  • failedReplicaPercent percent_value :ラック間冗長性フェールオーバーがトリガされるまでの、失敗したレプリカのパーセント値を指定します。10 ~ 100 の範囲の整数である必要があります。

設定例

次に、設定例を示します。

geomonitor podmonitor pods cache-pod
 retryCount 3
 retryInterval 5
 retryFailOverInterval 1
 failedReplicaPercent 40
exit

リモート クラスタ モニタリング

リモート クラスタ モニタリングは、トラフィックのトラフィックフローが中断されないように、ロール(リモート ラックが STANDBY_ERROR 状態の場合はセルフ プライマリになります)を自動修正します。ただし、このロールの自動修正は、特定のロールに対してのみ実行されます。

この機能を構成するには、次の構成例を使用します。

config 
    geomonitor 
        remoteclustermonitor 
            retryCount value 
            retryInterval interval_value 
            end 

  • retryCount value :現在のラックを PRIMARY にする前の再試行回数を指定します。1 〜 10 の範囲の整数で指定する必要があります。デフォルト値は 3 です。

  • retryInterval interval_value :リモートラックのステータスが取得されるまでの再試行間隔をミリ秒単位で指定します。200 ~ 50000 の範囲の整数である必要があります。デフォルト値は 3000 です。

設定例

次に構成例を示します。

geomonitor remoteclustermonitor
retryCount 3
retryInterval 3000

トラフィック モニタリング

次のコマンドを使用して、トラフィックをモニタします。

config 
 geomonitor 
  trafficMonitor 
   thresholdCount value 
   thresholdInterval interval_value 
  exit 
 exit 

  • thresholdCount value :スタンバイ インスタンスの受信コール数を指定します。0 〜 10000 の範囲の整数である必要があります。デフォルト値は 0 です。カウンタ値として、UDP プロキシと REST-EP の両方を考慮する必要があります。

  • thresholdInterval interval_value :しきい値カウント値に達するまでの最長時間をミリ秒単位で指定します。100 〜 10000 の範囲の整数である必要があります。デフォルト値は 3000 です。

設定例

次に構成例を示します。

geomonitor trafficmonitor
thresholdCount 3
thresholdInterval 3000

Geo 冗長性の強化

Geo 冗長性強化アクティビティは、次のようなさまざまなシナリオに起因する複数の問題に対処します。

  • ハードウェア障害

  • Network failure

  • プロセスの失敗

  • 異常な状態

  • コード ウォークスルー

これらの失敗したシナリオは、Geo レプリケーション ポッドの機能に影響を与え、システムの誤動作を引き起こします。これらの問題に対処するには、Geo レプリケーション ポッドのさまざまな領域を強化する必要があります。

機能の仕組み

強化された Geo レプリケーション ポッドの次の領域は、地理的冗長性強化機能の一部です。

  • システムは、正常に動作すると、GRPC レプリケーションと管理ストリームを使用できるようになります。

  • システムは、すべてのシナリオで両方のインスタンスに正しいロールがあることを保証します。

  • システムは、ラック 1 とラック 2 の Geo レプリケーション ポッド間のデータ レプリケーションを同期状態に維持します。

  • システムは、チェックサムとチェックポイント データが両方のラックで常に正しいことを確認して、データの整合性を確保します。

  • システムは、レプリケーション データが同期されなくなったときにユーザーが同期するメカニズムを提供しますが、手動による介入が必要です。

    このコマンドの詳細については、「Geo レプリケーションのプル データ」セクションを参照してください。

  • システムは、Geo レプリケーション ポッド間での Geo VIP 移動が機能に影響しないようにします。

  • システムは、依存するプロセスの障害がユーザーの機能に影響を与えないようにするための対策を講じています。

制限事項

この機能の既知の制限の一部は次のとおりです:

  • レプリケーション データの損失:両方のキャッシュ ポッドがパートナー ラックでダウンしているため、スイッチオーバーが発生すると発生する可能性があります。

OAM サポート

ここでは、この機能の操作、管理、およびメンテナンス サポートについて説明します。

KPI のサポート

次の一連の統計は、地理的冗長性の強化とセキュア化機能をサポートしています:

  1. KPI 名:geo_replication_finalpull_total

    次の表に、geo_replication_finalpull_total KPI の詳細を示します。

    説明

    機能

    ラベル名

    有効な値

    この KPI には、機能メッセージの最終取得時点で存在する Geo レプリケーションの総数が表示されます。

    geo_replication_finalpull_total:機能の出力です。

    MessageType

    これは要求または応答のメッセージ タイプです。

    TotalTimeTaken

    これは、リクエストの処理にかかった合計時間です。

    GRInstanceNumber

    これは、次のリストにある GR インスタンス ID の番号です。

    • 1

    • 2

    • Instance.1

    • Instance.2

BFD モニタリング

双方向フォワーディング検出(BFD)プロトコルは、迅速なネットワーク障害検出のために BGP とともに使用されます。クラスタ(NF)との BGP ピアリングの間に接続障害が発生するたびに、フェールオーバーがトリガされ、トラフィック障害の影響が最小限に抑えられます。

config 
  router bgp as 
    bfd interval interval min_rx min_rx multiplier multiplier 
    loopbackPort loopbackPort loopbackBFDPort loopbackBFDPort 
  interface interface_id  (BGP on non-bonded interface <-- loopbackEth)
    bondingInterface bondingInterface  (leaf6-nic)
    bondingInterface bondingInterface  (leaf6-nic)
    neighbor neighbor_ip_address remote-as remote_as fail-over fail_over_type 
  exit 
  interface interface_id  (BGP on non-bonded interface <-- loopbackEth)
    bondingInterface bondingInterface  (leaf7-nic)
    bondingInterface bondingInterface  (leaf7-nic)
    neighbor bondingInterface remote-as remote_as fail-over fail_over_type 
  exit 
  policy-name policy_name  
   as-path-set as_path_set 
   gateWay gateWay_address 
   interface interface_id_source 
   ip-prefix ip_prefix_value 
   isStaticRoute false | true 
   mask-range mask_range 
   modifySourceIp false | true 
  exit 
exit 

  • bgp as :自律システム(AS)パスセットを指定します。

  • bfd :BFD 構成を指定します。

    • interval interval :BFD 間隔をミリ秒単位で指定します。

    • min_rx min_rx :BFD の最小 RX をミリ秒単位で指定します。

    • multiplier multiplier :BFD 間隔の乗数を指定します。

  • interface interface_id :BGP ローカル インターフェイスを指定します。

    • bondingInterface bondingInterface :リンクされたボンディング インターフェイスを指定します。

    • neighbor neighbor_ip_address :ネイバーの IP アドレスを指定します。

      • fail-over fail_over_type :フェールオーバー タイプを指定します。

      • remote-as remote_as :BGP ネイバーの自律システム(AS)番号を指定します。

  • learnDefaultRoute :デフォルト ルートを学習し、カーネル スペースに追加します

  • loopbackBFDPort loopbackBFDPort :BFD ローカル ポートを指定します。

  • loopbackPort loopbackPort :BGP ローカル ポートを指定します。

  • policy-name policy_name :ポリシー名を指定します。

    • as-path-set as_path_set :自律システム(AS)パスセットを指定します。

    • gateWay gateWay_address :ゲートウェイ アドレスを指定します。

    • interface interface_id_source :送信元 IP として設定するインターフェイスを指定します。

    • ip-prefix ip_prefix_value :IP プレフィックス値を指定します。

    • isStaticRoute false | true :カーネル スペースでスタティック ルートを追加するかどうかを指定します。デフォルト値は false です。

    • mask-range mask_range :マスク範囲を指定します。

    • modifySourceIp false | true :着信ルートの送信元 IP を変更します。デフォルト値は false です。

      true:このオプションは、UDP 関連でない VIP に使用されます。特定のインターフェイスの送信元 IP は、SMF からパケットを送信するときに送信元 IP として使用されます。

      false:このオプションは、UDP 関連のすべての VIP に使用されます。VIP は、SMF からパケットを送信するときに送信元 IP として使用されます。

構成例は次のとおりです。

router bgp 65000
  bfd interval 250000 min_rx 250000 multiplier 3
  loopbackPort 179 loopbackBFDPort 3784
interface ens160 (BGP on non-bonded interface <-- loopbackEth)
  bondingInterface enp216s0f0 (leaf6-nic)
  bondingInterface enp216s0f1 (leaf6-nic)
  neighbor leaf6-ip remote-as 60000 fail-over bfd
exit
interface ens192 (BGP on non-bonded interface <-- loopbackEth)
  bondingInterface enp94s0f1 (leaf7-nic)
  bondingInterface enp94s0f0 (leaf7-nic)
  neighbor leaf7-ip remote-as 60000 fail-over bfd
exit
policy-name allow-all ip-prefix 209.165.201.30/0 mask-range 0...32
exit

BFD を使用した BGP ルータ構成

show running-config router          
router bgp 65142
 learnDefaultRoute false
 bfd interval 250000 min_rx 250000 multiplier 3
 interface enp94s0f0.3921
  bondingInterface enp216s0f0
  bondingInterface enp94s0f0
  neighbor 209.165.201.24 remote-as 65141 fail-over bfd
 exit
 interface enp94s0f1.3922
  bondingInterface enp216s0f1
  bondingInterface enp94s0f1
  neighbor 209.165.202.24 remote-as 65141 fail-over bfd

ネイバーの BFD ステータスを表示

show bfd-neigbor
status-details

----- bgpspeaker-pod-1----

Peer             Status

209.165.202.142  STATE_DOWN
----- bgpspeaker-pod-2----

Peer             Status

209.165.202.142  STATE_UP
policy-name allow-n11 ip-prefix 209.165.200.225/54 mask-range 25..32 interface bd1.n11.2271 modifySourceIp true isStaticRoute true gateWay 209.165.201.14

上記の例では、modifySourceIp は true に設定されています。

  • AMF サブネット:209.165.200.225/54

    N11 Svc ボンド物理インターフェイス:bd1.n11.2271(IP アドレス:209.165.201.23)

    N11 Svc ボンド VxLAN Anycast GW:209.165.201.14

    N11 VIP アドレス:209.165.201.7

  • SMF アウトバウンド パケット(送信元 IP は 209.165.201.23 になります)

    SMF へのインバウンド パケット(宛先 IP は 209.165.201.7 になります)

policy-name allow-n4-1 ip-prefix 209.165.201.17/41 mask-range 24..32 interface bd2.n4.2274 gateWay 209.165.201.17

上記の例では、modifySourceIp は false(デフォルト)に設定されています。

  • UPF N4 インターフェイス IP:209.165.201.17/41

    N4 Svc ボンド物理インターフェイス:bd2.n4.2274(IP アドレス:209.165.201.23)

    N4 Svc ボンド VxLAN Anycast GW:209.165.201.17

    N4 VIP アドレス:209.165.201.14

  • SMF アウトバウンド パケット(送信元 IP は 209.165.201.14 になります)

    SMF へのインバウンド パケット(宛先 IP は 209.165.201.14 になります)

CDL GR の展開

デフォルトでは、CDL は db-ep の 2 つのレプリカ、1 つのスロット マップ(マップごとに 2 つのレプリカ)、および 1 つのインデックス マップ(マップごとに 2 つのレプリカ)で展開されます。


(注)  


YANG の CDL コンテナを構成することを推奨します。


CDL GR の前提条件

CDL GR を展開する前に、ユーザーは次を構成する必要があります。

  • CDL セッション データベースを削除し、基本構成を定義します。

  • CDL 用の Kafka。

  • CDL 用の Zookeeper。

CDL インスタンス認識とレプリケーション

CDL では、既存の GR 関連パラメータとともに、すべてのラックで機能フラグを使用して GR インスタンス認識を有効にする必要があります。また、この機能をすべてのラックで機能させるには、システム ID からスライス名へのマッピングも提供する必要があります。

CDL には Geo レプリケーション(GR)フェールオーバー通知も用意されていているため、セッション データのタイマーの期限切れ、および現在アクティブなラックへの一括通知を通知できます。CDL は GR フェールオーバー通知のために、App-Infra を介してボーダー ゲートウェイ プロトコル(BGP)を使用します。

CDL は両方の GR ラックのキー値を登録します。登録したキー値に変更があると、App-Infra は CDL に通知を送信します。キー値は、CDL システム ID または GR インスタンスの状態を示します。GR インスタンスは、 キーの CDL システム ID または GR インスタンス ID を使用して CDL スライスにマップされます。

システム ID は両方のラックで必須です。NF 構成の GR インスタンス ID が CDL システム ID と一致している必要があります。

CDL には、インスタンス固有のデータ スライスがあります。また、ユーザーは起動時にインスタンス固有のスライス情報を構成できます。

  • CDL は、有効期限切れ時またはアクティブなスライスからの一括通知要求時にデータを通知します。

  • CDL は、app-infra memory-cache からの通知に基づいてアクティブインスタンスを決定します。

  • CDL スライスは、異なる種類のデータを保存する CDL インスタンス内のパーティションです。この場合、NF はデータの別のインスタンスを保存します。


(注)  


CDL スライス名は、GR で構成されているスライス名と一致する必要があります。


CDL インスタンス認識の構成

CDL インスタンス認識を構成するには、次のコマンドを使用します。

config 
cdl 
 datastore datastore_session_name 
   features 
     instance-aware-notification 
       enable [ true | false ] 
       system-id system_id 
        slice-names slice_names 
    end 

  • datastore datastore_session_name :データストア名を指定します。

  • enable [ true | false ] :スライスの GR インスタンス状態チェックを有効にします。

  • system-id system_id :システム ID からスライス名へのマッピング。

  • slice-names slice_names :システム ID に関連付けられているスライス名のリストを指定します。CDL スライス名は、GR で構成されたスライス名と一致する必要があります。

次に、設定例を示します。

cdl datastore session
 features instance-aware-notification enable true
 features instance-aware-notification system-id 1
  slice-names [ sgw1 smf1 ]
 exit
 features instance-aware-notification system-id 2
  slice-names [ sgw2 smf2 ]
 end
CDL レプリケーションの構成

ここでは、CDL レプリケーションの構成について説明します。

  1. Geo HA 関連の構成パラメータを使用せずに、Rack-1 CDL HA システムを構成します。

    1. 構成でシステム ID を 1 に設定します。

    2. 要件に従って、スロット マップ/レプリカとインデックスマップ/レプリカと Kafka レプリカを設定します。

    以下に設定例を示します。

    cdl system-id 1 
    cdl node-type session 
    cdl datastore session 
    endpoint replica replica_id 
      slot map 4 
      slot replica 2 
      index map 1 
      index replica 2 
    cdl kafka replica 2 
    
  1. Rack-2 から Rack-1 への通信用に、Rack-1 で外部 IP を構成します。

    1. Rack-1 で Geo レプリケーションを有効にし、リモートラックを Rack-1 の 2 として構成します。

      cdl enable-geo-replication true
    2. Rack-2 からアクセスできるように CDL エンドポイントの外部 IP を構成します。

      cdl datastore session endpoint external-ip site-1_external_ip
    3. すべての Kafka レプリカの外部 IP とポートを構成します。

      したがって、Kafka 用に 2 つのレプリカ(デフォルト)が構成されている場合、ユーザーは異なる <ip>+ <port> ペアでサポートされます。

      cdl kafka external-ip site-1_external_ip port1 cdl kafka external-ip site-1_external_ip port2 
  2. Rack-2 のリモートラック情報を追加します。

    • Rack-2 でのリモートラック cdl-ep の構成:

      cdl remote-site 1 db-endpoint host site-1_cdl_ep_ip

      cdl remote-site 1 db-endpoint port site-1_cdl_ep_port

      (ポートの例:8882)

    • Rack-2 のリモートラック Kafka 構成:

      cdl remote-site 1 kafka-server site-1_kafka1_ip site-1_kafka1_port

      cdl remote-site 1 kafka-server site-1_kafka2_ip site-1_kafka2_port

    • セッション データストア構成をリモート Rack-2 構成に誘導します。

      cdl datastore session geo-remote-site 1

    • (任意)SSL 証明書を構成して、Rack-1 のリモートラックとのセキュアな接続を確立します。証明書はすべて、複数行の生のテキスト形式です。証明書が有効でない場合、サーバの接続は非セキュアな接続のままです。

      cdl ssl-config certs site-2_external_ip ssl-key <ssl_key>

      cdl ssl-config certs site-2_external_ip ssl-crt <ssl_crt>

  3. Rack-2 で GR 構成をコミットします。

    • 構成をコミットし、ポッドを Rack-2 に展開します。

    • すべてのポッドが実行状態であることを確認します。

    • 両方のラックを展開したら、両方のラックのミラー メーカー ポッドが実行中で、準備完了状態であることを確認します。

HA:

cdl node-type db-ims

cdl datastore session
 endpoint replica 2
 index map    1
 index write-factor 1
 slot replica 2
 slot map     4
 slot write-factor 1
exit

k8 label cdl-layer key smi.cisco.com/node-type value smf-ims-session

Rack-1:

cdl system-id          1
cdl node-type          session
cdl enable-geo-replication true
cdl zookeeper replica 1

cdl remote-site 2
 db-endpoint host 209.165.201.21 >> Rack-2 external CDL IP
 db-endpoint port 8882
 kafka-server 209.165.201.21 10092 >> Rack-2 external CDL IP
 exit
exit

cdl label-config session
 endpoint key smi.cisco.com/node-type1
 endpoint value smf-cdl
 slot map 1
  key   smi.cisco.com/node-type1
  value smf-cdl
 exit
 index map 1
  key   smi.cisco.com/node-type1
  value smf-cdl
 exit
exit
cdl logging default-log-level debug

cdl datastore session
 label-config    session
 geo-remote-site [ 2 ]
 slice-names     [ 1 2 ]
 endpoint cpu-request 100
 endpoint replica 2
 endpoint external-ip 209.165.201.25 >> Rack-1 external CDL IP
 endpoint external-port 8882
 index cpu-request 100
 index replica 2
 index map   1
 slot cpu-request 100
 slot replica 2
 slot map    1
exit

cdl kafka replica 1
cdl kafka label-config key smi.cisco.com/node-type1
cdl kafka label-config value smf-cdl
cdl kafka external-ip 209.165.201.25 10092 >> Rack-1 external CDL IP

Rack-2:

cdl system-id          2
cdl node-type          session
cdl enable-geo-replication true
cdl zookeeper replica 1

cdl remote-site 1
 db-endpoint host 209.165.201.25 >> Rack-1 external CDL IP
 db-endpoint port 8882
 kafka-server 209.165.201.25 10092 >> Rack-1 external CDL IP
 exit
exit

cdl label-config session
 endpoint key smi.cisco.com/node-type12
 endpoint value smf-cdl
 slot map 1
  key   smi.cisco.com/node-type12
  value smf-cdl
 exit
 index map 1
  key   smi.cisco.com/node-type12
  value smf-cdl
 exit
exit

cdl datastore session
 label-config    session
 geo-remote-site [ 1 ]
 slice-names     [ 1 2 ]
 endpoint cpu-request 100
 endpoint replica 2
 endpoint external-ip 209.165.201.21 >> Rack-2 external CDL IP
 endpoint external-port 8882
 index cpu-request 100
 index replica 2
 index map   1
 slot cpu-request 100
 slot replica 2
 slot map    1
exit

cdl kafka replica 1
cdl kafka label-config key smi.cisco.com/node-type12
cdl kafka label-config value smf-cdl
cdl kafka external-ip 209.165.201.21 10092 >> Rack-2 external CDL IP

合法的傍受

合法的傍受(LI)機能を使用すると、法執行機関(LEA)がサブスクライバの通信を傍受できます。LI 機能を使用すると、ネットワーク オペレータは、対象のモバイル ユーザーの制御メッセージとデータ メッセージを傍受できるようになります。このサポートを呼び出すため、LEA はネットワーク オペレータに特定のモバイル ユーザーの傍受を開始するように要求します。法的な承認がこの要求をサポートします。

  1. 合法的傍受(LI)タップは、すべてのラックで構成/有効にする必要があります。1 つのラックで LI 構成に失敗した場合、特定のサブスクライバのタップをすべてのラックで有効にするように LEA を再構成する必要があります。


    (注)  


    LI タップ構成はラック間で同期されません。

    したがって、LI タップ構成はすべてのラックに必須です。

    LI タップ構成の詳細については、Cisco のテクニカル担当者にお問い合わせください。


  2. GR インスタンス認識は、合法的傍受 src-address にのみ適用されます。

    例:

    lawful-intercept instance 1 src-addr 209.165.200.225

    または

    lawful-intercept 
      instance 1 
        src-addr 209.165.200.225
  3. show コマンドはインスタンスを認識しません。特定のクラスタで構成されているすべてのタップを表示します。

    LI show コマンドの詳細については、Cisco のテクニカル担当者にお問い合わせください。

  4. すべての GR インスタンスがクラスタでスタンバイ状態にあり、アクティブな LI タップが失敗し、CLI メッセージ「ラックがスタンバイ モードにあるため、アクティブなタップは許可されません。camp on を試行してください」が表示された場合、同じサブスクライバで camp-on タップを構成します。

RADIUS 設定

NAS-IP と NAS-Identifier はインスタンス対応です。プロファイル RADIUS 構成では、instance-id ごとに異なる NAS-IP と NAS-Identifier を構成できます。既存の非インスタンス NAS-IP および NAS-Identifier 構成が、ラックのローカル インスタンスのデフォルト nas-ip およびデフォルト nas-id として使用されます。

次の構成例を参照してください。

profile radius
 attribute
  instance 1
   nas-ip 209.165.200.225  --> Instance-1 specific NAS-IP, used for common AUTH & ACCT
   nas-identifier  smf1    --> Instance-1 specific NAS-Identifier, used for common AUTH & ACCT
  exit
  instance 2
   nas-ip 209.165.200.230  --> Instance-2 specific NAS-IP, used for common AUTH & ACCT
   nas-identifier  smf2    --> Instance-2 specific NAS-Identifier, used for common AUTH & ACCT
  exit
 exit
 accounting
  attribute
   instance 1
    nas-ip 209.165.200.225  --> Instance-1 specific NAS-IP, used for common ACCT
    nas-identifier  smf1    --> Instance-1 specific NAS-Identifier , used for common ACCT
   exit
   instance 2
    nas-ip 209.165.200.230  --> Instance-2 specific NAS-IP, used for common ACCT
    nas-identifier  smf2    --> Instance-2 specific NAS-Identifier , used for common ACCT
   exit
  exit
 exit
 server-group g1
  attribute
   instance 1
    nas-ip 209.165.200.225  --> Instance-1 specific NAS-IP, used for server-group <g1> AUTH & ACCT
    nas-identifier  smf1    --> Instance-1 specific NAS-ID, used for server-group <g1> Auth &Acct
   exit
   instance 2
    nas-ip 209.165.200.230  --> Instance-2 specific NAS-IP, used for server-group <g1> AUTH & ACCT
    nas-identifier  smf2    --> Instance-2 specific NAS-ID,used for server-group <g1>AUTH&ACCT
   exit
  exit
  accounting
   attribute
    instance 1
     nas-ip 209.165.200.225 --> Instance-1 specific NAS-IP, used for server-group <g1> ACCT
     nas-identifier  smf1   --> Instance-1 specific NAS-ID, used for server-group <g1> ACCT
    exit
    instance 2
     nas-ip 209.165.200.230 --> Instance-2 specific NAS-IP, used for server-group <g1> ACCT
     nas-identifier  smf2   --> Instance-2 specific NAS-ID, used for server-group <g1> ACCT
    exit
   exit
  exit
 exit
exit

endpoint ポッド 構成が特定のインスタンスの下に移動するため、Radius Disconnect-Request VIP もインスタンス対応になります。

instance instance-id 1
 endpoint radius
  replicas 1
  interface coa-nas
   vip-ip 209.165.202.130 vip-port 3799  --> Instance-1 specific Radius-Disconnect-Msg-VIP & PORT
  exit
 exit
exit
instance instance-id 2
 endpoint radius
  replicas 1
  interface coa-nas
   vip-ip 209.165.202.129 vip-port 3799  --> Instance-2 specific Radius-Disconnect-Msg-VIP & PORT
  exit
 exit
exit

GR ペアのソフトウェア アップデート

config commit を基準として考慮してください。同じチェックリストは、他のアップグレード シナリオにも適用できます。

チェックリスト


(注)  


両方のラック(Rack-1 とRack-2)で cluster sync を同時に実行しないでください。Rack-1 のアップグレードを続行する前に、Rack-1 で手動スイッチオーバーをトリガしてください。


  • 両方のラックで同時に config commit を実行しないでください。各ラックで個別に config commit を実行してください。

  • Rack-1 で config commit を実行する前に、Rack-1 で CLI ベースのスイッチオーバーを開始し、Rack-2 に両方のインスタンス(instance-id 1 と instance-id 2)のプライマリ所有権があることを確認してください。

  • Rack-1 で config commit を 実行します。config commit が成功し、ポッドが再起動し、実行状態に戻って最新の helm チャートを取得するのを待ちます(該当する場合)。

  • Rack-1 のロールを Primary に戻します(両方のラックのロールを切り替え / リセットします)。

  • Rack-1(Primary)と Rack-2(Standby)の使用可能なロールが、予期されるステータスになっていることを確認します。

  • Rack-2 についても前述のチェックリストを繰り返します。

ソフトウェア アップグレード

GR が有効な場合の Rack-1 のアップグレード:

  1. Rack-1 の両方のインスタンスで使用可能なロールが PRIMARY/STANDBY であることを確認します。

    show role instance-id 1
    result "PRIMARY"
    show role instance-id 2
    result "STANDBY"
  2. Rack-1 の両方のインスタンスのロールの切り替えを開始し、フェールバック間隔を 0 秒にして STANDBY に移行します。このステップにより、ロールが PRIMARY/STANDBY から STANDBY_ERROR/STANDBY_ERROR に移行します。

    geo switch-role instance-id 1 role standby [failback-interval 0]
    geo switch-role instance-id 2 role standby [failback-interval 0]

    (注)  


    • 両方のラック間のハートビートが正常である必要があります。

    • CLI failback-interval は、リリース間のアップグレードの下位互換性を提供するオプションのコマンドです。 failback-interval の値は 0 です。現在のリリースでは廃止され、後続のリリースでは廃止されます。


  3. 両方のインスタンスの使用可能なロールが Rack-1 の STANDBY_ERROR に移動したことを確認します。

    show role instance-id 1
    result "STANDBY_ERROR"
    show role instance-id 2
    result "STANDBY_ERROR"
  4. 両方のインスタンスの使用可能なロールが Rack-2 の PRIMARY に移動したことを確認します。

    show role instance-id 1
    result "PRIMARY"
    show role instance-id 2
    result "PRIMARY"
  5. Rack-1 の要件に従って、システム モードのシャットダウン/実行を使用して、ローリング アップグレード(または)非グレースフル アップグレードを実行します。レプリケーションが完了するまで、GR のスイッチオーバーと SMF のシャットダウンの間に 5 分の間隔を設けます。

  6. アップグレード手順の完了後に次の手順を実行します。Rack-1 で正常性チェックを実行し、POD が起動し、Rack-1 が正常であることを確認します。

  7. 両方のインスタンスで使用可能なロールが Rack-1 の STANDBY_ERROR モードのままであることを確認します。

    show role instance-id 1
    result "STANDBY_ERROR"
    show role instance-id 2
    result "STANDBY_ERROR"
  8. Rack-1 の両方のインスタンスのロールの STANDBY へのリセットを開始します。このステップにより、ロールが STANDBY_ERROR/STANDBY_ERROR から STANDBY/STANDBY に移行します。

    geo reset-role instance-id 1 role standby
    geo reset-role instance-id 2 role standby
  9. 両方のインスタンスのロールが Rack-1 の STANDBY に移動したことを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
    result "STANDBY"
  10. Rack-2 の instance-id 1 のロールの STANDBY への切り替えを開始します。この手順により、Rack-2 の使用可能なロールが PRIMARY/PRIMARY から STANDBY_ERROR/PRIMARY に、Rack-1 の使用可能なロールが STANDBY/STANDBY から PRIMARY/STANDBY に移行します。

    geo switch-role instance-id 1 role standby [failback-interval 0]
  11. Rack-2 の インスタンスで使用可能なロールが STANDBY_ERROR/PRIMARY であることを確認します。

    show role instance-id 1
    result "STANDBY_ERROR"
    show role instance-id 2
    result "PRIMARY"
  12. Rack-1 の両方のインスタンスで使用可能なロールが PRIMARY/STANDBY であることを確認します。

    show role instance-id 1
     result "PRIMARY"
    show role instance-id 2
     result "STANDBY"
  13. STANDBY への Rack-2 の instance-id 1 のロールのリセットを開始します。このステップにより、Rack-2 のロールが STANDBY_ERROR/PRIMARY から STANDBY/PRIMARY に移行します。

    geo reset-role instance-id 1 role standby
  14. Rack-2 の両方のインスタンスで使用可能なロールが STANDBY/PRIMARY のロールであることを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
     result "PRIMARY"

GR が有効な場合の Rack-2 のアップグレード:

  1. Rack-2 の両方のインスタンスで使用可能なロールが STANDBY/PRIMARY のロールであることを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
    result "PRIMARY"
  2. Rack-2 の両方のインスタンスのロールの切り替えを開始し、フェールバック間隔を 0 秒にして STANDBY に移行します。このステップにより、ロールが STANDBY/PRIMARY から STANDBY_ERROR/STANDBY_ERROR に移行します。

    geo switch-role instance-id 1 role standby [failback-interval 0]
    geo switch-role instance-id 2 role standby [failback-interval 0]
  3. 両方のインスタンスの使用可能なロールが Rack-2 の STANDBY_ERROR に移動することを確認します。

    show role instance-id 1
    result "STANDBY_ERROR"
    show role instance-id 2
    result "STANDBY_ERROR"
  4. 両方のインスタンスで使用可能なロールが Rack-1 の PRIMARY に移動していることを確認します。

    show role instance-id 1
     result "PRIMARY"
    show role instance-id 2
     result "PRIMARY"
  5. Rack-2 の要件に従って、システム モードのシャットダウン/実行を介して、ローリング アップグレード(または)非グレースフル アップグレードを実行します。

  6. アップグレード手順の完了後に後続の手順を実行します。Rack-2 で正常性チェックを実行し、ポッドが起動し、Rack-2 が正常であることを確認します。

  7. 両方のインスタンスで使用可能なロールが Rack-2 の STANDBY_ERROR のままであることを確認します。

    show role instance-id 1
    result "STANDBY_ERROR"
    show role instance-id 2
    result "STANDBY_ERROR"
  8. Rack-2 の両方のインスタンスのロールの STANDBY へのリセットを開始します。このステップにより、ロールが STANDBY_ERROR/STANDBY_ERROR から STANDBY/STANDBY に移行します。

    geo reset-role instance-id 1 role standby
    geo reset-role instance-id 2 role standby
  9. 両方のインスタンスで使用可能なロールが Rack-2 の STANDBY に移動することを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
    result "STANDBY"
  10. Rack-1 の instance-id 2 のロールを STANDBY に切り替えて開始します。この手順では、Rack-1 の使用可能なロールを PRIMARY/PRIMARY から PRIMARY/STANDBY_ERROR に、Rack-2 の使用可能なロールを STANDBY/STANDBY から STANDBY/PRIMARY に移行します。

    geo switch-role instance-id 2 role standby [failback-interval 0]
  11. Rack-1 の両方のインスタンスで使用可能なロールが PRIMARY/STANDBY_ERROR であることを確認します。

    show role instance-id 1
    result "PRIMARY"
    show role instance-id 2
    result "STANDBY_ERROR"
  12. Rack-2 の両方のインスタンスで使用可能なロールが STANDBY/PRIMARY のロールであることを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
    result "PRIMARY"
  13. Rack-1 の instance-id 2 の STANDBY へのロールのリセットを開始します。この手順では、Rack-1 のロールを PRIMARY/STANDBY_ERROR から PRIMARY/STANDBY に移行します。

    geo reset-role instance-id 2 role standby
  14. Rack-1 の両方のインスタンスで使用可能なロールが PRIMARY/STANDBY であることを確認します。

    show role instance-id 1
    result "PRIMARY"
    show role instance-id 2
    result "STANDBY"

GR CLI

次のセクションでは、GR CLI ベースのコマンドについて説明します。

Geo レプリケーション プル データ

次のサンプル構成では、Geo レプリケーションのプル データを設定します。これらのコマンドは、誤動作シナリオが発生した場合に、レプリケーション データ同期アクティビティを支援および実行します。GR ロールに移行し、システムでのレプリケーション データの不一致を最小限に抑えるためには、次のコマンドを開始して、アクセス可能なすべてのラック間でデータを同期することができます。

geo replication-pull instance-id gr_instanceId 

  • geo replication-pull :ピア ラックからレプリケーション データをプルして、ローカル ラックと同期します。

  • instance-id gr_instanceId :GR インスタンス ID を指定します。

Geo ロールのリセット

GR インスタンスのロール(たとえば、 STANDBY_ERROR から STANDBYPRIMARYのロール)をリセットするには、次のコマンド例を使用します。

geo reset-role role role instance-id gr_instanceId 

  • role role :指定のラックの新しいロールを指定します。

    ロールは PRIMARY または STANDBYです。

  • instance-id gr_instanceId :GR インスタンス ID を指定します。


重要


geo reset-role コマンドは、 ローカル ラックの特定のインスタンスのロールの変更をトリガします。リモート ラックは、同じコマンドのメッセージを受信しません。指定されたインスタンス ID のロールを STANDBY_ERROR から STANDBY に、および STANDBY から PRIMARYに変更することのみが可能です。別のロールの変更はできません。


Geo スイッチ ロール

GR ロールを切り替えるには、プライマリ ラックで コマンドを開始し(たとえば、ロール PRIMARYSTANDBY のみに)、次のコマンドを使用します。

geo switch-role { role primary | standby  instance-id gr_instanceId [ failback-interval  failback_interval ] } 

  • role role :指定のラックの新しいロールを指定します。

    ロールは、 primary または standby にできます。特定の GR インスタンス ID のプライマリ ロールから手動スイッチオーバーをトリガする必要があります。

  • instance-id gr_instanceId :GR インスタンス ID を指定します。

  • failback-interval は、リリース間のアップグレードの後方互換性を提供するオプションのコマンドです。 failback-interval の推奨値は 0 です。


重要


geo switch-role コマンドは、特定のインスタンス ID について、あるラックから別のラックへの手動フェールオーバーをトリガします。フェールオーバーをトリガするラックが PRIMARY ロールから STANDBY_ERROR ロールに変更されます。その間、フェールオーバーをトリガしたラックは、別のラックにフェールオーバー(Trigger GR)メッセージを送信します。フェールオーバー メッセージを受信した他のラックは、 STANDBY ロールから PRIMARY ロールに変更されます。



(注)  


failback-interval は現在のリリースで廃止され、後続のリリースでは廃止されます。


障害対応

ここでは、さまざまな該当するトラブルシューティングのシナリオについて説明します。

show/clear コマンド

ここでは、問題のデバッグに役立つ show/clear コマンドについて説明します。

clear subscriber

gr-instance 対応サブスクライバをクリアするには、次のコマンドを使用します。

clear subscriber all gr-instance gr_instanceId 

(注)  


gr-instance はオプションのパラメータです。gr-instance が指定されていない場合、show subscriber all ではそのラックのローカル インスタンス ID が考慮されます。


次に、設定例を示します。

clear subscriber all gr-instance 1 
result 
ClearSubscriber Request submitted
BFD ステータスの表示

ネイバーの BFD ステータスを表示するには、次のコマンドを使用します。

show bfd-neighbor 

次に、いくつか構成例を示します。

show bfd-neighbor
status-details

-----example-bgp-ep-1 ----

Peer             Status

 209.165.202.142  STATE_DOWN
-----example-bgp-ep-2 ----

Peer             Status

 209.165.202.142  STATE_DOWN
show bfd-neigbor 
status-details 

-----bgpspeaker-pod-1 ----

Peer             Status

 209.165.202.131
-----bgpspeaker-pod-2 ----

Peer             Status

 209.165.202.131   STATE_UP
BGP グローバルの表示

BGP グローバル構成を表示するには、次のコマンドを使用します。

show bgp-global 

次に、いくつか構成例を示します。

show bgp-global
global-details
-----example-bgp-ep-2 ----
AS:        65000
Router-ID: 209.165.202.149
Listening Port: 179, Addresses: 209.165.202.149
-----example-bgp-ep-1 ----
AS:        65000
Router-ID: 209.165.202.148
Listening Port: 179, Addresses: 209.165.202.148
show bgp-global 
global-details 

-----bgpspeaker-pod-2 ----
AS:        65061
Router-ID: 209.165.202.132
Listening Port: 179, Addresses: 209.165.202.132
show bgp kernel route

BGP カーネル構成ルートを表示するには、次のコマンドを使用します。

show bgp-kernel-route kernel-route 

次に、いくつか構成例を示します。

show bgp-kernel-route 
kernel-route

-----example-bgp-ep-2 ----

 DestinationIP  SourceIP        Gateway

-----example-bgp-ep-1 ----

 DestinationIP      SourceIP          Gateway
 209.165.202.133    209.165.202.148   209.165.202.142
 209.165.202.134    209.165.202.148   209.165.202.142
show bgp-kernel-route 
kernel-route 

-----bgpspeaker-pod-2 ----

 DestinationIP        SourceIP            Gateway

 209.165.202.135    209.165.202.132    209.165.202.131

-----bgpspeaker-pod-1 ----

 DestinationIP  SourceIP        Gateway
show bgp neighbors

BGP ネイバーのステータスを表示するには、次のコマンドを使用します。

show bgp-neighbors neighbor-details 
show bgp-neighbors ip ip_address neighbor-details 

次に、いくつか構成例を示します。

show bgp-neighbors neighbor-details
-----example-bgp-ep-1 ----
Peer             AS  Up/Down State       |#Received  Accepted
209.165.202.142 60000 00:25:06 Establ      |        3         3
-----example-bgp-ep-2 ----
Peer             AS Up/Down State       |#Received  Accepted
209.165.202.142 60000   never Idle        |        0         0
show bgp-neighbors ip 209.165.202.142 neighbor-details
-----example-bgp-ep-2 ----
BGP neighbor is 209.165.202.142, remote AS 60000
  BGP version 4, remote router ID unknown
  BGP state = ACTIVE
  BGP OutQ = 0, Flops = 0
  Hold time is 0, keepalive interval is 0 seconds
  Configured hold time is 90, keepalive interval is 30 seconds

  Neighbor capabilities:
    multiprotocol:
        ipv4-unicast:   advertised
    route-refresh:      advertised
    extended-nexthop:   advertised
        Local:  nlri: ipv4-unicast, nexthop: ipv6
    4-octet-as: advertised
  Message statistics:
                         Sent       Rcvd
    Opens:                130          0
    Notifications:          0          0
    Updates:                0          0
    Keepalives:             0          0
    Route Refresh:          0          0
    Discarded:              0          0
    Total:                130          0
  Route statistics:
    Advertised:             0
    Received:               0
    Accepted:               0

-----example-bgp-ep-1 ----
BGP neighbor is 209.165.202.142, remote AS 60000
  BGP version 4, remote router ID 209.165.202.136
  BGP state = ESTABLISHED, up for 00:25:20
  BGP OutQ = 0, Flops = 0
  Hold time is 90, keepalive interval is 30 seconds
  Configured hold time is 90, keepalive interval is 30 seconds

  Neighbor capabilities:
    multiprotocol:
        ipv4-unicast:   advertised and received
    route-refresh:      advertised and received
    extended-nexthop:   advertised
        Local:  nlri: ipv4-unicast, nexthop: ipv6
    4-octet-as: advertised and received
  Message statistics:
                         Sent       Rcvd
    Opens:                  1          1
    Notifications:          0          0
    Updates:                1          1
    Keepalives:            51         51
    Route Refresh:          0          0
    Discarded:              0          0
    Total:                 53         53
  Route statistics:
    Advertised:             0
    Received:               3
    Accepted:               3
show bgp route サマリ

BGP ルート サマリを表示するには、以下のコマンドを使用します。

show bgp-route-summary 

次に、設定例を示します。

show bgp-route-summary
route-details
-----example-bgp-ep-1 ----
Table afi:AFI_IP safi:SAFI_UNICAST
Destination: 5, Path: 5
-----example-bgp-ep-2 ----
Table afi:AFI_IP safi:SAFI_UNICAST
Destination: 2, Path: 2
BGP ルートの表示

BGP ルート情報を表示するには、次のコマンドを使用します。

show bgp-routes 

次に、設定例を示します。

show bgp-routes
bgp-route

-----example-bgp-ep-1 ----
   Network              Next Hop             AS_PATH      Age        Attrs
*> 209.165.202.133/24   209.165.202.142        60000      00:25:55   [{Origin: i} {Med: 0}]
*> 209.165.200.225/32   209.165.202.148                   00:26:00   [{Origin: e} {LocalPref: 100} {Med: 600}]
*> 209.165.202.134/24   209.165.202.142        60000      00:25:55   [{Origin: i} {Med: 0}]
*> 209.165.202.140/24   209.165.202.142        60000      00:25:55   [{Origin: i} {Med: 0}]
*> 209.165.202.146/32   209.165.202.148                   00:26:00   [{Origin: e} {LocalPref: 100} {Med: 600}]

-----example-bgp-ep-2 ----
   Network              Next Hop             AS_PATH      Age        Attrs
*> 209.165.200.225/32   209.165.202.149                   00:26:24   [{Origin: e} {LocalPref: 100} {Med: 600}]
*> 209.165.202.146/32   209.165.202.149                   00:26:24   [{Origin: e} {LocalPref: 100} {Med: 600}]
show endpoint

gr-instance 対応になったエンドポイントを表示するには、次のコマンドを使用します。

show endpoint all grInstance gr_instanceId 

(注)  


grInstance はオプションのパラメータです。grInstance が指定されていない場合、show subscriber all ではそのラックのローカル インスタンス ID が考慮されます。


次に、設定例を示します。

show endpoint all grInstance 1
                                                                               START     STOPPED  GR        
ENDPOINT                          ADDRESS        TYPE  STATUS   INTERFACE  INTERNAL  TIME      TIME     INSTANCE  
-----------------------------------------------------------------------------------------------------------------
209.165.202.137:2123       209.165.202.137:2123  Udp   Started             false     10 hours  <none>   1         
Gtpu:209.165.202.137:2152  209.165.202.137:2152  Udp   Started  GTPU       false     10 hours  <none>   1         
N4:209.165.202.137:8806    209.165.202.137:8806  Udp   Started  N4         false     10 hours  <none>   1         
S2B-GTP                    209.165.202.138:2124  Udp   Started  s2b        false     10 hours  <none>   1         
S5-GTP                     209.165.202.138:2125  Udp   Started  s5         false     10 hours  <none>   1         
S5S8S2B-GTP                209.165.202.138:2123  Udp   Started  s5s8s2b    false     10 hours  <none>   1         
Sxa:209.165.202.137:8805   209.165.202.137:8805  Udp   Started  SXA        false     10 hours  <none>   1         
n10-1                      209.165.202.139:9010  Rest  Started  N10-1      false     10 hours  <none>   1         
n11-1                      209.165.202.139:9011  Rest  Started  N11-1      false     10 hours  <none>   1         
n40-1                      209.165.202.139:9040  Rest  Started  N40-1      false     10 hours  <none>   1         
n7-1                       209.165.202.139:9007  Rest  Started  N7-1       false     10 hours  <none>   1         
sbi-1                      209.165.202.139:8090  Rest  Started  SBI-1      false     10 hours  <none>   1
ETCD/キャッシュポッドのレプリケーションの表示

etcd および cache-pod データのレプリケーションの詳細を表示するには、次のコマンドを使用します。

show georeplication checksum instance-id gr_instanceId 

次に、設定例を示します。

show georeplication checksum instance-id 
Value for 'instance-id' (<string>): 1
checksum-details 
--              ----    --------
 ID             Type    Checksum
 --             ----    --------
 1              ETCD    1617984439
 IPAM           CACHE   1617984439
 NRFCache       CACHE   1617984439
 NRFSubs        CACHE   1617984439
 IDMGR          CACHE   1617984439
 NRFMgmt        CACHE   1617984439
show role

GR インスタンスの現在のロールを表示するには、次のコマンドを使用します。

show role instance-id gr_instanceId 

(注)  


ロールで使用可能な値のリストは次のとおりです。

  • プライマリ

  • STANDBY

  • INIT

  • FAILOVER_INIT

  • STANDBY_ERROR


次に、いくつか構成例を示します。

show role instance-id 1
result
"PRIMARY"
show role instance-id 2
result
"STANDBY"
show ipam dp with type and address

インスタンス ID とリモート インスタンスのチャンクを示すフラグを表示するには、次のコマンドを使用します。

show ipam dp { dp_type } { addr_type } 

  • dp dp_type :DP タイプを指定します。

  • addr_type :IPv4/IPv6 アドレス タイプを指定します。

次に、設定例を示します。

show ipam dp 209.165.202.145:209.165.202.144  ipv4-addr 
=================================================================
Flag Indication: S(Static) O(Offline) R(For Remote Instance)
G:N/P Indication: G(GR InstId) N(Native NM InstId) P(Peer NM InstId)
=================================================================
StartAddress    EndAddress      AllocContext                    Route              G:N/P Utilization Flag 
=================================================================
209.165.200.240 209.165.200.243 209.165.202.145:209.165.202.144 209.165.200.240/24 1:0/1 0.00%        R
=================================================================
ipam dp を表示

この DP のチャンクを持つすべてのインスタンスを表示するには、次のコマンドを使用します。

show ipam dp dp_name 

  • dp dp_name :データ プレーン割り当て名を指定します。

次に、設定例を示します。

show ipam dp 209.165.202.145:209.165.202.144
--------------------------------------------------------
Ipv4Addr [Total/Used/Utilization] = 257 / 1 / 0.39%
Ipv6Addr [Total/Used/Utilization] = 0 / 0 / 0.00%
Ipv6Prefix [Total/Used/Utilization] = 2048 / 0 / 0.00%
Instance ID = 1
--------------------------------------------------------
ipam pool を表示

プールが構成されているインスタンス ID 情報を表示するには、次のコマンドを使用します。

show ipam pool pool_name 

  • pool pool_name :プール名を指定します。

次に、いくつか構成例を示します。

show ipam pool 

==========================================================================================
PoolName                       Ipv4Utilization  Ipv6AddrUtilization  Ipv6PrefixUtilization
==========================================================================================
poolv6DNN2                     0.00%            0.00%                0.00%
poolv6                         0.00%            0.00%                0.00%
poolv4vDNN                     0.00%            0.00%                0.00%
poolv4DNN2                     0.00%            0.00%                0.00%
poolv4                         0.00%            0.00%                0.00%
poolv6vDNN                     0.00%            0.00%                0.00%
poolv4DNN3                     -                -                    -
==========================================================================================
show ipam pool poolv4DNN3
--------------------------------------------------------
Ipv4Addr [Total/Used/Utilization] = 2814 / 0 / -
Ipv6Addr [Total/Used/Utilization] = 0 / 0 / -
Ipv6Prefix [Total/Used/Utilization] = 65536 / 0 / -
Instance ID = 1
isStatic = true
--------------------------------------------------------
show ipam pool poolv4 
--------------------------------------------------------
 Ipv4Addr   [Total/Used/Utilization] = 2814 / 0 / 0.00%
 Ipv6Addr   [Total/Used/Utilization] = 0 / 0 / 0.00%
 Ipv6Prefix [Total/Used/Utilization] = 0 / 0 / 0.00%
 Instance ID                         = 1
--------------------------------------------------------
show nrf discovery-info discovery-filter

GR インスタンス ID 情報を表示して、検出フィルタ情報が属する GR インスタンスを判別するには、次のコマンドを使用します。

show nrf discovery-info nf_type discovery-filter 

次に、設定例を示します。

=====================================================
--------------------------------------------------------
Discovery Filter: dnn=intershat;
Expiry Time: 1580146356
GR Instance ID: 1
--------------------------------------------------------
=====================================================================
show nrf discovery-info

GR インスタンス ID 情報を表示して、検出情報が属する GR インスタンスを判別するには、次のコマンドを使用します。

show nrf discovery-info 

次に、設定例を示します。

show nrf discovery-info
=====================================================
------Discovered NFs:-------
    NF Type: AMF
    Number of Discovery Filters: 15
    Number of NF Profiles: 15
    GR Instance ID: 1
------Discovered NFs:-------
    NF Type: UDM
    Number of Discovery Filters: 1
    Number of NF Profiles: 3
    GR Instance ID: 2
=====================================================
show nrf 登録情報

GR インスタンス ID 情報を表示して、登録情報が属する GR インスタンスを特定するには、次のコマンドを使用します。

show nrf registration-info 

次に、設定例を示します。

show nrf registration-info
======================================================================
 NF Status: Not Registered
 Registration Time:
 Active MgmtEP Name:
 Heartbeat Duration: 0
 GR Instance ID: 1
========
show nrf registration-info 

======================================================================
 Gr-instance: 
 NF Status: Not Registered
 Registration Time: 
 Active MgmtEP Name: 
 Heartbeat Duration: 0
 Uri: 
 Host Type:  

======================================================================
 Gr-instance: 
 NF Status: Not Registered
 Registration Time: 
 Active MgmtEP Name: 
 Heartbeat Duration: 0
 Uri: 
 Host Type:  

======================================================================
show nrf subscription-info

サブスクリプション情報が属する GR インスタンスを判別するために GR インスタンス ID 情報を表示するには、次のコマンドを使用します。

show nrf subscription-info 

次に、設定例を示します。

show nrf subscription-info
=====================================================================
NF Instance Id: f9882966-a253-32d1-8b82-c785b34a7cc9
SubscriptionID : subs123459
Actual Validity Time : 2020-01-21 12:39:45 +0000 UTC
Requested Validity Time : 2020-01-21 12:39:45 +0000 UTC
GR Instance ID: 1
=====================================================================
show peers

gr-instance 対応になったピアを表示するには、次のコマンドを使用します。

show peers all grInstance gr_instanceId 

(注)  


grInstance はオプションのパラメータです。grInstance が指定されていない場合、show subscriber all ではそのラックのローカル インスタンス ID が考慮されます。


次に、設定例を示します。

show peers all grInstance 1
                                                       POD              CONNECTED       ADDITIONAL  INTERFACE  GR        
ENDPOINT  LOCAL ADDRESS   PEER ADDRESS     DIRECTION  INSTANCE TYPE TIME     RPC DETAILS NAME       INSTANCE  
-------------------------------------------------------------------------------------------------------------------------
<none>  209.165.202.139 209.165.201.22:8001 Outbound rest-ep-0 Rest 10 hours UDM <none>  n10        1         
<none>  209.165.202.139 209.165.201.22:8002 Outbound rest-ep-0 Rest 10 hours AMF <none>  n11        1         
<none>  209.165.202.139 209.165.201.22:8003 Outbound rest-ep-0 Rest 10 hours PCF <none>  n7         1         
<none>  209.165.202.139 209.165.201.22:8004 Outbound rest-ep-0 Rest 10 hours CHF <none>  n40        1         
<none>  209.165.202.139 209.165.201.22:9040 Outbound rest-ep-0 Rest 10 hours CHF <none>  n40 
show subscriber

gr-instance 対応にするサブスクライバの詳細を表示するには、次のコマンドを使用します。

show subscriber { all | gr-instance gr_instanceId } 

(注)  


show subscriber all は、 ローカル インスタンス サブスクライバの詳細のみを表示します。

gr-instance はオプションのパラメータです。gr-instance が指定されていない場合、show subscriber all ではそのラックのローカル インスタンス ID が考慮されます。


次に、設定例を示します。

show subscriber gr-instance 1 all
subscriber-details
{
"subResponses": [
[
""
],
[
""
],
[
"roaming-status:homer",
"supi:imsi-123456789300001",
"gpsi:msisdn-22331010301010",
"psid:1",
"dnn:intershat",
"emergency:false",
"rat:nr",
"access:3gpp access",
"connectivity:5g",
"udm-uecm:209.165.202.150",
"udm-sdm:209.165.202.150",
"auth-status:unauthenticated",
"pcfGroupId:PCF-*",
"policy:2",
"pcf:209.165.202.152",
"upf:209.165.202.154",
"upfEpKey:209.165.202.154:209.165.202.158",
"ipv4-addr:v4pool1/209.165.200.250",
"ipv4-pool:v4pool1",
"ipv4-range:v4pool1/209.165.200.249",
"ipv4-startrange:v4pool1/209.165.200.250",
"id-index:1:0:0:32768",
"id-value:8",
"chfGroupId:CHF-*",
"chf:209.165.202.151",
"amf:209.165.202.153",
"peerGtpuEpKey:209.165.202.154:209.165.202.155",
"namespace:smf",
"nf-service:smf"
]
]
}

モニタ サブスクライバ

サブスクライバのメッセージをキャプチャするには(GR インスタンス対応)、次のコマンドを使用します。

monitor subscriber [ capture-duration duration  | gr-instance gr_instance_id  | imei imei_id | imsi imsi_value | internal-messages [ yes ] | namespace [ sgw | smf ] | nf-service [ sgw | smf ] | supi supi_id | transaction-logs [ yes ] ] 

(注)  


2021.02 以降のリリースでは、 namespace キーワードは廃止され、 nf-service キーワードに置き換えられました。


  • capture-duration duration :モニタ サブスクライバを有効にする期間を秒単位で指定します。デフォルトは 300 秒(5 分)です。これは省略可能なパラメータです。

  • gr-instance gr_instance_id :GR インスタンス ID を指定します。インスタンス ID 1 はローカル インスタンス ID を示しています。

  • imei imi_id :サブスクライバ IMEI を指定します。例:123456789012345、*

  • imsi imsi_value :サブスクライバ IMSI を指定します。たとえば、123456789、* などです。

  • internal-messages [ yes ] yes に設定されている場合、内部メッセージを有効にします。デフォルトでは、無効になっています。これは省略可能なパラメータです。

  • namespace [ sgw | smf ] :指定した名前空間を有効にします。デフォルトでは、名前空間は none に設定されています。これは省略可能なパラメータです。


    重要


    このキーワードはリリース 2021.02.0 で廃止され、 nf-service キーワードに置き換えられました。


  • nf-service [ sgw | smf ] :指定した NF サービスを有効にします。デフォルトでは、nf-service は none に設定されています。これは必須パラメータです。


    重要


    nf-service キーワードは、リリース 2021.02 以降では namespace キーワードに置き換わります。


  • supi supi_id :サブスクライバ ID を指定します。例:imsi-123456789、imsi-123*

  • transaction-logs [ yes ] yes に設定されている場合はトランザクション ログを有効にします。デフォルトでは、無効になっています。これは省略可能なパラメータです。

    トランザクション履歴ログを表示するには、dump transactionhistory コマンドを使用します。


    (注)  


    最新のトランザクション ログは、トランザクション ログ サイズが 1024 の循環キューに保存されます。


次に、設定例を示します。

monitor subscriber imsi 123456789 gr-instance 1
supi: imsi-123456789
captureDuration: 300
enableInternalMsg: false
enableTxnLog: false
namespace(deprecated. Use nf-service instead.): none
nf-service: none
gr-instance: 1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   295  100    98  100   197  10888  21888 --:--:-- --:--:-- --:--:-- 29500
Command: --header Content-type:application/json --request POST --data 
{"commandname":"mon_sub","parameters":{"supi":"imsi-123456789","duration":300,
"enableTxnLog":false,"enableInternalMsg":false,"action":"start","namespace":"none",
"nf-service":"none","grInstance":1}} http://oam-pod:8879/commands
Result start mon_sub, fileName ->logs/monsublogs/none.imsi-123456789_TS_2021-04-09T09:59:59.964148895.txt
Starting to tail the monsub messages from file: logs/monsublogs/none.imsi-123456789_TS_2021-04-09T09:59:59.964148895.txt
Defaulting container name to oam-pod.
Use 'kubectl describe pod/oam-pod-0 -n smf' to see all the containers in this pod.

モニタープロトコル

異なるインターフェイスでパケットをキャプチャするには(gr インスタンス対応)、次のコマンドを使用します。

monitor protocol { interface interface_name [ capture-duration duration  | gr-instancegr_instance | pcacp yes | | ] | list [ | ] }  

  • interface interface_name :PCAP がキャプチャされるインターフェイス名を指定します。この CLI では、1 つの CLI コマンドで複数のインターフェイス名を設定できます。

  • capture-duration duration :pcap がキャプチャされる期間を秒単位で指定します。デフォルトは 300 秒(5 分)です。

  • 構成されたインターフェイス名は show endpoint 、 CLI コマンドを使用して取得できます。

  • gr-instance gr_instance_id :GR インスタンス ID を指定します。インスタンス ID 1 はローカル インスタンス ID を示しています。

  • pcap yes :このオプションを構成すると、PCAP ファイルの生成が有効になります。デフォルトでは、このオプションは無効になっています。

  • list :プロトコル リスト ファイルをモニタします。

次に、設定例を示します。

monitor protocol interface sbi gr-instance 1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   220  100    95  100   125   8636  11363 --:--:-- --:--:-- --:--:-- 20000
Command: --header Content-type:application/json --request POST --data 
{"commandname":"mon_pro","parameters":{"interface":"sbi","duration":300,"action":
"start","enable_pcap":false,"grInstance":1}} http://oam-pod:8879/commands
Result start mon_pro, fileName ->logs/monprologs/sessintfname_sbi_at_2021-04-30T05:26:22.712229347.txt
Starting to tail the monpro messages from file: logs/monprologs/sessintfname_sbi_at_2021-04-30T05:26:22.712229347.txt
Defaulting container name to oam-pod.
Use 'kubectl describe pod/oam-pod-0 -n cn' to see all of the containers in this pod.

地理的冗長 OAM サポート

ここでは、この機能の操作、管理、およびメンテナンスに関して説明します。

ヘルス チェック

次のセクションでは、GR セットアップの正常性チェックに関する情報を提供します。

  • すべての重要なポッドは、ユーザー トラフィックを処理できる良好な状態です。

    GR および CDL に関連するポッドが実行状態にあるかどうかを確認するには、次のコマンドを使用します。

    kubectl get pods -n cn-cn1 -o wide | grep georeplication-pod
    kubectl get pods -n cn-cn1 -o wide | grep cdl
    kubectl get pods -n cn-cn1 -o wide | grep mirror-maker
  • キープアライブ ポッドは正常な状態になり、check-interface/check-port 用に構成されたすべての VIP をモニタリングします。

    次のコマンドを使用して、「smi-vips」名前空間のキープアライブ ポッドが「実行」状態であるかどうかを確認します。

    kubectl get pods -n smi-vips

  • CDL に関連するポッドの正常性チェック:CDL DB エンドポイント、スロット、およびインデックスのステータスを確認します。システム ID 1 と 2 の両方で、すべてのが STARTED または ONLINE 状態になっている必要があります。

    cdl show status 
    message params: {cmd:status mode:cli dbName:session sessionIn:{mapId:0 limit:500 key: purgeOnEval:0 filters:[] nextEvalTsStart:0 nextEvalTsEnd:0 allReplicas:false maxDataSize:4096} sliceName:}
    db-endpoint {
        endpoint-site {
            system-id 1
            state STARTED
            total-sessions 4
            site-session-count 2
            total-reconciliation 0
            remote-connection-time 66h37m31.36054781s
            remote-connection-last-failure-time 2021-07-13 11:24:10.233825924 +0000 UTC
            slot-geo-replication-delay 2.025396ms
        }
        endpoint-site {
            system-id 2
            state STARTED
            total-sessions 4
            site-session-count 2
            total-reconciliation 0
            remote-connection-time 66h58m49.83449066s
            remote-connection-last-failure-time 2021-07-13 11:02:51.759971655 +0000 UTC
            slot-geo-replication-delay 1.561816ms
        }
    }
    slot {
        map {
            map-id 1
            instance {
                system-id 1
                instance-id 1
                records 4
                capacity 2500000
                state ONLINE
                avg-record-size-bytes 1
                up-time 89h38m37.335813523s
                sync-duration 9.298061ms
            }
            instance {
                system-id 1
                instance-id 2
                records 4
                capacity 2500000
                state ONLINE
                avg-record-size-bytes 1
                up-time 89h39m11.1268024s
                sync-duration 8.852556ms
            }
            instance {
                system-id 2
                instance-id 1
                records 4
                capacity 2500000
                state ONLINE
                avg-record-size-bytes 1
                up-time 89h28m38.274713022s
                sync-duration 8.37766ms
            }
            instance {
                system-id 2
                instance-id 2
                records 4
                capacity 2500000
                state ONLINE
                avg-record-size-bytes 1
                up-time 89h29m37.934345015s
                sync-duration 8.877442ms
            }
        }
    }
    index {
        map {
            map-id 1
            instance {
                system-id 1
                instance-id 1
                records 4
                capacity 60000000
                state ONLINE
                up-time 89h38m16.119032086s
                sync-duration 2.012281769s
                leader false
                geo-replication-delay 10.529821ms
            }
            instance {
                system-id 1
                instance-id 2
                records 4
                capacity 60000000
                state ONLINE
                up-time 89h39m8.47664588s
                sync-duration 2.011171261s
                leader true
                leader-time 89h38m53.761213379s
                geo-replication-delay 10.252683ms
            }
            instance {
                system-id 2
                instance-id 1
                records 4
                capacity 60000000
                state ONLINE
                up-time 89h28m29.5479133s
                sync-duration 2.012101957s
                leader false
                geo-replication-delay 15.974538ms
            }
            instance {
                system-id 2
                instance-id 2
                records 4
                capacity 60000000
                state ONLINE
                up-time 89h29m11.633496562s
                sync-duration 2.011566639s
                leader true
                leader-time 89h28m51.29928233s
                geo-replication-delay 16.213323ms
            }
        }
    }
  • CDL レプリケーション ステータス

    [CDLレプリケーション統計(CDL Replication Stats)] Grafana ダッシュボードの [GRPC_Connections_to_RemoteSite] パネルのラック全体で、(各名前空間の)CDL EP セッションポッド間で 4 つの gRPC 接続が確立されているかどうかを確認します。両方のラックで Grafana をチェックします。

  • Geo レプリケーション用のラック間の管理ポート ステータス。

    [GR 統計情報(GR Statistics)] Grafana ダッシュボードの [Periodic_Heartbeat_to_Remote_Site] パネルで、ラック全体の Geo レプリケーション ポッド間のハートビート メッセージを確認します。

  • ラック上の BGP/BFD リンク ステータス

    BGP ピアとの隣接関係が確立されているかどうかを、 [BGP、BFD 統計情報(BGP, BFD Statistics)] Grafan ダッシュボードの [BGP ピア(BGP Peers)] パネルで確立しているかどうかを確認します。

    BFD リンクが接続状態であるかどうかを、[BGP、BFD 統計情報(BGP, BFD Statistics)] Grafana ダッシュボードの [BFD リンク ステータス(BFD Link Status)] パネルで確認します。

  • 各インスタンスのロールが正常な状態である

    各ラックのロールがどの時点においても STANDBY_ERROR 状態でないことを確認します。

    • アクティブ/スタンバイ モデル:ロールは各ラックで次の状態である必要があります。

      Rack-1:

      show role instance-id 1
      result "PRIMARY"
      show role instance-id 2
      result "PRIMARY"

      Rack-2:

      show role instance-id 1
      result "STANDBY"
      show role instance-id 2
      result "STANDBY"
    • アクティブ/アクティブ モデル:ロールは、各ラックで次の状態になっている必要があります。

      Rack-1:

      show role instance-id 1
      result "PRIMARY"
      show role instance-id 2
      result "STANDBY"

      Rack-2:

      show role instance-id 1
      result "STANDBY"
      show role instance-id 2
      result "PRIMARY"

回復手順

Rack-1 上
  1. Rack-1 の両方のインスタンスのロールが STANDBY_ERROR であることを確認します。

    show role instance-id 1
    result "STANDBY_ERROR"
    show role instance-id 2
    result "STANDBY_ERROR"
  2. Rack-1 の両方のインスタンスのロールの STANDBY へのリセットを開始します。このステップにより、ロールが STANDBY_ERROR/STANDBY_ERROR から STANDBY/STANDBY に移行します。

    geo reset-role instance-id 1 role standby
    geo reset-role instance-id 2 role standby
  3. ラック 1 両方のインスタンスのロールがの STANDBY に変わったことを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
    result "STANDBY"
  4. フェールバック間隔を 0 秒にして、Rack-2 で instance-id 1 のインスタンスのロールの STANDBY への切り替えを開始します。このステップにより、Rack-2 のロールが PRIMARY/PRIMARY から STANDBY_ERROR/PRIMARY に、Rack-1 のロールが STANDBY/STANDBY から PRIMARY/STANDBY に移行します。

    geo switch-role instance-id 1 role standby [failback-interval 0]
  5. Rack-2 の両方のインスタンスのロールが STANDBY_ERROR/PRIMARY にあることを確認します。

    show role instance-id 1
    result "STANDBY_ERROR"
    show role instance-id 2
    result "PRIMARY"
  6. Rack-1 の両方のインスタンスのロールが PRIMARY/STANDBY であることを確認します。

    show role instance-id 1
    result "PRIMARY"
    show role instance-id 2
    result "STANDBY"
  7. STANDBY への Rack-2 の instance-id 1 のロールのリセットを開始します。このステップにより、Rack-2 のロールが STANDBY_ERROR/PRIMARY から STANDBY/PRIMARY に移行します。

    geo reset-role instance-id 1 role standby
  8. Rack-2 のロールが STANDBY/PRIMARY であることを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
    result "PRIMARY"
Rack-2 上
  1. Rack-2 の両方のインスタンスのロールが STANDBY_ERROR であることを確認します。

    show role instance-id 1
    result "STANDBY_ERROR"
    show role instance-id 2
    result "STANDBY_ERROR"
  2. Rack-2 の両方のインスタンスのロールの STANDBY へのリセットを開始します。このステップにより、ロールが STANDBY_ERROR/STANDBY_ERROR から STANDBY/STANDBY に移行します。

    geo reset-role instance-id 1 role standby
    geo reset-role instance-id 2 role standby
  3. 両方のインスタンスのロールが Rack-2 の STANDBY に移動することを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
    result "STANDBY"
  4. ラック 1 の instance-id 2 のロールの STANDBY への切り替えを開始します。このステップでは、Rack-1 のロールを PRIMARY/PRIMARY から PRIMARY/STANDBY_ERROR に、Rack-2 のロールを STANDBY/STANDBY から STANDBY/PRIMARY に移行します。

    geo switch-role instance-id 2 role standby [failback-interval 0]
  5. Rack-1 の インスタンスのロールが PRIMARY/STANDBY_ERROR モードであることを確認します。

    show role instance-id 1
    result "PRIMARY"
    show role instance-id 2
    result "STANDBY_ERROR"
  6. Rack-2 の インスタンスのロールが STANDBY/PRIMARY モードであることを確認します。

    show role instance-id 1
    result "STANDBY"
    show role instance-id 2
    result "PRIMARY"
  7. Rack-1 の instance-id 2 の STANDBY へのロールのリセットを開始します。この手順では、Rack-1 のロールを PRIMARY/STANDBY_ERROR から PRIMARY/STANDBY に移行します。

    geo reset-role instance-id 2 role standby
  8. Rack-1 の インスタンスのロールが PRIMARY/STANDBY であることを確認します。

    show role instance-id 1
    result "PRIMARY"
    show role instance-id 2
    result "STANDBY"

主要業績評価指標(KPI)

次の項では、KPI について説明します。

ETCD/Cachepod の複製 KPI

次の表に、ETCD/Cachepod 複製 KPI のリストを記載します。

表 11. geo_replication_total KPI

KPI 名

説明

ラベル

有効な値

geo_replication

_total

この KPI には、さまざまな同期タイプと複製タイプの複製要求/応答の総数が表示されます。

ReplicationRequest

タイプ

要求/応答

ReplicationSync

タイプ

即時/遅延/プル

ReplicationNode

ETCD / CACHE_POD / PEER

ReplicationReceiver

ローカル/リモート

status

True/False

status_code

エラーコード/説明

地理的なロール変更拒否の KPI

次の表に、地理的なロール変更拒否の KPI のリストを記載します。

表 12. 地理的なロール変更拒否の KPI

KPI 名

説明

ラベル

有効な値

geo_RejectedRole

Changed_total

この KPI には、スタンバイインスタンスの拒否された要求や受信したコールの合計数が表示されます。カウントの後、同じインスタンスが PRIMARY に移行されます。

RejectedCount

スタンバイインスタンスに対して受信された拒否されたコール/要求を示す数の値。

GRInstance

番号

1/2

KPI のモニタリング

次の表に、KPI のモニタリングを示します。

表 13. geo_monitoring_total KPI

KPI 名

説明

ラベル

有効な値

geo_monitoring

_total

この KPI には、ハートビート/リモート通知/トリガー GR など、さまざまな種類の成功/失敗メッセージの総数が表示されます。

ControlAction

タイプ

AdminMonitoring

ActionType / AdminRemote

MessageAction

タイプ/AdminRole

ChangeActionType

ControlAction

NameType

MonitorPod/MonitorBfd/

RemoteMsgHeartbeat/

RemoteMsgNotifyFailover/

RemoteMsgNotify

PrepareFailover /

RemoteMsgGetSiteStatus /

RemoteClusterPodFailure /

RemoteSiteRole

Monitoring /

TriggerGRApi /

ResetRoleApi

管理者ノード

任意の文字列値。例:GR インスタンス ID またはインスタンスキー/ポッド名

ステータス コード

0/1001/1002/1003/

1004 / 1005 / 1006 / 1007 /

1008/受信エラー コード(1206, 1219, 2404, ...)

ステータス メッセージ

成功 (0) /

STANDBY_ERROR => ANDBY/STANDBY STANDBY => PRIMARY (0) / Pod Failure (0) /

CLI (0) / BFD Failure (0) /

デコード失敗 (1001) /

リモート ステータスが使用不可(1002)/

ターゲット ロールは (1002) をサポートしていません /

ポッド障害(1002)/

CLI (1002) / BFD の障害 (1002) /

サイトがダウンしています(1003) / ポッド障害(1003) /

CLI (1003) / BFD の障害 (1003) /

トラフィック ヒット(1004)/

ポッドエラー(1004) / CLI(1004) /

BFD の障害 (1004) /現在のロールは以下ではありません

STANDBY_ERROR/

STANDBY(リセットによりスタンバイ)

role (1005) / resetRole:

etcd でキーが見つかりませんでした (1006) /

ポッドあたりの

ポッド侵害(1007)/

ハートビートの再試行

障害(1008) /

エラーメッセージを受信しました(この要求に使用可能なリモートホストがありません/選択されたリモートホスト<remotehostname>クライアント接続がありません/ SLA がトランザクションに対して期限切れです / ...)

表 14. geo_replication_finalpull_total KPI

KPI 名

説明

ラベル名

有効な値

geo_replication

_finalpulld_total

この KPI には、機能メッセージの最終取得時点で存在する Geo レプリケーションの総数が表示されます。

MessageType

これは要求または応答のメッセージタイプです。

TotalTimeTaken

これは、リクエストの処理にかかった合計時間です。

GRInstanceNumber

これは、次のリストにある GR インスタンス ID の番号です。

  • 1

  • 2

  • Instance.1

  • Instance.2

BFD KPI

次の表に、BFD KPI を示します。

表 15. BFD KPI - 1

KPI 名

説明

ラベル

有効な値

bgp_speaker

_bfd_status

この KPI には、BGP スピーカーの BFD リンクステータスが表示されます。

status

STATE_UP /

STATE_DOWN

geo_bfd_

status

この KPI には、Geo POD の BFD リンク ステータスが表示されます。

status

STATE_UP /

STATE_DOWN

表 16. BFD KPI - 2

KPI 名

説明

ゲージ

bgp_speaker

_bfd_status

この KPI には、BGP スピーカーの BFD リンクステータスが表示されます。

1(UP)または 0(DOWN)

geo_bfd_

status

この KPI には、Geo POD の BFD リンク ステータスが表示されます。

1(UP)または 0(DOWN)

GR インスタンス情報
表 17. GR インスタンス情報 KPI

KPI 名

説明

ラベル

有効な値

gr_instance_

information (Type – Guage)

この KPI には、 アプリケーションでの GR インスタンスの現在のロールが表示されます。

gr_instance_id

設定された GR インスタンス値(数値)

Geo メンテナンス モード
表 18. Geo メンテナンス モードの KPI

KPI 名

説明

ラベル

有効な値

geo_MaintenanceMode

info(Type -Ugage)

この KPI には、ラックのメンテナンスモードの現在の状態が表示されます。

MaintenanceMode

0 = False

1 = True

バルク統計

次のセクションでは、GR 固有のバルク統計情報について詳しく説明します。

bulk-stats query GR-BGP-Incoming-Failed-Routes
 expression "sum(bgp_incoming_failedrouterequest_total) by (namespace, interface, service_IP, next_hop, instance_id)"
 labels     [ instance_id interface next_hop service_IP ]
 alias      gr-bgp-routes-in
exit
bulk-stats query GR-Geo-Monitoring-Failure
 expression "sum(geo_monitoring_total{ControlActionNameType=~'MonitorPod|RemoteMsgHeartbeat|
RemoteMsgGetSiteStatus|RemoteSiteRoleMonitoring|RemoteClusterPodFailure|RemoteMsgNotifyFailover|
RemoteMsgNotifyPrepareFailover|MonitorVip',status!~'success|monitoring.*'}) by (namespace, 
AdminNode, ControlActionType, ControlActionNameType,  pod, status, status_code)"
 labels     [ pod AdminNode ControlActionNameType status status_code ]
 alias      gr-geo-monitoring-failure
exit
bulk-stats query GR-Geo-Monitoring-Success
 expression "sum(geo_monitoring_total{ControlActionNameType=~'MonitorPod|RemoteMsgHeartbeat|
RemoteMsgGetSiteStatus|RemoteSiteRoleMonitoring|RemoteClusterPodFailure|RemoteMsgNotifyFailover|
RemoteMsgNotifyPrepareFailover',status=~'success|monitoring.*'}) by (namespace, AdminNode, 
ControlActionType, ControlActionNameType,  pod, status)"
 labels     [ pod AdminNode ControlActionNameType status ]
 alias      gr-geo-monitoring
exit
bulk-stats query GR-Geo-Monitoring-Total
 expression "sum(geo_monitoring_total{ControlActionNameType=~'MonitorPod|RemoteMsgHeartbeat|
RemoteMsgGetSiteStatus|RemoteSiteRoleMonitoring|RemoteClusterPodFailure|RemoteMsgNotifyFailover
|RemoteMsgNotifyPrepareFailover|MonitorVip'}) 
by (namespace, AdminNode, ControlActionType, ControlActionNameType,  pod, status)"
 labels     [ pod AdminNode ControlActionNameType status ]
 alias      gr-geo-monitoring
exit
bulk-stats query GR-Geo-Replication-Failure
 expression "sum(geo_replication_total{ReplicationNode=~'CACHE_POD|ETCD|PEER',status!='success',
ReplicationRequestType='Response'}) by (namespace, ReplicationNode, ReplicationSyncType,
ReplicationReceiver,ReplicationRequestType,status,status_code)"
 labels     [ pod ReplicationNode ReplicationReceiver ReplicationRequestType ReplicationSyncType status status_code ]
 alias      gr-geo-replication-failure
exit
bulk-stats query GR-Geo-Replication-Success
 expression "sum(geo_replication_total{ReplicationNode=~'CACHE_POD|ETCD|PEER',
status='success',ReplicationRequestType='Response'}) by (namespace, ReplicationNode, 
ReplicationSyncType,ReplicationReceiver,ReplicationRequestType,status)"
 labels     [ pod ReplicationNode ReplicationReceiver ReplicationRequestType ReplicationSyncType status ]
 alias      gr-geo-replication-success
exit
bulk-stats query GR-Geo-Replication-Total
 expression "sum(geo_replication_total{ReplicationNode=~'CACHE_POD|ETCD|PEER'}) 
by (namespace, ReplicationNode, ReplicationSyncType,ReplicationReceiver,
ReplicationRequestType,pod)"
 labels     [ pod ReplicationNode ReplicationReceiver ReplicationRequestType ReplicationSyncType ]
 alias      gr-geo-replication-total
exit
bulk-stats query GR-Trigger-ResetRole-Api
 expression "sum(geo_monitoring_total{ControlActionNameType=~'TriggerGRApi|ResetRoleApi'}) 
by (namespace, AdminNode, ControlActionType, ControlActionNameType,  pod, status, status_code)"
 labels     [ pod AdminNode ControlActionNameType status status_code ]
 alias      gr-api
exit
bulk-stats query GR-CDL-Index-Replication
 expression "sum(consumer_kafka_records_total) by (pod, origin_instance_id)"
 labels     [ origin_instance_id pod ]
 alias      gr-cdl-index-replication
exit
bulk-stats query GR-CDL-Inter-Rack-Replications-Failures
 expression "sum(datastore_requests_total{local_request='0',errorCode!='0'}) by (operation,sliceName,errorCode)"
 labels     [ sliceName operation errorCode ]
 alias      gr-cdl-inter-rack-replications
exit
bulk-stats query GR-CDL-Inter-Rack-Replications-Success
 expression "sum(datastore_requests_total{local_request='0',errorCode='0'}) by (operation,sliceName,errorCode)"
 labels     [ sliceName operation errorCode ]
 alias      gr-cdl-inter-rack-replications
exit
bulk-stats query GR-CDL-Inter-Rack-Replications-Total
 expression "sum(datastore_requests_total{local_request='0'}) by (operation,sliceName,errorCode)"
 labels     [ sliceName operation errorCode ]
 alias      gr-cdl-inter-rack-replications
exit
bulk-stats query GR-CDL-Intra-Rack-Operations-Failures
 expression "sum(datastore_requests_total{local_request='1',errorCode!='0'}) by (operation,sliceName,errorCode)"
 labels     [ sliceName operation errorCode ]
 alias      gr-cdl-intra-rack-operations
exit
bulk-stats query GR-CDL-Intra-Rack-Operations-Success
 expression "sum(datastore_requests_total{local_request='1',errorCode='0'}) by (operation,sliceName,errorCode)"
 labels     [ sliceName operation errorCode ]
 alias      gr-cdl-intra-rack-operations
exit
bulk-stats query GR-CDL-Intra-Rack-Operations-Total
 expression "sum(datastore_requests_total{local_request='1'}) by (operation,sliceName,errorCode)"
 labels     [ errorCode operation sliceName ]
 alias      gr-cdl-intra-rack-operations
exit
bulk-stats query GR-CDL-Session-Count-Per-Slice
 expression sum(avg(db_records_total{namespace=~'$namespace',session_type='total'})by(systemId,sliceName))by(sliceName)
 labels     [ sliceName ]
 alias      gr-cdl-session-count-per-slice
exit
bulk-stats query GR-CDL-Session-Count-Per-System-ID
 expression sum(avg(db_records_total{namespace=~'$namespace',session_type='total'})
by(systemId,sliceName))by(systemId)
 labels     [ systemId ]
 alias      gr-cdl-session-count-per-system-id
exit
bulk-stats query GR-CDL-Slot-Records-Per-Slice
 expression "sum(slot_records_total{pod=~'.*',systemId!=''}) by (pod, sliceName)"
 labels     [ pod sliceName ]
 alias      gr-cdl-slot-records-per-slice
exit
bulk-stats query GR-CDL-Slot-Records-Per-System-ID
 expression "sum(slot_records_total{pod=~'.*',systemId!=''}) by (pod, systemId)"
 labels     [ pod systemId ]
 alias      gr-cdl-slot-records-per-system-id
exit
bulk-stats query GR-CDL-Total-Session-Count
 expression "sum(db_records_total{namespace=~'$namespace',session_type='total'}) by (systemId,sliceName)"
 labels     [ sliceName systemId ]
 alias      gr-cdl-total-session-count
exit

GR 関連の統計の詳細については、次を参照してください。

  • RADIUS 統計では、grInstId ラベルを使用して GR 固有の統計をフィルタリングできます。

    詳細については、「UCC 5Gセッション管理機能 - メトリック参照」を参照してください。

  • GTP エンドポイント統計情報で、gr_instance_id ラベルを使用して GR 固有の統計情報をフィルタリングできます。

    詳細については、「UCC 5Gセッション管理機能 - メトリック参照」を参照してください。

  • SMF 統計では、gr_instance_id label を使用して GR 固有の統計をフィルタリングできます。

    詳細については、「UCC 5Gセッション管理機能 - メトリック参照」を参照してください。

  • REST エンドポイント統計情報で、gr_instance_id ラベルを使用して GR 固有の統計情報をフィルタリングできます。

    詳細については、「UCC 5Gセッション管理機能 - メトリック参照」を参照してください。

  • IPAM 関連の統計では、grInstId ラベルを使用して GR 固有の統計をフィルタリングできます。

    詳細については、「UCC 5Gセッション管理機能 - メトリック参照」を参照してください。

アラート

ここでは、GR アラートについて詳しく説明します。

BFD アラート

次の表に、 interval-seconds が 60 に設定されたルールグループ BFD のアラートを示します。

表 19. アラートルールグループ:BFD

アラートルール

重大度

期間(分単位)

タイプ

BFD-Link-Fail

critical

1

通信アラーム

Expression:sum by (namespace,pod,status)

(bgp_speaker_bfd_status{status='BFD_STATUS'}) == 0

説明:このアラートは、BGP ピアリングに関連付けられた BFD リンクがダウンしている場合に生成されます。

GR アラート

次の表に、interval-seconds が 60 に設定されているルールグループ GR のアラートを示します。

表 20. アラートルールグループ:GR

アラートルール

重大度

期間(分単位)

タイプ

Cache-POD-

Replication-Immediate

-Local

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(geo_replication_total{ReplicationNode='CACHE_POD',

ReplicationSyncType='Immediate',ReplicationReceiver='local',

ReplicationRequestType = 'Response',status='success' ([1m]))/sum by (namespace)

(increase(geo_replication_total{ReplicationNode='CACHE_POD',

ReplicationSyncType='Immediate',ReplicationReceiver='local',

ReplicationRequestType='Request'}[1m])))*100 < 90

説明:このアラートは、CACHE_POD sync type:Immediate および replication receiver:Local の成功率がしきい値未満の場合に生成されます。

Cache-POD-

Replication-Immediate

-Remote

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(geo_replication_total{ReplicationNode='CACHE_POD',

ReplicationSyncType='Immediate',ReplicationReceiver='remote',

ReplicationRequestType = 'Response',status='success' ([1m]))/sum by (namespace)

(increase(geo_replication_total{ReplicationNode='CACHE_POD',

ReplicationSyncType='Immediate',ReplicationReceiver='remote',

ReplicationRequestType='Request'}[1m])))*100 < 90

説明:このアラートは、CACHE_POD sync type:Immediate および replication receiver:Remote の成功率がしきい値未満の場合に生成されます。

Cache-POD-

Replication-PULL

-Remote

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(geo_replication_total{ReplicationNode='CACHE_POD',

ReplicationSyncType='PULL',ReplicationReceiver='remote',

ReplicationRequestType = 'Response',status='success' ([1m]))/sum by (namespace)

(increase(geo_replication_total{ReplicationNode='CACHE_POD',

ReplicationSyncType='PULL',ReplicationReceiver='remote',

ReplicationRequestType='Request'}[1m])))*100 < 90

説明:このアラートは、CACHE_POD sync type:PULL および replication receiver:Remote の成功率がしきい値未満の場合に生成されます。

ETCD-

Replication-Immediate

-Local

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(geo_replication_total{ReplicationNode='ETCD',

ReplicationSyncType='Immediate',ReplicationReceiver='local',

ReplicationRequestType='Response',status='success'}[1m]))/sum by (namespace)

(increase(geo_replication_total{ReplicationNode='ETCD',

ReplicationSyncType='Immediate',ReplicationReceiver='local',

ReplicationRequestType='Request'}[1m])))*100 < 90

説明: このアラートは、ETCD 同期タイプ:Immediate およびレプリケーションレシーバ:Local の成功率がしきい値未満の場合に生成されます。

ETCD-

Replication-Immediate

-Remote

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(geo_replication_total{ReplicationNode='ETCD',

ReplicationSyncType='Immediate',ReplicationReceiver='remote',

ReplicationRequestType = 'Response',status='success' ([1m]))/sum by (namespace)

(increase(geo_replication_total{ReplicationNode='ETCD',

ReplicationSyncType='Immediate',ReplicationReceiver='remote',

ReplicationRequestType='Request'}[1m])))*100 < 90

説明: このアラートは、ETCD 同期タイプ:Immediate およびレプリケーションレシーバ:リモートの成功率がしきい値未満の場合に生成されます。

ETCD-

Replication-PULL

-Remote

critical

1

通信アラーム

Expression:(sum by (namespace)

(increase(geo_replication_total{ReplicationNode='ETCD',

ReplicationSyncType='PULL',ReplicationReceiver='remote',

ReplicationRequestType = 'Response',status='success')/

sum by (namespace) (increase(geo_replication_total

{ReplicationNode='ETCD',ReplicationSyncType='PULL',

ReplicationReceiver='remote',ReplicationRequestType=

'Request'}[1m])))*100 < 90

説明: このアラートは、ETCD 同期タイプ:PULL およびレプリケーションレシーバ:リモートの成功率がしきい値未満の場合に生成されます。

Heartbeat-Remote

-Site

critical

-

通信アラーム

Expression: sum by (namespace)

(increase(geo_monitoring_total{ControlActionNameType=

'RemoteMsgHeartbeat',status!='success'}[1m])) > 0

説明: このアラートは、リモートサイトへの定期的なハートビートが失敗するとトリガーされます。

Local-Site-

POD-Monitoring

critical

-

通信アラーム

Expression: sum by (namespace,AdminNode)

(increase(geo_monitoring_total{ControlActionNameType

='MonitorPod'}[1m])) > 0

説明: このアラートは、ローカルサイトのポッドモニタリングに障害が発生した場合、ラベルにラベルで示されているポッドの設定済みしきい値を超えた場合にトリガーされます。

PEER-Replication-

Immediate-

ローカル

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(geo_replication_total{ReplicationNode='PEER',

ReplicationSyncType='Immediate',ReplicationReceiver='local',

ReplicationRequestType='Response',status='success'}

[1m]))/sum by (namespace) (increase(geo_replication_total

{ReplicationNode='PEER',ReplicationSyncType=

'Immediate',ReplicationReceiver='local',

ReplicationRequestType='Request'}[1m])))*100 < 90

説明: このアラートは、PEER 同期タイプ:Immediate およびレプリケーション レシーバ:Local の成功率がしきい値未満の場合に生成されます。

PEER-Replication-

Immediate-

リモート

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(geo_replication_total{ReplicationNode='PEER',

ReplicationSyncType='Immediate',ReplicationReceiver='remote',

ReplicationRequestType='Response',status='success'}

[1m]))/sum by (namespace) (increase(geo_replication_total

{ReplicationNode='PEER',ReplicationSyncType='Immediate',

ReplicationReceiver='remote',ReplicationRequestType=

'Request'}[1m])))*100 < 90

説明: このアラートは、PEER 同期タイプ:Immediate およびレプリケーションレシーバ:Remote の成功率がしきい値未満の場合に生成されます。

RemoteCluster-

PODFailure

critical

-

通信アラーム

Expression: sum by (namespace,AdminNode)

(increase(geo_monitoring_total{ControlActionNameType

='RemoteClusterPodFailure'}[1m])) > 0

説明: このアラートは、ラベルに記載されているポッドのリモートサイトでポッド障害が検出された場合に生成されます。

RemoteMsg

NotifyFailover

critical

1

通信アラーム

Expression: sum by (namespace,status)

(increase(geo_monitoring_total{ControlActionNameType

='RemoteMsgNotifyFailover',status!='success'}[1m])) > 0

説明: このアラートは、ラベルに記載されている理由で一時的なロール RemoteMsgNotifyFailover が失敗した場合に生成されます。

RemoteMsg

NotifyPrepare

フェールオーバー

critical

1

通信アラーム

Expression: sum by (namespace,status)

(increase(geo_monitoring_total{ControlActionNameType

='RemoteMsgNotifyPrepareFailover',status!='success'}[1m])) > 0

説明: このアラートは、ラベルに記載されている理由で一時的なロール RemoteMsgNotifyPrepareFailover が失敗した場合に生成されます。ライセンスは次のようになります。

RemoteSite-

RoleMonitoring

critical

-

通信アラーム

Expression: sum by (namespace,AdminNode)

(increase(geo_monitoring_total{ControlActionNameType

='RemoteSiteRoleMonitoring'}[1m])) > 0

説明: このアラートは、RemoteSiteRoleMonitoring がパートナーラックのインスタンスのロールの不整合を検出し、それに応じてローカルラックのそれぞれのインスタンスのロールをプライマリに変更した場合に生成されます。影響を受けるインスタンスは Label:{{$labels.AdminNode}} にあります。

ResetRoleApi

-Initiated

critical

-

通信アラーム

Expression: sum by (namespace,status)

(increase(geo_monitoring_total{ControlActionNameType

='ResetRoleApi'}[1m])) > 0

説明: このアラートは、Label::$labels.status)] で言及されているロールの状態遷移で ResetRoleApi が開始されたときに生成されます。

TriggerGRApi

-Initiated

critical

-

通信アラーム

Expression: sum by (namespace,status)

(increase(geo_monitoring_total{ControlActionNameType

='TriggerGRApi'}[1m])) > 0

説明: このアラートは、ラベルに記載されている理由で TriggerGRApi が開始されたときに生成されます。

VIP-Monitoring

-Failures

critical

-

通信アラーム

Expression: sum by (namespace,AdminNode)

(increase(geo_monitoring_total{ControlActionNameType

='MonitorVip'}[1m])) > 0

説明: このアラートは、ラベル($$labels.AdminNode))に記載されている VIP とインスタンスの VIP モニタリング障害を検出して GR が生成されたときに生成されます。

CDL アラート

次の表に、 interval-seconds が 60 に設定されたルールグループ CDL のアラートを示します。

表 21. Alert Rule Group - CDL

アラートルール

重大度

期間(分単位)

タイプ

GRPC-

Connections-

Remote-Site

critical

1

通信アラーム

Expression: sum by (namespace, pod, systemId)

(remote_site_connection_status) !=4

説明: このアラートは、リモートサイトへの GRPC 接続が 4 に等しくない場合に生成されます。

Inter-Rack

-CDL-Replication

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(datastore_requests_total{local_request=\"0\",

errorCode=\"0\"}[1m]))/sum by (namespace)

(increase(datastore_requests_total{local_request=\"0\"}

[1m])))*100 < 90

説明: このアラートは、ラック間 CDL レプリケーションの成功率がしきい値を下回った場合に生成されます。

Intra-Rack

-CDL-Replication

critical

1

通信アラーム

Expression: (sum by (namespace)

(increase(datastore_requests_total{local_request=\"1\",

errorCode=\"0\"}[1m]))/sum by (namespace)

(increase(datastore_requests_total{local_request=\"1\"}

[1m])))*100 < 90

説明: このアラートは、ラック内 CDL レプリケーションの成功率がしきい値を下回った場合に生成されます。

サイト間の地理的冗長性

サイト間の地理的冗長性は、複数のサイトまたは場所にまたがる冗長性とフェールオーバー メカニズムを実装する方法です。サイト間冗長性の目的は、1 つのサイトで致命的な障害が発生した場合でも、重要なサービスとアプリケーションを利用できるようにすることです。

機能説明

通信事業者は、地理的に異なる場所に冗長データ センターを設置し、1 つのデータ センターがダウンした場合にもう 1 つのデータ センターが引き継ぐことができるようにします。この機能により、 は既存のラック間ソリューションをサイト間ソリューションに拡張できます。ラック内の HA の現在の表記は、サイト間冗長性と連動して、より包括的な高可用性ソリューションを提供し続けます。


(注)  


サイト間ソリューションとラック間ソリューションは共存できないため、お客様はいずれかのソリューションを選択する必要があります。


アーキテクチャ

SMF は、アクティブ:アクティブ モデルとも呼ばれる、サイト間冗長性の 1:1 モデルを実装します。このモデルは、ネットワーク内のすべてのサイトがトラフィックを同時にアクティブに処理し、各サイトが他のサイトで障害が発生した場合にネットワークの全負荷を引き継ぐことができる冗長構成の一種です。

次のトポロジ図は、サイト間冗長性の展開アーキテクチャについて説明しています。

前提条件

各サイトの 1:1 展開モデルの最小サイト要件のリストを次に示します。

  • 2 つのリーフ

  • 2 つのスパイン

  • 2 つの GR インスタンスを含む論理 SMF を持つ 1 つの K8 クラスタ


    (注)  


    各 GR インスタンスは、両方のサイトで同じ構成を持つ一意の EPC、RADIUS、および N11 エンドポイントのセットです。


  • UPFは1: 1の構成で展開されます


    (注)  


    アクティブおよびスタンバイ UPF インスタンスは GR インスタンスに関連付けられ、UPF はコントロール プレーン プロファイルで両方の GR インスタンスの N4 アドレスのみを伝送します。


機能の仕組み

冗長性イベントの管理とモニタリング、およびサイト間でのセッションの複製に必要な構成を除いて、ラック間およびサイト間のほとんどの構成は同じです。

サイト間冗長性の実装でサイト間でシームレスな通信を実現するためのガイドラインを次に示します。

  • BGP(ボーダー ゲートウェイ プロトコル)ルート アドバタイズメント構成の先頭に自律システム(AS)パスを付加します。詳細については、サイト間展開の構成を参照してください。

  • ジオポッド、CDL-EP()、CDL-Kafka サーバーの L3 ルーティング。

BGP ルート アドバタイズメント

サイト間冗長性展開では、非推移的な BGP 属性である Multi-Exit Discriminator(MED)属性を使用して、アクティブなサービス VIP に到達するための最適なパスを隣接ルータに通知します。ただし、MED 値は、隣接ルータとその eBGP ピア間では共有されません。

ラック間導入モデルでは、AS パス前に付加する技術が BGP で使用され、他の BGP ルータにアドバタイズされるルートのパス選択に影響を与えます。AS パス プリペンド技術では、BGP ルート アドバタイズメントで AS パスを操作することにより、特定のルートを他のルートよりも推奨します。ソフトウェア ロジックによって先頭に追加される AS パスの数の違いは、アップストリーム ルータが最適なルーティング可能なパスを選択するためのガイダンスを提供するのに役立ちます。

次の表に、サービス VIP とインターフェイス ボンディング ステータスのさまざまな組み合わせに必要な AS パスプリペンドの数を示します。

GR ロール ボンディング インターフェイスがアクティブ VIP の存在 MED 値

Local Preference

AS パス プリペンド(回数)

主要な役割(アクティブ) はい はい 1210 2220 3
はい 非対応 1220 2210 3
非対応 はい 1215 2215 3
いいえ 非対応 1225 2205 3
スタンバイ ロール はい はい 2210 1220 6
はい 非対応 2220 1210 6
非対応 はい 2215 1215 6
いいえ 非対応 2225 1205 6
Standby-error ロール 該当なし 該当なし 3220 220 9
KPI

prepend_as_path_count」ラベルが次の既存のメトリックに追加されます。

  • bgp_outgoing_failedrouterequest_total

  • bgp_outgoing_routerequest_total

上記のメトリックは、ルートがアドバタイズされるときに入力されます。

BGP 発信失敗ルート要求 KPI

KPI 名

説明

ラベル

有効な値

bgp_outgoing_failedrouterequest_total

この重要業績評価指標(KPI)は、失敗した発信ルートの合計数を表します。

app_name アプリケーション
cluster ローカル(Local)
data_center

DC

インスタンス 1
instance_id 1
インターフェイス

bd2.nrf.2275

local_pref 320

med

3220

next_hop

50.50.50.50

prepend_as_path_count

"9->STANDBY_ERROR"

service_IP

10.10.10.10

service_name

bgpspeaker-pod

vrf

デフォルト

BGP 発信ルート要求合計 KPI

KPI 名

説明

ラベル

有効な値

bgp_outgoing_routerequest_total

この重要業績評価指標(KPI)は、発信ルートの総数を表します。

app_name アプリケーション
cluster ローカル(Local)
data_center

DC

インスタンス 1
instance_id 1
インターフェイス

bd2.nrf.2275

local_pref 320

med

3220

next_hop

50.50.50.50

prepend_as_path_count

"9->STANDBY_ERROR"

service_IP

10.10.10.10

service_name

bgpspeaker-pod

vrf

デフォルト


(注)  


上記のメトリックは、ルートがアドバタイズされるときに入力されます。


As-Path メトリックの値:

新しいラベル「prepend_as_path_count」には、RoleInfo に基づく次の値が含まれます。

  • Rack/Prepend CLI 間で無効:

    • prepend_as_path_count="Not-Applicable"

  • CLI 有効化/プライマリ、Traffic_Hit 理由:

    • prepend_as_path_count="0->PRIMARY,TRAFFIC_HIT"

  • CLI 有効化/プライマリ、Traffic_Hit 以外の理由:

    • prepend_as_path_count="3->PRIMARY"

  • CLI 有効化/スタンバイ:

    • prepend_as_path_count="6->STANDBY"

  • CLI 有効化/ STANDBY_ERROR:

    • prepend_as_path_count="9->STANDBY_ERROR"

サイト間展開の構成

サイト間展開を有効にするには、BGP 構成で AS パス前に付加フラグを構成する必要があります。

いかに構成例を示します。

config 
  router local_as_number 
    bfd bfd_configuration 
    interface bgp_local_interface 
    prepend as-path { false | true } 
    exit 
   exit 

  • interface bgp_local_interface :BGP ローカル インターフェイスを指定します。

  • prepend as-path { false | true } true を選択して、サイト間展開を有効にします。デフォルトでは、このオプションは無効になっています。

    このオプションが false に設定されている場合、論理 SMF の展開はラック間モデルに従います。

設定の確認

構成を確認するには、次の show コマンドを使用します。

smf# show running-config router 
router bgp 63200
 learnDefaultRoute false
 prepend as-path true  ——————————————————> as-path
 bfd interval 250000 min_rx 250000 multiplier 3
 interface enp216s0f0.2119
  bondingInterface enp216s0f0
  bondingInterface enp94s0f0
  neighbor 101.101.172.254 remote-as 63100 fail-over bfd
 exit
 interface enp216s0f0.2129
  vrf vrf_papn1
  bondingInterface enp216s0f0
  bondingInterface enp94s0f1
  neighbor 101.101.174.254 remote-as 63100 fail-over bfd
 exit
 interface enp216s0f0.2139
  vrf vrf_papn2
  bondingInterface enp216s0f0
  bondingInterface enp94s0f0
  neighbor 101.101.178.254 remote-as 63100 fail-over bfd
 exit 

次に、GR ロールに対応する bgp でアドバタイズされたルートの出力例を示します。

[smf] smf# show role instance-id 1
result "PRIMARY"
[smf] smf# show bgp-advertised-routes 
bgp-route 

-----bgpspeaker-pod-0 ----
   Network              Next Hop                 AS_PATH          Age        Interface        Vrf                       Attrs
*> 209.165.200.228    209.165.200.229       63000 63000 63000   00:00:47      ens161         Default      [{Origin: e} {LocalPref: 2205} {Med: 1225}]

ポッドの L3 ルーティング

ラック間ソリューションでは、リーフ サーバーとスパイン サーバーが同じ AS パスに組み込まれ、VxLAN 技術の利用が可能になりました。この展開モデルでは、ラック間の到達可能性を維持しながら、さまざまなポッド間での冗長性データとイベントのサポート、監視、および交換が可能です。具体的には、両方のラックの Geo ポッドの外部 IP アドレスが共通のサブネットに統合され、同じ VLAN を共有しているため、ルート検出を必要とせずにデータ交換を行えるようになりました。さらに、ラック間の通信はリーフ サーバーとスパイン サーバーの境界内に残り、パケットがそれらを超えて通過する必要はありませんでした。

次のポッドには、サイト間の外部接続が必要です:

  • ジオポッド

  • CDL-ep(秒)

  • CDL-Kafka-server

サービス VIP とは異なり、これらの IP アドレスはサイト間でのフローティングを必要としません。ルーティングの決定は、実稼働展開中に 1 回だけ行う必要があります。したがって、これらの外部 IP アドレスを BGP を介してアドバタイズする代わりに、スタティック ルーティングが使用されました。

静的ルートは、リモート CDL/Kafka/Geo ネットワークに到達するために、ローカル K8S クラスタ プロトコル ノードに追加されます。リーフは、接続されているすべてのローカル CDL/Kafka/Geo ネットワークをスパインに自動的にアドバタイズします。スパインはこれらのルートを Arg ルータに再配布します。Arg ルータは、両方のサイトの CDL/Kafka/Geo ネットワークに到達する方法を認識しています。パケットの宛先がリモート CDL/Kafka/Geo ネットワークの場合、ローカル K8S プロトコル ノードには、ローカル リーフを指すスタティック ルートがあります。その後、パケットはスパインに送られます。スパインには、Arg ルータを指すデフォルト ルートがあります。Arg ルータには、パケットをリモートサイトに送信するための適切なルートがあります。

さらに、Arg ルータは「default-originate」キーワードを使用して構成されます。これは、ARG ルータをスパインのデフォルト ゲートウェイとして指定します。その結果、スパインはルーティング パスがスパインで利用できないすべてのトラフィックを Arg ルータにリダイレクトします。

サイト間の冗長性シナリオ

このセクションでは、サイト間冗長性の展開がさまざまなシナリオでどのように機能するかについて説明します。

2 つのサイトがあり、両方が動作しているシナリオでは、各サイトに 1 つのプライマリ/アクティブ GR(ゲートウェイ ルータ)インスタンスがあります。各サイトに構成されたエンドポイントは、アクティブなインスタンスに対応するトラフィックを伝送します。集約ルータ(ARG)がサイトに直接接続されていない可能性があり、ARG とサイトの間に複数の自律システムが存在する可能性があります。ARG ルータは、両方のサイトからのルートをまとめます。

サイトの冗長性に関するさまざまなシナリオを次に示します:

  • 設定された気象条件では、サイト A は GR1 の最適なルートと、GR2 に関連付けられたエンドポイントのあまり好ましくないルートをアドバタイズします。

    ARG では、ルートは次のようになります:

    • サイト A からのルート

      • 209.165.200.225 AS-Path 65000 65000 65000 65000

      • 209.165.200.235 AS-Path 65000 65000 65000 65000 65000 65000 65000

    • サイト B からのルート

      • 209.165.200.225 AS-Path 64000 64000 64000 64000 64000 64000

      • 209.165.200.235 AS-Path 64000 64000 64000 64000

    • ベスト パス:

      • Site-A 209.165.200.225 AS-path 65000 65000 65000 65000

      • Site -B 209.165.200.235 AS-path 64000 64000 64000 64000

ここで、サイト A がダウンした場合は次のようになります:

ARG ルータの BGP セッションは BGP コンバージェンス時間後にダウンし、サイト A から学習したルートが取り消されます。ARG でのルートの現在の状態は次のとおりです。

  • サイト B からのルート:

    • 209.165.200.225 AS-Path 64000 64000 64000 64000 64000 64000 64000

    • 209.165.200.235 AS-Path 64000 64000 64000 64000

    これで、エンドポイントの 209.165.200.225 と 209.165.200.225 の両方のトラフィックがサイト B に向けて送信されます。

  • サイト B のトラフィック モニタリング機能は、IP アドレス 209.165.200.225 のトラフィックを識別しています。この IP アドレスのパケットしきい値を超えると、GeoReplication ポッドは、スタンバイ モードからアクティブ モードへの GR-1 インスタンスの移行をトリガーします。

  • Geo-pod が GR1 のプライマリ インスタンスへの移行を BGPSpeaker-pod に通知した後、BGPSpeaker-pod は最も望ましいルーティング パスを使用して GR1 エンドポイントのルートを再アドバタイズします。

  • これで、ARG 内のルートは次の情報で更新されます:

    • サイト B からのルート:

      • 209.165.200.225 AS-Path 64000 64000 64000 64000

      • 209.165.200.235 AS-Path 64000 64000 64000 64000

スプリットブレイン

複数のサイトに展開すると、障害ドメインが拡大します。リーフ/スパイン アーキテクチャとラック内で発生する障害は適切に管理され、これらの障害時の GR インスタンスの状態は明確に定義され、ラック間ソリューションと同じメカニズムに従います。ただし、外部ルータのリンクの変動など、データ センターの外部に障害がある場合、ピアラックとの通信が失われた場合、アクティブな GR インスタンスを備えたラックのメカニズムはありません。

クライアント ルータとデータセンター ルータ間のリンクがダウンすると、ラック間の接続が失われます。クライアント ルータは、着信データ トラフィックを次の優先サイト(この場合はサイト 2)に送信します。サイト 2 ではトラフィック モニタリングが有効になっており、トラフィックが検出されます。着信トラフィックのしきい値が満たされると、GR インスタンスがスタンバイからプライマリに移行します。この時点で、サイト 1 とサイト 2 の両方がこの GR インスタンスに対してアクティブです。ARG-Site1 とクライアント ルータ間のリンクが復元されると、デュアルアクティブまたはスプリットブレイン シナリオが発生します。

その結果、以下のシナリオが考えられます:

  1. クライアント ルータが ARG-Site1 と ARG-Site2 の間にトラフィックを分散すると、コールが失われ、お客様サービスが中断します。

  2. 外部リンク リカバリをポストし、プライマリと見なすサイトと他のサイトをスタンバイに移行する方法を指定します。

2 つのサイト間で分散されるトラフィックの問題に対処するための解決策は、トラフィック モニタリングによって GR インスタンスがスタンバイからプライマリに移行するときに、AS パスを付加しないことです。新しいプライマリ サイトは、明示的なローカル AS パスの付加なしで BGP 再アドバタイジングを実行し、ピアサイトがオンラインに戻った場合でもこのサイトを最も優先されるサイトにします。このアプローチにより、セカンダリ サイトが復元して完全に動作するまで、トラフィックがプライマリ サイトに確実に送信されます。

外部リンク リカバリ後のサイトロール移行の問題に対処するための解決策は、すべてのロール移行のタイムスタンプを保持することです。リンクが復元されると、Site-1/Geo-Pod と Site-2/Geo-Pod の間で通信が発生し、その間に両方のポッドが遷移が発生したロール状態とタイムスタンプを交換します。その後、タイムスタンプが古いサイトがプライマリからスタンバイに移行し、リンクの復元後も最新のプライマリ サイトがその役割を維持します。


(注)  


タイムスタンプの更新は、ロールに変更があった場合にのみ行われます。理由に変更があると、タイムスタンプは変更されません。最初のスプリット ブレインを検出した場合、ロールが primary でトラフィックヒットが原因のサイト/ラックの組み合わせが優先されます。


KPI

この機能の一部として、次の重要業績評価指標(KPI)がスプリット ブレインのサポートに関連付けられます。

Geoスプリット ブレイン検出合計KPI

KPI 名

説明

ラベル

有効な値

geo_split_brain_detection_合計

この重要業績評価指標(KPI)は、スプリット ブレイン検出インスタンスの全体的な数を表します。

GRInstanceNumber

これは GR インスタンス ID であり、値は次のいずれかになります。

  • instance.1

  • instance2.

LocalSiteRole

これは、数字としてのローカル サイトのロールです。次のいずれかの値を指定できます:

  • 2(主要な役割用)

  • 3(スタンバイ ロール用)

  • 6(Standby-error ロールの場合)

LocalSiteReason

これはローカル サイトの理由の文字列値です:

  • 「CLI」

  • 「BFD 障害」

  • 「POD 障害」

  • 「トラフィック ヒット」

  • 「アップグレード」

  • 「スタートアップ」

  • 「スタックされたロール」

  • 「サイト通知」

  • 「リモートモニタリング」

  • "スプリット ブレイン Recover"

  • 通知の削除

  • 「HEARTBEAT 回復」

LocalSiteTimeStamp ロールが最後に更新されたときのローカル サイトのタイムスタンプ。
RemoteSiteRole これは、数字としてのリモート サイトのロールです。次のいずれかの値を指定できます:
  • 2(主要な役割用)

  • 3(スタンバイ ロール用)

  • 6(Standby-error ロールの場合)

RemoteSiteReason

これはリモート サイトの理由の文字列値です:

  • 「CLI」

  • 「BFD 障害」

  • 「POD 障害」

  • 「トラフィック ヒット」

  • 「アップグレード」

  • 「スタートアップ」

  • 「スタックされたロール」

  • 「サイト通知」

  • 「リモートモニタリング」

  • "スプリット ブレイン Recover"

  • 通知の削除

  • 「HEARTBEAT 回復」

RemoteSiteTimeStamp ロールが最後に更新されたときのリモート サイトのタイムスタンプ。

Geo スプリット ブレイン解決の合計

KPI 名

説明

ラベル

有効な値

geo_split_brain_resolution_total

この重要業績評価指標(KPI)は、スプリット ブレイン解決インスタンスの全体的な数を表します。

GRInstanceNumber

これは GR インスタンス ID であり、値は次のいずれかになります。

  • instance.1

  • instance2.

LocalSiteRole

これは、数字としてのローカル サイトのロールです。次のいずれかの値を指定できます:

  • 2(主要な役割用)

  • 3(スタンバイ ロール用)

  • 6(Standby-error ロールの場合)

LocalSiteReason

これはローカル サイトの理由の文字列値です:

  • 「CLI」

  • 「BFD 障害」

  • 「POD 障害」

  • 「トラフィック ヒット」

  • 「アップグレード」

  • 「スタートアップ」

  • 「スタックされたロール」

  • 「サイト通知」

  • 「リモートモニタリング」

  • "スプリット ブレイン Recover"

  • 通知の削除

  • 「HEARTBEAT 回復」

LocalSiteTimeStamp ロールが最後に更新されたときのローカル サイトのタイムスタンプ。
RemoteSiteRole これは、数字としてのリモート サイトのロールです。次のいずれかの値を指定できます:
  • 2(主要な役割用)

  • 3(スタンバイ ロール用)

RemoteSiteReason

これはリモート サイトの理由の文字列値です:

  • 「CLI」

  • 「BFD 障害」

  • 「POD 障害」

  • 「トラフィック ヒット」

  • 「アップグレード」

  • 「スタートアップ」

  • 「スタックされたロール」

  • 「サイト通知」

  • 「リモートモニタリング」

  • "スプリット ブレイン Recover"

  • 通知の削除

  • 「HEARTBEAT 回復」

RemoteSiteTimeStamp ロールが最後に更新されたときのリモート サイトのタイムスタンプ。

OldRole

スプリットブレイン解決前のロール。次のいずれかの値を指定できます:

  • 2(主要な役割用)

  • 3(スタンバイ ロール用)

NewRole

スプリット ブレイン解決後の新しいロール。次のいずれかの値を指定できます:

  • 3(スタンバイ ロール用)

  • 6(Standby-error ロールの場合)

地域ロール理由変更の合計

KPI 名

説明

ラベル

有効な値

geo_role_reason_change_total

この重要業績評価指標(KPI)は、ロールの理由が HEARTBEAT リカバリに変更された合計回数の全体数を表します。

GRInstanceNumber

これは GR インスタンス ID であり、値は次のいずれかになります。

  • instance.1

  • instance2.

LocalSiteRole

これは、数字としてのローカル サイトのロールです。次のいずれかの値を指定できます:

  • 2(主要な役割用)

  • 3(スタンバイ ロール用)

  • 6(Standby-error ロールの場合)

oldReason

これは、HEARTBEAT リカバリ前のローカル サイトの理由の文字列値です:

  • 「HEARTBEAT 回復」

NewReason

これはローカル サイトの理由の文字列値です:

  • 「HEARTBEAT 回復」

(注)  

 

現在、この移行はトラフィック ヒットのみに基づいて発生します。