KR101488650B1 - 백그라운드 애플리케이션 이벤트들의 관리를 위한 시스템들 및 방법들 - Google Patents

백그라운드 애플리케이션 이벤트들의 관리를 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR101488650B1
KR101488650B1 KR1020147011970A KR20147011970A KR101488650B1 KR 101488650 B1 KR101488650 B1 KR 101488650B1 KR 1020147011970 A KR1020147011970 A KR 1020147011970A KR 20147011970 A KR20147011970 A KR 20147011970A KR 101488650 B1 KR101488650 B1 KR 101488650B1
Authority
KR
South Korea
Prior art keywords
communication
rules
list
allowed
applications
Prior art date
Application number
KR1020147011970A
Other languages
English (en)
Other versions
KR20140080526A (ko
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/490,396 external-priority patent/US8838086B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20140080526A publication Critical patent/KR20140080526A/ko
Application granted granted Critical
Publication of KR101488650B1 publication Critical patent/KR101488650B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)

Abstract

통신 액세스 정책을 구현하는 시스템들, 방법들 및 디바이스들이 본 명세서에서 설명된다. 몇몇 양태들에서, 무선 디바이스는 복수의 애플리케이션들을 실행시키고 통신 네트워크와 통신하도록 구성된다. 무선 디바이스는 복수의 애플리케이션들 중 하나 이상이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하도록 구성된 수신기를 포함한다. 무선 디바이스는 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신을 지연시키 구성된 프로세서를 포함한다. 프로세서는 지연의 종료 후에 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하도록 추가로 구성된다. 일 양태에서, 프로세서는 디바이스가 백그라운드 상태에 있는지 포어그라운드 상태에 있는지에 기초하여 통신 통계 자료를 개별적으로 기록하도록 구성된다.

Description

백그라운드 애플리케이션 이벤트들의 관리를 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR MANAGEMENT OF BACKGROUND APPLICATION EVENTS}
관련 출원들의 상호 참조
본 출원은 2011 년 10 월 5 일에 출원된 미국 가출원 제 61/543,701 호 및 2011 년 8 월 29 일에 출원된 미국 가출원 제 61/528,628 호에 대해 35 U.S.C.§ 119(e) 하에서 우선권을 주장하며, 양측 가출원 모두는 그들 전체가 참조로서 본 명세서에 포함된다.
본 출원은 전반적으로 무선 통신에 관한 것으로, 보다 구체적으로는, 백그라운드 애플리케이션 이벤트들을 관리하는 시스템들, 방법들, 및 디바이스들에 관한 것이다.
광범위한 애드-온 서비스들 및 피처들을 무선 디바이스들로 제공하도록 동작가능한 애플리케이션들 ("앱") 또는 디바이스 애플릿들이 현재 이용가능하다. 예를 들어, 무선 디바이스들이 디바이스 애플릿들을 다운로드하고 런칭하여 쇼핑, 검색, 포지션 로케이션, 드라이빙 내비게이션, 및 다른 기능들의 어레이와 같은 부가 기능들을 수행하는 것이 현재 가능하다. 네트워크 및 애플리케이션 제공자들은 일반적으로 이러한 디바이스 애플릿들을 추가 비용으로 디바이스 사용자들에게 제공한다. 따라서, 디바이스 애플릿들의 사용은 무선 디바이스들의 기능성 및 유용성을 증가시키고, 디바이스 사용자들에게 디바이스 자체에서 원래 이용가능하지 않은 편리성 및 피처들을 제공한다.
무선 디바이스 인터페이스는 복수의 라디오들 중 임의의 것을 이용하여 하나 이상의 통신 네트워크들과 인터페이싱한다. 예를 들어, 무선 디바이스는 셀룰러, Wi-Fi, 블루투스 또는 다른 타입들의 무선 액세스 기술들을 이용하여 통신을 제공하는 다양한 라디오들을 포함할 수도 있다. 이에 따라, 무선 디바이스에서 실행되는 애플리케이션들은, 애플리케이션들이 적절한 네트워크와 통신하는 데 사용될 관련 라디오 채널 및 라디오를 결정하는 디폴트 라우팅을 제공받는다.
그러나, 애플리케이션 통신을 지능적으로 관리하는 데에 관심이 증가한다. 이것은, 부분적으로는, 멀티-라디오 디바이스들 (예컨대, 3G/Wi-Fi 디바이스들) 의 수적인 증가 및 오퍼레이터들을 위한 용량 문제들을 생성할 수도 있는 네트워크 트래픽에서의 증가로 인한 것이다. 따라서, 그러한 용량 문제들에 대해, 트래픽을 대안의 라디오들로 오프로드하거나 또는 특정 주기들 동안에 통신을 지연하는 것이 바람직할 수도 있다.
따라서, 무선 디바이스들에서의 애플리케이션들에 대한 통신 관리를 제공하는 데에는 효율적이고 비용 효과적인 메커니즘들이 필요하다. 구체적으로, 어떤 애플리케이션들이 네트워크를 이용하는지 그리고 그러한 애플리케이션들이 그 네트워크를 어떻게 이용하는지를 발견하기 위한 효율적인 방식이 필요하다. 또한, 디바이스의 다양한 상태들에서 그 발견된 애플리케이션들이 라디오에 얼마나 긴급하게 액세스해야 하는지에 따라 그것들을 분류할 필요가 있다. 이러한 정보는 통신의 송신을 지연하는 데 이용될 수도 있다. 또한, 통신의 지연된 송신에 관한 정책들을 통신하는 시스템들 및 방법들이 필요하다.
본 발명의 시스템들, 방법들, 및 디바이스들은 각각 여러 양태들을 가지며, 어떠한 단일의 양태도 그것의 바람직한 특질들을 단독으로 담당하는 것은 아니다. 다음의 청구범위에 의해 표현되는 바와 같이 본 발명의 범주를 제한하지 않으면서, 몇몇 특징들이 이제 간단히 설명될 것이다. 본 설명을 고려한 후, 그리고 특히 "설명" 이라는 명칭의 섹션을 읽은 후라면, 애플리케이션들이 지연 내성 (delay-tolerant) 이라는 교시를 포함하는 이점을 본 발명의 특징들이 어떻게 제공하는지를 이해할 것이다.
본 개시물의 일 양태는 무선 디바이스를 제공한다. 무선 디바이스는 통신 네트워크와 데이터를 교환하도록 구성된 네트워크 인터페이스를 포함한다. 무선 디바이스는 또한 하나 이상의 입력을 수신하도록 구성된 입력 디바이스를 더 포함한다. 무선 디바이스는 네트워크 인터페이스에 전기적으로 접속된 프로세서를 더 포함한다. 프로세서는 하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 백그라운드 상태에 있는지 포어그라운드 상태에 있는지를 결정하도록 구성된다. 프로세서는 네트워크 인터페이스를 통해 통신 네트워크와 통신하도록 구성된 복수의 애플리케이션들을 실행시키도록 추가로 구성된다. 프로세서는, 디바이스가 백그라운드 상태에 있는 경우, 복수의 애플리케이션들 중 하나 이상에 대한 하나 이상의 통신 통계 자료를 수집하도록 추가로 구성된다. 프로세서는, 디바이스가 포어그라운드 상태에 있는 경우, 디바이스가 백그라운드 상태에 있을 때 수집된 통신 통계 자료와는 별개로, 하나 이상의 통신 통계 자료를 수집하도록 하거나 또는 하나 이상의 통신 통계 자료를 수집하지 않게 하도록 추가로 구성된다.
본 개시물의 다른 양태는 애플리케이션 통신 통계 자료를 수집하는 방법을 제공한다. 방법은 하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태에 있는지 또는 백그라운드 상태에 있는지를 결정하는 단계를 포함한다. 방법은 통신 네트워크와 통신하도록 구성된 복수의 애플리케이션들을 실행시키는 단계를 더 포함한다. 방법은, 디바이스가 백그라운드 상태에 있는 경우, 복수의 애플리케이션들 중 하나 이상에 대한 하나 이상의 통신 통계 자료를 수집하는 단계를 더 포함한다. 방법은, 디바이스가 포어그라운드 상태에 있는 경우, 디바이스가 백그라운드 상태에 있을 때 수집된 통신 통계 자료와는 별개로, 하나 이상의 통신 통계 자료를 수집하도록 하거나 또는 하나 이상의 통신 통계 자료를 수집하지 않게 하는 단계를 더 포함한다.
본 개시물의 다른 양태는 애플리케이션 통신 통계 자료를 수집하는 장치를 제공한다. 장치는 하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태에 있는지 또는 백그라운드 상태에 있는지를 결정하는 수단을 포함한다. 장치는 통신 네트워크와 통신하도록 구성된 복수의 애플리케이션들을 실행시키는 수단을 더 포함한다. 장치는, 디바이스가 백그라운드 상태에 있는 경우, 복수의 애플리케이션들 중 하나 이상에 대한 하나 이상의 통신 통계 자료를 수집하는 수단을 더 포함한다. 장치는, 디바이스가 포어그라운드 상태에 있는 경우, 디바이스가 백그라운드 상태에 있을 때 수집된 통신 통계 자료와는 별개로, 디바이스가 포어그라운드 상태에 있을 때의 하나 이상의 통신 통계 자료를 수집하도록 하거나 또는 디바이스가 포어그라운드 상태에 있을 때의 하나 이상의 통신 통계 자료를 수집하지 않게 하는 수단을 더 포함한다.
본 개시물의 일 양태는 비일시적 컴퓨터 판독가능 매체를 제공한다. 매체는, 실행 시, 장치로 하여금, 하나 이상의 입력들의 존재 또는 부재에 기초하여 장치가 포어그라운드 상태에 있는지 또는 백그라운드 상태에 있는지를 결정하게 하는 코드를 포함한다. 매체는, 실행 시, 장치로 하여금, 통신 네트워크와 통신하도록 구성된 복수의 애플리케이션들을 실행하게 하는 코드를 더 포함한다. 매체는, 실행 시, 장치로 하여금, 장치가 백그라운드 상태에 있을 때, 복수의 애플리케이션들 중 하나 이상에 대한 하나 이상의 통신 통계 자료를 수집하게 하는 코드를 더 포함한다. 매체는, 실행 시, 장치로 하여금, 장치가 포어그라운드 상태에 있는 경우, 장치가 백그라운드 상태에 있을 때 수집된 통신 통계 자료와는 별개로, 하나 이상의 통신 통계 자료를 수집하게 하거나 또는 하나 이상의 통신 통계 자료를 수집하지 않게 하는 코드를 더 포함한다.
본 개시물의 다른 양태는, 복수의 애플리케이션들을 실행시키도록 그리고 통신 네트워크와 통신하도록 구성된 무선 디바이스를 제공한다. 무선 디바이스는 복수의 애플리케이션들 중 하나 이상이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하도록 구성된 수신기를 포함한다. 무선 디바이스는 또한 하나 이상의 입력을 수신하도록 구성된 입력 디바이스를 더 포함한다. 무선 디바이스는 하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태에 있는지 또는 백그라운드 상태에 있는지를 결정하도록 구성된 프로세서를 더 포함한다. 프로세서는 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신을 수정하도록 추가로 구성된다. 프로세서는, 디바이스가 포어그라운드 상태에 있을 때, 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하도록 추가로 구성된다.
본 개시물의 다른 양태는 통신 네트워크와 통신하는 방법을 제공한다. 방법은 복수의 애플리케이션들 중 하나 이상이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하도록 구성된 수신기를 포함한다. 방법은 하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태에 있는지 또는 백그라운드 상태에 있는지를 결정하는 단계를 더 포함한다. 방법은 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신을 수정하는 단계를 더 포함한다. 방법은, 디바이스가 포어그라운드 상태에 있을 때, 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하는 단계를 더 포함한다.
본 개시물의 다른 양태는 통신 네트워크와 통신하는 장치를 제공한다. 장치는 복수의 애플리케이션들 중 하나 이상이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하도록 구성된 수단을 포함한다. 장치는 하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태에 있는지 또는 백그라운드 상태에 있는지를 결정하는 수단을 더 포함한다. 장치는 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신을 수정하는 수단을 더 포함한다. 장치는, 사용자 디바이스가 포어그라운드 상태에 있을 때, 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하는 수단을 더 포함한다.
본 개시물의 일 양태는 비일시적 컴퓨터 판독가능 매체를 제공한다. 매체는, 실행 시, 장치로 하여금, 복수의 애플리케이션들 중 하나 이상이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하게 하는 코드를 포함한다. 매체는, 실행 시, 장치로 하여금, 하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태에 있는지 또는 백그라운드 상태에 있는지를 결정하게 하는 코드를 포함한다. 매체는, 실행 시, 장치로 하여금, 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신을 수정하게 하는 코드를 더 포함한다. 매체는, 실행 시, 장치로 하여금, 사용자 인터페이스가 포어그라운드 상태에 있을 때, 규칙들에 따라 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하게 하는 코드를 더 포함한다.
본 개시물의 다른 양태는 통신 네트워크와 통신하도록 구성된 장치를 제공한다. 디바이스는 복수의 애플리케이션들 중 무선 디바이스에서 실행되는 하나 이상의 애플리케이션이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 생성하도록 구성된 프로세서를 포함한다. 디바이스는 통신 네트워크를 통해 복수의 규칙들을 무선 디바이스로 송신하도록 구성된 송신기를 더 포함한다.
본 개시물의 다른 양태는 통신 네트워크와 통신하는 방법을 제공한다. 방법은 복수의 애플리케이션들 중 무선 디바이스 상에서 실행되는 하나 이상의 애플리케이션이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 생성하는 단계를 포함한다. 방법은 통신 네트워크를 통해 복수의 규칙들을 무선 디바이스로 송신하는 단계를 더 포함한다.
본 개시물의 다른 양태는 통신 네트워크와 통신하는 장치를 제공한다. 장치는 복수의 애플리케이션들 중 무선 디바이스에서 실행되는 하나 이상의 애플리케이션이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 생성하는 수단을 포함한다. 장치는 통신 네트워크를 통해 복수의 규칙들을 무선 디바이스로 송신하는 수단을 더 포함한다.
본 개시물의 일 양태는 비일시적 컴퓨터 판독가능 매체를 제공한다. 매체는, 실행 시, 장치로 하여금, 복수의 애플리케이션들 중 무선 디바이스에서 실행되는 하나 이상의 애플리케이션이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 생성하게 하는 코드를 포함한다. 실행 시, 장치로 하여금, 통신 네트워크를 통해 복수의 규칙들을 무선 디바이스로 송신하게 하는 코드를 더 포함한다.
본 명세서에서 설명된 전술된 양태들은 첨부한 도면과 연계하여 취해지는 다음의 설명을 참조하면 보다 용이하게 명확해질 것이다.
도 1 은 통신 관리 시스템의 양태들을 나타낸 예시적인 네트워크 환경을 도시한다;
도 2 는 통신 관리를 제공하도록 구성된 예시적인 무선 디바이스를 도시한다;
도 3 은 통신 관리를 제공하는 예시적인 방법의 플로우차트를 도시한다;
도 4 는 예시적인 디바이스에 대한 애플리케이션 네트워크 활동의 그래프이다;
도 5 는 애플리케이션 통신을 집계 (aggregate) 하도록 구성된 하드웨어/소프트웨어 시스템의 예시적인 블록도를 도시한다;
도 6 은 도 5 의 하드웨어/소프트웨어 시스템에 의해 구현된 애플리케이션 통신 집계의 예시적인 타임라인을 도시한다;
도 7 은 다른 실시형태에 따른 애플리케이션 통신 집계들의 타임라인을 도시한다;
도 8 은 통신 액세스 정책을 구현하도록 구성된 예시적인 디바이스를 도시한다;
도 9 는 통신 통계 자료를 수집하는 예시적인 방법의 플로우차트를 도시한다;
도 10 은 통신 통계 자료를 분석하는 예시적인 방법의 플로우차트를 도시한다;
도 11 은 통신 통계 자료를 수집하는 다른 예시적인 방법의 플로우차트를 도시한다;
도 12 는 통신 액세스 정책을 구현하는 예시적인 방법의 플로우차트를 도시한다;
도 13 은 통신 액세스 정책을 구현하도록 구성된 다른 예시적인 디바이스를 도시한다.
신규한 시스템들, 장치들, 및 방법들의 다양한 양태들이, 첨부한 도면을 참조하여 이하에서 보다 충분히 설명된다. 그러나, 본 교시 개시물은 많은 상이한 형태들로 구현될 수도 있으며, 본 개시물 전반에 걸쳐서 제시되는 임의의 특정 구조 또는 기능으로 제한되는 것으로 이해되어서는 안 된다. 오히려, 이러한 양태들은 본 개시물이 철저하고 완전하게 되도록 그리고 당업자에게 본 개시물의 범주를 충분히 전달하도록 제공된다. 본 명세서에서의 교시에 기초하여, 당업자라면, 본 개시물의 범주가 본 명세서에 개시된 개시물의 신규한 시스템들, 장치들, 및 방법들의 임의의 양태를, 본 개시물의 임의의 다른 양태와는 독립적으로 구현되든 또는 그와 조합하여 구현되든, 포괄하고자 의도된 것임을 이해해야 한다. 예를 들어, 본 명세서에서 설명되는 임의의 수의 양태들을 이용하여, 장치가 구현될 수도 있거나 또는 방법이 실시될 수도 있다. 또한, 본 발명의 범주는 본 명세서에서 설명되는 본 발명의 다양한 실시형태들에 더해 또는 이들 외에 다른 구조, 기능성, 또는 구조와 기능성을 이용하여 실시되는 그러한 장치 또는 방법을 포괄하고자 의도된다. 본 명세서에서 개시되는 임의의 양태는 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수도 있음을 이해해야 한다.
특정 양태들이 본 명세서에 설명되어 있지만, 이러한 양들의 많은 변형들 및 치환들은 본 개시물의 범주 내에 있다. 바람직한 실시형태들의 몇몇 이익들 및 이점들이 언급되지만, 본 개시물의 범주는 특정 이익들, 용도들 또는 목적들로 제한되는 것으로 의도되지는 않는다. 오히려, 본 개시물의 양태들은 상이한 무선 기술들, 시스템 구성들, 네트워크들 및 송신 프로토콜들에 광범위하게 적용가능한 것으로 의도되며, 이들 중 일부는 바람직한 양태들에 대한 다음의 설명 및 도면에서 예시로서 설명된다. 상세한 설명 및 도면은 제한하는 것이 아니라 본 개시물을 예시하는 것에 불과하며, 본 개시물의 범주는 첨부된 청구범위 및 그의 등가물들에 의해 정의된다.
본 명세서에서 설명되는 기법들은 코드 분할 다중 액세스 (CDMA) 네트워크들, 시간 분할 다중 액세스 (TDMA) 네트워크들, 주파수 분할 다중 액세스 (FDMA) 네트워크들, 직교 FDMA (OFDMA) 네트워크들, 단일 캐리어 FDMA (SC-FDMA) 네트워크들 등과 같은 다양한 무선 통신 네트워크들에 이용될 수도 있다. 용어들 "네트워크들" 및 "시스템들" 은 종종 상호교환가능하게 사용된다. CDMA 네트워크는 UTRA (Universal Terrestrial Radio Access), CDMA2000 등과 같은 무선 기술을 구현할 수도 있다. UTRA 는 광대역 CDMA (W-CDMA), 및 저속 칩 레이트 (Low Chip Rate: LCR) 를 포함한다. CDMA2000 은 IS-2000, IS-95 및 IS-856 표준들을 포괄한다. TMDA 네트워크는 GSM (Global System for Mobile Communications) 과 같은 무선 기술을 구현할 수도 있다. OFDMA 네트워크는 E-UTRA (Evolved UTRA), IEEE 802.11, IEEE 802.15, IEEE 802.16, IEEE 802.20, 플래시-OFDMA® 등과 같은 무선 기술을 구현할 수도 있다. UTRA, E-UTRA 및 GSM 은 UMTS (Universal Mobile Telecommunication management System) 의 일부이다. LTE (Long Term Evolution) 는 E-UTRA 를 이용하는 UMTS 의 새로운 릴리스이다. UTRA, E-UTRA, GSM, UMTS 및 LTE 는 "제 3 세대 파트너쉽 프로젝트" (3GPP) 로 명명된 기구로부터의 문헌들에 기술되어 있다. CDMA2000 은 "제 3 세대 파트너쉽 프로젝트 2" (3GPP2) 로 명명된 기구로부터의 문헌들에 기술되어 있다. 이러한 다양한 무선 기술들 및 표준들은 당업계에 공지되어 있다.
도 1 은 통신 관리 시스템 (108) 의 양태들을 나타낸 예시적인 네트워크 환경 (100) 을 도시한다. 네트워크 환경 (100) 은 무선 디바이스 (102), 통신 네트워크 (104), 및 하나 이상의 서버들 (110, 111) 을 포함한다. 디바이스 (102) 는 대응하는 무선 채널들 (106) 을 이용하여 네트워크 (104) 와 통신하는 복수의 라디오들 (미도시) 을 포함한다. 디바이스 (102) 는, 예를 들어 특정 애플리케이션에 의해, 복수의 라디오들로의 액세스를 제어하도록 동작하는 통신 관리 시스템 (108) 을 또한 포함한다.
무선 디바이스 (102) 는 통신 네트워크 (104) 를 통해 서버들 (110, 111) 과 통신할 수도 있다. 서버들 (110, 111) 은 통신 채널들 (112, 113) 을 통해 각각 통신 네트워크 (104) 와 접속한다. 통신 채널들 (112, 113) 은 유선 또는 무선 채널 중 어느 하나일 수도 있다.
동작 동안, 무선 디바이스 (102) 는 복수의 라디오들 중 임의의 것을 이용하여 네트워크 (104) 와 인터페이싱할 수도 있는 애플리케이션들을 실행시킨다. 예를 들어, 실행 애플리케이션은 네트워킹 기능 호, 이를테면 소켓 층 호를 발행하여, 네트워크 (104) 와의 통신을 위한 네트워크 리소스를 요청하도록 할 수도 있다. 일 실시형태에서, 통신 관리 시스템 (108) 은 미리 정해진 무선 리소스를 애플리케이션에 바인딩하는 디폴트 라우팅 구성에 기초하여 소켓 층 호를 프로세싱할 수도 있다.
일 실시형태에서, 서버 (110) 는 통신 액세스 정책을 획득할 수도 있다. 다양한 실시형태들에서, 서버 (110) 는 컴파일된 네트워크 통계 자료에 기초하여 통신 액세스 정책을 생성할 수도 있고, 또는 이전에 컴파일된 통신 액세스 정책을 취출할 수도 있고, 또는 다른 소스로부터 통신 액세스 정책을 수신할 수도 있다. 일 실시형태에서, 무선 디바이스 (102) 는 통신 관리 시스템 (108) 을 통해 통신 통계 자료를 수집할 수도 있다. 통신 통계 자료는, 예를 들어 무선 채널들 (106) 에 액세스하고자 하는 애플리케이션들, 애플리케이션들이 무선 채널들 (106) 에 액세스하고자 하는 시기, 시도되는 액세스 종류 등에 관한 정보를 포함할 수도 있다. 무선 디바이스 (102) 는 통신 통계 자료를 서버 (111) 에 제공할 수도 있다. 서버들 (110, 111) 중 하나 또는 양측 모두는 무선 디바이스 (102) 로부터 수신된 통신 통계 자료를 프로세싱할 수도 있고, 독자적으로 또는 동시에 통신 액세스 정책을 컴파일할 수도 있다. 특정 실시형태들에서, 서버 (110) 및 서버 (111) 가 공동 위치될 수도 있고, 또는 그들의 기능성이 단일 서버에서 결합될 수도 있다.
통신 액세스 정책은 무선 채널들 (106) 에 액세스하도록 허용되는 애플리케이션들, 애플리케이션들이 무선 채널들 (106) 에 액세스하도록 허용되는 시기, 허용되는 액세스 종류 등에 관한 규칙들을 포함할 수도 있다. 서버 (110) 는 통신 네트워크 (104) 를 통해 통신 액세스 정책을 무선 디바이스 (102) 에 제공할 수도 있다. 다양한 실시형태들에서, 서버 (110) 는 ANDSF (Access Network Discovery and Selection Function), OMA-DM (Open Mobile Alliance Device Management), 및/또는 임의의 다른 적합한 방법, OTA 또는 다른 방식을 통해 통신 액세스 정책을 무선 디바이스 (102) 에 제공할 수도 있다.
다양한 구현형태들에서, 통신 관리 시스템 (108) 은 애플리케이션으로부터 네트워킹 기능 호를 인터셉트하도록 동작한다. 통신 관리 시스템 (108) 은 통신 액세스 정책에 따라 애플리케이션에 의한 사용을 위해 적절한 라디오를 선택할 수도 있다. 통신 관리 시스템 (108) 은 또한 통신 액세스 정책에 따라 애플리케이션의 통신을 수정할 수도 있다. 본 명세서에서 사용되는 바와 같이, 통신의 수정은, 통신을 지연시키는 것 또는 이와는 다르게 통신에 충격을 주거나 또는 영향을 미치는 것을 포함할 수 있지만, 이들로 제한되는 것은 아니다. 지능적 라디오 선택 시스템 (108) 은 또한 네트워크 리소스 (즉, 선택된 라디오) 에 애플리케이션을 바인딩할 수도 있다. 애플리케이션들이 무선 리소스를 사용할 때 통신 관리 시스템 (108) 이 애플리케이션들의 정상 동작들에 응답하여 동작하기 때문에, 시스템은 어떠한 애플리케이션 변화들 또는 업그레이드들 없이 레거시 및 비레거시 애플리케이션들 양측 모두와 동작할 수도 있다. 통신 관리 시스템 (108) 의 보다 상세한 설명이 아래에서 제공된다.
도 2 는 통신 관리를 제공하도록 구성된 예시적인 무선 디바이스 (200) 를 도시한다. 디바이스 (200) 는 프로세서 (202), 메모리 (204), 및 TX/RX 라디오 (212) 를 포함하며, 이들 모두는 통신 버스 (214) 를 이용하여 통신하도록 커플링된다. 무선 디바이스 (200) 는 도 1 과 관련하여 전술된 무선 디바이스 (102) 일 수도 있다. 디바이스 (200) 는 단지 일 구현형태에 불과하고 다른 구현형태들이 가능하다는 것에 유의해야 한다.
일 양태에서, 프로세서 (202) 는 애플리케이션 층 모듈 (206), 접속성 엔진 (208) 및 네트워킹 모듈 (210) 을 포함한다. 프로세서 (202) 는 또한 CPU, 마이크로프로세서, 게이트 어레이, 하드웨어 로직, 메모리 엘리먼트들, 및/또는 소프트웨어 (미도시) 를 실행하는 하드웨어 중 적어도 하나를 포함할 수도 있다. 프로세서 (202) 는 디바이스 (200) 의 동작을 제어하여 디바이스 (200) 상에서 실행되는 애플리케이션들의 통신이 선택적으로 수정되고, 충격받고, 지연되고, 그리고/또는 바람직한 라디오에 바인딩될 수도 있도록 구성된다. 일 구현형태에서, 프로세서 (202) 는 복수의 기능들 중 임의의 것을 수행하는 것에 관련된 컴퓨터 판독가능 명령들을 실행하도록 구성된다. 예를 들어, 프로세서 (202) 는 디바이스 (200) 로부터 수신되거나 또는 통신된 정보를 분석하여 통신 관리를 유발하도록 동작한다. 다른 양태에서, 프로세서 (202) 는 메모리 (204), 애플리케이션 층 모듈 (206), TX/RX 라디오 (212), 및/또는 접속성 엔진 (208) 에 의해 이용되어 통신 관리를 유발할 수도 있는 정보를 생성하도록 동작한다.
TX/RX 라디오 (212) 는 복수의 무선 채널들 (216) 을 이용하여 디바이스 (200) 를 외부 통신 네트워크 (104)(도 1) 와 같은 복수의 외부 엔티티들과 인터페이스시키는 데 사용될 수도 있는 복수의 라디오들/인터페이스들을 제공하도록 구성된 소프트웨어를 실행시키는 하드웨어 및/또는 프로세서를 포함한다. 무선 채널들 (216) 은, 예를 들어 도 1 과 관련하여 전술된 무선 채널들 (106) 일 수도 있다. TX/RX 라디오 (212) 는 무선 채널들 (216) 을 이용하여 통신 네트워크들과 통신하는 셀룰러, Wi-Fi, 블루투스, 또는 임의의 다른 기술들을 이용하여 통신하도록 라디오들/인터페이스들을 제공할 수도 있다.
애플리케이션 층 모듈 (206) 은 디바이스 (200) 상의 하나 이상의 애플리케이션들을 실행시키도록 그리고 메모리 (204) 에 애플리케이션들을 저장하도록 구성된 소프트웨어를 실행시키는 하드웨어 및/또는 프로세서를 포함한다. 일 구현형태에서, 애플리케이션 층 모듈 (206) 은 네트워킹 서비스들을 요청하는 네트워킹 모듈 (210) 로의 네트워킹 기능 호들을 애플리케이션들이 개시하게 하도록 구성된다. 네트워킹 기능 호들은 무선 채널들 (216) 을 통해 외부 네트워크 또는 시스템과 통신하는 목적을 위한, TX/RX 라디오 (212) 에서의 라디오/인터페이스로의 접속 요청을 포함할 수도 있다.
네트워킹 모듈 (210) 은 네트워킹 기능들을 수행하도록 구성된 소프트웨어를 실행시키는 하드웨어 및/또는 프로세서를 포함한다. 일 구현형태에서, 네트워킹 기능들은 Connect(), Bind(), Write(), 및 Setsockopt() 과 같은 기능들을 포함한다. connect() 기능은 애플리케이션과 특정 라디오/인터페이스 사이에 커넥션을 확립하도록 동작한다. write() 기능은 커넥션을 통해 데이터를 전송하도록 동작한다. 예를 들어, 특정 라디오/인터페이스는 TX/RX 라디오 (212) 에 의해 제공되는 복수의 후보 라디오들로부터 선택될 수도 있다. 일 양태에서, 네트워킹 모듈 (210) 은 다양한 네트워킹 기능들 또는 커맨드들을 수행하도록 구성된다. 일 양태에서, 네트워킹 모듈 (210) 은, 디바이스가 백그라운드 모드에 있는 동안 (도 8), 특정 기능들이 진행되게 할 수도 있고, 다른 기능들이 진행되게 하지 않을 수도 있다. 일 실시형태에서, 디바이스는, 예를 들어 사용자 인터페이스가 사용 중이 아닌 경우, 백그라운드 모드에 있을 수 있다.
접속성 엔진 (208) 은 시스템 리소스들을 평가하여 애플리케이션들로부터의 통신을 관리하도록 구성된 소프트웨어를 실행시키는 하드웨어 및/또는 프로세서를 포함한다. 다양한 구현형태들에서, 접속성 엔진 (208) 은 애플리케이션 통신을 인터셉트하고, 통신을 선택적으로 수정하고, 통신에 충격을 주고, 그리고/또는 통신을 지연시키고, 그리고/또는 다음 선택 기준들 중 하나 이상에 기초하여 특정 라디오를 선택하도록 구성된다.
1. 사용자 정책 - 디바이스에서 실행되는 애플리케이션들에 의한 무선 액세스에 관해 디바이스 사용자에 의해 설정된 정책.
2. 오퍼레이터 정책 - 디바이스들 또는 애플리케이션들에 의한 네트워크 액세스에 관해 네트워크 오퍼레이터들에 의해 설정된 정책.
3. 무선 메트릭들 - 무선 성능의 측정량, 또는 특정 애플리케이션 또는 작동 환경에 대해 가장 바람직한 라디오를 선택하는 데 이용되는 다른 타입들의 측정량들.
4. 애플리케이션 요건들 - 애플리케이션들을 요청하는 것과 관련된 요건들, 이를테면 대역폭 요건들 또는 레이턴시/성능 요건들.
5. 네트워크 가용성 - 특정 무선 인터페이스에 대한 특정 네트워크의 유용성에 관한 정보.
6. 벤더 공급 메트릭들 - 수신 신호 세기 표시 및 패킷 손실률과 같은 무선 메트릭들로부터 특정 무선 인터페이스에 이용가능한 수율 및 레이턴시로 변환하는 정보.
7. 액세스 포인트 유용성 - 다른 디바이스들로부터, 또는 무선 링크를 구성할 수도 있지만 패킷들을 네트워크로 포워드하지는 않는 것들로부터 트래픽에 의해 혼잡해진 액세스 포인트들에 대한 고유 식별자를 특정하는 정보.
프로세서 (202) 는 TX/RX 라디오 (212) 를 통해 전술된 선택 기준들 중 하나 이상을 다운로드할 수도 있다. 선택 기준들은 메모리 (204) 에 저장될 수도 있다. 예를 들어, 프로세서 (202) 는 오퍼레이터 정책을 취출할 수도 있고, 접속성 엔진 (208) 은 오퍼레이터 정책을 적용할 수도 있다. 오퍼레이터 정책은 무선 디바이스 (200) 상의 애플리케이션들에 의한 네트워크 액세스를 조정하는 복수의 규칙들을 포함할 수도 있다.
메모리 (204) 는 RAM, ROM, EEPROM, 또는 애플리케이션들 및/또는 선택 기준들이 디바이스 (200) 에서 저장되고 취출되게 하도록 동작하는 임의의 다른 타입의 메모리 디바이스를 포함한다. 일 구현형태에서, 메모리 (204) 는 프로세서 (202) 에 의해 실행되는 컴퓨터 판독가능 명령들을 저장하도록 구성된다. 메모리 (204) 는 또한 프로세서 (202), TX/RX 라디오 (212), 애플리케이션 층 모듈 (206), 네트워킹 모듈 (210), 및/또는 접속성 엔진 (208) 중 임의의 것에 의해 생성되는 데이터를 포함하는 복수의 다른 타입들의 데이터 중 임의의 것을 저장하도록 구성될 수도 있다. 메모리 (204) 는, 랜덤 액세스 메모리, 배터리 지원 (battery-backed) 메모리, 하드 디스크, 자기 테이프 등을 포함하는 다수의 상이한 구성들로 구성될 수도 있다. 압축 및 자동 백업과 같은 다양한 특징들이 또한 메모리 (204) 에서 구현될 수도 있다.
메모리 (204) 는 프리-로드 라이브러리 (pre-load library)(218) 및 네트워킹 라이브러리 (220) 를 저장하도록 구성된다. 프리-로드 라이브러리 (218) 는 애플리케이션들로부터의 소켓 호들을 인터셉트한다. 네트워킹 라이브러리 (220) 는 네트워크 통신을 확립하기 위해 소켓들을 생성하고 접속시키도록 애플리케이션들에 의해 사용되는 네트워킹 API 를 제공한다.
접속성 엔진 (208) 은 다양한 방식들로 애플리케이션 통신을 선택적으로 수정하고, 애플리케이션 통신에 충격을 주고, 그리고/또는 애플리케이션 통신을 지연시키도록 구성된다. 예를 들어, 접속성 엔진 (208) 은 전술된 선택 기준들 중 하나 이상을 이용하여 통신을 지연시키도록 구성될 수도 있다. 예를 들어, 접속성 엔진 (208) 은 지연 내성 애플리케이션들로부터의 통신만을 지연시킬 수도 있다. 또한, 접속성 엔진 (208) 은 무선 디바이스 (200) 가 백그라운드 상태에 있을 때에만 통신을 지연시킬 수도 있다. 일 실시형태에서, 접속성 엔진 (208) 은 무선 디바이스 (200) 가 포어그라운드 상태에 진입할 때까지 지연 내성 애플리케이션들에 대한 통신을 지연시킨다. 다른 실시형태에서, 접속성 엔진 (208) 은 지연 내성 애플리케이션이 통신을 개시할 때까지 지연 내성 애플리케이션들에 대한 통신을 지연시킨다.
접속성 엔진 (208) 은 또한 다양한 방식들로 복수의 후보 라디오들로부터 라디오를 선택하도록 구성될 수도 있다. 예를 들어, 접속성 엔진 (208) 은 전술된 선택 기준들 중 하나 이상을 이용하여 무선을 선택하도록 구성될 수도 있다. 일단 라디오가 선택되면, 접속성 엔진 (208) 은 그 라디오를 나타내는 인터페이스에 애플리케이션을 바인딩한다. 예를 들어, 일 구현형태에서, 접속성 엔진 (208) 은 오리지널 네트워킹 라이브러리 (220) 내로 발호하는 것에 의해 라디오의 인터페이스에 애플리케이션을 바인딩한다. 따라서, 접속성 엔진 (208) 및 프리-로드 라이브러리 (218) 에서의 기능들은 애플리케이션에 대해 선택된 라디오에 바인딩시킬 네트워킹 라이브러리 (220) 에서의 bind() 기능과 같은 기능들에 용이하게 액세스할 수도 있다.
다양한 구현형태들에서, 통신 관리 시스템은 컴퓨터 판독가능 매체에 저장되거나 또는 구현된 하나 이상의 프로그램 명령들 ("명령들") 또는 "코드들" 의 세트들을 갖춘 컴퓨터 프로그램 제품을 포함한다. 코드들이 적어도 하나의 프로세서, 예를 들어 프로세서 (202) 에 의해 실행될 때, 그들의 실행은, 프로세서 (202) 로 하여금 디바이스 (200) 를 제어하여 본 명세서에서 설명되는 지능적 인터페이스 선택 시스템의 기능들을 제공하게 한다. 예를 들어, 컴퓨터 판독가능 매체는 플로피 디스크, CDROM, 메모리 카드, FLASH 메모리 디바이스, RAM, ROM, 또는 임의의 다른 타입의 메모리 디바이스 또는 디바이스 (200) 에 인터페이싱하는 컴퓨터 판독가능 매체를 포함한다. 다른 양태에서, 코드들의 세트들은 외부 디바이스 또는 통신 네트워크 리소스로부터 디바이스 (200) 내로 다운로드될 수도 있다. 코드들의 세트들은, 실행될 때, 본 명세서에서 설명되는 지능적 인터페이스 선택 시스템의 양태들을 제공하도록 동작한다.
도 3 은 통신 관리를 제공하는 예시적인 방법의 플로우차트 (300) 를 도시한다. 명료성을 위해, 플로우차트 (300) 는 도 2 에 도시된 디바이스 (200) 를 참조하여 아래에서 설명된다. 그러나, 당업자라면, 예시된 방법이 임의의 적합한 디바이스로 구현될 수 있음을 인식할 것이다. 일 구현형태에서, 프로세서 (202) 는 디바이스 (200) 의 기능 엘리먼트들을 제어하여 아래에서 설명되는 기능들을 수행하도록 하는 코드들의 하나 이상의 세트들을 실행시킨다.
블록 302 에서, 프로세서 (202) 는 애플리케이션을 런칭한다. 애플리케이션은 애플리케이션 층 모듈 (206) 의 일부인 레거시 또는 비레거시 애플리케이션일 수도 있다. 예를 들어, 애플리케이션은 TX/RX 라디오 (212) 에서 이용가능한 라디오를 이용하여 무선 네트워크에 접속하는 네트워킹 기능 호를 생성하는 네트워크 브라우저일 수도 있다.
블록 304 에서, 프로세서 (202) 는 프리-로드 라이브러리를 구성하고 로딩한다. 예를 들어, 프리-로드 라이브러리 (218) 는 통신 네트워크들을 평가하기 위해 애플리케이션들에 의해 이용되는 네트워킹 라이브러리 (220) 에서 제공되는 네트워킹 기능들의 서브세트를 포함한다. 프리-로드 라이브러리 (218) 에서의 네트워킹 기능들은 디바이스에서 실행되는 애플리케이션들로부터의 네트워킹 기능 호들을 인터셉트하도록 구성된다. 예를 들어, 프리-로드 라이브러리 (218) 는 디바이스 (200) 에서 실행되는 애플리케이션들에 의해 소켓 호들을 인터셉트하는 데 이용될 수도 있는 POSIX 소켓 기능들을 포함한다. 일 구현형태에서, 프리-로드 라이브러리 (218) 는 메모리 (204) 에 저장된다.
일 구현형태에서, 프리-로드 라이브러리 (218) 기능들은 애플리케이션의 목적에 가장 적합한 라디오를 선택하라는 접속성 엔진 (208) 에 대한 요청을 생성하기 위해 발호 애플리케이션들로부터 전달되는 인수들을 수신하고 이러한 인수들을 이용하도록 구성된다.
블록 306 에서, 프로세서 (202) 는 프리-로드 라이브러리를 실행 환경에 링크시킨다. 예를 들어, 프로세서 (202) 는 프리-로드 라이브러리 (218) 를 네트워킹 라이브러리 (220) 보다 높은 우선순위에 있는 실행 환경에 링크시킨다. 따라서, 애플리케이션들에 의한 네트워킹 기능 호들은 프리-로드 라이브러리 (218) 에서의 기능들에 의해 인터셉트되고 프로세싱될 것이지만, 네트워킹 라이브러리 (220) 에서의 유사한 기능들에 의해서 프로세싱되지는 않을 것이다.
블록 308 에서, 프로세서 (202) 는 애플리케이션으로부터 네트워킹 기능 호를 인터셉트한다. 예를 들어, 네트워킹 기능 호는 connect() 기능 또는 write() 기능과 같은 POSIX 소켓 기능 호일 수도 있다. 애플리케이션은 외부 네트워크들과의 통신을 가능하게 하도록 라디오에 접속하는 네트워킹 기능 호를 생성한다. 네트워킹 라이브러리 (220) 보다 높은 우선순위에 있는 실행 환경으로의 프리-로드 라이브러리 (218) 의 연결로 인해, 프로세서 (202) 는 프리-로드 라이브러리 (218) 에서의 기능들을 통해 네트워킹 기능 호를 인터셉트 (또는 프로세싱) 한다. 일 실시형태에서, 프로세서 (202) 는, 도 12 와 관련하여 아래에서 설명되는 바와 같이, 수신된 오퍼레이터 정책에 따라 네트워킹 기능 호를 지연시킬 수 있다.
블록 310 에서, 프리-로드 라이브러리 (218) 에서의 착호 기능은 애플리케이션에 의한 사용을 위해 적절한 라디오를 선택하도록 접속성 엔진 (208) 에 대한 선택 요청을 생성한다. 요청은 애플리케이션에 의한 사용을 위해 적절한 라디오를 선택하도록 접속성 엔진 (208) 에 의해 이용된 선택 기준들의 일부인 임의의 정보를 포함한다. 다른 실시형태에서, 프리-로드 라이브러리 (218) 에서의 착호 기능은 통신이 지연되어야 하는지를 결정하도록 하는 접속성 엔진 (208) 에 대한 선택 요청을 생성한다.
블록 312 에서, 선택 기준들이 평가된다. 일 구현형태에서, 접속성 엔진 (208) 은 전술된 선택 기준들을 평가하도록 동작한다. 예를 들어, 접속성 엔진 (208) 은 선택 기준들의 일부인 오퍼레이터 정책들을 평가하도록 프로세서 (202) 와 통신할 수도 있다.
블록 314 에서, 접속성 엔진 (208) 은 선택 기준들의 평가에 기초하여 라디오를 선택한다. 예를 들어, 접속성 엔진 (208) 은 선택 기준들과 가장 잘 매칭하는 라디오를 선택하도록 동작한다.
블록 316 에서, 접속성 엔진 (208) 은 애플리케이션에 대해 선택된 라디오의 인터페이스에 바인딩한다. 예를 들어, 일 구현형태에서, 접속성 엔진 (208) 은 애플리케이션에 대해 선택된 라디오에 바인딩시킬 네트워킹 라이브러리 (220) 의 bind() 함수를 호출한다. 예를 들어, 접속성 엔진 (208) 은 네트워킹 라이브러리 (220) 를 인지하고, 프리-로드 라이브러리 (218) 에 의해 인터셉트되지 않으면서 어떻게 그의 기능들에 직접적으로 액세스하는지를 인지한다. 일 실시형태에서, 접속성 엔진 (208) 은 라디오에 애플리케이션을 바인딩하기 전 또는 바인딩한 후 통신을 지연시킨다.
그 후, 블록 318 에서, 애플리케이션은 네트워크 통신을 위해 선택된 라디오를 이용한다.
선택적인 동작에서, 방법은, 현재 라디오가 선택 기준들과 가장 잘 매칭하는지를 결정하기 위해 선택 기준들의 주기적인 평가를 수행하도록 접속성 엔진 (208) 이 동작하는 블록 (312) 으로 진행한다. 선택 기준들의 다른 평가 후에, 접속성 엔진 (208) 이, 현재 라디오 외의 라디오가 선택 기준들과 가장 잘 매칭하는 것으로 결정하면, 접속성 엔진 (208) 은 그 커넥션을 파괴하여, 커넥션을 재시작하도록 애플리케이션을 트리거하여 새로운 커넥션에 대한 상이한 라디오를 선택할 수도 있다. 따라서, 선택적인 동작은, 희망하는 통신을 행하기 위해 가장 적절한 라디오가 선택되는 것을 보장하도록 선택 기준들이 주기적으로 평가되게 한다.
따라서, 플로우차트 (300) 는 레거시 및 비레거시 애플리케이션들과의 사용을 위한 통신 관리를 제공한다. 플로우차트 (300) 는 단지 일 구현형태에 불과하고, 플로우차트 (300) 의 동작들은 다른 구현형태들이 가능하도록 재정렬되거나 또는 다른 방식으로 수정될 수도 있음에 유의해야 한다.
무선 디바이스 애플리케이션들에 대한 접속성 관리
스마트 폰들, 개인 휴대 정보 단말기들 등과 같은 무선 디바이스들에서, 소프트웨어 애플리케이션들은, 디바이스가 백그라운드 상태에 있는 경우라 해도 (예를 들어, 사용자가 디바이스를 활발히 사용하고 있지 않은 경우), 계속해서 동작할 수도 있다. 소셜 네트워킹 애플리케이션들, 이메일 또는 다른 통신 애플리케이션들, 데이터 피드들 등 (대중적인 예들은 Facebook®, Gmail®, Twitter® 등을 포함함) 과 같은 애플리케이션들은 사용자가 디바이스를 사용하고 있지 않은 경우라 해도 데이터를 계속해서 전송하고 수신할 수도 있다.
모바일 디바이스는 디바이스의 특정 입력들이 가동 중이 아니거나 또는 슬립 상태에 있을 때 백그라운드 상태에 있을 수도 있다. 다시 말해, 디바이스는 사용자가 디바이스를 사용하고 있지 않을 때 백그라운드 모드에 있을 수도 있다. 예를 들어, 청각적 입력들 (예컨대, 마이크로폰) 이 오프 상태인 경우, 디바이스는 백그라운드 모드에 있는 것으로 간주될 수도 있다. 또한, 시각적 입력들 (예컨대, 디바이스의 디스플레이) 이 오프 상태인 경우, 디바이스는 백그라운드 모드에 있는 것으로 결정될 수도 있다. 추가적인 입력들은 모바일 디바이스가 아래에서 설명되는 바와 같이 백그라운드 모드에 있는지의 여부를 결정하는 데 이용될 수도 있다.
도 4 는 예시적인 디바이스에 대한 애플리케이션 네트워크 활동의 그래프 (400) 이다. 그래프 (400) 의 x-축은 시간을 나타내고, y-축은 각각의 시간 별로 전송될 데이터의 양을 바이트 단위로 나타낸다. 그래프 (400) 는 약 2 시간 주기 동안의 네트워크 활동을 나타내며, 이 주기 동안에 디바이스는 아이들 모드에 있다. 일 실시형태에서, 디바이스는, 사용자가 디바이스와 상호작용하지 않고 그리고/또는 디스플레이가 오프 상태에 있는 경우 아이들 모드에 있다. 디바이스가 백그라운드 모드에 있다 하더라도, 애플리케이션들은 활동성 면에서 스파이크들, 예를 들어 스파이크들 (410a-i) 을 계속해서 발생시킨다. 이러한 애플리케이션들은 "백그라운드" 애플리케이션들이라고 지칭될 수 있다. 이들 애플리케이션들에 의한 활동성은 라디오 (212) 에서의 라디오들 등과 같은 통신 리소스들을 이용할 수도 있다. 일 실시형태에서, 백그라운드 모드는 "아이들" 모드일 수 있다.
네트워크 활동성 스파이크들, 이를테면 스파이크들 (410a-i) 은 무선 디바이스가 아이들 모드로부터 접속 모드로 전이하게 할 수도 있다. 접속 모드에서, 디바이스는 라디오에 동력을 공급할 수도 있고, 시그널링 트래픽을 생성할 수도 있고, 아이들 모드에 있을 때보다 더 많은 양의 전력을 소비할 수도 있다. 몇몇 경우들에 있어서, 스파이크들은 무선 디바이스가 접속 모드로부터 아이들 모드 또는 불연속 수신 (DRX) 모드와 같은 대안의 접속 모드들로 전이하는 것을 방지할 수도 있다. 사용자가 디바이스에 능동적으로 관여하지 않을 때 애플리케이션들에 의한 이러한 증가된 레벨들의 무선 활동성은 배터리 수명 단축, 무선 네트워크들의 부하 증가, 또는 다른 희망하지 않는 효과들을 초래할 수도 있다.
본 명세서에 개시되는 기술들 및 구조들을 채용하면, 디바이스는, 무선 리소스들이 활성화될 수도 있고 동기화된 방식으로 애플리케이션 데이터가 전송되고 태스크들이 실행될 때까지, 백그라운드 애플리케이션들로부터 데이터를 캡처하여 홀딩하기 위해 애플리케이션 프로그램 인터페이스 (API) 를 제공하는 소프트웨어 층 ("랩퍼 (wrapper)" 라고도 지칭됨) 을 채용할 수도 있다. 이러한 태스크들/데이터 요청들을 집계하는 것에 의해, 무선 디바이스의 빈번한 웨이킹 (waking) 이 감소할 수도 있으며, 사용자가 디바이스에 능동적으로 관여하고 있지 않은 주기들 동안에 다른 통신 디바이스들이 관찰될 수도 있다.
도 5 는 애플리케이션 통신을 집계하도록 구성된 하드웨어/소프트웨어 시스템 (500) 의 예시적인 블록도를 도시한다. 도시된 바와 같이, 소프트웨어 콤포넌트들은 애플리케이션 프로세서 (550) 와 모뎀 프로세서 (560) 사이로 분할되지만, 다양한 기능성들은 도 5 의 예와는 상이하게 구성될 수도 있다. 예를 들어, 소프트웨어로서 설명된 기능들이 하드웨어에서 구현될 수도 있고, 그 반대로 될 수도 있으며, 기능들이 콤포넌트들 사이에서 상이하게 분배되는 것 등이 가능할 수도 있다. 일 실시형태에서, 하드웨어/소프트웨어 시스템 (500) 은 도 1 과 관련하여 전술된 통신 관리 시스템 (108) 일 수도 있다. 다른 실시형태에서, 하드웨어 소프트웨어 시스템 (500) 은 도 2 와 관련하여 전술된 무선 디바이스 (200) 에서 구현될 수도 있다. 예를 들어, 애플리케이션 프로세서 (550) 의 기능들은 프로세서 (202), 애플리케이션 층 모듈 (206), 및/또는 접속성 엔진 (208) 중 하나 이상에 의해 구현될 수도 있다. 모뎀 프로세서 (560) 의 기능들은 TX/RX 라디오 (212), 네트워킹 모듈 (210), 및/또는 접속성 엔진 (208) 중 하나 이상에 의해 구현될 수도 있다.
예시된 실시형태에서, 애플리케이션들 (502) 은 애플리케이션 접속 엔진 (508) 과 그리고 고레벨 오퍼레이팅 시스템 (HLOS)(506) 과 상호작용한다. HLOS (506) 는, 예를 들어 Google Inc. (Mountain View, CA) 에 의해 제조되는 안드로이드 오퍼레이팅 시스템일 수도 있다. 애플리케이션 접속 엔진 (508) 은 모뎀 접속 엔진 (510) 과 통신할 수도 있다. 모뎀 접속 엔진은 라디오 (212) 와 같은 통신 리소스들 및 그 내부의 라디오들을 관리할 수도 있다. 랩퍼 (504) 는 애플리케이션들 (502) 과 HLOS (506) 사이의 데이터를 캡처할 수 있다. 랩퍼 (504) 는 사용자 비활동성의 주기 동안에 애플리케이션들 (502) 로부터의 데이터를 집계할 수도 있으며, 이들을 HLOS (506) 및 궁극적으로는 동작/송신을 위한 라디오 (212) 에 릴리스시키기 전의 미리 정해진 시간까지 그들을 홀딩할 수도 있다. 랩퍼 (504) 는 애플리케이션들 (502) 의 데이터/요청들이 홀딩/집계되고 있음을 그들이 인지하지 못하도록 애플리케이션들에 대해 비가시적일 수도 있다. 일 실시형태에서, 랩퍼 (504) 는 HLOS (506) 의 기능들을 에뮬레이트할 수도 있다. 랩퍼 (504) 는 별도의 콤포넌트일 수도 있고, 또는 애플리케이션 접속 엔진 (508) 과 같은 다른 콤포넌트 내에 포함될 수도 있다. 예를 들어, 랩퍼 (504) 는 도 2 와 관련하여 전술된 접속성 엔진 (208) 에 의해 구현될 수도 있다.
도 6 은 도 5 의 하드웨어/소프트웨어 시스템 (500) 에 의해 구현된 애플리케이션 통신 집계의 예시적인 타임라인 (600) 을 도시한다. 도시된 바와 같이, 애플리케이션들 APP 1-4 각각은 집계 주기 (610) 동안에 계속해서 무선 리소스의 사용에 대한 요청을 개시한다. 일 실시형태에서, 애플리케이션 통신은 집계 주기 (610) 동안에 지연될 수도 있다. 일 실시형태에서, 집계 주기 (610) 는 디바이스 (200) 가 아이들 모드에 있는 주기를 포함할 수 있다. 애플리케이션들 APP 1-4 는 지연 내성 애플리케이션들일 수도 있다. 지연 내성 애플리케이션들은, 예를 들어 이메일 또는 벌크 파일 전송과 같은 상대적으로 시간-둔감한 데이터를 전달할 수도 있다.
예시된 실시형태에서, 애플리케이션 APP 1 이 connect() 요청을 행한다. 그 후, 애플리케이션 APP 2 가 write() 요청을 행한다. 다음, 애플리케이션 APP 3 이 connect() 요청을 행한다. 마지막으로, 애플리케이션 APP 4 가 connect() 요청을 행한다. 랩퍼 (504) 는 connect() 및 write() 소켓 호들을 수신한다. 소켓 호들에 대해 즉각적으로 작동하는 대신, 랩퍼 (504) 는 집계 주기 (610) 동안 통신을 지연시킨다. 정해진 시간에, 랩퍼 (504) 는, 집계된 데이터 요청들 (620) 로서 소켓 호들을 함께 릴리스시킨다.
일 실시형태에서, 랩퍼 (504) 는 집계된 데이터 요청들 (620) 을 송신 윈도우 (630) 동안에 릴리스시킬 수도 있다. 다양한 실시형태들에서, 송신 윈도우 (630) 는 디바이스 (200) 가 아이들 모드에 있는 주기를 포함할 수도 있으며, 디바이스 (200) 가 활성 모드에 있는 주기를 포함할 수도 있다. 송신 윈도우 (630) 동안, 랩퍼 (504) 는 APP들 1-4 로부터의 집계된 데이터 요청들 (620) 을 릴리스시킬 수도 있다. 랩퍼 (504) 는 또한 송신 윈도우 (630) 동안에 행해진 애플리케이션 통신 요청들이 지연 없이 진행되게 할 수도 있다. 다시 말해, 송신 윈도우 (630) 동안, 랩퍼 (504) 는 추가적인 통신을 지연시키지 않을 수도 있다. 예를 들어, 예시된 실시형태에서, APP 5 는 송신 윈도우 (630) 동안에 connect() 요청을 개시한다. 랩퍼 (504) 는 APP 5 의 connect() 요청이 지연 없이 진행되게 할 수도 있다.
일 실시형태에서, 랩퍼 (504) 는 규칙적인 또는 간헐적인 간격들로 송신 윈도우 (630) 를 개방시킬 수도 있다. 예를 들어, 랩퍼 (504) 는 매 5 분, 10 분, 15 분, 30 분, 60 분 등마다 한번씩 송신 윈도우 (630) 를 개방시킬 수도 있다. 다른 예에서, 랩퍼 (504) 는 지연된 애플리케이션 통신을 랜덤 또는 의사랜덤하게 릴리스시킬 수도 있다. 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시키는 간격들은 디바이스 (200) 에 의해 결정될 수도 있고, 또는 서버 (110)(도 1) 와 같은 다른 디바이스로부터 수신될 수도 있다.
일 실시형태에서, 랩퍼 (504) 는 집계된 데이터 요청들 (620) 에 기초하여 동적으로 송신 윈도우 (630) 를 개방시킬 때를 결정할 수도 있다. 예를 들어, 랩퍼 (504) 는 집계된 데이터 요청들 (620) 의 수가 임계치를 초과할 때 송신 윈도우 (630) 를 개방시킬 수 있다. 임계치는 디바이스 (200) 에 의해 결정될 수 있고, 또는 서버 (110) 와 같은 다른 디바이스로부터 수신될 수 있다.
랩퍼 (504) 는 미리 정해진 또는 동적 주기의 시간 동안 송신 윈도우 (630) 를 개방시킨 상태로 유지할 수 있다. 예를 들어, 랩퍼 (504) 는 송신 윈도우 (630) 가 개방된 후 15 초, 30 초, 1 분, 5 분 등 동안 송신 윈도우 (630) 를 개방시킨 상태로 유지할 수도 있다. 다른 예로서, 랩퍼 (504) 는 마지막 애플리케이션 통신이 송신된 후 15 초, 30 초, 1 분, 5 분 등 동안 송신 윈도우 (630) 를 개방시킨 상태로 유지할 수도 있다. 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시킨 상태로 유지하는 시간의 양은 디바이스 (200) 에 의해 결정될 수도 있고, 또는 서버 (110) 와 같은 다른 디바이스로부터 수신될 수도 있다.
일 실시형태에서, 랩퍼 (504) 는 지연 내성 애플리케이션이 통신을 개시할 때 송신 윈도우 (630) 를 개방시킬 수도 있다. 예를 들어, APP 5 는 지연 내성 애플리케이션일 수도 있다. 따라서, 랩퍼 (504) 는 connect() 요청이 APP 4 로부터 수신될 때 송신 윈도우 (630) 를 개방시킬 수도 있다. 랩퍼 (504) 는 APP 4 로부터의 connect() 요청이 진행되게 할 수도 있고, 또한 집계된 데이터 요청들 (620) 을 APP들 1-4 로부터 릴리스시킬 수도 있다.
도 7 은 다른 실시형태에 따른 애플리케이션 통신 집계들의 타임라인 (700) 을 도시한다. 도시된 바와 같이, 애플리케이션들 APP 1-2 각각은 계속해서 무선 리소스의 사용에 대한 요청을 개시한다. 애플리케이션들 APP 1-2 은 접속 엔진 API 를 통해 그들의 지연 내성을 나타낼 수도 있다. 예를 들어, 애플리케이션 APP 1-2 는 특정 지연들에만 내성이 있는 동작에 대한 요건들 및/또는 백그라운드 활동을 포함할 수도 있다. 예를 들어, 애플리케이션들 APP 1-2 는 디바이스 (200) 의 로케이션을 주기적으로, 이를테면 매 10 초마다, 리포트하는 로케이션 트래킹 애플리케이션들일 수도 있다.
도시된 바와 같이, 애플리케이션 APP 1 은 통신 요청을 개시하며, 그것이 X 초 지연만을 견딜 것임을 랩퍼 (504) 에게 나타낸다. 다음, 애플리케이션 APP 2 는 통신 요청을 개시하며, 그것이 Y 초 지연만을 견딜 것임을 랩퍼 (504) 에게 나타낸다. 랩퍼 (504) 는 통신이 허용된다는 것을 애플리케이션에게 나타낼 수도 있는 콜백 (callback) 기능 (예컨대, API.Go) 를 제공한다. 콜백을 수신한 후, 애플리케이션은 통신을 진행할 수도 있다.
도시된 바와 같이, 랩퍼 (504) 는 X 초 지연이 경과하기 전에 애플리케이션 APP 1 에 API.Go 콜백을 제공한다. 그 후, 애플리케이션 APP 1 은 랩퍼 (504) 를 통해 추가 지연 없이 통신한다. 마찬가지로, 랩퍼 (504) 는 Y 초 지연이 경과하기 전에 애플리케이션 APP 2 에 API.Go 콜백을 제공한다. 그 후, 애플리케이션 APP 2 는 랩퍼 (504) 를 통해 추가 지연 없이 통신한다.
대안의 실시형태에서, 애플리케이션들은 API 를 통해 특정 송신 데드라인들을 랩퍼 (504) 에 제공한다. 랩퍼 (504) 는 제공된 데드라인들의 제약들 내에서 애플리케이션들로부터의 통신을 분명히 지연시킬 수도 있다. 따라서, 랩퍼 (504) 는 임의의 데드라인들에 앞서 애플리케이션 통신이 진행되게 할 것이다.
또 다른 양태에서, API 는 또한 애플리케이션이 지연 내성 애플리케이션으로서 등록되게 할 수도 있다. 즉각적인 액세스를 요청할 수도 있는 애플리케이션들은 아동 트래킹 애플리케이션들, 긴급 통지 애플리케이션들 등을 포함한다. 일 실시형태에서, 랩퍼 (504) 는 애플리케이션 통신을 모니터링하는 것에 의해 다양한 애플리케이션들의 지연 내성을 학습할 수도 있다. 다른 실시형태에서, 랩퍼 (504) 는 디바이스 (102) 에 국부적으로 저장되거나 또는 서버 (110) 로부터 수신되는 애플리케이션 지연 내성들의 리스트를 리스트 또는 데이터베이스로부터 수신할 수도 있다. 리스트 또는 데이터베이스는 오퍼레이터 정책과 같은 통신 액세스 정책과 함께 수신될 수도 있다.
랩퍼 (504) 는 사용자 중단 (disruption) 을 감소시키는 방식으로 애플리케이션 통신을 집계하거나 또는 지연시킬 수도 있다. 랩퍼 (504) 는 다양한 인자들을 분석하여, 애플리케이션 통신을 지연하거나 또는 집계하는 때를 결정할 수도 있다. 예를 들어, 랩퍼 (504) 는 디스플레이 상태 (온 또는 오프), 오디오 상태 (온 또는 오프) 등과 같은 무선 디바이스 (102) 의 특성들에 기초하여 애플리케이션 통신을 지연시킬 수도 있다. 랩퍼 (504) 는 지연에 대해 내성이 있는 것으로 공지된 애플리케이션 통신만을 지연시킬 수도 있다. 랩퍼 (504) 는, 라디오가 로딩되지 않을 때, 그렇지 않으면 무선 디바이스가 사용 중이 아닐 때 (예컨대, 전화 발신, 오디오 스트리밍 등이 없음), 애플리케이션 통신을 지연시킬 수도 있다. 당업자라면, 랩퍼 (504) 가 위의 인자들의 임의의 조합 뿐 아니라 다른 적합한 인자들에 기초하여 애플리케이션 통신을 지연시킬 때를 결정할 수도 있다는 것을 인식할 것이다.
또한, 랩퍼 (504) 는 다양한 인자들을 분석하여, 지연 또는 집계된 통신을 릴리스시키고 그리고 제한되지 않은 애플리케이션 통신을 허용하는 때를 결정할 수도 있다. 예를 들어, 지연 내성 애플리케이션 (이를테면, 예를 들어 긴급 통지 애플리케이션) 은 제한되지 않은 애플리케이션 통신을 개시할 수도 있다. 제한되지 않은 애플리케이션 통신은 랩퍼 (504) 가 이전에 지연되거나 또는 집계된 애플리케이션 통신을 릴리스시키도록 트리거할 수도 있다. 따라서, 이전에 지연된 애플리케이션 통신은 긴급 애플리케이션과 관련하여 무선 리소스들을 이용할 수도 있다. 다시 말해, 랩퍼 (504) 는 지연 내성 애플리케이션 통신이 개시될 때 모든 애플리케이션들에 대한 송신 윈도우를 개방시킬 수도 있다.
일 실시형태에서, 랩퍼 (504) 는, 특정 라디오가 활성화되거나 또는 디폴트로서 선택될 때, 지연되거나 또는 집계된 애플리케이션 통신을 릴리스시킬 수도 있다. 특정 라디오는, 예를 들어 Wi-Fi 라디오, 셀룰러 라디오, 셀룰러 라디오의 특정 모드 (예컨대, 2G 또는 3G 통신 모드들), 블루투스 라디오 등을 포함할 수도 있다. 예를 들어, 랩퍼 (504) 는 셀룰러 라디오만이 인에이블될 때 애플리케이션 통신을 지연시킬 수도 있고, Wi-Fi 라디오가 인에이블될 때, 지연된 애플리케이션 통신을 릴리스시킬 수도 있다.
다른 실시형태에서, 랩퍼 (504) 는, 무선 채널 품질이 임계치보다 높을 때, 지연되거나 또는 집계된 애플리케이션 통신을 릴리스시킬 수도 있다. 무선 채널 품질은 신호 세기, 신호대잡음비 (SNR) 등과 같은 메트릭들을 포함할 수도 있다. 예를 들어, 랩퍼 (504) 는 셀룰러 라디오의 SNR 이 임계치보다 작을 때 애플리케이션 통신을 지연시킬 수도 있고, 셀룰러 라디오의 SNR 이 임계치 이상일 때, 지연된 애플리케이션 통신을 릴리스시킬 수도 있다.
다른 실시형태에서, 랩퍼 (504) 는 지연되거나 또는 집계된 애플리케이션 통신을 주기적으로 또는 비연속적 윈도우들에서 릴리스시킬 수도 있다. 예를 들어, 랩퍼 (504) 는 지연된 애플리케이션 통신을 매 15 분마다 릴리스시킬 수도 있다. 다른 예에서, 랩퍼 (504) 는 지연된 애플리케이션 통신을 매 15 분 내지 20 분마다 랜덤 또는 의사랜덤하게 릴리스시킬 수도 있다.
일 실시형태에서, 랩퍼 (504) 는, 사용자 상호작용이 수신될 때, 지연되거나 또는 집계된 애플리케이션 통신을 릴리스시킨다. 예를 들어, 랩퍼 (504) 는, 디스플레이가 활성화될 때, 버튼눌림이 검출될 때 등에, 지연된 애플리케이션 통신을 릴리스시킬 수도 있다. 다른 실시형태에서, 무선 디바이스 (102) 는 사용자 상호작용을 예상할 수도 있다. 예를 들어, 무선 디바이스 (102) 는 무선 디바이스 (102) 의 움직임을 검출할 수도 있는 가속도계를 포함할 수도 있다. 랩퍼 (504) 는, 가속도계 출력이 임박한 사용자 상호작용의 가능성을 나타낼 때, 지연된 애플리케이션 통신을 릴리스시킬 수도 있다. 다른 예에서, 무선 디바이스 (102) 는 근접성 검출기를 통한 사용자 상호작용을 예상할 수도 있다. 당업자라면, 랩퍼 (504) 가, 전술한 사항의 임의의 조합에 응답하여 그리고 추가로 임의의 다른 적합한 이벤트에 응답하여, 지연된 애플리케이션 통신을 릴리스시킬 수도 있다는 것을 인식할 것이다.
앞선 설명이 API 에 대해 애플리케이션 통신 집계 및 지연을 설명하지만, 개념들은 하드웨어, 펌웨어, 또는 하드웨어와 소프트웨어의 임의의 결합에 동등하게 적용된다.
동기화 정책들
일 실시형태에서, 통신 관리 시스템 (108)(도 1) 은 서버 (110) 로부터 통신 액세스 정책을 수신할 수도 있다. 통신 액세스 정책은, 집계 주기 (610)(도 6) 및 송신 윈도우 (630) 동안에 애플리케이션 통신을 각각 지연시키고 릴리스시킬 때 접속성 엔진 (208) 에 의해 사용되는 오퍼레이터 정책을 포함할 수도 있다. 다양한 실시형태들에서, 통신 액세스 정책은: 애플리케이션 통신이 집계 주기 (610) 동안 얼마나 오랫동안 지연될 수도 있는지를 나타내는 타이밍 정보, 통신이 지연될 수도 있는 애플리케이션들의 리스트 ("포함 리스트"), 통신이 지연되지 않을 수도 있는 애플리케이션들의 리스트 ("배제 리스트"), 통신이 지연될 수도 있고 또는 지연되지 않을 수도 있는 통신 타입들의 리스트, 통신이 지연될 수도 있고 또는 지연되지 않을 수도 있는 네트워크 조건들의 리스트, 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시켜야 하는지 또는 폐쇄시켜야 하는지에 대한 이벤트들 또는 트리거들의 리스트, 통신이 지연될 수도 있고 또는 지연되지 않을 수도 있는 시간들의 표시, 통신이 지연될 수도 있고 또는 지연되지 않을 수도 있는 로케이션들의 표시, 디바이스 (200) 가 서버 (110) 로부터 업데이트 통신 액세스 정책을 얼마나 자주 요청해야 하는지, 통신이 지연될 수도 있는 무선 액세스 기술들 (RATs) 의 리스트 등 중 하나 이상을 포함할 수 있다.
일 실시형태에서, 통신 타입들은, 예를 들어 bind(), connect(), accept(), send(), recv(), write(), read(), sendto(), recvfrom(), close(), gethostbyname(), 및 gethostbyaddr() 와 같은 하나 이상의 소켓 동작들을 포함할 수 있다. 통신 타입들은, 예를 들어 대화 트래픽, 최선 노력 (best effort) 트래픽, 및 긴급 트래픽과 같은 트래픽 타입들의 부류를 더 포함할 수 있다. 대화 트래픽은, 예를 들어 텍스트 채팅 트래픽, 음성 채팅 트래픽, 비디오 채팅 트래픽, 월드 와이드 웹 트래픽 (예컨대, 맵핑 및 내비게이션 기능들) 과 같은 간헐적인 단방향 또는 양방향 통신 및/또는 상호작용 콘텐츠를 나타내는 통신을 포함할 수 있다. 최선 노력 트래픽은, 예를 들어 벌크 데이터 전송들 (예컨대, 파일 전송 프로토콜 (FTP) 트래픽), 이메일, 비디오 프리-로딩 등과 같은 상대적으로 낮은 우선순위 및/또는 비상호작용 트래픽을 포함할 수 있다. 긴급 통신은, 예를 들어 아동 트래킹 포지션 데이터, 시간 감응 경고 트래픽, 긴급 음성 트래픽 등과 같은 상대적으로 높은 우선순위 트래픽을 포함할 수 있다. 또한, 통신 타입들은, 예를 들어 소스 IP 어드레스, 목적지 IP 어드레스, 소스 포트, 목적지 포트 등과 같은 IP 헤더에 일반적으로 포함되는 정보에 기초할 수 있다.
일 실시형태에서, 통신 액세스 정책은, 랩퍼 (540) 가 송신 트리거 또는 이벤트의 부재 시에 송신 윈도우 (630) 를 얼마나 자주 개방시켜야 하는지를 나타내는 동기화 빈도를 포함할 수 있다. 예를 들어, 통신 액세스 정책은 랩퍼 (540) 가 적어도 매 5 분, 10 분, 15 분, 30 분, 60 분 등마다 송신 윈도우 (630) 를 개방시켜야 한다는 것을 나타낼 수도 있다. 일 실시형태에서, 통신 액세스 정책은, 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시켜야 하는 임계량의 집계된 데이터 요청들을 포함할 수 있다. 예를 들어, 통신 액세스 정책은, 집계된 데이터 요청들 (620) 의 양이 임계량의 시간 동안 라디오 (212) 를 점유하기에 충분한 경우, 랩퍼 (540) 가 송신 윈도우 (630) 를 개방시켜야 한다는 것을 나타낼 수도 있다. 다른 예로서, 랩퍼는 통신이 지연되는 애플리케이션들의 수가 임계치보다 큰 경우에 게이트를 개방시킬 수 있다. 일 실시형태에서, 통신 액세스 정책은 임계치를 포함할 수 있다. 다른 예로서, 랩퍼는 통신이 지연되는 소켓 호들의 수가 임계치보다 큰 경우에 게이트를 개방시킬 수 있다. 일 실시형태에서, 통신 액세스 정책은 임계치를 포함할 수 있다.
일 실시형태에서, 통신 액세스 정책은 서버 (110) 로부터의 애플리케이션 지연 내성들의 리스트를 포함할 수 있다. 애플리케이션 지연 내성들의 리스트는 "배제 리스트" 로 지칭될 수도 있는 지연 내성 애플리케이션들의 리스트를 포함할 수도 있다. 랩퍼 (504)(도 5) 는 배제 리스트에서 식별되는 애플리케이션들을 집계로부터 배제할 수도 있다. 마찬가지로, 애플리케지션 지연 내성들의 리스트는 "포함 리스트" 로 지칭될 수도 있는 지연 내성 애플리케이션들의 리스트를 포함할 수도 있다. 랩퍼 (504) 는 애플리케이션 통신을 집계할 때 포함 리스트에서 식별되는 애플리케이션들을 포함할 수도 있다.
일 실시형태에서, 랩퍼 (504) 는 디폴트에 의해 애플리케이션들을 배제할 수도 있고, 포함 리스트에서 특별히 식별되는 애플리케이션들에 대한 애플리케이션 통신만을 지연시킬 수도 있다. 포함 리스트는, 예를 들어 애플리케이션 명칭, 수치 식별자, 버전 번호, 저자 식별, 또는 이들의 임의의 조합을 나타내는 스트링과 같은 애플리케이션 식별자를 포함할 수도 있다. 일 실시형태에서, 포함 및/또는 배제 리스트들은 개별적인 소켓 동작들에 의해 나타내지는 통신 타입들을 포함하는 정교성 (granularity) 에 대해 애플리케이션 통신을 식별할 수 있다. 예를 들어, 포함 리스트는 지연 내성 소켓 동작으로서 애플리케이션 "Application A" 로부터 connect() 동작들을 식별할 수도 있다. 따라서, 랩퍼 (504) 는 "Application A" 로부터 connect() 동작들을 집계할 수도 있지만, 예를 들어 "Application A" 로부터 write() 동작들을 집계하지 않을 수도 있다. 한편, 랩퍼 (504) 는 "Application B" 로부터 connect() 동작들을 집계하지 않을 수도 있지만, 예를 들어 "Application B" 로부터 write() 동작들을 집계할 수도 있다. 당업자라면, 리스트들이 애플리케이션 식별자들, 소켓 동작들 등의 다른 조합들을 포함할 수 있다는 것을 인식할 것이다.
일 실시형태에서, 통신 액세스 정책은 통신이 지연될 수도 있고 또는 지연되지 않을 수도 있는 네트워크 조건들의 표시를 포함한다. 예를 들어, 통신 액세스 정책은 임계량의 무선 트래픽을 포함할 수 있고, 이에 기초하여, 랩퍼 (504) 가 집계 주기 (610) 및/또는 송신 윈도우 (630) 를 조절할 것이다. 일 실시형태에서, 랩퍼 (504) 는 네트워크 트래픽의 양이 통신 액세스 정책에서 특정된 임계치 아래로 떨어질 때 송신 윈도우 (630) 를 개방시킬 수 있다.
일 실시형태에서, 통신 액세스 정책은 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시켜야 하는지 또는 폐쇄시켜야 하는지에 대한 이벤트들 또는 트리거들의 리스트를 포함한다. 예를 들어, 통신 액세스 정책은 포함 리스트 상에 있지 않은 애플리케이션 및/또는 소켓 호가 데이터를 전송하고자 할 때 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시켜야 한다는 것을 나타낼 수도 있다. 다른 예로서, 통신 액세스 정책은 배제 리스트 상에 있는 애플리케이션 및/또는 소켓 호가 데이터를 전송하고자 할 때 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시켜야 한다는 것을 나타낼 수도 있다. 다른 예로서, 통신 액세스 정책은 포함 리스트들 상의 애플리케이션들 및/또는 소켓 호들만이 데이터를 전송하고자 할 때 랩퍼 (504) 가 송신 윈도우 (630) 를 폐쇄시켜야 한다는 것을 나타낼 수도 있다.
일 실시형태에서, 통신 액세스 정책은 디바이스 (200) 가 활성 모드에 진입할 때 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시켜야 한다는 것을 나타낼 수도 있다. 예를 들어, 통신 액세스 정책은 사용자 인터페이스 (822)(도 8) 가 입력을 수신할 때 랩퍼 (504) 가 송신 윈도우 (630) 를 개방시켜야 한다는 것을 나타낼 수도 있다. 다른 실시형태에서, 랩퍼 (504) 는 디바이스 (200) 가 활성 모드에 진입할 때 송신 윈도우 (630) 를 개방시키지 않을 수도 있지만, 이와는 다르게, 디바이스 (200) 가 활성 모드에 있을 때 랩퍼 (504) 를 디스에이블시킬 수도 있고 그리고/또는 통신을 지연시키는 것을 중지할 수도 있다.
일 실시형태에서, 통신 액세스 정책은 랩퍼 (504) 가 애플리케이션 통신을 지연시켜야 하거나 또는 지연시켜서는 안 되는 시간들, 날짜들, 및/또는 로케이션들의 리스트를 포함한다. 예를 들어, 통신 액세스 정책은 특정 시간들 또는 요일들 사이에, 주간의 특정 요일들 동안, 디바이스 (200) 가 특정 도시 또는 지역들 등에 있을 때 랩퍼 (504)가 통신을 지연시켜야 하거나 또는 지연시켜서는 안 된다는 것을 나타낼 수도 있다. 다양한 실시형태들에서, 시간, 날짜, 및/또는 로케이션 정책들은 하나 이상의 특정 애플리케이션들 및/또는 소켓 동작들에 특정적인 정교성들에 따라 특정될 수 있다.
일 실시형태에서, 서버 (110) 는 통신 네트워크 (104) 의 상태에 관한 정보를 수신할 수 있다. 예를 들어, 서버 (110) 는 통신 네트워크 (104) 에서의 네트워크 어드레스 변환 (NAT) 테이블들이 그들의 기록들을 얼마나 오랫동안 유지하는지를 결정할 수 있다. 서버 (110) 는 애플리케이션들이 그들의 커넥션들을 활동 상태로 유지시키는 등을 위해 랩퍼 (504) 가 그들의 NAT 엔트리들을 리프레시하기에 충분한 빈도로 송신 윈도우 (630) 를 개방시켜야 한다는 것을 나타내도록 통신 액세스 정책을 조절할 수 있다.
다양한 실시형태들에서, 통신 액세스 정책은 전술된 타이밍 정보, 애플리케이션 리스트들, 통신 타입들, 네트워크 조건들 등과 같은 2 개 이상의 액세스 기준들을 결합시킬 수 있다. 예를 들어, 통신 액세스 정책은 디바이스 (802) 가 대기 상태일 때 포트 (80) 로의 모든 트래픽이 5 분에 이르기까지 지연될 수 있다는 것을 나타낼 수 있다. 다른 예로서, 통신 액세스 정책은, 디바이스 (802) 가 대기 상태일 때, WLAN 인터페이스만이 사용될 수 있다는 것을 나타낼 수 있다. 다른 예로서, 통신 액세스 정책은 디바이스 (802) 가 대기 상태에 있는 동안에 "Application X" 로부터의 "connect()" 소켓 호들이 지연 없이 완료될 수도 있다는 것을 나타낼 수 있다. 동시에, 통신 액세스 정책은 디바이스 (802) 가 대기 상태에 있는 동안에 "Application Y" 로부터의 "connect()" 및 "write()" 소켓 호들이 지연될 수도 있다는 것을 나타낼 수 있다. 마찬가지로, 통신 액세스 정책은, 예를 들어 시도되는 소켓 동작들, 시도된 통신의 소스 및/또는 목적지 포트들, 목적지 IP 어드레스 등과 같은 다른 지연 기준들을 포함할 수 있다. 다른 예로서, 통신 액세스 정책은 무선 액세스 기술이 고속 패킷 액세스 (HSPA) 인 경우에는 통신이 지연될 수도 있지만 무선 액세스 기술이 LTE 인 경우에는 통신이 지연되지 않을 수도 있다는 것을 나타낼 수 있다. 당업자라면, 통신 액세스 정책의 전술된 양태들이 다양한 방식들로 결합될 수 있다는 것을 이해할 것이다.
도 8 은 통신 액세스 정책을 구현하도록 구성된 예시적인 디바이스 (802) 를 도시한다. 디바이스는 도 1 과 관련하여 전술된 네트워크 환경 (100) 내에서 채용될 수도 있다. 디바이스 (802) 는 본 명세서에서 설명되는 다양한 방법들을 구현하도록 구성될 수도 있는 디바이스의 일 예이다. 예를 들어, 디바이스 (802) 는 무선 디바이스 (102) 의 하나 이상의 기능들을 구현할 수도 있다. 다른 실시형태에서, 디바이스 (802) 는 서버 (110) 의 하나 이상의 기능들을 구현할 수도 있다.
디바이스 (802) 는 디바이스 (802) 의 동작을 제어하는 프로세서 (804) 를 포함할 수도 있다. 프로세서 (804) 는 또한 중앙 프로세싱 유닛 (CPU) 이라고 지칭될 수도 있다. 판독 전용 메모리 (ROM) 및 랜덤 액세스 메모리 (RAM) 양측 모두를 포함하는 메모리 (806) 는 명령들 및 데이터를 프로세서 (804) 에 제공한다. 메모리 (806) 의 일부분은 또한 비휘발성 랜덤 액세스 메모리 (NVRAM) 을 포함할 수도 있다. 프로세서 (804) 는 메모리 (806) 내에 저장된 프로그램 명령들에 기초하여 논리적 및 산술적 동작들을 수행할 수도 있다. 메모리 (806) 에서의 명령들은 본 명세서에서 설명되는 방법들을 구현하도록 실행가능할 수도 있다.
디바이스 (802) 가 무선 디바이스 (102) 로서 구현되거나 사용될 때, 프로세서 (804) 는 메모리 (806) 에 저장될 수도 있는 하나 이상의 애플리케이션들을 실행시키도록 구성될 수도 있다. 실행 동안, 애플리케이션들은 송수신기 (814), 송신기 (810), 및/또는 수신기 (812) 를 통한 통신을 개시할 수도 있다. 프로세서 (804) 는 도 5 와 관련하여 전술된 하드웨어/소프트웨어 시스템 (500) 을 구현할 수도 있다. 따라서, 프로세서 (804) 는 실행된 애플리케이션들의 통신을 모니터링할 수도 있고, 통신 통계 자료를 기록할 수도 있고, 수신기 (812) 를 통해 통신 액세스 정책을 수신할 수도 있고, 메모리 (806) 에 통신 액세스 정책을 저장할 수도 있다. 프로세서 (804) 는 도 6 및 도 7 과 관련하여 전술된 통신 액세스 정책들을 구현할 수도 있다.
프로세서 (804) 는 하나 이상의 프로세서들로 구현된 프로세싱 시스템의 콤포넌트를 포함할 수도 있고 또는 그러한 콤포넌트일 수도 있다. 하나 이상의 프로세서들은 범용 마이크로프로세서들, 마이크로제어기들, 디지털 신호 프로세서들 (DSP들), 필드 프로그래밍가능 게이트 어레이 (FPGAs), 프로그래밍가능 로직 디바이스들 (PLD들), 제어기들, 상태 머신들, 게이트형 로직, 이산 하드웨어 콤포넌트들, 전용 하드웨어 유한 상태 머신들, 또는 계산들 또는 다른 정보 조작들을 수행할 수도 있는 임의의 다른 적합한 엔티티들의 임의의 조합으로 구현될 수도 있다.
프로세싱 시스템은 또한 소프트웨어를 저장하는 머신 판독가능 매체들을 포함할 수도 있다. 소프트웨어는, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 서술 언어로 지칭되든, 또는 다른 것으로 지칭되든, 임의의 타입의 명령들을 의미하는 것으로 폭넓게 해석되어야 한다. 명령들은 (예컨대, 소스 코드 포맷, 이진 코드 포맷, 실행 코드 포맷, 또는 임의의 다른 적합한 코드 포맷인) 코드를 포함할 수도 있다. 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 프로세싱 시스템이 본 명세서에서 설명되는 다양한 기능들을 수행하게 한다.
디바이스 (802) 는 또한 디바이스 (802) 와 원격 로케이션 사이에서의 데이터의 송신 및 수신을 가능하게 하는 송신기 (810) 및/또는 수신기 (812) 를 포함할 수도 있는 하우징 (808) 을 포함할 수도 있다. 송신기 (810) 및 수신기 (812) 는 송수신기 (814) 로 결합될 수도 있다. 안테나 (816) 는 하우징 (808) 에 부착될 수도 있고, 송수신기 (814) 에 전기적으로 커플링될 수도 있다. 몇몇 실시형태들에서, 안테나 (816) 는 생략될 수도 있고, 디바이스 (802) 는 유선 통신용으로 설정될 수도 있다. 디바이스 (802) 는 또한 다수의 송신기들, 다수의 수신기들, 다수의 송수신기들, 및/또는 다수의 안테나들을 포함할 수도 있다 (미도시).
디바이스 (802) 는 송수신기 (814) 에 의해 수신되는 신호들의 레벨을 검출하고 정량화하기 위한 노력에 사용될 수도 있는 신호 검출기 (818) 를 또한 포함할 수도 있다. 신호 검출기 (818) 는 이러한 신호들을 총 에너지, 심볼 당 서브캐리어에 대한 에너지, 전력 스펙트럼 밀도 및 다른 신호들로서 검출할 수도 있다. 디바이스 (802) 는 또한 신호들을 프로세싱하는 데 있어서의 사용을 위해 디지털 신호 프로세서 (DSP)(820) 를 포함할 수도 있다. DSP (820) 는 송신용 패킷을 생성하도록 구성될 수도 있다. 몇몇 양태들에서, 패킷은 물리 층 데이터 유닛 (PPDU) 을 포함할 수도 있다.
디바이스 (802) 는 몇몇 양태들에서 사용자 인터페이스 (822) 를 더 포함할 수도 있다. 사용자 인터페이스 (822) 는 근접성 검출기, 하나 이상의 입력 버튼들, 키패드, 마이크로폰, 스피커, 인터페이스 포트 (예를 들어, 범용 직렬 버스 (USB) 포트, 고선명 멀티미디어 인터페이스 (HDMI) 포트 등), 터치스크린, 네트워크 인터페이스, 및/또는 디스플레이를 포함할 수도 있다. 사용자 인터페이스 (822) 는 디바이스 (802) 의 사용자에게 정보를 전달하고 그리고/또는 사용자로부터 입력을 수신하는 임의의 엘리먼트 또는 콤포넌트를 포함할 수도 있다. 일 실시형태에서, 사용자 인터페이스 (822) 는, (예를 들어, USB 포트로부터, 네트워크 인터페이스로부터, 디스플레이로, 마이크로폰 등으로부터) 그것이 입력을 수신하고 있거나 또는 출력을 전송하고 있는 경우에 활성 상태인 것으로 간주될 수도 있다. 사용자 인터페이스 (822) 는, 임계 시간 주기 (예를 들어, 1 초, 1 분, 5 분 등) 내에 그것이 입력을 수신했거나 또는 출력을 전송한 경우에 활성 상태인 것으로 간주될 수도 있다. 사용자 인터페이스 (822) 는 그것이 액티브가 아니면 비활성 또는 아이들 상태인 것으로 간주될 수도 있다.
사용자 인터페이스 (822) 가 어떠한 입력도 수신하지 않는 경우, 디바이스 (802) 는 백그라운드 상태 또는 아이들 모드에 있는 것으로 간주될 수도 있다. 백그라운드 상태에서는, 디스플레이가 오프 상태일 수도 있고, 디바이스 (802) 의 하나 이상의 기능들이 디스에이블될 수도 있다. 일 실시형태에서, 사용자 인터페이스 (822) 입력에 응답하여 개시되지 않는 디바이스 (802) 의 프로세스들 및 통신은 백그라운드 또는 아이들 프로세스들 또는 통신으로 지칭될 수도 있다.
사용자 인터페이스 (822) 가 입력을 수신할 때, 디바이스 (802) 는 포어그라운드 상태 또는 활성 모드에 있는 것으로 간주될 수도 있다. 포어그라운드 상태에서는, 디스플레이가 온 상태일 수도 있고, 입력이 입력 아이들 주기 내에서 수신될 수도 있다. 입력 아이들 주기는 설정가능 (configurable) 할 수도 있고, 예를 들어 1 분일 수도 있다. 일 실시형태에서, 백그라운드 프로세스들 및 통신은 활성 모드에서 발생할 수도 있지만, 사용자 인터페이스 (822) 입력에 직접적으로 응답하여 개시되지 않을 수도 있다.
디바이스 (802) 의 다양한 콤포넌트들은 버스 시스템 (826) 에 의해 함께 커플링될 수도 있다. 버스 시스템 (826) 은 데이터 버스 뿐 아니라, 예를 들어 데이터 버스 외의 전력 버스, 제어 신호 버스, 및 상태 신호 버스를 포함할 수도 있다. 당업자라면, 디바이스 (802) 의 콤포넌트들이 몇몇 다른 메커니즘을 이용하여 함께 커플링될 수도 있고 또는 입력들을 수용하거나 서로에게 제공할 수도 있다는 것을 인식할 것이다.
다수의 개별적인 콤포넌트들이 도 8 에 예시되어 있지만, 당업자라면, 콤포넌트들 중 하나 이상이 결합될 수도 있고 또는 공통으로 구현될 수도 있다는 것을 인식할 것이다. 예를 들어, 프로세서 (804) 는 프로세서 (804) 와 관련하여 전술된 기능성을 구현할 뿐 아니라 신호 검출기 (818) 및/또는 DSP (820) 에 관하여 전술된 기능성을 구현하는 데 사용될 수도 있다. 또한, 도 8 에 예시된 콤포넌트들의 각각은 복수의 별도의 엘리먼트들을 사용하여 구현될 수도 있다.
도 9 는 통신 통계 자료를 수집하는 예시적인 방법의 플로우차트 (900) 를 나타낸다. 플로우차트 (900) 의 방법이 도 8 과 관련하여 전술된 디바이스 (802) 를 참조하여 여기서 설명되지만, 당업자라면, 플로우차트 (900) 의 방법이 도 1 과 관련하여 전술된 무선 디바이스 (102), 도 2 와 관련하여 전술된 무선 디바이스 (202), 및/또는 임의의 다른 적합한 디바이스에 의해 구현될 수도 있다는 것을 인식할 것이다. 일 실시형태에서, 플로우차트 (900) 에서의 단계들은 송신기 (810), 수신기 (812), 메모리 (806), 및 사용자 인터페이스 (822) 와 함께 프로세서 (805) 에 의해 수행될 수도 있다. 플로우차트 (900) 의 방법이 특정 순서를 참조하여 여기서 설명되지만, 다양한 실시형태들에서, 본 명세서에서의 블록들은 상이한 순서로 수행될 수도 있고, 또는 생략될 수도 있으며, 추가 블록들이 추가될 수도 있다.
먼저, 블록 905 에서, 디바이스 (802) 는 수신기 (812) 를 통해 무시 리스트를 수신한다. 프로세서 (804) 는 메모리 (806) 에 무시 리스트를 저장할 수도 있다. 일 실시형태에서, 디바이스 (802) 는 서버 (110) 로부터 무시 리스트를 수신한다. 일 실시형태에서, 무시 리스트는 디바이스 (802) 에서 사전 준비될 수도 있다. 도 8 과 관련하여 전술된 바와 같이, 무시 리스트는 디바이스 (802) 가 통신 통계 자료를 모니터링 또는 기록해서는 안 되는 하나 이상의 애플리케이션들을 특정할 수도 있다. 다양한 실시형태들에서, 디바이스 (802) 는 또한 포함 리스트 및/또는 배제 리스트와 같은 다른 정보를 서버 (110) 로부터 수신할 수도 있다.
다음, 블록 910 에서, 프로세서 (804) 가 프로세서 (804) 상에서 실행되는 애플리케이션으로부터 하나 이상의 통신을 인터셉트한다. 프로세서 (804) 가 통신 관리 시스템 (108) 및/또는 접속성 엔진 (208) 에 관련하여 전술된 설비들을 통해 통신을 인터셉트할 수도 있다. 일 실시형태에서, DSP (820), 신호 검출기 (818), 송신기 (810), 및/또는 송수신기 (814) 가 통신을 인터셉트할 수도 있다.
그 후, 블록 915 에서, 프로세서 (804) 가 디바이스 상태를 결정한다. 디바이스는 백그라운드 상태 및 포어그라운드 상태를 포함할 수도 있는 적어도 2 개의 상태들 중 하나에 있을 수도 있다. 프로세서 (804) 는 사용자 인터페이스 (822) 를 통해 디바이스의 상태를 결정할 수도 있다.
이어서, 블록 920 에서, 프로세서 (804) 는 디바이스가 백그라운드 상태에 있는지를 결정한다. 디바이스가 포어그라운드 상태에 있다면, 블록 925 에서 프로세서 (804) 는 통신 통계 자료를 기록하지 않고 추가 통신을 기다린다. 디바이스가 백그라운드 상태에 있으면, 프로세서 (804) 는 블록 930 을 진행시킨다.
일 실시형태에서, 블록 920 에서, 프로세서 (804) 는 인터셉트된 통신이 백그라운드 통신인지를 결정한다. 인터셉트된 통신이 백그라운드 통신이 아니면, 블록 925 에서 프로세서 (804) 는 통신 통계 자료를 기록하지 않고 추가 통신을 기다린다. 인터셉트된 통신이 백그라운드 통신이면, 프로세서 (804) 는 블록 930 을 진행시킨다.
그 후, 블록 930 에서, 프로세서 (804) 는 인터셉트된 통신과 관련된 애플리케이션이 서버 (110) 로부터 수신된 무시 리스트에 있는지를 결정한다. 인터셉트된 통신을 생성한 애플리케이션이 무시 리스트 상에 있으면, 프로세서 (804) 는 블록 925 에서 통신 통계 자료를 기록하지 않고 추가 통신을 기다린다. 인터셉트된 통신을 생성한 애플리케이션이 무시 리스트 상에 없다면, 프로세서 (804) 는 블록 935 을 진행시킨다.
그 후, 블록 935 에서, 프로세서 (804) 는 인터셉트된 애플리케이션 통신에 기초하여 하나 이상의 통신 통계 자료를 기록한다. 통신 통계 자료는, 예를 들어 아이들 모드 동안 활성 상태에 있는 애플리케이션들에 대한 애플리케이션 식별자 (예컨대, 전체 또는 부분 명칭 또는 수치 식별자), 애플리케이션에 의해 전송되는 데이터의 양, 애플리케이션이 얼마나 많은 커넥션들을 개시했는가, 애플리케이션에 의해 이루어진 전송 제어 프로토콜 (TCP) 요청들의 수, 전송된 사용자 데이터그램 프로토콜 (UDP) 패킷들의 수, 전송된 도메인 명칭 서비스 (DNS) 요청들의 수 등을 포함할 수도 있다. TCP 요청 통계 자료는 "접속하다", "기록하다", "FIN", "RST" 등과 같은 특정 요청들에 관한 통계 자료를 포함할 수도 있다. 통신 통계 자료는 원시 데이터, 또는 특정된 시간 윈도우 동안의 요청들 또는 패킷들의 최소, 최대, 평균, 중간, 표준 편차 등과 같은 계산된 통계 자료를 포함할 수도 있다. 통신 통계 자료는 또한, 예를 들어 디바이스 식별자, SIM 카드 식별자, 홈 네트워크 아이덴티티, 모바일 지역 코드, 모바일 네트워크 코드, 디바이스 (802) 의 로케이션 등과 같은 부가적인 정보를 포함할 수도 있다. 프로세서 (804) 는 기록된 통신 통계 자료를 메모리 (806) 에 저장할 수도 있고, 기록된 통신 통계 자료를 DSP (820) 를 통해 압축, 암호화, 또는 다른 방식으로 인코딩할 수도 있다.
다음, 블록 940 에서, 프로세서 (804)는 축적된 통신 통계 자료를 리포트할 것인지를 결정한다. 프로세서 (804) 는 프로세서 (804) 로 하여금 통신 통계 자료를 서버 (110) 에 리포트하게 할 기록된 통계 자료의 임계 수와 같은 리포팅 기준들을 결정할 수도 있다. 일 실시형태에서, 프로세서 (804) 는 기록된 통신 통계 자료를, 이를테면 매시, 매일, 매주, 매달 등과 같은 주기적인 단위로 리포트할 수도 있다. 일 실시형태에서, 프로세서 (804) 는, 기록된 통계 자료의 수가 임계 값에 도달할 때 및/또는 기록된 통계 자료의 사이즈가 임계 값에 도달할 때, 기록된 통신 통계 자료를 리포트할 수도 있다. 일 실시형태에서, 프로세서 (804) 는 특정 라디오, 예를 들어 Wi-Fi 또는 셀룰러 라디오가 인에이블할 때에만 통계 자료를 리포트할 수도 있다. 프로세서 (804) 는 전술된 리포팅 기준들 중 하나 이상을 결합시킬 수도 있고, 또는 추가적인 기준들을 이용할 수도 있다. 일 실시형태에서, 프로세서 (804) 는 서버 (110) 로부터의 통신 통계 자료를 어떻게 그리고 언제 리포트할 것인지에 관한 명령들을 수신할 수도 있다. 프로세서 (804) 가, 리포팅 기준들이 충족되지 않은 것으로 결정하면, 블록 925 에서 프로세서는 기록된 통신 통계 자료를 리포트하지 않고 기다린다. 프로세서 (804) 가, 리포팅 기준들이 충족된 것으로 결정하면, 프로세서는 블록 945 를 진행시킨다.
마지막으로, 블록 945 에서, 프로세서 (804) 는 송신기 (810) 및/또는 송수신기 (814) 를 통해, 기록된 통신 통계 자료를 서버 (110) 에 전송한다. 프로세서 (804) 는, HTTP POST 방법, 파일 전송 프로토콜 (FTP) 전송을 통해 이메일로서 또는 임의의 다른 통신 수단을 통해, 기록된 통신 통계 자료를 전송할 수도 있다. 프로세서 (804) 가 기록된 통신 통계 자료를 서버 (110) 에 전송한 후, 프로세서 (804) 는 기록된 통신 통계 자료를 메모리 (806) 로부터 삭제할 수도 있고, 또는 기록된 통신 통계 자료를 이후의 사용을 위해 보유할 수도 있다. 기록된 통신 통계 자료를 서버 (110) 에 전송할 때, 프로세서 (804) 는 무시 리스트, 배제 리스트, 포함 리스트, 통신 통계 자료를 언제 리포트할 것인지에 관한 명령들의 리스트, 및 통신 통계 자료를 어떻게 기록할 것인지에 관한 명령들의 리스트 중 하나 이상을 포함할 수도 있는 응답을 서버 (110) 로부터 수신할 수도 있다.
도 10 은 통신 통계 자료를 분석하는 예시적인 방법의 플로우차트 (1000) 를 도시한다. 플로우차트 (100) 의 방법이 도 8 과 관련하여 전술된 디바이스 (802) 를 참조하여 여기서 설명되고 있지만, 당업자라면, 플로우차트 (100) 의 방법은 도 1 과 관련하여 전술된 서버 (110) 또는 임의의 다른 적합한 디바이스에 의해 구현될 수도 있다는 것을 인식할 것이다. 일 실시형태에서, 플로우차트 (1000) 는 송신기 (810), 수신기 (812), 및 메모리 (806) 와 함께 프로세서 (805) 에 의해 수행될 수도 있다. 플로우차트 (1000) 의 방법이 여기서 특정 순서를 참조하여 설명되지만, 다양한 실시형태들에서, 본 명세서에서의 블록들은 상이한 순서로 수행될 수도 있고, 또는 생략될 수도 있으며, 추가 블록들이 추가될 수도 있다.
먼저, 블록 1005 에서, 프로세서 (804) 는 무선 디바이스 (102) 로부터 통신 통계 자료를 수신한다. 통신 통계 자료는, 예를 들어 애플리케이션 식별자 (예컨대, 전체 또는 부분 명칭 또는 수치 식별자), 애플리케이션에 의해 이루어진 전송 제어 프로토콜 (TCP) 요청들의 수, 전송된 사용자 데이터그램 프로토콜 (UDP) 패킷들의 수, 전송된 도메인 명칭 서비스 (DNS) 요청들의 수 등을 포함할 수도 있다. TCP 요청 통계 자료는 "접속하다", "기록하다", "FIN", "RST" 등과 같은 특정 요청들에 관한 통계 자료를 포함할 수도 있다. 통신 통계 자료는 원시 데이터, 또는 특정된 시간 윈도우 동안의 요청들 또는 패킷들의 최소, 최대, 평균, 중간, 표준 편차 등과 같은 계산된 통계 자료를 포함할 수도 있다. 통신 통계 자료는 또한, 예를 들어 디바이스 식별자, SIM 카드 식별자, 홈 네트워크 아이덴티티, 모바일 지역 코드, 모바일 네트워크 코드, 디바이스 (802) 의 로케이션 등과 같은 부가적인 정보를 포함할 수도 있다. 프로세서 (804) 는 수신된 통신 통계 자료를 메모리 (806) 에 저장할 수도 있고, 수신된 통신 통계 자료를 DSP (820) 를 통해 압축, 암호화, 또는 다른 방식으로 인코딩할 수도 있다.
다음, 블록 1010 에서, 프로세서 (804) 가 무시 리스트를 생성한다. 프로세서 (804) 는 디바이스 (102) 로부터 수신된 통신 통계 자료 및/또는 다른 시간에 그리고/또는 다른 디바이스로부터 수신된 통계 자료에 기초하여 무시 리스트를 생성할 수도 있다. 예를 들어, 프로세서 (804) 는, 일단 애플리케이션에 대한 임계 수의 통계 자료를 수신했다면, 무시 리스트에 애플리케이션 식별자를 추가시킬 수도 있다. 일 실시형태에서, 무시 리스트는 이미 분석된 애플리케이션들로 초기에 시드될 수도 있다. 프로세서 (804) 는 애플리케이션 통신 거동이 시간의 경과에 따라 변화했는지를 학습하기 위해 무시 리스트로부터 하나 이상의 애플리케이션 식별자들을 가끔 제거할 수도 있다.
그 후, 블록 1015 에서, 프로세서 (804) 는 포함 리스트를 생성한다. 프로세서 (804) 는 디바이스 (102) 로부터 수신된 통신 통계 자료 및/또는 다른 시간에 그리고/또는 다른 디바이스로부터 수신된 통계 자료에 기초하여 포함 리스트를 생성할 수도 있다. 예를 들어, 프로세서 (804) 는 일단 애플리케이션에 의한 통신 시도들의 기록된 수가 임계치 아래로 떨어지면, 포함 리스트에 애플리케이션 식별자를 추가시킬 수도 있다. 일 실시형태에서, 포함 리스트는 지연 내성인 것으로 이미 결정된 애플리케이션들로 초기에 시드될 수도 있다. 프로세서 (804) 는, 예를 들어 애플리케이션이 지연 내성인 것을 수신된 통신 통계 자료가 나타낸다면, 포함 리스트로부터 하나 이상의 애플리케이션 식별자들을 제거할 수도 있다.
이어서, 블록 1020 에서, 프로세서 (804) 는 배제 리스트를 생성한다. 프로세서 (804) 는 디바이스 (102) 로부터 수신된 통신 통계 자료 및/또는 다른 시간에 그리고/또는 다른 디바이스들로부터 수신된 통계 자료에 기초하여 배제 리스트를 생성할 수도 있다. 예를 들어, 프로세서 (804) 는 일단 애플리케이션에 의한 통신 시도들의 기록된 수가 임계치를 초과하면, 배제 리스트에 애플리케이션 식별자를 추가시킬 수도 있다. 일 실시형태에서, 배제 리스트는 지연 내성인 것으로 이미 결정된 애플리케이션들로 초기에 시드될 수도 있다. 프로세서 (804) 는, 예를 들어 수신된 통신 통계 자료가, 애플리케이션이 지연 내성인 것을 나타낸다면, 배제 리스트로부터 하나 이상의 애플리케이션 식별자들을 제거할 수도 있다.
이어서, 블록 1025 에서, 프로세서 (804) 는 리뷰 리스트를 생성한다. 프로세서 (804) 는 디바이스 (102) 로부터 수신된 통신 통계 자료 및/또는 다른 시간에 그리고/또는 다른 디바이스로부터 수신된 통계 자료에 기초하여 리뷰 리스트를 생성할 수도 있다. 예를 들어, 프로세서 (804) 는 일단 애플리케이션에 의한 통신 시도들의 기록된 수가 임계치 아래로 떨어지면, 리뷰 리스트에 애플리케이션 식별자를 추가시킬 수도 있다. 일 실시형태에서, 리뷰 리스트는 포함 리스트에 대한 전조 (precursor) 일 수도 있다. 예를 들어, 프로세서 (804) 는 추가 분석을 위해 리뷰 리스트에 후보 애플리케이션들을 추가시킬 수도 있다. 추가 분석은 프로세서 (804) 에 의해 그리고/또는 사용자 인터페이스 (822) 를 통해 수동으로 수행될 수도 있다. 일 실시형태에서, 프로세서 (804) 는 사용자 인터페이스 (822) 로부터의 신호에 따라 애플리케이션을 리뷰 리스트로부터 포함 리스트로 이동시킬 수도 있다.
마지막으로, 블록 1035 에서, 프로세서 (804) 는 전술된 리스트들 중 하나 이상을, 송신기 (810) 및/또는 송수신기 (814) 를 통해, 무선 디바이스 (102) 로 송신한다. 프로세서 (804) 는, 예를 들어 HTTP POST 응답을 통해, 수신된 통신 통계 자료에 응답하여 리스트를 송신할 수도 있다. 일 실시형태에서, 프로세서 (804) 는 리스트들을 무선 디바이스 (102) 에 푸시할 수도 있다. 전술된 리스트들 외에도, 프로세서 (804) 는 통신 통계 자료를 언제 리포트할 것인지에 관한 명령들의 리스트 및/또는 통신 통계 자료를 어떻게 기록할 것인지에 관한 명령들의 리스트를 송신할 수도 있다.
도 11 은 통신 통계 자료를 수집하는 예시적인 방법의 플로우차트 (1100) 을 나타낸다. 플로우차트 (1100) 의 방법이 도 8 과 관련하여 전술된 디바이스 (802) 를 참조하여 여기서 설명되지만, 당업자라면, 플로우차트 (1100) 의 방법이 도 1 과 관련하여 전술된 무선 디바이스 (102), 도 2 와 관련하여 전술된 무선 디바이스 (202), 및/또는 임의의 다른 적합한 디바이스에 의해 구현될 수도 있다는 것을 인식할 것이다. 일 실시형태에서, 플로우차트 (1100) 에서의 단계들은 송신기 (810), 수신기 (812), 메모리 (806), 및 사용자 인터페이스 (822) 와 함께 프로세서 (805) 에 의해 수행될 수도 있다. 플로우차트 (1100) 의 방법이 여기서 특정 순서를 참조하여 설명되지만, 다양한 실시형태들에서, 본 명세서에서의 블록들은 상이한 순서로 수행될 수도 있고, 또는 생략될 수도 있으며, 추가 블록들이 추가될 수도 있다.
먼저, 블록 1105 에서, 디바이스 (802) 는 수신기 (812) 를 통해 무시 리스트를 수신한다. 프로세서 (804) 는 메모리 (806) 에 무시 리스트를 저장할 수도 있다. 일 실시형태에서, 디바이스 (802) 는 서버 (110) 로부터 무시 리스트를 수신한다. 도 8 과 관련하여 전술된 바와 같이, 무시 리스트는 디바이스 (802) 가 통신 통계 자료를 모니터링 또는 기록해서는 안 되는 하나 이상의 애플리케이션들을 특정할 수도 있다. 다양한 실시형태들에서, 디바이스 (802) 는 또한 포함 리스트 및/또는 배제 리스트와 같은 서버 (110) 로부터의 다른 정보를 수신할 수도 있다.
다음, 블록 1110 에서, 프로세서 (804) 가 프로세서 (804) 상에서 실행되는 애플리케이션으로부터 하나 이상의 통신을 인터셉트한다. 프로세서 (804) 가 통신 관리 시스템 (108) 및/또는 접속성 엔진 (208) 에 관련하여 전술된 설비들을 통해 통신을 인터셉트할 수도 있다. 일 실시형태에서, DSP (820), 신호 검출기 (818), 송신기 (810), 및/또는 송수신기 (814) 가 통신을 인터셉트할 수도 있다.
그 후, 블록 1115 에서, 프로세서 (804)는 인터셉트된 통신과 관련된 애플리케이션이 서버 (110) 로부터 수신된 무시 리스트에 있는지를 결정한다. 인터셉트된 통신을 생성한 애플리케이션이 무시 리스트 상에 있으면, 블록 1120 에서 프로세서 (804) 는 통신 통계 자료를 기록하지 않고 추가 통신을 기다린다. 인터셉트된 통신을 생성한 애플리케이션이 무시 리스트 상에 없다면, 프로세서 (804) 는 블록 1125 를 진행시킨다.
그 후, 블록 1125 에서, 프로세서 (804) 가 디바이스 (802) 의 상태를 결정한다. 사용자 인터페이스 (826) 는 백그라운드 상태 및 포어그라운드 상태를 포함할 수도 있는 적어도 2 개의 상태들 중 하나에 있을 수도 있다. 프로세서 (804) 는 사용자 인터페이스 (826) 에 대한 하나 이상의 입력들의 존재 또는 부재에 기초하여 사용자 인터페이스 (822) 의 상태를 결정할 수도 있다. 일 실시형태에서, 프로세서 (804) 는, 인터셉트된 것이, 사용자 인터페이스 (822) 를 통한 입력에 응답하여 생성되는 것과는 반대로, 애플리케이션에 의해 자동으로 생성된 백그라운드 통신인지를 결정할 수도 있다.
이어서, 블록 1130 에서, 프로세서 (804) 는 네트워크 인터페이스의 상태를 결정한다. 일 실시형태에서, 네트워크 인터페이스는 송수신기 (814), 송신기 (810), 및/또는 수신기 (812) 를 포함할 수도 있다. 네트워크 인터페이스는 백그라운드 상태 및 포어그라운드 상태를 포함할 수도 있는 적어도 2 개의 상태들 중 하나에 있을 수도 있다. 프로세서 (804) 는 송수신기 (814) 의 커넥션 상태 및/또는 라디오 전력에 기초하여 사용자 인터페이스 (822) 의 상태를 결정할 수도 있다. 일 실시형태에서, 프로세서 (804) 는 복수의 네트워크 인터페이스 상태들을 결정할 수도 있다.
그 후, 블록 1135 에서, 프로세서 (804) 는 인터셉트된 애플리케이션 통신에 기초하여 하나 이상의 통신 통계 자료를 기록한다. 통신 통계 자료는, 예를 들어 백그라운드 모드 동안 활성 상태에 있는 애플리케이션들에 대한 애플리케이션 식별자 (예컨대, 전체 또는 부분 명칭 또는 수치 식별자), 애플리케이션에 의해 전송되는 데이터의 양, 애플리케이션이 얼마나 많은 커넥션들을 개시했는가, 애플리케이션에 의해 이루어진 전송 제어 프로토콜 (TCP) 요청들의 수, 전송된 사용자 데이터그램 프로토콜 (UDP) 패킷들의 수, 전송된 도메인 명칭 서비스 (DNS) 요청들의 수 등을 포함할 수도 있다. TCP 요청 통계 자료는 "접속하다", "기록하다", "FIN", "RST" 등과 같은 특정 요청들에 관한 통계 자료를 포함할 수도 있다. 통신 통계 자료는 원시 데이터, 또는 특정된 시간 윈도우 동안의 요청들 또는 패킷들의 최소, 최대, 평균, 중간, 표준 편차 등과 같은 계산된 통계 자료를 포함할 수도 있다. 통신 통계 자료는 또한, 예를 들어 디바이스 식별자, SIM 카드 식별자, 홈 네트워크 아이덴티티, 모바일 지역 코드, 모바일 네트워크 코드, 디바이스 (802) 의 로케이션 등과 같은 부가적인 정보를 포함할 수도 있다.
프로세서 (804) 는 기록된 통신 통계 자료를 메모리 (806) 에 저장할 수도 있고, 기록된 통신 통계 자료를 DSP (820) 를 통해 압축, 암호화, 또는 다른 방식으로 인코딩할 수도 있다. 프로세서 (804) 는 사용자 인터페이스 (826) 및/또는 네트워크 인터페이스의 상태들에 기초하여 통신 통계 자료를 개별적으로 저장할 수도 있다. 예를 들어, 프로세서 (804) 는 무선 디바이스 (802) 의 다음 상태들: 사용자 인터페이스 (826) 가 활성 상태이고 네트워크 인터페이스가 활성 상태인 것, 사용자 인터페이스 (826) 가 활성 상태이고 네트워크 인터페이스가 비활성 상태인 것, 사용자 인터페이스 (826) 가 비활성 상태이고 네트워크 인터페이스가 활성 상태인 것, 및/또는 사용자 인터페이스 (826) 가 비활성 상태이고 네트워크 인터페이스가 비활성 상태인 것 각각에 대해 개별적으로 통신 통계 자료를 저장할 수도 있다. 여기서 사용되는 바와 같이, 프로세서 (804) 는 사용자 인터페이스 (826) 및/또는 네트워크 인터페이스 등의 상태로 각각의 통신 통계 자료를 태그하는 것에 의해 복수의 상이한 데이터베이스들을 유지시킴으로써 "개별적으로" 통신 통계 자료를 저장할 수도 있다. 당업자라면, 통신 통계 자료의 개별적인 저장이 무선 디바이스 (802) 의 상이한 상태들 동안에 기록된 통신 통계 자료들 간의 구별을 가능하게 하는 방식으로 달성될 수 있다는 것을 인식할 것이다. 다양한 실시형태들에서, 프로세서 (804) 는, 예를 들어 전력 상태, 시간 및/또는 날짜를 나타내는 시계 상태, 네트워크 액세스 상태 등과 같은 무선 디바이스 (802) 의 다른 상태들에 기초하여 통계 자료를 개별적으로 저장할 수도 있다.
다음, 블록 1140 에서, 프로세서 (804) 는 축적된 통신 통계 자료를 리포트할 것인지를 결정한다. 프로세서 (804) 는 프로세서 (804) 로 하여금 통신 통계 자료를 서버 (110) 에 리포트하게 할 기록된 통계 자료의 임계 수와 같은 리포팅 기준들을 결정할 수도 있다. 일 실시형태에서, 프로세서 (804) 는 기록된 통신 통계 자료를, 이를테면 매시, 매일, 매주, 매달 등과 같은 주기적인 단위로 리포트할 수도 있다. 일 실시형태에서, 프로세서 (804) 는, 기록된 통계 자료의 수가 임계 값에 도달할 때 및/또는 기록된 통계 자료의 사이즈가 임계 값에 도달할 때, 기록된 통신 통계 자료를 리포트할 수도 있다. 일 실시형태에서, 프로세서 (804) 는 특정 라디오, 예를 들어 Wi-Fi 또는 셀룰러 라디오가 인에이블할 때에만 통계 자료를 리포트할 수도 있다. 프로세서 (804) 는 전술된 리포팅 기준들 중 하나 이상을 결합시킬 수도 있고, 또는 추가적인 기준들을 이용할 수도 있다. 일 실시형태에서, 프로세서 (804) 는 서버 (110) 로부터의 통신 통계 자료를 어떻게 그리고 언제 리포트할 것인지에 관한 명령들을 수신할 수도 있다. 프로세서 (804) 가, 리포팅 기준들이 충족되지 않은 것으로 결정하면, 블록 1125 에서 프로세서는 기록된 통신 통계 자료를 리포트하지 않고 기다린다. 프로세서 (804) 가, 리포팅 기준들이 충족된 것으로 결정하면, 프로세서는 블록 1145 를 진행시킨다.
마지막으로, 블록 1145 에서, 프로세서 (804) 는 송신기 (810) 및/또는 송수신기 (814) 를 통해, 기록된 통신 통계 자료를 서버 (110) 에 전송한다. 프로세서 (804) 는, HTTP POST 방법, 파일 전송 프로토콜 (FTP) 전송을 통해 이메일로서 또는 임의의 다른 통신 수단을 통해, 기록된 통신 통계 자료를 전송할 수도 있다. 프로세서 (804) 가 기록된 통신 통계 자료를 서버 (110) 에 전송한 후, 프로세서 (804) 는 기록된 통신 통계 자료를 메모리 (806) 로부터 삭제할 수도 있고, 또는 기록된 통신 통계 자료를 이후의 사용을 위해 보유할 수도 있다. 기록된 통신 통계 자료를 서버 (110) 에 전송할 때, 프로세서 (804) 는 무시 리스트, 배제 리스트, 포함 리스트, 통신 통계 자료를 언제 리포트할 것인지에 관한 명령들의 리스트, 및 통신 통계 자료를 어떻게 기록할 것인지에 관한 명령들의 리스트 중 하나 이상을 포함할 수도 있는 응답을 서버 (110) 로부터 수신할 수도 있다.
도 12 는 통신 액세스 정책을 적용하는 예시적인 방법의 플로우차트 (1200) 를 도시한다. 일 실시형태에서, 플로우차트 (1200) 의 하나 이상의 양태들은 도 3 의 블록 308 에 대응할 수 있다. 플로우차트 (1200) 의 방법이 여기서 도 8 과 관련하여 전술된 디바이스 (802) 를 참조하여 설명되지만, 당업자라면, 플로우차트 (1200) 의 방법이 도 1 과 관련하여 전술된 무선 디바이스 (132), 도 2 와 관련하여 전술된 무선 디바이스 (202), 및/또는 임의의 다른 적합한 디바이스에 의해 구현될 수도 있다는 것을 인식할 것이다. 일 실시형태에서, 플로우차트 (1200) 에서의 단계들은 송신기 (810), 수신기 (812), 메모리 (806), 및 사용자 인터페이스 (822) 와 함께 프로세서 (805) 에 의해 수행될 수도 있다. 플로우차트 (1200) 의 방법이 여기서 특정 순서를 참조하여 설명되지만, 다양한 실시형태들에서, 본 명세서에서의 블록들은 상이한 순서로 수행될 수도 있고, 또는 생략될 수도 있으며, 추가 블록들이 추가될 수도 있다.
먼저, 블록 1205 에서, 디바이스 (802) 는 수신기 (812) 를 통해 통신 액세스 정책을 수신한다. 프로세서 (804) 는 메모리 (806) 에 통신 액세스 정책을 저장할 수도 있다. 일 실시형태에서, 디바이스 (802) 는 서버 (110) 로부터 통신 액세스 정책을 수신한다. 도 7 및 도 8 과 관련하여 전술된 바와 같이, 통신 액세스 정책은 디바이스 (802) 가 애플리케이션 통신을 어떻게 지연시켜야 하는지를 특정할 수도 있다.
다음, 블록 1210 에서, 프로세서 (804) 가 프로세서 (804) 상에서 실행되는 애플리케이션으로부터 하나 이상의 통신을 인터셉트한다. 프로세서 (804) 가 통신 관리 시스템 (138) 및/또는 접속성 엔진 (208) 에 관련하여 전술된 설비들을 통해 통신을 인터셉트할 수도 있다. 일 실시형태에서, DSP (820), 신호 검출기 (818), 송신기 (810), 및/또는 송수신기 (814) 가 통신을 인터셉트할 수도 있다.
그 후, 블록 1215 에서, 프로세서 (804) 가 디바이스 상태를 결정한다. 디바이스는 백그라운드 상태 및 포어그라운드 상태를 포함할 수도 있는 적어도 2 개의 상태들 중 하나에 있을 수도 있다. 일 실시형태에서, 포어그라운드 상태는 포어그라운드 상태일 수 있고, 백그라운드 상태는 백그라운드 상태일 수 있다. 프로세서 (804) 는 사용자 인터페이스 (822) 를 통해 디바이스의 상태를 결정할 수도 있다. 일 실시형태에서, 프로세서 (804) 는, 인터셉트된 것이, 사용자 인터페이스 (822) 를 통한 입력에 응답하여 생성되는 것과는 반대로, 애플리케이션에 의해 자동으로 생성된 백그라운드 통신인지를 결정할 수도 있다.
이어서, 블록 1220 에서, 프로세서 (804) 는 디바이스 (802) 가 백그라운드 상태에 있는지를 결정한다. 디바이스가 백그라운드 상태에 있지 않으면, 프로세서 (804) 는 애플리케이션 통신을 지연시키지 않고, 통신이 블록 1225 에서 진행되게 한다. 디바이스가 백그라운드 상태에 있으면, 프로세서 (804) 는 블록 1230 을 진행시킨다. 일 실시형태에서, 블록들 1215 및 1220 은 생략될 수 있고, 애플리케이션 통신은 디바이스 (802) 가 백그라운드 상태에 있는지와는 무관하게 지연될 수도 있다.
그 후, 블록 1230 에서, 프로세서 (804) 는 송신 윈도우 (630) 가 개방되는지를 결정한다. 도 6 및 도 7 과 관련하여 전술된 바와 같이, 프로세서 (804) 는 통신 액세스 정책에 기초하여 송신 윈도우 (630) 를 개방시킬 것인지를 결정할 수 있다. 예를 들어, 프로세서 (804) 는 인터셉트된 애플리케이션 통신이 포함 리스트에 없다면 송신 윈도우 (630) 를 개방시킬 수도 있다. 일 실시형태에서, 송신 윈도우 (630) 가 개방되는지를 결정하는 것은, 애플리케이션 통신, 이벤트, 또는 다른 트리거에 응답하여 송신 윈도우 (630) 를 개방시키는 것을 포함할 수 있다. 송신 윈도우 (630) 가 개방되면, 프로세서 (804) 는 애플리케이션 통신을 지연시키지 않으며, 통신이 블록 1225 에서 진행되게 한다. 송신 윈도우 (630) 가 폐쇄되면, 프로세서 (804) 는 블록 1235 를 진행시킨다.
그 후, 블록 1235 에서, 프로세서 (804) 는 통신 액세스 정책에 따라, 인터셉트된 통신을 지연시킨다. 예를 들어, 프로세서 (804) 는: 통신이 지연될 수도 있는 애플리케이션들의 리스트 ("포함 리스트"), 통신이 지연되지 않을 수도 있는 애플리케이션들의 리스트 ("배제 리스트"), 통신이 지연될 수도 있고 또는 지연되지 않을 수도 있는 통신 타입들의 리스트, 통신이 지연될 수도 있고 또는 지연되지 않을 수도 있는 네트워크 조건들의 리스트, 통신이 지연될 수도 있고 지연되지 않을 수도 있는 시간들의 표시, 및 통신이 지연될 수도 있고 또는 지연되지 않을 수도 있는 로케이션들의 표시 중 하나 이상의 지연 기준들을 결정할 수도 있다. 프로세서 (804) 는 결정된 지연 기준들에 기초하여 애플리케이션 통신을 가능하게 하거나 또는 지연시킬 것이다. 몇몇 실시형태들에서, 프로세서 (804) 는 추가적인 지연 기준들을 결정할 수도 있다. 프로세서 (804) 가, 애플리케이션 통신이 허용되어야 하는 것으로 결정하면, 프로세서 (804) 는 블록 1225 를 진행시킨다. 프로세서 (804) 가, 애플리케이션 통신이 지연되어야 하는 것으로 결정하면, 프로세서 (804) 는 블록 1210 을 진행시킨다.
도 13 은 통신 액세스 정책을 구현하도록 구성된 다른 예시적인 디바이스 (1300) 를 도시한다. 디바이스 (1300) 는 수신 모듈 (1310), 지연 모듈 (1320), 및 허용 모듈 (1330) 을 포함한다. 수신 모듈 (1310) 은 도 12 에 예시된 블록 1205 와 관련하여 전술된 기능들 중 하나 이상을 수행하도록 구성될 수도 있다. 수신 모듈 (1310) 은 도 8 과 관련하여 전술된 수신기 (812), 프로세서 (804), 송수신기 (814), 및 메모리 (806) 중 하나 이상에 대응할 수도 있다. 수신 모듈 (1310) 은 또한 도 2 와 관련하여 전술된 TX/RX 라디오 (212) 및 프로세서 (202) 중 하나 이상에 대응할 수도 있다.
지연 모듈 (1320) 은 도 12 에 예시된 블록 1235 와 관련하여 전술된 기능들 중 하나 이상을 수행하도록 구성될 수도 있다. 지연 모듈 (1320) 은 도 8 과 관련하여 전술된 프로세서 (804) 및 송신기 (810) 중 하나 이상에 대응할 수도 있다. 지연 모듈 (1320) 은 또한 도 2 와 관련하여 전술된 TX/RX 라디오 (212), 접속성 엔진 (208), 네트워킹 모듈 (210), 및 프로세서 (202) 중 하나 이상에 대응할 수도 있다.
허용 모듈 (1330) 은 도 12 에 예시된 블록 1225 와 관련하여 전술된 기능들 중 하나 이상을 수행하도록 구성될 수도 있다. 허용 모듈 (1330) 은 도 8 과 관련하여 전술된 프로세서 (804) 및 송신기 (810) 중 하나 이상에 대응할 수도 있다. 허용 모듈 (1330) 은 또한 도 2 와 관련하여 전술된 TX/RX 라디오 (212), 접속성 엔진 (208), 네트워킹 모듈 (210), 및 프로세서 (202) 중 하나 이상에 대응할 수도 있다.
당업자라면, 정보 및 신호들이 임의의 다양한 상이한 기술들 및 기법들을 사용하여 표현될 수도 있음을 이해할 것이다. 예를 들어, 위의 설명 전반에 걸쳐서 언급될 수도 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 입자들, 광학 필드들 또는 입자들, 또는 이들의 임의의 조합에 의해 표현될 수도 있다.
당업자라면, 본 명세서에서 개시된 실시형태들과 연계하여 설명된 다양한 예증적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어 또는 이들 양자의 조합으로서 구현될 수도 있음을 또한 알 수 있을 것이다. 하드웨어 및 소프트웨어의 이러한 상호 교환성을 명확하게 설명하기 위해, 다양한 예시적인 콤포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 전반적으로 그들의 기능적 관점으로 전술되었다. 그러한 기능이 하드웨어 또는 소프트웨어로 구현되는지는 특정 애플리케이션 및 전체 시스템에 부과되는 설계 제약들에 따라 달라진다. 당업자라면, 설명된 기능성을 각각의 특정 애플리케이션에 대한 다양한 방식으로 구현할 수도 있지만, 이러한 구현 결정들은 본 발명의 예시적인 실시형태들의 범주로부터 벗어나게 하는 것으로 이해되어서는 안 된다.
본 명세서에서 개시된 실시형태들과 연계하여 설명된 다양한 예증적인 논리 블록들, 모듈들, 및 회로들은 본 명세서에서 개시된 기능들을 수행하도록 디자인된 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 반도체 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA) 또는 다른 프로그래머블 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 이들의 임의의 조합에 의해 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로, 상기 프로세서는 임의의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들면, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로 구현될 수도 있다.
본 명세서에서 개시된 실시형태들과 연계하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들 양자의 조합에서 직접적으로 구현될 수도 있다. 소프트웨어 모듈은 RAM (Randdom Access Memory), 플래시 메모리, ROM (Read Only Memory), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable Programmable ROM), 레지스터들, 하드 디스크, 탈착식 디스크, CD-ROM, 또는 당업계에 공지되어 있는 임의의 다른 형태의 저장 매체 내에 있을 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되어, 프로세가 저장 매체로부터 정보를 판독하거나 저장 매체에 정보를 기록할 수 있다. 대안에서, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서와 저장 매체는 ASIC 내에 있을 수도 있다. ASIC 은 사용자 단말기 내에 있을 수도 있다. 대안에서, 프로세서와 저장 매체는 사용자 단말기에서 개별 컴포넌트들로 있을 수도 있다.
하나 이상의 예시적인 실시형태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되면, 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독 가능한 매체 상에 저장되거나 또는 전송될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 가능하게 하는 임의의 매체를 포함하여 컴퓨터 저장 매체들 및 통신 매체들 양자를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수도 있다. 비제한적인 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 요구되는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 이송 또는 저장하기 위해 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 커넥션은 컴퓨터 판독가능 매체라고 적절히 칭해진다. 예를 들면, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 전송되면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 매체의 정의 내에 포함된다. 그러나, 컴퓨터 판독 가능한 저장 매체 및 데이터 저장 매체는 배선들, 반송파들, 신호들 또는 다른 일시적 매체를 포함하지 않으며, 대신 비일시적이며 실체가 있는 저장 매체임을 주지해야 한다. 위의 조합들도 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
개시된 예시적인 구체예들의 상기 설명들은 임의의 당업자가 본 발명을 실시하거나 사용하도록 하기 위해 제공된다. 이들 예시적인 구체예들의 여러 수정예들이 당업자에게는 자명할 것이며, 본원에서 정의된 일반적인 원칙들은 본 발명의 취지와 범위를 벗어나지 않으면서 다른 구체예들에 적용될 수도 있다. 따라서, 본 발명은 본 명세서에서 나타내진 예시적인 실시형태들로 제한되도록 의도된 것은 아니며 본 명세서의 개시된 원리들과 신규한 특징들과 일치하는 광의의 범위를 제공하기 위한 것이다.
하기의 청구범위는 상기 설명된 정확한 구성 및 컴포넌트들로 제한되는 것이 아님을 이해해야 한다. 청구범위의 범위를 벗어나지 않으면서, 본원에서서 설명된 시스템들, 방법들 및 장치들의 배치, 동작 및 상세에서 여러 수정예들, 변경예들 및 변형예들이 행해질 수도 있다.
전술한 사항은 본 개시물의 실시형태들에 관한 것이지만, 본 개시물의 다른 및 추가 실시형태들은 그의 기본 범주로부터 벗어나지 않고 창안될 수도 있고, 그의 범주는 다음의 청구범위에 의해 결정된다.

Claims (96)

  1. 복수의 애플리케이션들을 실행시키고 통신 네트워크와 통신하도록 구성된 무선 디바이스로서,
    상기 복수의 애플리케이션들 중 하나 이상이 상기 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하도록 구성된 수신기;
    하나 이상의 입력들을 수신하도록 구성된 입력 디바이스; 및
    프로세서를 포함하고,
    상기 프로세서는,
    하나 이상의 입력들의 존재 또는 부재에 기초하여 상기 무선 디바이스가 포어그라운드 상태 (foreground state) 또는 백그라운드 상태 (background state) 에 있는지 여부를 결정하고;
    상기 규칙들에 따라 상기 복수의 애플리케이션들 중 하나 이상에 의한 통신을 수정하며;
    상기 디바이스가 상기 포어그라운드 상태에 있을 때, 상기 규칙들에 따라 상기 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하도록 구성되고,
    상기 규칙들은 통신의 소켓 동작, 통신의 소스 포트, 통신의 목적지 포트, 및 통신의 목적지 IP 어드레스, 또는 그것들의 조합 중 하나 이상에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 무선 디바이스.
  2. 제 1 항에 있어서,
    상기 복수의 규칙들은 통신이 얼마나 오랫동안 지연되도록 허용되는지를 나타내는 타이밍 정보를 포함하는, 무선 디바이스.
  3. 제 1 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 애플리케이션들의 리스트를 포함하는, 무선 디바이스.
  4. 제 1 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되지 않는 애플리케이션들의 리스트를 포함하는, 무선 디바이스.
  5. 제 1 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 통신 타입들의 리스트를 포함하는, 무선 디바이스.
  6. 제 5 항에 있어서,
    통신 타입들은 대화형 통신, 최선 노력 통신, 및 긴급 통신 중 하나 이상을 포함하는, 무선 디바이스.
  7. 제 1 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 네트워크 조건들의 리스트를 포함하는, 무선 디바이스.
  8. 제 1 항에 있어서,
    상기 복수의 규칙들은 상기 프로세서가 통신을 허용해야 하는 이벤트들 또는 트리거들의 리스트를 포함하는, 무선 디바이스.
  9. 제 1 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 시간들의 리스트를 포함하는, 무선 디바이스.
  10. 제 1 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 로케이션들의 리스트를 포함하는, 무선 디바이스.
  11. 제 1 항에 있어서,
    상기 복수의 규칙들은 통신의 무선 액세스 기술에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 무선 디바이스.
  12. 통신 네트워크와 통신하는 방법으로서,
    복수의 애플리케이션들 중 하나 이상이 상기 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하는 단계;
    하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태 (foreground state) 또는 백그라운드 상태 (background state) 에 있는지 여부를 결정하는 단계;
    상기 규칙들에 따라 상기 복수의 애플리케이션들 중 하나 이상에 의한 통신을 수정하는 단계; 및
    사용자 인터페이스가 상기 포어그라운드 상태에 있을 때, 상기 규칙들에 따라 상기 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하는 단계를 포함하고,
    상기 규칙들은 통신의 소켓 동작, 통신의 소스 포트, 통신의 목적지 포트, 및 통신의 목적지 IP 어드레스, 또는 그것들의 조합 중 하나 이상에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하는 방법.
  13. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신이 얼마나 오랫동안 지연되도록 허용되는지를 나타내는 타이밍 정보를 포함하는, 통신 네트워크와 통신하는 방법.
  14. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  15. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되지 않는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  16. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 통신 타입들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  17. 제 16 항에 있어서,
    통신 타입들은 대화형 통신, 최선 노력 통신, 및 긴급 통신 중 하나 이상을 포함하는, 통신 네트워크와 통신하는 방법.
  18. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 네트워크 조건들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  19. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신이 허용되어야 하는 이벤트들 또는 트리거들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  20. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 시간들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  21. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 로케이션들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  22. 제 12 항에 있어서,
    상기 복수의 규칙들은 통신의 무선 액세스 기술에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하는 방법.
  23. 통신 네트워크와 통신하기 위한 장치로서,
    복수의 애플리케이션들 중 하나 이상이 상기 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하는 수단;
    하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태 (foreground state) 또는 백그라운드 상태 (background state) 에 있는지 여부를 결정하는 수단;
    상기 규칙들에 따라 상기 복수의 애플리케이션들 중 하나 이상에 의한 통신을 수정하는 수단; 및
    사용자 인터페이스가 상기 포어그라운드 상태에 있을 때, 상기 규칙들에 따라 상기 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하는 수단을 포함하고,
    상기 규칙들은 통신의 소켓 동작, 통신의 소스 포트, 통신의 목적지 포트, 및 통신의 목적지 IP 어드레스, 또는 그것들의 조합 중 하나 이상에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하기 위한 장치.
  24. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신이 얼마나 오랫동안 지연되도록 허용되는지를 나타내는 타이밍 정보를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  25. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  26. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되지 않는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  27. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 통신 타입들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  28. 제 27 항에 있어서,
    통신 타입들은 대화형 통신, 최선 노력 통신, 및 긴급 통신 중 하나 이상을 포함하는, 통신 네트워크와 통신하기 위한 장치.
  29. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 네트워크 조건들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  30. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신이 허용되어야 하는 이벤트들 또는 트리거들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  31. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 시간들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  32. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 로케이션들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  33. 제 23 항에 있어서,
    상기 복수의 규칙들은 통신의 무선 액세스 기술에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하기 위한 장치.
  34. 코드를 포함하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 코드는, 실행 시, 장치로 하여금,
    복수의 애플리케이션들 중 하나 이상이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 수신하게 하고;
    하나 이상의 입력들의 존재 또는 부재에 기초하여 디바이스가 포어그라운드 상태 (foreground state) 또는 백그라운드 상태 (background state) 에 있는지 여부를 결정하게 하며;
    상기 규칙들에 따라 상기 복수의 애플리케이션들 중 하나 이상에 의한 통신을 수정하게 하고;
    사용자 인터페이스가 상기 포어그라운드 상태에 있을 때, 상기 규칙들에 따라 상기 복수의 애플리케이션들 중 하나 이상에 의한 통신의 송신을 허용하게 하며,
    상기 규칙들은 통신의 소켓 동작, 통신의 소스 포트, 통신의 목적지 포트, 및 통신의 목적지 IP 어드레스, 또는 그것들의 조합 중 하나 이상에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 비일시적 컴퓨터 판독가능 매체.
  35. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신이 얼마나 오랫동안 지연되도록 허용되는지를 나타내는 타이밍 정보를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  36. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 애플리케이션들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  37. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되지 않는 애플리케이션들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  38. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 통신 타입들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  39. 제 38 항에 있어서,
    통신 타입들은 대화형 통신, 최선 노력 통신, 및 긴급 통신 중 하나 이상을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  40. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 네트워크 조건들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  41. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신이 허용되어야 하는 이벤트들 또는 트리거들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  42. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 시간들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  43. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 로케이션들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  44. 제 34 항에 있어서,
    상기 복수의 규칙들은 통신의 무선 액세스 기술에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 비일시적 컴퓨터 판독가능 매체.
  45. 통신 네트워크와 통신하도록 구성된 장치로서,
    복수의 애플리케이션들 중 무선 디바이스에서 실행되는 하나 이상의 애플리케이션이 상기 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 생성하도록 구성된 프로세서; 및
    상기 복수의 규칙들을 상기 통신 네트워크를 통해 상기 무선 디바이스에 송신하도록 구성된 송신기를 포함하고,
    상기 규칙들은 통신의 소켓 동작, 통신의 소스 포트, 통신의 목적지 포트, 및 통신의 목적지 IP 어드레스, 또는 그것들의 조합 중 하나 이상에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하도록 구성된 장치.
  46. 제 45 항에 있어서,
    상기 복수의 규칙들은 애플리케이션 통신이 얼마나 오랫동안 지연되도록 허용되는지를 나타내는 타이밍 정보를 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  47. 제 45 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  48. 제 45 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되지 않는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  49. 제 45 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 통신 타입들의 리스트를 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  50. 제 45 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 네트워크 조건들의 리스트를 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  51. 제 45 항에 있어서,
    상기 복수의 규칙들은 통신이 허용되어야 하는 이벤트들 또는 트리거들의 리스트를 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  52. 제 45 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 시간들의 리스트를 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  53. 제 45 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 로케이션들의 리스트를 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  54. 제 49 항에 있어서,
    통신 타입들은 대화형 통신, 최선 노력 통신, 및 긴급 통신 중 하나 이상을 포함하는, 통신 네트워크와 통신하도록 구성된 장치.
  55. 제 45 항에 있어서,
    상기 복수의 규칙들은 통신의 무선 액세스 기술에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하도록 구성된 장치.
  56. 통신 네트워크와 통신하는 방법으로서,
    복수의 애플리케이션들 중 무선 디바이스에서 실행되는 하나 이상의 애플리케이션이 상기 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 생성하는 단계; 및
    상기 통신 네트워크를 통해 상기 복수의 규칙들을 상기 무선 디바이스에 송신하는 단계를 포함하고,
    상기 규칙들은 통신의 소켓 동작, 통신의 소스 포트, 통신의 목적지 포트, 및 통신의 목적지 IP 어드레스, 또는 그것들의 조합 중 하나 이상에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하는 방법.
  57. 제 56 항에 있어서,
    상기 복수의 규칙들은 애플리케이션 통신이 얼마나 오랫동안 지연되도록 허용되는지를 나타내는 타이밍 정보를 포함하는, 통신 네트워크와 통신하는 방법.
  58. 제 56 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  59. 제 56 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되지 않는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  60. 제 56 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 통신 타입들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  61. 제 56 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 네트워크 조건들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  62. 제 56 항에 있어서,
    상기 복수의 규칙들은 통신이 허용되어야 하는 이벤트들 또는 트리거들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  63. 제 56 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 시간들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  64. 제 56 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 로케이션들의 리스트를 포함하는, 통신 네트워크와 통신하는 방법.
  65. 제 60 항에 있어서,
    통신 타입들은 대화형 통신, 최선 노력 통신, 및 긴급 통신 중 하나 이상을 포함하는, 통신 네트워크와 통신하는 방법.
  66. 제 56 항에 있어서,
    상기 복수의 규칙들은 통신의 무선 액세스 기술에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하는 방법.
  67. 통신 네트워크와 통신하기 위한 장치로서,
    복수의 애플리케이션들 중 무선 디바이스에서 실행되는 하나 이상의 애플리케이션이 상기 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 생성하는 수단; 및
    상기 복수의 규칙들을 상기 통신 네트워크를 통해 상기 무선 디바이스에 송신하는 수단을 포함하고,
    상기 규칙들은 통신의 소켓 동작, 통신의 소스 포트, 통신의 목적지 포트, 및 통신의 목적지 IP 어드레스, 또는 그것들의 조합 중 하나 이상에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하기 위한 장치.
  68. 제 67 항에 있어서,
    상기 복수의 규칙들은 애플리케이션 통신이 얼마나 오랫동안 지연되도록 허용되는지를 나타내는 타이밍 정보를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  69. 제 67 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  70. 제 67 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되지 않는 애플리케이션들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  71. 제 67 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 통신 타입들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  72. 제 67 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 네트워크 조건들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  73. 제 67 항에 있어서,
    상기 복수의 규칙들은 통신이 허용되어야 하는 이벤트들 또는 트리거들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  74. 제 67 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 시간들의 리스트를 포함하는, 통신 네트워크와 통신하기 위한 장치.
  75. 제 67 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 로케이션들의 리스트를 포함하는, 통신 네트워크와 통신하는 장치.
  76. 제 71 항에 있어서,
    통신 타입들은 대화형 통신, 최선 노력 통신, 및 긴급 통신 중 하나 이상을 포함하는, 통신 네트워크와 통신하기 위한 장치.
  77. 제 67 항에 있어서,
    상기 복수의 규칙들은 통신의 무선 액세스 기술에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 통신 네트워크와 통신하기 위한 장치.
  78. 코드를 포함하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 코드는, 실행 시, 장치로 하여금,
    복수의 애플리케이션들 중 무선 디바이스에서 실행되는 하나 이상의 애플리케이션이 통신 네트워크와 어떻게 통신해야 하는지를 특정하는 복수의 규칙들을 생성하게 하고;
    상기 복수의 규칙들을 상기 통신 네트워크를 통해 상기 무선 디바이스에 송신하게 하며,
    상기 규칙들은 통신의 소켓 동작, 통신의 소스 포트, 통신의 목적지 포트, 및 통신의 목적지 IP 어드레스, 또는 그것들의 조합 중 하나 이상에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 비일시적 컴퓨터 판독가능 매체.
  79. 제 78 항에 있어서,
    상기 복수의 규칙들은 애플리케이션 통신이 얼마나 오랫동안 지연되도록 허용되는지를 나타내는 타이밍 정보를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  80. 제 78 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 애플리케이션들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  81. 제 78 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되지 않는 애플리케이션들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  82. 제 78 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 통신 타입들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  83. 제 78 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 네트워크 조건들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  84. 제 78 항에 있어서,
    상기 복수의 규칙들은 통신이 허용되어야 하는 이벤트들 또는 트리거들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  85. 제 78 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 시간들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  86. 제 78 항에 있어서,
    상기 복수의 규칙들은 통신이 지연되도록 허용되는 로케이션들의 리스트를 포함하는, 비일시적 컴퓨터 판독가능 매체.
  87. 제 82 항에 있어서,
    통신 타입들은 대화형 통신, 최선 노력 통신, 및 긴급 통신 중 하나 이상을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  88. 제 78 항에 있어서,
    상기 복수의 규칙들은 통신의 무선 액세스 기술에 기초하여 통신의 송신을 허용하거나 또는 불허하는, 비일시적 컴퓨터 판독가능 매체.
  89. 삭제
  90. 삭제
  91. 삭제
  92. 삭제
  93. 삭제
  94. 삭제
  95. 삭제
  96. 삭제
KR1020147011970A 2011-10-05 2012-10-05 백그라운드 애플리케이션 이벤트들의 관리를 위한 시스템들 및 방법들 KR101488650B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161543701P 2011-10-05 2011-10-05
US61/543,701 2011-10-05
US13/490,396 2012-06-06
US13/490,396 US8838086B2 (en) 2011-08-29 2012-06-06 Systems and methods for management of background application events
PCT/US2012/059102 WO2013052897A1 (en) 2011-10-05 2012-10-05 Systems and methods for management of background application events

Publications (2)

Publication Number Publication Date
KR20140080526A KR20140080526A (ko) 2014-06-30
KR101488650B1 true KR101488650B1 (ko) 2015-01-30

Family

ID=48044207

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147011970A KR101488650B1 (ko) 2011-10-05 2012-10-05 백그라운드 애플리케이션 이벤트들의 관리를 위한 시스템들 및 방법들

Country Status (6)

Country Link
EP (1) EP2764734A1 (ko)
JP (1) JP5728623B2 (ko)
KR (1) KR101488650B1 (ko)
CN (1) CN103918320B (ko)
BR (1) BR112014008257A2 (ko)
WO (1) WO2013052897A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9823928B2 (en) * 2011-09-30 2017-11-21 Qualcomm Incorporated FIFO load instruction
CN104684049A (zh) * 2013-11-26 2015-06-03 中兴通讯股份有限公司 一种并发数据传输控制方法、装置及终端
KR101679138B1 (ko) * 2015-01-30 2016-11-23 주식회사 엘지유플러스 Nsrm 정책제공 시스템, 이동통신단말기 및 그 nsrm 정책 수신방법, 정책제공 서버 및 그 nsrm 정책제공 방법
US11146449B2 (en) * 2016-02-19 2021-10-12 Intel Corporation Network architecture for internet-of-things device
US10310832B2 (en) 2016-02-19 2019-06-04 Intel Corporation Internet-of-things device blank
CN109426505B (zh) * 2017-08-16 2022-03-29 中国移动通信有限公司研究院 一种软件的安装方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003036491A1 (en) 2001-10-26 2003-05-01 Nokia Corporation Mobile client provisioning web service
US20070178876A1 (en) 2006-01-31 2007-08-02 Raziq Yaqub Applications and/or situation responsive utilization of silent periods
US20090049518A1 (en) 2007-08-08 2009-02-19 Innopath Software, Inc. Managing and Enforcing Policies on Mobile Devices
US20110185202A1 (en) 2010-01-26 2011-07-28 Motorola, Inc. Mobile Computing Device and Method for Maintaining Application Continuity

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009182443A (ja) * 2008-01-29 2009-08-13 Ntt Docomo Inc 通信端末、動作モード管理プログラム、および動作モード管理方法
EP2321736A4 (en) * 2008-08-08 2014-09-10 Innopath Software Inc INTELLIGENT MOBILE DEVICE MANAGEMENT CLIENT
JP2010183414A (ja) * 2009-02-06 2010-08-19 Sanyo Electric Co Ltd 電話装置
CN102186167B (zh) * 2011-04-11 2016-02-10 中兴通讯股份有限公司 一种对应用进行监控的方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003036491A1 (en) 2001-10-26 2003-05-01 Nokia Corporation Mobile client provisioning web service
US20070178876A1 (en) 2006-01-31 2007-08-02 Raziq Yaqub Applications and/or situation responsive utilization of silent periods
US20090049518A1 (en) 2007-08-08 2009-02-19 Innopath Software, Inc. Managing and Enforcing Policies on Mobile Devices
US20110185202A1 (en) 2010-01-26 2011-07-28 Motorola, Inc. Mobile Computing Device and Method for Maintaining Application Continuity

Also Published As

Publication number Publication date
JP5728623B2 (ja) 2015-06-03
BR112014008257A2 (pt) 2017-04-18
KR20140080526A (ko) 2014-06-30
JP2014533457A (ja) 2014-12-11
CN103918320A (zh) 2014-07-09
EP2764734A1 (en) 2014-08-13
CN103918320B (zh) 2016-07-06
WO2013052897A1 (en) 2013-04-11

Similar Documents

Publication Publication Date Title
US8838086B2 (en) Systems and methods for management of background application events
KR101604204B1 (ko) 애플리케이션 통신의 동기화를 위한 시스템들 및 방법들
JP5763205B2 (ja) ネットワークへのアプリケーションアクセスの制御
KR101488650B1 (ko) 백그라운드 애플리케이션 이벤트들의 관리를 위한 시스템들 및 방법들
US9571952B2 (en) Offloading of data to wireless local area network
US9264868B2 (en) Management of network access requests
EP2984789B1 (en) Application traffic pairing
KR101557843B1 (ko) 네트워크 액세스 요청들의 관리
KR101133596B1 (ko) 무선 디바이스 상에서 구성가능한 태스크 관리를 제공하기 위한 장치 및 방법들
US20140071905A1 (en) Methods and apparatus for automated device state changes in response to network conditions
US20130028159A1 (en) Silent power-save mode for a wireless communication device

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee