(57)【要約】  本分散メッセージハンドリングシステムは、セッション状態を使用してメッセージハンドリングシステムにおいて複数のセッションコンテキストを表すことによって、作成される。セッション状態は、セッションを完全に記述するセッションコンテキストのフラット表現である。セッション状態を使用してシステムメッセージリクエストを処理することは、メッセージハンドリングシステムがメッセージリクエストのハンドリングを複数の状態機械に分散させることを可能にする。有利には、分散メッセージングシステムは、メッセージハンドリングシステムが需要に応じてアプリケーションインスタンスにメッセージハンドリング資源を動的に割り当てることを可能にする。そのような動的割当ては、プロバイダが、アプリケーション実行需要を満たしながら、需要を満たすために資源を効率的に割り当てることを可能にする。
2015509232.tif 000002
【特許請求の範囲】
【請求項１】
分散メッセージハンドリング装置であって、
データストレージと、
データストレージに通信可能に結合されたプロセッサとを備え、プロセッサが、
受信されたメッセージのセッションｉｄに基づいてセッション状態を検索する、
セッション状態に基づいてセッションコンテキストを作成する、および、
状態機械を使用してセッションコンテキストを実行する
ように構成された、装置。
【請求項２】
セッション状態が、セッションｉｄ、複数のセッションパラメータ、および、現在のノード識別子を含む、請求項１に記載の装置。
【請求項３】
プロセッサが、
受信されたメッセージの第２のセッションｉｄに基づいて第２のセッション状態を検索する、および、
第２のセッション状態およびフロー定義に基づいて第２のセッションｉｄのメッセージのシーケンスを再作成する
ようにさらに構成された、請求項２に記載の装置。
【請求項４】
セッションコンテキストの作成が、
受信されたメッセージから少なくとも１つの事象パラメータを抽出する
ようにプロセッサをさらに構成するステップを含み、
セッションコンテキストがさらに、少なくとも１つの事象パラメータに基づく、請求項２に記載の装置。
【請求項５】
セッションコンテキストの実行が、
実行されたセッションコンテキストに基づいて、更新されたセッション状態を作成する
ようにプロセッサをさらに構成するステップを含む、請求項１に記載の装置。
【請求項６】
プロセッサが、
更新されたセッション状態を第２の分散メッセージハンドリング装置に送信する、および、
第２の分散メッセージハンドリング装置からセカンダリセッション状態を受信する
ようにさらに構成され、
データストレージが、状態機械に関連する更新されたセッション状態と、第２の分散メッセージハンドリング装置の第２の状態機械に関連するセカンダリセッション状態とを備える、請求項５に記載の装置。
【請求項７】
分散メッセージハンドリングシステム内で受信されたメッセージを処理するための方法であって、
データストレージに通信可能に結合されたプロセッサで、受信されたメッセージのセッションｉｄに基づいてセッション状態を検索するステップと、
データストレージと連携するプロセッサによって、セッション状態に基づいてセッションコンテキストを作成するステップと、
データストレージと連携するプロセッサによって、状態機械を使用し、セッションコンテキストを実行するステップと
を含む、方法。
【請求項８】
セッションコンテキストを作成するアクションが、
データストレージと連携するプロセッサによって、状態機械によって作成された更新されたセッションコンテキストを使用し、更新されたセッション状態を翻訳するステップと、
データストレージと連携するプロセッサによって、更新されたセッション状態をセッションデータストアに送信するステップと
を含む、請求項７に記載の方法。
【請求項９】
セッション状態が、セッションｉｄ、複数のセッションパラメータ、および、現在のノード識別子を含む、請求項７に記載の方法。
【請求項１０】
セッションコンテキストを作成するアクションが、
第２のメッセージから少なくとも１つの事象パラメータを抽出するステップ
を含み、セッションコンテキストが、少なくとも１つの事象パラメータにさらに基づく、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ネットワークにおいてメッセージを処理するための方法および装置に関する。
【背景技術】
【０００２】
本項は、本発明のよりよい理解を促進する際に有用であり得る態様を紹介する。したがって、本項の記述は、この観点から読まれるべきであり、先行技術にあるものまたは先行技術にないものに関する承認として理解されるべきではない。
【０００３】
いくつかの知られているシステムで、ネットワークプロバイダは、専用の機器を使用して、提供されるアプリケーションを処理する。これらの場合、プロバイダが新しいサービスの提供を望む場合、将来の最大需要を予測し、予測された需要を満たすための正しい量の専門のおよび専用のボックスを購入する必要がある。後で、需要が増えた場合、オペレータはより多くのボックスを購入する必要があり、需要予測が高すぎた場合、ボックスは遊休状態にある。このプロセスのすべては、数分ではなく、約数カ月であり、かなり遅い。そのようなセットアップでは、ネットワークプロバイダは投資を渋る。
【０００４】
他の知られているシステムで、コンテンツプロバイダは、自らのアプリケーション専用の資源を動的に調節するために、従来のクラウドネットワークに自らのアプリケーションを置く。しかし、従来のクラウドネットワークは、ネットワークプロバイダアプリケーションの実行需要を満たすことができない。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｇ．ＤｅＣａｎｄｉａ、Ｄ．Ｈａｓｔｏｒｕｍ、Ｍ．Ｊａｍｐａｎｉ、Ｇ．Ｋａｋｕｌａｐａｔｉ、Ａ．Ｌａｋｓｈｍａｎ、Ａ．Ｐｉｌｃｈｉｎ、Ｓ．Ｓｉｖａｓｕｂｒａｍａｎｉａｎ、Ｐ．Ｖｏｓｓｈａｌｌ、およびＷ．Ｖｏｇｅｌｓ、「Ｄｙｎａｍｏ：Ａｍａｚｏｎ’ｓ  Ｈｉｇｈｌｙ  Ａｖａｉｌａｂｌｅ  ｋｅｙ−ｖａｌｕｅ  Ｓｔｏｒｅ」、Ｐｒｏｃ．２１ｓｔ  ＡＣＭ  Ｓｙｍｐ．Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ’０７）、２０５−２２０頁、２００７年１０月
【発明の概要】
【課題を解決するための手段】
【０００６】
様々な実施形態は、分散メッセージハンドリングシステムを作成する方法および装置を提供する。分散メッセージハンドリングシステムは、セッション状態を使用してメッセージハンドリングシステムにおける複数のセッションコンテキストを表すことによって、作成される。セッション状態は、セッションを完全に記述するセッションコンテキストのフラット表現である。セッション状態を使用してシステムメッセージリクエストを処理することは、メッセージハンドリングシステムがメッセージリクエストのハンドリングを複数の状態機械に分散させることを可能にする。有利には、分散メッセージングシステムは、メッセージハンドリングシステムが需要に応じてアプリケーションインスタンスにメッセージハンドリング資源を動的に割り当てることを可能にする。そのような動的割当ては、プロバイダが、アプリケーション実行需要を満たしながら、需要を満たすための資源を効率的に割り当てることを可能にする。
【０００７】
一実施形態で、分散メッセージハンドリング装置は、分散メッセージングシステムにおいてメッセージを処理するために提供される。分散メッセージハンドリング装置は、データストレージ、および、データストレージに通信可能に結合されたプロセッサを含む。プロセッサは、受信されたメッセージのセッションｉｄに基づいてセッション状態を検索し、セッション状態に基づいてセッションコンテキストを作成し、状態機械を使用してセッションコンテキストを実行するようにプログラムされる。
【０００８】
いくつかの実施形態で、セッション状態は、セッションｉｄ、複数のセッションパラメータ、および、現在のノード識別子を含む。
【０００９】
いくつかの実施形態で、セッションパラメータの少なくとも一部は、名前−値ペアとしてフォーマットされる。
【００１０】
いくつかの実施形態で、プロセッサはまた、受信されたメッセージの第２のセッションｉｄに基づいて第２のセッション状態を検索し、第２のセッション状態およびフロー定義に基づいて第２のセッションｉｄのメッセージのシーケンスを再作成するようにプログラムされる。
【００１１】
いくつかの実施形態で、セッションコンテキストの実行は、実行されたセッションコンテキストに基づいて更新されたセッション状態を作成するようにプロセッサをプログラムするステップを含む。
【００１２】
いくつかの実施形態で、データストレージは、状態機械に関連する更新されたセッション状態と、第２の分散メッセージハンドリング装置の第２の状態機械に関連するセカンダリセッション状態とを含む。
【００１３】
いくつかの実施形態で、プロセッサはまた、以下を行うようにプログラムされる：更新されたセッション状態を第２の分散メッセージハンドリング装置に送信し、第２の分散メッセージハンドリング装置からセカンダリセッション状態を受信する。
【００１４】
第２の実施形態で、分散メッセージハンドリング装置は、分散メッセージングシステムにおいてメッセージを処理するために提供される。分散メッセージハンドリング装置は、データストレージと、データストレージに結合されたプロセッサとを含む。データストレージは、セッションデータストアを含む。プロセッサは、以下を行うようにプログラムされる：複数のメッセージを受信し、それらのメッセージのうちの少なくとも第１のメッセージを分散メッセージハンドリングシステム内の第２の分散メッセージハンドリング装置に転送し、それらのメッセージのうちの少なくとも第２のメッセージを処理する。プロセスは、以下を行うようにプロセッサをプログラムするステップを含む：第２のメッセージに基づいてセッションデータストアからセッション状態を検索し、セッション状態に基づいてセッションコンテキストを作成し、状態機械を使用してセッションコンテキストを実行し、実行されたセッションコンテキストに基づいて更新されたセッション状態を作成し、データストレージにおいて更新されたセッション状態を格納する。
【００１５】
いくつかの実施形態で、セッション状態は、セッションｉｄ、複数のセッションパラメータ、および、現在のノード識別子を含む。
【００１６】
いくつかの実施形態で、セッションコンテキストの作成は、受信されたメッセージから少なくとも１つの事象パラメータを抽出するようにプロセッサをプログラムするステップと、セッションコンテキストを抽出された事象パラメータ（複数可）に基づかせるステップとを含む。
【００１７】
いくつかの実施形態で、少なくとも第１のメッセージおよび第２のメッセージは、セッションｉｄを含む。
【００１８】
いくつかの実施形態で、プロセッサはまた、以下を行うようにプログラムされる：セッションｉｄに基づいてセッションデータストアがメッセージのセッション状態情報を含むかどうかを判定して、メッセージを転送または処理するかどうかの判定に基づいてセッションデータストアがメッセージのセッション状態情報を含むかどうかの判定に基づかせる。
【００１９】
いくつかの実施形態で、プロセッサはまた、第２のメッセージを処理するという判定に応答して状態機械を起動させるようにプログラムされる。
【００２０】
いくつかの実施形態で、プロセッサはまた、以下を行うようにプログラムされる：分散メッセージハンドリングシステムにおいて第３の分散メッセージハンドリング装置から移行されたセッション状態を受信し、移行されたセッション状態に基づいてセッションデータストアを更新する。
【００２１】
いくつかの実施形態で、状態機械は、フロー定義を備える。
【００２２】
第３の実施形態で、受信されたメッセージを分散メッセージハンドリングシステム内で処理するための方法が、提供される。本方法は、受信されたメッセージのセッションｉｄに基づいてセッション状態を検索するステップと、セッション状態に基づいてセッションコンテキストを作成するステップと、状態機械を使用してセッションコンテキストを実行するステップとを含む。
【００２３】
いくつかの実施形態で、セッションコンテキストの翻訳作成は、状態機械によって作成された更新されたセッションコンテキストを使用し、更新されたセッション状態を翻訳するステップと、更新されたセッション状態をセッションデータストアに送信するステップとを含む。
【００２４】
いくつかの実施形態で、セッション状態は、セッションｉｄ、複数のセッションパラメータ、および、現在のノード識別子を含む。
【００２５】
いくつかの実施形態で、セッションコンテキストの作成は、受信されたメッセージから少なくとも１つの事象パラメータを抽出するステップと、セッションコンテキストを抽出された事象パラメータ（複数可）に基づかせるステップとを含む。
【００２６】
様々な実施形態が、以下のような添付の図面に示される。
【図面の簡単な説明】
【００２７】
【図１】分散メッセージハンドリングシステム１００内の格納されたセッションデータの階層を示す図である。
【図２】図１の分散メッセージハンドリングシステム１００の一実施形態を示す分散メッセージハンドリングシステム２００の機能ブロック図である。
【図３】図２の機能ブロックを参照する受信されたメッセージを処理するための方法の一実施形態を示す流れ図である。
【図４】基本的Ｈ．２４８呼設定に含まれるメッセージの例示的交換を示す図である。
【図５】図２の機能ブロックに示されるようなセッション状態にメッセージを翻訳するための一実施形態を示す流れ図である。
【図６】図４のメッセージ４１０−１の一実施形態を示す図である。
【図７】図４のメッセージ４１０−２の一実施形態を示す図である。
【図８】図３のステップ３２０においておよび図５のステップ５３０において検索されるセッション状態の一実施形態を示す図である。
【図９】分散メッセージハンドリングシステム１００の第１の実施形態を概略的に示すブロック図である。
【図１０】分散メッセージハンドリングシステム１００の第２の実施形態を概略的に示すブロック図である。
【図１１】図１−１０の様々なデバイスの一実施形態のブロックを概略的に示す図である。
【発明を実施するための形態】
【００２８】
理解を容易にするために、同一の参照番号は、ほぼ同じまたは同様の構造および／またはほぼ同じまたは同様の機能を有する要素を指示するために使用されてある。
【００２９】
分散メッセージハンドリングシステムは、セッション状態を使用してメッセージハンドリングシステムにおいて複数のセッションコンテキストを表すことによって、作成される。セッション状態は、セッションを完全に記述するセッションコンテキストのフラット表現である。セッション状態を使用してシステムメッセージリクエストを処理することは、メッセージハンドリングシステムがメッセージリクエストのハンドリングを複数の状態機械に分散させることを可能にする。有利には、分散メッセージングシステムは、メッセージハンドリングシステムが需要に応じてアプリケーションインスタンスにメッセージハンドリング資源を動的に割り当てることを可能にする。そのような動的割当ては、プロバイダが、商品ハードウェアを使用して需要を満たすために、たくさんの資源にわたりメッセージハンドリングサービスを効率的に割り当てることを可能にする。
【００３０】
有利には、分散メッセージハンドリングシステムは、資源の一部がアプリケーション全体の機能および可用性に影響を及ぼすことなしに機能しなくなることを可能にする頑強なフェイルオーバ機構を可能にさせることができる。加えて、分散メッセージハンドリングシステムは、ユーザの増大とともに拡大または縮小することができる、すなわち、より多くの資源へそれ自体を拡張するまたは資源を解放することができる。最後に、分散メッセージハンドリングシステムは、優先権割当て方式を介してアプリケーションのタイミング要件に合わせることができる。
【００３１】
図１は、分散メッセージハンドリングシステム１００内の格納されたセッションデータの階層を示す。分散メッセージハンドリングシステム１００は、１つまたは複数のアプリケーション１１０−１−１１０−ｎ（集合的にアプリケーション１１０）を処理することができる。アプリケーション１１０の各々は、１つまたは複数のインスタンス１２０−１−１２０−ｎ（集合的にインスタンス１２０）を有し得る。インスタンス１２０の各々は、１つまたは複数のセッション１３０−１（１）−１３０−１（ｎ）（集合的にセッション１３０）からのメッセージを処理することができる。メッセージを処理するために、セッションは、特定のユーザおよびセッションに関連するセッションコンテキストデータ１４０を必要とする。
【００３２】
図２は、図１の分散メッセージハンドリングシステム１００の一実施形態を示す分散メッセージハンドリングシステム２００の機能ブロック図を示す。セッションルータ２１０は、アンカーポイント（図示せず）から受信されたメッセージ２５０をセッションマネージャ２２０にルーティングする。セッションマネージャ２２０は、メッセージ２５０内の識別子を使用して、セッションデータストア２４０からセッション状態を検索する。セッションマネージャは、次いで、セッション状態に基づいてセッションコンテキストを作成し、状態機械２３０を選択してメッセージリクエストを処理する。状態機械２３０は、メッセージリクエストを処理し、メッセージ応答２５０−６を実行することができる。
【００３３】
図１−３を参照すると、セッションルータ２１０が、受信されたメッセージ２５０−１からセッションｉｄを抽出し、セッションｉｄに関連するセッションマネージャにメッセージ２５０−２をルーティングする（たとえば、方法３００のステップ３１０）。具体的には、各メッセージ２５０−１は、メッセージをセッションコンテキストにマップするセッション識別子を含む。セッションコンテキストは、稼働中のセッション（たとえば、図１の１３０−１）を記述する永続的データである。本明細書では「セッションコンテキスト」という用語は、ユーザコンテキスト、または、受信されたメッセージ２５０を処理するために分散メッセージハンドリングシステム２００によって必要とされる任意の他の永続的データをも含むものとして、広く理解されるべきである。
【００３４】
受信されたメッセージから抽出されるセッションｉｄは、メッセージが属するセッションを識別するメッセージの任意の部分でもよいことを理解されたい。さらに、抽出されたセッションｉｄは、分散メッセージハンドリングシステム１００の任意の適切な構成要素によって任意の他のインディケータにマップされ得ることを理解されたい。したがって、本明細書では「セッションｉｄ」という用語は、抽出されたセッションｉｄと、抽出されたセッションｉｄを表すために分散メッセージハンドリングシステム１００によって使用される任意のマップされた識別子との両方を含むものとして、広く理解されるべきである。
【００３５】
セッションルータ２１０はさらに、セッションコンテキストをセッションコンテキストに関連するメッセージを処理する責任を有する少なくとも１つのセッションマネージャ２２０にマップする。たとえば、セッションルータ２１０は、ハッシングアルゴリズムを使用して、ルーティングテーブルを使用して、および／または、次ホップまたは最近傍方式を使用して、セッションｉｄをセッションマネージャ２２０にマップすることができる。
【００３６】
セッションマネージャ２２０は、セッションｉｄを使用し、セッションデータストア２４０からセッション状態を検索する。具体的には、セッションルータ２２０は、データ検索クエリ２５０−３への鍵としてセッションｉｄを使用する（たとえば、方法３００のステップ３２０）。データ検索クエリ２５０−３は、セッションデータストア２４０に向けられるデータクエリである。セッションデータストア２４０は、データ検索クエリ２５０−３に応答して、セッションｉｄに関連するセッション状態２５０−４を返す。
【００３７】
本明細書では、「セッション状態」という用語は、セッションコンテキストのフラット表現である。セッション状態は、コンパクトな形でセッションコンテキストを完全に記述し、セッションコンテキスト全体を検索するために必要とされる情報を含む。有利には、分散メッセージハンドリングシステム２００内の各セッションのセッションコンテキスト情報の代わりにセッション状態情報（たとえば、図１の１４０）を保持することは、必要なストレージがより少なく、分散システムにおけるタイミング要件を満たすことを容易にする。
【００３８】
セッションマネージャ２２０は、メッセージに関連するセッションを記述するセッションコンテキストにセッション状態を翻訳し（たとえば、方法３００のステップ３３０）、翻訳されたセッションコンテキスト２５０−５を状態機械２３０に渡す。セッションマネージャは、並列性を構成するそれらのメッセージを順序付けることができる。
【００３９】
状態機械２３０は、メッセージを実行するプログラムを実行する論理を含む（たとえば、方法３００のステップ３４０）。実行されるプログラムの出力は、メッセージまたはシステムコマンド２５０−６あるいは任意の他の適切な応答を出力し得る。セッションコンテキストが状態機械によって変更される場合、更新されたセッションコンテキストは、更新されたセッション状態２５０−７に翻訳され（たとえば、方法３００のステップ３５０）、セッション状態データ２４０に送信される（たとえば、方法３００のステップ３６０）。
【００４０】
セッションコンテキストは、実行環境において状態機械２３０によって使用され得る形へのセッション状態の任意の適切な翻訳でもよいことを理解されたい。さらに、いくつかの実施形態で、状態機械２３０は、セッション状態と同じフォーマットでセッションコンテキストを受け付けることができる。これらの実施形態で、変更のないセッション状態を状態機械２３０に渡すことは、セッション状態のセッションコンテキストへの翻訳である。
【００４１】
セッション状態データ２４０は、分散メッセージハンドリングシステム２００によって必要とされるデータの永続的記憶である。具体的には、セッション状態は、セッション状態データ２４０で記憶される。セッション状態は、データ検索を容易にするために、セッションｉｄによってインデックスを付けられ得る。セッション状態データ２４０において、そのセッションの特性を示す情報、たとえばセッション状態データ、を記憶することによって、同量の資源がより多くのセッションを処理することができることを理解されたい。たとえば、任意の状態機械２３０は、任意のセッション状態を取り上げてセッションを再構成し、セッションの入力メッセージを処理することができるので、本システムは、各稼働中のセッションおよび回復力のために複製されたそのバックアップを維持するために必要とされるかなりの量のメモリを確保する必要がない。セッションは、資源使用、資源障害、サービス品質の契約および／またはセッション遊休時間などのシステム考察に基づいて、待機中にされて資源を節約することができる、または、異なる資源に移行され得る。有利には、セッション分散ハンドリングシステム２００は、何億もの並列ユーザセッションをサポートすることができる。
【００４２】
いくつかの実施形態で、様々な機能ブロック２１０、２２０、２３０および２４０は、１つの装置内にともに配置され得る。
【００４３】
いくつかの実施形態で、機能ブロック２１０、２２０、２３０および２４０のうちの１つまたは複数は、複数の機能要素を含み得る。たとえば、セッションデータストア２４０は、複数のデータ記憶装置で構成され得る。これらの実施形態では、様々な機能ブロック２１０、２２０、２３０および２４０は、複数の装置にわたり分散され得る。
【００４４】
いくつかの実施形態で、セッション状態データは、名前−値のペアとしてフォーマットされ、そこで名前はセッション状態変数を識別し、値はセッション状態変数の値を表す。
【００４５】
いくつかの実施形態で、セッション状態データは、セッションパラメータ（複数可）、および、セッション流れを表す状態図内のセッションの現在のノードを表す少なくとも１つの識別子を含む。これらの実施形態で、状態図は、状態図におけるノード間の状態遷移およびセッション状態に関して、定義される。
【００４６】
いくつかの実施形態で、状態機械２３０は、番号を付けられた頂点を有するグラフを使用して状態を識別する。この実施形態で、セッション状態は、現在のセッションおよび状態機械２３０によって必要とされる格納された変数の頂点の数である。
【００４７】
いくつかの実施形態で、セッションデータストア２４０は、状態機械２３０内のいくつかの状態機械にわたり分散され得る。
【００４８】
いくつかの実施形態で、セッションデータストア２４０内で記憶されたセッション状態は、プライマリデータ記憶装置および１つまたは複数の待機中データ記憶装置において記憶され得る。具体的には、更新されたセッション状態２５０−７を受信したとき、セッションデータストア２４０は、１つまたは複数のデータ記憶装置を更新することができる。
【００４９】
いくつかの実施形態で、セッションデータストア２４０は、従来のログファイル、および／または、セッションデータストアの完全性を維持するためのチェックポイントを使用することができる。
【００５０】
いくつかの実施形態で、図１のアプリケーション１１０のうちの少なくとも１つは、ＬＴＥ通信アプリケーションでもよい。この実施形態で、メッセージのうちの１つは、ＭＭＥ機能でもよい。ＭＭＥは、セッション指向アプリケーションであり、各セッションは、それ自体のデータを有し、共用データ構造体（たとえば、追跡エリア）にアクセスする。ＭＭＥ機能は、ＬＴＥワイヤレス通信ネットワークの「知能」の多くを実装する。ＭＭＥ機能は、システムにアクセスするユーザ機器（ＵＥ）を認証し、ユーザが遊休状態である間にＵＥ状態を管理し、異なる基地局コントローラ（ｅＮＢ）間のハンドオーバを監視し、モバイルコンテキストにおいてインターネット（ＰＤＮ）接続性に必要とされるようなベアラを確立し、課金情報を生成し、合法的傍受ポリシならびにさらに多くの機能を実装する。他の実施形態で、メッセージのうちの１つは、ＰＢＸ、ＡＡＡ、ＨＬＲ、ＳＧＳＮ、および、高度に利用可能な、リアルタイム保障を有する他の信号伝達機能でもよい。
【００５１】
図４−７を参照すると、図２の分散メッセージハンドリングシステム２００の一実施形態が、基本的Ｈ．２４８呼設定を実装して、図示される。
【００５２】
図４は、基本的Ｈ．２４８呼設定に関わるユーザＡとユーザＢの間のメッセージ４１０の例示的交換を示す。この実施形態で、メディアゲートウェイコントローラ（ＭＧＣ）は、図２のメッセージハンドリングシステム２００の機能性を含み得る。たとえば、メッセージ４１０−１は、ユーザＡと被呼者ユーザＢの間の接続を起動するための事象データを含み得る。同様に、メッセージ４１０−２は、使用されることになる通信パラメータを指定するためのユーザＢの事象データを含み得る。
【００５３】
図５は、図２の機能ブロックに示すようなセッション状態にメッセージを翻訳するための方法５００の流れ図を示す。方法５００は、メッセージを受信するステップ（ステップ５１０）と、メッセージを構文解析してセッションｉｄを抽出するステップ（ステップ５２０）と、セッションデータストアからセッション状態を検索するステップ（ステップ５３０）と、メッセージを構文解析して関連事象を判定するステップ（ステップ５４０）と、メッセージを構文解析して事象パラメータ（複数可）を抽出するステップ（ステップ５５０）と、セッション状態、関連事象および事象データに基づいて、更新されたセッション状態を作成するステップ（ステップ５６０）とを含む。
【００５４】
方法５００で、ステップ５１０は、メッセージを受信するステップを含む。いくつかの実施形態で、メッセージは、Ｈ．２４８メッセージでもよい。たとえば、図４のメッセージ４１０−１の一実施形態は、図６の行（１）−（２０）によって示されるようでもよい。同様に、メッセージ４１０−２の一実施形態は、図７の行（２１）−（４０）として示されるようでもよい。
【００５５】
方法５００で、ステップ５２０は、セッションｉｄのメッセージを構文解析するステップを含む。たとえば、図６を参照すると、セッションｉｄは、メッセージ４１０−１から構文解析され得る。具体的には、行１のＩＰアドレス／ポート番号タプル、および／または、行２のトランザクション識別子が、セッションｉｄを判定するために、メッセージから抽出され得る。
【００５６】
方法５００で、ステップ５３０は、図１−３で前述されたようなセッションデータストアからセッション状態を受信するステップを含む。いくつかの実施形態で、セッション状態は、セッション状態を定義するデータの例示的セグメントを示す図８にあるようなセッションコンテキストを定義する関連データを表す名前−値ペアの一群によって表すことができる。
【００５７】
方法５００で、ステップ５４０は、メッセージを構文解析して関連事象を判定するステップを含む。たとえば、図６の行３−１７を参照すると、第１の事象は、新しいコンテキストを作成し、それに物理終端ＴｅｒｍＡを加えることである。第２の事象は、短命終端を作成し、以前の事象によって作成された同コンテキストで作成された終端を追加することである。
【００５８】
方法５００で、ステップ５５０は、メッセージを構文解析して事象パラメータ（複数可）を判定するステップを含む。たとえば、それぞれメッセージ４１０−１および４１０−２の一実施形態を示す図６および図７における例を参照すると、接続フィールドＩＰアドレスおよびメディアフィールドポート番号は、図６のメッセージでは指定されていない。図７で応答を構文解析することによって、ＩＰアドレスおよびポート番号が、判定され得る。具体的には、行３２および行３３は、割り当てられたＩＰアドレス（すなわち、２０９．１１０．５９．３３）、および、この例で使用されることになるポート番号（すなわち、３００００）を識別する。
【００５９】
方法５００で、ステップ５６０は、セッション状態、関連事象および事象データに基づいて、更新されたセッション状態を作成するステップを含む。具体的には、事象データから抽出されたおよび／または関連事象に関連するパラメータが、受信されたセッション状態において現在のセッション状態および／またはセッションパラメータを修正するために使用され得る。セッションパラメータは、パラメータを加えることおよび／または新しい値で受信されたセッション状態に既に存在するセッションパラメータを更新することによって、修正され得る。任意の関連事象および／または事象データが抽出されるおよび／または関連するかどうかに基づいて、更新されたセッション状態は、検索されたセッション状態と同じでもよく、あるいは、更新されたセッション状態は、関連事象および／または事象データによって修正された検索されたセッション状態でもよいことを理解されたい。
【００６０】
いくつかの実施形態で、ステップ５２０、５４０および／または５５０でのメッセージの構文解析は、コンテキストに敏感な規則を使用することができる。規則は、トークンの場所のコンテキストに敏感でもよい。たとえば、図６の行１に示すように、ｉｐアドレス／ポートタプルは、「ＭＥＧＡＣＯ」メッセージプロトコル識別子に続く第１の行に置かれ得る。
【００６１】
いくつかの実施形態で、方法３００および／または５００はまた、フロー定義を使用し、受信されたメッセージを実行するステップを含み得る。フロー定義、または有限状態オートマトンは、関連状態図のノード、エッジおよび論理を記載する。検索されたセッション状態、関連事象、および事象データは、フロー定義への入力として使用され得る。フロー定義出力は、トランザクションを生成することができる。たとえば、トランザクションは、図４に示すように呼出し、リングバックまたはＲＴＰ通信ストリームを起動するためのメッセージでもよい。同様に、フロー定義出力は、セッションコンテキストを更新することができる。たとえば、ｉｐアドレスおよびポートは、以下などの名前−値ペアで発呼者または被呼者と関連付けられ得る：「ＣＡＬＬＥＤ  ＰＡＲＴＹ  ＩＰＡＤＤＲＥＳＳ（被呼者ＩＰアドレス）」、「２０９．１１０．５９．３３」。本明細書では「状態図」という用語は、「流れ図」、流れ図論理を成立させるプログラムされたサブルーチン、または、状態システム内の受信されたメッセージの処理を対象とする任意の他のプログラミング技法も含むものとして、広く理解されるべきである。
【００６２】
いくつかの実施形態で、方法３００および／または５００はさらに、検索されたセッション状態を更新して関連事象を反映させるステップ、関連事象および／または検索された事象データに応答して取られるアクション、を含み得る。たとえば、名前−値ペアは、検索された関連事象、関連事象に応答して取られるアクションおよび／または検索された事象データを反映し、作成され得る。検索されたセッション状態は、次いで、作成された名前−値ペアを反映するように更新され、セッションデータストアで格納され得る。従来のデータベース技法が、セッションデータストアを更新するために使用され得ることを理解されたい。さらに、更新されたセッション状態全部がセッションデータストアにアップロードされる必要はないことを理解されたい。たとえば、いくつかの実施形態で、クエリ（複数可）が、新しい名前−値ペアを作成するおよび／または修正された名前−値ペアを更新して更新されたセッション状態を反映するために形成され得る。
【００６３】
いくつかの実施形態で、方法３００および／または５００はさらに、実行する実体の間でセッション状態を移行させるステップを含み得る。有利には、セッション状態を移行させるステップは、通常は、ＶＭ全体を動かすよりも少ないメモリを必要とし、そのようにして、それは迅速に行われ得る。さらに、状態の形は機械のアーキテクチャから独立しているので、セッション状態は、以下などの異種のハードウェアの間で移行することができる：サーバからスマートフォンへ、または、セットトップからサーバへ。
【００６４】
いくつかの実施形態で、方法３００および／または５００はさらに、検索されたセッション状態およびフロー定義に基づいて、受信されたメッセージのシーケンスを再作成するステップを含み得る。具体的には、状態図の現在のノードは、セッション状態内の格納されたデータ（たとえば、名前−値ペア）から判定され得る。現在のノードは、次いで、現在のノードから最初のノードへの流れをスキャンするためのフロー定義内の起点として使用され得る。シーケンス内の各連続するノードは、目標ノードにつながる起こり得るパスを判定することと、セッション状態データに基づく起こり得るパスからスキャンされるパスを選択することとによって、判定され得る。連続するノードが判定された後は、連続するノードから目標ノードへのメッセージが、フロー定義に格納された知られているメッセージフォーマットと、メッセージフォーマットに含まれる事象データに対応するセッションデータとを使用し、再作成され得る。
【００６５】
図８を参照すると、図８は、図３のステップ３２０および図５のステップ５３０で検索されたセッション状態の一実施形態を示す。セッション状態は、セッションｉｄ、セッションの現在の状態のインディケータ、および、セッションパラメータを含む。
【００６６】
行（１）で、「｜」は、新しいセッションｉｄまたはセッションコンテキストの開始を指示するファイル区切り記号であり、インディケータ「Ｃ４」および「Ｃｘｔ：４」は、両方とも、セッションデータがセッションｉｄ４（たとえば、コンテキスト４）についてであることを指示するセッション識別子であり、インディケータ「ＮＴＦＹ（１）」は、セッションの現在の状態を指示する（たとえば、ＮＯＴＩＦＹ  １（１を通知する））。名前値リスト（ＮＶＬ）が、次いで、明確さを目的として全リストから編集された行（２）−（２６）に記載される。ＮＶＬは、前のメッセージから抽出されたおよび／または前の状態機械によってインスタンス化されたセッションパラメータを含む。たとえば、行（８）は、以前のメッセージから抽出されたダイヤルされた数字の格納されたストリングを示す。
【００６７】
いくつかの実施形態で、セッション状態は、現在の状態に必要とされないセッションパラメータの履歴を含むことになる。格納された履歴は、前述のような受信されたメッセージのシーケンスを再作成するために使用され得る。たとえば、行（１４）−（２１）は、１つのクライアントによって提案されたセッション記述プロトコル（ＳＤＰ）を表し、行（２２）−（２９）は、他のクライアントによって合意されたＳＤＰを表す。合意されたＳＤＰのみが通信において稼働中であるが、提案されたＳＤＰは、原案メッセージを再作成するために使用され得る。
【００６８】
図８は、格納されたセッション状態の「詳細な」リスティングの一部であり、全セッション状態の検索は必要とされないことを理解されたい。いくつかの実施形態では、関連するセッション状態データのみが、検索される。具体的には、セッションパラメータのサブセット（たとえば、名前−値ペア）のみが検索される。検索されるサブセットは、セッションの現在の状態の状態機械によって必要とされるそれらのセッションパラメータのみを含み得る。
【００６９】
特定のシーケンスにおいて主に図示および記載されるが、方法３００および５００に示されるステップは、任意の適切なシーケンスで実行され得ることを理解されたい。さらに、１つのボックスによって識別されるそれらのステップはまた、シーケンス内の複数の場所で実行され得る。
【００７０】
様々な前述の方法のステップは、プログラムされたコンピュータによって実行され得ることを理解されたい。本明細書では、いくつかの実施形態はまた、機械またはコンピュータ可読であり、命令の機械実行可能またはコンピュータ実行可能プログラムをコード化するプログラム記憶装置、たとえば、データ記憶メディア、を包含するものであり、前記命令は、前記の前述の方法のステップのうちのいくつかまたはすべてを実行する。プログラム記憶装置は、たとえば、デジタルメモリ、磁気ディスクおよび磁気テープなどの磁気記憶メディア、ハードドライブ、または、光学的可読データ記憶メディアでもよい。それらの実施形態はまた、前述の方法の前記ステップを実行するようにプログラムされたコンピュータを包含するものである。
【００７１】
図９は、分散メッセージハンドリングシステム１００の第１の実施形態を概略的に示すブロック図である。分散メッセージハンドリングシステム１００は、受信されたメッセージを１つまたは複数の状態機械９３０−１−９３０−ｎ（集合的に状態機械９３０）に転送する１つまたは複数のアンカーポイント９１０−１−９１０−ｎ（集合的にアンカーポイント９１０）を含む。分散メッセージハンドリングシステム１００はまた、１つまたは複数のセッションデータストア９４０−１−９４０−ｎ（集合的にセッションデータストア９４０）を含む。
【００７２】
アンカーポイント９１０は、入力メッセージを状態機械９３０−１−９３０−ｎにルーティングする。具体的には、アンカーポイントは、ネットワークからメッセージを受信し、図２のセッションルータ２１０の機能を実行する。この実施形態で、入力メッセージはいつも、同じ状態機械９３０−１−９３０−ｎに配布され、すなわち、ユーザセッションは維持している。ユーザエンドポイント（「ＵＥ」）からメッセージを受信するアンカーポイントは、ＵＥおよび目標状態機械９３０−１−９３０−ｎを関連付ける。
【００７３】
状態機械９３０は、図２のセッションマネージャ２２０のならびに図２の状態機械２３０の機能を実行する。具体的には、状態機械（たとえば、９３０−１）は、セッション（たとえば、図１の１２０−１）に割り当てられる。割り当てられた状態機械は、インスタンスによってサポートされる最新のセッションコンテキストについて知る唯一のものである。状態機械９３０は、アンカーポイント９１０をスキャンすることなしに、エンドユーザに直接応答することができることを理解されたい。
【００７４】
セッションデータストア９４０は、図２のセッションデータストア２４０の機能を実行する。具体的には、セッションデータストア９４０−１−９４０−ｎのうちの１つまたは複数は、別個のデータ記憶装置に常駐でもよい。
【００７５】
いくつかの実施形態で、アンカーポイント９１０は、ＵＥ（ユーザエンドポイント）と目標状態機械の間の割当てのテーブルを保持する。
【００７６】
いくつかの実施形態で、アンカーポイント９１０は、関連状態機械とそれをマッチさせるためのリクエストをハッシュする。
【００７７】
いくつかの実施形態で、アンカーポイント９１０は、アクティブ−アクティブおよび／またはホット−スタンバイなどの従来の複製技法を使用し、複製される。
【００７８】
いくつかの実施形態で、状態機械９３０内の状態機械（たとえば、９３０−１）が、複製される。さらなる実施形態で、複製される状態機械は、従来のアクティブ−アクティブ複製技法を使用して複製され、たとえば、複製される状態機械は、少なくとも１つのパートナ機械に複製される。
【００７９】
たとえば、各セッション（たとえば、図１の１２０−１）のために１つのプライマリ状態機械（たとえば、９３０−１）が存在し得る。プライマリ状態機械は、次いで、１つまたは複数のセカンダリ状態機械（たとえば、９３０−２）と関連付けられ得る。プライマリおよびセカンダリ状態機械は、それらがアンカーポイント９１０、たとえば関連アンカーポイント、たとえば９１０−１、を更新する限り、関連セッション状態をスワップおよびプッシュすることができる。たとえば、図２および図５を参照すると、状態機械９３０−１は、更新されたセッションコンテキストを作成する翻訳されたセッションコンテキスト２５０−５を実行し、更新されたセッションコンテキストを更新されたセッション状態２５０−７に翻訳し、更新されたセッション状態２５０−７を待機状態機械にコピーすることができる。
【００８０】
以下のテーブル１には、インスタンス、プライマリセッションおよび待機中セッションが、図１に関して示される。インスタンス１２０−２のセッションは、１３０−２（１）−１３０−２（ｎ）（図１に示さず）である。
【００８１】
【表１】
2015509232.tif 000003
【００８２】
いくつかの実施形態で、セッションデータストア９４０は、高い信頼性を提供するために、従来のデータバックアップ技法を使用し、セッション状態を格納する。有利には、セッションデータストア９４０は、セッションのセッションコンテキストを再構築することができるセッション状態を格納するので、アンカーポイント９１０および／または状態機械９３０は、高い信頼性がある必要はなく、商品構成要素でもよい。
【００８３】
いくつかの実施形態で、分散メッセージハンドリングシステム１００は、セッションデータストア９４０内でセッション状態チェックポイントを格納する。このセッションデータストアは、参照により本明細書に組み込まれる、Ｇ．ＤｅＣａｎｄｉａ、Ｄ．Ｈａｓｔｏｒｕｍ、Ｍ．Ｊａｍｐａｎｉ、Ｇ．Ｋａｋｕｌａｐａｔｉ、Ａ．Ｌａｋｓｈｍａｎ、Ａ．Ｐｉｌｃｈｉｎ、Ｓ．Ｓｉｖａｓｕｂｒａｍａｎｉａｎ、Ｐ．Ｖｏｓｓｈａｌｌ、およびＷ．Ｖｏｇｅｌｓ、「Ｄｙｎａｍｏ：Ａｍａｚｏｎ’ｓ  Ｈｉｇｈｌｙ  Ａｖａｉｌａｂｌｅ  ｋｅｙ−ｖａｌｕｅ  Ｓｔｏｒｅ」、Ｐｒｏｃ．２１ｓｔ  ＡＣＭ  Ｓｙｍｐ．Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓ（ＳＯＳＰ’０７）、２０５−２２０頁、２００７年１０月、に記載されるような従来の１ホップＤＨＴとして設計することができる。さらなる実施形態で、セッションデータストアは、鍵はセッション識別子であり、値はセッション状態である、鍵−値ストアでもよい。有利には、ネットワークが分割される、または全データセンタが停止する場合、これらの実施形態はさらに可用性を高める。いくつかの実施形態で、状態機械を稼働させる資源は、このセッションデータストアに関与してもよく、または、他のクラウド資源が、それに帰され得る。
【００８４】
図１０は、分散メッセージハンドリングシステム１００の第２の実施形態を概略的に示すブロック図である。分散メッセージハンドリングシステム１００は、受信されたメッセージを１つまたは複数の作業者インスタンス１０２０−１−１０２０−ｎ（集合的に作業者インスタンス１０２０）に転送する１つまたは複数のアンカーポイント１０１０−１−１０１０−ｎ（集合的にアンカーポイント１０１０）を含む。作業者インスタンスは、状態機械１０３０を開いて受信されたメッセージを実行する。
【００８５】
アンカーポイント１０１０は、入力メッセージを作業者インスタンス１０２０−１−１０２０−ｎにランダムにルーティングする。この実施形態で、セッションルータ機能性は、アンカーポイント１０１０には含まれず、マッピング論理を必要としないより単純なアンカーポイント１０１０を作り出す。具体的には、アンカーポイント１０１０は、実行中の作業者インスタンス１０２０を追跡し、入力メッセージをランダムに配布する。有利には、アンカーポイントが使用不可能になった場合、分散メッセージハンドリングシステム１００は、作業者インスタンスへのルーティングのために別の知られているアンカーポイントにメッセージを単に送る。さらに、アンカーポイント１０１０は状態を保持しないので、それらは複製される必要はない。
【００８６】
作業者インスタンス１０２０は、図２のセッションルータ２１０、図２のセッションマネージャ２２０、図２の状態機械２３０、および図２のセッションデータストア２４０の機能を実行する。具体的には、作業者インスタンス、たとえば１０２０−１、は、状態機械であり、セッションデータストアの断片を含む。
【００８７】
いくつかの実施形態で、アンカーポイント１０１０は、Ｓ１、Ｓ６、Ｓ１０、Ｓ１１などのＬＴＥプロトコルをルーティングする。
【００８８】
いくつかの実施形態で、作業者インスタンス、たとえば１０２０−１、は、アンカーポイント１０１０からメッセージを受信し、それがメッセージのセッション状態情報を有するかどうかを判定する。作業者インスタンス１０２０−１がセッション状態情報を有する場合、作業者インスタンス１０２０−１は、状態機械１０３０を起動し、本明細書に記載のようにメッセージを実行する。作業者インスタンスがメッセージのセッション状態情報を含まない場合、作業者インスタンスは、セッション状態を有する別の作業者インスタンスにメッセージを転送する。作業者インスタンスは、セッションルータ２１０に関して前述したように、作業者インスタンスにセッションｉｄをマップすることができる。たとえば、作業者インスタンスは、セッションｉｄをマップする、または、ランダム転送もしくは次ホップ技法を使用することができる。
【００８９】
いくつかの実施形態で、作業者インスタンス１０２０が、複製される。この実施形態で、プライマリ作業者インスタンス１０２０−１−１０２０−ｎ内のセッションデータストアの断片の少なくとも一部が、セカンダリ作業者インスタンス１０２０−１−１０２０−ｎに複製される。さらなる実施形態で、作業者インスタンス１０２０はネットワーク化され、そして、近傍はセカンダリストアである。これらの実施形態で、プライマリ作業者インスタンスが停止するとき、セカンダリ作業者インスタンスが入力メッセージを処理することができる。
【００９０】
いくつかの実施形態で、作業者インスタンス１０２０は、メッセージが受信されるときに状態機械１０３０を起動し、メッセージが処理された後に作成された状態機械を削除することができる。
【００９１】
いくつかの実施形態で、図１のアプリケーション１１０のうちの少なくとも１つは、ＬＴＥ通信アプリケーションでもよい。この実施形態で、メッセージのうちの１つは、ＭＭＥ機能でもよい。この実施形態で、作業者インスタンス１０２０は、ＭＭＥ状態機械論理を含み、そして、結合した複製されたデータストア（たとえば、１ホップＤＨＴ）は、セッションコンテキストを構築するために必要なすべての情報を含む。この実施形態で、作業者インスタンスは、どのＵＥからメッセージが送信されたかを識別するセッションｉｄを含むメッセージを受信し、その複製されたデータストアからセッション状態を検索し、状態機械を起動してメッセージを処理し、その複製されたデータストア内で更新されたセッション状態を格納し、必要があれば、ＵＥにまたはＬＴＥネットワーク内の別の構成要素にメッセージを送り返す。
【００９２】
図１１は、図２のセッションルータ２１０、セッションマネージャ２２０、状態機械２３０および／またはセッションデータストア２４０、図９のアンカーポイント９１０、状態機械９３０および／またはセッションデータストア９４０、および／または、図１０のアンカーポイント１０１０および／または作業者インスタンス１０２０などの様々なデバイス１１００の一実施形態を概略的に示す。これらの様々なデバイス１１００は、たとえば、方法３００および／または５００を使用し、本明細書に記載の機能を実行することができる。様々なデバイス１１００は、プロセッサ１１１０およびデータストレージ１１１１を含む。
【００９３】
プロセッサ１１１０は、様々なデバイス１１００の動作を制御する。プロセッサ１１１０は、データストレージ１１１１と連携する。
【００９４】
データストレージ１１１１は、セッションデータ（たとえば、図２のセッションデータストア２４０、図９のセッションデータストア９４０および図１０の作業者インスタンス１０２０）と、状態機械論理（たとえば、図２の状態機械２３０、図９の状態機械９３０および図１０の作業者インスタンス１０２０）とを格納することができる。データストレージ１１１１はまた、プロセッサ１１１０によって実行可能なプログラム１１２０を格納する。
【００９５】
プロセッサ実行可能プログラム１１２０は、セッションルータプログラム１１１０、セッションマネージャプログラム１１２３、状態機械プログラム１１２５および／またはセッションデータストアプログラム１１２７を含み得る。プロセッサ１１１０は、プロセッサ実行可能プログラム１１２０と連携して、図１−１０に記載の機能性を実装するおよび／または方法３００および／または５００のステップを実行する。例示的プロセッサ実行可能プログラム１１２１、１１２３、１１２５および１１２７は、デバイスの機能に応じて任意選択でもよいことを理解されたい（たとえば、データセッションストアプログラム１１２７は、図２のセッションルータ２１０を実装するために必要とされない）。
【００９６】
プロセッサ実行可能プログラム１１２０がプロセッサ１１１０に実装されるとき、プログラムコードセグメントは、プロセッサと結合して、特定の論理回路と同じように動作する固有のデバイスを提供する。
【００９７】
たとえば、プログラムおよび論理がデータストレージ内で格納され、メモリがプロセッサに通信可能に接続される実施形態に関して本明細書に図示および説明されるが、そのような情報は、任意の適切な配列のデバイスに通信可能に結合された任意の適切な配列のメモリ、ストレージまたはデータベースを使用する、任意の適切な組合せのメモリ（複数可）、ストレージ（複数可）および／または内部もしくは外部データベース（複数可）で情報を格納する、あるいは、任意の適切な数のアクセス可能な外部メモリ、ストレージまたはデータベースを使用する、任意の他の適切な形（たとえば、任意の適切な数のメモリ、ストレージまたはデータベースを使用する）で格納され得ることを理解されたい。したがって、本明細書では、データストレージという用語は、メモリ（複数可）、ストレージ（複数可）、およびデータベース（複数可）のすべての適切な組合せを包含することを意図されている。
【００９８】
本説明および図面は、本発明の原理を単に例示する。したがって、本明細書に明示的に記載または図示されていなくても、本発明の原理を実施するおよびその趣旨および範囲に含まれる様々な配列を当業者は考案することができようことが、理解されよう。さらに、本明細書で挙げられたすべての例は、本発明の原理および当技術分野を促進するために本発明者（複数可）によって提供される概念を読者が理解することを助けるための教育的目的のためにのみ明示的に主に意図され、そのような具体的に挙げられた例および条件への限定のないものとして解釈されるべきである。さらに、本発明の原理、態様、および実施形態ならびにそれらの具体的な例を挙げる本明細書のすべての記述は、それらの相当物を包含するものとする。
【００９９】
「プロセッサ」のラベルを付された任意の機能ブロックを含む、図面に示された様々な要素の機能は、専用のハードウェア、ならびに、適切なソフトウェアに関連してソフトウェアを実行する能力を有するハードウェアの使用を介して、提供され得る。プロセッサによって提供されるとき、それらの機能は、単一の専用のプロセッサによって、単一の共用プロセッサによって、または複数の個々のプロセッサによって、提供することができ、それらのうちのいくつかは共用され得る。さらに、「プロセッサ」または「コントローラ」という用語の明示的使用は、ソフトウェアを実行する能力を有するハードウェアを排他的に指すものとして解釈されるべきではなく、デジタル信号プロセッサ（ＤＳＰ）ハードウェア、ネットワークプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ソフトウェアを記憶するための読取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、および不揮発性ストレージを黙示的に含み得るが、これらに限定されない。従来のおよび／または特注の他のハードウェアもまた含まれ得る。同様に、図中に示す任意のスイッチは、単に概念的である。それらの機能は、プログラム論理の動作を介して、専用の論理を介して、プログラム制御および専用の論理の対話を介して、または、手動でも実行することができ、特定の技法が、コンテキストからより具体的に理解されるように実装者によって選択可能である。
【０１００】
本明細書に記載のいずれのブロック図も、本発明の原理を実施する例示的回路の概念的視点を表すことを理解されたい。同様に、任意のフローチャート、流れ図、状態遷移図、疑似コード、および同様のものは、そのようなコンピュータまたはプロセッサが明示的に示されていてもいなくても、コンピュータ可読メディア内に実質的に表すことができ、そうしてコンピュータまたはプロセッサによって実行され得る様々なプロセスを表すことを理解されたい。
【図１】
2015509232.tif 000004
【図２】
2015509232.tif 000005
【図３】
2015509232.tif 000006
【図４】
2015509232.tif 000007
【図５】
2015509232.tif 000008
【図６】
2015509232.tif 000009
【図７】
2015509232.tif 000010
【図８】
2015509232.tif 000011
【図９】
2015509232.tif 000012
【図１０】
2015509232.tif 000013
【図１１】
2015509232.tif 000014
【国際調査報告】
2015509232.tif 000015
2015509232.tif 000016
2015509232.tif 000017