添付の図面を参照しながら新規のシステム、装置、および方法の様々な態様について以下でより十分に説明する。ただし、本開示の教示は、多くの異なる形態で実施され得るものであり、本開示全体にわたって提示する任意の特定の構造または機能に限定されるものと解釈すべきではない。むしろ、これらの態様は、本開示が周到で完全になり、本開示の範囲を当業者に十分に伝えるように与えるものである。本明細書の教示に基づいて、本開示の範囲は、本発明の他の態様とは無関係に実装されるにせよ、本開示の他の態様と組み合わせて実装されるにせよ、本明細書で開示する新規のシステム、装置、および方法のいかなる態様をもカバーするものであることを、当業者なら諒解されたい。たとえば、本明細書に記載の態様をいくつ使用しても、装置は実装され得、または方法は実施され得る。さらに、本発明の範囲は、本明細書に記載の本発明の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。本明細書で開示する任意の態様が請求項の1つまたは複数の要素によって実施され得ることを理解されたい。
本明細書では特定の態様について説明するが、これらの態様の多くの変形および置換は本開示の範囲内に入る。好適な態様のいくつかの利益および利点について説明するが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々なワイヤレス技術、システム構成、ネットワーク、および伝送プロトコルに広く適用可能であるものとし、それらのいくつかを例として、図および好適な態様についての以下の説明において示す。発明を実施するための形態および図面は、本開示を限定するものではなく説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびそれの均等物によって定義される。
本明細書で説明する技法は、符号分割多元接続(CDMA)ネットワーク、時分割多元接続(TDMA)ネットワーク、周波数分割多元接続(FDMA)ネットワーク、直交FDMA(OFDMA)ネットワーク、シングルキャリアFDMA(SC-FDMA)ネットワークなど、様々なワイヤレス通信ネットワークに対して使用され得る。「ネットワーク」および「システム」という用語は、しばしば互換的に使用される。CDMAネットワークは、Universal Terrestrial Radio Access(UTRA)、CDMA2000などの無線技術を実装し得る。UTRAは、Wideband-CDMA(W-CDMA)(登録商標)と低チップレート(LCR)とを含む。CDMA2000は、IS-2000、IS-95およびIS-856規格をカバーする。TDMAネットワークは、Global System for Mobile Communications(GSM(登録商標))などの無線技術を実装し得る。OFDMAネットワークは、Evolved UTRA(E-UTRA)、IEEE802.11、IEEE802.15、IEEE802.16、IEEE802.20、Flash-OFDMA(登録商標)などの無線技術を実装し得る。UTRA、E-UTRA、およびGSM(登録商標)は、Universal Mobile Telecommunication management system(UMTS)の一部である。Long Term Evolution(LTE)は、E-UTRAを使用するUMTSの今度のリリースである。UTRA、E-UTRA、GSM(登録商標)、UMTSおよびLTEは、「3rd Generation Partnership Project」(3GPP)と称する団体からの文書に記載されている。CDMA2000は、「3rd Generation Partnership Project 2」(3GPP2)と称する団体からの文書に記載されている。これらの様々な無線技術および規格は当技術分野で知られている。
図1に、通信管理システム108の態様を示す例示的なネットワーク環境100を示す。ネットワーク環境100は、ワイヤレスデバイス102と、通信ネットワーク104と、1つまたは複数のサーバ110および111とを含む。デバイス102は、対応する無線チャネル106を使用してネットワーク104と通信するための複数の無線(図示せず)を含む。デバイス102はまた、たとえば、特定のアプリケーションによる複数の無線へのアクセスを制御するように動作する通信管理システム108を含む。
ワイヤレスデバイス102は、通信ネットワーク104を介してサーバ110および111と通信し得る。サーバ110および111は、それぞれ通信チャネル112および113を介して通信ネットワーク104に接続する。通信チャネル112および113は、ワイヤードチャネルとワイヤレスチャネルのいずれかであり得る。
動作中、ワイヤレスデバイス102は、複数の無線のいずれかを使用してネットワーク104とインターフェースし得るアプリケーションを実行する。たとえば、実行アプリケーションは、ネットワーク104と通信するためのネットワークリソースを要求するために、ソケットレイヤ呼出しなどのネットワーキング関数呼出しを発行し得る。一実施形態では、通信管理システム108は、アプリケーションに所定の無線リソースをバインドするために、デフォルトルーティング構成に基づいてソケットレイヤ呼出しを処理し得る。
一実施形態では、サーバ110は、通信アクセスポリシーを取得し得る。様々な実施形態では、サーバ110は、コンパイルされたネットワーク統計値に基づいて通信アクセスポリシーを生成し得るか、前にコンパイルされた通信アクセスポリシーを取り出し得るか、または別のソースから通信アクセスポリシーを受信し得る。一実施形態では、ワイヤレスデバイス102は、通信管理システム108を介して通信統計値を収集し得る。通信統計値は、たとえば、無線チャネル106にアクセスしようと試みるアプリケーション、アプリケーションが無線チャネル106にアクセスしようと試みるとき、どのようなアクセスが試みられているかなどに関する情報を含み得る。ワイヤレスデバイス102は、サーバ111に通信統計値を与え得る。サーバ110および111の一方または両方は、ワイヤレスデバイス102から受信した通信統計値を処理し得、単独またはタンデムのいずれかで通信アクセスポリシーをコンパイルし得る。いくつかの実施形態では、サーバ110およびサーバ111はコロケートされ得るか、またはそれらの機能は、単一のサーバ上で組み合わされ得る。
通信アクセスポリシーは、どのアプリケーションが無線チャネル106にアクセスすることを許可されるのか、アプリケーションが無線チャネル106にアクセスすることをいつ許可されるのか、どのようなアクセスが許可されるのかなどに関するルールを含み得る。サーバ110は、通信ネットワーク104を介してワイヤレスデバイス102に通信アクセスポリシーを与え得る。様々な実施形態では、サーバ110は、Access Network Discovery and Selection Function(ANDSF)、オープンモバイルアライアンスデバイス管理(OMA-DM:Open Mobile Alliance Device Management)、および/または任意の他の好適な方法、オーバージエアなどを介してワイヤレスデバイス102に通信アクセスポリシーを与え得る。
様々な実装形態では、通信管理システム108は、アプリケーションからのネットワーキング関数呼出しをインターセプトするように動作する。通信管理システム108は、通信アクセスポリシーに従ってアプリケーションが使用するための適切な無線を選択し得る。通信管理システム108はまた、通信アクセスポリシーに従ってアプリケーションの通信を変更し得る。本明細書で使用する、通信の変更形態は、限定はしないが、通信を遅延させることか、またはさもなければ通信に影響を及ぼすかまたは作用することを含むことができる。インテリジェント無線選択システム108はまた、ネットワークリソース(すなわち、選択されている無線)にアプリケーションをバインドし得る。通信管理システム108は、アプリケーションが無線リソースを使用するときのアプリケーションの通常動作に応答して動作するので、システムは、アプリケーションの変更またはアップグレードなしに、レガシーアプリケーションと非レガシーアプリケーションの両方で動作し得る。通信管理システム108のより詳細な説明を以下に与える。
図2に、通信管理を行うように構成された例示的なワイヤレスデバイス200を示す。デバイス200は、通信バス214を使用して通信するようにすべて結合されたプロセッサ202と、メモリ204と、TX/RX無線機212とを含む。ワイヤレスデバイス200は、図1に関して上記で説明したワイヤレスデバイス102であり得る。デバイス200は一実装形態にすぎず、他の実装形態が可能であることに留意されたい。
一態様では、プロセッサ202は、アプリケーションレイヤモジュール206と、接続性エンジン208と、ネットワーキングモジュール210とを含む。プロセッサ202はまた、CPU、マイクロプロセッサ、ゲートアレイ、ハードウェア論理、メモリ要素、および/またはソフトウェアを実行するハードウェア(図示せず)のうちの少なくとも1つを含み得る。プロセッサ202は、デバイス200上で実行されるアプリケーションの通信が、選択的に変更され、影響を及ぼされ、遅延され、および/または所望の無線にバインドされ得るように、デバイス200の動作を制御するように構成される。一実装形態では、プロセッサ202は、複数の機能のうちのいずれかを実行することに関係するコンピュータ可読命令を実行するように構成される。たとえば、プロセッサ202は、通信管理を実現するためにデバイス200から受信されるか、または通信される情報を分析するように動作する。別の態様では、プロセッサ202は、通信管理を実現するためにメモリ204、アプリケーションレイヤモジュール206、TX/RX無線機212、および/または接続性エンジン208によって利用され得る情報を生成するように動作する。
TX/RX無線機212は、複数の無線チャネル216を使用する外部通信ネットワーク104(図1)などの複数の外部エンティティとデバイス200をインターフェースするために使用され得る複数の無線/インターフェースを与えるように構成されたソフトウェアを実行するハードウェアおよび/またはプロセッサを含む。無線チャネル216は、たとえば、図1に関して上記で説明した無線チャネル106であり得る。TX/RX無線機212は、セルラー、Wi-Fi、Bluetooth、または無線チャネル216を使用して通信ネットワークと通信するための他の技術を使用して通信するための無線/インターフェースを与え得る。
アプリケーションレイヤモジュール206は、デバイス200上で1つまたは複数のアプリケーションを実行し、メモリ204にアプリケーションを記憶するように構成されたソフトウェアを実行するハードウェアおよび/またはプロセッサを含む。一実装形態では、アプリケーションレイヤモジュール206は、アプリケーションが、ネットワーキングサービスを要求するためにネットワーキングモジュール210へのネットワーキング関数呼出しを開始することを許可するように構成される。ネットワーキング関数呼出しは、無線チャネル216を介して外部ネットワークまたはシステムと通信するための、TX/RX無線機212における無線/インターフェースへの接続要求を含み得る。
ネットワーキングモジュール210は、ネットワーキング関数を実行するように構成されたソフトウェアを実行するハードウェアおよび/またはプロセッサを含む。一実装形態では、ネットワーキング関数は、Connect()、Bind()、Write()、およびSetsockopt()などの関数を含む。connect()関数は、アプリケーションと特定の無線/インターフェースとの間の接続を確立するように動作する。write()関数は、接続を介してデータを送るように動作する。たとえば、特定の無線/インターフェースは、TX/RX無線機212によって与えられた複数の候補無線から選択され得る。一態様では、ネットワーキングモジュール210は、様々なネットワーキング関数またはコマンドを実行するように構成される。一態様では、ネットワーキングモジュール210は、デバイスがバックグラウンドモードにある間(図8)、いくつかの機能が続行することを許可し得、他の機能が続行することを許可しないことがある。一実施形態では、たとえば、ユーザインターフェースが使用中でないとき、デバイスはバックグラウンドモードにあり得る。
接続性エンジン208は、アプリケーションからの通信を管理するためにシステムリソースを評価するように構成されたソフトウェアを実行するハードウェアおよび/またはプロセッサを含む。様々な実装形態では、接続性エンジン208は、以下の選択基準うちの1つまたは複数に基づいて、アプリケーション通信をインターセプトすること、通信を選択的に変更し、影響を及ぼし、および/または遅延させること、ならびに/あるいは特定の無線を選択することを行うように構成される。
1.ユーザポリシー-デバイスにおいて実行されるアプリケーションによる無線アクセスに関する、デバイスユーザによって設定されるポリシー。
2.事業者ポリシー-デバイスまたはアプリケーションによるネットワークアクセスに関する、ネットワーク事業者によって設定されるポリシー。
3.無線メトリック-特定のアプリケーションまたは動作環境のために最も好適な無線を選択するために使用される、無線パフォーマンスの測定値または他のタイプの測定値。
4.アプリケーション要件-帯域幅要件またはレイテンシ/パフォーマンス要件など、要求アプリケーションに関連する要件。
5.ネットワークユーザビリティ-特定の無線インターフェース上での特定のネットワークの利用可能性に関する情報。
6.ベンダー供給メトリック-受信信号強度インジケータおよびパケットロス率などの無線メトリックから、特定の無線インターフェースのために利用可能なスループットおよびレイテンシに変換するための情報。
7.アクセスポイント利用可能性-他のデバイスからのトラフィックによって輻輳されるアクセスポイント、または無線リンクを構成し得るが、ネットワークにパケットを転送しないアクセスポイントの一意の識別子を指定する情報。
プロセッサ202は、TX/RX無線機212を介して上述の選択基準のうちの1つまたは複数をダウンロードし得る。選択基準はメモリ204に記憶され得る。たとえば、プロセッサ202は事業者ポリシーを取り出し得、接続性エンジン208はその事業者ポリシーを適用し得る。事業者ポリシーは、ワイヤレスデバイス200上のアプリケーションによるネットワークアクセスを規制する複数のルールを含み得る。
メモリ204は、RAM、ROM、EEPROM、あるいはアプリケーションおよび/または選択基準をデバイス200に記憶し、取り出すことを可能にするように動作する他のタイプのメモリデバイスを含む。一実装形態では、メモリ204は、プロセッサ202によって実行されるコンピュータ可読命令を記憶するように構成される。メモリ204はまた、プロセッサ202、TX/RX無線機212、アプリケーションレイヤモジュール206、ネットワーキングモジュール210、および/または接続性エンジン208のいずれかによって生成されるデータを含む複数の他のタイプのデータのいずれかを記憶するように構成され得る。メモリ204は、ランダムアクセスメモリ、バッテリバックアップメモリ、ハードディスク、磁気テープなどを含むいくつかの異なる構成で構成され得る。また、圧縮および自動バックアップなど、様々な特徴がメモリ204上に実装され得る。
メモリ204は、プリロードライブラリ218とネットワーキングライブラリ220とを記憶するように構成される。プリロードライブラリ218は、アプリケーションからのソケット呼出しをインターセプトする。ネットワーキングライブラリ220は、アプリケーションによって、ネットワーク通信を確立するためにソケットを作成し、接続するために使用されるネットワーキングAPIを与える。
接続性エンジン208は、様々な方法でアプリケーション通信を選択的に変更し、影響を及ぼし、および/または遅延させるように構成される。たとえば、接続性エンジン208は、上記の選択基準のうちの1つまたは複数を使用して通信を遅延させるように構成され得る。たとえば、接続性エンジン208は、遅延トレラントアプリケーションからの通信のみを遅延させ得る。さらに、接続性エンジン208は、ワイヤレスデバイス200がバックグラウンド状態にあるときのみ、通信を遅延させ得る。一実施形態では、接続性エンジン208は、ワイヤレスデバイス200がフォアグラウンド状態に入るまで、遅延トレラントアプリケーションのための通信を遅延させる。別の実施形態では、接続性エンジン208は、遅延イントレラント(delay-intolerant)アプリケーションが通信を開始するまで、遅延トレラントアプリケーションのための通信を遅延させる。
接続性エンジン208はまた、様々な方法で複数の候補無線から無線を選択するように構成され得る。たとえば、接続性エンジン208は、上記の選択基準のうちの1つまたは複数を使用して無線を選択するように構成され得る。無線が選択されると、接続性エンジン208は、その無線を表すインターフェースにアプリケーションをバインドする。たとえば、一実装形態では、接続性エンジン208は、元のネットワーキングライブラリ220への呼出しを行うことによって無線のインターフェースにアプリケーションをバインドする。したがって、接続性エンジン208における関数とプリロードライブラリ218とは、アプリケーションのために選択されている無線にバインドするために、ネットワーキングライブラリ220中のbind()関数などの関数に容易にアクセスし得る。
様々な実装形態では、通信管理システムは、コンピュータ可読媒体上に記憶されるかまたはコンピュータ可読媒体上で実施される1つまたは複数のプログラム命令(「命令」)または「コード」のセットを有するコンピュータプログラム製品を含む。コードが少なくとも1つのプロセッサ、たとえば、プロセッサ202によって実行されると、それらの実行により、プロセッサ202は、本明細書で説明するインテリジェントインターフェース選択システムの機能を行うようにデバイス200を制御する。たとえば、コンピュータ可読媒体は、フロッピー(登録商標)ディスク、CDROM、メモリカード、フラッシュメモリデバイス、RAM、ROM、あるいはデバイス200とインターフェースする他のタイプのメモリデバイスまたはコンピュータ可読媒体を含む。別の態様では、コードのセットは、外部デバイスまたは通信ネットワークリソースからデバイス200にダウンロードされ得る。コードのセットは、実行されたとき、本明細書で説明するインテリジェントインターフェース選択システムの態様を与えるように動作する。
図3に、通信管理を行う例示的な方法のフローチャート300を示す。明快のために、フローチャート300について、図2に示したデバイス200に関して以下に説明する。しかしながら、図示された方法が任意の好適なデバイスを用いて実装され得ることを、当業者は諒解されよう。一実装形態では、プロセッサ202は、以下で説明する機能を実行するためにデバイス200の機能要素を制御するためのコードの1つまたは複数のセットを実行する。
ブロック302において、プロセッサ202はアプリケーションを開始する。アプリケーションは、アプリケーションレイヤモジュール206の一部であるレガシーアプリケーションまたは非レガシーアプリケーションであり得る。たとえば、アプリケーションは、TX/RX無線機212で利用可能な無線を使用してワイヤレスネットワークに接続するためにネットワーキング関数呼出しを生成するネットワークブラウザであり得る。
ブロック304において、プロセッサ202は、プリロードライブラリを構成し、ロードする。たとえば、プリロードライブラリ218は、アプリケーションによって通信ネットワークを評価するために使用されるネットワーキングライブラリ220中に与えられるネットワーキング関数のサブセットを含む。プリロードライブラリ218中のネットワーキング関数は、デバイスにおいて実行されるアプリケーションからのネットワーキング関数呼出しをインターセプトするように構成される。たとえば、プリロードライブラリ218は、デバイス200において実行されるアプリケーションによるソケット呼出しをインターセプトするために使用され得るPOSIXソケット関数を含む。一実装形態では、プリロードライブラリ218はメモリ204に記憶される。
一実装形態では、プリロードライブラリ218関数は、呼出しアプリケーションからパスされた引数を受信し、アプリケーションの目的に最も適した無線を選択するように接続性エンジン208に求める要求を生成するためにこれらの引数を使用するように構成される。
ブロック306において、プロセッサ202は、プリロードライブラリを実行環境にリンクする。たとえば、プロセッサ202は、ネットワーキングライブラリ220よりも高い優先順位でプリロードライブラリ218を実行環境にリンクする。したがって、アプリケーションによるネットワーキング関数呼出しは、インターセプトされ、プリロードライブラリ218中の関数によって処理され、ネットワーキングライブラリ220中の同様の関数によって処理されないことになる。
ブロック308において、プロセッサ202は、アプリケーションからのネットワーキング関数呼出しをインターセプトする。たとえば、ネットワーキング関数呼出しは、connect関数()またはwrite()関数など、POSIXソケット関数呼出しであり得る。アプリケーションは、外部ネットワークとの通信を可能にするために無線に接続するために、ネットワーキング関数呼出しを生成する。ネットワーキングライブラリ220よりも高い優先順位でプリロードライブラリ218を実行環境にリンクすることにより、プロセッサ202は、プリロードライブラリ218中の関数を介してネットワーキング関数呼出しをインターセプトする(または処理する)。一実施形態では、プロセッサ202は、図12に関して以下で説明するように、受信した事業者ポリシーに従ってネットワーキング関数呼出しを遅延させることができる。
ブロック310において、プリロードライブラリ218中の呼び出された関数は、アプリケーションが使用するのに適切な無線を選択するように接続性エンジン208に求める選択要求を生成する。要求には、接続性エンジン208によってアプリケーションが使用するのに適切な無線を選択するために使用される選択基準の一部である情報が含まれる。別の実施形態では、プリロードライブラリ218中の呼び出された関数は、通信を遅延すべきであるかどうかを判断するように接続性エンジン208に求める選択要求を生成する。
ブロック312において、選択基準を評価する。一実装形態では、接続性エンジン208は、上記で説明した選択基準を評価するように動作する。たとえば、接続性エンジン208は、選択基準の一部である事業者ポリシーを評価するためにプロセッサ202と通信し得る。
ブロック314において、接続性エンジン208は、選択基準の評価に基づいて無線を選択する。たとえば、接続性エンジン208は、選択基準に最も良く一致する無線を選択するように動作する。
ブロック316において、接続性エンジン208は、アプリケーションのために選択されている無線のインターフェースにバインドする。たとえば、一実装形態では、接続性エンジン208は、アプリケーションのために選択されている無線にバインドするために、ネットワーキングライブラリ220のbind()関数を呼び出す。たとえば、接続性エンジン208は、ネットワーキングライブラリ220に気づいており、プリロードライブラリ218によってインターセプトされることなしにそれの関数にどのように直接アクセスするかに気づいている。一実施形態では、接続性エンジン208は、アプリケーションを無線にバインドするより前にまたはその後に通信を遅延させる。
ブロック318において、アプリケーションは、次いで、ネットワーク通信のために選択されている無線を利用する。
随意の動作では、本方法は、ブロック312に進み、接続性エンジン208は、現在の無線が選択基準に最も良く一致するかどうかを判断するために、選択基準の周期的評価を実行するように動作する。接続性エンジン208が、選択基準の別の評価の後に、現在の無線以外の無線が選択基準に最も良く一致すると判断した場合、接続性エンジン208は、新しい接続のために異なる無線を選択するために接続を再開するようにアプリケーションをトリガするための手段として、接続を破壊し得る。したがって、随意の動作により、所望の通信を行うために最も適切な無線が選択されることを保証するために、選択基準を周期的に評価することが可能になる。
したがって、フローチャート300は、レガシーアプリケーションおよび非レガシーアプリケーションとともに使用する通信管理を行う。フローチャート300は一実装形態にすぎないこと、およびフローチャート300の動作は、他の実装形態が可能であるように並べ替えられるかまたは場合によっては変更され得ることに留意されたい。
ワイヤレスデバイスアプリケーションのための接続性管理
スマートフォン、携帯情報端末などのワイヤレスデバイスでは、ソフトウェアアプリケーションは、デバイスがバックグラウンド状態にあるとしても(たとえば、ユーザがデバイスをアクティブに使用していないとき)動作し続け得る。ソーシャルネットワーキングアプリケーション、電子メールまたは他の通信アプリケーション、データフィードなどのアプリケーション(普及している例としては、Facebook(登録商標)、Gmail(登録商標)、Twitter(登録商標)などがある)は、ユーザがデバイスを使用していなくても、データを送信および受信し続け得る。
モバイルデバイスは、デバイスのいくつかの入力が使用可能でないときまたはスリープ状態にあるとき、バックグラウンドモードにあり得る。言い換えれば、デバイスは、ユーザがデバイスを使用していないとき、バックグラウンドモードにあり得る。たとえば、(マイクロフォンなどの)オーディオ入力がオフであるとき、デバイスはバックグラウンドモードにあると見なされ得る。さらに、(デバイスのディスプレイなどの)ビジュアル入力がオフであるとき、デバイスはバックグラウンドモードにあると判断され得る。以下で説明するように、モバイルデバイスがバックグラウンドモードにあるか否かを判断するために追加の入力が使用され得る。
図4に、例示的なデバイスのアプリケーションネットワークアクティビティのグラフ400を示す。グラフ400のx軸は時間を示し、y軸は、それぞれの時間に転送されるデータの量をバイト単位で示す。グラフ400に、デバイスがアイドルモードにある約2時間の期間中のネットワークアクティビティを示す。一実施形態では、ユーザがデバイスと対話しないとき、および/またはディスプレイがオフであるとき、デバイスはアイドルモードにある。デバイスはバックグラウンドモードにあるが、動作し続けるアプリケーションは、アクティビティのスパイク、たとえば、スパイク410a〜iを生じる。そのようなアプリケーションは「バックグラウンド」アプリケーションと呼ばれることがある。これらのアプリケーションによるアクティビティは、無線機212における無線など、通信リソースを利用し得る。一実施形態では、バックグラウンドモードは「アイドル」モードであり得る。
スパイク410a〜iなどのネットワークアクティビティスパイクにより、ワイヤレスデバイスはアイドルモードから接続モードに遷移され得る。接続モードでは、デバイスは、無線機を起動し得、シグナリングトラフィックを生成し得、アイドルモードにあるときよりも大きい電力量を消費し得る。場合によっては、スパイクは、ワイヤレスデバイスが、接続モードからアイドルモード、または不連続受信(DRX:discontinuous reception)モードなどの代替接続モードに遷移するのを防ぎ得る。ユーザがデバイスをアクティブに操作していないときのアプリケーションによる無線アクティビティのレベルのそのような上昇は、バッテリー寿命の短縮、無線ネットワークの負荷の増加、または他の望ましくない影響をもたらし得る。
本明細書で開示する技法および構造を採用して、デバイスは、バックグラウンドアプリケーションからデータをキャプチャし、無線リソースがアクティブ化され、アプリケーションデータが転送され、タスクが同期方式で実行され得る所望の時点までそれらのデータを保持するためのアプリケーションプログラムインターフェース(API:application program interface)を与えるソフトウェアレイヤ(「ラッパー」とも呼ばれる)を採用し得る。そのようなタスク/データ要求をアグリゲートすることによって、ユーザがワイヤレスデバイスをアクティブに使用していない期間中に、ワイヤレスデバイスの頻繁な起動が低減され、他の通信リソースが温存され得る。
図5に、アプリケーション通信をアグリゲートするように構成されたハードウェア/ソフトウェアシステム500の例示的なブロック図を示す。図示のように、ソフトウェア構成要素は、アプリケーションプロセッサ550とモデムプロセッサ560との間で分割されるが、様々な機能は、図5の例とは別様に編成され得る。たとえば、ソフトウェアとして説明する機能はハードウェアで実装され得、その逆も同様であり、機能は構成要素間で別様に分散されるなどがあり得る。一実施形態では、ハードウェア/ソフトウェアシステム500は、図1に関して上記で説明した通信管理システム108であり得る。別の実施形態では、ハードウェア/ソフトウェアシステム500は、図2に関して上記で説明したワイヤレスデバイス200上に実装され得る。たとえば、アプリケーションプロセッサ550の機能は、プロセッサ202、アプリケーションレイヤモジュール206、および/または接続性エンジン208のうちの1つまたは複数によって実装され得る。モデムプロセッサ560の機能は、TX/RX無線機212、ネットワーキングモジュール210、および/または接続性エンジン208のうちの1つまたは複数によって実装され得る。
図示の実施形態では、アプリケーション502は、アプリケーション接続エンジン508と、高レベルオペレーティングシステム(HLOS:high level operating system)506と対話する。HLOS506は、たとえば、カリフォルニア州マウンテンビューのGoogle社によって生成されたAndroidオペレーティングシステムであり得る。アプリケーション接続エンジン508はモデム接続エンジン510と通信し得る。モデム接続エンジンは、無線機212およびその中の無線など、通信リソースを管理し得る。ラッパー504は、アプリケーション502とHLOS506との間のデータをキャプチャすることが可能である。ラッパー504は、ユーザ非アクティビティ期間中にアプリケーション502からのデータをアグリゲートし、それらのデータをHLOS506にリリースし、動作/送信のために最終的に無線機212にリリースする前の判断された時間まで、それらのデータを保持し得る。ラッパー504は、アプリケーション502に不可視であり得、したがって、アプリケーション502は、それらのデータ/要求が保持/アグリゲートされていることに気づかない。一実施形態では、ラッパー504は、HLOS506の機能をエミュレートし得る。ラッパー504は、別個の構成要素であり得るか、またはアプリケーション接続エンジン508などの別の構成要素に組み込まれ得る。たとえば、ラッパー504は、図2に関して上記で説明した接続性エンジン208によって実装され得る。
図6に、図5のハードウェア/ソフトウェアシステム500によって実装されるアプリケーション通信アグリゲーションの例示的なタイムライン600を示す。図示のように、アプリケーションAPP1〜4はそれぞれ、アグリゲーション期間610中に連続した無線リソースの使用についての要求を開始する。一実施形態では、アプリケーション通信は、アグリゲーション期間610中に遅延され得る。一実施形態では、アグリゲーション期間610は、デバイス200がアイドルモードにある期間を含むことができる。アプリケーションAPP1〜4は遅延トレラントアプリケーションであり得る。遅延トレラントアプリケーションは、たとえば、電子メールまたはバルクファイル転送など、比較的時間に鈍感なデータを搬送し得る。
図示の実施形態では、アプリケーションAPP1はconnect()要求を行う。次いで、アプリケーションAPP2はwrite()要求を行う。次に、アプリケーションAPP3はconnect()要求を行う。最後に、アプリケーションAPP4はconnect()要求を行う。ラッパー504は、connect()ソケット呼出しとwrite()ソケット呼出しとを受信する。ソケット呼出しに基づいて直ちに作動するのではなく、ラッパー504は、アグリゲーション期間610中に通信を遅延させる。判断された時間に、ラッパー504は、アグリゲートデータ要求620としてソケット呼出しを一緒にリリースする。
一実施形態では、ラッパー504は、送信ウィンドウ630中にアグリゲートデータ要求620をリリースし得る。様々な実施形態では、送信ウィンドウ630は、デバイス200がアイドルモードにある期間を含み得、デバイス200がアクティブモードにある期間を含み得る。送信ウィンドウ630中に、ラッパー504は、APP1〜4からのアグリゲートデータ要求620をリリースし得る。ラッパー504はまた、送信ウィンドウ630中に行ったアプリケーション通信要求を遅滞なく続行することを許可し得る。言い換えれば、送信ウィンドウ630中に、ラッパー504はさらなる通信を遅延させないことがある。たとえば、図示の実施形態では、APP5は、送信ウィンドウ630中にconnect()要求を開始する。ラッパー504は、APP5のconnect()要求を遅滞なく続行することを許可する。
一実施形態では、ラッパー504は、規則的または不規則な間隔で送信ウィンドウ630を開き得る。たとえば、ラッパー504は、5分、10分、15分、30分、60分などの時間ごとに一回送信ウィンドウ630を開き得る。別の例では、ラッパー504は、ランダムまたは擬似ランダム時間に遅延アプリケーション通信をリリースし得る。ラッパー504が送信ウィンドウ630を開く間隔は、デバイス200によって判断されるか、またはサーバ110(図1)などの別のデバイスから受信され得る。
一実施形態では、ラッパー504は、アグリゲートデータ要求620に基づいて、送信ウィンドウ630を動的にいつ開くべきかを判断することができる。たとえば、ラッパー504は、アグリゲートデータ要求620の数がしきい値を上回ったときに送信ウィンドウ630を開くことができる。しきい値は、デバイス200によって判断されるか、またはサーバ110などの別のデバイスから受信され得る。
ラッパー504は、所定のまたは動的な時間期間の間、送信ウィンドウ630を開いたままにしておくことができる。たとえば、ラッパー504は、送信ウィンドウ630が開かれた後、15秒、30秒、1分、5分などの時間の間、送信ウィンドウ630を開いたままにしておくことができる。別の例として、ラッパー504は、最後のアプリケーション通信が送信された後、15秒、30秒、1分、5分などの時間の間、送信ウィンドウ630を開いたままにしておくことができる。ラッパー504が送信ウィンドウ630を開いたままにしておく時間量は、デバイス200によって判断されるか、またはサーバ110などの別のデバイスから受信され得る。
一実施形態では、ラッパー504は、遅延イントレラントアプリケーションが通信を開始するとき送信ウィンドウ630を開き得る。たとえば、APP5は遅延イントレラントアプリケーションであり得る。したがって、ラッパー504は、connect()要求がAPP4から受信されたとき、送信ウィンドウ630を開き得る。ラッパー504は、APP4からのconnect()要求を続行することを許可し得、また、APP1〜4からのアグリゲートデータ要求620をリリースし得る。
図7に、別の実施形態による、アプリケーション通信アグリゲーションのタイムライン700を示す。図示のように、アプリケーションAPP1〜2はそれぞれ、連続した無線リソースの使用についての要求を開始する。アプリケーションAPP1〜2は、接続エンジンAPIを介してそれらの遅延トレランスを示し得る。たとえば、アプリケーションAPP1〜2は、特定の遅延に対してのみ耐性がある動作のバックグラウンドアクティビティおよび/または要件を含み得る。たとえば、アプリケーションAPP1〜2は、10秒ごとになど周期的にデバイス200のロケーションを報告するロケーショントラッキングアプリケーションであり得る。
図示のように、アプリケーションAPP1は、通信要求を開始し、ラッパー504に、アプリケーションAPP1がX秒の遅延にのみ耐えることを示す。次に、アプリケーションAPP2は、通信要求を開始し、ラッパー504に、アプリケーションAPP2がY秒の遅延にのみ耐えることを示す。ラッパー504は、通信が許可されたことをアプリケーションに示し得るコールバック関数(たとえば、API.Go)を与え得る。コールバックを受信した後に、アプリケーションは通信を続行し得る。
図示のように、ラッパー504は、X秒の遅延が経過する前に、アプリケーションAPP1にAPI.Goコールバックを与える。アプリケーションAPP1は、次いで、さらなる遅延なしにラッパー504を通して通信する。同様に、ラッパー504は、Y秒の遅延が経過する前に、アプリケーションAPP2にAPI.Goコールバックを与える。アプリケーションAPP2は、次いで、さらなる遅延なしにラッパー504を通して通信する。
代替実施形態では、アプリケーションは、APIを介してラッパー504に特定の送信デッドラインを与え得る。ラッパー504は、与えられたデッドラインの制約内で、アプリケーションからの通信を透過的に遅延させ得る。したがって、ラッパー504は、デッドラインより前にアプリケーション通信を続行することを許可することになる。
さらに別の態様では、APIはまた、アプリケーションが遅延イントレラントアプリケーションとして登録することを可能にし得る。即時アクセスを要求し得るアプリケーションは、子供追跡アプリケーション、緊急通知アプリケーションなどを含む。一実施形態では、ラッパー504は、アプリケーション通信を監視することによって、様々なアプリケーションの遅延トレランスを知り得る。別の実施形態では、ラッパー504は、デバイス102にローカルに記憶されているか、またはサーバ110から受信されたリストまたはデータベースからアプリケーション遅延トレランスのリストを受信し得る。リストまたはデータベースは、事業者ポリシーなどの通信アクセスポリシーとともに受信され得る。
ラッパー504は、ユーザ中断を低減する形でアプリケーション通信をアグリゲートするか、または遅延させ得る。ラッパー504は、アプリケーション通信をいつ遅延させるべきか、またはアプリケーション通信をいつアグリゲートすべきかを判断するために、様々なファクタを分析し得る。たとえば、ラッパー504は、ディスプレイ状態(オンまたはオフ)、オーディオ状態(オンまたはオフ)など、ワイヤレスデバイス102の特性に基づいてアプリケーション通信を遅延させ得る。ラッパー504は、遅延に対して耐性があることが知られているアプリケーション通信のみを遅延させ得る。ラッパー504は、無線がロードされていないとき、さもなければワイヤレスデバイスが使用中でない(たとえば、通話、オーディオストリーミングなどがない)ときにアプリケーション通信を遅延させ得る。ラッパー504が他の好適なファクタに加えて上記のファクタの任意の組合せに基づいてアプリケーション通信をいつ遅延させるべきかを判断し得ることを、当業者は諒解されよう。
さらに、ラッパー504は、遅延またはアグリゲート通信をいつリリースすべきか、および無制限アプリケーション通信をいつ許可すべきかを判断するために、様々なファクタを分析し得る。たとえば、遅延イントレラントアプリケーション(たとえば、緊急通知アプリケーションなど)は無制限アプリケーション通信を開始し得る。無制限アプリケーション通信は、前に遅延またはアグリゲートしたアプリケーション通信をリリースするようにラッパー504をトリガし得る。したがって、前に遅延されたアプリケーション通信は、緊急アプリケーションに関連して無線リソースを使用し得る。言い換えれば、ラッパー504は、遅延イントレラントアプリケーション通信が開始されたとき、すべてのアプリケーションに対して送信ウィンドウを開き得る。
一実施形態では、ラッパー504は、特定の無線がアクティブ化されたか、またはデフォルトとして選択されたとき、遅延またはアグリゲートアプリケーション通信をリリースし得る。特定の無線は、たとえば、Wi-Fi無線、セルラー無線、セルラー無線の特定のモード(たとえば、2Gまたは3G通信モード)、Bluetooth無線などを含み得る。たとえば、ラッパー504は、セルラー無線のみが使用可能であるとき、アプリケーション通信を遅延させ得、Wi-Fi無線が使用可能であるとき、遅延アプリケーション通信をリリースし得る。
別の実施形態では、ラッパー504は、無線チャネル品質がしきい値を上回ったとき、遅延またはアグリゲートアプリケーション通信をリリースし得る。無線チャネル品質は、信号強度、信号対雑音比(SNR)などのメトリクスを含み得る。たとえば、ラッパー504は、セルラー無線のSNRがしきい値を下回ったとき、アプリケーション通信を遅延させ得、セルラー無線のSNRがしきい値まで上昇したか、それを上回ったとき、遅延アプリケーション通信をリリースし得る。
別の実施形態では、ラッパー504は、周期的に、または非連続ウィンドウで遅延またはアグリゲートアプリケーション通信をリリースし得る。たとえば、ラッパー504は、15分ごとに遅延アプリケーション通信をリリースし得る。別の例では、ラッパー504は、15〜20分ごとのランダムまたは擬似ランダム時間に遅延アプリケーション通信をリリースし得る。
一実施形態では、ラッパー504は、ユーザ対話が受信されたとき、遅延またはアグリゲートアプリケーション通信をリリースする。たとえば、ラッパー504は、ディスプレイがアクティブ化された、ボタン押下が検出されたなどのとき、遅延アプリケーション通信をリリースし得る。別の実施形態では、ワイヤレスデバイス102はユーザ対話を予期し得る。たとえば、ワイヤレスデバイス102は、ワイヤレスデバイス102の移動を検出し得る加速度計を含み得る。ラッパー504は、加速度計出力が緊急のユーザ対話の可能性を示すとき、遅延アプリケーション通信をリリースし得る。別の例では、ワイヤレスデバイス102は、近傍検出器を介したユーザ対話を予期し得る。ラッパー504が上記の任意の組合せに応答して、さらに任意の他の好適なイベントに応答して遅延アプリケーション通信をリリースし得ることを、当業者は諒解されよう。
上記の説明は、APIに関するアプリケーション通信アグリゲーションおよび遅延について説明するが、概念は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの任意の組合せにおいて等しく適用される。
同期ポリシー
一実施形態では、通信管理システム108(図1)は、サーバ110から通信アクセスポリシーを受信し得る。アグリゲーション期間610(図6)および送信ウィンドウ630中にアプリケーション通信をそれぞれ遅延およびリリースするとき、通信アクセスポリシーは、接続性エンジン208(図2)によって使用される事業者ポリシーを含み得る。様々な実施形態では、通信アクセスポリシーは、アグリゲーション期間610中にアプリケーション通信がどのくらい長く遅延され得るかを示すタイミング情報、通信が遅延され得るアプリケーションのリスト(「包含リスト」)、通信が遅延されないことがあるアプリケーションのリスト(「除外リスト」)、通信が遅延され得るか、または遅延されないことがある通信タイプのリスト、通信が遅延され得るか、または遅延されないことがあるネットワーク状態のリスト、ラッパー504が送信ウィンドウ630を開くべきであるか、または閉じるべきであるイベントまたはトリガのリスト、通信が遅延され得るか、または遅延されないことがある時間の指示、通信が遅延され得るか、または遅延されないことがあるロケーションの指示、デバイス200がサーバ110に更新通信アクセスポリシーをどのくらいの頻度で要求すべきか、通信が遅延され得る無線アクセス技術(RAT)のリストなどのうちの1つのまたは複数を含むことができる。
一実施形態では、通信タイプは、たとえば、bind()、connect()、accept()、send()、recv()、write()、read()、sendto()、recvfrom()、close()、gethostbyname()、およびgethostbyaddr()など、1つまたは複数のソケット動作を含むことができる。通信タイプは、たとえば、会話トラフィック、ベストエフォートトラフィック、および緊急トラフィックなど、トラフィックタイプの分類をさらに含むことができる。会話トラフィックは、間欠一方向または双方向通信を表す通信、および/または、たとえば、テキストチャットトラフィック、ボイスチャットトラフィック、ビデオチャットトラフィック、World Wide Webトラフィック(たとえば、マッピングおよびナビゲーション機能)などの対話型コンテンツを含むことができる。ベストエフォートトラフィックは、たとえば、バルクデータ転送(たとえば、ファイル転送プロトコル(FTP)トラフィック)、電子メール、ビデオプリローディングなど、比較的低優先度のおよび/または非対話型のトラフィックを含むことができる。緊急通信は、たとえば、子供追跡位置データ、時間的制約のある警報トラフィック、緊急ボイストラフィックなど、比較的高優先度のトラフィックを含むことができる。さらに、通信タイプは、たとえば、ソースIPアドレス、宛先IPアドレス、ソースポート、宛先ポートなど、IPヘッダ中に一般に含まれている情報に基づき得る。
一実施形態では、通信アクセスポリシーは、送信トリガまたはイベントがない場合にラッパー540が送信ウィンドウ630をどのくらいの頻度で開くべきかを示す同期周波数を含むことができる。たとえば、通信アクセスポリシーは、ラッパー540が、少なくとも5分、10分、15分、30分、60分などの時間ごとに送信ウィンドウ630を開くべきであることを示し得る。一実施形態では、通信アクセスポリシーは、ラッパー504が送信ウィンドウ630を開くべきである、アグリゲートデータ要求のしきい値量を含むことができる。たとえば、通信アクセスポリシーは、しきい値時間量の間にアグリゲートデータ要求620の量が無線212を占有するのに十分であるとき、ラッパー540が送信ウィンドウ630を開くべきであることを示し得る。別の例として、ラッパーは、通信が遅延されるアプリケーションの数がしきい値よりも多い場合、ゲートを開くことができる。一実施形態では、通信アクセスポリシーはしきい値を含むことができる。別の例として、ラッパーは、通信が遅延されるソケット呼出しの数がしきい値よりも大きい場合、ゲートを開くことができる。一実施形態では、通信アクセスポリシーはしきい値を含むことができる。
一実施形態では、通信アクセスポリシーは、サーバ110からのアプリケーション遅延トレランスのリストを含むことができる。アプリケーション遅延トレランスのリストは、「除外リスト」と呼ばれることがある、遅延イントレラントアプリケーションのリストを含み得る。ラッパー504(図5)は、アグリゲーションから、除外リスト中で識別されたアプリケーションを除外し得る。同様に、アプリケーション遅延トレランスのリストは、「包含リスト」と呼ばれることがある、遅延トレラントアプリケーションのリストを含み得る。ラッパー504は、アプリケーション通信をアグリゲートするとき、包含リスト中で識別されたアプリケーションを含め得る
一実施形態では、ラッパー504は、デフォルトでアプリケーションを除外し得、特に包含リスト中で識別されたアプリケーションのためのアプリケーション通信のみを遅延させ得る。包含リストは、たとえば、アプリケーション名を表す文字列、数値識別子、バージョン番号、著者識別情報、またはそれらの任意の組合せなど、アプリケーション識別子を含み得る。一実施形態では、包含リストおよび/または除外リストは、個々のソケット動作によって表される通信タイプを含むグラニュラリティ上でのアプリケーション通信を識別することができる。たとえば、包含リストは、アプリケーション「アプリケーションA」からのconnect()動作を遅延トレラントソケット動作として識別し得る。したがって、ラッパー504は、「アプリケーションA」からのconnect()動作をアグリゲートし得るが、「アプリケーションA」からの、たとえば、write()動作をアグリゲートしないことがある。一方、ラッパー504は、「アプリケーションB」からのconnect()動作をアグリゲートしないことがあるが、「アプリケーションB」からの、たとえば、write()動作をアグリゲートし得る。リストは、アプリケーション識別子、ソケット動作などの他の組合せを含むことができることを、当業者は諒解されよう。
一実施形態では、通信アクセスポリシーは、通信が遅延され得るか、または遅延されないことがあるネットワーク状態の指示を含む。たとえば、通信アクセスポリシーは、ラッパー504がアグリゲーション期間610および/または送信ウィンドウ630を調整することになることに基づいて、無線トラフィックのしきい値量を含むことができる。一実施形態では、ラッパー504は、ネットワークトラフィックの量が通信アクセスポリシーにおいて指定されているしきい値を下回るとき、送信ウィンドウ630を開くことができる。
一実施形態では、通信アクセスポリシーは、ラッパー504が送信ウィンドウ630を開くべきであるか、または閉じるべきであるイベントまたはトリガのリストを含む。たとえば、通信アクセスポリシーは、包含リスト上にないアプリケーションおよび/またはソケット呼出しがデータを転送しようと試みるとき、ラッパー504が送信ウィンドウ630を開くべきであることを示し得る。別の例として、通信アクセスポリシーは、除外リスト上のアプリケーションおよび/またはソケット呼出しがデータを転送しようと試みるとき、ラッパー504が送信ウィンドウ630を開くべきであることを示し得る。別の例として、通信アクセスポリシーは、包含リスト上のアプリケーションおよび/またはソケット呼出しのみがデータを転送しようと試みるとき、ラッパー504が送信ウィンドウ630を閉じるべきであることを示し得る。
一実施形態では、通信アクセスポリシーは、デバイス200がアクティブモードに入るとき、ラッパー504が送信ウィンドウ630を開くべきであることを示し得る。たとえば、通信アクセスポリシーは、ユーザインターフェース822(図8)が入力を受信するとき、ラッパー504が送信ウィンドウ630を開くべきであることを示し得る。別の実施形態では、ラッパー504は、デバイス200がアクティブモードに入るとき、送信ウィンドウ630を開かないことがあるが、さもなければ、デバイス200がアクティブモードにあるとき、ラッパー504を無効化するか、および/または通信を遅延させるのを停止し得る。
一実施形態では、通信アクセスポリシーは、ラッパー504がアプリケーション通信を遅延させるべきか、または遅延させるべきでない時間、日付、および/またはロケーションのリストを含む。たとえば、通信アクセスポリシーは、ある時間または日の間、ある曜日の間、デバイス200がある都市または国にあるときなどに、ラッパー504が通信を遅延させるべきであることか、または遅延させるべきでないことを示し得る。様々な実施形態では、時間、日付、および/またはロケーションポリシーは、1つまたは複数の特定のアプリケーションおよび/またはソケット動作に固有のグラニュラリティで指定され得る。
一実施形態では、サーバ110は、通信ネットワーク104の状態に関する情報を受信することができる。たとえば、サーバ110は、通信ネットワーク104中のネットワークアドレス変換(NAT:Network Address Translation)テーブルがそれらの記録をどのくらい長く維持するかを判断することができる。サーバ110は、アプリケーションがそれらのNATエントリをリフレッシュすること、それらの接続を有効に保つことなどを行うのに十分な周波数をもつ送信ウィンドウ630をラッパー504が開くべきであることを示すように通信アクセスポリシーを調整することができる。
様々な実施形態では、通信アクセスポリシーは、上述のタイミング情報、アプリケーションリスト、通信タイプ、ネットワーク状態などの2つ以上のアクセス基準を組み合わせることができる。たとえば、通信アクセスポリシーは、デバイス802が待機状態にあるとき、ポート80へのすべてのトラフィックが最長5分だけ遅延され得ることを示すことができる。別の例として、通信アクセスポリシーは、デバイス802が待機状態にあるとき、WLANインターフェースのみが使用され得ることを示すことができる。別の例として、通信アクセスポリシーは、デバイス802が待機状態にある間、「アプリケーションX」からの「connect()」ソケット呼出しが遅延なしに完了し得ることを示すことができる。同時に、通信アクセスポリシーは、デバイス802が待機状態にある間、「アプリケーションY」からの「connect()」ソケット呼出しと「write()」ソケット呼出しとが遅延され得ることを示すことができる。同様に、通信アクセスポリシーは、たとえば、どのソケット動作が試みられているのか、試みられている通信のソースポートおよび/または宛先ポート、宛先IPアドレスなど、他の遅延基準を組み込むことができる。別の例として、通信アクセスポリシーは、無線アクセス技術が高速パケットアクセス(HSPA:High Speed Packet Access)であるとき、通信が遅延され得るが、無線アクセス技術がLTEであるとき、通信が遅延されないことがあることを示すことができる。通信アクセスポリシーの上述の態様が様々な方法で組み合わされ得ることを当業者は理解されよう。
図8に、通信アクセスポリシーを実装するように構成された例示的なデバイス802を示す。デバイスは、図1に関して上記で説明したネットワーク環境100内に採用され得る。デバイス802は、本明細書で説明する様々な方法を実装するように構成され得るデバイスの一例である。たとえば、デバイス802は、ワイヤレスデバイス102の1つまたは複数の機能を実装し得る。別の実施形態では、デバイス802は、サーバ110の1つまたは複数の機能を実装し得る。
デバイス802は、デバイス802の動作を制御するプロセッサ804を含み得る。プロセッサ804は中央処理ユニット(CPU)と呼ばれることもある。読取り専用メモリ(ROM)とランダムアクセスメモリ(RAM)の両方を含み得るメモリ806は、命令とデータとをプロセッサ804に与える。メモリ806の一部分は不揮発性ランダムアクセスメモリ(NVRAM)をも含み得る。プロセッサ804は、メモリ806内に記憶されたプログラム命令に基づいて、論理および演算動作を実行し得る。メモリ806中の命令は、本明細書で説明する方法を実装するように実行可能であり得る。
デバイス802がワイヤレスデバイス102として実装されるか、または使用されるとき、プロセッサ804は、メモリ806に記憶され得る1つまたは複数のアプリケーションを実行するように構成され得る。実行中に、アプリケーションは、トランシーバ814、送信機810、および/または受信機812を介した通信を開始し得る。プロセッサ804は、図5に関して上記で説明したハードウェア/ソフトウェアシステム500を実装し得る。したがって、プロセッサ804は、実行されたアプリケーションの通信を監視し、通信統計値を記録し、受信機812を介して通信アクセスポリシーを受信し得、メモリ806に通信アクセスポリシーを記憶し得る。プロセッサ804は、図6〜図7に関して上記で説明したように通信アクセスポリシーを実装し得る。
プロセッサ804は、1つまたは複数のプロセッサとともに実装された処理システムを備えるか、またはそれの構成要素であり得る。1つまたは複数のプロセッサは、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、コントローラ、状態機械、ゲート論理、個別ハードウェア構成要素、専用ハードウェア有限状態機械、あるいは情報の計算または他の操作を実行し得る任意の他の好適なエンティティの任意の組合せを用いて実装され得る。
処理システムは、ソフトウェアを記憶するための機械可読媒体をも含み得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などの名称にかかわらず、任意のタイプの命令を意味すると広く解釈されたい。命令は、(たとえば、ソースコード形式、バイナリコード形式、実行可能コード形式、または任意の他の好適なコード形式の)コードを含み得る。命令は、1つまたは複数のプロセッサによって実行されたとき、本明細書で説明する様々な機能を処理システムに実行させる。
デバイス802はまた、デバイス802と遠隔ロケーションとの間のデータの送信および受信を可能にするために送信機810および/または受信機812を含み得るハウジング808を含み得る。送信機810と受信機812とは組み合わされてトランシーバ814になり得る。アンテナ816は、ハウジング808に取り付けられ、トランシーバ814に電気的に結合され得る。いくつかの実施形態では、アンテナ816は省略され得、デバイス802はワイヤード通信のために構成され得る。デバイス802は、複数の送信機、複数の受信機、複数のトランシーバ、および/または複数のアンテナをも含み得る(図示せず)。
デバイス802はまた、トランシーバ814によって受信された信号のレベルを検出し、定量化するために使用され得る信号検出器818を含み得る。信号検出器818は、総エネルギー、シンボルごとのサブキャリア当たりのエネルギー、電力スペクトル密度および他の信号などの信号を検出し得る。デバイス802は、信号を処理する際に使用するデジタル信号プロセッサ(DSP)820をも含み得る。DSP820は、送信のためのパケットを生成するように構成され得る。いくつかの態様では、パケットは物理レイヤデータユニット(PPDU:physical layer data unit)を備え得る。
デバイス802は、いくつかの態様ではユーザインターフェース822をさらに備え得る。ユーザインターフェース822は、近傍検出器、1つまたは複数の入力ボタン、キーパッド、マイクロフォン、スピーカー、インターフェースポート(たとえば、ユニバーサルシリアルバス(USB)ポート、高解像度マルチメディアインターフェース(HDMI)ポートなど)、タッチスクリーン、ネットワークインターフェース、および/またはディスプレイを備え得る。ユーザインターフェース822は、デバイス802のユーザに情報を伝達し、および/またはユーザからの入力を受信する、任意の要素または構成要素を含み得る。一実施形態では、ユーザインターフェース822は、それが(たとえば、USBポート、ネットワークインターフェースから、ディスプレイに、マイクロフォンからなど)入力を受信しているか、または出力を送信しているとき、アクティブであると見なされ得る。ユーザインターフェース822はまた、それがしきい値時間期間(たとえば、1秒、1分、5分など)の内に入力を受信したか、または出力を送信したとき、アクティブであると見なされ得る。ユーザインターフェース822は、それがアクティブでないとき、非アクティブまたはアイドルであると見なされ得る。
ユーザインターフェース822が入力を受信しないとき、デバイス802は、バックグラウンド状態またはアイドルモードにあると言われ得る。バックグラウンド状態では、ディスプレイはオフであり得、デバイス802の1つまたは複数の機能は無効にされ得る。一実施形態では、ユーザインターフェース822入力に応答して開始されない、デバイス802のプロセスおよび通信は、バックグラウンドまたはアイドルプロセスまたは通信と呼ばれることがある。
ユーザインターフェース822が入力を受信するとき、デバイス802は、フォアグラウンド状態またはアクティブモードにあると言われ得る。フォアグラウンド状態では、ディスプレイはオンであり得、入力は入力アイドル期間内に受信されていることがある。入力アイドル期間は、構成可能であり得、たとえば、1分であり得る。一実施形態では、バックグラウンドプロセスおよび通信は、アクティブモードで行われ得るが、ユーザインターフェース822入力に直接応答して開始されないことがある。
デバイス802の様々な構成要素は、バスシステム826によって互いに結合され得る。バスシステム826は、データバスを含み、ならびに、たとえば、データバスに加えて、電力バス、制御信号バス、およびステータス信号バスを含み得る。デバイス802の構成要素は、何らかの他の機構を使用して、互いに結合されるかあるいは互いに入力を受け付けるかまたは与え得ることを、当業者は諒解されよう。
図8には、いくつかの別個の構成要素が示されているが、構成要素のうちの1つまたは複数が組み合わせられ得るかまたは共通に実装され得ることを当業者は認識されよう。たとえば、プロセッサ804は、プロセッサ804に関して上記で説明した機能を実装するためだけでなく、信号検出器818および/またはDSP820に関して上記で説明した機能を実装するためにも使用され得る。さらに、図8に示す構成要素の各々は、複数の別個の要素を使用して実装され得る。
図9に、通信統計値を収集する例示的な方法のフローチャート900を示す。本明細書では、図8に関して上記で説明したデバイス802に関してフローチャート900の方法について説明するが、フローチャート900の方法は、図1に関して上記で説明したワイヤレスデバイス102、図2に関して上記で説明したワイヤレスデバイス202、および/または任意の他の好適なデバイスによって実装され得ることを、当業者は諒解されよう。一実施形態では、フローチャート900内のステップは、送信機810、受信機812、メモリ806、およびユーザインターフェース822とともに、プロセッサ805によって実行され得る。本明細書では、フローチャート900の方法を特定の順序に関して説明しているが、様々な実施形態では、本明細書のブロックは、異なる順序で実行されるか、または省略され得、さらなるブロックが追加され得る。
最初に、ブロック905において、デバイス802は、受信機812を介して無視リストを受信する。プロセッサ804は、メモリ806に無視リストを記憶し得る。一実施形態では、デバイス802は、サーバ110から無視リストを受信する。一実施形態では、無視リストは、デバイス802上に事前プロビジョニングされ得る。図8に関して上記で説明したように、無視リストは、デバイス802が通信統計値を監視または記録すべきでない1つまたは複数のアプリケーションを指定し得る。様々な実施形態では、デバイス802はまた、包含リストおよび/または除外リストなど、サーバ110から他の情報を受信し得る。
次に、ブロック910において、プロセッサ804は、プロセッサ804上で実行されるアプリケーションからの1つまたは複数の通信をインターセプトする。プロセッサ804は、通信管理システム108および/または接続性エンジン208に関して上記で説明した機能を介して通信をインターセプトし得る。一実施形態では、DSP820、信号検出器818、送信機810、および/またはトランシーバ814は通信をインターセプトし得る。
次いで、ブロック915において、プロセッサ804はデバイス状態を判断する。デバイスは、バックグラウンド状態とフォアグラウンド状態とを含み得る少なくとも2つの状態のうちの1つにあり得る。プロセッサ804は、ユーザインターフェース822を介してデバイスの状態を判断し得る。
その後、ブロック920において、プロセッサ804は、デバイスがバックグラウンド状態にあるかどうかを判断する。デバイスがフォアグラウンド状態にある場合、プロセッサ804は、通信統計値を記録せず、ブロック925においてさらなる通信を待つ。デバイスがバックグラウンド状態にある場合、プロセッサ804はブロック930に進む。
一実施形態では、ブロック920において、プロセッサ804は、インターセプトされた通信がバックグラウンド通信であるかどうかを判断する。インターセプトされた通信がバックグラウンド通信でない場合、プロセッサ804は、通信統計値を記録せず、ブロック925においてさらなる通信を待つ。インターセプトされた通信がバックグラウンド通信である場合、プロセッサ804はブロック930に進む。
その後、ブロック930において、プロセッサ804は、インターセプトされた通信に関連するアプリケーションが、サーバ110から受信された無視リスト上にあるかどうかを判断する。インターセプトされた通信を生成したアプリケーションが無視リスト上にある場合、プロセッサ804は、通信統計値を記録せず、ブロック925においてさらなる通信を待つ。インターセプトされた通信を生成したアプリケーションが無視リスト上にない場合、プロセッサ804はブロック935に進む。
その後、ブロック935において、プロセッサ804は、インターセプトされたアプリケーション通信に基づいて1つまたは複数の通信統計値を記録する。通信統計値は、たとえば、アイドルモード中にアクティブであるアプリケーションのアプリケーション識別子(たとえば、完全または部分名、あるいは数値識別子)、アプリケーションによって転送されるデータの量、アプリケーションが何個の接続を開始したか、アプリケーションによって行われた伝送制御プロトコル(TCP)要求の数、送られたユーザデータグラムプロトコル(UDP)パケットの数、送られたドメインネームサービス(DNS)要求の数などを含み得る。TCP要求統計値は、「connect」「write」、「FIN」、「RST」などの特定の要求に関する統計値を含み得る。通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差などの計算された統計値を含み得る。通信統計値はまた、たとえば、デバイス識別子、SIMカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイス802のロケーションなど、追加情報を含み得る。プロセッサ804は、メモリ806に、記録された通信統計値を記憶し得、DSP820を介して、記録された通信統計値を圧縮するか、暗号化するか、またはさもなければ符号化し得る。
次に、ブロック940において、プロセッサ804は、累積通信統計値を報告すべきかどうかを判断する。プロセッサ804は、サーバ110に通信統計値を報告することをプロセッサ804に行わせることになる、記録された統計値のしきい値数などの報告基準を判断し得る。一実施形態では、プロセッサ804は、1時間ごと、1日ごと、1週間ごと、1月ごとなど周期的に、記録された通信統計値を報告し得る。一実施形態では、プロセッサ804は、記録された統計値の数がしきい値に達したとき、および/または記録された統計値のサイズがしきい値に達したとき、記録された通信統計値を報告し得る。一実施形態では、プロセッサ804は、指定された無線、たとえば、Wi-Fiまたはセルラー無線が使用可能であるときにのみ、統計値を報告し得る。プロセッサ804は、上述の報告基準のうちの1つまたは複数を組み合わせるか、または追加の基準を使用し得る。一実施形態では、プロセッサ804は、サーバ110から通信統計値をどのようにおよびいつ報告すべきかに関する命令を受信し得る。プロセッサ804は、報告基準が満たされていないと判断した場合、プロセッサは、記録された通信統計値を報告せず、ブロック925において待つ。プロセッサ804は、報告基準が満たされたと判断した場合、プロセッサはブロック945に進む。
最後に、ブロック945において、プロセッサ804は、送信機810および/またはトランシーバ814を介して、記録された通信統計値をサーバ110に送る。プロセッサ804は、HTTP POST方法を介して、ファイル転送プロトコル(FTP)転送を介して、電子メールとして、または任意の他の通信手段を介して、記録された通信統計値を送り得る。プロセッサ804が、記録された通信統計値をサーバ110に送った後、プロセッサ804は、メモリ806から記録された通信統計値を削除し得るか、または後で使用するために、記録された通信統計値を保持し得る。記録された通信統計値をサーバ110に送ると、プロセッサ804はサーバ110から応答を受信し得、その応答は、無視リストと、除外リストと、包含リストと、通信統計値をいつ報告すべきかに関する命令のリストと、通信統計値をどのように記録すべきかに関する命令のリストとのうちの1つまたは複数を含み得る。
図10に、通信統計値を分析する例示的な方法のフローチャート1000を示す。本明細書では、図8に関して上記で説明したデバイス802に関してフローチャート100の方法について説明するが、フローチャート100の方法は、図1に関して上記で説明したサーバ110または任意の他の好適なデバイスによって実装され得ることを、当業者は諒解されよう。一実施形態では、フローチャート1000内のステップは、送信機810、受信機812、およびメモリ806とともに、プロセッサ805によって実行され得る。本明細書では、フローチャート1000の方法を特定の順序に関して説明しているが、様々な実施形態では、本明細書のブロックは、異なる順序で実行されるか、または省略され得、さらなるブロックが追加され得る。
最初に、ブロック1005において、プロセッサ804は、ワイヤレスデバイス102から通信統計値を受信する。通信統計値は、たとえば、アプリケーション識別子(たとえば、完全または部分名、あるいは数値識別子)、アプリケーションによって行われた伝送制御プロトコル(TCP)要求の数、送られたユーザデータグラムプロトコル(UDP)パケットの数、送られたドメインネームサービス(DNS)要求の数などを含み得る。TCP要求統計値は、「connect」「write」、「FIN」、「RST」などの特定の要求に関する統計値を含み得る。通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差などの計算された統計値を含み得る。通信統計値はまた、たとえば、デバイス識別子、SIMカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイス802のロケーションなど、追加情報を含み得る。プロセッサ804は、メモリ806に、受信された通信統計値を記憶し得、DSP820を介して、受信された通信統計値を圧縮するか、暗号化するか、またはさもなければ符号化し得る。
次に、ブロック1010において、プロセッサ804は無視リストを生成する。プロセッサ804は、デバイス102からの受信された通信統計値ならびに/あるいは他の時間におよび/または他のデバイスから受信された通信統計値に基づいて無視リストを生成し得る。たとえば、プロセッサ804は、アプリケーションのための通信統計値のしきい値数を受信すると、無視リストにそのアプリケーション識別子を追加し得る。一実施形態では、無視リストには、すでに分析されているアプリケーションが最初にシードされ得る。プロセッサ804は、時々、アプリケーション通信ビヘイビアが時間とともに変化したかどうかを知るために、無視リストから1つまたは複数のアプリケーション識別子を除去し得る。
次いで、ブロック1015において、プロセッサ804は包含リストを生成する。プロセッサ804は、デバイス102からの受信された通信統計値ならびに/あるいは他の時間におよび/または他のデバイスから受信された通信統計値に基づいて包含リストを生成し得る。たとえば、アプリケーションによる通信試みの記録数がしきい値を下回ると、プロセッサ804は、包含リストにアプリケーション識別子を追加し得る。一実施形態では、包含リストには、遅延トレラントであると判断されているアプリケーションが最初にシードされ得る。たとえば、受信された通信統計値は、アプリケーションが遅延イントレラントであることを示した場合、プロセッサ804は、包含リストから1つまたは複数のアプリケーション識別子を除去し得る。
その後、ブロック1020において、プロセッサ804は除外リストを生成する。プロセッサ804は、デバイス102からの受信された通信統計値ならびに/あるいは他の時間におよび/または他のデバイスから受信された通信統計値に基づいて除外リストを生成し得る。たとえば、アプリケーションによる通信試みの記録数がしきい値を上回ると、プロセッサ804は、除外リストにアプリケーション識別子を追加し得る。一実施形態では、除外リストには、すでに遅延イントレラントであると判断されているアプリケーションが最初にシードされ得る。たとえば、受信された通信統計値は、アプリケーションが遅延トレラントであることを示した場合、プロセッサ804は、除外リストから1つまたは複数のアプリケーション識別子を除去し得る。
その後、ブロック1025において、プロセッサ804は検討リストを生成する。プロセッサ804は、デバイス102からの受信された通信統計値ならびに/あるいは他の時間におよび/または他のデバイスから受信された通信統計値に基づいて検討リストを生成し得る。たとえば、アプリケーションによる通信試みの記録数がしきい値を下回ると、プロセッサ804は、検討リストにアプリケーション識別子を追加し得る。一実施形態では、検討リストは、包含リストのプリカーサーであり得る。たとえば、プロセッサ804は、さらなる分析のために検討リストに候補アプリケーションを追加し得る。さらなる分析は、プロセッサ804によって、および/またはユーザインターフェース822を介して手動で実行され得る。一実施形態では、プロセッサ804は、ユーザインターフェース822からの信号に従って検討リストから包含リストにアプリケーションを移動し得る。
最後に、ブロック1035において、プロセッサ804は、送信機810および/またはトランシーバ814を介して、ワイヤレスデバイス102に上述のリストのうちの1つまたは複数を送信する。プロセッサ804は、たとえば、HTTP POST応答を介して受信された通信統計値に応答してリストを送信し得る。一実施形態では、プロセッサ804は、ワイヤレスデバイス102にリストをプッシュし得る。上述のリストに加えて、プロセッサ804は、通信統計値をいつ報告すべきかに関する命令のリストおよび/または通信統計値をどのように記録すべきかに関する命令のリストを送信し得る。
図11に、通信統計値を収集する例示的な方法のフローチャート1100を示す。本明細書では、図8に関して上記で説明したデバイス802に関してフローチャート1100の方法について説明するが、フローチャート1100の方法は、図1に関して上記で説明したワイヤレスデバイス102、図2に関して上記で説明したワイヤレスデバイス202、および/または任意の他の好適なデバイスによって実装され得ることを、当業者は諒解されよう。一実施形態では、フローチャート1100内のステップは、送信機810、受信機812、メモリ806、およびユーザインターフェース822とともに、プロセッサ805によって実行され得る。本明細書では、フローチャート1100の方法を特定の順序に関して説明しているが、様々な実施形態では、本明細書のブロックは、異なる順序で実行されるか、または省略され得、さらなるブロックが追加され得る。
最初に、ブロック1105において、デバイス802は、受信機812を介して無視リストを受信する。プロセッサ804は、メモリ806に無視リストを記憶し得る。一実施形態では、デバイス802は、サーバ110から無視リストを受信する。図8に関して上記で説明したように、無視リストは、デバイス802が通信統計値を監視または記録すべきでない1つまたは複数のアプリケーションを指定し得る。様々な実施形態では、デバイス802はまた、包含リストおよび/または除外リストなど、サーバ110から他の情報を受信し得る。
次に、ブロック1110において、プロセッサ804は、プロセッサ804上で実行されるアプリケーションからの1つまたは複数の通信をインターセプトする。プロセッサ804は、通信管理システム108および/または接続性エンジン208に関して上記で説明した機能を介して通信をインターセプトし得る。一実施形態では、DSP820、信号検出器818、送信機810、および/またはトランシーバ814は通信をインターセプトし得る。
その後、ブロック1115において、プロセッサ804は、インターセプトされた通信に関連するアプリケーションが、サーバ110から受信された無視リスト上にあるかどうかを判断する。インターセプトされた通信を生成したアプリケーションが無視リスト上にある場合、プロセッサ804は、通信統計値を記録せず、ブロック1120においてさらなる通信を待つ。インターセプトされた通信を生成したアプリケーションが無視リスト上にない場合、プロセッサ804はブロック1125に進む。
次いで、ブロック1125において、プロセッサ804はデバイス802の状態を判断する。ユーザインターフェース826は、バックグラウンド状態とフォアグラウンド状態とを含み得る少なくとも2つの状態のうちの1つにあり得る。プロセッサ804は、ユーザインターフェース826への1つまたは複数の入力の存在または不在に基づいてユーザインターフェース822の状態を判断し得る。一実施形態では、プロセッサ804は、インターセプトされたものが、ユーザインターフェース822を介した入力に応答して生成されたものではなく、アプリケーションによって自動的に生成されたバックグラウンド通信であるかどうかを判断し得る。
その後、ブロック1130において、プロセッサ804はネットワークインターフェースの状態を判断する。一実施形態では、ネットワークインターフェースは、トランシーバ814、送信機810、および/または受信機812を含むことができる。ネットワークインターフェースは、バックグラウンド状態とフォアグラウンド状態とを含み得る少なくとも2つの状態のうちの1つにあり得る。プロセッサ804は、トランシーバ814の無線電力および/または接続状態に基づいてユーザインターフェース822の状態を判断し得る。一実施形態では、プロセッサ804は、複数のネットワークインターフェース状態を判断し得る。
その後、ブロック1135において、プロセッサ804は、インターセプトされたアプリケーション通信に基づいて1つまたは複数の通信統計値を記録する。通信統計値は、たとえば、バックグラウンドモード中にアクティブであるアプリケーションのアプリケーション識別子(たとえば、完全または部分名、あるいは数値識別子)、アプリケーションによって転送されるデータの量、アプリケーションが何個の接続を開始したか、アプリケーションによって行われた伝送制御プロトコル(TCP)要求の数、送られたユーザデータグラムプロトコル(UDP)パケットの数、送られたドメインネームサービス(DNS)要求の数などを含み得る。TCP要求統計値は、「connect」「write」、「FIN」、「RST」などの特定の要求に関する統計値を含み得る。通信統計値は、生データを含むか、または指定された時間ウィンドウ中の要求またはパケットの最小値、最大値、平均値、中央値、標準偏差などの計算された統計値を含み得る。通信統計値はまた、たとえば、デバイス識別子、SIMカード識別子、ホームネットワーク識別情報、モバイル国コード、モバイルネットワークコード、デバイス802のロケーションなど、追加情報を含み得る。
プロセッサ804は、メモリ806に、記録された通信統計値を記憶し得、DSP820を介して、記録された通信統計値を圧縮するか、暗号化するか、またはさもなければ符号化し得る。プロセッサ804は、ユーザインターフェース826および/またはネットワークインターフェースの状態に基づいて、通信統計値を別個に記憶し得る。たとえば、プロセッサ804は、アクティブなユーザインターフェース826およびアクティブなネットワークインターフェース、アクティブなユーザインターフェース826および非アクティブなネットワークインターフェース、非アクティブなユーザインターフェース826およびアクティブなネットワークインターフェース、ならびに/または非アクティブなユーザインターフェース826および非アクティブなネットワークインターフェースといったワイヤレスデバイス802の状態ごとに別個に通信統計値を記憶し得る。本明細書で使用するプロセッサ804は、複数の異なるデータベースを維持すること、各通信統計値をユーザインターフェース826および/またはネットワークインターフェースの状態にタグ付けすることなどによって、通信統計値を「別個に」記憶し得る。通信統計値の別個の記憶は、ワイヤレスデバイス802の異なる状態中に記録された通信統計値間の区別を可能にする任意の方法で達成され得ることを、当業者は諒解されよう。様々な実施形態では、プロセッサ804は、たとえば、電力状態、時間および/または日付を示すクロック状態、ネットワークアクセス状態など、ワイヤレスデバイス802の他の状態に基づいて通信統計値を別個に記憶し得る。
次に、ブロック1140において、プロセッサ804は、累積通信統計値を報告すべきかどうかを判断する。プロセッサ804は、サーバ110に通信統計値を報告することをプロセッサ804に行わせることになる、記録された統計値のしきい値数などの報告基準を判断し得る。一実施形態では、プロセッサ804は、1時間ごと、1日ごと、1週間ごと、1月ごとなど周期的に、記録された通信統計値を報告し得る。一実施形態では、プロセッサ804は、記録された統計値の数がしきい値に達したとき、および/または記録された統計値のサイズがしきい値に達したとき、記録された通信統計値を報告し得る。一実施形態では、プロセッサ804は、指定された無線、たとえば、Wi-Fiまたはセルラー無線が使用可能であるときにのみ、統計値を報告し得る。プロセッサ804は、上述の報告基準のうちの1つまたは複数を組み合わせるか、または追加の基準を使用し得る。一実施形態では、プロセッサ804は、サーバ110から通信統計値をどのようにおよびいつ報告すべきかに関する命令を受信し得る。プロセッサ804は、報告基準が満たされていないと判断した場合、プロセッサは、記録された通信統計値を報告せず、ブロック1125において待つ。プロセッサ804は、報告基準が満たされたと判断した場合、プロセッサはブロック1145に進む。
最後に、ブロック1145において、プロセッサ804は、送信機810および/またはトランシーバ814を介して記録された通信統計値をサーバ110に送る。プロセッサ804は、HTTP POST方法を介して、ファイル転送プロトコル(FTP)転送を介して、電子メールとして、または任意の他の通信手段を介して、記録された通信統計値を送り得る。プロセッサ804が、記録された通信統計値をサーバ110に送った後、プロセッサ804は、メモリ806から記録された通信統計値を削除し得るか、または後で使用するために、記録された通信統計値を保持し得る。記録された通信統計値をサーバ110に送ると、プロセッサ804はサーバ110から応答を受信し得、その応答は、無視リストと、除外リストと、包含リストと、通信統計値をいつ報告すべきかに関する命令のリストと、通信統計値をどのように記録すべきかに関する命令のリストとのうちの1つまたは複数を含み得る。
図12に、通信アクセスポリシーを適用する例示的な方法のフローチャート1200を示す。一実施形態では、フローチャート1200の1つまたは複数の態様は、図3のブロック308に対応することができる。本明細書では、図8に関して上記で説明したデバイス802に関してフローチャート1200の方法について説明するが、フローチャート1200の方法は、図1に関して上記で説明したワイヤレスデバイス132、図2に関して上記で説明したワイヤレスデバイス202、および/または任意の他の好適なデバイスによって実装され得ることを、当業者は諒解されよう。一実施形態では、フローチャート1200内のステップは、送信機810、受信機812、メモリ806、およびユーザインターフェース822とともに、プロセッサ805によって実行され得る。本明細書では、フローチャート1200の方法を特定の順序に関して説明しているが、様々な実施形態では、本明細書のブロックは、異なる順序で実行されるか、または省略され得、さらなるブロックが追加され得る。
最初に、ブロック1205において、デバイス802は、受信機812を介して通信アクセスポリシーを受信する。プロセッサ804は、メモリ806に通信アクセスポリシーを記憶し得る。一実施形態では、デバイス802は、サーバ110から通信アクセスポリシーを受信する。図7〜図8に関して上記で説明したように、通信アクセスポリシーは、デバイス802がアプリケーション通信をどのように遅延させるべきかを指定し得る。
次に、ブロック1210において、プロセッサ804は、プロセッサ804上で実行されるアプリケーションからの1つまたは複数の通信をインターセプトする。プロセッサ804は、通信管理システム138および/または接続性エンジン208に関して上記で説明した機能を介して通信をインターセプトし得る。一実施形態では、DSP820、信号検出器818、送信機810、および/またはトランシーバ814は通信をインターセプトし得る。
次いで、ブロック1215において、プロセッサ804はデバイス状態を判断する。デバイスは、フォアグラウンド状態とバックグラウンド状態とを含み得る少なくとも2つの状態のうちの1つにあり得る。一実施形態では、フォアグラウンド状態はフォアグラウンド状態であり得、バックグラウンド状態はバックグラウンド状態であり得る。プロセッサ804は、ユーザインターフェース822を介してデバイスの状態を判断し得る。一実施形態では、プロセッサ804は、インターセプトされたものが、ユーザインターフェース822を介した入力に応答して生成されたものではなく、アプリケーションによって自動的に生成されたバックグラウンド通信であるかどうかを判断し得る。
その後、ブロック1220において、プロセッサ804は、デバイス802がバックグラウンド状態にあるかどうかを判断する。デバイスがバックグラウンド状態にない場合、プロセッサ804は、アプリケーション通信を遅延させず、ブロック1225において通信を続行することを許可する。デバイスがバックグラウンド状態にある場合、プロセッサ804はブロック1230に進む。一実施形態では、ブロック1215および1220は省略され得、アプリケーション通信は、デバイス802がバックグラウンド状態にあるかどうかにかかわらず遅延され得る。
その後、ブロック1230において、プロセッサ804は、送信ウィンドウ630が開いているかどうかを判断する。図6〜図7に関して上記で説明したように、プロセッサ804は、通信アクセスポリシーに基づいて送信ウィンドウ630を開くべきかどうかを判断することができる。たとえば、インターセプトされたアプリケーション通信が包含リスト中にない場合、プロセッサ804は送信ウィンドウ630を開き得る。一実施形態では、送信ウィンドウ630が開いているかどうかを判断することは、アプリケーション通信、イベント、または他のトリガに応答して送信ウィンドウ630を開くことを含むことができる。送信ウィンドウ630が開いている場合、プロセッサ804は、アプリケーション通信を遅延させず、ブロック1225において通信を続行することを許可する。送信ウィンドウ630が閉じられている場合、プロセッサ804はブロック1235に進む。
ブロック1235において、プロセッサ804は、通信アクセスポリシーに従って、インターセプトされた通信を遅延させる。たとえば、プロセッサ804は、通信が遅延され得るアプリケーションのリスト(「包含リスト」)、通信が遅延されないことがあるアプリケーションのリスト(「除外リスト」)、通信が遅延され得るか、または遅延されないことがある通信タイプのリスト、通信が遅延され得るか、または遅延されないことがあるネットワーク状態のリスト、通信が遅延され得るか、または遅延されないことがある時間の指示、および通信が遅延され得るか、または遅延されないことがあるロケーションの指示のうちの1つまたは複数の遅延基準を判断し得る。プロセッサ804は、判断された遅延基準に基づいてアプリケーション通信を許可するか、または遅延させることになる。いくつかの実施形態では、プロセッサ804は、追加の遅延基準を判断し得る。プロセッサ804は、アプリケーション通信が許可されるべきであると判断した場合、プロセッサ804はブロック1225に進む。プロセッサ804は、アプリケーション通信が遅延されるべきであると判断した場合、プロセッサ804はブロック1210に進む。
図13に、通信アクセスポリシーを実装するように構成された別の例示的なデバイス1300を示す。デバイス1300は、受信モジュール1310と、遅延モジュール1320と、許可モジュール1330とを備える。受信モジュール1310は、図12に示したブロック1205に関して上記で説明した機能のうちの1つまたは複数を実行するように構成され得る。受信モジュール1310は、図8に関して上記で説明した、受信機812、プロセッサ804、トランシーバ814、およびメモリ806のうちの1つまたは複数に対応し得る。受信モジュール1310はまた、図2に関して上記で説明した、TX/RX無線機212およびプロセッサ202のうちの1つまたは複数に対応し得る。
遅延モジュール1320は、図12に示したブロック1235に関して上記で説明した機能のうちの1つまたは複数を実行するように構成され得る。遅延モジュール1320は、図8に関して上記で説明した、プロセッサ804および送信機810のうちの1つまたは複数に対応し得る。遅延モジュール1320はまた、図2に関して上記で説明した、TX/RX無線機212、接続性エンジン208、ネットワーキングモジュール210、およびプロセッサ202のうちの1つまたは複数に対応し得る。
許可モジュール1330は、図12に示したブロック1225に関して上記で説明した機能のうちの1つまたは複数を実行するように構成され得る。許可モジュール1330は、図8に関して上記で説明した、プロセッサ804および送信機810のうちの1つまたは複数に対応し得る。許可モジュール1330はまた、図2に関して上記で説明した、TX/RX無線機212、接続性エンジン208、ネットワーキングモジュール210、およびプロセッサ202のうちの1つまたは複数に対応し得る。
情報および信号は多種多様な技術および技法のいずれかを使用して表され得ることを、当業者は理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
さらに、本明細書で開示する実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課せられた設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の例示的な実施形態の範囲からの逸脱を生じるものと解釈すべきではない。
本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行し得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで実施され得るか、プロセッサによって実行されるソフトウェアモジュールで実施され得るか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込み得るように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化され得る。プロセッサおよび記憶媒体はASIC中に常駐し得る。ASICはユーザ端末内に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末内に個別構成要素として常駐することもできる。
1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装する場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく、例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶装置、磁気ディスクストレージデバイスまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望のプログラムコードを担持または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を含み得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
開示した例示的な実施形態の前述の説明は、当業者が本発明を実施または使用することができるように与えたものである。これらの例示的な実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書で示した例示的な実施形態に限定されるものではなく、本明細書で開示した原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
特許請求の範囲は、上記に示した厳密な構成および構成要素に限定されないことを理解されたい。上記で説明した方法および装置の構成、動作および詳細において、特許請求の範囲から逸脱することなく、様々な改変、変更および変形が行われ得る。
上記は本開示の態様を対象とするが、本開示の他の態様およびさらなる態様は、それの基本的範囲から逸脱することなく考案され得、それの範囲は以下の特許請求の範囲によって判断される。