(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-27
(54)【発明の名称】RIC SDK
(51)【国際特許分類】
G06F 8/00 20180101AFI20240319BHJP
H04W 92/12 20090101ALI20240319BHJP
G06F 8/77 20180101ALI20240319BHJP
【FI】
G06F8/00
H04W92/12
G06F8/77
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023540965
(86)(22)【出願日】2022-01-21
(85)【翻訳文提出日】2023-09-05
(86)【国際出願番号】 US2022013427
(87)【国際公開番号】W WO2022186912
(87)【国際公開日】2022-09-09
(32)【優先日】2021-07-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-25
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-03-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-04-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-04-27
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-03-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】514097912
【氏名又は名称】ヴィーエムウェア エルエルシー
【氏名又は名称原語表記】VMware LLC
【住所又は居所原語表記】3401 Hillview Ave., Palo Alto, CA 94303, U.S.A
(74)【代理人】
【識別番号】100087642
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100195693
【氏名又は名称】細井 玲
(74)【代理人】
【識別番号】100203242
【氏名又は名称】河戸 春樹
(74)【代理人】
【識別番号】100212657
【氏名又は名称】塚原 一久
(72)【発明者】
【氏名】シン, アミット
(72)【発明者】
【氏名】ミスラ, ラケシュ
(72)【発明者】
【氏名】グディパチ, アディチャ
(72)【発明者】
【氏名】スブラマニ ジャヤヴェリュ, ギリダール
【テーマコード(参考)】
5B376
5K067
【Fターム(参考)】
5B376BA18
5B376BC08
5B376BC61
5K067EE10
(57)【要約】
低遅延のニアRT RICを提供するために、いくつかの実施形態は、RICの機能を、同一のホストコンピュータ又は異なるホストコンピュータ上で動作する異なるマシン(例えば、VM又はポッド上で実行する)上で動作するいくつかの異なるコンポーネントに分離する。いくつかの実施形態はまた、これらのマシン間に高速インタフェースを提供する。これらのインタフェースの一部又は全部は、ニアRT RICの重要な動作(例えば、データパス処理)が、1つ以上のコンポーネントをストールさせる複数の要求のために遅延しないことを保証するために、ノンブロッキング、ロックレスの態様で動作する。さらに、これらのRICコンポーネントのそれぞれは、コンポーネントのあるプロセスがコンポーネントの別のプロセスの動作をブロックできないように、ノンブロッキングの態様で動作するように設計された内部アーキテクチャも有する。これらの低遅延機能はすべて、ニアRT RICがE2ノードとxApp間の高速IOとして機能できるようにする。
【特許請求の範囲】
【請求項1】
無線アクセスネットワーク(RAN)において制御プレーン動作を実行する方法であって、前記方法は、
ホストコンピュータ上の複数のマシンをデプロイすることと、
各マシン上で
制御プレーン動作を実行する制御プレーンアプリケーションをデプロイすることと、
同一のマシン上の前記制御プレーンアプリケーションと前記RANの1つ以上の要素のセットとの間のインタフェースとして機能するRANインテリジェントコントローラ(RIC) SDKを構成することと、を含む、方法。
【請求項2】
請求項1に記載の方法であって、各マシン上で、前記RIC SDKは、前記制御プレーンアプリケーションのための前記RAN要素のセットへのネットワーク接続を確立するネットワーク接続プロセスのセットを含み、前記マシン上の前記制御プレーンアプリケーションが前記ネットワーク接続プロセスのセットを有することを差し控えることを可能にする、方法。
【請求項3】
請求項2に記載の方法であって、各マシンの各RIC SDKの前記ネットワーク接続プロセスのセットは、前記マシンと、前記マシンの前記制御プレーンアプリケーションによって使用される前記RAN要素のセットとの間のネットワーク接続を確立及び維持し、前記制御プレーンアプリケーションのための前記RAN要素のセットとの間のデータパケット伝送を制御する、方法。
【請求項4】
請求項1に記載の方法であって、各マシン上の前記制御プレーンアプリケーションは、前記RAN SDKが低レベルAPI(アプリケーションプログラムインタフェース)コールに変換する高レベルAPIコールを介して、前記RAN要素のセットと通信する、方法。
【請求項5】
請求項4に記載の方法であって、前記低レベルAPIコールの少なくともサブセットは、標準化策定団体によって規定される、方法。
【請求項6】
請求項4に記載の方法であって、前記高レベルAPIコールは高レベルプログラミング言語で作成され、一方、前記低レベルAPIコールは、ネットワーク接続を確立及び維持し、これらの接続を介してデータパケットを通過させる低レベルコールを含む、方法。
【請求項7】
請求項4に記載の方法であって、前記RAN要素のセットは、前記RANのCU(集中ユニット)とDU(分散ユニット)とを含む、方法。
【請求項8】
請求項7に記載の方法であって、各マシン上の前記RAN SDKは、前記低レベルの標準化で規定されたE2インタフェースを介して前記CU及び前記DUと通信し、一方、前記マシン上の前記制御プレーンアプリケーションは、高レベルAPIコールを用いて、前記RAN SDKを介して前記CU及び前記DUと通信し、前記高レベルAPIコールは、低レベルの伝送又はネットワーク動作を含まない高レベルアプリケーションレイヤにおけるE2インタフェース動作を規定する、方法。
【請求項9】
請求項4に記載の方法であって、前記RAN要素のセットは、前記RICのネットワーク要素を含む、方法。
【請求項10】
請求項9に記載の方法であって、前記RIC要素は、少なくとも1つの共有データレイヤ(SDL)要素を含む、方法。
【請求項11】
請求項9に記載の方法であって、前記RIC要素は、少なくとも1つのデータパス入出力(I/O)要素を含む、方法。
【請求項12】
請求項9に記載の方法であって、前記RIC要素は、少なくとも1つのサービス管理要素を含む、方法。
【請求項13】
RAN(Radio Access Network)において通信する制御プレーンアプリケーションの方法であって、
複数のホストコンピュータ上で動作する複数の制御プレーンアプリケーションをデプロイすることと、
前記複数のホストコンピュータ上で動作する複数のRANインテリジェントコントローラ(RIC)をデプロイして、前記制御プレーンアプリケーションの間の通信インタフェースとして機能する分散RICを実施することと、を含む方法。
【請求項14】
請求項13に記載の方法であって、更に、少なくとも第1の制御プレーンアプリケーションからアプリケーションプログラミングインタフェース(API)コールを受信し、前記APIコールを少なくとも第2の制御プレーンアプリケーションに転送するように、第1のRICを構成することを含む、方法。
【請求項15】
請求項14に記載の方法であって、前記第1の制御プレーンアプリケーション及び前記第2の制御プレーンアプリケーションは、同一のホストコンピュータ上で動作する、方法。
【請求項16】
請求項14に記載の方法であって、前記第1のRIC及び前記第1の制御プレーンアプリケーションは、第1のホストコンピュータ上で動作し、前記第2の制御プレーンアプリケーションは、第2のホストコンピュータ上で動作し、前記第1のRICを構成することは、第2のRICが前記第2の制御プレーンアプリケーションに転送するように、前記第1の制御プレーンアプリケーションから、前記第2のコンピュータ上で動作する前記第2のRICに前記APIコールを転送するように前記第1のRICを構成することを含む、構成することを含む、方法。
【請求項17】
請求項14に記載の方法であって、前記第1の制御プレーンアプリケーション及び前記第2の制御プレーンアプリケーションは、前記分散RICを介して互いに通信するためにRIC APIの共通セットを使用する異なる2者のアプリケーション開発者によって開発される、方法。
【請求項18】
請求項14に記載の方法であって、前記第1のRICを構成することは、前記第1のRICが前記第1の制御アプリケーションから前記第2の制御アプリケーションに前記APIコールを転送する場合に、前記APIコールに1つ以上のパラメータを追加するように前記第1のRICを構成することを含む、方法。
【請求項19】
請求項14に記載の方法であって、前記第1の制御プレーンアプリケーション及び前記第2の制御プレーンアプリケーションは、1つのホストコンピュータ上で動作する第1のマシン及び第2のマシン上で動作し、前記方法は、更に、前記分散RICと、前記第1の制御プレーンアプリケーション及び前記第2の制御プレーンアプリケーションとの間でAPIコールを受信及び転送するためのRIC SDKを各マシン上で構成する、方法。
【請求項20】
請求項19に記載の方法であって、各マシン上で、前記RIC SDKは、前記制御プレーンアプリケーションのための前記RAN要素のセットへのネットワーク接続を確立するネットワーク接続プロセスのセットを含み、そのマシン上の前記制御プレーンアプリケーションが前記ネットワーク接続プロセスのセットを有することを差し控えることを可能にする、方法。
【請求項21】
請求項20に記載の方法であって、各マシンの各RIC SDKの前記ネットワーク接続プロセスのセットは、前記マシンと、前記マシンの前記制御プレーンアプリケーションによって使用される前記RAN要素のセットとの間のネットワーク接続を確立及び維持し、前記制御プレーンアプリケーションのための前記RAN要素のセットとの間のデータパケット伝送を制御する、方法。
【請求項22】
請求項19に記載の方法であって、各マシン上の前記制御プレーンアプリケーションは、前記RAN SDKが低レベルAPI(アプリケーションプログラムインタフェース)コールに変換する高レベルAPIコールを介して、前記RAN要素のセットと通信し、前記低レベルAPIコールの少なくともサブセットは標準化策定団体によって規定される、方法。
【請求項23】
請求項19に記載の方法であって、各マシン上の前記制御プレーンアプリケーションは、前記RAN SDKが低レベルAPI(アプリケーションプログラムインタフェース)コールに変換する高レベルAPIコールを介して、前記RAN要素のセットと通信し、前記高レベルAPIコールは高レベルプログラミング言語で作成され、一方、前記低レベルAPIコールは、ネットワーク接続を確立及び維持し、これらの接続を介してデータパケットを通過させる低レベルコールを含む、方法。
【請求項24】
制御プレーンアプリケーションが無線アクセスネットワーク(RAN)の共有データレイヤ(SDL)ストレージを使用する方法であって、
ホストコンピュータ上で動作する前記制御プレーンアプリケーションをデプロイすることと、
前記ホストコンピュータ上にSDLキャッシュをデプロイすることと、
前記SDLキャッシュを使用して、前記制御プレーンアプリケーションのSDLストレージアクセス要求の少なくともサブセットを処理することと、を含む方法。
【請求項25】
請求項24に記載の方法であって、前記制御プレーンアプリケーションは、前記ホストコンピュータ上で動作するマシン上で動作し、前記SDLキャッシュは前記マシン上で動作する、方法。
【請求項26】
請求項24に記載の方法であって、前記制御プレーンアプリケーションは、前記ホストコンピュータ上で動作するマシン上で動作し、前記SDLキャッシュは前記ホストコンピュータ上で動作する、方法。
【請求項27】
請求項24に記載の方法であって、ホストコンピュータ上で動作し、前記SDLキャッシュに格納されたデータを前記SDLストレージに格納されたデータと同期させる、RANインテリジェントコントローラ(RIC)をデプロイすること、を更に含む方法。
【請求項28】
請求項27に記載の方法であって、前記RICをデプロイすることは、他のホストコンピュータ上で動作する他のRICとともに分散RICを実施する前記RICをデプロイすることを含む、方法。
【請求項29】
請求項28に記載の方法であって、前記SDLストレージは、前記制御プレーンアプリケーションが動作する前記ホストコンピュータとは異なるホストコンピュータ上で動作する、方法。
【請求項30】
請求項28に記載の方法であって、前記SDLストレージの少なくとも一部は、前記制御プレーンアプリケーションが動作する前記ホストコンピュータ上で動作する、方法。
【請求項31】
請求項24に記載の方法であって、前記制御プレーンアプリケーションは、前記ホストコンピュータ上で動作するマシン上で動作し、前記方法は、更に、前記制御プレーンアプリケーションからのストレージアクセス要求を処理するように、前記マシン上でRIC SDKを構成すること、を含む方法。
【請求項32】
請求項31に記載の方法であって、前記SDLキャッシュは、前記RIC SDKの一部である、方法。
【請求項33】
請求項32に記載の方法であって、
前記RICをデプロイすることは、他のホストコンピュータ上で動作する他のRICとともに分散RICを実施する前記RICをデプロイすることを含み、
前記SDLストレージは、前記分散RICの一部である、方法。
【請求項34】
請求項33に記載の方法であって、前記RIC SDKは、前記SDLキャッシュを介したSDLアクセス要求を処理することができない場合に、前記制御プレーンアプリケーションからの前記SDLアクセス要求を前記SDLキャッシュに転送する、方法。
【請求項35】
請求項34に記載の方法であって、前記SDLキャッシュが、前記制御プレーンアプリケーションによって要求されたデータを格納していない場合、前記RIC SDKは、前記SDLキャッシュを介してSDLアクセス要求を処理することができない、方法。
【発明の詳細な説明】
【背景技術】
【0001】
電気通信ネットワークでは、無線アクセスネットワーク(RAN)は、電気通信標準の各イテレーションに伴って、より多くの機能を実行する。すなわち、従来の標準と比較して5Gの利点を利用可能にするために、5G RANは様々な付加機能を実行する。
【0002】
これらのRAN機能は、ユーザデバイスとコアネットワークとの間に位置するので、コンピューティング能力が制限され得る基地局(例えば、セルタワー)においてしばしば実行される。
【発明の概要】
【0003】
いくつかの実施形態は、電気通信ネットワークのための新しいRANインテリジェントコントローラ(RIC)を提供する。例えば、低遅延のニアRT RICを提供するために、いくつかの実施形態は、RIC機能を、同一のホストコンピュータ又は異なるホストコンピュータ上で動作する、異なるマシン上で動作する(例えば、VM又はポッド上で動作する)いくつかの異なるコンポーネントに分離する。また、いくつかの実施形態は、これらのマシン間に高速なインタフェースを提供する。これらのインタフェースの一部又は全部は、ニアRT RICの重要な動作(例えば、データパス処理)が、1つ以上のコンポーネントをストールさせる複数の要求のために遅延しないことを保証するために、ノンブロッキング(non-blocking)、ロックレス(lockless)の態様で動作する。さらに、これらのRICコンポーネントのそれぞれは、コンポーネントのあるプロセスがコンポーネントの別のプロセスの動作をブロックできないように、ノンブロッキングの態様で動作するように設計された内部アーキテクチャも有する。これらの低遅延機能のすべては、ニアRT RICが、基地局ノード(すなわちE2ノード)と制御プレーンアプリケーション(例えばxApps)との間で高速IOでサービスを行うことを可能にする。
【0004】
いくつかの実施形態では、ニアRT RICは、データパスポッド(datapath Pod)、サービスポッド(service Pod)、及びSDL(共有データレイヤ(shared data layer))ポッドを含む。RICの低遅延アーキテクチャの一部は、異なるポッドを使用してデータIO、サービス、及びSDL動作を実施することに起因する。そのため、実行する動作のそれぞれのニーズに基づいて、異なるリソース割り当て及び管理動作をこれらのポッドのそれぞれに提供できる。また、いくつかの実施形態では、RICは、その様々なポッド間に低遅延メッセージングを提供する。
【0005】
サービスポッドは、いくつかの実施形態において、アプリケーション(例えばxApp)オンボーディング、登録、FCAPS(障害、構成、アカウンティング、性能、セキュリティ)、及びその他のサービスを実行する。また、他のRICコンポーネントにサービス(メトリック収集、ポリシープロビジョニング及び構成など)を提供する。SDLポッドは、ニアRT RICの共有データレイヤを実施する。また、いくつかの実施形態のSDLポッドは、1つ以上のサービスコンテナを実行して、SDLに格納されたデータに対して1つ以上の前処理又は後処理サービスを実行する。
【0006】
データパスポッドは、通信ネットワークの基地局コンポーネント間でデータメッセージ転送を実行し、このネットワークの制御及びエッジアプリケーションを実行する。いくつかの実施形態では、データパスポッドのデータパスサービスの一部又は全部が、データパスポッドのデータパススレッド及び制御スレッドに組み込まれる。他の実施形態では、データパスサービスは、データIOスレッド、複数のデータ処理スレッド(DPT)及び制御スレッドに組み込まれる。
【0007】
いくつかの実施形態における制御スレッドは、データパススレッドのためのサービスポッド及びSDLポッドとのインタフェースであるが、他の実施形態では、データパススレッドのためのサービスポッドへのインタフェースである(データパススレッドはSDLポッドと直接通信できるため)。これらのいずれかのアプローチの制御スレッドは、データパスの低速な制御関連動作を実行し、一方、1つ以上のデータパススレッドは、データパスの高速なIO動作を実行する。いくつかの実施形態における制御スレッドは、データパススレッドの動作だけでなく、それ自体の動作を構成するための構成データを受信するために、サービスポッドとインタフェースを有する。
【0008】
データパススレッドをデータIOスレッド及び複数のデータ処理スレッドに分離する実施形態は、データパススレッドのより計算量の多い動作を複数のデータパス処理スレッドにプッシュすることにより、データIOをさらに最適化し、それにより、データIOスレッドで実行する計算量の少ない動作を可能にする。これらの最適化の両方は、(不要な遅延を発生しない)高速データパスIOを確実にすることを意図しており、これにより、ニアRT RICは、基地局ノードと制御及びエッジアプリケーションとの間の高速インタフェースとして機能することができる。
【0009】
前述の発明の概要は、本発明のいくつかの実施形態への簡単な導入としての役割を果たすことを意図している。これは、この文書に開示されたすべての発明の主題の導入または概要であることを意味するものではない。以下の詳細な説明および詳細な説明で参照される図面は、発明の概要ならびに他の実施形態で説明される実施形態をさらに説明する。従って、本書面によって説明される全ての実施形態を理解するため、発明の概要、詳細な説明及び図面の十分な確認が必要である。さらに、請求項に記載された主題事項は、主題事項の概念から逸脱することなく、他の特定の形態で具体化することができるので、主題事項は、発明の概要、詳細な説明、及び図面において例示される詳細によって制限されるのではなく、むしろ、添付の請求項によって定義されるものである。
【図面の簡単な説明】
【0010】
本発明の新規の特徴は、添付の請求項に記載されている。しかしながら、説明の目的のため、本発明のいくつかの実施形態は以下の図において明らかになる。
【0011】
【
図1】いくつかの実施形態によるO-RANアーキテクチャの例を示す。
【0012】
【
図2】いくつかの実施形態による非リアルタイムのRIC及びニアリアルタイムのRICの両方のコンポーネントの詳細を示す。
【0013】
【
図3】いくつかの実施形態のMAC制御アシスタのより詳細な図を示す。
【0014】
【
図4】いくつかの実施形態のユーザレベルトレーサのより詳細な図を示す。
【0015】
【
図5】いくつかの実施形態のO-RANアーキテクチャの別の図を示し、ニアリアルタイムのRICのより詳細な図を示す。
【0016】
【
図6】いくつかの実施形態において、制御プレーンアプリケーションを実行する、マシン上でのRIC SDKのデプロイを示す。
【0017】
【
図7】いくつかの実施形態が、いくつかのホストコンピュータ上で実行するために、いくつかのRICをデプロイして、
図5及び6に示されたRICコンポーネントを含む分散ニアRT RICを実施することを示す。
【0018】
【
図8】2つの制御プレーンアプリケーションが実行される2つのマシンとともに、1つのホストコンピュータ上で実行されるRICを示す。
【0019】
【
図9】2つの制御プレーンアプリケーションと2つのRIC SDKが動作する2つのマシンとともに、2つのホストコンピュータ上で動作する2つのRICを示している。
【0020】
【
図10】第1のホストコンピュータ上で動作し、2つの他のホストコンピュータ上で動作する2つのマシン上で動作する2つの制御プレーンアプリケーションを接続するRICを示す。
【0021】
【
図11】第1のホストコンピュータ上で動作し、2つのマシン上で動作する2つの制御プレーンアプリケーションを接続するRICであって、1つは第1のホストコンピュータ上で動作し、もう1つは別のホストコンピュータ上で動作する、ことを示す。
【0022】
【
図12】いくつかの実施形態の分散ニアRT RICプラットフォームがサポートする、異なる標準仕様のAPIの例を示す。
【0023】
【
図13】SDLキャッシュが、その制御プレーンと同じマシン上で動作する各RIC SDKの一部である実施形態を示す。
【0024】
【
図14】ホストコンピュータのハードウェアアクセラレータにパススルーアクセスして、それらの演算の一部又は全部を実行する制御アプリケーション又はエッジアプリケーションの例を示す。
【0025】
【
図15】ホストコンピュータのハードウェアアクセラレータを使用することをアプリケーションに要求する動作を実行するためにCP又はエッジアプリケーションに指示するO-RANコンポーネントに応答して、いくつかの実施形態において実行される処理を示す。
【0026】
【
図16】E2ノードからのデータに基づいて動作を実行するアプリケーションを示している。
【0027】
【
図17】それらの演算の一部(又はすべて)を実行するために、ホストコンピュータのハードウェアアクセラレータへのパススルーアクセスを有する制御アプリケーション又はエッジアプリケーションの別の例を示す。
【0028】
【
図18】ホストコンピュータのハードウェアアクセラレータにパススルーアクセスして、それらの演算の一部又は全部を実行するCP又はエッジアプリケーションの更に別の例を示す。
【0029】
【
図19】いくつかの実施形態が、ホストコンピュータのハードウェアアクセラレータへの直接的なパススルーアクセスを有するO-RANアプリケーションをデプロイするために使用する処理を示す。
【0030】
【
図20】ホストコンピュータ上で実行されるハイパーバイザによって定義された仮想ハードウェアアクセラレータへのパススルーアクセスを有するCP又はエッジアプリケーションの例を示している。
【0031】
【
図21】いくつかの異なるマシン上で動作するいくつかのコンポーネントを有する、ニアRT RICの例を示す。
【0032】
【
図23】
図21のニアRT RIC付近のコンポーネントをデプロイするための異なる例を示している。
【0033】
【0034】
【0035】
【
図27】データパススレッドが、いくつかの実施形態において、xAppからのサブスクリプション要求を処理するために実行する処理を示す。
【0036】
【
図28】1つ以上のxAppが受信すべきE2ノードからのデータメッセージを処理するために、データIOスレッド及びDPTがいくつかの実施形態で実行する処理を示す。
【0037】
【
図29】データIOスレッド及びDPTが、いくつかの実施形態において、E2ノードに送信されるべきxAppからのデータメッセージを処理するために実行する処理を示す。
【0038】
【
図30】いくつかの実施形態においてデータIOスレッドがE2ノードをDPTに割り当てるために使用する処理の例を示す。
【0039】
【
図31】アクティブRICとスタンバイRICによって実施される分散ニアRT RICを示している。
【0040】
【
図32】いくつかの実施形態において、ニアRT RICとE2ノード間、及びニアRT RICとxAppポッド間のインタフェースを示す。
【0041】
【
図33】ニアRT RICのデータパスポッドのE2APメッセージ処理を示す。
【0042】
【
図34】SDLポッドを有するいくつかの実施形態のRICインスタンスを示す。
【0043】
【
図35】本発明のいくつかの実施形態が実施される電子システムを概念的に示す。
【発明を実施するための形態】
【0044】
本発明の以下の詳細な説明では、本発明の多数の詳細、例及び実施形態を記載し説明する。しかしながら、本発明は、説明された実施形態に限定されず、本発明は、説明された特定の詳細および例のいくつか無しに実施されてもよいことが、当業者には明らかであり、明確であろう。
【0045】
今日、O-RANとして実装された電気通信ネットワーク(例えば、セルラーネットワーク)の無線アクセスネットワーク(RAN)を、RAN要素とインタフェースの相互運用性を可能にする標準に押す動きがある。
図1は、いくつかの実施形態による、O-RANアーキテクチャ100の一例を示す。O-RANアーキテクチャ100は、非リアルタイムRIC105、ニアリアルタイムRANインテリジェントコントローラ115、オープン制御プレーン集中ユニット(O-CU-CP)120、オープンユーザプレーン集中ユニット(O-CU-UP)125、オープン分散ユニット(O-DU)130、オープン無線ユニット(O-RU)135、及びO-Cloud140を有するサービス管理及びオーケストレーションフレームワーク110を含む。O-CU-CP120、O-CU-UP125、及びO-DU130は、以下、まとめて管理対象機能120-130と称される場合がある。
【0046】
標準に定義されるように、いくつかの実施形態のSMO110は、SMOがRIC115、管理対象機能120-130、及びO-Cloud140にオープンインタフェース150を介して接続し、管理することを可能にする統合ファブリックを含む。これらの要素とは異なり、O-RU135は、いくつかの実施形態では、SMO110によって管理されず、破線160によって示されるように、O-DU130によって代わりに管理される。いくつかの実施形態では、O-RU135は、無線周波数を処理し、O-DU130に送信する。
【0047】
いくつかの実施形態では、管理対象機能120-130は、各々がプロトコルのセットをホストする論理ノードである。O-RAN規格によれば、例えば、O-CU-CP120は、いくつかの実施形態では、無線リソース制御(RRC)及びパケットデータコンバージェンスプロトコル(PDCP)の制御プレーン部分のようなプロトコルを含み、O-CU-UP125は、サービスデータアダプテーションプロトコル(SDAP)のようなプロトコルと、パケットデータコンバージェンスプロトコル(PDCP)のユーザプレーン部分を含む。
【0048】
2つのRICはそれぞれ、特定の制御ループとレイテンシ要件に適合している。ニアリアルタイムRIC115は、10msから1秒の時間サイクルで、オープン集中ユニット(O-CU)とオープン分散ユニット(O-DU)のプログラム制御を提供する。一方、非リアルタイムRIC(非RT RIC)105は、ニアRT RIC又はRANノードへの直接接続を介してRANで実施され得る上位レイヤポリシーを提供する。非RT RICは、1秒以上の制御ループに使用される。各RIC105又は115は、RAN制御アプリケーションを実行するプラットフォームとして機能する。これらのアプリケーションは、RICベンダとは異なるサードパーティサプライヤによって開発することができる。これらのアプリケーションは、「xApps」(ニアRT RIC115の場合)及び「rApps」(非RT RICの場合)と呼ばれる。
【0049】
ニアリアルタイムRIC115は、いくつかの実施形態では、管理対象機能120-130を制御するために、インタフェース155を介したデータ収集及び通信を利用するいくつかの機能の論理的アグリゲーションである。いくつかの実施形態では、非リアルタイムRIC105は、機械学習及びモデル訓練を使用して、管理対象機能120-130を管理及び最適化する。これらの実施形態のいくつかにおけるニアRT RICは、機械学習も使用する。
【0050】
いくつかの実施形態では、O-Cloud140は、RIC115及び管理対象機能120-130によって使用される仮想ネットワーク機能(VNF)を作成し、ホストする役割を果たす。いくつかの実施形態では、DUは、ユーザスケジューリングのスロット毎の判定を担当し、MAC制御アシスト及びユーザレベルのトレーシングを行うRANスケジューラを含む。クラウドで利用可能なコンピューティング能力を増加させるために(すなわち、典型的にRAN機能を実行する基地局と比較して)、RICは、1つ以上のパブリック及び/又はプライベートクラウドデータセンタで実施され、クラウドで改良されたクラウド定義RANスケジューラを実施し、それにより、これらのMAC制御アシスト及びユーザレベルトレーシング機能をDUからRICにオフロードする。いくつかの実施形態におけるインタフェース155は、RANがRICにおいて機能への入力を提供することを可能にし、少なくともいくつかの実施形態では、RICにおいてこれらの機能によって計算された出力を受信する。
【0051】
図2は、非リアルタイムRIC201とニアリアルタイムRIC202の両方のコンポーネントの詳細な図を示す。RIC201及び202のそれぞれは、それぞれのセットの分析機能210及び212と、それぞれのセットの最適化機能214及び216とを含み、これらはそれぞれ、既存のコンポーネントであることを示すために破線で示される。これらの既存のコンポーネントに加えて、ニアリアルタイム最適化機能216は、2つの新しいコンポーネント、MAC制御アシスタ220及びユーザレベルトレーサ222を含み、実線で示されて既存のコンポーネントと視覚的に区別する。いくつかの実施形態において、これらのコンポーネントは、より大きなMIMOコンポーネントの一部である(例えば、MU-MIMO UEのペアラー及びプリコーダと共に)。
【0052】
いくつかの実施形態において、MAC制御アシスタ220は、(1)UL SRSチャネル信号受信に基づくユーザ機器(UE)特定ビームフォーミング重み計算、(2) UE無線周波数(RF)条件予測、及び(3)UE特定ビームに基づくMACスケジューラに対するマルチユーザ、マルチ入力、マルチ出力(MU-MIMO)ペアリング提案などの様々な機能を含むことができる。これらの各機能について、いくつかの実施形態は、レポートインタフェース(DUからRICへの関数の入力データを提供する)と、制御インタフェース(RICからDUへの関数の出力データを提供する)を公開する。
【0053】
ユーザレベルトレーサ222は、いくつかの実施形態では、ユーザ構成及びトラフィック性能に関連するL1/L2/L3レベル情報を生成する。このトレースデータは、MACスケジューラ、パラメータ設定など、さまざまな制御アルゴリズムへの入力として使用できる。ユーザレベルトレーサ222は、(i)セル内のユーザ動作を追跡することができるトレース動作、(ii)ユーザRF条件の追跡、(iii)異なるレイヤ(MAC、無線リンク制御(RLC)、パケットデータコンバージェンスプロトコル(PDCP))内のユーザデータトラフィック性能の追跡、及び(iv)ユーザRFリソース消費を含むことができるトレース動作を含むことができる。
【0054】
図3は、いくつかの実施形態のMAC制御アシスタ300のより詳細な図を示す。説明するように、MAC制御アシスタ300は、UE-特定ビームフォーミング重み計算器(BFWC)310、UE RF条件プレディクタ320、及びMU-MIMOペアリングサジェスタ330を含んでいる。いくつかの実施形態におけるUE特定BFWC310は、UL SRSチャネル信号受信に基づいている。いくつかの実施形態では、MU-MIMOペアリングサジェスタ330は、UE特定ビームに基づくMACスケジューラのためのものである。
【0055】
MAC制御アシスタ300のコンポーネント310-330の各々は、説明するように、アップリンクとダウンリンクを含む。UE特定BWC機能のために、いくつかの実施形態は、重み計算関数への入力であるアップリンク音声参照信号(UL SRS)チャネル応答行列と、UE特定ビームフォーミング重み行列のための制御インタフェースとのためのレポートインタフェースを公開する。UE RF条件プレディクタ機能のために、いくつかの実施形態は、RF条件プレディクタへの入力であるダウンリンク(DL)チャネル状態レポートのためのレポートインタフェースと、次のスケジューリングウィンドウのための予測されたDLチャネル状態(例えば、DL SINR、PMI、及びランクを含む)のための制御インタフェースを公開する。MU-MIMOペアリング提案機能のために、いくつかの実施形態は、UEペアリング提案機能への入力であるUE特定ビームフォーミング重み行列のレポートインタフェースと、UEペアリング提案及びSINR影響評価のための制御インタフェースを公開する。
【0056】
図4は、いくつかの実施形態のユーザレベルトレーサ400のより詳細な図を示す。トレーサ400は、いくつかの実施形態では、追跡動作を実行するための複数のアップリンク410と複数のダウンリンク415とを含む。これらの動作は、ユーザ設定とトラフィックパフォーマンスに関連するL1/L2/L3レベルの情報を生成する。このトレースデータは、MACスケジューラ、パラメータ設定など、さまざまな制御アルゴリズムへの入力として使用できる。これらの追跡動作は、1)セル内のユーザ挙動を追跡、2)ユーザRF条件を追跡、3)異なるレイヤ(MAC、RLC、PDCP)におけるユーザデータトラフィック性能を追跡、及び4)ユーザRFリソース消費を追跡することができる。
【0057】
これらのトレース動作のために、いくつかの実施形態は、DU及び/又はCUのためのレポートインタフェースを公開して、ユーザレベルの追跡動作に様々なメトリックを提供する。これらのメトリックには、選択したRRCメッセージ、MAC/RLC/PDCPトラフィック量と性能、RF状態、及びRFリソース消費を含めることができる。いくつかの実施形態において、RICへのこれらのインタフェースを介したメッセージは、ユーザの挙動及び/又は定期的な報告(例えば、トラフィック性能及びRF条件/リソース消費のため)に基づいてトリガされる。
【0058】
追跡動作は、上に示された様々なユーザデータを追跡し、この情報をRANに戻すか、又は他の制御アルゴリズム(例えば、RICで動作する他のアルゴリズム)に提供することができる。例えば、これらのアルゴリズムは、ユーザレベルのトレース動作からユーザデータ性能に関する分析を実行し、特定の性能が不十分であると判定し、RANがユーザ・トラフィックをどのように処理しているかを変更する。いくつかの実施形態においてユーザレベルのトレースから利益を得ることができる制御アルゴリズムの例は、(1)トラフィックステアリング、(2)サービス品質(QoS)スケジューリング最適化、(3)ユーザ構成調整、及び(4)ユーザ動作異常検出、を含む。
【0059】
図3-4で説明されているすべての動作(つまり、MACスケジューラ機能とユーザレベルの追跡動作)では、クラウド内のRICで利用可能な計算能力の増加によって、過剰な遅延なしで、より複雑な計算が可能になる。例えば、これらの動作の一部又は全部は、機械学習を使用してRICで実行することができる(例えば、機械で訓練されたネットワークを使用する)。
【0060】
図5は、いくつかの実施形態のO-RANアーキテクチャの別の図を示し、ニアリアルタイムのRICのより詳細な図を示す。アーキテクチャ500は、非リアルタイムRIC510、分散ニアリアルタイムRIC515、及びE2ノード520(例えば、O-DU及び/又はO-CUノード)を有するSMO505を含む。分散ニアリアルタイムRIC515は、メッセージングインフラストラクチャ540、サービスのセット(例えば、550、552、554、及び556)、共有データレイヤ560、データベース570、及び終端インタフェースのセット(例えば、580、582、及び584)を含む。図に示すように、組み込みアプリのセット(530、532、534など)は、この分散ニアRT RICを使用する。以下にさらに説明するように、いくつかの実施形態では、分散ニアRT RIC515は、複数のホストコンピュータ上で実行される複数のRICによって実現される。
【0061】
図に示すように、サービスのセットは、コンフリクトマイグレーションサービス550、アプリサブスクリプション管理サービス552、管理サービス554、及びセキュリティサービス556を含む。さらに、終端インタフェースのセットは、SMOをニアリアルタイムRICに接続するО1終端インタフェース580、ノンリアルタイムRICをニアリアルタイムRICに接続するA1終端インタフェース582、E2ノードをニアリアルタイムRICに接続するE2終端インタフェース584を含む。アプリの各々は、いくつかの実施形態では、E2ノード520から送られたデータを使用するRICの様々な機能を代表する。例えば、アプリ530は、MAC制御アシスタ300のUE特定BFWC310に対応し、アプリ532は、MAC制御アシスタ300のUE RF条件プレディクタ320に対応する、など。
【0062】
いくつかの実施形態では、フレームワーク500の目的は、演算集中型のニアリアルタイムの機能をオフロードし、結果をO-DUに戻すことである(例えば、E2インタフェースを介してE2ノード520に提供する)。いくつかの実施形態では、結果は、MACレイヤにおけるリアルタイム判定を支援又は強化するために使用することができる。MAC制御アシストフレームワークの3つのユースケース例、MAC制御アシスタの異なるコンポーネントに固有の各サンプル(例えば、UE特定BFWC、UE RF条件プレディクタ、MU-MIMOペアリングサジェスタ)、及びユーザレベルトレーサの1つのユースケース例について、以下に説明する。
【0063】
第1のユースケースの例は、MAC制御アシストフレームワークのUL SRS信号受信コンポーネント(例えば、MAC制御アシスタ300のコンポーネント310)に基づくUE特定ビームフォーミング重み計算に特有のものである。この使用事例のいくつかの実施形態では、入力メトリックは、未加工のSRS受信データのようなUL SRSに基づく複数のオプションと、チャネル推定からのSRSチャネル応答行列を含むことができる。
【0064】
いくつかの実施形態では、出力メトリックを生成するためのアルゴリズムは、ユーザに到達するために最適ビームフォーミングの重みを評価する。一部の実施形態は、チャネルモデルに基づく従来の信号処理アルゴリズムを使用する。代わりに、又は、組み合わせて、生データ入力を利用する機械学習ベースのアルゴリズムが使用され、これはE2ノード520内のDUからのフィードバックを必要とする。
【0065】
いくつかの実施形態では、アルゴリズムから得られる出力メトリックは、ユーザのためのビームフォーミング重み行列を含む。いくつかの実施形態において、BFWは、予め設計されたビームセットからのビームインデックスにマッピングすることもできる。いくつかの実施形態におけるDUは、ユーザデータの送受信のためにRU(例えば、アーキテクチャ100内のO-RU135)内のMIMOアンテナアレイゲイン/位相合わせを制御するために行列を使用する。
【0066】
第2のユースケースの例は、MAC制御アシストフレームワーク(例えば、MAC制御アシスタ300のコンポーネント320)のUE RF条件プレディクタコンポーネントに特有である。この第2のユースケースでは、いくつかの実施形態によれば、入力メトリックは、少なくとも、DLの場合は広帯域又はサブバンドCQI/PMI/RI、又はULの場合はSRSのような、UEからのチャネルレポートを含む。いくつかの実施形態の入力メトリックは、UE距離、UE位置決めなどの支援情報を含むことを選択することもできる。
【0067】
いくつかの実施形態では、この第2のユースケースのためのアプリアルゴリズムは、観測に基づいてUEのRF条件を予測することを意図している。一部の実施形態は、チャネル及び移動度モデルに基づく伝統的な信号処理アルゴリズムを利用する。代わりに、又は、組み合わせて、いくつかの実施形態は、データ入力及び潜在的にはサイトレイアウト(DUからのフィードバックを必要とする)のような他の要因を使用する機械学習ベースのアルゴリズムも使用する。
【0068】
このユースケースのための出力メトリックは、いくつかの実施形態では、次のスケジューリングウィンドウのためのユーザの予測チャネル条件、ならびに予測ダウンリンク及びアップリンクSINR、プリコーディング行列(例えば、適用可能である場合)、及びSU-MIMOレイヤを含む。いくつかの実施形態では、これらの出力メトリックは、PDCCH/PDSCH/PUSCH送信のユーザリンクアダプテーションのためにDUによって使用される。
【0069】
第3のユースケースは、MU-MIMOペアリング提案又はMACスケジューラコンポーネント(例えば、MAC制御アシスタ300のコンポーネント330)に特有である。この例のユースケースの入力メトリックは、いくつかの実施形態では、少なくともUE特定BFW行列とUE RF条件推定値とを含む。いくつかの実施形態は、UE特定BFWマトリックス及びUE RF条件推定に加えて、入力指標として、ユーザデータ需要などの支援指標を含むこともできる。
【0070】
このユースケースのためのアプリアルゴリズムは、いくつかの実施形態では、MU-MIMO動作のためにペア化できるユーザを識別することを意図している。例えば、第3のユースケースのいくつかの実施形態は、情報理論及びクロスチャンネル共分散評価に基づく、伝統的な信号処理アルゴリズムを用いる。代わりに、又は、組み合わせて、いくつかの実施形態は、DUからのフィードバックを再度必要とする、データ入力を使用する機械学習ベースのアルゴリズムを使用する。
【0071】
いくつかの実施形態では、この第3のユースケースの出力メトリックは、UEペアリング提案と、SINRレイヤ及びSU-MIMOレイヤに対する影響評価を含むことができる。さらに、いくつかの実施形態のDUは、出力メトリックを使用して、RFスケジューリングのためのユーザを選択し、伝送効率を決定する。
【0072】
ユーザレベルトレーサのユースケースの例として、サービス品質を最適化するためにRFリソースのユーザのスケジューリング優先度を調整することを目標としたQoSスケジューリング最適化を含むことができる。このユースケースのいくつかの実施形態のための入力は、ユーザ加入からのサービス品質目標を含むことができる。いくつかの実施形態において、ユーザレベルのトレースは、(1)ユーザRF条件を追跡すること、(2)異なるレイヤ(例えば、MAC/RLC/PDCP)におけるユーザデータトラフィック性能を追跡すること、及び(3)ユーザRFリソース消費を追跡することを含む。
【0073】
いくつかの実施形態では、アプリアルゴリズムは、QoSターゲット及び観察されたユーザトラフィック性能に基づいており、ユーザのリソース割り当てが不十分であることを判定するために使用することができる。アルゴリズムフォーマットは、いくつかの実施形態では、ロジックベース又は機械学習ベースとすることができる。いくつかの実施形態では、出力は、MACスケジューラに対して発行された推奨を含み、トラフィック優先度又はリンク適応を調整して、パフォーマンスを向上させることができる。
【0074】
制御プレーンアプリケーションを実行する各マシン(例えば、各VM又はポッド)上で、いくつかの実施形態は、RIC SDKを、マシン上の制御プレーンアプリケーションとRANの1つ以上の要素のセットとの間のインタフェースとして機能するように構成する。いくつかの実施形態において、RIC SDKは、アプリケーションが、2つ以上のニアリアルタイムRICによって実施される分散ニアリアルタイム(RT) RICと通信することができる一連のセットAPI(例えばフレームワーク)を提供する。このようなアプリケーションの例は、いくつかの実施形態では、xApps、及び他の制御プレーン及びエッジアプリケーションを含む。O-RANでは、xAppは制御プレーン、監視、及びデータ処理動作を実行する。
図6及び8-20に関する以下の議論は、制御プレーンアプリケーション(例えば、615、815、820、915、920など)を意味する。これらの制御プレーンアプリケーションは、いくつかの実施形態において、O-RANシステムにおけるxAppである。
【0075】
図6は、いくつかの実施形態において制御プレーンアプリケーション615を実行するマシン610上のRIC SDK605のデプロイを示す。説明するように、1つ以上のマシン610は、1つ以上のデータセンタ内のいくつかのホストコンピュータ607のそれぞれ上で動作する。いくつかの実施形態では、各マシン610上のRIC SDK605は、制御プレーンアプリケーションのためのRAN要素のセット(例えば、E2ノード520、共有データレイヤ560、管理サービス554、SMO505など)へのネットワーク接続を確立するネットワーク接続プロセスのセットを含む。RIC SDKプロセスを使用すると、マシン上の制御プレーンアプリケーションでネットワーク接続動作を実行せずに済む。いくつかの実施形態では、各マシンの各RIC SDKのネットワーク接続プロセスのセットは、マシンと、マシンの制御プレーンアプリケーションによって使用されるRAN要素のセットとの間のネットワーク接続を確立及び維持し、制御プレーンアプリケーションのためのRAN要素のセットとの間のデータパケット伝送を処理する。
【0076】
各マシンの制御プレーンアプリケーションは、RIC SDKが低レベルAPI625に変換する高レベルAPI620を介してRAN要素のセットと通信する。いくつかの実施形態では、低レベルAPIコール625の少なくともサブセットは、標準策定団体によって規定される。また、いくつかの実施形態では、高レベルAPI620は、高レベルプログラミング言語(例えば、C++)で作成され、低レベルAPIコールは、ネットワーク接続を確立及び維持し、これらの接続を介してデータパケットを通過する低レベルコールを含む。
【0077】
RIC SDKがそのマシン上の制御プレーンアプリケーションに接続するRAN要素のセットには、異なるRANベンダ及び/又は開発者によって生成又は開発されるRAN要素が含まれる。これらのRAN要素は、いくつかの実施形態において、RANのCU630及びDU635を含む。また、このSDKは低レベルの標準で策定されるE2インターフェイスを介してCU及びDUと通信するが、マシン上の制御プレーンアプリケーションは高レベルAPIコールを使用してRIC SDKを介してCU及びDUと通信する。いくつかの実施形態では、高レベルAPIコールは、低レベル伝送又はネットワーク動作を含まない高レベルアプリケーションレイヤでのE2インタフェース動作を規定する。
【0078】
組み合わせ又は代替として、RIC SDKがそのマシン610上の制御プレーンアプリケーション615と接続するRAN要素のセットは、RICのネットワーク要素を含む。ここでも、いくつかの実施形態におけるこれらのネットワーク要素は、異なるRANベンダ及び/又は開発者によって生成され、及び/又は開発されるRAN要素を含む。いくつかの実施形態におけるこれらのRIC要素には、共有データレイヤ560、データパス入出力(I/O)要素、及びいくつかの実施形態におけるアプリケーション及び管理サービス552及び554が含まれる。
図7は、いくつかの実施形態が、
図5及び6に示されるRICコンポーネントを含む分散ニアRT RIC700を実施するために、いくつかのホストコンピュータ上で動作するように、いくつかのニアRT RIC705をデプロイすることを示す。いくつかの実施形態では、1つのRIC705は、制御プレーンアプリケーション615も実行する各ホストコンピュータ上で動作する。他の実施形態では、制御プレーンアプリケーション615は、RICを実行しないホストコンピュータ上で動作することができる。例えば、いくつかの実施形態では、1つ以上の制御プレーンアプリケーションは、グラフィックプロセッシングユニット(GPU)を有する1つ以上のホストコンピュータ上で動作するが、RICは、GPUの処理能力を必要としないため、そのようなホストコンピュータ上で動作しない。
【0079】
RIC SDKは、分散ニアRT RICを介して、他のマシンで動作しない他の制御プレーンアプリケーションにもその制御プレーンアプリケーションを接続する。言い換えると、いくつかの実施形態におけるRIC SDK及び分散ニアRT RICは、制御プレーンアプリケーション間の通信インタフェースとして機能する。いくつかの実施形態では、異なる制御プレーンアプリケーションは、分散ニアRT RICを介して互いに通信するために共通セットのRIC APIを使用する異なるアプリケーション開発者によって開発される。これらの実施形態のいくつかでは、分散ニアRT RICは、APIコールを一方の制御アプリケーションから他方の制御アプリケーションに転送するときに、APIコールに1つ以上のパラメータを追加する。
【0080】
図8から11に、RIC SDKと分散ニアRT RICが制御プレーンアプリケーション間の通信インタフェースを確立するRICアーキテクチャの例を示す。これらのアーキテクチャは、一部の実施形態では相互に排他的であるが、他の実施形態では、これらのアーキテクチャの2つ以上の組み合わせで使用される。
図8は、2つの制御プレーンアプリケーション815及び820が実行する2つのマシン810及び812と共に、1つのホストコンピュータ805上で実行するRIC800を示す。RIC800は、マシン810及び812上で実行されるRIC SDK802及び804を介して、CPアプリケーション815からAPIコールを受信し、APIコールをCPアプリケーション820に転送し、これらのAPIコールへの応答を第2のCPアプリケーション820から第1のCPアプリケーション815に渡す。また、APIコールを第2のCPアプリケーション820から第1のCPアプリケーション815に渡し、第1のCPアプリケーション815から第2のCPアプリケーション820に応答する。
【0081】
図9は、2つの制御プレーンアプリケーション915及び920及び2つのRIC SDK902及び904が実行される、2つのホストコンピュータ905及び907上で実行される2つのRIC900及び901と、2つのマシン910及び912を示している。図に示すように、第1のCPアプリケーション915から第2のCPアプリケーション920へのAPIコールは、第1のRIC SDK902、第1のRIC900、第2のRIC901及び第2のRIC SDK904を介して転送される。第1のCPアプリケーション915に対するこれらのAPIコールに対する第2のCPアプリケーションの応答は、第2のRIC SDK904、第2のRIC901、第1のRIC900、及び第1のRIC SDK902からリバースパスを通過する。
【0082】
第2のCPアプリケーション920から第1のCPアプリケーション915へのAPIコールは、第2のRIC SDK904、第2のRIC901、第1のRIC900、及び第1のRIC SDK902を介して転送されるが、これらのAPIコールに対する第1のCPアプリケーション915から第2のCPアプリケーション920への応答は、第1のRIC SDK902、第1のRIC900、第2のRIC901、及び第2のRIC SDK904を介して転送される。
【0083】
図10は、2つの他のホストコンピュータ1006及び1007上で動作する2つのマシン1010及び1012上で動作する2つの制御プレーンアプリケーション1015及び1020を接続するために、第1のホストコンピュータ1005上で動作するRIC1000を示す。RIC1000は、マシン1010及び1012上で動作するRIC SDK1002及び1004を介して、CPアプリケーション1015からAPIコールを受信し、APIコールをCPアプリケーション1020に転送し、これらのAPIコールへの応答を第2のCPアプリケーション1020から第1のCPアプリケーション1015に渡す。また、APIコールを第2のCPアプリケーション1020から第1のCPアプリケーション1015に渡し、第1のCPアプリケーション1015から第2のCPアプリケーション1020に応答する。
【0084】
図11は、ホストコンピュータ1105上で動作し、一方がホストコンピュータ1106上で動作する2つのマシン1110及び1112上で動作する2つの制御プレーンアプリケーション1115及び1120を接続するために、第1のホストコンピュータ1105上で実行するRIC1100を示している。RIC1100は、マシン1110及び1112上で実行されるRIC SDK1102および1104を介して、CPアプリケーション1115からAPIコールを受信し、APIコールをCPアプリケーション1120に転送し、これらのAPIコールへの応答を第2のCPアプリケーション1120から第1のCPアプリケーション1115に渡す。これらのSDK1102及び1104を介して、RIC1100はまた、APIコールを第2のCPアプリケーション1120から第1のCPアプリケーション1115に渡し、第1のCPアプリケーション1115から第2のCPアプリケーション1120に応答する。
【0085】
図12は、いくつかの実施形態の分散ニアRT RICプラットフォームがサポートする、異なる標準仕様のAPIの例を示す。説明するように、いくつかの実施形態における分散ニアRT RICプラットフォーム1200は、O-RAN標準規格団体によって規定されるE2、О1及びA1インタフェースを使用する。E2 APIを使用して、O-CU-CP1202、O-CU-UP1204、O-DU1206などのE2 O-RANノードと通信する。また、A1 APIを使用して非リアルタイムRICプラットフォーム1208と通信し、О1 APIを使用してSMO1210と通信する。
【0086】
時間E2、A1及びO1 APIのそれぞれについて、RIC SDK1215は、RIC SDK及び分散ニアRT RICプラットフォームを使用してE2ノード1202-1206、非リアルタイムRICプラットフォーム1208及びSMO1210と通信する制御プレーンアプリケーション1220のための高レベル対応APIを提供する。
図12では、E2、О1、及びAlインターフェイスの上位レベルの対応するAPIを、E2'APIコール、О1'APIコール、及びAE APIコールとしてプライムサインを使用して指定している。これらの高レベル対応APIは、標準団体では規定されていないが、RIC SDK及び/又は分散ニアRT RICが、標準仕様のAPIコールに変換するAPIである。
【0087】
また、
図12は、制御プレーンアプリケーション1220がRIC SDK及び分散ニアRT RICを介して互いに通信し、分散ニアRT RICの1つ以上の要素(例えば、共有データレイヤ560、データパス入出力(I/O)要素、及びアプリケーション及び管理サービス552及び554)と通信することを可能にするためのいくつかの内部RIC APIを示す。
【0088】
使用可能化APIは、いくつかの実施形態で使用されるAPIであり、制御プレーンアプリケーション1220が相互に通信することを可能にする。
図8-11を参照して上述したように、いくつかの実施形態では、これらのAPIは、分散ニアRT RICを通過する。他の実施形態では、これらのAPIは、制御プレーンアプリケーションのRIC SDKが、分散ニアRT RICの他のコンポーネントを通過することなく、互いに直接通信することを可能にする。このため、
図12は、2つの制御プレーンアプリケーション1220のRIC SDK1215間に破線の双方向矢印を含み、いくつかの実施形態では、これらのアプリケーションのRIC SDK1215が互いに直接通信することを示す。
【0089】
一部の実施形態における使用可能化APIには、登録API、サービス探索API、及びアプリ間通信APIが含まれる。登録APIは、アプリケーション1220(例えば、xApps)が、それらのネットワーク識別子(例えば、それらのネットワークアドレス及び利用可能なL4ポート)を提供し、それらの機能(例えば、チャネル予測を実行すること)を提供することによって、自身を他のアプリケーション1220に導入するために使用される。サービス探索APIは、制御プレーンアプリケーション1220(例えば、xApps)が、特定のサービスを提供する他の制御プレーンアプリケーション(例えば、他のxApps)のために、サービスディレクトリ(例えば、分散ニアRT RIC)に問い合わせることを可能にする。アプリ間通信APIを使用すると、制御プレーンアプリケーションが相互に通信してデータを渡したり、特定の動作を要求したりできる。
【0090】
いくつかの実施形態は、SDLキャッシュを制御プレーンアプリケーションと同じホストコンピュータ上にデプロイし、このキャッシュを使用して、制御プレーンアプリケーションのSDLストレージアクセス要求の少なくともサブセットを処理する。いくつかの実施形態において、制御プレーンアプリケーション及びSDLキャッシュは、ホストコンピュータ上で動作するマシン上で動作する。他の実施形態では、SDLキャッシュは、同じホストコンピュータ上で動作するが、制御プレーンアプリケーションが動作するマシンの外部で動作する。これらの実施形態のいくつかでは、同じホストコンピュータ上で実行される複数の制御プレーンアプリケーションは、そのホストコンピュータ上で共通SDLキャッシュを使用する。
【0091】
SDLキャッシュは、いくつかの実施形態では、制御プレーンと同じホストコンピュータ上で動作するRICの一部である。他の実施形態では、SDLキャッシュは、制御プレーンアプリケーションと同じマシン上で動作するRIC SDKの一部である。これらの実施形態のいずれにおいても、RIC又はRIC SDKの同期処理は、SDLキャッシュに記憶されたデータをSDLストレージに記憶されたデータと同期させる。
【0092】
いくつかの実施形態では、SDLストレージは、制御プレーンアプリケーションが実行されるホストコンピュータとは異なるホストコンピュータ上で動作し、他の実施形態では、SDLストレージの少なくとも一部は、制御プレーンアプリケーションが動作する同じホストコンピュータ上で動作する。また、いくつかの実施形態では、RIC SDKがSDLキャッシュを介してSDLアクセス要求を処理できない場合、RIC又はRIC SDKはSDLアクセス要求を制御プレーンアプリケーションからSDLストレージに転送する。たとえば、SDLキャッシュが制御プレーンアプリケーションによって要求されたデータを格納しない場合、RIC 又はRIC SDKはSDLキャッシュを介してSDLアクセス要求を処理できない。
【0093】
図13は、SDLキャッシュ1302が、その制御プレーンアプリケーション1310と同じマシン1305上で実行される各RIC SDK1300の一部である実施形態を示す。説明するように、RIC SDK1300は、CPアプリケーション1310からのSDL要求を処理するクエリマネージャ132と、SDLキャッシュに記憶されたデータを、分散ニアRT RIC1330のSDL1355のSDLストレージ1350に記憶されたデータと同期させる同期サービス1327とを含む。この例では、SDLストレージ1350は、制御プレーンアプリケーション1310が動作するホストコンピュータとは異なるホストコンピュータ上で動作する。しかしながら、他の実施形態では、SDLストレージ1350の少なくとも一部は、制御プレーンアプリケーション1310が動作するのと同じホストコンピュータ上で動作する。
【0094】
制御プレーンアプリケーション1310がSDLストレージへのデータの読み出し又は書込みのために高レベルAPIコールを使用する場合、RIC SDK1300のクエリマネージャ1325は、まず、読み出し又は書み込み中のデータレコードがSDLキャッシュ1302に格納されているか否かを判定する。その場合、クエリマネージャ1325は、このレコードからの読み出し又は書き込みを行う。この動作が書き込み動作である場合、同期サービス1327は、リアルタイムに、又はバッチに基づいて、新しいデータをSDLストレージ1350に書き込む。一方、RIC SDK1300のクエリマネージャ1325は、読み出し又は書き込みされているデータレコードがSDLキャッシュ1302に格納されていないと判定すると、要求された読み出し又は書き込み動作を実行するために分散ニアRT RICのSDLレイヤにAPIコールを渡す。このAPIコールを渡すと、RIC SDK1300は、このコールのフォーマットを修正し、及び/又は、いくつかの実施形態においてこのコールと共に供給されるパラメータを修正する。
【0095】
いくつかの実施形態は、RAN(Open Radio Access Network)内の動作を制御プレーン(CP)上にオフロードするための様々な方法、又はソフトウェア定義データセンタ(SDDC)内のハードウェアアクセラレータを備えたホストコンピュータ上で動作するエッジアプリケーションを提供する。例えば、ハードウェアアクセラレータを備えたホストコンピュータ上で動作するマシン上で動作するCP又はエッジアプリケーションにおいて、いくつかの実施形態の方法は、動作を実行しなければならないO-RAN E2ユニットからデータを受信する。この方法では、マシンのドライバを使用してハードウェアアクセラレータと直接通信し、ハードウェアアクセラレータに動作に関連する計算のセットを実行するように指示する。このドライバにより、ハードウェアアクセラレータとの通信は、マシンのドライバとハードウェアアクセラレータの間でホストコンピュータ上で実行されるドライバの中間セットをバイパスできる。このドライバを介して、いくつかの実施形態のアプリケーションは、演算結果を受信し、それは、次に、1つ以上のO-RANコンポーネント(例えば、データを提供したE2ユニット、別のE2ユニット、又は別のxApp)に提供する。
【0096】
図14-20は、ホストコンピュータのハードウェアアクセラレータへのパススルーアクセスを有するCP又はエッジアプリケーションへのO-RAN動作をオフロードするためのいくつかの異なる実施形態を示す。このようなハードウェアアクセラレータの例には、グラフィカルプロセッシングユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、及び構造化ASICが含まれる。
【0097】
図14は、ホストコンピュータ1410のハードウェアアクセラレータ1450へのパススルーアクセスを有して、それらの演算の一部又は全部を実行するCPアプリケーション又はエッジアプリケーション1402の例を示す。説明するように、各アプリケーション1402は、ホストコンピュータ1410のアクセラレータ1450への直接的なパススルーアクセスを有するアクセラレータドライバ1412を有するポッド1404上で動作する。各ポッド1404は、ホストコンピュータのハイパーバイザ1408上で動作するVM1406内で動作する(すなわち、VM1406上で動作する)。
【0098】
いくつかの実施形態では、ポッドは、Kubernetesで作成および管理することができる、デプロイ可能な小規模なコンピューティングユニットである。ポッドには、共有ストレージとネットワークリソースを有する1つ以上のコンテナのグループと、コンテナの実行方法の仕様が含まれる。いくつかの実施形態では、ポッドの内容は、常に同じ場所に配置され、同時にスケジュールされ、共有コンテキストで実行される。ポッドは、アプリケーション固有の論理ホストコンピュータをモデル化する。ポッドには、相互に通信する1つ以上のアプリケーションコンテナが含まれる。いくつかの実施形態では、ポッドの共有コンテキストは、オペレーティングシステム名前空間(例えば、Linux cgroups)の集合である。ポッドのコンテキスト内では、個々のアプリケーションにさらにサブ分離が適用される場合がある。
【0099】
各ポッドのアクセラレータドライバ1412は、ハードウェアアクセラレータ1450への直接アクセスを有し、このアクセスは、VM1406及びハイパーバイザ1408のハードウェアアクセラレータドライバ1414および1416をバイパスする。いくつかの実施形態では、ハイパーバイザ1408は、ホストコンピュータ1410のオペレーティングシステム(図示せず)上で実行される。これらの実施形態では、各ポッドのアクセラレータドライバ1412のハードウェアアクセラレータ1450への直接アクセスも、オペレーティングシステムのハードウェアアクセラレータドライバをバイパスする。
【0100】
ハードウェアアクセラレータと通信するために、いくつかの実施形態の各アプリケーション1402は、そのポッド上で実行されるRIC SDK1430を介して通信する。例えば、いくつかの実施形態では、各アプリケーション1402は、RIC SDK1430の高レベルAPIを使用してハードウェアアクセラレータ1450と通信する。次に、RIC SDK1430は、高レベルAPIを、マシンのドライバ1412と通信するために必要とされる低レベルAPIに変換し、これは、通信をハードウェアアクセラレータ1450に中継する。低レベルAPIは、ハードウェアアクセラレータ1450の販売に関連する第1の会社によって提供される一方、RIC SDK1430は、RIC SDK1430の販売に関連する第2の会社によって提供される。いくつかの実施形態では、RIC SDK1430によって使用される低レベルAPIは、ハードウェアアクセラレータ1450に関連するAPIライブラリ1432において指定されるAPIである。
【0101】
図15は、いくつかの実施形態の方法を実施する処理1500を示す。処理1500は、CP又はエッジアプリケーションに命令するO-RANコンポーネントに応答して実行され、アプリケーションがそのホストコンピュータのハードウェアアクセラレータを使用することを要求する動作を実行する。この処理1500は、E2ノード1650から受信したデータに基づいて動作を実行するアプリケーション1402を示す
図16を参照して以下に説明される。
【0102】
図15に示すように、処理1500は、(1505で)アプリケーション1402が、ホストコンピュータ1610上で動作しているO-RAN E2ユニット1650からデータを受信すると開始する。いくつかの実施形態では、アプリケーション1402は、E2ユニット1650からのデータをサブスクライブし、1505で受信されたデータは、このサブスクリプションに応答している。このサブスクリプションは、いくつかの実施形態では、分散ニアRT RICを介して行われる。アプリケーション1402のホストコンピュータ1410及び1610とE2ユニット1650は、いくつかの実施形態では1つのSDDCで動作する。他の実施形態では、これらの2つのホストコンピュータ1410及び1610は、2つの異なる物理的位置で動作する。例えば、ホストコンピュータ1410は第1の位置で動作し、一方ホストコンピュータ1610はO-RANのセルサイトに近い第2の位置で動作する。いくつかの実施形態では、第2の位置は、受け付けた動作を含む複雑な動作を実行するハードウェアアクセラレータを有するコンピュータを備えていない。
【0103】
アプリケーション1402は、(1)ホストコンピュータ1410及び1610上で実行されるニアRT RIC1640及び1645で形成される分散ニアRT RIC1680を介してE2ユニット1650から(1505において)データを受信し、及び(2)そのポッド1404上で実行されるRIC SDK1430を受信する。次に、アプリケーション1402は、ハードウェアアクセラレータ1450を使用して、動作に関連する計算のセットを実行する(1510において)。
【0104】
ハードウェアアクセラレータ1450と通信するために、アプリケーション1402は、RIC SDK1430によって提供される高レベルAPIを使用する。次に、RIC SDK1430は、高レベルAPIを、ハードウェアアクセラレータ1450に関連するAPIライブラリ1432に規定された低レベルAPIに変換する。これらの低レベルAPIは、次に、VM1406及びハイパーバイザ1408のドライバ1414及び1416をバイパスするアクセラレータ1450への直接的なパススルーアクセスを介して、ポッドのドライバ1412によってハードウェアアクセラレータ1450に通信される。このドライバ1412、APIライブラリ1432に規定されたAPI及びRIC SDK1430を介して、アプリケーション1402は、ハードウェアアクセラレータ1450によって実行される演算(例えば、計算)の結果も受信する。
【0105】
アプリケーション1402は、その動作の結果を、処理1500を開始したデータ又はSDLストレージを提供したE2ユニット1650などの1つ以上のO-RANコンポーネントに(1515において)提供する。この結果は、RIC SDK1430及び分散ニアRT RIC1680を介して提供される。他の実施形態では、アプリケーション1402は、(RIC SDK1430を介して)その動作の結果を、ハードウェアアクセラレータ1450を使用して動作を実行するアプリケーションと同じホストコンピュータ又は別のホストコンピュータ上で動作する別のO-RAN E2ユニット又はマシン上で動作する1つ以上の他のアプリケーション(アプリケーションがその動作を実行したデータを提供したE2ユニット以外のアプリケーション)に提供する。処理1500は、1515の後で終了する。
【0106】
他の実施形態では、O-RAN制御又はエッジアプリケーションのパススルーアクセスを他のデプロイ設定で使用する。例えば、
図17は、ホストコンピュータ1710のハードウェアアクセラレータ1750へのパススルーアクセスを有し、それらの演算の一部(又は全部)を実行するCPアプリケーション又はエッジアプリケーション1702の別の例を示す。この例では、各アプリケーション1702(1)は、VM1706上で実行するポッド1704上で実行され、(2)ホストコンピュータ1710のアクセラレータ1750への直接的なパススルーアクセスを有するこのVM1706のアクセラレータドライバ1712を使用する。VM1706は、ホストコンピュータ1710上で動作するハイパーバイザ1708上で実行される。仮想マシンのアクセラレータドライバ1712は、ハイパーバイザ1708のハードウェアアクセラレータドライバ1716をバイパスする。いくつかの実施形態では、ハイパーバイザ1708は、ホストコンピュータ1710のオペレーティングシステム(図示せず)上で動作する。これらの実施形態では、仮想マシンのアクセラレータドライバ1712のハードウェアアクセラレータ1750への直接アクセスは、オペレーティングシステムのハードウェアアクセラレータドライバをバイパスする。
【0107】
ハードウェアアクセラレータ1750を使用するために、いくつかの実施形態の各アプリケーション1702は、ハードウェアアクセラレータ1750と通信するために、RIC SDK1730の高レベルAPIを使用する(そのポッド1704上で実行する)。RIC SDK1730は、高レベルAPIを、VMのドライバ1712と通信するために必要とされる低レベルAPIに変換し、次に、通信をハードウェアアクセラレータ1750に中継する。いくつかの実施形態では、RIC SDK1730によって使用される低レベルAPIは、ハードウェアアクセラレータ1750に関連するAPIライブラリ1732において規定されるAPIである。このAPIライブラリ1732は、VM1706のドライバインタフェースの一部である。
【0108】
図18は、ホストコンピュータ1810のハードウェアアクセラレータ1850へのパススルーアクセスを有し、その演算の一部又は全部を実行するCP又はエッジアプリケーション1802のさらに別の例を示す。この例では、各アプリケーション1802(1)は、ホストコンピュータ1810上で動作するハイパーバイザ1806上で動作するVM1804上で動作し、(2)ホストコンピュータ1810のアクセラレータ1850への直接的なパススルーアクセスを有するそのVM1804のアクセラレータドライバ1812を使用する。
【0109】
仮想マシンのアクセラレータドライバ1812は、ハイパーバイザ1806のハードウェアアクセラレータドライバ1816をバイパスする。いくつかの実施形態では、ハイパーバイザ1806は、ホストコンピュータ1810のオペレーティングシステム(図示せず)上で動作する。これらの実施形態では、仮想マシンのアクセラレータドライバ1812のハードウェアアクセラレータ1850への直接アクセスは、オペレーティングシステムのハードウェアアクセラレータドライバをバイパスする。
【0110】
ハードウェアアクセラレータ1850を使用するために、いくつかの実施形態の各アプリケーション1802は、ハードウェアアクセラレータ1850と通信するために、RIC SDK1730の高レベルAPIを使用する(そのポッド1804上で実行する)。RIC SDK1830は、高レベルAPIを、VMのドライバ1812と通信するために必要とされる低レベルAPIに変換し、次に、通信をハードウェアアクセラレータ1850に中継する。いくつかの実施形態では、RIC SDK1830によって使用される低レベルAPIは、ハードウェアアクセラレータ1850に関連するAPIライブラリ1832において指定されるAPIである。このAPIライブラリ1832は、VM1806のドライバインタフェースの一部である。
【0111】
一般的な当業者であれば、O-RAN制御又はエッジアプリケーションのためのパススルーアクセスは、他の実施形態の他のデプロイ設定において使用されることを認識するであろう。例えば、ポッド上で動作する代わりに、他の実施形態のアプリケーションは、コンテナ上で動作する。これらの実施形態は、次いで、それらのポッド又はVMのハードウェアアクセラレータドライバを使用して、制御又はエッジアプリケーションのためのハードウェアアクセラレータへのパススルーアクセスを有する。これらの実施形態のいくつかでは、制御又はエッジアプリケーションは、その関連RIC SDKを介してハードウェアアクセラレータと通信し、他のO-RANコンポーネントと通信し、その関連RIC SDK及びO-RANコンポーネントとアプリケーションを接続する分散ニアRT RICを介して(データを受信し、そのデータ処理の結果を提供するために)、他のO-RANコンポーネントと通信する。いくつかの実施形態において、これらの実施形態の制御又はエッジアプリケーションは、
図15の処理1500と同様の処理を実行する。
【0112】
上記のハードウェアアクセラレータへの直接パススルーアクセスは、O-RANに非常に有益である。RICは、以前はRANソフトウェア(CU及びDU)に組み込まれていたインテリジェンスを切り離し、クラウドに移動することについてのすべてに関する。この利点の1つは、クラウド内のより高度なコンピューティングをxApp及びエッジ動作(ML、ディープラーニング、制御アルゴリズムの強化学習など)に使用することである。セルサイトに近いDUは、ネットワークキャップXが非常に高いため、各セルサイトにGPUを配置することは経済的に実現不可能であり、通常、事前計算を実行できない。
【0113】
SDDC内のハードウェアアクセラレータ(GPU、FPGA、eASIC、ASIC)を使用することにより、いくつかの実施形態は、クラウド内で複雑な制御アルゴリズムを実行する。このようなxAppの例には、上述した、大規模MIMOビームフォーミング及びマルチユーザ(MU) MIMOユーザペアリングが含まれる。一般に、膨大な並列化の利点を得られるxAppは、GPU又はその他のアクセラレータの利点を得られる。ASICの使用は、チャネルデコード/エンコード(ターボ符号化、LDPC符号化など)に有益である。いくつかの実施形態において、RICは、通常、xAppsと同じワーカVM上にある。しかしながら、他の実施形態では、RICは、GPU及び他のハードウェアアクセラレータを必要とするより多くのxAppが、GPU及び/又は他のハードウェアアクセラレータを有するホスト上で実行できるように、異なるホストコンピュータ上で動作する。
【0114】
図19は、いくつかの実施形態が、ホストコンピュータのハードウェアアクセラレータへの直接的なパススルーアクセスを有するO-RANアプリケーションをデプロイするために使用する処理を示す。ホストコンピュータにアプリケーションをインストールするために、処理1900は、ホストコンピュータのハードウェアアクセラレータへのアプリケーションのパススルーアクセスを構成するための記述を含む、1つ以上のインストールファイルのセットを(1905において)選択する。いくつかの実施形態では、ファイルのセットは、そのコンピュータのハードウェアアクセラレータへのアプリケーションのための直接的なパススルーアクセスを指定する1つの記述ファイルを含む。
【0115】
処理1900は、パススルーアクセスに関する記述に基づいて、アプリケーションに関連する特定のハードウェアアクセラレータドライバからハードウェアアクセラレータにコールを渡すためにホストコンピュータ上で動作するプログラムを、特定のハードウェアアクセラレータドライバとハードウェアアクセラレータとの間でホストコンピュータ上で動作する1つ以上のドライバのセットを介在させることなく、構成するインストールファイルのセットを(1910において)使用する。この構成により、アプリケーションは、アプリケーションの動作を実行するようにハードウェアアクセラレータに指示し、動作の結果をハードウェアアクセラレータから受信する場合に、介在するドライバのセットをバイパスすることができる。
【0116】
いくつかの実施形態では1910で構成されるプログラムはホストのオペレーティングシステムであり、他の実施形態ではホストコンピュータ上で実行されるハイパーバイザである。さらに別の実施形態では、プログラムは仮想マシン(VM)であり、アプリケーションはポッド上又はVM上で実行されるコンテナ上で動作する。処理1900は、1905において選択された残りのインストールファイルのセットを処理してアプリケーションのインストールを(1915において)完了し、終了する。他の実施形態では、処理1900は、1910における第1の動作としてではなく、その最後の動作としてプログラムの構成を実行する。さらに別の実施形態では、これは、その介在するインストール動作の1つとして、この構成を実行する。
【0117】
選択及び構成を実行する前に、いくつかの実施形態のデプロイプロセスは、いくつかのホストコンピュータからホストコンピュータを、アプリケーションをインストールすべきコンピュータとして識別する。いくつかの実施形態の処理は、アプリケーションがハードウェアアクセラレータを必要とすることを判定し、各々がハードウェアアクセラレータを構成するホストコンピュータのセットを識別し、ホストコンピュータのセットからホストコンピュータを選択することによって、ホストコンピュータを識別する。このプロセスは、(1)選択されたホストコンピュータ上で実行される1つ以上の他のアプリケーションのセットとアプリケーションが通信する必要があると判定すること、及び(2)ホストコンピュータ上で同時に実行される他のアプリケーションのセットとしてホストコンピュータを選択することによって、ホストコンピュータを選択する。このように、選択したホストコンピュータ上に他のアプリケーションのセットと一緒にアプリケーションをインストールすると、アプリケーションと他のアプリケーションのセットとの間の通信遅延が削減される。
【0118】
いくつかの実施形態は、O-RAN制御又はエッジアプリケーションのハードウェアアクセラレータドライバを有し、アプリケーションと同じホストコンピュータ上で実行される、介在する仮想化アプリケーション(例えば、ハイパーバイザ)によって提供される仮想化ハードウェアアクセラレータと通信する。例えば、いくつかの実施形態の方法は、ホストコンピュータ上で実行されるいくつかのマシン間でホストコンピュータのリソースを共有するために、ホストコンピュータ上に仮想化アプリケーションをデプロイする。このコンピュータには、1つ以上の物理ハードウェアアクセラレータの第1セットがある。
【0119】
この方法は、いくつかのマシンにいくつかのアプリケーションをデプロイし、O-RANコンポーネントのセットに対していくつかのO-RAN関連動作を実行する。仮想化アプリケーションを介して、この方法は、仮想化アプリケーションによって物理ハードウェアアクセラレータの第1のセットにマッピングされる2つ以上の仮想ハードウェアアクセラレータの第2のセットを定義する。この方法では、異なる仮想ハードウェアアクセラレータを異なるアプリケーションに割り当てる。この方法では、割り当てられた仮想ハードウェアアクセラレータを使用して動作を実行するようにアプリケーションを構成することもできる。
【0120】
いくつかの実施形態では、デプロイされたマシンはポッドであり、アプリケーションはポッド上で動作するようにデプロイされる。少なくとも2つのポッドは、仮想化アプリケーションの上位で動作する1つのVM上で動作する。このVMには、2つのポッド上で動作する2つのアプリケーションの2つの異なる仮想ハードウェアアクセラレータと通信するように設定されたハードウェアアクセラレータドライバが含まれる。他の実施形態では、複数のポッドは、仮想化アプリケーションの上で実行される1つのVM上で実行され、各ポッドは、そのドライバに割り当てられた仮想ハードウェアアクセラレータと通信するように構成されたハードウェアアクセラレータドライバを有する。
【0121】
図20は、それらの演算の一部又は全部を実行するために、ホストコンピュータ2010上で実行されるハイパーバイザ2008によって定義される仮想ハードウェアアクセラレータ2052及び2054へのパススルーアクセスを有するCP又はエッジアプリケーション2002の例を示す。説明するように、各アプリケーション2002は、仮想アクセラレータ2052又は2054への直接的なパススルーアクセスを有するアクセラレータドライバ2012を有するポッド2004上で実行される。各ポッド2004は、ホストコンピュータのハイパーバイザ2008上で動作するVM2006内で動作する(すなわち、VM2006上で動作する)。
【0122】
各ポッドのアクセラレータドライバ2012は、仮想アクセラレータ2052又は2054への直接アクセスを有し、このアクセスは、VM2006及びハイパーバイザ2008のアクセラレータドライバ2014及び2016をバイパスする。いくつかの実施形態では、ハイパーバイザ2008は、ホストコンピュータ2010のオペレーティングシステム(図示せず)上で動作する。これらの実施形態では、仮想アクセラレータ2052又は2054への各ポッドのアクセラレータドライバ2012の直接アクセスも、オペレーティングシステムのハードウェアアクセラレータドライバをバイパスする。
【0123】
説明するように、仮想アクセラレータ2052及び2054は、ハイパーバイザ2008のアクセラレータマネージャ2060を介してハードウェアアクセラレータ2050と通信する。アクセラレータマネージャ2060は、仮想アクセラレータ2052及び2054(並びにそれらに関連するアプリケーション2002)が1つのハードウェアアクセラレータ2050を共有することを可能にし、このアクセラレータ2050と共に、それぞれのアプリケーション及びポッド2002及び2004専用であるかのように動作する。このようなハードウェアアクセラレータ2050の例には、グラフィカルプロセッシングユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、及び構造化ASICが含まれる。
【0124】
仮想アクセラレータ2052又は2054と通信するために、いくつかの実施形態の各アプリケーション2002は、ポッド2004上で実行されるRIC SDK2030を介して通信する。例えば、いくつかの実施形態では、各アプリケーション2002は、RIC SDK2030の高レベルAPIを使用して、その仮想アクセラレータ2052又は2054と通信する。次に、RIC SDK2030は、高レベルAPIを、各マシンのドライバ2012と通信するために必要とされる低レベルAPIに変換し、これは、通信を仮想アクセラレータ2052又は2054に中継する。次に、仮想アクセラレータ2052又は2054は、アクセラレータマネージャ2060を介してハードウェアアクセラレータ2050に通信を中継する。
【0125】
図14を参照して上述したように、いくつかの実施形態では、低レベルAPIは、ハードウェアアクセラレータ2050の販売に関連する第1の会社によって提供され、一方、RIC SDK2030は、RIC SDK2030の販売に関連する第2の会社によって提供される。いくつかの実施形態では、RIC SDK2030によって使用される低レベルAPIは、ハードウェアアクセラレータ2050に関連するAPIライブラリ2032において規定されるAPIである。各アプリケーション2002は、アクセラレータマネージャ2060、その仮想アクセラレータ2052又は2054、そのドライバ2012及びそのRIC SDK2030を介して、ハードウェアアクセラレータ2050の動作の結果を受信する。
【0126】
低遅延のニアRT RICを提供するために、いくつかの実施形態は、RIC機能を、同一のホストコンピュータ又は異なるホストコンピュータ上で動作する異なる(例えば、VM又はポッド上で動作する)マシン上で動作するいくつかの異なるコンポーネントに分離する。また、いくつかの実施形態は、これらのマシン間に高速なインタフェースを提供する。これらのインタフェースの一部又は全部は、ニアRT RICの重要な動作(例えば、データパス処理)が、1つ以上のコンポーネントをストールさせる複数の要求のために遅延しないことを保証するために、ノンブロッキング、ロックレスの態様で動作する。さらに、これらのRICコンポーネントのそれぞれは、コンポーネントのあるプロセスがコンポーネントの別のプロセスの動作をブロックできないように、ノンブロッキングの態様で動作するように設計された内部アーキテクチャも有する。これらの低遅延機能はすべて、ニアRT RICがE2ノードとxApp間の高速IOとして機能できるようにする。
【0127】
図21は、いくつかの異なるマシン上で動作するいくつかのコンポーネントを有する、ニアRT RIC2100の例を示す。この例では、ニアRT RICが3つのポッドに分割されている。これらはデータパスポッド2105、サービスポッド2110、SDLポッド2115である。いくつかの実施形態では、このRICは、(1)E2ノード2118とxApps2120との間のE2APメッセージを処理し、(2)E2ノード2118とのコネクションを管理し、(3)E2ノードへのxAppサブスクリプションを処理し、(4)xAppライブネス動作を処理する。RIC2100は、さまざまなコンポーネント間、E2ノードとxApps間、及びE2ノード/xAppsとRICコンポーネント間で、信頼性の高い低遅延メッセージングを提供する。RICの低遅延アーキテクチャの一部は、異なるポッドを使用してデータIO、サービス、及びSDL動作を実施することに起因する。そのため、それらが複数の異なるポッドで実行する動作のそれぞれのニーズに基づいて、異なるリソース割り当て及び管理動作をこれらのポッドのそれぞれに提供できる。
【0128】
3つのRICポッド2105、2110、及び2115はそれぞれ、1つ以上のxAppポッド2120と通信する。いくつかの実施形態において、各ポッド(2105、2110、2115又は2120)は、ポッドの固有のニーズ(すなわち、各ポッドによって実行されるデータパス、サービス及び記憶動作)に従って、ハードウェアリソース(例えば、CPU、メモリ、ディスクストレージ、ネットワークIOなど)が割り当てられる。また、一部の実施形態では、各ポッドには、各ポッドの固有のニーズに一致する独自の高可用性及びライフサイクル更新設定がある。
【0129】
サービスポッド2110は、いくつかの実施形態において、xAppオンボーディング、登録、FCAPS(障害、構成、アカウンティング、性能、セキュリティ)、及びその他のサービスを実行する。例えば、いくつかの実施形態では、サービスポッド2110は、ニアRT RICの管理サービス554を提供し、О1終端580及びA1終端582をSMO及びその関連する非RT RICに実行する。いくつかの実施形態では、これらのコンポーネント554、580、及び582のそれぞれは、サービスポッド2110内の別個のコンテナ上で動作し、他の実施形態では、これらのコンポーネントの2つ以上は、サービスポッド2110内の1つのコンテナ上で動作する。
【0130】
上述のように、いくつかの実施形態では、A1インタフェースは、ニアRT RICと非RT RICとの間にある。このインタフェースを介して、ニアRT RICはE2ノード(例えばCU及びDU)によって報告される関連ネットワーク情報を中継し、非RT RICはE2ノード(例えば非RTの粒度での制御ユースケース動作用)の制御コマンドを提供する。О1インタフェースは、ニアRT RICとSMOの間にあり、いくつかの実施形態では、検出、構成、リソース管理、自動スケーリング、ライフサイクル管理、及びフォールトトレランスのために使用される。
【0131】
いくつかの実施形態におけるRIC管理サービス554は、ニアRT RICがxApps及び他のRICコンポーネントに提供するサービスを含む。xAppsに提供されるサービスの例としては、xAppサービスレジストリ/ディレクトリ(xAppsは、分散ニアRT RICに関連付けられた他のxAppsと、これらの他のxAppsによって実行される動作を識別するために使用できる)、及びFCAP動作(メトリック収集、ポリシープロビジョニング、構成など)がある。いくつかの実施形態において、xAppsは、サービスレジストリ/ディレクトリに照会して、特定のサービスを実行する他のxApps又は他のxAppsを識別することができ、xAppsがディレクトリに追加されたときに、xApps及びその機能に関する通知を受信するように登録することができる。
【0132】
xApp用のサービスポッド2110によって実行されるFCAP動作の例には、アラートを発生させるために分析するCPU及びメモリ使用率を収集するメトリック、xAppsを設定又は再設定するための構成動作、xAppsからメトリックを収集してxAppのパフォーマンスを定量化するために分析するためにアカウンティング及びパフォーマンス動作に必要なデータを収集するためのアカウンティング動作が含まれる。
【0133】
その他のRICコンポーネント(データパスポッド2105及びSDLポッド2115 など)の場合、サービスポッド2110はメトリック収集、ポリシープロビジョニング、設定などのサービスも実行する。サービスポッド2110は、集中制御装置、すなわちSMOの方向で動作を実行するローカル制御装置と見ることができる。SMOを介して、サービスポッド2110はxApps及びその他のRICコンポーネントに配布する構成とポリシーを受信する。また、SMOに対して、サービスポッド 2110は、xApps及び/又はRICコンポーネント(例えば、データパスポッド及びSDLポッド)から収集されたメトリクス、ログ及びトレースデータを提供する。いくつかの実施形態では、サービスポッドは、他のポッドとは独立してスケーリング(例えば、複製)し、バックアップすることができる。いくつかの実施形態において、サービスポッドは、SMOの時系列データベースのためのキャッシュであるデータキャッシュを有する。このキャッシュでは、サービスポッドは、このデータをSMOデータベースにアップロードする前に、xApps及び1つ以上のRICコンポーネントから収集した統計、ログ、トレースデータ、及びその他のメトリクスを保存する。
【0134】
SDLポッド2115は、SDL560及びそれに関連するデータベース570を実施する。以下にさらに説明するように、いくつかの実施形態のSDLポッド2115は、また、1つ以上のサービスコンテナを実行して、SDLに記憶されたデータ上で1つ以上の前処理又は後処理サービスを実行する。サービスポッドと同様に、いくつかの実施形態におけるSDLポッドは、他のポッドとは独立してスケーリング(例えば、複製)し、バックアップすることができる。
【0135】
データパスポッド2105には、いくつかの重要なニアRT RICコンポーネントが含まれている。これらは、E2終端584、コンフリクト緩和550、アプリケーションサブスクリプション管理552、及びRIC SDKインタフェース2150である。以下にさらに説明するように、いくつかの実施形態におけるこれらのデータパスサービスの一部又は全部は、データパスポッドのデータパススレッド及び制御スレッドに組み込まれる。他の実施形態では、データパスサービスは、データIOスレッド、複数のデータ処理スレッド、及び制御スレッドに組み込まれる。
【0136】
スレッドは、コンピュータ上で実行されるプロセスのコンポーネントである。プロセスは、アプリケーションであっても、より大きなアプリケーションの一部であってもかまわない。スレッドは、プログラムされた命令のシーケンスであり、プロセスの他のスレッドから独立して管理することができる。プロセスに割り当てられたメモリを共有しながら、特定のプロセスの複数のスレッドを同時に実行できる(マルチコアプロセッサのマルチスレッド機能を使用するなど)。マルチスレッドは、1つのプロセスのコンテキスト内に複数のスレッドを存在させるプログラミング及び実行モデルである。これらのスレッドはプロセスのリソースを共有するが、独立して実行できる。
【0137】
いくつかの実施形態における制御スレッドは、データパススレッドのためのサービスポッド及びSDLポッドとのインタフェースであるが、他の実施形態では、データパススレッドのためのサービスポッドへのインタフェースである(データパススレッドはSDLポッドと直接通信できるため)。これらのいずれかのアプローチの制御スレッドは、データパスの低速な制御関連動作を実行し、一方、1つ以上のデータパススレッドは、データパスの高速なIO動作を実行する。いくつかの実施形態における制御スレッドは、データパススレッドの動作だけでなく、それ自体の動作を構成するための構成データを受信するために、サービスポッドとインタフェースを有する。
【0138】
データパススレッドをデータIOスレッド及び複数データ処理スレッドに分離する実施形態は、データパススレッドのより計算量の多い演算を複数のデータパス処理スレッドにプッシュすることにより、データIOをさらに最適化し、それにより、データIOスレッドで実行する計算量の少ない演算を可能にする。これらの最適化は両方とも、高速データパスIO(不要な遅延を生じないもの)を確保することを意図しており、ニアRT RICがE2ノード2118とxApps2120間の高速インタフェースとして機能できるようにする。
【0139】
上述したように、ポッド2105、2110及び2115は、高速ポッドインターフェイスを介して通信する。いくつかの実施形態では、ポッドtoポッド接続は、SCTP(ストリーミング制御伝送プロトコル)又はさらに高速な共有メモリ(shmem)接続を介して確立される。いくつかの実施形態では、共有メモリ接続は、同じホストコンピュータ上で実行されるポッドの対の間でのみ使用される。このようなポッドのペアの例としては、(1)データパスポッドとSDLポッド、(2)データパスポッドとサービスポッド、(3)サービスポッドとSDLポッド、(4)xAppポッドとデータパスポッド、(5)xAppポッドとSDLポッドなどがある。共有メモリはロックレスであり、いくつかの実施形態ではそれへのアクセスは非ブロッキングである。他の実施形態では、サービスポッド2110と他のポッド2105、#115、及び2120との間の低速インタフェース(例えば、gRPC)をサービスポッドとして使用するが、他のポッドほど重要ではない。
【0140】
いくつかの実施形態におけるニアRT RICの異なるポッド(例えば、2105、2110及び2115)は、同じホストコンピュータ上で動作することができ、又は2つ以上のホストコンピュータ上で動作することができる。他の実施形態では、1つ以上のポッド(例えば、サービスポッド2110)は、常に、他のポッド(例えば、データパスポッド2105及びSDLポッド2115)以外の別個のホストコンピュータ上で動作する。また、いくつかの実施形態では、ポッド2105、2110及び2115は、1つ以上のxAppポッド2220aと共に1つのホストコンピュータ2205上で動作し、他のxAppポッド2220bは、
図22に示されるように、他のホストコンピュータ2210上で動作する。他の実施形態では、2つのポッド2105、2110及び2115は、1つ以上のxAppポッドと共に1つのホストコンピュータ上で動作し、一方のポッド2105、2110及び2115は、1つ以上のxAppポッドと共に別のホストコンピュータ上で動作する。
【0141】
例えば、
図23は、2つのxAppポッド2320aと共にホストコンピュータ2300上で実行されるデータパスポッド2105及びサービスポッド2110を示し、一方SDLポッド2115は2つのxAppポッド2320bと共にホストコンピュータ2310上で動作する。いくつかの実施形態では、ハードウェアアクセラレータを必要とするポッドは、そのようなハードウェアリソースを有するホストコンピュータ上に置かれ、これらのアクセラレータを必要としないポッドは、上述のように、これらのアクセラレータを持たないホストコンピュータ上に置かれる。いくつかの実施形態では、SDLポッド及びxAppポッドはハードウェアアクセラレータを使用し、データパスポッド及びサービスポッドは使用しない。ハードウェアアクセラレータから恩恵を受けることができるポッドの様々な例、及びこれらのアクセラレータへのバイパスについては、上記及び以下でさらに説明する。
【0142】
また、いくつかのニアRT RICは、ポッドを用いて実装されるものとして上記及び以下で説明されるが、他の実施形態のニアRT RICは、RICコンポーネントを実装するためにVMを使用する。さらに、ポッドで異なるRICコンポーネントを実装する実施形態であっても、ポッドの一部又はすべては、軽量VM(例えば、VMware、Inc.が提供するPhoton VM)のようなVM上で動作する。
【0143】
ポッド間の高速通信インタフェースを使用することに加えて、いくつかの実施形態では、ポッドの一部又は全部が、ノンブロッキング、ロックレス通信プロトコル及びアーキテクチャを使用する。たとえば、データパスポッド2105は、このポッドを構成するスレッドとプロセス間で非ブロッキングのロックレス通信を使用する。データパスポッド2105は、サービスポッド2110、SDLポッド2115、xAppポッド2120との通信時に、ノンブロッキングロックレス通信も使用する。ノンブロッキング通信では、第2のコンポーネントに要求を送信する第1のコンポーネントは、第2のコンポーネントが処理する要求が多すぎる場合に、第2のコンポーネントの動作を停止させることはない。このような場合、第2のコンポーネントは、後で第1のコンポーネントに要求を再送信するように指示する。データパスポッドは、スレッドハンドオフを使用しない単一スレッド処理を使用するため、ロックレス通信を使用する。そのため、別のプロセススレッドが一時的な期間にメモリを変更しないようにするために、メモリの一部をロックする必要はない。
【0144】
データパスポッド2105のRIC SDKインタフェース2150とxAppポッド2120のRIC SDK2112との間の通信インタフェースもまた、いくつかの実施形態において新規である。いくつかの実施形態において、このインタフェースは、E2ノードから受信したE2APメッセージのヘッダを解析し、E2APメッセージのE2SMペイロードを、元のE2APヘッダの一部又は全部とともにカプセル化する新しいカプセル化ヘッダに、解析されたコンポーネントの一部又は全部を格納する。このカプセル化を行う際に、いくつかの実施形態のSDKインタフェース2150は、あるポッドから別のポッドへの通信のためのメッセージサイズオーバヘッドを低減する(例えば、E2グローバルID値のサイズを低減するなど)ために、データパッキングを効率的に実行するなどの特定の最適化を実行する。これらの最適化により、ニアRT RICデータパスポッド及びxAppポッド通信の効率が向上する。
【0145】
他の実施形態におけるニアRT RICは、1つ以上の他のポッドを有する。たとえば、
図24は、ポッド2105、2110、及び2115に加えて、ライフサイクル管理(LCM)ポッド2405も含むニアRT RIC2400を示している。LCMポッドは、ニアRT RIC2400の他のポッド2105、2110、及び2115のそれぞれをアップグレードする特別なサービスポッドである。ライフサイクル管理をサービスポッド2110から分離すると、サービスポッド2110をより簡単にアップグレードできる。
【0146】
いくつかの実施形態において、LCMポッド2405は、異なるポッドをアップグレードするために異なるアップグレード方法を使用する。例えば、いくつかの実施形態のLCMポッドは、SDLデータストレージを複製し、SDLのヒットレスアップグレードを実行するために、アクティブデータストアから別のスタンバイデータストアにシームレスに移行する。一方、データパスポッドをアップグレードするには、LCMポッドの手順がより複雑になる。これは、アクティブデータパスポッドとスタンバイデータパスポッドがE2ノードと各xAppのデュアルホーム接続に設定され、アクティブデータパスポッドがスタンバイデータパスとの状態をレプリケートするように設定されるためである。
【0147】
図25は、いくつかの実施形態について、ニアRT RIC2500のより詳細な図を示す。説明するように、ニアRT RIC2500は、データパスポッド2505、サービスポッド2510及びSDLポッド2515を含む。SDLポッド2515は、RIC2500のSDLエージェント2526及び共有SDLストレージ2528を含み、一方、サービスポッド2510は、О1及びA1終端インタフェース2535及び2537と共にサービスエージェント2524を含む。データパスポッド2505は、データパススレッド2507と制御スレッド2509とを含む。
【0148】
データパススレッド2507は、E2ノード2518とxApps2520との間のニアRT RICの高速データパスIOを提供する。いくつかの実施形態におけるRICのデータプレーン能力は、データパスポッドのデータパス処理のための負荷を共有する1つの制御スレッド及び複数のデータパススレッドを備えたRICデータパスIOを実装することによって、スケールアップすることができる。いくつかのこのような実装について、以下にさらに説明する。制御スレッド2509は、RICのデータパスに関連するいくつかの制御動作を実行する。ニアRT RIC2500は、データIO動作を高速にする必要があり、低速で動作可能な制御動作によって速度を落とすべきではないので、制御スレッドとデータパススレッドを分離する。いくつかの実施形態では、制御及びデータパススレッドは、単一プロセス内の2つのスレッドである(すなわち、同じ共有メモリアドレス空間内で実行される)。
【0149】
いくつかの実施形態では、これらのスレッドのそれぞれは、これらの他のコンポーネントと通信する程度に、このアーキテクチャの他のコンポーネント(例えば、RIC SDK、サービスポッドエージェント、SDLエージェント、及び/又はE2ノード)と通信するために、非ブロッキングのロックレスインタフェースを使用する。また、いくつかの実施形態では、両方のスレッドは、最小限のOSシステムコールを使用し、無限ループとして実行する。さらに後述するように、データパススレッド及び制御スレッドは、データパススレッドから制御スレッドへのメッセージ及び制御スレッドからデータパススレッドへの他の処理メッセージを処理する1つのリングと共に、2つの円形リング2522(cbufと呼ばれる)を介してデータを交換する。
【0150】
制御スレッド2509は、E2ノード2518、SMO2530(サービスポッドエージェント2524を介して)、xApps(例えば、SCTPを介して)、及びSDLレイヤ(SDLエージェント2526を介して)への制御インタフェースとして機能する。いくつかの実施形態では、制御スレッドは、これらの外部エンティティと通信するためのメインスレッドであるが、以下でさらに説明するように、いくつかの実施形態におけるデータパススレッドは、SDLエージェント2526を介してSDL2515と通信する。
【0151】
いくつかの実施形態における制御スレッド2509は、すべての制御機能を処理する。このスレッドは、様々な制御パラメータを他の機能に送信し、いくつかの実施形態では、アドミッション制御を実施する。他の実施形態では、データパススレッド2507は、アドミッション制御を実施し、サービスポッドを介したSMOは、アドミッション制御を指定する。いくつかの実施形態において、制御スレッド2509は、SCTPを介したxAppポッドのRIC SDKとの制御チャネル通信を有する。他の実施形態では、制御スレッドは、gRPCを介してxAppポッドのRIC SDKと通信する。また、いくつかの実施形態では、制御スレッドは、xAppポッド及びデータパスポッドが同じホストコンピュータ上で動作する場合、共有メモリ(shmem)を介してRIC SDKと通信する。
【0152】
制御スレッド2509はまた、データパススレッド2507によって生成された統計、ログ及びトレースデータを伝送するための伝送機構を提供する。いくつかの実施形態では、このデータの一部又は全部は、SDLエージェント2526を介してSDLポッド2515に、及び/又はサービスエージェント2524を介してSMO2530に転送される。いくつかの実施形態における制御スレッド2509は、E2ノードピアとセキュリティ鍵をネゴシエートし、これらのキーをデータパススレッドに渡し、データパススレッドは、それらのキーを使用して暗号化/復号化動作を実行する。
【0153】
データパススレッド2507は、E2ノードとxApp間の高速IOを提供する。このスレッドは、RIC SDKインタフェースとE2終了動作、及びいくつかの実施形態でのコンフリクト緩和とxAppサブスクリプション動作を処理する。このスレッドは、E2APメッセージのASN.1デコードを実行して、メッセージデータを抽出する。いくつかの実施形態では、データパススレッドは、これらのメッセージのE2SMペイロードをデコードしない。データパススレッド2507は、E2及びxAppメッセージとシーケンスを検証する。いくつかの実施形態では、メッセージタイプは、E2ノードセットアップ及びサービス更新、E2ノード指示レポート、E2ノードデータに対するxApp開始サブスクリプション、及びxApp開始制御要求を含む。
【0154】
いくつかの実施形態におけるデータパススレッド2507は、xAppsの代わりに状態(例えば、E2ノードの状態、E2ノードへのサブスクリプションなど)を作成し維持するために、E2状態マシンを実行する。また、いくつかの実施形態では、データパススレッドは、データを要求するxAppsにメッセージを送信するためにテーブルルックアップを実行する。このスレッドは、E2ノードへのxAppsからの制御要求も処理し、これらの要求への応答をE2ノードからxAppsに転送する。
【0155】
データパススレッドは、xAppsが別のホストコンピュータ上にある場合はSCTPを介して、xAppsが同じホストコンピュータ上にある場合は共有メモリを介してxAppsと通信する。いくつかの実施形態では、xAppメッセージは、破損を検出するためのCRCビットを有する。これらのメッセージはまた、タイムスタンプを運び、いくつかの実施形態では圧縮することができる。データパススレッド2507は、複数のサブスクリプションに対してデータレプリケーションを実行する。また、データパススレッド2507は、データメッセージの署名、暗号化、及び復号化などによって、データパスセキュリティ動作を実行する。
【0156】
上述し、さらに後述するように、データパススレッド2507は、一対のリング2522を介して、一部の実施形態では制御スレッド2509と通信する。いくつかの実施形態において、2つのスレッド間のメッセージの周波数は、リングペア当たりのサブミリ秒から秒まで調整可能である(例えば、構成可能である)。制御スレッドを介して、データパススレッド2507は、構成データ更新及び状態変更を受信する。データパススレッド2507は、統計、ログ及びトレースを生成し、生成された統計、ログ及びトレースデータをSDL内に記憶するため、及び/又はSMOに提供するために制御スレッドに提供する。
【0157】
データパススレッド2507は、複数のxAppが同じパラメータを同じE2ノードに同時に設定しようとした場合にもコンフリクト管理動作を実行する。たとえば、コンフリクト管理動作では、2つのxAppが短期間内にモバイルネットワーク設定(アンテナの方向など)を異なる方法で変更しようとしないようにする。いくつかの実施形態では、データパススレッドのコンフリクト管理は、異なるタイプのコンフリクトに対処するために異なる方法論を採用する。例えば、(1)ある要求のセットについて、ある時間の間、コンフリクトする先の第1の要求を受信した後に、パラメータを変更する第2の要求を拒否し、(2)別の要求のセットについて、あるxAppからのパラメータに関する要求を、別の優先度の高いxAppが同じパラメータに対するコンフリクトする要求を行ったときに拒否し、(3)別のパラメータのセットに関する別の要求のセットについて、特定の時間の間にこのような要求を行うことが許されるxAppsによって行われた要求のみを受け入れる。これらのコンフリクトを処理するためのポリシーは、サービスポッドのエージェント2524を介してSMO2530によって提供される。
【0158】
図25では、各xAppポッド2520は1つ以上のxApps2532を実行でき、xAppポッドで実行されるRIC SDK2534を介してデータパスポッド2505、SDLポッド2515及びサービスポッド2510とインタフェースする。各RIC SDKは、xAppsがRIC及びE2ノードと通信するための高レベルインタフェースを提供する。この高レベルインタフェースは、基盤となる実装の詳細を非表示にする。RIC SDKは、高速データIO通信チャネル(共有メモリーやSCTPなど)を介してRICインスタンスと通信する。
【0159】
また、RIC SDKは、xAppオンボーディング、登録、機能、サブスクリプション、FCAPSなどのxApp制御動作のために、サービスポッド2510及び制御スレッド2509との制御通信チャネルも使用する。いくつかの実施形態では、SDKと制御スレッド2509との間の制御チャネル通信は、xAppポッド(及びそのSDK)とデータパスポッドが同じホストコンピュータ上で動作するときには共有メモリを介し、異なるコンピュータ上で動作するときにはSCTPを介して行われる。また、いくつかの実施形態では、xAppポッド(及びそのSDK)とサービスポッドとの間の制御チャネル通信は、SDKとサービスポッドが同じホストコンピュータ上で動作する場合には共有メモリを介し、異なるコンピュータ上で動作する場合にはgRPCを介して行われる。その他の実施形態では、xAppポッド(及びそのSDK)とサービスポッドが異なるホストコンピュータで動作する場合に、SDKとサービスポッド間の通信にSCTPを使用する。
【0160】
いくつかの実施形態では、RIC SDKがgRPCを介してサービスポッドと通信するときに、proto bufsを使用する。また、RIC SDKとデータパスポッドとの通信が共有メモリを介して行われるいくつかの実施形態では、共有メモリ通信は、プロトコルbufを使用する。RIC SDKには、E2ノードとの間のE2メッセージなど、データ関数用のAPIがある。これらのAPIには、オンボーディングxApp(名前、バージョン、機能)、メッセージサブスクリプション、キープアライブメッセージング、サービスポッドを介したSMOとのA1及びО1インタフェース通信(たとえば、統計、ログ、トレースデータをSMO又はサービスポッド上(PrometheusやELKなど)の時系列データベースに格納するための通信)などの制御機能メッセージも含まれる。
【0161】
一部の実施形態では、データパススレッド及び制御スレッドを1つのプロセッサコアに割り当て、(データ及び制御スレッドから分離するために)SDLを別のプロセッサコアに割り当て、サービスポッドをさらに別のプロセッサコアに割り当てる。1つ以上のxAppがRICと同じホストコンピュータ上で動作する場合、xAppはRICポッドとは異なるコアに割り当てられる。RICポッドでは、複数のxAppを同じコアに割り当てることも、個々のコアを必要に応じて個別のxAppに割り当てることもできる。
【0162】
RIC及びxAppの性能をさらに向上させるために、他の実施形態は、特定のメモリ割り当て(例えば、より大きいRAM割り当て)及び特定のIO割り当てのような、他のハードウェア割り当ての最適化を実行する。一部のポッドの専用のIO割り当ての例としては、(1)あるホストコンピュータのxAppポッドが別のホストコンピュータのデータパスポッドと通信するためのSRIOV割り当て、(2)E2ノードと通信するためのデータパスポッドのSRIOV割り当て、(3)あるホストコンピュータのxAppポッドが別のホストコンピュータのサービスポッドと通信するためのSRIOV割り当て、及び(4)gRPC通信が帯域幅割り当てが低く、SCTP通信より優先順位が低いgRPC通信によるSRIOV割り当てを使用したgRPC又はSCTP通信がある。
【0163】
いくつかの実施形態では、1つのRICといくつかのxAppがバンドルされて、1つのVM上で動作する異なるポッド上で動作する。異なるxAppのセットを有するいくつかの実施形態では、RICの複数のインスタンスをデプロイすることもできる。また、いくつかの実施形態では、相互に通信する必要があるxAppは、同じVM上にバンドルされている。
【0164】
上述したように、いくつかの実施形態は、1つのデータパススレッドとしてではなく、複数のデータパス処理スレッドと共に1つのデータIOスレッドとしてRICデータパスを実装する。いくつかの実施形態では、各データパス処理スレッド(DPT)は、各E2ノードがただ1つのデータパス処理スレッドに割り当てられる、異なるE2ノードのセットのためのデータパス処理を実行することに責務を負う。いくつかの実施形態では、データIOスレッドは、メッセージに含まれるE2ノード識別子をハッシュし、ハッシュ化された値(ハッシュによって取得される)を、データメッセージを処理する必要があるDPTのDPT識別子を提供するルックアップテーブルへのインデックスとして使用することによって、E2メッセージ又はxAppメッセージに関連付けられたDPTを識別する。
【0165】
図26は、1つのデータIOスレッド2605、1つの制御スレッド2610、及び複数のDPT2615を有するRICデータパスポッド2600の例を示す。DPTは、データパスポッド2600のデータパス処理負荷を共有する。説明するように、各DPT2615とデータIOスレッド2605、各DPT2615と制御スレッド2610、及びデータIOスレッド2605と制御スレッド2610の間には、cbufリング2620のペアが存在する。cbuf対の各リング2620は、リングに関連する2つのスレッドの一方から他方のスレッドへの一方向にデータメッセージを渡し、一方のリングは一方向に(例えば、第1のスレッドから第2のスレッドへ)通信を処理し、他方に(例えば、第2のスレッドから第1のスレッドへ)通信を処理する。
【0166】
データIOスレッド2605を複数のDPT2615から分離することは、より計算集約的な動作をDPTにプッシュすることによって、データパスポッド2600のデータIOを最適化し、それにより、より計算集約的でないIO動作をデータIOスレッド2605内で実行することを可能にする。この最適化により、高速データパスIO(不要な遅延が発生しないもの)が確保されるため、RICはE2ノードとxApp間の高速インターフェースとして機能できる。また、各E2ノードは、通常、いくつかのE2ノードを担う、1つのDPTスレッド2615だけの責務である。各E2ノードは1つの特定のDPTによって処理されるため、2つのDPTが1つのE2ノードに関連付けられた1つ以上の記録を変更しようとすることはない。したがって、データパスポッド2600は、E2ノードとの通信に対する責務が明確に区別されるため、E2ノードの記録をロックする必要はない。
【0167】
データIOスレッド2605は、(1)E2ノード及びxAppポッドへの接続を管理すること、(2)E2ノード及びxAppポッドとの間のこれらの接続を介してデータメッセージを送信すること、(3)セキュリティ動作を実行すること、(4)制御スレッド2610及びDPT2615とのリング通信を制御すること、及び(5)自身が処理するメッセージに関する統計、ログ及びトレースデータを生成すること、を実行する。
【0168】
各DPTスレッド2615は、(1)メッセージのデコード及びエンコード動作(例えば、メッセージの暗号化及び復号化動作)、(2)メッセージの検証動作、(3)シーケンスの検証動作、(4)E2ノード及びxApp要求及びサブスクリプションの状態を追跡するための状態マシンの維持、(5)コンフリクト管理の実行、(6)制御スレッド2610及びDPT2615との制御リング通信、及び(7)処理するメッセージに関する統計、ログ及びトレースデータの生成、の各動作を実行する。
【0169】
図27は、いくつかの実施形態において、データパススレッドが、xAppからのサブスクリプション要求を処理するために実行する処理2700を示す。図に示すように、DPTがデータIOスレッドからxAppサブスクリプション要求を(2705で)受信すると、処理が開始される。サブスクリプション要求は、特定のE2ノードが維持する特定のデータタプルのセット(例えば、特定の動作パラメータのセット又は他のパラメータ)について、特定のE2ノードに向けられる。
【0170】
2710において、処理2700は、特定のデータタプルのセットを受信するために、特定のE2ノードに既にサブスクライブしているか否かを判定する。これは、DPTが以前に特定のE2ノードを1つ以上のサブスクリプション要求を送信したときに、特定のデータタプルのセット、又は特定のデータタプルのセットを含むより大きなデータタプルを個別に、又は集合的に要求した場合である。
【0171】
処理27100が、特定のデータタプルのセットを受信するために特定のE2ノードに既にサブスクライブしていると判定すると(2710において)、(2715において)このE2ノードのサブスクリプションリスト内のxAppに対して、新しいレコードを追加するか、又は以前に指定されたレコードを更新し、xAppが受信すべき特定のデータタプルのセットをこのレコード内に指定する。2715の後、処理は終了する。
【0172】
一方、処理27100が、特定のデータタプルのセットを受信するために特定のE2ノードにまだサブスクライブしていないと判定した場合(2710において)、それがこのノードとのアクティブなサブスクリプションを有していない場合には特定のE2ノードに第1のサブスクリプションを送信するか、又は、2705で受信した要求で指定された特定のデータタプルの特定のデータタプルのすべてのデータタプルを含むものではない場合には、更新されたサブスクリプションをノードに送信する。
【0173】
したがって、このような場合、処理2700(2720で)は、このE2ノードのサブスクリプションリスト内のxAppに対して、新しいレコードを追加するか、又は以前に指定されたレコードを更新し、このレコード内でxAppが受信すべき特定のデータタプルセットを指定する。次に、以前に割り当てられたRIC要求IDを使用して、更新されたサブスクリプション要求を特定のE2ノードに送信する。この更新されたサブスクリプションは、特定のE2ノードへの以前のサブスクリプションによってこれらのタプルのいずれも以前に要求されていない場合に、要求された特定のデータタプルの特定のセット内のすべてのデータタプルを指定する。又は、特定のセット内の他のデータタプルが、特定のE2ノードへの1つ以上の以前のサブスクリプションによって以前に要求されている場合に、これらのデータタプルの一部を指定する。2725の後、処理2700は終了する。
【0174】
図28は、処理2800を示し、データIOスレッド2605及びDPT2615が、実施形態によっては、1つ以上のxAppが受信すべきE2ノードからのデータメッセージを処理するために実行する。説明するように、処理2800は、データメッセージが、E2ノードとのSCTP接続を介してデータパスポッドによって受信されたとき(2805において)に開始する。2810において、データIOスレッド2605は、E2ノードのIDからハッシュ値を生成する。次に、(2815で)ハッシュ値をルックアップテーブルへのインデックスとして使用し、E2ノードに関連付けられたメッセージの処理に割り当てられたDPTを識別する。
【0175】
2820で、データIOスレッドは、データIOスレッドから識別されたDPTにメッセージを渡すためのcbufリング2620に沿って、受信されたデータメッセージを識別されたDPT(すなわち、2815で識別されたDPT)に渡す。次に、2825で、DPTは、そのデータ構造記録(例えば、その状態機械によって維持される記録)を使用して、E2メッセージを取得すべき1つ以上のxAppのセットを識別する。いくつかの実施形態では、識別された一連のxAppは、E2ノードからデータ(例えば、すべてのデータ又はデータのサブセット)を受信するためにサブスクライブしているxAppである。
【0176】
2830において、DPTは、識別されたxAppsのセットに送信するデータIOスレッド2605のためのデータメッセージを特定する。このデータメッセージは、以下の表1を参照してカプセル化されたフォーマットになっている。次に、DPTは、DPT2615からデータIOスレッド2605にメッセージを渡すためのcbufリング2620に沿って、データメッセージをデータIOスレッド2605に(2835で)渡す。次に、2840において、データIOスレッド2605は、cbufリング2620からデータメッセージを検索し、データメッセージを受信する必要があるxAppsを識別し、次いで、各識別されたxAppにデータメッセージを送信する。2840の後、処理は終了する。
【0177】
図29は、処理2900を示しており、データIOスレッド2605及びDPT2615は、いくつかの実施形態において、E2ノードに送られるべきxAppからのデータメッセージを処理するために実行する。説明するように、処理2900は、データメッセージがSCTP接続又はxApp RIC SDKとの共有メモリ通信を介してデータパスポッドによって受信されると(2905で)開始する。このメッセージは、表1を参照して以下に説明するカプセル化されたフォーマットである。このメッセージには、このメッセージを受信するE2ノードを識別するE2ノード識別子が含まれる。
【0178】
2910において、データIOスレッド2605は、E2ノードのIDからハッシュ値を生成する。次に、(2915で)ハッシュ値をルックアップテーブルへのインデックスとして使用し、E2ノードに関連付けられたメッセージの処理に割り当てられたDPTを識別する。2920で、データIOスレッドは、データIOスレッドから識別されたDPTにメッセージを渡すためのcbufリング2620に沿って、受信されたデータメッセージを識別されたDPT(すなわち、2915で識別されたDPT)に渡す。
【0179】
次に、2925において、DPTは、そのデータ構造記録(例えば、その状態マシンによって維持される記録)を使用して、メッセージを受信すべきE2ノードを識別する。いくつかの実施形態では、データメッセージはサブスクリプション要求であり、識別されたE2ノードは、xAppがサブスクライブしたいE2ノードである。2930において、DPTは、識別されたE2ノードに送信するデータIOスレッド2605のためのデータメッセージを指定する。このデータメッセージは、標準によって必要とされるE2APメッセージフォーマットである。次に、DPTは、DPT2615からデータIOスレッド2605にメッセージを渡すためのcbufリング2620に沿って、データメッセージをデータIOスレッド2605に(2935で)渡す。次に、2940で、データIOスレッド2605は、cbufリング2620からデータメッセージを検索し、データメッセージを受信する必要があるE2ノードを識別し、そして識別された各E2ノードにデータメッセージを送信する。2940の後、処理は終了する。
【0180】
いくつかの実施形態において、DPT2615は、2925で識別するE2ノードに新たなサブスクリプションメッセージを送信する必要がないと判定することができる。たとえば、E2ノードから一連のデータタプルのサブスクリプション要求を第1のxAppから(2905で)受信する前に、第2のxAppに対して以前に送信されたデータパスポッドが、同じデータタプルのセット又は第1のxAppによって要求されたデータタプルを含むより大きなデータタプルのセットに対して同じE2ノードにサブスクリプション要求を送信する。このような場合、DPT2615は、E2ノードのサブスクリプションリストに第1のxAppを追加するだけで、それ以降にE2ノードから受け取った値を第1のxAppに提供できるようになる。いくつかの実施形態において、DPT2615はまた、SDLに記憶されたE2ノードから以前に受信した値を第1のxAppに供給するか、又はxAppに指示してSDLからこれらの値を取得する。
【0181】
場合によっては、第1のxAppは、第2のxAppが以前に要求しなかったE2ノードから追加のデータタプルを要求する。このような場合、DPT2615は、第1のxAppによって新たに要求されるデータタプルを要求するために、E2ノードに送信するデータIOスレッドのための更新されたサブスクリプションメッセージを準備する。DPTは、第2のxAppが第1のサブスクリプションの後にE2ノードから追加のデータタプルを要求したときにも、このようなメッセージを準備する。
【0182】
いくつかの実施形態では、サービスポッド2510は、Nが1より大きい整数であるときに始動するとき、N個のDPTをインスタンス化するようにデータパスポッド2600を構成する。ニアRT RICのデータパスポッド2600の場合、個数Nは、ニアRT RICを介してE2ノードと通信する予想される個数のE2ノード及びxAppに基づいて、いくつかの実施形態で計算される。いくつかの実施形態では、データパスポッド2600のデータIOスレッド2605は、次に、受信するサブスクリプション要求の順序及びこれらの要求の時点でのDPT上の負荷に基づいて、E2ノードをDPTに割り当てる。
【0183】
図30は、いくつかの実施形態においてデータIOスレッドがE2ノードをDPTに割り当てるために使用する処理の例を示す。説明するように、処理3000は、データIOスレッド2605が、データIOスレッドのニアRT RICに関連するxAppから、特定のE2ノードに対する第1のサブスクリプション要求を受信(3005)すると、開始する。特定のE2ノードに対する第1のサブスクリプション要求は、データIOスレッドによってこの特定のE2ノードに対して他のサブスクリプション要求が以前に受信されなかったことを意味する。
【0184】
次に、3010で、データIOスレッド2605は、特定のE2ノードのグローバルE2ノードIDからNビットのハッシュ値を生成する。ここで、Nは整数(例えば、6又は8)である。このNビット値は、後述するように、ハッシュLUT(ルックアップテーブル)内の特定のE2ノードを識別するために使用される。3015において、処理3000は、データパスポッド2600の各DPT上の現在の負荷に基づいて(例えば、負荷量が最小のDPTを選択することによって)、特定のE2ノードのための特定のDPTを選択する。いくつかの実施形態では、現在の負荷は、各DPTに割り当てられたE2ノードの個数にのみ基づいているが、他の実施形態では、現在の負荷は、E2ノードの個数及びこれらのノードに対するxAppサブスクリプションの個数に基づいている。さらに他の実施形態では、現在の負荷は他の方法で計算される。
【0185】
次に、3020において、処理3000は、LUT内に記録を作成し、この記録において、Nビットのハッシュ値と、特定のE2ノードについて3015で選択された特定のDPTの識別子とを関連付ける。いくつかの実施形態では、Nビットのハッシュ値は、特定のE2ノードのIDを指定する記録を識別するLUTへのインデックスである。3020において、処理3000はまた、このレコードの状態をアクティブとして指定する。
【0186】
後続の時点で、データIOスレッドが、すべてのxAppが特定のE2ノードへのサブスクリプションをキャンセルしたという状況に遭遇した場合、処理3000は、3020で作成されたLUT記録を保持するが、この記録のステータスを非アクティブに変更する。データIOスレッドは、xAppが特定のE2ノードのサブスクリプション要求を次に送信するまで、この非アクティブ状態を維持する。その時点で、このレコードの状態が再びアクティブに変更される。このステータス値は、データIOスレッドがDPTへのE2ノード割り当てを継続的に再実行する必要がないようにする機構として使用される。
【0187】
図31は、アクティブRIC3102及びスタンバイRIC3104によって実現される分散ニアRT RICを示す。図に示すように、E2ノード3118及びxAppポッド3120は、このRICの1つ以上のコンポーネントが故障するまで、アクティブなRIC3102と通信する。アクティブなRICに障害が発生すると、スタンバイRIC3104がアクティブなRICになり、E2ノードとxAppポッドは、現在アクティブなRICであるRIC3104を介して通信を継続する。
【0188】
これらのRICにはどちらも同じコンポーネントがあり、それらはデータパスポッド3105、サービスポッド3110、及びSDLポッド3115である。データパスポッドは、制御スレッド3109及びデータパススレッド3107を含むように示される。1つのデータパススレッド3107の代わりに、いくつかの実施形態は、上述したように、1つのデータIOスレッドと複数のDPTを使用する。いくつかの実施形態では、アクティブRIC3102は、1つ以上のコンピュータの第1のセットによって実現され、一方、スタンバイRIC3104は、1つ以上のコンピュータの異なる第2のセットによって実現される。
【0189】
図に示すように、各E2ノード3118は、アクティブ及びスタンバイRIC3102及び3104のデータパススレッド3107とデュアルホームSCTP接続を有する。同様に、各xAppポッド3120には、アクティブ及びスタンバイRIC3102及び3104のデータパススレッド3107とのデュアルホームSCTP接続がある。デュアルホーミング接続は、SCTPが提供する機能である。第1のコンポーネントがデュアルホーム接続を介してコンポーネントのアクティブ/スタンバイペアに接続すると、第1のコンポーネントは、アクティブコンポーネントに障害が発生したときに自動的にスタンバイコンポーネントを使用するように切り替えることができる。したがって、デュアルホームSCTPコネクションを使用すると、アクティブなRIC3102又はそのデータパスポッドに障害が発生したときに、各E2ノード又はxAppポッドをスタンバイRIC3104のデータパススレッド3107に切り替えることができる。
【0190】
説明するように、アクティブRIC3102のデータパススレッド3107のRIC SDKインタフェース3122は、xApp RIC SDKから受信するメッセージと、それがxApp RIC SDKに送信するメッセージを、スタンバイRIC3104のデータパス3107のRIC SDKインタフェース3122に転送する。これは、いくつかの実施形態では、スタンバイRICのデータパススレッド3107が、そのステートマシンを、アクティブRICのデータパススレッド3107の状態に一致するように更新できるようにする。また、説明するように、アクティブ及びスタンバイRIC 3102及び3104の同期エージェント3127は、スタンバイRIC 3104のSDLストレージ3126をアクティブRIC3102のSDLストレージ3126と同期する。アクティブ及びスタンバイRIC3102及び3104のすべてのコンポーネントは、SMO 3130によって一貫して管理される。
【0191】
図32は、いくつかの実施形態において、ニアRT RIC3200とE2ノード3205との間、及びニアRT RIC3200とxAppポッド3210との間のインタフェースを示す。いくつかの実施形態では、ニアRT RICは、上述のニアRT RICの1つである。上述したように、また
図32に示されるように、いくつかの実施形態におけるニアRT RICは、SCTPインタフェース3220及び3222を、E2ノード3205及びxAppポッド3210の両方とともに使用する。xAppポッドとニアRT RICが同じホストコンピュータ上で実行される場合、いくつかの実施形態では、図に示すように、ニアRT RICとxAppポッドの間のインタフェースとして共有メモリを使用する。これらのインタフェースはメッセージ交換を高速に保ち、すべてのパスにわたってエンコードとデコードのオーバーヘッドを最小にして、待ち時間を最小にする(例えば、1つのASN復号と1つのASN符号化を行う)。いくつかの実施形態において、E2ノードとニアRT RICとの間のインタフェース3220は、E2AP仕様に従い、すべてのメッセージ交換は、E2AP仕様に準拠する。
【0192】
また、いくつかの実施形態では、ニアRT RICとxAppポッドとの間のインタフェース3222は、表1を参照して後述する新規のカプセル化ヘッダを使用する。インタフェース3222は、異なるタイプのメッセージの混合を処理する。いくつかの実施形態におけるこのようなメッセージの例には、(1)E2ノードからのE2APメッセージ全体(例えば、E2セットアップ要求)、(2)E2SMコンテンツ全体(すなわち、E2APメッセージペイロード全体)と共にE2APヘッダのいくつかのフィールド、(3)ニアRT RICとxAppポッドの間の内部メッセージ(例えば、xAppの以前のメッセージが誤差を起こしたことを、ニアRT RICからのメッセージ)、(4)xAppからニアRT RIC又はE2ノードへのメッセージが含まれる。いくつかの実施形態では、E2コンテンツはASN1エンコードされていない可能性がある(例えば、サブスクリプション要求の一部がエンコードされていない可能性がある)。
【0193】
いくつかの実施形態において、ニアRT RIC3200は、メッセージをxAppに送信する前にE2APメッセージだけをデコードするか、又はE2SMペイロードとともにE2APヘッダ全体をデコードするように、ケースバイケースで構成することができる。場合によっては、ニアRT RICがE2APヘッダ全体を送信し、それ以外の場合は、このヘッダの一部のみを送信する。いくつかの実施形態のRIC E2APメッセージ処理では、すべてのフィールドはネットワークバイトオーダーであり、ニアRT RIC3200は可能な限りそのオーダーで動作する。フィールドを表示するために、いくつかの実施形態は、データをホスト順に変換することができる。いくつかの実施形態において、ニアRT RIC3200は、E2SMペイロードを見ることはないが、他の実施形態においては、それは、(例えば、重複したサブスクリプション誤差を避けるために)行われる。
【0194】
いくつかの実施形態において、RAN機能IDは、E2ノード特有である。各サブスクリプションは個々のE2ノードに属するため、xAppsはE2ノード間でRAN機能にサブスクライブしない。また、いくつかの実施形態では、RIC要求ID空間は、E2ノードに対してローカルである。いくつかの実施形態では、RIC要求ID番号空間は、永続的なコンポーネントと同様に一時的なコンポーネントである。例えば、表示レポートに使用されるRIC要求IDは、サブスクリプションから使用されるRIC要求IDが再利用されても、存続する。
【0195】
以下の表1は、RICとRIC SDK間の通信のためにいくつかの実施形態で使用される例示的なメッセージフォーマットを示す。これは、RIC SDKとの間で送受信されるすべてのメッセージをカプセル化するために使用されるカプセル化ヘッダの形式である。いくつかの実施形態において、カプセル化ヘッダは、データメッセージの効率的な処理のためにRIC SDK及びRICによって必要とされるデータを格納する。表1に示す例では、msg_type、msg_serial_num、msg_len、msg_flags、ctrl_lenに関連する最初の16バイトは、ctrl_infoフィールドとともにカプセル化ヘッダの一部である。カプセル化パケットのペイロードには、任意のデータを含めることができる。表1に示す例では、payload(ペイロード)には元のE2APパケットとE2SMペイロードが含まれている。
【0196】
RIC とRIC SDK間のすべてのメッセージは、表1に示すヘッダでカプセル化される。制御情報とペイロードはオプションである。メッセージの中には制御情報を持っていてもペイロードフィールドを持たないものもあれば、制御情報を持たないペイロードを有するものもあり、制御フィールドとペイロードフィールドの両方を有するものもある。いくつかの実施形態において、RIC SDKは、これらのメッセージをトラップし、それらをxAppsへの提示のために再フォーマットするように構成することができる。メッセージのフォーマットは生のバイトストリームである。いくつかの実施形態では、メッセージCRCフィールドは使用されず、他の実施形態で使用される。
【表1】
【0197】
ニアRT RIC3200は、E2ノードとxAppの接続、切断、リセット、クラッシュを次のように処理する。E2ノードの場合、いくつかの実施形態のRICは、接続、切断、及びクラッシュを同様に処理する。具体的には、E2ノードへの接続がドロップされ、これらのいずれかの理由で復帰すると、E2ノードは、最初に起動したかのように、再び接続設定を送信し、ニアRT RICは、E2ノードに関連するすべての状態をクリーンアップし、やり直す。いくつかの実施形態において、ニアRT RICは、以前に特定のE2ノードにサブスクライブしていたか否かにかかわらず、E2ノード接続がドロップして復帰したときに、すべてのxAppに通知する。これは、E2ノードが、以前にサブスクライブしていなかったxAppが関心を持っていたかもしれない新しい機能をアドバタイズする可能性があるためである。xAppが接続、切断、又はクラッシュすると、ニアRT RICは同じ動作を再度実行する。ニアRT RIC内のxAppのすべての状態をリセットし、そのサブスクリプションをすべてのE2ノードから削除する。
【0198】
図33は、ニアRT RIC3200のデータパスポッドのE2APメッセージ処理を示す。E2APメッセージ処理とその他のメッセージ処理に関する以下の説明では、簡潔にするために、このデータパスポッドを単にニアRT RIC3200又はRIC3200と呼ぶ。図に示すように、ニアRT RIC3200は、最初に、E2ノードから受信したE2APメッセージをデコードする。いくつかの実施形態では、このデコードは、E2APヘッダのみのデコードを含むが、他の実施形態では、このデコードは、E2APヘッダ及びE2SMペイロードのデコードを含む。このデコードの一部又は全部(例えば、E2SM)について、いくつかの実施形態のニアRT RICは、上述のバイパスパスを介してアクセスするハードウェアアクセラレータ(例えば、GPUアクセラレータ)を使用する。
【0199】
E2APメッセージをデコードした後、ニアRT RICは、受信したデータメッセージを考慮して内部データ構造を作成又は更新し、次に、表1を参照して上記のフォーマットでxAppにフラットなカプセル化メッセージを作成する。ニアRT RIC及びRIC SDKは、異なるコンテナ上で動作し、いくつかの実施形態では異なるポッド上に存在するため、任意のデータ構造を互いに渡すことはなく、いくつかの実施形態では、それらのデータ交換を特定のバイト列を有するカプセル化されたメッセージにフォーマットする。データメッセージをカプセル化した後、ニアRT RICはデータメッセージをxAppポッドに転送し、このポッドのRIC SDKが適切なxAppに転送する。
【0200】
E2APメッセージの処理中にニアRT RICで作成又は更新される内部データ構造は、xAppからE2APメッセージへの応答メッセージの処理と、後続のE2APメッセージの処理に使用される。いくつかの実施形態において、ニアRT RICの内部データ構造に格納されるデータの例は、(1)特定のE2ノードからのデータに関心を有するxAppのサブスクリプションリスト、(2)各xAppが各E2ノードから関心を有する特定のデータタプル、(3)E2ノード及びxAppに関連するネットワークアドレス及び他の位置データを識別するレコード、(4)確保され、割り当てられた識別子(例えば、RIC要求ID)を含む。
【0201】
xAppがメッセージを送信すると、そのRIC SDKはそのメッセージを処理し、前述のように共有メモリ又はSCTPインタフェースに沿ってRICに転送する。ニアRT RICは次にメッセージを解析し、解析されたコンポーネントを格納する。これらのコンポーネントと、関連するE2ノードメッセージの内部データ構造に格納されている1つ以上のデータタプルとに基づいて、RICはE2AP応答を作成し、この応答をエンコードして、送信先のE2ノードに転送する。
【0202】
たとえば、第1のxAppがE2ノードからM個のデータタプルを受信するサブスクリプション要求を送信した後、ニアRT RICのデータパスポッドの状態を作成して、第1のxAppの目的のサブスクリプションを記録し、M個のデータタプルのためのE2ノードを使用してサブスクリプションを要求し、これらのM個のデータタプルを最初に受信したときにxAppに転送し、その後、受信するたびにこれらのM個のデータタプルを転送する。いくつかの実施形態では、ニアRT RICのデータパスポッドは、M個のデータタプルをE2ノードから受信するたびに、関連するSDLに転送するように構成することができる。
【0203】
第1のxAppがE2ノードからM個のデータタプルを受信するようにサブスクライブした後、第2のxAppは、E2ノードからNがMより大きいN個の異なるデータタプルを受信するようにサブスクライブすることができる。ニアRT RICは、更新されたサブスクリプション要求をE2ノードに送信する。この更新でN個のデータタプルが要求されるようになった。ニアRT RIC がN個のデータタプルを受信するたびに、M個のデータタプルが第1のxAppに送信され、N個のデータタプルがすべて第2のxAppに送信される。
【0204】
別の例では、ニアRT RICを削除し、サブスクリプション要求に応答してE2ノードからE2APメッセージからRIC要求IDをキャッシュする。このIDが削除されると、RICはE2APメッセージの一部とそのE2SMペイロード(該当する場合)をxAppに提供する。その後、xAppがサブスクリプションを削除する場合、RICはRIC要求IDをその状態から取得し、E2ノードへのE2APメッセージに挿入して、サブスクリプションの削除を要求する。
【0205】
いくつかの実施形態では、ニアRT RICのE2セットアップ、応答メッセージ、及び障害メッセージの処理は、次のようになる。ニアRT RICは、最初にE2ノードからセットアップ要求メッセージを受信する。それに応じて、ニアRT RICはメッセージをデコードし、内部データ構造を構築する。RICはロー(raw)ASN1ペイロードもキャッシュする。いくつかの実施形態において、ニアRT RICは、追加されたすべてのRAN関数識別子を受け入れる。いくつかの実施形態では、ニアRT RICでは、E2APヘッダをデコードした後、他の何もデコードしないで(すなわち、ASN1でエンコードされたE2SMペイロードを有するメッセージとして)、セットアップメッセージをxAppsに送信する。いくつかの実施形態では、ニアRT RICがxAppに送信するセットアップメッセージは、そのASN1符号化されたペイロードと共に0の制御長(ctrl_len)を有する。
【0206】
xAppが後で接続すると、ニアRT RICはE2ノードからのすべてのセットアップ要求をxAppに送信し、接続されたE2ノードのインベントリを保持する。いくつかの実施形態では、ニアRT RICは、これらのメッセージを一度に1つずつ送信する。また、上述したように、いくつかの実施形態におけるニアRT RICは、E2Setup応答を構築し、それをE2ノードに送信する。いくつかの実施形態では、ニアRT RICでは、セットアップ要求が誤った形式になったときに失敗メッセージを送信する(例えば、RAN関数リストの複製である、又はリストに追加されていない記録を除去する)。
【0207】
E2ノードからリセットを受けた後、ニアRT RICはメッセージをデコードした後、以下の動作を行う。このリセットに関するメッセージを、このE2ノードへのサブスクリプションを有するすべてのxAppに送信する。いくつかの実施形態では、これは、ASN 1の内容を持たない内部メッセージである。ニアRT RICは、送信した以前のすべてのサブスクリプションのE2ノードへのサブスクリプション削除メッセージを終了する。また、このE2ノードに制御、挿入、ポリシー削除を送信する。未処理の要求をクリーンアップし、E2ノードにリセット応答を送信する。
【0208】
ニアRT RICはまた、いくつかの実施形態において、サービス更新、確認、及び失敗メッセージを採用する。このメッセージは、追加、修正、及び削除とともに、サポートされるRAN関数リストを更新する。ニアRT RICは、E2ノードの新しいサービス構成についてすべてのxAppに通知する。いくつかの実施形態では、ニアRT RICは、構成の適用後にxAppsにメッセージを送信するので、構成の最終状態を反映する。他の実施形態では、ニアRT RICは、サポートされるRAN機能の前の状態と新しい状態との間の差分を計算するために、xAppsに対してそのままメッセージを送信する。後者のアプローチでは、ニアRT RICは、結果のデルタをASN1エンコードする必要はない。
【0209】
E2APサブスクリプションの処理は、いくつかの実施形態では以下のようになる。xAppはサブスクリプションのE2SM部分をフォーマットし、ASN1はそれをエンコードする。以下の表2は、サブスクリプションメッセージの制御部分(すなわち、xAppからニアRT RICまでのメッセージの制御フィールドに格納される部分)の詳細を示している。ペイロードは、ASN1でエンコードされたE2SMコンテンツになる。いくつかの実施形態では、オプション情報を明確にするために、複数のサブスクリプションメッセージタイプが定義されている。また、いくつかの実施形態では、メッセージフラグを使用して、正確なフォーマットを指定する。いくつかの実施形態では、各加入メッセージは、1つのE2ノードグローバルID及び1つのRAN機能IDを指定する。
【0210】
いくつかの実施形態では、E2ノードは、113バイトの識別子を送信し、RICは、それを40バイトのIDに圧縮する。サブスクリプションメッセージをE2ノードに送信すると、RICは40バイトを113バイトのIDに変換する。サブスクリプションメッセージ制御フィールドは、可能な限り固定されたフォーマットになる。いくつかの実施形態において、RICは、重複したサブスクリプションメッセージを送出することを避けるために、すべてのサブスクリプション要求をキャッシュし、複数のxAppからの要求を比較する。ただし、第1の最初のxAppの後に、第2の後続のxAppが同じE2ノードから追加情報を要求すると、RICはサブスクリプションを再送信する(一部の実施形態では同じRIC要求IDを使用)。ただし、今回は追加情報を要求する。サブスクリプション要求をE2ノードに送信する場合、RICは、いくつかの実施形態では、xAppから受信したペイロード全体をE2APメッセージペイロードとして送信する。
【表2】
【0211】
ニアRT RICは、E2ノードのグローバルIDとRIC要求ID(RICによって生成される)を制御情報として保存し、E2ノードから正確にASN1エンコードされたメッセージをxAppsに送り返すことで、E2AP RICサブスクリプション応答を処理する。
【0212】
E2AP RICサブスクリプション削除要求、応答、又は失敗メッセージは、制御情報として(つまり、ctrl_infoの一部として)送信されるメッセージフィールドとともに、xAppからニアRT RICに送信される。ニアRT RICはエンコードされたASN1メッセージを作成し、E2ノードに送信する。削除要求では、E2ノードグローバルIDを指定しない。したがって、この情報はxAppのRICによって提供される。いくつかの実施形態では、応答メッセージは、パックされたバイト(ASN1エンコードされていない)として、ニアRT RICからxAppに送られる。
【0213】
E2ノードのE2AP通知レポートは、次のように処理される。メッセージは、ニアRT RICによってデコードされ、RIC要求IDフィールドが判定される。これは、表示にサブスクライブしたxAppを判別するのに役立つ。いくつかの実施形態におけるニアRT RICは、xAppに符号化されたASN1としてメッセージを送信する。いくつかの実施形態において、ニアRT RICはまた、メッセージと共に制御情報として減少したE2グローバルIDを送信する。
【0214】
E2AP制御要求のニアRT RICの処理は、いくつかの実施形態では以下のようになる。xAppはこの要求をパックされたバイト情報として送信する。ニアRT RICでは、この情報はxAppによって指定されるため、メッセージにE2グローバルIDは指定されない。このメッセージのニアRT RICのフォーマットを表3に示す。
【表3】
【0215】
ニアRT RICは、E2AP制御応答又は失敗メッセージを次のように処理する。ニアRT RICはメッセージをデコードし、RIC要求IDを取得する。次に、制御情報としてグローバルE2ノードIDを先頭に付加したASN1エンコードメッセージをxAppに送信する。
【0216】
いくつかの実施形態では、SDLデータストアは、1つ以上のポッドの独自のセットで実行されるメモリデータベース内のものである。独自のコンピューティングリソースとメモリリソースが割り当てられている。前述のように、複数のニアRT RICインスタンスは、分散ニアRT RICを定義する。いくつかの実施形態において、各ニアRT RICインスタンスには、RICインスタンスのためのシステム全体の情報を格納するSDLの独自のインスタンスがある。このような情報の例には、接続されたE2ノード(すなわち、基地局ノード)、xApp、各xAppからのサブスクリプション及びE2ノードによって返されたクリティカルセルデータのリストが含まれる。さらに、いくつかの実施形態の各SDLインスタンスは、データが到着すると内部でカスタムアルゴリズムを実行し、ハードウェアアクセラレータ(例えば、GPU)にインタフェースすることによって、又はそのストレージから取り出された後処理データによって、着信データを前処理するサービスを提供する。
【0217】
RICインスタンスのデータIOポッド及びxAppポッドは、RICインスタンスのSDLポッドに接続される。いくつかの実施形態では、各SDLインスタンスは、それ自体のRICインスタンスのデータIOポッド及びサービスポッドでのみ動作する。また、いくつかの実施形態では、SDLポッドはSMOによって管理され、サービスポッドを介して設定される。SDLとの間のデータフローには、(1)データIOからSDLデータストレージ、(2)SDLデータストレージからのxApps、(3)SDLデータストレージへのxApps、(4)SDLデータアクセスからのデータIO(E2ノード情報、サブスクリプション情報の取得など)、及び(5)SDL通信との間のサービスポッドによる構成情報の提供及び取得が含まれる。
【0218】
図34は、SDLポッド3410を有するいくつかの実施形態のRICインスタンス3400を示す。説明するように、SDL3410は、構成エージェント3412、SDLデータパスエージェント3414、RIC SDKエージェント3417、SDL前後プロセッサ3416及び3418、ならびに1つ以上のSDLデータストア3420を含む。SDL構成エージェント3412は、サービスポッドエージェント3430とインタフェースを有する。このエージェント3412は、SDLポッドの他のコンポーネントを設定及び管理する。SDLポッドはSMOによって管理され、サービスポッド #090のサービスエージェント3430を介して設定される。
【0219】
SDLデータパスエージェント3414は、SDLポッドがデータパスポッド3450の制御スレッド及びデータパススレッドに公開するデータパスインタフェースである。SDLデータパスエージェント3414は、SDLのためにこれらのエンティティからの通信を処理し、これらのデータパスエンティティのためにSDLデータストア3420への読み出し及び書き込みを実行する。いくつかの実施形態では、SDLデータパスエージェントは、SCTP又は共有メモリライブラリのいずれかを使用してデータパスポッド3450と通信するように構成することができる。
【0220】
いくつかの実施形態において、RIC SDKエージェント3417は、SDLポッドがxAppポッドのRIC SDKに公開するエージェントである。RIC SDKエージェント3417は、RIC SDKからSDLへの通信を処理し、RIC SDKに対してSDLデータストア3420への読み出し及び書き込みを実行する。いくつかの実施形態では、RIC SDKエージェント3417は、SCTP又は共有メモリライブラリのいずれかを使用してRIC SDKと通信するように構成することができる。また、このエージェント3417は、RIC SDKのSDLキャッシュをSDLデータストア3420と同期させるためのキャッシュ同期動作を実行する。また、xAppsから数十個のコネクションにスケーリングする必要がある場合、いくつかの実施形態のコネクションマネージャは、RICインスタンスのepollコネクション処理(例えば、いくつかの実施形態のデータIOポッドによって使用されるepollコネクション処理)を利用する。
【0221】
SDLエージェント3414及び3417は、RIC SDK及びデータパスポッドからのイベントサブスクリプションと通知を処理する。これはE2APサブスクリプション管理とは別のものであるが、概念的には似ている。たとえば、SDLのこのサブスクリプションサービスを介して、xAppは、キー又はレポートの周波数を介して一部のデータに対する関心を指定する。その後、RIC SDKエージェント3417は、サブスクリプションに基づいてこのxAppに定期的な更新を提供する。また、データを暗号化及び復号化することによって、いくつかの実施形態においてセキュリティサービスを提供する。
【0222】
データプリプロセッサ及びポストプロセッサ3416及び3418は、データ上で特定の付加価値アルゴリズムを柔軟に実行するために、いくつかの実施形態においてSDL3410の一部である。いくつかの実施形態では、これらのプロセッサ3416及び3418の両方が、一方のコンテナで動作し、他方の実施形態では、これらのそれぞれが、SDLポッド3410内の別個のコンテナで動作する。これらのプロセッサのそれぞれはまた、いくつかの実施形態でそれらの動作を実行するために、外部アクセラレータ(例えば、GPU3480)とインタフェースする。データプリプロセッサ3416は、データがSDLデータストア3420に格納されるときに、インラインで実行される。
【0223】
いくつかの実施形態では、データポストプロセッサ3418は、データがSDLデータストア3420から読み出されるときにインラインで実行される。あるいは、あるいは一部の実施形態におけるポストプロセッサ3418は、SDLデータストレージ3420に記憶されたデータ上でバックグラウンドで動作するように構成することができる(例えば、このデータストレージからデータを検索し、このデータに対して何らかの動作を行い、結果をデータストレージに格納する)。いくつかの実施形態のデータプロセッサは、E2APメッセージのE2SMペイロードをエンコード及び/又はデコードする。これは、データパスポッド がデコード及び格納するためにASN1文字列をSDLに渡すことができるので利点がある。上述したように、いくつかの実施形態におけるRIC SDKは、E2SMエンコード/デコードサービスを提供するように構成することもできる。
【0224】
いくつかの実施形態においてデータプロセッサ3418が実行するポストプロセッサ動作の別の例は、機械訓練された動作である。いくつかの実施形態では、ポストプロセッサ3418は、様々なxApp及び/又は様々なポッド(例えば、データパスポッド)によって記憶された様々なデータタプルを収集し、これらのデータタプルを機械学習ネットワーク(例えば、機械学習によって訓練されたニューラルネットワーク)を介して渡す。いくつかの実施形態では、ポストプロセッサ3418は、その機械訓練ネットワークを実行するために、SDLのホストコンピュータの1つ以上のハードウェアアクセラレータ(例えば、1つ以上のGPU)を使用して、その動作を実行する。ポストプロセッサ3418は、
図14-20を参照して上述したバイパスアプローチを通じてハードウェアアクセラレータにアクセスする。
【0225】
ポストプロセッサ3418は、その動作の結果を1つ以上のxAppsに渡すか、又は1つ以上のxAppsが取得するためのSDLデータストア3420に結果を格納することができる。機械訓練ネットワークでSDLデータを後処理することによって得られる結果の例は、異常検出(例えば、異常に振る舞っているE2ノードを特定する、例えば、あまりにも多くの接続を突然受け取るセルサイト)を含む。
【0226】
SDLデータストア3420に格納される異なるxApp出力を処理するためにSDLポッド3410内の機械訓練ネットワークを使用することは、このデータストア3420が、xAppサブスクリプションに基づいてE2ノードが提供する多数のデータタプルと同様に、いくつかのxAppの出力を格納するので、利点がある。多くの場合、個々のxAppは、サブスクライブ先のデータタプルと、独自の演算結果及び他のいくつかのxAppの出力のみを把握できる。一方、SDLポッド3410は、より大きなE2ノード入力データとxApp出力データのセットにアクセスできる。このような後処理を実行するために機械で訓練されたネットワークを使用する代わりに、ポストプロセッサ3418は、アルゴリズム(例えば、制約された最適化ソルバ)を使用して、SDLデータストレージ3420に記憶されたデータを後処理する。換言すれば、いくつかの実施形態のポストプロセッサ3418は、機械訓練されたネットワークを使用せず、依然として、そのホストコンピュータのハードウェアアクセラレータ(例えば、バイパスパスを介して)を使用して、その動作を実行する。
【0227】
一部の実施形態はまた、ポストプロセッサ3418を使用して、第1のxAppがE2ノードの状態にサブスクライブし始めたときに、E2ノードの現在の状態を提供する。E2ノードの状態を受信するために第2のxAppを前にサブスクライブした後、ニアRT RICは、ある期間にわたってこのノードの状態に関連する複数のデータタプルを格納する。第1のxAppがその後E2ノードの状態にサブスクライブし、このxApp又はデータパスポッドのいずれかが第1のxAppのこの状態にアクセスしようとすると、ポストプロセッサ3418は、SDLストレージ内のこのE2ノードに対して以前に格納されたすべてのデータタプルを取得し、これらのデータタプルを使用してE2ノードの現在の状態を計算する。次に、これが第1のxAppに直接、又はデータパスポッドを介して提供する。
【0228】
SDLデータストア3420は、インメモリデータベースである。いくつかの実施形態において、メモリデータベース内のメモリは、コンピュータシステムメモリ(例えば、そのRAMを含むホストコンピュータ不揮発性メモリ)にロードされ、そこから不足するデータベースである。このようなデータベースの例の1つがRedisである。いくつかの実施形態では、データストレージのサイズは、探索及び記憶待ち時間を最小にするために選択される。既存のデータストレージがその所望の最大サイズに達すると、いくつかの実施形態は、SDLの同一又は異なるインスタンス内にこのデータストレージの追加のインスタンスを作成する。
【0229】
また、
図34に示すように、一部の実施形態のSDL3410は、HAの理由から、アクティブデータストレージ3420及びスタンバイデータストレージ3421を有する。さらに、いくつかの実施形態は、データストレージ3420に、異なるRICインスタンスの異なるSDLインスタンスが、HA及び/又はデータ可用性の理由により、それらのデータの一部又は全部のバックグラウンドで同期することを可能にする。いくつかの実施形態では、xApps及びRICコンポーネントは、バックグラウンドでスタンバイSDLストレージと同期されるアクティブSDLストレージに対してデータを読み書きする。アクティブSDLストレージに障害が発生した場合、これらの実施形態のRICは、スタンバイSDLストレージにシームレスに切り替えることができる。また、アクティブSDL記憶がアップグレードされるときに、RICはスタンバイSDL記憶に切り替えることができる。これにより、SDLストレージをヒットレスにできる。
【0230】
図13を参照して前述したように、RIC SDKにはxAppのローカルSDLストレージを提供するSDLキャッシュが含まれており、このキャッシュはそのデータをSDLのデータストアと同期する。一部の実施形態では、このRIC SDKキャッシュは、メインSDLデータストアからデータをバルク及び定期的にプルする。これにより、メインSDLポッドに対して行われる要求の数を減らすことができる。また、RIC SDKキャッシュは、このデータの一部をローカルに提供することで、SDLデータを読み取るための遅延を削減する。また、RIC SDKキャッシュは、データをxAppポッドでローカルに書き込み、バックグラウンドで同期できるようにすることで、SDLにデータを書き込む時間を短縮する。いくつかの実施形態におけるSDKキャッシュのサイズは、SDLのデータストレージ3420よりも小さい。また、一部の実施形態では、このサイズは、RIC SDKとともにポッド上で実行される1つ以上のxAppのセットの要件に基づいている。
【0231】
いくつかの実施形態において、SDL3410へのデータのソースは、(1)データパスポッド3450の制御スレッド及びデータパススレッド、(2)RIC SDKを介したxApp、(3)A1インタフェースを介してアクセスされる非RT RICのMLモデル及びポリシーストレージ及びサーバ、(4)xAppポッド構成ストレージ、及び(5)SMOの構成サーバを含む。いくつかの実施形態では、SDL内のシステムデータの例(例えば、制御スレッドによって書き込まれる)は、(1)E2ノード情報、(2)セル情報、(3)UE情報、(4)E2ノードレポート、(5)KPM(主要パフォーマンスメトリック)レポート、及び(6)トポロジ情報(EMSアダプタから)を含む。
【0232】
いくつかの実施形態におけるSDLトランザクションの例には、(1)xAppによって読み出される、データをSDLに書き込むデータIOポッド(制御又はデータIOスレッド)、(2)SDLに書き込まれる、別のxAppからデータを読み取るxApp、又は別のxAppのためにSDLにデータを書き込むxApp、(3)SDLポッドで動作するサービスコンテナ(例えば、ポストプロセッサ)が、同じxApp又は別のxAppの前に書き込まれたデータの動作を実行するようにSDLに書き込むxApp、(例えば、GPUサービスを使用するか、又は単に一般CPUを使用することによって)SDLから、この動作の結果を取り出すxApp、(4)A1サブスクリプションの一部としてSDLからデータを読み出す及びSDLへのデータを書き込む非RT RIC、(5)SDLに01構成データを保存するSMO、及び(6)SDLにMLデータを保存する非RT RICがある。
【0233】
図35は、本発明のいくつかの実施形態が実施される電子システムを概念的に示す。電子システム3500は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータなど)、又は任意の他の種類の電子デバイスであってもよい。このような電子システム3500は、種々のタイプのコンピュータ可読媒体と、種々の他のタイプのコンピュータ可読媒体のインタフェースとを含む。電子システム3500は、バス3505、処理ユニット3510、システムメモリ3525、読み出し専用メモリ3530、永続的ストレージデバイス3535、入力デバイス3540、及び出力デバイス3545を含む。
【0234】
バス3505は、集合的に、電子システム3500の多数の内部デバイスを通信的に接続する全てのシステムバス、周辺装置バス、及びチップセットバスを表す。例えば、バス3505は、処理ユニット3510を、読み出し専用メモリ3530、システムメモリ3525及び永続的ストレージデバイス3535と通信可能に接続する。
【0235】
これらの種々のメモリユニットから、処理ユニット3510は、本発明の処理を実行するために、実行する命令及び処理するデータを検索する。処理ユニット3510は、様々な実施形態では、単一プロセッサ又はマルチコアプロセッサであってもよい。
【0236】
読み出し専用メモリ3530は、処理ユニット3510及び電子システム3500の他のモジュールによって必要とされる静的データ及び命令を格納する。一方、永続的記憶デバイス3535は、読み書き可能なメモリデバイスである。このデバイス3535は、電子システム3500がオフのときでも命令やデータを格納する不揮発性メモリユニットである。本発明の一部の実施形態は、永続的ストレージデバイス3535として大容量ストレージデバイス(磁気又は光ディスク及びその対応するディスクドライブなど)を使用する。
【0237】
他の実施形態では、着脱式ストレージデバイス(フロッピーディスク、フラッシュドライブ等)を永続的ストレージデバイス3535として使用する。永続的ストレージデバイス3535と同様に、システムメモリ3525は読み書き可能なメモリデバイスである。しかし、ストレージデバイス3535とは異なり、システムメモリ3525は、ランダムアクセスメモリなどの揮発性の読み書き可能メモリである。システムメモリ3525は、プロセッサが実行時に必要とする命令及びデータの一部を格納する。いくつかの実施形態では、本発明の処理は、システムメモリ3525、永続的ストレージデバイス3535、及び/又は読み出し専用メモリ3530に格納される。これらの種々のメモリユニットから、処理ユニット3510は、いくつかの実施形態の処理を実行するために、実行する命令及び処理するデータを検索する。
【0238】
バス3505はまた、入出力デバイス3540及び3545に接続する。入力デバイス3540は、ユーザが情報を通信し、コマンドを電子システム3500に選択することを可能にする。入力デバイス3540は、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス3545は、電子システム3500によって生成された画像を表示する。出力デバイス3545は、カソード線管(CRT)又は液晶ディスプレイ(LCD)のようなプリンタ及びディスプレイデバイスを含む。一部の実施形態は、入出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
【0239】
最後に、
図35に示すように、バス3505はまた、ネットワークアダプタ(図示せず)を介して、電子システム3500をネットワーク3565に結合する。このようにして、コンピュータは、コンピュータのネットワーク(ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、イントラネット、又はインターネットのようなネットワークのネットワークの一部であってもよい。電子システム3500の任意の又は全てのコンポーネントは、本発明と共に使用することができる。
【0240】
いくつかの実施形態は、電子コンポーネント、例えば、マイクロプロセッサ、コンピュータ可読又はコンピュータ可読媒体(代替的にコンピュータ可読記憶媒体、機械可読媒体、又は機械可読記憶媒体と称される)におけるコンピュータプログラム命令を記憶する記憶及びメモリを含む。このようなコンピュータ可読媒体のいくつかの例は、RAM、ROM、読み出し専用コンパクトディスク(CD-ROM)、記録可能コンパクトディスク(CD-R)、書き換え可能コンパクトディスク(CD-RW)、読み出し専用デジタル汎用ディスク(例えば、DVD-ROM、二層DVD-ROM)、種々の記録可能/書き換え可能DVD(例えば、DVD-RAM、DVD-RW、DVD+RWなど)、フラッシュメモリ(例えば、SDカード、mini-SDカード、micro-SDカードなど)、及び/又はソリッドステートハードドライブ、読み出し専用及び記録可能Blu-Ray(登録商標)ディスク、超密度光ディスク、その他の光学又は磁気メディア、及びフロッピーディスクを含む。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能であり、種々の動作を実行するための命令のセットを含むコンピュータプログラムを記憶することができる。コンピュータプログラムまたはコンピュータコードの例としては、コンパイラによって生成されるようなマシンコードと、インタープリタを使用してコンピュータ、電子コンポーネント、またはマイクロプロセッサによって実行される上位レベルのコードを含むファイルがある。
【0241】
上記の説明では、主にソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを指すが、一部の実施形態は、特定用途向け集積回路(ASIC)、又はフィールドプログラマブルゲートアレイ(FPGA)など、1つ以上の集積回路によって実行される。いくつかの実施形態では、このような集積回路は、回路自体に記憶された命令を実行する。
【0242】
本明細書で使用される「コンピュータ」、「サーバ」、「プロセッサ」、「メモリ」という用語は、すべて電子又はその他の技術的デバイスを指す。これらの用語は、人または人々のグループを除外する。明細書では、用語の表示または表示は、電子デバイス上での表示を意味する。本明細書で使用されるように、「コンピュータ可読媒体」(複数)、「コンピュータ可読媒体」、および「マシン可読媒体」(複数)という用語は、コンピュータが読み取り可能な形式で情報を格納する有形の物理オブジェクトに全体として限定される。これらの語は、任意の無線信号、有線でダウンロードされた信号、及び任意の他のその場限りの信号を含まない。
【0243】
本発明は、多数の特定の詳細を参照して説明したが、当業者であれば、本発明の概念から逸脱することなく、他の特定の形態で本発明を実施することができることを認識するであろう。たとえば、いくつかの図はプロセスを概念的に示している。これらのプロセスの特定の動作は、表示及び説明されている正確な順序で実行されない場合がある。特定の動作は、1つの連続した一連の動作で実行されなくてもよく、異なる特定の動作が様々な実施形態で実行されてもよい。さらに、プロセスは、いくつかのサブプロセスを使用して、又はより大きなマクロプロセスの一部として実装することができる。
【0244】
また、上述のいくつかの実施形態は、ホストコンピュータごとに1つのハードウェアアクセラレータのみを示す。しかしながら、一般的な当業者であれば、いくつかの実施形態の方法論及びアーキテクチャを使用して、1つのホストコンピュータ上の複数のハードウェアアクセラレータへの直接的なパススルーアクセスを提供することができることを認識するであろう。さらに、上述のいくつかの実施形態は、xApp動作及びxAppsとのニアRT RIC通信に関する。一般的な当業者の一人であれば、これらの実施形態は、遠隔通信ネットワークにおけるエッジアプリケーション、およびエッジアプリケーションとのニアRT RIC通信に等しく適用可能であることを認識するであろう。したがって、当業者であれば、本発明は、前述の例示的な詳細によって制限されるものではなく、むしろ、添付の請求項によって定義されるものであることを理解するであろう。
【手続補正書】
【提出日】2023-09-05
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数のマシンが動作するホストコンピュータを含む無線アクセスネットワーク(RAN)において制御プレーン動作を実行する方法であって、前記方法は
、
各マシン上で
制御プレーン動作を実行する制御プレーンアプリケーションをデプロイすることと、
同一のマシン上の前記制御プレーンアプリケーション
とRANインテリジェントコントローラ(RIC)
との間のメッセージを転送するRICソフトウェア開発キット(SDK)を構成することであって、前記RICは、前記デプロイされたマシン上の前記制御プレーンアプリケーションと、前記RANの1つ以上の基地局コンポーネントのセットとの間のメッセージを転送する、ことと、を含む、方法。
【請求項2】
請求項1に記載の方法であって、各マシン上で、前記RIC SDKは、前記制御プレーンアプリケーションのための前記RAN
の前記基地局コンポーネントのセットへのネットワーク接続を確立するネットワーク接続プロセスのセットを含み、前記マシン上の前記制御プレーンアプリケーションが前記ネットワーク接続プロセスのセットを有することを差し控えることを可能にする、方法。
【請求項3】
請求項2に記載の方法であって、各マシンの各RIC SDKの前記ネットワーク接続プロセスのセットは、前記マシンと、前記マシンの前記制御プレーンアプリケーションによって使用される前記RAN
の前記基地局コンポーネントのセットとの間のネットワーク接続を確立及び維持し、前記制御プレーンアプリケーションのための前記RAN
の前記基地局コンポーネントのセットとの間のデータパケット伝送を制御する、方法。
【請求項4】
請求項1に記載の方法であって、各マシン上の前記制御プレーンアプリケーションは、前記
RIC SDKが低レベルAPI(アプリケーションプログラムインタフェース)コールに変換する高レベルAPIコールを介して、前記RAN
の前記基地局コンポーネントのセットと通信する、方法。
【請求項5】
請求項4に記載の方法であって、前記低レベルAPIコールの少なくともサブセットは、標準化策定団体によって規定される、方法。
【請求項6】
請求項4に記載の方法であって、前記高レベルAPIコールは高レベルプログラミング言語で作成され、一方、前記低レベルAPIコールは、ネットワーク接続を確立及び維持し、これらの接続を介してデータパケットを通過させる低レベルコールを含む、方法。
【請求項7】
請求項4に記載の方法であって、前記RAN
の前記基地局コンポーネントのセットは、前記RANのCU(集中ユニット)とDU(分散ユニット)とを含む、方法。
【請求項8】
請求項7に記載の方法であって、各マシン上の前記
RIC SDKは、前記低レベルの標準化で規定されたE2インタフェースを介して前記CU及び前記DUと通信し、一方、前記マシン上の前記制御プレーンアプリケーションは、高レベルAPIコールを用いて、前記
RIC SDKを介して前記CU及び前記DUと通信し、前記高レベルAPIコールは、低レベルの伝送又はネットワーク動作を含まない高レベルアプリケーションレイヤにおけるE2インタフェース動作を規定する、方法。
【請求項9】
請求項4に記載の方法であって、前記RAN
の前記基地局コンポーネントのセットは、前記RICのネットワーク要素を含む、方法。
【請求項10】
請求項9に記載の方法であって、前記RIC要素は、少なくとも1つの共有データレイヤ(SDL)要素を含む、方法。
【請求項11】
請求項9に記載の方法であって、前記RIC要素は、少なくとも1つのデータパス入出力(I/O)要素を含む、方法。
【請求項12】
請求項9に記載の方法であって、前記RIC要素は、少なくとも1つのサービス管理要素を含む、方法。
【請求項13】
RAN(Radio Access Network)において通信する制御プレーンアプリケーションの方法であって、
複数のホストコンピュータ上で動作する複数の制御プレーンアプリケーションをデプロイすることと、
前記複数のホストコンピュータ上で動作する複数のRANインテリジェントコントローラ(RIC)をデプロイして、前記制御プレーンアプリケーションの間の通信インタフェースとして機能する分散RICを実施することと、を含む方法。
【請求項14】
請求項13に記載の方法であって、更に、少なくとも第1の制御プレーンアプリケーションからアプリケーションプログラミングインタフェース(API)コールを受信し、前記APIコールを少なくとも第2の制御プレーンアプリケーションに転送するように、第1のRICを構成することを含む、方法。
【請求項15】
請求項14に記載の方法であって、前記第1の制御プレーンアプリケーション及び前記第2の制御プレーンアプリケーションは、同一のホストコンピュータ上で動作する、方法。
【請求項16】
請求項14に記載の方法であって、前記第1のRIC及び前記第1の制御プレーンアプリケーションは、第1のホストコンピュータ上で動作し、前記第2の制御プレーンアプリケーションは、第2のホストコンピュータ上で動作し、前記第1のRICを構成することは、第2のRICが前記第2の制御プレーンアプリケーションに転送するように、前記第1の制御プレーンアプリケーションから、前記第2のコンピュータ上で動作する前記第2のRICに前記APIコールを転送するように前記第1のRICを構成することを含む、構成することを含む、方法。
【請求項17】
請求項14に記載の方法であって、前記第1の制御プレーンアプリケーション及び前記第2の制御プレーンアプリケーションは、前記分散RICを介して互いに通信するためにRIC APIの共通セットを使用する異なる2者のアプリケーション開発者によって開発される、方法。
【請求項18】
請求項14に記載の方法であって、前記第1のRICを構成することは、前記第1のRICが前記第1の制御アプリケーションから前記第2の制御アプリケーションに前記APIコールを転送する場合に、前記APIコールに1つ以上のパラメータを追加するように前記第1のRICを構成することを含む、方法。
【請求項19】
請求項14に記載の方法であって、前記第1の制御プレーンアプリケーション及び前記第2の制御プレーンアプリケーションは、1つのホストコンピュータ上で動作する第1のマシン及び第2のマシン上で動作し、前記方法は、更に、前記分散RICと、前記第1の制御プレーンアプリケーション及び前記第2の制御プレーンアプリケーションとの間でAPIコールを受信及び転送するためのRIC SDKを各マシン上で構成する、方法。
【請求項20】
請求項19に記載の方法であって、各マシン上で、前記RIC SDKは、前記制御プレーンアプリケーションのための前記RAN要素のセットへのネットワーク接続を確立するネットワーク接続プロセスのセットを含み、そのマシン上の前記制御プレーンアプリケーションが前記ネットワーク接続プロセスのセットを有することを差し控えることを可能にする、方法。
【請求項21】
請求項20に記載の方法であって、各マシンの各RIC SDKの前記ネットワーク接続プロセスのセットは、前記マシンと、前記マシンの前記制御プレーンアプリケーションによって使用される前記RAN要素のセットとの間のネットワーク接続を確立及び維持し、前記制御プレーンアプリケーションのための前記RAN要素のセットとの間のデータパケット伝送を制御する、方法。
【請求項22】
請求項19に記載の方法であって、各マシン上の前記制御プレーンアプリケーションは、前記RAN SDKが低レベルAPI(アプリケーションプログラムインタフェース)コールに変換する高レベルAPIコールを介して、前記RAN要素のセットと通信し、前記低レベルAPIコールの少なくともサブセットは標準化策定団体によって規定される、方法。
【請求項23】
請求項19に記載の方法であって、各マシン上の前記制御プレーンアプリケーションは、前記RAN SDKが低レベルAPI(アプリケーションプログラムインタフェース)コールに変換する高レベルAPIコールを介して、前記RAN要素のセットと通信し、前記高レベルAPIコールは高レベルプログラミング言語で作成され、一方、前記低レベルAPIコールは、ネットワーク接続を確立及び維持し、これらの接続を介してデータパケットを通過させる低レベルコールを含む、方法。
【請求項24】
制御プレーンアプリケーションが無線アクセスネットワーク(RAN)の共有データレイヤ(SDL)ストレージを使用する方法であって、
ホストコンピュータ上で動作する前記制御プレーンアプリケーションをデプロイすることと、
前記ホストコンピュータ上にSDLキャッシュをデプロイすることと、
前記SDLキャッシュを使用して、前記制御プレーンアプリケーションのSDLストレージアクセス要求の少なくともサブセットを処理することと、を含む方法。
【請求項25】
請求項24に記載の方法であって、前記制御プレーンアプリケーションは、前記ホストコンピュータ上で動作するマシン上で動作し、前記SDLキャッシュは前記マシン上で動作する、方法。
【請求項26】
請求項24に記載の方法であって、前記制御プレーンアプリケーションは、前記ホストコンピュータ上で動作するマシン上で動作し、前記SDLキャッシュは前記ホストコンピュータ上で動作する、方法。
【請求項27】
請求項24に記載の方法であって、ホストコンピュータ上で動作し、前記SDLキャッシュに格納されたデータを前記SDLストレージに格納されたデータと同期させる、RANインテリジェントコントローラ(RIC)をデプロイすること、を更に含む方法。
【請求項28】
請求項27に記載の方法であって、前記RICをデプロイすることは、他のホストコンピュータ上で動作する他のRICとともに分散RICを実施する前記RICをデプロイすることを含む、方法。
【請求項29】
請求項28に記載の方法であって、前記SDLストレージは、前記制御プレーンアプリケーションが動作する前記ホストコンピュータとは異なるホストコンピュータ上で動作する、方法。
【請求項30】
請求項28に記載の方法であって、前記SDLストレージの少なくとも一部は、前記制御プレーンアプリケーションが動作する前記ホストコンピュータ上で動作する、方法。
【請求項31】
請求項24に記載の方法であって、前記制御プレーンアプリケーションは、前記ホストコンピュータ上で動作するマシン上で動作し、前記方法は、更に、前記制御プレーンアプリケーションからのストレージアクセス要求を処理するように、前記マシン上でRIC SDKを構成すること、を含む方法。
【請求項32】
請求項31に記載の方法であって、前記SDLキャッシュは、前記RIC SDKの一部である、方法。
【請求項33】
請求項32に記載の方法であって、
前記RICをデプロイすることは、他のホストコンピュータ上で動作する他のRICとともに分散RICを実施する前記RICをデプロイすることを含み、
前記SDLストレージは、前記分散RICの一部である、方法。
【請求項34】
請求項33に記載の方法であって、前記RIC SDKは、前記SDLキャッシュを介したSDLアクセス要求を処理することができない場合に、前記制御プレーンアプリケーションからの前記SDLアクセス要求を前記SDLキャッシュに転送する、方法。
【請求項35】
請求項34に記載の方法であって、前記SDLキャッシュが、前記制御プレーンアプリケーションによって要求されたデータを格納していない場合、前記RIC SDKは、前記SDLキャッシュを介してSDLアクセス要求を処理することができない、方法。
【請求項36】
少なくとも1つの処理ユニットで実行されると、請求項1から35のいずれか1項に記載の方法を実施するコンピュータプログラム。
【請求項37】
計算デバイスであって、
処理ユニットのセットと、
前記処理ユニットの少なくとも1つによって実施されると、請求項1から35のいずれか1項に記載の方法を実施するプログラムを格納する機械可読媒体と、を含む計算デバイス。
【国際調査報告】