JP2022007690A - ネットワークサービスシステム、ネットワーク管理方法およびコンピュータプログラム - Google Patents
ネットワークサービスシステム、ネットワーク管理方法およびコンピュータプログラム Download PDFInfo
- Publication number
- JP2022007690A JP2022007690A JP2020110795A JP2020110795A JP2022007690A JP 2022007690 A JP2022007690 A JP 2022007690A JP 2020110795 A JP2020110795 A JP 2020110795A JP 2020110795 A JP2020110795 A JP 2020110795A JP 2022007690 A JP2022007690 A JP 2022007690A
- Authority
- JP
- Japan
- Prior art keywords
- service
- output data
- unit
- trace
- mobile identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Telephonic Communication Services (AREA)
Abstract
【課題】分散トレーシングを用いたネットワーク管理を改善する技術を提供する。【解決手段】ネットワークサービスシステム100は、所定の要求に応じて複数のサービス呼び出しを連鎖的に実行する。トレース記憶部34は、上記複数のサービスから出力された複数の出力データであって、連鎖的に実行された複数のサービス呼び出しを追跡するための追跡識別子を含む複数の出力データを記憶する。ネットワークサービスシステム100は、上記複数のサービスそれぞれの処理においてユーザのモバイル識別子を検出した場合、そのモバイル識別子を各サービスの出力データに設定する。解析部38は、トレース記憶部34に記憶された複数の出力データの中から、検索対象として指定されたモバイル識別子を含む出力データを抽出し、その出力データに含まれる追跡識別子を含む別の出力データをさらに抽出する。【選択図】図7
Description
本開示は、データ処理技術に関し、特にネットワークサービスシステム、ネットワーク管理方法およびコンピュータプログラムに関する。
第5世代移動通信システム(以下「5G」と呼ぶ。)のコアネットワークでは、ETSI(European Telecommunications Standards Institute) NFV(Network Functions Virtualization)で策定された仮想化技術を用いることを前提として、SBA(Service Based Architecture)が採用されている。SBAでは、AMF(Access and Mobility Management Function)やSMF(Session Management Function)のようにネットワークに必要な個別機能群NF(Network Function)を定義し、これら複数のNFがSBI(Service Based Interface)と呼ばれる統一されたインタフェースを介して接続される。
5Gネットワークに必要な個別機能群NF(Network Function)を実現するソフトウェアの構成技術として、マイクロサービスアーキテクチャが採用されることがある。マイクロサービスアーキテクチャでは、個々のNFは、より細分化された複数の単機能NFサービス、フロントエンド部、データベース部等、複数のマイクロサービスにより構成される。このような分散システムでは、1つのリクエストを契機に、複数のマイクロサービス間での通信が発生する。
5Gネットワーク内を伝送されるトラフィックのキャプチャと解析は、通信障害時のトラブルシューティングや機能試験確認に必要不可欠である。一連のサービス呼び出しのトラフィックを関連付けて記録することで、マイクロサービスアーキテクチャにおけるトレーシングを可能にする技術が分散トレーシングである。分散トレーシングの標準仕様を策定するプロジェクトとしてOpenTracingがある(例えば特許文献1参照)。また、OpenTracingの標準に準拠した分散トレーシングの実装としては例えばJaegerがある(例えば特許文献2参照)。
OpenTracing specification",[online],[令和2年5月29日検索],インターネット<URL:https://opentracing.io/specification/>
Architecture Jaeger documentation",[online],[令和2年5月29日検索],インターネット<URL:https://www.jaegertracing.io/docs/1.18/architecture/>
特定の加入者のモバイル端末の通信に関するトラブルシューティングや機能試験確認では、データベースに保存してあるトレースデータの中から、当該加入者に関するモバイル識別子を用いて、当該加入者に関するデータを抽出する必要がある。しかし、現在の分散トレーシングでは、そのための仕組みが提供されていない。
本開示は本発明者の上記課題認識に基づきなされたものであり、1つの目的は、分散トレーシングを用いたネットワーク管理を改善する技術を提供することにある。
上記課題を解決するために、本開示のある態様のネットワークサービスシステムは、所定の要求に応じて複数のサービス呼び出しが連鎖的に実行されるシステムであって、複数のサービスを提供する複数のサービス部と、複数のサービス部から出力された複数の出力データであって、連鎖的に実行された複数のサービス呼び出しを追跡するための追跡識別子を含む複数の出力データを記憶する記憶部と、連鎖的に実行された複数のサービス呼び出しに関する情報を生成する解析部と、を備える。複数のサービス部のそれぞれは、自身の処理においてユーザのモバイル識別子を検出した場合、そのモバイル識別子を出力データに設定し、解析部は、記憶部に記憶された複数の出力データの中から、検索対象として指定されたモバイル識別子を含む出力データを抽出し、その出力データに含まれる追跡識別子を含む別の出力データをさらに抽出する。
本開示の別の態様は、ネットワーク管理方法である。この方法は、所定の要求に応じて複数のサービス呼び出しが連鎖的に実行されるシステムを構成するコンピュータが、複数のサービスを実行するステップと、複数のサービスから出力された複数の出力データであって、連鎖的に実行された複数のサービス呼び出しを追跡するための追跡識別子を含む複数の出力データを所定の記憶部に格納するステップと、連鎖的に実行された複数のサービス呼び出しに関する情報を生成する解析ステップと、を実行し、実行するステップは、複数のサービスそれぞれの処理においてユーザのモバイル識別子を検出した場合、そのモバイル識別子を出力データに設定し、解析ステップは、記憶部に記憶された複数の出力データの中から、検索対象として指定されたモバイル識別子を含む出力データを抽出し、その出力データに含まれる追跡識別子を含む別の出力データをさらに抽出する。
なお、以上の構成要素の任意の組合せ、本開示の表現を、装置、コンピュータプログラム、コンピュータプログラムを読み取り可能に記録した記録媒体などの間で変換したものもまた、本開示の態様として有効である。
本開示によれば、分散トレーシングを用いたネットワーク管理を改善することができる。
実施例のネットワークサービスシステムの構成を説明する前に概要を説明する。
(1)前提技術
(1-1)5Gコア
3GPPでは5Gの実現に向けて、新しいコアネットワークである5Gコアをリリース15仕様として策定した。5Gの提供アーキテクチャは、(1)従来のEPC(Evolved Packet Core)をコアネットワークとし、5G無線アクセスネットワーク(以下「RAN」とも呼ぶ。)を4GのRANと協調動作させるNSA(Non Stand Alone)と、(2)従来のEPCとは独立して5Gコアを導入し、5GのRANを直接制御するSA(Stand Alone)の2つに大別される。3GPP リリース15では、NSAとSAの両方のアーキテクチャが策定された。3GPP TS23.501において5Gコアの基本アーキテクチャが規定され、TS23.502において5Gコアの動作手順が規定され、TS23.503において5GコアのPCC(Policy and Charging Control)が規定されている。
(1)前提技術
(1-1)5Gコア
3GPPでは5Gの実現に向けて、新しいコアネットワークである5Gコアをリリース15仕様として策定した。5Gの提供アーキテクチャは、(1)従来のEPC(Evolved Packet Core)をコアネットワークとし、5G無線アクセスネットワーク(以下「RAN」とも呼ぶ。)を4GのRANと協調動作させるNSA(Non Stand Alone)と、(2)従来のEPCとは独立して5Gコアを導入し、5GのRANを直接制御するSA(Stand Alone)の2つに大別される。3GPP リリース15では、NSAとSAの両方のアーキテクチャが策定された。3GPP TS23.501において5Gコアの基本アーキテクチャが規定され、TS23.502において5Gコアの動作手順が規定され、TS23.503において5GコアのPCC(Policy and Charging Control)が規定されている。
図1は、5Gのシステムアーキテクチャを示す。5Gコアでは、ETSI NFVで策定された仮想化技術(すなわちネットワーク機能を汎用サーバ上で動作させるための技術)を活用することを前提として、SBAが採用されている。SBAでは、AMFやSMFのようにネットワークに必要な個別機能郡NFを定義し、これら複数のNFがSBIと呼ばれる統一的なインタフェースを介して接続される。図1のNamf、Nsmf等がSBIに相当し、図1のN1、N2、N3等は非SBI(例えば非HTTPインタフェース)である。
個々のNFは、より細分化された複数の単機能NFサービスにより構成される。この単機能NFサービスは後述のマイクロサービスに相当する。或るNFのNFサービスに対して、他のNFのNFサービスは、他のノードを介することなく直接アクセスできる。SBAでは、必要なNFサービスの発見機能(Service Discovery)を提供するNRF(Network Repository Function)が規定されている。SBIのプロトコルスタックは、TS29.500で規定され、また、HTTP/2が採用されている。アプリケーションデータはJSON(JavaScript Object Notation)(「JavaScript」は登録商標)を介して交換され、セキュリティ保護にはTLS(TLS1.2またはTLS1.3)を利用する。
EPCなどコアネットワークが動作する仮想化基盤として、OpenStackが広く利用されており、また、5Gコアが動作する仮想化基盤として、クラウドネイティブ技術の一つでありコンテナオーケストレータであるクバネテス(Kubernetes)が想定される。コンテナは、OS(Operating System)まで含めてカプセル化する仮想マシンより軽量であり、起動時間が短く、またリソース効率が良いなどのメリットがある。そのため、5Gコアを動作させる実装として、コンテナの利用が普及しつつある。
(1-2)トレーシング
コアネットワーク内のトラフィックのキャプチャとその解析は、通信障害発生時のトラブルシューティングや機能試験確認に必要不可欠である。従来のEPCでは、NFVを適用する場合であっても、各NFを1つの仮想マシンとし特定の物理サーバに配備することで、特定の物理サーバの特定のNIC(Network Interface Card)で行われる通信がどのNFのものかを容易に識別できた。そのため、ポートミラーリング等の技術により特定のNF間の通信をパケットキャプチャすることができた。
コアネットワーク内のトラフィックのキャプチャとその解析は、通信障害発生時のトラブルシューティングや機能試験確認に必要不可欠である。従来のEPCでは、NFVを適用する場合であっても、各NFを1つの仮想マシンとし特定の物理サーバに配備することで、特定の物理サーバの特定のNIC(Network Interface Card)で行われる通信がどのNFのものかを容易に識別できた。そのため、ポートミラーリング等の技術により特定のNF間の通信をパケットキャプチャすることができた。
一方、クバネテスにより制御されるクラウドネイティブな環境では、複数の物理サーバ(以下「ノード」とも呼ぶ。)でリソースプールを形成し、また、5GコアにおけるNFの配備箇所はクバネテスにより動的制御される。そのため、NF間の通信はノード内で行われることになりパケットキャプチャを行うことができない。さらに、ソフトウェア構成技術としてマイクロサービスアーキテクチャを採用する場合、1つのNFは、先に述べた複数の論理的な単機能NFサービス、フロントエンド部、DB(Database)等、複数のマイクロサービスで構成される。
このような分散システムでは、1つのリクエストを契機に、サービス間(マイクロサービス間)の通信が発生する。分散システムが大規模化した際には、多数のサービス間通信が発生し、サービス同士の依存関係の把握が困難になる。また、多数のサービスが複雑に連携し合うと、障害発生時の解析も困難となる。次の章では、このようなマイクロサービスアーキテクチャでのトレーシングを可能にする分散トレーシングについて述べる。
(1-3)分散トレーシング
分散トレーシングは、連鎖的に生じた一連のサービス呼び出しのトラフィックを関連付けて記録することにより、マイクロサービスアーキテクチャにおけるトレーシングの課題を解決する技術である。分散トレーシングでは、1つの機能呼び出しに伴って発生するサービス間の通信を全て把握できるためサービス(マイクロサービス)同士の依存関係を特定可能になる。また、1つ1つのトラフィックの所要時間や通信内容を全て記録することで、障害発生時やパフォーマンス劣化時にピンポイントで原因箇所を特定することができる。
分散トレーシングは、連鎖的に生じた一連のサービス呼び出しのトラフィックを関連付けて記録することにより、マイクロサービスアーキテクチャにおけるトレーシングの課題を解決する技術である。分散トレーシングでは、1つの機能呼び出しに伴って発生するサービス間の通信を全て把握できるためサービス(マイクロサービス)同士の依存関係を特定可能になる。また、1つ1つのトラフィックの所要時間や通信内容を全て記録することで、障害発生時やパフォーマンス劣化時にピンポイントで原因箇所を特定することができる。
分散トレーシングはその性質上、アプリケーションのコードに、トレース情報の取得や送信に関するコードを記述する必要があるが、特定のベンダの分散トレーシング技術に依存したコードがアプリケーションに書かれるとその後の保守や移行が困難になる。そこで、ベンダニュートラルな分散トレーシングの標準仕様を策定するプロジェクトであるOpenTracingが2015年に立ち上がった。
OpenTracingでは、トレース情報のデータフォーマットや、データ収集用バックエンドのAPI(Application Programming Interface)仕様等、分散トレーシングのための標準仕様を策定している。OpenTracingでは、トレース情報は、主に以下の3つの要素、「トレース」、「スパン」、「スパンコンテキスト」で構成される。
1)トレース:連鎖的に実行される一連のサービス呼び出しを追跡して記録した情報の集合体である。
2)スパン:個々のサービスがリクエストを受け、それに応答するまでの単位である。スパンは、個々のサービスの処理内容または処理結果とも言える。1つのスパンの中で別のサービスを呼び出すと、呼び出されたサービスが応答するまでの単位を表す子スパンを想定できる。トレースはこのような階層構造を持ったスパンの集合体と位置づけられる。
3)スパンコンテキスト:複数のスパンを連鎖的なサービス呼び出しとして関連付けるための識別子となる情報。或るサービスから別のサービスを呼び出す際にスパンコンテキストを伝播させることによって複数のスパンを関連付けることができる。
2)スパン:個々のサービスがリクエストを受け、それに応答するまでの単位である。スパンは、個々のサービスの処理内容または処理結果とも言える。1つのスパンの中で別のサービスを呼び出すと、呼び出されたサービスが応答するまでの単位を表す子スパンを想定できる。トレースはこのような階層構造を持ったスパンの集合体と位置づけられる。
3)スパンコンテキスト:複数のスパンを連鎖的なサービス呼び出しとして関連付けるための識別子となる情報。或るサービスから別のサービスを呼び出す際にスパンコンテキストを伝播させることによって複数のスパンを関連付けることができる。
各スパンの間には関連性があり、トレースは、スパンの有向非巡回グラフ(Directed Acyclic Graph、DAG)と位置づけられる。図2は、DAGを用いたトレースの表記例を示す。図2の例では、1つのトレースが6個のスパンで構成されている。また、時間軸上に複数のスパンの関係性を示すことによりトレースを表記する形態も用いられる。図3は、時間軸を用いたトレースの表記例を示す。
OpenTracingの標準に準拠した分散トレーシングの実装として、Jaeger、Zipkin、Lightstepが挙げられる。また、マイクロサービスアーキテクチャのように個々のサービスの分割と連携により生じる様々な課題(例えば、ネットワーク通信起因の障害対応、パフォーマンスの低下、運用オペレーションの負荷の増加、障害解析の高難易度化等)を緩和するために、サービスメッシュが広く用いられてきている。サービスメッシュにも多くの実装が存在し、Istioをはじめとして、Linkerd、Consul等が用いられている。
図4は、スパンコンテキストの伝播の例を示す。同図は、Istioを利用したサービスメッシュの環境において、Jaegerを用いて分散トレーシングを行う際に想定されるアーキテクチャを示している。IstioとJaegerを組み合わせた分散トレーシングでは、サイドカーコンテナとしてサービス間通信を仲介するEnvoyがJaegerのデータコレクタにスパンを送信する。Envoyは、レイヤ7プロキシであり、個々のマイクロサービスに1つずつ配置される。また、Envoyは、自身が担当するマイクロサービスが送受信するトラフィック(リクエストデータ等)を必ず仲介し、事前にIstioのPilotから受信した制御規則を適用する。
図4に示すように、Jaegerを用いた分散トレーシングでは、サービス間でスパンコンテキストを伝播する必要がある。そのため、図4に示すように、サービスアプリケーション側に、他サービスを呼び出す際のリクエストヘッダに外部から受信したスパンコンテキストを付与する動作を実装する必要がある。図4の例では、Ingress Gatewayは、外部から流入したHTTPリクエストに自動でスパンコンテキストを付与し、サービスA(アプリケーション)は、受信したスパンコンテキストを、サービスBを呼び出すHTTPリクエストに設定する。このようなスパンコンテキストの引継をコンテキスト伝播(Propagation)という。
各スパンのスパンコンテキストを伝播させる実装としてZipkinのB3伝播が利用される。図5も、スパンコンテキストの伝播の例を示す。図5では、サービスAがスパンコンテキストAをB3ヘッダの形式でサービスBへ送信し、サービスBがスパンコンテキストBをB3ヘッダの形式でサービスCへ送信する状況における、サービスBでのトレーサーのスパンコンテキストの処理とB3ヘッダ伝播の例を示している。
サービスBのサーバートレーサー(スパンコンテキスト伝播のための機能)は、サービスAから受信したHTTPリクエストのB3ヘッダをデシリアライズしてスパンコンテキストAを復元する。次に、サービスBは、サービスAからのリクエストに基づいてサービスCを呼び出す。その際に、サービスBのサーバートレーサーは、スパンコンテキストAをもとにスパンコンテキストBを生成する。
具体的には、サービスBのサーバートレーサーは、スパンコンテキストAに含まれるトレースIDとサンプリング決定値(Sampling decision)をスパンコンテキストBにコピーする。サービスBのサーバートレーサーは、スパンコンテキストAのスパンIDを、スパンコンテキストBの親スパンIDにコピーし、また、サービスBのスパンIDを新規に生成し、そのスパンIDをスパンコンテキストBのスパンIDに設定する。サービスBのサーバートレーサーは、スパンコンテキストBをB3ヘッダの形式にシリアライズし、シリアライズ化されたスパンコンテキストBを、サービスCを呼び出すHTTPリクエストへ設定する。
トレースIDは、連鎖的に実行された一連のサービス呼び出しを一意に識別可能なIDであり、言い換えれば、連鎖的に実行された複数のサービス呼び出しを追跡するための追跡識別子である。スパンIDは、サービスが受け付けた複数の要求のそれぞれに応じたサービスの処理を一意に識別可能なIDであり、同じサービスであっても要求ごとに異なる値が設定される。
なお、トレースIDは、64ビットまたは128ビット長のIDであり、B3ヘッダでは、16進数(HEXADECIMAL)エンコードの16文字長または32文字長となる。スパンIDと親スパンIDは、64ビット長のIDであり、B3ヘッダでは16進数エンコードの16文字長となる。サンプリング決定値には、1(Acceptまたはtrue)と、0(Denyまたはfalse)が設定される。サンプリング決定値は、Envoy等のプロキシにおいて、トレース情報のサンプリング要否の判断、言い換えれば、コレクタへのトレース情報の送信要否の判断に用いられる。
(2)課題
(2-1)課題1
モバイル識別子によりトレース結果をフィルタリングすることができない。実施例でのモバイル識別子は、SUPI(Subscription. Permanent Identifier)とPEI(Permanent Equipment Identifier)の少なくとも一方を含む。
(2-1)課題1
モバイル識別子によりトレース結果をフィルタリングすることができない。実施例でのモバイル識別子は、SUPI(Subscription. Permanent Identifier)とPEI(Permanent Equipment Identifier)の少なくとも一方を含む。
特定の加入者やその加入者の端末の通信に関するトラブルシューティングまたは機能試験確認のためには、DBに保存してあるトレースデータを、加入者識別子であるSUPIや端末識別子であるPEIを用いてフィルタリングする必要がある。一方で、SBIのHTTPリクエストおよびHTTPレスポンスのヘッダ部には、仕様上、ユーザの識別子を設定することはない。
また、ユーザの識別子を設定できたとしても、個人を特定できる形式で、IMSI(International Mobile Subscriber Identity)/IMEI(International Mobile Equipment Identifier)等の識別子をHTTPリクエストで流通させることは、ゼロトラストの観点から避けるべきである。3GPPの仕様上、HTTPリクエストおよびHTTPレスポンスのボディ部にはJSON形式で識別子が設定されることがあるがその利用は限定的である。
(2-2)課題2
5Gでは、SUPIに加えSUCI(Subscriber Concealed Identifier)という識別子が標準化された。従来の4Gでは、UE(User Equipment)のアタッチ時に認証認可の対象となるIMSIをアタッチリクエストに入れてMME(Mobility Management Entity)へ送信していた。しかし、認証認可前はUEとeNB(evolved Node B)間でセキュリティコンテキストが確立されていないため、IMSIを平文で送信していた。セキュリティリスクを低減するため、5GではSUCIというSUPIから生成される識別子を用いて認証認可を行う。仮に課題1が解決できたとしても、SUPIやPEIだけでは、SUCIに基づき行われる初期登録(Initial Registration)手順をトレースすることができない。
5Gでは、SUPIに加えSUCI(Subscriber Concealed Identifier)という識別子が標準化された。従来の4Gでは、UE(User Equipment)のアタッチ時に認証認可の対象となるIMSIをアタッチリクエストに入れてMME(Mobility Management Entity)へ送信していた。しかし、認証認可前はUEとeNB(evolved Node B)間でセキュリティコンテキストが確立されていないため、IMSIを平文で送信していた。セキュリティリスクを低減するため、5GではSUCIというSUPIから生成される識別子を用いて認証認可を行う。仮に課題1が解決できたとしても、SUPIやPEIだけでは、SUCIに基づき行われる初期登録(Initial Registration)手順をトレースすることができない。
(2-3)課題3
トレース情報のサンプリング要否は、予め定められたサンプリングレートに基づいてランダムに決定される。そのため、障害発生時等に抽出の必要が生じたトレース情報がDBに保存されていないことがある。IstioとJaegerを組み合わせて利用する場合、デフォルトのサンプリングレートは1%であり、変更することもできる。仮に課題1が解決できたとしても、トレース情報がそもそも保存されていなければ、解析が必要なトレース情報を見ることはできない。一方、トレース情報を全てDBに保存することは、トレース情報を送受信するプロキシおよびコレクタに多大な負荷がかかってしまう。
トレース情報のサンプリング要否は、予め定められたサンプリングレートに基づいてランダムに決定される。そのため、障害発生時等に抽出の必要が生じたトレース情報がDBに保存されていないことがある。IstioとJaegerを組み合わせて利用する場合、デフォルトのサンプリングレートは1%であり、変更することもできる。仮に課題1が解決できたとしても、トレース情報がそもそも保存されていなければ、解析が必要なトレース情報を見ることはできない。一方、トレース情報を全てDBに保存することは、トレース情報を送受信するプロキシおよびコレクタに多大な負荷がかかってしまう。
(3)実施例
上記の課題1~課題3を鑑みて、本開示では、分散トレーシングにおけるネットワーク管理を改善する技術を提案する。具体的には、第1実施例では、上記の課題1を解決する技術を提案する。第2実施例では、上記の課題2を解決する技術を提案する。第3実施例では、上記の課題3を解決する技術を提案する。
上記の課題1~課題3を鑑みて、本開示では、分散トレーシングにおけるネットワーク管理を改善する技術を提案する。具体的には、第1実施例では、上記の課題1を解決する技術を提案する。第2実施例では、上記の課題2を解決する技術を提案する。第3実施例では、上記の課題3を解決する技術を提案する。
(3-1)第1実施例
上記の課題1を解決するため、第1実施例に係るネットワークサービスシステムの各サービスは、外部へ出力するHTTPリクエスト(以下「出力用HTTPリクエスト」と呼ぶ。)を生成する際、前段のサービスから受信したHTTPリクエストに含まれるSUPIやPEI等のモバイル識別子をコピーして出力用HTTPリクエストのヘッダ部に設定する。それとともに、各サービスは、前段のサービスから受信したHTTPリクエストに含まれないモバイル識別子であって、かつ、自身の処理において知り得た新たなモバイル識別子がある場合は、そのモバイル識別子を出力用HTTPリクエストのヘッダ部に追加する。
上記の課題1を解決するため、第1実施例に係るネットワークサービスシステムの各サービスは、外部へ出力するHTTPリクエスト(以下「出力用HTTPリクエスト」と呼ぶ。)を生成する際、前段のサービスから受信したHTTPリクエストに含まれるSUPIやPEI等のモバイル識別子をコピーして出力用HTTPリクエストのヘッダ部に設定する。それとともに、各サービスは、前段のサービスから受信したHTTPリクエストに含まれないモバイル識別子であって、かつ、自身の処理において知り得た新たなモバイル識別子がある場合は、そのモバイル識別子を出力用HTTPリクエストのヘッダ部に追加する。
図6は、第1実施例に係るネットワークサービスシステム100の構成を示すブロック図である。本明細書のブロック図で示す複数の機能ブロックは、ハードウェア的には、回路ブロック、メモリ、その他のLSIで構成することができ、ソフトウェア的には、メモリにロードされたプログラムをCPUが実行すること等により実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
ネットワークサービスシステム100は、ユーザのモバイル機器であるUE10が接続される基地局装置102と、基幹回線網であるコアネットワークシステム104を備える。ネットワークサービスシステム100は、UE10から送信された所定の要求に応じて、基地局装置102およびコアネットワークシステム104が提供する複数のサービスの呼び出しが連鎖的に実行される通信システムである。ネットワークサービスシステム100にはNFVが適用され、基地局装置102のネットワーク機能NFと、コアネットワークシステム104のネットワーク機能NFは仮想化され、不図示の汎用サーバの仮想基盤上にソフトウェアとして実装される。
図7は、第1実施例に係るネットワークサービスシステム100の詳細な構成を示すブロック図である。ゲートウェイ装置12は、イングレスゲートウェイとも言え、外部から入力された所定の要求パケット(実施例ではHTTPリクエスト)を受け付け、その要求パケットをサービスへ転送する中継装置である。
Pod14、Pod18、Pod24、Pod30は、クバネテスでドッカーコンテナを管理するための最小単位を指すものであり、コンピュータ上のプロセスである。Pod14は、ゲートウェイ装置12にデプロイされる。Pod18、Pod24、Pod30は、1台の汎用サーバ上にデプロイされ、または、複数台の汎用サーバ上に分散してデプロイされる(汎用サーバは不図示)。
各Pod内の機能(コンテナ)は、コンピュータプログラムとして実装されてもよく、そのコンピュータプログラムが記録された記録媒体、または、ネットワークを介して、各サーバにデプロイされてもよい。各Podが配置されたサーバのプロセッサは、ストレージに記憶された上記コンピュータプログラムをメインメモリに読み出して実行することにより、各Pod内の機能を発揮してもよい。
Pod14は、GWプロキシ部16を含む。Pod18は、第1サービス部20と第1プロキシ部22を含む。Pod24は、第2サービス部26と第2プロキシ部28を含む。GWプロキシ部16、第1プロキシ部22、第2プロキシ部28は、サイドカーコンテナとしてデプロイされたサービス間通信を仲介するEnvoyプロキシである。
第1サービス部20は、第1のサービスを提供し、言い換えれば、第1のサービスとして定められたデータ処理を実行する。第2サービス部26は、第1のサービスとは異なる第2のサービスを提供し、言い換えれば、第2のサービスとして定められたデータ処理を実行する。第1実施例では、第1のサービスと第2のサービスはともにマイクロサービスである。第1のサービスと第2のサービスは、同じNFのマイクロサービスであってもよい。例えば、第1サービス部20は、AMFの第1の機能を提供し、第2サービス部26は、AMFの第2の機能を提供するものであってもよい。また、第1のサービスと第2のサービスは、異なるNFのマイクロサービスであってもよい。
Pod30は、トレース収集部32を含む。トレース収集部32は、ゲートウェイ装置12と、複数のサービス部(第1サービス部20および第2サービス部26)から出力された複数の出力データを取得する。この出力データは、トレース情報またはスパンとも言え、第1実施例での出力データは、HTTPリクエストである。トレース収集部32は、ゲートウェイ装置12、第1サービス部20、第2サービス部26から出力された出力データをトレース情報としてトレース記憶部34に格納する。
トレース記憶部34は、複数のトレース情報、言い換えれば、複数のスパンのデータを記憶するデータベースである。第1実施例のトレース情報は、図5のHTTPリクエストに示すように、連鎖的に実行された複数のサービス呼び出しを追跡するための追跡識別子(以下「トレースID」と呼ぶ。)を含む。
運用者端末36は、ネットワークサービスシステム100の運用者(言い換えれば保守者)により操作される情報処理端末である。解析部38は、運用者端末36からの要求に応じて、トレース記憶部34を検索して、連鎖的に実行された複数のサービス呼び出しに関する情報(以下「トレース結果」とも呼ぶ。)を生成する。解析部38は、生成したトレース結果を運用者端末36へ送信し、トレース結果を運用者端末36に記憶させ、または、トレース結果を運用者端末36の表示装置に表示させる。解析部38は、マイクロサービスと同様に汎用サーバ上に設けられてもよく、マイクロサービスが構築されるサーバとは別の装置上に設けられてもよい。
複数のサービス部(第1サービス部20および第2サービス部26)のそれぞれは、自身の処理においてユーザのモバイル識別子を検出した場合、そのモバイル識別子を出力データに設定する。例えば、第1サービス部20または第2サービス部26は、自身の処理において加入者情報を管理するUDM(Unified Data Management)から、要求元のUE10のSUPIを取得した場合、そのSUPIを出力データに設定する。また、第1サービス部20または第2サービス部26は、モバイル識別子を示すキーワード(例えば文字列「SUPI」および「PEI」)を予め記憶してもよく、処理中のデータから上記キーワードを用いてモバイル識別子の値を抽出してもよい。
図7では、第1サービス部20は、自身の処理においてモバイル識別子「ID_A」を認識し、第2サービス部26は、自身の処理においてモバイル識別子「ID_B」と「ID_C」を認識した例を示している。
図7の例では、第1サービス部20は、自身の処理の中で、モバイル識別子「ID_A」を検出し、生成したHTTPリクエスト(出力用HTTPリクエスト)がモバイル識別子「ID_A」に関するリクエストであることを認識する。第1サービス部20は、モバイル識別子「ID_A」を出力用HTTPリクエストのヘッダ部に設定し、出力用HTTPリクエストを後続の処理へ渡す。例えば、第1サービス部20は、自身の処理において加入者情報を管理するUDM(Unified Data Management)から、要求元のUE10のSUPIを取得した場合、そのSUPIを出力用HTTPリクエストのヘッダ部に設定する。
また、図7の例では、第2サービス部26は、自身の処理の中で、モバイル識別子「ID_B」と「ID_C」を検出し、生成した出力用HTTPリクエストがモバイル識別子「ID_B」と「ID_C」に関するリクエストであることを認識する。第2サービス部26は、入力されたHTTPリクエストに設定されたモバイル識別子「ID_A」と、自身の処理で検出したモバイル識別子「ID_B」と「ID_C」を出力用HTTPリクエストのヘッダ部に設定し、出力用HTTPリクエストを後続の処理へ渡す。
第1サービス部20と第2サービス部26のそれぞれは、SHA-1等の公知の暗号学的ハッシュ関数を用いて、ユーザのモバイル識別子のハッシュ値を導出する。第1サービス部20と第2サービス部26のそれぞれは、ユーザのモバイル識別子のハッシュ値を出力用HTTPリクエストに設定する。
図8は、HTTPヘッダへのモバイル識別子の設定例を示す。モバイル識別子であるSUCI、SUPI、PEIのハッシュ値は、それぞれ160ビット長であり、16進数エンコード後、40文字長となる。図8では、複数のモバイル識別子のハッシュ値(16進数エンコード文字列)をハイフン「-」で連結し、X-Request-Idヘッダに設定する例を示している。
図7を参照しつつ、第1実施例のネットワークサービスシステム100の動作を説明する。ゲートウェイ装置12のGWプロキシ部16は、UE10のハンドオーバーに関するHTTPリクエストを外部装置または外部のNFから受信する。GWプロキシ部16は、受信したHTTPリクエストにトレースIDが含まれる場合、そのトレースIDを設定したスパンコンテキストを含むHTTPリクエストを第1サービス部20へ送信する。受信したHTTPリクエストにトレースIDが含まれない場合、GWプロキシ部16は、新たなトレースIDを発行し、そのトレースIDを設定したスパンコンテキストを含むHTTPリクエストを第1サービス部20へ送信する。
また、GWプロキシ部16は、第1サービス部20へ送信したHTTPリクエスト、言い換えれば、GWプロキシ部16から出力したHTTPリクエストをトレース情報としてトレース収集部32へ送信する。トレース収集部32は、GWプロキシ部16から送信されたHTTPリクエストをトレース記憶部34に格納する。
第1プロキシ部22は、GWプロキシ部16から送信されたHTTPリクエストを第1サービス部20に入力する。第1サービス部20は、入力されたHTTPリクエストをもとに所定のマイクロサービス(例えばAMFにおける第1の処理)を実行する。第1サービス部20は、図5に示したように、入力されたHTTPリクエストに含まれるスパンコンテキストに基づく新たなスパンコンテキストを設定し、その新たなスパンコンテキストを含む出力用のHTTPリクエスト(宛先は第2サービス部26)を生成する。新たなスパンコンテキストは、入力されたHTTPリクエストのスパンコンテキストからトレースIDとサンプリング決定値を引き継ぐ。また、図7の例では、出力用のHTTPリクエストのヘッダ部は、モバイル識別子「ID_A」を含む。第1サービス部20は、生成したHTTPリクエストを第1プロキシ部22へ出力する。
第1プロキシ部22は、第1サービス部20から出力されたHTTPリクエストを第2サービス部26へ送信する。それとともに、第1プロキシ部22は、第1サービス部20から出力されたHTTPリクエストをトレース収集部32へ送信する。トレース収集部32は、第1プロキシ部22から送信されたHTTPリクエストをトレース情報としてトレース記憶部34に格納する。
第2プロキシ部28は、第1プロキシ部22から送信されたHTTPリクエストを第2サービス部26に入力する。第2サービス部26は、入力されたHTTPリクエストをもとに所定のマイクロサービス(例えばAMFにおける第2の処理)を実行する。第2サービス部26は、図5に示したように、入力されたHTTPリクエストに含まれるスパンコンテキストに基づく新たなスパンコンテキストを設定し、その新たなスパンコンテキストを含む出力用のHTTPリクエストを生成する(宛先は不図示の他サービス)。新たなスパンコンテキストは、入力されたHTTPリクエストのスパンコンテキストからトレースIDとサンプリング決定値を引き継ぐ。また、図7の例では、出力用のHTTPリクエストのヘッダ部は、モバイル識別子「ID_A」「ID_B」「ID_C」を含む。第2サービス部26は、生成したHTTPリクエストを第2プロキシ部28へ出力する。
第2プロキシ部28は、第2サービス部26から出力されたHTTPリクエストを不図示の他サービスへ送信する。それとともに、第2プロキシ部28は、第2サービス部26から出力されたHTTPリクエストをトレース収集部32へ送信する。トレース収集部32は、第2プロキシ部28から送信されたHTTPリクエストをトレース情報としてトレース記憶部34に格納する。このように、複数のサービスが連鎖的に実行される過程で、各サービスの処理内容または処理結果に関するトレース情報がトレース記憶部34に蓄積されていく。
解析部38は、トレース記憶部34に記憶された複数のトレース情報(実施例では各サービスから出力されたHTTPリクエストデータ)の中から、運用者端末36により検索対象として指定されたモバイル識別子を含むトレース情報を抽出する。第1実施例では、解析部38は、SHA-1等の公知の暗号学的ハッシュ関数を用いて、検索対象として指定されたモバイル識別子のハッシュ値を生成し、そのハッシュ値を含むトレース情報を抽出する。続いて解析部38は、抽出したトレース情報に含まれるトレースIDを含む別のトレース情報をさらに抽出する。
図9は、モバイル識別子をキーとしたトレース発見の例を示す。運用者端末36は、SUPIを入力するテキストフィールドと、PEIを入力するテキストフィールドを含むダッシュボード画面50を表示部に表示させる。ネットワークサービスシステム100の運用者は、検索対象とするSUPIまたはPEIの値(図9ではSUPIの値)をダッシュボード画面50に入力する。運用者端末36は、ダッシュボード画面50に入力された検索対象の情報を解析部38へ送信する(ステップ1)。
解析部38は、運用者端末36から送信された検索対象のモバイル識別子の値(図9ではSUPIの値)のハッシュ値を導出する(ステップ2)。解析部38は、そのハッシュ値をキーとしてトレース記憶部34を検索し、検索対象のモバイル識別子の値(実施例ではSUPIのハッシュ値)を含むトレース情報を抽出する(ステップ3)。解析部38は、ステップ3で抽出したトレース情報に含まれるトレースIDを特定し(ステップ4)、B3ヘッダ伝播で設定されている「X-B3-TraceId」を辿って、関連する別のトレース情報を抽出する(ステップ5)。
解析部38は、ステップ3およびステップ5で抽出した複数のトレース情報を含むトレース結果であり、言い換えれば、或る要求に応じて連鎖的に実行された一連のサービスに関する複数のトレース情報を含むトレース結果を運用者端末36へ送信して表示させる。解析部38は、図2、図3で示したように、同じトレースIDを含む複数のトレース情報を関連付けたトレース結果を生成してもよい。
第1実施例のネットワークサービスシステム100によると、モバイル識別子(SUPIやPEI)をキーとしてトレース情報をフィルタリングすることができる。これにより、ネットワークの運用者は、意図するトレース結果を容易に参照でき、言い換えれば、通信障害発生時のトラブルシューティングや機能試験確認に有用な情報を容易に取得することができる。また、第1実施例のネットワークサービスシステム100では、モバイル識別子の値そのものではなく、モバイル識別子のハッシュ値をトレース情報として保存することで、セキュリティリスクを低減することができる、
(3-2)第2実施例
本実施例に関して、第1実施例と相違する点を中心に以下説明し、共通する点の説明を適宜省略する。本実施例の構成要素のうち第1実施例の構成要素と同一または対応する構成要素には同一の符号を付して説明する。
本実施例に関して、第1実施例と相違する点を中心に以下説明し、共通する点の説明を適宜省略する。本実施例の構成要素のうち第1実施例の構成要素と同一または対応する構成要素には同一の符号を付して説明する。
第2実施例に係るネットワークサービスシステム100の第1サービス部20は、認証前のユーザに対するサービスを提供し、例えばUE10に対する初期登録処理を実行する。第1サービス部20は、認証前のユーザに関する第1のモバイル識別子であり、言い換えれば、認証前のUE10に関して取得可能な第1のモバイル識別子(例えばSUCI)を含む出力データ(例えばHTTPリクエスト)を出力する。
第2実施例に係るネットワークサービスシステム100の第2サービス部26は、認証成功後のユーザに対するサービスを提供し、例えばUE10に関するハンドオーバー処理を実行する。第2サービス部26は、上記の第1のモバイル識別子に加えて、認証後に取得可能となるユーザに関する第2のモバイル識別子(例えばSUPIやPEI)を含む出力データ(例えばHTTPリクエスト)を出力する。
上記の課題2で述べた理由から、UE10の初期登録手順において、最初にHTTPリクエストを生成する5GコアのAMFは、UE10から送信されたSUCI以外のモバイル識別子を知り得ない。例えば、UE10のSUPIやPEIを知り得ない。そのため、第1サービス部20が、AMFのマイクロサービスとしてUE10の初期登録手順に関する処理を実行するものである場合、第1サービス部20は、ユーザ認証に用いるHTTPリクエスト(例えばNausf_UEAuthenticationリクエスト)に、SUCIの値(具体的にはSUCIのハッシュ値)のみを設定する。
AMFは、ユーザ認証成功後、UDMがSUCIを変換して得たSUPIをAUSF(AUthentication Server Function)経由で取得する。また、AMFは、ユーザ認証成功後、UE10にPEIの提供を要求し、UE10から送信されたPEIを取得する。以降、AMFは、HTTPリクエストのヘッダ部に、SUPIのハッシュ値とPEIのハッシュ値を設定可能となる。そのため、第2サービス部26が、AMFのマイクロサービスとしてUE10のハンドオーバー処理を実行するものである場合、第2サービス部26は、ハンドオーバー対象のUE10のSUCI、SUPIおよびPEIを外部から取得し、ハンドオーバー関連処理に用いるHTTPリクエストに、SUCI、SUPI、PEIそれぞれのハッシュ値を設定する。
第2実施例に係るネットワークサービスシステム100の解析部38は、検索対象として指定された第2のモバイル識別子を含む出力データを抽出し、その出力データに含まれる第1のモバイル識別子を含む別の出力データをさらに抽出する。
図10は、モバイル識別子をキーとしたトレース発見の例を示す。トレースID「42d19・・・」が設定されたトレース情報群54は、認証完了前のUE10に対する初期登録処理に関係する一連のサービスのトレース情報を含む。また、トレースID「a2329・・・」が設定されたトレース情報群52は、認証完了後のUE10に対する処理(例えばハンドオーバー処理)に関係する一連のサービスのトレース情報を含む。
ステップ1とステップ2は、図9と同じであるため図10では省略している。解析部38は、運用者端末36から送信された検索対象のSUPIの値からそのハッシュ値を導出し、SUPIのハッシュ値をキーとしてトレース記憶部34を検索する。解析部38は、キーとしてのSUPIのハッシュ値を含むトレース情報を抽出する(ステップ3)。解析部38は、ステップ3で抽出したトレース情報に含まれるトレースID「a2329・・・」を特定し(ステップ4)、そのトレースIDにより関連付けられた別のトレース情報を抽出する(ステップ5)。図10のステップ5では、トレース情報群52が抽出される。
解析部38は、ステップ3で抽出したトレース情報に含まれるSUCIのハッシュ値を特定し、そのSUCIのハッシュ値を含む別のトレース情報を抽出する(ステップ6)。解析部38は、ステップ6で抽出したトレース情報に含まれるトレースID「42d19・・・」を特定し(ステップ7)、そのトレースIDにより関連付けられた別のトレース情報を抽出する(ステップ8)。図10のステップ8では、トレース情報群54が抽出される。解析部38は、トレース情報群52およびトレース情報群54を含むトレース結果を運用者端末36へ送信して表示させる。
図11も、モバイル識別子をキーとしたトレース発見の例を示す。トレースID「42d19・・・」が設定されたトレース情報群60は、UE10に対する初期登録処理の一部(認証の前半処理)を実行する一連のサービスに関する複数のトレース情報を含む。トレースID「98798・・・」が設定されたトレース情報群58は、UE10に対する初期登録処理の一部(認証の後半処理)を実行する一連のサービスに関する複数のトレース情報を含む。
トレースID「9ba61・・・」が設定されたトレース情報群56は、認証完了後のUE10に対する処理(例えばハンドオーバー処理)を実行する一連のサービスに関する複数のトレース情報を含む。トレース情報群60は、モバイル識別子としてSUCI(実施例ではSUCIのハッシュ値)のみを含む。トレース情報群58は、モバイル識別子としてSUCIとSUPI(実施例ではSUCIとSUPIそれぞれのハッシュ値)を含む。トレース情報群56は、モバイル識別子としてSUPIとPEI(実施例ではSUPIとPEIそれぞれのハッシュ値)を含む。
ステップ1とステップ2は、図9と同じであるため図10では省略している。図11の例では、運用者により指定された検索対象のモバイル識別子はPEIである。解析部38は、運用者端末36から送信された検索対象のPEIの値からそのハッシュ値を導出し、PEIのハッシュ値をキーとしてトレース記憶部34を検索する。解析部38は、キーとしてのPEIのハッシュ値を含むトレース情報を抽出する(ステップ3)。解析部38は、ステップ3で抽出したトレース情報に含まれるトレースIDを特定し(ステップ4)、そのトレースIDにより関連付けられた別のトレース情報を抽出する(ステップ5)。図11のステップ5では、トレース情報群56が抽出される。
解析部38は、ステップ3で抽出したトレース情報に含まれるSUPIのハッシュ値を特定し、そのSUPIのハッシュ値を含む別のトレース情報を抽出する(ステップ6)。解析部38は、ステップ6で抽出したトレース情報に含まれるトレースIDを特定し(ステップ7)、そのトレースIDにより関連付けられた別のトレース情報を抽出する(ステップ8)。図11のステップ8では、トレース情報群58が抽出される。
解析部38は、ステップ6で抽出したトレース情報に含まれるSUCIのハッシュ値を特定し、そのSUCIのハッシュ値を含む別のトレース情報を抽出する(ステップ9)。解析部38は、ステップ9で抽出したトレース情報に含まれるトレースIDを特定し(ステップ10)、そのトレースIDにより関連付けられた別のトレース情報を抽出する(ステップ11)。図11のステップ11では、トレース情報群60が抽出される。解析部38は、トレース情報群56、トレース情報群58およびトレース情報群60を含むトレース結果を運用者端末36へ送信して表示させる。
第2実施例のネットワークサービスシステム100によると、トレース記憶部34に蓄積されるトレース情報の中に、ネットワーク運用者が通常知り得ないモバイル識別子(例えばSUCI)だけしか含まれないトレース情報(ここでは「特殊トレース情報」とも呼ぶ。)が存在する場合でも、SUPIまたはPEIを用いた抽出、フィルタリングにより、特殊トレース情報を含むトレース結果を得ることができる。これにより、例えば、運用者は、UE10の初期登録手順に関するエンドツーエンドでのトレース結果を参照することができる。
(3-3)第3実施例
本実施例に関して、第1実施例、第2実施例と相違する点を中心に以下説明し、共通する点の説明を適宜省略する。本実施例の構成要素のうち第1実施例、第2実施例の構成要素と同一または対応する構成要素には同一の符号を付して説明する。
本実施例に関して、第1実施例、第2実施例と相違する点を中心に以下説明し、共通する点の説明を適宜省略する。本実施例の構成要素のうち第1実施例、第2実施例の構成要素と同一または対応する構成要素には同一の符号を付して説明する。
上記の課題3を解決するため、第3実施例に係るネットワークサービスシステム100では、サービスの出力データをトレース情報として保存することの要否を示すパラメータであり、具体的には、HTTPリクエストのヘッダ部にX-B3-Sampledヘッダとして設定するサンプリング決定値(Sampling decision)を、HTTPリクエストのタイプに基づいて動的に変更する。
IstioとJaegerを用いた実装の場合、最初のスパンコンテキストはEnvoyプロキシで設定されるが、その際に、事前に設定されたサンプリングレート(例えば1%)にしたがって、或るHTTPリクエストをトレース対象にするか否かを決定する。トレース対象とする場合、当該HTTPリクエストのスパンコンテキストには「サンプリング決定値=True」が設定され、トレース対象外の場合、当該HTTPリクエストのスパンコンテキストには「サンプリング決定値=False」が設定される。
システム負荷を考慮すると、サンプリングレートを低く抑えることが好ましい。一方、5Gコアで特に重要な3GPP標準インタフェースであるSBIを介したトラフィックは、マイクロサービス全体のトラフィックに比して小さい。実装依存であるが、サービスを細かく分割しているほど、言い換えれば、マイクロサービスの粒度が小さいほど、SBIを介したトラフィックの比率は小さくなる。
そこで、第3実施例に係るネットワークサービスシステム100では、SBI以外のトラフィックについては任意のn%(例えば1%)でトレース情報を記録する。一方、SBIのトラフィックについては任意のm%(m>n、mは例えば100%)でトレース情報を記録する。すなわち、第3実施例に係るネットワークサービスシステム100が備える複数のサービス部は、SBIを介して他のサービスへ送信される出力データを予め定められた第1の割合で記憶部に格納する。一方、複数のサービス部は、SBIとは異なるインタフェースを介して他のサービスへ送信される出力データを予め定められた第2の割合で記憶部に格納する。第1の割合は、第2の割合より高く定められる。
図12は、第3実施例に係るネットワークサービスシステム100の詳細な構成を示すブロック図である。第3実施例に係るネットワークサービスシステム100は、第1実施例の機能ブロックに加えて、サンプリング率設定部44をさらに備える。また、Pod18は、第1サービス部20と第1プロキシ部22に加えて、第1サンプリング決定部40をさらに含む。また、Pod24は、第2サービス部26と第2プロキシ部28に加えて、第2サンプリング決定部42をさらに含む。
第1サンプリング決定部40は、予め定められたサンプリング率にしたがって、第1サービス部20からの出力データ(例えばHTTPリクエスト)をトレース情報として保存することの要否を決定する。第2サンプリング決定部42は、予め定められたサンプリング率にしたがって、第2サービス部26からの出力データ(例えばHTTPリクエスト)をトレース情報として保存することの要否を決定する。以下では、第1サンプリング決定部40の処理を詳細に説明するが、第2サンプリング決定部42の処理も同様である。
サンプリング率設定部44は、運用者端末36から送信された運用者の指示に応じて、GWプロキシ部16、第1サンプリング決定部40、第2サンプリング決定部42のそれぞれに対して運用者により定められたサンプリング率を設定し、または変更する。第3実施例のサンプリング率設定部44は、第1サンプリング決定部40と第2サンプリング決定部42に対して、SBIを介して送信されるデータに対するサンプリング率(以下「SBIサンプリング率」とも呼ぶ。)を設定する。また、サンプリング率設定部44は、GWプロキシ部16に対して、SBIとは異なるインタフェースを介して送信されるデータに対するサンプリング率(以下「非SBIサンプリング率」とも呼ぶ。)を設定する。既述したように、運用者は、SBIサンプリング率として、非SBIサンプリング率より高い値を設定する。
図12を参照しつつ、インタフェースに応じたサンプリング決定値の動的変更例を説明する。ゲートウェイ装置12のGWプロキシ部16には、非SBIサンプリング率1%が事前設定され、言い換えれば、「サンプリング決定値(SD)=True」を1%の割合でHTTPヘッダに設置するよう事前設定される。図12の例では、GWプロキシ部16は、「SD=False」を設定している。なお、SDは、上述のX-B3-Sampledヘッダに対応する。
第1サービス部20と第1プロキシ部22の間に設置される第1サンプリング決定部40は、リクエストが第1サービス部20から第1プロキシ部22に向けて送信されており(すなわち第1サービス部20から出力されたリクエストであり)、かつ、リクエストがオリジナルSBIサンプリング決定値(以下「OSSD」とも呼ぶ。)の情報を含まない場合、SBI向けのリクエストに対するサンプリング要否を事前設定されたSBIサンプリング率にしたがって決定する。以下では、第1サービス部20から出力され第1プロキシ部22に入力されたリクエストを「オリジナルリクエスト」と呼び、第1プロキシ部22から第1プロキシ部22へ出力されるリクエストを「出力リクエスト」と呼ぶ。
第1サンプリング決定部40は、SBI向けのリクエストに対するサンプリング要否示す情報を出力リクエストのヘッダ部のOSSDに設定する。サンプリングが必要と決定した場合、「OSSD=True」を設定し、サンプリングが不要と決定した場合、「OSSD=False」を設定する。図12の例では、SBIサンプリング率を100%とし、「OSSD=True」を設定している。また、第1サンプリング決定部40は、オリジナルリクエストのヘッダ部に設定されていたSDの値を、出力リクエストのヘッダ部のオリジナルサンプリング決定値(以下「OSD」とも呼ぶ。)にコピーする。図12の例では、OSD=Falseが設定されている。
次に、第1サンプリング決定部40は、第1サービス部20から出力されたオリジナルリクエストが、SBI向けのリクエストであるか、またはSBIとは異なるインタフェース向けのリクエスト(例えばgRPC(Remote Procedure Call))であるかを判定する。以下では、前者をSBIリクエストと呼び、後者を非SBIリクエストとも呼ぶ。
第3実施例におけるインタフェース種別の判定方法を説明する。クバネテスでは、Podは複数のワーカーノードに分散配置されるが、ワーカーノード上のPod配置を意識せずに、単一のエンドポイントを提供する「サービス」というリソースがある。クバネテスでは、Podを含む多くのリソースがラベル(例えばKey-Valueペアの文字列)を付けることによって複数のリソースをグループ化することができ、また、ラベルにより特定のPodを抽出することができる。また、「サービス」リソースでは、特定のラベルを持つPodに対してサービス名を付けることができる。各Podは、互いのIPアドレスやポート番号を知ることなしに、このサービス名を用いて通信することができる。
第1サンプリング決定部40は、第1サービス部20から出力されたオリジナルリクエスト、言い換えれば、自身が出力するHTTPリクエストが、SBIリクエストであるか、または非SBIリクエストであるかを判定するために、この「サービス」リソースにアクセスする。「サービス」リソースでは、サービス名に対するラベルが保持されており、或るPodが提供するエンドポイントがSBIであればそのことを示すラベルを持つようにPodリソースにおいて予め記述しておく。例えば、「Interface=sbi」のようなラベルを付与しておく。
第1サンプリング決定部40は、第1サービス部20から出力されたオリジナルリクエストに記述された接続先(言い換えれば呼び出し先)のサービス名をもとに、接続先のサービスに付与されたラベルを「サービス」リソースから取得する。第1サンプリング決定部40は、取得したラベルの記載をもとに、接続先のサービスがSBIのエンドポイントか否か、言い換えれば、第1サービス部20から出力されたオリジナルリクエストが、SBIリクエストと非SBIリクエストのいずれであるかを判定する。
オリジナルリクエストが非SBIリクエストである場合、第1サンプリング決定部40は、オリジナルリクエストのヘッダ部に設定されていたSDの値を、出力リクエストのヘッダ部のSDにコピーする。一方、オリジナルリクエストがSBIリクエストである場合、第1サンプリング決定部40は、OSSDの値を、出力リクエストのヘッダ部のSDにコピー(上書き)する。
図13(a)、図13(b)、図13(c)、図13(d)は、第1サンプリング決定部40の動作例を示す。各図の第1サンプリング決定部40に設定されたSBIサンプリング率は100%とする。
図13(a)は、第1サービス部20から出力されたオリジナルリクエストが非SBIリクエストであり、かつ、そのヘッダにOSSD(およびOSD)が含まれない場合の動作を示している。この場合、第1サンプリング決定部40は、オリジナルリクエストのSD値(図ではFalse)を、出力リクエストのOSD値とSD値に設定する。また、第1サンプリング決定部40は、出力リクエストのOSSD値を、予め定められたSBIサンプリング率にしたがって設定し、ここではTrueに設定する。
図13(b)は、第1サービス部20から出力されたオリジナルリクエストがSBIリクエストであり、かつ、そのヘッダにOSSD(およびOSD)が含まれない場合の動作を示している。この場合、第1サンプリング決定部40は、オリジナルリクエストのSD値(図ではFalse)を、出力リクエストのOSD値に設定する。また、第1サンプリング決定部40は、出力リクエストのOSSD値を、予め定められたSBIサンプリング率にしたがって設定し、ここではTrueに設定する。また、第1サンプリング決定部40は、出力リクエストのSD値にOSSD値を設定し、ここではTrueを設定する。
図13(c)は、第1サービス部20から出力されたオリジナルリクエストが非SBIリクエストであり、かつ、そのヘッダにOSSD(およびOSD)が含まれる場合の動作を示している。この場合、第1サンプリング決定部40は、オリジナルリクエストのOSD値、OSSD値、SD値を、出力リクエストのOSD値、OSSD値、SD値に設定(コピー)する。
図13(d)は、第1サービス部20から出力されたオリジナルリクエストがSBIリクエストであり、かつ、そのヘッダにOSSD(およびOSD)が含まれる場合の動作を示している。この場合、第1サンプリング決定部40は、オリジナルリクエストのOSD値を、出力リクエストのOSD値に設定(コピー)する。また、第1サンプリング決定部40は、オリジナルリクエストのOSSD値を、出力リクエストのOSSD値およびSD値に設定(コピー)する。
図12の第1サンプリング決定部40は、図13(a)の第1サンプリング決定部40に対応する。第1サンプリング決定部40から出力されたリクエストのSD値はFalseであるため、第1プロキシ部22は、第1サンプリング決定部40から出力されたリクエストを第2プロキシ部28に送信する一方、そのリクエストをトレース収集部32に送信する(トレース記憶部34に保存する)ことを抑制する。
図12の第2サンプリング決定部42は、図13(d)の第1サンプリング決定部40に対応する。第2サンプリング決定部42から出力されたリクエストのSD値はTrueであるため、第2プロキシ部28は、第2サンプリング決定部42から出力されたリクエストを不図示の他サービスへ送信するとともに、そのリクエストをトレース収集部32に渡してトレース記憶部34に保存させる。
第3実施例のネットワークサービスシステム100によると、トレース情報のサンプリング率を、3GPPの標準インタフェースであるSBIと非SBIとで独立して設定することができる。SBIは、典型的には、異なるNF間(例えばAMFとUDM間)でのデータ送受信に用いられる。一方、非SBI(例えばgRPC)は、典型的には、1つのNF内部のマイクロサービス間でのデータ送受信に用いられる。したがって、第3実施例のネットワークサービスシステム100によると、トレース取得による処理負荷を低減しつつ、ネットワーク運用者にとって特に重要となるSBIを介して送受信されたデータを確実にトレースすることが可能になる。
第3実施例の変形例を説明する。第3実施例では、第1サンプリング決定部40(第2サンプリング決定部42)は、「サービス」リソースにアクセスして、入力されたオリジナルリクエストがSBIリクエストか否かを判定したが、判定方法はこれに限られない。例えば、入力されたオリジナルリクエストに、接続先のサービスがSBIのエンドポイントか否かを示す識別情報が含まれる場合、または、当該リクエストがSBIリクエストか否かを示す識別情報が含まれる場合、第1サンプリング決定部40(第2サンプリング決定部42)は、この識別情報を参照することによってオリジナルメッセージがSBIリクエストか否かを判定してもよい。
第3実施例の別の変形例を説明する。サンプリング率設定部44は、GWプロキシ部16に対して非SBIサンプリング率を設定し、第1サンプリング決定部40と第2サンプリング決定部42に対して、SBIサンプリング率と非SBIサンプリング率の両方を設定してもよい。この変形例に係る第1サンプリング決定部40(第2サンプリング決定部42)は、第1サービス部20(第2サービス部26)から出力されたオリジナルリクエストが非SBIリクエストである場合、出力リクエストのSD値を非SBIサンプリング率にしたがって設定してもよい。例えば、非SBIサンプリング率が1%の場合、出力リクエストのSD値を1%の確率でTrueにし、99%の確率でFalseにしてもよい。これにより、非SBIリクエストは1%の確率でトレース情報として保存される。
また、この変形例に係る第1サンプリング決定部40(第2サンプリング決定部42)は、第1サービス部20(第2サービス部26)から出力されたオリジナルリクエストがSBIリクエストである場合、出力リクエストのSD値をSBIサンプリング率にしたがって設定してもよい。例えば、SBIサンプリング率が100%の場合、出力リクエストのSD値を必ずTrueにしてもよい。これにより、SBIリクエストは必ずトレース情報として保存される。
以上、本発明を第1~第3実施例をもとに説明した。これらの実施例は例示であり、各構成要素あるいは各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
上述した実施例および変形例の任意の組み合わせもまた本開示の実施の形態として有用である。組み合わせによって生じる新たな実施の形態は、組み合わされる実施例および変形例それぞれの効果をあわせもつ。また、請求項に記載の各構成要件が果たすべき機能は、実施例および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。例えば、請求項に記載のサービス部の機能は、実施例に記載の第1サービス部20、第1プロキシ部22、第1サンプリング決定部40(または第2サービス部26、第2プロキシ部28、第2サンプリング決定部42)の任意の組み合わせにより実現されてもよい。
20 第1サービス部、 22 第1プロキシ部、 26 第2サービス部、 28 第2プロキシ部、 32 トレース収集部、 34 トレース記憶部、 38 解析部、 40 第1サンプリング決定部、 42 第2サンプリング決定部、 44 サンプリング率設定部、 100 ネットワークサービスシステム。
Claims (7)
- 所定の要求に応じて複数のサービス呼び出しが連鎖的に実行されるシステムであって、
前記複数のサービスを提供する複数のサービス部と、
前記複数のサービス部から出力された複数の出力データであって、連鎖的に実行された複数のサービス呼び出しを追跡するための追跡識別子を含む複数の出力データを記憶する記憶部と、
連鎖的に実行された複数のサービス呼び出しに関する情報を生成する解析部と、
を備え、
前記複数のサービス部のそれぞれは、自身の処理においてユーザのモバイル識別子を検出した場合、そのモバイル識別子を前記出力データに設定し、
前記解析部は、前記記憶部に記憶された複数の出力データの中から、検索対象として指定されたモバイル識別子を含む出力データを抽出し、その出力データに含まれる追跡識別子を含む別の出力データをさらに抽出することを特徴とするネットワークサービスシステム。 - 前記複数のサービス部のそれぞれは、前記ユーザのモバイル識別子のハッシュ値を出力データに設定し、
前記解析部は、前記検索対象として指定されたモバイル識別子のハッシュ値を生成し、そのハッシュ値を含む出力データを抽出することを特徴とする請求項1に記載のネットワークサービスシステム。 - 前記複数のサービス部は、認証前のユーザに対するサービスを提供する第1サービス部と、認証後のユーザに対するサービスを提供する第2サービス部とを含み、
前記第1サービス部は、認証前のユーザに関する第1のモバイル識別子を含む出力データを出力し、
前記第2サービス部は、前記第1のモバイル識別子に加えて、認証後に取得可能となるユーザに関する第2のモバイル識別子を含む出力データを出力し、
前記解析部は、検索対象として指定された第2のモバイル識別子を含む出力データを抽出し、その出力データに含まれる第1のモバイル識別子を含む別の出力データをさらに抽出することを特徴とする請求項1または2に記載のネットワークサービスシステム。 - 前記複数のサービス部は、SBI(Service Based Interface)を介して送信される出力データを予め定められた第1の割合で前記記憶部に格納する一方、前記SBIとは異なるインタフェースを介して送信される出力データを予め定められた第2の割合で前記記憶部に格納し、
前記第1の割合は、前記第2の割合より高いことを特徴とする請求項1から3のいずれかに記載のネットワークサービスシステム。 - 運用者の操作に応じて、前記複数のサービス部に対して前記第1の割合を設定する設定部をさらに備えることを特徴とする請求項4に記載のネットワークサービスシステム。
- 所定の要求に応じて複数のサービス呼び出しが連鎖的に実行されるシステムを構成するコンピュータが、
前記複数のサービスを実行するステップと、
前記複数のサービスから出力された複数の出力データであって、連鎖的に実行された複数のサービス呼び出しを追跡するための追跡識別子を含む複数の出力データを所定の記憶部に格納するステップと、
連鎖的に実行された複数のサービス呼び出しに関する情報を生成する解析ステップと、
を実行し、
前記実行するステップは、前記複数のサービスそれぞれの処理においてユーザのモバイル識別子を検出した場合、そのモバイル識別子を前記出力データに設定し、
前記解析ステップは、前記記憶部に記憶された複数の出力データの中から、検索対象として指定されたモバイル識別子を含む出力データを抽出し、その出力データに含まれる追跡識別子を含む別の出力データをさらに抽出することを特徴とするネットワーク管理方法。 - 所定の要求に応じて複数のサービス呼び出しが連鎖的に実行されるシステムを構成するコンピュータに、
前記複数のサービスを実行する機能と、
前記複数のサービスから出力された複数の出力データであって、連鎖的に実行された複数のサービス呼び出しを追跡するための追跡識別子を含む複数の出力データを所定の記憶部に格納する機能と、
連鎖的に実行された複数のサービス呼び出しに関する情報を生成する解析機能と、
を実現させ、
前記実行する機能は、前記複数のサービスそれぞれの処理においてユーザのモバイル識別子を検出した場合、そのモバイル識別子を前記出力データに設定し、
前記解析機能は、前記記憶部に記憶された複数の出力データの中から、検索対象として指定されたモバイル識別子を含む出力データを抽出し、その出力データに含まれる追跡識別子を含む別の出力データをさらに抽出することを特徴とするコンピュータプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020110795A JP2022007690A (ja) | 2020-06-26 | 2020-06-26 | ネットワークサービスシステム、ネットワーク管理方法およびコンピュータプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020110795A JP2022007690A (ja) | 2020-06-26 | 2020-06-26 | ネットワークサービスシステム、ネットワーク管理方法およびコンピュータプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022007690A true JP2022007690A (ja) | 2022-01-13 |
Family
ID=80109902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020110795A Pending JP2022007690A (ja) | 2020-06-26 | 2020-06-26 | ネットワークサービスシステム、ネットワーク管理方法およびコンピュータプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022007690A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023201011A1 (en) * | 2022-04-15 | 2023-10-19 | Dish Wireless L.L.C. | Call tracing within a cloud-based cellular network core |
-
2020
- 2020-06-26 JP JP2020110795A patent/JP2022007690A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023201011A1 (en) * | 2022-04-15 | 2023-10-19 | Dish Wireless L.L.C. | Call tracing within a cloud-based cellular network core |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112738791B (zh) | 基于5g核心网的用户信息关联回填方法、装置、设备和介质 | |
US11425047B2 (en) | Traffic analysis method, common service traffic attribution method, and corresponding computer system | |
CN112468520B (zh) | 一种数据检测方法、装置、设备及可读存储介质 | |
CN112468518B (zh) | 访问数据处理方法、装置、存储介质及计算机设备 | |
US10484279B2 (en) | Executing multiple virtual private network (VPN) endpoints associated with an endpoint pool address | |
WO2016082371A1 (zh) | 一种基于ssh协议的会话解析方法及系统 | |
CN112261172A (zh) | 服务寻址访问方法、装置、系统、设备及介质 | |
EP3417367B1 (en) | Implementing a storage system using a personal user device and a data distribution device | |
CN110225045A (zh) | 全链路数据鉴权方法、装置、设备及存储介质 | |
WO2016086755A1 (zh) | 一种报文处理的方法和透明代理服务器 | |
WO2023093039A1 (zh) | 一种进程间通讯方法及系统 | |
CN113595927A (zh) | 一种旁路模式下镜像流量的处理方法和装置 | |
CN105323128B (zh) | 前端设备接入服务器的方法、装置及系统 | |
CN114828140A (zh) | 业务流量报文转发方法及装置、存储介质及电子设备 | |
JP2022007690A (ja) | ネットワークサービスシステム、ネットワーク管理方法およびコンピュータプログラム | |
WO2015027931A1 (en) | Method and system for realizing cross-domain remote command | |
CN111866993B (zh) | 无线局域网连接管理方法、装置、软件程序及存储介质 | |
US11595871B2 (en) | Systems and methods for securely sharing context between MEC clusters | |
WO2023138335A1 (zh) | 用户终端的差异化控制方法、装置及相关设备 | |
CN109740328B (zh) | 一种权限鉴定方法、装置、计算机设备和存储介质 | |
CN111327680A (zh) | 认证数据同步方法、装置、系统、计算机设备和存储介质 | |
CN114158074B (zh) | 一种5g网元地址确定方法、装置、电子设备及存储介质 | |
CN115664686A (zh) | 一种登录方法、装置、计算机设备和存储介质 | |
CN112838933A (zh) | 一种网络流量分析中的信息同步方法、设备及存储介质 | |
CN112511565B (zh) | 请求响应方法、装置、计算机可读存储介质及电子设备 |