KR20140005298A - Management of network access requests - Google Patents

Management of network access requests Download PDF

Info

Publication number
KR20140005298A
KR20140005298A KR1020137027548A KR20137027548A KR20140005298A KR 20140005298 A KR20140005298 A KR 20140005298A KR 1020137027548 A KR1020137027548 A KR 1020137027548A KR 20137027548 A KR20137027548 A KR 20137027548A KR 20140005298 A KR20140005298 A KR 20140005298A
Authority
KR
South Korea
Prior art keywords
request
application
mobile device
requests
operating system
Prior art date
Application number
KR1020137027548A
Other languages
Korean (ko)
Other versions
KR101557843B1 (en
Inventor
게라르도 기아레타
제이 쿠마르 순다라라잔
사타슈 고엘
알나우드 메이란
데베쉬 쿠마 사후
사친 제인
아지쓰 탐 페이야필리
테자쉬 라즈니칸트 샤
디노 플로레
로렌조 카사시아
Original Assignee
퀄컴 인코포레이티드
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 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20140005298A publication Critical patent/KR20140005298A/en
Application granted granted Critical
Publication of KR101557843B1 publication Critical patent/KR101557843B1/en

Links

Images

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

Abstract

모바일 디바이스 상에 설치된 애플리케이션들로부터의 요청들을 인터셉트하기 위한 방법들, 시스템들, 및 디바이스들이 설명된다. 요청들은 모바일 디바이스에 대한 통신 채널들을 설정하는 시스템 호출들이다. 요청들은 캡쳐되어, 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것으로부터 보류된다. 인터셉트된 요청은 다른 인터셉트된 요청들과 함께 수집된다. 수집된 요청들은 함께 번들링되고, 트리거링 이벤트의 검출 시에 운영 체제에 릴리즈된다. 애플리케이션들로부터의 요청들의 캡쳐, 보류 및 수집은 모바일 디바이스가 배경 모드에 있는 경우 발생한다.Methods, systems, and devices are described for intercepting requests from applications installed on a mobile device. Requests are system calls that establish communication channels for a mobile device. Requests are captured and held from reaching the TCP / IP stack of the operating system running on the mobile device. Intercepted requests are collected along with other intercepted requests. The collected requests are bundled together and released to the operating system upon detection of the triggering event. Capture, hold, and collection of requests from applications occur when the mobile device is in background mode.

Description

네트워크 액세스 요청들의 관리{MANAGEMENT OF NETWORK ACCESS REQUESTS}MANAGEMENT OF NETWORK ACCESS REQUESTS}

관련 출원들에 대한 상호- 참조Cross-Reference to Related Applications

본 출원은 “SYSTEMS AND METHODS FOR SYNCHRONIZING DATA CONNECTION REQUESTS”라는 명칭으로 2011년 1월 19일에 출원된 미국 가특허 출원번호 제61/434,253호, “CONNECTIVITY MANAGEMENT FOR APPLICATIONS ON A USER DEVICE”라는 명칭으로 Giaretta 등에 의해 2011년 3월 18일에 출원된 미국 가특허 출원번호 제61/454,457호(Attorney Docket No. 111354P1) 및 “Controlling Application Access to a Network”라는 명칭으로 2011년 6월 30일에 출원된 미국 가특허 출원번호 제61/503,395호 및 “SYSTEMS AND METHODS FOR SYNCHRONIZATION OF APPLICATION COMMUNICATIONS”라는 명칭으로 출원된 미국 특허 출원번호 제XX/XXX,XXX호의 우선권을 35 U.S.C. §119(e)하에서 주장하며, 이들의 개시내용들은 전체가 인용에 의해 여기에 명백하게 통합된다. This application is referred to as "SYSTEMS AND METHODS FOR SYNCHRONIZING DATA CONNECTION REQUESTS," US Provisional Patent Application No. 61 / 434,253, filed January 19, 2011, entitled "CONNECTIVITY MANAGEMENT FOR APPLICATIONS ON A USER DEVICE." U.S. Provisional Patent Application No. 61 / 454,457 filed March 18, 2011, et al., Filed June 30, 2011, entitled " Controlling Application Access to a Network. &Quot; Priority of US Patent Application No. 61 / 503,395 and US Patent Application No. XX / XXX, XXX filed under the name “SYSTEMS AND METHODS FOR SYNCHRONIZATION OF APPLICATION COMMUNICATIONS” shall be 35 USC. Claimed under § 119 (e), their disclosures are hereby expressly incorporated by reference in their entirety.

무선 디바이스들에 광범위한 애드-온 서비스들 및 특징들을 제공하도록 동작하는 애플리케이션들 또는 디바이스 애플릿들이 이제 이용가능하다. 예를 들어, 이제 무선 디바이스들이 디바이스 애플릿들을 다운로드 및 개시하여 쇼핑, 검색, 포지션 위치, 드라이빙 내비게이션, 또는 다른 기능들의 어레이를 수행하는 것이 가능하다. 네트워크 및 애플리케이션 제공자들은 일반적으로 추가 비용을 위해 디바이스 사용자들에 이러한 디바이스 애플릿들을 공급한다. 따라서, 디바이스 애플릿들의 사용자는 무선 디바이스들의 기능성 및 사용가능성을 증가시키고, 디바이스들 자체 상에서 원래 가용적이지 않은 특징들 및 편의성을 디바이스 사용자들에게 공급할 수 있다.Applications or device applets that operate to provide a wide range of add-on services and features to wireless devices are now available. For example, it is now possible for wireless devices to download and launch device applets to perform an array of shopping, searching, position location, driving navigation, or other functions. Network and application providers generally supply these device applets to device users for an additional cost. Thus, a user of device applets can increase the functionality and usability of wireless devices and provide device users with features and conveniences that are not originally available on the devices themselves.

통상적으로, 무선 디바이스는 다수의 라디오들 중 임의의 것을 사용하여 하나 이상의 통신 네트워크들과 인터페이싱한다. 예를 들어, 무선 디바이스는 셀룰러, WiFi, 블루투스, 또는 다른 타입들의 라디오 액세스 기술들을 사용하는 통신들을 제공하는 다양한 라디오들을 포함할 수 있다. 따라서, 무선 디바이스 상에서 실행하는 애플리케이션은 통신 채널을 설정하기 위해 라디오와 인터페이싱하고, 채널은 적절한 네트워크와 통신하기 위해 애플리케이션들에 의해 사용된다.Typically, a wireless device uses any of a number of radios to interface with one or more communication networks. For example, a wireless device can include various radios that provide communications 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 applications to communicate with the appropriate network.

애플리케이션들은 디바이스가 배경 모드에 있는 경우라도 통신 채널들을 설정하기 위해 무선 디바이스 상의 라디오들과 계속 인터페이싱할 수 있다. 디바이스 상에 설치되는 애플리케이션들의 수가 증가함에 따라, 디바이스의 배터리 전력은 디바이스가 활성이지 않은 동안 네트워크 통신들의 반복된 설정으로 인해 불필요하게 소모될 수 있다. 또한, 스마트폰들과 같은 무선 디바이스들의 사용 증가로, 데이터 네트워크들은 통신 채널들의 셋업과 연관된 네트워크 시그널링에 의해 오버로드될 수 있다.Applications may continue to interface with radios on the wireless device to establish communication channels even when the device is in background mode. As the number of applications installed on a device increases, the battery power of the device may be unnecessarily consumed due to the repeated setup of network communications while the device is not active. In addition, with the increased use of wireless devices such as smartphones, data networks may be overloaded by network signaling associated with the setup of communication channels.

모바일 디바이스 상에서 실행하는 애플리케이션 및 네트워크 사이의 접속성을 관리하기 위한 방법들, 시스템들 및 디바이스들이 설명된다. 일 예에서, 디바이스 상에서 실행하는 애플리케이션으로부터의 네트워크 액세스에 대한 요청이 인터셉트될 수 있다. 예를 들어, 랩퍼는 요청을 인터셉트하기 위해 모바일 디바이스의 운영 체제 및 애플리케이션 사이에 배치될 수 있다. 요청을 인터셉트할 시에, 요청은 운영 체제의 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 스택에 도달하는 것으로부터 보류될 수 있다. 일 예에서, 요청은 트리거링 이벤트가 발생하는 경우 운영 체제에 릴리즈될 수 있다. 요청들의 캡쳐, 보류 및 릴리즈는 모바일 디바이스가 배경 모드에 있는 경우 발생할 수 있다.Methods, systems, and devices are described for managing connectivity between an application running on a mobile device and a network. In one example, a request for network access from an application running on a device can be intercepted. For example, the wrapper can be placed between the operating system and the application of the mobile device to intercept the request. Upon intercepting the request, the request can be suspended from reaching 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. Capturing, holding and releasing requests can occur when the mobile device is in background mode.

일 구성에서, 요청은 모바일 디바이스에 대한 통신을 수행하기 위해 다른 인터셉트된 요청들과 함께 수집될 수 있다. 애플리케이션으로부터의 요청의 인터셉트 및 다른 요청들의 인터셉트는 상이한 시간들에서 발생할 수 있다.In one configuration, the request can be collected along with other intercepted requests to perform communication for the mobile device. Intercept of a request from an application and intercept of other requests may occur at different times.

일 예에서, 랩퍼에 대한 명령들이 실행될 수 있다. 실행된 랩퍼는 제1 애플리케이션으로부터 요청의 인터셉트를 수행할 수 있다. 일 구성에서 랩퍼는 모바일 디바이스의 운영 체제의 애플리케이션층 및 소켓층 사이에 위치될 수 있다.In one example, instructions for a wrapper can be executed. The executed wrapper may perform intercept of the request from the first application. In one configuration, the wrapper may be located between the application layer and the socket layer of the operating system of the mobile device.

일 구성에서, 제1 애플리케이션은 요청들을 보류하는 애플리케이션의 클래스로서 식별될 수 있다. 애플리케이션은 중요 애플리케이션 또는 비-중요 애플리케이션으로서 식별될 수 있다. 비-중요 애플리케이션들로부터의 요청들만이 보류될 수 있다.In one configuration, the first application may be identified as the class of application that holds the requests. The application can be identified as a critical application or a non-critical application. Only requests from non-critical applications can be suspended.

일 실시예에서, 트리거링 이벤트는 타이머의 만료, 디스플레이의 상태 변경, 마이크로폰의 상태 변경, 스피커의 상태 변경, 모바일 디바이스의 글로벌 포지셔닝 시스템(GPS) 센서의 상태 변경, 유니버셜 직렬 버스 포트가 사용중이라는 표시, 오디오 장비가 모바일 디바이스에 접속된다는 표시, 비디오 장비가 모바일 디바이스에 접속된다는 표시, Wi-Fi 타입의 네트워크에 대한 접속이 이용가능하다는 표시, 또는 셀룰러 타입의 네트워크에 대한 라디오 접속이 개방된다는 표시 중 적어도 하나를 포함할 수 있다.In one embodiment, the triggering event may expire the timer, change the state of the display, change the state of the microphone, change the state of the speaker, change the state of the Global Positioning System (GPS) sensor of the mobile device, an indication that the universal serial bus port is busy, At least one of an indication that the audio equipment is connected to the mobile device, an indication that the video equipment is connected to the mobile device, an indication that a connection to a Wi-Fi type network is available, or an indication that a radio connection to a cellular type network is open at least. It may include one.

또한, 일 예에서, 제1 애플리케이션의 지연 허용오차가 결정될 수 있다. 추가로, 콜백 기능이 결정된 지연 허용 오차에 기초하여 제1 애플리케이션에 제공될 수 있다. 콜백 기능은 통신 자원들에 접속하도록 제1 애플리케이션에 명령할 수 있다.Also, in one example, the delay tolerance of the first application can be determined. In addition, 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 resources.

일 구성에서, 제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, and the tolerance and expiration time of the second timer associated with the second application may also be determined. The second timer may be forced to expire based on the expiration time of the first timer, the tolerance, and the expiration time of the second timer. Requests from the first application and intercepted requests from the second application may be released to perform communication for the mobile device.

일 예에서, 기한이 애플리케이션으로부터 수신될 수 있다. 요청은 기한 이전까지 보류될 수 있다. 통신 자원들에 접속하기 위한 요청은 기한 이전에 릴리즈될 수 있다. 일 구성에서, 요청은 모바일 디바이스에 대한 통신 채널을 설정하기 위한 시스템 호출을 포함할 수 있다. 요청은 트리거링 이벤트를 검출할 시에 운영 체제의 소켓층에 릴리즈될 수 있다.In one example, a deadline may be received from the application. The request may be held until before the deadline. The request to access the communication resources 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 can be released to the socket layer of the operating system upon detecting a triggering event.

일 실시예에서, 요청의 릴리즈가 얼마나 자주 발생하는지에 관한 간격에 대한 표시가 수신될 수 있다. 간격은 네트워크에서 상태기반 인터넷 프로토콜(IP) 미들박스 내의 타임아웃 값보다 더 작을 수 있다.In one embodiment, an indication of the interval as to how often a release of the request occurs may be received. The interval may be smaller than the timeout value in the stateful Internet Protocol (IP) middlebox in the network.

무선 통신을 위해 구성되는 모바일 디바이스가 또한 설명된다. 디바이스는 프로세서 및 프로세서와 전자 통신 중인 메모리를 포함할 수 있다. 메모리는 운영 체제를 포함할 수 있다. 프로세서는 접속성 엔진을 포함할 수 있다. 엔진은 모바일 디바이스 상의 제1 애플리케이션으로부터의 요청을 인터셉트하기 위한 명령들을 실행하도록 구성될 수 있다. 요청은 모바일 디바이스에 대한 통신을 수행하기 위한 요청일 수 있다. 엔진은 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것으로부터 요청을 보류시키고, 트리거링 이벤트를 검출할 시에 운영 체제에 요청을 릴리즈하도록 추가로 구성될 수 있다.Also described are mobile devices configured for wireless communication. The device may include a processor and memory in electronic communication with the processor. The memory may include an operating system. The processor may include a connectivity engine. The engine may be configured to execute instructions to intercept a request from the first application on the mobile device. The request can be a request to perform communication for the mobile device. The engine may be further configured to withhold the request from reaching the TCP / IP stack of the operating system running on the mobile device and release the request to the operating system upon detecting a triggering event.

모바일 디바이스에 대한 애플리케이션들로부터의 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 장치가 또한 설명된다. 장치는 모바일 디바이스 상에서 애플리케이션으로부터의 요청을 인터셉트하기 위한 수단을 포함한다. 요청은 모바일 디바이스에 대한 통신을 수행하기 위한 요청일 수 있다. 장치는 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것으로부터 요청을 보류하기 위한 수단, 및 트리거링 이벤트의 검출 시에 운영 체제에 요청을 릴리즈하기 위한 수단을 더 포함할 수 있다.Also described is an apparatus configured to manage requests for network access from applications for a mobile device. The apparatus includes means for intercepting a request from an application on the mobile device. The request can be a request to perform communication for the mobile device. The apparatus can further include means for withholding the request from reaching the TCP / IP stack of the operating system running on the mobile device, and means for releasing the request to the operating system upon detection of the triggering event.

모바일 디바이스 상의 애플리케이션들로부터 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 컴퓨터 프로그램 물건이 또한 설명된다. 물건은 비-일시적 컴퓨터-판독가능한 매체를 포함할 수 있다. 매체는 모바일 디바이스 상에서 애플리케이션으로부터의 요청을 인터셉트하기 위한 코드를 포함할 수 있다. 요청은 모바일 디바이스에 대한 통신을 수행하기 위한 요청일 수 있다. 매체는 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것으로부터 요청을 보류하기 위한 코드, 및 트리거링 이벤트의 검출 시에 운영 체제에 요청을 릴리즈하기 위한 코드를 더 포함할 수 있다.Also described is a computer program product configured to manage requests for network access from applications on a mobile device. The article may comprise a non-transitory computer-readable medium. The medium can include code for intercepting a request from an application on a mobile device. The request can be a request to perform communication for the mobile device. The medium may further include code for withholding the request from reaching the TCP / IP stack of the operating system running on the mobile device, and code for releasing the request to the operating system upon detection of the triggering event.

전술내용은 개시내용에 따른 특징들 및 기술적 양상들을 다소 넓게 개요화하였다. 추가적인 특징들이 하기에 설명될 것이다. 개시된 개념 및 특정 예들은 본 개시내용의 동일한 목적들을 수행하기 위한 다른 구조들을 수정하거나 설계하기 위한 기반으로서 용이하게 이용될 수 있다. 이러한 등가적인 구성들은 첨부된 청구항들의 사상 및 범위로부터 벗어나지 않는다. 그 구성 및 동작 방법 모두에 대해, 여기서 개시된 바와 같은 개념들의 특성인 것으로 간주되는 특징들은 첨부 도면들과 관련하여 간주되는 경우 후속적인 설명으로부터 더 잘 이해될 것이다. 도면들 각각은 청구항들의 제한들의 정의로서가 아니라 오직 예시 및 설명의 목적으로 제공된다.The foregoing has outlined rather broadly the features and technical aspects according to the disclosure. Additional features will be described below. The conception and specific examples disclosed may 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. For both its construction and method of operation, features considered to be characteristic of the concepts as disclosed herein will be better understood from the following description when considered in conjunction with the accompanying drawings. Each of the figures is provided for the purpose of illustration and description only and not as a definition of the limits of the claims.

본 발명의 속성의 추가적인 이해가 후속적인 도면들을 참조하여 실현될 수 있다. 첨부 도면들에서, 유사한 컴포넌트들 또는 특징들은 동일한 참조 라벨을 가질 수 있다. 추가로, 동일한 타입의 여러 컴포넌트들은 점선에 의한 참조 라벨 및 유사한 컴포넌트들 사이에서 구별하는 제2 라벨에 따름으로써 구별될 수 있다. 오직 제1 참조 라벨이 명세서에서 사용되는 경우, 설명은 제2 참조 라벨과는 무관한 동일한 제1 참조 라벨을 가지는 유사한 컴포넌트들 중 임의의 하나에 적용가능하다.Further understanding of the nature of the invention may be realized with reference to the following figures. In the accompanying drawings, similar components or features may have the same reference label. In addition, several components of the same type can be distinguished by following a reference label by a dashed line and a second label that distinguishes between similar components. If 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 independent of the second reference label.

도 1은 네트워크 환경의 블록도를 도시한다.
도 2는 모바일 디바이스에 대한 아키텍쳐를 예시하는 블록도를 도시한다.
도 3은 네트워크 액세스에 대한 요청들의 지연을 제공하는 모바일 디바이스의 블록도를 도시한다.
도 4는 네트워크 액세스에 대한 요청들을 지연시키기 위한 모바일 디바이스 상의 아키텍쳐의 샘플 블록도를 도시한다.
도 5는 네트워크 액세스에 대한 요청들을 수집하기 위한 예시적인 타이밍도를 도시한다.
도 6은 모바일 디바이스 상에서 구현되는 아키텍쳐의 일 예를 도시한다.
도 7은 네트워크 액세스에 대한 요청들을 지연시키기 위한 방법의 일 예를 예시하는 흐름도이다.
도 8은 애플리케이션의 분류에 기초하여 네트워크 액세스에 대한 요청들을 지연시키기 위한 방법의 일 예를 예시하는 흐름도이다.
도 9는 다수의 모바일 디바이스로부터 수신된 네트워크 액세스에 대한 요청들을 수집하기 위한 방법의 일 예를 예시하는 흐름도이다.
도 10은 데이터 접속 요청들을 동기화하기 위한 방법의 일 예를 예시하는 흐름도이다.
도 11은 3개의 애플리케이션들이 주기적으로 접속 요청들을 개시하는 타이밍도를 예시한다.
도 12는 접속 요청들의 일부가 동기화된 도 11의 타이밍도를 예시한다.
도 13은 3개의 애플리케이션들이 주기적으로 접속 요청들을 개시하는 타이밍도를 예시한다.
도 14는 접속 요청들의 일부가 동기화되는, 도 13의 타이밍도를 예시한다.
1 shows a block diagram of a network environment.
2 shows a block diagram illustrating an architecture for a mobile device.
3 shows a block diagram of a mobile device providing a delay of requests for network access.
4 shows a sample block diagram of an architecture on a mobile device for delaying requests for network access.
5 shows an example timing diagram for collecting requests for network access.
6 shows an example of architecture implemented on a mobile device.
7 is a flow diagram illustrating an example of a method for delaying requests for network access.
8 is a flow diagram illustrating an example of a method for delaying requests for network access based on a classification of an application.
9 is a flow diagram illustrating an example of a method for collecting requests for network access received from multiple mobile devices.
10 is a flowchart illustrating an example of a method for synchronizing data connection requests.
11 illustrates a timing diagram in which three applications periodically initiate connection requests.
12 illustrates the timing diagram of FIG. 11 with some of the connection requests synchronized.
13 illustrates a timing diagram in which three applications periodically initiate connection requests.
14 illustrates the timing diagram of FIG. 13 in which some of the connection requests are synchronized.

모바일 디바이스 상에 설치된 애플리케이션들로부터의 요청들을 인터셉트하기 위한 방법들, 시스템들 및 디바이스들이 설명된다. 요청들은 모바일 디바이스에 대한 통신 채널들을 설정하는 시스템 호출들일 수 있다. 용어들 "요청들" 및 "시스템 호출들"은 상호교환가능하게 사용될 수 있다. 요청들은 캡쳐되어 모바일 디바이스 상에서 실행되는 운영 체제의 TCP/IP 스택에 도달하는 것으로부터 보류될 수 있다. 인터셉트된 요청은 다른 인터셉트된 요청들과 함께 수집될 수 있다. 수집된 요청들은 함께 번들링되고, 모바일 디바이스 상에서 트리거링 이벤트를 검출할 시에 거의 동일한 시간에 운영 체제에 릴리즈될 수 있다. 애플리케이션들로부터의 요청들의 캡쳐, 보류 및 수집은 모바일 디바이스가 배경 모드인 경우 발생할 수 있다.Methods, systems, and devices for intercepting requests from applications installed on a mobile device are described. The requests can be system calls that establish communication channels for the mobile device. The terms "requests" and "system calls" can be used interchangeably. Requests can be held from reaching the TCP / IP stack of the operating system that is captured and running on the mobile device. Intercepted requests can be collected along with other intercepted requests. The collected requests can be bundled together and released to the operating system at about the same time upon detecting the triggering event on the mobile device. Capture, hold, and collection of requests from applications can occur when the mobile device is in background mode.

스마트폰들, 개인 디지털 보조 단말들 등과 같은 모바일 디바이스에서, 소프트웨어 애플리케이션들은 사용자가 활성적으로 디바이스를 사용하고 있지 않더라도 계속 동작할 수 있다. 소셜 네트워킹 애플리케이션들, 이메일 또는 다른 통신 애플리케이션들, 데이터 피드들 등과 같은 애플리케이션들(인기 있는 예들은 Facebook®, Gmail®, , Twitter® 등을 포함함)은, 사용자가 디바이스를 사용하지 않는 경우라도 데이터를 계속 송신 및 수신할 수 있다. 심지어 비활성 동작 모드 하에서도, 활성 시의 전력 소모 및 스파이크들은 심지어 디바이스가 표면상으로 사용되지 않는 경우라도, 계속 동작하는 애플리케이션들로부터 발생할 수 있다. 이들 애플리케이션들에 의한 동작은 외부 네트워크에 의해 제공되는 것과 같은 통신 자원들을 이용할 수 있다.In mobile devices, such as smartphones, personal digital assistants, and the like, software applications can continue to operate even if the user is not actively using the device. Applications such as social networking applications, email or other communication applications, data feeds, and the like (popular examples include Facebook®, Gmail®, Twitter®, etc.) can be used to retrieve data even when the user is not using the device. Can continue to transmit and receive. Even under inactive mode of operation, power consumption and spikes during activation may arise from applications that continue to operate, even if the device is not used on the surface. Operation by these applications may use communication resources such as those provided by an external network.

애플리케이션들은 배경 모드로부터 접속 모드로 모바일 디바이스에 의한 빈번한 트랜지션들을 트리거링할 수 있거나, 또는 이들은 그렇지 않은 경우 배경 모드 또는 불연속적 수신(DRX)와 같은 다른 대안적 접속 모드들에 진입하는 디바이스를 간섭할 수 있다. 사용자가 디바이스에 활성적으로 관여하지 않는 경우 애플리케이션들에 의한 라디오 동작의 이러한 상승된 레벨들은 배터리 수명의 조기 소진, 라디오 네트워크들의 원치 않는 증가한 로드, 또는 다른 원치 않는 영향들을 초래할 수 있다.Applications may trigger frequent transitions by the mobile device from background mode to connected mode, or they may otherwise interfere with the device entering other alternative connected modes such as background mode or discontinuous reception (DRX). have. These elevated levels of radio operation by applications when the user is not actively involved in the device can result in premature exhaustion of battery life, unwanted increased load of radio networks, or other unwanted effects.

모바일 디바이스는 디바이스의 특정 입력들이 동작하지 않거나 슬립 상태인 경우 배경 모드일 수 있다. 다시 말해, 디바이스는 사용자가 디바이스를 사용하는 경우 배경 모드일 수 있다. 예를 들어, 오디오 입력들(예를 들어, 마이크로폰)이 오프인 경우, 디바이스는 배경 모드에 있는 것으로 간주될 수 있다. 추가로, 시각적 입력들(예를 들어, 디바이스의 디스플레이)이 오프인 경우, 디바이스는 배경 모드에 있는 것으로 결정될 수 있다. 하기에 설명될 바와 같이, 추가적인 입력들은, 모바일 디바이스가 배경 모드에 있는지의 여부를 결정하기 위해 사용될 수 있다.The mobile device may be in background mode when certain inputs of the device do not operate or are in a sleep state. In other words, the device may be in background mode when the user uses the device. For example, if audio inputs (eg, a microphone) are off, the device may be considered to be in background mode. In addition, when visual inputs (eg, display of the device) are off, the device may be determined to be in background mode. As will be described below, additional inputs can be used to determine whether the mobile device is in background mode.

모바일 디바이스 상에서 실행하는 애플리케이션 및 네트워크 사이의 접속성의 관리가 설명된다. 모바일 디바이스 상에 설치된 다수의 애플리케이션들이 디바이스가 배경 모드일 때 네트워크에 대한 액세스를 요청하는 경우, 불필요한 양의 네트워크 시그널링이 발생할 수 있다. 예를 들어, 제1 애플리케이션은 통신 채널을 설정하기 위해 시스템 호출을 개시할 수 있고, 이후 데이터가 전송/수신된 후에, 채널이 단절될 수 있다. 제2 애플리케이션은 이후 데이터를 전송/수신하기 위한 통신 채널을 설정하기 위해 시스템 호출을 개시할 수 있다. 통신 채널이 설정될 때마다, 네트워크의 가용 대역폭이 감소할 수 있도록 네트워크 시그널링의 양은 증가할 수 있다. 추가로, 디바이스가 배경 모드에 있는 동안 다수의 애플리케이션이 네트워크에 대한 액세스를 요청하는 경우, 불필요한 양의 배터리 전력이 소모될 수 있다. 통신 채널이 설정될 때마다, 모바일 디바이스가 활성 모드로 진입할 때 가용 전력이 더 낮도록 배터리 전력이 감소할 수 있다. 그 결과, 본 발명의 시스템들 및 방법들은 네트워크 시그널링을 감소시키고 배터리 전력을 보존하도록 네트워크 액세스에 대한 요청들을 보류하고 수집할 수 있다. 이전에 언급된 바와 같이, 이는 디바이스가 활성이 아닌 경우 발생할 수 있다. 추가로, 시스템 호출들의 보류 및 수집은 디바이스의 배터리 전력이 특정 임계 양 미만으로 떨어지는 경우 발생할 수 있다. 트리거링 이벤트가 발생하는 경우(예를 들어, 디바이스가 활성 모드로 진입하는 경우), 수집된 요청들은 네트워크 시그널링의 양을 감소시킬 뿐만 아니라 각각의 별도의 요청과 연관된 배터리 전력의 소모를 감소시키기 위해 함께 릴리즈될 수 있다.Management of connectivity between a network and an application running on a mobile device is described. If a number of applications installed on the mobile device request access to the network when the device is in background mode, an unnecessary amount of network signaling may occur. For example, the first application may initiate a system call to establish a communication channel, and then after the data is transmitted / received, the channel may be disconnected. The second application may then initiate a system call to establish a communication channel for sending / receiving data. Each time a communication channel is established, the amount of network signaling may increase so that the available bandwidth of the network may be reduced. In addition, if multiple applications request access to the network while the device is in background mode, an unnecessary amount of battery power may be consumed. Each time a communication channel is established, battery power may be reduced such that the available power is lower when the mobile device enters an active mode. As a result, the systems and methods of the present invention may suspend and collect requests for network access to reduce network signaling and conserve battery power. As mentioned previously, this may occur if the device is not active. In addition, hold and collection of system calls can occur when the device's battery power falls below a certain threshold amount. When a triggering event occurs (e.g., when the device enters active mode), the collected requests are combined to reduce the amount of network signaling as well as to reduce the battery power associated with each separate request. Can be released.

요청들의 보류 및 수집은 모바일 디바이스가 사용자에 의해 디바이스의 사용을 간섭하지 않기 위해 비활성 모드에 있는 경우 수행될 수 있다. 일 예에서, 사용자 디바이스 상의 애플리케이션으로부터 네트워크 액세스에 대한 요청이 인터셉트될 수 있다. 예를 들어, 랩퍼는 요청들을 인터셉트하기 위해 디바이스의 운영 체제 층 및 모바일 디바이스의 애플리케이션 층 사이에 배치될 수 있다. 일 예에서, 랩퍼는 요청들을 인터셉트하는 소프트웨어 엔티티일 수 있다. 랩퍼는 애플리케이션 층 내의 애플리케이션들 및 운영 체제층 내의 운영 체제에 대해 투명할 수 있다. 요청을 인터셉트할 시에, 요청은 운영 체제에 도달하는 것으로부터 보류되거나 지연될 수 있다. 일 구성예에서, 요청은 애플리케이션층 내의 추가적인 애플리케이션들로부터 수신된 다른 인터셉트된 요청들과 함께 수집될 수 있다. 트리거링 이벤트가 검출되는 경우, 수집된 요청들은 운영 체제에 릴리즈될 수 있다. 그 결과, 랩퍼는 요청들을 투명하게 인터셉트하고 수집하며, 이후 추가적인 프로세싱이 완료되는 경우 수집된 요청들을 릴레이할 수 있다.Pending and collecting requests may be performed when the mobile device is in an inactive mode to not 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 can be intercepted. For example, a wrapper can be placed between the operating system layer of the device and the application layer of the mobile device to intercept requests. In one example, the wrapper may be a software entity that intercepts requests. The wrapper may be transparent to the applications in the application layer and the operating system in the operating system layer. Upon intercepting a request, the request can be held or delayed from reaching the operating system. In one configuration, the request may be collected with other intercepted requests received from additional applications in the application layer. If a triggering event is detected, the collected requests can be released to the operating system. As a result, the wrapper can transparently intercept and collect the requests and then relay the collected requests when further 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 requests are released for the operating system of the device. The interval may be determined to hold the state of the middlebox described below. In one example, Internet Protocol (IP) hosts may be separated by stateful middleboxes. Stateful middleboxes can perform firewall and network address translation (NAT) functions. The function of the firewall may be to determine if the inbound / outbound ports of the device are open or available. NAT functions may not be constantly deployed on cellular networks, but may still be deployed on a LAN / WLAN. Applications running on the mobile device may not differentiate between the cellular network and the Wi-Fi network, as a result of which the timers may be used to issue "keep-live" requests to withhold NAT functions that are operable on the cellular network. Can be used. The state of the middleboxes may be held until the timer keeps up. If long-lived connections (TCP or UDP) are required, the middleboxes can maintain their state throughout the connection. Applications running on mobile devices (eg, smartphones) may not be coordinated for cellular networks (compared to Wi-Fi networks). As a result, these applications can select keep-alive / reconnect intervals wherever the peak is signaling for cellular networks, regardless of what the spacing causes. Thus, the follow up reduces the number of system calls for network access by holding these requests for network access while the device is in background mode and releasing the requests at intervals determined by the particular network or when a specific triggering event occurs. Systems and methods for conserving power and reducing signaling are described.

후속하는 설명은 예들을 제공하며, 청구항들에서 설명된 범위, 응용가능성, 또는 구성의 제한이 아니다. 본 개시내용의 사상 및 범위로부터의 이탈 없이 논의되는 엘리먼트들의 기능 및 배열에서 변경들이 이루어질 수 있다. 다양한 실시예들은 적절한 경우 다양한 프로시져들 또는 컴포넌트들을 생략하고, 대체하거나 또는 추가할 수 있다. 예를 들어, 설명된 방법들은 설명된 것과는 상이한 순서로 수행될 수 있고, 다양한 단계들이 추가되고, 설명되거나 또는 결합될 수 있다. 또한, 특정 실시예들에 대해 설명된 특징들은 다른 실시예들에서 결합될 수 있다.The following description provides examples and is not a limitation of the scope, applicability, or configuration described in the claims. Changes may be made in the function and arrangement of elements discussed 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 a different order than described, and various steps may be added, described, or combined. Furthermore, the features described for particular 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, a block diagram illustrates an example of a wireless network environment 100. Network environment 100 may include mobile device 102 and communication network 115. Device 102 may communicate with network 115 using multiple radio channels 110-a. For example, the control channel 110-a-1 may be established between the device 105 and the network 115. In addition, other types of channels 110-a-2 to 110-a-n may also be set. These other types of channels may include data channels, voice channels, and the like.

동작 동안, 디바이스(102)는 다수의 라디오들 중 임의의 것을 사용하여 네트워크(115)와 인터페이스할 수 있는 애플리케이션들을 실행할 수 있다. 예를 들어, 실행 애플리케이션은 네트워크(115)와의 통신을 설정하기 위한 요청을 발행할 수 있다. 일 예에서, 요청들은 소켓층 호출과 같은 네트워킹 시스템 호출일 수 있다. 요청은 디바이스(105) 상의 운영 체제의 소켓층에 대해 의도될 수 있다. 종래의 디바이스들은 통상적으로 이러한 타입들의 요청들이 프로세싱될 운영 체제로 직접 진행하게 한다. 요청의 수신 시에, 종래의 디바이스는 데이터 접속 셋업 프로시져를 통해 제어 채널(110-a-1)을 설정하기 위해 네트워크 시그널링 프로세스들을 시작한다. 데이터 접속 프로시져들이 모바일 디바이스(105) 상에서 실행되는 경우, 배터리 전력이 소모되고, 네트워크에 걸친 시그널링의 레벨이 증가할 수 있다. 이는 모바일 디바이스(105) 및 네트워크(115)의 효율성을 감소시킬 수 있다.During operation, device 102 may execute applications that may interface with network 115 using any of a number of radios. For example, an executing application may issue a request to establish communication with the network 115. In one example, the requests can be a networking system call, such as a socket layer call. The request can be intended for the socket layer of the operating system on the device 105. Conventional devices typically allow these types of requests to go directly to the operating system to be processed. Upon receipt of the request, the conventional device initiates network signaling processes to establish the control channel 110-a-1 via the data connection setup procedure. When data connection procedures are executed on the mobile device 105, battery power may be consumed and the level of signaling across the network may increase. This may reduce the efficiency of the mobile device 105 and the network 115.

일 구성에서, 디바이스(105)는 운영 체제에 대한 요청의 릴리즈를 지연시키기 위한 아키텍쳐를 포함할 수 있다. 이러한 아키텍쳐는 애플리케이션으로부터 네트워크 액세스에 대한 요청을 인터셉트할 수 있다. 요청을 인터셉트할 시에, 아키텍쳐는 운영 체제의 TCP/IP 스택에 도달하는 것으로부터 요청을 보류하거나 지연시킬 수 있다. TCP/IP 스택은, 네트워크를 통해 데이터를 전송하기 위한 표준을 운영 체제에 제공하는, 운영 체제 내로 내장될 수 있는 통신 프로토콜들을 포함할 수 있다. 인터셉트된 요청은 추가적인 애플리케이션들로부터 수신된 네트워크 액세스에 대한 다른 인터셉트된 요청들과 함께 수집될 수 있다. 수집된 요청들은 함께 번들링되고, 네트워크 액세스에 대한 단일 요청으로서 릴리즈될 수 있다. 또다른 예에서, 수집된 요청들은 특정 이벤트(예를 들어, 모바일 디바이스가 활성이 됨)의 발생 시에 릴리즈될 수 있다. 일 구성에서, 인터셉트, 보류 및 수집에 관련하여 전술된 아키텍쳐는 디바이스(105)가 비활성 모드인 경우 사용될 수 있다.In one configuration, device 105 may include an architecture for delaying the release of a request to the operating system. This architecture can intercept requests for network access from applications. When intercepting a request, the architecture can withhold or delay the request from reaching the operating system's TCP / IP stack. The TCP / IP stack may include communication protocols that may be embedded into the operating system, providing the operating system with a standard for transferring data over the network. Intercepted requests may be collected along with other intercepted requests for network access received from additional applications. The collected requests can be bundled together and released as a single request for network access. In another example, the collected requests may be released upon the occurrence of a particular event (eg, the mobile device becomes active). In one configuration, the architecture described above with respect to intercepting, holding and collecting may be used when the device 105 is in inactive mode.

도 2는 도 1의 모바일 디바이스(105)의 예일 수 있는 모바일 디바이스(105-a)의 아키텍쳐(200)의 일 예를 도시한다. 디바이스(105-a)의 아키텍쳐(200)는 접속성 엔진(225)을 포함할 수 있다. 접속성 엔진(225)은 네트 디바이스(105-a) 상의 애플리케이션 층(220)에서 실행하는 애플리케이션이 도 1의 네트워크(115)와 같은 네트워크에 언제 액세스할 수 있는지를 관리할 수 있다. 애플리케이션층(220)은 라디오 유닛(245)의 라디오들(250-a) 중 하나 이상을 사용하여, 네트워크(115)와 같은 외부 네트워크들과 통신하고 다양한 기능들을 제공하기 위해 실행할 수 있는 애플리케이션들을 포함할 수 있다.FIG. 2 shows an example of architecture 200 of mobile device 105-a, which may be an example of mobile device 105 of FIG. 1. Architecture 200 of device 105-a may include connectivity engine 225. The connectivity engine 225 may manage when applications running in the application layer 220 on the net device 105-a can access a network, such as the network 115 of FIG. 1. Application layer 220 includes applications that can execute to provide various functions and communicate with external networks, such as network 115, using one or more of radios 250-a of radio unit 245. can do.

일 구성에서, 접속성 엔진(225)은 랩퍼(230)를 실행할 수 있다. 일 예에서, 랩퍼(230)는 애플리케이션층(220) 내의 애플리케이션으로부터 발신하는 네트워크 액세스에 대한 시스템 호출을 인터셉트할 수 있다. 랩퍼(230)는 디바이스(105-a) 상에서 실행하는 운영 체제(235)에 도달하는 것으로부터 요청을 보류할 수 있다. 랩퍼(230)는 또한 추가적인 애플리케이션들로부터 인터셉트되는 다른 시스템 호출들과 함께 인터셉트된 시스템 호출을 수집할 수 있다. 랩퍼(230)는 수집된 시스템 호출들을 운영 체제(235)의 소켓층(240)에 도달하는 것으로부터 보류할 수 있다. 네트워크 액세스에 대한 시스템 호출이 소켓층(240)에 도달하는 경우, 라디오들(250-a) 중 하나 이상을 사용하여 통신 채널을 설정하기 위한 프로세스가 개시될 수 있다. 소켓층(240)은 요청을 프로세싱하고, 네트워크(115) 및 요청을 개시한 애플리케이션 사이에 접속을 설정하기 위해 접속 설정 프로시져를 개시하기 위한 특정 라디오를 통지할 수 있다. 예를 들어, 소켓층(240)은 특정 애플리케이션 및 라디오, 예를 들어, 라디오 1(250-a-1) 사이의 바인딩을 설정하기 위해 호출들(또는 요청들)을 발행할 수 있다. 라디오 1(250-a-1)는, 도 1의 제어 채널(110-a-1)의 예일 수 있는 제어 채널을 설정함으로써 접속 셋업 프로시져를 시작하기 위해 네트워크(115)에 신호들을 전송하기 시작할 수 있다.In one configuration, connectivity engine 225 may execute wrapper 230. In one example, wrapper 230 may intercept system calls for network access originating from an application within application layer 220. The wrapper 230 may withhold the request from reaching the operating system 235 running on the device 105-a. The wrapper 230 may also collect intercepted system calls along with other system calls that are intercepted from additional applications. The wrapper 230 may suspend the collected system calls from reaching the socket layer 240 of the operating system 235. When a system call for network access reaches socket layer 240, a process may be initiated to establish a communication channel using one or more of radios 250-a. The socket layer 240 may process a request and notify a particular radio to initiate a connection establishment procedure to establish a connection between the network 115 and the application that initiated the request. For example, socket layer 240 may issue calls (or requests) to establish a binding between a particular application and radio, eg, radio 1 250-a-1. Radio 1 250-a-1 may begin transmitting signals to the network 115 to begin the connection setup procedure by setting up a control channel, which may be an example of the control channel 110-a-1 of FIG. 1. have.

수집된 요청들이 소켓층(240)에 함께 릴리즈되는 경우, 소켓층 기능들은 애플리케이션이 네트워크 액세스에 대한 시스템 호출을 제공할 때마다 셋업 프로시져들을 개시한다기 보다는, 특정 라디오(250-a) 및 요청들을 송신한 애플리케이션들 사이에 접속을 설정하기 위해 한번 개시될 수 있다. 선택된 라디오들은 이후 요청들을 발신한 애플리케이션들 및 네트워크와의 데이터 접속을 설정하기 위해 네트워크 시그널링을 시작할 수 있다.When the collected requests are released together in the socket layer 240, the socket layer functions do not initiate setup procedures each time the application provides a system call for network access, but rather initiate specific radio 250-a and requests. It may be initiated once to establish a connection between the sending applications. The selected radios can then begin network signaling to establish a data connection with the network and the applications that sent the requests.

따라서, 디바이스 아키텍쳐(200)는 디바이스(105-a) 상에서 실행하는 애플리케이션들에 의해 네트워크에 시스템 호출 액세스의 수집을 제공한다. 수집은 소켓층(235)에 대한 번들로서 다수의 시스템 호출들을 릴리즈함으로써 배터리 소모 및 네트워크 시그널링을 감소시키는 역할을 할 수 있다.Thus, device architecture 200 provides a collection of system call access to the network by applications running on device 105-a. The collection may serve to reduce battery consumption and network signaling by releasing multiple system calls as a bundle for the socket layer 235.

도 3은 네트워크 액세스에 대한 요청들의 보류 및 수집을 구현하는 모바일 디바이스(105-b)의 블록도(300)를 도시한다. 디바이스(105-b)는 도 1 또는 2의 디바이스(105)의 예일 수 있다. 디바이스(105-b)는 프로세서(360), 메모리(355), 애플리케이션층(220), 랩퍼(230), 접속성 엔진(225), 운영 체제(235), 및 라디오 유닛(245)을 포함할 수 있으며, 이들 모두는 통신 버스(314)를 사용하여 통신하도록 커플링된다. 메모리(355)는 애플리케이션층(220), 랩퍼(230) 및 운영 체제(235)를 저장할 수 있다. 프로세서(360)는 접속성 엔진(225)을 포함할 수 있다. 접속성 엔진(225)은 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 논리 디바이스, 이산 게이트 또는 트랜지스터 논리, 이산 하드웨어 컴포넌트들, 또는 여기서 설명된 기능들을 수행하도록 설계되는 이들의 임의의 결합으로서 구현될 수 있다. 접속성 엔진(225)은 모바일 디바이스 상에서 애플리케이션으로부터의 요청을 인터셉트하기 위한 수단, 모바일 디바이스 상에서 운영 체제에 도달하는 것으로부터 요청을 보류하기 위한 수단, 및 트리거링 이벤트를 검출할 시에 운영 체제에 요청을 릴리즈하기 위한 수단을 포함할 수 있다. 또한, 접속성 엔진(225)은 모바일 디바이스(105)에 대한 통신을 수행하기 위해 다른 인터셉트된 요청들과 함께 요청을 수집하기 위한 수단을 포함할 수 있다. 접속성 엔진(225)은 도 2, 3 또는 4의 랩퍼(230)를 실행하기 위한 수단을 포함할 수 있다. 실행된 랩퍼는 애플리케이션으로부터 요청을 인터셉트할 수 있다. 추가로, 엔진(225)은 애플리케이션을 요청들을 보류하는 애플리케이션의 클래스로서 식별하기 위한 수단을 포함할 수 있다. 또한, 접속성 엔진(225)은 애플리케이션을 중요 애플리케이션 또는 비-중요 애플리케이션으로서 식별하기 위한 수단, 및 비-중요 애플리케이션들로부터의 요청들만을 보류하기 위한 수단을 포함할 수 있다. 디바이스(105-b)가 단자 하나의 구현예이며, 다른 구현예들이 가능하다는 점에 유의해야 한다.3 shows a block diagram 300 of a mobile device 105-b that implements the hold and collection of requests for network access. The device 105-b may be an example of the device 105 of FIG. 1 or 2. The device 105-b may include a processor 360, a memory 355, an application layer 220, a wrapper 230, a connectivity engine 225, an operating system 235, and a radio unit 245. All of which are coupled to communicate using a communication bus 314. The memory 355 may store the application layer 220, the wrapper 230, and the operating system 235. Processor 360 can include connectivity engine 225. Connectivity engine 225 may be a general purpose processor, digital signal processor (DSP), application specific integrated circuit (ASIC), field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, Or any combination thereof designed to perform the functions described herein. Connectivity engine 225 may include means for intercepting a request from an application on the mobile device, means for holding the request from reaching the operating system on the mobile device, and sending a request to the operating system upon detecting a triggering event. It may include means for release. In addition, connectivity engine 225 may include means for collecting the request along with other intercepted requests to perform communication for mobile device 105. Connectivity engine 225 may include means for implementing wrapper 230 of FIGS. 2, 3, or 4. The executed wrapper can intercept the request from the application. In addition, the engine 225 may include means for identifying the application as the class of the application holding the requests. In addition, the connectivity engine 225 may include means for identifying an application as a critical or non-critical application, and means for withholding only requests from non-critical applications. It should be noted that the device 105-b is an implementation of one terminal, and other implementations are possible.

일 양상에서, 프로세서(360)는 중앙 처리 장치(CPU), 프로세서, 게이트 어레이, 하드웨어 로직, 메모리 엘리먼트들, 및/또는 소프트웨어를 실행하는 하드웨어 중 적어도 하나를 포함한다. 프로세서(360)는 디바이스(105-b)의 동작을 제어하도록 동작하고, 따라서, 애플리케이션층(220)에서 실행하는 애플리케이션들에 의해 개시되는 네트워크 액세스에 대한 시스템 호출들은 운영 체제로부터 도달하는 것으로부터 보류되고, 다른 시스템 호출들과 함께 수집될 수 있다. 일 구현예에서, 프로세서(360)는 다수의 기능들 중 임의의 것을 수행하는 것과 관련된 컴퓨터-판독가능한 명령들을 실행할 수 있다. 예를 들어, 프로세서(360)는 네트워크 액세스에 대한 요청들의 인터셉트 및 수집을 실행하기 위해 디바이스(105-b)로부터 수신되거나 전달되는 정보를 분석하도록 동작할 수 있다. 또다른 양상에서, 프로세서(360)는 다수의 애플리케이션들로부터 네트워크 액세스에 대한 시스템 호출들의 수집을 실행하기 위해, 메모리(355), 라디오 유닛(245), 애플리케이션층(220), 랩퍼(230), 운영 체제(235), 및/또는 접속성 엔진(225)에 의해 이용될 수 있는 정보를 생성하도록 동작할 수 있다.In one aspect, 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 operates to control the operation of the device 105-b, so that system calls for network access initiated by applications executing at the application layer 220 are suspended from arriving from the operating system. And can be collected with other system calls. In one implementation, processor 360 may execute computer-readable instructions related to performing any of a number of functions. For example, processor 360 may be operable to analyze information received or communicated from device 105-b to effect intercept and collection of requests for network access. In another aspect, processor 360 may execute memory 355, radio unit 245, application layer 220, wrapper 230, to execute collection of system calls for network access from multiple applications. It may be operable to generate information that may be used by operating system 235 and / or connectivity engine 225.

라디오 유닛(245)은 다수의 채널들(110-a)을 사용하는 외부 통신 네트워크들과 같은, 다수의 외부 엔티티들과 디바이스(105-b)를 인터페이싱하기 위해 사용될 수 있는 다수의 라디오들/인터페이스들을 제공할 수 있는 소프트웨어를 실행하는 프로세서 및/또는 하드웨어를 포함할 수 있다. 예를 들어, 라디오 유닛(245)은 셀룰러, WiFi, 블루투스, 또는 채널들(110-a)를 사용하여 통신 네트워크들과 통신하기 위한 임의의 다른 기술들을 사용하여 통신하기 위한 라디오들/인터페이스들을 제공할 수 있다.The radio unit 245 can be used to interface the device 105-b with a number of external entities, such as external communication networks using the plurality of channels 110-a. Processor and / or hardware executing software capable of providing the software. For example, radio unit 245 provides radios / interfaces for communicating using cellular, WiFi, Bluetooth, or any other technology for communicating with communication networks using channels 110-a. can do.

애플리케이션층(220)은 디바이스(105-b) 상에서 하나 이상의 애플리케이션들을 저장 및/또는 실행할 수 있는 소프트웨어를 실행하는 프로세서 및/또는 하드웨어를 포함할 수 있다. 일 구현예에서, 애플리케이션층(220)은 애플리케이션들로 하여금 네트워킹 서비스들을 요청하기 위해, 예를 들어, 외부 네트워크 또는 시스템과 통신할 목적으로 라디오/인터페이스에 대한 접속을 요청하도록, 네트워킹 기능 호출들을 개시하게 할 수 있다.The application layer 220 can include a processor and / or hardware that executes software that can store and / or execute one or more applications on the device 105-b. In one implementation, the application layer 220 initiates networking function calls to request applications to connect to the radio / interface, for example for communication with an external network or system, to request networking services. It can be done.

운영 체제(235)는 소켓층을 포함할 수 있다. 소켓층은 소켓층 함수들을 수행할 수 있는 소프트웨어를 실행하는 프로세서 및/또는 하드웨어를 포함할 수 있다. 일 구현예에서, 소켓층 함수들은 Connect(), Bind(), 및 Setsockopt()와 같은 함수들을 포함할 수 있다. Connect() 함수는 특정 라디오/인터페이스 및 애플리케이션 사이에 접속을 설정하도록 동작한다. 예를 들어, 특정 라디오/인터페이스는 라디오 유닛(245)에 의해 제공되는 다수의 후보 라디오들로부터 선택될 수 있다. 일 양상에서, 소켓층은 다양한 소켓층 함수들 또는 커맨드들을 수행할 수 있다.Operating system 235 may include a socket layer. The socket layer may include a processor and / or hardware that executes software capable of performing socket layer functions. In one implementation, the socket layer functions may include functions such as Connect (), Bind (), and Setsockopt (). The Connect () function operates to establish a connection between a particular radio / interface and an application. 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)가 활성 모드에 진입하는 경우) 운영 체제의 소켓층으로 릴리즈될 수 있다.Connectivity engine 225 may include processor execution software and / or hardware capable of executing wrapper 230 to cause the wrapper to intercept a request for network access from an application running on mobile device 105-b. Can be. The wrapper 230 may also suspend the intercepted request from arriving from the operating system 235. In addition, wrapper 230 may collect the intercepted request along with other intercepted requests. The collected requests may be released to the socket layer of the operating system when a triggering event occurs (eg, when the 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, withhold, and collect requests for network access in a variety of ways. For example, if device 105-b is in background mode, connectivity engine 225 (via wrapper 230) may have multiple requests from multiple applications executing on device 105-a. Can intercept them. Intercepted requests can be collected and held together until a specific triggering event occurs. For example, requests can be released when the mobile device 105-b enters an active state. In one configuration, the collected requests currently pending may be released together. For example, the collected requests can be bundled and released together in the socket layer as a single system call. The socket layer can initiate procedures to establish communication channels for data communication with the network 115.

메모리(355)는 RAM, ROM, EEPROM, 또는 정보가 디바이스(105-b)에서 저장 및 검색되게 하도록 동작하는 임의의 다른 타입의 메모리 디바이스를 포함할 수 있다. 일 구현예에서, 메모리(355)는 프로세서(360)에 의해 실행되는 컴퓨터-판독가능한 명령들을 저장할 수 있다. 메모리(355)는 또한 프로세서(360), 라디오 유닛(245), 애플리케이션층(220), 랩퍼(230), 운영 체제(235), 및/또는 접속성 엔진(225) 중 임의의 것에 의해 생성되는 데이터를 포함하는 다수의 다른 타입들의 데이터 중 임의의 것을 저장할 수 있다. 메모리(355)는 랜덤 액세스 메모리, 배터리-백 메모리, 하드 디스크, 자기 테이프 등을 포함하는 다수의 상이한 구성들을 포함할 수 있다. 압축 및 자동 백업과 같은 다양한 특징들이 또한 메모리(355) 상에서 구현될 수 있다.Memory 355 may include RAM, ROM, EEPROM, or any other type of memory device operative to cause information to be stored and retrieved from device 105-b. In one implementation, the memory 355 may store computer-readable instructions executed by the processor 360. Memory 355 is also created by any of processor 360, radio unit 245, application layer 220, wrapper 230, operating system 235, and / or connectivity engine 225. Any of a number of other types of data, including data, may be stored. Memory 355 may include a number of different configurations including random access memory, battery-back memory, hard disks, magnetic tape, and the like. Various features, such as compression and automatic backup, can also be implemented on memory 355.

다양한 구현예들에서, 디바이스(105-b)는 비-일시적 컴퓨터 판독가능한 매체 상에 내장되거나 저장되는 "코드들"의 세트 또는 하나 이상의 프로그램 명령들("명령들)을 가지는 컴퓨터 프로그램 물건을 포함할 수 있다. 코드들이 적어도 하나의 프로세서, 예를 들어, 프로세서(360) 및/또는 접속성 엔진(225)에 의해 실행되는 경우, 이들의 실행은 프로세서(360) 및/또는 접속성 엔진(225)으로 하여금 여기서 설명된 수집 아키텍쳐의 기능들을 제공하도록 디바이스(105-b)를 제어하게 할 수 있다. 예를 들어, 비-일시적 컴퓨터-판독가능한 매체는 플로피 디스크, CDROM, 메모리 카드, 플래시 메모리 디바이스, RAM, ROM, 또는 디바이스(105-b)에 대해 인터페이싱하는 임의의 다른 타입의 메모리 디바이스 또는 컴퓨터-판독가능한 매체일 수 있다. 또다른 양상에서, 코드들의 세트는 외부 디바이스 또는 통신 네트워크 자원으로부터 디바이스(105-b) 내로 다운로드될 수 있다. 코드들의 세트들은, 실행되는 경우, 여기서 설명된 시스템 호출 수집 아키텍쳐의 양상들을 제공하도록 동작한다.In various implementations, device 105-b includes a computer program product having one or more program instructions (“instructions”) or a set of “codes” embedded or stored on a non-transitory computer readable medium. If the code is executed by at least one processor, for example, the processor 360 and / or the connectivity engine 225, their execution is performed by the processor 360 and / or the connectivity engine 225. ) May control device 105-b to provide the functions of the collection architecture described herein, for example, non-transitory computer-readable media may include floppy disks, CDROMs, memory cards, flash memory devices. , RAM, ROM, or any other type of memory device or computer-readable medium that interfaces with device 105-b. Teuneun may be downloaded into the device (105-b) from an external device or communication network resource. A set of codes, operates to provide aspects of a, when executed, call the system described herein acquisition architecture.

도 4는 전술된 바와 같이 네트워크 액세스에 대한 요청들을 인터셉트하고 수집하기 위해 유용한 모바일 디바이스(105-c) 상의 아키텍쳐의 샘플 블록도(400)를 도시한다. 모바일 디바이스(105-c)는 도 1, 2 또는 3의 모바일 아키텍쳐(105)의 예일 수 있다.4 shows a sample block diagram 400 of an architecture on a mobile device 105-c useful for intercepting and collecting requests for network access as described above. Mobile device 105-c may be an example of mobile architecture 105 of FIG. 1, 2, or 3.

도시된 바와 같이, 블록들은 애플리케이션 프로세서(490) 및 모뎀 프로세서(495) 사이에서 분할되지만, 다양한 기능성이 도 4의 예와는 상이하게 정리될 수 있다. 애플리케이션층(220)은 소켓층(240) 및 애플리케이션 접속 엔진(APP CnE)(475)과 상호작용할 수 있다. 애플리케이션 접속 엔진(475)은 모뎀 접속 엔진(Modem CnE)(485)과 통신할 수 있다. 모뎀 접속 엔진은 그 내부의 라디오 유닛(245) 및 다수의 라디오들(250-a)과 같은 통신 자원들을 관리할 수 있다. 랩퍼(230)는 운영 체제의 소켓층(240) 및 애플리케이션층(220) 사이의 애플리케이션 프로세서(490)에서 실행될 수 있다. 랩퍼(230)는 소켓층(240) 및 애플리케이션층(220) 사이에서 전달되는 데이터를 캡쳐할 수 있다. 예를 들어, 랩퍼(230)는 소켓층(240)에 대해 의도되고 애플리케이션층(220)으로부터 송신되는 시스템 호출들을 인터셉트하기 위해 애플리케이션층(220) 및 소켓층(240) 사이에 배치될 수 있다. 일 구성에서, 랩퍼(230)는 디바이스(105-c)에 의해 비활성 기간 동안 애플리케이션층(220)으로부터 시스템 호출들을 인터셉트할 수 있고, 랩퍼는 소켓층(240)에 시스템 호출을 릴리즈하기 전에 트리거링 이벤트가 발생할 때까지 인터셉트된 호출을 보류할 수 있다. 시스템 호출은 라디오 유닛(245) 내의 라디오(250)를 사용하여 통신 채널을 설정하기 위한 요청일 수 있다.As shown, the blocks are split between the application processor 490 and the modem processor 495, but various functionality may be organized differently from the example of FIG. 4. The application layer 220 may interact with the socket layer 240 and the application connection engine (APP CnE) 475. The application connection engine 475 may communicate with a modem connection engine (Modem CnE) 485. The modem connection engine may manage communication resources such as the radio unit 245 and the plurality of radios 250-a therein. The wrapper 230 may run in an application processor 490 between the socket layer 240 and the application layer 220 of the operating system. The wrapper 230 may capture data transferred between the socket layer 240 and the application layer 220. For example, wrapper 230 may be placed between application layer 220 and socket layer 240 to intercept system calls intended for socket layer 240 and transmitted from application layer 220. In one configuration, wrapper 230 may intercept system calls from application layer 220 during the period of inactivity by device 105-c, and the wrapper may trigger the event before releasing the system call to socket layer 240. You can hold the intercepted call until it occurs. The 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, the wrapper 230 may collect intercepted system calls from the application layer 220 during the period of inactivity by the device 105-c. The wrapper 230 may suspend the intercepted collected calls until a specific event occurs before releasing the collected system calls for the socket layer 240 and ultimately the radio unit 245 for operation / transmission. .

일 구성에서, 랩퍼(230)는 애플리케이션층(220)에서 애플리케이션들에 대해 비가시적일 수 있고, 따라서 애플리케이션들은 자신의 요청들이 소켓층(240)에 도달하는 것으로부터 보류되고 있음을 알지 못한다. 랩퍼(230)는 별도의 소프트웨어 컴포넌트일 수 있거나, 또는 접속성 엔진(225) 또는 애플리케이션 접속 엔진(475)과 같은 또다른 컴포넌트 내로 포함될 수 있다.In one configuration, the wrapper 230 may be invisible to the applications at the application layer 220, so that the applications do not know that their requests are being held from reaching the socket layer 240. The wrapper 230 may be a separate software component or may be incorporated into another component, such as the connectivity engine 225 or the application connection 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)에 릴리즈될 수 있다.5 shows timing diagrams 500 for a number of applications, such as a first application and a second application. The applications may be located in the application layer 220 of the mobile device 105. Timing diagrams 500 may be the result of an implementation of the connectivity engine 225 of FIG. 2 or 3. In one configuration, the first request 505-a-1 may 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 reaching from an operating system 235 running on the mobile device. For example, the first request may be suspended from the TCP / IP stack of the operating system. The time at which the request is held can be expressed as H 0 . The first request 505-a-1 may 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 may be sent from the second application at time t 1 . Time t 1 may be after time t 0 . The second request 505-a-2 may also be a Connect () system call. The second request 505-a-2 may be suspended from reaching operating system 235 for the time period represented as H 1 . For example, the second request may also be suspended from reaching the TCP / IP stack of the operating system. The second request 505-a-2 may be released at time t 2 . As a result, 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 may be smaller than the time period H 0 . In other words, the second request 505-a-2 may be held for a smaller time than the first request 505-a-1.

일 구성에서, 시간 기간 H0동안, 제1 요청은 제2 요청(505-a-2)이 시간 t1에서 인터셉트되는 경우 제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 collected with the second request 505-a-2 when the second request 505-a-2 is intercepted at time t 1 . The collection of requests causes all of the requests to be released at substantially the same time (ie, time t 2 ). Thus, timing diagram 500 shows that requests sent at different times t 0 and t 1 may be held for different time periods H 0 and H 1 and then released at the same time t 2 . To illustrate.

도 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)가 고정식이라고 결정하는 경우, 디바이스의 배터리 레벨이 특정 임계 레벨 미만으로 떨어지는 경우 등에서 배경 모드에 있다고 간주될 수 있다.6 shows an example of a collection architecture that may be implemented on mobile device 105-d. Mobile device 105-d may be an example of device 105 of FIGS. 1, 2, 3, and 4. As illustrated, the device 105-d may include an application layer 220-a, a wrapper 230-b, and an operating system 235. The operating system 235 can include a socket layer 240. The connectivity engine 225 of FIG. 2 or 3 may execute instructions for executing the wrapper 230-b software. In one configuration, the device 105-d may be in background mode. The mobile device 105-d may be connected to the device (eg, when the screen or display of the device 105-d is off, or when the microphone, speaker, or other audio output of the device 105-d is off). If the global positioning system (GPS) mechanism of 105-d determines that the device 105-d is stationary, it may be considered to be in background mode, such as when the battery level of the device falls 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)을 설정하기 위해 네트워크(115) 및 모바일 디바이스(105-d) 사이에 시그널링 메시지를 전송하는 것을 포함할 수 있다.In one example, multiple applications 605-a executing in application layer 220-a may transmit a system call 505-a for network access, such as a Connect () system call. System calls 505-a may be sent from each application at different times. The wrapper 230-b may capture these requests and suspend them from reaching the operating system 235. In particular, calls may be suspended from reaching the socket layer 240 of the operating system 235. In one configuration, the collection module 610 may collect intercepted system calls 505-a. The collected calls may be released together (or substantially simultaneously) from the wrapper 230-a-1 to the socket layer 240 of the operating system 235. Upon receiving the collected requests, socket layer 240 may be processed to establish a connection with network 115. The procedure may include sending a signaling message between the network 115 and the mobile device 105-d to establish the control channel 110-a-1.

따라서, 네트워크 액세스를 위한 요청들의 인터셉트, 보류 및 수집은 모바일 디바이스(105-d)의 전력 소모를 감소시킬 수 있는데, 왜냐하면, 다수의 시스템 호출들이 상이한 시간들에서 소켓층(240)에서 실행되지 않기 때문이다. 대신, 다수의 요청들은 함께 번들링되고 거의 동시에 소켓층(240)에 릴리즈된다. 또한, 요청들의 수집은 네트워크(115)와의 접속 셋업 프로시져들의 빈도수를 감소시키고, 따라서 네트워크 트래픽을 감소시킬 수 있다.Thus, intercepting, holding and collecting requests for network access can reduce the power consumption of the mobile device 105-d because multiple system calls are not executed at the socket layer 240 at different times. Because. Instead, multiple requests are bundled together and released to socket layer 240 at about the same time. In addition, the collection of requests can reduce the frequency of connection setup procedures with the network 115 and thus reduce network traffic.

애플리케이션들(605-a)로부터의 요청들의 보류 및 수집은 선택적으로 이루어질 수 있다(즉, 사용자가 방해받지 않을 수 있도록 구현된다). 통신 채널들을 설정하기 위해 애플리케이션들(605-a)로부터의 요청들을 언제 보류하고 수집할지를 결정하기 위해 다양한 인자들이 사용될 수 있다. 예를 들어, 요청을 인터셉트하기 위한 결정은 스크린이 오프되거나, 오디오가 오프되는 것 등과 같은, 모바일 디바이스(105-d)의 특정한 특성들에 기초하여 이루어질 수 있다. 요청들을 보류하는 것은, 라디오가 로드되지 않는 경우, 모바일 디바이스(105-d)가 달리 사용중이지 않은 경우(전화 호출들, 오디오 스트리밍 등이 없음) 이러한 지연들을 핸들링할 수 있는 것으로 공지된 애플리케이션들에 대해서만 구현될 수 있다. 애플리케이션으로부터의 시스템 호출들의 인터셉트 및 보류는 사용자가 애플리케이션에 의해 제공되는 서비스에 가입하는지의 여부에 기초하여 구현될 수 있다. 사용자가 서비스에 가입한 경우, 애플리케이션으로부터의 요청들은 운영 체제에 도달하는 것으로부터 보류되지 않을 수 있다. 대신, 이러한 가입-기반 애플리케이션으로부터의 요청들은 소켓층에 즉시 전달하도록 허용될 수 있다. 일 예에서, 모바일 디바이스(105-d) 상에서 실행하는 애플리케이션들이 분류될 수 있다. 예를 들어, 제1 애플리케이션(605-a-1)은 비-중요 애플리케이션으로서 분류될 수 있고, 제2 애플리케이션(605-a-2)은 중요 애플리케이션으로서 분류될 수 있다. 비-중요 애플리케이션은 특정 지연 허용오차를 가지는 애플리케이션일 수 있다. 다시 말해, 통신 채널을 설정하기 위한 비-중요 애플리케이션으로부터의 시스템 호출들은 지연될 수 있다. 그러나, 중요 애플리케이션은 작은 지연 허용오차를 가지거나 지연 허용오차가 없는 애플리케이션일 수 있다. 중요 애플리케이션들의 예들은, 어린이 추적 애플리케이션들, 비상-기반 애플리케이션들, 가입-기반 애플리케이션들 등을 포함할 수 있지만, 이에 제한되지 않는다. 일 구성에서, 요청들의 보류 및 수집이 비-중요 애플리케이션들로부터 발신하는 요청들에 대해 발생할 수 있다. 중요 애플리케이션들로부터 송신된 요청들은 보류(또는 수집)되는 것이 아니라, 대신, 운영 체제의 소켓층에 직접 진행할 수 있다. 보류 및 수집은 또한 위의 인자들 또는 다른 인자들의 조합을 이용하여 구현될 수 있다.The hold and collection of requests from applications 605-a may be made selectively (ie, implemented so that the user may not be disturbed). Various factors may be used to determine when to hold and collect requests from applications 605-a to establish communication channels. For example, the decision to intercept the request may be made based on certain characteristics of the mobile device 105-d, such as the screen being off, the audio being off, and the like. Pending requests can be applied to applications known to be able to handle these delays if the radio is not loaded and the mobile device 105-d is not otherwise busy (no phone calls, audio streaming, etc.). Can only be implemented. Intercept and withholding of system calls from an application may be implemented based on whether the user subscribes to a service provided by the application. When a user subscribes to a service, requests from the application may not be held from reaching the operating system. Instead, requests from such subscription-based applications can be allowed to pass immediately to the socket layer. In one example, applications running on mobile device 105-d may 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. Non-critical applications may be applications with specific delay tolerances. In other words, system calls from non-critical applications to establish a communication channel can be delayed. However, the critical application may be an application with a small delay tolerance or no delay tolerance. Examples of critical applications may include, but are not limited to, child tracking applications, emergency-based applications, subscription-based applications, and the like. In one configuration, suspension and collection of requests may occur for requests originating from non-critical applications. Requests sent from critical applications are not held (or collected), but instead can proceed directly to the socket layer of the operating system. Retention and collection can also be implemented using a combination of the above factors or other factors.

또한, 다양한 인자들이 언제 수집된 요청들을 릴리즈하고 애플리케이션 접속성을 허용할지를 결정하기 위해 사용될 수 있다. 예를 들어, 데이터 접속 셋업 프로시져를 설정하기 위한 트리거(예를 들어, 지연될 수 없는 비상 애플리케이션과 같은 중요 애플리케이션으로부터의 시스템 호출을 수신하는 것)가 존재하는 경우, 보류 요청들이 소켓층(240)에 릴리즈될 수 있고, 따라서, 통신 채널들은 비상 애플리케이션과 함께 설정되고, 배경 및 접속 상태들 사이의 트랜지션들의 수를 감소시킬 수 있다. 또다른 예는, 더욱 바람직한 라디오가 디폴트로서 활성화되거나 선택되는 경우(예를 들어, 와이드 로컬 영역 네트워크(WLAN) 라디오), 수집된 요청들이 릴리즈될 수 있다. 요청들은 또한 라디오 채널이 매우 양호한 경우(예를 들어, 높은 신호 강도, SNR 또는 다른 바람직한 성능 메트릭들) 릴리즈될 수 있다. 요청들은 또한 모바일 디바이스(105-d)에 의해 선택적으로 결정된 것으로서 또는 미리 결정된 것으로서 주기적으로 릴리즈될 수 있다. 요청들을 릴리즈하기 위한 또다른 발견기법(heuristic)은 사용자가 익명으로 동작시키기 위해 언제 디바이스에 접근하는지(자신이 스크린을 턴온시키기 전)일 수 있다. 이 예에서, 가속계는 사용자가 전화를 잡는 것을 감지할 수 있거나, 또는 사용자 근접도 센서가 사용자가 접근중임을 표시할 수 있다. 또다른 양상에서, 배터리들 상에서 실행하는 동안, 요청들은 스크린이 잠금해제 되자마자(예를 들어, PIN이 정확하게 입력된 이후) 릴리즈될 수 있다. 이 양상에서, 랜덤 버튼이 눌러지는 경우(디바이스(105-d)가 지갑 또는 포켓 내에 있음) 요청들의 릴리즈가 발생하지 않을 수 있다.In addition, various factors can be used to determine when to release collected requests and allow application connectivity. For example, if there is a trigger for establishing a data connection setup procedure (eg, receiving a system call from a critical application, such as an emergency application that cannot be delayed), the pending requests are placed on the socket layer 240. Can be released, and thus communication channels can be established with the emergency application and reduce the number of transitions between the background and connection states. Another example is that collected requests may be released if the more preferred radio is activated or selected as the default (eg, a Wide Local Area Network (WLAN) radio). Requests may also be released if the radio channel is very good (eg, high signal strength, SNR or other desirable performance metrics). The requests may also be released periodically as optionally determined by the mobile device 105-d or as predetermined. Another heuristic for releasing requests may be when the user accesses the device (before he turns on the screen) to operate anonymously. In this example, the accelerometer may detect that the user makes a call, or the user proximity sensor may indicate that the user is approaching. In another aspect, while executing on the batteries, requests can be released as soon as the screen is unlocked (eg, after the PIN is entered correctly). In this aspect, release of requests may not occur if the random button is pressed (the device 105-d is in a wallet or pocket).

일 예에서, 보류 요청이 릴리즈되도록 하는 트리거링 이벤트는 타이머의 만료일 수 있다. 이벤트는 또한 디스플레이의 상태 변경일 수 있다. 예를 들어, 디스플레이는 "오프" 상태로부터 "온" 상태로 변경할 수 있다. 마이크로폰의 상태 변경(오프에서 온으로)은 또한 트리거 이벤트일 수 있다. 또한, GPS 센서의 상태 변경은 트리거링 이벤트일 수 있다. 예를 들어, 센서는 그것이 모바일 디바이스의 움직임을 검출하는 경우 상태들을 변경할 수 있다. 요청을 릴리즈하기 위한 추가적인 트리거링 이벤트는 유니버셜 직렬 버스 포트가 사용중이라는 표시 또는 오디오 장비가 디바이스에 접속된다는 표시를 포함할 수 있다. 추가로, 비디오 장비가 모바일 디바이스에 접속된다는 표시는 또한 모바일 디바이스의 운영 체제에 보류 요청을 릴리즈하기 위한 트리거링 이벤트로서의 역할을 할 수 있다. 또한, 특정 네트워크에 대한 접속이 이용가능하다는 표시는 요청의 릴리즈를 트리거링할 수 있다. 예를 들어, Wi-Fi 타입의 네트워크에 대한 접속 표시는 요청이 릴리즈되도록 할 수 있다. 유사하게, 셀룰러 타입의 네트워크에 대한 라디오 접속이 이미 개방되었다는 표시는 또한 디바이스의 운영 체제에 대한 요청의 릴리즈를 트리거링할 수 있다. 또다른 양상에서, 요청들은 위의 또는 다른 인자들의 일부 조합에 따라 릴리즈될 수 있다. 이전 설명이 API 아키텍쳐에 대한 것이지만, 개념들은 하드웨어, 펌웨어, 또는 하드웨어 및 소프트웨어의 임의의 조합에서 균일하게 적용될 수 있다.In one example, the triggering event that causes the hold request to be released can be the expiration of the timer. The event may also be a state change of the display. For example, the display can change from an "off" state to an "on" state. The state change (from off to on) of the microphone may also be a trigger event. In addition, the state change of the GPS sensor may be a triggering event. For example, the sensor can change states when it detects movement of the mobile device. Additional triggering events for releasing the request may include an indication that the universal serial bus port is busy or an indication that audio equipment is connected to the device. In addition, the indication that the video equipment is connected to the mobile device may also serve as a triggering event to release the hold request to the mobile device's operating system. In addition, an indication that a connection to a particular network is available may trigger the release of the request. For example, a connection indication for a Wi-Fi type network can cause the request to be released. Similarly, an indication that a radio connection to a cellular type network has already been opened may also trigger the release of a request for the operating system of the device. In another aspect, the requests may be released according to some combination of the above or other factors. Although the previous description is for an API architecture, the concepts may be applied uniformly 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 expiration of the timer may indicate the tolerance level of the associated application. For example, a timer that does not receive a tolerance at all can be referred to as a "hard-timer." The hard-timer may be a timer that is intended to expire at a relatively fixed point in time. Conversely, a timer that receives a tolerance value can result in a "soft-timer". The soft-timer may expire at the intended expiration time, but may also allow expiration within a specified tolerance. As one example, certain applications, such as an email update service, may not require connection requests to occur at finite fixed times. Thus, a timer for such an application can be given a wide tolerance, and a soft timer can be created and associated with these applications. Conversely, a stock program used by stock traders may require constant updates at fixed times to ensure the accuracy of stock quotes. Such an application may or may not receive a small tolerance and therefore will be associated with a hard timer.

일 예에서, 타이머, 예를 들어, 소프트-타이머 또는 하드-타이머 중 하나가 만료할 수 있다. 만료 시간이 식별되면, 예를 들어, 도 2 또는 3의 접속성 엔진은 만료 시간이 다양한 애플리케이션들의 임의의 소프트-타이머의 허용오차 내에 드는지의 여부를 결정할 수 있다. 허용오차가 만료 시간 내에 드는 모든 해당 소프트-타이머들에 대해, 접속성 엔진은 조기에 만료하도록 해당 타이머들을 강제하기 위한 명령들을 실행할 수 있다. 타이머들이 만료한 애플리케이션들로부터의 인터셉트된 네트워크 액세스 요청들은 모바일 디바이스의 운영 체제에 릴리즈될 수 있다. 일부 구성들에서, 네트워크 접속은 타이머들이 만료한 애플리케이션 각각이 이들의 필요한 통신 동작들을 완료할 때까지 개방된 채 유지할 수 있다. 타이머들이 만료할 때 통신 요청들이 이루어짐에 따라, 더 효율적인 자원 관리는 통신 시스템의 애플리케이션의 공유된 사용의 결과로서 초래할 것이다.In one example, a timer, eg, one of a soft-timer or a hard-timer, may expire. Once the expiration time is identified, for example, the connectivity engine of FIG. 2 or 3 may determine whether the expiration time falls within the tolerance of any soft-timer of various applications. For all those soft-timers whose tolerance falls within the expiration time, the connectivity engine may execute instructions to force those timers to expire early. Intercepted network access requests from applications whose timers have expired may be released to the operating system of the mobile device. In some configurations, the network connection may remain open until each of the applications whose timers have expired completes their required communication operations. As communication requests are made when the timers expire, more efficient resource management will result as a result of shared use of applications in the communication system.

위에서 언급된 바와 같이, 요청들이 얼마나 자주 릴리즈되어야 하는지를 표시하는 간격 및 리프레시 레이트가 결정될 수 있다. 간격들은 방화벽 또는 NAT 기능들을 수행하는 미들박스들의 상태를 유지하도록 결정될 수 있다. 미들박스들의 상태는 킵-어라이브 메시지들 또는 더 짧은 접속 요청들의 연속을 발행하는 애플리케이션들에 의해 유지될 수 있다. 일 구성에서, 네트워크는 모바일 디바이스 상의 미들박스들 내의 상태들을 유지하기 위해 최소 리프레시 레이트에 관한 정보를 제공할 수 있다. 리프레시 레이트는 UDP 대 TCP 접속들에 대해 제공될 수 있다. 네트워크는 킵-어라이브/재접속 메시지들의 양으로 인해 발생하는 라디오 로드에 기초하여 미들박스들에서 리프레시 레이트를 적응시킬 수 있다. 예를 들어, 킵-어라이브 메시지들의 수가 특정 임계를 초과하는 경우, 상태는 미들박스들 내의 더 긴 시간 기간동안 유지될 수 있고 모바일 디바이스에 대한 리프레시 레이트가 느려질 수 있다. 간격(또는 리프레시 레이트)는 상태기반 미들박스들 내의 타임아웃 값보다 더 작을 수 있다. 그 결과, 모바일 디바이스는 네트워크에 의해 표시된 리프레시 레이트(또는 간격)에 따라 업링크에 대한 게이트를 개방할 수 있다(즉, 요청들을 릴리즈한다). 게이트는 디바이스가 배경 모드에 있지 않은 경우 개방되고, 모바일 디바이스가 배경 모드에 있는 경우 폐쇄될 수 있다.As mentioned above, an interval and refresh rate may be determined that indicate how often requests should be released. Intervals can be determined to maintain the state of the middleboxes that perform firewall or NAT functions. The state of the middleboxes may be maintained by applications that issue keep-alive messages or a series of shorter connection requests. In one configuration, the network may provide information regarding the minimum refresh rate to maintain states in the middleboxes on the mobile device. The refresh rate may be provided for UDP to TCP connections. The network may adapt the refresh rate in the middleboxes based on the radio load caused by the amount of keep-alive / reconnect messages. For example, if the number of keep-alive messages exceeds a certain threshold, the state may be maintained for a longer period of time in the middleboxes and the refresh rate for the mobile device may be slow. The interval (or refresh rate) may be less than the timeout value in the stateful middleboxes. As a result, the mobile device can open the gate for the uplink (ie, release requests) according to the refresh rate (or interval) indicated by the network. The gate may open when the device is not in background mode and may be closed when the mobile device is in background mode.

도 7은 네트워크 액세스를 위해 요청들을 보류하기 위한 방법(700)의 일 예를 예시하는 흐름도이다. 명료함을 위해, 방법(700)은 도 1, 2, 3 또는 4에 도시된 모바일 디바이스(105)를 참조하여 하기에 설명된다. 일 구현예에서, 프로세서(360)는 하기에 설명되는 기능들을 수행하도록 디바이스(105)의 기능 엘리먼트들을 제어하기 위한 코드들의 하나 이상의 세트들을 실행할 수 있다. 일 구성에서, 하기에 설명되는 방법(700)은 디바이스(105)가 배경 모드에 있는 경우 실행될 수 있다.7 is a flow diagram illustrating an example of a method 700 for withholding requests for network access. For clarity, the method 700 is described below with reference to the mobile device 105 shown in FIGS. 1, 2, 3, or 4. In one implementation, processor 360 may execute one or more sets of codes for controlling the functional elements of device 105 to perform the functions described below. In one configuration, the method 700 described below may be executed when the device 105 is in a background mode.

블록(705)에서, 모바일 디바이스(105) 상의 애플리케이션으로부터의 요청이 인터셉트될 수 있다. 요청은 모바일 디바이스에 대한 통신을 수행하기 위한, 예를 들어, 모바일 디바이스(105)에 대한 통신 채널을 설정하기 위한 요청일 수 있다. 요청은 모바일 디바이스(105)의 애플리케이션층(220)에서 실행하는 애플리케이션으로부터 송신될 수 있다. 일 예에서, 요청은 애플리케이션으로 하여금 네트워크(115)와 같은 외부 네트워크에 간섭하게 하도록 데이터 접속 셋업 프로시져를 개시하기 위한 요청일 수 있다. 예를 들어, 요청은 모바일 디바이스(105) 상의 운영 체제(235)의 소켓층(240)에 대한 시스템 호출일 수 있다.At block 705, a request from an application on mobile device 105 may be intercepted. The request may be a request to perform communication for the mobile device, eg, to establish a communication channel for the mobile device 105. The request can be sent from an application running in 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 cause an application to interfere with an external network, such as network 115. For example, the request may be a system call to the socket layer 240 of the operating system 235 on the mobile device 105.

블록(710)에서, 요청은 모바일 디바이스 상에서 실행하는 운영 체제(235)에 도달하는 것으로부터 보류될 수 있다. 예를 들어, 요청은 운영 체제(235)의 소켓층(240)에 도달하는 것으로부터 보류될 수 있다. 일 구성에서, 랩퍼(230)는 요청을 인터셉트하고 보류시킬 수 있다.At block 710, the request may be suspended from reaching an operating system 235 running on the mobile device. For example, the request may be suspended from reaching the socket layer 240 of the operating system 235. In one configuration, wrapper 230 may intercept and hold the request.

블록(715)에서, 요청은 트리거링 이벤트를 검출할 시에 운영 체제에 릴리즈될 수 있다. 예를 들어, 디바이스(105)는 전술된 바와 같이 활성 모드에 진입할 수 있다.At block 715, the request can be released to the operating system upon detecting a triggering event. For example, device 105 may enter an active mode as described above.

따라서, 방법(700)은 애플리케이션층 구현예에서 실행하는 애플리케이션들에 의해 제출되는 네트워크 액세스에 대한 요청들의 인터셉트 및 보류를 제공할 수 있다. 방법이 단지 일 구현예이며, 방법(700)의 동작들은 재배열되거나 그렇지 않은 경우 다른 구현예들이 가능하도록 수정될 수 있다는 점에 유의해야 한다.Thus, the method 700 may provide for intercepting and holding of requests for network access submitted by applications executing in an application layer implementation. It should be noted that the method is just one implementation and that the operations of the method 700 may be rearranged or otherwise modified such that other implementations are possible.

도 8은 모바일 디바이스 상에서 실행하는 비-중요 애플리케이션들로부터의 네트워크 액세스에 대한 요청들을 인터셉트하기 위한 방법(800)의 일 예를 예시하는 흐름도이다. 명료함을 위해, 방법(800)은 도 1, 2, 3 또는 4에 도시된 디바이스(105)를 참조하여 하기에 설명된다. 일 구현예에서, 프로세서(360)는 하기에 설명되는 기능들을 수행하도록 디바이스(105)의 기능 엘리먼트들을 제어하기 위한 코드들의 하나 이상의 세트들을 실행할 수 있다.8 is a flow diagram illustrating an example of a method 800 for intercepting requests for network access from non-critical applications running on a mobile device. For clarity, the method 800 is described below with reference to the device 105 shown in FIGS. 1, 2, 3, or 4. In one implementation, processor 360 may execute one or more sets of codes for controlling the functional elements of 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 can be sent from an application running in the application layer 220 of the mobile device 105. In one example, the request may be a request to establish a communication channel with an external network, such as network 115. The request may be a system call to the socket layer 240 of the operating system 235 of the device 105. Upon receiving the request, socket layer 240 may initiate procedures for establishing a communication channel and providing a callback function to the application if the channel is established.

블록(810)에서, 디바이스(105)가 배경 모드에 있는지의 여부에 대한 결정이 이루어질 수 있다. 예를 들어, 디바이스(105)가 파워다운되었는지, 슬립 모드에 있는지 등의 여부에 대한 결정이 이루어질 수 있다. 디바이스(105)는 또한, 예를 들어, 디바이스(105)의 디스플레이가 비활성이고, 오디오 출력들이 비활성인 등의 경우 배경 모드에 있도록 결정될 수 있다. 디바이스(105-a)가 비활성이라고 결정되는 경우, 시스템 호출을 개시한 애플리케이션이 비-중요 애플리케이션인지의 여부를 결정하기 위해 블록(815)에서 제2 결정이 이루어질 수 있다. 중요 애플리케이션은 네트워크 액세스를 가지는 비상 애플리케이션, 가입-기반 애플리케이션, 지연에 대해 낮은 허용오차를 가지는 애플리케이션 등일 수 있다.At block 810, a determination may be made whether the device 105 is in a background mode. For example, a determination may be made whether the device 105 is powered down, in sleep mode, or the like. The device 105 may also be determined to be in the background mode, for example when the display of the device 105 is inactive, audio outputs are inactive, and so on. If it is determined that the 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 may be emergency applications with network access, subscription-based applications, applications with low tolerance to delay, and the like.

디바이스(105)가 활성이거나 또는 애플리케이션이 중요 애플리케이션이라고 결정되는 경우, 요청은 운영 체제(235)의 소켓층(240)에 대해 릴리즈될 수 있다. 다시 말해, 요청은 소켓층으로 하여금 네트워크(115)와의 통신 채널을 설정하기 위한 프로시져들을 개시하게 하기 위해 릴리즈될 수 있다. 디바이스가 배경 모드에 있고 애플리케이션이 비-중요 애플리케이션으로서 분류된다고 결정되는 경우, 블록(820)에서, 요청은 운영 체제에 도달하는 것으로부터 보류되고, 따라서, 통신 채널을 셋업하기 위한 프로시져들의 개시를 지연시킬 수 있다.If the device 105 is active or it is determined that 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 cause the socket layer to initiate procedures for establishing a communication channel with the network 115. If the device is in background mode and it is determined that the application is classified as a non-critical application, then at block 820, the request is suspended from reaching the operating system, thus delaying initiation of procedures for setting up a communication channel. You can.

블록(825)에서, 요청은 다른 인터셉트된 요청들과 함께 수집될 수 있다. 다른 요청들은 모바일 디바이스(105) 상에서 실행하는 추가적인 애플리케이션들에 의해 개시될 수 있다. 블록(830)에서, 전술된 바와 같이, 트리거링 이벤트가 검출되는지의 여부에 대한 결정이 이루어질 수 있다. 트리거링 이벤트가 검출되지 않는다고 결정되는 경우, 방법(800)은 네트워크 액세스를 위해 인터셉트된 요청들을 계속 수집하도록 리턴할 수 있다. 그러나, 트리거링 이벤트가 검출되었다고 결정되는 경우, 블록(835)에서, 수집된 요청들은 운영 체제(240)의 소켓층(240)에 대해 릴리즈될 수 있다. 다시 말해, 다수의 애플리케이션들로부터의 시스템 호출들은 함께 보류되고 번들링되고, 이후 소켓층(240)에 단일 시스템 호출로서 릴리즈될 수 있다.At block 825, the request can be collected 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 as to whether a triggering event is detected, as described above. If it is determined that the triggering event is not detected, the method 800 may return to continue collecting intercepted requests for network access. However, if it is determined that a triggering event has been detected, at block 835, the collected requests may be released to the socket layer 240 of the operating system 240. In other words, system calls from multiple applications may be held and bundled together and then released as a single system call to socket layer 240.

따라서, 방법(800)은 모바일 디바이스(105) 상에서 실행하는 비-중요 애플리케이션들로부터 네트워크 액세스를 위한 요청들을 인터셉트하고, 보류하고, 수집하는 것을 제공할 수 있다. 요청들을 보류하고 수집함으로써, 다수의 시스템 호출들은 함께 번들링되고 단일 시스템 호출로서 릴리즈될 수 있다. 이는 모바일 디바이스(105)에 대한 배터리 전력 절감 뿐만 아니라 네트워크 시그널링의 감소를 초래할 수 있는데, 왜냐하면 통신 채널들을 셋업하기 위한 프로시져들을 개시하기 위한 시스템 호출들의 양이 감소할 수 있기 때문이다. 방법(800)이 단지 하나의 구현예이며, 방법(800)의 동작들이 재배열되거나 또는 그렇지 않은 경우 다른 구현예들이 가능하도록 수정될 수 있다는 점에 유의해야 한다.Thus, the method 800 can provide for intercepting, withholding, and collecting requests for network access from non-critical applications running on the mobile device 105. By holding back and collecting requests, multiple system calls can be bundled together and released as a single system call. This may result in a reduction in network signaling as well as battery power savings for the mobile device 105 because the amount of system calls to initiate procedures for setting up communication channels may be reduced. It should be noted that the method 800 is just one implementation and that the operations of the method 800 may be rearranged or otherwise modified such that other implementations are possible.

도 9는 모바일 디바이스 상에서 실행하는 다수의 애플리케이션들로부터 네트워크 액세스를 위한 요청들을 인터셉트하기 위한 방법의 일 구성을 예시하는 흐름도이다. 명료함을 위해, 방법(900)은 도 1, 2, 3 또는 4에 도시된 디바이스(105)를 참조하여 하기에 설명된다. 일 구현예에서, 프로세서(360)는 하기에 설명되는 기능들을 수행하도록 디바이스(105)의 기능 엘리먼트들을 제어하기 위해 코드들의 하나 이상의 세트들을 실행할 수 있다.9 is a flow diagram illustrating one configuration of a method for intercepting requests for network access from multiple applications running on a mobile device. For clarity, the method 900 is described below with reference to the device 105 shown in FIGS. 1, 2, 3, or 4. In one implementation, processor 360 may execute one or more sets of codes to control the functional elements of 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, the first request for network access is intercepted from the first application at a first time. In one example, at block 910, the second request may be intercepted from the second application at a second time. The second time may be different from the first time. At block 915, the third request may be intercepted from the third application at the third time. In one configuration, the third time may be different from the first time and the second time. Intercepted requests may be system calls for establishing communication channels for network access. The applications may run on the mobile device 105.

요청이 인터셉트되는 경우, 모바일 디바이스(105)가 배경 모드에 있는지의 여부에 대해 블록(920)에서 결정이 이루어질 수 있다. 디바이스(105)가 배경 모드에 있다고 결정되는 경우, 블록들(925, 930 및 935)에서, 요청들은 운영 체제에 도달하는 것으로부터 보류될 수 있다. 디바이스(105)가 활성 모드에 있는 경우, 요청들은 블록(950)에서 모바일 디바이스(105) 상의 운영 체제(235)의 소켓층(240)에 대해 릴리즈될 수 있다.If the request is intercepted, a determination may be made at block 920 as to whether the mobile device 105 is in a background mode. If it is determined that device 105 is in the background mode, at blocks 925, 930, and 935, requests may be suspended from reaching the operating system. If the device 105 is in an active mode, requests can be released to the socket layer 240 of the operating system 235 on the mobile device 105 at block 950.

일 구성에서, 블록(940)에서, 제1, 제2 및 제3 요청들이 수집되거나 또는 함께 번들링될 수 있다. 블록(945)에서, 트리거링 이벤트가 발생했는지의 여부에 대한 결정이 이루어질 수 있다. 예를 들어, 디바이스가 활성 모드에 진입했는지, 디바이스 상의 디스플레이가 활성화되었는지, 디바이스가 위치를 변경했는지, 사용자가 디바이스 근처에 있는지 등의 여부에 대한 결정이 이루어질 수 있다. 트리거링 이벤트가 검출되지 않는 경우, 방법(900)은 트리거링 이벤트의 검출을 위한 모니터링을 계속하도록 리턴할 수 있다. 트리거링 이벤트가 검출되는 경우, 블록(950)에서, 수집된 요청들은 운영 체제의 소켓층에 대해 릴리즈될 수 있다. 요청들의 수신 시에, 소켓층은 네트워크(115)와 같은 외부 네트워크와의 통신 채널을 설정하기 위한 프로시져들을 개시할 수 있다.In one configuration, at block 940, the first, second and third requests may be collected or bundled together. At block 945, a determination may be made whether a triggering event has occurred. For example, a determination can be made 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 collected requests may be released to the socket layer of the operating system. Upon receipt of the requests, the socket layer may initiate procedures for establishing a communication channel with an external network, such as network 115.

따라서, 방법(900)은 모바일 디바이스(105) 상에서 실행하는 다수의 애플리케이션들로부터 네트워크 액세스에 대한 요청들을 인터셉트, 보류 및 수집하는 것을 제공할 수 있다. 그 결과, 다수의 시스템 호출들은 함께 번들링되고 단일 시스템 호출로서 릴리즈될 수 있다. 이는 모바일 디바이스(105)에 대한 감소한 배터리 소모 뿐만 아니라 네트워크 시그널링의 감소를 초래할 수 있는데, 왜냐하면 시스템 호출들의 양이 감소할 수 있기 때문이다. 방법(900)이 단지 일 구현예이며, 방법(900)의 동작들이 재배열되거나 그렇지 않은 경우 다른 구현예들이 가능하도록 수정될 수 있다는 점에 유의해야 한다.Thus, the method 900 may provide for intercepting, holding, and collecting requests for network access from multiple applications running on the mobile device 105. As a result, multiple system calls can be bundled together and released as a single system call. This may result in reduced battery signaling as well as reduced battery signaling for the mobile device 105 because the amount of system calls may be reduced. It should be noted that the method 900 is just one implementation and that the operations of the method 900 may be rearranged or otherwise modified such that other implementations are possible.

도 10은 네트워크 액세스 요청들과 같은 애플리케이션 접속 요청들 사이의 동기화를 개선하기 위한 특정 실시예들에서 구현되는 하나의 가능한 프로세스(1000)를 도시한다. 하기 예에서 논의되는 바와 같은 특정 실시예들은 모바일 디바이스 상에서 프로세스(1000)를 구현할 수 있다. 명료함을 위해, 방법(1000)은 도 1, 2, 3 또는 4에 도시된 디바이스(105)를 참조하여 하기에 설명된다. 일 구현예에서, 도 2 또는 3의 프로세서(360) 또는 접속성 엔진(225)은 하기에 설명된 기능들을 수행하도록 디바이스(105)의 기능 엘리먼트들을 제어하기 위한 코드들의 하나 이상의 세트들을 실행할 수 있다.10 shows one possible process 1000 implemented in certain embodiments to improve synchronization between application connection requests, such as network access requests. Certain embodiments as discussed in the example below may implement process 1000 on a mobile device. For clarity, the method 1000 is described below with reference to the device 105 shown in FIGS. 1, 2, 3, or 4. In one implementation, processor 360 or connectivity engine 225 of FIG. 2 or 3 may execute one or more sets of codes to control functional elements of device 105 to perform the functions described below. .

방법은 블록(1005)에서, 제1 타이머, 예를 들어, 소프트-타이머 또는 하드-타이머 중 하나가 만료할 수 있음을 식별함으로써 시작한다. 이는 다양한 애플리케이션들의 타이머들을 폴링하는 중앙 시스템에 의해 달성될 수 있다. 대안적으로, 각각의 애플리케이션은 개별적으로 자신만의 타이머를 모니터링하고, 타이머 만료시에 통지를 제공할 수 있다.The method begins by identifying at block 1005 that a first timer, eg, one of a soft-timer or a hard-timer, may expire. This can be accomplished by a central system that polls timers of various applications. Alternatively, each application can individually monitor its own timer and provide a notification upon timer expiration.

만료 시간이 식별되면, 블록(1010)에서, 또한 만료할 수 있는 추가적인 타이머들이 식별되는지의 여부에 대한 결정이 이루어질 수 있다. 예를 들어, 제1 타이머의 만료 시간이 임의의 소프트-타이머의 허용오차 내에 드는 지의 여부에 대한 결정이 이루어질 수 있다. 허용오차가 만료 시간 내에 드는 모든 소프트-타이머들에 대해, 블록(1015)에서, 추가적인 타이머들이 조기에 만료하도록 강제될 수 있다. 블록(1020)에서, 데이터는 만료된 타이머들과 연관된 애플리케이션들에 대해 동기화될 수 있다. 예를 들어, 채널 액세스는 접속을 형성함으로써 타이머들이 만료된 애플리케이션들에 제공될 수 있다. 일부 실시예들에서, 타이머들이 만료한 애플리케이션들 각각이 자신의 필수적인 통신 동작들을 완료할 때까지 접속은 개방된 채 유지될 수 있다. 타이머가 만료할 때 통신 요청들이 이루어짐에 따라, 통신 시스템의 애플리케이션의 공유된 사용의 결과로서 더욱 효율적인 자원 관리가 초래될 것이다. 방법(1000)은 블록(1005)에서 타이머들이 만료하도록 다시 대기함으로써 무한적으로 수행될 수 있거나, 또는 방법이 종료할 수 있다.Once the expiration time is identified, a determination may be made at block 1010 as to whether additional timers that may also expire may be identified. For example, a determination can be made whether the expiration time of the first timer falls within the tolerance of any soft-timer. For all soft-timers whose tolerance falls within the expiration time, at block 1015, additional timers may be forced to expire early. At block 1020, data may be synchronized for applications associated with expired timers. For example, channel access may be provided to applications whose timers have expired by establishing a connection. In some embodiments, the connection may remain open until each of the applications whose timers have expired completes their required communication operations. As communication requests are made when the timer expires, more efficient resource management will result as a result of shared usage of applications in the communication system. The method 1000 may be performed indefinitely by waiting again for the timers to expire at block 1005, or the method may end.

의도된 시간에서 블록(1005)에서 초기에 만료한 타이머 또는 타이머들은, 특정 실시예들에서, "마스터 타이머들" 또는 교환가능하게 "트리거 이벤트들"로서 참조될 수 있다. 즉, 이들 타이머들은 다른 타이머들이 개별적인 허용 오차들에 기초하여 언제 만료할 수 있는지를 지시한다. 따라서, 소프트 또는 하드-타이머는 마스터 타이머로서 역할을 할 수 있다. 그러나, (오직 소프트-타이머들만이 허용오차를 가짐에 따라) 오직 소프트-타이머들만이 마스터 타이머에 의해 영향을 받을 수 있다.The timer or timers that initially expired at block 1005 at the intended time may be referred to as “master timers” or interchangeably “trigger events” in certain embodiments. That is, these timers indicate when other timers can expire based on individual tolerances. Thus, a soft or hard-timer can serve as a master timer. However, only soft-timers can be affected by the master timer (as only soft-timers have a tolerance).

도 11은 3개의 애플리케이션들(앱1, 앱2 및 앱3) 각각에 대한 접속 요청들의 하나의 가능한 시리즈를 예시한다. 이들 애플리케이션들은 모바일 디바이스, 예를 들어, 도 1, 2, 3 또는 4의 모바일 디바이스 상에서 실행될 수 있다. 특히, 도 11은 다양한 애플리케이션들로부터의 통신 요청들에 기초하여 접속들을 형성하기 위한 기법들을 나타낸다. 이 예에서, 접속 요청들은 조정되지 않는다. 따라서, 각각의 애플리케이션은 다른 애플리케이션들로부터 조정되지 않은 간격들에서 접속을 요청한다. 이러한 조정 결여는 애플리케이션들이 접속들을 공유하기 위한 기회들을 무시함에 따라 모바일 디바이스의 자원들의 비효율적인 사용을 초래한다. 타이머 만료들은 시간 내의 각각의 시점에서 수직 화살표들로 표현되고, 결과적인 요청 기간들은 사각형들로 표시된다. 각각의 접속 기간은 30초의 폭을 가지는 요청 기간 사각형 내의 윈도우에 의해 표현된다(이것은 다소 임의의 듀레이션으로서 인지될 것이며, 훨씬 더 작거나 더 긴 듀레이션들이 각각의 접속에 대해 발생할 수 있다). 이 폭은 단지 예시의 목적들을 위한 것이며, 임의의 폭들이 실제 디바이스에서 존재할 수 있다. 도 11 뿐만 아니라 후속하는 도면들에서의 수치 범위들은 단지 설명의 목적으로 선택되었다. 도면들은 반드시 임의의 시스템 또는 실시예의 실제 구현예를 나타내는 것으로서 해석되지는 않아야 한다.11 illustrates one possible series of connection requests for each of three applications (App1, App2 and App3). These applications may run on a mobile device, eg, the mobile device of FIGS. 1, 2, 3 or 4. In particular, FIG. 11 illustrates techniques for establishing connections based on communication requests from various applications. In this example, connection requests are not coordinated. Thus, each application requests a connection at uncoordinated intervals from other applications. This lack of coordination leads to inefficient use of resources of the mobile device as applications ignore opportunities for sharing connections. Timer expirations are represented by vertical arrows at each point in time, and the resulting request periods are represented by squares. Each connection period is represented by a window in the request period rectangle that is 30 seconds wide (this will be perceived as somewhat arbitrary duration, and much smaller or longer durations may occur for each connection). This width is for illustrative purposes only, and any widths may exist in the actual device. The numerical ranges in FIG. 11 as well as the subsequent figures have been chosen for illustrative purposes only. The drawings should not necessarily be construed as indicating an actual implementation of any system or embodiment.

도 11에서, 앱1은 5분마다 통신 요청을 개시할 수 있다(시간들 1, 6, 11, 16 등에서의 접속들). 유사하게, 앱2는 5분마다, 접속 요청들을 개시할 수 있지만, 1분만큼 앱1로부터 오프셋된다. 즉, 앱2의 요청들은 앱1의 요청들과 동일한 기간을 공유하지만 동일한 위상을 공유하지는 않는다. 마지막으로, 앱3은 10분마다 접속들을 수행할 수 있고, 마찬가지로 4분만큼 앱1로부터 오프셋된다. 앱1, 앱2 및 앱 3의 비동기식 접속 요청들은, 접속들이 일정하게 높아지고 낮아짐에 따라, 배터리 전력 및 통신 대역폭의 비효율적인 사용을 초래한다. 이 예에서, 통신 시스템과의 (모바일 디바이스의 통신 엘리먼트들의 재활성화를 요구하는) 14개의 별도의 접속들이 시간 6 및 시간 32 사이에 발생한다.In FIG. 11, App1 may initiate a communication request every 5 minutes (connections at times 1, 6, 11, 16, etc.). Similarly, App2 may initiate connection requests every 5 minutes, but is offset from App1 by 1 minute. In other words, App2's requests share the same time period as App1's requests but do not share the same phase. Finally, App3 can make connections every 10 minutes, likewise offset from App1 by 4 minutes. Asynchronous connection requests of App1, App2, and App3 result in inefficient use of battery power and communication bandwidth as connections are constantly rising and falling. In this example, 14 separate connections (requires reactivation of communication elements of the mobile device) with the communication system occur between time 6 and time 32.

본 발명의 실시예들의 일부는 더 효율적인 접속 패턴들이 발생하도록 접속 요청들을 조정할 수 있는 시스템을 제공하는 것을 참작한다. 예를 들어, 모바일 디바이스(105)가 하나의 애플리케이션에 대해 네트워크와의 접속을 이미 가지는 경우, 모바일 디바이스(105)는, 접속을 끊고 또다른 접속을 형성하지 않고, 또다른 애플리케이션에 대해 동일한 접속을 사용할 수 있다. 따라서, 애플리케이션들이 접속들을 공유하도록 애플리케이션 접속 요청들 사이의 타이밍을 조정하는 것은 형성될 필요가 있는 접속들의 수를 감소시킬 수 있다. 이들 실시예들 중 일부는 모바일 디바이스(105) 상에서 동작하는 플랫폼에 대한 애플리케이션들을 실행할 시에 애플리케이션 개발자들이 사용할 수 있는 프로그래밍 모듈을 포함할 수 있다. 이들 실시예들 중 일부에서, 모바일 디바이스(105)는 네트워크에 스케쥴링하기 위한 정보를 전송할 수 있다. 많은 실시예들에서, 모바일 디바이스(105) 상에서 실행하는 애플리케이션들은 "타이머들", 즉, 특정 "만료 시간"이 언제 발생하는지를 결정하도록 구성되는 소프트웨어, 펌웨어, 또는 하드웨어 모듈들을 포함할 수 있다. 타이머들은 도 2 또는 3의 접속성 엔진(225)에 의해 실행될 수 있다. 타이머들은 접속성 엔진(225)의 일부로서 구현될 수 있다. 이들 타이머들은 애플리케이션이 접속을 요구할 수 있는 시간 또는 시간 간격을 표시한다. 네트워크로부터의 주기적 업데이트들을 요구하는(또는 네트워크에 정보를 주기적으로 전송하는) 애플리케이션들은 이들이 언제 접속을 요청해야 하는지를 결정하기 위해 이들 타이머들에 의존할 수 있다. 애플리케이션들은 또한 비주기적으로 데이터를 요구할 수 있고, 타이머에 의해 정의된 특정 시간 내에서 데이터를 요청할 수 있다. 일부 애플리케이션들은 이들이 얼마나 자주 접속을 요구하는가에 있어서 유연할 수 있다. 본 발명의 실시예들 중 일부는 각각의 애플리케이션과 연관된 유연성, 또는 유연성의 결여를 수용하기 위한 타이머들의 상이한 타입들 또는 구성들을 참작한다. 후속하는 설명이 논의의 용이함을 위해 "타이머"를 가지는 것으로서 애플리케이션을 참조하지만, 당업자는 애플리케이션이 그 자체가 하나 이상의 타이머들과 개별적으로 연관될 수 있는 다수의 컴포넌트들을 포함할 수 있다는 점을 인지할 것이다.Some of the embodiments of the present invention contemplate providing a system that can coordinate connection requests such that more efficient connection patterns occur. For example, if the mobile device 105 already has a connection to the network for one application, the mobile device 105 does not disconnect and form another connection, and establishes the same connection to another application. Can be used. Thus, adjusting the timing between application connection requests so that applications share connections can reduce the number of connections that need to be formed. Some of these embodiments may include a programming module that application developers can use in executing applications for a platform running on mobile device 105. In some of these embodiments, mobile device 105 may transmit information for scheduling to the network. In many embodiments, applications running on mobile device 105 may include software, firmware, or hardware modules configured to determine when “timers”, ie, when a particular “expiration time” occurs. The timers may be executed by the connectivity engine 225 of FIG. 2 or 3. The timers may be implemented as part of the connectivity engine 225. These timers indicate the time or time interval that an application can request a connection. Applications that request periodic updates from the network (or periodically send information to the network) may rely on these timers to determine when they should request a connection. Applications can also request data aperiodically and can request data within a specific time defined by a timer. Some applications can be flexible in how often they require a connection. Some of the embodiments of the present invention take into account different types or configurations of timers to accommodate the flexibility, or lack of flexibility, associated with each application. Although the following description refers to an application as having a "timer" for ease of discussion, those skilled in the art will recognize that the application may itself include a number of components that can be individually associated with one or more timers. will be.

도 12는 도 11로부터의 애플리케이션들에 대한 타이밍도를 나타내지만, 여기서, 애플리케이션들은 이제 도 10의 방법과 같은 프로세스와 함께 소프트 또는 하드-타이머들을 사용한다. 위에서 논의된 바와 같이, 애플리케이션들은 모바일 디바이스, 예를 들어, 도 1, 2, 3 또는 4의 모바일 디바이스(105) 상에서 실행할 수 있다. 또한, 도 2 또는 3의 접속성 엔진(225)은 스케쥴링을 조정하기 위한 프로세스(1000)를 구현할 수 있다. 도 12의 예에서, 각각의 애플리케이션들(앱1, 앱2, 및 앱3)은 2분의 허용 오차를 가지는 소프트-타이머를 포함한다. 프로세스(1000)와 같은 프로세스의 부재시에, 타이머 만료들은 이들이 도 11에서 발생했었을 것임에 따라, 점선 화살표들로 표시된다. 실선 화살표들은 프로세스(1000)와 같은 프로세스의 관리 하에서 발생하는 타이머 만료들을 나타낸다. 일부 실시예들에서, 프로세스(1000)는 각각의 시간 간격에서(즉, 1, 2, 3분 등에서) 수행될 수 있다.FIG. 12 shows a timing diagram for the applications from FIG. 11, where the applications now use soft or hard-timers with a process such as the method of FIG. 10. As discussed above, applications may run on a mobile device, eg, mobile device 105 of FIGS. 1, 2, 3, or 4. In addition, the connectivity engine 225 of FIG. 2 or 3 may implement a process 1000 for coordinating scheduling. In the example of FIG. 12, each of the applications (App1, App2, and App3) includes a soft-timer with a tolerance of two minutes. In the absence of a process, such as process 1000, timer expirations are indicated by dashed arrows, as they would have occurred in FIG. 11. Solid arrows indicate timer expirations that occur under management of a process, such as process 1000. In some embodiments, process 1000 may be performed at each time interval (ie, at 1, 2, 3 minutes, etc.).

예를 들어, 시간 7에서, 앱2의 소프트-타이머는 정상적으로 만료했을 것이다. 그러나, 앱1의 타이머가 앱2의 소프트-타이머의 2분 허용오차 내에 있는 시간 6에서 만료함에 따라, 앱2의 소프트 타이머는 시간 6에서 조기에 만료했다. 유사하게, 시간 14에서 앱3의 클록의 만료는 앱1 및 앱2 모두에 대한 클록들의 2분 허용오차들 내에 든다. 시간 19에 의해, 앱1, 앱2 및 앱3에 대한 클록들 각각이 동일하거나 서로의 고조파들인 기간들(각각 5분, 5분 및 10분)을 가지므로, 클록들은 정확하게 동상이 되어(통신 요청들이 다른 애플리케이션들에 대한 영향을 가지지 않는 마스터 클록들을 가지고 시간들 19, 24 및 29에서 후속적으로 발생함), 통신 자원들의 훨씬 더 효율적인 이용을 초래한다. 일반적으로, 타이머들이 동일한 기간들을 공유하는 경우, 또는 이들의 기간들이 서로의 고조파들(즉, 배수들)인 경우, 이들은 다른 "마스터" 타이머들의 만료로부터의 간섭을 억제하여, 영구적으로 서로 동상으로 유지할 수 있다(물론, 애플리케이션들의 타이머들 중 임의의 것의 주기성이 변경되는 경우 동기화 역시 방해될 수 있다). 따라서, 이 예는 프로세스가 적용되지 않는 경우의 도 11의 타이밍 도에 비해 3분 및 33분 사이에 14개가 아닌 6개 접속 요청들이 발생하는 것을 예시한다.For example, at time 7, the soft-timer of App2 would have expired normally. However, as App1's timer expired at time 6, which is within the two minute tolerance of App2's soft-timer, App2's soft timer expired early at time 6. Similarly, the expiration of the clock of App3 at time 14 falls within two minute tolerances of the clocks for both App1 and App2. By time 19, the clocks are exactly in phase (communication) because each of the clocks for App1, App2, and App3 have the same or mutually harmonic periods (5 minutes, 5 minutes, and 10 minutes, respectively). Requests occur subsequently at times 19, 24 and 29 with master clocks having no effect on other applications), resulting in a much more efficient use of communication resources. In general, if the timers share the same periods, or if their periods are harmonics (ie, multiples) of each other, they suppress interference from the expiration of other "master" timers, permanently in phase with each other. (Of course, synchronization may also be interrupted if the periodicity of any of the applications' timers is changed). Thus, this example illustrates that six, rather than four, connection requests occur between three and 33 minutes compared to the timing diagram of FIG. 11 when no process is applied.

또다른 예로서, 도 13은, 애플리케이션들(앱1, 앱2 및 앱3)이 동일한 기간들을 소유하지 않는(각각, 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 periods (8 minutes, 5 minutes and 10 minutes, respectively). As in the timing diagram of FIG. 11, the connection requests of FIG. 13 reflect a conventional uncoordinated technique used in most applications. This lack of coordination results in an inefficient use of the resources of the mobile device, resulting in reactivation of the communication resources of the 12 mobile devices between 7 and 34 minutes.

도 13의 애플리케이션들은 도 13의 앱1이 시간 민감적(time sensitive)이라는 점에서 도 11과는 상이하다. 본 발명의 실시예들의 일부의 이점들을 사용하기를 희망하는 개발자 또는 시스템 설계자는 도 13의 앱1에 대해 적은 허용오차를 가지거나 허용오차를 가지지 않는 타이머를 생성할 가능성이 있다. 따라서, 하드-타이머가 앱1에 대해 사용될 수 있다. 반면 도 13의 앱2 및 앱3은 시간 민감적이 아니며 따라서 소프트-타이머들에 의해 수용될 수 있다. 도 13에서, 앱2 및 앱3에는 각각 2분의 허용오차를 가지는 소프트-타이머들이 주어진다.The applications of FIG. 13 differ from FIG. 11 in that App 1 of FIG. 13 is time sensitive. Developers or system designers wishing to use some of the advantages of embodiments of the present invention are likely to create a timer with little or no tolerance for App1 in FIG. 13. Thus, a hard-timer can be used for App1. On the other hand, App2 and App3 in FIG. 13 are not time sensitive and can therefore be accommodated by soft-timers. In Fig. 13, App2 and App3 are each given soft-timers with a tolerance of two minutes.

도 14는 프로세스(1000)와 같은 프로세스를, 그러나 이번에는 도 13의 애플리케이션들에 대해 적용하는 것의 효과들을 도시한다. 도 14의 앱1의 타이머는, 그것이 하드-타이머임에 따라, 도 13의 타이밍도에서 도 13의 앱1과 동일하게 유지한다. 그러나, 도 14의 앱3은, 앱 2의 만료가 앱3의 의도된 만료 시간의 2분 내에 있으므로, 시간 12에서 앱2의 타이머의 만료에 기초하여 만료한다. 후속적으로, 앱2는 시간 25에서 앱1과 동기화되며, 앱3은 시간 30에서 앱2와 동기화한다. 위에서 논의된 바와 같이, 애플리케이션들은 도 1, 2, 3 또는 4의 모바일 디바이스(105) 상에서 실행할 수 있다. 또한, 모바일 디바이스(105)는 스케쥴링을 조정하기 위한 프로세스(1000)를 구현할 수 있다. 이 예는 하나의 클록의 이전 동기화(앱 1에 기초한 시간 25 에서의 앱 2)가 또다른 클록의 후속적인 동기화(앱2에 기초한 시간 30에서의 앱3)에 어떻게 영향을 줄 수 있는지를 예시한다. 애플리케이션 클록들의 기간들이 동일하거나 고조파들이 아님에 따라, 클록들은 영구적으로 정확하게 동기화되지 않을 수 있다. 여전히, 이 예는, 프로세스(1000)와 같은 프로세스가 적용되지 않는 경우 도 13의 타이밍도에 비해, 12개가 아닌 8개의 접속 요청들이 6분 및 33분 사이에 발생함을 예시한다.FIG. 14 shows the effects of applying a process such as process 1000, but this time to the applications of FIG. 13. The timer of App1 of FIG. 14 remains the same as App1 of FIG. 13 in the timing diagram of FIG. 13 as it is a hard-timer. However, App3 of FIG. 14 expires based on the expiration of the App2's timer at time 12 since App2's expiration is within 2 minutes of App3's intended expiration time. Subsequently, App2 synchronizes with App1 at time 25 and App3 synchronizes with App2 at time 30. As discussed above, the applications may run on the mobile device 105 of FIG. 1, 2, 3, or 4. In addition, the mobile device 105 can implement a process 1000 for coordinating scheduling. This example illustrates how a previous synchronization of one clock (app 2 at time 25 based on app 1) can affect subsequent synchronization of another clock (app 3 at time 30 based on app 2). do. As the periods of the application clocks are the same or not harmonics, the clocks may not be permanently correctly synchronized. Still, this example illustrates that eight, rather than twelve, connection requests occur between 6 minutes and 33 minutes when no process such as process 1000 is applied.

마스터 클록들은 이들이 연관된 애플리케이션에 기초하여 우선순위화될 수 있다. 즉, 매우 많은 대역폭 또는 배터리 전력을 소모하는 애플리케이션은 더 적은 대역폭 또는 배터리 전력을 소모하는 애플리케이션보다 자원들을 공유하기에 덜 적합할 수 있다. 따라서, 특정 실시예들에서, 모바일 디바이스(105)는, 프로세스(1000)가 적절한 범위 내의 허용오차를 가지는 소프트-타이머들을 조기에 만료시키기 전에 만료한 "마스터" 타이머들의 동작 및/또는 대응하는 우선순위를 고려하도록 조정될 수 있다. 일 예로서, 프로세스는, 허용 오차가 이들의 타이머의 조기 만료를 허용하는 애플리케이션들의 대역폭 요건들에 비해, 블록(1005)에서 타이머들이 만료한(즉, 마스터 타이머들) 각각의 애플리케이션들에 대한 대역폭 요건들을 추가로 고려할 수 있다. 마스터 타이머들을 가지는 애플리케이션들의 누적 대역폭 요건들이 다른 애플리케이션들을 가지는 채널의 공유된 사용에 대해 완화되는 경우, 모바일 디바이스(105)는 적절한 동작을 취할 수 있다. 예를 들어, 이들의 동작들을 수행하도록 허용되는 마스터 타이머들을 가지는 애플리케이션들에서 접속 요청이 이루어질 수 있다. 소프트-타이머들은 이후, 마스터 타이머 애플리케이션들이 더 이상 과도한 대역폭을 소모하지 않을 때 이들 애플리케이션들이 기존의 접속을 사용하도록, 적절한 시간에(그것의 허용오차에 의해 허용되는 경우 가능한 의도된 만료 시간 이후에) 만료하도록 만들어질 수 있다. 대안적으로, 소프트-타이머들의 만료는, 이들의 허용오차의 종단까지 또는 더 적은 대역폭을 사용할 새로운 접속 요청이 이루어질 때까지 지연될 수 있다.Master clocks can be prioritized based on the application with which they are associated. In other words, applications that consume very much bandwidth or battery power may be less suitable for sharing resources than applications that consume less bandwidth or battery power. Thus, in certain embodiments, mobile device 105 may operate with a corresponding master and / or corresponding priority of expired “master” timers before process 1000 may prematurely expire soft-timers with tolerances within an appropriate range. It may be adjusted to consider the ranking. As an example, the process may include a bandwidth for each application for which the timers expired (ie, master timers) at block 1005, compared to the bandwidth requirements of the applications where the tolerance allows for early expiration of their timers. Additional requirements may be considered. If the cumulative bandwidth requirements of applications with master timers are relaxed for shared use of the channel with other applications, the mobile device 105 can take appropriate action. For example, a connection request may be made in applications with master timers that are allowed to perform their operations. Soft-timers are then used to ensure that these applications use existing connections when the master timer applications no longer consume excessive bandwidth (after the intended expiration time possible if allowed by its tolerance). Can be made to expire. Alternatively, the expiration of soft-timers may be delayed until the end of their tolerance or until a new connection request is made to use less bandwidth.

예를 들어, 도 11 및 13을 참조하여 논의된 전술된 실시예의 일부에서, 타이머 만료는 통신 윈도우들의 리딩(leading) 에지에서 발생하는 것으로 도시된다. 특정 실시예들은 대신, 데이터 접속의 "트레일링 에지"에서, 즉, 노드와의 통신이 거의 휴지상태가 될 경우, 분석을 수행하는 것을 참작한다. 비용들이 접속의 개방 및 폐쇄 모두에 관련됨에 따라, 모바일 디바이스(105)는, 현재 접속이 폐쇄될 때 새로운 요청을 개시한다기보다는, 임의의 애플리케이션들이 접속을 개방하려고 하는지의 여부를 알기 위해 접속을 폐쇄하기 전에 프로세스(1000)와 유사한 프로세스를 실행할 수 있고, 대신 기존의 접속을 사용할 수 있다.For example, in some of the foregoing embodiments discussed with reference to FIGS. 11 and 13, timer expiration is shown as occurring at the leading edge of communication windows. Certain embodiments instead consider performing an analysis at the "trailing edge" of the data connection, i.e., when communication with the node is almost idle. As the costs relate to both opening and closing the connection, the mobile device 105 does not initiate a new request when the current connection is closed, but rather establishes a connection to know whether any applications are trying to open the connection. A process similar to process 1000 can be executed before closing, and an existing connection can be used instead.

여기서 개시된 기법들 및 구조들을 사용하여, 모바일 디바이스는 애플리케이션들로부터의 시스템 호출들을 캡쳐하고 이들을 운영 체제에 도달하는 것으로부터 보류하기 위한 응용 프로그램 인터페이스(API)를 제공하는 소프트웨어층(예시적 목적으로, 랩퍼라고 명명됨)을 사용할 수 있다. 캡쳐된 호출들은 수집될 수 있고, 따라서, 디바이스의 빈번한 웨이킹이 감소될 수 있고, 사용자가 모바일 디바이스와 활성으로 연관되는 기간들 동안 다른 통신 자원들이 보존된다.Using the techniques and structures disclosed herein, a mobile device provides a software layer (for illustrative purposes, providing an application program interface (API)) for capturing system calls from applications and withholding them from reaching the operating system. Named wrappers). Captured calls can be collected, so that frequent waking of the device can be reduced, and other communication resources are preserved for periods of time in which the user is actively associated with the mobile device.

당업자는 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있음을 이해할 것이다. 예를 들어, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 입자들, 광학장들 또는 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.Those skilled in the art will appreciate 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 referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, Optical fields or particles, or any combination thereof.

당업자는 여기서 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합들로서 구현될 수 있음을 추가로 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호교환가능성을 명료하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들은 이들의 기능성의 견지에서 일반적으로 전술되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지의 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약들에 의존한다. 당업자는 각각의 특정 애플리케이션에 대해 가변적 방식들로 설명된 기능성을 구현할 수 있지만, 이러한 구현 결정들은 본 발명의 예시적인 실시예들의 범위로부터의 이탈을 야기하는 것으로서 해석되지 않아야 한다.Those skilled in the art will further appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations thereof. 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 on the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the exemplary embodiments of the present invention.

여기서 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들 및 회로들은 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그램가능 게이트 어레이(FPGA) 또는 다른 프로그램가능 논리 디바이스, 이산 게이트 또는 트랜지스터 논리, 이산 하드웨어 컴포넌트들, 또는 여기서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합을 가지고 구현되거나 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 및 마이크로프로세서의 조합, 다수의 마이크로프로세서들, DSP 코어와 공조하는 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.The various illustrative logic blocks, modules, and circuits described in connection with the embodiments disclosed herein may be general purpose processors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other programs. It may be implemented or performed with possible logic devices, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, eg, a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.

여기서 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 직접적으로 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이 둘의 조합에서 구현될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM), 플래시 메모리, 판독 전용 메모리(ROM), 전기적 프로그램가능 ROM(EPROM), 전기적 소거가능 프로그램가능 ROM(EEPROM), 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 당해 기술분야에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 일체화될 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC은 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 사용자 단말 내에 이산 컴포넌트들로서 상주할 수 있다.The steps of a method or algorithm described in connection with the embodiments disclosed herein may be implemented directly in hardware, in a software module executed by a processor, or 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 disks, removable disks, CD-ROMs. Or 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. Alternatively, the storage medium may be integrated into the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user terminal. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.

하나 이상의 예시적인 실시예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수 있다. 소프트웨어에서 구현되는 경우, 기능들은 비-일시적 컴퓨터-판독가능한 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 이들을 통해 전송될 수 있다. 컴퓨터-판독가능한 매체는 한 장소에서 또다른 장소로의 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체 및 컴퓨터 저장 매체 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있다. 제한이 아닌 예시로서, 이러한 컴퓨터-판독가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 전달하거나 저장하기 위해 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 적절하게 컴퓨터-판독가능한 매체로서 명명된다. 예를 들어, 소프트웨어가 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선(DSL), 또는 적외설, 라디오 및 마이크로파와 같은 무선 기술들을 사용하여 전송되는 경우, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. disk 및 disc는, 여기서 사용되는 바와 같이, 컴팩트 disc(CD), 레이저 disc, 광학 disc, 디지털 다목적 disc(DVD), 플로피 disk 및 블루레이 disc를 포함하며, 여기서 disk들은 일반적으로 자기적으로 데이터를 재생하는 반면, disc들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 위 항목들의 조합들이 또한 컴퓨터-판독가능한 매체의 범위 내에 포함되어야 한다.In one or more illustrative 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 or transmitted over as one or more instructions or code on a non-transitory computer-readable medium. Computer-readable media includes both computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. The storage medium may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media may be desired program code in the form of RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or instructions or data structures. And any other medium that can be used to deliver or store the information and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if software is transmitted from a website, server, or other remote source using wireless technologies such as coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or infrared, radio, and microwave, Coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio and microwave are included within the definition of the medium. Disks and discs, as used herein, include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs, where the disks generally magnetically store data. In contrast, discs optically reproduce data using lasers. Combinations of the above should also be included within the scope of computer-readable media.

개시된 예시적인 실시예들의 이전 설명은 당업자가 본 발명을 제작 또는 사용하게 하도록 제공된다. 이들 예시적인 실시예들에 대한 다양한 수정들이 당업자에게 자명할 것이며, 여기서 정의된 포괄적 원리들은 본 발명의 사상 또는 범위로부터의 이탈 없이 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 여기서 도시된 예시적인 실시예들에 제한되도록 의도되는 것이 아니라, 여기서 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위에 따라야 한다.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 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. Thus, the present invention is not intended to be limited to the example embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.

Claims (41)

모바일 디바이스에서의 무선 통신을 위한 방법으로서,
상기 모바일 디바이스 상에서 제1 애플리케이션으로부터의 요청을 인터셉트하는 단계 ― 상기 요청은 상기 모바일 디바이스에 대한 통신을 수행하기 위한 요청임 ― ;
상기 모바일 디바이스 상에서 실행하는 운영 체제의 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 스택에 도달하는 것으로부터 상기 요청을 보류하는 단계; 및
트리거링 이벤트를 검출할 시에 운영 체제에 상기 요청을 릴리즈하는 단계를 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
A method for wireless communication in a mobile device,
Intercepting a request from a first application on the mobile device, the request being a request to perform communication for the mobile device;
Withholding the request from reaching a Transmission Control Protocol / Internet Protocol (TCP / IP) stack of an operating system running on the mobile device; And
Releasing the request to an operating system upon detecting a triggering event.
제1항에 있어서,
상기 보류는 상기 모바일 디바이스가 배경 모드에 있는 기간 동안 발생하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
The hold occurs during a period of time that the mobile device is in a background mode.
제1항에 있어서,
상기 모바일 디바이스에 대한 통신을 수행하기 위해 다른 인터셉트된 요청들과 함께 상기 요청을 수집하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
Collecting the request along with other intercepted requests to perform communication for the mobile device.
제3항에 있어서,
상기 애플리케이션으로부터의 상기 요청을 인터셉트하는 것 및 다른 요청들을 인터셉트하는 것은 상이한 시간들에서 발생하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 3,
Intercepting the request from the application and intercepting other requests occur at different times.
제1항에 있어서,
랩퍼에 대한 명령들을 실행하는 단계를 더 포함하고, 상기 실행되는 랩퍼는 상기 제1 애플리케이션으로부터 상기 요청의 인터셉트를 수행하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
Executing instructions for a wrapper, wherein the executed wrapper performs intercepting of the request from the first application.
제5항에 있어서,
상기 랩퍼는 상기 모바일 디바이스의 운영 체제의 애플리케이션층 및 소켓층 사이에 위치되는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 5,
And the wrapper is located between an application layer and a socket layer of an operating system of the mobile device.
제1항에 있어서,
상기 제1 애플리케이션을 요청들이 보류되는 애플리케이션의 클래스로서 식별하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
Identifying the first application as a class of application for which requests are withheld.
제7항에 있어서,
애플리케이션을 중요 애플리케이션 또는 비-중요 애플리케이션으로서 식별하는 단계; 및
비-중요 애플리케이션들로부터의 요청들만을 보류하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 7, wherein
Identifying the application as a critical application or a non-critical application; And
Suspending only requests from non-critical applications.
제1항에 있어서,
상기 트리거링 이벤트는 타이머의 만료, 디스플레이의 상태 변경, 마이크로폰의 상태 변경, 스피커의 상태 변경, 모바일 디바이스의 글로벌 포지셔닝 시스템(GPS) 센서의 상태 변경, 유니버셜 직렬 버스 포트가 사용중이라는 표시, 오디오 장비가 모바일 디바이스에 접속된다는 표시, 비디오 장비가 모바일 디바이스에 접속된다는 표시, Wi-Fi 타입의 네트워크에 대한 접속이 이용가능하다는 표시, 또는 셀룰러 타입의 네트워크에 대한 라디오 접속이 개방된다는 표시 중 적어도 하나를 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
The triggering event may expire the timer, change the state of the display, change the state of the microphone, change the state of the speaker, change the state of the Global Positioning System (GPS) sensor of the mobile device, indicate that the universal serial bus port is in use, the audio device is mobile At least one of an indication that the device is connected, an indication that the video equipment is connected to the mobile device, an indication that a connection to a Wi-Fi type network is available, or an indication that a radio connection to a cellular type network is opened. , A method for wireless communication in a mobile device.
제1항에 있어서,
상기 제1 애플리케이션의 지연 허용오차를 결정하는 단계; 및
상기 결정된 지연 허용오차에 기초하여 상기 제1 애플리케이션에 콜백 기능을 제공하는 단계를 더 포함하고, 상기 콜백 기능은 상기 통신 자원들에 접속하도록 상기 제1 애플리케이션에 명령하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
Determining a delay tolerance of the first application; And
Providing a callback function to the first application based on the determined delay tolerance, wherein the callback function instructs the first application to access the communication resources. Way.
제1항에 있어서,
상기 제1 애플리케이션과 연관된 제1 타이머의 만료 시간을 결정하는 단계;
제2 애플리케이션과 연관된 제2 타이머의 허용 오차 및 만료 시간을 결정하는 단계;
상기 제1 타이머의 만료 시간, 상기 허용 오차, 및 상기 제2 타이머의 만료 시간에 기초하여 상기 제2 타이머가 만료되도록 하는 단계; 및
상기 모바일 디바이스에 대한 통신을 수행하기 위해 상기 제1 애플리케이션으로부터의 요청 및 상기 제2 애플리케이션으로부터의 인터셉트된 요청을 릴리즈하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
Determining an expiration time of a first timer associated with the first application;
Determining a tolerance and an expiration time of a second timer associated with the second application;
Causing the second timer to expire based on the expiration time of the first timer, the tolerance, and the expiration time of the second timer; And
Releasing a request from the first application and an intercepted request from the second application to perform communication for the mobile device.
제1항에 있어서,
상기 애플리케이션으로부터 기한을 수신하는 단계;
상기 기한 이전까지는 상기 요청을 보류하는 단계; 및
상기 기한 이전에 상기 통신 자원들에 접속하기 위한 요청을 릴리즈하는단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
Receiving a deadline from the application;
Withholding said request until said deadline; And
Releasing a request to access the communication resources prior to the deadline.
제1항에 있어서,
상기 요청은 상기 모바일 디바이스에 대한 통신 채널을 설정하기 위한 시스템 호출을 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
The request includes a system call to establish a communication channel for the mobile device.
제1항에 있어서,
상기 트리거링 이벤트를 검출할 시에 상기 운영 체제의 소켓층에 상기 요청을 릴리즈하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
Releasing the request to the socket layer of the operating system upon detecting the triggering event.
제1항에 있어서,
상기 요청의 릴리즈가 얼마나 자주 발생하는지에 관한 간격에 대한 표시를 수신하는 단계를 더 포함하는, 모바일 디바이스에서의 무선 통신을 위한 방법.
The method of claim 1,
Receiving an indication of an interval as to how often the release of the request occurs.
제15항에 있어서,
상기 간격은 네트워크 내의 상태기반(stateful) 인터넷 프로토콜(IP) 미들박스 내의 타임아웃 값보다 더 작은, 모바일 디바이스에서의 무선 통신을 위한 방법.
16. The method of claim 15,
Wherein the interval is less than a timeout value in a stateful Internet Protocol (IP) middlebox in a network.
무선 통신을 위해 구성된 모바일 디바이스로서,
프로세서;
상기 프로세서와 전자 통신 중인 메모리를 포함하고, 상기 메모리는 운영 체제를 포함하고;
상기 프로세서는 접속성 엔진을 포함하고, 상기 엔진은:
상기 모바일 디바이스 상에 제1 애플리케이션으로부터의 요청을 인터셉트하고 ― 상기 요청은 상기 모바일 디바이스에 대한 통신을 수행하기 위한 요청임 ― ;
상기 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택을 도달하는 것으로부터 상기 요청을 보류하고; 그리고
트리거링 이벤트를 검출할 시에 상기 운영 체제에 상기 요청을 릴리즈하기 위한 명령들을 실행하도록 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
A mobile device configured for wireless communication,
A processor;
A memory in electronic communication with the processor, the memory comprising an operating system;
The processor includes a connectivity engine, the engine comprising:
Intercept a request from a first application on the mobile device, the request being a request to perform communication for the mobile device;
Suspend the request from reaching a TCP / IP stack of an operating system running on the mobile device; And
And execute instructions for releasing the request to the operating system upon detecting a triggering event.
제17항에 있어서,
상기 보류는 상기 모바일 디바이스가 배경 모드에 있는 기간 동안 발생하는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
And the hold occurs during a period when the mobile device is in a background mode.
제17항에 있어서,
상기 모바일 디바이스에 대한 통신을 수행하기 위해 다른 인터셉트된 요청들과 함께 상기 요청을 수집하는 것을 더 포함하는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
And collecting the request along with other intercepted requests to perform communication for the mobile device.
제19항에 있어서,
상기 제1 애플리케이션으로부터 상기 요청을 인터셉트하는 것 및 다른 요청들을 인터셉트하는 것은 상이한 시간들에서 발생하는, 무선 통신을 위해 구성된 모바일 디바이스.
20. The method of claim 19,
And intercepting the request from the first application and intercepting other requests occur at different times.
제17항에 있어서,
상기 메모리는 랩퍼를 더 포함하고, 상지 접속성 엔진은 상기 랩퍼 상에서 명령들을 실행하도록 추가로 구성되고, 상기 명령들이 실행되는 경우 상기 랩퍼는 상기 애플리케이션으로부터 상기 요청을 인터셉트하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
The memory further includes a wrapper, the upper connectivity engine is further configured to execute instructions on the wrapper, and wherein the wrapper is further configured to intercept the request from the application when the instructions are executed. Mobile device configured for.
제21항에 있어서,
상기 랩퍼는 상기 모바일 디바이스의 운영 체제의 애플리케이션층 및 소켓층 사이에 위치되는, 무선 통신을 위해 구성된 모바일 디바이스.
The method of claim 21,
And the wrapper is located between an application layer and a socket layer of an operating system of the mobile device.
제17항에 있어서,
상기 접속성 엔진은:
상기 제1 애플리케이션을 요청들이 보류되는 애플리케이션의 클래스로서 식별하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
The connectivity engine is:
And execute instructions for identifying the first application as a class of application for which requests are withheld.
제23항에 있어서,
상기 접속성 엔진은:
상기 애플리케이션을 중요 애플리케이션 또는 비중요 애플리케이션으로서 식별하고; 그리고
비-중요 애플리케이션들로부터의 요청들만을 보류하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
24. The method of claim 23,
The connectivity engine is:
Identify the application as a critical application or a non-critical application; And
A mobile device configured for wireless communication, further configured to execute instructions for holding only requests from non-critical applications.
제17항에 있어서,
상기 트리거링 이벤트는 타이머의 만료, 디스플레이의 상태 변경, 마이크로폰의 상태 변경, 스피커의 상태 변경, 모바일 디바이스의 글로벌 포지셔닝 시스템(GPS) 센서의 상태 변경, 유니버셜 직렬 버스 포트가 사용중이라는 표시, 오디오 장비가 모바일 디바이스에 접속된다는 표시, 비디오 장비가 모바일 디바이스에 접속된다는 표시, Wi-Fi 타입의 네트워크에 대한 접속이 이용가능하다는 표시, 또는 셀룰러 타입의 네트워크에 대한 라디오 접속이 개방된다는 표시 중 적어도 하나를 포함하는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
The triggering event may expire the timer, change the state of the display, change the state of the microphone, change the state of the speaker, change the state of the Global Positioning System (GPS) sensor of the mobile device, indicate that the universal serial bus port is in use, the audio device is mobile At least one of an indication that the device is connected, an indication that the video equipment is connected to the mobile device, an indication that a connection to a Wi-Fi type network is available, or an indication that a radio connection to a cellular type network is opened. , A mobile device configured for wireless communication.
제17항에 있어서,
상기 접속성 엔진은:
상기 제1 애플리케이션의 지연 허용오차를 결정하고; 그리고
상기 결정된 지연 허용오차에 기초하여 상기 제1 애플리케이션에 콜백 기능을 제공하기 위한 명령들을 실행하도록 추가로 구성되고, 상기 콜백 기능은 상기 통신 자원들에 접속하도록 상기 제1 애플리케이션에 명령하는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
The connectivity engine is:
Determine a delay tolerance of the first application; And
Further execute instructions for providing a callback function to the first application based on the determined delay tolerance, wherein the callback function instructs the first application to access the communication resources. Mobile device configured for.
제17항에 있어서,
상기 접속성 엔진은:
상기 제1 애플리케이션과 연관된 제1 타이머의 만료 시간을 결정하고;
제2 애플리케이션과 연관된 제2 타이머의 허용 오차 및 만료 시간을 결정하고;
상기 제1 타이머의 만료 시간, 상기 허용 오차, 및 상기 제2 타이머의 만료 시간에 기초하여 상기 제2 타이머가 만료되도록 하고; 및
상기 모바일 디바이스에 대한 통신을 수행하기 위해 상기 제1 애플리케이션으로부터의 요청 및 상기 제2 애플리케이션으로부터의 인터셉트된 요청을 릴리즈하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
The connectivity engine is:
Determine an expiration time of a first timer associated with the first application;
Determine a tolerance and an expiration time of a second timer associated with a second application;
Cause the second timer to expire based on the expiration time of the first timer, the tolerance, and the expiration time of the second timer; And
And execute instructions for releasing a request from the first application and an intercepted request from the second application to perform communication for the mobile device.
제17항에 있어서,
상기 접속성 엔진은:
상기 애플리케이션으로부터 기한을 수신하고;
상기 기한 이전까지는 상기 요청을 보류하고; 그리고
상기 기한 이전에 상기 통신 자원들에 접속하기 위한 요청을 릴리즈하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
The connectivity engine is:
Receive a deadline from the application;
Withhold the request until the deadline; And
And configured to execute instructions for releasing a request to access the communication resources prior to the deadline.
제17항에 있어서,
상기 요청은 통신 채널을 설정하기 위한 시스템 호출을 포함하는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
And the request comprises a system call to establish a communication channel.
제17항에 있어서,
상기 접속성 엔진은 상기 트리거링 이벤트를 검출할 시에 상기 운영 체제의 소켓층에 상기 요청을 릴리즈하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
And the connectivity engine is further configured to execute instructions for releasing the request to a socket layer of the operating system upon detecting the triggering event.
제17항에 있어서,
상기 접속성 엔진은 상기 요청의 릴리즈가 얼마나 자주 발생하는지에 관한 간격에 대한 표시를 수신하기 위한 명령들을 실행하도록 추가로 구성되는, 무선 통신을 위해 구성된 모바일 디바이스.
18. The method of claim 17,
And the connectivity engine is further configured to execute instructions to receive an indication of an interval as to how often a release of the request occurs.
제31항에 있어서,
상기 간격은 네트워크 내의 상태기반 인터넷 프로토콜(IP) 미들박스 내의 타임아웃 값보다 더 작은, 무선 통신을 위해 구성된 모바일 디바이스.
32. The method of claim 31,
And the interval is less than a timeout value in a stateful internet protocol (IP) middlebox in a network.
모바일 디바이스 상의 애플리케이션들로부터 네트워크에 대한 요청들을 관리하도록 구성되는 장치로서,
상기 모바일 디바이스 상에서 제1 애플리케이션으로부터의 요청을 인터셉트하기 위한 수단 ― 상기 요청은 상기 모바일 디바이스에 대한 통신을 수행하기 위한 요청임 ― ;
상기 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것으로부터 상기 요청을 보류하기 위한 수단; 및
트리거링 이벤트를 검출할 시에 운영 체제에 상기 요청을 릴리즈하기 위한 수단을 포함하는, 네트워크에 대한 요청들을 관리하도록 구성되는 장치.
An apparatus configured to manage requests for a network from applications on a mobile device, the apparatus comprising:
Means for intercepting a request from a first application on the mobile device, the request being a request to perform communication for the mobile device;
Means for withholding the request from reaching a TCP / IP stack of an operating system running on the mobile device; And
Means for releasing the request to an operating system upon detecting a triggering event.
제33항에 있어서,
상기 보류는 상기 모바일 디바이스가 배경 모드에 있는 기간 동안 발생하는, 네트워크에 대한 요청들을 관리하도록 구성되는 장치.
34. The method of claim 33,
The hold is configured to manage requests for a network that occur during a period when the mobile device is in a background mode.
제33항에 있어서,
상기 모바일 디바이스에 대한 통신을 수행하기 위해 다른 인터셉트된 요청들과 함께 상기 요청을 수집하기 위한 수단을 더 포함하는, 네트워크에 대한 요청들을 관리하도록 구성되는 장치.
34. The method of claim 33,
And means for collecting the request along with other intercepted requests to perform communication for the mobile device.
제33항에 있어서,
상기 애플리케이션으로부터 상기 요청을 인터셉트하는 것 및 다른 요청들을 인터셉트하는 것은 상이한 시간들에서 발생하는, 네트워크에 대한 요청들을 관리하도록 구성되는 장치.
34. The method of claim 33,
Intercepting the request from the application and intercepting other requests are configured to manage requests for the network at different times.
제33항에 있어서,
랩퍼에 대한 명령들을 실행하기 위한 수단을 더 포함하고, 상기 실행되는 랩퍼는 상기 제1 애플리케이션으로부터 상기 요청을 인터셉트하도록 구성되는, 네트워크에 대한 요청들을 관리하도록 구성되는 장치.
34. The method of claim 33,
Means for executing instructions for a wrapper, wherein the executed wrapper is configured to intercept the request from the first application.
제37항에 있어서,
상기 랩퍼는 상기 모바일 디바이스의 운영 체제의 애플리케이션층 및 소켓층 사이에 위치되는, 네트워크에 대한 요청들을 관리하도록 구성되는 장치.
39. The method of claim 37,
And the wrapper is configured to manage requests for a network located between an application layer and a socket layer of an operating system of the mobile device.
제33항에 있어서,
상기 제1 애플리케이션을 요청들이 보류되는 애플리케이션의 클래스로서 식별하기 위한 수단을 더 포함하는, 네트워크에 대한 요청들을 관리하도록 구성되는 장치.
34. The method of claim 33,
And means for identifying the first application as a class of application for which requests are withheld.
제39항에 있어서,
애플리케이션을 중요 애플리케이션 또는 비-중요 애플리케이션으로서 식별하기 위한 수단; 및
비-중요 애플리케이션들로부터의 요청들만을 보류하기 위한 수단을 더 포함하는, 네트워크에 대한 요청들을 관리하도록 구성되는 장치.
40. The method of claim 39,
Means for identifying the application as a critical application or a non-critical application; And
And means for withholding only requests from non-critical applications.
모바일 디바이스 상의 애플리케이션들로부터 네트워크 액세스에 대한 요청들을 관리하도록 구성되는 컴퓨터 프로그램 물건으로서, 상기 물건은 비-일시적 컴퓨터-판독가능한 매체를 포함하고, 상기 매체는:
상기 모바일 디바이스 상에서 제1 애플리케이션으로부터의 요청을 인터셉트하기 위한 코드 ― 상기 요청은 상기 모바일 디바이스에 대한 통신을 수행하기 위한 요청임 ― ;
상기 모바일 디바이스 상에서 실행하는 운영 체제의 TCP/IP 스택에 도달하는 것으로부터 상기 요청을 보류하기 위한 코드; 및
트리거링 이벤트를 검출할 시에 운영 체제에 상기 요청을 릴리즈하기 위한 코드를 포함하는, 컴퓨터 프로그램 물건.
A computer program product configured to manage requests for network access from applications on a mobile device, the article comprising a non-transitory computer-readable medium, the medium comprising:
Code for intercepting a request from a first application on the mobile device, the request being a request to perform communication for the mobile device;
Code for withholding the request from reaching a TCP / IP stack of an operating system running on the mobile device; And
And code for releasing said request to an operating system upon detecting a triggering event.
KR1020137027548A 2011-03-18 2011-11-04 Management of network access requests KR101557843B1 (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 2011-11-03
US13/288,933 US9264868B2 (en) 2011-01-19 2011-11-03 Management of network access requests
PCT/US2011/059439 WO2012128792A1 (en) 2011-03-18 2011-11-04 Management of network access requests

Publications (2)

Publication Number Publication Date
KR20140005298A true KR20140005298A (en) 2014-01-14
KR101557843B1 KR101557843B1 (en) 2015-10-06

Family

ID=45048218

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137027548A KR101557843B1 (en) 2011-03-18 2011-11-04 Management of 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190008928A (en) * 2016-05-18 2019-01-25 베니암, 인크. System and method for managing routing and replication of data in a moving object network in an upload direction

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
US20120149352A1 (en) 2010-07-26 2012-06-14 Ari Backholm Context aware traffic management for resource conservation in a wireless network
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
US8750123B1 (en) 2013-03-11 2014-06-10 Seven Networks, Inc. Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
WO2014172386A2 (en) 2013-04-15 2014-10-23 Seven Networks, Inc. Temporary or partial offloading of mobile applicaton functions to a cloud-based environment
US9603049B2 (en) * 2013-07-22 2017-03-21 Seven Networks, Llc Extending delay tolerance of mobile applications 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
EP3110211B1 (en) * 2014-07-24 2018-09-19 Huawei Technologies Co., Ltd. Data transceiving 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
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
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
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
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
EP2471322A4 (en) * 2009-08-24 2016-11-02 Intel Corp Low power and fast application service transmission
US9603085B2 (en) * 2010-02-16 2017-03-21 Qualcomm Incorporated Methods and apparatus providing intelligent radio selection for legacy and non-legacy applications

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190008928A (en) * 2016-05-18 2019-01-25 베니암, 인크. System and method for managing routing and replication of data in a moving object network in an upload direction

Also Published As

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

Similar Documents

Publication Publication Date Title
US9264868B2 (en) Management of network access requests
JP5784816B2 (en) Managing network access requests
US9571952B2 (en) Offloading of data to wireless local area network
EP2752058B1 (en) Apparatus and method for monitoring of background application events
US10736173B2 (en) Method and apparatus for setting up/releasing radio resource control connection between evolved node B and user equipment in communication system
EP2725869B1 (en) System and method for reducing power consumption based on data activity sensitive timers
TWI586187B (en) Dynamic adaptation of a traffic inactivity timer
JP5863217B2 (en) System and method for synchronizing application communications
EP2560455B1 (en) Systems and methods for multiple radio access bearer traffic throttling
WO2013158794A1 (en) Early initiation of dormancy of a radio connection
CN113455055A (en) Method and apparatus for providing assistance information for improved power efficiency
JP6672167B2 (en) Fast sleep systems and processes
JP5728623B2 (en) System and method for management of background application events
Doki et al. Mobile interface control scheme can extend battery life

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee