(57)【要約】  可用性が高いクラウド・サービスを提供するシステムおよび方法を開示する。サーバーは、リモート・デバイスから、指定サービスにアクセスする要求を受ける。指定サービスは、複数の仮想マシンと関連付けられ、複数の仮想マシンの各々は、指定サービスと関連付けられた共有状態を格納する。サーバーは、要求に応答して、複数の仮想マシンの内第１仮想マシンへの接続と、複数の仮想マシンの他のものの識別子とを、リモート・デバイスに供給する。サーバーは、指定サービスをリモート・デバイスに供給し続けつつ、リモート・デバイスと第１仮想マシンとのデーター接続を終了することを決定する。サーバーは、リモート・デバイスを第１仮想マシンから切断することの決定に応答して、複数の仮想マシンの内第２仮想マシンへの接続をリモート・デバイスに供給する。【選択図】図４
2021504838.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
処理回路と、
命令を格納するメモリーと、
を備え、前記命令が前記処理回路によって実行されると、前記処理回路に、
リモート・デバイスから、指定サービスにアクセスする要求を受ける動作であって、前記指定サービスが、複数の仮想マシンと関連付けられ、前記複数の仮想マシンの各々が、前記指定サービスと関連付けられた共有状態を格納する、動作と、
前記要求に応答して、前記複数の仮想マシンの内第１仮想マシンへの接続と、前記複数の仮想マシンの他のものの識別子とを前記リモート・デバイスに供給する動作であって、  前記識別子が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）連携と併せた格納のために供給される、動作と、
前記指定サービスを前記リモート・デバイスに、第２仮想マシンを通じて供給し続けつつ、前記リモート・デバイスと前記第１仮想マシンとの間のデーター接続を終了することを決定する動作と、
前記データー接続を終了することを決定した動作に応答して、前記複数の仮想マシンの内前記第２仮想マシンへの接続を、前記リモート・デバイスに供給する動作と、
を含む動作を実行させる、システム。
【請求項２】
請求項１記載のシステムにおいて、前記データー接続を終了することを決定する動作が、前記第１仮想マシンを含む負荷均衡化に応答する、システム。
【請求項３】
請求項１記載のシステムにおいて、前記データー接続を終了することを決定する動作が、前記第１仮想マシンの障害に応答する、システム。
【請求項４】
請求項１記載のシステムにおいて、前記複数の仮想マシンの他のものの前記識別子が、前記リモート・デバイスに、前記複数の仮想マシンの他のものからハートビートを受信させる、システム。
【請求項５】
請求項１記載のシステムにおいて、前記第１仮想マシンへの接続が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）接続を構成する、システム。
【請求項６】
請求項１記載のシステムにおいて、前記第２仮想マシンへの接続を供給する動作が、
前記リモート・デバイスに前記データー接続を終了し、前記第２仮想マシンに接続することを命令するアドレス構成変更チャンク（ＡＳＣＯＮＦ）を供給する動作を含む、システム。
【請求項７】
請求項１記載のシステムにおいて、前記指定サービスにアクセスする前記要求が、前記第１仮想マシンのアドレスを含む、システム。
【請求項８】
請求項１記載のシステムにおいて、前記リモート・デバイスがクライアント・デバイスを含む、システム。
【請求項９】
命令を格納するマシン読み取り可能媒体であって、１つ以上のマシンの処理回路によって前記命令が実行されると、
リモート・デバイスから、指定サービスにアクセスする要求を受ける動作であって、前記指定サービスが、複数の仮想マシンと関連付けられ、前記複数の仮想マシンの各々が、前記指定サービスと関連付けられた共有状態を格納する、動作と、
前記要求に応答して、前記複数の仮想マシンの内第１仮想マシンへの接続と、前記複数の仮想マシンの他のものの識別子とを前記リモート・デバイスに供給する動作であって、  前記識別子が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）連携と併せた格納のために供給される、動作と、
前記指定サービスを前記リモート・デバイスに、第２仮想マシンを通じて供給し続けつつ、前記リモート・デバイスと前記第１仮想マシンとの間のデーター接続を終了することを決定する動作と、
前記第１仮想マシンからの前記リモート・デバイスの前記データー接続を終了することを決定した動作に応答して、前記複数の仮想マシンの内前記第２仮想マシンへの接続を、前記リモート・デバイスに供給する動作と、
を含む動作を前記処理回路に実行させる、マシン読み取り可能媒体。
【請求項１０】
請求項９記載のマシン読み取り可能媒体において、前記データー接続を終了することを決定する動作が、前記第１仮想マシンを含む負荷均衡化に応答する、マシン読み取り可能媒体。
【請求項１１】
請求項９記載のマシン読み取り可能媒体において、前記データー接続を終了することを決定する動作が、前記第１仮想マシンの障害に応答する、マシン読み取り可能媒体。
【請求項１２】
請求項９記載のマシン読み取り可能媒体において、前記複数の仮想マシンの他のものの前記識別子が、前記リモート・デバイスに、前記複数の仮想マシンの他のものからハートビートを受信させる、マシン読み取り可能媒体。
【請求項１３】
請求項９記載のマシン読み取り可能媒体において、前記第１仮想マシンへの接続が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）接続を構成する、マシン読み取り可能媒体。
【請求項１４】
請求項９記載のマシン読み取り可能媒体において、前記第２仮想マシンへの接続を供給する動作が、
前記リモート・デバイスに前記データー接続を終了し、前記第２仮想マシンに接続することを命令するアドレス構成変更チャンク（ＡＳＣＯＮＦ）を供給する動作を含む、マシン読み取り可能媒体。
【請求項１５】
請求項９記載のマシン読み取り可能媒体において、前記指定サービスにアクセスする前記要求が、前記第１仮想マシンのアドレスを含む、マシン読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  クラウド・サービスは、場合によっては、１つ以上のサーバーまたはデーター・レポジトリーに情報を格納することによって、提供されることもある。しかしながら、サーバーまたはデーター・レポジトリーがオフラインである場合や、高い負荷を有する場合には、問題が発生する可能性がある。可用性が高いクラウド・サービスを提供する技術が望まれる。
【発明の概要】
【０００２】
[0011]  本開示は、一般に、特殊目的マシンのコンピューター化されたバリアント(variant)およびこのようなバリアントに対する改良を含む、マシン・コンプリヘンション(machine comprehension)を提供するように構成されたマシンに関し、更にマシン・コンプリヘンションのための技術を提供する他の特殊目的マシンと比較して、このような特殊目的マシンを改良する技術に関する。特に、本開示は、可用性が高いクラウド・サービスを提供するためのシステムおよび方法に取り組む。
【０００３】
[0012]  本明細書において説明する技術の態様によれば、システムは処理回路と、命令を格納するメモリーとを含む。命令が処理回路によって実行されると、処理回路に、以下を含む動作、リモート・デバイスから、指定サービスにアクセスする要求を受ける動作であって、指定サービスが複数の仮想マシンと関連付けられ、複数の仮想マシンの各々が、指定サービスと関連付けられた共有状態を格納する、動作と、この要求に応答して、複数の仮想マシンの内第１仮想マシンへの接続と、複数の仮想マシンの内他のものの識別子とを、リモート・デバイスに供給する動作と、指定サービスをリモート・デバイスに供給し続けながら、第１仮想マシンからリモート・デバイスを切断することを決定する動作と、第１仮想マシンからリモート・デバイスを切断する決定に応答して、複数の仮想マシンの内第２仮想マシンへの接続を、リモート・デバイスに供給する動作とを実行させる。
【図面の簡単な説明】
【０００４】
[0002]  以上の技術のいくつかの実施形態を、一例としてそして限定ではなく、添付図面の図に示す。
【図１】図１は、ある実施形態によるセルラ・システムの一例を示す。
【図２Ａ】図２Ａは、ある実施形態にしたがって、クライアント・デバイスが第１インターネット・プロトコル（ＩＰ）アドレスに対する初期接続を開く、クラウド・サービス・プロビジョニング・システムの一例を示す。
【図２Ｂ】図２Ｂは、ある実施形態にしたがって、クラウド・サーバーがクライアント・デバイスに、追加のＩＰアドレスによって接続を確立することを命令する、クラウド・サービス・プロビジョニング・システムの一例を示す。
【図２Ｃ】図２Ｃは、ある実施形態にしたがって、クラウド・サーバーが負荷均衡化を実行する、クラウド・サービス・プロビジョニング・システムの一例を示す。
【図２Ｄ】図２Ｄは、ある実施形態にしたがって、クライアント・デバイスによってピア・アドレス・プライマリーに格納されているＩＰアドレスと関連付けられた仮想マシンが障害を発生したときの、クラウド・サービス・プロビジョニング・システムの一例を示す。
【図３】図３は、ある実施形態によるデーター・アーキテクチャの一例を示す。
【図４】図４は、ある実施形態にしたがって、高可用性クラウド・サービスを提供する方法例のフロー・チャートである。
【図５】図５は、ある実施形態にしたがって、マシン読み取り可能媒体から命令を読み取り、本明細書において論ずる方法のいずれでも実行することができるマシンのコンポーネントを示すブロック図である。
【発明を実施するための形態】
【０００５】
全体像
[0013]  本開示は、とりわけ、個々に種々の機能を提供する方法、システム、およびコンピューター・プログラム製品について記載する。以下の記載では、本開示の異なる実施形態の種々の態様について完全な理解が得られるようにするために、説明の目的に限って、多数の具体的な詳細を明記する。しかしながら、これら具体的な詳細のいずれかがなくても、本開示を実施できることは、当業者には明白であろう。
【０００６】
[0014]  以上で明記したように、場合によっては、１つ以上のサーバーまたはデーター・レポジトリーに情報を格納することによって、クラウド・サービスが提供されることもある。しかしながら、サーバーまたはデーター・レポジトリーがオフラインである場合や、高い負荷を有する場合、問題が発生する可能性がある。可用性が高いクラウド・サービスを提供する技術が望まれる。本明細書において説明する技術の態様は、クラウドにおけるネットワーク機能のために、高いスケーラビリティ、高い可用性、および負荷均衡化機能(feature)を提供する技術を対象とする。
【０００７】
[0015]  本明細書において説明する技術の態様は、ハイパースケール・クラウド環境におけるストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）に基づくネットワーク機能のための、高可用性、高スケーラビリティ、および負荷均衡化技法の設計および実施に関する。ＳＣＴＰは、エッジ機器がコア・ネットワーク・コンポーネントと通信するネットワーク・インフラストラクチャにおいて使用される。場合によっては、コア・ネットワーク機能をクラウドに移動させることもできる。高可用性、高スケーラビリティ、および負荷均衡化機能を提供するために、クラウドにおいてソフトウェア・メカニズムがあることが望まれる場合もある。本明細書において説明する技術の態様は、ＳＣＴＰを利用して、これらの機能を達成するために１組のソフトウェアを構築する。場合によっては、クラウドまたはデーター・センターにおける２つのコンポーネント間における通信に、例えば、ネットワーク機能を仮想化するために、ＳＣＴＰが使用されることもある。例の中には、ワイヤレス・アクセス・ポイントのようなエッジ・デバイスがクラウドと通信する場合もある。
【０００８】
[0016]  ネットワーク機能仮想化（ＮＦＶ：Network Function Virtualization）は、高価で柔軟性がない専用ハードウェア・ボックスを、クラウドにおける大規模コモディティ・サーバー上で実行するソフトウェアと交換する技法に関する。ＮＦＶは、何らかのセルラ（または他のネットワーク）インフラストラクチャにおいてデプロイすることもできる。
【０００９】
[0017]  ＮＦＶの１つの課題は、従前からのハードウェアと同等またはそれ以上の性能を提供することである。性能の計量の１つに可用性があり、可用性が高いと、システム停止時間の短縮およびサービス継続性向上が確実に得られる。例えば、あるセルラ・ネットワーク通信事業者は、ファイブ・ナイン（９９．９９９％）の可用性を期待する。セルラ・コア・ネットワークの制御プレーンにおいて、短い停止時間が大多数のデバイスに１時間以上の間接続を失わせるおそれがある。
【００１０】
[0018]  場合によっては、このような高い可用性を達成するために、特殊製造ハードウェアおよび冗長性機器が使用される。しかしながら、これは費用がかかる解決策であり、クラウド環境には適用できない。クラウド環境では、クラウド・サービスは通常スリー・ナイン（９９．９％）の可用性を有するものとして分類される。クラウド・サービスは、例えば、ハードアウェア障害、内部ネットワーク停止、または上位の障害（例えば、停電）によって、障害を発生するまたは混乱するおそれがある。
【００１１】
[0019]  図１は、ある実施形態によるセルラ・システム１００の一例を示す。図示のように、セルラ・システム１００は、セル・サイト１１０と、移動交換局１２０とを含む。セル・サイト１１０は、携帯電話基地局（ｅＮｏｄｅＢ：evolved NodeB）１１５を含む。移動交換局１２０は、モビリティ管理エンティティ（ＭＭＥ：Mobility Management Entity）１２５を含む。ｅＮｏｄｅＢ１１５およびＭＭＥ１２５は、イーサネット１３０を通じて、そして同期型光ネットワーキング（ＳＯＮＥＴ：Synchronous Optical Networking）１４０を通じて接続される。ｅＮｏｄｅＢ１１５は、イーサネット１３０のためのインターネット・プロトコル（ＩＰ）アドレスと、ＳＯＮＥＴ１４０のためのＩＰアドレスとを有する。同様に、ＭＭＥ１２５も、イーサネット１３０のためのＩＰアドレスと、ＳＯＮＥＴ１４０のためのＩＰアドレスとを有する。
【００１２】
[0020]  場合によっては、ネットワーク機器がＣＳＴＰを使用してコア・ネットワーク・コンポーネントと通信することもある。ＳＣＴＰは、マルチホーミング・メカニズム(multi-homing mechanism)を使用して、機器またはネットワークの障害を克服するために冗長接続経路を実装する。しかしながら、クラウド環境では、マルチホーミングは、仮想マシン（ＶＭ）全体が故障した状況に対処することができず、クラウド・コンピューティング環境における障害モデルとなる可能性が非常に高い。例えば、図１において、ＳＣＴＰはイーサネット１３０の障害に対処することができる。しかしながら、ＭＭＥ１２５が障害を発生した場合、ＭＭＥ１２５が保有するネットワーク・インターフェース・カード（ＮＩＣ）の量には関係なく、セル・サイト１１０と移動交換局１２０との間の通信に障害が発生する。
【００１３】
[0021]  本明細書において説明する技術の態様は、多くのＮＩＣを有する１つのボックスに見えるように、クラスター間に共有メモリーをデプロイする。この目的のために、逆側のエンド・ポイントにおいて、ＳＣＴＰのマルチホーミング機能を使用して、接続のためにバックアップを提供することができる。ある態様では、クラスター内部において負荷均衡化を実施する。これは、ＳＣＴＰ組み込み機能を利用して、負荷均衡化が行われつつある通信について他方側に通知する。ある態様では、通信ソケットを修正し、処理を終えた後にトランスポート・レイヤにおいてデーターを削除するために、アプリケーション・レベルのインターフェースを提供する。これによって、パケットを承認した後（ＡＣＫ）にＶＭが障害を発生したときに問題となる結果(outcome)を回避する。（即ち、クライアント・デバイスは追加のパケットをＶＭに送るが、ＶＭは、その障害のために、この追加のパケットを処理することができない）。
【００１４】
[0022]  本明細書において説明する技術の実施態様によれば、ＳＣＴＰ接続を設定するために、クライアント・デバイス（例えば、セルラ・ネットワークにおけるユーザ機器（ＵＥ））がサーバーに接続する。セルラ・ネットワークでは、クライアント・デバイスはｅＮｏｄｅＢを通じてサーバーに接続する。図２Ａ〜図２Ｄは、本明細書において説明する技術をセルラ・ネットワークにおいて実施する場合における実施形態を示す。しかしながら、本明細書において説明する技術は、セルラ・ネットワークに限定されるのではなく、他のネットワークにおいても実施できることは注記してしかるべきである。
【００１５】
[0023]  図２Ａは、ある実施形態によるクラウド・サービス・プロビジョニング・システム２００Ａの一例を示す。ここでは、クライアント・デバイス２１０が第１ＩＰアドレスに対する初期接続（ＩＮＩＴ）２５０Ａを開く。図示のように、システム２００Ａは、クライアント・デバイス２１０、クラウド・サーバー２２０、およびノード２２５を含む。クラウド・サーバー２２０は複数のＶＭ２３０．１〜５を含む。各ＶＭ２３０．ｋ（ｋは１と５との間の数値）には、ＩＰアドレス２３５．ｋが関連付けられている。ＶＭ２３０．１〜５の全ては、共有状態２４０を格納する。共有状態２４０は、共有データー、命令、およびソフトウェア・プログラムの状態を含む。尚、図２Ａ〜図２Ｄは、５つのＶＭ２３０．１〜５を有するシステムを示すが、本明細書において説明する技術は、必ずしも５つではなく、任意の数のＶＭでも実施できることは注記してしかるべきである。
【００１６】
[0024]  図２Ａに示すように、クライアント・デバイス２１０Ａは、ノード２２５を通じて、ＶＭ２３０．２への初期接続２５０Ａを開く。ノード２２５は、ｅＮｏｄｅＢ、ｇＮＢ（第５世代ＮｏｄｅＢ）、ＡＰ等の内１つ以上を含むことができる。クライアント・デバイス２１０は、ＳＣＴＰ連携(association)２１２と、アドレス・ブロック２１４とを格納する。ＳＣＴＰ連携とは、トランスミッション・コントロール・プロトコル（ＴＣＰ）接続の一般化である。しかしながら、ＴＣＰ接続は、２つのネットワーク・インターフェース間における１対１接続であり、一方はサーバー上のネットワーク・インターフェース、そして他方はクライアント上のネットワーク・インターフェースである。対照的に、ＳＣＴＰ連携は、（ｉ）クラウド・サーバー上の複数のネットワーク・インターフェースをクライアント・デバイス２１０上の複数のインターフェースと関連付けることができ、（ｉｉ）ＳＣＴＰ連携２１２が複数の論理ストリームを搬送できる範囲で、多数対多数である。ＳＣＴＰ連携２１２のためのアドレス・ブロック２１４は、ＶＭ２３０．２への初期接続２５０Ａのためのピア・アドレス・プライマリー、ＩＰ２３５．２を格納する。ピア・アドレス・プライマリーは、クライアント・デバイス２１０がＳＣＴＰ連携２１２において通信するときに用いる主ＩＰアドレスである。クライアント・デバイス２１０は、ＶＭ２３０．２と通信して共有状態２４０にアクセスする。加えて、クラウド・サーバー２２０は１つのサーバーであると説明しているが、クラウド・サーバーは１つ以上の仮想マシン、１つ以上の物理マシン、および／または複数のサーバーを含むサーバー・ファームとして実装されてもよい。
【００１７】
[0025]  ある実施態様では、クライアント・デバイス２１０は最初に１つよりも多い初期ＩＰアドレスに接続してもよい（例えば、極限信頼性(extreme reliability)の場合）。クライアント・デバイス２１０は、１つよりも多い初期ＩＰアドレスをドメイン・ネーム・サーバー（ＤＮＳ）クエリーから得ることができる。あるいは、１つよりも多いＩＰアドレスが静的に設定されてもよい(configure)。次いで、サーバー２２０は更に多くのアドレスを追加し、クライアント・デバイス２１０を全く欠落させることなく、既存のＩＰアドレスを動的に変更することもできる。
【００１８】
[0026]  図２Ｂは、ある実施形態によるクラウド・サービス・プロビジョニング・システム２００Ｂの一例を示す。ここでは、クラウド・サーバー２２０がクライアント・デバイス２１０に、追加のＩＰアドレス２３５．１、２３５．３、２３５．４、および２３５．５による接続を確立するように命令する。図２Ｂに示す構成は、図２Ａの構成の後に発生するとしてもよい。クラウド・サーバー２２０は、共有状態２４０によって接続されたクラスターにおける全てのＶＭ２３０．１〜５のＩＰアドレス２３５．１〜５全てを供給する。クライアント２１０の視点からは、クラウド・サーバー２２０は複数の利用可能なＩＰアドレスを有する１つのマシンのように見える。場合によっては、クラウド・サーバー２２０からの命令を処理するために、クライアント・デバイスに対する修正は不要である。クライアント・サーバー２２０からの命令を処理するとき、クライアント・デバイス２１０は、アドレス・ブロック２１４に、ピア・アドレス・プライマリー−ＩＰアドレス２３５．２、ならびにバックアップ・アドレス−ＩＰアドレス２３５．１、２３５．３、２３５．４、および２３５．５を格納する。図２Ｂに示すように、クライアント・デバイス２１０は、ＶＭ２３０．２とのデーター転送２５０Ｂを行っている最中であり(engage in)、ＶＭ２３０．１および２３０．３からハートビート２６０Ｂを受信する（そして、ＶＭ２３０．４および２３０．５とのデーター転送も行っている最中であるが、ＶＭ２３０．４および２３０．５からのハートビートは、図を簡略化するために、示されていない）。
【００１９】
[0027]  図２Ｃは、ある実施形態によるクラウド・サービス・プロビジョニング・システム２００Ｃの一例を示す。ここでは、クラウド・サーバー２２０が負荷均衡化を実行する。図２Ｃに示す構成は、図２Ｂの構成の後に発生するとしてもよい。負荷均衡化において、クラウド・サーバー２２０は、ＶＭ２３０，２の代わりに、ＶＭ２３０．３を通じてクライアント・デバイス２１０にサービスを提供すると決定することもある。これは、例えば、ＶＭ２３０．２における高負荷またはＶＭ２３０．３における低負荷に応答して行われるのでもよい。これを行うために、ＶＭ２３０．３はアドレス構成変更チャンク（ＡＳＣＯＮＦ： Address Configuration Change Chunk）「ｓｅｔ＿ｐｒｉｍａｒｙ」コマンド２５０Ｃをクライアント・デバイス２１０に、ノード２２５を通じて送る。ＡＳＣＯＮＦ「ｓｅｔ＿ｐｒｉｍａｒｙ」コマンド２５０Ｃは、ＶＭ２３０．３のＩＰアドレス２３５．３を識別する。応答して、クライアント・デバイス２１０は、そのアドレス・ブロック２１４に、ＩＰアドレス２３５．２の代わりにＩＰアドレス２３５．３を、ピア・アドレス・プライマリーとして格納する。クライアント・デバイス２１０は、そのアドレス・ブロック２１４に、ＩＰアドレス２３５．３の代わりにＩＰアドレス２３５．２をバックアップ・アドレスとして格納する。次いで、クライアント・デバイス２１０は、ピア・アドレス・プライマリーにおけるＩＰアドレス２３５．３と関連付けられたＶＭ２３０．３と通信する。
【００２０】
[0028]  図２Ｄは、ある実施形態によるクラウド・サービス・プロビジョニング・システム２００Ｄの一例を示す。ここでは、クライアント・デバイス２１０によってピア・アドレス・プライマリーに格納されたＩＰアドレス２３５．２と関連付けられた仮想マシン２３０．２が障害を発生する。図２Ｄに示す構成は、図２Ｂの構成の後に発生するとしてもよい。
【００２１】
[0029]  クライアント・デバイス２１０が通信していたＶＭ２３０．２が障害を発生したとき、クライアント・デバイス２１０は、アドレス・ブロック２１４のバックアップ・アドレスに格納されている他のＩＰアドレスを自動的に使用する。図示のように、ＶＭ２３０．２の障害発生時に、クライアント・デバイス２１０はＶＭ２３０．１に対応するＩＰアドレス２３５．１と通信する。ＶＭ２３０．１とのデーター転送２５０Ｄ．１が開始され、一方ＶＭ２３０．２とのデーター転送２５０Ｄ．２は停止される。障害発生に応答して、クライアント・デバイス２１０のアドレス・ブロック２１４のピア・アドレス・プライマリーにおいて、ＩＰ２３０．２が削除され、ＩＰ２３０．１が追加される。アドレス・ブロック２１４のバックアップは、ＩＰ２３０．３、ＩＰ２３０．４、およびＩＰ２３０．５を列挙する。ＩＰ２３０．１は、今ではピア・アドレス・プライマリーであるので、バックアップからは削除される。
【００２２】
[0030]  ＶＭ２３０．２からＶＭ２３０．１へのＶＭ切り替えは、タイムアウトの後に起こる。タイムアウトの長さは、セルラ（または他のネットワーク）通信事業者の要件に基づいて設定することができる(configure)。場合によっては、クライアント・デバイス２１０において全く修正されずに、ＶＭ切り替えがサーバー２２０において全て行われる。元のＶＭ２３０．２の、その障害発生前における、動作によって作成された共有状態２４０にアクセスすることによって、新たなＶＭ２３０．１は元のＶＭ２３０．２から引き継ぐ。
【００２３】
[0031]  セキュア・ソケットのために、トランスポート・レイヤは他のアプリケーション・プログラミング・インターフェース（ＡＰＩ）−「ｒｅｃｖｃｏｍｍｉｔ」をアプリケーション（ＡＰＰ）レベルに露出する。したがって、ＡＰＰレベルは、ＡＰＰレベルにおける状態が変化した後の変化を受け入れ(commit)、次いで共有状態２４０におけるデーターを削除する。これを行うことによって、ＡＰＰレベル状態が修正された後に、データーが破棄されず、一貫性を確保することができる。
【００２４】
[0032]  ＳＣＴＰの上に位置するアプリケーションも、信頼性が高くてもっともである。具体的には、アプリケーションはｒｅｃｖｍｓｇ（）をコールし、次いで即座にクラッシュしてもよい。アプリケーションが直ちに再開しても、前述のメッセージは失われるかもしれない。何故なら、これは信頼性のあるＳＣＴＰキューから取り出したが、他のいずれの信頼性のあるキューにも格納されなかったからである。ｒｅｃｖｃｏｍｍｉｔＡＰＩはこの問題に対処する。信頼性のあるＳＣＴＰは、その最後のメッセージの識別子（ＩＤ）によってｒｅｃｖｃｏｍｍｉｔがコールされるまで、最後のｒｅｃｖｍｓｇをキューに保持する。ｒｅｃｖｃｏｍｍｉｔがコールされた後、メッセージは信頼性のあるＳＣＴＰキューから削除される。これによって、アプリケーションが前述のメッセージをそれ自体の信頼性のあるストレージに委譲する(commit)ことを可能にし、アプリケーションがメッセージを格納した後、ｒｅｃｖｃｏｍｍｉｔによってこのメッセージをＳＣＴＰから削除する。
【００２５】
[0033]  図３は、ある実施形態によるデーター・アーキテクチャ３００の一例を示す。図示のように、データー・アーキテクチャ３００は、複数のＶＭ３２０によって使用される（例えば、ＶＭ２３０に対応する）ＡＰＩ３１０を含む。ＡＰＩ３１０は、ｒｅｃｖｃｏｍｍｉｔ（）および標準ＳＣＴＰ  ＡＰＩを含む。標準ＳＣＴＰは、ｓｏｃｋｅｔ（）、ｂｉｎｄ（）、ｌｉｓｔｅｎ（）、ｒｅｃｖｍｓｇ（）、ｓｅｎｄｍｓｇ（）、ｃｌｏｓｅ（）、ｃｈａｎｇｅＰｒｉｍａｒｙ（）、およびａｄｄＳｅｃｏｎｄａｒｙ（）である。最初に、サーバー２２０が、通信する意図として、ｓｏｃｋｅｔ（）によってソケットを開き、パラメータをセットする。次いで、ｂｉｎｄ（）によって、サーバー２２０はこのソケットを特定のＩＰアドレス（サーバーが複数のネットワーク・インターフェース・カードを有する場合）、特定のプロトコル、および特定のポートにバインドする。次いで、サーバー２２０はｌｉｓｔｅｎ（）を使用して新たな接続を得る。一旦新たな接続が開いたなら、サーバー２２０はｒｅｃｖｍｓｇ（）およびｓｅｎｄｍｓｇ（）を使用して、他のエンド・ポイントに通信することができる。ｃｌｏｓｅ（）ＡＰＩは接続を閉じる。ｃｈａｎｇｅｐｒｉｍａｒｙ（）ＡＰＩは、プライマリーを変更するためのＡＳＣＯＮＦメッセージを送る。ａｄｄｓｅｃｏｎｄａｒｙ（）ＡＰＩは、他の副ＩＰアドレスを追加する。ＶＭ３２０は、信頼性のある共有メモリー３３０（例えば、共有状態２４０に対応する）と通信する。信頼性のある共有メモリー３３０は、信頼性のある入力キュー３４０および信頼性のある出力キュー３５０に変更を引き渡す(commit)。信頼性のある入力キュー３４０および信頼性のある出力キュー３５０は、信頼性のあるソケットＡＰＩを使用して、アプリケーション・レイヤ３６０と通信する。信頼性のある入力キュー３４０および信頼性のある出力キュー３５０は、アプリケーション３６０に対するインターフェースを提供する。ｒｅｃｖｃｏｍｍｉｔ（）は、信頼性のある入力キュー３４０とともに動作し、アプリケーション３６０が、関数をコールすることによって、メッセージの削除を要求したときに、キューからそのメッセージを削除する。
【００２６】
[0034]  ある実施態様では、ＶＭ２３０を使用して高い可用性を提供する。ある実施態様では、高速で、信頼性があり、スケーラブルで、オーバーヘッドが無視できる、共有メモリーを提供する。ある実施態様では、多重パス・オーバーヘッドはクライアント・デバイス２１０において無視できる。ある実施態様では、クライアント・デバイス２１０がエンド・ポイントを選択するので、フロント・エンドが負荷を分散する必要はない。ある実施態様では、ネーティブなＳＣＴＰの機能(feature)によって、高速フェイルオーバー(failover)が可能である。１つのパスが障害を発生した場合、エンド・ポイントはタイムアウトの後他のパスを試す。ある実施態様では、負荷均衡化を行う。ある実施態様は下位互換性がある。何故なら、クライアント・デバイス２１０は変更する必要がないとしても差し支えないからである。ある実施態様では、ソケットに信頼性があり、共有状態２４０は障害の後でも一貫性がある。
【００２７】
[0035]  ある態様では、セルラ・コア・ネットワーク制御面の可用性およびスケーラビリティを改善するためのソフトウェア・アーキテクチャおよび設計を提案する。ある態様は、ＳＣＴＰのマルチホーミング・メカニズムを使用して、高スケーラビリティ、高可用性、および負荷均衡化を達成することを目的とする。
【００２８】
[0036]  ある実施形態では、高速、高信頼性、およびスケーラブルな共有メモリーのために、リモート・ダイレクト・メモリー・アクセス（ＲＤＭＡ：Remote Direct Memory Access）を使用する。しかしながら、他のネットワーキング・プロトコルも使用してもよい。場合によっては、クライアント・デバイス２１０が、ｃｈａｎｇｅｐｒｉｍａｒｙ（）コマンドを発行することによって、エンド・ポイントを選択してもよい。これは、クライアント・デバイスの方がサーバー側の輻輳を判定する能力に優れる場合に、有用であろう。場合によっては、クライアント・デバイス２１０が変更を意識しなくてもよいように、ＳＣＴＰを下位互換性にする。言い換えると、ＴＣＰ上でクライアント・デバイスが見る一連のメッセージは、複数のＮＩＣを有する１つのサーバー上に実施態様全体が存在するかのように、同一である。場合によっては、共有メモリーにおける共有状態２４０は、（２ｎ＋１）台のサーバーにわたって複製され、分散型システムは、共有状態２４０を悪化させることなく、ｎ台のサーバーにおける障害に耐えることができる。サーバーが再起動する場合、再起動するサーバーは他のサーバーから共有状態２４０を入手し、そのＩＰアドレスを副ＩＰアドレスとして告知する。再起動するサーバーは、後に、要求に応答して、主ＩＰアドレスになってもよい。
【００２９】
[0037]  図４は、ある実施形態にしたがって、高可用性クラウド・サーバーイスを提供する方法例４００のフロー・チャートである。
【００３０】
[0038]  動作４１０において、サーバー（例えば、サーバー２２０）は、リモート・デバイス（例えば、クライアント・デバイス２１０）から、指定サービスにアクセスする要求を受ける。指定サービスは、複数の仮想マシン（例えば、仮想マシーン２３０）と関連付けられる。複数の仮想得マシンの各々は、指定サービスと関連付けられた共有状態（例えば、共有状態２４０）を格納する。
【００３１】
[0039]  動作４２０において、サーバーは、要求に応答して、複数の仮想マシンの内第１１仮想マシン（例えば、仮想マシン２３０．２）への接続（ＳＣＴＰ接続）と、複数の仮想マシンの内他のものの識別子（例えば、ＩＰアドレス）とを、リモート・デバイスに供給する。ある実施形態では、リモート・デバイスが、１つの第１仮想マシンではなく、複数の仮想マシンとの初期接続を開いてもよい。場合によって、複数の仮想マシンの内他のものの識別子が、リモート・デバイスに、複数の仮想マシンの他のものからのハートビート（例えば、ハートビート２６０Ｂ）を受信させる。ＳＣＴＰが使用される場合、指定サービスにアクセスする（動作４１０）の最初の要求は、第１仮想マシンのＩＰアドレスを含む。言い換えると、リモート・デバイスは第１仮想マシンを選択し識別することができる。しかしながら、本明細書において説明するように、リモート・デバイスは、その後、第１仮想マシンの代わりに、サービスと関連付けられた任意の他の仮想マシンと通信することもできる。
【００３２】
[0040]  動作４３０において、サーバーは、指定サービスをリモート・デバイスに提供し続けながら、リモート・デバイスを第１仮想マシンから切断することを決定する。場合によっては、サーバーは、第１仮想マシンを含む負荷均衡化に応答して、リモート・デバイスを第１仮想マシンから切断することを決定する。場合によっては、サーバーは、第１仮想マシンの障害に応答して、リモート・デバイスを第１仮想マシンから切断することを決定する。
【００３３】
[0041]  動作４４０において、サーバーは、リモート・デバイスを第１仮想マシンから切断すると決定したことに応答して、複数の仮想マシンの内第２仮想マシンへの接続をリモート・デバイスに提供する。場合によっては、サーバーは、ＡＳＣＯＮＦを供給し、第１仮想マシンから切断し第２仮想マシンに接続するようにリモート・デバイスに命令することによって、第２仮想マシンへの接続を提供する。
【００３４】
番号付きの例
[0042]  ここでは、番号付きの例(numbered examples)１、２、３等として、特定の実施形態について説明する。これら番号付きの例は、例として提示されるに過ぎず、主題の技術を限定するのではない。
【００３５】
[0043]  例１は、処理回路と、命令を格納するメモリーとを備えるシステムである。命令を処理回路によって実行すると、リモート・デバイスから、指定サービスにアクセスする要求を受ける動作であって、指定サービスが複数の仮想マシンと関連付けられ、複数の仮想マシンの各々が、指定サービスと関連付けられた共有状態を格納する、動作と、この要求に応答して、複数の仮想マシンの内第１仮想マシンへの接続と、複数の仮想マシンの内他のものの識別子とを、リモート・デバイスに供給する動作であって、識別子が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）連携と併せた格納のために供給される、動作と、第２仮想マシンを通じて、指定サービスをリモート・デバイスに供給し続けながら、リモート・デバイスと第１仮想マシンとの間のデーター接続を終了することを決定する動作と、データー接続を終了する決定に応答して、複数の仮想マシンの内第２仮想マシンへの接続を、リモート・デバイスに提供する動作とを含む動作を、処理回路に実行させる。
【００３６】
[0044]  例２において、例１の主題は、データー接続を終了することを決定する動作が、第１仮想マシンを含む負荷均衡化に応答することを含む。
[0045]  例３において、例１〜２の主題は、データー接続を終了することを決定する動作が、第１仮想マシンの障害に応答することを含む。
【００３７】
[0046]  例４において、例１〜３の主題は、複数の仮想マシンの内他のものの識別子が、リモート・デバイスに、複数の仮想マシンの内他のものからのハートビートを受信させることを含む。
【００３８】
[0047]  例５において、例１〜４の主題は、第１仮想マシンへの接続が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）接続を構成する(comprise)ことを含む。
【００３９】
[0048]  例６において、例１〜５の主題は、第２仮想マシンへの接続を供給する動作が、リモート・デバイスにデーター接続を終了し、第２仮想マシンに接続することを命令するアドレス構成変更チャンク（ＡＳＣＯＮＦ）を供給する動作を含む。
【００４０】
[0049]  例７において、例１〜６の主題は、指定サービスにアクセスする要求が、第１仮想マシンのアドレスを含むことを含む。
[0050]  例８において、例１〜７の主題は、リモート・デバイスがクライアント・デバイスを含むことを含む。
【００４１】
[0051]  例９は、命令を格納する非一時的マシン読み取り可能媒体である。命令が１つ以上のマシンの処理回路によって実行されると、リモート・デバイスから、指定サービスにアクセスする要求を受ける動作であって、指定サービスが複数の仮想マシンと関連付けられ、複数の仮想マシンの各々が、指定サービスと関連付けられた共有状態を格納する、動作と、要求に応答して、複数の仮想マシンの内第１仮想マシンへの接続と、複数の仮想マシンの内他のものの識別子とを、リモート・デバイスに供給する動作であって、識別子が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）連携と併せた格納のために供給される、動作と、指定サービスをリモート・デバイスに第２仮想マシンを通じて提供しつつ、リモート・デバイスと第１仮想マシンとの間のデーター接続を終了することを決定する動作と、リモート・デバイスの第１仮想マシンからのデーター接続を終了する決定に応答して、リモート・デバイスに、複数の仮想マシンの内第２仮想マシンへの接続を供給する動作とを含む動作を、処理回路に実行させる。
【００４２】
[0052]  例１０において、例９の主題は、データー接続を終了することを決定する動作が、第１仮想マシンを含む負荷均衡化に応答することを含む。
[0053]  例１１において、例９〜１０の主題は、データー接続を終了することを決定する動作が、第１仮想マシンの障害に応答することを含む。
【００４３】
[0054]  例１２において、例９〜１１の主題は、複数の仮想マシンの内他のものの識別子が、リモート・デバイスに、複数の仮想マシンの内他のものからハートビートを受信させることを含む。
【００４４】
[0055]  例１３において、例９〜１２の主題は、第１仮想マシンへの接続が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）接続を構成することを含む。
【００４５】
[0056]  例１４において、例９〜１３の主題は、第２仮想マシンへの接続を供給する動作が、リモート・デバイスにデーター接続を終了し、第２仮想マシンに接続することを命令するアドレス構成変更チャンク（ＡＳＣＯＮＦ）を供給する動作を含む。
【００４６】
[0057]  例１５において、例９〜１４の主題は、指定サービスにアクセスする要求が、第１仮想マシンのアドレスを含む。
[0058]  例１６は、方法であって、リモート・デバイスから、指定サービスにアクセスする要求を受けるステップであって、指定サービスが複数の仮想マシンと関連付けられ、複数の仮想マシンの各々が、指定サービスと関連付けられた共有状態を格納する、ステップと、この要求に応答して、複数の仮想マシンの内第１仮想マシンへの接続と、複数の仮想マシンの内他のものの識別子とを、リモート・デバイスに供給するステップであって、識別子が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）連携と併せた格納のために供給される、ステップと、第２仮想マシンを通じて指定サービスをリモート・デバイスに供給し続けながら、リモート・デバイスと第１仮想マシンとの間のデーター接続を終了することを決定するステップと、第１デバイスからリモート・デバイスを切断する決定に応答して、複数の仮想マシンの内第２仮想マシンへの接続を、リモート・デバイスに提供するステップとを含む。
【００４７】
[0059]  例１７において、例１６の主題は、データー接続を終了することを決定するステップが、第１仮想マシンを含む負荷均衡化に応答することを含む。
[0060]  例１８において、例１６〜１７の主題は、データー接続を終了することを決定するステップが、第１仮想マシンの障害に応答することを含む。
【００４８】
[0061]  例１９において、例１６〜１８の主題は、複数の仮想マシンの内他のものの識別子が、リモート・デバイスに、複数の仮想マシンの内他のものからのハートビートを受信させることを含む。
【００４９】
[0062]  例２０において、例１６〜１９の主題は、第１仮想マシンへの接続が、ストリーム・コントロール・トランスミッション・プロトコル（ＳＣＴＰ）接続を構成する(comprise)ことを含む。
【００５０】
[0063]  例２１は、命令を含む少なくとも１つのマシン読み取り可能媒体である。命令が処理回路によって実行されると、この処理回路に、例１〜２０のいずれか１つを実施する動作を実行させる。
【００５１】
[0064]  例２２は、例１〜２０のいずれか１つを実施する手段を含む装置である。
[0065]  例２３は、例１〜２０のいずれか１つを実施するシステムである。
[0066]  例２４は、例１〜２０のいずれか１つを実施する方法である。
【００５２】
コンポーネントおよびロジック
[0067]  本明細書では、特定の実施形態について、ロジックあるいは複数の(a number of)コンポーネントまたはメカニズムを含むものとして説明した。コンポーネントは、ソフトウェア・コンポーネント（例えば、マシン読み取り可能媒体上に具体化されたコード）またはハードウェア・コンポーネントのいずれを構成してもよい。「ハードウェア・コンポーネント」は、特定の動作を実行することができる有形ユニットであり、特定の物理的態様で構成または配置することができる。種々の実施形態例において、１つ以上のコンピューター・システム（例えば、スタンドアロン・コンピューター・システム、クライアント・コンピューター・システム、またはサーバー・コンピューター・システム）、またはコンピューター・システムの１つ以上のハードウェア・コンポーネント（例えば、プロセッサーまたはプロセッサーの一群）が、ソフトウェア（例えば、アプリケーションまたはアプリケーションの一部）によって、本明細書において説明した通りに特定の動作を実行するように動作するハードウェア・コンポーネントとして構成されてもよい。
【００５３】
[0068]  ある実施形態では、ハードウェア・コンポーネントは、機械的に、電子的に、またはこれらの任意の適した組み合わせで実装されてもよい。例えば、ハードウェア・コンポーネントは、特定の動作を実行するように永続的に構成された専用回路またはロジックを含むのでもよい。例えば、ハードウェア・コンポーネントは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）または特定用途集積回路（ＡＳＩＣ）のような、特殊目的プロセッサーであってもよい。また、ハードウェア・コンポーネントは、特定の動作を実行するようにソフトウェアによって一時的に構成されたプログラマブル・ロジックまたは回路を含んでもよい。例えば、ハードウェア・コンポーネントが、汎用プロセッサーまたは他のプログラマブル・プロセッサーによって実行されるソフトウェアを含んでもよい。一旦このようなソフトウェアによって構成されたなら、ハードウェア・コンポーネントは、構成された機能を実行するように一意に個別設計された(tailored)特定のマシン（または、マシンの特定のコンポーネント）となり、もはや汎用プロセッサーではなくなる。尚、ハードウェア・コンポーネントを機械的に、専用に、および永続的に構成された回路で実装するか、または一時的に構成された回路（例えば、ソフトウェアによって構成される）で実装するかの決定は、コストおよび時間という考慮事項によって主導されてもよいことは認められよう。
【００５４】
[0069]  したがって、「ハードウェア・コンポーネント」という語句は、有形のレコード、即ち、特定の方法で動作するように、または本明細書において説明した特定の動作を実行するように、物理的に組み立てられた、永続的に構成された（例えば、ハードワイヤ接続）、または一時的に構成された（例えば、プログラミングされた）レコードを包含すると理解されてしかるべきである。本明細書において使用する場合、「ハードウェア実装コンポーネント」とはハードウェア・コンポーネントを指す。ハードウェア・コンポーネントが一時的に構成される（例えば、プログラミングされる）実施形態について検討すると、ハードウェア・コンポーネントの各々がいずれの時点においても構成されているまたはインスタンス化されている必要はない。例えば、ハードウェア・コンポーネントが、特殊目的プロセッサーとなるようにソフトウェアによって構成された汎用プロセッサーを含む(comprise)場合、この汎用プロセッサーは、異なる時点においてそれぞれ異なる特殊目的プロセッサーとして構成することができる（例えば、異なるハードウェア・コンポーネントを構成する）。したがって、ソフトウェアは、例えば、ある時点では特定のハードウェア・コンポーネントを構成し、異なる時点では異なるハードウェア・コンポーネントを構成するように、１つまたは複数の特定のプロセッサーを構成する。
【００５５】
[0070]  ハードウェア・コンポーネントは、他のハードウェア・コンポーネントに情報を提供すること、および他のハードウェア・コンポーネントから情報を受け取ることができる。したがって、説明したハードウェア・コンポーネントは、通信可能に結合されていると見なしてもよい。複数のハードウェア・コンポーネントが同時に存在する場合、通信は、２つ以上のハードウェア・コンポーネント間における信号伝送（例えば、しかるべき回路またはバスを通じて）によって、達成することができる。複数のハードウェア・コンポーネントが異なる時点で構成またはインスタンス化される実施形態では、このようなハードウェア・コンポーネント間の通信は、例えば、複数のハードウェア・コンポーネントがアクセスすることができるメモリー構造内における情報の格納および引き出しによって、行うことができる。例えば、１つのハードウェア・コンポーネントがある動作を実行し、この動作の出力を、通信可能に結合されているメモリー・デバイスに格納するのでもよい。次いで、更に他のハードウェア・コンポーネントが、後の時点において、メモリー・デバイスにアクセスして、格納されている出力を引き出し処理することもできる。また、ハードウェア・コンポーネントが入力または出力デバイスとの通信を開始してもよく、リソース（例えば、情報の集合体）上で動作することができる。
【００５６】
[0071]  本明細書において説明した方法例の種々の動作は、少なくとも部分的に、関連する動作を実行するように一時的に構成された（例えば、ソフトウェアによって）または永続的に構成された１つ以上のプロセッサーによって実行することができる。一時的に構成されるかまたは永続的に構成されるかには関係なく、このようなプロセッサーは、本明細書において説明した１つ以上の動作または機能を実行するように動作する、プロセッサー実装コンポーネントを構成することができる。本明細書において使用する場合、「プロセッサー実装コンポーネント」(processor-implemented component)とは、１つ以上のプロセッサーを使用して実装されたハードウェア・コンポーネントを指す。
【００５７】
[0072]  同様に、本明細書において説明した方法は、少なくとも部分的にプロセッサーによって実現されてもよく、１つまたは複数の特定のプロセッサーはハードウェアの一例となる。例えば、方法の動作の内少なくとも一部は、１つ以上のプロセッサーまたはプロセッサー実装コンポーネントによって実行されてもよい。更に、１つ以上のプロセッサーが、「クラウド・コンピューティング」環境における、または「サービスとしてのソフトウェア」（ＳａａＳ）として、関連する動作の実行を支援するように動作してもよい。例えば、動作の内少なくとも一部が、コンピューターの一群（プロセッサーを含むマシンの例として）によって実行されてもよく、これらの動作は、ネットワーク（例えば、インターネット）を通じて、そして１つ以上の該当するインターフェース（例えば、ＡＰＩ）を介してアクセス可能である。
【００５８】
[0073]  動作の内特定のものの実行は、１つのマシン内に存在するだけでなく複数のマシンに跨がってデプロイされたプロセッサー間で分散されてもよい。ある実施形態例では、プロセッサーまたはプロセッサー実装コンポーネントが、１箇所の地理的位置に配置されてもよい（例えば、ホーム環境、事務所環境、またはサーバー・ファーム内）。他の実施形態例では、プロセッサーまたはプロセッサー実装コンポーネントが、複数の地理的位置にわたって分散されてもよい。
【００５９】
マシンおよびソフトウェア・アーキテクチャの例
[0074]  図１〜図４と関連付けて説明したコンポーネント、方法、アプリケーション等は、ある実施形態では、マシンおよび関連するソフトウェア・アーキテクチャのコンテキストで実現される。以下の章では、開示した実施形態と共に使用するのに適した、代表的なソフトウェア・アーキテクチャ（１つまたは複数）およびマシン（例えば、ハードウェア）アーキテクチャ（１つまたは複数）について説明する。
【００６０】
[0075]  ソフトウェア・アーキテクチャは、特定の目的に合わせて個別設計されたデバイスおよびマシンを作成するために、ハードウェア・アーキテクチャと併せて使用される。例えば、特定のハードウェア・アーキテクチャを特定のソフトウェア・アーキテクチャと結合することによって、移動体電話機、タブレット・デバイス等のような、移動体デバイスが作成される。僅かに異なるハードウェアおよびソフトウェア・アーキテクチャが、「もののインターネット」において使用するための小型デバイスを生成することもあり、一方、更に他の組み合わせによって、クラウド・コンピューティング・アーキテクチャ内で使用するためのサーバー・コンピューターが生成されることもある。このようなソフトウェアおよびハードウェア・アーキテクチャの組み合わせ全てをここでは紹介しない。何故なら、本明細書に含まれる開示とは異なるコンテキストにおいて、開示した主題をどのように実現するかについては、当業者であれば容易に理解できるからである。
【００６１】
[0076]  図５は、ある実施形態例によるマシン５００のコンポーネントを示すブロック図であり、マシン５００は、マシン読み取り可能媒体（例えば、マシン読み取り可能記憶媒体）から命令を読み出し、本明細書において論じた方法の内任意の１つ以上を実行することができる。具体的には、図５は、コンピューター・システムという形態例におけるマシン５００の模式図を示し、本明細書において論じた方法の内任意の１つ以上をマシン５００に実行させる命令５１６（例えば、ソフトウェア、プログラム、アプリケーション、アプレット、アプリ、または他の実行可能コード）を実行することができる。命令５１６は、一般的なプログラミングされていないマシンを、説明および図示した機能を説明したように実行するようにプログラミングされた特定のマシンに変換する。代替実施形態では、マシン５００は、単体デバイスとして動作してもよく、または他のマシンに結合されてもよい（ネットワーク接続される）。ネットワーク型展開では、マシン５００は、サーバー−クライアント・ネットワーク環境におけるサーバー・マシンまたはクライアント・マシンとして動作することができ、またはピア・ツー・ピア（または分散型）ネットワーク環境におけるピア・マシンとして動作することもできる。マシン５００は、サーバー・コンピューター、クライアント・コンピューター、ＰＣ、タブレット・コンピューター、ラップトップ・コンピューター、ネットブック、パーソナル・ディジタル・アシスタント（ＰＤＡ）、娯楽メディア・システム、セルラ電話機、スマート・フォン、移動体デバイス、ウェアラブル・デバイス（例えば、スマート・ウォッチ）、スマート家庭用デバイス（例えば、スマート・アプライアンス）、他のスマート・デバイス、ウェブ・アプライアンス、ネットワーク・ルーター、ネットワーク・スイッチ、ネットワーク・ブリッジ、あるいはマシン５００によって行われるアクションを指定する命令５１６を、順次またはそれ以外で実行することができる任意のマシンを含むことができるが、これらに限定されるのではない。更に、１つのマシン５００だけが示されているが、「マシン」という用語は、本明細書において論じた方法の内任意の１つ以上を実行するために命令５１６を個々にまたは纏めて(jointly)実行するマシン５００の集合体を含むというように捕らえるものとする。
【００６２】
[0077]  マシン５００は、プロセッサー５１０、メモリー／ストレージ５３０、およびＩ／Ｏコンポーネント５５０を含むことができ、これらは、バス５０２を通じてというようにして、互いに通信するように構成することができる。実施形態例では、プロセッサー５１０（例えば、中央演算装置（ＣＰＵ）、縮小命令セット・コンピューティング（ＲＩＳＣ）プロセッサー、複合命令セット・コンピューティング（ＣＩＳＣ）プロセッサー、グラフィクス処理ユニット（ＧＰＵ）、ディジタル信号プロセッサー（ＤＳＰ）、ＡＳＩＣ、高周波集積回路（ＲＦＩＣ）、他のプロセッサー、あるいはこれらの任意の適した組み合わせ）は、例えば、命令５１６を実行することができるプロセッサー５１２とプロセッサー５１４とを含んでもよい。「プロセッサー」という用語は、命令を同時に実行することができる２つ以上の独立したプロセッサー（「コア」と呼ぶこともある）を含むことができるマルチコア・プロセッサーを含むことを意図している。図５は複数のプロセッサー５１０を示すが、マシン５００は、１つのコアを有する１つのプロセッサー、複数のコアを有する１つのプロセッサー（例えば、マルチコア・プロセッサー）、１つのコアを有する複数のプロセッサー、複数のコアを有する複数のプロセッサー、またはこれらの任意の組み合わせを含んでもよい。
【００６３】
[0078]  メモリー／ストレージ５３０は、主メモリーのようなメモリー５３２、または他のメモリー・ストレージ、および記憶ユニット５３６を含むことができ、これらは双方共、バス５０２を通じてというようにして、プロセッサー５１０にアクセス可能である。記憶ユニット５３６およびメモリー５３２は、本明細書において説明した方法または機能の内任意の１つ以上を具体化する命令５１６を格納する。また、命令５１６は、メモリー５３２内、記憶ユニット５３６内、プロセッサー５１０内の少なくとも１つ（例えば、プロセッサーのキャッシュ・メモリー内）、またはこれらの任意の適した組み合わせに、マシン５００によるそれらの実行の間、完全にまたは部分的に存在することができる。したがって、メモリー５３２、記憶ユニット５３６、およびプロセッサー５１０のメモリーは、マシン読み取り可能媒体の例である。
【００６４】
[0079]  本明細書において使用する場合、「マシン読み取り可能媒体」(machine-readable medium)は、命令（例えば、命令５１６）およびデーターを一時的または永続的に格納することができるデバイスを意味し、ランダム・アクセス・メモリー（ＲＡＭ）、リード・オンリー・メモリー（ＲＯＭ）、バッファ・メモリー、フラッシュ・メモリー、光媒体、磁気媒体、キャッシュ・メモリー、他の種類のストレージ（例えば、消去可能プログラマブル・リード・オンリー・メモリー（ＥＥＰＲＯＭ））、および／またはこれらの任意の適した組み合わせを含むことができるが、これらに限定されるのではない。「マシン読み取り可能媒体」という用語は、命令５１６を格納することができる１つの媒体または複数の媒体（例えば、集中または分散型データーベース、あるいは付随するキャッシュおよびサーバー）を含むように解釈されてしかるべきである。また、「マシン読み取り可能媒体」という用語は、マシン（例えば、マシン５００）による実行のために命令（例えば、命令５１６）を格納することができ、命令がマシンの１つ以上のプロセッサー（例えば、プロセッサー５１０）によって実行されると、本明細書において説明した方法の内任意の１つ以上をマシンに実行させるようにする任意の媒体、または複数の媒体の組み合わせを含むように解釈するものとする。したがって、「マシン読み取り可能媒体」は、１つの記憶装置またはデバイスだけでなく、複数の記憶装置またはデバイスを含む「クラウド・ベースの」記憶システムまたは記憶ネットワークも指す。「マシン読み取り可能媒体」という用語は、信号自体を除外する。
【００６５】
[0080]  Ｉ／Ｏコンポーネント５５０は、入力を受け取り、出力を供給し、出力を生成し、情報を送信し、情報を交換し、測定値を取り込む等のための多種多様なコンポーネントを含むことができる。個々のマシンに含まれる具体的なＩ／Ｏコンポーネント５５０は、マシンの種類によって異なる。例えば、移動体電話機のような携帯用マシンはタッチ入力デバイスまたは他のこのような入力メカニズムを含む可能性が高いが、ヘッドレス・サーバー・マシン(headless server machine)はそのようなタッチ入力デバイスを恐らく含まない。尚、Ｉ／Ｏコンポーネント５５０は、図５に示されていない多くの他のコンポーネントを含んでもよいことは認められよう。Ｉ／Ｏコンポーネント５５０は、単に以下の論述を簡略化するためにのみ、機能に応じて類別されているが、この類別は全く限定的ではない。種々の実施形態例において、Ｉ／Ｏコンポーネント５５０が出力コンポーネント５５２および入力コンポーネント５５４を含むのはもっともである。出力コンポーネント５５２は、視覚コンポーネント（例えば、プラズマ・ディスプレイ・パネル（ＰＤＰ）、発光ダイオード（ＬＥＤ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）、プロジェクター、または陰極線管（ＣＲＴ）のようなディスプレイ）、音響コンポーネント（例えば、スピーカー）、触覚コンポーネント（例えば、振動モーター、抵抗メカニズム）、他の信号生成器等を含んでもよい。入力コンポーネント５５４は、英数字入力コンポーネント（例えば、キーボード、英数字入力を受け取るように構成されたタッチ・スクリーン、光学キーボード(photo-optical keyboard)、またはその他の英数字入力コンポーネント）、ポイントに基づく入力メカニズム（例えば、マウス、タッチパッド、トラックボール、ジョイスティック、動きセンサ、またはその他のポインティング器具）、接触入力コンポーネント（例えば、物理ボタン、タッチまたはタッチ・ジェスチャの位置および／または力を示す(provide)タッチ・スクリーン、または他の接触入力コンポーネント）、オーディオ入力コンポーネント（例えば、マイクロフォン）等を含んでもよい。
【００６６】
[0081]  更に他の実施形態例では、Ｉ／Ｏコンポーネント５５０は、幅広い他のコンポーネントの中でもとりわけ、生物測定コンポーネント５５６、動きコンポーネント５５８、環境コンポーネント５６０、または測位コンポーネント５６２を含んでもよい。例えば、生物測定コンポーネント５５６は、表現（例えば、手振り、顔の表現、声の表現、身振り、または眼球追跡）を検出するコンポーネント、生体信号（例えば、血圧、心拍数、体温、発汗、または脳波）を測定するコンポーネント、運動関連計量（例えば、移動距離、移動速度、運動に費やした時間）を測定するコンポーネント、ヒトを識別する（例えば、音声識別、網膜識別、顔識別、指紋識別、または脳波に基づく識別）コンポーネント等を含んでもよい。動きコンポーネント５５８は、加速度センサ・コンポーネント（例えば、加速度計）、重力センサ・コンポーネント、回転センサ・コンポーネント（例えば、ジャイロスコープ）等を含んでもよい。環境コンポーネント５６０は、例えば、照明センサ・コンポーネント（例えば、光度計）、温度センサ・コンポーネント（例えば、周囲温度を検出する１つ以上の温度計）、湿度センサ・コンポーネント、圧力センサ・コンポーネント（例えば、気圧計）、音響センサ・コンポーネント（例えば、背景ノイズを検出する１つ以上のマイクロフォン）、近接センサ・コンポーネント（例えば、近隣の物体を検出する赤外線センサ）、ガス・センサ（例えば、安全性のために有毒ガスの濃度を検出する、または大気における汚染物を測定するガス検出センサ）、あるいは周囲の物理環境に対応する指示、測定値、または信号を供給することができる他のコンポーネントを含んでもよい。測位コンポーネント５６２は、位置センサ・コンポーネント（例えば、汎地球測位システム（ＧＰＳ）受信コンポーネント）、高度センサ・コンポーネント（例えば、高度計、または高度を導き出すことができる気圧を検出する気圧計）、方位センサ・コンポーネント（例えば、磁力計）等を含んでもよい。
【００６７】
[0082]  通信は、多種多様の技術を使用して実施することができる。Ｉ／Ｏコンポーネント５５０は、マシン５００をネットワーク５８０またはデバイス５７０に、それぞれ、カプリング５８２およびカプリング５７２を通じて結合するように動作可能な通信コンポーネント５６４を含んでもよい。例えば、通信コンポーネント５６４は、ネットワーク・インターフェース・コンポーネント、またはネットワーク５８０とインターフェースする他の適したデバイスを含んでもよい。更に他の例では、通信コンポーネント５６４は、有線通信コンポーネント、ワイヤレス通信コンポーネント、セルラ通信コンポーネント、近場通信（ＮＦＣ）コンポーネント、Ｂｌｕｅｔｏｏｔｈ（登録商標）コンポーネント（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）低エネルギー）、Ｗｉ−Ｆｉ（登録商標）コンポーネント、および他の様式(modalities)によって通信を行う他の通信コンポーネントを含んでもよい。デバイス５７０は、他のマシン、または多種多様な周辺デバイスの内任意のもの（例えば、ＵＳＢによって結合される周辺デバイス）であってもよい。
【００６８】
[0083]  更に、通信コンポーネント５６４は、識別子を検出することもでき、または識別子を検出するように動作可能なコンポーネントを含んでもよい。例えば、通信コンポーネント５６４は、高周波識別（ＲＦＩＤ）タグ・リーダー・コンポーネント、ＮＦＣスマート・タグ検出コンポーネント、光学リーダー・コンポーネント、または音響検出コンポーネント（例えば、タグ付けされたオーディオ信号を識別するマイクロフォン）を含んでもよい。加えて、通信コンポーネント５６４を通じて、インターネット・プロトコル（ＩＰ）ジオロケーションによる位置、Ｗｉ−Ｆｉ（登録商標）信号三角測量による位置、特定の位置を示すことができるＮＦＣビーコン信号を検出することによる位置等のような、種々の情報を導き出すこともできる。
【００６９】
[0084]  種々の実施形態例において、ネットワーク５８０の１つ以上の部分は、アド・ホック・ネットワーク、イントラネット、エクストラネット、仮想プライベート・ネットワーク（ＶＰＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイヤレスＬＡＮ（ＷＬＡＮ）、ＷＡＮ、ワイヤレスＷＡＮ（ＷＷＡＮ）、都市エリア・ネットワーク（ＭＡＮ）、インターネット、インターネットの一部、公衆電話交換網（ＰＳＴＮ）の一部、基本電話サービス（ＰＯＴＳ：plain old telephone service）ネットワーク、セルラ電話ネットワーク、ワイヤレス・ネットワーク、Ｗｉ−Ｆｉ（登録商標）ネットワーク、他の種類のネットワーク、または２つ以上のこのようなネットワークの組み合わせであってもよい。例えば、ネットワーク５８０またはネットワーク５８０の一部は、ワイヤレスまたはセルラ・ネットワークを含んでもよく、カプリング５８２は符号分割多元接続（ＣＤＭＡ）接続、汎欧州ディジタル移動電話方式（ＧＳＭ）接続、あるいは他の型式のセルラまたはワイヤレス・カプリングでもよい。この例では、カプリング５８２は、シングル・キャリア無線伝送技術（ＩｘＲＴＴ）、進化−データー最適化（ＥＶＤＯ： Evolution- Data Optimized）技術、汎用パケット無線システム（ＧＰＲＳ）技術、ＧＳＭ進化型高速データー・レート（ＥＤＧＥ： Enhanced Data rates for GSM Evolution）技術、５Ｇを含む第三世代パートナーシップ・プロジェクト（３ＧＰＰ）、第四世代ワイヤレス（４Ｇ）ネットワーク、ユニバーサル移動体通信システム（ＵＭＴＳ：Universal Mobile Telecommunications System）、高速パケット・アクセス（ＨＳＰＡ）、マイクロ波を利用した世界標準の通信方式（ＷｉＭＡＸ：Worldwide Interoperability for Microwave Access）、ロング・ターム・エヴォリューション（ＬＴＥ）規格、種々の標準設定組織によって定められたその他のもの、他の長距離プロトコル、または他のデーター転送技術というような、種々の型式のデーター転送技術の内任意のものを実装することができる。
【００７０】
[0085]  命令５１６は、送信媒体を使用してネットワーク・インターフェース・デバイス（例えば、通信コンポーネント５６４に含まれるネットワーク・インターフェース・コンポーネント）を通じて、そして多数のよく知られている転送プロトコル（例えば、ＨＴＴＰ）の内任意の１つを利用して、ネットワーク５８０上で送信および受信することができる。同様に、命令５１６は、送信媒体を使用し、デバイス５７０へのカプリング５７２（例えば、ピア−ツー−ピア・カプリング）を通じて、送信および受信することもできる。「送信媒体」という用語は、マシン５００による実行のために命令５１６を格納、エンコード、または搬送することができる任意の無形媒体を含むように解釈するものとし、ディジタルまたはアナログ通信信号、あるいはこのようなソフトウェアの通信を容易にする他の無形媒体を含む。
【図１】
2021504838.tif 000003
【図２Ａ】
2021504838.tif 000004
【図２Ｂ】
2021504838.tif 000005
【図２Ｃ】
2021504838.tif 000006
【図２Ｄ】
2021504838.tif 000007
【図３】
2021504838.tif 000008
【図４】
2021504838.tif 000009
【図５】
2021504838.tif 000010
【国際調査報告】
2021504838.tif 000011
2021504838.tif 000012