JP5784816B2 - Managing network access requests - Google Patents

Managing network access requests Download PDF

Info

Publication number
JP5784816B2
JP5784816B2 JP2014501056A JP2014501056A JP5784816B2 JP 5784816 B2 JP5784816 B2 JP 5784816B2 JP 2014501056 A JP2014501056 A JP 2014501056A JP 2014501056 A JP2014501056 A JP 2014501056A JP 5784816 B2 JP5784816 B2 JP 5784816B2
Authority
JP
Japan
Prior art keywords
request
mobile device
application
operating system
timer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014501056A
Other languages
Japanese (ja)
Other versions
JP2014514813A (en
Inventor
ジアレッタ、ジェラルド
スンダララジャン、ジャイ・クマー
ゴエル、サタシュ
メイラン、アーナウド
サフ、デベシュ・クマー
ジャイン、サチン
ペイヤッピリー、アジス・トム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/288,933 external-priority patent/US9264868B2/en
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2014514813A publication Critical patent/JP2014514813A/en
Application granted granted Critical
Publication of JP5784816B2 publication Critical patent/JP5784816B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3209Monitoring remote activity, e.g. over telephone lines or network connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W52/00Power management, e.g. TPC [Transmission Power Control], power saving or power classes
    • H04W52/02Power saving arrangements
    • H04W52/0209Power saving arrangements in terminal devices
    • H04W52/0261Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
    • H04W52/0264Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by selectively disabling software applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Description

関連出願の相互参照
本出願は、その開示の全体が参照により本明細書に明確に組み込まれる、2011年3月18日に出願された、代理人整理番号第111354P1号を有する、Giarettaらによる「CONNECTIVITY MANAGEMENT FOR APPLICATIONS ON A USER DEVICE」と題する米国仮特許出願第61/454,457号に対する米国特許法第119条(e)項に基づく利益を主張する。
CROSS REFERENCE TO RELATED APPLICATIONS This application is filed by Giaretta et al., Having Attorney Docket No. 111354P1, filed March 18, 2011, the entire disclosure of which is expressly incorporated herein by reference. Claims the benefit under 35 USC 119 (e) to US Provisional Patent Application No. 61 / 454,457 entitled "CONNECTIVITY MANAGEMENT FOR APPLICATIONS ON A USER DEVICE".

ワイヤレスデバイスに広範囲のアドオンサービスおよび特徴を与えるように動作するアプリケーションまたはデバイスアプレットが現在利用可能である。たとえば、ワイヤレスデバイスは、ショッピング、検索、位置特定、運転ナビゲーション、または一連の他の機能など、付加価値機能を実行するために、デバイスアプレットをダウンロードし、起動することが現在可能である。ネットワークおよびアプリケーションプロバイダは、概して、追加料金でデバイスユーザにこれらのデバイスアプレットを提供する。したがって、デバイスアプレットの使用は、ワイヤレスデバイスの機能性およびユーザビリティを高め得、デバイス自体では元来利用可能でない特徴および利便性をデバイスユーザに提供する。   Applications or device applets are currently available that operate to give a wide range of add-on services and features to wireless devices. For example, a wireless device can currently download and launch a device applet to perform value-added functions such as shopping, searching, locating, driving navigation, or a series of other functions. Network and application providers generally offer these device applets to device users for an additional fee. Thus, the use of a device applet can enhance the functionality and usability of the wireless device, providing the device user with features and conveniences not originally available on the device itself.

一般に、ワイヤレスデバイスは、いくつかの無線のいずれかを使用して、1つまたは複数の通信ネットワークとインターフェースする。たとえば、ワイヤレスデバイスは、セルラー、WiFi、Bluetooth(登録商標)、または他のタイプの無線アクセス技術を使用して通信を提供する様々な無線を含み得る。したがって、ワイヤレスデバイス上で実行しているアプリケーションは、通信チャネルを確立するために無線とインターフェースし、チャネルは、適切なネットワークと通信するためにアプリケーションによって使用される。   Generally, a wireless device interfaces with one or more communication networks using any of several radios. For example, a wireless device may include various radios that provide communication using cellular, WiFi, Bluetooth, or other types of radio access technologies. Thus, an application running on the wireless device interfaces with the radio to establish a communication channel, and the channel is used by the application to communicate with the appropriate network.

アプリケーションは、デバイスがバックグラウンドモードにあるときでも、通信チャネルを確立するためにワイヤレスデバイス上の無線とインターフェースし続け得る。デバイス上にインストールされたアプリケーションの数が増加するにつれて、デバイスがアクティブでない間のネットワーク通信の反復確立により、デバイスのバッテリー電力が不必要に消費され得る。さらに、スマートフォンなどのワイヤレスデバイスの使用が増加するにつれて、通信チャネルのセットアップに関連するネットワークシグナリングによってデータネットワークに過負荷がかかるようになり得る。   The application may continue to interface with the radio on the wireless device to establish a communication channel even when the device is in background mode. As the number of applications installed on a device increases, repeated establishment of network communications while the device is inactive can unnecessarily consume the device's battery power. Further, as the use of wireless devices such as smartphones increases, network signaling associated with communication channel setup can become overloaded.

ネットワークとモバイルデバイス上で実行しているアプリケーションとの間の接続性を管理するための方法、システム、およびデバイスについて説明する。一例では、デバイス上で実行しているアプリケーションからのネットワークアクセスの要求がインターセプトされ得る。たとえば、要求をインターセプトするために、モバイルデバイスのアプリケーションとオペレーティングシステムとの間にラッパーが配置され得る。要求をインターセプトすると、要求は、オペレーティングシステムの伝送制御プロトコル/インターネットプロトコル(TCP/IP)スタックに到着することを保留され得る。一例では、要求は、トリガリングイベントが発生したときに、オペレーティングシステムに対してリリースされ得る。要求のキャプチャ、保留、およびリリースは、モバイルデバイスがバックグラウンドモードにあるときに行われ得る。   A method, system, and device for managing connectivity between a network and an application running on a mobile device are described. In one example, a request for network access from an application running on the device may be intercepted. For example, a wrapper may be placed between the mobile device application and the operating system to intercept the request. Upon intercepting the request, the request may be suspended from arriving at the operating system's Transmission Control Protocol / Internet Protocol (TCP / IP) stack. In one example, the request can be released to the operating system when a triggering event occurs. Request capture, hold, and release may occur when the mobile device is in background mode.

一構成では、要求は、モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートされ得る。アプリケーションからの要求のインターセプションと、他の要求のインターセプションとは、異なる時間に行われ得る。   In one configuration, the request may be aggregated with other intercepted requests to communicate for the mobile device. The interception of requests from applications and the interception of other requests can occur at different times.

一例では、ラッパーのための命令が実行され得る。実行されたラッパーは、第1のアプリケーションからの要求のインターセプションを実行し得る。一構成では、ラッパーは、モバイルデバイスのアプリケーションレイヤとオペレーティングシステムのソケットレイヤとの間に位置し得る。   In one example, instructions for the wrapper may be executed. The executed wrapper may perform the interception of the request from the first application. In one configuration, the wrapper may be located between the application layer of the mobile device and the socket layer of the operating system.

一構成では、第1のアプリケーションは、要求が保留される種類のアプリケーションとして識別され得る。アプリケーションは、クリティカルアプリケーションまたは非クリティカルアプリケーションとして識別され得る。非クリティカルアプリケーションからの要求のみが保留され得る。   In one configuration, the first application may be identified as the type of application for which the request is pending. Applications can be identified as critical applications or non-critical applications. Only requests from non-critical applications can be held.

一実施形態では、トリガリングイベントは、タイマーの満了、ディスプレイのステータス変更、マイクロフォンのステータス変更、スピーカーのステータス変更、モバイルデバイスの全地球測位システム(GPS)センサーのステータス変更、ユニバーサルシリアルバスポートが使用中であるという指示、モバイルデバイスにオーディオ機器が接続されているという指示、モバイルデバイスにビデオ機器が接続されているという指示、Wi−Fiタイプのネットワークへの接続が利用可能であるという指示、またはセルラータイプのネットワークへの無線接続が開いているという指示のうちの少なくとも1つを含み得る。   In one embodiment, the triggering event is due to timer expiration, display status change, microphone status change, speaker status change, mobile device global positioning system (GPS) sensor status change, universal serial bus port used An indication that an audio device is connected to the mobile device, an indication that a video device is connected to the mobile device, an indication that a connection to a Wi-Fi type network is available, or It may include at least one of indications that a wireless connection to the cellular type network is open.

さらに、一例では、第1のアプリケーションの遅延許容差が判断され得る。さらに、判断された遅延許容差に基づいて第1のアプリケーションにコールバック関数が与えられ得る。コールバック関数は、通信リソースに接続するように第1のアプリケーションに命令し得る。   Further, in one example, the delay tolerance of the first application can be determined. Further, a callback function may be provided to the first application based on the determined delay tolerance. The callback function may instruct the first application to connect to the communication resource.

一構成では、第1のアプリケーションに関連する第1のタイマーの満了時間が判断され得る。また、第2のアプリケーションに関連する許容差と第2のタイマーの満了時間とが判断され得る。第2のタイマーは、第1のタイマーの満了時間と、許容差と、第2のタイマーの満了時間とに基づいて満了させられ得る。モバイルデバイスのための通信を行うための第1のアプリケーションからの要求と第2のアプリケーションからのインターセプトされた要求とがリリースされ得る。   In one configuration, the expiration time of the first timer associated with the first application may be determined. Also, a tolerance associated with the second application and an expiration time of the second timer can be determined. The second timer may be expired based on the expiration time of the first timer, the tolerance, and the expiration time of the second timer. A request from the first application to communicate for the mobile device and an intercepted request from the second application may be released.

一例では、アプリケーションからデッドラインが受信され得る。要求は、デッドラインの前まで保留され得る。通信リソースに接続するための要求は、デッドラインより前にリリースされ得る。一構成では、要求は、モバイルデバイスのための通信チャネルを確立するためのシステムコールを含み得る。要求は、トリガリングイベントを検出すると、オペレーティングシステムのソケットレイヤに対してリリースされ得る。   In one example, a deadline may be received from an application. Requests can be held until before the deadline. A request to connect to a communication resource may be released before the deadline. In one configuration, the request may include a system call to establish a communication channel for the mobile device. The request may be released to the operating system socket layer upon detecting a triggering event.

一実施形態では、要求をリリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示が受信され得る。間隔は、ネットワーク中のステートフルインターネットプロトコル(IP)ミドルボックスにおけるタイムアウト値よりも小さくなり得る。   In one embodiment, an indication of an interval related to how often a request is released may be received. The interval can be smaller than the timeout value in a stateful internet protocol (IP) middlebox in the network.

また、ワイヤレス通信のために構成されたモバイルデバイスについて説明する。本デバイスは、プロセッサと、プロセッサと電子通信しているメモリとを含み得る。メモリはオペレーティングシステムを含み得る。プロセッサは接続性エンジンを含み得る。エンジンは、モバイルデバイス上の第1のアプリケーションからの要求をインターセプトするようにとの命令を実行するようにさらに構成され得る。要求は、モバイルデバイスのための通信を行うための要求であり得る。エンジンは、モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに要求が到着することを保留することと、トリガリングイベントを検出すると、オペレーティングシステムに対して要求をリリースすることとを行うようにさらに構成され得る。   A mobile device configured for wireless communication is also described. The device can include a processor and memory in electronic communication with the processor. The memory can include an operating system. The processor may include a connectivity engine. The engine may be further configured to execute an instruction to intercept a request from a first application on the mobile device. The request can be a request to communicate for a mobile device. The engine suspends the request from arriving at the operating system's TCP / IP stack running on the mobile device and releases the request to the operating system upon detecting a triggering event. Can be further configured.

また、モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成された装置について説明する。本装置は、モバイルデバイス上のアプリケーションからの要求をインターセプトするための手段を含む。要求は、モバイルデバイスのための通信を行うための要求であり得る。本装置は、モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに要求が到着することを保留するための手段と、トリガリングイベントを検出すると、オペレーティングシステムに対して要求をリリースするための手段とをさらに含み得る。   An apparatus configured to manage network access requests from applications on mobile devices is also described. The apparatus includes means for intercepting requests from applications on the mobile device. The request can be a request to communicate for a mobile device. The apparatus suspends the arrival of the request on the TCP / IP stack of the operating system running on the mobile device, and releases the request to the operating system upon detecting a triggering event. These means may be further included.

また、モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成されたコンピュータプログラム製品について説明する。本製品は非一時的コンピュータ可読媒体を含み得る。媒体は、モバイルデバイス上のアプリケーションからの要求をインターセプトするためのコードを含み得る。要求は、モバイルデバイスのための通信を行うための要求であり得る。媒体は、モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに要求が到着することを保留するためのコードと、トリガリングイベントを検出すると、オペレーティングシステムに対して要求をリリースするためのコードとをさらに含み得る。   A computer program product configured to manage network access requests from applications on mobile devices is also described. The product may include non-transitory computer readable media. The medium may include code for intercepting requests from applications on the mobile device. The request can be a request to communicate for a mobile device. The medium has a code for deferring the arrival of the request on the TCP / IP stack of the operating system running on the mobile device, and for releasing the request to the operating system upon detecting a triggering event. And a code.

上記では、開示による例の特徴および技術的態様についてやや広く概説した。以下で、追加の特徴について説明する。開示する概念および特定の例は、本開示の同じ目的を実行するための他の構造を変更または設計するための基礎として容易に利用され得る。そのような等価な構成は、添付の特許請求の範囲の趣旨および範囲から逸脱しない。本明細書で開示する概念の編成と動作の方法の両方に関して、それらの概念を特徴づけると考えられる特徴は、添付の図に関連して検討すると以下の説明からより良く理解されよう。図の各々は、例示および説明のみの目的で与えられ、特許請求の範囲の限界を定めるものではない。   The foregoing has outlined rather broadly the features and technical aspects of the disclosed examples. In the following, additional features will be described. The disclosed concepts and specific examples can be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Such equivalent constructions do not depart from the spirit and scope of the appended claims. The features that are believed to characterize both the organization and method of operation of the concepts disclosed herein will be better understood from the following description when considered in conjunction with the accompanying figures. Each of the figures is provided for purposes of illustration and description only, and is not intended to limit the scope of the claims.

以下の図面を参照すれば、本発明の性質のさらなる理解が得られ得る。添付の図において、同様の構成要素または特徴は同じ参照ラベルを有し得る。さらに、同じタイプの様々なコンポーネントは、参照ラベルの後に、ダッシュと、それらの同様のコンポーネント同士を区別する第2のラベルとを続けることによって区別され得る。第1の参照ラベルのみが明細書において使用される場合、その説明は、第2の参照ラベルにかかわらず、同じ第1の参照ラベルを有する同様のコンポーネントのうちのいずれか1つに適用可能である。   A further understanding of the nature of the present invention may be obtained by reference to the following drawings. In the appended figures, similar components or features may have the same reference label. In addition, various components of the same type can be distinguished by following the reference label with a dash and a second label that distinguishes those similar components. Where only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label, regardless of the second reference label. is there.

ネットワーク環境のブロック図。Block diagram of a network environment. モバイルデバイスのアーキテクチャを示すブロック図。1 is a block diagram illustrating a mobile device architecture. FIG. ネットワークアクセスの要求の遅延を提供するモバイルデバイスのブロック図。1 is a block diagram of a mobile device that provides delays in requests for network access. ネットワークアクセスの要求を遅延させるためのモバイルデバイス上のアーキテクチャの例示的なブロック図。FIG. 4 is an exemplary block diagram of an architecture on a mobile device for delaying requests for network access. ネットワークアクセスの要求をアグリゲートするための例示的なタイミング図。FIG. 4 is an exemplary timing diagram for aggregating requests for network access. モバイルデバイス上に実装されたアーキテクチャの一例を示す図。1 is a diagram illustrating an example of an architecture implemented on a mobile device. FIG. ネットワークアクセスの要求を遅延させるための方法の一例を示すフローチャート。6 is a flowchart illustrating an example of a method for delaying a request for network access. アプリケーションの分類に基づいてネットワークアクセスの要求を遅延させるための方法の一例を示すフローチャート。6 is a flowchart illustrating an example of a method for delaying network access requests based on application classification. いくつかのモバイルデバイスから受信されたネットワークアクセスの要求をアグリゲートするための方法の一例を示すフローチャート。7 is a flowchart illustrating an example method for aggregating requests for network access received from several mobile devices. データ接続要求を同期させるための方法の一例を示すフローチャート。6 is a flowchart illustrating an example of a method for synchronizing data connection requests. 3つのアプリケーションが接続要求を周期的に開始するタイミング図。FIG. 4 is a timing diagram in which three applications periodically start connection requests. 接続要求のいくつかが同期された、図11のタイミング図。The timing diagram of FIG. 11 with some of the connection requests synchronized. 3つのアプリケーションが接続要求を周期的に開始するタイミング図。FIG. 4 is a timing diagram in which three applications periodically start connection requests. 接続要求のいくつかが同期された、図13のタイミング図。FIG. 14 is a timing diagram of FIG. 13 in which some of the connection requests are synchronized.

詳細な説明Detailed description

モバイルデバイス上にインストールされたアプリケーションからの要求をインターセプトするための方法、システム、およびデバイスについて説明する。要求は、モバイルデバイスのための通信チャネルを確立するシステムコールであり得る。「要求」および「システムコール」という用語は互換的に使用され得る。要求は、キャプチャされ、モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに到着することを保留され得る。インターセプトされた要求は、他のインターセプトされた要求とアグリゲートされ得る。アグリゲートされた要求は、一緒にバンドルされ、モバイルデバイス上でトリガリングイベントを検出するのとほぼ同時にオペレーティングシステムに対してリリースされ得る。アプリケーションからの要求のキャプチャ、保留、およびアグリゲーションは、モバイルデバイスがバックグラウンドモードにあるときに行われ得る。   Methods, systems, and devices for intercepting requests from applications installed on mobile devices are described. The request may be a system call that establishes a communication channel for the mobile device. The terms “request” and “system call” may be used interchangeably. The request may be captured and deferred to arrive at the operating system's TCP / IP stack running on the mobile device. Intercepted requests can be aggregated with other intercepted requests. Aggregated requests can be bundled together and released to the operating system almost simultaneously with detecting a triggering event on the mobile device. Capturing, holding, and aggregating requests from applications can occur when the mobile device is in background mode.

スマートフォン、携帯情報端末などのモバイルデバイスでは、ソフトウェアアプリケーションは、ユーザがデバイスをアクティブに使用していなくても動作し続け得る。ソーシャルネットワーキングアプリケーション、電子メールまたは他の通信アプリケーション、データフィードなどのアプリケーション(普及している例には、Facebook(登録商標)、Gmail(登録商標)、Twitter(登録商標)などがある)は、ユーザがデバイスを使用していなくても、データを送信および受信し続け得る。非アクティビティ動作モードの下でさえ、デバイスが表面上は使用中でないときでも動作し続けるアプリケーションにより、アクティビティにおける電力消費およびスパイク(spikes)が発生し得る。これらのアプリケーションによるアクティビティは、外部ネットワークによって与えられるような通信リソースを利用し得る。   In mobile devices such as smartphones and personal digital assistants, software applications can continue to operate even if the user is not actively using the device. Social networking applications, e-mail or other communication applications, applications such as data feeds (popular examples include Facebook, Gmail, Twitter, etc.) Can continue to send and receive data even if they are not using the device. Applications that continue to operate even when the device is not in use on the surface, even under inactivity mode of operation, can cause power consumption and spikes in activity. Activities by these applications may utilize communication resources as provided by the external network.

アプリケーションは、バックグラウンドモードから接続モードへのモバイルデバイスによる頻繁な遷移をトリガし得るか、あるいはアプリケーションは、場合によっては、デバイスがバックグラウンドモードに入ることまたは間欠受信(discontinuous reception)(DRX)などの他の代替接続モードに入ることに干渉し得る。ユーザがデバイスをアクティブに操作していないときの、アプリケーションによる無線アクティビティのこれらの高いレベルは、バッテリー寿命の早期の消耗、無線ネットワークの負荷の望ましくない増加、または他の望ましくない影響をもたらし得る。   The application can trigger frequent transitions by the mobile device from background mode to connected mode, or the application can in some cases enter the background mode or discontinuous reception (DRX), etc. May interfere with entering other alternative connection modes. These high levels of wireless activity by the application when the user is not actively operating the device can result in premature depletion of battery life, undesirable increases in wireless network load, or other undesirable effects.

モバイルデバイスは、デバイスのいくつかの入力が使用可能でないときまたはスリープ状態にあるとき、バックグラウンドモードにあり得る。言い換えれば、デバイスは、ユーザがデバイスを使用していないとき、バックグラウンドモードにあり得る。たとえば、(マイクロフォンなどの)オーディオ入力がオフであるとき、デバイスはバックグラウンドモードにあると見なされ得る。さらに、(デバイスのディスプレイなどの)ビジュアル入力がオフであるとき、デバイスはバックグラウンドモードにあると判断され得る。以下で説明するように、モバイルデバイスがバックグラウンドモードにあるか否かを判断するために追加の入力が使用され得る。   A mobile device may be in background mode when some input of the device is not available or is in a sleep state. In other words, the device can be in background mode when the user is not using the device. For example, when an audio input (such as a microphone) is off, the device may be considered in background mode. Further, when visual input (such as the device display) is off, the device may be determined to be in background mode. As described below, additional inputs can be used to determine whether the mobile device is in background mode.

ネットワークとモバイルデバイス上で実行しているアプリケーションとの間の接続性の管理について説明する。モバイルデバイス上にインストールされたいくつかのアプリケーションが、デバイスがバックグラウンドモードにあるときにネットワークへのアクセスを要求したとき、不必要な量のネットワークシグナリングが発生し得る。たとえば、第1のアプリケーションが、通信チャネルを確立するためにシステムコールを開始し得、次いで、データが送信/受信された後、チャネルは中止され得る。次いで、第2のアプリケーションが、データを送信/受信するための通信チャネルを同じく確立するためにシステムコールを開始し得る。通信チャネルが確立されるたびに、ネットワークの利用可能な帯域幅が減少するように、ネットワークシグナリングの量は増加し得る。さらに、いくつかのアプリケーションが、デバイスがバックグラウンドモードにある間にネットワークへのアクセスを要求したとき、不必要な量のバッテリー電力が消費され得る。通信チャネルが確立されるたびに、モバイルデバイスがアクティブモードに入ったとき、利用可能な電力がより少なくなるように、バッテリー電力は減少し得る。したがって、本システムおよび方法は、ネットワークシグナリングを低減し、バッテリー電力を温存するために、ネットワークアクセスの要求を保留し、アグリゲートし得る。前述のように、これは、デバイスがアクティブでないときに行われ得る。さらに、システムコールの保留およびアグリゲーションは、デバイスのバッテリー電力があるしきい値量を下回るときに行われ得る。トリガリングイベントが発生した(たとえば、デバイスがアクティブモードに入った)とき、アグリゲートされた要求は、ネットワークシグナリングの量を低減するため、ならびに各別個の要求に関連するバッテリー電力の消費を低減するために一緒にリリースされ得る。   Describe management of connectivity between a network and an application running on a mobile device. When some applications installed on a mobile device request access to the network when the device is in background mode, an unnecessary amount of network signaling can occur. For example, a first application may initiate a system call to establish a communication channel, and then the channel may be aborted after data is transmitted / received. The second application may then initiate a system call to also establish a communication channel for sending / receiving data. Each time a communication channel is established, the amount of network signaling can increase so that the available bandwidth of the network decreases. Furthermore, when some applications request access to the network while the device is in background mode, an unnecessary amount of battery power can be consumed. Each time a communication channel is established, battery power may decrease so that less power is available when the mobile device enters active mode. Thus, the present systems and methods may defer and aggregate network access requests to reduce network signaling and conserve battery power. As mentioned above, this can be done when the device is not active. Further, system call hold and aggregation may occur when the device battery power falls below a certain threshold amount. When a triggering event occurs (eg, the device enters active mode), the aggregated request reduces the amount of network signaling as well as the battery power consumption associated with each separate request Can be released together for.

要求の保留およびアグリゲーションは、ユーザによるデバイスの使用に干渉しないように、モバイルデバイスが非アクティブモードにあるときに実行され得る。一例では、ユーザデバイス上のアプリケーションからのネットワークアクセスの要求がインターセプトされ得る。たとえば、要求をインターセプトするために、モバイルデバイスのアプリケーションレイヤとデバイスのオペレーティングシステムレイヤとの間にラッパーが配置され得る。一例では、ラッパーは、要求をインターセプトするソフトウェアエンティティであり得る。ラッパーは、アプリケーションレイヤ中のアプリケーションならびにオペレーティングシステムレイヤ中のオペレーティングシステムに対して透過的(transparent)であり得る。要求をインターセプトすると、要求は、オペレーティングシステムに到着することを保留または遅延され得る。一構成では、要求は、アプリケーションレイヤ中の追加のアプリケーションから受信された他のインターセプトされた要求とアグリゲートされ得る。トリガリングイベントが検出されたとき、アグリゲートされた要求はオペレーティングシステムに対してリリースされ得る。したがって、ラッパーは、要求を透過的にインターセプトし得、アグリゲートし得、次いで、追加の処理が完了したとき、アグリゲートされた要求を中継し得る。   Request hold and aggregation may be performed when the mobile device is in an inactive mode so as not to interfere with the use of the device by the user. In one example, a request for network access from an application on a user device may be intercepted. For example, a wrapper may be placed between the application layer of the mobile device and the operating system layer of the device to intercept the request. In one example, the wrapper may be a software entity that intercepts the request. The wrapper may be transparent to the application in the application layer as well as the operating system in the operating system layer. Upon intercepting the request, the request may be suspended or delayed from arriving at the operating system. In one configuration, the request may be aggregated with other intercepted requests received from additional applications in the application layer. When a triggering event is detected, the aggregated request can be released to the operating system. Thus, the wrapper can intercept and aggregate requests transparently and then relay the aggregated requests when additional processing is complete.

さらに、保留された要求がデバイスのオペレーティングシステムに対してどのくらいの頻度でリリースされるべきかを示す間隔が判断され得る。間隔は、以下で説明するミドルボックスの状態を維持するように判断され得る。一例では、インターネットプロトコル(IP)ホストはステートフルミドルボックスによって分離され得る。ステートフルミドルボックスは、ファイアウォールおよびネットワークアドレス変換(NAT)機能を実行し得る。ファイアウォールの機能は、デバイスのどのインバウンド/アウトバウンドポートが開いているかまたは利用可能であるかを判断することであり得る。NAT機能は、セルラーネットワーク上で常に展開されるとは限らないが、LAN/WLAN上で連続的に展開され得る。モバイルデバイス上で実行しているアプリケーションは、セルラーネットワークとWi−Fiネットワークとを区別しないことがあり、したがって、アプリケーションは、セルラーネットワーク上でNAT機能を動作可能にしておくための「キープアライブ」要求を発信するためにタイマーを使用し得る。ミドルボックスの状態は、タイマーが満了するまで維持され得る。長寿命(long-lived)接続(TCPまたはUDP)が必要とされる場合、ミドルボックスは、それらの状態を接続全体にわたって保ち得る。モバイルデバイス(たとえば、スマートフォン)上で実行しているアプリケーションは、(Wi−Fiネットワークとは対照的に)セルラーネットワークには適合されないことがある。したがって、これらのアプリケーションは、間隔がセルラーネットワークのためのシグナリングのピークを生じるかどうかにかかわらず、どこでも働くキープアライブ/再接続間隔を選択し得る。したがって、以下で、デバイスがバックグラウンドモードにある間、ネットワークアクセスの要求を保留することと、あるトリガリングイベントが発生したときに、または特定のネットワークによって判断された間隔において要求をリリースすることとによって、ネットワークアクセスのためのシステムコールの数を低減して、電力を温存し、シグナリングを低減するためのシステムおよび方法について説明する。   In addition, an interval may be determined that indicates how often the pending request should be released to the device operating system. The interval can be determined to maintain the state of the middle box described below. In one example, Internet Protocol (IP) hosts can be separated by a stateful middlebox. A stateful middlebox may perform firewall and network address translation (NAT) functions. The function of the firewall may be to determine which inbound / outbound ports of the device are open or available. The NAT function is not always deployed on the cellular network, but can be continuously deployed on the LAN / WLAN. An application running on a mobile device may not distinguish between a cellular network and a Wi-Fi network, and thus the application may “keep alive” requests to keep the NAT function operational on the cellular network. A timer can be used to send The state of the middle box can be maintained until the timer expires. If long-lived connections (TCP or UDP) are required, the middlebox can keep their state across the connection. An application running on a mobile device (eg, a smartphone) may not be adapted to a cellular network (as opposed to a Wi-Fi network). Thus, these applications may select a keep alive / reconnect interval that works everywhere, regardless of whether the interval causes a signaling peak for the cellular network. Therefore, in the following, deferring a request for network access while the device is in background mode, and releasing the request when certain triggering events occur or at intervals determined by a particular network. Describes a system and method for reducing the number of system calls for network access, conserving power and reducing signaling.

以下の説明は、例を与えるものであり、特許請求の範囲において記載される範囲、適用性、または構成を限定するものではない。本開示の趣旨および範囲から逸脱することなく、説明する要素の機能および構成において変更が行われ得る。様々な実施形態は、適宜に様々なプロシージャまたはコンポーネントを省略し得、置換し得、または追加し得る。たとえば、説明する方法は、説明する順序とは異なる順序で実行され得、様々なステップが追加され得、省略され得、または組み合わせられ得る。また、いくつかの実施形態に関して説明する特徴は、他の実施形態において組み合わせられ得る。   The following description provides examples and does not limit the scope, applicability, or configuration described in the claims. Changes may be made in the function and configuration of the elements described without departing from the spirit and scope of the disclosure. Various embodiments may omit, substitute, or add various procedures or components as appropriate. For example, the described methods may be performed in an order different from the described order, and various steps may be added, omitted, or combined. Also, features described in connection with some embodiments may be combined in other embodiments.

次に図1を参照すると、ブロック図にワイヤレスネットワーク環境100の例が示されている。ネットワーク環境100は、モバイルデバイス102と通信ネットワーク115とを含み得る。デバイス102は、いくつかの無線チャネル110−aを使用してネットワーク115と通信し得る。たとえば、制御チャネル110−a−1は、デバイス105とネットワーク115との間に確立され得る。さらに、他のタイプのチャネル110−a−2〜110−a−nも確立され得る。これらの他のタイプのチャネルは、データチャネル、ボイスチャネルなどを含み得る。   Referring now to FIG. 1, an example of a wireless network environment 100 is shown in a block diagram. Network environment 100 may include a mobile device 102 and a communication network 115. Device 102 may communicate with network 115 using several wireless channels 110-a. For example, the control channel 110-a-1 can be established between the device 105 and the network 115. In addition, other types of channels 110-a-2 to 110-an may be established. These other types of channels may include data channels, voice channels, and the like.

動作中、デバイス102は、いくつかの無線のいずれかを使用してネットワーク115とインターフェースし得るアプリケーションを実行し得る。たとえば、実行アプリケーションは、ネットワーク115との通信を確立するための要求を発行し得る。一例では、要求は、ソケットレイヤコールなどのネットワーキングシステムコールであり得る。要求は、デバイス105上のオペレーティングシステムのソケットレイヤに宛てられ(be intended)得る。従来のデバイスは、一般に、これらのタイプの要求が、処理されるためにオペレーティングシステムに直接進むことを可能にする。要求を受信すると、従来のデバイスは、データ接続セットアッププロシージャを通して制御チャネル110−a−1を確立するためにネットワークシグナリングプロセスを開始する。データ接続セットアッププロシージャがモバイルデバイス105上で実行されるとき、バッテリー電力が消費され、ネットワークにわたるシグナリングのレベルが増加し得る。これは、モバイルデバイス105およびネットワーク115の効率を低下させ得る。   In operation, device 102 may execute an application that may interface with network 115 using any of several radios. For example, the executing application may issue a request to establish communication with the network 115. In one example, the request may be a networking system call such as a socket layer call. The request may be intended for the operating system socket layer on the device 105. Conventional devices generally allow these types of requests to go directly to the operating system to be processed. Upon receiving the request, the conventional device initiates a network signaling process to establish control channel 110-a-1 through a data connection setup procedure. When the data connection setup procedure is executed on the mobile device 105, battery power is consumed and the level of signaling across the network can be increased. This can reduce the efficiency of the mobile device 105 and the network 115.

一構成では、デバイス105は、オペレーティングシステムに対する要求のリリースを遅延させるためのアーキテクチャを含み得る。このアーキテクチャは、アプリケーションからのネットワークアクセスの要求をインターセプトし得る。要求をインターセプトすると、アーキテクチャは、要求がオペレーティングシステムのTCP/IPスタックに到着することを保留するかまたは遅延させ得る。TCP/IPスタックは、オペレーティングシステムに組み込まれ得る通信プロトコルを含み得、オペレーティングシステムに、ネットワークを介してデータを送信するための規格を与え得る。インターセプトされた要求は、追加のアプリケーションから受信されたネットワークアクセスの他のインターセプトされた要求とアグリゲートされ得る。アグリゲートされた要求は、一緒にバンドルされ得、ネットワークアクセスの単一の要求としてリリースされ得る。別の例では、アグリゲートされた要求は、特定のイベント(たとえば、モバイルデバイスがアクティブになる)の発生時にリリースされ得る。一構成では、インターセプトすることと、保留することと、アグリゲーションとに関係する上記で説明したアーキテクチャは、デバイス105が非アクティブモードにあるときに使用され得る。   In one configuration, the device 105 may include an architecture for delaying release of requests to the operating system. This architecture may intercept requests for network access from applications. Intercepting the request may cause the architecture to suspend or delay the request from reaching the operating system's TCP / IP stack. The TCP / IP stack may include a communication protocol that may be incorporated into the operating system and may provide the operating system with a standard for sending data over the network. Intercepted requests may be aggregated with other intercepted requests for network access received from additional applications. Aggregated requests can be bundled together and released as a single request for network access. In another example, the aggregated request may be released upon the occurrence of a specific event (eg, the mobile device becomes active). In one configuration, the architecture described above relating to intercepting, holding, and aggregation may be used when the device 105 is in an inactive mode.

図2に、図1のモバイルデバイス105の一例であり得るモバイルデバイス105−aのアーキテクチャ200の一例を示す。デバイス105−aのアーキテクチャ200は接続性エンジン225を含み得る。接続性エンジン225は、デバイス105−a上のアプリケーションレイヤ220中で実行しているアプリケーションが、図1のネットワーク115などのネットワークにいつアクセスし得るかを管理し得る。アプリケーションレイヤ220は、様々な機能を与えることと、無線ユニット245の1つまたは複数の無線250−aを使用して、ネットワーク115などの外部ネットワークと通信することとを実行し得るアプリケーションを含み得る。   FIG. 2 illustrates an example of an architecture 200 of a mobile device 105-a that may be an example of the mobile device 105 of FIG. The architecture 200 of the device 105-a may include a connectivity engine 225. The connectivity engine 225 may manage when an application running in the application layer 220 on the device 105-a can access a network, such as the network 115 of FIG. Application layer 220 may include applications that may perform various functions and communicate with an external network, such as network 115, using one or more radios 250-a of wireless unit 245. .

一構成では、接続性エンジン225はラッパー230を実行し得る。一例では、ラッパー230は、アプリケーションレイヤ220中のアプリケーションから発生したネットワークアクセスのためのシステムコールをインターセプトし得る。ラッパー230は、デバイス105−a上で実行しているオペレーティングシステム235に要求が到着することを保留し得る。ラッパー230はまた、インターセプトされたシステムコールを追加のアプリケーションからインターセプトされた他のシステムコールとアグリゲートし得る。ラッパー230は、アグリゲートされたシステムコールがオペレーティングシステム235のソケットレイヤ240に到着することを保留し得る。ネットワークアクセスのためのシステムコールがソケットレイヤ240に到着したとき、無線250−aのうちの1つまたは複数を使用して通信チャネルを確立するためのプロセスが開始され得る。ソケットレイヤ240は、要求を処理し得、要求を開始したアプリケーションとネットワーク115との間の接続を確立するために接続セットアッププロシージャを開始するように特定の無線に通知し得る。たとえば、ソケットレイヤ240は、特定のアプリケーションと無線、たとえば無線1 250−a−1との間のバインディングを確立するためにコール(または要求)を発行し得る。無線1 250−a−1は、図1の制御チャネル110−a−1の一例であり得る制御チャネルを確立することによって、接続セットアッププロシージャを開始するための信号をネットワーク115に送信することを開始し得る。   In one configuration, the connectivity engine 225 may execute the wrapper 230. In one example, the wrapper 230 may intercept system calls for network access that originate from applications in the application layer 220. The wrapper 230 may suspend the request from arriving at the operating system 235 running on the device 105-a. The wrapper 230 may also aggregate the intercepted system call with other system calls intercepted from additional applications. Wrapper 230 may suspend the aggregated system call from arriving at socket layer 240 of operating system 235. When a system call for network access arrives at the socket layer 240, a process for establishing a communication channel using one or more of the radios 250-a may be initiated. The socket layer 240 may process the request and notify the particular radio to initiate a connection setup procedure to establish a connection between the application that initiated the request and the network 115. For example, socket layer 240 may issue a call (or request) to establish a binding between a particular application and a radio, eg, radio 1 250-a-1. Radio 1 250-a-1 begins sending a signal to network 115 to initiate a connection setup procedure by establishing a control channel that may be an example of control channel 110-a-1 of FIG. Can do.

アプリケーションがネットワークアクセスのためのシステムコールを与えるたびにセットアッププロシージャを開始するのではなく、アグリゲートされた要求がソケットレイヤ240に対して一緒にリリースされたときに、要求を送ったアプリケーションと特定の無線250−aとの間の接続を確立するためにソケットレイヤ関数が1回開始され得る。選択された無線は、次いで、ネットワーク115と要求を発信したアプリケーションとのデータ接続を確立するために、ネットワークシグナリングを開始し得る。   Rather than initiating a setup procedure each time an application gives a system call for network access, when the aggregated request is released together to socket layer 240, the application that sent the request and the specific A socket layer function may be initiated once to establish a connection with the radio 250-a. The selected radio may then initiate network signaling to establish a data connection between the network 115 and the application that originated the request.

したがって、デバイスアーキテクチャ200は、デバイス105−a上で実行しているアプリケーションによる、ネットワークにアクセスするためのシステムコールのアグリゲーションを提供する。アグリゲーションは、ソケットレイヤ235に対していくつかのシステムコールをバンドルとしてリリースすることによって、バッテリー消費量とネットワークシグナリングとを低減するのに役立ち得る。   Thus, device architecture 200 provides for the aggregation of system calls to access the network by applications running on device 105-a. Aggregation can help reduce battery consumption and network signaling by releasing several system calls as a bundle to socket layer 235.

図3に、ネットワークアクセスの要求の保留とアグリゲーションとを実装するモバイルデバイス105−bのブロック図300を示す。デバイス105−bは、図1または図2のデバイス105の一例であり得る。デバイス105−bは、通信バス314を使用して通信するようにすべて結合されたプロセッサ360、メモリ355、アプリケーションレイヤ220、ラッパー230、接続性エンジン225、オペレーティングシステム235、および無線ユニット245を含み得る。メモリ355は、アプリケーションレイヤ220と、ラッパー230と、オペレーティングシステム235とを記憶し得る。プロセッサ360は接続性エンジン225を含み得る。接続性エンジン225は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェアコンポーネント、あるいは本明細書で説明する機能を実行するように設計されたそれらの任意の組合せとして実装され得る。接続性エンジン225は、モバイルデバイス上のアプリケーションからの要求をインターセプトするための手段と、要求がモバイルデバイス上のオペレーティングシステムに到着することを保留するための手段と、トリガリングイベントを検出すると、オペレーティングシステムに対して要求をリリースするための手段とを含み得る。さらに、接続性エンジン225は、要求を、モバイルデバイス105のための通信を行うための他のインターセプトされた要求とアグリゲートするための手段を含み得る。接続性エンジン225はまた、図2、図3、または図4のラッパー230を実行するための手段を含み得る。実行されたラッパーは、アプリケーションからの要求をインターセプトし得る。さらに、エンジン225は、アプリケーションを、要求が保留される種類のアプリケーションとして識別するための手段を含み得る。さらに、接続性エンジン225は、アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別するための手段と、非クリティカルアプリケーションからの要求のみを保留するための手段とを含み得る。デバイス105−bは一実装形態にすぎず、他の実装形態が可能であることに留意されたい。   FIG. 3 shows a block diagram 300 of a mobile device 105-b that implements deferring network access requests and aggregation. Device 105-b may be an example of device 105 of FIG. 1 or FIG. Device 105-b may include a processor 360, memory 355, application layer 220, wrapper 230, connectivity engine 225, operating system 235, and wireless unit 245 all coupled to communicate using communication bus 314. . Memory 355 may store application layer 220, wrapper 230, and operating system 235. The processor 360 may include a connectivity engine 225. The connectivity engine 225 is a general purpose processor, digital signal processor (DSP), application specific integrated circuit (ASIC), field programmable gate array (FPGA) or other programmable logic device, individual gate or transistor logic, individual hardware components, Alternatively, it may be implemented as any combination thereof designed to perform the functions described herein. The connectivity engine 225 detects a triggering event upon detecting a triggering event, a means for intercepting a request from an application on the mobile device, a means for holding the request from arriving at the operating system on the mobile device. Means for releasing requests to the system. Further, the connectivity engine 225 may include means for aggregating the request with other intercepted requests for communicating for the mobile device 105. The connectivity engine 225 may also include means for executing the wrapper 230 of FIG. 2, FIG. 3, or FIG. The executed wrapper can intercept the request from the application. Further, engine 225 may include means for identifying the application as the type of application for which the request is pending. Further, the connectivity engine 225 may include means for identifying the application as a critical application or a non-critical application, and means for holding only requests from the non-critical application. Note that device 105-b is only one implementation and other implementations are possible.

一態様では、プロセッサ360は、中央処理ユニット(CPU)、プロセッサ、ゲートアレイ、ハードウェア論理、メモリ要素、および/またはソフトウェアを実行するハードウェアのうちの少なくとも1つを含む。プロセッサ360は、アプリケーションレイヤ220において実行しているアプリケーションによって開始されたネットワークアクセスのためのシステムコールが、オペレーティングシステム235に到着することを保留され得、他のシステムコールとアグリゲートされ得るように、デバイス105−bの動作を制御するように動作する。一実装形態では、プロセッサ360は、いくつかの機能のいずれかを実行することに関係するコンピュータ可読命令を実行し得る。たとえば、プロセッサ360は、ネットワークアクセスの要求のインターセプションおよびアグリゲーションを実現するために、デバイス105−bから受信または通信された情報を分析するように動作し得る。別の態様では、プロセッサ360は、いくつかのアプリケーションからのネットワークアクセスのためのシステムコールのアグリゲーションを実現するために、メモリ355、無線ユニット245、アプリケーションレイヤ220、ラッパー230、オペレーティングシステム235、および/または接続性エンジン225によって利用され得る情報を生成するように動作し得る。   In one aspect, the processor 360 includes at least one of a central processing unit (CPU), a processor, a gate array, hardware logic, memory elements, and / or hardware executing software. The processor 360 may suspend a system call for network access initiated by an application executing in the application layer 220 from arriving at the operating system 235 and may be aggregated with other system calls. Operate to control the operation of device 105-b. In one implementation, the processor 360 may execute computer readable instructions related to performing any of a number of functions. For example, the processor 360 may operate to analyze information received or communicated from the device 105-b to achieve interception and aggregation of requests for network access. In another aspect, the processor 360 may provide memory 355, wireless unit 245, application layer 220, wrapper 230, operating system 235, and / or to achieve system call aggregation for network access from several applications. Or it may operate to generate information that may be utilized by the connectivity engine 225.

無線ユニット245は、デバイス105−bを、いくつかのチャネル110−aを使用する外部通信ネットワークなど、いくつかの外部エンティティにインターフェースするために使用され得るいくつかの無線/インターフェースを与え得る、ハードウェアおよび/またはソフトウェアを実行するプロセッサを含み得る。たとえば、無線ユニット245は、セルラー、WiFi、Bluetooth、またはチャネル110−aを使用して通信ネットワークと通信するための他の技術を使用して通信するための無線/インターフェースを与え得る。   The wireless unit 245 may provide some radio / interface that may be used to interface the device 105-b to some external entity, such as an external communication network using some channels 110-a. Hardware and / or processor executing software. For example, the wireless unit 245 may provide a wireless / interface for communicating using cellular, WiFi, Bluetooth, or other techniques for communicating with a communication network using channel 110-a.

アプリケーションレイヤ220は、デバイス105−b上の1つまたは複数のアプリケーションを記憶および/または実行し得る、ハードウェアおよび/またはソフトウェアを実行するプロセッサを含み得る。一実装形態では、アプリケーションレイヤ220は、アプリケーションが、外部ネットワークまたはシステムと通信する目的で無線/インターフェースへの接続を要求するなど、ネットワーキングサービスを要求するためにネットワーキング関数呼出しを開始することを可能にし得る。   Application layer 220 may include a processor executing hardware and / or software that may store and / or execute one or more applications on device 105-b. In one implementation, the application layer 220 allows an application to initiate networking function calls to request networking services, such as requesting a connection to a radio / interface for the purpose of communicating with an external network or system. obtain.

オペレーティングシステム235はソケットレイヤを含み得る。ソケットレイヤは、ソケットレイヤ関数を実行し得る、ハードウェアおよび/またはソフトウェアを実行するプロセッサを含み得る。一実装形態では、ソケットレイヤ関数は、Connect()、Bind()、およびSetsockopt()などの関数を含み得る。Connect()関数は、アプリケーションと特定の無線/インターフェースとの間の接続を確立するように動作する。たとえば、特定の無線/インターフェースは、無線ユニット245によって与えられたいくつかの候補無線から選択され得る。一態様では、ソケットレイヤは、様々なソケットレイヤ関数またはコマンドを実行し得る。   The operating system 235 may include a socket layer. The socket layer may include hardware and / or software executing processors that may execute socket layer functions. In one implementation, socket layer functions may include functions such as Connect (), Bind (), and Setsockopt (). The Connect () function operates to establish a connection between an application and a specific radio / interface. For example, a particular radio / interface may be selected from a number of candidate radios provided by radio unit 245. In one aspect, the socket layer may perform various socket layer functions or commands.

接続性エンジン225は、モバイルデバイス105−b上で実行しているアプリケーションからのネットワークアクセスの要求をラッパーにインターセプトさせるためにラッパー230を実行し得る、ハードウェアおよび/またはソフトウェアを実行するプロセッサを含み得る。ラッパー230はまた、インターセプトされた要求がオペレーティングシステム235に到着することを保留し得る。さらに、ラッパー230は、インターセプトされた要求を他のインターセプトされた要求とアグリゲートし得る。アグリゲートされた要求は、トリガリングイベントが発生した(たとえば、モバイルデバイス105−bがアクティブモードに入った)ときにオペレーティングシステムのソケットレイヤに対してリリースされ得る。   The connectivity engine 225 includes a processor executing hardware and / or software that may execute the wrapper 230 to cause the wrapper to intercept requests for network access from applications running on the mobile device 105-b. obtain. Wrapper 230 may also suspend the intercepted request from arriving at operating system 235. Further, the wrapper 230 may aggregate the intercepted request with other intercepted requests. Aggregated requests may be released to the operating system socket layer when a triggering event occurs (eg, mobile device 105-b enters active mode).

接続性エンジン225は、ラッパー230に、様々な方法でネットワークアクセスの要求をキャプチャさせ得、保留させ得、アグリゲートさせ得る。たとえば、デバイス105−bがバックグラウンドモードにあるとき、(ラッパー230を介して)接続性エンジン225は、デバイス105−a上で実行しているいくつかのアプリケーションからのいくつかの要求をインターセプトし得る。インターセプトされた要求は、一緒にアグリゲートされ得、あるトリガリングイベントが発生するまで保留され得る。たとえば、要求は、モバイルデバイス105−bがアクティブ状態に入ったときにリリースされ得る。一構成では、現在保留されているアグリゲートされた要求は一緒にリリースされ得る。たとえば、アグリゲートされた要求は、バンドルされ得、単一のシステムコールとしてソケットレイヤに対して一緒にリリースされ得る。ソケットレイヤは、ネットワーク115とのデータ接続のために通信チャネルを確立するためのプロシージャを開始し得る。   Connectivity engine 225 may cause wrapper 230 to capture, defer, and aggregate requests for network access in various ways. For example, when device 105-b is in background mode, connectivity engine 225 intercepts some requests from some applications running on device 105-a. obtain. Intercepted requests can be aggregated together and deferred until some triggering event occurs. For example, the request may be released when the mobile device 105-b enters an active state. In one configuration, currently pending aggregated requests can be released together. For example, aggregated requests can be bundled and released together to the socket layer as a single system call. The socket layer may initiate a procedure for establishing a communication channel for data connection with the network 115.

メモリ355は、RAM、ROM、EEPROM、または情報がデバイス105−bにおいて記憶され、取り出されることを可能にするように動作する他のタイプのメモリデバイスを含み得る。一実装形態では、メモリ355は、プロセッサ360によって実行されるコンピュータ可読命令を記憶し得る。メモリ355はまた、プロセッサ360、無線ユニット245、アプリケーションレイヤ220、ラッパー230、オペレーティングシステム235、および/または接続性エンジン225のいずれかによって生成されたデータを含む、いくつかの他のタイプのデータのいずれかを記憶し得る。メモリ355は、ランダムアクセスメモリ、バッテリーバックの(battery-backed)メモリ、ハードディスク、磁気テープなどを含む、いくつかの異なる構成を含み得る。また、圧縮および自動バックアップなど、様々な特徴がメモリ355上に実装され得る。   Memory 355 may include RAM, ROM, EEPROM, or other types of memory devices that operate to allow information to be stored and retrieved from device 105-b. In one implementation, the memory 355 may store computer-readable instructions that are executed by the processor 360. Memory 355 also includes several other types of data, including data generated by any of processor 360, wireless unit 245, application layer 220, wrapper 230, operating system 235, and / or connectivity engine 225. Either can be remembered. Memory 355 may include a number of different configurations, including random access memory, battery-backed memory, hard disk, magnetic tape, and the like. Various features may also be implemented on the memory 355, such as compression and automatic backup.

様々な実装形態では、デバイス105−bは、非一時的コンピュータ可読媒体上に記憶されるかまたは非一時的コンピュータ可読媒体上で実施される1つまたは複数のプログラム命令(「命令」)または「コード」のセットを有するコンピュータプログラム製品を含み得る。少なくとも1つのプロセッサ、たとえば、プロセッサ360および/または接続性エンジン225によってコードが実行されたとき、それらの実行は、プロセッサ360および/または接続性エンジン225に、本明細書で説明するアグリゲーションアーキテクチャの機能を与えるようにデバイス105−bを制御させ得る。たとえば、非一時的コンピュータ可読媒体は、フロッピー(登録商標)ディスク、CDROM、メモリカード、フラッシュメモリデバイス、RAM、ROM、あるいはデバイス105−bとインターフェースする他のタイプのメモリデバイスまたはコンピュータ可読媒体であり得る。別の態様では、コードのセットは、外部デバイスまたは通信ネットワークリソースからデバイス105−bにダウンロードされ得る。コードのセットは、実行されたとき、本明細書で説明するシステムコールアグリゲーションアーキテクチャの態様を与えるように動作する。   In various implementations, the device 105-b may be stored on or implemented on a non-transitory computer readable medium, one or more program instructions (“instructions”) or “ A computer program product having a set of “codes” may be included. When code is executed by at least one processor, e.g., processor 360 and / or connectivity engine 225, their execution is transmitted to processor 360 and / or connectivity engine 225 as a function of the aggregation architecture described herein. Device 105-b may be controlled to provide For example, the non-transitory computer readable medium is a floppy disk, CDROM, memory card, flash memory device, RAM, ROM, or other type of memory device or computer readable medium that interfaces with device 105-b. obtain. In another aspect, the set of codes may be downloaded to device 105-b from an external device or communication network resource. The set of code, when executed, operates to provide aspects of the system call aggregation architecture described herein.

図4に、上記で説明したように、ネットワークアクセスの要求をインターセプトし、アグリゲートするために有用なモバイルデバイス105−c上のアーキテクチャの例示的なブロック図400を示す。モバイルデバイス105−cは、図1、図2、または図3のモバイルデバイス105の一例であり得る。   FIG. 4 shows an exemplary block diagram 400 of an architecture on a mobile device 105-c that is useful for intercepting and aggregating requests for network access, as described above. The mobile device 105-c may be an example of the mobile device 105 of FIG. 1, FIG. 2, or FIG.

図示のように、ブロックは、アプリケーションプロセッサ490とモデムプロセッサ495との間で分割されるが、様々な機能は、図4の例とは別様に編成され得る。アプリケーションレイヤ220は、アプリケーション接続エンジン(APP CnE)475およびソケットレイヤ240と対話し得る。アプリケーション接続エンジン475はモデム接続エンジン(モデムCnE)485と通信し得る。モデム接続エンジンは、無線ユニット245およびその中のいくつかの無線250−aなど、通信リソースを管理し得る。ラッパー230は、アプリケーションプロセッサ490においてアプリケーションレイヤ220とオペレーティングシステムのソケットレイヤ240との間で実行され得る。ラッパー230は、アプリケーションレイヤ220とソケットレイヤ240との間で受け渡されるデータをキャプチャし得る。たとえば、ラッパー230は、アプリケーションレイヤ220から送られ、ソケットレイヤ240に宛てられたシステムコールをインターセプトするために、アプリケーション220とソケットレイヤ240との間に配置され得る。一構成では、ラッパー230は、デバイス105−cによる非アクティビティ期間中にアプリケーションレイヤ220からのシステムコールをインターセプトし得、ラッパーは、ソケットレイヤ240に対してシステムコールをリリースする前に、トリガリングイベントが発生するまでインターセプトされたコールを保留し得る。システムコールは、無線ユニット245内の無線250を使用して通信チャネルを確立するための要求であり得る。   As shown, the blocks are divided between an application processor 490 and a modem processor 495, but various functions may be organized differently than in the example of FIG. Application layer 220 may interact with application connection engine (APP CnE) 475 and socket layer 240. Application connection engine 475 may communicate with modem connection engine (modem CnE) 485. The modem connection engine may manage communication resources such as the wireless unit 245 and some of the radios 250-a therein. The wrapper 230 may be executed in the application processor 490 between the application layer 220 and the operating system socket layer 240. The wrapper 230 may capture data passed between the application layer 220 and the socket layer 240. For example, the wrapper 230 may be placed between the application 220 and the socket layer 240 to intercept system calls sent from the application layer 220 and destined for the socket layer 240. In one configuration, wrapper 230 may intercept system calls from application layer 220 during periods of inactivity by device 105-c, and the wrapper may trigger a triggering event before releasing system calls to socket layer 240. Intercepted calls can be put on hold until a call occurs. A system call may be a request to establish a communication channel using radio 250 in radio unit 245.

別の例では、ラッパー230は、デバイス105−cによる非アクティビティ期間中にアプリケーションレイヤ220からインターセプトされたシステムコールをアグリゲートし得る。ラッパー230は、動作/送信のためにソケットレイヤ240および最終的に無線ユニット245に対してアグリゲートされたシステムコールをリリースする前に、特定のイベントが発生するまで、インターセプトされ、アグリゲートされたコールを保留し得る。   In another example, wrapper 230 may aggregate system calls intercepted from application layer 220 during periods of inactivity by device 105-c. Wrapper 230 was intercepted and aggregated until a specific event occurred before releasing the system call aggregated to socket layer 240 and finally wireless unit 245 for operation / transmission. You can put a call on hold.

一構成では、ラッパー230は、アプリケーションが、それらの要求がソケットレイヤ240に到着することを保留されていることに気づかないように、アプリケーションレイヤ220にあるアプリケーションにとって不可視であり得る。ラッパー230は、別個のソフトウェアコンポーネントであり得るか、あるいは接続性エンジン225またはアプリケーション接続エンジン475などの別のコンポーネントに組み込まれ得る。   In one configuration, wrapper 230 may be invisible to applications at application layer 220 so that applications are not aware that their requests are pending to arrive at socket layer 240. Wrapper 230 can be a separate software component or can be incorporated into another component, such as connectivity engine 225 or application connectivity engine 475.

図5に、第1のアプリケーションおよび第2のアプリケーションなど、いくつかのアプリケーションのためのタイミング図500を示す。アプリケーションは、モバイルデバイス105のアプリケーションレイヤ220中に設置され得る。タイミング図500は、図2または図3の接続性エンジン225の実装の結果であり得る。一構成では、第1の要求505−a−1が、時間t0において第1のアプリケーションから送られ得る。第1の要求505−a−1はConnect()システムコールであり得る。第1の要求505−a−1は、モバイルデバイス上で実行しているオペレーティングシステム235に到着することを保留され得る。たとえば、第1の要求は、オペレーティングシステムのTCP/IPスタックに到着することを保留され得る。要求が保留される時間はH0として表され得る。第1の要求505−a−1は、時間t2においてオペレーティングシステム235に対してリリースされ得る。 FIG. 5 shows a timing diagram 500 for several applications, such as a first application and a second application. Applications can be placed in the application layer 220 of the mobile device 105. Timing diagram 500 may be a result of the implementation of connectivity engine 225 of FIG. 2 or FIG. In one arrangement, the first request 505-a-1, can be sent from the first application at time t 0. The first request 505-a-1 may be a Connect () system call. The first request 505-a-1 may be suspended from arriving at the operating system 235 running on the mobile device. For example, the first request may be suspended from arriving at the operating system's TCP / IP stack. The time that the request is held can be represented as H 0 . First request 505-a-1 can be released to the operating system 235 at time t 2.

一例では、第2の要求505−a−2が、時間t1において第2のアプリケーションから送られ得る。時間t1は時間t0の後であり得る。第2の要求505−a−2もConnect()システムコールであり得る。第2の要求505−a−2は、H1として表されるある時間期間の間、オペレーティングシステム235に到着することを保留され得る。たとえば、第2の要求も、オペレーティングシステムのTCP/IPスタックに到着することを保留され得る。第2の要求505−a−2は、時間t2においてリリースされ得る。したがって、第1の要求505−a−1および第2の要求505−a−2は、一緒にまたは同時(すなわち時間t2)にリリースされ得る。時間期間H1は、時間期間H0よりも少なくなり得る。言い換えれば、第2の要求505−a−2は、第1の要求505−a−1よりも少ない時間の間保留され得る。 In one example, the second request 505-a-2, can be sent from the second application at time t 1. Time t 1 can be after time t 0 . The second request 505-a-2 may also be a Connect () system call. Second request 505-a-2 during a certain period of time, expressed as H 1, it may be suspended from reaching the operating system 235. For example, the second request may also be deferred to arrive at the operating system's TCP / IP stack. Second request 505-a-2 may be released at time t 2. Thus, the first request 505-a-1 and the second request 505-a-2 can be released together or at the same time (ie, time t 2 ). The time period H 1 can be less than the time period H 0 . In other words, the second request 505-a-2 may be held for a less time than the first request 505-a-1.

一構成では、時間期間H0中に、第2の要求505−a−2が時間t1においてインターセプトされたとき、第1の要求は第2の要求505−a−2とアグリゲートされ得る。要求のアグリゲーションは、両方の要求が実質的に同じ時間(すなわち、時間t2)にリリースされることを可能にする。したがって、タイミング図500は、異なる時間(t0およびt1)に送られた要求が、異なる時間期間(H0およびH1)の間保留され得、次いで、同時(t2)にリリースされ得ることを示す。 In one configuration, during the time period H 0 , the first request may be aggregated with the second request 505-a-2 when the second request 505-a-2 is intercepted at time t 1 . Request aggregation allows both requests to be released at substantially the same time (ie, time t 2 ). Thus, the timing diagram 500 shows that requests sent at different times (t 0 and t 1 ) can be held for different time periods (H 0 and H 1 ) and then released at the same time (t 2 ). It shows that.

図6に、モバイルデバイス105−d上で実装され得るアグリゲーションアーキテクチャの一例を示す。モバイルデバイス105−dは、図1、図2、図3、および図4のモバイルデバイス105の一例であり得る。図示のように、デバイス105−dは、アプリケーションレイヤ220−aと、ラッパー230−bと、オペレーティングシステム235とを含み得る。オペレーティングシステム235はソケットレイヤ240を含み得る。図2または図3の接続性エンジン225は、ラッパー230−bソフトウェアを実行するようにとの命令を実行し得る。一構成では、デバイス105−dはバックグラウンドモードにあり得る。モバイルデバイス105−dは、たとえば、デバイス105−dのスクリーンまたはディスプレイがオフであるとき、デバイス105−dのマイクロフォン、スピーカー、または他のオーディオ出力がオフであるとき、デバイス105−d中の全地球測位システム(GPS)機構が、デバイス105−dは静止していると判断したとき、デバイスのバッテリーレベルがあるしきい値レベルを下回るときなど、バックグラウンドモードにあると見なされ得る。   FIG. 6 shows an example of an aggregation architecture that may be implemented on the mobile device 105-d. The mobile device 105-d may be an example of the mobile device 105 of FIGS. 1, 2, 3, and 4. As shown, the device 105-d may include an application layer 220-a, a wrapper 230-b, and an operating system 235. Operating system 235 may include a socket layer 240. The connectivity engine 225 of FIG. 2 or FIG. 3 may execute an instruction to execute the wrapper 230-b software. In one configuration, device 105-d may be in background mode. The mobile device 105-d can, for example, switch all devices in the device 105-d when the screen or display of the device 105-d is off, and when the microphone, speaker, or other audio output of the device 105-d is off. When the Global Positioning System (GPS) mechanism determines that device 105-d is stationary, it may be considered to be in background mode, such as when the device's battery level is below a certain threshold level.

一例では、アプリケーションレイヤ220−aにおいて実行しているいくつかのアプリケーション605−aは、Connect()システムコールなど、ネットワークアクセスのためのシステムコール505−aを送り得る。システムコール505−aは、異なる時間に各アプリケーションから送られ得る。ラッパー230−bは、これらの要求をキャプチャし得、オペレーティングシステム235に到着することを保留し得る。特に、コールは、オペレーティングシステム235のソケットレイヤ240に到着することを保留され得る。一構成では、アグリゲーションモジュール610は、インターセプトされたシステムコール505−aをアグリゲートし得る。アグリゲートされた要求は、ラッパー230−a−1からオペレーティングシステム235のソケットレイヤ240に対して一緒に(または実質的に同じ時間に)リリースされ得る。アグリゲートされた要求を受信すると、ソケットレイヤ240は、続いてネットワーク115との接続を確立し得る。プロシージャは、制御チャネル110−a−1を確立するために、モバイルデバイス105−dとネットワーク115との間でシグナリングメッセージを送信することを含み得る。   In one example, some applications 605-a running in the application layer 220-a may send system calls 505-a for network access, such as Connect () system calls. System calls 505-a may be sent from each application at different times. Wrapper 230-b may capture these requests and suspend arriving at operating system 235. In particular, the call may be suspended from arriving at the socket layer 240 of the operating system 235. In one configuration, aggregation module 610 may aggregate intercepted system call 505-a. Aggregated requests may be released together (or substantially at the same time) from wrapper 230-a-1 to socket layer 240 of operating system 235. Upon receiving the aggregated request, socket layer 240 may subsequently establish a connection with network 115. The procedure may include sending a signaling message between the mobile device 105-d and the network 115 to establish the control channel 110-a-1.

したがって、ネットワークアクセスの要求のインターセプション、保留、およびアグリゲーションは、複数のシステムコールが、異なる時間にソケットレイヤ240において実行されないので、モバイルデバイス105−dの電力消費量を低減し得る。代わりに、複数の要求が一緒にバンドルされ、ほぼ同時にソケットレイヤ240に対してリリースされる。さらに、要求のアグリゲーションは、ネットワーク115との接続セットアッププロシージャの頻度を低減し、したがって、ネットワークトラフィックを低減し得る。   Thus, intercepting, holding, and aggregating requests for network access may reduce power consumption of the mobile device 105-d because multiple system calls are not performed at the socket layer 240 at different times. Instead, multiple requests are bundled together and released to the socket layer 240 at about the same time. Further, request aggregation may reduce the frequency of connection setup procedures with the network 115 and thus reduce network traffic.

アプリケーション605−aからの要求の保留およびアグリゲーションは、選択的に行われ得る(すなわち、ユーザが中断され得ないように実装され得る)。通信チャネルを確立するためのアプリケーション605−aからの要求をいつ保留し、アグリゲートすべきかを判断するために、様々なファクタが採用され得る。たとえば、要求をインターセプトするという判断は、スクリーンがオフである、またはオーディオ出力がオフであるなど、モバイルデバイス105−dのいくつかの特性に基づいて行われ得る。要求を保留することは、無線がロードされないとき、さもなければモバイルデバイス105−dが使用中でない(通話、オーディオストリーミングなどがない)ときに、そのような遅延を処理することが可能であるとわかっているアプリケーションのみに対して実装され得る。アプリケーションからのシステムコールのインターセプションおよび保留は、ユーザが、アプリケーションによって与えられるサービスに登録する(subscribes)かどうかに基づいて実装され得る。ユーザがサービスに登録する場合、アプリケーションからの要求は、オペレーティングシステムに到着することを保留されないことがある。代わりに、このサブスクリプションベースのアプリケーションからの要求は、ソケットレイヤに直ちに受け渡すことが可能にされ得る。一例では、モバイルデバイス105−d上で実行しているアプリケーションは分類され得る。たとえば、第1のアプリケーション605−a−1は非クリティカルアプリケーションとして分類され得、第2のアプリケーション605−a−2はクリティカルアプリケーションとして分類され得る。非クリティカルアプリケーションは、ある遅延許容差をもつアプリケーションであり得る。言い換えれば、通信チャネルを確立するための非クリティカルアプリケーションからのシステムコールは遅延され得る。しかしながら、クリティカルアプリケーションは、遅延許容差がほとんどまたはまったくないアプリケーションであり得る。クリティカルアプリケーションの例には、限定はしないが、子供追跡アプリケーション、緊急ベースのアプリケーション、サブスクリプションベースのアプリケーションなどがあり得る。一構成では、要求の保留およびアグリゲーションは、非クリティカルアプリケーションから発生した要求に対して行われ得る。クリティカルアプリケーションから送られた要求は、保留(またはアグリゲート)されないことがあり、代わりに、オペレーティングシステムのソケットレイヤに直接進み得る。保留およびアグリゲーションはまた、上記のファクタまたは他のファクタの組合せを利用して実装され得る。   Pending and aggregating requests from application 605-a can be done selectively (ie, implemented so that the user cannot be interrupted). Various factors may be employed to determine when to hold a request from application 605-a to establish a communication channel and determine when to aggregate. For example, the decision to intercept the request may be made based on several characteristics of the mobile device 105-d, such as the screen is off or the audio output is off. Holding the request may be able to handle such a delay when the radio is not loaded, or when the mobile device 105-d is not in use (no call, audio streaming, etc.). Can be implemented only for known applications. Interception and hold of system calls from the application may be implemented based on whether the user subscribes to a service provided by the application. When a user registers for a service, a request from an application may not be deferred from arriving at the operating system. Instead, requests from this subscription-based application may be allowed to pass immediately to the socket layer. In one example, applications running on the mobile device 105-d can be classified. For example, the first application 605-a-1 may be classified as a non-critical application and the second application 605-a-2 may be classified as a critical application. A non-critical application can be an application with some delay tolerance. In other words, system calls from non-critical applications to establish a communication channel can be delayed. However, critical applications can be applications that have little or no delay tolerance. Examples of critical applications can include, but are not limited to, child tracking applications, emergency-based applications, subscription-based applications, and the like. In one configuration, request suspension and aggregation may be performed for requests originating from non-critical applications. Requests sent from critical applications may not be held (or aggregated) and may instead go directly to the operating system socket layer. Pending and aggregation can also be implemented utilizing the above factors or a combination of other factors.

さらに、アグリゲートされた要求をいつリリースし、アプリケーション接続性を許可すべきかを判断するために、様々なファクタが採用され得る。たとえば、データ接続セットアッププロシージャを確立するためのトリガ(遅延され得ない緊急アプリケーションなどのクリティカルアプリケーションからのシステムコールを受信することなど)がある場合、通信チャネルが緊急アプリケーションに関連して確立され得、バックグラウンド状態と接続状態との間の遷移の数を低減し得るように、保留された要求がソケットレイヤ240に対してリリースされ得る。別の例は、より望ましい無線(たとえば、ワイドローカルエリアネットワーク(WLAN)無線)がアクティブ化されるかまたはデフォルトとして選択されたとき、アグリゲートされた要求がリリースされ得ることである。要求はまた、無線チャネルが極めて良好である場合(たとえば、高い信号強度、SNR、または他の望ましいパフォーマンスメトリック)、リリースされ得る。要求はまた、あらかじめ決定されたように、またはモバイルデバイス105−dによって選択的に判断されたように、周期的にリリースされ得る。知られずに(incognito)動作するために要求をリリースするための別のヒューリスティック(heuristic)は、(ユーザがスクリーンをオンにする前に)ユーザがデバイスに接近したときであり得る。この例では、加速度計が、ユーザが電話をつかんだことを検出し得るか、またはユーザ近接度センサーが、ユーザが接近していることを示し得る。別の態様では、バッテリーで稼動している間、要求は、スクリーンがアンロックされるとすぐに(たとえば、PINが正しく入力された後に)リリースされ得る。この態様では、ランダムなボタンが押された(デバイス105−dが財布またはポケットの中にある)ときには要求のリリースは行われ得ない。   In addition, various factors may be employed to determine when to release the aggregated request and allow application connectivity. For example, if there is a trigger to establish a data connection setup procedure (such as receiving a system call from a critical application such as an emergency application that cannot be delayed), a communication channel can be established in connection with the emergency application, Pending requests can be released to the socket layer 240 so that the number of transitions between background and connected states can be reduced. Another example is that an aggregated request can be released when a more desirable radio (eg, a wide local area network (WLAN) radio) is activated or selected as the default. The request may also be released if the radio channel is very good (eg, high signal strength, SNR, or other desirable performance metric). The request may also be released periodically as determined in advance or as selectively determined by the mobile device 105-d. Another heuristic for releasing a request to operate incognito may be when the user approaches the device (before the user turns on the screen). In this example, the accelerometer may detect that the user has picked up the phone, or a user proximity sensor may indicate that the user is approaching. In another aspect, while running on battery, the request can be released as soon as the screen is unlocked (eg, after the PIN has been entered correctly). In this manner, the request cannot be released when a random button is pressed (device 105-d is in the wallet or pocket).

一例では、保留された要求をリリースさせるトリガリングイベントは、タイマーの満了であり得る。イベントはまた、ディスプレイのステータス変更であり得る。たとえば、ディスプレイは、「オフ」状態から「オン」状態に変化し得る。マイクロフォンのステータス変更(オフからオン)もトリガイベントになり得る。さらに、GPSセンサーのステータス変更がトリガリングイベントになり得る。たとえば、センサーがモバイルデバイスの移動を検出したとき、センサーは状態を変更し得る。要求をリリースするための追加のトリガリングイベントは、ユニバーサルシリアルバスポートが使用中であるという指示、またはオーディオ機器がデバイスに接続されているという指示を含み得る。さらに、ビデオ機器がモバイルデバイスに接続されているという指示も、モバイルデバイスのオペレーティングシステムに対して保留された要求をリリースするためのトリガリングイベントとして働き得る。さらに、あるネットワークへの接続が利用可能であるという指示が、要求のリリースをトリガし得る。たとえば、Wi−Fiタイプのネットワークへの接続の指示が、要求をリリースさせ得る。同様に、セルラータイプのネットワークへの無線接続がすでに開いているという指示も、デバイスのオペレーティングシステムに対する要求のリリースをトリガし得る。さらに別の態様では、要求は、上記または他のファクタの何らかの組合せに従ってリリースされ得る。上記の説明は、APIアーキテクチャに関するものであるが、概念は、ハードウェア、ファームウェア、またはハードウェアおよびソフトウェアの任意の組合せにおいて等しく適用され得る。   In one example, the triggering event that causes a pending request to be released may be a timer expiration. The event can also be a display status change. For example, the display may change from an “off” state to an “on” state. A microphone status change (off to on) can also be a trigger event. Furthermore, a status change of the GPS sensor can be a triggering event. For example, the sensor may change state when the sensor detects movement of the mobile device. Additional triggering events for releasing the request may include an indication that the universal serial bus port is in use, or an indication that the audio device is connected to the device. In addition, an indication that the video device is connected to the mobile device may also serve as a triggering event to release a pending request to the mobile device operating system. Furthermore, an indication that a connection to a network is available may trigger the release of the request. For example, an indication of connection to a Wi-Fi type network may cause the request to be released. Similarly, an indication that a wireless connection to a cellular type network is already open may trigger the release of the request to the device operating system. In yet another aspect, the request may be released according to some combination of the above or other factors. Although the above description relates to an API architecture, the concepts can be equally applied in hardware, firmware, or any combination of hardware and software.

一構成では、アプリケーションはタイマーに関連付けられ得る。タイマーの満了前の時間期間は、関連するアプリケーションの許容差レベルを示し得る。たとえば、許容差を受け入れないタイマーは「ハードタイマー」と呼ばれることがある。ハードタイマーは、比較的固定された時点において満了するように意図されたタイマーであり得る。逆に、許容差値を受け入れるタイマーは「ソフトタイマー」になり得る。ソフトタイマーは、意図された満了時間において満了し得るが、指定された許容差範囲内での満了をも可能にし得る。一例として、電子メール更新サービスなどのいくつかのアプリケーションは、接続要求が明確な固定時間に行われることを必要としないことがある。したがって、そのようなアプリケーションのためのタイマーは広い許容差を与えられ得、ソフトタイマーが生成され、そのようなアプリケーションに関連付けられ得る。逆に、株式トレーダーによって使用される株式プログラムは、株価情報の精度を保証するために、固定時間における一貫した更新を必要とし得る。そのようなアプリケーションは、許容差をほとんどまたはまったく受け入れないことがあり、したがってハードタイマーに関連付けられるであろう。   In one configuration, the application may be associated with a timer. The time period before the expiration of the timer may indicate the tolerance level of the associated application. For example, a timer that does not accept a tolerance may be referred to as a “hard timer”. A hard timer may be a timer that is intended to expire at a relatively fixed time. Conversely, a timer that accepts a tolerance value can be a “soft timer”. The soft timer may expire at the intended expiration time, but may also allow expiration within a specified tolerance range. As an example, some applications such as an email update service may not require that connection requests be made at a well-defined fixed time. Thus, timers for such applications can be given wide tolerances, and soft timers can be generated and associated with such applications. Conversely, stock programs used by stock traders may require consistent updates at fixed times to ensure the accuracy of stock price information. Such an application may accept little or no tolerance and will therefore be associated with a hard timer.

一例では、ソフトタイマーまたはハードタイマーのうちの1つなどのタイマーが満了しようとしていることがある。満了時間が識別されると、たとえば、図2または図3の接続性エンジン225は、満了時間が様々なアプリケーションのいずれかのソフトタイマーの許容差内に入るかどうかを判断し得る。許容差が満了時間内に入るすべてのソフトタイマーに対して、接続性エンジンは、それらのタイマーを早期に満了させるようにとの命令を実行し得る。タイマーが満了したアプリケーションからのインターセプトされたネットワークアクセス要求は、モバイルデバイスのオペレーティングシステムに対してリリースされ得る。いくつかの構成では、タイマーが満了したアプリケーションの各々が、それらの必要な通信アクティビティを完了するまで、ネットワーク接続は開いたままになり得る。タイマーが満了したときに通信要求が行われるので、アプリケーションによる通信システムの共用の結果として、リソース管理がより効率的になる。   In one example, a timer such as one of a soft timer or a hard timer may be about to expire. Once the expiration time is identified, for example, the connectivity engine 225 of FIG. 2 or FIG. 3 may determine whether the expiration time falls within the soft timer tolerance of any of the various applications. For all soft timers whose tolerance falls within the expiration time, the connectivity engine may instruct the timers to expire early. An intercepted network access request from an application whose timer has expired may be released to the mobile device operating system. In some configurations, the network connection may remain open until each of the applications whose timers have expired complete their required communication activity. Since a communication request is made when the timer expires, resource management becomes more efficient as a result of sharing the communication system by applications.

上述のように、要求がどのくらいの頻度でリリースされるべきかを示す間隔またはリフレッシュレートが判断され得る。間隔は、ファイアウォールおよびNAT機能を実行するミドルボックスの状態を維持するように判断され得る。ミドルボックスの状態は、アプリケーションがキープアライブメッセージまたは一連のより短い接続要求を発行することによって維持され得る。一構成では、ネットワークは、モバイルデバイス上のミドルボックスの状態を維持するための最小リフレッシュレートに関する情報を与え得る。リフレッシュレートは、UDP対TCP接続について与えられ得る。ネットワークは、キープアライブ/再接続メッセージの量に起因して発生した無線負荷に基づいて、ミドルボックスにおけるリフレッシュレートを適応させ得る。たとえば、キープアライブメッセージの数があるしきい値を上回る場合、ミドルボックスにおける状態は、より長い時間期間の間維持され得、モバイルデバイスのためのリフレッシュレートはスローダウンされ得る。間隔(またはリフレッシュレート)は、ステートフルミドルボックスにおけるタイムアウト値よりも小さくなり得る。したがって、モバイルデバイスは、ネットワークによって示されたリフレッシュレート(または間隔)に従って、アップリンクに対してゲートを開き得る(すなわち、要求をリリースし得る)。ゲートは、デバイスがバックグラウンドモードにないときには開かれ得、モバイルデバイスがバックグラウンドモードにあるときには閉じられ得る。   As described above, an interval or refresh rate can be determined that indicates how often a request should be released. The interval may be determined to maintain the state of the middlebox that performs the firewall and NAT functions. The state of the middlebox can be maintained by the application issuing a keep alive message or a series of shorter connection requests. In one configuration, the network may provide information regarding the minimum refresh rate to maintain the state of the middle box on the mobile device. A refresh rate may be given for a UDP-to-TCP connection. The network may adapt the refresh rate in the middlebox based on the radio load generated due to the amount of keep alive / reconnect messages. For example, if the number of keep-alive messages exceeds a certain threshold, the state in the middlebox can be maintained for a longer time period and the refresh rate for the mobile device can be slowed down. The interval (or refresh rate) can be smaller than the timeout value in the stateful middle box. Thus, the mobile device may open the gate for the uplink (ie, release the request) according to the refresh rate (or interval) indicated by the network. The gate can be opened when the device is not in background mode and closed when the mobile device is in background mode.

図7は、ネットワークアクセスの要求を保留するための方法700の一例を示すフローチャートである。明快のために、方法700について、図1、図2、図3、または図4に示したモバイルデバイス105に関して以下で説明する。一実装形態では、プロセッサ360は、以下で説明する機能を実行するためにデバイス105の機能要素を制御するためのコードの1つまたは複数のセットを実行し得る。一構成では、以下で説明する方法700は、デバイス105がバックグラウンドモードにあるときに実装され得る。   FIG. 7 is a flowchart illustrating an example of a method 700 for holding a request for network access. For clarity, the method 700 is described below with respect to the mobile device 105 shown in FIG. 1, FIG. 2, FIG. 3, or FIG. In one implementation, the processor 360 may execute one or more sets of code for controlling functional elements of the device 105 to perform the functions described below. In one configuration, the method 700 described below may be implemented when the device 105 is in the background mode.

ブロック705において、モバイルデバイス105上のアプリケーションからの要求をインターセプトする。要求は、モバイルデバイス105のための通信チャネルを確立するなど、モバイルデバイスのための通信を行うための要求であり得る。要求は、モバイルデバイス105のアプリケーションレイヤ220において実行しているアプリケーションから送られ得る。一例では、要求は、アプリケーションが、ネットワーク115などの外部ネットワークとインターフェースすることを可能にするために、データ接続セットアッププロシージャを開始するための要求であり得る。たとえば、要求は、モバイルデバイス105上のオペレーティングシステム235のソケットレイヤ240に対するシステムコールであり得る。   At block 705, a request from an application on the mobile device 105 is intercepted. The request may be a request for communication for the mobile device, such as establishing a communication channel for the mobile device 105. The request may be sent from an application executing at the application layer 220 of the mobile device 105. In one example, the request can be a request to initiate a data connection setup procedure to allow an application to interface with an external network, such as network 115. For example, the request can be a system call to socket layer 240 of operating system 235 on mobile device 105.

ブロック710において、モバイルデバイス105上で実行しているオペレーティングシステム235に要求が到着することを保留され得る。たとえば、要求は、オペレーティングシステム235のソケットレイヤ240に到着することを保留され得る。一構成では、ラッパー230が要求をインターセプトし得、保留し得る。   At block 710, the request may be deferred to arrive at the operating system 235 running on the mobile device 105. For example, the request may be deferred to arrive at socket layer 240 of operating system 235. In one configuration, the wrapper 230 may intercept and hold the request.

ブロック715において、トリガリングイベントを検出すると、オペレーティングシステムに対して要求がリリースされ得る。たとえば、デバイス105は、上記で説明したようにアクティブモードに入り得る。   At block 715, upon detecting a triggering event, the request may be released to the operating system. For example, device 105 may enter active mode as described above.

したがって、方法700は、モバイルデバイス105のアプリケーションレイヤ220において実行しているアプリケーションによってサブミットされたネットワークアクセスの要求のインターセプションおよび保留を提供し得る。方法700は一実装形態にすぎないこと、および方法700の動作は、他の実装形態が可能であるように、並べ替えられるかまたは場合によっては変更され得ることに留意されたい。   Accordingly, the method 700 may provide interception and hold of requests for network access submitted by an application executing at the application layer 220 of the mobile device 105. Note that the method 700 is only one implementation, and that the operation of the method 700 can be reordered or possibly modified, as other implementations are possible.

図8は、モバイルデバイス上で実行している非クリティカルアプリケーションからのネットワークアクセスの要求をインターセプトするための方法800の一例を示すフローチャートである。明快のために、方法800について、図1、図2、図3、または図4に示したデバイス105に関して以下で説明する。一実装形態では、プロセッサ360は、以下で説明する機能を実行するためにデバイス105の機能要素を制御するためのコードの1つまたは複数のセットを実行し得る。   FIG. 8 is a flowchart illustrating an example method 800 for intercepting a request for network access from a non-critical application running on a mobile device. For clarity, the method 800 is described below with respect to the device 105 shown in FIG. 1, FIG. 2, FIG. 3, or FIG. In one implementation, the processor 360 may execute one or more sets of code for controlling functional elements of the device 105 to perform the functions described below.

ブロック805において、ネットワークアクセスの要求がインターセプトされる。要求は、モバイルデバイス105のアプリケーションレイヤ220において実行しているアプリケーションから送られ得る。一例では、要求は、ネットワーク115などの外部ネットワークとの通信チャネルを確立するための要求であり得る。要求は、デバイス105上のオペレーティングシステム235のソケットレイヤ240に対するシステムコールであり得る。要求を受信すると、ソケットレイヤ240は、通信チャネルを確立するためのプロシージャを開始し得、チャネルが確立されたとき、アプリケーションにコールバック関数を与え得る。   At block 805, a request for network access is intercepted. The request may be sent from an application executing at the application layer 220 of the mobile device 105. In one example, the request can be a request to establish a communication channel with an external network, such as network 115. The request can be a system call to socket layer 240 of operating system 235 on device 105. Upon receiving the request, the socket layer 240 may initiate a procedure for establishing a communication channel and may provide a callback function to the application when the channel is established.

ブロック810において、デバイス105がバックグラウンドモードにあるかどうかに関する判断が行われ得る。たとえば、デバイス105が電源切断されているかどうか、スリープモードにあるかどうかなどに関する判断が行われ得る。デバイス105はまた、たとえば、デバイス105のディスプレイが非アクティブである場合、オーディオ出力が非アクティブである場合など、バックグラウンドモードにあると判断され得る。デバイス105−aが非アクティブであると判断された場合、ブロック815において、システムコールを開始したアプリケーションが非クリティカルアプリケーションであるかどうかを判断するための第2の判断が行われ得る。クリティカルアプリケーションは、ネットワークアクセスのための優先権をもつ緊急アプリケーション、サブスクリプションベースのアプリケーション、遅延についての低い許容差をもつアプリケーションなどであり得る。   At block 810, a determination may be made regarding whether the device 105 is in background mode. For example, a determination may be made regarding whether the device 105 is powered off, in sleep mode, and the like. Device 105 may also be determined to be in background mode, for example, when the display of device 105 is inactive, or when the audio output is inactive. If it is determined that device 105-a is inactive, a second determination may be made at block 815 to determine whether the application that initiated the system call is a non-critical application. Critical applications can be emergency applications with priority for network access, subscription-based applications, applications with low tolerance for delay, and so on.

デバイス105がアクティブであること、またはアプリケーションがクリティカルアプリケーションであることが判断された場合、要求は、オペレーティングシステム235のソケットレイヤ240に対してリリースされ得る。言い換えれば、要求は、ソケットレイヤが、ネットワーク115との通信チャネルを確立するためのプロシージャを開始することを可能にするためにリリースされ得る。デバイスがバックグラウンドモードにあること、およびアプリケーションが非クリティカルアプリケーションとして分類されることが判断された場合、ブロック820において、要求がオペレーティングシステムに到着することを保留し得、したがって、通信チャネルをセットアップするためのプロシージャの開始を遅延させる。   If it is determined that the device 105 is active or the application is a critical application, the request can be released to the socket layer 240 of the operating system 235. In other words, the request may be released to allow the socket layer to initiate a procedure for establishing a communication channel with the network 115. If it is determined that the device is in background mode and that the application is classified as a non-critical application, at block 820, the request may be suspended from arriving at the operating system and thus set up a communication channel. Delay the start of the procedure for

ブロック825において、要求が他のインターセプトされた要求とアグリゲートされ得る。他の要求は、モバイルデバイス105上で実行している追加のアプリケーションによって開始され得る。ブロック830において、上記で説明したように、トリガリングイベントが検出されたかどうかに関する判断が行われ得る。トリガリングイベントが検出されないと判断された場合、方法800は、インターセプトされたネットワークアクセスの要求をアグリゲートし続けるために戻り得る。しかしながら、トリガリングイベントが検出されたと判断された場合、ブロック835において、オペレーティングシステム240のソケットレイヤ240に対してアグリゲートされた要求がリリースされ得る。言い換えれば、いくつかのアプリケーションからのシステムコールが保留され得、一緒にバンドルされ得、次いで、ソケットレイヤ240に対して単一のシステムコールとしてリリースされ得る。   At block 825, the request may be aggregated with other intercepted requests. Other requests may be initiated by additional applications running on the mobile device 105. At block 830, a determination may be made regarding whether a triggering event has been detected, as described above. If it is determined that a triggering event is not detected, the method 800 may return to continue to aggregate the intercepted request for network access. However, if it is determined that a triggering event has been detected, at block 835 the aggregated request to the socket layer 240 of the operating system 240 can be released. In other words, system calls from several applications can be suspended, bundled together, and then released as a single system call to the socket layer 240.

したがって、方法800は、モバイルデバイス105上で実行している非クリティカルアプリケーションからのネットワークアクセスの要求をインターセプトすることと、保留することと、アグリゲートすることとを提供し得る。要求を保留し、アグリゲートすることによって、いくつかのシステムコールが、一緒にバンドルされ得、単一のシステムコールとしてリリースされ得る。これにより、通信チャネルをセットアップするためのプロシージャを開始するためのシステムコールの量が低減され得るので、モバイルデバイス105のためのバッテリー電力が節約され得、ならびにネットワークシグナリングが低減され得る。方法800は一実装形態にすぎないこと、および方法800の動作は、他の実装形態が可能であるように、並べ替えられるかまたは場合によっては変更され得ることに留意されたい。   Accordingly, the method 800 may provide intercepting, deferring, and aggregating requests for network access from non-critical applications running on the mobile device 105. By holding the request and aggregating, several system calls can be bundled together and released as a single system call. This can reduce the amount of system calls to initiate a procedure for setting up a communication channel, thus saving battery power for the mobile device 105 as well as reducing network signaling. Note that the method 800 is only one implementation, and that the operation of the method 800 can be reordered or possibly modified, as other implementations are possible.

図9は、モバイルデバイス上で実行しているいくつかのアプリケーションからのネットワークアクセスの要求をインターセプトするための方法900の一構成を示すフローチャートである。明快のために、方法900について、図1、図2、図3、または図4に示したデバイス105に関して以下で説明する。一実装形態では、プロセッサ360は、以下で説明する機能を実行するためにデバイス105の機能要素を制御するためのコードの1つまたは複数のセットを実行し得る。   FIG. 9 is a flowchart illustrating one configuration of a method 900 for intercepting requests for network access from several applications running on a mobile device. For clarity, the method 900 is described below with respect to the device 105 shown in FIG. 1, FIG. 2, FIG. 3, or FIG. In one implementation, the processor 360 may execute one or more sets of code for controlling functional elements of the device 105 to perform the functions described below.

ブロック905において、第1の時間において第1のアプリケーションからのネットワークアクセスの第1の要求がインターセプトされる。一例では、ブロック910において、第2の時間において第2のアプリケーションからの第2の要求がインターセプトされ得る。第2の時間は第1の時間とは異なり得る。ブロック915において、第3の時間において第3のアプリケーションからの第3の要求がインターセプトされ得る。一構成では、第3の時間は、第1の時間および第2の時間とは異なり得る。インターセプトされた要求は、ネットワークアクセスのために通信チャネルを確立するためのシステムコールであり得る。アプリケーションは、モバイルデバイス105上で実行していることがある。   At block 905, a first request for network access from a first application is intercepted at a first time. In one example, at block 910, a second request from a second application may be intercepted at a second time. The second time can be different from the first time. At block 915, a third request from the third application may be intercepted at a third time. In one configuration, the third time may be different from the first time and the second time. The intercepted request can be a system call to establish a communication channel for network access. The application may be running on the mobile device 105.

要求がインターセプトされたとき、ブロック920において、モバイルデバイス105がバックグラウンドモードにあるかどうかに関する判断が行われ得る。デバイス105がバックグラウンドモードにあると判断された場合、ブロック925、930、および935において、要求がオペレーティングシステムに到着することを保留し得る。デバイス105がアクティブモードにある場合、ブロック950において、モバイルデバイス105上のオペレーティングシステム235のソケットレイヤ240に対して要求がリリースされ得る。   When the request is intercepted, at block 920, a determination may be made regarding whether the mobile device 105 is in background mode. If it is determined that the device 105 is in the background mode, at blocks 925, 930, and 935, the request may be suspended from reaching the operating system. If the device 105 is in active mode, at block 950, a request may be released to the socket layer 240 of the operating system 235 on the mobile device 105.

一構成では、ブロック940において、第1、第2、および第3の要求が一緒にアグリゲートされ得またはバンドルされ得る。ブロック945において、トリガリングイベントが発生したかどうかに関する判断が行われ得る。たとえば、デバイスがアクティブモードに入ったかどうか、デバイス上のディスプレイがアクティブ化されたかどうか、デバイスがロケーションを変更したかどうか、ユーザがデバイスの近くにいるかどうかなどに関する判断が行われ得る。トリガリングイベントが検出されない場合、方法900は、トリガリングイベントの検出のための監視を続けるために戻り得る。トリガリングイベントが検出された場合、ブロック950において、オペレーティングシステムのソケットレイヤに対してアグリゲートされた要求がリリースされ得る。要求を受信すると、ソケットレイヤは、ネットワーク115などの外部ネットワークとの通信チャネルを確立するためのプロシージャを開始し得る。   In one configuration, at block 940, the first, second, and third requests may be aggregated or bundled together. At block 945, a determination may be made regarding whether a triggering event has occurred. For example, a determination may be made regarding whether the device has entered active mode, whether the display on the device has been activated, whether the device has changed location, whether the user is near the device, and so on. If no triggering event is detected, the method 900 may return to continue monitoring for detection of the triggering event. If a triggering event is detected, at block 950, the aggregated request to the operating system socket layer may be released. Upon receiving the request, the socket layer may initiate a procedure for establishing a communication channel with an external network such as network 115.

したがって、方法900は、モバイルデバイス105上で実行している複数のアプリケーションからのネットワークアクセスの要求をインターセプトすることと、保留することと、アグリゲートすることとを提供し得る。したがって、いくつかのシステムコールが、一緒にバンドルされ得、単一のシステムコールとしてリリースされ得る。これにより、システムコールの量が低減され得るので、モバイルデバイス105のためのバッテリー消費量が低減され、ならびにネットワークシグナリングが低減され得る。方法900は一実装形態にすぎないこと、および方法900の動作は、他の実装形態が可能であるように、並べ替えられるかまたは場合によっては変更され得ることに留意されたい。   Accordingly, the method 900 can provide intercepting, holding, and aggregating requests for network access from multiple applications running on the mobile device 105. Thus, several system calls can be bundled together and released as a single system call. This can reduce the amount of system calls, thus reducing battery consumption for the mobile device 105 as well as network signaling. Note that the method 900 is only one implementation and that the operation of the method 900 can be reordered or possibly modified, as other implementations are possible.

図10に、ネットワークアクセス要求などのアプリケーション接続要求の間の同期を改善するための、いくつかの実施形態において実装される1つの可能なプロセス1000を示す。以下の例で説明するように、いくつかの実施形態がモバイルデバイス上のプロセス1000を実装し得る。明快のために、方法1000について、図1、図2、図3、または図4に示したデバイス105に関して以下で説明する。一実装形態では、図2または図3のプロセッサ360または接続性エンジン225は、以下で説明する機能を実行するためにデバイス105の機能要素を制御するためのコードの1つまたは複数のセットを実行し得る。   FIG. 10 illustrates one possible process 1000 implemented in some embodiments for improving synchronization between application connection requests, such as network access requests. As described in the examples below, some embodiments may implement process 1000 on a mobile device. For clarity, the method 1000 is described below with respect to the device 105 shown in FIG. 1, FIG. 2, FIG. 3, or FIG. In one implementation, the processor 360 or connectivity engine 225 of FIG. 2 or FIG. 3 executes one or more sets of code for controlling functional elements of the device 105 to perform the functions described below. Can do.

本方法は、ブロック1005において、ソフトタイマーまたはハードタイマーのうちの1つなどの第1のタイマーが満了しようとしている可能性があることを識別することによって開始する。これは、様々なアプリケーションのタイマーをポーリングする中央システムによって達成され得る。代替的に、各アプリケーションは、それ自体のタイマーを個々に監視し、タイマーの満了時に通知を与え得る。   The method begins at block 1005 by identifying that a first timer, such as one of a soft timer or a hard timer, may be about to expire. This can be accomplished by a central system that polls timers for various applications. Alternatively, each application can individually monitor its own timer and provide notification when the timer expires.

満了時間が識別されると、ブロック1010において、同じく満了し得る追加のタイマーが識別されるかどうかに関する判断を行う。たとえば、第1のタイマーの満了時間がソフトタイマーの許容差内に入るかどうかに関する判断が行われ得る。許容差が満了時間内に入るすべてのソフトタイマーに対して、ブロック1015において、追加のタイマーを早期に満了させ得る。ブロック1020において、満了タイマーに関連するアプリケーションのためのデータが同期され得る。たとえば、接続を形成することによって、タイマーが満了したアプリケーションにチャネルアクセスが与えられ得る。いくつかの実施形態では、次いで、タイマーが満了したアプリケーションの各々がそれらの必要な通信アクティビティを完了するまで、接続は開いたままになり得る。タイマーが満了したときに通信要求が行われるので、アプリケーションによる通信システムの共用の結果として、リソース管理がより効率的になる。方法1000は、ブロック1005において、タイマーが満了するのを再び待つことによって無期限に実行され得るか、または本方法は終了し得る。   Once the expiration time is identified, a determination is made at block 1010 as to whether additional timers that may also expire are identified. For example, a determination may be made as to whether the expiration time of the first timer falls within a soft timer tolerance. For all soft timers whose tolerance falls within the expiration time, an additional timer may expire early at block 1015. At block 1020, data for the application associated with the expiration timer may be synchronized. For example, channel access may be granted to an application whose timer has expired by forming a connection. In some embodiments, the connection may then remain open until each of the timer expired applications has completed their required communication activity. Since a communication request is made when the timer expires, resource management becomes more efficient as a result of sharing the communication system by applications. The method 1000 may be performed indefinitely by waiting again for the timer to expire at block 1005, or the method may end.

ブロック1005において、意図された時間において最初に満了した1つまたは複数のタイマーは、いくつかの実施形態では、「マスタタイマー」と呼ばれ得るか、または互換的に「トリガイベント」と呼ばれ得る。すなわち、これらのタイマーは、他のタイマー(「ソフトタイマー」)がそれらのそれぞれの許容差に基づいていつ満了し得るかを規定する。したがって、ソフトタイマーまたはハードタイマーは、マスタタイマーとして働き得る。しかしながら、(ソフトタイマーのみが許容差を所有するので)ソフトタイマーのみがマスタタイマーによって影響を及ぼされ得る。   At block 1005, the one or more timers that first expire at the intended time may be referred to as a “master timer” or interchangeably referred to as a “trigger event” in some embodiments. . That is, these timers define when other timers (“soft timers”) can expire based on their respective tolerances. Thus, the soft timer or hard timer can act as a master timer. However, only the soft timer can be affected by the master timer (since only the soft timer owns the tolerance).

図11に、3つのアプリケーション(App1、App2、およびApp3)の各々の1つの可能な一連の接続要求を示す。これらのアプリケーションは、図1、図2、図3、または図4のモバイルデバイス105などのモバイルデバイス上で実行され得る。特に、図11は、様々なアプリケーションからの通信要求に基づいて接続を形成するための技法を表す。この例では、接続要求は協調されない。したがって、各アプリケーションは、他のアプリケーションからの非協調間隔において接続を要求する。協調のこの欠如は、アプリケーションが接続を共有する機会を無視するので、モバイルデバイスのリソースの使用が非効率的になる。タイマー満了は、各時点における縦の矢印によって表され、結果として生じる要求期間は矩形によって示される。各接続期間は、30秒間の幅をもつ要求期間矩形中のウィンドウによって表される(これは、かなり恣意的な持続時間として認識され、はるかに短いかまたは長い持続時間が各接続について発生し得る)。この幅は説明のためのものにすぎず、実際のデバイスでは任意の幅が存在し得る。図11の数値範囲ならびに後続の図は、説明のために選択されたものにすぎない。これら図は、必ずしも、いずれかのシステムまたは実施形態の実際の実装を表すものとして解釈すべきではない。   FIG. 11 shows one possible series of connection requests for each of the three applications (App1, App2, and App3). These applications may be executed on a mobile device such as the mobile device 105 of FIG. 1, FIG. 2, FIG. 3, or FIG. In particular, FIG. 11 represents a technique for forming a connection based on communication requests from various applications. In this example, connection requests are not coordinated. Thus, each application requests a connection at non-cooperative intervals from other applications. This lack of coordination makes the use of mobile device resources inefficient, as applications ignore the opportunity to share connections. Timer expiration is represented by a vertical arrow at each point in time, and the resulting request period is indicated by a rectangle. Each connection period is represented by a window in a request period rectangle with a width of 30 seconds (this is perceived as a fairly arbitrary duration, and a much shorter or longer duration can occur for each connection. ). This width is merely illustrative and any width may exist in actual devices. The numerical ranges of FIG. 11 as well as the subsequent figures have been selected for illustration only. These diagrams should not necessarily be construed as representing an actual implementation of any system or embodiment.

図11では、App1は、5分ごとに通信要求を開始し得る(時間1、6、11、16などにおける接続)。同様に、App2は、5分ごとに、ただしApp1から1分だけオフセットされて接続要求を開始し得る。すなわち、App2の要求は、App1の要求と同じ期間を共有するが、同じ位相は共有しない。最後に、App3は、10分ごとに接続を実行し得、同様にApp1から4分だけずれている。App1、App2、およびApp3の非同期接続要求は、接続が常に起動および停止されるので、バッテリー電力および通信帯域幅の使用が非効率的になる。この例では、通信システムとの(モバイルデバイスの通信要素の再アクティブ化を必要とする)14個の別個の接続が、時間6と時間32との間に行われる。   In FIG. 11, App1 may initiate a communication request every 5 minutes (connection at times 1, 6, 11, 16, etc.). Similarly, App2 may initiate a connection request every 5 minutes but offset by 1 minute from App1. That is, App2 requests share the same period as App1 requests, but do not share the same phase. Finally, App3 can perform a connection every 10 minutes, and is similarly offset from App1 by 4 minutes. App1, App2, and App3 asynchronous connection requests result in inefficient use of battery power and communication bandwidth because the connection is always activated and deactivated. In this example, 14 separate connections (requiring reactivation of the mobile device's communication elements) to the communication system are made between times 6 and 32.

本実施形態のうちのいくつかは、より効率的な接続パターンが生じるように接続要求を協調させ得るシステムを提供することを企図する。たとえば、モバイルデバイス105が、1つのアプリケーションのためにネットワークとの接続をすでに有する場合、モバイルデバイス105は、その接続をティアダウンすること(tearing down)、および別の接続を形成することなしに、別のアプリケーションのために同じ接続を使用し得る。したがって、アプリケーションが接続を共有するようにアプリケーション接続要求間のタイミングを協調させることは、形成される必要がある接続の数を低減し得る。これらの実施形態のいくつかは、アプリケーション開発者が、モバイルデバイス105上で動作するプラットフォームのためのアプリケーションを実装するときに使用し得るプログラミングモジュールを含み得る。これらの実施形態のいくつかでは、モバイルデバイス105は、スケジューリングについての情報をネットワークに送信し得る。多くの実施形態では、モバイルデバイス105上で実行しているアプリケーションは、「タイマー」、すなわち、特定の「満了時間」がいつ発生したかを判断するように構成されたソフトウェア、ファームウェア、またはハードウェアモジュールを含み得る。タイマーは、図2または図3の接続性エンジン225によって実行され得る。タイマーは、接続性エンジン225の一部として実装され得る。これらのタイマーは、アプリケーションがその間に接続を必要とし得る時間または時間間隔を示す。ネットワークからの周期的更新を必要とする(または、ネットワークに情報を周期的に送信する)アプリケーションは、それらが接続をいつ要求すべきかを判断するために、これらのタイマーに依拠し得る。アプリケーションはまた、データを非周期的に必要とし得、タイマーによって定義されたある時間内にデータを要求し得る。いくつかのアプリケーションは、それらがどのくらいの頻度で接続を必要とするかにおいてフレキシブルであり得る。本実施形態のいくつかは、各アプリケーションに関連するフレキシビリティまたはその欠如に適応するために、異なるタイプまたは構成のタイマーを企図する。以下の説明では、説明しやすいように、「タイマー」を有するものとしてアプリケーションに言及するが、当業者は、アプリケーションが、1つまたは複数のタイマーにそれら自体で個々に関連し得る多くのコンポーネントを備えることを認識されよう。   Some of the embodiments contemplate providing a system that can coordinate connection requests such that a more efficient connection pattern results. For example, if the mobile device 105 already has a connection to the network for one application, the mobile device 105 can tear down that connection and form another connection without The same connection may be used for another application. Thus, coordinating the timing between application connection requests so that applications share connections may reduce the number of connections that need to be formed. Some of these embodiments may include programming modules that may be used by application developers when implementing applications for platforms that run on the mobile device 105. In some of these embodiments, the mobile device 105 may send information about scheduling to the network. In many embodiments, an application running on the mobile device 105 is a software, firmware, or hardware configured to determine when a “timer”, ie, a specific “expiration time” has occurred. Modules can be included. The timer may be executed by the connectivity engine 225 of FIG. 2 or FIG. The timer may be implemented as part of the connectivity engine 225. These timers indicate the time or time interval during which the application may require a connection. Applications that require periodic updates from the network (or that periodically send information to the network) may rely on these timers to determine when they should request a connection. An application may also need data aperiodically and may request data within a certain time defined by a timer. Some applications may be flexible in how often they need a connection. Some of the embodiments contemplate different types or configurations of timers to accommodate the flexibility or lack thereof associated with each application. In the following description, for ease of explanation, the application will be referred to as having a “timer”, but those skilled in the art will recognize many components that an application can individually associate with one or more timers themselves. Recognize that you prepare.

図12は、図11からのアプリケーションのためのタイミング図を表すが、ここで、アプリケーションは、図10の方法などのプロセスに関連してソフトタイマーまたはハードタイマーのいずれかを採用する。上記で説明したように、アプリケーションは、図1、図2、図3、または図4のモバイルデバイス105などのモバイルデバイス上で実行し得る。さらに、図2または図3の接続性エンジン225が、スケジューリングを協調させるためにプロセス1000を実装し得る。図12の例では、アプリケーション(App1、App2、およびApp3)の各々は、2分間の許容差をもつソフトタイマーを含む。プロセス1000などのプロセスがない場合に、図11で発生したであろうタイマー満了が、破線の矢印によって示されている。実線の矢印は、プロセス1000などのプロセスの管理の下で発生するタイマー満了を表す。いくつかの実施形態では、プロセス1000は、各時間間隔(すなわち、分1、2、3など)において実行され得る。   FIG. 12 depicts a timing diagram for the application from FIG. 11, where the application employs either a soft timer or a hard timer in connection with a process such as the method of FIG. As described above, the application may run on a mobile device such as mobile device 105 of FIG. 1, FIG. 2, FIG. 3, or FIG. Further, the connectivity engine 225 of FIG. 2 or FIG. 3 may implement process 1000 to coordinate scheduling. In the example of FIG. 12, each of the applications (App1, App2, and App3) includes a soft timer with a tolerance of 2 minutes. The timer expiration that would have occurred in FIG. 11 in the absence of a process, such as process 1000, is indicated by a dashed arrow. A solid arrow represents a timer expiration that occurs under the control of a process such as process 1000. In some embodiments, process 1000 may be performed at each time interval (ie, minutes 1, 2, 3, etc.).

たとえば、時間7において、App2のソフトタイマーは、通常満了したであろう。しかしながら、App1のタイマーが、App2のソフトタイマーの2分間の許容差内にある時間6において満了したので、App2のソフトタイマーは、時間6において早期に満了した。同様に、時間14におけるApp3のクロックの満了は、App1とApp2の両方のためのクロックの2分間の許容差内に入る。時間19までに、App1、App2、およびApp3のためのクロックの各々は、等しいかまたは互いの高調波(harmonics)である期間(それぞれ5分、5分、および10分)を有するので、クロックは正確に同相になり(通信要求は、その後、時間19、24、および29において行われ、マスタクロックは、他のアプリケーションに対する影響を有しない)、通信リソースをはるかに効率的に利用することになる。概して、タイマーが等しい期間を共有する場合、またはそれらの期間が互いの高調波(すなわち、倍数)である場合、それらは、他の「マスタ」タイマーの満了からの干渉を除外して、永続的に互いに同相のままであり得る(もちろん、同期はまた、アプリケーションのタイマーのいずれかの周期が変化した場合、中断され得る)。したがって、この例は、プロセスが適用されないときのタイミング図11と比較して、分6と分33との間に、14個の接続要求ではなく、6つの接続要求が行われることを示す。   For example, at time 7, App2's soft timer would normally expire. However, since the App1 timer expired at time 6, which is within the 2-minute tolerance of the App2 soft timer, the App2 soft timer expired early at time 6. Similarly, the expiration of the App3 clock at time 14 falls within the 2-minute tolerance of the clock for both App1 and App2. By time 19, each of the clocks for App1, App2, and App3 has a period (5 minutes, 5 minutes, and 10 minutes, respectively) that is equal or harmonics of each other, so the clocks Be exactly in phase (communication requests are then made at times 19, 24, and 29, the master clock has no impact on other applications) and will utilize communication resources much more efficiently . In general, if timers share equal periods, or if those periods are harmonics (ie, multiples) of each other, they are permanent, excluding interference from the expiration of other “master” timers. (Of course, synchronization can also be interrupted if any period of the application's timer changes). Thus, this example shows that instead of 14 connection requests, 6 connection requests are made between minutes 6 and 33, as compared to the timing diagram 11 when the process is not applied.

別の例として、図13に、アプリケーション(App1、App2、およびApp3)が同じ期間を所有しない(それぞれ、8分、5分、および10分)、別の状況を示す。図11のタイミング図の場合のように、図13の接続要求は、大部分のアプリケーションによって採用される従来の非協調技法を反映する。協調のこの欠如により、モバイルデバイスのリソースの使用が非効率的になり、分7と分34との間にモバイルデバイスの通信リソースを12回再アクティブ化することになる。   As another example, FIG. 13 shows another situation where applications (App1, App2, and App3) do not own the same period (8 minutes, 5 minutes, and 10 minutes, respectively). As in the timing diagram of FIG. 11, the connection request of FIG. 13 reflects the traditional non-cooperative techniques employed by most applications. This lack of coordination results in inefficient use of mobile device resources and will reactivate mobile device communication resources 12 times between minutes 7 and 34.

図13のアプリケーションは、図13のApp1が時間敏感であるという点で図11とは異なる。本実施形態のいくつかの利益を採用することを望む開発者またはシステム設計者は、図13のApp1のために許容差をほとんどまたはまったく有しないタイマーを生成する可能性がある。したがって、ハードタイマーがApp1のために使用され得る。図13のApp2およびApp3は、対照的に時間敏感でなく、したがって、ソフトタイマーによって適応され得る。図13では、App2およびApp3は、それぞれ、2分間の許容差をもつソフトタイマーを与えられる。   The application of FIG. 13 differs from FIG. 11 in that App1 of FIG. 13 is time sensitive. A developer or system designer who wishes to adopt some of the benefits of this embodiment may generate a timer with little or no tolerance for App1 in FIG. Therefore, a hard timer can be used for App1. App2 and App3 of FIG. 13 are in contrast not time sensitive and can therefore be adapted by a soft timer. In FIG. 13, App2 and App3 are each given a soft timer with a tolerance of 2 minutes.

図14に、プロセス1000などのプロセスを、今回は、図13のアプリケーションに適用することの効果を示す。図14のApp1のタイマーは、ハードタイマーであるので、タイミング図13の図13のApp1と同じままである。しかしながら、図14のApp3は、App2の満了が、App3の意図された満了時間の2分以内であるので、時間12においてApp2のタイマーの満了に基づいて早期に満了する。その後、App2は、時間25においてApp1と同期され、App3は、時間30においてApp2と同期される。上記で説明したように、アプリケーションは、図1、図2、図3、または図4のモバイルデバイス105上で実行し得る。さらに、モバイルデバイス105は、スケジューリングを協調させるためにプロセス1000を実装し得る。この例は、あるクロックの前の同期(App1に基づく時間25におけるApp2)が、別のクロックの後続の同期(App2に基づく時間30におけるApp3)にどのように影響を及ぼし得るかを示す。アプリケーションクロックの期間は等しくないかまたは高調波でないので、クロックは、永久に正確に同期され得ない。それでも、この例は、プロセス1000などのプロセスが適用されないときの図13のタイミング図と比較して、分6と分33との間に、12個の接続要求ではなく、8つの接続要求が行われることを示す。   FIG. 14 shows the effect of applying a process such as the process 1000 to the application of FIG. 13 this time. Since the timer App1 in FIG. 14 is a hard timer, it remains the same as App1 in FIG. 13 in the timing diagram 13. However, App3 of FIG. 14 expires early at time 12 based on the expiration of the App2 timer, as App2 expires within 2 minutes of App3's intended expiration time. Then, App2 is synchronized with App1 at time 25, and App3 is synchronized with App2 at time 30. As described above, the application may run on the mobile device 105 of FIG. 1, FIG. 2, FIG. 3, or FIG. Further, mobile device 105 can implement process 1000 to coordinate scheduling. This example shows how the previous synchronization of one clock (App2 at time 25 based on App1) can affect the subsequent synchronization of another clock (App3 at time 30 based on App2). Since the duration of the application clock is not equal or not harmonic, the clock cannot be synchronized accurately forever. Nevertheless, in this example, compared to the timing diagram of FIG. 13 when a process such as process 1000 is not applied, eight connection requests are made between minute 6 and minute 33 instead of 12 connection requests. Indicates that

マスタクロックは、それらが関連付けられるアプリケーションに基づいて優先順位を付けられ得る。すなわち、多くの帯域幅またはバッテリー電力を消費するアプリケーションは、より少ない帯域幅またはバッテリー電力を消費するアプリケーションよりも、リソースを共有するためには好適でないことがある。したがって、いくつかの実施形態では、モバイルデバイス105は、プロセス1000が、適切な範囲内の許容差を有するソフトタイマーを早期に満了する前に、満了した「マスタ」タイマーの挙動および/または対応する優先順位を考慮するように調整され得る。一例として、プロセスは、許容差がタイマーの早期の満了を可能にするアプリケーションの帯域幅要件と比較して、タイマー(すなわちマスタタイマー)がブロック1005において満了したアプリケーションの各々のための帯域幅要件をさらに考慮し得る。マスタタイマーをもつアプリケーションの累積帯域幅要件が、他のアプリケーションとのチャネルの共用に対して緩和する場合、モバイルデバイス105は適切なアクションをとり得る。たとえば、動作を実行することを可能にされた、マスタタイマーをもつアプリケーションにおいて、接続要求が行われ得る。次いで、ソフトタイマーは、マスタタイマーアプリケーションが過大な帯域幅をもはや消費しなくなると、アプリケーションが既存の接続を利用するように、(ソフトタイマーの許容差によって許可される場合、それらの意図された満了時間の後に可能な)適切な時間に満了させられ得る。代替的に、ソフトタイマーの満了は、より少ない帯域幅を採用する新しい接続要求が行われるまで、またはソフトタイマーの許容差の終了まで遅延され得る。   Master clocks can be prioritized based on the application with which they are associated. That is, an application that consumes more bandwidth or battery power may be less suitable for sharing resources than an application that consumes less bandwidth or battery power. Thus, in some embodiments, the mobile device 105 may respond to and / or respond to an expired “master” timer behavior before the process 1000 prematurely expires a soft timer with a tolerance within an appropriate range. It can be adjusted to take into account priorities. As an example, the process may determine the bandwidth requirements for each application for which the timer (ie, the master timer) has expired in block 1005 as compared to the application bandwidth requirements for which tolerance allows early expiration of the timer. Further considerations can be made. If the cumulative bandwidth requirement of the application with the master timer relaxes against sharing the channel with other applications, the mobile device 105 can take appropriate action. For example, a connection request may be made in an application with a master timer that is enabled to perform an operation. The soft timers will then have their intended expiration (if allowed by the soft timer tolerance) so that the application will utilize existing connections once the master timer application no longer consumes excessive bandwidth. Can be expired at an appropriate time (possible after time). Alternatively, the expiration of the soft timer can be delayed until a new connection request is made that employs less bandwidth, or until the end of the soft timer tolerance.

図11および図13を参照しながら説明したような、上記で説明した実施形態のいくつかでは、タイマー満了は、通信ウィンドウの立上りエッジにおいて発生することが示される。いくつかの実施形態は、代わりに、データ接続の「立下りエッジ」において、すなわち、ノードとの通信が休眠状態に入ろうとしているときに分析を実行することを企図する。接続を開くことと閉じることの両方にコストがかかるので、モバイルデバイス105は、いずれかのアプリケーションが接続をオープンしようとしているかどうかと、現在の接続が閉じられると新しい要求を開始するのではなく、既存の接続を代わりに利用することができるかどうかとを確かめるために、接続を閉じる前にプロセス1000と同様のプロセスを実行し得る。   In some of the embodiments described above, as described with reference to FIGS. 11 and 13, timer expiration is shown to occur at the rising edge of the communication window. Some embodiments instead contemplate performing the analysis at the “falling edge” of the data connection, ie, when communication with the node is about to go to sleep. Because both opening and closing a connection are costly, the mobile device 105 does not initiate a new request if any application is trying to open a connection and when the current connection is closed, To ascertain whether an existing connection can be used instead, a process similar to process 1000 may be performed before closing the connection.

本明細書で開示する技法および構造を採用して、モバイルデバイスは、アプリケーションからのシステムコールをキャプチャし、それらがオペレーティングシステムに到着することを保留するためのアプリケーションプログラムインターフェース(API)を与える、(説明のためにラッパーと呼ぶ)ソフトウェアレイヤを採用し得る。キャプチャされたコールはアグリゲートされ得るので、ユーザがモバイルデバイスをアクティブに使用していない期間中に、モバイルデバイスの頻繁な起動が低減され得、他の通信リソースが温存され得る。   Employing the techniques and structures disclosed herein, a mobile device captures system calls from applications and provides an application program interface (API) to hold them from arriving at the operating system. A software layer (called a wrapper for explanation) may be employed. Because captured calls can be aggregated, frequent activation of the mobile device can be reduced and other communication resources can be preserved during periods when the user is not actively using the mobile device.

情報および信号は多種多様な技術および技法のいずれかを使用して表され得ることを、当業者は理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。   Those of skill in the art will understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referred to throughout the above description are voltages, currents, electromagnetic waves, magnetic fields or magnetic particles, light fields or optical particles, or any of them Can be represented by a combination.

さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の例示的な実施形態の範囲からの逸脱を生じるものと解釈すべきではない。   Further, those skilled in the art will appreciate that the various exemplary logic blocks, modules, circuits, and algorithm steps described with respect to the embodiments disclosed herein may be implemented as electronic hardware, computer software, or a combination of both. Will be understood. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in a variety of ways for each particular application, but such implementation decisions will be interpreted as deviating from the scope of exemplary embodiments of the invention. Should not.

本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェアコンポーネント、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行し得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。   Various exemplary logic blocks, modules, and circuits described in connection with the embodiments disclosed herein include general purpose processors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gates. Implemented or implemented using an array (FPGA) or other programmable logic device, individual gate or transistor logic, individual hardware components, or any combination thereof designed to perform the functions described herein. obtain. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. The processor is also implemented as a combination of computing devices, eg, a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors associated with a DSP core, or any other such configuration. obtain.

本明細書で開示する実施形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアで実施され得るか、プロセッサによって実行されるソフトウェアモジュールで実施され得るか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化され得る。プロセッサおよび記憶媒体はASIC中に常駐し得る。ASICはユーザ端末中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末中に個別構成要素として常駐し得る。   The method or algorithm steps described with respect to the embodiments disclosed herein may be implemented directly in hardware, may be implemented in software modules executed by a processor, or may be implemented in a combination of the two. Software modules include random access memory (RAM), flash memory, read only memory (ROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), registers, hard disk, removable disk, CD-ROM, Or it may reside in any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium can reside in an ASIC. The ASIC may reside in the user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.

1つまたは複数の例示的な実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装した場合、機能は、1つまたは複数の命令またはコードとして非一時的コンピュータ可読媒体上に記憶され得るか、あるいは非一時的コンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。   In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on the non-transitory computer readable medium as one or more instructions or code, or transmitted via the non-transitory computer readable medium. Computer-readable media includes both computer storage media and computer communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer readable media can be RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage device, or desired program in the form of instructions or data structures. Any other medium that can be used to carry or store the code and that can be accessed by a computer can be provided. Any connection is also properly termed a computer-readable medium. For example, software sends from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, wireless, and microwave Where included, coaxial technology, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of media. As used herein, a disk and a disc are a compact disc (CD), a laser disc (registered trademark) (disc), an optical disc (disc), a digital versatile disc (DVD). ), Floppy® disk and Blu-ray® disk, which normally reproduces the data magnetically, and the disk uses a laser to reproduce the data. Reproduce optically. Combinations of the above should also be included within the scope of computer-readable media.

開示した例示的な実施形態の前述の説明は、当業者が本発明を実施または使用することができるように与えたものである。これらの例示的な実施形態への様々な修正は当業者には容易に明らかであり、本明細書で定義した一般原理は、本発明の趣旨または範囲から逸脱することなく他の実施形態に適用され得る。したがって、本発明は、本明細書で示した例示的な実施形態に限定されるものではなく、本明細書で開示した原理および新規の特徴に一致する最も広い範囲を与えられるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]モバイルデバイスにおけるワイヤレス通信のための方法であって、
前記モバイルデバイス上の第1のアプリケーションからの要求をインターセプトすることであって、前記要求が、前記モバイルデバイスのための通信を行うための要求である、インターセプトすることと、
前記モバイルデバイス上で実行しているオペレーティングシステムの伝送制御プロトコル/インターネットプロトコル(TCP/IP)スタックに前記要求が到着することを保留することと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記要求をリリースすることと、
を備える、方法。
[2]前記保留することは、前記モバイルデバイスがバックグラウンドモードにある期間中に行われる、[1]に記載の方法。
[3]前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートすること
をさらに備える、[1]に記載の方法。
[4]前記アプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、[3]に記載の方法。
[5]ラッパーのための命令を実行することであって、前記実行されたラッパーが、前記第1のアプリケーションからの前記要求を前記インターセプトすることを行う、実行すること
をさらに備える、[1]に記載の方法。
[6]前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、[5]に記載の方法。
[7]前記第1のアプリケーションを、要求が保留される種類のアプリケーションとして識別すること
をさらに備える、[1]に記載の方法。
[8]アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別することと、
非クリティカルアプリケーションからの要求のみを保留することと、
をさらに備える、[7]に記載の方法。
[9]前記トリガリングイベントは、タイマーの満了、ディスプレイのステータス変更、マイクロフォンのステータス変更、スピーカーのステータス変更、前記モバイルデバイスの全地球測位システム(GPS)センサーのステータス変更、ユニバーサルシリアルバスポートが使用中であるという指示、前記モバイルデバイスにオーディオ機器が接続されているという指示、前記モバイルデバイスにビデオ機器が接続されているという指示、Wi−Fiタイプのネットワークへの接続が利用可能であるという指示、またはセルラータイプのネットワークへの無線接続が開いているという指示のうちの少なくとも1つを備える、[1]に記載の方法。
[10]前記第1のアプリケーションの遅延許容差を判断することと、
前記判断された遅延許容差に基づいて前記第1のアプリケーションにコールバック関数を与えることであって、前記コールバック関数が、通信リソースに接続するように前記第1のアプリケーションに命令する、与えることと、
をさらに備える、[1]に記載の方法。
[11]前記第1のアプリケーションに関連する第1のタイマーの満了時間を判断することと、
第2のアプリケーションに関連する許容差と第2のタイマーの満了時間とを判断することと、
前記第1のタイマーの前記満了時間と、前記許容差と、前記第2のタイマーの前記満了時間とに基づいて、前記第2のタイマーを満了させることと、
前記モバイルデバイスのための通信を行うための前記第1のアプリケーションからの前記要求と前記第2のアプリケーションからのインターセプトされた要求とをリリースすることと、
をさらに備える、[1]に記載の方法。
[12]前記アプリケーションからデッドラインを受信することと、
前記デッドラインの前まで前記要求を保留することと、
前記デッドラインより前に前記通信リソースに接続するための前記要求をリリースすることと、
をさらに備える、[1]に記載の方法。
[13]前記要求が、前記モバイルデバイスのための通信チャネルを確立するためのシステムコールを備える、[1]に記載の方法。
[14]前記トリガリングイベントを検出すると、前記オペレーティングシステムのソケットレイヤに対して前記要求をリリースすること
をさらに備える、[1]に記載の方法。
[15]前記要求を前記リリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示を受信すること
をさらに備える、[1]に記載の方法。
[16]前記間隔が、ネットワーク中のステートフルインターネットプロトコル(IP)ミドルボックスにおけるタイムアウト値よりも小さい、[15]に記載の方法。
[17]ワイヤレス通信のために構成されたモバイルデバイスであって、
プロセッサと、
前記プロセッサと電子通信しているメモリであって、オペレーティングシステムを備える、メモリと
を備え、
前記プロセッサが接続性エンジンを備え、前記エンジンが、
前記モバイルデバイス上の第1のアプリケーションからの要求をインターセプトすることであって、前記要求が、前記モバイルデバイスのための通信を行うための要求である、インターセプトすることと、
前記モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに前記要求が到着することを保留することと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記要求をリリースすることと、
を行うための命令を実行するように構成された、モバイルデバイス。
[18]前記保留することは、前記モバイルデバイスがバックグラウンドモードにある期間中に行われる、[17]に記載のモバイルデバイス。
[19]前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートすること
をさらに備える、[17]に記載のモバイルデバイス。
[20]前記第1のアプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、[19]に記載のモバイルデバイス。
[21]前記メモリがラッパーをさらに備え、前記接続性エンジンが、前記ラッパーに対して命令を実行するようにさらに構成され、前記命令が実行されたとき、前記ラッパーが、前記アプリケーションからの前記要求をインターセプトするように構成された、[17]に記載のモバイルデバイス。
[22]前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、[21]に記載のモバイルデバイス。
[23]前記接続性エンジンは、
前記第1のアプリケーションを、要求が保留される種類のアプリケーションとして識別すること
を行うための命令を実行するようにさらに構成された、[17]に記載のモバイルデバイス。
[24]前記接続性エンジンが、
アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別することと、
非クリティカルアプリケーションからの要求のみを保留することと、
を行うための命令を実行するようにさらに構成された、[23]に記載のモバイルデバイス。
[25]前記トリガリングイベントは、タイマーの満了、ディスプレイのステータス変更、マイクロフォンのステータス変更、スピーカーのステータス変更、前記モバイルデバイスの全地球測位システム(GPS)センサーのステータス変更、ユニバーサルシリアルバスポートが使用中であるという指示、前記モバイルデバイスにオーディオ機器が接続されているという指示、前記モバイルデバイスにビデオ機器が接続されているという指示、Wi−Fiタイプのネットワークへの接続が利用可能であるという指示、またはセルラータイプのネットワークへの無線接続が開いているという指示のうちの少なくとも1つを備える、[17]に記載のモバイルデバイス。
[26]前記接続性エンジンは、
前記第1のアプリケーションの遅延許容差を判断することと、
前記判断された遅延許容差に基づいて前記第1のアプリケーションにコールバック関数を与えることであって、前記コールバック関数が、前記通信リソースに接続するように前記第1のアプリケーションに命令する、与えることと、
を行うための命令を実行するようにさらに構成された、[17]に記載のモバイルデバイス。
[27]前記接続性エンジンが、
前記第1のアプリケーションに関連する第1のタイマーの満了時間を判断することと、
第2のアプリケーションに関連する許容差と第2のタイマーの満了時間とを判断することと、
前記第1のタイマーの前記満了時間と、前記許容差と、前記第2のタイマーの前記満了時間とに基づいて、前記第2のタイマーを満了させることと、
前記モバイルデバイスのための通信を行うための前記第1のアプリケーションからの前記要求と前記第2のアプリケーションからのインターセプトされた要求とをリリースすることと、
を行うための命令を実行するようにさらに構成された、[17]に記載のモバイルデバイス。
[28]前記接続性エンジンが、
前記アプリケーションからデッドラインを受信することと、
前記デッドラインの前まで前記要求を保留することと、
前記デッドラインより前に前記通信リソースに接続するための前記要求をリリースすることと、
を行うための命令を実行するようにさらに構成された、[17]に記載のモバイルデバイス。
[29]前記要求が、通信チャネルを確立するためのシステムコールを備える、[17]に記載のモバイルデバイス。
[30]前記接続性エンジンが、
前記トリガリングイベントを検出すると、前記オペレーティングシステムのソケットレイヤに対して前記要求をリリースすること
を行うための命令を実行するようにさらに構成された、[17]に記載のモバイルデバイス。
[31]前記接続性エンジンは、
前記要求を前記リリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示を受信すること
を行うための命令を実行するようにさらに構成された、[17]に記載のモバイルデバイス。
[32]前記間隔が、ネットワーク中のステートフルインターネットプロトコル(IP)ボックスにおけるタイムアウト値よりも小さい、[31]に記載のモバイルデバイス。
[33]モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成された装置であって、
前記モバイルデバイス上のアプリケーションからの要求をインターセプトするための手段であって、前記要求が、前記モバイルデバイスのための通信を行うための要求である、インターセプトするための手段と、
前記モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに前記要求が到着することを保留するための手段と、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記要求をリリースするための手段と、
を備える、装置。
[34]前記保留することは、前記モバイルデバイスがバックグラウンドモードにある期間中に行われる、[33]に記載の装置。
[35]前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートするための手段
をさらに備える、[33]に記載の装置。
[36]前記アプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、[33]に記載の装置。
[37]ラッパーを実行するための手段であって、前記実行されたラッパーが、前記第1のアプリケーションからの前記要求をインターセプトするように構成された、実行するための手段
をさらに備える、[33]に記載の装置。
[38]前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、[37]に記載の装置。
[39]前記アプリケーションを、要求が保留される種類のアプリケーションとして識別するための手段
をさらに備える、[33]に記載の装置。
[40]アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別するための手段と、
非クリティカルアプリケーションからの要求のみを保留するための手段と、
をさらに備える、[39]に記載の装置。
[41]モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成されたコンピュータプログラム製品であって、前記製品が非一時的コンピュータ可読媒体を備え、前記媒体が、
前記モバイルデバイス上のアプリケーションからの要求をインターセプトするためのコードであって、前記要求が、前記モバイルデバイスのための通信を行うための要求である、インターセプトするためのコードと、
前記モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに前記要求が到着することを保留するためのコードと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記要求をリリースするためのコードと、
を備える、コンピュータプログラム製品。
The previous description of the disclosed exemplary embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these exemplary embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Can be done. Accordingly, the present invention is not limited to the exemplary embodiments shown herein, but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
Hereinafter, the invention described in the scope of claims of the present application will be appended.
[1] A method for wireless communication in a mobile device, comprising:
Intercepting a request from a first application on the mobile device, wherein the request is a request to communicate for the mobile device;
Suspending the request from arriving at a transmission control protocol / internet protocol (TCP / IP) stack of an operating system running on the mobile device;
Upon detecting a triggering event, releasing the request to the operating system;
A method comprising:
[2] The method according to [1], wherein the holding is performed during a period in which the mobile device is in a background mode.
[3] Aggregating the request with other intercepted requests to communicate for the mobile device
The method according to [1], further comprising:
[4] The method according to [3], wherein the intercepting the request from the application and the intercepting the other request are performed at different times.
[5] Executing instructions for a wrapper, wherein the executed wrapper performs the intercepting of the request from the first application
The method according to [1], further comprising:
[6] The method according to [5], wherein the wrapper is located between an application layer of the mobile device and a socket layer of the operating system.
[7] Identifying the first application as a type of application for which a request is pending
The method according to [1], further comprising:
[8] identifying the application as a critical or non-critical application;
Hold only requests from non-critical applications,
The method according to [7], further comprising:
[9] The triggering event is used by timer expiration, display status change, microphone status change, speaker status change, global positioning system (GPS) sensor status change of the mobile device, universal serial bus port An indication that an audio device is connected to the mobile device, an indication that a video device is connected to the mobile device, an indication that a connection to a Wi-Fi type network is available Or the method of [1] comprising at least one of indications that a wireless connection to a cellular type network is open.
[10] determining a delay tolerance of the first application;
Providing a callback function to the first application based on the determined delay tolerance, wherein the callback function instructs the first application to connect to a communication resource. When,
The method according to [1], further comprising:
[11] determining an expiration time of a first timer associated with the first application;
Determining a tolerance associated with the second application and an expiration time of the second timer;
Expiring the second timer based on the expiration time of the first timer, the tolerance, and the expiration time of the second timer;
Releasing the request from the first application and the intercepted request from the second application to communicate for the mobile device;
The method according to [1], further comprising:
[12] receiving a deadline from the application;
Deferring the request until before the deadline;
Releasing the request to connect to the communication resource before the deadline;
The method according to [1], further comprising:
[13] The method of [1], wherein the request comprises a system call for establishing a communication channel for the mobile device.
[14] releasing the request to the socket layer of the operating system upon detecting the triggering event
The method according to [1], further comprising:
[15] Receiving an indication of an interval related to how often the release is made of the request
The method according to [1], further comprising:
[16] The method according to [15], wherein the interval is smaller than a timeout value in a stateful internet protocol (IP) middle box in the network.
[17] A mobile device configured for wireless communication,
A processor;
A memory in electronic communication with the processor, the memory comprising an operating system;
With
The processor comprises a connectivity engine, the engine comprising:
Intercepting a request from a first application on the mobile device, wherein the request is a request to communicate for the mobile device;
Suspending the request from arriving at the TCP / IP stack of the operating system running on the mobile device;
Upon detecting a triggering event, releasing the request to the operating system;
A mobile device configured to execute instructions for performing.
[18] The mobile device according to [17], wherein the holding is performed during a period in which the mobile device is in a background mode.
[19] Aggregating the request with other intercepted requests to communicate for the mobile device
The mobile device according to [17], further comprising:
[20] The mobile device according to [19], wherein the intercepting the request from the first application and the intercepting the other request are performed at different times.
[21] The memory further comprises a wrapper, and the connectivity engine is further configured to execute an instruction to the wrapper, and when the instruction is executed, the wrapper receives the request from the application. The mobile device according to [17], wherein the mobile device is configured to intercept.
[22] The mobile device according to [21], wherein the wrapper is located between an application layer of the mobile device and a socket layer of the operating system.
[23] The connectivity engine includes:
Identifying the first application as the type of application for which the request is pending
The mobile device according to [17], further configured to execute instructions for performing.
[24] The connectivity engine
Identifying the application as a critical or non-critical application;
Hold only requests from non-critical applications,
The mobile device according to [23], further configured to execute instructions for performing.
[25] The triggering event is used by timer expiration, display status change, microphone status change, speaker status change, global positioning system (GPS) sensor status change of the mobile device, universal serial bus port An indication that an audio device is connected to the mobile device, an indication that a video device is connected to the mobile device, an indication that a connection to a Wi-Fi type network is available Or a mobile device according to [17], comprising at least one of indications that a wireless connection to a cellular type network is open.
[26] The connectivity engine comprises:
Determining a delay tolerance of the first application;
Providing a callback function to the first application based on the determined delay tolerance, wherein the callback function instructs the first application to connect to the communication resource And
The mobile device according to [17], further configured to execute instructions for performing.
[27] The connectivity engine includes:
Determining an expiration time of a first timer associated with the first application;
Determining a tolerance associated with the second application and an expiration time of the second timer;
Expiring the second timer based on the expiration time of the first timer, the tolerance, and the expiration time of the second timer;
Releasing the request from the first application and the intercepted request from the second application to communicate for the mobile device;
The mobile device according to [17], further configured to execute instructions for performing.
[28] The connectivity engine comprises:
Receiving a deadline from the application;
Deferring the request until before the deadline;
Releasing the request to connect to the communication resource before the deadline;
The mobile device according to [17], further configured to execute instructions for performing.
[29] The mobile device of [17], wherein the request comprises a system call for establishing a communication channel.
[30] The connectivity engine
Releasing the request to the socket layer of the operating system upon detecting the triggering event
The mobile device according to [17], further configured to execute instructions for performing.
[31] The connectivity engine includes:
Receiving an indication of an interval relating to how often the release of the request is made
The mobile device according to [17], further configured to execute instructions for performing.
[32] The mobile device according to [31], wherein the interval is smaller than a timeout value in a stateful internet protocol (IP) box in the network.
[33] An apparatus configured to manage a request for network access from an application on a mobile device,
Means for intercepting a request from an application on the mobile device, wherein the request is a request to communicate for the mobile device;
Means for deferring the arrival of the request at a TCP / IP stack of an operating system running on the mobile device;
Means for releasing the request to the operating system upon detection of a triggering event;
An apparatus comprising:
[34] The apparatus according to [33], wherein the holding is performed during a period in which the mobile device is in a background mode.
[35] Means for aggregating the request with other intercepted requests to communicate for the mobile device
The apparatus according to [33], further comprising:
[36] The apparatus according to [33], wherein the intercepting the request from the application and the intercepting the other request are performed at different times.
[37] Means for executing a wrapper, wherein the executed wrapper is configured to intercept the request from the first application.
The apparatus according to [33], further comprising:
[38] The apparatus of [37], wherein the wrapper is located between an application layer of the mobile device and a socket layer of the operating system.
[39] Means for identifying the application as a type of application for which a request is pending
The apparatus according to [33], further comprising:
[40] means for identifying the application as a critical or non-critical application;
A means to defer requests only from non-critical applications;
The apparatus according to [39], further comprising:
[41] A computer program product configured to manage requests for network access from applications on a mobile device, the product comprising a non-transitory computer-readable medium, the medium comprising:
Code for intercepting a request from an application on the mobile device, wherein the request is a request for communicating for the mobile device;
Code for deferring the arrival of the request at a TCP / IP stack of an operating system running on the mobile device;
Code for releasing the request to the operating system upon detection of a triggering event;
A computer program product comprising:

Claims (36)

モバイルデバイスにおけるワイヤレス通信のための方法であって、
前記モバイルデバイス上の第1のアプリケーションからの要求をインターセプトすることであって、前記要求が、前記モバイルデバイスのための通信を行うための通信チャネルを確立するための要求である、インターセプトすることと、
前記モバイルデバイスがバックグラウンドモードにある場合、前記モバイルデバイス上で実行しているオペレーティングシステムの伝送制御プロトコル/インターネットプロトコル(TCP/IP)スタックに前記要求が到着することを遅延させることと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記通信チャネルを確立するための前記要求をリリースすることと、ここにおいて前記トリガリングイベントは前記モバイルデバイスがアクティブモードに入ることである
を備える、方法。
A method for wireless communication on a mobile device, comprising:
Intercepting a request from a first application on the mobile device, wherein the request is a request to establish a communication channel for communicating for the mobile device; ,
Delaying the arrival of the request at a transmission control protocol / Internet protocol (TCP / IP) stack of an operating system running on the mobile device when the mobile device is in background mode ;
Detecting a triggering event, releasing the request to establish the communication channel to the operating system , wherein the triggering event is that the mobile device enters an active mode ;
A method comprising:
前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートすること
をさらに備える、請求項1に記載の方法。
The method of claim 1, further comprising aggregating the request with another intercepted request to communicate for the mobile device.
前記第1のアプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、請求項に記載の方法。 The method of claim 2 , wherein the intercepting the request from the first application and the intercepting the other request are performed at different times. ラッパーのための命令を実行することであって、前記実行されたラッパーが、前記第1のアプリケーションからの前記要求を前記インターセプトすることを行う、実行することをさらに備える、請求項1に記載の方法。   The method of claim 1, further comprising executing instructions for a wrapper, wherein the executed wrapper performs the intercepting the request from the first application. Method. 前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、請求項に記載の方法。 The method of claim 4 , wherein the wrapper is located between an application layer of the mobile device and a socket layer of the operating system. 前記第1のアプリケーションを、要求が遅延する種類のアプリケーションとして識別すること
をさらに備える、請求項1に記載の方法。
The method of claim 1, further comprising identifying the first application as a type of application whose request is delayed .
アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別することと、
非クリティカルアプリケーションからの要求のみを遅延させることと、
をさらに備える、請求項に記載の方法。
Identifying the application as a critical or non-critical application;
Delaying only requests from non-critical applications,
The method of claim 6 , further comprising:
前記第1のアプリケーションの遅延許容差を判断することと、
前記判断された遅延許容差に基づいて前記第1のアプリケーションにコールバック関数を与えることであって、前記コールバック関数が、通信リソースに接続するように前記第1のアプリケーションに命令する、与えることと、
をさらに備える、請求項1に記載の方法。
Determining a delay tolerance of the first application;
Providing a callback function to the first application based on the determined delay tolerance, wherein the callback function instructs the first application to connect to a communication resource. When,
The method of claim 1, further comprising:
前記第1のアプリケーションに関連する第1のタイマーの満了時間を判断することと、
第2のアプリケーションに関連する許容差と第2のタイマーの満了時間とを判断することと、
前記第1のタイマーの前記満了時間と、前記許容差と、前記第2のタイマーの前記満了時間とに基づいて、前記第2のタイマーを満了させることと、
前記モバイルデバイスのための通信を行うための前記第1のアプリケーションからの前記要求と前記第2のアプリケーションからのインターセプトされた要求とをリリースすることと、
をさらに備える、請求項1に記載の方法。
Determining an expiration time of a first timer associated with the first application;
Determining a tolerance associated with the second application and an expiration time of the second timer;
Expiring the second timer based on the expiration time of the first timer, the tolerance, and the expiration time of the second timer;
Releasing the request from the first application and the intercepted request from the second application to communicate for the mobile device;
The method of claim 1, further comprising:
前記第1のアプリケーションからデッドラインを受信することと、
前記デッドラインの前まで前記要求を遅延させることと、
前記デッドラインより前に前記通信リソースに接続するための前記要求をリリースすることと、
をさらに備える、請求項1に記載の方法。
Receiving a deadline from the first application;
Delaying the request until before the deadline;
Releasing the request to connect to the communication resource before the deadline;
The method of claim 1, further comprising:
前記要求が、前記モバイルデバイスのための通信チャネルを確立するためのシステムコールを備える、請求項1に記載の方法。   The method of claim 1, wherein the request comprises a system call to establish a communication channel for the mobile device. 前記トリガリングイベントを検出すると、前記オペレーティングシステムのソケットレイヤに対して前記要求をリリースすること
をさらに備える、請求項1に記載の方法。
The method of claim 1, further comprising releasing the request to a socket layer of the operating system upon detecting the triggering event.
前記要求を前記リリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示を受信すること
をさらに備える、請求項1に記載の方法。
The method of claim 1, further comprising receiving an indication about an interval related to how often the release of the request is made.
前記間隔が、ネットワーク中のステートフルインターネットプロトコル(IP)ミドルボックスにおけるタイムアウト値よりも小さい、請求項13に記載の方法。 The method of claim 13 , wherein the interval is less than a timeout value in a stateful internet protocol (IP) middlebox in the network. ワイヤレス通信のために構成されたモバイルデバイスであって、
プロセッサと、
前記プロセッサと電子通信しているメモリであって、実行可能な命令を記憶しており、オペレーティングシステムを備える、メモリと
を備え、
前記プロセッサが、
前記モバイルデバイス上の第1のアプリケーションからの要求をインターセプトすることであって、前記要求が、前記モバイルデバイスのための通信を行うための通信チャネルを確立するための要求である、インターセプトすることと、
前記モバイルデバイスがバックグラウンドモードにある場合、前記モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに前記要求が到着することを遅延させることと、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記通信チャネルを確立するための前記要求をリリースすることと、ここにおいて前記トリガリングイベントは前記モバイルデバイスがアクティブモードに入ることである
を行うための命令を実行するように構成された、モバイルデバイス。
A mobile device configured for wireless communication,
A processor;
A memory in electronic communication with the processor , storing executable instructions and comprising an operating system;
The processor is
Intercepting a request from a first application on the mobile device, wherein the request is a request to establish a communication channel for communicating for the mobile device; ,
Delaying the request from arriving at the TCP / IP stack of an operating system running on the mobile device when the mobile device is in background mode ;
Detecting a triggering event, releasing the request to establish the communication channel to the operating system , wherein the triggering event is that the mobile device enters an active mode ;
A mobile device configured to execute instructions for performing.
前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートすること
をさらに備える、請求項15に記載のモバイルデバイス。
The mobile device of claim 15 , further comprising aggregating the request with other intercepted requests to communicate for the mobile device.
前記第1のアプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、請求項16に記載のモバイルデバイス。 The mobile device of claim 16 , wherein the intercepting the request from the first application and the intercepting the other request occur at different times. 前記メモリがラッパーをさらに備え、前記プロセッサが、前記ラッパーに対して命令を実行するようにさらに構成され、前記命令が実行されたとき、前記ラッパーが、前記第1のアプリケーションからの前記要求をインターセプトするように構成された、請求項15に記載のモバイルデバイス。 The memory further comprises a wrapper, and the processor is further configured to execute instructions for the wrapper, and when the instructions are executed, the wrapper intercepts the request from the first application. The mobile device according to claim 15 , configured to: 前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、請求項18に記載のモバイルデバイス。 The mobile device of claim 18 , wherein the wrapper is located between an application layer of the mobile device and a socket layer of the operating system. 前記プロセッサは、
前記第1のアプリケーションを、要求が遅延する種類のアプリケーションとして識別すること
を行うための命令を実行するようにさらに構成された、請求項15に記載のモバイルデバイス。
The processor is
The mobile device of claim 15 , further configured to execute instructions to identify the first application as a type of application for which a request is delayed .
前記プロセッサが、
アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別することと、
非クリティカルアプリケーションからの要求のみを遅延させることと、
を行うための命令を実行するようにさらに構成された、請求項20に記載のモバイルデバイス。
The processor is
Identifying the application as a critical or non-critical application;
Delaying only requests from non-critical applications,
21. The mobile device of claim 20 , further configured to execute instructions for performing.
前記プロセッサは、
前記第1のアプリケーションの遅延許容差を判断することと、
前記判断された遅延許容差に基づいて前記第1のアプリケーションにコールバック関数を与えることであって、前記コールバック関数が、前記通信リソースに接続するように前記第1のアプリケーションに命令する、与えることと、
を行うための命令を実行するようにさらに構成された、請求項15に記載のモバイルデバイス。
The processor is
Determining a delay tolerance of the first application;
Providing a callback function to the first application based on the determined delay tolerance, wherein the callback function instructs the first application to connect to the communication resource And
The mobile device of claim 15 , further configured to execute instructions for performing.
前記プロセッサが、
前記第1のアプリケーションに関連する第1のタイマーの満了時間を判断することと、
第2のアプリケーションに関連する許容差と第2のタイマーの満了時間とを判断することと、
前記第1のタイマーの前記満了時間と、前記許容差と、前記第2のタイマーの前記満了時間とに基づいて、前記第2のタイマーを満了させることと、
前記モバイルデバイスのための通信を行うための前記第1のアプリケーションからの前記要求と前記第2のアプリケーションからのインターセプトされた要求とをリリースすることと、
を行うための命令を実行するようにさらに構成された、請求項15に記載のモバイルデバイス。
The processor is
Determining an expiration time of a first timer associated with the first application;
Determining a tolerance associated with the second application and an expiration time of the second timer;
Expiring the second timer based on the expiration time of the first timer, the tolerance, and the expiration time of the second timer;
Releasing the request from the first application and the intercepted request from the second application to communicate for the mobile device;
The mobile device of claim 15 , further configured to execute instructions for performing.
前記プロセッサが、
前記第1のアプリケーションからデッドラインを受信することと、
前記デッドラインの前まで前記要求を保留することと、
前記デッドラインより前に前記通信チャネルを確立するための前記要求をリリースすることと、
を行うための命令を実行するようにさらに構成された、請求項15に記載のモバイルデバイス。
The processor is
Receiving a deadline from the first application;
Deferring the request until before the deadline;
Releasing the request to establish the communication channel before the deadline;
The mobile device of claim 15 , further configured to execute instructions for performing.
前記要求が、通信チャネルを確立するためのシステムコールを備える、請求項15に記載のモバイルデバイス。 The mobile device of claim 15 , wherein the request comprises a system call to establish a communication channel. 前記プロセッサが、
前記トリガリングイベントを検出すると、前記オペレーティングシステムのソケットレイヤに対して前記要求をリリースすること
を行うための命令を実行するようにさらに構成された、請求項15に記載のモバイルデバイス。
The processor is
The mobile device of claim 15 , further configured to execute an instruction to release the request to a socket layer of the operating system upon detecting the triggering event.
前記プロセッサは、
前記要求を前記リリースすることがどのくらいの頻度で行われるかに関係する間隔についての指示を受信すること
を行うための命令を実行するようにさらに構成された、請求項15に記載のモバイルデバイス。
The processor is
The mobile device of claim 15 , further configured to execute an instruction to receive an indication about an interval related to how often the release of the request is made.
前記間隔が、ネットワーク中のステートフルインターネットプロトコル(IP)ミドルボックスにおけるタイムアウト値よりも小さい、請求項27に記載のモバイルデバイス。 The distance is less than the timeout value in a stateful Internet Protocol (IP) middlebox in the network, the mobile device according to claim 27. モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成された装置であって、
前記モバイルデバイス上の第1のアプリケーションからの要求をインターセプトするための手段であって、前記要求が、前記モバイルデバイスのための通信を行うための通信チャネルを確立するための要求である、インターセプトするための手段と、
前記モバイルデバイスがバックグラウンドモードにある場合、前記モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに前記要求が到着することを遅延させるための手段と、
トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記通信チャネルを確立するための前記要求をリリースするための手段と、ここにおいて前記トリガリングイベントは前記モバイルデバイスがアクティブモードに入ることである
を備える、装置。
An apparatus configured to manage requests for network access from applications on a mobile device,
Means for intercepting a request from a first application on the mobile device, wherein the request is a request for establishing a communication channel for performing communication for the mobile device Means for
Means for delaying arrival of the request to a TCP / IP stack of an operating system running on the mobile device when the mobile device is in background mode ;
Upon detecting a triggering event, means for releasing the request to establish the communication channel to the operating system , wherein the triggering event is that the mobile device enters an active mode ;
An apparatus comprising:
前記要求を、前記モバイルデバイスのための通信を行うための他のインターセプトされた要求とアグリゲートするための手段
をさらに備える、請求項29に記載の装置。
30. The apparatus of claim 29 , further comprising means for aggregating the request with other intercepted requests for communicating for the mobile device.
前記第1のアプリケーションからの前記要求を前記インターセプトすることと、前記他の要求を前記インターセプトすることとが、異なる時間に行われる、請求項29に記載の装置。 30. The apparatus of claim 29 , wherein the intercepting the request from the first application and the intercepting the other request occur at different times. ラッパーを実行するための手段であって、前記実行されたラッパーが、前記第1のアプリケーションからの前記要求をインターセプトするように構成された、実行するための手段
をさらに備える、請求項29に記載の装置。
And means for performing a wrapper, the executed wrapper, wherein is configured to intercept the request from the first application, further comprising means for performing, according to claim 29 Equipment.
前記ラッパーが、前記モバイルデバイスのアプリケーションレイヤと前記オペレーティングシステムのソケットレイヤとの間に位置する、請求項32に記載の装置。 The apparatus of claim 32 , wherein the wrapper is located between an application layer of the mobile device and a socket layer of the operating system. 前記第1のアプリケーションを、要求が遅延する種類のアプリケーションとして識別するための手段
をさらに備える、請求項29に記載の装置。
30. The apparatus of claim 29 , further comprising means for identifying the first application as a type of application whose request is delayed .
アプリケーションをクリティカルアプリケーションまたは非クリティカルアプリケーションとして識別するための手段と、
非クリティカルアプリケーションからの要求のみを遅延させるための手段と、
をさらに備える、請求項34に記載の装置。
Means for identifying the application as critical or non-critical, and
A means to delay only requests from non-critical applications;
35. The apparatus of claim 34 , further comprising:
モバイルデバイス上のアプリケーションからのネットワークアクセスの要求を管理するように構成されたコンピュータプログラムであって、前記コンピュータプログラムが、
コンピュータに、前記モバイルデバイス上の第1のアプリケーションからの要求をインターセプトさせるためのコードであって、前記要求が、前記モバイルデバイスのための通信を行うための通信チャネルを確立するための要求である、インターセプトさせるためのコードと、
前記コンピュータに、前記モバイルデバイスがバックグラウンドモードにある場合、前記モバイルデバイス上で実行しているオペレーティングシステムのTCP/IPスタックに前記要求が到着することを遅延させるためのコードと、
前記コンピュータに、トリガリングイベントを検出すると、前記オペレーティングシステムに対して前記通信チャネルを確立するための前記要求をリリースさせるためのコードと、ここにおいて前記トリガリングイベントは前記モバイルデバイスがアクティブモードに入ることである
を備える、コンピュータプログラム。
A configured computer program to manage requests for network access from an application on a mobile device, the computer program,
Code for causing a computer to intercept a request from a first application on the mobile device, wherein the request is a request for establishing a communication channel for communicating for the mobile device and code for causing intercept,
Code for causing the computer to delay arrival of the request in a TCP / IP stack of an operating system running on the mobile device when the mobile device is in background mode ;
The computer detects a triggering event, and code for causing release of the request to establish the communication channel, wherein the triggering event in this case the mobile device enters the active mode to the operating system That is ,
Equipped with a computer program.
JP2014501056A 2011-03-18 2011-11-04 Managing network access requests Expired - Fee Related JP5784816B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161454457P 2011-03-18 2011-03-18
US61/454,457 2011-03-18
US13/288,933 US9264868B2 (en) 2011-01-19 2011-11-03 Management of network access requests
US13/288,933 2011-11-03
PCT/US2011/059439 WO2012128792A1 (en) 2011-03-18 2011-11-04 Management of network access requests

Publications (2)

Publication Number Publication Date
JP2014514813A JP2014514813A (en) 2014-06-19
JP5784816B2 true JP5784816B2 (en) 2015-09-24

Family

ID=45048218

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014501056A Expired - Fee Related JP5784816B2 (en) 2011-03-18 2011-11-04 Managing network access requests

Country Status (6)

Country Link
EP (1) EP2687050A1 (en)
JP (1) JP5784816B2 (en)
KR (1) KR101557843B1 (en)
CN (1) CN103535084B (en)
BR (1) BR112013023791A8 (en)
WO (1) WO2012128792A1 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2806549C (en) 2010-07-26 2014-10-28 Seven Networks, Inc. Context aware traffic management for resource conservation in a wireless network
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
KR101828295B1 (en) * 2011-08-30 2018-02-13 삼성전자 주식회사 Terminal and method for managing application thereof
GB2510556A (en) 2012-12-12 2014-08-13 Microsoft Corp Aggregating data prior to transmission using timer events
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
US9830191B2 (en) 2013-04-15 2017-11-28 Seven Networks, Llc Temporary or partial offloading of mobile application functions to a cloud-based environment
US20150023161A1 (en) * 2013-07-22 2015-01-22 Seven Networks, Inc. Modifying system timers for optimizing mobile traffic management
CN104346137B (en) * 2013-07-24 2019-05-14 腾讯科技(深圳)有限公司 A kind of management method, system and the computer readable storage medium of application networking
CN103905641B (en) * 2014-03-19 2015-10-28 奉化波导软件有限公司 A kind of method preventing mobile phone flow from escaping
CN105453659B (en) * 2014-07-24 2019-06-21 华为技术有限公司 Data receiving-transmitting method, modem and terminal device
CN104519560B (en) * 2014-12-10 2017-11-17 广东欧珀移动通信有限公司 Intercept the method and mobile terminal of mobile terminal request
CN104580702A (en) * 2014-12-19 2015-04-29 龙凤娇 Method and device for preventing traffic escape of mobile phone
CN104809046B (en) * 2015-05-27 2018-01-16 广东欧珀移动通信有限公司 A kind of application program networking control method and application program networking control device
US10057742B2 (en) 2016-05-18 2018-08-21 Veniam, Inc. Systems and methods for managing the routing and replication of data in the download direction in a network of moving things
US10178601B2 (en) * 2016-05-18 2019-01-08 Veniam, Inc. Systems and methods for managing the routing and replication of data in the upload direction in a network of moving things
US10298691B2 (en) 2016-05-18 2019-05-21 Veniam, Inc. Systems and methods for managing the storage and dropping of data in a network of moving things
US11044311B2 (en) 2016-05-18 2021-06-22 Veniam, Inc. Systems and methods for managing the scheduling and prioritizing of data in a network of moving things
US20190028971A1 (en) * 2017-07-24 2019-01-24 Google Inc. Network communication frequency adjustment
US11122127B2 (en) * 2017-08-28 2021-09-14 Qualcomm Incorporated Techniques and apparatuses for modem-assisted heartbeat transmission

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122514A (en) * 1997-01-03 2000-09-19 Cellport Systems, Inc. Communications channel selection
JP2000349827A (en) * 1999-06-09 2000-12-15 Nec Corp Transmission method from tcp/ip communication network to mobile communication network, and transmission/ reception system
JP2001339465A (en) * 2000-05-26 2001-12-07 Mitsubishi Electric Corp Message flow control method and communication system
JP2002091841A (en) * 2000-09-13 2002-03-29 Sanyo Electric Co Ltd Network system and equipment recognizing method
US8160000B2 (en) * 2006-06-08 2012-04-17 Qualcomm Incorporated Achieving power savings through packet grouping
US8223729B2 (en) * 2006-07-19 2012-07-17 Qualcomm Incorporated Radio interface selection for a terminal
JP2008072568A (en) * 2006-09-15 2008-03-27 Hiroshi Makino Adaptive asynchronous communication control program
CN101145949A (en) * 2007-04-25 2008-03-19 中兴通讯股份有限公司 A network management system based on handheld mobile device
US8027293B2 (en) * 2007-07-16 2011-09-27 Cellport Systems, Inc. Communication channel selection and use
US8015313B2 (en) * 2008-03-04 2011-09-06 Sony Corporation Method and apparatus for managing transmission of TCP data segments
JP5374717B2 (en) * 2008-08-21 2013-12-25 独立行政法人情報通信研究機構 Sensor network system that realizes highly reliable control command transmission and reception and bandwidth efficiency
CN102960033B (en) * 2009-08-24 2015-12-09 英特尔公司 Low-power and application service fast transmission
US9603085B2 (en) * 2010-02-16 2017-03-21 Qualcomm Incorporated Methods and apparatus providing intelligent radio selection for legacy and non-legacy applications

Also Published As

Publication number Publication date
KR20140005298A (en) 2014-01-14
BR112013023791A2 (en) 2016-12-06
KR101557843B1 (en) 2015-10-06
EP2687050A1 (en) 2014-01-22
CN103535084A (en) 2014-01-22
CN103535084B (en) 2017-12-29
WO2012128792A1 (en) 2012-09-27
BR112013023791A8 (en) 2018-07-10
JP2014514813A (en) 2014-06-19

Similar Documents

Publication Publication Date Title
JP5784816B2 (en) Managing network access requests
US9264868B2 (en) Management of network access requests
JP5694602B2 (en) Offloading data to a wireless local area network
EP2752058B1 (en) Apparatus and method for monitoring of background application events
JP5863217B2 (en) System and method for synchronizing application communications
TWI508499B (en) Methods and apparatus for reducing call drop rate
EP2725869B1 (en) System and method for reducing power consumption based on data activity sensitive timers
US9811374B1 (en) Partial resume for operating system modules
TW200929942A (en) Low power operation of networked devices
JP6672167B2 (en) Fast sleep systems and processes
JP5728623B2 (en) System and method for management of background application events
US10327206B2 (en) Method and apparatus for controlling TCP packets in communication system
WO2019109557A1 (en) Method and device for reducing power consumption
US20130294350A1 (en) Method and apparatus for statistical handling of connections

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150623

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150722

R150 Certificate of patent or registration of utility model

Ref document number: 5784816

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees