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

機能の概要と変更履歴

要約データ

表 1. 要約データ

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

cnSGW-C

該当プラットフォーム

SMI

デフォルト設定

無効:有効にするには設定が必要です

このリリースでの関連する変更点

N/A

関連資料

該当なし

マニュアルの変更履歴

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

改訂の詳細

リリース

最初の導入。

2021.02.0

機能説明

ボーダー ゲートウェイ プロトコル(BGP)では、自律システム(AS)間にループフリーのドメイン間ルーティングを作成可能です。AS は、単一の技術管理に基づくルータのまとまりです。ルータは、外部ゲートウェイプロトコルを使用して AS の外部にパケットをルーティングできます。BGP を使用したダイナミックルーティング機能を使用すると、優先順位とルートとともに IP アドレスにサービスを提供する代替ローカル アドレスを持つ BGP ルータのネクストホップ属性を構成できます。SMF 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.201.10 は、209.165.200.226 と 209.165.200.227 の両方のノードで設定されています。pod1 はホスト 209.165.200.226 で、pod2 はホスト 209.165.200.227 で実行されています。ホスト IP アドレスはポッドサービスを公開します。BGP スピーカーは、ルート 209.165.201.10 を 209.165.200.226 と 209.165.200.227 に公開します。また、ポッドの優先順位を決定するために、プリファレンス値 110 と 100 を公開します。

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

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

MED 値

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

表 3. 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 アドレス、パスの接続性、および優先度の値に基づいてパスが選択されます。


(注)  


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


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 では、既存のサブスクライバセッションに影響を与えることなくセッションが続行されます。


(注)  


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


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

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

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

リカバリおよびフェールバック

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

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

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

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

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

コール フロー

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

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

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

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

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

図 3. コントロールプレーンのコールフロー
表 4. コントロールプレーンのコールフローの説明

ステップ

説明

1

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

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

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

2

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

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

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

図 4. データプレーンのコールフロー
表 5. データプレーンのコールフローの説明

ステップ

説明

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)に送信されます。

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

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

図 5. シングルプロトコルポッド障害コールフロー
表 6. シングルプロトコルポッド障害コールフローの説明

ステップ

説明

1

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

2

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

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

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

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

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

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

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

ステップ

説明

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 番号を指定します。

    ラック間冗長性展開では、2 つの自律システム(AS)を設定する必要があります。

    • リーフとスパイン用に 1 つの AS。

    • 両方のラックの第 2 AS:Rack-1 と Rack-2。

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 に設定する必要があります。


(注)  


この設定は任意です。


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

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 スピーカーポッドは、ネイバーから多くのルート情報を学習しますが、発信トラフィックのサポートに使用されるルートはごく一部のルートです。これは、cnSGW-C が外部の AMF/PCF に情報を送信している場合、出力トラフィックの処理にのみ必要です。ルートは、BGP スピーカーでインポートポリシーを設定することでフィルタリングされ、学習したルートをプロトコルポッドに送信するために使用されます。

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

$bgp policy <policy_Name> ip-prefix 209.165.200.225 subnet 16 masklength-range 21..24 as-path-set “^65100”
表 8. インポートポリシーのパラメータ
要素 説明 オプション
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 を使用したダイナミックルーティング機能でサポートされている 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 がサポートされています。

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

KPI 名

タイプ

説明/式

ラベル

bgp_outgoing_route

request_total

カウンタ

受信ルートの総数。

local_pref、med、next_hope、service_IP

bgp_outgoing_failedroute

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_peerstotal

カウンタ

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

peer_ip、as_path、error