(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-12
(54)【発明の名称】Wi-Fi仮想化
(51)【国際特許分類】
H04L 41/0895 20220101AFI20230905BHJP
H04W 28/084 20230101ALI20230905BHJP
H04W 88/06 20090101ALI20230905BHJP
H04W 84/12 20090101ALN20230905BHJP
【FI】
H04L41/0895
H04W28/084
H04W88/06
H04W84/12
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023512072
(86)(22)【出願日】2021-08-17
(85)【翻訳文提出日】2023-04-12
(86)【国際出願番号】 US2021046283
(87)【国際公開番号】W WO2022040171
(87)【国際公開日】2022-02-24
(32)【優先日】2020-08-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521412397
【氏名又は名称】オムニフィ インク.
【氏名又は名称原語表記】OMNIFI INC.
(74)【代理人】
【識別番号】100107364
【氏名又は名称】斉藤 達也
(72)【発明者】
【氏名】エプステイン,ジョセフ,アラン
【テーマコード(参考)】
5K067
【Fターム(参考)】
5K067AA21
5K067EE02
(57)【要約】
一実施形態では、無線ネットワークシステムが、1つ以上の無線機のセットと、無線ネットワークシステム用のソフトウェアのセットとを含み、このソフトウェアセットは、1つ以上の無線機のセットを表すデータ構造体と、1つ以上の無線機のセットの仮想プロキシを表す1つ以上の仮想化データ構造体を登録する仮想化モジュールとを含む。
【特許請求の範囲】
【請求項1】
無線ネットワークシステムであって、
1つ以上の無線機のセットと、
中央処理装置(CPU)と、
前記CPUと結合されて、前記無線ネットワークシステム用オペレーティングシステムを提供するストアドプログラムソフトウェア命令の1つ以上のシーケンスを格納するメモリであって、前記命令シーケンスは、前記CPUを使用して実行されたときに、
ドライバと、
1つ以上の無線機の前記セットを表すデータ構造体と、
1つ以上の無線機の前記セットの1つ以上の態様の仮想プロキシを表す1つ以上の仮想化データ構造体を登録する仮想化モジュールと、
を作成して前記メモリに格納することを行わせるようにプログラムされている、
前記メモリと、
を含む無線ネットワークシステム。
【請求項2】
前記仮想化モジュールは、下層仮想化粒度を表す1つ以上のネットワークエンドポイントを作成するようにプログラムされている、請求項1に記載の無線ネットワークシステム。
【請求項3】
前記1つ以上のエンドポイントのそれぞれは、対応する仮想データ構造体に関連付けられている、請求項2に記載の無線ネットワークシステム。
【請求項4】
前記1つ以上の仮想化データ構造体は、ユーザ空間インタフェースを通してアクセスされる、請求項1に記載の無線ネットワークシステム。
【請求項5】
前記仮想化モジュールはユーザ空間に存在し、前記仮想化モジュールは、前記1つ以上の仮想化データ構造体を、タップドライバを通して登録する、請求項1に記載の無線ネットワークシステム。
【請求項6】
前記ユーザ空間にある前記仮想化モジュールは、前記1つ以上の仮想化データ構造体の状態を変化させる為の1つ以上のコマンドを、ユーザ空間インタフェースを通して実行する、請求項5に記載の無線ネットワークシステム。
【請求項7】
前記1つ以上のコマンドは、インタフェースの追加又は削除、新しいBSSの開始、ステーションのキーの変更、パワー及びアンテナの調節、チャネルの変更、スキャンの開始、レーダ検出のリクエスト、又は関連付けハンドシェイクの調節を含む、請求項6に記載の無線ネットワークシステム。
【請求項8】
前記無線ネットワークシステム用の前記ソフトウェアセットは更に、前記仮想化モジュールに関連付けられたパーミッションモジュールを含み、前記パーミッションモジュールは、前記1つ以上の仮想化データ構造体のうちの1つに割り当てられたリソースを維持し、前記割り当てられたリソースの制限内で前記1つ以上の仮想化データ構造体のうちの前記1つに変更を加えることを許可する、請求項1に記載の無線ネットワークシステム。
【請求項9】
前記パーミッションモジュールは、可能な各動作を、許可された挙動、リソース制約、及び障害応答にマッピングする、請求項8に記載の無線ネットワークシステム。
【請求項10】
前記1つ以上の仮想化データ構造体のそれぞれが、1つ以上の無線機の前記セットを制御するコマンドの優先度に関連付けられ、それによって、優先度の高い仮想化データ構造体に関連付けられたコマンドが、優先度の低い仮想化データ構造体に関連付けられたコマンドより優先される、請求項1に記載の無線ネットワークシステム。
【請求項11】
前記無線ネットワークシステム用の前記ソフトウェアセットは更に、ドライバのインタフェースと、前記1つ以上の仮想化データ構造体のうちの1つに関連付けられた仮想インタフェースとの間のトラフィックを中継するデータプレーンフェリーを含む、請求項1に記載の無線ネットワークシステム。
【請求項12】
前記無線ネットワークシステム用の前記ソフトウェアセットは更に、前記1つ以上の仮想化データ構造体のうちの1つに関連付けられた仮想インタフェースのペアを含む、請求項1に記載の無線ネットワークシステム。
【請求項13】
前記仮想化モジュールは、仮想化コンテナに隔離された仮想化データ構造体を登録する、請求項1に記載の無線ネットワークシステム。
【請求項14】
前記仮想化モジュールはホストハードウェアモデルプロセス上に置かれ、一方、前記1つ以上の仮想データ構造体は仮想マシン内に置かれ、前記仮想化モジュールは、前記1つ以上の仮想データ構造体と、1つ以上の無線機の前記セットを表す実データ構造体との間の接続をブリッジする、請求項1に記載の無線ネットワークシステム。
【請求項15】
前記1つ以上の仮想データ構造体のうちの1つがホストマシン上にあり、一方、前記データ構造体は仮想マシン上にある、請求項1に記載の無線ネットワークシステム。
【請求項16】
前記仮想化モジュールはホストハードウェアモデルプロセス上にあり、一方、前記1つ以上の無線機のセット、及び1つ以上の無線機の前記セットを表す前記データ構造体は、リモートマシン上にある、請求項1に記載の無線ネットワークシステム。
【請求項17】
前記リモートマシン上にある仮想化エージェントが、1つ以上の無線機の前記セットの状態を構成及び発見する、請求項16に記載の無線ネットワークシステム。
【請求項18】
前記リモートマシン上にある前記仮想化エージェントと、前記ホストハードウェアモデルプロセス上にある前記仮想化モジュールは、ネットワークを介して通信する、請求項17に記載の無線ネットワークシステム。
【請求項19】
前記仮想化モジュールはコンピュートクラウド上にあり、一方、前記仮想化エージェント及び1つ以上の無線機の前記セットは無線クラウド上にある、請求項18に記載の無線ネットワークシステム。
【請求項20】
1つ以上の無線機のセットを有する無線ネットワークシステム用のオペレーティングシステムを提供するストアドプログラムソフトウェア命令の1つ以上のシーケンスを格納する1つ以上のコンピュータ可読非一時的記憶媒体であって、前記命令シーケンスは、1つ以上のCPUを使用して実行されたときに、
ドライバと、
1つ以上の無線機の前記セットを表すデータ構造体と、
1つ以上の無線機の前記セットの1つ以上の態様の仮想プロキシを表す1つ以上の仮想化データ構造体を登録する仮想化モジュールと、
を作成して、前記1つ以上のCPUと結合されたメモリに格納することを行わせるようにプログラムされている、
媒体。
【請求項21】
前記仮想化モジュールは、下層仮想化粒度を表す1つ以上のネットワークエンドポイントを作成するようにプログラムされている、請求項20に記載の媒体。
【請求項22】
前記1つ以上のエンドポイントのそれぞれは、対応する仮想データ構造体に関連付けられている、請求項21に記載の媒体。
【請求項23】
前記1つ以上の仮想化データ構造体は、ユーザ空間インタフェースを通してアクセスされる、請求項20に記載の媒体。
【請求項24】
前記仮想化モジュールはユーザ空間に存在し、前記仮想化モジュールは、前記1つ以上の仮想化データ構造体を、タップドライバを通して登録する、請求項20に記載の媒体。
【請求項25】
前記ユーザ空間にある前記仮想化モジュールは、前記1つ以上の仮想化データ構造体の状態を変化させる為の1つ以上のコマンドを、ユーザ空間インタフェースを通して実行する、請求項24に記載の媒体。
【請求項26】
前記1つ以上のコマンドは、インタフェースの追加又は削除、新しいBSSの開始、ステーションのキーの変更、パワー及びアンテナの調節、チャネルの変更、スキャンの開始、レーダ検出のリクエスト、又は関連付けハンドシェイクの調節を含む、請求項25に記載の媒体。
【請求項27】
前記無線ネットワークシステム用の前記ソフトウェアセットは更に、前記仮想化モジュールに関連付けられたパーミッションモジュールを含み、前記パーミッションモジュールは、前記1つ以上の仮想化データ構造体のうちの1つに割り当てられたリソースを維持し、前記割り当てられたリソースの制限内で前記1つ以上の仮想化データ構造体のうちの前記1つに変更を加えることを許可する、請求項20に記載の媒体。
【請求項28】
前記パーミッションモジュールは、可能な各動作を、許可された挙動、リソース制約、及び障害応答にマッピングする、請求項27に記載の媒体。
【請求項29】
前記1つ以上の仮想化データ構造体のそれぞれが、1つ以上の無線機の前記セットを制御するコマンドの優先度に関連付けられ、それによって、優先度の高い仮想化データ構造体に関連付けられたコマンドが、優先度の低い仮想化データ構造体に関連付けられたコマンドより優先される、請求項20に記載の媒体。
【請求項30】
前記無線ネットワークシステム用の前記ソフトウェアセットは更に、ドライバのインタフェースと、前記1つ以上の仮想化データ構造体のうちの1つに関連付けられた仮想インタフェースとの間のトラフィックを中継するデータプレーンフェリーを含む、請求項20に記載の媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年8月18日に出願された米国特許仮出願第63/067189号の、35 U.S.C.119(e)に基づく利益を主張するものであり、その全内容は、あらゆる目的の為に、参照により、本明細書に完全な形で記載されているかのように本明細書に組み込まれている。
【0002】
本開示の一技術分野は無線ネットワーキングである。別の技術分野は、Wi-Fiアクセスポイントのソフトウェアアーキテクチャ及び機能である。別の技術分野は、仮想マシンのアーキテクチャ及び機能である。
【背景技術】
【0003】
IEEE 802.11無線ローカルエリアネットワーキング規格(Wi-Fiを含む)では、サービスセットは、サービスセット識別子(SSID)を共有する無線ネットワーク機器のグループである。サービスセットは、共有リンク層ネットワーキングパラメータで動作するノードの論理ネットワークを形成する。サービスセットは、基本サービスセット(BSS)又は拡張サービスセット(ESS)のいずれかである。基本サービスセットは、無線ネットワーク接続されるように物理層媒体アクセス特性(例えば、無線周波数、変調方式、セキュリティ設定)を共有する機器の、サービスセット内でのサブグループである。基本サービスセットは、その中の全ての機器によって共有される基本サービスセット識別子(BSSID)によって定義される。
【0004】
機器が複数のBSSIDを有する場合があるが、通常、各BSSIDは、一度にせいぜい1つの基本サービスセットに関連付けられる。他の機器が参加する為の、アクセスポイント(AP)と呼ばれるインフラストラクチャ機器によってインフラストラクチャBSSが生成される。インフラストラクチャBSSの動作パラメータは、APによって定義される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、上記従来の技術における課題を解決するためになされたものである。
【課題を解決するための手段】
【0006】
添付図面は、本発明のサマリとして働きうる。
【図面の簡単な説明】
【0007】
【
図1】仮想アクセスポイントが複数あるLinux(登録商標)ベースのAPプラットフォームにおける先行技術の状態を示しており、「仮想」AP間にソフトウェアインフラストラクチャが深く混入している様子を示している。
【
図2】wiphy仮想化器を含む、オペレーティングシステム(OS)の論理アーキテクチャの一例を示す。
【
図3】各固有BSSがそれぞれの仮想wiphyを有する、OSの論理アーキテクチャの一例を示す。
【
図4】カーネル仮想化が使用される、OSの論理アーキテクチャの一例を示す。
【
図5】wiphyタップドライバを含む、OSの論理アーキテクチャの一例を示す。
【
図6】各仮想wiphyが仮想cfg80211_ops構成登録を有する、OSの論理アーキテクチャの一例を示す。
【
図7】パーミッションモジュールの実施態様の一例を示す。
【
図8A】許可、リソース制約、及びエラーコードに対する動作をマッピングするテーブルの一例を示す。
【
図8B】許可、リソース制約、及びエラーコードに対する動作をマッピングするテーブルの一例を示す。
【
図9】データプレーンフェリーを含む、OSの論理アーキテクチャの一例を示す。
【
図10】仮想wiphyに関連付けられたペアの仮想インタフェースを含む、OSの論理アーキテクチャの一例を示す。
【
図11】複数のコンテナを隔離機構として利用する論理アーキテクチャの一例を示す。
【
図12】仮想化の論理アーキテクチャの一例を示す。
【
図13】ホスト内でスイッチングが行われることを可能にする為にタップインフラストラクチャを利用する仮想化の論理アーキテクチャの一例を示す。
【
図14】フル仮想化の論理アーキテクチャの一例を示す。
【
図15】ホスト内に仮想wiphyを有し、ゲスト内にそのwiphyを有する、仮想化の論理アーキテクチャの一例を示す。
【
図16】リモートWi-Fiの論理アーキテクチャの一例を示す。
【
図18】ローカル及び非ローカルのコンピュートリソースが同じ場所にある場合のリソーススケジューラの一例を示す。
【
図19】リソーススケジューラによって複数の所望の場所に分散配置された分散Wi-Fi Passpointアプリケーションの一例を示す。
【
図20】リソーススケジューラが規定する関係性の一例を示す図である。
【
図21】一実施形態の幾つかの態様を実施できるコンピュータシステムの一例を示すブロック図である。
【発明を実施するための形態】
【0008】
構造的及び機能的概要
【0009】
特定の実施形態では、無線ネットワークシステムは、1つ以上の無線機のセットと、無線ネットワークシステム用のソフトウェアのセットとを含んでよく、このソフトウェアセットは、1つ以上の無線機のセットを表すデータ構造体と、1つ以上の無線機のセットの仮想プロキシを表す1つ以上の仮想化データ構造体を登録できる仮想化モジュールとを含んでよい。仮想化モジュールは、基礎となる仮想化粒度を表す1つ以上のネットワークエンドポイントを作成してよい。1つ以上のエンドポイントのそれぞれは、対応する仮想データ構造体に関連付けられてよい。
【0010】
特定の実施形態では、1つ以上の仮想化データ構造体は、ユーザ空間インタフェースを通してアクセスされてよい。特定の実施形態では、仮想化モジュールはユーザ空間に存在してよい。仮想化モジュールは、タップドライバを通して1つ以上の仮想化データ構造体を登録できる。特定の実施形態では、ユーザ空間にある仮想化モジュールは、1つ以上の仮想化データ構造体の状態を変化させる為の1つ以上のコマンドを、ユーザ空間インタフェースを通して実行してよい。この1つ以上のコマンドは、インタフェースの追加又は削除、新しいBSSの開始、ステーションのキーの変更、パワー及びアンテナの調節、チャネルの変更、スキャンの開始、レーダ検出のリクエスト、関連付けハンドシェイクの調節、又は任意の適切なコマンドを含んでよい。
【0011】
特定の実施形態では、無線ネットワークシステム用のソフトウェアセットは更に、仮想化モジュールに関連付けられたパーミッションモジュールを含んでよく、パーミッションモジュールは、1つ以上の仮想化データ構造体のうちの1つに割り当てられたリソースを維持し、その割り当てられたリソースの制限内で1つ以上の仮想化データ構造体のうちのその1つに変更を加えることを許可してよい。パーミッションモジュールは、可能な各動作を、許可された挙動、リソース制約、及び障害応答にマッピングしてよい。1つ以上の仮想化データ構造体のそれぞれが、1つ以上の無線機のセットを制御するコマンドの優先度に関連付けられてよく、それによって、優先度の高い仮想化データ構造体に関連付けられたコマンドが、優先度の低い仮想化データ構造体に関連付けられたコマンドより優先されうるように関連付けられてよい。
【0012】
特定の実施形態では、無線ネットワークシステム用のソフトウェアセットは更に、ドライバのインタフェースと、1つ以上の仮想化データ構造体のうちの1つに関連付けられた仮想インタフェースとの間のトラフィックを中継するデータプレーンフェリーを含んでよい。特定の実施形態では、無線ネットワークシステム用のソフトウェアセットは更に、1つ以上の仮想化データ構造体のうちの1つに関連付けられた仮想インタフェースのペアを含んでよい。
【0013】
特定の実施形態では、仮想化モジュールは、仮想化コンテナに隔離された仮想化データ構造体を登録できる。特定の実施形態では、仮想化モジュールはホストハードウェアモデルプロセス上に置かれてよく、一方、1つ以上の仮想データ構造体は仮想マシン(VM)内に置かれてよい。仮想化モジュールは、1つ以上の仮想データ構造体と、1つ以上の無線機のセットを表す実データ構造体との間の接続をブリッジしてよい。特定の実施形態では、1つ以上の仮想データ構造体のうちの1つがホストマシン上にあってよく、一方、データ構造体は仮想マシン上にある。
【0014】
特定の実施形態では、仮想化モジュールはホストハードウェアモデルプロセス上にあってよく、一方、1つ以上の無線機のセット、及び1つ以上の無線機のセットを表すデータ構造体は、リモートマシン上にあってよい。リモートマシン上にある仮想化エージェントが、1つ以上の無線機のセットの状態を構成及び発見してよい。リモートマシン上にある仮想化エージェントと、ホストハードウェアモデルプロセス上にある仮想化モジュールは、ネットワークを介して通信する。特定の実施形態では、仮想化モジュールはコンピュートクラウド上にあってよく、一方、仮想化エージェント及び1つ以上の無線機のセットは無線クラウド上にあってよい。
【0015】
本明細書に開示の実施形態は実施例に過ぎず、本開示の範囲はそれらに限定されない。特定の実施形態は、本明細書に開示の実施形態の構成要素、要素、特徴、機能、動作、又はステップの全てを含んでよく、又は一部を含んでよく、又は全く含まなくてもよい。本発明による実施形態は、方法、記憶媒体、システム、及びコンピュータプログラム製品に関する添付の特許請求項において具体的に開示されており、1つの特許請求項カテゴリ(例えば、方法)において言及されているいかなる特徴も、別の特許請求項カテゴリ(例えば、システム)においても同様に特許請求されてよい。添付の特許請求項における従属性又は参照は、正規の理由の為にのみ選択される。しかしながら、(特定の複数の従属性がある)任意の前述の特許請求項の慎重な参照の結果として得られるいかなる対象も同様に特許請求されてよく、それにより、特許請求項とそれらの特徴との任意の組み合わせが開示されており、それらが、添付の特許請求項において選択されている従属性に関係なく、特許請求されてよい。特許請求されてよい対象は、添付の特許請求項に明示された特徴の組み合わせだけでなく、特許請求項にある特徴の他の任意の組み合わせも含んでよく、特許請求項において言及されている各特徴は、特許請求項にある他の任意の特徴又は他の特徴の組み合わせと組み合わされてよい。更に、本明細書において記載又は描写されている実施形態及び特徴はいずれも、別個の特許請求項の形で特許請求されてよく、且つ/又は、本明細書において記載又は描写されている任意の実施形態又は特徴との任意の組み合わせ、又は、添付の特許請求項の特徴のいずれかとの任意の組み合わせの形で特許請求されてよい。
【0016】
開示の背景-従来のアプローチにおける正しくない仮想化
【0017】
Wi-Fiのソフトウェアアーキテクチャは、現時点では、それが動作するハードウェアの概念に固定されている。これは、ドライバレベルであれば、(アクセスポイント用として選択されるオペレーティングシステムである)Linux上で、cfg80211インタフェース等の無線制御インタフェースの標準化によってある程度解決される。しかしながら、これらのインタフェースのモデルは、下層ハードウェアの取り付け及び制御に直接依存する。具体的には、スタック全体を通して、現行システムの設計では、1つ以上のローカルドライバによって制御される1つ以上のハードウェア無線機に1つのCPUが直接取り付けられ、ソフトウェアがWi-Fi環境を直接制御するものと仮定する。この仮定は様々な結果につながる。多くのアクセスポイント用Wi-Fi無線機シリコンベンダは、CPUと無線機の一体型ソリューションを販売している。即ち、ボード全体のサポートパッケージがシリコンメーカから供給される。シリコンメーカは、カーネルバージョン、モジュール構成、通信に使用される「標準」APIのバージョン、上述のソフトウェア層のバージョン及び機能、並びに、システムを動作させる為に独自のパッチ及びインタフェースが必要かどうか、を選択する。多くの場合、これは、OpenWRTファームウェアビルドの形で提供され、ファームウェアの形での実装が、ハードウェアに束縛されることの本質である。
【0018】
Wi-Fiソリューションの製作者にとっては、前述のアプローチは、ハードウェアに依存しないことが非常に困難であることにつながる。ボードサポートパッケージの場合、Wi-Fiソリューションの製作者は、そのカスタマイズされたハードウェアベースのパッケージに合わせて自身のソフトウェアソリューションをカスタマイズし、適合させることを必要とされる。この為、ボードサポートパッケージが変わるたびに必ず膨大なコストが発生する。Wi-Fi無線機シリコンベンダを変更することは非常に困難であり、コストがかさむ。これは、製作者のインフラストラクチャを新しいベンダの環境に完全に移植しなければならない為であり、それによって、多くの場合は新製品の導入が1~2年遅れる。
【0019】
このことは、Wi-Fiの消費者にとっては、Wi-Fiソリューション製作者が提供するハードウェアが、Wi-Fiソリューション製作者が提供するソフトウェアに強く束縛されなければならないことを意味する。企業のWi-Fi購入者は、その企業が支出して設置したハードウェア無線機においてその製作者のソフトウェアだけを使用することを強いられる。従って、ベンダを変更することは、新しいWi-Fi製作者にそのソフトウェアライセンスの料金を支払うだけでなく、全てのハードウェアを新しいハードウェアに交換することを必要とする。
【0020】
データセンタでは、ソフトウェアとハードウェアの直接的な結びつきは、オープンソースのXen、カーネルベースの仮想マシン(KVM)、及び仮想化ベンダの独自ソリューションの形で提供されるようなコンピュートワークロード仮想化の使用によって解決されてきた。しかしながら、Wi-Fi向けのそのような技術はまだ存在しない。
【0021】
「仮想アクセスポイント」という用語は、現在は、同じ無線機に対して複数のBSSIDを運用する機能を意味する。しかしながら、複数のソフトウェアプラットフォームが同じ無線機を共有できるという意味ではなく、複数のネットワークが同じ無線機を共有できるという意味で、仮想アクセスポイントは仮想に過ぎない。実際、従来技術では、ソフトウェアは強固に統合されなければならず、それによって、ドライバ内でのキュー及びチャネルの管理の共有が可能になるように細部を調整することが可能になる。これは、必然的に、1つの無線機が一度に1つのチャネル設定しか持てない為である。そしてそれは本当なので、ドライバのノースバウンドAPIは、その組み合わせをソフトウェアスタックの最上位に保持する。
【0022】
図1は、仮想アクセスポイントが複数あるLinuxベースのAPプラットフォームにおける先行技術の状態を示しており、「仮想」AP間にソフトウェアインフラストラクチャが深く混入している様子を示している。各BSSIDは「仮想AP」に対応しており、そのそれぞれは、それぞれのクライアントに関連付けられている。Wi-Fi無線機は、全てのBSSIDの間で共有される1つのグローバルステーションテーブルを保持しながらも、クライアントがどのBSSIDに割り当てられているかを追跡することによって、仮想APを実装しており、それによって、正しいBSSIDに対して応答が生成されることが可能である。このアーキテクチャでは、共有されるキュー及び構成のインフラストラクチャ(例えば、PCI構成)がホストに与えられる。結局のところ、ホストにはハードウェア無線機が1つだけ存在する。ドライバは、その1つの無線機と通信し、1つの「wiphy」(ソフトウェアにおける無線機のcfg80211表現)をホストに与えるが、個別のネットワーク機器インタフェース(wlan0…)を各BSSIDに対して1つずつ作成し、それによって、ドライバは、wlanインタフェースで送信されるトラフィックをしかるべきBSSIDにマッピングすることが可能になりうる。これはユニキャストトラフィックの場合には必須ではなく、それは、ほとんどの場合にクライアントが一度に1つのBSSIDにのみ存在しうるからであるが、ブロードキャストトラフィックは、異なるBSSIDが異なるブロードキャストドメインに属することが可能であるように、トラフィックが宛てられているBSSIDのマーキングがなされる必要がある。各インタフェースの上に共有OpenVSwitch実装(又は従来のブリッジング)があり、通常のゴールは、必要に応じて1つのOpenVSwitchの中に異なる複数のブロードキャストドメインを構成することである。1つのnl80211カーネルnetlinkサービスが、ユーザ空間にある、通常は1つのhostapdプロセスに接続し、これによって、全てのBSSIDが直ちに共有構成から構成され、共有構成はOpenWRTドリブンであってよい。従って、OpenWRTにログインした管理者は、全体のセットアップを自分のドメイン内にあるものとして見ることになり、単に、1つの構成の中にある異なる複数のVLANとして見ることになる。
【0023】
この異なる複数のwlanインタフェースは、従来のデータセンタ仮想化技術を使用する機会を提供するものと考えられてよい。しかしながら、従来技術を使用して、従来のデータセンタ仮想化技術を使用することは不可能である。各wlanインタフェースはwiphyを共有する。従って、カーネルは、それらのwlanインタフェースが別々のコンテナネットワーク名前空間に置かれることを許可すらしない。Docker等のコンテナ化システムは、ハードウェア無線機に関連付けられたwlanインタフェースの全てをコンテナに入れなければいけない、又は全くどこにも入れてはいけない」としました。そして、どの仮想化プラットフォームも、VM内で1つのインタフェースだけを動かすことはできない。これは、仮想化に対して標準イーサネットネットワークしかサポートされていない為である。どのcfg80211 APIも境界を横切らない。更に、仮想化プラットフォームは、いかなるインタフェースの取り込みも許可しない(ただし、同じ機器に対して複数のPCIインタフェースをホストすることによってI/O仮想化をサポートするものを除く。その場合、各仮想マシンに対するPCIエンドポイントはホストから切断されており、ゲストは、現在のAPチップセットには存在しない仮想境界を通して機器のローPCIと通信する)。その代わりに仮想化プラットフォームは、ゲストに固有の仮想「タップ」インタフェースを作成することを必要とし、これはホスト内でブリッジ又はルーティングされることが可能であるが、直接接続されることはできない。
【0024】
例示的実施形態-正しく仮想化されたWLAN
【0025】
上記セクションで述べた問題を克服する為に、本開示の発明の一実施形態では、無線ネットワークシステムが、1つ以上の無線機のセットと、無線ネットワークシステム用のソフトウェアプログラムのセットとを含んでよく、このソフトウェアプログラムのセットは、メモリにデジタル記憶されて1つ以上の無線機のセットを表すデータ構造体と、1つ以上の無線機のセットの仮想プロキシを表す1つ以上の仮想化データ構造体を登録する仮想化モジュールとを含む。仮想化モジュールは、基礎となる仮想化粒度を表す1つ以上のネットワークエンドポイントを作成する。
【0026】
図2は、wiphy仮想化器を含む、OSの論理アーキテクチャの一例200を示す。
図2に限定ではなく例として示すように、OS200は、実際のハードウェアの仮想プロキシを表す為に新しい仮想wiphy203を登録できるwiphy仮想化器201をAPI(例えば、cfg80211)内に含んでよい。wiphy仮想化器201は又、基礎となる仮想化粒度を表す1つ以上のネットワークエンドポイント205A、205B、205Cを作成してよい。幾つかの実施形態では、仮想化粒度は、BSSのレベルであってよい。仮想無線ネットワークは、他の仮想ネットワークと異なる1つ以上のBSS(及びBSSID)を有してよい。
【0027】
特定の実施形態では、1つ以上のエンドポイントのそれぞれは、対応する仮想データ構造体に関連付けられてよい。
図3は、各固有BSSがそれぞれの仮想wiphyを有する、OSの論理アーキテクチャの一例300を示す。
図3に限定ではなく例として示すように、仮想WLAN(VWLAN)305A、305B、305Cのそれぞれは、BSSに関連付けられてよい。VWLANは、仮想wiphy303A、303B、303Cに関連付けられてよい。このようにすることの利点は、各BSSが(それをそれぞれに固有のネットワーク名前空間に挿入することによって)それぞれのLinuxコンテナに挿入可能なレベルで抽象化されることであろう。幾つかの実施形態では、wiphy仮想化器301は、オリジナルのwiphyをその状態に関してクエリし、関連するセクションを仮想wiphy303A、303B、及び303Cにコピーしてよい。幾つかの実施形態では、関連するセクションは、利用可能な調節バンド及び調節チャネル、電力要件、下層ドライバがサポートするインタフェースモード(AP、クライアント、モニタ等)、及び使用可能なBSSIDアドレスの利用可能なリスト又はマスクを含んでよい。幾つかの実施形態では、wiphy仮想化器301は、ドライバによってサポートされているインタフェース組み合わせの数を追跡してよく、仮想wiphy303A、303B、303Cによって露出している数を、それぞれのユーザが制限を超えないように調節してよい。幾つかの実施形態では、wiphy仮想化器301は、それらの値を調節しなくてよい。そのような場合は、制限を超えようとするとエラーが発生する可能性がある。幾つかの実施形態では、wiphy仮想化器301は、下層メモリ内wiphy構造体を物理wiphyに関して直接クエリしてよい。これは、Linuxでは、実際の機器のnet_device構造体のieee80211_ptrフィールド(これはwireless_dev構造体をポイントし、従って、wiphy構造体をポイントする)にアクセスすることによって達成可能である。
【0028】
幾つかの実施形態では、クエリは、仮想wiphy303A、303B、又は303Cがアクセスされるたびに送出されてよく、これは、仮想wiphy構造体が存在するページに読み出し禁止保護を設置し、読み出しフォールトをインタセプトして更新をスケジュールすることにより行われる。幾つかの実施形態では、仮想wiphy303A、303B、又は303Cは、最初の作成時にのみコピーされてよい。幾つかの実施形態では、仮想wiphy303A、303B、又は303Cは、実際のwiphyから周期的にコピーされてよい。なお、無線ネットワーキングの管理においては、通常、完全な同期は必須ではない。一般に、ドライバは、ユーザ空間ソフトウェアの明示的なリクエストによる場合を除き、一旦登録されたwiphyを変更しない。ユーザ空間ソフトウェアの明示的なリクエストがあった場合でも、そのリクエストは、(通常動作に対してではなく)メジャーアドレッシング又は調節変更のみに限定される傾向がありうる為、コピーすることの度合いは、特殊な環境での問題に過ぎない。そのような変更が阻止されうる環境では、同期は一度行われればよいであろう。
【0029】
特定の実施形態では、1つ以上の仮想化データ構造体は、ユーザ空間インタフェース(例えば、netlink nl80211ソケット)を通して間接的にアクセスされてよい。
図4は、カーネル仮想化が使用される、OSの論理アーキテクチャの一例400を示す。
図4に限定ではなく例として示すように、一実施形態では、仮想wiphy403A、403B、403Cは、netlink nl80211ソケット407を使用してアクセスされてよい。nl80211ソケット407は、標準のカーネルソケット手段を使用して非ゼロのpidエンティティとして登録することによって作成されてよい。これは、nl80211ポートIDを任意に選択することによって、又はカーネルスレッドを登録し、そのカーネルスレッドのpidを使用することによって行われてよい。又、これによって、wiphy仮想化器401が、cfg80211コードの変更を必要とせずに、nl80211スタックからの更新(例えば、新しい仮想wiphy403A、403B、403C及びインタフェース405A、405B、405Cの登録)を自動的にサブスクライブすることを可能にできる。
【0030】
特定の実施形態では、仮想化モジュールはユーザ空間に存在してよい。仮想化モジュールは、タップドライバを通して1つ以上の仮想化データ構造体を登録できる。
図5は、wiphyタップドライバを含む、OSの論理アーキテクチャの一例を示す。
図5に限定ではなく例として示すように、ブランクwiphyが作成されてよい。ブランクwiphyは、ユーザ空間から編集されてよい。又、これによって、ユーザ空間プログラムが、ダミーwiphyを同様に作成し、そのダミーwiphyへのアクセスに登録して、実質的に、無線タップドライバ502のフォームを作成することを可能にできる。特定の実施形態では、ユーザ空間プログラムは、wiphy仮想化器501であってよい。ユーザ空間プロセスは、クラッシュの観点から、より低リスクのドメインにあるという利点を有することが可能であり、スクリプト記述及び他の高速プログラミング方法論を活用して、カーネルコードの変更を必要とせずに、仮想化の任意に複雑な挙動を生成することが可能である。
【0031】
特定の実施形態では、ユーザ空間にある仮想化モジュールは、1つ以上の仮想化データ構造体の状態を変化させる為の1つ以上のコマンドを、ユーザ空間インタフェース(例えば、nl80211ソケット)を通して実行してよい。このコマンドは、インタフェースの追加又は削除、新しいBSSの開始、ステーションのキーの変更、パワー及びアンテナの調節、チャネルの変更、スキャンの開始、レーダ検出のリクエスト、関連付けハンドシェイクの調節、又は任意の適切なコマンドを含んでよい。特定の実施形態では、wiphyに、無線機器の状態を変化させる(例えば、新しいインタフェースを作成する)コマンドが付随してよい。Linuxでは、wiphy及びwiphy上の個々のインタフェースの両方を構成する為にドライバがcfg80211スタックに登録するコールバックのcfg80211_ops構造体によって、コマンドのリストがカーネル内に示されてよい。ユーザ空間では、コマンドのリストは、nl80211.hにリストされた様々なnl80211コマンドによって示されてよい。このコマンドは、インタフェースの追加又は削除、新しいBSSの開始、ステーションのキーの変更、パワー及びアンテナの調節、チャネルの変更、スキャンの開始、レーダ検出のリクエスト、関連付けハンドシェイクの調節、又は任意の適切なコマンドを含んでよい。これらのコールバックのほとんどがユーザ空間からnl80211を通して実行されてよく、それにより、セキュリティ認証器(従来的にはhostapd)は、ハンドシェイク、許可、キー交換、ネットワーク管理、リソース管理、及び他の様々なツールの為の様々な802.11及びWi-Fiアライアンスプロトコルを実装することが可能である。無線ネットワークが効果的である為には、仮想wiphy503A、503B、503Cに対するこれらのリクエストは、下層の物理wiphyにプロキシされる必要がある。
【0032】
特定の実施形態では、無線ネットワークシステム用のソフトウェアセットは更に、仮想化モジュールに関連付けられたパーミッションモジュールを含んでよく、パーミッションモジュールは、1つ以上の仮想化データ構造体のうちの1つに割り当てられたリソースを維持し、その割り当てられたリソースの制限内で1つ以上の仮想化データ構造体のうちのその1つに変更を加えることを許可してよい。
図6は、各仮想wiphyがパーミッションモジュールに関連付けられている、OSの論理アーキテクチャの一例を示す。幾つかの実施形態では、中央パーミッションモジュールが存在してよい。
図6に示すような幾つかの実施形態では、仮想wiphy603A、603B、603Cのそれぞれに対して、固有のパーミッションモジュール608A、608B、608Cが存在してよい。パーミッションモジュール608A、608B、608Cは、どのコマンドを通過させてよく、どのコマンドを通過させないかを決定してよい。パーミッションモジュール608A、608B、608Cは、実世界の物理性((例えば無線機の)チャネル及び調節の状態)が正しく実世界に伝えられ、戻ってくることを保証することが可能である。最も素朴なパーミッションシステムは、wiphyに対するあらゆる変更を拒否するものである。しかしながら、cfg80211_ops APIは、wiphyの変更を包含するだけでなく、個々のBSSの動作の調節も包含する。幾つかの構成では、同じ無線機に対して並んで存在する近傍の無線ネットワークに干渉することなくBSSごとに状態を変更できることは、wiphy仮想化器601によって処理される。例えば、仮想ドメイン内では、割り当てられたステーションの状態(キー、結合の状態)が処理されることが必要であってよい。更に、BSS自体の構成(SSID名、QoSパラメータ、その他)が処理されることが必要であってよい。パーミッションシステムは、ほとんどの場合、実際のwiphyのcfg80211_opsへのAPI呼び出しをプロキシ化して、それらの変更を下層ドライバに行わせることによって、そのアクセスを許可してよい。幾つかの構成では、各仮想wiphy603A、603B、603Cは、複数のVWLANインタフェース(例えば、モニタインタフェース、複数のVLANインタフェース、又は新しいBSSID)の作成を許可されてよい。パーミッションモジュール608A、608B、608Cは、それらの変更を、パーミッションモジュール608A、608B、608Cが抱える強制的なリソース制限の範囲内で許可してよい。パーミッションモジュール608A、608B、608Cは、幾つかの実施形態では、関連付けられた仮想wiphy603A、603B、603Cにリソースを事前に割り当ててよい。別の実施形態では、リソースはリアルタイムで測定される。これは、データセンタ仮想化において行われるリソースモニタリングを反映する(例えば、CPUコアは事前に割り当てられてよいが、メモリはオーバコミットされてよく、共有可能であってよい)。動作が許可されない場合には、パーミッションシステムは、上層のユーザ空間インフラストラクチャの所望の挙動に応じて、しかるべきエラーコード(ENOMEM、EPERM、EIO、その他が使用されてよい)により応答してよい。
【0033】
特定の実施形態では、パーミッションモジュールは、可能な各動作を、許可された挙動、リソース制約、及び障害応答にマッピングする。
図7は、パーミッションモジュールの実施態様の一例を示す。幾つかの実施形態では、パーミッションは、相互に関連する機能(例えば、インタフェースの追加及び削除)のグループごとに行われる。
図8A及び
図8Bは、許可、リソース制約、及びエラーコードに対する動作のマッピングテーブルの一例を示す。このテーブルの内容は、管理者の要望(例えば、リソースの事前割り当て、又はリソース共有の制限)と、ドライバの機能の情報(例えば、独立したBSSが独立状態を有することをドライバが許可するかどうか、或いは、1つにおいてなされる変更によって全てが変更されるかどうか)と、仮想wiphyが独立であることの要望の度合いと、の任意の組み合わせによって設定されてよい。
【0034】
特定の実施形態では、1つ以上の仮想化データ構造体のそれぞれが、1つ以上の無線機のセットを制御するコマンドの優先度に関連付けられてよく、優先度の高い仮想化データ構造体に関連付けられたコマンドが、優先度の低い仮想化データ構造体に関連付けられたコマンドより優先されうるように関連付けられてよい。幾つかのデプロイメント環境では、幾つかの仮想wiphyが他の仮想wiphyよりも無線機を制御できることが望ましい場合がある。幾つかの実施形態では、各仮想wiphyにコマンドの優先度が割り当てられてよく、幾つかの実施形態では、現在ある中で最高優先度のwiphyが制御権を有してよく、幾つかの実施形態では、高優先度のwiphyからのリソースリクエストが低優先度のwiphyからのものより優先される(例えば、高優先度のwiphyがスキャンをリクエストすることを許可し、低優先度のwiphyのスキャンをキャンセルする)。幾つかの実施形態では、wiphy仮想化器は、受け入れられたリクエストをドライバに直接渡してよい。このように、パーミッションシステムは、受け入れがたい形の害をもたらすリクエストをブロックする為に使用されてよい。幾つかの実施形態では、wiphy仮想化器は、構成を仮想化してよい。例えば、wiphy仮想化器が許可できるスキャンは、1分に1回以下であってよい。1つの仮想wiphyがスキャンをリクエストすると、これは許可されるであろうが、別の仮想wiphyから第2のリクエストがあって、これによってレートを超えるスキャンが行われることになると、その第2のリクエストが第1のリクエストとマージされて、両方のチャネルリストをカバーする1つのスキャンが生成されることが可能である。これは、第1のスキャンがまだ行われていない場合には第1のスキャンをキャンセルして、マージされた新しいスキャンを生成することによって行われてよい。別の実施例では、QoSマッピングが無線機内で不変であることをドライバが要求しているのに対して、wiphy仮想化器がQoSマッピングを仮想化している場合、wiphy仮想化器は、仮想wiphyごとのマッピングを受け入れて記憶してよい。wiphy仮想化器は、トラフィックが仮想インタフェースを通過するときに、差別化サービスコードポイント(DSCP)コード又はskbの優先度フィールドを修正して、それらのコードを、ドライバが実際に保有する下層マッピングに適合させてよい。
【0035】
インタフェースの制御プレーンフローはここまでに開示されている。データプレーンも規定されることが可能である。
【0036】
特定の実施形態では、無線ネットワークシステム用のソフトウェアセットは、ドライバのインタフェースと、1つ以上の仮想化データ構造体のうちの1つに関連付けられた仮想インタフェースとの間のトラフィックを中継するデータプレーンフェリーを含んでよい。
図9は、データプレーンフェリーを含む、OSの論理アーキテクチャの一例を示す。
図9に限定ではなく例として示すように、データプレーンフェリー911がドライバのインタフェース915から受信トラフィックを盗み取って、仮想wiphy903に関連付けられた仮想インタフェース905に渡してよい。これは、異なる多数のレベルで受信キューイングインフラストラクチャに登録することによって行われてよい。幾つかの実施形態では、ebtablesで制御可能なフィルタをインタフェースに適用することによってパケットが収集されてよい。幾つかの実施形態では、データプレーンフェリー911がVLANモジュール又はブリッジモジュールであるかのように登録することによってパケットが収集されてよい。別の実施形態では、トラフィックを中継する為に、ローカルのデータプレーン開発キット(DPDK)エンジンが構成されてよい。幾つかの実施形態では、これらのキャプチャされたフレームは浅くコピーされ(カーネル制御構造体だけがコピーされ、フレームの実バイトはコピーされない)、次に、仮想wiphyインタフェース905上のカーネルに受信済みとしてマーキングされる。仮想wiphyインタフェース905上の送信の場合は同様のプロセスが行われてよく、送信済みとマーキングされたパケットが実インタフェース915に直接フェリーされるだけであってよい。
【0037】
特定の実施形態では、無線ネットワークシステム用のソフトウェアセットは、1つ以上の仮想データ構造体のうちの1つに関連付けられてよい仮想インタフェースのペアを含んでよい。
図10は、仮想wiphyに関連付けられたペアの仮想インタフェースを含む、OSの論理アーキテクチャの一例を示す。
図10に限定ではなく例として示すように、wiphy仮想インタフェース1005A、1005Bはペアのように見えており、上向きインタフェース1005Aは、下向きインタフェース1005Bとは異なる名前空間に導入されてよい。上側インタフェース(例えば、vwlan0)1005Aで送信された全てのパケットが、下側インタフェース(例えば、vport0)1005Bに受信パケットとして存在してよく、その逆もあってよい。このアプローチは、仮想化ネットワーク機能の完全に別個のスタックが上位レベルで適用されることを可能にしながら、任意の数のLinuxブリッジング/スイッチング構成(例えば、効率的な処理、ホストブリッジング、又はOpenVSwitchの為のDPDK)が最下位レベルでプラミングされることを可能にできる。ホスト側データスイッチの介在を可能にすることの利点は、無線トラフィックに対して高度な機能を実施できることであってよい。
【0038】
特定の実施形態では、仮想化モジュールは、仮想化コンテナに隔離された仮想化データ構造体を登録できる。
図11は、複数のコンテナを隔離機構として利用する論理アーキテクチャの一例を示す。Linuxコンテナは、ユーザ空間プラットフォームの実行中の各インスタンスに、そのインスタンスだけがシステム上で実行中であるかのようなイリュージョンを与える為に使用される。LXC及びDOCKERは、コンテナ化を実施する方法としてよく知られている2つである。各コンテナは、それぞれ別個のnet名前空間において、構成しているだけの数のインタフェースを有するそれぞれの仮想wiphyを与えられてよい。ネットワーク名前空間が異なれば、コンテナが与える構成コマンドが何であれ、
図11で点線で示されるように、それぞれのコンテナに確実にトラップされることが可能である。コンテナは、各net名前空間内で、それぞれのデータ経路を構成することを許可されてよい。これは、データ経路が分散型トンネルOpenVSwitchインスタンス又は他のトンネルプロトコルに接続されている場合などに特に有用でありうる。そのような構成は、OpenWRTのような構成と一緒に存在するが、今や、他の独立サービスと一緒に正しくホストされることが可能である。
図11に示したアーキテクチャは、他のデータプレーン処理実施形態の場合も同様に動作可能であり、パケット盗み取りは、やはりコンテナ化の挙動を可能にし、直接接続を有することによって、パケットごとのオーバヘッドは、システムの実行時間にO(1)の影響があるときに周囲に境界を付けられて論証されることが可能である。コンテナ(及び下層で同様に仮想マシン)を使用することの一利点は、有線インタフェースの仮想化又は隔離が、オペレータが、トラフィックに対するセキュアなオーバレイを、ワークロードに対して透過的に導入することを可能にし、それによって、正しくないエリアに有線トラフィックが配置されないことを保証することである。
【0039】
CPUとWi-Fi仮想化との融合
【0040】
コンテナの下側では、コンテナイメージがやはり、ボードサポートパッケージ上で動作するカーネルバージョンに依存することがありうる。このことは問題になりうる。それは、全てのシリコンベンダが出荷時に別々のカーネルバージョンを有する可能性がある為である。カーネルバージョンがばらばらであっても、ドライバがそれぞれのバージョンに適格化されるだけであろう。しかしながら、収容されたソフトウェアは、異なるカーネルの機能を活用することを必要とする場合がある。更に、収容されたイメージは、それ自体が他の仮想ハードウェアにアクセスできることを必要とする場合がある。更には、全体のホストオペレータが、Linuxコンテナによって防護されない、ハードウェアへのアクセスを防ぐことを必要とする場合がある。Linuxコンテナは、シングルテナントデータセンタ向けに設計されている。Linuxコンテナは、埋め込みプラットフォームが有する新規なハードウェアへのアクセスを防護することができない。標準的なCPU仮想化の場合にあるような、デフォルト拒否モデルに対するセキュリティ境界を低くすることは、信頼度の低い又は敵対的なマルチテナント環境においては有利かもしれない。CPU仮想化は、ワークロードがフリーズされて、ビット単位で1つのマシンから別のマシンに移行されることを可能にできる。
【0041】
特定の実施形態では、仮想化モジュールはホストハードウェアモデルプロセス内に置かれてよく、一方、1つ以上の仮想データ構造体は仮想マシン内に置かれてよい。仮想化モジュールは、1つ以上の仮想データ構造体と、1つ以上の無線機のセットを表す実データ構造体との間の接続をブリッジしてよい。
図12は、仮想化の論理アーキテクチャの一例を示す。幾つかの実施形態では、仮想化エンジンはKVMであってよい。ホストハードウェアモデルプロセスは、virtioドライバ及びvhost_netドライバを使用して、qemu内で行われる。幾つかの実施形態では、仮想化エンジンは、準仮想化アクセスを使用するXenであってよい。ゲストに対してハードウェアモデルエミュレーションを実施するホストハードウェアモデルプロセス内に、wiphy仮想化器が置かれる。wiphy仮想化器は、仮想wiphyと実wiphyとの間の接続を、上記で教示されたようにブリッジしてよい。ホストハードウェアモデルプロセスはユーザ空間にある為、1つの選択肢は、nl80211 netlinkソケットを使用してその通信を行うことである。データプレーンにアクセスする為に、Linuxは、標準的なローソケット、又はメモリマッピングされたローソケットによるローパケットアクセスを提供してよく、これは、キューイングインフラストラクチャに効率的にアクセスする為にDPDKによって使用されるものである。これは、カーネル内アクセスの為の、但し、ユーザ空間を使用してそのアクセスを行う為の、盗み取られたアクセスモデルに対応してよい。このアプローチはユーザ空間からカーネルへのアクセスである為、これらの実施形態では、ホストOS又は仮想マシンOSでの修正が不要である。しかしながら、データアクセスモデルは、無線と有線とで異なる場合があり、これは、有線のアクセスでは、ホストOSにおいてトラフィックの任意の変更及びルーティングを可能にする為に、タップ仮想インタフェースをほとんど均一に使用する為である。幾つかの環境では、これは、ある特定の有利点になりうる。それは、直接アクセスによって、各無線パケットに接触しなければならない回数が減る為である。一方、ゲストカーネルは修正が必要であり、より厳密には、wiphyを登録し、cfg80211呼び出しを取得するcfg80211機能を実施する為に特殊なvirtio-netドライバが必要である。幾つかの実施形態では、wiphyは、共有メモリを使用して、ハードウェアモデルプロセスとやりとりしてよく、コマンドは、制御キューを使用して、同じ機器にブリッジされてよい。別の実施形態では、ゲストドライバは、それらをnl80211コマンドに直接変換し、それらのコマンドを、準仮想化ハードウェアキューを通してホストプロセスに入れてキューイングに備えてよい。多くの実施形態では、ホストハードウェア機器モデルプロセスは、上記に開示のようにパーミッションを処理する。
【0042】
図13は、ホスト内でスイッチングが行われることを可能にする為にタップインフラストラクチャを利用する仮想化の論理アーキテクチャの一例を示す。やはりホストカーネルは修正されなくてよい。但し、(例えば、スイッチングブロックがそうするように)ローパケットキャプチャを使用する代わりに、トラフィックは、下部スイッチングブロックを通って流れて同じタップインタフェースに入ることを可能にされてよい。幾つかの実施形態では、ゲスト内の各仮想wlan1.xインタフェースごとに1つのタップインタフェースが存在してよい。幾つかの実施形態では、タップインタフェースは共有されてよい。トラフィックは、wiphy仮想化器によって発見される、ステーションが関連付けられるBSSIDに基づいて、ハードウェアモデルによってルーティングされてよい。いずれかの方法の一利点は、ホストスイッチングインフラストラクチャが、等価なコンテナモデルと同じように、トラフィックの高度な追加変更を実施できることであってよい。
【0043】
図14は、無線機の状態内への完全な接続を示す、フル仮想化の論理アーキテクチャの一例を示す。このモデルでは、1つ以上の仮想化ゲストVMが仮想化ホスト上で実行され、BSSIDを必要とする、各テナントVMの無線機インタフェースが下層BSSIDに論理接続されて、Wi-Fi無線機のソフトウェア及びハードウェアの状態及び論理が生成される。例示の為に、幾つかの実施形態では、BSSID1に接続されているクライアントが、ありうる仮想化非対応Wi-Fi無線機のハードウェア及びソフトウェアによって、ホスト内のwlan0としてネイティブ表現されていて、これが、タップwlan1.0を通るデータ経路を有しており、従って、vwlan0によってVM0のカーネルを通して露出される。別の実施形態では、ホスト上のタップの外側の接続が保持され、例えば、本明細書で言及されているローソケットインタフェース、パケットカプセル化、トンネリング、又はデータ転送が保持される。BSSIDの論理接続をホスト内及びゲスト内に保持することにより、仮想化器の仮想化ワークロードをj減らすことが可能になる。即ち、Wi-FiプロトコルはBSSIDを特定のアクティビティ(特にセキュリティ)の中心として信頼し、2つのゲストの別々のネットワークを1つのBSSID上で混合する実施形態では、その2つのネットワークを多重分離する追加ステップが実施され、例えば、ドライバ自身の多重分離に頼らずにグローバルステーションテーブルにアクセスするステップが実施される。
【0044】
特定の実施形態では、1つ以上の仮想データ構造体のうちの1つがホストマシン上にあってよく、一方、データ構造体は仮想マシン上にあってよい。
図15は、ホスト上に仮想wiphyを有し、ゲスト上にそのwiphyを有する、仮想化の論理アーキテクチャの一例を示す。
図15に示した二重仮想化(wiphyがホスト及びゲストに仮想コピーを有する)は、冗長に見えるかもしれない。しかし、このアーキテクチャは、コンテナ化ワークロード及び仮想マシンワークロードの両方に対して全く同じプラミングを用いてよい。従って、このアーキテクチャは、必要に応じてフル仮想マシンに昇格する選択肢を有するコンテナの効果的な働きを可能にできる。ワークロードを仮想化する他の方法も利用可能であってよい。幾つかの実施形態は、アプリケーション仮想化技術を使用してよい。アプリケーション仮想化器は、ユーザ空間ゲストプログラムとホストとの間に置かれるshimであってよい。アプリケーション仮想化器は、ライブラリ呼び出し及びシステム呼び出しを修正又はリダイレクトしてよい。一部は、リロケータブルパッケージを作成する軽量shimであってよい。オフザシェルフshimの問題は、オフザシェルフshimがnetlinkリクエストのプロキシにならないことであろう。これに対し、netlinkリクエストのプロキシになることが可能なオフザシェルフshimとなれば、それはフルユーザモードLinuxを使用するオフザシェルフshimということになる。ユーザモードLinuxというのはLinuxカーネルの特殊なバージョンであり、これは、非特権アプリケーションとして動作するが、その「syscall層」として下層ホストカーネルに登録することによって、全てのシステム呼び出しをインタセプトし、その動作をユーザモードカーネルのコンテキストで実施させる。ユーザモードLinuxでは、ハードウェアモデルは、最も広範囲なケースではコンテナのそれと同様であってよく、これは、カーネルがハードウェアリクエストを通すことが可能である為、又はハードウェアモデルが、自身の簡易なエミュレーションドライバを使用するローシリアルアクセス単独の場合と同等に制限されている為である。一実施形態では、ユーザモードLinuxカーネルは、wiphy仮想化器を含んで、上述の仮想化モードと同様のユーザモードアクセスを実施してよい。ハードウェア対応のCPU仮想化が利用可能であると、ユーザモードLinuxの利点が不明確になる場合がある。
【0045】
リモートWi-Fiアクセス
【0046】
Wi-Fiインタフェースを仮想化することの1つの利点は、オフザシェルフ無線機を扱うのに必要な処理を、実際の無線機から離れた場所で実施できることであろう。これは、「スプリットMAC」アーキテクチャと同じでなくてよい(スプリットMACアーキテクチャでは、独自のフック、又は特異な、今は使われていないプロトコル(例えば、CAPWAP(Control and Provisioning of Wireless Access Points))を使用して通信を行う)。利点は、現時点では無線機に物理的にアクセスできることに依存しているオフザシェルフワークロードを、無線機に物理的にアクセスせずに離れた場所から実施できることであろう。
【0047】
特定の実施形態では、仮想化モジュールはホストハードウェアモデルプロセス上にあってよく、一方、1つ以上の無線機のセット、及び1つ以上の無線機のセットを表すデータ構造体は、リモートマシン上にあってよい。リモートマシン上の仮想化エージェントは、1つ以上の無線機のセットの状態を構成及び発見してよく、これは、仮想化モジュールが1つ以上の無線機のセットと同じ場所にある場合には、仮想化モジュールによって実施されることになる。リモートマシン上にある仮想化エージェントと、ホストハードウェアモデルプロセス上にある仮想化モジュールは、ネットワークを介して通信してよい。
図16は、リモートWi-Fiの論理アーキテクチャの一例を示す。
図16に示した実施例では仮想マシンワークロードを使用するが、ワークロードホスト上にwiphy仮想化器がある限り、どのような任意のワークロードが使用されてもよい。リモートノード上にwiphy仮想化エージェントが導入されてよい。wiphy仮想化エージェントは、無線機と同じ場所にある場合に、無線機の状態を構成及び発見する為にwiphy仮想化器が果たす役割を実施することが可能である。wiphy仮想化器とwiphy仮想化エージェントは、任意の利用可能な方法でネットワークを介して通信してよく、図ではその回線を直接の破線で示しているが、これは、リンクの曲がりくねった物理的な引き回しを図示することが概念の理解の妨げになるのを避ける為である。両ノード上のスイッチングインフラストラクチャは、受信側のリモートノードの無線インタフェースから出るトラフィックがオーバレイネットワークを通ってホストノード上のスイッチングインフラストラクチャにプッシュされるように、且つその逆も行われるように構成されてよい。
【0048】
このモデルの利点の1つは、ユーザ空間からLinuxのWi-Fi用カーネル(例えば、hostapd)への通信が厳密にタイミングクリティカルではないが、処理インテンシブであってよく、特にメモリインテンシブであってよいことであろう。リモートノードは、単にパケット送信を行えばよいところまで単純化されてよく、キャプティブポータル、高度なセキュリティキー生成(楕円曲線等)、タイミング解析の軽減(現代のセキュリティプロトコルが特に脆弱になりがちである為に非常に高コストになる場合が多い)、及びフレキシビリティのいずれに関しても、その為の十分なヘッドルームを確保しようなどと考えなくてよい。ヘビーデューティなキャプティブポータル作業、認証、及び他のネットワークサービスのようなタスクはホストが実施すればよく、ホストとリモートノードとの間のネットワークがwiphy及びcfg80211のトラフィックを搬送するのに十分である限り、無線ノードのCPUが音を上げるのではと気にする必要はない。それらのサービスの為の多くのオフザシェルフの、更にはカスタム(例えば、レガシ)のソフトウェアパッケージは、hostapdインスタンスに対してローカルである必要があり、その為、これらのソフトウェアは無線の状態に密接にアクセスすることが可能である。例えば、マルチBSSのWi-Fi Passpoint/Hotspot 2.0の適正なインスタンスは、登録中の新しい機器に対してキャプティブポータル(又は少なくともそれの為のルーティング)を動作させることが必要となる場合があり、これには、1つのBSSの全体にわたってクライアント認証を無効にする固有のEAP-TLSアクセスが使用される。ステーションが一旦関連付けられると、このステーションは別のBSSに渡される必要があり、それは、どのようなEAPベースの認証であれ、モバイルオペレータがリクエストするものであれば使用する。これは、複雑なリソースインテンシブアプリケーションであるが、それでも従来技術に従えば、無線ノードのCPU上で直接実行する必要がある。しかし、本開示の発明では、ワークロードは今や、より多くのリソースを有するホストに転送されてよい。
【0049】
リソース割り当て
【0050】
特定の実施形態では、仮想化モジュールはコンピュートクラウド上にあってよく、一方、仮想化エージェント及び1つ以上の無線機のセットは無線クラウド上にあってよい。
図17は、Wi-Fiクラウドの例を示す。wiphy仮想化によって、ワークロードが物理的な無線インフラストラクチャから離れて抽象化及びリロケートされることが可能になることから、
図17に示された新しいWi-Fiクラウドが可能になる。Wi-Fi無線クラウド/フォグ(フォグはエッジクラウドコンピューティングに使用されることが多い)は物理ノードを含んでよく、物理ノードは無線機を有し、既に開示のように、wiphy仮想化エージェントによりネットワーク内に接続するCPUを有する。コンピュートクラウドは、任意のワークロードの為のコンピュートノードを含んでよく、コンテナ化されているか仮想化されているかに基づいて1つ以上のwiphy仮想化器を保有してよい。もちろん、コンピュートクラウドリソースは、Wi-Fi無線クラウドからリソースを借りてよく、利用可能なコンピュートリソース及び直接接続された無線リソースをノードが有することを妨げるものはない。
【0051】
システムがこのように理解されると、時間及び距離によるリソーススケジューリングの必要性が関心事になる。(領域/ゾーン内の)既存のデータセンタリソーススケジューラは、標準的なワークロードに関して最適化を行うことが可能であるが、多くの場合は、ファブリックネットワーク相互接続又は他の多かれ少なかれ対称的なネットワーク(全てのノードが他のノードと全く同じようにネットワーク経由でサービスにアクセスできること)を想定している。リソーススケジューラがサービス同士の配置を互いに近づくように最適化しようとする場合でも、それらは、多くの場合、Wi-Fi無線クラウドの物理性を密接に認識できる場合と異なり、最小化可能な均一ネットワークペナルティの概念に基づいている。特に、クライアントは現実世界の中を移動するが、多くの場合、クライアントとの通信に利用できるWi-Fi無線機は、クライアントと既に通信している無線機だけであってよい。従って、リソーススケジューラは、分散アプリケーション内のサービスが何であれ、クライアントからの遅延が最小化されるような、ホストに対する位置を見つけることを担当してよい。
【0052】
図18は、ローカル及び非ローカルのコンピュートリソースが同じ場所にある場合のリソーススケジューラの一例を示す。幾つかの実施形態では、非ローカルリソースの幾つかが、クラウドプロバイダ内で、又はWi-Fiベンダによってホストされてよい。分散アプリケーションの各部分は、最適性、可用性、コスト、及びセキュリティに基づいてどこで実行されてもよい。
【0053】
図19は、リソーススケジューラによって複数の所望の場所に分散配置された分散Wi-Fi Passpointアプリケーションの一例を示す。
図19に示した実施例では、サービスをホストしなければならないテナント無線機が、オーバレイネットワークを介して、無線機に対してオンプレミス配置されている(例えば、ネットワークにアタッチされたコンピュートアプライアンス又はローカルサーバファームにある)Hotspot 2.0認証器(hostapd)及び制御エンジンに接続されてよい。そしてHotspot 2.0認証器は、(例えば、携帯電話会社の全顧客に対して使用されているwebauthサービスを使用して、携帯電話会社によってホストされている)リモートクラウドからのキャプティブポータルを接続してよい。Hotspot 2.0は、(コンテンツプロバイダ等の)企業が所有するデータセンタにおいてホストされているトンネルエンドポイントに接続しているトンネルを有してよい。クライアントは、アプリケーションの各部分のそれぞれ異なる場所を認識していなくてよいが、リソーススケジューラは、オーバレイを認識していてよく、ネットワーク接続及びリロケーションを実施することが可能である。
【0054】
特定の実施形態では、ユーザが1つの構内から別の構内に移動することがある。リソーススケジューラは、そのユーザを追跡することが必要な場合がある。リソーススケジューラは、その新しい構内でそのユーザに接続した時点で、そのユーザ用の同じオーバレイインフラストラクチャを再作成してよい。この種の「フォールトイン」挙動は、(無条件に無線ハンドシェイクが暗示される場合に、又は(例えば、WAN高速化又はCDNによる)最適化の目的で)1つのSSIDが、オンプレミス要件を有するサービスをアドバタイズする場合にかなり重要でありうる。
【0055】
図20は、リソーススケジューラが規定する関係性の一例を示す図である。リソーススケジューラは、1つのマシン上、又は複製された又はマイクロサービスベースのデータセンタ上で動作する1つの集中ソフトウェアであってよく、又は地理的に分散してよく、又は自身又は自身のより小さいインスタンスを使用してブートストラップを行うことによって他の任意のコンピュートリソースとして管理され、それがデプロイされている同じクラウドで動作してよい。
【0056】
リソーススケジューラは、存在する物理的場所、及びその物理的場所にあるノードと関係を有してよく、それによって、リソーススケジューラは、クラウドの物理性のマップを構築できる。幾つかの実施形態では、リソーススケジューラは、ノードに対して、それらの相互接続性も同様に、又は少なくともそれぞれの、少数の共通ポイントへの接続性を測定することをリクエストしてよく、これは、リソーススケジューラが作成しているマッピングを現実世界の中によりよく固定する為である。リソーススケジューラは又、アプリケーション、及びアプリケーションを構成するソフトウェアアセットが存在する場所を規定するデプロイメントプロファイルを与えられてよい。使用前デプロイメント要件は、Wi-Fiの固有の前提条件であってよく、これは、特定のSSIDを有するサービスにクライアントが接続する為には、そのネットワーク名(SSID)が事前にアドバタイズされていなければならないからである。使用前デプロイメント要件は、アプリケーションが提供されるべき地理的地域に、少なくともクライアントがアプリケーションを発見するのに十分なリソースをリソーススケジューラがデプロイできることを要求してよく、サービスが使用されてからは後で需要が発生した時点で更なるリソースがフォールトインされてよい。
【0057】
リソーススケジューラは、ノード及びオーバレイネットワークコントローラと通信してよく、これらは、デプロイメントプロファイルごとに必要なトンネル及びオーバレイネットワークを作成することが可能であり、これには、アプリケーションを有効化する為に必要な任意のキー管理及び暗号化アクセラレータ又はフロントエンドウェブ復号ソフトウェア(例えば、HTTPsからHTTP)が含まれる。更に、リソーススケジューラは、無線機及びCPU仮想化器にアクセスして、各ノードに、分散アプリケーションのうちの当該ノードに属する部分をスピンアップする方法が少なくとも1つ存在するようにしてよい。幾つかの実施形態では、それらのノードは、Kubernetesを使用してノードの発見及び編成を実施するように動作してよい。
【0058】
リソーススケジューラは、クラウド及び無線機の両方において、アプリケーションごとに必要とされるデプロイメント前ニーズを取得し、アプリケーションごとに必要とされるデプロイメント前ニーズに備える最小限のインフラストラクチャを作成してよい。幾つかの実施形態では、これは必要最小限であり、サービスを利用するクライアントが増えてきたら、リソーススケジューラはこれを検出して、使用されているリソースの量を動的に拡大又は縮小させることが可能である。但し、リソーススケジューラは、それ自身では編成の動作を必要としない。幾つかの実施形態では、リモートクラウドは、Amazon Web Services、Google Cloud Platform、又はMicrosoft Azureのクラウド上にあってよく、必要に応じてそれらにスケールアップ又はスケールダウンを指示すること(又はそれらがサービスのそれぞれの部分を、同じオーバレイネットワークにプラグインされた、独立した、常にピン留めされたピースとして自動的に提供することを可能にすること)だけが機能することになる。しかしながら、アプリケーションのうちの、無線機に接触する部分、又は低遅延のオンプレミス要件を有する部分については、リソーススケジューラは、オンサイトのアプリケーションフットプリントの複製、デプロイ、及びスケールアップ又はスケールダウンを行う機能にアクセス可能であってよい。
【0059】
幾つかの実施形態では、リソーススケジューラは、無線機を含む、アプリケーション内の所与のノードとそれ以外のノードとの間の、ノードの利用可能なCPU空間、及びオーバレイネットワークのリンク品質について検討してよい。hostapdワークロードについては、リソーススケジューラは、ワークロードから無線機へのリンクの遅延及び安定性のようなことについて検討してよい。暗号化ワークロードについては、リソーススケジューラは、ハードウェア暗号アクセラレータの可用性及び用途について検討してよい。機械学習ワークロードについては、リソーススケジューラは、ハードウェア上のGPU又はテンソル演算アクセラレータの可用性について検討してよい。更に、リソーススケジューラは、エッジネットワークデプロイメントトポロジを考慮に入れてよく、これには、任意の所与のノードでのトラフィックの集約の度合い(例えば、イーサネットリンクの数及び帯域幅を含むネットワークトポロジ)又はノードが期待する性能依存との比較が含まれる。
【0060】
幾つかの実施形態では、リソーススケジューラは、アプリケーション部分をコンテナにデプロイするか、VMにデプロイするかを、下層の利用可能なインフラストラクチャに基づいて決定してよい。コンテナは、多くの場合、より高速であってメモリ効率がより高いことが可能であり、コンテナ間で又はOS自体と共有可能なライブラリのコアセットに依存する場合にはメモリ性能及び記憶性能が格段に優れていることが可能であり、これに対し、VMは、多くの場合、それらのリソースをあらかじめ複製することが必要であり、事後重複排除機能のみが可能である。しかしながら、様々なOSバージョンを有する異種デプロイメント(同じ無線環境に様々なOSバージョンが散在している異種デプロイメントを含む)では、リソーススケジューラは、リソーススケジューラがどこに負荷を配置しうるか、並びに、最適割り当てを使用すること、又はソフトウェアを少なくとも部分的にVMラッピングすることによって性能を引き出すことの為の十分なリソースをリソーススケジューラが現在(又は将来)有するかどうか、を考慮に入れることが必要でありうる。ネットワークバックホール及び電源可用性の均一性も存在することが可能であり、これはリソーススケジューラがスケジュールすることが可能である。
【0061】
幾つかの実施形態では、ワークロードを移動させる必要がある場合に、リソーススケジューラは、ワークロードを横断的に流すことを選択してよい。これは、デプロイメントプロファイル、並びにランディングノード候補が変更をサポートしうるかどうかに基づいてよい。
【0062】
リソーススケジューラはスタンドアロンであってよく、又は、上述のように、AWSやKubernetesのような編成プラットフォームに組み込まれてよい。
【0063】
例示的実施態様-ハードウェア概要
【0064】
一実施形態によれば、本明細書に記載の技法は、少なくとも1つのコンピューティング装置で実施される。本技法は、全体又は一部が、パケットデータネットワーク等のネットワークで結合されている少なくとも1つのサーバコンピュータ及び/又は他のコンピュータ装置の組み合わせを使用して実施されてよい。コンピューティング装置は、本技法を実施するようにハードワイヤリングされていてよく、又は、本技法を実施するように永続的にプログラムされたデジタル電子デバイス、例えば、少なくとも1つの特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)を含んでよく、或いは、ファームウェア、メモリ、他の記憶装置、又はこれらの組み合わせにあるプログラム命令に従って本技法を実施するようにプログラムされた少なくとも1つの汎用ハードウェアプロセッサを含んでよい。そのようなコンピューティング装置は又、本明細書に記載の技法を達成する為に、カスタムハードワイヤードロジック、ASIC、又はFPGAをカスタムプログラミングと組み合わせてもよい。コンピューティング装置は、本明細書に記載の技法、データセンタ内の1つ以上の仮想コンピューティングマシン又はインスタンス、及び/又は、サーバコンピュータ及び/又はパーソナルコンピュータのネットワークを実施する為に、サーバコンピュータ、ワークステーション、パーソナルコンピュータ、ポータブルコンピュータシステム、手持ち式デバイス、モバイルコンピューティングデバイス、ウェアラブルデバイス、体に装着される又は埋め込み可能なデバイス、スマートフォン、スマートアプライアンス、インターネットワーキングデバイス、自律型又は半自律型デバイス(例えば、ロボット又は無人地上車両又は無人航空機)、他の任意の、ハードワイヤードロジック及び/又はプログラムロジックを組み込んだ電子デバイスであってよい。
【0065】
図21は、一実施形態を実施できるコンピュータシステムの一例を示すブロック図である。
図21の実施例では、本開示の技術をハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせの形で実施する為のコンピュータシステム2100及び命令を概略的に表しており、例えば、箱と円を使用して、本開示が関係する当業者らがコンピュータアーキテクチャ及びコンピュータシステムの実施態様について意見を交換する際に一般的に使用するのと同程度の詳しさで表している。
【0066】
コンピュータシステム2100は入出力(I/O)サブシステム2102を含み、これは、電子信号経路を介してコンピュータシステム2100のコンポーネント間で情報及び/又は命令を伝達する為のバス及び/又は他の通信機構を含んでよい。I/Oサブシステム2102は、I/Oコントローラ、メモリコントローラ、及び少なくとも1つのI/Oポートを含んでよい。電子信号経路は、図面では概略的に表されており、例えば、線、一方向矢印、又は二方向矢印で表されている。
【0067】
情報及び命令を処理する為に、少なくとも1つのハードウェアプロセッサ2104がI/Oサブシステム2102と結合されている。ハードウェアプロセッサ2104は、例えば、汎用のマイクロプロセッサ又はマイクロコントローラ、及び/又は専用マイクロプロセッサを含んでよく、例えば、埋め込みシステム又はグラフィックス処理装置(GPU)又はデジタル信号プロセッサ又はARMプロセッサを含んでよい。プロセッサ2104は、集積論理演算装置(ALU)を含んでよく、又は独立したALUと結合されてよい。
【0068】
コンピュータシステム2100は、1つ以上のメモリユニット2106(例えば、主メモリ)を含み、これは、プロセッサ2104によって実行されるデータ及び命令を電子的にデジタル記憶する為に、I/Oサブシステム2102と結合されている。メモリ2106は揮発性メモリを含んでよく、例えば、様々な形態のランダムアクセスメモリ(RAM)又は他の動的記憶デバイスを含んでよい。メモリ2106は又、プロセッサ2104によって実行される命令の実行中に一時変数又は他の中間情報を記憶する為に使用されてよい。そのような命令は、プロセッサ2104からアクセス可能な非一時的コンピュータ可読記憶媒体に記憶されている場合には、コンピュータシステム2100を、命令において指定される動作を実施するようにカスタマイズされた専用マシンにすることが可能である。
【0069】
コンピュータシステム2100は更に、不揮発性メモリを含み、例えば、プロセッサ2104向けの情報及び命令を記憶する為にI/Oサブシステム2102に結合されている読み出し専用メモリ(ROM)2108又は他の静的記憶デバイスを含む。ROM2108は、様々な形態のプログラマブルROM(PROM)を含んでよく、例えば、消去可能PROM(EPROM)又は電気的消去可能PROM(EEPROM)を含んでよい。永続的記憶装置2110は、様々な形態の不揮発性RAM(NVRAM)を含んでよく、例えば、フラッシュメモリ(即ち、固体記憶装置)、磁気ディスク、又は光ディスク(CD-ROM又はDVD-ROM等)を含んでよく、情報及び命令を記憶する為にI/Oサブシステム2102と結合されてよい。記憶装置2110は、プロセッサ2104によって実行されると、本明細書に記載の技法を実行するコンピュータ実施方法が実施されるようにする命令及びデータを記憶する為に使用されてよい非一時的コンピュータ可読媒体の一例である。
【0070】
メモリ2106、ROM2108、又は記憶装置2110に記憶される命令は、モジュール、メソッド、オブジェクト、関数、ルーチン、又は呼び出しとして編成された1つ以上の命令セットを含んでよい。命令は、1つ以上のコンピュータプログラム、オペレーティングシステムサービス、又はアプリケーションプログラム(モバイルアプリケーションを含む)として編成されてよい。命令は、オペレーティングシステム及び/又はシステムソフトウェアと、マルチメディア、プログラミング、又は他の機能をサポートする1つ以上のライブラリと、TCP/IP、HTTP、又は他の通信プロトコルを実装するデータプロトコル命令又はスタックと、HTML、XML、JPEG、MPEG、又はPNGを使用してコーティングされたファイルを解析又は表現するファイルフォーマット処理命令と、グラフィカルユーザインタフェース(GUI)、コマンドラインインタフェース、又はテキストユーザインタフェースに関するコマンドを表現又は解釈するユーザインタフェース命令と、アプリケーションソフトウェア(例えば、オフィススイート、インターネットアクセスアプリケーション、設計製造アプリケーション、グラフィックスアプリケーション、オーディオアプリケーション、ソフトウェアエンジニアリングアプリケーション、教育アプリケーション、ゲーム、又は種々雑多なアプリケーション)と、を含んでよい。命令は、ウェブサーバ、ウェブアプリケーションサーバ、又はウェブクライアントを実施してよい。命令は、プレゼンテーション層、アプリケーション層、又はデータストレージ層(例えば、構造化クエリ言語(SQL)を使用する又はしないリレーショナルデータベースシステム、オブジェクトストア、グラフデータベース、フラットファイルシステム、又は他のデータ記憶)として編成されてよい。
【0071】
コンピュータシステム2100は、I/Oサブシステム2102を介して、少なくとも1つの出力装置2112と結合されてよい。一実施形態では、出力装置2112はデジタルコンピュータディスプレイである。様々な実施形態において使用可能なディスプレイの例として、タッチスクリーンディスプレイ又は発光ダイオード(LED)ディスプレイ又は液晶ディスプレイ(LCD)又は電子ペーパディスプレイがある。コンピュータシステム2100は、ディスプレイ装置に対する代替又は追加として、他のタイプの出力装置2112も含んでよい。他の出力装置2112の例として、プリンタ、チケットプリンタ、プロッタ、プロジェクタ、サウンドカード又はビデオカード、スピーカ、ブザー又は圧電デバイス又は他の可聴装置、ランプ又はLED又はLCDのインジケータ、触覚デバイス、アクチュエータ、又はサーボがある。
【0072】
信号、データ、コマンド選択、又はジェスチャをプロセッサ2104に伝達する為に、少なくとも1つの入力装置2114がI/Oサブシステム2102と結合されている。入力装置2114の例として、タッチスクリーン、マイクロホン、スチル及びビデオのデジタルカメラ、英数字キー及び他のキー、キーパッド、キーボード、グラフィックスタブレット、イメージスキャナ、ジョイスティック、クロック、スイッチ、ボタン、ダイヤル、スライダ、及び/又は各種のセンサ(例えば、力センサ、動きセンサ、熱センサ、加速度計、ジャイロスコープ、及び慣性測定装置(IMU)センサ)、及び/又は各種の送受信器(例えば、無線(例えば、セルラ又はWi-Fi、無線周波数(RF)、又は赤外線(IR))送受信器及び全地球測位システム(GPS)送受信器)がある。
【0073】
別のタイプの入力装置として制御装置2116があり、これは、入力機能に対する代替又は追加として、カーソル制御機能又は他の自動制御機能(例えば、ディスプレイ画面上でのグラフィカルインタフェースのナビゲーション)を実施してよい。制御装置2116は、方向情報及びコマンド選択をプロセッサ2104に伝達すること、及びディスプレイ2112上のカーソルの動きを制御することの為のタッチパッド、マウス、トラックボール、又はカーソル方向キーであってよい。入力装置は、少なくとも、装置が平面上の位置を指定することを可能にする、2つの軸(第1の軸(例えば、x軸)及び第2の軸(例えば、y軸))での自由度2を有することが可能である。別のタイプの入力装置は有線制御装置、無線制御装置、又は光制御装置であり、例えば、ジョイスティック、ワンド、コンソール、ステアリングホイール、ペダル、ギヤシフト機構、又は他のタイプの制御装置である。入力装置2114は、異なる複数の入力装置(例えば、ビデオカメラ及び深さセンサ)の組み合わせを含んでよい。
【0074】
別の実施形態では、コンピュータシステム2100は、インターネットオブシングス(IoT)装置を含んでよく、その場合は、出力装置2112、入力装置2114、及び制御装置2116のうちの1つ以上が省略される。或いは、そのような実施形態では、入力装置2114として、1つ以上のカメラ、動き検出器、温度計、マイクロホン、地震検知器、他のセンサ又は検出器、測定装置又は符号化器があってよく、出力装置2112として、専用ディスプレイ(例えば、LED又はLCDのシングルラインディスプレイ)、1つ以上のインジケータ、ディスプレイパネル、メータ、弁、ソレノイド、アクチュエータ、又はサーボがあってよい。
【0075】
コンピュータシステム2100がモバイルコンピューティング装置の場合には、入力装置2114として、全地球測位システム(GPS)モジュールと結合されたGPS受信器があってよく、GPSモジュールは、複数のGPS衛星と三角形を成して、ジオロケーション(地理位置)データ(例えば、コンピュータシステム2100の地球物理学的位置の緯度経度値)を算出によって生成することが可能である。出力装置2112は、コンピュータシステム2100の位置を特定する位置報告パケット、通知、パルス信号又はハートビート信号、又は他の反復性データ送信を、単独で、又は他のアプリケーション固有データとの組み合わせで、ホスト2124又はサーバ2130に向けて生成するハードウェア、ソフトウェア、ファームウェア、及びインタフェースを含んでよい。
【0076】
コンピュータシステム2100は、カスタマイズされたハードワイヤードロジック、少なくとも1つのASIC又はFPGA、ファームウェア及び/又はプログラム命令又はロジックを使用して、本明細書に記載の技法を実施することが可能であり、プログラム命令又はロジックは、コンピュータシステムとの組み合わせにおいてロードされて使用又は実行されると、コンピュータシステムを専用マシンとして動作するようにする(即ち、そうなるようにコンピュータシステムをプログラムする)。一実施形態によれば、本明細書に記載の技法は、主メモリ2106に格納されている少なくとも1つの命令の少なくとも1つのシーケンスをプロセッサ2104が実行することに対する応答として、コンピュータシステム2100によって実施される。そのような命令は、記憶装置2110等の別の記憶媒体から主メモリ2106に読み込まれることが可能である。主メモリ2106に格納された命令のシーケンスが実行されると、プロセッサ2104が本明細書に記載のプロセスステップを実施する。代替実施形態では、ソフトウェア命令の代わりに、又はソフトウェア命令との組み合わせで、ハードワイヤード回路が使用されてよい。
【0077】
「記憶媒体」という用語は、本明細書では、特定の様式でマシンを動作させるデータ及び/又は命令を保存する任意の非一時的媒体を意味する。そのような記憶媒体は、不揮発性媒体及び/又は揮発性媒体を含んでよい。不揮発性媒体としては、例えば、光ディスク又は磁気ディスク(記憶装置2110等)がある。揮発性媒体としては、動的メモリ(メモリ2106等)がある。記憶媒体の一般的な形態として、例えば、ハードディスク、ソリッドステートドライブ、フラッシュドライブ、磁気データ記憶媒体、任意の光学式又は物理的データ記憶媒体、メモリチップ等がある。
【0078】
記憶媒体は伝送媒体とは異なるが、伝送媒体と組み合わせて使用されてよい。伝送媒体は、記憶媒体間で情報を転送することに関与する。伝送媒体としては、例えば、同軸ケーブル、銅線、及び光ファイバがあり、これには、I/Oサブシステム2102のバスを含むワイヤが含まれる。伝送媒体は又、音波又は光波の形態であってもよく、例えば、電波及び赤外線のデータ通信の間に生成される音波又は光波の形態であってよい。
【0079】
少なくとも1つの命令の少なくとも1つのシーケンスが実行の為にプロセッサ2104に搬送されることには様々な形態の媒体が関与してよい。例えば、命令はまず、リモートコンピュータの磁気ディスク又はソリッドステートドライブで保持されてよい。リモートコンピュータは、命令をその動的メモリにロードし、その命令をモデム使用の通信リンク(例えば、光ファイバ又は同軸ケーブル又は電話回線)で送信してよい。コンピュータシステム2100に対してローカルなモデム又はルータが、通信リンク上のデータを受信し、そのデータを、コンピュータシステム2100が読み取れるフォーマットに変換することが可能である。例えば、無線周波数アンテナ又は赤外線検出器等の受信器が、無線信号又は光信号で搬送されたデータを受信することが可能であり、しかるべき回路がそのデータをI/Oサブシステム2102に渡す(例えば、データをバスに載せる)ことが可能である。I/Oサブシステム2102はデータをメモリ2106に搬送し、プロセッサ2104はメモリ2106から命令を取り出して実行する。メモリ2106が受け取った命令は、任意選択で、プロセッサ2104による実行の前又は後に記憶装置2110に保存されてよい。
【0080】
コンピュータシステム2100は又、バス2102と結合された通信インタフェース2118を含む。通信インタフェース2118はネットワークリンク2120との二方向データ通信結合を提供しており、ネットワークリンク2120は、少なくとも1つの通信ネットワーク(例えば、ネットワーク2122、又はインターネット上のパブリッククラウド又はプライベートクラウド)に直接又は間接的に接続されている。例えば、通信インタフェース2118は、イーサネットネットワーキングインタフェース、統合サービスデジタル網(ISDN)カード、ケーブルモデム、衛星モデム、又は対応するタイプの通信回線(例えば、イーサネットケーブル又は任意の種類の金属ケーブル又は光ファイバ回線又は電話回線)とのデータ通信接続を提供するモデムであってよい。ネットワーク2122は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、構内ネットワーク、インターネットワーク、又はこれらの任意の組み合わせを大まかに表している。通信インタフェース2118は、適合するLANとのデータ通信接続を提供するLANカード、又はセルラ無線電話無線ネットワーキング規格に準拠してセルラデータを送信又は受信するように配線されたセルラ無線電話インタフェース、又は衛星無線ネットワーキング規格に準拠してデジタルデータを送信又は受信するように配線された衛星無線インタフェースを含んでよい。任意のそのような実施態様では、通信インタフェース2118は、様々なタイプの情報を表すデジタルデータストリームを搬送する信号経路上で電気信号、電磁信号、又は光信号を送信及び受信する。
【0081】
ネットワークリンク2120は、典型的には、(例えば、衛星技術、セルラ技術、Wi-Fi技術、又はBluetooth技術を使用して)直接又は少なくとも1つのネットワークを介して他のデータ装置との電気的、電磁的、又は光学的なデータ通信を提供する。例えば、ネットワークリンク2120は、ネットワーク2122を介してホストコンピュータ2124との接続を提供することが可能である。
【0082】
更に、ネットワークリンク2120は、ネットワーク2122を通る接続、又はインターネットサービスプロバイダ(ISP)2126が運用するインターネットワーキング装置及び/又はコンピュータを介しての他のコンピュータ装置との接続を提供することが可能である。ISP2126は、インターネット2128として示されているワールドワイドパケットデータ通信ネットワークを通るデータ通信サービスを提供する。サーバコンピュータ2130がインターネット2128と結合されてよい。サーバ2130は、任意のコンピュータ、データセンタ、仮想マシン、又はハイパーバイザがある又はない仮想コンピューティングインスタンス、又はDOCKERやKUBERNETESのようなコンテナ化プログラムシステムを実行するコンピュータを大まかに表している。サーバ2130は電子デジタルサービスを表してよく、これは、2つ以上のコンピュータ又はインスタンスを使用して実施され、ウェブサービスリクエスト、HTTPペイロードにパラメータを有するユニフォームリソースロケータ(URL)文字列、API呼び出し、アプリケーションサービス呼び出し、又は他のサービス呼び出しを送信することによってアクセスされて使用される。コンピュータシステム2100及びサーバ2130は分散コンピューティングシステムの要素を形成してよく、分散コンピューティングシステムは、他のコンピュータ、処理クラスタ、サーバファーム、又は他のコンピュータ編成を含み、これらは協力してタスクを実施したりアプリケーション又はサービスを実行したりする。サーバ2130は、モジュール、メソッド、オブジェクト、関数、ルーチン、又は呼び出しとして編成された1つ以上の命令セットを含んでよい。命令は、1つ以上のコンピュータプログラム、オペレーティングシステムサービス、又はアプリケーションプログラム(モバイルアプリケーションを含む)として編成されてよい。命令は、オペレーティングシステム及び/又はシステムソフトウェアと、マルチメディア、プログラミング、又は他の機能をサポートする1つ以上のライブラリと、TCP/IP、HTTP、又は他の通信プロトコルを実装するデータプロトコル命令又はスタックと、HTML、XML、JPEG、MPEG、又はPNGを使用してコーティングされたファイルを解析又は表現するファイルフォーマット処理命令と、グラフィカルユーザインタフェース(GUI)、コマンドラインインタフェース、又はテキストユーザインタフェースに関するコマンドを表現又は解釈するユーザインタフェース命令と、アプリケーションソフトウェア(例えば、オフィススイート、インターネットアクセスアプリケーション、設計製造アプリケーション、グラフィックスアプリケーション、オーディオアプリケーション、ソフトウェアエンジニアリングアプリケーション、教育アプリケーション、ゲーム、又は種々雑多なアプリケーション)と、を含んでよい。サーバ2130は、プレゼンテーション層、アプリケーション層、及びデータストレージ層(例えば、構造化クエリ言語(SQL)を使用する又は使用しないリレーショナルデータベースシステム、オブジェクトストア、グラフデータベース、フラットファイルシステム、又は他のデータストレージ)をホストするウェブアプリケーションサーバを含んでよい。
【0083】
コンピュータシステム2100は、ネットワーク、ネットワークリンク2120、及び通信インタフェース2118を通してメッセージを送信し、データ及び命令(プログラムコードを含む)を受信することが可能である。インターネットの例では、サーバ2130が、インターネット2128、ISP2126、ローカルネットワーク2122、及び通信インタフェース2118を通して、アプリケーションプログラム用のリクエストされたコードを送信することが可能である。受信されたコードは、受信時にプロセッサ2104によって実行されてよく、且つ/又は、後で実行する為に記憶装置2110又は他の不揮発性記憶装置に保存されてよい。
【0084】
本セクションに記載のように命令を実行することにより、実行中であってプログラムコードとその現在のアクティビティからなる、コンピュータプログラムのインスタンスの形でプロセスを実施することが可能である。プロセスは、オペレーティングシステム(OS)に応じて、複数の命令を並行して実行する複数の実行スレッドで構成されてよい。この文脈では、コンピュータプログラムは命令のパッシブな集合体であり、一方、プロセスはそれらの命令の実際の実行であってよい。幾つかのプロセスが同じプログラムに関連付けられてよい。例えば、同じプログラムの幾つかのインスタンスを開くことは、多くの場合、2つ以上のプロセスが実行されていることを意味する。複数のプロセスがプロセッサ2104を共用することを可能にする為にマルチタスキングが実施されてよい。各プロセッサ2104又はプロセッサの各コアが一度に実行するタスクは1つだけであるが、コンピュータシステム2100は、各プロセッサが、各タスクが終了するのを待つことを必要とせずに実行中のタスクを切り替えることを可能にする為に、マルチタスキングを実施するようにプログラムされてよい。一実施形態では、切り替えが実施されるのは、タスクが入出力動作を実施したとき、タスクが切り替え可能であることをタスクが示したとき、又はハードウェア割り込みがあったときであってよい。インタラクティブなユーザアプリケーションの高速応答を可能にする為にタイムシェアリングが実施されてよく、これは、コンテキスト切り替えを高速で実施して、複数のプロセスの並行実行が同時に行われるように見せることによって行われる。一実施形態では、セキュリティ及び信頼性の為に、オペレーティングシステムが独立プロセス間の直接通信を不可能にしてよく、これにより、厳格に仲介及び管理されたプロセス間通信機能性が実現される。
【0085】
拡張及び代替
【0086】
本開示全体を通して、本開示における他の発明とは無関係の、又は他の発明から派生した複数の発明が列挙されている。当然のことながら、これらの発明の組み合わせ及びサブプロセスも本開示によって教示されており、それは、当業者であれば、本開示を読むことで、読むことのみで、それらの組み合わせ及びサブプロセスを予期することが可能な為である。更に、複数形を使用するか単数形を使用するかは言及されるアイテムの数に制限を加えるものではなく、そうではないと明言されない限り、又は論理的に矛盾しない限り、単数形のアイテムの言及は複数でもあると解釈されるべきであり、複数形のアイテムの言及は単数でもあると解釈されるべきである。
【0087】
更に、Linux特有の用語(例えば、wiphy、cfg80211等)の使用は、適用をLinuxオペレーティングシステムに限定するものとして解釈されるべきではなく、幾つかの好ましい実施形態への言及である。同様に、Wi-Fiの言及は、適用をWi-Fi無線機のみに限定するものではなく、他の技術(例えば、5G、CBRS(市民ブロードバンド無線サービス(Citizens Broadband Radio Service))、ミリ波、及びソフトウェア無線技術)も本開示の教示から実施可能であることが容易に理解されよう。
【0088】
本開示全体を通して、複数の代替実施形態が列挙されている。各実施形態は、トレードオフ又は効果の点で異なっており、従って、それぞれのトレードオフ及び効果のセットに関しては最良の実施形態である。使用すべき選択肢の選択は当業者である実装担当者が望むトレードオフ又は効果に依存し、そのような選択は、当該技術分野においては明白且つ単純明快であり、更なる発明又は発見を必要としない。「could」、「can」、「may」等の条件付き言い回しは、本発明の実施形態の範囲内での(製造の、構成の、又は可用性に基づく)オプションを意味するものであり、且つ、意味するように解釈されるべきものであり、更なる発明が必要であると述べるものではない。例えば、「本発明は所与の入力に対して反応しうる」と述べることは、本発明の一実施形態の一アセンブリの一構成がその入力に対して確かに実際に反応することを意味する。これは、言語の節約の為にのみ行われるものであり、本発明の教示その他に関連する不確実性又は不完全性を示唆するものではない。本開示は、当該技術分野の未来の状態に関して推測するものではなく、実施に移された現在の発明について述べるものである。本発明の明示的な実施形態として実施例が提示されており、これは教示を説明する為でもある。
【0089】
上述の明細書では、実施態様ごとに異なりうる多くの具体的詳細を参照しながら本発明の実施形態を説明してきた。従って、本明細書及び図面については、制限的ではなく例示的であると考えられたい。本発明の範囲、並びに本発明の範囲であると出願人が意図したものについての唯一且つ排他的な指標は、本出願によって発行される特許請求項一式の、そのような特許請求項が発行される特定の形態での(後日補正があればそれも含む)文字通りであり且つ等価な範囲である。
【国際調査報告】