(57)【特許請求の範囲】
【請求項１】
モバイルデバイスにおいて、前記モバイルデバイスにおいて実行可能な第１のアプリケーションと関連づけられる第１の遅延許容情報を受けとることと、ここにおいて、前記第１の遅延許容情報は、前記第１のアプリケーションが第１の通信遅延の量を許容することを示す、
前記モバイルデバイスにおける前記第１のアプリケーションの実行の間、前記第１のアプリケーションから前記モバイルデバイスの通信リソースへのアクセスのための要求をインタセプトすることと、
前記第１の通信遅延の量に基づいて決定される遅延期間の間、前記インタセプトされた要求を保留することと、
前記第１のアプリケーションが前記通信リソースにアクセスすることを可能にするために、前記遅延期間の後に、前記保留された要求を解放することと、
を備える、方法。
【請求項２】
前記モバイルデバイスが第１のサービングネットワークノードから第２のサービングネットワークノードへのハンドオーバを経験するという予測、特定の無線アクセス技術（ＲＡＴ）が前記モバイルデバイスにおいて利用可能になるという予測、またはそれらの組み合わせにもとづいて決定される第２の遅延期間の間、第２のインタセプトされた要求を保留することをさらに備える、請求項１に記載の方法。
【請求項３】
ランダムアクセス応答チャネルに基づいて、ネットワーク負荷を推定することをさらに備える、請求項１に記載の方法。
【請求項４】
ダウンリンクトラフィック対パイロット比（ＴＰＲ）、キャリア対雑音比、または有効なユーザの数のうちの少なくとも１つに基づいて、ネットワーク負荷を推定することをさらに備える、請求項１に記載の方法。
【請求項５】
前記モバイルデバイスの第２の無線の動作による前記モバイルデバイスの第１の無線における干渉に基づいて決定される第２の遅延期間の間、第２のインタセプトされた要求を保留することをさらに備える、請求項１に記載の方法。
【請求項６】
前記モバイルデバイスにおいて実行可能な第２のアプリケーションと関連づけられる第２の遅延許容情報を受信することと、ここにおいて、前記第２の遅延許容情報は、前記第２のアプリケーションが、前記第１の通信遅延の量とは異なる第２の通信遅延の量を許容することを示す、
前記第２のアプリケーションから第２の要求をインタセプトすることと、
前記第２の通信遅延の量に基づいて決定される第２の遅延期間の間、前記第２の要求を保留することと、
をさらに備える、請求項１に記載の方法。
【請求項７】
前記モバイルデバイスにおいて実行可能な第２のアプリケーションと関連づけられる第２の遅延許容情報を受信することと、ここにおいて、前記第２の遅延許容情報は、前記第２のアプリケーションが通信遅延を許容しないことを示す、
前記第２の遅延許容情報に応答して、前記第２のアプリケーションからの要求を保留することを控えることと、
をさらに備える、請求項１に記載の方法。
【請求項８】
前記モバイルデバイスにおいて実行可能な第２のアプリケーションと関連づけられる通信デッドラインを示す情報を受信することと、
前記第２のアプリケーションからの第２の要求をインタセプトすることと、
前記通信デッドラインに基づいて決定される第２の遅延期間の間、前記第２の要求を保留することと、
をさらに備える、請求項１に記載の方法。
【請求項９】
支払われたサブスクリプションレベルに基づいて特定のアプリケーションからの特定のインタセプトされた要求を保留することをさらに備える、請求項１に記載の方法。
【請求項１０】
前記保留された要求を解放するための準備において、周波数間サーチ動作または無線アクセス技術（ＲＡＴ）間・周波数間再選択動作のうちの少なくとも１つを実行するようにモデムに命令することをさらに備える、請求項１に記載の方法。
【請求項１１】
メモリと、
前記メモリに結合され、かつ、
モバイルデバイスにおいて、前記モバイルデバイスにおいて実行可能な第１のアプリケーションと関連づけられる第１の遅延許容情報を受けとることと、ここにおいて、前記第１の遅延許容情報は、前記第１のアプリケーションが第１の通信遅延の量を許容することを示す、
前記モバイルデバイスにおける前記第１のアプリケーションの実行の間、前記第１のアプリケーションからの前記モバイルデバイスの通信リソースへのアクセスのための要求をインタセプトすることと、
前記第１の通信遅延の量に基づいて決定される遅延期間の間、前記インタセプトされた要求を保留することと、
前記第１のアプリケーションが前記通信リソースにアクセスすることを可能にするために、前記遅延期間の後に、前記保留された要求を解放することと、
のために構成された少なくとも１つのプロセッサと、
を備える、ユーザデバイス。
【請求項１２】
前記プロセッサは、前記モバイルデバイスが第１のサービングネットワークノードから第２のサービングネットワークノードへのハンドオーバを経験するという予測、特定の無線アクセス技術（ＲＡＴ）が前記モバイルデバイスにおいて利用可能になるという予測、またはそれらの組み合わせにもとづいて決定される第２の遅延期間の間、第２のインタセプトされた要求を保留するためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項１３】
前記プロセッサは、ランダムアクセス応答チャネルに基づいて、ネットワーク負荷を推定するためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項１４】
前記プロセッサは、ダウンリンクトラフィック対パイロット比（ＴＰＲ）、キャリア対雑音比、または有効的なユーザの数のうちの少なくとも１つに基づいて、ネットワーク負荷を推定するためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項１５】
前記プロセッサは、前記モバイルデバイスの第２の無線の動作による前記モバイルデバイスの第１の無線における干渉に基づいて決定される第２の遅延期間の間、第２のインタセプトされた要求を保留するためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項１６】
前記プロセッサは、前記モバイルデバイスにおいて実行可能な第２のアプリケーションと関連づけられる第２の遅延許容情報を受けとることと、ここにおいて、前記第２の遅延許容情報は、前記第２のアプリケーションが、前記第１の通信遅延の量とは異なる第２の通信遅延の量を許容することを示す、
前記第２のアプリケーションから第２の要求をインタセプトすることと、
前記第２の通信遅延の量に基づいて決定される第２の遅延期間の間、前記第２の要求を保留することと、
のためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項１７】
前記プロセッサは、前記モバイルデバイスにおいて実行可能な第２のアプリケーションと関連づけられる第２の遅延許容情報を受信することと、ここにおいて、前記第２の遅延許容情報は、前記第２のアプリケーションが通信遅延を許容しないことを示す、
前記第２の遅延許容情報に応答して、前記第２のアプリケーションからの要求を保留することを控えることと、
のためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項１８】
前記プロセッサは、前記モバイルデバイスにおいて実行可能な第２のアプリケーションと関連づけられる通信デッドラインを示す情報を受信することと、
前記第２のアプリケーションからの第２の要求をインタセプトすることと、
前記通信デッドラインに基づいて決定される第２の遅延期間の間、前記第２の要求を保留することと、
のためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項１９】
前記プロセッサは、支払われたサブスクリプションレベルに基づいて特定のアプリケーションからの特定のインタセプトされた要求を保留するためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項２０】
前記プロセッサは、前記保留された要求を解放するための準備において、周波数間サーチ動作または無線アクセス技術（ＲＡＴ）間・周波数間再選択動作のうちの少なくとも１つを実行するようにモデムに命令するためにさらに構成される、請求項１１に記載のユーザデバイス。
【請求項２１】
ワイヤレス通信のためのユーザデバイスであって、
モバイルデバイスにおいて、前記モバイルデバイスにおいて実行可能な第１のアプリケーションと関連づけられる第１の遅延許容情報を受けとるための手段と、ここにおいて、前記第１の遅延許容情報は、前記第１のアプリケーションが第１の通信遅延の量を許容することを示す、
前記モバイルデバイスにおける前記第１のアプリケーションの実行の間、前記第１のアプリケーションからの要求をインタセプトするための手段と、前記要求は、前記モバイルデバイスの通信リソースへのアクセスのためのものである、
前記第１の通信遅延の量に基づいて決定される遅延期間の間、前記インタセプトされた要求を保留するための手段と、
前記第１のアプリケーションが前記通信リソースにアクセスすることを可能にするために、前記遅延期間の後に、前記保留された要求を解放するための手段と、
を備える、ユーザデバイス。
【請求項２２】
その上に記録されたプログラムコードを有するコンピュータ読取可能な記憶媒体であって、前記プログラムコードは、
モバイルデバイスにおいて、前記モバイルデバイスにおいて実行可能な第１のアプリケーションと関連づけられる第１の遅延許容情報を受けとるためのコードと、ここにおいて、前記第１の遅延許容情報は、前記第１のアプリケーションが第１の通信遅延の量を許容することを示す、
前記モバイルデバイスにおける前記第１のアプリケーションの実行の間、前記第１のアプリケーションからの要求をインタセプトするためのコードと、前記要求は、前記モバイルデバイスの通信リソースへのアクセスのためのものである、
前記第１の通信遅延の量に基づいて決定される遅延期間の間、前記インタセプトされた要求を保留するためのコードと、
前記第１のアプリケーションが前記通信リソースにアクセスすることを可能にするために、前記遅延期間の後に、前記保留された要求を解放するためのコードと、
を備える、コンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
[0001]  本願は、米国特許法１１９条に基づいて、２０１１年７月２６日に出願された「ランダム化された遅延を通じたユーザデバイス上のアプリケーションの接続性管理（"Connectivity Management for Applications on a User Device Through a Randomized Delay"）」と題された米国仮特許出願第６１／５１１，９８０号、２０１１年６月３０日に出願された「ネットワークへのアプリケーションアクセスの制御（"Controlling Application Access to a Network"）」と題された米国仮特許出願第６１／５０３，３９５号、２０１１年３月１８日に出願された「ユーザデバイス上のアプリケーションの接続性管理（"Connectivity Management for Applications on a User Device"）」と題された米国仮特許出願第６１／４５４，４５７号、および２０１０年１１月５日に出願された「通信セッションをスケジュールするための装置および方法（"Apparatus and Methods for Scheduling Communication Sessions"）」と題された米国仮特許出願第６１／４１０，８５８号の利益を主張する。
【技術分野】
【０００２】
[0002]  本願は、一般的にはワイヤレス通信システムの動作に関し、より詳細には、ユーザデバイス上のアプリケーションのために接続性リソースを管理するための方法および装置に関する。
【背景技術】
【０００３】
[0003]  ワイヤレスデバイスに幅広いアドオン(add-on）サービスと機能を提供するように動作するアプリケーション（Ａｐｐｓ）またはデバイスアプレットが、現在利用可能である。例えば、今日、ワイヤレスデバイスは、デバイスアプレットをダウンロードして起動し、ショッピング、検索、位置特定、走行ナビゲーションまたは一連のその他機能などの付加価値機能を実行することが可能である。ネットワークおよびアプリケーションのプロバイダは、一般に、追加料金でこれらのデバイスアプレットをデバイスユーザに提供する。したがって、デバイスアプレットの使用は、ワイヤレスデバイスの機能性およびユーザビリティを向上させ、デバイス自体上で元々利用可能でない機能および利便性をデバイスユーザに提供する。
【０００４】
[0004]  典型的に、ワイヤレスデバイスは、複数の無線（radio）のうちの任意のものを使用して、１つまたは複数の通信ネットワークとインタフェースする。例えば、ワイヤレスデバイスは、セルラ、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）または他のタイプの無線アクセス技術を使用して通信を提供するさまざまな無線を含みうる。したがって、ワイヤレスデバイス上で実行中のアプリケーションは、典型的に、それらアプリケーションが適切なネットワークと通信するために使用するであろう無線および関連する無線チャネルを決定するデフォルトルーティングが備わっている。
【０００５】
[0005]  しかしながら、所与のアプリケーションが通信する無線をインテリジェントに選択することへの関心が高まっている。これは、オペレータに容量問題を引き起こしうるネットワークトラフィックの増加と、マルチ無線デバイス（例えば、３Ｇ／ＷｉＦｉデバイス）の数の増加とに一部起因する。したがって、このような容量問題に関しては、オフロードすること（offloading）が可能であってアプリケーション性能を著しく低下させない場合、あるいはアプリケーション性能がインテリジェントな無線選択（intelligent radio selection）に基づいて実際に改善されうる場合には、トラフィックを代替的な無線にオフロードすることが望ましい。
【０００６】
[0006]  あいにく、無線選択に影響を及ぼすために提案された解決策は、非効率的でコストがかかり、レガシーアプリケーション(legacy application）には適用できない場合がある。例えば、１つの提案された解決策は、使用のために好ましい無線を明示的に示すために、すべてのアプリケーションが変更されることを必要とするであろう。この解決策は、各ワイヤレスデバイスにおけるアプリケーションが無線選択を指定するためにアップグレードされる必要があり、各デバイスにおいて利用可能な無線リソースを考慮しなければならないという点において、非常に非効率的でコストがかかるであろう。さらに、このような解決策は、このようなアップグレードが可能でないレガシーアプリケーションでは実現可能でない場合がある。
【０００７】
[0007]  したがって、各アプリケーションが利用可能な最も望ましい無線を利用できるように、レガシーおよび非レガシーアプリケーションの両方にインテリジェントな無線選択を提供するように動作する効率的でコスト効果の高いメカニズムを有することが望ましい。
【発明の概要】
【０００８】
[0008]  一態様では、ワイヤレス通信の方法が開示される。この方法は、通信リソースの使用を望むアプリケーションからの要求をインタセプトする（intercepting）ことと、インタセプトされた要求を保留することとを含む。この方法はまた、保留された要求が解放されることができるかどうかを評価することと、その後、評価の結果に基づいて、保留された要求を解放することとを含む。
【０００９】
[0009]  別の態様では、評価するための時間および／または評価の結果は、エアリンク効率、ネットワークインジケーション（network indication）、ロケーション、コンテキストアウェアネス（context awareness）、一日の時刻（time of the day）、現在のネットワーク負荷、過去のネットワーク負荷パターン、および／またはランダム化された待ち時間（randomized wait time）、の関数（function）でありうる。
【００１０】
[0010]  別の態様が、メモリと、メモリに結合された少なくとも１つのプロセッサとを有するワイヤレス通信を開示する。（複数を含む）プロセッサは、通信リソースの使用を望むアプリケーションからの要求をインタセプトするために構成される。（複数を含む）プロセッサはまた、インタセプトされた要求を保留し、保留された要求が解放されることができるかどうかを評価するために構成される。（複数を含む）プロセッサは、評価の結果に基づいて、要求を解放する。
【００１１】
[0011]  別の態様では、装置が、通信リソースの使用を望むアプリケーションからの要求をインタセプトするための手段を含む。この装置はまた、インタセプトされた要求を保留するための手段と、保留された要求が解放されることができるかどうかを評価するための手段とを含む。この装置はまた、評価の結果に基づいて、保留された要求を解放するための手段を有する。
【００１２】
[0012]  別の態様が、ワイヤレスネットワークにおけるワイヤレス通信のためのコンピュータプログラム製品を開示する。コンピュータ可読媒体は、その上に記録されたプログラムコードを有し、それは、（複数を含む）プロセッサによって実行されるとき、（複数を含む）プロセッサに、通信リソースの使用を望むアプリケーションからの要求をインタセプトする動作と、インタセプトされた要求を保留する動作とを実行させる。このプログラムコードはまた、（複数を含む）プロセッサに、保留された要求が解放されることができるかどうかを評価させる。このプログラムコードはまた、（複数を含む）プロセッサに、評価の結果に基づいて、保留された要求を解放させる。
【００１３】
[0013]  これは、以下の詳細な説明がより良く理解されうるように、本開示の特徴および技術的利点をむしろ広く概説している。本開示のさらなる特徴および利点が以下に説明される。この開示が、本開示と同じ目的を果たすための他の構造を設計または修正するための基礎として容易に利用されうることは、当業者によって理解されるべきである。また、このような等価の構造が、添付の特許請求の範囲に記載される本開示の教示から逸脱しないことも、当業者によって理解されるべきである。さらなる目的および利点とともに、本開示の構成および動作の方法の両方について、本開示の特徴であると考えられる新規な特徴は、添付図と関連して考慮されるとき、以下の説明からより良く理解されるであろう。しかしながら、各々の図は、例示および説明のみの目的で提供され、本開示の限定の定義として意図されるものではないことが、明確に理解されるべきである。
【００１４】
[0014]  この中に記載される前述の態様は、添付の図面とともに考慮されるとき、以下の記載を参照することによって、より容易に明らかになるであろう。
【図面の簡単な説明】
【００１５】
【図１】図１は、インテリジェントな無線選択システムの態様を例示する例としてのネットワーク環境を示す。
【図２】図２は、インテリジェントな無線選択のための例としてのデバイスアーキテクチャを示す。
【図３】図３は、インテリジェントな無線選択を提供するために構成された例としてのデバイスを示す。
【図４】図４は、インテリジェントな無線選択を提供するための例としての方法を示す。
【図５】図５は、インテリジェントな無線選択を提供する例としての装置を示す。
【図６】図６は、インテリジェントな無線選択システムによって提供されるフローモビリティの態様を例示する例としてのネットワークを示す。
【図７】図７は、フローモビリティを提供するための例としての方法を示す。
【図８】図８は、フローモビリティを提供するための例としての方法を示す。
【図９】図９は、ユーザによる関与を受けて（engaged）いないときのユーザデバイスからの無線アクティビティの例を示す。
【図１０】図１０は、アプリケーションの無線要求を遅延および集約するための例としてのデバイスアーキテクチャを示す。
【図１１】図１１は、アプリケーションの無線要求を遅延および集約するための例としての方法を示す。
【図１２】図１２は、アプリケーションの無線要求を遅延および集約するための例としての方法を示す。
【図１３】図１３は、ネットワークへのアプリケーションアクセスを制御するための方法を例示する。
【詳細な説明】
【００１６】
[0028]  以下の説明は、各アプリケーションが、利用可能な最も望ましい無線を利用できるように、レガシーおよび非レガシーアプリケーションの両方にインテリジェントな無線選択を提供するように動作するインテリジェントな無線選択システムのインプリメンテーション（implementations）を説明する。
【００１７】
[0029]  この中に記載される技術は、符号分割多元接続（ＣＤＭＡ）ネットワーク、時分割多元接続（ＴＤＭＡ）ネットワーク、周波数分割多元接続（ＦＤＭＡ）ネットワーク、直交ＦＤＭＡ（ＯＦＤＭＡ）ネットワーク、シングルキャリアＦＤＭＡ（ＳＣ−ＦＤＭＡ）ネットワーク等のようなさまざまなワイヤレス通信ネットワークのために使用されうる。「ネットワーク」および「システム」という用語は、しばしば交換可能に用いられる。ＣＤＭＡネットワークは、ユニバーサル地上無線アクセス（ＵＴＲＡ）、ＣＤＭＡ２０００等のような無線技術をインプリメントしうる。ＵＴＲＡは、広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）および低チップレート（ＬＣＲ）を含む。ＣＤＭＡ２０００は、ＩＳ−２０００規格、ＩＳ−９５規格、およびＩＳ−８５６規格をカバーする。ＴＤＭＡネットワークは、グローバル移動体通信システム（ＧＳＭ）（登録商標）のような無線技術をインプリメントしうる。ＯＦＤＭＡネットワークは、発展型ＵＴＲＡ（Ｅ−ＵＴＲＡ）、ＩＥＥＥ ８０２．１１、ＩＥＥＥ ８０２．１５、ＩＥＥＥ ８０２．１６、ＩＥＥＥ ８０２．２０、フラッシュ−ＯＦＤＭ（登録商標）等のような無線技術をインプリメントしうる。ＵＴＲＡ、Ｅ−ＵＴＲＡ、およびＧＳＭは、ユニバーサル・モバイル・テレコミュニケーション・システム（ＵＭＴＳ）の一部である。ロングタームエボリューション（ＬＴＥ）は、Ｅ−ＵＴＲＡを用いるＵＭＴＳの最新の（upcoming）リリースである。ＵＴＲＡ、Ｅ−ＵＴＲＡ、ＧＳＭ、ＵＭＴＳ、およびＬＴＥは、「第３世代パートナシッププロジェクト」（３ＧＰＰ）と命名された組織からの文書に説明されている。ＣＤＭＡ２０００は、「第３世代パートナシッププロジェクト２」（３ＧＰＰ２）と命名された組織からの文書に説明されている。これらのさまざまな無線技術および規格は、当該技術分野において周知である。
【００１８】
[0030]  図１は、インテリジェントな無線選択システムの態様を例示する例としてのネットワーク環境１００を示す。ネットワーク環境１００は、デバイス１０２と、通信ネットワーク１０４とを備える。デバイス１０２は、対応する無線チャネル１０６を使用してネットワーク１０４と通信するための複数の無線を備える。デバイス１０２はまた、特定のアプリケーションによって使用される特定の無線を選択するように動作するインテリジェントな無線選択システム１０８を備える。
【００１９】
[0031]  動作中、デバイス１０２は、複数の無線のうちの任意のものを使用してネットワーク１０４とインタフェースできるアプリケーションを実行する。例えば、実行中のアプリケーションは、ネットワーク１０４との通信のためにネットワークリソースを要求するために、ソケットレイヤ呼出し（socket layer call）のようなネットワーキング機能の呼出し（networking function call）を発行する。従来のシステムは、典型的に、所定の無線リソースをアプリケーションにバインドする（bind）ために、デフォルトルーティングの設定（default routing configuration）に基づいてソケットレイヤ呼出しを処理する。
【００２０】
[0032]  しかしながら、さまざまなインプリメンテーションでは、インテリジェントな無線選択システムは、アプリケーションからのネットワーキング機能の呼出しをインタセプトして、アプリケーションによる使用に適切な無線を選択するために動作する。その後、アプリケーションをネットワークリソース（すなわち、選択されている無線）にバインドするために、バインディング（binding）処理が実行される。インテリジェントな無線選択システムは、無線リソースを使用するために、アプリケーションの通常動作に応答して機能するので、このシステムは、アプリケーションの変更またはアップグレードなく、レガシーおよび非レガシーアプリケーションの両方で動作しうる。インテリジェントな無線選択システムのより詳細な説明が、以下に提供される。
【００２１】
[0033]  図２は、インテリジェントな無線選択システムを提供する例としてのデバイスアーキテクチャ２００を示す。アーキテクチャ２００は、接続性エンジン２０２、アプリケーションレイヤ（application layer）２０４、ソケットレイヤ（socket layer）２０６、および無線ユニット（radio unit）２０８を備える。アプリケーションレイヤ２０４は、無線ユニット２０８の無線のうちの1つまたは複数を使用して外部ネットワークと通信し、かつさまざまな機能を提供するために実行されうるアプリケーションを備える。ソケットレイヤ２０６は、特定のアプリケーションと無線との間でバインディングを確立するために、呼出し（call）（または要求（request））を発行する。接続性エンジン２０２は、ここに示されるさまざまな態様にしたがって、インテリジェントな無線選択を提供するように動作する。
【００２２】
[0034]  動作中、接続性エンジン２０２は、アプリケーションレイヤ２０４におけるアプリケーションからのソケットレイヤ呼出しのようなネットワーキング機能の呼出しをインタセプトする。一旦ネットワーキング機能の呼出しがインタセプトされると、接続性エンジン２０２は、無線ユニット２０８内の複数の候補無線から理想的な無線／インタフェースを選択するように動作する。例えば、接続性エンジン２０２は、さまざまな選択基準に基づいて無線を選択する。無線／インタフェースが選択されると、接続性エンジン２０２は、アプリケーションと選択された無線／インタフェースとの間で接続を確立するために、ソケットレイヤ２０６のソケットレイヤ機能を使用する。例えば、ソケットレイヤ機能は、接続関数「Ｃｏｎｎｅｃｔ（）」、バインド関数「Ｂｉｎｄ（）」、セットソケットオプション関数「Ｓｅｔｓｏｃｋｏｐｔ（）」、および／またはその他任意の適切なソケットレイヤ関数を含みうる。
【００２３】
[0035]  したがって、デバイスアーキテクチャ２００は、デバイスにおいて実行中のレガシーおよび非レガシーアプリケーションの両方が最も好ましい無線／インタフェースにバインドされうるように、インテリジェントな無線選択を提供する。
【００２４】
[0036]  図３は、インテリジェントな無線選択を提供する例としてのワイヤレスデバイス３００を示す。デバイス３００は、プロセッサ３０２、メモリ３０４、無線コンポーネント３１２、アプリケーションレイヤコンポーネント３０６、ソケットレイヤコンポーネント３１０、および接続性エンジンコンポーネント３０８を備え、これらすべては、通信バス３１４を使用して通信するように結合される。デバイス３００は、１つのインプリメンテーションにすぎず、他のインプリメンテーションが可能であることに留意されたい。
【００２５】
[0037]  一態様では、プロセッサ３０２は、ＣＰＵ、プロセッサ、ゲートアレイ、ハードウェアロジック、メモリエレメント、および／またはハードウェア実行ソフトウェアのうちの少なくとも１つを備える。プロセッサ３０２は、デバイス３００において実行中のアプリケーションが最も望ましい無線にバインドされうるように、デバイス３００の動作を制御するように動作する。１つのインプリメンテーションでは、プロセッサ３０２は、複数の機能のうちの任意のものを実行することに関連するコンピュータ可読命令を実行するように構成される。例えば、プロセッサ３０２は、インテリジェントな無線選択を達成するために、デバイス３００から受信または通信された情報を解析するように動作する。別の態様では、プロセッサ３０２は、インテリジェントな無線選択を達成するために、メモリ３０４、無線コンポーネント３１２、アプリケーションレイヤコンポーネント３０６、ソケットレイヤコンポーネント３１０、および／または接続性エンジンコンポーネント３０８によって利用されうる情報を生成するように動作する。
【００２６】
[0038]  無線コンポーネント３１２は、複数の無線チャネル３１６を使用する外部通信ネットワークのような複数の外部エンティティとデバイス３００をインタフェースするために使用されうる複数の無線／インタフェースを提供するように構成されたハードウェアおよび／またはプロセッサ実行ソフトウェアを備える。例えば、無線コンポーネント３１２は、セルラ、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈを使用して通信するための無線／インタフェース、または無線チャネル３１６を使用して通信ネットワークと通信するためその他任意の技術を提供する。
【００２７】
[0039]  アプリケーションレイヤコンポーネント３０６は、デバイス３００上で１つまたは複数のアプリケーションを記憶および／または実行するために構成されるハードウェアおよび／またはプロセッサ実行ソフトウェアを備える。１つのインプリメンテーションでは、アプリケーションレイヤコンポーネント３０６は、外部ネットワークまたはシステムと通信する目的で無線／インタフェースへの接続を要求するような、ネットワーキングサービスを要求するためのネットワーキング機能の呼出しをアプリケーションが開始することを可能にするために構成される。
【００２８】
[0040]  ソケットレイヤコンポーネント３１０は、ソケットレイヤ機能を実行するように構成されたハードウェアおよび／またはプロセッサ実行ソフトウェアを備える。１つのインプリメンテーションでは、ソケットレイヤ機能は、Ｃｏｎｎｅｃｔ（）、Ｂｉｎｄ（）、およびＳｅｔｓｏｃｋｏｐｔ（）などの関数を備える。Ｃｏｎｎｅｃｔ（）関数は、アプリケーションと特定の無線／インタフェースとの間の接続を確立するように動作する。例えば、特定の無線／インタフェースは、無線コンポーネント３１２によって提供される複数の候補無線から選択されうる。ある態様では、ソケットレイヤコンポーネント３１０は、さまざまなソケットレイヤ機能またはコマンドを実行するように構成される。
【００２９】
[0041]  接続性エンジンコンポーネント３０８は、アプリケーションによる使用のために特定の無線を選択するために、システムリソースの評価（assessment）を実行するように構成されるハードウェアおよび／またはプロセッサ実行ソフトウェアを備える。さまざまなインプリメンテーションでは、接続性エンジンコンポーネント３０８は、それに限定されるものではないが、次の選択基準：ユーザポリシー、オペレータポリシー、無線メトリクス、アプリケーション要件、ネットワークユーザビリティ、ベンダーにより提供されるメトリクス、およびアクセスポイントの可用性など、のうちの１つまたは複数に基づいて特定の無線を選択するために、集中型無線コントローラとして構成される。
【００３０】
[0042]  ユーザポリシーは、デバイスにおいて実行中のアプリケーションによる無線アクセスに関する、デバイスユーザによって設定されるポリシー（the policy set by the device user）を含みうる。オペレータポリシーは、デバイスまたはアプリケーションによるネットワークアクセスに関する、ネットワークオペレートによって設定されるポリシー（the policy set by network operates）を含みうる。無線メトリクスは、特定のアプリケーションまたは動作環境に対して最も好ましい無線を選択するために使用される無線性能の測定または他のタイプの測定を含みうる。アプリケーション要件は、帯域幅要件またはレイテンシ／性能の要件のような、要求しているアプリケーションに関連づけられる要件を含みうる。ネットワークユーザビリティは、特定の無線インタフェース上での、特定のネットワークの可用性に関する情報を含みうる。ベンダーにより提供されるメトリクスは、受信信号強度インジケーションおよびパケット損失レートなどの無線メトリクスから、特定の無線インタフェースのために利用可能なスループットおよびレイテンシに変換（translate）するための情報を含みうる。アクセスポイントの可用性は、他のデバイスからの多くのトラフィックにより混雑した、または無線リンクを構成することができるがネットワークにパケットを転送しないアクセスポイントについての固有の識別子を指定する情報を含みうる。
【００３１】
[0043]  メモリ３０４は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、またはデバイス３００において情報を記憶および取得することを可能にするように動作するその他任意のタイプのメモリデバイスを備える。１つのインプリメンテーションでは、メモリ３０４は、プロセッサ３０２によって実行されるコンピュータ可読命令を記憶するように構成される。メモリ３０４はまた、プロセッサ３０２、無線コンポーネント３１２、アプリケーションレイヤコンポーネント３０６、ソケットレイヤコンポーネント３１０、および／または接続性エンジンコンポーネント３０８のうちの任意のものによって生成されるデータを含む、複数の他のタイプのデータのうちの任意のものを記憶するように構成されうる。メモリ３０４は、ランダムアクセスメモリ、バッテリーバックアップ式メモリ、ハードディスク、磁気テープ等を含む、多数の異なる構成で構成されうる。また、圧縮および自動バックアップなどのさまざまな機能も、メモリ３０４上でインプリメントされうる。
【００３２】
[0044]  メモリ３０４は、プレロードライブラリ（pre-load library）３１８と、ネットワーキングライブラリ（networking library）３２０とを記憶するように構成される。１つのインプリメンテーションでは、ネットワーキングライブラリ３２０は、コンピュータネットワークをわたる通信のために最も一般的にプロセス間のコミュニケーションを実行する、Ｃプログラミング言語のアプリケーションを開発するための関数を含むＰＯＳＩＸまたはＢｅｒｋｅｌｅｙソケットのアプリケーションプログラミングインタフェース（ＡＰＩ）を備える。例えば、ＰＯＳＩＸ ＡＰＩは、Ｃｏｎｎｅｃｔ（）、Ｂｉｎｄ（）、およびＳｅｔｓｏｃｋｏｐｔ（）などの関数を備える。
【００３３】
[0045]  プレロードライブラリ３１８は、アプリケーションレイヤ３０６におけるアプリケーションからのソケット呼出しをインタセプトするために使用される。例えば、プレロードライブラリ３１８は、ネットワーキングライブラリ３２０によって提供されるＡＰＩ関数の少なくともサブセットを備え、ネットワーキングライブラリ３２０よりも高い優先順位で実行環境にリンクされる。
【００３４】
[0046]  動作中、このシステムは、デバイスが最初に起動するときにリンカ（linker）が使用する環境を構成する。１つのインプリメンテーションでは、リンカは、通常のライブラリリンク付けを開始する前に、ライブラリに関する環境をチェックしてロードするように動作する。典型的に、リンカは、ネットワーキングＡＰＩを提供するネットワーキングライブラリ３２０をロードする。アプリケーションは、そのインタフェースを使用して、ソケットを作成および接続して、ネットワーク通信を確立する。例えば、１つのインプリメンテーションでは、リンカは、アプリケーションとその依存性をスキャンして、すべてがメモリ中にロードされるようにする。リンカは、他のライブラリよりも前にプレロードライブラリ３１８をロードし、後続してロードされるライブラリが充足し、かつプレロードライブラリ３１８を使用することができるように、ルックアップ（look-ups）を事前設定（populate）するために構成される。
【００３５】
[0047]  プレロードライブラリ３１８は、ネットワーキングライブラリ３２０が提供するＡＰＩソケットの少なくともサブセットを備える。アプリケーションが、ソケットを作成または接続するために、ネットワーキング機能の呼出しを行った場合、この呼出しは、プレロードライブラリ３１８によって処理（またはインタセプト）される。例えば、アプリケーションは、Ｃｏｎｎｅｃｔ（）関数に提供されるＩＰアドレス、宛先、およびファイル記述子などの引数または属性を、Ｃｏｎｎｅｃｔ（）関数のための関数ポインタに提供する。
【００３６】
[0048]  その後、プレロードライブラリ３１８は、指定された接続に最も適切なネットワークインタフェースを選択するために、集中型無線制御エンティティへの要求を生成する。例えば、プレロードライブラリ３１８は、使用される適切な無線を決定するために、この要求を接続性エンジンコンポーネント３０８に送る。適切な無線が選択された後、制御がプレロードライブラリ３１８に戻される前に接続セットアップを完了させるために、ネットワーキングライブラリ３２０のソケットＡＰＩへの呼出しが実行される。例えば、接続性エンジンコンポーネント３０８は、選択された無線を要求しているアプリケーションにバインドするために、ネットワーキングライブラリ３２０の機能を呼出すように動作する。
【００３７】
[0049]  接続性エンジンコンポーネント３０８は、さまざまな方法で、複数の候補無線から無線をインテリジェントに選択するように構成される。例えば、接続性エンジンコンポーネント３０８は、上記の選択基準のうちの１つまたは複数を使用して無線を選択するように構成されうる。いったん無線が選択されると、接続性エンジンコンポーネント３０８は、無線をアプリケーションにバインドする。例えば、１つのインプリメンテーションでは、バインディングは、当初のネットワーキングライブラリ３２０への呼出しによって実行される。ランタイムリンカは、特定のライブラリ識別子と関数識別子とを指定して、この情報を記憶することが可能なエキスパートインタフェースを提供する。したがって、接続性エンジンコンポーネント３０８とプレロードライブラリ３１８とにおける機能は、選択された無線をアプリケーションにバインドするために、ネットワーキングライブラリ３２０において、Ｂｉｎｄ（）関数のような関数に容易にアクセスしうる。インテリジェントな無線選択を提供するためのデバイス３００の動作のより詳細な説明が、以下に提供される。
【００３８】
[0050]  さまざまなインプリメンテーションでは、インテリジェントな無線選択システムは、コンピュータ可読媒体上に記憶または組み込まれた１つまたは複数のプログラム命令（「命令」）または「コード」のセットを有するコンピュータプログラム製品を備える。少なくとも１つのプロセッサ、例えば、プロセッサ３０２によってコードが実行されるとき、それらの実行は、ここに説明されるインテリジェントなインタフェース選択システムの機能を提供するように、プロセッサ３０２にデバイス３００を制御させる。例えば、コンピュータ可読媒体は、フロッピー（登録商標）ディスク、ＣＤＲＯＭ、メモリカード、フラッシュメモリデバイス、ＲＡＭ、ＲＯＭ、あるいはデバイス３００にインタフェースするその他任意のタイプのメモリデバイスまたはコンピュータ可読媒体を備える。別の態様では、コードのセットは、外部デバイスまたは通信ネットワークリソースからデバイス３００にダウンロードされうる。コードのセットは、実行されるとき、ここに説明されるインテリジェントなインタフェース選択システムの態様を提供するように動作する。
【００３９】
[0051]  図４は、インテリジェントな無線選択を提供するための例としての方法４００を示す。明確さのために、方法４００は、図３で示されたデバイス３００を参照して以下に説明される。１つのインプリメンテーションでは、プロセッサ３０２は、以下に説明される機能を実行するようにデバイス３００の機能エレメント（functional element）を制御するための１つまたは複数のコードのセットを実行する。
【００４０】
[0052]  ブロック４０２では、アプリケーションが起動される。このアプリケーションは、アプリケーションレイヤコンポーネント３０６の一部であるレガシーまたは非レガシーアプリケーションでありうる。例えば、これらアプリケーションは、無線コンポーネント３１２において利用可能な無線を使用してワイヤレスネットワークに接続するために、ネットワーキング機能の呼出しを生成するネットワークブラウザでありうる。
【００４１】
[0053]  ブロック４０４では、プレロードライブラリが構成およびロードされる。例えば、プレロードライブラリ３１８は、典型的に、通信ネットワークを評価するためにアプリケーションによって使用される、ネットワーキングライブラリ３２０において提供されるネットワーキング機能のサブセットを備える。プレロードライブラリ３１８におけるネットワーキング機能は、デバイスにおいて実行中のアプリケーションからのネットワーキング機能の呼出しをインタセプトするために構成される。例えば、プレロードライブラリ３１８は、デバイス３００において実行中のアプリケーションによるソケット呼出しをインタセプトするために使用されうるＰＯＳＩＸソケット関数を備える。１つのインプリメンテーションでは、プレロードライブラリ３１８は、メモリ３０４中に記憶される。
【００４２】
[0054]  １つのインプリメンテーションでは、プレロードライブラリ３１８の機能は、呼出し側のアプリケーションから渡された引き数を受け取り、これらの引き数を使用して、接続性エンジンコンポーネント３０８に対する要求を生成して、アプリケーションの目的に最も適切な無線を選択するように構成される。
【００４３】
[0055]  ブロック４０６では、プレロードライブラリは、実行環境にリンクされる。例えば、プロセッサ３０２は、ネットワーキングライブラリ３２０よりも高い優先順位で、プレロードライブラリ３１８を実行環境にリンクする。したがって、アプリケーションによるネットワーキング機能の呼出しは、プレロードライブラリ３１８における機能によってインタセプトおよび処理され、ネットワーキングライブラリ３２０における同様の機能によって処理されないであろう。
【００４４】
[0056]  ブロック４０８では、アプリケーションからのネットワーキング機能の呼出しがインタセプトされる。例えば、ネットワーキング機能の呼出しは、Ｃｏｎｎｅｃｔ（）関数のような、ＰＯＳＩＸソケット関数呼出しでありうる。アプリケーションは、外部ネットワークとの通信を可能にするために、無線に接続するためのネットワーキング機能の呼出しを生成する。ネットワーキングライブラリ３２０よりも高い優先順位で、プレロードライブラリ３１８を実行環境にリンクすることにより、ネットワーキング機能の呼出しは、プレロードライブラリ３１８における機能によってインタセプトされる（または処理される）。
【００４５】
[0057]  ブロック４１０では、プレロードライブラリ３１８における呼出された機能は、アプリケーションによる使用に適切な無線を選択するために、接続性エンジンコンポーネント３０８への選択要求を生成する。この要求は、アプリケーションによる使用に適切な無線を選択するために、接続性エンジンコンポーネント３０８によって使用される選択基準の一部である任意の情報を含む。
【００４６】
[0058]  ブロック４１２では、選択基準が評価される。１つのインプリメンテーションでは、接続性エンジンコンポーネント３０８は、上述された選択基準を評価するように動作する。例えば、接続性エンジン３０８は、無線コンポーネント３１２と通信して、選択基準の一部である無線の指標（radio metrics）を評価する。
【００４７】
[0059]  ブロック４１４では、選択基準の評価に基づいて、無線が選択される。例えば、接続性エンジンコンポーネント３０８は、選択基準に最も良く一致する無線を選択するように動作する。
【００４８】
[0060]  ブロック４１６では、選択された無線が、アプリケーションにバインドされる。例えば、１つのインプリメンテーションでは、接続性エンジンコンポーネント３０８は、ネットワーキングライブラリ３２０のＢｉｎｄ（）関数を呼出して、選択された無線をアプリケーションにバインドする。例えば、接続性エンジンコンポーネント３０８は、ネットワーキングライブラリ３２０と、プレロードライブラリ３１８によってインタセプトされずに、どのようにその機能に直接的にアクセスするかとを認識している。
【００４９】
[0061]  ブロック４１８では、アプリケーションは、その後、ネットワーク通信のために選択された無線を利用する。
【００５０】
[0062]  オプション的な動作では、この方法は、ブロック４１２に進み、そこで、接続性エンジンコンポーネント３０８は、現在の無線が選択基準に最も良く一致するかどうかを決定するために、選択基準の周期的な評価を実行するように動作する。選択基準の別の評価の後に、現在の無線以外の無線が、選択基準に最も良く一致することが決定された場合には、接続性エンジン３０８は、新しい接続のために、異なる無線を選択する接続を再開させるようにアプリケーションをトリガするための手段として、接続を破棄しうる。したがって、オプション的な動作は、選択基準が周期的に評価されることを可能にして、所望の通信を実施するために最も適切な無線が選択されることを保証する。
【００５１】
[0063]  したがって、方法４００は、レガシーおよび非レガシーアプリケーションでの使用のためのインテリジェントな無線選択を提供する。方法４００は、単に１つのインプリメンテーションに過ぎず、方法４００の動作は、再構成されることができ、さもなければ、その他のインプリメンテーションが可能であるように修正されうることに留意されたい。
【００５２】
[0064]  図５は、インテリジェントな無線選択を提供する例としての装置５００を示す。例えば、装置５００は、図１で示されたデバイス１０２としての使用に適している。ある態様では、装置５００は、ここに説明されるようなインテリジェントな無線選択システムの態様を提供するように構成される１つ以上のモジュールを備える少なくとも１つの集積回路によってインプリメントされる。例えば、ある態様では、各モジュールは、ハードウェアおよび／またはハードウェア実行ソフトウェアを備える。
【００５３】
[0065]  装置５００は、無線アクセスを望むアプリケーションからのネットワーキング機能の呼出しをインタセプトするための手段（５０２）を備える第１のモジュールを備え、これは、ある態様では、プレロードライブラリ３１８を備える。
【００５４】
[0066]  装置５００はまた、選択基準に基づいて、複数の候補無線から無線を選択するための手段（５０４）を備える第２のモジュールを備え、これは、ある態様では、接続性エンジンモジュール３０８を備える。
【００５５】
[0067]  装置５００はまた、無線をアプリケーションにバインドするための手段（５０６）を備える第３のモジュールを備え、これは、ある態様では、接続性エンジンモジュール３０８を備える。
【００５６】
[0068]  インテリジェントなインタフェース選択に加えて、システムは、以下に説明されるように、フローモビリティを提供するように動作する。
【００５７】
[0069]  図６は、インテリジェントな無線選択システムによって提供されるフローモビリティの態様を例示する例としての通信ネットワーク６００を示す。通信ネットワーク６００は、１つ以上の通信インタフェース６０６を使用して、ネットワーク６０４と通信するように構成されるデバイス６０２を備える。例えば、通信インタフェース６０６は、セルラ、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ、およびその他任意の適切な通信技術を備える。
【００５８】
[0070]  動作中、デバイス６０２におけるアプリケーションは、ネットワークリソースと通信するための接続要求を生成する。上述されたように、システム１０８は、要求を満たすためにインテリジェントなインタフェース選択を実行する。フローモビリティの態様を提供するために、このシステムは、ホームエージェント６０８とデバイス６０２との間でルーティングするためのパケットをカプセル化するために、インタフェース６０６から選択される特定の通信インタフェースを指定するフローバインディングルール（flow binding rule）を動的に生成するように動作する。
【００５９】
[0071]  従来のシステムでは、ＩＰフローバインディングは、通常、ソースＩＰアドレス、宛先ＩＰアドレス、ソースポート、宛先ポート、およびプロトコルから成る５タプル（5-tuple）で記述される。したがって、この記述は、ハンドセット６０２によってホームエージェント６０８に提供され、この記述に一致するパケットは、それに応じてホームエージェント６０８によってルーティングされるであろう。あいにく、５タプルを使用してフローを登録することは、変更するタプルがソースポートだけであっても、５タプルのすべての要素が送信されるので、帯域幅効率が良くない場合がある。
【００６０】
[0072]  さまざまなインプリメンテーションでは、このシステムは、最も適切な無線／インタフェース上でデータフローが送信されうるように、接続が開始されるときにフローバインディングルールを動的に生成するように動作する。例えば、１つのインプリメンテーションでは、このシステムは、ネットワーク通信のためにアプリケーションによって使用される一時的な（ephemeral）ポートを割り当てる。その後、システム１０８は、一時的なポートのみに基づいてフローバインディングルールを動的に生成し、それは、特定のデータフローが、一時的なポートと関連づけられるべきであることと、特定の無線／インタフェース上で送信されるべきであることとを示す。バインディングルールにおける一時的なポートのみを利用することによって、５タプルすべてをホームエージェントに送信する必要がなく、これは、送信帯域幅を節約するので、従来のシステムよりも効率的である。
【００６１】
[0073]  別のインプリメンテーションでは、ＩＰｖ６アドレスが、接続のために動的に生成される。例えば、モバイルノードプリフィックスに属する、接続ごとのＩＰｖ６アドレスが生成され、モバイルＩＰアドレスに割り当てられる。次に、接続ごとのＩＰｖ６アドレスのみに基づいて、フローバインディングルールが動的に生成される。
【００６２】
[0074]  上記のいずれの場合においても、その後、バインディングルールは、ネットワーク６０４上のホームエージェント（ＨＡ）６０８にシグナリングされる。ＨＡ ６０８は、バインディングルールにしたがって、パケットをデバイスにルーティングするように動作する。例えば、対応ノード（ＣＮ）６１０からデバイスに送られたデータパケットは、ＨＡ ６０８において受信され、その後、バインディングルールを使用してデバイス６０２へルーティングされる。以下の方法は、インテリジェントな選択システムによって提供されるフローモビリティの態様を説明する。
【００６３】
[0075]  図７は、フローモビリティを提供するための例としての方法７００を示す。明確さのために、方法７００は、図３で示されたデバイス３００および図６で示されたネットワーク６００を参照して、以下に説明される。１つのインプリメンテーションでは、プロセッサ３０２は、以下に説明される機能を実行するようにデバイス３００の機能エレメントを制御するための１つまたは複数のコードのセットを実行する。
【００６４】
[0076]  ブロック７０２では、ソケットがアプリケーションによって作成される。例えば、デバイス６０２において実行中のアプリケーションは、ネットワーク６０４の一部であるネットワークリソースからデータフローを受信するためのソケットを作成する。
【００６５】
[0077]  ブロック７０４では、アプリケーションからのネットワーキング機能の呼出しがインタセプトされる。例えば、ネットワーキング機能の呼出しは、Ｃｏｎｎｅｃｔ（）関数のような、ＰＯＳＩＸソケット関数の呼出しでありうる。アプリケーションは、外部ネットワークとの通信を可能にするために、無線に接続するためのネットワーキング機能の呼出しを生成する。ネットワーキングライブラリ３２０よりも高い優先順位で、プレロードライブラリ３１８を実行環境にリンクすることにより、ネットワーキング機能の呼出しは、プレロードライブラリ３１８における機能によってインタセプトされる（または処理される）。
【００６６】
[0078]  ブロック７０６では、インテリジェントなインタフェース選択が、ネットワーキング機能の呼出しを満たすために実行される。例えば、方法４００のブロック４０８乃至４１４は、アプリケーションによる使用のための無線／インタフェースを選択するために実行される。したがって、デバイス６０２によって提供されるインタフェース６０６のうちの１つが、アプリケーションによる使用のために選択される。
【００６７】
[0079]  ブロック７０８では、一時的なローカルポートが割り当てられる。１つのインプリメンテーションでは、接続性エンジン３０８は、一時的なローカルポートをアプリケーションに割り当てるように動作する。例えば、一時的な（すなわち、短命の（short-lived））ポートは、予め定義された範囲から選択される、ＩＰ通信のためのトランスポートプロトコルポートである。この割り当ては、一時的なものであり、通信セッションの持続期間の間のみ有効である。通信セッションの完了の後、このポートは、再使用のために利用可能になる。
【００６８】
[0080]  ブロック７１０では、フローバインディングルールは、一時的なポートのみに基づいて動的に生成される。１つのインプリメンテーションでは、接続性エンジン３０８は、割り当てられた一時的なローカルポートのみに基づいて、バインディングルールを動的に生成するように動作する。
【００６９】
[0081]  ブロック７１２では、フローバインディングルールは、デバイスと関連づけられたホームエージェントへシグナリングされる。例えば、接続性エンジン３０８は、フローバインディングルールをホームエージェント６０８に送信するように動作する。その後、ホームエージェント６０８は、適切な無線／インタフェースを使用してデバイス６０２にフローをルーティングするために、フローバインディングルールを使用する。
【００７０】
[0082]  したがって、方法７００は、インテリジェントな無線選択システムにおいてフローモビリティを提供する。方法７００は、単に１つのインプリメンテーションに過ぎず、方法７００の動作は、再構成されることができ、さもなければ、その他のインプリメンテーションが可能であるように修正されうることに留意されたい。
【００７１】
[0083]  図８は、フローモビリティを提供するための例としての方法８００を示す。明確さのために、方法８００は、図３で示されたデバイス３００および図６で示されたネットワーク６００を参照して、以下に説明される。１つのインプリメンテーションでは、プロセッサ３０２は、以下に説明される機能を実行するようにデバイス３００の機能エレメントを制御するための１つまたは複数のコードのセットを実行する。
【００７２】
[0084]  ブロック８０２では、ソケットがアプリケーションによって作成される。例えば、デバイス６０２において実行中のアプリケーションが、ネットワーク６０４の一部であるネットワークリソースからデータフローを受信するためのソケットを作成する。
【００７３】
[0085]  ブロック８０４では、アプリケーションからのネットワークキング機能の呼出しがインタセプトされる。例えば、ネットワークキング機能の呼出しは、Ｃｏｎｎｅｃｔ（）関数のような、ＰＯＳＩＸソケット関数呼出しでありうる。アプリケーションは、外部ネットワークとの通信を可能にするために、無線に接続するためのネットワークキング機能の呼出しを生成する。ネットワーキングライブラリ３２０よりも高い優先順位で、プレロードライブラリ３１８を実行環境にリンクすることにより、ネットワークキング機能の呼出しは、プレロードライブラリ３１８における機能によってインタセプトされる（または処理される）。
【００７４】
[0086]  ブロック８０６では、インテリジェントなインタフェース選択が、ネットワークキング機能の呼出しを満たすために実行される。例えば、方法４００のブロック４０８乃至４１４は、アプリケーションによる使用のための無線／インタフェースを選択するために実行される。したがって、デバイス６０２によって提供されるインタフェース６０６のうちの１つが選択される。
【００７５】
[0087]  ブロック８０８では、モバイルノードプリフィックスに属する、接続ごとのＩＰｖ６アドレスが生成される。例えば、接続ごとのＩＰｖ６アドレスは、接続性エンジン３０８によって生成される。
【００７６】
[0088]  ブロック８１０では、接続ごとのＩＰｖ６アドレスが、モバイルＩＰアドレスに割り当てられる。例えば、この割り当ては、接続性エンジン３０８によって実行される。
【００７７】
[0089]  ブロック８１２では、フローバインディングルールは、接続ごとのＩＰｖ６アドレスのみに基づいて動的に生成される。１つのインプリメンテーションでは、接続性エンジン３０８は、接続ごとのＩＰｖ６アドレスのみに基づいて、バインディングルールを動的に生成するように動作する。これは、ポートまたは宛先アドレスのような他のパラメータが必要でなく、かつホームエージェントの処理リソースを消費するであろうことから、効率的な帯域幅の利用を達成する。
【００７８】
[0090]  ブロック８１４では、フローバインディングルールは、デバイスと関連づけられたホームエージェントへシグナリングされる。例えば、接続性エンジン３０８は、フローバインディングルールをホームエージェント６０８に送信するように動作する。その後、ホームエージェント６０８は、適切な無線／インタフェースを使用してデバイス６０２にフローをルーティングするために、フローバインディングルールを使用する。
【００７９】
[0091]  したがって、方法８００は、インテリジェントな無線選択システムにおいてフローモビリティを提供する。方法８００は、単に１つのインプリメンテーションに過ぎず、方法８００の動作は、再構成されることができ、さもなければ、その他のインプリメンテーションが可能であるように修正されうることに留意されたい。
【００８０】
[0092]  スマートフォン、携帯情報端末等のようなユーザデバイスでは、ソフトウェアアプリケーションは、ユーザがデバイスをアクティブに使用していないにもかかわらず、動作し続けうる。ソーシャルネットワーキングアプリケーション、電子メールまたはその他の通信アプリケーション、データフィード（data feed）等のようなアプリケーション（ポピュラーな例は、Ｆａｃｅｂｏｏｋ、Ｇｍａｉｌ、Ｍａｒｋｅｔ、Ｔｗｉｔｔｅｒ等を含む）は、ユーザがデバイスを使用していないにもかかわらず、データを送受信し続けうる。
【００８１】
[0093]  図９は、ユーザがデバイスと対話せず、画面がオフである、おおよそ２時間の期間中のユーザデバイスに関するアプリケーションアクティビティのサンプルレベルを示す。図に示されるように、このような状況下でさえも、デバイスが表面上は使用中でないときでも動作し続けるアプリケーションにより、アクティビティ（activity）におけるスパイク（spike）が見られる。これらアプリケーションによるアクティビティは、無線ユニット２０８における無線等のような通信リソースを利用しうる。
【００８２】
[0094]  このようなアプリケーションは、アイドルモードから接続モードへのユーザデバイスによる頻繁な遷移をトリガしうる、あるいは、それらは、ユーザデバイスがアイドルモードまたは間欠受信（discontinuous reception： ＤＲＸ）のような他の代替接続モードに入ることを他の方法で阻害しうる。ユーザがデバイスにアクティブに関与していないときのこれらアプリケーションによるこのような高い（elevate）レベルの無線アクティビティは、無線ネットワークの負荷の上での、望まれない、増大される、バッテリ寿命の早期消耗（premature drain）、またはその他の望ましくない影響をもたらしうる。
【００８３】
[0095]  ここに開示される技術および構造を用いて、デバイスは、バックグラウンドアプリケーションからデータをキャプチャし、無線リソースが起動され、アプリケーションデータが転送され、タスクが同期された方法で実行され得る所望の点まで、それらを保留するために、アプリケーションプログラムインタフェース（ＡＰＩ）（例示的な目的のために、ラッパー（wrapper）と呼ばれる）を提供するレイヤを用いることができる。このようなタスク／データ要求を集約することによって、ユーザデバイスを頻繁にウェィクすること（waking）を低減させ、ユーザがデバイスにアクティブに関与していない期間中にその他の通信リソースが保たれる。
【００８４】
[0096]  図１０は、上に説明されたようなアプリケーションイベントを集約するのに有用なアーキテクチャのサンプルブロック図を示す。示されるように、複数のブロックは、アプリケーションプロセッサ１０５０とモデムプロセッサ１０６０との間で分割されているが、さまざまな機能は、図１０の例とは異なって編成されうる。アプリケーション１００２は、アプリケーション接続エンジン１００８およびハイレベルオペレーティングシステム（ＨＬＯＳ）１００６と相互作用しうる。アプリケーション接続エンジン１００８は、モデム接続エンジン１０１０と通信しうる。モデム接続エンジンは、無線ユニット２０８およびその中の無線などの通信リソースを管理しうる。ラッパー１００４は、アプリケーション１００２とＨＬＯＳ １００６との間でデータをキャプチャすることが可能である。ラッパー１００４は、ユーザが非アクティブな期間中に、アプリケーション１００２からのデータを集約し、それらを動作／送信のためにＨＬＯＳ １００６および最終的には無線ユニット２０８に解放する前に、決定された時間までそれらを保留しうる。一態様では、ラッパー１００４は、キャプチャされたデータを保留し、その後、保留されたデータが解放されることができるかどうかを評価しうる。データは、評価の結果に基づいて解放されうる。評価の時間と評価の結果の両方が、それに限定されるものではないが、エアリンク効率、ネットワークインジケーション、ロケーション、コンテキストアウェアネス、時刻、現在のネットワーク負荷、および過去のネットワーク負荷パターンなどのさまざまなパラメータに基づきうる。
【００８５】
[0097]  ラッパー１００４は、アプリケーション１００２が、それらのデータ／要求が保留／集約されていることに気づかない（unaware）ように、アプリケーション１００２に対して不可視でありうる。ラッパー１００４は、個別のコンポーネントでありうる、または、アプリケーション接続エンジン１００８のような別のコンポーネントに組み込まれうる。
【００８６】
[0098]  このような集約の例が、図１１に示される。アプリケーション１乃至４は、無線リソースの使用に関する要求をそれぞれ作成する。このようなソケット呼出しは、ラッパー１００４によってキャプチャおよび保留されうる。決定された時間において、ラッパー１００４は、集約されたやり方でソケット呼出しを解放するであろう。一態様では、ラッパー１００４は、呼出しを解放するかどうかを評価する。解放は、ラッパー１００４による評価の結果に基づく。評価する時間と評価の結果の両方が、それに限定されるものではないが、エアリンク効率、ネットワークインジケーション、ロケーション、コンテキストアウェアネス、時刻、現在のネットワーク負荷、および過去のネットワーク負荷パターンなどのさまざまなパラメータの関数でありうる。
【００８７】
[0099]  別の態様では、図１２に示されるように、これらアプリケーションに対する接続エンジンＡＰＩ（アプリケーションプログラムインタフェース）が、動作についてのそれらのバックグラウンドアクティビティ／要件を示すことができ、ここで、ある特定のアプリケーションは、ある特定の遅延（例えば、Ｘ秒、Ｙ秒等）のみを許容しうる。ラッパーは、接続する時間であることをこのようなアプリケーションに示すために、コールバック関数を提供しうる（例えば、ＡＰＩ．Ｇｏ）。このようなコールバックを受信した後、アプリケーションは、所望に応じて通信しうる。あるいは、アプリケーションは、ＡＰＩを介して、デッドラインを提供することができ、また、ラッパーは、デッドラインを守り（respecting）ながら、接続を透過的に（transparently）遅延することができ、任意のデッドラインの前にアプリケーションが接続することを可能にする。
【００８８】
[00100]  なお別の態様では、ＡＰＩはまた、アプリケーションが、それが即時アクセス（例えば、子供の追跡（kid tracking）、緊急通知等）を必要とすることを登録可能にしうる。一般的に、ラッパーは、どの処理名が遅延許容であるか／ないかを示すデータベースを読み取るまたは習得する（learn）ことができる。
【００８９】
[00101]  さらに別の態様では、オペレータポリシーが、サブスクリプション（subscription）に基づいてラッパーの動作（behavior）の制御を可能する。例えば、ゴールド期間（gold period）は１分であり、前払いの期間は１時間である等。
【００９０】
[00102]  アプリケーションの集約および遅延は、選択的に行われることができ、すなわち、ユーザが中断される（disrupted）ことがないようにインプリメントされる。さまざまな要因が、アプリケーションの通信リソースの使用をいつ遅延／集約するかを決定するために用いられうる。例えば、遅延は、画面がオフである、またはオーディオ出力がオフである等のような、ユーザデバイスのある特定の特徴に基づいてインプリメントされうる。遅延は、このような遅延を扱うことが可能であることが知られているアプリケーションについてのみインプリメントされうる。遅延は、ユーザデバイス／電話が他に使用されていないときに（通話も、オーディオストリーミグも無い等）、無線に負荷がかかっていないときにインプリメントされうる。または、遅延は、その他の要因または上記の要因の組み合わせを利用してインプリメントされうる。
【００９１】
[00103]  多数のユーザデバイス上にインストールされたアプリケーションが、同時に（または、短い時間期間内に）ネットワークへのアクセスを要求した場合、ネットワークは、データ接続のセットアップと関連づけられるピークネットワークシグナリングによって過負荷（overlaoded）とされうる。例えば、固定された時刻において起こるようにプログラムされた自動ブロードキャスト通知（例えば、ソフトウェア更新、動的コンテンツの周期的な更新等）は、多数の異なるユーザデバイス上で実行中の多数のアプリケーションに、ネットワークとのデータ接続を要求させうる。１つの構成では、このような同期を阻止するために、その後に保留された要求が解放される時間遅延は、ランダム数に基づいて計算されうる。１つの構成では、このアーキテクチャは、要求がインタセプトされたときに開始されうるランダム化タイマを含みうる。このタイマは、要求を保留するランダムな時間期間を決定しうる。ランダムな時間期間が満了すると、要求は、指定受信者へ解放されうる。例えば、要求は、ランダム化タイマの満了の際に、解放されうる。ランダム遅延は、多数のユーザデバイスにわたってネットワークシグナリングおよびデータ接続セットアッププロシージャを非同期化する働きをする。
【００９２】
[00104]  一態様では、無線アウェアネス（radio awareness）が、アプリケーション接続の数を低減させることを支援でき、これは、シグナリング負荷を緩和し、および／または、ユーザデバイスのバッテリ寿命を節約しうる。別の態様では、さまざまな要因が、保留された要求が解放されることができるかどうかを評価する時間を決定するためと、評価決定を決定するためとの両方に用いられうる。具体的には、エアリンク効率（air link efficiency）、ネットワークインジケーション（network indication）、ロケーション（location）、コンテキストアウェアネス（context awareness）、一日の時刻（time of the day）、現在のネットワーク負荷（present network load）、および過去のネットワーク負荷パターン（past netwrok load pattern）を表すさまざまなパラメータが、評価する時間および評価決定を決定するために利用されうる。
【００９３】
[00105]  評価する時間および評価決定（または結果）は、両方が時刻の関数でありうる。例えば、ネットワークに重く負荷がかかる見込みであることが分かっている場合、評価決定は、保留された要求を１日のある特定時間において解放しないことを支持しうる、また、評価する時間は、より長くなりうる。
【００９４】
[00106]  評価する時間および評価決定は、両方が経時的な過去のネットワーク使用パターンの関数でありうる。過去のネットワーク使用パターンは、例えば、ネットワークを通じたダウンロード、オフネットワークのダウンロード等を通じて、ラッパー１００４において利用可能になりうる。
【００９５】
[00107]  本開示のある態様によると、アップリンクへのゲートは、ネットワーク負荷に基づいて、開閉される。ネットワーク負荷は、無線システムの全体の負荷（制御プレーン＋データプレーン）、あるいは制御プレーンまたはユーザプレーンのみの特定の負荷を指すことができる。ネットワーク負荷がより低い場合、ゲートは開かれる。ネットワーク負荷がより高い場合、ゲートは閉じられる。一例において、ネットワーク負荷は、ランダムアクセスチャネル（ＲＡＣＨ）上の負荷を観察することによって推定され、特に、ＲＡＣＨ応答を観察することによって推定される。ＲＡＣＨは、ほとんどのセルラネットワーク上で利用可能であり、シグナリングメッセージを運ぶために使用されうる。ＲＡＣＨは、アイドルモードからアクティブモードに遷移するために、端末によって使用されうる。ＲＡＣＨはまた、端末がアクティブモードである間に再同期するために使用されうる。一般的に、ＲＡＣＨは、接続セットアップ中に無線リソース制御（ＲＲＣ）コントロールを搬送するチャネルであるので、ＲＡＣＨ上の負荷は、シグナリング負荷と互いに関連する。例えば、ＬＴＥシステムでは、ＲＡＣＨ応答は、ブロードキャストされ、クライアントＡが、クライアントＢ、Ｃ、Ｄ等についての応答を見ることを可能にする。言い換えれば、たとえ特定のデバイスがランダムアクセスチャネルにアクセスしていなくても、同デバイスは、現在の時間において他のデバイスがＲＡＣＨを介してネットワークにアクセスしているかどうかを観察しうる。チャネルは、典型的にシグナリングのために使用されるので、このチャネル（すなわち、ＲＡＣＨ）上の負荷を観察することによって、ユーザデバイスは、シグナリングによる重い負荷が存在するかどうかを決定しうる。
【００９６】
[00108]  一態様では、ラッパー１００４は、ＲＡＣＨ応答チャネル上の負荷を周期的にモニタし、全体の負荷が、決定された平均負荷値のような所定の値と比較して低い場合に、ゲートを開く。一例において、ＲＡＣＨ応答チャネルをモニタすることは、図１のユーザデバイス１０２が、ネットワークの利用率が低い期間中に、ネットワーク１０４に対して時間許容接続を実行することを可能にする。あるいは、言い換えれば、ネットワーク１０４の利用率が低い期間へ複数の接続が許可されうる。複数のユーザデバイス１０２が、ネットワーク負荷をモニタするためにラッパー１００４を用いた場合、ランダムバックオフが負荷を分散するために使用されうる。例えば、複数のユーザデバイス１０２がネットワーク１０４にアクセスするのを待っている場合には、一旦利用率の低い期間が存在すると、これらデバイス１０２は、負荷バーストを阻止するために、ネットワーク１０４への時間差（staggered）アクセスを可能にされるであろう。すなわち、第１のユーザデバイスは、時間１においてネットワークにアクセスし、第２のユーザデバイスは、（時間１より後の）時間２においてネットワークにアクセスする等。別の態様では、負荷は、キャリア対雑音比（Ｅｃ／Ｎ０： carrier to noise ratio）、受信された信号コード電力（ＲＳＣＰ:received signal code power）、端末送信電力または基地局のライズオーバサーマル（ＲｏＴ： Rise over Thermal）などの指標から推定される（inferred）。
【００９７】
[00109]  別の態様では、ネットワークへのアプリケーションの接続性（connectivity）は、エアリンク効率に基づく。具体的には、エアリンク容量は、チャネル状態が良好または最適であるときに、ネットワークへの接続性を可能にすることによって増大または最大化されうる。例えば、信号対雑音比（ＳＮＲ）がモニタされることができ、ネットワークへのアクセスは、このＳＮＲが所定のしきい値よりも低い場合には許可されない。別の例では、エアリンク効率は、ユーザデバイスが現在使用している無線アクセス技術（ＲＡＴ）に基づいて、接続性を可能にすることによって増大または最大化されうる。具体的には、既知の高速ＲＡＴが用いられる場合、ゲートは開かれる（例えば、ネットワークアクセスが可能にされる）。例えば、３ＧＰＰタイプの配置（deployment）では、ユーザデバイスは、ＧＳＭ、ＧＰＲＳエッジ、ＨＳＰＡ、およびＬＴＥをサポートしうる。ＲＡＴがＨＳＰＡまたはＬＴＥでない限り、ゲートが開くことを許可しないトリガが確立されうる。これは、高速ＲＡＴ接続のみを提供し、これは、接続性の間の損失を低減または最小化する見込みである。
【００９８】
[00110]  エアリンク効率に基づいて接続性を可能にする、なお別の例では、再選択ステータスが観察されうる。再選択は、ユーザデバイスが１つのサービングノードから異なるサービングノードへ自律的に切り換える場合である。一例において、再選択が起こりそうであることを示す任意の兆候が存在する場合、アプリケーションの接続性（すなわち、ゲートを開くこと）は許可されない。具体的には、再選択ｒ（または任意の潜在的な再選択）は、ネットワークへの接続性が可能にされる前に終了する。オプションとして、別の例では、早期の再選択が強制されうる。別の例では、ラッパー１００４は、ラッパー１００４がネットワーク１０４への接続を可能にするためにゲートを開く前に再選択を促進するために、周波数内測定（intra-frequency measurements）および／または周波数間測定（inter-frequency measurements）のような追加の無線測定をトリガしうる。これら測定は、ハンドオーバすることがトラフィックをより良く搬送できるかどうかを決定するための情報を、サービングセルに提供しうる。
【００９９】
[00111]  別の態様では、ラッパー１００４は、負荷をモニタおよび追跡することができ、その後、（既知の平均負荷値と比較して）負荷が低い場合、または、負荷が既知のピーク負荷の値よりも低い場合、接続要求を解放してネットワークへの接続を可能にする。上述されたように、ネットワーク負荷は、ＲＡＣＨを観察することによって、推測およびモニタされうる。加えて、ネットワーク負荷は、それに限定されるものではないが、ダウンリンクトラフィック対パイロット比（traffic to pilot ratio）またはその他の無線量（radio quantities）、無線アクセスネットワークからのインジケーション、および有効なユーザの数などの、その他のための手段によって推測され、したがって、モニタされうる。例えば、ＥＶＤＯ−アドバンストネットワークでは、基地局は、ユニキャストおよび／またはブロードキャスト信号における負荷に関するインジケーションをユーザに提供しうる。
【０１００】
[00112]  別の態様では、接続性は、無線の共存に基づいて可能にされうる。例えば、ＬＴＥとＢｌｕｅｔｏｏｔｈは、ＬＴＥのキャリア周波数に基づいて干渉しうる。加えて、ＬＴＥとＷＬＡＮも、干渉しうる。特定の例では、ユーザデバイスがＢｌｕｅｔｏｏｔｈまたはＷＬＡＮを使用している（および、実際の干渉または予期される干渉が存在する）場合には、ＬＴＥゲートは閉じたままであり、要求しているアプリケーションによるネットワークへのいかなる接続も、干渉する無線が使用されなくなるまで許可されない。別の例では、ラッパー１００４は、共存問題が存在するとき、共存マネージャから情報を受信する。この例では、ラッパー１００４は、共存問題が存在するときに、ネットワークへのアプリケーションの接続性を許可しない。
【０１０１】
[00113]  別の態様では、ネットワーク１０４へのアプリケーションの接続性は、ラッパー１００４によって受信されるネットワークインジケーションに基づく。このインジケーションは、いつネットワークへの接続が可能にされるかを決定するために、ラッパー１００４によって使用される無線による（over-the-air）インジケーションであることができる。一例において、ネットワークは、バックグラウンドトラフィックを送るのに適したときに、インジケーションをブロードキャストしうる。具体的には、ネットワークキャリアは、分毎の接続数に制限を有することができ、ネットワークは、分毎の利用可能な接続数をブロードキャストすることができ、または、ネットワークは、デバイスが待機中の間に、アプリケーションがネットワークの接続性を要求した場合に適用されるアクセス確率係数（access probability factor）を示すことができる。１つの構成では、生成されたランダム数がアクセス確率係数未満の場合に、アクセスが可能にされる。ラッパー１００４は、ブロードキャストを受信して、それが、ゲートを開けて、（複数を含む）アプリケーションにネットワーク接続を可能にしうるかどうかを決定する。一例において、「ゴー（"go"）」ビットが、ラッパー１００４によって受信されて、ラッパー１００４がゲートを開けて、要求しているアプリケーションにネットワーク１０４へのアクセスを許可することをトリガする。インジケーションは、基地局または無線ネットワークコントローラ（ＲＮＣ）がボトルネックであるかどうかに依存して、セル、または遠隔ネットワークコントローラ領域に基づきうる。「ゴー」ビットは、単一のユーザ、または、ページンググループのようなユーザグループ内のすべてのユーザに適用可能でありうる。
【０１０２】
[00114]  アプリケーションの接続性は、例えば、ＧＰＲＳ、ＥＤＧＥ、ＵＭＴＳ、ＨＳＰＡ、ｃｄｍａ １ｘ、ＥＶ−ＤＯ、ＬＴＥ、Ｗｉ−Ｆｉ、Ｗｉ−Ｍａｘ等のような、無線アクセスネットワークのタイプに基づいて決定される。ラッパーは、例えば、より遅いネットワーク、例えば（ＧＰＲＳ）、またはシグナリングがより効率的でないネットワーク、例えば（ＵＭＴＳ）、上で接続を解放することを回避するために、各無線アクセスタイプに関連する情報により構成されうる。反対に、ラッパーは、ネットワークがＷＬＡＮのようなチープな（cheap）接続性を提供する場合、接続を解放しうる。
【０１０３】
[00115]  ラッパーは、端末が、別のサービングセルへの接続処理中であるか、または接続しようとしている場合、特に、アイドルモードまたは接続モードモビリティについてのモデムからの情報を使用しうる。ラッパーは、トラフィックを解放する前に、再選択またはハンドオーバ処理が完了することを可能にしうる。これは、無線接続がこのトラフィックを運ぶのに最も適切である間に、トラフィックが解放されることを保証しうる。例えば、ＵＭＴＳからＬＴＥへの再選択が起こっている場合、ラッパーは、端末がＬＴＥにキャンプオン（camped on)するまで待ってから、接続を開始しうる。
【０１０４】
[00116]  ラッパーは、次に来る無線接続をスピードアップまたは最適化するために、モデムに動作を実行するように命令しうる。例えば、モデムが、キャンプするには適切であるが、データ接続を搬送するためには理想的でない所与の周波数上の所与の無線アクセス技術（ＲＡＴ）にキャンプオンしている間、ラッパーは、利用可能なＲＡＴの周波数間サーチを実行するようにモデムに指示する。モデムはまた、ラッパーがゲートを開けることに備えるために、より良好なＲＡＴ／周波数への再選択を開始しうる。このようなプロシージャは、ネットワークが接続モードでハンドオーバを開始することなく、より適切なキャリア／ＲＡＴ上でトラフィックを搬送することを容易にする。
【０１０５】
[00117]  別の態様では、ネットワーク１０４へのアプリケーションの接続性は、利用可能なネットワークリソースの予測に基づく。一態様では、ラッパー１００４は、それに限定されるものではないが、一日の時刻、動作状態、セルラ基地局識別のフィンガプリント（fingerprint）（例えば、デバイスは、セルｘ、ｙおよびｚからパイロットを受信し、受信された電力は、約−８０、−６５、−１２０ｄＢｍである）、地理的なロケーション（geo-location）、既知のアクセスポイントおよびロケーションのリストなどの入力を受信することによって、ロケーション／コンテキストアウェア（location/context aware）となる。地理的なロケーションは、ＧＰＳのような衛星システムによって、またはセルラネットワークセルＩＤのフィンガプリントに基づいて、あるいはワイヤレスローカルエリアネットワークのアクセスポイントの存在に基づいて、提供されうる。ラッパーは、いつ別のＲＡＴが利用可能になるかを予測するために、ロケーション／コンテキストアウェアネスを使用する。別の態様では、ラッパー１００４は、一日の間のどの時間に、ネットワークおよびそのリソースに多量のアクセスがあるかを習得する。ラッパーは、この存在量の情報（abundance information）を使用して、いつゲートを開けて、ネットワークにアプリケーションが接続することを可能にするかを決定する。例えば、ユーザデバイスは、ユーザが、ＷＬＡＮ接続が利用可能である住居に向かっていると予測しうる。この場合、ラッパー１００４は、ユーザが住居に到着し、より速いネットワークが利用可能になるまで、遅延許容アプリケーションについてのネットワークへの通信を阻止する。
【０１０６】
[00118]  一態様では、ユーザデバイスのワイヤレス通信におけるアプリケーションアクセスを制御するための方法１３００が、図１３に例示される。ブロック１３０２では、通信リソースの使用を望むアプリケーションからの要求がインタセプトされる。ブロック１３０４では、この要求が保留される。ブロック１３０６では、保留された要求が解放されることができるかどうか評価される。ブロック１３０８では、この要求が、評価の結果に基づいて解放される。
【０１０７】
[00119]  上述は、ＡＰＩに関するものであったが、これら概念は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの任意の組合せに同等に適用される。
【０１０８】
[00120]  当業者であれば、情報および信号が、さまざまな異なる技術および技法のうちの任意のものを使用して表されうることを理解するであろう。例えば、上記説明の全体にわたって参照されうるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光場または光粒子、あるいはこれらの任意の組み合わせによって表されうる。
【０１０９】
[00121]  当業者であれば、ここに開示された実施形態に関連して説明されたさまざまな例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組み合わせとしてインプリメントされうることをさらに理解するであろう。ハードウェアおよびソフトウェアの互換性を明確に例示するために、さまざまな例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、概してそれらの機能の点から上記に説明された。このような機能が、ハードウェアとしてインプリメントされるか、あるいはソフトウェアとしてインプリメントされるかは、特定のアプリケーションおよびシステム全体に課せられる設計制約に依存する。当業者は、各特定のアプリケーションに関して、多様な方法で、説明された機能をインプリメントしうるが、このようなインプリメンテーションの決定は、本発明の例としての実施形態の範囲から逸脱を引き起こしていると解釈されるべきでない。
【０１１０】
[00122]  ここに開示された実施形態に関連して説明されたさまざまな例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはその他のプログラマブル論理デバイス、ディスクリートゲートまたはトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいはここに説明された機能を実行するように設計されるこれらの任意の組み合わせで、インプリメントまたは実行されうる。汎用プロセッサは、マイクロプロセッサでありうるが、代替において、このプロセッサは、任意の従来型のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシン（state machine）でありうる。プロセッサはまた、コンピューティングデバイスの組み合わせとして、例えば、ＤＳＰとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと連携した１つまたは複数のマイクロプロセッサ、あるいはその他任意のこのような構成であるコンピューティングデバイスの組み合わせとしてインプリメントされうる。
【０１１１】
[00123]  ここに開示された実施形態に関連して説明された方法またはアルゴリズムのステップは、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはこれら２つの組み合わせで、具現化（embodied）されうる。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読み出し専用メモリ（ＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、レジスタ、ハードディスク、リムーバルディスク、ＣＤ−ＲＯＭ、または当該技術分野において周知であるその他任意の形状の記憶媒体において存在しうる。例としての記憶媒体は、プロセッサがこの記憶媒体から情報を読み取り、またこの記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替において、記憶媒体は、プロセッサと一体化されうる。プロセッサおよび記憶媒体は、ＡＳＩＣ内に存在しうる。ＡＳＩＣは、ユーザ端末内に存在しうる。代替において、プロセッサおよび記憶媒体は、ユーザ端末内にディスクリートコンポーネントとして存在しうる。
【０１１２】
[00124]  １つまたは複数の例としての実施形態では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせでインプリメントされうる。ソフトウェアでインプリメントされる場合、これらの機能は、コンピュータ可読媒体上で、１つまたは複数の命令またはコードとして送信または記憶されうる。コンピュータ可読媒体は、１つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体とコンピュータ記憶媒体との両方を含む。記憶媒体は、コンピュータによってアクセスされうる任意の利用可能な媒体でありうる。限定ではなく例として、このようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、あるいは、データ構造または命令の形式で所望のプログラムコードを記憶または伝送するために使用可能であり、かつコンピュータによってアクセスされうるその他任意の媒体を備えうる。また、任意の接続は、コンピュータ可読媒体と厳密には称されうる。例えば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、電波、およびマイクロ波のようなワイヤレス技術を使用して、ウェブサイト、サーバ、またはその他の遠隔ソースから送信される場合には、この同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、電波、およびマイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。ここで使用される場合、ディスク（disk）およびディスク（disc）は、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル多目的ディスク（ＤＶＤ）、フロッピー（登録商標）ディスクおよびブルーレイ（登録商標）ディスクを含み、ここでディスク（disks）は、通常磁気的にデータを再生し、一方ディスク（discs）は、レーザーを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１１３】
[00125]  開示された例としての実施形態の上記説明は、いかなる当業者であっても、本発明の製造または使用を可能にするように提供される。これら例としての実施形態へのさまざまな修正は、当業者にとって容易に明らかであり、ここに定義された一般的な原理は、本発明の趣旨または範囲から逸脱することなく、他の実施形態にも適用されうる。したがって、本発明は、ここに示された例としての実施形態に限定されるようには意図されず、ここに開示される原理および新規な特徴と一致する最も広い範囲を与えられることとなる。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  ユーザデバイスにおけるワイヤレス通信のための方法であって、    通信リソースの使用を望むアプリケーションからの要求をインタセプトすることと、    前記インタセプトされた要求を保留することと、    前記保留された要求が解放されることができるかどうかを評価することと、    前記評価の結果に基づいて、前記保留された要求を解放することと、  を備える、方法。
［Ｃ２］  評価するための時間および前記評価の結果のうちの少なくとも１つは、エアリンク効率、ネットワークインジケーション、ロケーション、コンテキストアウェアネス、一日の時刻、現在のネットワーク負荷、過去のネットワーク負荷パターン、およびランダム化された待ち時間のうちの少なくとも１つの関数である、Ｃ１に記載の方法。
［Ｃ３］  評価するための時間は、一意的に決定される値および擬似ランダム数のうちの１つに基づく、Ｃ１に記載の方法。
［Ｃ４］  前記評価することは、一意的に決定される値に基づき、  前記方法は、解放するためのインジケーションおよび解放しないためのインジケーションのうちの１つを出力することをさらに備える、Ｃ３に記載の方法。
［Ｃ５］  前記評価することは、確率的であり、  前記保留された要求を解放するための確率を出力することをさらに備える、Ｃ１に記載の方法。
［Ｃ６］  ランダムアクセス応答チャネルに基づいて、前記現在のネットワーク負荷を推定することをさらに備える、Ｃ２に記載の方法。
［Ｃ７］  ダウンリンクトラフィック対パイロット比（ＴＰＲ）、キャリア対雑音比（Ｅｃ／Ｎ０）、および有効なユーザの数のうちの少なくとも１つに基づいて、前記ネットワーク負荷を推定することをさらに備える、Ｃ１に記載の方法。
［Ｃ８］  前記エアリンク効率は、信号対雑音比（ＳＮＲ）、無線アクセスネットワークのタイプ、予期される無線共存の問題、代替の無線アクセス技術の推定された近接性、および再選択への近接性のうちの少なくとも１つを示す少なくとも１つの値を含む、Ｃ２に記載の方法。
［Ｃ９］  チャネル測定を要求することと、  アイドルモードの再選択を完了することと、  のうちの１つの後に、集約された要求を解放することをさらに備える、Ｃ１に記載の方法。
［Ｃ１０］  無線アクセスネットワークからネットワーク負荷状態についての情報を受信することをさらに備え、前記解放することは、前記受信された情報に基づく、Ｃ１に記載の方法。
［Ｃ１１］  前記ネットワーク負荷状態についての前記情報は、全体の負荷、データチャネルの負荷、シグナリングチャネルの負荷、および制御チャネルの負荷のうちの少なくとも１つを示す値を含む、Ｃ１０に記載の方法。
［Ｃ１２］  前記評価することは、現行と将来とのモデムモビリティプロシージャのうちの１つについての情報を適用することを含む、Ｃ１に記載の方法。
［Ｃ１３］  前記保留された要求を解放するための準備において、周波数間サーチ動作およびＲＡＴ間・周波数間再選択動作のうちの少なくとも１つを実行するようにモデムに命令することをさらに備える、Ｃ１に記載の方法。
［Ｃ１４］  ワイヤレス通信のための装置であって、    メモリと、    前記メモリに結合され、かつ、        通信リソースの使用を望むアプリケーションからの要求をインタセプトすることと、        前記インタセプトされた要求を保留することと、        前記保留された要求が解放されることができるかどうかを評価することと、        前記評価の結果に基づいて、前記保留された要求を解放することと、    のために構成された少なくとも１つのプロセッサと、  を備える、装置。
［Ｃ１５］  評価するための時間および前記評価の結果のうちの少なくとも１つは、エアリンク効率、ネットワークインジケーション、ロケーション、コンテキストアウェアネス、一日の時刻、現在のネットワーク負荷、過去のネットワーク負荷パターン、およびランダム待ち時間のうちの少なくとも１つの関数である、Ｃ１４に記載の装置。
［Ｃ１６］  評価するための時間は、一意に決定される値および擬似ランダム数のうちの１つに基づく、Ｃ１４に記載の装置。
［Ｃ１７］  前記評価することは、一意に決定するものであり、前記プロセッサは、解放するためのインジケーションおよび解放しないためのインジケーションのうちの１つを出力するようにさらに構成される、Ｃ１６に記載の装置。
［Ｃ1８］  前記評価することは、確率的であり、  前記プロセッサは、解放する確率を出力するためにさらに構成される、Ｃ１４に記載の装置。
［Ｃ１９］  前記プロセッサは、ランダムアクセス応答チャネルに基づいて、前記現在のネットワーク負荷を推定するためにさらに構成される、Ｃ１５に記載の装置。
［Ｃ２０］  前記プロセッサは、ダウンリンクトラフィック対パイロット比（ＴＰＲ）、キャリア対雑音比（Ｅｃ／Ｎ０）、および有効的なユーザの数のうちの少なくとも１つに基づいて、前記ネットワーク負荷を推定するためにさらに構成される、Ｃ１４に記載の装置。
［Ｃ２１］  前記エアリンク効率は、信号対雑音比（ＳＮＲ）、無線アクセスネットワークのタイプ、予期される無線共存の問題、代替の無線アクセス技術の推定された近接性、および再選択への近接性のうちの少なくとも１つを示す少なくとも１つの値を含む、Ｃ１５に記載の装置。
［Ｃ２２］  前記プロセッサは、    チャネル測定を要求することと、
アイドルモードの再選択を完了することと、  のうちの１つの後に、集約された要求を解放するためにさらに構成される、Ｃ１４に記載の装置。
［Ｃ２３］  前記プロセッサは、無線アクセスネットワークからネットワーク負荷状態についての情報を受信するためにさらに構成され、前記解放することは、前記受信された情報に基づく、Ｃ１４に記載の装置。
［Ｃ２４］  前記ネットワーク負荷状態についての情報は、全体の負荷、データチャネルの負荷、シグナリングチャネルの負荷、および制御チャネルの負荷のうちの少なくとも１つを示す少なくとも１つの値を含む、Ｃ２３に記載の方法。
［Ｃ２５］  前記プロセッサは、現行と将来とのモデムモビリティプロシージャのうちの１つについての情報を適用することによって評価するために構成される、Ｃ１４に記載の装置。
［Ｃ２６］  前記プロセッサは、前記保留された要求を解放するための準備において、周波数間サーチ動作およびＲＡＴ間・周波数間再選択動作のうちの少なくとも１つを実行するようにモデムに命令するためにさらに構成される、Ｃ１４に記載の装置。
［Ｃ２７］  ワイヤレス通信のための装置であって、    通信リソースの使用を望むアプリケーションからの要求をインタセプトするための手段と、    前記インタセプトされた要求を保留するための手段と、    前記保留された要求が解放されることができるかどうかを評価するための手段と、    前記評価の結果に基づいて、前記保留された要求を解放するための手段と、  を備える、装置。
［Ｃ２８］  ワイヤレスネットワークにおけるワイヤレス通信のためのコンピュータプログラム製品であって、  その上に記録された非一時的なプログラムコードを有する非一時的なコンピュータ可読媒体を備え、前記プログラムコードは、    通信リソースの使用を望むアプリケーションからの要求をインタセプトするためのプログラムコードと、    前記インタセプトされた要求を保留するためのプログラムコードと、    前記保留された要求が解放されることができるかどうかを評価するためのプログラムコードと、    前記評価の結果に基づいて、前記保留された要求を解放するためのプログラムコードと、
を備える、コンピュータプログラム製品。
【図１】
0005763205.tif 000002
【図２】
0005763205.tif 000003
【図３】
0005763205.tif 000004
【図４】
0005763205.tif 000005
【図５】
0005763205.tif 000006
【図６】
0005763205.tif 000007
【図７】
0005763205.tif 000008
【図８】
0005763205.tif 000009
【図９】
0005763205.tif 000010
【図１０】
0005763205.tif 000011
【図１１】
0005763205.tif 000012
【図１２】
0005763205.tif 000013
【図１３】
0005763205.tif 000014