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

機能の概要と変更履歴

要約データ

Table 1. 要約データ

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

SMF

該当プラットフォーム

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 を公開します。

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

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

MED 値

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

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


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 2. 内部ネットワーク障害に対する 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 3. コントロール プレーンのコール フロー
Table 4. コントロール プレーンのコール フローの説明

ステップ

説明

1

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

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

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

2

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

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

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

Figure 4. データ プレーンのコール フロー
Table 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)に送信されます。

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

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

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

ステップ

説明

1

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

2

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

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

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

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

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

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

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

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 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 は、この機能でサポートされます。

Table 9. 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