KR101928602B1 - 웨이크 패턴 관리 기법 - Google Patents

웨이크 패턴 관리 기법 Download PDF

Info

Publication number
KR101928602B1
KR101928602B1 KR1020147006313A KR20147006313A KR101928602B1 KR 101928602 B1 KR101928602 B1 KR 101928602B1 KR 1020147006313 A KR1020147006313 A KR 1020147006313A KR 20147006313 A KR20147006313 A KR 20147006313A KR 101928602 B1 KR101928602 B1 KR 101928602B1
Authority
KR
South Korea
Prior art keywords
network
application
computing device
network interface
wake
Prior art date
Application number
KR1020147006313A
Other languages
English (en)
Other versions
KR20140074291A (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
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20140074291A publication Critical patent/KR20140074291A/ko
Application granted granted Critical
Publication of KR101928602B1 publication Critical patent/KR101928602B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/12Arrangements for remote connection or disconnection of substations or of equipment thereof
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0894Packet rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • 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/0225Power saving arrangements in terminal devices using monitoring of external events, e.g. the presence of a signal
    • H04W52/0229Power saving arrangements in terminal devices using monitoring of external events, e.g. the presence of a signal where the received signal is a wanted signal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/349Performance evaluation by tracing or monitoring for interfaces, buses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Power Sources (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)
  • Facsimiles In General (AREA)
  • Telephonic Communication Services (AREA)

Abstract

웨이크 패턴 관리 기술이 기재된다. 하나 이상의 구현에서, 컴퓨팅 장치의 네트워크 인터페이스 장치에 의해 수신된 네트워크 트래픽은 모니터링되고, 트래픽 패턴은 모니터된 상기 네트워크 트래픽에서 인식된다. 상기 컴퓨팅 장치의 애플리케이션은 인식된 상기 트래픽 패턴에 대응하여 식별되고, 이러한 식별에 응답하여 식별된 애플리케이션의 적어도 일부가 웨이크된다.

Description

웨이크 패턴 관리 기법{WAKE PATTERN MANAGEMENT}
사용자는 네트워크 사용을 위해 구성될 수 있는 계속 증가하고 있는 다양한 컴퓨팅 장치에 액세스한다. 예를 들어, 사용자는 유선 네트워크 또는 무선 네트워크를 통해 상호작용하도록 데스크탑 컴퓨터, 모바일 폰, 태블릿 컴퓨터 등과 상호작용할 수 있다.
그러나, 이들 네트워크에 액세스하기 위해 이용되는 종래 기술은 대개 비효율적이고 전력, 프로세싱, 및 네트워크 리소스를 포함한 상당히 양의 리소스를 소비한다. 결과적으로, 이들 종래 기술은 상기 장치의 사용자가 이용할 수 있는 기능을 제한할 수 있다.
웨이크 패턴 관리 기술이 기재된다. 하나 이상의 구현에서, 컴퓨팅 장치의 네트워크 인터페이스 장치에 의해 수신된 네트워크 트래픽이 모니터링되고 트래픽 패턴이 모니터링된 네트워크 트래픽에서 인식된다. 인식된 상기 트래픽 패턴에 대응하는 컴퓨팅 장치의 애플리케이션이 식별되고, 이 식별에 응답하여 식별된 애플리케이션의 적어도 일부가 웨이크된다(wake).
하나 이상의 구현에서, 트래픽 패턴은 컴퓨팅 장치에서 실행하도록 구성된 애플리케이션에 대응하는 것으로 등록된다. 애플리케이션이 중지 상태에 있을 동안 네트워크 트래픽에서 트래픽 패턴의 인식에 응답하여, 애플리케이션의 적어도 일부의 전환이 상기 중지 상태에서 활성 상태로 트리거링된다.
하나 이상의 구현에서, 하나 이상의 컴퓨터-판독가능 저장 매체는 이에 저장된 명령을 포함하고, 상기 명령은 컴퓨팅 장치에 의한 실행에 응답하여 컴퓨팅 장치가 컴퓨팅 장치의 네트워크 인터페이스 장치를 통해 수신된 인입 패킷의 식별에 응답하여 중지된 애플리케이션의 적어도 일부분을 웨이크하기 위한 기술을 지원하도록 구성된 오퍼레이팅 시스템을 구현하도록 한다.
또한, 네트워크 인터페이스 장치의 오퍼레이팅 시스템 관리가 기재된다. 하나 이상의 구현에서, 컴퓨팅 장치의 하나 이상의 애플리케이션과 연계된 네트워크 트래픽이 완료된 것이 오퍼레이팅 시스템에 의해 결정된다. 이 결정에 대해 응답하여, 네트워크 인터페이스 장치는 오퍼레이팅 시스템에 의해 네트워크 인터페이스 장치의 전력 소비를 감소시키기 위한 모드로 전환된다.
하나 이상의 구현에서, 네트워크 인터페이스 장치가 고전력 모드에 있을 경우 네트워크 인터페이스 장치는 오퍼레이팅 시스템에 의해 컴퓨팅 장치의 하나 이상의 애플리케이션에 대해 이용가능하게 된다. 네트워크 인터페이스 장치가 저전력 모드에 있을 경우 네트워크 인터페이스 장치는 오퍼레이팅 시스템에 의해 상기 컴퓨팅 장치의 하나 이상의 애플리케이션에 대해 이용불가능하게 된다.
하나 이상의 구현에서, 하나 이상의 컴퓨터-판독가능 저장 매체는 이에 저장된 명령을 포함하고, 상기 명령은 컴퓨팅 장치에 의한 실행에 응답하여 컴퓨팅 장치가 전력 소비를 감소시키기 위한 모드로 배치되는 네트워크 인터페이스 장치로의 컴퓨팅 장치의 하나 이상의 애플리케이션에 의해 액세스를 제한하는 기술을 지원하기 위해 구성된 오퍼레이팅 시스템을 구현하고, 네트워크 인터페이스 장치는 푸시 통지의 수신에 응답하여 모드로부터 웨이크하도록 구성된다.
또한, 킵 얼라이브 관리 기술이 기재된다. 하나 이상의 구현에서, 킵 얼라이브 인터벌은 컴퓨팅 장치의 오퍼레이팅 시스템에 의해 계산된다. 킵 얼라이브 인터벌은 컴퓨팅 장치의 하나 이상의 애플리케이션과 네트워크 사이에 하나 이상의 통지 채널을 유지하기 위해 사용된다.
하나 이상의 구현에서, 네트워크를 통하여 각각의 엔드포인트와 통지 채널을 유지하도록 지정된 하나 이상의 서버 타임아웃 인터벌이 컴퓨팅 장치에서 실행가능한 복수의 애플리케이션 각각에 대해 결정된다. 킵 얼라이브 인터벌은 복수의 애플리케이션 각각에 대한 하나 이상의 서버 타임아웃 인터벌로부터 계산된다. 킵 얼라이브 인터벌은 통지 채널들을 유지하도록 지정된 네트워크 인터페이스 장치를 웨이크하는데 사용된다.
하나 이상의 구현에서, 하나 이상의 컴퓨터-판독가능 저장 매체는 컴퓨터 실행가능한 명령을 포함하고, 컴퓨팅 장치에 의한 실행에 응답하여 상기 컴퓨터 실행가능한 명령은 컴퓨팅 장치가 네트워크를 통하여 각각의 하나 이상의 엔드포인드와 컴퓨팅 장치에서 실행가능한 복수의 애플리케이션들 사이에서 통지 채널을 유지하기 위하여 킵 얼라이브 인터벌을 사용하도록 구성된 오퍼레이팅 시스템을 구현하며, 킵 얼라이브 인터벌은 상기 하나 이상의 애플리케이션이 네트워크를 통해 통신하는 각각의 엔드포인트의 하나 이상의 서버 타임아웃 인터벌과 네트워크의 하나 이상의 중개 장치의 하나 이상의 네트워크 타임아웃 인터벌을 기초로 계산된다.
이 요약은 상세한 설명에서 아래에 더 설명되는 개념의 선택을 단순화된 형태로 소개하기 위해 제공된다. 이 요약은 청구된 발명 대상의 주요 특징 또는 필수 특징을 식별하도록 의도되지 않으며, 또한 청구된 주제의 범위를 판단하는데 도움을 주기 위해 이용되도록 의도되지 않는다.
상세한 설명이 첨부 도면과 관련하여 기재된다. 도면에서, 참조 번호의 가장 왼쪽 숫자(들)는 참조 번호가 처음 나타나는 도면을 식별한다. 이러한 설명 및 도면에서, 서로 다른 경우에서의 동일한 참조 번호의 사용은 유사하거나 동일한 항목을 나타낼 수 있다.
도 1은 컴퓨팅 장치의 하나 이상의 애플리케이션의 네트워크 통신을 관리하기 위하여 네트워크 브로커 모듈을 이용하도록 동작될 수 있는 예시적인 구현예의 환경을 나타내는 도면이다.
도 2는 웨이크 패턴 관리자 모듈을 이용함으로써 도 1의 네트워크 브로커 모듈을 더 상세하게 나타내는 예시적인 구현예의 시스템을 나타내는 도면이다.
도 3은 애플리케이션의 적어도 일부를 중지 상태에서 활성 상태로 전환하기 위해 트래픽 패턴의 인식이 사용되는 예시적인 구현예의 절차를 도시하는 흐름도이다.
도 4는 트래픽 패턴의 인식이 애플리케이션의 적어도 일부분을 웨이크하기 위해 사용되는 예시적인 구현예의 또 다른 절차를 도시하는 흐름도이다.
도 5는 네트워크 장치 관리자 모듈을 이용함으로써 도 1의 네트워크 브로커 모듈을 더 상세하게 나타내는 예시적인 구현예의 시스템에 대한 도면이다.
도 6은 네트워크 장치 관리자 모듈의 예시적인 동작을 나타내는 예시적인 구현예의 또 다른 시스템을 나타내는 도면이다.
도 7은 네트워크 인터페이스 장치 침묵 전환을 나타내는 예시적인 구현예를 도시한다.
도 8은 네트워크 인터페이스 장치 활성 전환을 나타내는 예시적인 구현예를 도시한다.
도 9는 시스템 슬립 전환을 도시하는 예시적인 구현예를 도시한다.
도 10은 시스템 재개 전환을 나타내는 예시적인 구현예를 도시한다.
도 11은 네트워크 트래픽이 완료되고 네트워크 인터페이스 장치가 오퍼레이팅 시스템에 의해 저전력 모드로 전환되는 것을 결정하는 예시적인 구현예의 절차를 도시하는 흐름도이다.
도 12는 네트워크 인터페이스 장치가 저전력 모드 동안에 애플리케이션에 대해 이용불가능하게 되는 예시적인 구현예의 절차를 도시하는 흐름도이다.
도 13은 킵 얼라이브 관리자 모듈을 이용함으로써 도 1의 상기 네트워크 브로커 모듈을 더 상세히 도시하는 예시적인 구현예의 시스템을 나타내는 도면이다.
도 14는 도 13의 킵 얼라이브 인터벌을 계산하고 조절하는 예시적인 구현예를 도시하는 예시적인 구현예의 시스템을 나타내는 도면이다.
도 15는 킵 얼라이브 인터벌이 하나 이상의 통지 채널을 유지하기 위해 계산 및 사용되는 예시적인 구현예의 절차를 도시한다.
도 16은 킵 얼라이브 인터벌이 애플리케이션으로부터 킵 얼라이브 통신들을 배치화하기 위해 계산되는 예시적인 구현예의 절차를 도시한다.
도 17 및 도 18은 도 1의 네트워크 접속 브로커의 구현 예시를 도시하는 시스템을 도시한다.
도 19는 도 1에 관해 기재된 바와 같이 컴퓨팅 장치를 포함한 예시적인 시스템을 도시한다.
도 20은 본 명세서에서 기재된 기술의 구현 실시 형태에 대해 도 1, 도 2, 도 5 내지 도 10, 도 13, 도 14 및 도 17 내지 도 19를 참조하여 기재된 바와 같이 임의의 타입의 컴퓨팅 장치로서 구현될 수 있는 예시적인 장치의 여러 컴포넌트를 도시한다.
개요
네트워크 접속 애플리케이션은 전형적으로 "최신 상태(up to date)"로 유지되도록 긴 운용 접속(long running connection)을 유지하기 위한 능력을 수반한다. 그러나, 통상적인 기술 하에서, 이는 접근가능성(reachability)을 보장하기 위해 접속된 네트워크 인터페이스 장치(예를 들어, 네트워크 인터페이스 카드)를 유지하는 비용의 소비를 야기할 수 있으며, 이는 컴퓨팅 장치의 리소스 사용(resource usage)에 불리한 영향을 미칠 수 있다. 예를 들어, 통상적인 기술은 컴퓨팅 장치의 애플리케이션 및 서비스가 네트워크 인터페이스 장치로의 비제한 액세스를 허용한다. 이에 따라, 오퍼레이팅 시스템은 네트워크 인터페이스 장치가 애플리케이션에 의해 사용되는 경우 전형적으로 주어진 시점에서 인식하지 못한다. 이는, 30초가 소요될 수 있는, 아이들(idle)이 감지될 때까지 장치가 저전력 모드(low power mode)로 전환되는 것을 차단할 수 있으며, 이에 따라 파워 서플라이, 예를 들어 배터리 수명에 상당한 영향을 미칠 수 있다.
따라서, 네트워크 브로커 모듈(network broker module)로 불리는 오퍼레이팅 시스템 컴포넌트가 컴퓨팅 장치의 네트워크 인터페이스 장치의 사용을 조정하기 위해 사용될 수 있는 기술이 본 명세서에서 기재된다. 예를 들어, 네트워크 인터페이스 장치는 네트워크 트래픽의 수신에 응답하여 존재할 경우 컴퓨팅 장치의 애플리케이션이 웨이크하는(wake) 것을 결정하기 위해 웨이크 패턴 관리자 모듈(wake pattern manager module)을 이용할 수 있다. 예를 들어, 웨이크 패턴 관리자 모듈은 사전-등록된 패턴이 네트워크 트래픽에 존재하는지를 감지할 수 있고, 만일 그렇다면 대응하는 애플리케이션을 웨이크할 수 있다. 이 방식으로, 웨이크 패턴 관리자 모듈은 전체 중지 상태(suspended state)로의 네트워크 접속을 레버리지하는 애플리케이션이 여전히 "항상 온/항상 접속된" 사용자 경험을 제공할 수 있도록 한다. 웨이크 패턴 관리자 모듈의 추가적인 논의는 도 2 내지 도 4와 관련하여 찾을 수 있다.
또 다른 예시에서, 네트워크 브로커 모듈은 네트워크 장치 관리자 모듈의 기능을 포함할 수 있다. 컴퓨팅 장치의 애플리케이션을 수반하는 네트워크 트래픽이 예를 들어, 콜백(callback)을 모니터링함으로써 완성된 것을 모듈이 결정할 때, 네트워크 장치 관리자 모듈은 네트워크 인터페이스 장치가 저전력 모드로 진입되도록 하기 위해 사용될 수 있다. 따라서, 오퍼레이팅 시스템의 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치와 애플리케이션 간의 중개자(intermediary)로서 배치될 수 있다. 중개자로서, 오퍼레이팅 시스템은 네트워킹 활동(networking activity)을 인지할 수 있으며, 이에 따라 네트워크 인터페이스 장치가 저전력 모드, 예를 들어, 네트워크 침묵 모드(network quiet mode)로 진입할 수 있는 경우를 결정적으로 판단할 수 있다. 네트워크 장치 관리자 모듈의 추가적인 논의는 도 5 내지 도 12와 관련하여 찾을 수 있다.
추가 예시에서, 네트워크 브로커 모듈은 킵 얼라이브 관리자 모듈(keep alive manager module)의 기능을 포함할 수 있다. 애플리케이션이 중지 상태에 있는 동안 킵 얼라이브 관리자 모듈은 네트워크 접속(예를 들어, 통지 채널(notification channel))을 "킵 얼라이브하기 위하여(keep alive)" 사용될 수 있고, 이에 따라 애플리케이션과 연계된 리소스 사용이 더 낮아질 수 있다. 게다가, 킵 얼라이브 관리자 모듈은 네트워크 인터페이스 장치가 저전력 모드로 진입되도록 허용하고 네트워크 접속이 유지되도록 "웨이크"하기 위해 사용될 수 있고, 이에 따라 네트워크 인터페이스 장치와 연계된 리소스 사용 자체가 더 낮아질 수 있다. 또한, 여러 다른 기능이 예컨대, 킵 얼라이브 인터벌(keep alive interval)을 동적으로 결정하기 위하여 킵 얼라이브 관리 모듈에 의해 통합될 수 있고, 이의 추가적인 논의는 도 13 내지 도 18과 관련하여 찾을 수 있다.
하기 논의에서, 본 명세서에 기재된 기술을 이용할 수 있는 예시적인 환경이 우선 기재된다. 그 뒤에, 웨이크 패턴 관리자 모듈, 네트워크 장치 관리자 모듈, 및 킵 얼라이브 관리자 모듈의 예시적인 기능을 기재하기 위하여 예시적인 섹션이 사용된다. 그 뒤에, 이전에 기재된 섹션들로부터의 기능을 통합할 수 있는 구현 실시가 기재된다. 본 명세서에서 기재된 상기 기술이 예시적인 환경에서의 수행에 제한되지 않으며 예시적인 환경이 예시적인 기술의 수행으로 제한되지 않음이 명백하다.
예시적인 환경
도 1은 본 명세서에서 기재된 네트워크 브로커 기술을 이용하기 위해 동작가능한 예시적인 구현의 환경(100)의 도면이다. 도시된 환경(100)은 프로세싱 시스템(104)(예를 들어, 하나 이상의 프로세서, 기능 블록), 메모리(106), 전력 공급원(108), 디스플레이 장치(110) 및 네트워크(114)를 통하여 네트워크 접속(예를 들어, 통지 채널)을 제공하도록 구성된 하나 이상의 네트워크 인터페이스 장치(112)를 포함하는 컴퓨팅 장치(102)를 포함한다. 제시된 하기 논의에서 엔티티(entity)는 하나 이상의 엔티티를 나타낼 수 있고, 이에 따라 엔티티, 예를 들어 네트워크 인터페이스 장치(112), 네트워크 인터페이스 장치들(112) 등의 단수 또는 복수의 형태로 호환가능하게 참조될 수 있다.
컴퓨팅 장치(102)는 다양한 방식으로 구성될 수 있다. 예를 들어, 컴퓨팅 장치(102)는 예컨대, 데스크탑 컴퓨터, 모바일 스테이션, 엔터테인먼트 기기, 디스플레이 장치에 통신가능하게 커플링된 셋-탑 박스, 무선 폰, 게임 콘솔 등과 같이 네트워크(114)에 걸쳐 통신할 수 있는 컴퓨터로서 구성될 수 있다. 따라서, 컴퓨팅 장치(102)는 실제 메모리 및 프로세스 리소스(예를 들어, 퍼스널 컴퓨터, 게임 콘솔)를 갖는 완전한 리소스 장치에서 제한된 메모리 및/또는 프로세싱 리소스(예를 들어, 통상적인 셋-탑 박스, 핸드-헬드 게임 콘솔)를 갖는 저-리소스 장치로의 범위일 수 있다. 추가로, 단일의 컴퓨팅 장치(102)가 도시될지라도, 컴퓨팅 장치(102)는 복수의 상이한 장치, 예컨대, 동작을 수행하기 위해 비즈니스에 의해 이용되는 다수의 서버(예를 들어, 서버 팜(server farm)), 원격 제어 및 셋-탑 박스 조합, 이미지 캡처 장치 및 게임 콘솔 등을 나타낼 수 있다.
네트워크(114)가 인터넷으로서 도시될지라도, 네트워크는 매우 다양한 구성을 가정할 수 있다. 예를 들어, 네트워크(114)는 WAN(wide area network), LAN(local area network), 또는 인트라넷을 포함할 수 있고, 이에 따라 네트워크 인터페이스 장치(112)가 유선 접속을 통해 이들 네트워크를 액세스하도록 구성될 수 있다. 네트워크(114)는 또한 예컨대, WWAN(wireless wide area network), WLAN(wireless local area network), 셀룰러 네트워크(예를 들어, 3G, 4G, LTE 네트워크) 등과 같은 무선 기술을 통해 액세스하도록 구성될 수 있다. 네트워크 인터페이스 장치(112)는 물리적인 장치 및 또한 가상 네트워크 장치, 예컨대 가상 사설 네트워크, 터널링, 등을 지원하기 위해 사용된 것들을 나타낼 수 있다. 따라서, 단일의 네트워크(114)가 도시되더라도, 네트워크(114)는 복수의 네트워크를 나타낼 수 있다.
컴퓨팅 장치(102)는 오퍼레이팅 시스템(116)을 포함하는 것으로 추가로 도시된다. 오퍼레이팅 시스템(116)은 컴퓨팅 장치(102)에서 실행가능한 애플리케이션(118, 120)으로 컴퓨팅 장치(102)의 기본 기능을 추출하도록 구성된다. 예를 들어, 애플리케이션(118, 120)은 이 기본 기능이 "어떻게" 구현되는지를 인지하지 않고 기록될 수 있도록 오퍼레이팅 시스템(116)이 컴퓨팅 장치(102)의 프로세싱 시스템(104), 메모리(106), 전력 공급원(108)(예를 들어, 배터리 또는 유선 접속), 및/또는 디스플레이 장치(110)의 기능을 추출할 수 있다. 애플리케이션(118, 120)은 예를 들어, 이 렌더링이 어떻게 수행될 수 있는지를 이해하지 않고 디스플레이 장치(112)에 의해 렌더링되고 디스플레이되도록 오퍼레이팅 시스템(116)에 데이터를 제공할 수 있다.
게다가, 오퍼레이팅 시스템(116)은 또한 네트워크 브로커 모듈(122)의 사용을 통해 애플리케이션(118, 120)에 대한 네트워크 접속 기능을 추출할 수 있다. 네트워크 브로커 모듈(122)은 네트워크 인터페이스 장치(112) 자체의 동작뿐만 아니라 애플리케이션(118, 120)에 의한 네트워크 인터페이스 장치(112)의 사용을 관리하기 위한 기능을 나타낸다.
전술된 바와 같이, 네트워크 브로커 모듈(122)은 이 관리를 수행하기 위하여 여러 상이한 기능을 포함할 수 있다. 예를 들어, 네트워크 브로커 모듈(112)은 특정 트래픽 패턴의 식별 시에 하나 이상의 애플리케이션(118, 120)을 웨이크하도록 구성되는 웨이크 패턴 관리자 모듈(wake pattern manager module, 124)을 포함할 수 있다. 예를 들어, 특정 트래픽 패턴은 애플리케이션에 의해 사전-등록될 수 있고, 이에 따라 패턴이 인식될 때 웨이크 패턴 관리자 모듈(124)은 각각의 애플리케이션(118, 120)을 포함하는 전체 컴퓨팅 장치(102)가 웨이크되는 통상적인 기술과 상반되게 애플리케이션(118, 120)들 중 대응하는 하나의 애플리케이션을 웨이크할 수 있다. 웨이크 패턴 관리자 모듈(124)의 추가적인 논의는 도 2 내지 도 4와 관련하여 찾을 수 있다.
또한, 네트워크 브로커 모듈(122)은 네트워크 장치 관리자 모듈(126)을 포함하는 것으로 도시된다. 전술된 바와 같이, 이 모듈은 컴퓨팅 장치(102)의 애플리케이션(118, 120)에 대한 네트워크 인터페이스 장치(112)의 이용가능성뿐만 아니라 네트워크 인터페이스 장치(112)의 동작을 관리하기 위한 기능을 나타낸다. 이는 네트워크 장치 관리자 모듈(126)이 애플리케이션(118, 120)을 포함하는 네트워크 트래픽이 완료되는 것을 결정할 때 네트워크 인터페이스 장치(112)가 전력 소비를 감소시키기 위한 모드로 진입되게 하는 것을 포함할 수 있다.
추가로, 네트워크 장치 관리자 모듈(126)은 애플리케이션(118, 120)이 네트워크 인터페이스 장치(112)를 웨이크하는 것이 필수적이지 않도록 네트워크 인터페이스 장치(112)가 이 모드에서의 기간 동안에 애플리케이션(118, 120)에 대해 이용불가능하게 될 수 있다. 이 방식으로, 네트워크 장치 관리자 모듈(126)은 애플리케이션(118, 120)으로부터 네트워크 인터페이스 장치로의 통신을 "블랙 홀(black hole)"할 수 있다. 네트워크 장치 관리자 모듈(126)의 추가적인 논의가 도 5 내지 도 12와 관련하여 시작되는 하기 논의에서 이의 대응 섹션에 관해 찾을 수 있다.
네트워크 브로커 모듈(122)은 킵 얼라이브 관리자 모듈(128)을 포함하는 것으로 추가로 도시된다. 킵 얼라이브 관리자 모듈(128)은 중지 상태에서, 심지어 애플리케이션(118, 120)에 대해 네트워크 접속을 유지하기 위해 사용될 수 있는 기능을 나타낸다. 예를 들어, 킵 얼라이브 관리자 모듈(128)은 네트워크(114)에 걸쳐서 서비스와 컴퓨팅 장치(102) 사이의 네트워크 접속을 활성 상태로 유지하기 위하여 네트워크 서비스의 하나 이상의 서버와 통신될 수 있다. 또한, 킵 얼라이브 관리자 모듈(128)은 이 활동이 발생되는 인터벌을 동적으로 결정하기 위한 기능을 포함할 수 있고, 이에 따라 컴퓨팅 장치(102)의 리소스를 추가로 보존할 수 있다. 킵 얼라이브 관리자 모듈(128)의 추가적인 논의는 도 13 내지 도 18와 관련하여 시작되는 하기 논의에서 이의 대응 섹션에 관해 찾을 수 있다.
네트워크 브로커 모듈(122) 및 이의 대응 웨이크 패턴 관리자 모듈(124), 네트워크 장치 관리자 모듈(126), 및 킵 얼라이브 관리자 모듈(128)이 오퍼레이팅 시스템(116)의 일부로서 도시될지라도, 이 기능은 여러 상이한 엔티티에 의해 구현될 수 있음이 명백하다. 이러한 엔티티의 예시에는 독립형 애플리케이션, 제3자 플러그인 등이 포함된다.
일반적으로, 본 명세서에 기재된 임의의 기능은 소프트웨어, 펌웨어, 하드웨어(예를 들어, 고정 로직 회로), 또는 이들 구현의 조합을 사용하여 구현될 수 있다. 일반적으로, 본 명세서에서 사용된 바와 같이 용어 "모듈", "기능", 및 "로직"은 소프트웨어, 펌웨어, 하드웨어 또는 이의 조합을 나타낸다. 소프트웨어 구현의 경우에, 모듈, 기능, 또는 로직은 프로세서(예를 들어, CPU 또는 CPU들)에서 실행된 때에 특정 태스크를 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독가능 메모리 장치에 저장될 수 있다. 후술된 네트워크 브로커 기술의 특징이 플랫폼-독립적이며, 이는 기술이 여러 프로세서를 갖는 여러 상용 컴퓨팅 플랫폼에서 구현될 수 있는 것을 의미한다.
예를 들어, 컴퓨팅 장치(102)는 또한 컴퓨팅 장치(102)의 하드웨어가 예를 들어, 프로세서, 기능 블록, 등과 같은 동작들을 수행하도록 하는 엔티티(예를 들어, 소프트웨어)를 포함할 수 있다. 예를 들어, 컴퓨팅 장치(102)는 컴퓨팅 장치, 및 보다 구체적으로 컴퓨팅 장치(102)의 하드웨어가 동작을 수행하도록 하는 명령을 유지하기 위해 구성될 수 있는 컴퓨터-판독가능 매체를 포함할 수 있다. 따라서, 명령은 하드웨어가 동작을 수행하도록 구성되는 기능을 하고 이 방식으로 기능을 수행하기 위해 하드웨어의 전환을 야기한다. 명령은 여러 상이한 구성을 통하여 컴퓨팅 장치(102)로 컴퓨터-판독가능 매체에 의해 제공될 수 있다.
컴퓨터-판독가능 매체의 이러한 일 구성은 신호 베어링 매체(signal bearing medium)이고, 이에 따라 예컨대, 네트워크를 통하여 컴퓨팅 장치의 하드웨어에 명령(예를 들어, 반송 파)을 전송하도록 구성된다. 컴퓨터-판독가능 매체는 또한 컴퓨터-판독가능 저장 매체로서 구성될 수 있으며, 이에 따라 신호 베어링 매체가 아니다. 컴퓨터-판독가능 저장 매체의 예시에는 RAM(random-access memory), ROM(read-only memory), 광학 디스크, 플래시 메모리, 하드 디스크 메모리, 및 명령 및 다른 데이터를 저장하기 위한 자기, 광학, 및 다른 기술을 사용할 수 있는 다른 메모리 장치가 포함된다.
웨이크 패턴 관리자 모듈
도 2는 도 1의 네트워크 브로커 모듈(122)의 웨이크 패턴 관리자 모듈(124)의 예시적인 동작을 도시하는 예시적인 구현의 시스템(200)의 도면이다. 전술된 바와 같이, 통상적인 기술에는 접근가능한 애플리케이션에 대한 활성 운용 프로세스를 수반한다. 게다가, 비교적 긴 운용 네트워크 접속의 사용을 수반하는 애플리케이션은 예컨대, 배터리 수명과 같이 컴퓨팅 장치(102)의 리소스에 직접 영향을 미칠 수 있는 임의의 시간에서 데이터를 전송 및 수신할 수 있다.
이 예시에서, 그러나, 오퍼레이팅 시스템(116)은 "항상 온/항상 접속된" 사용 경험을 지원하기 위하여 네트워크 브로커 모듈(122)을 이용할 수 있다. 이 예시에서, 경험은 네트워크 통신에 수반되는 특정 애플리케이션을 웨이크하기 위해 이용될 수 있는 웨이크 패턴 관리자 모듈(124)의 사용을 통하여 지원된다.
웨이크 패턴 관리자 모듈(124)은 예를 들어, 애플리케이션(118, 120)이 특정 애플리케이션(118, 120)을 나타내는 트래픽 패턴(202)을 등록하도록 허용할 수 있다. 예를 들어, 애플리케이션(118)은 애플리케이션(120)에 대해 등록된 트래픽 패턴과 상이한 트래픽 패턴(202)을 등록할 수 있다. 따라서, 웨이크 패턴 관리자 모듈(124)은 트래픽 패턴(202)에 대한 네트워크 트래픽(204)을 모니터링할 수 있고, 대응 애플리케이션(118, 120)을 웨이크할 수 있다.
애플리케이션 개발자는 예를 들어, 특정 이벤트 및 이들 이벤트 각각에 대해 실행되는 콜백(callback)을 표시하기 위해 오퍼레이팅 시스템(116)의 네트워크 브로커 모듈(122)과의 컨트랙트(contract)를 배치할 수 있다. 네트워크 브로커 모듈(122)은 그 뒤에 트래픽 패턴(202)에 대해 등록되는 하나 이상의 애플리케이션(118, 120)에 대응하는 바와 같이 네트워크(114)를 통하여 네트워크 인터페이스 장치(112)에 의해 수신된 데이터의 특정 패턴을 "플러빙(plumb)"할 수 있다.
따라서, 네트워크 브로커 모듈(122)의 웨이크 패턴 관리자 모듈(124)은 애플리케이션(118)에 대한 트래픽 패턴으로 기재된 인입 패킷의 수신 시에 오퍼레이팅 시스템(116)을 인터럽트할 수 있다. 결국, 오퍼레이팅 시스템(116)은 애플리케이션(118)에 대해 패킷을 표시하고 등록된 콜백 엔트리 포인트에서 중지 상태로부터 애플리케이션(118)을 웨이크할 수 있다. 이 방식으로, 웨이크 패턴 관리자 모듈(124)은 사전 인증된 원격 엔드포인트로부터 인입 패킷에 대해 중지 애플리케이션을 트리거링하기 위한 기술을 지원할 수 있다. 게다가, 이는 오퍼레이팅 시스템(116)이 심지어 물리적 네트워크 인터페이스 장치(112)가 인입 패킷의 필터링을 지원하지 않는 경우에도 패턴을 플러빙할 수 있도록 하며, 이에 따라 오퍼레이팅 시스템(115)이 유입 패킷을 필터링할 수 있다.
애플리케이션(118, 120)은 또한 컴퓨팅 장치(102)의 리소스 사용의 효율을 증가시키도록 구성될 수 있다. 예를 들어, 애플리케이션(118)은 벡터화되어 개별적으로 실행될 수 있는 상이한 부분을 형성할 수 있다. 애플리케이션(118)에 대한 이의 도시된 예시에는 기능이 애플리케이션(118)에 대한 사용자 인터페이스의 생성을 수반하는 것과 같이 애플리케이션(118)의 다른 기능(208)과는 개별적으로 네트워크 기능(206)의 벡터화가 포함된다.
따라서, 이전의 예시와 연속적으로, 네트워크 브로커 모듈(122)은 예컨대, 애플리케이션(118)의 사용자 인터페이스의 생성과 수반된 애플리케이션(118)의 코드를 원상복귀(rehydrating) 없이 애플리케이션의 특정 콜백을 실행하고 특정된 트래픽 패턴(202)과 매칭되는 패킷을 표시하기 위하여 애플리케이션(118)의 네트워크 기능(206)을 웨이크할 수 있다. 따라서, 애플리케이션(118)은 데이터 패킷, 원격 엔드포인트 개시된 킵 얼라이브, 등의 경우 리소스 효율적인 방식으로 원격 서버로부터 네트워크 트래픽(204)에 대해 응답하도록 구성될 수 있다. 애플리케이션(118)의 이벤트 핸들러(event handler)의 분리와 같이 애플리케이션(118) 벡터화의 여러 다른 예시가 또한 고려된다.
또한, 웨이크 패턴 관리자 모듈(124)은 트래픽 패턴(202)에 의해 또한 표시될 수 있는 애플리케이션(118, 120)에 대한 통신의 경우 데이터를 통합하는(coalesce) 기술을 지원할 수 있다. 웨이크 패턴 관리자 모듈(124)은 예를 들어, 네트워크 인터페이스 장치(112)에서 네트워크(114)를 통하여 여러 상이한 통지 채널에 의해 데이터를 수신할 수 있다. 애플리케이션(118, 120)으로 이 데이터를 "즉시" 통신하기보다는, 웨이크 패턴 관리자 모듈(124)은 소정의 인터벌로 애플리케이션(118, 120)으로의 통신을 위해 이 데이터를 통합시킬 수 있다.
따라서, 애플리케이션(118, 120)을 실행하는데 사용되는 컴퓨팅 장치(102)의 리소스들은 언제 그리고 어떻게 이들 리소스가 사용되는 것을 추가로 보존하기 위하여 함께 이용될 수 있다. 예를 들어, 애플리케이션(118)에 대한 데이터를 수신하고, 애플리케이션(118)을 웨이크하며, 애플리케이션(118)으로 패킷을 통신하고, 그 뒤에 애플리케이션(120)에 대해 수신된 패킷에 대하여 이를 반복하기보다는, 이들 패킷이 캐싱될 수 있고 그 뒤에 포워딩될 수 있다.
하나 이상의 구현에서, 웨이크 패턴 관리자 모듈(124)은 또한 사용자 로그인의 정보를 레버리지할 수 있다. 예를 들어, 웨이크 패턴 관리자 모듈(124)은 컴퓨팅 장치(102)에 활성 로그인되는 사용자의 경우 트래픽 패턴(202)을 이용할 수 있지만 다른 사용자의 경우에는 가장 최근에 로그인된 사용자, 등에 대해서는 패턴을 사용하지 않을 수 있다. 자연적으로, 예컨대, 이 패턴이 활성화되지 않던지간에 로그인된 각각의 사용자에 대해 사용되는 구현과 같은 다른 구현이 또한 고려된다.
따라서, 컴퓨팅 장치의 네트워크 인터페이스 장치를 통하여 수신된 인입 패킷의 식별에 응답하여 중지 애플리케이션의 적어도 일부를 웨이크하는 기술을 지원하도록 구성될 수 있는 오퍼레이팅 시스템이 기재되었다. 이들 기술의 추가 논의는 하기 절차 및 구현 예시에 관하여 찾을 수 있다.
도 3에는 트래픽 패턴의 인식이 중지 상태로부터 활성 상태로 애플리케이션의 적어도 일부를 전환시키기 위해 사용되는 예시적인 구현의 절차(300)가 도시된다. 절차의 양태는 하드웨어, 펌웨어, 소프트웨어, 또는 이의 조합으로 구현될 수 있다. 절차는 하나 이상의 장치에 의해 수행되는 동작을 특정하는 일련의 블록으로서 도시되지만, 각각의 블록에 의해 동작을 수행하기 위해 도시된 순서로 필수적으로 제한되지 않는다. 하기 논의의 일부에서, 도 1의 환경 및 도 2의 시스템(200)이 참조될 것이다.
트래픽 패턴은 컴퓨팅 장치에 대해 실행되도록 구성된 애플리케이션에 대응하여 등록된다(블록 302). 트래픽 패턴(202)은 예를 들어, 웨이크 패턴 관리자 모듈(124)의 API와의 상호작용, 등을 통하여 애플리케이션(118)을 설치하는 동안에 애플리케이션(118)에 의해 등록될 수 있다. 추가로, 트래픽 패턴(202)은 예컨대, 특정 패킷, 콜백의 식별, 특정 원격 엔드포인트의 식별, 등과 같이 네트워크 트래픽(204)의 기재된 여러 상이한 특성에 대해 사용될 수 있다.
애플리케이션이 중지 상태에 있는 동안에 네트워크 트래픽에서 트래픽 패턴의 인식에 응답하여, 애플리케이션의 적어도 일부는 중지 상태로부터 활성 상태로 전환된다(블록 304). 애플리케이션(118)은 여러 상이한 인자로 인해 중지 상태로 배치될 수 있다. 예를 들어, 오퍼레이팅 시스템(116)은 포커스(focus)가 또 다른 애플리케이션으로 이동될 때 애플리케이션(118)을 중지 상태로 배치하도록 구성될 수 있다. 포커스는 애플리케이션의 사용자 인터페이스, 데스크탑 사용자 인터페이스에서 전경(foreground)으로부터 사용자 인터페이스(예를 들어, 윈도우)의 이동, 몰입 환경(immersive environment)에서 애플리케이션(118)의 사용자 인터페이스로부터 네비게이션, 등을 최소함으로써 이동될 수 있다. 따라서, 오퍼레이팅 시스템(116)은 사용자 상호작용을 위해 직접 이용불가능한 애플리케이션의 실행을 중지시킴으로써 컴퓨팅 장치(102)의 리소스를 보존할 수 있다.
전술된 바와 같이, 웨이크 패턴 관리자 모듈(124)은 네트워크 트래픽(204)으로부터 트래픽 패턴(202)을 인식할 수 있고 식별된 네트워크 트래픽(204)을 처리하기 위하여 애플리케이션(118)의 적어도 일부(예를 들어, 네트워크 기능(206)이지만 다른 기능(208)은 아님)를 활성 상태로 전환시킬 수 있다. 따라서, 웨이크 패턴 관리자 모듈(124)은 네트워크 트래픽(204)이 속한 특정 애플리케이션(118) 및 심지어 애플리케이션(118)의 특정 부분을 전환시킬 수 있다. 웨이크 패턴 관리자 모듈(124) 사용의 또 다른 예시는 하기 도면과 관련하여 찾을 수 있다.
도 4에는 트래픽 패턴의 인식이 애플리케이션의 적어도 일부를 웨이크하기 위해 사용되는 예시적인 구현의 절차(400)가 도시된다. 절차의 양태는 하드웨어, 펌웨어, 소프트웨어, 또는 이의 조합으로 구현될 수 있다. 절차는 하나 이상의 장치에 의해 수행되는 동작을 특정하는 일련의 블록으로서 도시되지만, 각각의 블록에 의해 동작을 수행하기 위해 도시된 순서로 필수적으로 제한되지 않는다. 하기 논의의 일부에서, 도 1의 환경 및 도 2의 시스템(200)이 참조될 것이다.
컴퓨팅 장치의 네트워크 인터페이스 장치에 의해 수신된 네트워크 트래픽이 모니터링된다(블록 402). 컴퓨팅 장치(102)는 예를 들어, VPN 및 터널링, 등을 지원하기 위한 가상 장치로서 구현되는 물리적 장치로서 구성될 수 있는 네트워크 인터페이스 장치(112)에서 네트워크 트래픽을 수신할 수 있다.
트래픽 패턴은 모니터링된 네트워크 트래픽에서 인식된다(블록 404). 이전과 같이, 여러 상이한 트래픽 패턴이 패킷, 전송 엔티티, 등과 같이 인식될 수 있다. 이 트래픽 패턴으로부터, 인식된 트래픽 패턴에 대응하는 컴퓨팅 장치의 애플리케이션이 식별될 수 있다. 예를 들어, 하나 이상의 애플리케이션은 특정 네트워크 트래픽을 수신하기 위하여 웨이크 패턴 관리자 모듈(124)로 사전-등록될 수 있다. 이 식별에 대한 응답으로, 식별된 애플리케이션의 적어도 일부가 예컨대, 네트워크 기능(206), 전체 애플리케이션(118), 등과 같이 웨이크된다(블록 408). 웨이크 패턴 관리자 모듈(124)의 예시적인 동작의 추가 논의가 구현 예시와 관련하여 찾을 수 있다.
네트워크 장치 관리자 모듈
도 5는 도 1의 네트워크 브로커 모듈(122)의 네트워크 장치 관리자 모듈(126)의 예시적인 동작을 도시하는 예시 구현의 시스템(500)의 도면이다. 전술된 바와 같이, 네트워크 브로커 모듈(122) 및 이에 따라 오퍼레이팅 시스템(116)의 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치(112)와 애플리케이션(118, 120) 사이의 중개자로서 배치될 수 있다. 중개자로서, 오퍼레이팅 시스템(116)은 네트워킹 활동을 인지할 수 있으며, 이에 따라 네트워크 인터페이스 장치(112)가 저전력 모드, 예를 들어, 네트워크 침묵 모드로 진입할 수 있는 경우를 결정적으로 판단할 수 있다.
예를 들어, 네트워크 장치 관리자 모듈(126)은 예를 들어, 콜백을 모니터링하고 콜백들 중 마지막 콜백이 완료될 때 결정함으로써 컴퓨팅 장치의 애플리케이션을 수반하는 네트워크 트래픽(502)이 완료된 것을 모듈이 결정할 때 네트워크 인터페이스 장치(112)가 저전력 모드로 진입되도록 하기 위해 사용될 수 있다. 따라서, 네트워크 트래픽(502)은 이 예시에서 애플리케이션(118, 120)으로부터 인출 트래픽(egress traffic)을 수반한다.
응답 시에, 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치(112)가 고전력 모드(504)로부터 저전력 모드(502)로 전환되도록 할 수 있다. 명명됨에 따라, 이들 모드는 상기 모드에 있는 동안 네트워크 인터페이스 장치(112)에 의해 소비된 전력의 양에 의해 구별된다. 일 예시에서, 고전력 모드(504)는 네트워크 인터페이스 장치(112)에 의해 데이터의 전송 및 수신이 가능하도록 구성된다. 이 예시에서, 저전력 모드(506)는 네트워크 인터페이스 장치(112)의 전송 기능이 일시적으로 불가능하고 이에 따라 전력 소비가 감소되도록 구성된다. 따라서, 아웃바운드 활동(outbound activity)이 억제되고 이에 따라 바로 웨이크 패턴이 플러빙되기 때문에, 이는 시스템이 킵-얼라이브 활동과 유사한 아웃바운드 활동을 개시할 때 또는 웨이크 패턴과 매칭되는 패킷으로 시스템과 충돌할 수 있는 트래픽이 제한되는 것을 의미한다. 여러 다른 예시가 또한 고려된다.
이 방식으로, 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치(112)의 사용이 아웃바운드 트래픽에 대해 더 이상 요구되지 않을 때를 사전행동적으로(proactively) 결정할 수 있고, 이에 따라 30초만큼 길 수 있는 비활성의 기간 감지에 의존되는 이전의 기술과는 상반되게 작용할 수 있다. 따라서, 중개자로서 오퍼레이팅 시스템(116)을 배치함으로써 허여되는 네트워크 트래픽(502)의 지식이 컴퓨팅 장치(102)의 리소스를 보존하기 위하여 사용될 수 있다.
네트워크 장치 관리자 모듈(126)은 또한 소정의 기간 동안에 네트워크 인터페이스 장치(112)에 대해 저전력 모드(506)를 연장/유지시키기 위한 기술을 지원할 수 있다. 전술된 바와 같이, 통상적인 기술은 컴퓨팅 장치(102)의 리소스에 불리한 영향을 미칠 수 있는, 네트워크 인터페이스 장치(112)로의 애플리케이션(118, 120)의 비제한 액세스를 허용하였다. 따라서, 애플리케이션(118, 120)과 네트워크 인터페이스 장치(112) 사이의 중개자로서 네트워크 장치 관리자 모듈(126)의 배치는 고전력 및 저전력 모드(504, 506)를 관리하기 위해 사용될 수 있다.
예를 들어, 네트워크 장치 관리자 모듈(126)은 저전력 모드(506)에 있는 동안에 네트워크 인터페이스 장치(112)로의 애플리케이션(118, 120)에 의한 액세스를 제한하기 위하여 "블랙 홀링(black holing)" 기술을 지원할 수 있다. 이는 예컨대, 네트워크 인터페이스 장치(112)를 이용불가능하게 만듦, 애플리케이션(118, 120)으로부터 네트워크 인터페이스 장치(112)로의 패킷의 통신 차단, 저전력 모드(506) 동안에 애플리케이션(118, 120)으로 재차 오류 코드의 제공, 드롭된 패킷 이벤트의 표시, 등과 같은 여러 방식으로 수행될 수 있다. 따라서, 네트워크 장치 관리자 모듈(126)은 애플리케이션(118, 120)이 저전력 모드(506)로부터 고전력 모드(504)로 네트워크 인터페이스 장치(112)를 웨이크하기 위하여 애플리케이션(118, 120)의 능력을 제한할 수 있고, 이에 따라 컴퓨팅 장치(102)의 리소스가 보존된다.
네트워크 장치 관리자 모듈(126)은 또한 주어진 시점에서 액세스될 수 있는 네트워크 인터페이스 장치(112)를 관리함으로써 복수의 상이한 네트워크 인터페이스 장치(112)의 사용을 관리하기 위한 기술을 지원할 수 있다. 예를 들어, 컴퓨팅 장치(102)는 모바일 통신 장치(무선 폰)로서 구성될 수 있고, Wi-Fi 및 셀룰러(예를 들어, 3G, 4G, LTE) 네트워크에 걸쳐 통신하도록 구성된 네트워크 인터페이스 장치(112)를 포함할 수 있다.
Wi-Fi를 위한 네트워크 인터페이스 장치(112)가 고전력 모드인 경우에, 네트워크 장치 관리자 모듈(126)은 셀룰러 네트워크를 위한 네트워크 인터페이스 장치(112)가 저전력 모드로 진입하도록 할 수 있다. 게다가, 셀룰러 네트워크와 상호작용을 시도하는 애플리케이션이 대신에 Wi-Fi 네트워크로 라우팅될 수 있다. 이 방식으로, 네트워크 접속 관리자 모듈(126)은 애플리케이션(118, 120)이 "잘못된(wrong)" 네트워크 인터페이스 장치(112)와 통신하는 것을 차단할 수 있고, 이에 따라 이 장치를 웨이크하지 않음으로써 컴퓨팅 장치(102)의 리소스가 보존된다.
네트워크 장치 관리자 모듈(126)은 또한 저전력 모드에 있는 동안에 접속을 유지하도록 구성될 수 있다. 예를 들어, 애플리케이션(118, 120) 및/또는 오퍼레이팅 시스템(116)의 서비스는 레이어 2의 접속을 유지하여 액세스 포인트와의 접속을 유지시키는 것이 요구될 수 있다. 이는 액세스 포인트와의 통신을 위해 정해진 인터벌로 저전력 모드(506)로부터의 주기적인 웨이크를 수반할 수 있다. 게다가, 레이어 3의 접속은 또한 예를 들어, 서버가 정해진 인터벌로 어드레스를 리프레시하도록 구성되는 것과 같이 HTTP 서버와의 통신에 의해 IP 어드레스를 유지시키기 위한 유사 기술을 사용하여 유지될 수 있다. 네트워크 접속의 유지에 관한 추가 논의가 하기 논의에서 "킵 얼라이브" 섹션에서 찾을 수 있다.
도 6은 네트워크 장치 관리자 모듈(126)의 예시적인 동작을 도시하는 예시적인 구현의 또 다른 시스템(600)의 도면이다. 이 시스템(600)은 네트워크 인터페이스 장치(112)의 오퍼레이팅 시스템(116) 지원 관리를 위해 이용될 수 있는 아키텍처의 구현 예시이다.
네트워크 장치 관리자 모듈(126)은 이 예시에서 ndis.sys(602)에 있는 로직 성분으로서 구현되고, 네트워크 인터페이스 장치(112)에 대한 전력 모드를 제어하는 것을 분담할 수 있다. 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치(112)에 걸쳐서 세부적 전력 제어를 지원하기 위해 퍼-어댑터(per-adapter) NID 활성 상태(예를 들어, NIC 활성 상태)를 노출시키도록 구성될 수 있다.
NID 활성 상태는 기준 카운터(reference counter)를 사용하여 구현될 수 있다. 카운터가 0에 도달될 때, 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치(112)를 저전력 상태로 전환시킬 수 있다. 카운터가 0으로부터 1로 증가할 때, NDIS(602)는 네트워크 인터페이스 장치(112)를 고전력 상태, 즉 "작동" 전력 상태로 만들 수 있다.
도시된 바와 같이, 오퍼레이팅 시스템(116)의 컴포넌트는 예를 들어, 여러 목적을 위해 사설 IOCTL을 NDIS(602)로 전송함으로써 기준 카운터를 증가 및/또는 감소시키기 위해 사용될 수 있다. 하나 이상의 구현에서, PDC(power dependency coordinator; 606)와 통신하는 WCM(604)은 "긴" 시간 동안, 예를 들어, 네트워크 활성 기간의 전체 기간 동안에 NID 활성 기준을 유지시키도록 허용되는 단일의 컴포넌트이다. 다른 컴포넌트 각각은 예를 들어, IP 어드레스 갱신과 같이 단일의 동작 동안에 NID 활성 기준을 취하는 것이 허용된다.
WCM(604)은 PDC(606)에 의해 생성된 네트워크 침묵 진입/종료 이벤트를 청취하고, 이들 이벤트를 인터페이스 선택 로직에 따라 NIC 활성 상태로 전환시키도록 구성될 수 있다. WCM(604)은 NDIS(602)가 네트워크 인터페이스 장치(112)를 파워 다운하는(power down) 것을 방지하기 위하여 어댑터 도달 시에 기준을 취할 수 있다.
WWAN(608)은 매체 특정 기능, 예를 들어, 위치 센서 서비스에 의해 요청된 위치 스캔 기능을 선택할 수 있도록 NIC 활성 기준을 사용할 수 있다. WLAN(610)은 매체 특정 동작, 예를 들어, IHV 제공 서비스에 의해 제어된 벤더 특정 기능을 선택하기 위해 NIC 활성 기준을 사용할 수 있다. DHCP(612) 클라이언트는 네트워크 침묵 모드 동안에 IP 어드레스를 갱신하기 위하여 사용될 수 있고, 이에 따라 네트워크 인터페이스 장치(112)의 가용성을 보장하기 위한 이 동작 중에 NID 활성 기준을 유지시킬 수 있다. TCP/IP(614)는 네트워크 침묵 모드 동안에 IPv6 SAAC(stateless address auto-configuration; 616)를 리프레시하기 위한 이 동작 동안에 D0에서 네트워크 인터페이스 장치(112)를 유지시키도록 NID 활성 기준 카운터를 사용할 수 있다. NDIS(602)는 각각의 네트워크 인터페이스 장치(112)가 웨이크 신호를 생성 시에 그리고 어댑터 초기화 동안에 임시(예를 들어, 3초) NIC 활성 기준을 사용할 수 있다. 따라서, 다른 어떠한 컴포넌트도 타임아웃 만료까지 네트워크 인터페이스 장치(112)의 사용을 요구하지 않는 경우, 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치(112)를 저전력 상태로 전환시킬 수 있다.
도 7에는 네트워크 인터페이스 장치 침묵 전환을 도시하는 예시적인 구현(700)이 도시된다. 구현(700)은 도 6의 NDIS(602)뿐만 아니라 전력 관리자(702) 및 미니포트/버스(miniport/bus, 704)를 포함한다. NDIS(602)는 NID 활성 기준 카운터가 0이 될 때 이 전력 전환 동작을 실행한다. NID 침묵 전환 동안에, NDIS(602)는 전력 관리자(702)에 대해 아이들로서 네트워크 인터페이스 장치(112)에 보고할 수 있고, 장치에 대해 Dx IRP를 요청하기 전에 승인을 대기할 수 있다.
도 8에는 네트워크 인터페이스 장치 활성 전환을 도시하는 예시적인 구현(800)이 도시된다. 구현(800)은 도 6의 NDIS(602)뿐만 아니라 도 7의 전력 관리자(702) 및 도 7의 미니포트/버스(704)를 포함한다. 도시된 예시에서, NDIS(602)는 NID 활성 기준 카운터가 0에서 1이 될 때 이 전력 전환 동작을 실행한다. NDIS(602)는 전력 관리자(702)로부터 장치 활성 상태를 요청할 수 있고, "전력 요구 콜백"을 대기할 수 있다. 이 콜백으로부터, NDIS(602)는 장치에 대해 DO IRP를 요청한다. DO IRP 완료 시에, NDIS(602)는 미니포트/버스(704) 드라이버로의 업데이트된 전력 상태를 통신하기 전에 "활성 상태 콜백"을 대기한다.
도 9에는 시스템 슬립 전환(system sleep transition)을 도시하는 예시적인 구현(900)이 도시된다. 구현(900)은 또한 도 6의 NDIS(602)뿐만 아니라 도 7의 전력 관리자(702) 및 미니포트/버스(704)을 포함한다. 시스템 슬립 전환 동안에, NDIS(602)는 장치에 대하여 전력 관리자(702)에 의해 전력 프레임워크 관리를 중지하고, Dx IRP를 요청하기 전에 승인을 대기한다.
도 10에는 시스템 재개 전환(system resume transition)을 도시하는 예시적인 구현(1000)이 도시된다. 구현(900)은 또한 도 6의 NDIS(602)뿐만 아니라 도 7의 전력 관리자(702) 및 미니포트/버스(704)을 포함한다. 시스템 재개 전환 동안에, NDIS(602)는 네트워크 인터페이스 장치(112)에 대한 DO IRP를 요청하고, 전력 프레임워크 동작이 DO IRP 완료 시에 전력 관리자(702)에 의해 재개되도록 한다.
도 11에는 네트워크 인터페이스 장치가 오퍼레이팅 시스템에 의해 저전력 모드로 전환되고, 네트워크 트래픽이 완료된 것이 결정되는 예시적인 구현의 절차(1100)가 도시된다. 절차의 양태는 하드웨어, 펌웨어, 소프트웨어, 또는 이의 조합으로 구현될 수 있다. 절차는 하나 이상의 장치에 의해 수행되는 동작을 특정하는 일련의 블록으로서 도시되지만, 각각의 블록에 의해 동작을 수행하기 위해 도시된 순서로 필수적으로 제한되지 않는다. 하기 논의의 일부에서, 도 1의 환경 및 도 5 내지 도 10의 시스템과 예시적인 구현이 참조될 것이다.
컴퓨팅 장치의 하나 이상의 애플리케이션과 연계된 네트워크 트래픽이 완료된 것은 오퍼레이팅 시스템에 의해 결정된다(블록 1102). 이 결정은 여러 방식으로 이뤄질 수 있다. 예를 들어, 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치(112) 및 애플리케이션(118, 120)과 수반되는 아웃바운드 및 인바운드 트래픽을 모니터링할 수 있다. 이에 따라 네트워크 장치 관리자 모듈(126)은 응답이 요청에 대해 제공될 때, 예를 들어 콜백이 완료된 때를 결정할 수 있다. 이 방식으로, 네트워크 장치 관리자 모듈(126)은 각각의 동작이 예정된 "아이들" 기간을 대기할 필요 없이 완료된 때를 결정될 수 있다.
결정에 대해 응답하여, 네트워크 인터페이스 장치는 오퍼레이팅 시스템에 의해 네트워크 인터페이스 장치의 전력 소비를 감소시키기 위한 모드로 전환된다(블록(1104). 이전의 예시와 연속적으로, 네트워크 장치 관리자 모듈(126)은 네트워크 트래픽(502)이 완료된 것을 결정할 수 있고, 이에 따라 네트워크 인터페이스 장치(112)가 전력 소비를 감소시키기 위한 모드, 예를 들어 저전력 모드(506)로 진입할 수 있다.
네트워크 장치 관리자 모듈(126)은 또한 이 모드와 함께 사용하기 위한 여러 기능을 제공할 수 있다. 예를 들어, 네트워크 장치 관리자 모듈(126)은 전력 소비를 감소시키기 위한 모드에 있는 동안에 네트워크 인터페이스 장치(112)가 오퍼레이팅 시스템에 의해 무선 액세스 포인트와의 접속을 유지하도록 할 수 있다(블록 1106). 따라서, 이 예시에서, 네트워크 인터페이스 장치(112)는 전술된 바와 같이 레이어 2의 접속을 유지시킬 수 있다. 또 다른 예시에서, 네트워크 장치 관리자 모듈(126)은 네트워크 인터페이스 장치(112)가 전력 소비를 감소시키기 위한 모드에 있는 동안 오퍼레이팅 시스템에 의해 IP(Internet Protocol) 어드레스를 유지하도록 할 수 있다. 따라서, 이 예시에서, 네트워크 인터페이스 장치(112)는 네트워크 인터페이스 장치(112)의 IP 어드레스를 리프레시하기 위하여 레이어 3의 접촉을 유지시킬 수 있다. 여러 다른 예시가 또한 고려된다.
네트워크 인터페이스 장치는 또한 사전-등록된 통지의 수신 시에 웨이크하도록 구성될 수 있다(블록 1110). 예를 들어, 네트워크 인터페이스 장치(112)가 저전력 모드(506)로 배치될지라도, 네트워크 인터페이스 장치(112)는 통신, 예를 들어, 인바운드 패킷을 수신하도록 구성될 수 있다. 이들 통지는 예컨대, 통신으로부터 기인된 특정 엔드포인트를 표시하기 위하여 특정 통지가 네트워크 인터페이스 장치(112)가 오퍼레이팅 시스템(116)과 통신하고 네트워크 침묵 모드로부터 웨이크하도록 사전-등록될 수 있다. 구현 예시에 대해 기재된 바와 같이 데이터에 포함된 특정 4-튜플(four tuple) 패턴과 같이 또한 여러 다른 타입의 사전-등록이 고려된다.
도 12에는 저전력 모드 동안에 네트워크 인터페이스 장치가 애플리케이션에 대해 이용불가능하게 되는 예시적인 구현의 절차(1200)가 도시된다. 절차의 양태는 하드웨어, 펌웨어, 소프트웨어, 또는 이의 조합으로 구현될 수 있다. 절차는 하나 이상의 장치에 의해 수행되는 동작을 특정하는 일련의 블록으로서 도시되지만, 각각의 블록에 의해 동작을 수행하기 위해 도시된 순서로 필수적으로 제한되지 않는다. 하기 논의의 일부에서, 도 1의 환경 및 도 5 내지 도 10의 시스템과 예시적인 구현이 참조될 것이다.
네트워크 인터페이스 장치는 네트워크 인터페이스 장치가 고전력 모드에 있을 때 오퍼레이팅 시스템에 의해 컴퓨팅 장치의 하나 이상의 애플리케이션에 대해 이용가능하게 된다(블록 1202). 네트워크 장치 관리자 모듈(112)은 예를 들어, 데이터를 전송 및 수신하기 위하여 네트워크(114)를 사용하여 통신을 위해 이용가능한 바와 같이 네트워크 인터페이스(112)를 노출시킬 수 있다.
네트워크 인터페이스 장치는 네트워크 인터페이스 장치가 저전력 모드에 있을 때 오퍼레이팅 시스템에 의해 컴퓨팅 장치의 하나 이상의 애플리케이션에 대해 이용불가능하게 된다(블록 1204). 예를 들어, 네트워크 장치 관리자 모듈(126)은 예컨대, 애플리케이션(118, 120)에 의해 수반된 네트워크 트래픽이 완료되는 것의 결정에 응답하는 것과 같이 전력 소비를 감소시키기 위해 네트워크 침묵 모드를 실행할 수 있다. 이 침묵 모드는 소정의 기간을 가질 수 있고, 이벤트에 응답하여 종료될 수 있다. 비가용성은 애플리케이션(118, 120)이 이 기간 동안에 네트워크 인터페이스 장치(112)를 "웨이크"하는 것을 허용하지 않도록 전술된 "블랙 홀" 기술의 사용을 포함할 수 있다.
또 다른 네트워크 인터페이스 장치는 네트워크 인터페이스 장치가 이용불가능하게 된 상태에서 하나 이상의 애플리케이션에 대해 이용가능하게 될 수 있다(블록 1206). 전술된 바와 같이, 컴퓨팅 장치(102)는 복수의 네트워크 인터페이스 장치를 포함할 수 있다. 따라서, 네트워크 장치 관리자 모듈(126)은 예컨대, 인터넷 접속을 위해 이용될 수 있는 네트워크 인터페이스 장치(112)들 중 하나를 구성하기 위해 장치들 중 어느 장치가 컴퓨팅 장치의 리소스를 보존하기 위하여 고전력 모드 또는 저전력 모드로 배치되는 것을 관리할 수 있다.
네트워크 장치 관리자 모듈(126)은 예를 들어, "잘못된" 네트워크 인터페이스 장치(112)의 부적절한 웨이크를 방지하기 위해 라우팅 기술을 이용할 수 있다. 이전의 예시와 연속적으로, 이용불가능하게 된 네트워크 인터페이스 장치를 사용하여 통신을 위해 특정되는 하나 이상의 애플리케이션으로부터 수신된 데이터는 다른 네트워크 인터페이스 장치로 라우팅된다(블록 1208). 예를 들어, 이는 예컨대, Wi-Fi 장치와 같이 활성 네트워크 인터페이스 장치로 자동 라우팅되도록 비활성화되는 셀룰러 네트워크 인터페이스 장치를 사용하여 통신을 위해 애플리케이션(118)에 의해 의도된 데이터를 라우팅하기 위해 사용될 수 있다.
따라서, 오퍼레이팅 시스템은 전력 소모를 감소시키는 모드로 배치되는 네트워크 인터페이스 장치로의 컴퓨팅 장치의 하나 이상의 애플리케이션에 의한 액세스를 제한하는 기술을 지원하도록 구성될 수 있다. 추가로, 네트워크 인터페이스 장치는 예컨대, 특정 엔드포인트로부터의 푸시 통지와 같은 통지의 수신에 응답하는 모드로부터 웨이크하도록 구성된다. 네트워크 접속의 유지에 대한 추가 논의가 하기 섹션과 관련하여 찾을 수 있다.
얼라이브 관리자 모듈
도 13은 도 1의 네트워크 브로커 모듈(122)의 킵 얼라이브 관리자 모듈(128)의 예시적인 동작을 도시하는 예시 구현의 시스템(1300)의 도면이다. 킵 얼라이브 관리자 모듈(128)은 네트워크(114)에 걸쳐서 통지 채널을 유지하기 위하여 네트워크 브로커 모듈(122)의 기능을 나타낸다. 예를 들어, 킵 얼라이브 관리자 모듈(128)은 예를 들어, 네트워크 서비스의 서버와 같이, 엔드포인트(1306)와 애플리케이션(118, 120) 사이에서 통지 채널을 개방 상태로 유지시키기에 충분한 네트워크 통신(1304) 간의 인터벌을 형성하는 킵 얼라이브 인터벌(1302)을 계산하기 위해 이용될 수 있다. 따라서, 킵 얼라이브 인터벌(1302)은 예를 들어, 하나 이상의 통지 채널을 통하여 네트워크(114)에 의해 통신 상태가 유지되도록 통신의 주파수를 나타내기 위해 계산될 수 있다.
네트워크 브로커 모듈(112)은 여러 상이한 통신 채널을 관리할 수 있다. 예를 들어, 애플리케이션(118)은 이메일 통신을 지원하고, 이에 따라 이메일 서비스 엔드포인트와 상호작용하도록 구성될 수 있다. 애플리케이션(118)은 또한 인스턴트 메시징(instant messaging)을 지원하도록 구성될 수 있고, 이에 따라 도 다른 엔드포인트(예를 들어, 인스턴트 메시징 장치의 서버)와 통신할 수 있다. 따라서, 단일 애플리케이션(118)은 복수의 통신 채널을 지원할 수 있다. 추가로, 애플리케이션(118, 120)은 또한 상이한 통지 채널을 사용하여 동일한 엔드포인트와 통신할 수 있다. 킵 얼라이브 관리자 모듈(128)은 네트워크(114)를 통한 통신을 수반하는 여러 상이한 통지 채널을 어드레싱할 수 있다.
추가로, 킵 얼라이브 관리자 모듈(128)은 여러 방식으로 킵 얼라이브 인터벌(1302)을 계산할 수 있다. 이러한 일 구현에서, 킵 얼라이브 인터벌(1302)은 예를 들어, 통지 채널을 통하여 애플리케이션(118)이 통신하는 엔드포인트(1306)의 서버 타임아웃 인터벌을 기초로 계산될 수 있다. 예를 들어, 서버 타임아웃 인터벌은 엔드포인트(1306)와 상호작용하도록 구성되는 애플리케이션에 의해 특정되는 알려진 타임아웃을 기초로 킵 얼라이브 관리자 모듈(128)에 의해 결정될 수 있다.
예를 들어, 애플리케이션(118)은 예컨대, 소셜 네트워크 서비스와 같이 특정 엔드포인트와 상호작용하도록 구성될 수 있다. 이 애플리케이션은 이에 따라 애플리케이션(118)이 그 엔드포인트와의 통지 채널을 유지시키기 위해, 예를 들어, 전송될 통신이 엔드포인트(1306)와의 상태를 유지하도록 구성될 수 있게 그 타임아웃의 서버 타임아웃 인터벌의 "지식"으로 코딩될 수 있다. 따라서, 이 예시에서 킵 얼라이브 관리자 모듈(128)은 애플리케이션(118) 자체로부터의 이 인터벌을 결정할 수 있다. 또한 컴퓨팅 장치와 엔드포인트(1306) 사이의 모니터링된 상호작용(예를 들어, 실패 감지 및 재조정에 의해), 등을 선험적으로(a priori) 기초로 할 수 있는 엔드포인트(1306)의 서버 타임아웃 인터벌을 결정하는 것과 같은 다른 예시가 고려된다.
또 다른 이러한 구현에서, 킵 얼라이브 인터벌(1302)은 네트워크(114)의 중개 장치(1308)를 어드레싱하기 위해 네트워크 타입아웃 인터벌을 사용하여 계산될 수 있다. 예를 들어, 네트워크 인터페이스 장치와 엔드포인트(1306) 간의 네트워크 접속은 예컨대, 네트워크 어드레스 전환 장치, 프록시, 방화벽, 무선 액세스 포인트, 등과 같은 여러 중개 장치(1308)를 수반할 수 있다. 네트워크 타임아웃 인터벌은 여러 방식으로 킵 얼라이브 관리자 모듈(128)에 의해 결정될 수 있다.
예를 들어, 킵 얼라이브 관리자 모듈(128)은 이러한 결정을 위해 이용가능하게 되는 시험 장치와 같이 "알려진" 또는 "오랫 동안 알려진" 서버 타임아웃 인터벌을 갖는 엔드포인트와 대응 중개 장치(1308) 및 네트워크(118)를 통하여 접촉할 수 있다. 킵 얼라이브 관리자 모듈(128)은 그 뒤에 중개 장치(1308)가 "타임 아웃(time out)"될 때를 결정하고, 이에 따라 중개 장치(1308)의 네트워크 타임아웃 인터벌을 결정하기 위하여 이 알려진 엔드포인트와의 접속을 모니터링할 수 있다. 이 네트워크 타임아웃 인터벌은 킵 얼라이브 인터벌(1302)을 계산하는데 사용하기 위하여 킵 얼라이브 관리자 모듈(128)에 의해 저장될 수 있다. 예를 들어, 이 네트워크 타임아웃 인터벌은 특정 네트워크에 대해 특정한 것으로서 저장될 수 있으며, 이를 통하여 네트워크 인터페이스 장치(112)가 네트워크(114)를 액세스한다.
하나 이상의 구현에서, 킵 얼라이브 인터벌(1302)은 엔드포인트(1306)의 서버 타임아웃 인터벌, 중개 장치(1308)의 네트워크 타임아웃 인터벌, 및 심지어 이 둘 모두를 기초로 계산될 수 있다. 킵 얼라이브 인터벌(1302)은 예를 들어, 통지 채널을 유지 시에 컴퓨팅 장치(102)의 리소스를 효율적으로 이용하기 위하여 킵 얼라이브 관리자 모듈(128)에 의해 계산될 수 있다. 예를 들어, 킵 얼라이브 관리자 모듈(128)은 네트워크 타입아웃 인터벌이 15초이고 서버 타임아웃 인터벌이 20초인 것을 결정할 수 있다. 따라서, 킵 얼라이브 관리자 모듈(128)은 엔드포인트(1306)와 통신하고, 이에 따라 엔드포인트(1306)와 중개 장치(1308)를 활성 상태로 유지시키기 위하여 15초의 인터벌로 네트워크 인터페이스 장치(112)를 웨이크할 수 있다. 따라서, 이 경우에 킵 얼라이브 관리자 모듈(128)은 양 장치의 상태가 유지될 수 있도록 하는 15초 인터벌 및 20초 인터벌 모두로 네트워크 인터페이스 장치(112)를 웨이크하는 것을 차단할 수 있다.
따라서, 단일의 네트워크 타임아웃 값이 계산될 수 있고, 통합된 시간을 연산하기 위해 이들 값의 최소치(예를 들어, 베이스라인 플로어(baseline floor))는 동시(concurrent) "킵 얼라이브"가 전송된 때를 나타낸다. 따라서, 네트워크 타임아웃 인터벌이 복수의 서버 접속에 적용될 수 있다.
추가로, 하나 이상의 구현이 끊어진(lost) 네트워크 접속을 어드레싱할 수 있다. 네트워크는 접속이 가끔 끊어질 수 있도록 지속적이지 못할 수 있다. 이 상황이 발생 시에, 서버로의 지속적 접속이 끊어질 수 있다. 따라서, 이들 구현은 네트워크가 재차 이용가능할 때를 자동으로 감지하기 위한 능력을 이용할 수 있다. 예를 들어, Wi-Fi 네트워크의 경우, 이는 "네트워크 리스트 오프로드(network list offload)", 오퍼레이팅 시스템 자체, 등을 통하여 효율적인 방식으로 하드웨어 또는 펌웨어 내에서 수행될 수 있다. 따라서, 오퍼레이팅 시스템은 콜백 루틴을 통하여 네트워크 존재의 이 클래스의 애플리케이션(118, 120)을 통지할 수 있고, 이들 애플리케이션은 그 뒤에 예를 들어, 푸시 통지 서버로의 오랫 동안의 접속(long-lived connection)과 같이 접속을 복구할 수 있다. 따라서, 통합된 통지가 수행될 수 있어서 복수의 통신 애플리케이션이 네트워크 인터페이스 장치 리소스의 사용을 최적화시킬 뿐만 아니라 로컬 컴퓨팅 리소스의 사용을 최적화시키기 위하여 사용될 수 있는 접속을 복구할 수 있다.
애플리케이션(118, 120)을 어드레싱하기 위해 또한 킵 얼라이브 관리자 모듈(128)에 의해 기술이 사용될 수 있다. 예를 들어, 킵 얼라이브 관리자 모듈(128)은 통지 채널을 유지시키기 위하여 애플리케이션(118, 120)에 의해 전송되는 통신을 배치화하도록 구성될 수 있다. 따라서, 이전과 같이 킵 얼라이브 인터벌(1302)은 컴퓨팅 장치(102), 예를 들어, 전력 공급원(108)의 리소스를 효율적으로 사용하도록 구성될 수 있다.
예를 들어, 킵 얼라이브 관리자 모듈(128)은 애플리케이션(118)이 10초의 인터벌로 "킵 얼라이브" 통신을 개시하도록 구성되고 애플리케이션(120)이 8초의 인터벌로 "킵 얼라이브" 통신을 개시하도록 구성되는 것을 결정할 수 있다. 따라서, 킵 얼라이브 관리자 모듈(128)은 통신을 수행하기 위해 양 애플리케이션(118, 120)에 대해 8초의 인터벌로 네트워크 인터페이스 장치(112)를 웨이크할 수 있다. 이 방식으로, 킵 얼라이브 관리자 모듈(128)은 전력 및 다른 리소스를 절약하기 위하여 다양한 엔드포인트(1306)로의 통지 채널에 대해 "킵 얼라이브"가 개시된 애플리케이션(118, 120)을 통합할 수 있다. 따라서, 킵 얼라이브 관리자 모듈(128)은 킵 얼라이브 인터벌(1302)을 여러 인자에 기초로 할 수 있고, 또한 킵 얼라이브 인터벌(1302)을 조절할 수 있으며, 이의 추가 논의는 하기 도면과 관련하여 찾을 수 있다.
도 14는 도 13의 킵 얼라이브 인터벌을 계산 및 조절하는 예시적인 구현을 도시하는 예시적 구현의 시스템(1400)의 도면이다. 전술된 바와 같이, 중개 네트워크 장치를 통한 통지 채널의 유지는 네트워크(114)를 액세스하는 애플리케이션(118, 120)의 주안점일 수 있다. 통상적인 기술은 보존 상태로 패킷을 전송/수신하기 위하여 인터벌이 형성된 하드코딩된 값(hardcoded value)을 수반한다. 그러나, 동적 킵 얼라이브 인터벌이 예를 들어, 주어진 원격 목적지(remote destination)로의 시험 접속을 사용하고, 컴퓨팅 장치(102) 자체에서의 애플리케이션(118, 120)의 시험을 통하여, 네트워크 및 서버 타임아웃 인터벌의 사용을 통해, 등에 의해 계산되는 기술이 본 명세서에서 기재된다.
도 14의 시스템(1400)은 도 13의 킵 얼라이브 인터벌(1302)을 조절하는 예시를 도시한다. 이 예시에서, 초기 계산된 킵 얼라이브 인터벌은 T = T(max)로서 초기화 단계에서 설정된다(블록 1402). 전류(T)보다 작은 기준점이 그 뒤에 시도된다. 이는 T(min)와 W(min)의 폴링(polling)을 수반할 수 있으며, 여기서 W는 폴링간의 재접속 시간을 나타낸다(블록 1406). 이는 또한 T가 V만큼 증가하고 T(max)에서 캡핑되는(capped) 공격적인 조절(aggressive tuning)을 수반할 수 있고, 여기서 V는 공격적인 조절의 증분(increment)을 나타낸다. 시스템(1400)은 또한 값이 V/Y만큼 증가되는 미세 조절을 수반할 수 있고, 여기서 Y는 공격적인 증분의 1/Y를 나타낸다. 이들 값은 T-감지된 값과 T(LKG)가 절대 시간인 정상 상태를 결정하기 위하여 레버리지될 수 있다. 도표에서, Z는 네트워크 오류를 어드레싱하기 위해 설정될 수 있는 수행된 재시도(retry)의 횟수를 나타내며, X는 성공적인 킵 얼라이브(KA)의 횟수를 나타낸다. 킵 얼라이브 관리자 모듈(128)의 동작의 추가 논의는 하기 절차에 따라 찾을 수 있다.
도 15에는 킵 얼라이브 인터벌이 하나 이상의 통지 채널을 유지시키기 위해 계산되고 사용되는 예시적인 구현의 절차(1500)가 도시된다. 절차의 양태는 하드웨어, 펌웨어, 소프트웨어, 또는 이의 조합으로 구현될 수 있다. 절차는 하나 이상의 장치에 의해 수행되는 동작을 특정하는 일련의 블록으로서 도시되지만, 각각의 블록에 의해 동작을 수행하기 위해 도시된 순서로 필수적으로 제한되지 않는다. 하기 논의의 일부에서, 도 1의 환경 및 도 13-14의 시스템과 예시적인 구현이 참조될 것이다.
킵 얼라이브 인터벌은 컴퓨팅 장치의 오퍼레이팅 시스템에 의해 계산된다(블록 1502). 도 13 및 도 14에 관해 기재된 바와 같이, 킵 얼라이브 인터벌은 예컨대, 네트워크 타임아웃 인터벌, 서버 타임아웃 인터벌, 복수의 애플리케이션(118, 120)에 대한 킵 얼라이브 통신 스케쥴링, 등을 기초로 여러 방식으로 계산될 수 있다.
킵 얼라이브 인터벌은 네트워크와 컴퓨팅 장치의 하나 이상의 애플리케이션 간에 하나 이상의 통지 채널을 유지시키기 위해 사용된다(블록 1504). 킵 얼라이브 관리자 모듈(128)은 예를 들어, 통지 채널을 통하여 데이터를 전송 및 수신하기 위해 네트워크를 모니터링할 수 있다. 하나 이상의 통지 채널이 네트워크 통신(1304)을 수반하지 않고 킵 얼라이브 인터벌에 도달하는 경우, 킵 얼라이브 관리자 모듈(128)은 각각의 엔드포인트(1306)와의 통신에 의해 채널을 유지시킬 수 있다.
킵 얼라이브 인터벌은 또한 오퍼레이팅 시스템에 의해 킵 얼라이브 인터벌의 모니터링된 사용을 기초로 조절될 수 있다(블록 1506). 예를 들어, 킵 얼라이브 관리자 모듈(128)은 통지 채널이 네트워크 또는 서비스 타임아웃 인터벌로의 도달로 인해 작동 중단되는 것을 결정할 수 있다. 킵 얼라이브 관리자 모듈(128)은 그 뒤에 채널이 타입 아웃되는 관찰된 기간보다 짧은 소정의 기간으로 킵 얼라이브 인터벌(1302)을 "하향" 조절할 수 있다(예를 들어, 인터벌에 의해 정해진 기간이 단축됨). 자연적으로, 예컨대, 도 14에 관해 기재된 바와 같이 킵 얼라이브 인터벌(1302)을 증가시키기 위하여 다른 예시가 또한 고려된다.
도 16에는 킵 얼라이브 인터벌이 애플리케이션으로부터 킵 얼라이브 통신을 배치화하기 위하여 계산되는 예시적인 구현의 절차(1600)가 도시된다. 절차의 양태는 하드웨어, 펌웨어, 소프트웨어, 또는 이의 조합으로 구현될 수 있다. 절차는 하나 이상의 장치에 의해 수행되는 동작을 특정하는 일련의 블록으로서 도시되지만, 각각의 블록에 의해 동작을 수행하기 위해 도시된 순서로 필수적으로 제한되지 않는다. 하기 논의의 일부에서, 도 1의 환경 및 도 13-14의 시스템과 예시적인 구현이 참조될 것이다.
네트워크를 통하여 각각의 엔드포인트와의 통지 채널을 유지시키기 위하여 특정된 하나 이상의 서버 타임아웃 인터벌의 컴퓨팅 장치에 대해 실행가능한 복수의 애플리케이션 각각에 대해 결정이 이뤄진다. 킵 얼라이브 관리자 모듈(128)은 예를 들어, 각각의 엔드포인트와의 통지 채널을 유지시키기 위하여 각각의 애플리케이션에 의해 사용되는 서버 타임아웃 인터벌을 결정하도록 애플리케이션(118, 120)을 조사할 수 있다.
킵 얼라이브 인터벌은 복수의 애플리케이션 각각에 대해 하나 이상의 서버 타임아웃 인터벌로부터 계산된다(블록 1604). 도 13에 관해 기재된 바와 같이, 킵 얼라이브 관리자 모듈(128)은 상이한 서버 타임아웃 인터벌에 대해 리소스 사용의 효율을 기초로 킵 얼라이브 인터벌(1302)을 결정할 수 있다. 킵 얼라이브 인터벌은 그 뒤에 통지 채널을 유지시키기 위해 특정된 바와 같이 네트워크 인터페이스 장치를 웨이크하도록 사용될 수 있다(블록 1606). 예를 들어, 킵 얼라이브 관리자 모듈(128)은 네트워크 인터페이스 장치(112)가 저전력 모드에 있는 동안 네트워크 통신(1304)이 통신 채널들 중 어느 하나에 대해 이뤄지지 않는 것을 결정할 수 있다. 따라서, 킵 얼라이브 관리자 모듈(128)은 컴퓨팅 장치(102)의 리소스를 효율적으로 이용하기 위하여 킵 얼라이브 인터벌(1302)에서 각각의 엔드포인트(1306)와 통신하도록 네트워크 인터페이스 장치(112)를 웨이크할 수 있다. 전술되고 하기 구현 예시에 대해 추가로 기재된 바와 같이 여러 다른 예시가 또한 고려된다.
구현 예시
도 17 및 도 18에는 도 1의 네트워크 접속 브로커(network connectivity broker, 122)의 구현 예시를 도시하는 시스템(1700, 1800)이 도시된다. 도 1에 대해 전술된 바와 같이, 시스템-온-칩 기반 장치(system-on-chip based device)에서 "접속 대기(connected standby)"로 불리는 시스템 상태의 지원은 "항시 온, 항시 접속"(AOAC) 사용자 경험을 가능하게 하는 기회를 제공할 수 있다. 예를 들어, 애플리케이션은 "인 포커스(in focus)" 상태가 아닐 때, 예를 들어, 전경 내에 있지 않을 때 중지될 수 있다. 그 결과, 네트워크(114) 및 네트워크 인터페이스 장치(112)는 "네트워크 침묵 모드"(netqm)로 진입할 수 있다. 이 모드에서, 오퍼레이팅 시스템(116)은 L2 접속과 L3 식별이 유지되도록 보장하는 동안에 장치로부터의 아웃고잉 패킷을 차단할 수 있다. 컴포넌트로부터의 표시는 침묵 모드로부터 종료되는 PDC(power dependency coordinator)로서 지칭된다. 네트워크(114) 접속을 수반하는 태스크의 완료 시에, 네트워크 브로커 모듈(122)은 네트워크 인터페이스 장치(112)가 재차 네트워크 침묵 모드로 진입하고 PDC가 종료 이벤트를 나타낼 때까지 이 상태로 유지되도록 할 수 있다.
이 설계를 통합하는 시스템(1700)의 개관이 도 17에 도시된다. 도면에는 채트 애플리케이션(chat application, 1702)에 대한 접속 및 다른 부기(bookkeeping)를 처리하도록 구성되는 경량 채트 스터브(lightweight chat stub, 1704)를 포함한 채트 애플리케이션(예를 들어, 네트워크(114)를 통하여 채트에 대해 구성됨)이 도시된다. 채트 애플리케이션(1702)은 또한 채트 스터브(1704)에 의해 나타내진 경량 접속 스터브와는 개별적인 애플리케이션(1702)의 비교적 "경량" 채트 UI(1706) 부분을 포함한다. 이는 애플리케이션(1702)의 기능을 벡터화하기 위하여 사용될 수 있는 여러 기술들 중 하나이다.
프로세스 라이프타임 관리자(process lifetime manager, 1708)는 또한 애플리케이션(1702)의 라이프사이클(lifecycle)을 관리하기 위한 기능을 나타내는 바와 같이 도시된다. 즉, 애플리케이션(1702)이 사용자 포커스로부터 태스킹될 때(task)(예를 들어, 백그라운드로 이동), PLM(1708)은 메모리 내에서 채트 스터브(1704)를 처리 및 중지하는 채트 UI(1706)를 종료시킬 수 있다.
시스템(1700)은 전술된 바와 같이 관심이 있는 이벤트가 애플리케이션(1702)에 대해 발생될 때 채트 스터브(1704)를 원상복귀시키기 위한 메커니즘을 포함함 커널 브로커 인프라스트럭쳐(kernel broker infrastructure)를 레버리지할 수 있다. 이 방식으로, 컴퓨팅 장치의 리소스는 보존될 수 있고, 예를 들어, 컴퓨팅 장치(102)의 CPU는 침묵 모드로 진입할 수 있고 인입 메시지가 웨이크를 트리거링할 때까지, 커널 브로커가 주기적 활동을 위해 시스템을 웨이크할 때까지, 등에 대해 이 모드로 유지될 수 있다.
네트워크 접속 브로커(NCB)(1710)(도 1의 네트워크 브로커 모듈(122)에 대응할 수 있거나 또는 대응하지 않을 수 있음)는 웨이크 패턴 관리자(1712) 및 킵 얼라이브 관리자(1714)로서 나타내지는 여러 기능을 이용할 수 있다. 웨이크 패턴 관리자(WPM)(1712)는 애플리케이션(1702)이 네트워크 이벤트 시에 "원상-복귀"될 수 있도록, 예를 들어, 특정 패턴의 감지 시에 웨이크할 수 있게 보장하도록 구성된다.
킵 얼라이브 관리자(1714)는 통지 채널이 예를 들어, 인입 푸시 통지를 위해 클라우드 서비스로부터의 접근가능성을 위해, 애플리케이션(1702)에 대해 유지되는 것을 보장하도록 구성된다. 예를 들어, 애플리케이션(1702)은 애플리케이션(1702)이 킵 얼라이브 활동에 관심이 있는 오퍼레이팅 시스템(116)에 대해 나타내지는, 도 18의 BI(1802)로 워크 아이템(워크 아이템)을 등록할 수 있다. 오퍼레이팅 시스템(116)은 그 뒤에 소정의 기간, 예를 들어, 수초 동안에 아웃바운드 패킷 활동이 허용되는 것을 나타내기 위하여 콜백이 등록되는 애플리케이션(1702)을 웨이크하도록 적절히 통합된 킵 얼라이브 인터벌을 결정할 수 있다. BI(1802)는 CPU 및 메모리 리소스에 관해 워크 아이템을 "샌드박싱(sandbox)"할 수 있다. 이에 따라 애플리케이션(1702)이 접근가능성을 유지하기 위하여 각각의 엔드포인트(예를 들어, "클라우드" 내의 서비스)에 대해 주기적 "킵 얼라이브"를 수행할 수 있다. 이는 또한 "킵 얼라이브"의 과잉으로 인해 리소스의 비효율적 사용으로부터 애플리케이션의 능력을 제한하기 위하여 사용될 수 있다.
통지 서비스(예를 들어, 윈도우즈 통지 서비스)와 함께 오퍼레이팅 시스템은 전술된 바와 같이 동적 킵 얼라이브 인터벌을 결정하기 위해 사용될 수 있다. 동적 킵 얼라이브 인터벌은 예를 들어, 접속이 여전히 유지되는 값으로 증가되고 보수적으로 4분의 인터벌로 시작되는 인터벌에 의해 정해진 기간의 두배인 "지수 백-오프(exponential back-off)"로서 구현될 수 있다. 통지 서비스는 동적 인터벌을 결정하기 위하여 이 목적의 시험 접속(test connection)을 이용할 수 있다. 하나 이상의 구현에서, 킵 얼라이브 관리자(1714)는 다른 구현이 또한 고려될지라도 접속 대기 또는 활성/온 상태인 시스템 또는 애플리케이션 상태 간의 구별을 하지 못한다.
웨이크 패턴 관리자(1712)는 예컨대, 네트워크 인터페이스 카드(NIC)(1716)와 같이 네트워크 인터페이스 장치에 대한 적절한 웨이크 패턴을 플러빙하기 위한 기능을 나타낸다. 웨이크 패턴 관리자(1712)는 네트워크 침묵 모드 진입 시에 NIC(1716)가 "웨이크 온 랜(Wake on LAN)" 모드로 진입하도록 할 수 있다. NIC(1716)는 예를 들어, NIC(1716)가 일련의 웨이크 패턴과 매칭되는 경우에 인입 패킷을 수신 및 전송하도록 구성되는 D3 모드로 전환될 수 있다. 이러한 경우, NIC(1716)는 활성 상태로 전환될 수 있다. 웨이크 패턴은 예컨대, 각각의 웨이크-가능 접속을 위해 "<SrcAddr, DstAddr, SrcPort, DstPort, TransportProtocol>"와 같은 여러 소스로부터 유도될 수 있다. 하나 이상의 구현에서, NIC(1716)는 프로토콜 스택에 대해 웨이크 업이 야기되는 인입 패킷을 통과시키며(이의 디스카딩/드롭핑과는 상반되게), 이는 이러한 패킷의 손실이 예컨대, VoIP와 같은 특징을 지원하는 애플리케이션에 대해 실시간 응답성(real-time responsiveness)에 영향을 미칠 수 있기 때문이다.
런타입 API 서피스는 또한 오퍼레이팅 시스템(116)에 의해 제공된 킵 얼라이브 및 원격 웨이크 기능을 이용하도록 구성되는 애플리케이션에 대해 노출될 수 있다. 라이브러리는 애플리케이션이 다음을 포함하는 여러 기능을 수행할 수 있도록 허용하기 위하여 사용될 수 있다:
통지 채널의 생성 표시(예를 들어, BeginSetup);
통지 채널의 셋업 완료 표시(예를 들어, EndSetup);
분 단위로 원하는 킵 얼라이브 인터벌 설정(예를 들어, ServerKeepAlivelntervalTime);
킵 얼라이브 이벤트 및 원격 웨이크 이벤트에 대한 백그라운드 태스크 핸들러 등록; 및
킵 얼라이브 인터벌이 충분하지 못한 시스템으로의 표시(예를 들어, DecreaseKeepAlivelnterval).
통지 시스템은 연속적으로 실행되는 인박스 컴포넌트로서 구현될 수 있기 때문에, 킵 얼라이브 이벤트에 대해 실행되는 워크 아이템 코드는 활성 프록시 방법에 의해 트리거링될 수 있다. 활성 프록시는 런타임 라이브러리 내에 은닉될 수 있고, 사적 API를 통하여 활성화될 수 있다. NCB 서비스 체크는 프로세스의 무결성 레벨(integrity level)을 체크하기 위해 사용될 수 있다. 프록시는 WNF 이벤트를 생성하고 WNF 이벤트 메시지에 대한 WNF 채널을 청취한다. 통지 서비스에 대한 백그라운드 태스크 핸들러는 BI(NCB 서비스/TCPIP.sys calling BiSignalEvent의 결과로서)가 WNF 이벤트 메시지를 게시할 때 프록시에 의해 호출될 수 있다.
런타임 API 라이브러리는 킵 얼라이브 및 웨이크 이벤트에 대해 이벤트 이름을 수신하고 킵 얼라이브 시간을 NCB에 제공하기 위하여 IP 헬퍼 서비스 내에 호스팅된 NCB 서브서비스(Ncbsvc.dll)와 통신하도록 LRPC를 사용할 수 있다. 런타임 API는 그 뒤에 이벤트가 제공된 브로커 인프라스트럭쳐와 콜백이 제공된 애플리케이션을 연계시키기 위해 브로커 인프라스트럭쳐 API를 호출할 수 있다.
도 18의 시스템(1800)은 오퍼레이팅 시스템(116)의 나머지 부분을 거론하기 위하여 NCB 서비스(1806)에 의해 사용된 실제 통신 인터페이스를 격리시키도록 구성되는 NCB 등록자(등록자, 1804)를 포함한다. 예를 들어, 런타임 API에 의해 사용된 RPC는 NCB 등록자 내에서 격리될 수 있다. 등록자는 RPC 서버 엔드포인트를 개방하고 애플리케이션을 청취할 수 있다. 애플리케이션은 이 RPC 엔드포인트로의 접속을 위해 전술된 런타입 라이브러리를 사용할 수 있다.
유사하게, 실제 BI 1802 API 액세스는 도시된 바와 같이 NCB 등록자(1804) 내에서 은닉될 수 있다. 이에 따라 킵 얼라이브 관리자(1714)는 아키텍처 변화로부터 격리될 수 있다. NCB 등록자(1804)는 BI 1802 API를 호출하여 "킵 얼라이브" 및 "웨이크" 이벤트를 생성할 수 있다. NCB 등록자(1804)의 다른 부분이 WPM(1808)과의 통신을 수반할 수 있다.
킵 얼라이브 공급자 인터페이스(1810)는 WNS가 킵 얼라이브 인터벌 공급자로서 등록될 수 있도록 구성되며, WNS와의 통신을 위해 LRPC를 사용할 수 있다. WNS는 킵 얼라이브 공급자 인터페이스(1810)에 의해 등록된 콜백을 사용하여 킵 얼라이브 인터벌 추정을 제공할 수 있다.
킵 얼라이브 공급자 인터페이스(1810)는 NLM 캐시 라이브러리(1812)에서 네트워크 (NLM ID) 기반으로 추정을 캐싱할 수 있다. NLM 캐시는 킵 얼라이브 공급자 인터페이스와 DA 사이트 관리자(site manager) 간에 통상적일 수 있는 라이브러리를 통하여 액세스할 수 있다.
킵 얼라이브 관리자(1714)는 킵 얼라이브 공급자로부터 킵 얼라이브 인터벌 추정을 요청하도록 구성될 수 있다. 타이머(통합될 수 있음)는 "SetThreadPoolTimer" API를 사용하여 생성될 수 있다. 시간은 애플리케이션에 의해 요청된 킵 얼라이브 인터벌의 T_WNS 및 T_APP의 최소값으로 설정될 수 있다.
킵 얼라이브 타이머가 만료될 때, 킵 얼라이브 관리자(1714)는 NCB 등록자(1804)를 호출함으로써 킵 얼라이브 이벤트를 시그널링할 수 있다. NCB 등록자(1804)는 그 뒤에 BI 1802 API를 호출하여 워크 아이템이 스케쥴링되도록 트리거링할 수 있다.
애플리케이션은 제공된 인터벌이 너무 긴 힌트를 NCB에 제공할 수 있다. 이는 전술된 NLM 캐시 라이브러리(1812)를 사용하여 네트워크 기반으로 재차 캐시 내에 저장하기 위하여 애플리케이션 ID 및 통지 채널 ID와 함께 사용될 수 있다.
통지 채널을 식별하기 위한 모델은 프로세스-와이드 타임 스팬(process-wide time span)을 명시하는 "Start/Done" 모델을 기반으로 할 수 있고, 이러한 동안에 프로세스에 의해(루프백을 제외하고) 각각 형성된 TCP 접속이 NCB에 의해 통지 채널로서 처리된다. Start/Done 타임 스팬은 그러나 이 스팬 동안에 생성되는 각각의 접속에 적용되는 하나의 "NCContext"로 일괄적으로 지칭된 단일 세트의 매개변수를 갖는다. NCContext와 TCP 접속 간의 일-대-일 관계가 전형적으로 직면하는 것으로 주지된다. 그러나, Start/Done 모델은 이 관계를 보장하지 못하며, 이에 따라 이 설계는 단일 NCContext 스팬에 대응하는 다수의 TCP 접속이 있을 수 있는 가정하에서 작용할 수 있다. 이 스팬은 프로세스 ID, 등록자에 의해 생성 및 사용되는 불투명 NCContext ID, 선택적 불투명 통지 채널 ID(이벤트 시그널링 동안에 BI로 보내지고, 이에 따라 애플리케이션에 대해 의미가 있음), 및 선택적 원격-웨이크 브로커드 이벤트(optional remote-wake brokered event)를 포함하는 튜플에 의해 식별될 수 있다.
NCB 등록자(1804)는 WPM에 대한 Start(PID, NCContextID, AppNCID, BrokeredEvent) 및 Done()(예를 들어, NCContext의 설정 및 클리어)을 표시하도록 구성될 수 있다. NCB 등록자(1804)는 또한 실제 애플리케이션 프로세스 PID가 Start/Done 타임 스팬 동안에 온전한 상태로 유지되도록(예를 들어, 재생되지 않음) 보장할 수 있다. NCB 등록자(1804)는 클라이언트 프로세스에 대한 기준을 취하는 RPC API를 사용함으로써 이를 달성할 수 있다.
NCB는 NSI(1814)를 통하여 WPM(1808)에 대해 Start 및 Done을 표시할 수 있다. WPM은 이 목적으로 INET NSI 객체(포트 예약 NSI 객체와 유사할 수 있음)를 노출시킬 수 있다. NCB는 활성 NCContext(예를 들어, Start)를 설정하고 활성 NCContext(예를 들어, Done)를 클리어하기 위하여 NSI 세트 커맨드(set command)를 사용할 수 있다. 하나 이상의 구현에서, 주어진 시점에서 주어진 프로세스에 대해 단일의 활성 NCContext가 있다.
주어진 프로세스에 의해 형성되는 TCP 접속은 그 프로세스에 대해 현재 활성 NCContext(있더라고)를 상속할 수 있다. NCContext가 상속되면 이는 상속 TCP 접속에 첨부된 상태로 유지될 수 있다. NCB가 프로세스를 위해 새로운 활성 NCContext를 설정하는 경우(예를 들어, 이전의 활성 NCContext를 클리어한 후에), 새로운 접속이 새로운 NCContext를 상속할 수 있고, 이전의 NCContext가 상속된 접속은 영향이 받지 않는 상태로 유지될 수 있다. 상속된 NCContext(하나 이상의 TCP 접속에 의해)는 또한 NSI(1814)를 사용함으로써 NCB 서비스(1806)에 의해 클리어될 수 있다. NCContext가 클리어되는 경우, WPM(1808)은 연계된 원격-웨이크 브로커드 이벤트의 시그널링을 중단할 수 있다(그러나, 플러빙된 웨이크 패턴은 접속이 폐쇄될 때까지 원래의 상태로 유지됨).
WPM(1808)이 NCB 서비스(1806)에 의해 제어되는 일부 프로세스 상태(예를 들어, 활성 및 상속된 NCContext)를 파악할 수 있기 때문에, 이는 애플리케이션이 종료됨에 따라 상태(NCContext)를 적절히 정리하기 위하여(cleanup) NCB 서비스(1806)에 의존될 수 있다. 그러나, NCB 서비스(1806) 프로세스가 비정상적으로 크래시/종료될 수 있는 것이 가능하다. 적절한 정리를 수행하기 위하여, WPM(1808)은 TCP 소캣을 생성하고(바운드 또는 접속되지 않음) NCB 제어 소켓과 같이 상기 TCP 소캣을 마킹하기 위하여 소켓에 대한 사적 옵션을 설정함으로써 종료된 NCB 서비스 프로세스의 표시를 수신할 수 있다. 객체 관리자(object manager)는 프로세스가 종료 시에 핸들(소켓을 포함함)을 적절히 폐쇄하기 때문에, 소켓 핸들 폐쇄는 TCP의 엔드포인트 근접 루틴이 유발되도록 한다. TCP는 그 뒤에 NCB 제어 소캣의 폐쇄 시에 각각의 NCContext를 정리할 수 있다.
전술된 바와 같이, 웨이크 패턴 관리자(WPM)(1808)(tcpip.sys에서 TCP 모듈 내에서 구현될 수 있음)는 NCContext를 파악하도록 구성될 수 있다. TCP는 NCB 서비스(1806)에 의해 설정된 연계된 NCContext(들) 및 프로세스의 테이블을 보유할 수 있다. 하나 이상의 구현에서, 주어진 프로세스에 대해 하나 또는 0의 "활성" NCContext가 존재하며, 주어진 프로세스에 대해 하나 이상의 "상속" NCContext가 존재할 수 있다. TCP는 NCB 서비스가 운용되는 상태 하에서 단일 시스템 계정이 NCContext를 설정/클리어할 수 있도록 구성될 수 있다.
하나 이상의 구현에서, NCContext는 "활성"되는 하나의 기준 계정 및 각각의 상속 접속을 위한 하나의 기준 계정을 갖는다. 즉, NCContext는 접속에 의해 상속되지 않거나 또는 활성화되지 않을 때 삭제될 수 있다.
접속이 NCContext를 상속할 때, WPM(1808)은 NIC가 웨이크 패턴을 지원하는 경우 웨이크-패튼 플러빙을 위한 NSI 1814 방법을 통하여 접속의 4-튜플로부터 네트워크 인터페이스 장치로 구성되는 웨이크 패턴을 플러빙할 수 있다. WPM(1808)은 웨이크 패턴이 각각의 활성 NCContext에 대해 주어진 접속을 위하여 성공적으로 플러빙되지 않는지의 여부를 파악할 수 있다. 활성 NCContext가 "Done" 호출 동안에 NCB 서비스에 의해 클리어되기 전에, NCB 서비스(1806)는 이 웨이크 패턴 플러빙 상태를 조회하고 정보를 애플리케이션으로 반환하기 위하여 그 NCContext에 대해 획득된 NSI를 발행할 수 있다(예를 들어, 시스템이 그 NCContext와 연계된 접속에 대해 웨이크 패턴을 플러빙하는 것을 실패하든지).
브로커드 원격-웨이크 이벤트와 NCContext가 상속되는 각각의 TCP 접속의 경우, TCP는 데이터 표시가 인입 데이터로 인해 그 접촉에 대하여 TCP에 의해 생성될 때마다 브로커드 원격-웨이크 이벤트를 시그널링할 수 있다. TCP가 원격 웨이크 이벤트를 시그널링하면, 원격-웨이크 이벤트가 NCB 서비스(1806)에 의해 재무장될 때까지(rearm) 그 NCContext 대한 추가 시그널링이 불가능할 수 있다(예를 들어, 무장해제). NCB 서비스(1806)는 애플리케이션의 원격-웨이크 콜백이 콜백이 호출된 NCB 루틴으로 제어를 재차 반환시킨 후 원격 웨이크-이벤트를 재무장한다.
NL에서의 SIO ADDRESS LIST SORT ioctl 핸들링은 또한 그 프로세스에 대해 활성 NCContext가 있는 상태에서 Ioctl이 프로세스에 의해 발행되는지를 인지하도록 변화될 수 있으며, 만약에 그렇다면 소트 로직(sort logic)이 인터페이스를 터널링하기 위해 고유 인터페이스에 걸친 어드레스를 선호할 수 있다.
WPM(1808)은 또한 라우터에 의해 광고된 IPv6 서브넷 프리픽스(subnet prefix)를 사용함으로써 형성된 IPv6 어드레스에 대하여 잔여 유효 라이프타임을 트래킹하기 위해 타이머를 보유할 수 있다. 라우터 광고가 웨이크-가능 저전력 상태에서 NIC에 의해 드롭핑될 수 있기 때문에, IPv6 프리픽스 타입아웃은 타임아웃이 발생되기 전에 명시적 라우터 간청(router solicitation)을 통하여 리프레시될 수 있고, 이와는 달리 L3 아이덴티티(identity)는 일부 경우에 확실히 보존되지 않을 수 있다. WPM(1808)은 NIC를 "스테이 업(stays up)" 상태에 있도록 보장하기 위하여(예를 들어, 시스템 내의 어느 것에 의해 유지되는 임의의 NIC-활성 기준을 갖지 않음으로 인해 D3로 바뀌지 않음) 라우터 간청이 수행될 수 있는 네트워크 인터페이스에서 "NIC 활성 기준"을 취하는데 NDIS API를 사용할 수 있다.
예시적인 시스템 및 장치
도 19에는 도 1에 따라 전술된 바와 같이 컴퓨팅 장치(102)를 포함하는 예시적인 시스템(1900)이 도시된다. 예시적인 시스템(1900)은 퍼스널 컴퓨터(PC), 텔레비전 장치, 및/또는 모바일 장치 상에서 애플리케이션을 실행할 때 끊임없는 사용자 경험(seamless user experience)을 위해 유비쿼터스 환경(ubiquitous environment)을 가능하게 한다. 서비스 및 애플리케이션은 애플리케이션을 이용하고 비디오 게임을 하며 비디오를 시청하는 등의 행위를 하면서 하나의 장치로부터 다음의 장치로 전환할 때 공통 사용자 경험에 대한 모두 3가지의 환경에서 실질적으로 유사하게 실행한다.
예시적인 시스템(1900)에서, 다수의 장치가 중앙 컴퓨팅 장치를 통해 상호접속된다. 중앙 컴퓨팅 장치는 다수의 장치로부터 원격에 위치될 수 있거나 또는 다중 장치에 로컬일 수 있다. 일 실시 형태에서, 중앙 컴퓨팅 장치는 네트워크, 인터넷, 또는 다른 데이터 통신 링크를 통하여 다수의 장치에 접속되는 하나 이상의 서버 컴퓨터의 클라우드일 수 있다. 일 실시 형태에서, 이 상호접속 아키텍처는 공통 및 끊임없는 경험을 다수의 장치의 사용자에 제공하기 위해 기능을 다수의 장치에 걸쳐 전달할 수 있도록 해준다. 각각의 다수의 장치는 상이한 물리적 요건과 능력을 가질 수 있고, 중앙 컴퓨팅 장치는 장치에 대해 모두가 적응되고 모든 장치에 대해 공통인 장치로 경험의 전달을 가능하게 하는 플랫폼을 이용한다. 일 실시 형태에서, 타겟 장치의 클래스가 생성되고, 경험은 장치의 일반적 클래스에 적응된다. 장치의 클래스는 물리적 특징, 사용 타입, 또는 장치의 다른 공통 특성에 의해 정해질 수 있다.
다양한 구현에서, 컴퓨팅 장치(102)는 예컨대, 컴퓨터(1902), 모바일(1904), 및 텔레비전(1906) 사용과 같이 여러 상이한 구성을 가정할 수 있다. 각각의 이들 구성은 일반적으로 상이한 구상 및 능력을 가질 수 있는 장치를 포함하고, 이에 따라 컴퓨팅 장치(102)는 하나 이상의 상이한 장치 클래스에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 장치(102)는 퍼스널 컴퓨터, 데스크탑 컴퓨터, 멀티-스크린 컴퓨터, 랩탑 컴퓨터, 넷북, 등을 포함하는 장치의 컴퓨터(1902) 클래스로서 구현될 수 있다.
컴퓨팅 장치(102)는 또한 예컨대, 모바일 폰, 휴대용 뮤직 플레이어, 휴대용 게이밍 장치, 태블릿 컴퓨터, 멀티-스크린 컴퓨터, 등과 같은 모바일 장치를 포함하는 장치의 모바일(1904) 클래스로서 구현될 수 있다. 컴퓨팅 장치(102)는 또한 캐주얼 시청 환경(casual viewing environments)에서 일반적으로 보다 큰 스크린을 가지거나 또는 이에 접속되는 장치를 포함하는 장치의 텔레비전(1906) 클래스로 구현될 수 있다. 이들 장치는 텔레비전, 셋톱 박스, 게임 콘솔 등을 포함한다. 본 명세서에 기재된 기술은 컴퓨팅 장치(102)의 이들 다양한 구성에 의해 지원될 수 있으며, 본 명세서에서 기재된 특정 예시에 제한되지 않는다. 이는 컴퓨팅 장치(102) 상에 네트워크 브로커 모듈(122), 웨이크 패턴 관리자 모듈(124), 네트워크 장치 관리자 모듈(126), 및 킵 얼라이브 관리자 모듈(128)을 포함하는 사용을 통하여 도시되다. 이들 기능 모두 또는 일부는 또한 후술된 바와 같이 "클라우드에 걸쳐서(over the cloud)" 분산될 수 있다.
클라우드(1908)는 콘텐츠 서비스(1912)를 위한 플랫폼(1910)을 포함하며/하거나 플랫폼(1910)을 나타낸다. 플랫폼(1910)은 클라우드(1908)의 하드웨어(예를 들어, 서버) 및 소프트웨어 리소스의 기본 기능을 추출한다. 콘텐츠 서비스(1912)는 컴퓨터 프로세싱이 컴퓨팅 장치(102)로부터 원격에 있는 서버에서 실행되는 동안에 이용될 수 있는 애플리케이션 및/또는 데이터를 포함할 수 있다. 콘텐츠 서비스(1912)는 인터넷 및/또는 셀룰러 또는 Wi-Fi 네트워크와 같은 가입자 네트워크를 통해 서비스로서 제공될 수 있다.
플랫폼(1910)은 다른 컴퓨팅 장치와 컴퓨팅 장치(102)를 접속하는 리소스 및 기능을 추출할 수 있다. 플랫폼(1910)은 또한 플랫폼(1910)을 통해 구현되는 콘텐츠 서비스(1912)에 대해 직면한 요구에 대응하는 규모의 레벨을 제공하기 위해 리소스의 스케일링(scaling)을 추출하도록 제공될 수 있다. 따라서, 상호접속된 장치의 실시 형태에서, 본 명세서에서 기재된 기능의 구현은 시스템(1900)의 도처에 분산될 수 있다. 예를 들면, 기능은 컴퓨팅 장치(102) 상에 부분적으로 구현될 수 있을 뿐만 아니라 클라우드(1908)의 기능을 추출하는 플랫폼(1910)을 통해 구현될 수 있다.
도 20에는 본 명세서에서 기재된 기술의 실시 형태를 구현하기 위해 도 1 내지 도 19에 관련하여 기재된 바와 같은 임의의 타입의 컴퓨팅 장치로서 구현될 수 있는 예시적인 장치(2000)의 다양한 컴포넌트가 도시된다. 장치(2000)는 장치 데이터(2004)(예를 들어, 수신된 데이터, 수신되는 데이터, 방송을 위해 스케줄링된 데이터, 데이터의 데이터 패킷 등)의 유선 및/또는 무선 통신을 가능하게 하는 통신 장치(2002)를 포함한다. 장치 데이터(2004) 또는 다른 장치 콘텐츠는 장치의 구성 설정, 장치에 저장된 미디어 콘텐츠, 및/또는 장치의 사용자와 연계된 정보를 포함할 수 있다. 장치(2000)에 저장된 미디어 콘텐츠는 임의의 타입의 오디오, 비디오 및/또는 이미지 데이터를 포함할 수 있다. 장치(2000)는 하나 이상의 데이터 입력(2006)을 포함하며, 이를 통해 사용자 선택 가능한 입력, 메시지, 음악, 텔레비전 미디어 콘텐츠, 기록된 비디오 콘텐츠, 및 임의의 다른 타입의 오디오, 비디오, 및/또는 임의의 콘텐츠 및/또는 데이터 소스로부터 수신되는 이미지 데이터와 같은 임의의 타입의 데이터, 미디어 콘텐츠 및/또는 입력이 수신될 수 있다.
장치(2000)는 또한 직렬 및/또는 병렬 인터페이스, 무선 인터페이스, 임의의 타입의 네트워크 인터페이스, 모뎀, 및 임의의 다른 타입의 통신 인터페이스 중 하나 이상으로 구현될 수 있는 통신 인터페이스(2008)를 포함한다. 통신 인터페이스(2008)는 장치(2000)와 다른 전자, 컴퓨팅, 및 통신 장치가 장치(2000)와 데이터를 통신하는 통신 네트워크 사이에 접속 및/또는 통신 링크를 제공한다.
장치(2000)는 장치(2000)의 동작을 제어하여, 본 명세서에 기재된 기술의 실시 형태를 구현하기 위해 다양한 컴퓨터-실행가능 명령을 처리하는 하나 이상의 프로세서(2010)(예를 들어, 임의의 마이크로프로세서, 제어기 등)를 포함한다. 대안적으로 또는 추가로, 장치(2000)는 하드웨어, 펌웨어, 또는 일반적으로 (2012)에서 식별되는 프로세싱 및 제어 회로와 관련하여 구현되는 고정 논리 회로의 임의의 하나 또는 조합으로 구현될 수 있다. 도시되지 않았지만, 장치(2000)는 장치 내에 여러 컴포넌트를 결합하는 시스템 버스 또는 데이터 전달 시스템을 포함할 수 있다. 시스템 버스는 메모리 버스 또는 메모리 제어기, 주변 버스, 범용 직렬 버스, 및/또는 어느 다양한 버스 아키텍처를 이용하는 프로세서 또는 로컬 버스와 같은 상이한 버스 구조의 임의의 하나 또는 조합을 포함할 수 있다.
장치(2000)는 또한 하나 이상의 메모리 컴포넌트와 같은 컴퓨터-판독가능 매체(2014)를 포함하며, 이의 예시는 RAM(random access memory), 비휘발성 메모리(예를 들어, ROM(read-only memory), 플래시 메모리, EPROM, EEPROM 등 중 임의의 하나 이상), 및 디스크 저장 장치를 포함한다. 디스크 저장 장치는 예컨대, 하드 디스크 드라이브, 기록 및 /또는 재기록가능 콤팩트 디스크(CD), 임의의 타입의 디지털 다용도 디스크(DVD) 등과 같은 임의의 타입의 자기 또는 광학 저장 장치로 구현될 수 있다. 장치(2000)는 또한 대용량 저장 매체 장치(2016)를 포함할 수 있다.
컴퓨터-판독가능 매체(2014)는 장치 데이터(2004)를 저장하는 데이터 저장 메커니즘뿐만 아니라 다양한 장치 애플리케이션(2018) 및 임의의 다른 타입의 정보 및/또는 장치(2000)의 동작 양태에 관련된 데이터를 제공한다. 예를 들어, 오퍼레이팅 시스템(2020)은 컴퓨터-판독가능 매체(2014)를 가진 컴퓨터 애플리케이션으로 유지되어, 프로세서(2010)에서 실행될 수 있다. 장치 애플리케이션(2018)은 장치 관리자(예를 들어, 제어 애플리케이션, 소프트웨어 애플리케이션, 신호 처리 및 제어 모듈, 특정 장치에만 대한 코드, 특정 장치에 대한 하드웨어 추상화 계층, 등)를 포함할 수 있다. 장치 애플리케이션(2018)은 또한 본 명세서에서 기재된 실시 형태를 구현하는 임의의 시스템 컴포넌트 또는 모듈을 포함한다. 이러한 예시에서, 장치 애플리케이션(2018)은 인터페이스 애플리케이션(2022), 및 소프트웨어 모듈 및/또는 컴퓨터 애플리케이션으로 도시된 입력/출력 모듈(2024)을 포함한다. 입력/출력 모듈(2024)은 예컨대, 터치스크린, 트랙 패드, 카메라, 마이크로폰 등과 같이 입력을 캡처하도록 구성된 장치를 인터페이스에 제공하는데 사용되는 소프트웨어를 나타낸다. 대안으로 또는 추가로, 인터페이스 애플리케이션(2022) 및 입력/출력 모듈(2024)은 하드웨어, 소프트웨어, 펌웨어, 또는 이의 임의의 조합으로 구현될 수 있다. 추가로, 입력/출력 모듈(2024)은 시각적 및 음향적 입력을 캡처하는 개별 장치와 같은 다수의 입력 장치를 지원하도록 구성될 수 있다.
장치(2000)는 또한 오디오 데이터를 오디오 시스템(2028)에 제공하며 및/또는 비디오 데이터를 디스플레이 시스템(2030)에 제공하는 오디오 및/또는 비디오 입력-출력 시스템(2026)을 포함한다. 오디오 시스템(2028) 및/또는 디스플레이 시스템(2030)은 오디오, 비디오 및 이미지 데이터를 처리하고, 디스플레이하며 및/또는 렌더링하는 임의의 장치를 포함할 수 있다. 비디오 신호 및 오디오 신호는 RF(무선 주파수) 링크, S-비디오 링크, 컴포지트(composite) 비디오 링크, 컴포넌트(component) 비디오 링크, DVI(디지털 비디오 인터페이스), 아날로그 오디오 접속, 또는 다른 유사한 통신 링크를 통해 장치(2000)에서 오디오 장치 및/또는 디스플레이 장치로 통신될 수 있다. 일 실시 형태에서, 오디오 시스템(2028) 및/또는 디스플레이 시스템(2030)은 장치(2000)에 대한 외부 컴포넌트로 구현된다. 대안으로, 오디오 시스템(2028) 및/또는 디스플레이 시스템(2030)은 예시적인 장치(2000)의 통합된 컴포넌트로 구현된다.
결론
본 발명이 구조적 특징 및/또는 방법론적 동작에 특정한 언어로 기재되었으나, 첨부된 청구항에 정의된 본 발명은 전술한 특정 특징 또는 동작으로 필수적으로 제한되는 것은 아니다. 대신, 전술한 특정 특징 및 동작은 청구항을 구현하는 예시적인 형태로 개시된 것이다.

Claims (20)

  1. 컴퓨팅 장치에 의해 구현되는 방법으로서,
    상기 컴퓨팅 장치의 네트워크 인터페이스 장치에 의해 수신된 네트워크 트래픽을 모니터링하는 단계와,
    상기 모니터링된 네트워크 트래픽에서 트래픽 패턴을 인식하는 단계와,
    상기 인식된 트래픽 패턴에 대응하는 상기 컴퓨팅 장치의 애플리케이션을 식별하는 단계와,
    상기 식별하는 단계에 응답하여, 식별된 상기 애플리케이션의 적어도 일부를 웨이크하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 인식하는 단계는 상기 인식된 애플리케이션에 의해 사전-등록된 상기 트래픽 패턴과 상기 네트워크 트래픽을 비교함으로써 수행되는
    방법.
  3. 제1항에 있어서,
    상기 식별하는 단계는 상기 컴퓨팅 장치의 복수의 애플리케이션 중 어느 애플리케이션이 상기 트래픽 패턴에 대해 웨이크되어야 하는지를 판정하기 위하여 상기 컴퓨팅 장치의 네트워크 스택을 조사함으로써 수행되는
    방법.
  4. 제1항에 있어서,
    상기 웨이크하는 단계는 상기 식별된 애플리케이션의 네트워크 기능에 대응하는 식별된 애플리케이션의 부분을 웨이크하고, 상기 식별된 애플리케이션의 상기 네트워크 기능에 대응하지 않는 상기 식별된 상기 애플리케이션의 또 다른 부분은 웨이크하지 않는 단계를 포함하는
    방법.
  5. 제4항에 있어서,
    상기 또 다른 부분은 상기 식별된 애플리케이션의 사용자 인터페이스의 생성을 수반하는
    방법.
  6. 제1항에 있어서,
    상기 네트워크 인터페이스 장치는 적어도 부분적으로 상기 컴퓨팅 장치에 의해 가상 장치로서 구현되는
    방법.
  7. 제1항에 있어서,
    상기 모니터링하는 단계, 상기 인식하는 단계 및 상기 식별하는 단계는 식별된 상기 애플리케이션이 중지 상태(suspended state)로 있는 동안 수행되는
    방법.
  8. 제7항에 있어서,
    상기 식별된 애플리케이션은 상기 식별된 애플리케이션의 사용자 인터페이스로부터 포커스의 제거에 응답하여 상기 중지 상태로 되는
    방법.
  9. 제8항에 있어서,
    상기 포커스는 상기 사용자 인터페이스의 최소화, 데스크탑 사용자 인터페이스의 전경으로부터 상기 사용자 인터페이스의 제거, 또는 또 다른 애플리케이션의 사용자 인터페이스와의 상호작용을 표시하는 입력의 수신으로 인해 제거되는
    방법.
  10. 제1항에 있어서,
    상기 모니터링하는 단계, 상기 인식하는 단계, 상기 식별하는 단계 및 상기 웨이크하는 단계는 상기 컴퓨팅 장치에서 오퍼레이팅 시스템의 실행을 통하여 수행되는
    방법.
  11. 제1항에 있어서,
    상기 트래픽 패턴은 특정 데이터 패킷 또는 원격 엔드포인트 개시 킵 얼라이브(remote endpoint initiated keep alive)를 나타내는
    방법.
  12. 제1항에 있어서,
    상기 식별하는 단계는 중지 상태(suspended state)에 있는 상기 컴퓨팅 장치의 또 다른 애플리케이션이 식별되지 않도록 수행되고, 상기 웨이크하는 단계는 상기 컴퓨팅 장치의 상기 또 다른 애플리케이션이 웨이크되지 않도록 수행되는
    방법.
  13. 제1항에 있어서,
    상기 모니터링하는 단계, 상기 인식하는 단계, 상기 식별하는 단계 및 상기 웨이크하는 단계는 상기 컴퓨팅 장치에 활성 로그인한(actively logged in) 사용자에 대해 수행되고 상기 컴퓨팅 장치에 활성 로그인하지 않은 또 다른 사용자에 대해서는 수행되지 않는
    방법.
  14. 컴퓨팅 장치에 의해 구현되는 방법으로서,
    상기 컴퓨팅 장치에서 실행하도록 구성된 애플리케이션에 대응하는 트래픽 패턴을 등록하는 단계와,
    상기 애플리케이션이 중지 상태에 있는 동안 네트워크 트래픽의 상기 트래픽 패턴의 인식에 응답하여, 상기 중지 상태로부터 활성 상태로 상기 애플리케이션의 적어도 일부의 전환(transition)을 트리거링하는 단계
    를 포함하는 방법.
  15. 제14항에 있어서,
    상기 트리거링하는 단계는 상기 애플리케이션의 네트워크 기능에 대응하는 상기 애플리케이션의 부분을 상기 활성 상태로 되게 하고 상기 애플리케이션의 상기 네트워크 기능에 대응하지 않는 상기 애플리케이션의 또 다른 부분은 상기 활성 상태로 되게 하지 않는
    방법.
  16. 제15항에 있어서,
    상기 또 다른 부분은 상기 애플리케이션의 사용자 인터페이스의 생성을 수반하는
    방법.
  17. 제14항에 있어서,
    상기 등록하는 단계 및 상기 트리거링하는 단계는 상기 컴퓨팅 장치에 의한 오퍼레이팅 시스템의 실행을 통해 수행되는
    방법.
  18. 명령어가 저장되어 있는 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는 컴퓨팅 장치에 의한 실행에 응답하여, 상기 컴퓨팅 장치로 하여금 상기 컴퓨팅 장치의 네트워크 인터페이스 장치를 통해 수신된 인입 패킷의 식별에 응답하여 중지된 애플리케이션의 적어도 일부분을 웨이크하기 위한 기술을 지원하도록 구성된 오퍼레이팅 시스템을 구현하게 하는
    컴퓨터 판독가능 저장 매체.
  19. 제18항에 있어서,
    상기 오퍼레이팅 시스템은 상기 컴퓨팅 장치의 복수의 애플리케이션에 전달하기 위해 복수의 인입 패킷을 합치도록 구성되는
    컴퓨터 판독가능 저장 매체.
  20. 제18항에 있어서,
    상기 오퍼레이팅 시스템은 상기 애플리케이션의 네트워크 기능에 대응하는 상기 애플리케이션의 부분을 웨이크하고, 상기 애플리케이션의 사용자 인터페이스의 생성에 대응하는 상기 애플리케이션의 또 다른 부분은 웨이크하지 않도록 구성되는
    컴퓨터 판독가능 저장 매체.
KR1020147006313A 2011-09-09 2011-10-10 웨이크 패턴 관리 기법 KR101928602B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/229,388 US9049660B2 (en) 2011-09-09 2011-09-09 Wake pattern management
US13/229,388 2011-09-09
PCT/US2011/055655 WO2013036255A1 (en) 2011-09-09 2011-10-10 Wake pattern management

Publications (2)

Publication Number Publication Date
KR20140074291A KR20140074291A (ko) 2014-06-17
KR101928602B1 true KR101928602B1 (ko) 2018-12-12

Family

ID=47830842

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006313A KR101928602B1 (ko) 2011-09-09 2011-10-10 웨이크 패턴 관리 기법

Country Status (11)

Country Link
US (3) US9049660B2 (ko)
EP (1) EP2754001B1 (ko)
JP (1) JP6385276B2 (ko)
KR (1) KR101928602B1 (ko)
CN (2) CN103051463A (ko)
AU (2) AU2011376302B2 (ko)
BR (1) BR112014005354B1 (ko)
CA (2) CA2986723C (ko)
MX (1) MX342074B (ko)
RU (1) RU2595968C2 (ko)
WO (1) WO2013036255A1 (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9049660B2 (en) 2011-09-09 2015-06-02 Microsoft Technology Licensing, Llc Wake pattern management
US8806250B2 (en) 2011-09-09 2014-08-12 Microsoft Corporation Operating system management of network interface devices
US8892710B2 (en) 2011-09-09 2014-11-18 Microsoft Corporation Keep alive management
US20140310776A1 (en) * 2012-01-26 2014-10-16 Christoph J. Graham Control Access Based on Network Status
EP2944069B1 (en) * 2013-01-10 2019-03-13 Telefonaktiebolaget LM Ericsson (publ) Connection mechanism for energy-efficient peer-to-peer networks
US9491067B2 (en) * 2013-04-09 2016-11-08 Cisco Technology, Inc. Timeout for identifying network device presence
US9491032B2 (en) 2013-05-29 2016-11-08 Microsoft Technology Licensing, Llc Pattern coalescing for remote wake-enabled applications
CN105637926B (zh) * 2013-06-11 2019-06-21 七网络有限责任公司 将应用流量分载至共享通信信道进行无线网络中的信令优化用于使用专有和非专有协议的流量
CN104469901B (zh) 2013-09-17 2018-09-07 华为终端(东莞)有限公司 数据处理的方法及装置
US9531678B1 (en) 2013-10-15 2016-12-27 Progress Software Corporation On-premises data access and firewall tunneling
US9473506B1 (en) 2013-10-15 2016-10-18 Progress Software Corporation Secure file transfer and notification server
WO2015077961A1 (zh) * 2013-11-28 2015-06-04 华为终端有限公司 一种发送心跳消息的方法及移动终端
US9351254B2 (en) * 2014-01-22 2016-05-24 Seven Networks, Llc Method for power saving in mobile devices by optimizing wakelocks
US20160073347A1 (en) * 2014-09-10 2016-03-10 Microsoft Corporation Device Proximity Detection Implemented In Hardware
TWI577154B (zh) * 2014-10-31 2017-04-01 宏碁股份有限公司 保持遠端連線方法、電子裝置與伺服器
JP6455106B2 (ja) * 2014-12-01 2019-01-23 富士ゼロックス株式会社 情報処理装置およびプログラム
JP6511786B2 (ja) * 2014-12-03 2019-05-15 富士ゼロックス株式会社 情報処理装置、およびプログラム
US10932192B2 (en) 2016-01-12 2021-02-23 Qualcomm Incorporated EMTC power saving mode (PSM) enhancements for service outage
DE102016103928A1 (de) 2016-03-04 2017-09-07 Eaton Electrical Ip Gmbh & Co. Kg Busanordnung und Verfahren zum Betreiben einer Busanordnung
US9793919B1 (en) * 2016-12-08 2017-10-17 Advanced Micro Devices, Inc. Compression of frequent data values across narrow links
EP3656183A4 (en) * 2017-07-18 2021-02-24 Hewlett-Packard Development Company, L.P. DEVICE MANAGEMENT
US10616182B1 (en) 2017-11-30 2020-04-07 Progress Software Corporation Data access and firewall tunneling using a custom socket factory
KR20210001740A (ko) 2019-06-28 2021-01-06 삼성전자주식회사 디스플레이 장치 및 그의 동작 방법
US20240098652A1 (en) * 2021-02-23 2024-03-21 Hewlett-Packard Development Company, L.P. Specific absorption rate mitigations
CN114168355B (zh) * 2021-10-29 2022-10-21 荣耀终端有限公司 一种应用保活方法及电子设备
CN114584933B (zh) * 2022-03-03 2023-05-02 极米科技股份有限公司 无线传输中降低延迟的方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000235433A (ja) * 1999-02-16 2000-08-29 Toshiba Corp 携帯電話通信制御装置
US20080162682A1 (en) * 2006-12-29 2008-07-03 Lakshmi Ramachandran Maintaining network connectivity while operating in low power mode

Family Cites Families (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4635187A (en) 1983-12-19 1987-01-06 At&T Bell Laboratories Control for a multiprocessing system program process
US5699511A (en) 1995-10-10 1997-12-16 International Business Machines Corporation System and method for dynamically varying low level file system operation timeout parameters in network systems of variable bandwidth
US6212175B1 (en) 1997-04-22 2001-04-03 Telxon Corporation Method to sustain TCP connection
US6938040B2 (en) 1998-04-28 2005-08-30 International Business Machines Corporation Pattern matching in communications network where first memory stores set of patterns, and second memory stores mask data identifying patterns in the first memory
US6904519B2 (en) 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US6640268B1 (en) 1998-08-28 2003-10-28 Intel Corporation Dynamic polling mechanism for wireless devices
US7103806B1 (en) 1999-06-04 2006-09-05 Microsoft Corporation System for performing context-sensitive decisions about ideal communication modalities considering information about channel reliability
US7213063B2 (en) 2000-01-18 2007-05-01 Lucent Technologies Inc. Method, apparatus and system for maintaining connections between computers using connection-oriented protocols
US6976071B1 (en) 2000-05-03 2005-12-13 Nortel Networks Limited Detecting if a secure link is alive
US7562147B1 (en) 2000-10-02 2009-07-14 Microsoft Corporation Bi-directional HTTP-based reliable messaging protocol and system utilizing same
KR100439723B1 (ko) 2001-11-06 2004-07-12 삼성전자주식회사 휴대용 컴퓨터
US7047428B2 (en) 2002-01-03 2006-05-16 Broadcom Corporation Method and apparatus for performing wake on LAN power management
KR100459126B1 (ko) 2002-01-09 2004-12-03 엘지전자 주식회사 통신망의 세션 유지 제어 방법
US6943667B1 (en) 2002-02-25 2005-09-13 Palm, Inc. Method for waking a device in response to a wireless network activity
US7564810B2 (en) 2002-05-08 2009-07-21 Microsoft Corporation Method and system for managing power consumption of a network interface module in a wireless computing device
DE10225578A1 (de) * 2002-06-10 2003-12-18 Philips Intellectual Property Verfahren und Chipeinheit zum Ansprechen und/oder Aktivieren eines Teilnehmers
US7152111B2 (en) 2002-08-15 2006-12-19 Digi International Inc. Method and apparatus for a client connection manager
US7120688B1 (en) 2002-09-03 2006-10-10 Bellsouth Intellectual Property Corp. Systems and methods for an infrastructure centralized heartbeat
US7274929B1 (en) 2002-12-16 2007-09-25 Banginwar Rajesh P Power management within a wireless communication system
US7340615B2 (en) 2003-01-31 2008-03-04 Microsoft Corporation Method and apparatus for managing power in network interface modules
US7676580B2 (en) 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
JP3882917B2 (ja) 2003-04-03 2007-02-21 日本アイ・ビー・エム株式会社 情報処理システム、情報処理装置及びプログラム
JP2004362020A (ja) * 2003-06-02 2004-12-24 Fujitsu Ltd トラフィックパターンを考慮した通信メディアの選択機能を備えた端末装置
US7447918B2 (en) * 2003-08-19 2008-11-04 Intel Corporation Method, apparatus and system for enabling a new data processing device operating state
US7512679B2 (en) 2003-08-29 2009-03-31 International Business Machines Corporation Apparatus and method to select a captain from a plurality of control nodes
JP4222205B2 (ja) * 2003-12-25 2009-02-12 株式会社デンソー 電磁スプール弁
US20050198257A1 (en) 2003-12-29 2005-09-08 Gupta Ajay G. Power conservation in wireless devices
US7426569B2 (en) 2004-02-25 2008-09-16 Research In Motion Limited System and method for maintaining a network connection
US20050239518A1 (en) * 2004-04-21 2005-10-27 D Agostino Anthony Systems and methods that provide enhanced state machine power management
ATE475276T1 (de) 2004-06-02 2010-08-15 Nokia Corp Roamingverfahren zwischen netzwerken
US7584274B2 (en) 2004-06-15 2009-09-01 International Business Machines Corporation Coordinating use of independent external resources within requesting grid environments
JP4196004B2 (ja) * 2004-07-12 2008-12-17 パナソニック株式会社 マルチメディア情報の受信方法及びこれを実現するプログラム、マルチメディア情報の受信装置
US7675916B2 (en) 2004-07-12 2010-03-09 At&T Intellectual Property I, L.P. Systems and methods for dynamically adjusting QoS parameters
EP1790131B1 (en) 2004-09-09 2012-12-05 Avaya Inc. Methods of and systems for network traffic security
JP4275610B2 (ja) * 2004-11-30 2009-06-10 京セラ株式会社 携帯電話端末及びキー通知方法並びにそのコンピュータプログラム
US7899921B2 (en) * 2004-12-08 2011-03-01 Microsoft Corporation Verifying and maintaining connection liveliness in a reliable messaging for web services environment
US7496059B2 (en) * 2004-12-09 2009-02-24 Itt Manufacturing Enterprises, Inc. Energy-efficient medium access control protocol and system for sensor networks
US7460556B2 (en) 2005-02-17 2008-12-02 International Business Machines Corporation Autonomic adjustment of connection keep-alives
US7631202B2 (en) 2005-03-29 2009-12-08 Microsoft Corporation Power management of wireless local area network interface devices
US20060252449A1 (en) 2005-04-26 2006-11-09 Sridhar Ramesh Methods and apparatus to provide adaptive power save delivery modes in wireless local area networks (LANs)
US7668100B2 (en) 2005-06-28 2010-02-23 Avaya Inc. Efficient load balancing and heartbeat mechanism for telecommunication endpoints
US7809386B2 (en) 2005-06-29 2010-10-05 Nokia Corporation Local network proxy for a remotely connected mobile device operating in reduced power mode
US7440781B2 (en) 2005-10-07 2008-10-21 Symbol Technologies, Inc. System and method for power conservation in a wireless device
US20070112954A1 (en) 2005-11-15 2007-05-17 Yahoo! Inc. Efficiently detecting abnormal client termination
JP4622835B2 (ja) * 2005-12-07 2011-02-02 株式会社日立製作所 仮想計算機システム及びそのネットワーク通信方法
DE602005013410D1 (de) 2005-12-15 2009-04-30 Nokia Corp Verfahren, Apparat und Computerprogrammprodukt zur Beibehaltung von Abbildungszuordnungen
GB0526029D0 (en) 2005-12-21 2006-02-01 Nokia Corp Managing connections in a wireless communications network
JP4898225B2 (ja) * 2006-01-06 2012-03-14 キヤノン株式会社 アプリケーション装置及びアプリケーション装置の電力の復帰方法
US7624181B2 (en) 2006-02-24 2009-11-24 Cisco Technology, Inc. Techniques for authenticating a subscriber for an access network using DHCP
JP4405472B2 (ja) 2006-02-27 2010-01-27 株式会社東芝 通信システムとそのサーバ装置及び端末装置
US7523197B2 (en) 2006-03-09 2009-04-21 International Business Machines Corporation Method for IP address discovery in rapidly changing network environment
US7693146B2 (en) 2006-03-10 2010-04-06 Cisco Technology, Inc. Method and system for filtering traffic from unauthorized sources in a multicast network
US7779451B2 (en) 2006-03-30 2010-08-17 Intel Corporation Securing wakeup network events
US20070233815A1 (en) 2006-03-30 2007-10-04 Inventec Corporation Initialization picture displaying method
US20070233855A1 (en) 2006-04-03 2007-10-04 International Business Machines Corporation Adaptible keepalive for enterprise extenders
US7792526B2 (en) 2006-05-15 2010-09-07 Research In Motion Limited Adjustment of background scanning interval based on network usage
US8565715B2 (en) 2006-05-19 2013-10-22 Alcatel Lucent Mobile-initiated location measurement
US7729357B2 (en) 2006-06-20 2010-06-01 General Instrument Corporation Method and apparatus for enabling a network device to asynchronously access a set top box in a way that conserves network bandwidth
US7729273B2 (en) 2006-06-20 2010-06-01 General Instrument Corporation Method and apparatus for conserving bandwidth between a network device and a remote device
US7672264B2 (en) 2006-06-21 2010-03-02 International Business Machines Corporation Method of pausing keep-alive messages and roaming for virtual private networks on handheld devices to save battery power
US8260372B2 (en) 2006-06-30 2012-09-04 Nokia Corporation Traffic monitoring for regulating states of a terminal
JP2008046940A (ja) * 2006-08-18 2008-02-28 Hitachi Ltd 情報処理装置
US8849961B2 (en) 2006-09-06 2014-09-30 Nokia Corporation Mobile network optimized method for keeping an application IP connection always on
US8194636B1 (en) 2006-10-05 2012-06-05 Dust Networks, Inc. Adaptive timing synchronization for mesh networks
JP2008107914A (ja) * 2006-10-23 2008-05-08 Denso Corp マイクロコンピュータ、プログラム及び車両用電子制御装置
US8220049B2 (en) * 2006-12-28 2012-07-10 Intel Corporation Hardware-based detection and containment of an infected host computing device
US7768939B1 (en) 2007-01-02 2010-08-03 Juniper Networks, Inc. Network proxy with asymmetric connection connectivity
US20080165796A1 (en) 2007-01-05 2008-07-10 International Business Machines Corporation Method for a heartbeat algorithm for a dynamically changing network environment
US7693084B2 (en) 2007-02-28 2010-04-06 Microsoft Corporation Concurrent connection testing for computation of NAT timeout period
US7881318B2 (en) * 2007-02-28 2011-02-01 Microsoft Corporation Out-of-band keep-alive mechanism for clients associated with network address translation systems
US8023432B2 (en) 2007-03-12 2011-09-20 Microsoft Corporation Cost reduction of NAT connection state keep-alive
US20080240140A1 (en) 2007-03-29 2008-10-02 Microsoft Corporation Network interface with receive classification
US20080239988A1 (en) 2007-03-29 2008-10-02 Henry Ptasinski Method and System For Network Infrastructure Offload Traffic Filtering
US20080295173A1 (en) * 2007-05-21 2008-11-27 Tsvetomir Iliev Tsvetanov Pattern-based network defense mechanism
US7843915B2 (en) 2007-08-01 2010-11-30 International Business Machines Corporation Packet filtering by applying filter rules to a packet bytestream
US7957335B2 (en) * 2007-08-23 2011-06-07 Cisco Technology, Inc. Dynamic power usage management based on historical traffic pattern data for network devices
US8086886B2 (en) 2007-08-31 2011-12-27 Silicon Image, Inc. Group power management of network devices
US8050207B2 (en) 2007-08-31 2011-11-01 Hewlett-Packard Development Company, L.P. Power saving techniques based on coverage conditions
JP5008138B2 (ja) 2007-11-12 2012-08-22 株式会社リコー 情報処理装置、情報処理方法、プログラム及び記録媒体
JP5444639B2 (ja) 2007-11-20 2014-03-19 パナソニック株式会社 サーバ装置と分散サーバシステム
US8024431B2 (en) 2007-12-21 2011-09-20 Domingo Enterprises, Llc System and method for identifying transient friends
US20090205038A1 (en) * 2008-02-08 2009-08-13 Microsoft Corporation Enabling Wake on LAN Behind NATs and Firewalls
US20090210519A1 (en) * 2008-02-18 2009-08-20 Microsoft Corporation Efficient and transparent remote wakeup
US7936708B2 (en) 2008-02-26 2011-05-03 Intel Corporation Device, system, and method of wireless network selection and handover
US20090240794A1 (en) 2008-03-20 2009-09-24 Huaiyu Liu Techniques utilizing a layer-2 proxy for energy-efficient service discovery and connectivity in networks
US20090271517A1 (en) 2008-04-25 2009-10-29 Webmessenger, Inc. Method and apparatus for wireless device reconnection handling
US8009648B2 (en) 2008-05-08 2011-08-30 Harris Corporation Mobile ad hoc network with isosynchronous communications and related methods
US8045865B2 (en) 2008-06-12 2011-10-25 Xerox Corporation Automatic optimization of HFSI warning thresholds based on actual service interval statistics
US8072912B2 (en) 2008-06-25 2011-12-06 Intel Corporation Techniques for management of shared resources in wireless multi-communication devices
WO2010006142A1 (en) 2008-07-11 2010-01-14 Marvell World Trade Ltd. Power save mode for access points
US8510577B2 (en) * 2008-07-28 2013-08-13 Microsoft Corporation Reducing power consumption by offloading applications
US20100039971A1 (en) * 2008-08-15 2010-02-18 Hong Kong Applied Science and Technology Research Institute, Co. Power Management Method and Communication System
US8064362B2 (en) 2008-08-21 2011-11-22 Cisco Technology, Inc. Wide area network optimization proxy routing protocol
US20100058082A1 (en) * 2008-08-27 2010-03-04 Lenovo (Singapore) Ple., Ltd. Maintaining network link during suspend state
US9521625B2 (en) * 2008-09-15 2016-12-13 Apple Inc. Electronic devices for receiving pushed data
US8036115B2 (en) 2008-09-17 2011-10-11 Intel Corporation Synchronization of multiple incoming network communication streams
US20100332212A1 (en) 2008-09-19 2010-12-30 Ori Finkelman Method and apparatus for sleep and wake of computer devices
US20100074108A1 (en) * 2008-09-25 2010-03-25 Alcatel-Lucent Virtual partitioned policy space
US20100106874A1 (en) 2008-10-28 2010-04-29 Charles Dominguez Packet Filter Optimization For Network Interfaces
CN101751361B (zh) 2008-12-16 2012-10-10 联想(北京)有限公司 控制移动终端中数据传输接口的切换方法及终端设备
US8498229B2 (en) 2008-12-30 2013-07-30 Intel Corporation Reduced power state network processing
US9104406B2 (en) * 2009-01-07 2015-08-11 Microsoft Technology Licensing, Llc Network presence offloads to network interface
US8331274B2 (en) 2009-01-12 2012-12-11 Broadcom Corporation Waking up a VoIP terminal device from a power-saving state
US7978630B2 (en) 2009-04-30 2011-07-12 Sony Ericsson Mobile Communications Ab Method and system of maintaining a connection in a network communication system
US8375134B2 (en) 2009-06-08 2013-02-12 Microsoft Corporation Determining an efficient keep-alive interval for a network connection
US8065419B2 (en) 2009-06-23 2011-11-22 Core Wireless Licensing S.A.R.L. Method and apparatus for a keep alive probe service
US8422365B2 (en) 2009-09-21 2013-04-16 Cisco Technology, Inc. Energy efficient scaling of network appliance service performance
US20110102157A1 (en) 2009-11-05 2011-05-05 Nokia Corporation Wake-Up For Wireless Devices Based On Requested Data
MX2012005871A (es) * 2009-11-23 2012-11-30 Research In Motion Ltd Metodo y aparato para transicion de estado/modo.
US8155625B2 (en) * 2009-12-22 2012-04-10 Motorola Mobility, Inc. Methods and apparatus for conserving energy used by a mobile device
US9009297B2 (en) 2010-01-15 2015-04-14 Apple Inc. Method and apparatus for idling a network connection
JP4970560B2 (ja) * 2010-01-23 2012-07-11 レノボ・シンガポール・プライベート・リミテッド 特定の機能を維持しながら消費電力を低減するコンピュータ
CN102014148A (zh) 2010-08-19 2011-04-13 上海酷吧信息技术有限公司 一种在手机即时通讯中自动推荐同区域好友的方法
US8635630B2 (en) 2010-10-25 2014-01-21 Microsoft Corporation Application lifetime management
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
US8326985B2 (en) 2010-11-01 2012-12-04 Seven Networks, Inc. Distributed management of keep-alive message signaling for mobile network resource conservation and optimization
KR20120070385A (ko) 2010-12-21 2012-06-29 삼성전자주식회사 에너지 효율을 위한 이동 통신망 제어 장치 및 방법
US9465427B2 (en) 2011-06-30 2016-10-11 International Business Machines Corporation Software-centric power management by indirectly determining that user is not actively using computer program running on computing device
US8239698B2 (en) * 2011-07-01 2012-08-07 Intel Corporation System and method for maintaining connectivity to remote application servers
US8566625B2 (en) 2011-07-01 2013-10-22 Intel Corporation System and method for determining transmitting frequency to maintain remote application server connectivity
US8917742B2 (en) 2011-07-13 2014-12-23 Microsoft Corporation Mechanism to save system power using packet filtering by network interface
US8806250B2 (en) 2011-09-09 2014-08-12 Microsoft Corporation Operating system management of network interface devices
US8892710B2 (en) 2011-09-09 2014-11-18 Microsoft Corporation Keep alive management
US9049660B2 (en) 2011-09-09 2015-06-02 Microsoft Technology Licensing, Llc Wake pattern management
US8621494B2 (en) 2011-09-12 2013-12-31 Microsoft Corporation Managing processes within suspend states and execution states
US9787463B2 (en) 2011-10-14 2017-10-10 Maxlinear, Inc. Method and system for server-side message handling in a low-power wide area network
US8307234B2 (en) * 2012-01-14 2012-11-06 Intel Corporation Maintaining connectivity during low power operation
KR20130087853A (ko) 2012-01-30 2013-08-07 삼성전자주식회사 파워 컨트롤 시스템 및 그 동작 방법
US9277500B1 (en) 2012-09-10 2016-03-01 Amazon Technologies, Inc. Power efficient wireless connectivity
US9037887B2 (en) 2012-09-26 2015-05-19 Intel Corporation Energy-efficient application content update and sleep mode determination

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000235433A (ja) * 1999-02-16 2000-08-29 Toshiba Corp 携帯電話通信制御装置
US20080162682A1 (en) * 2006-12-29 2008-07-03 Lakshmi Ramachandran Maintaining network connectivity while operating in low power mode

Also Published As

Publication number Publication date
BR112014005354A2 (pt) 2017-03-28
JP6385276B2 (ja) 2018-09-05
EP2754001A4 (en) 2015-04-29
US20150215185A1 (en) 2015-07-30
CN107749797B (zh) 2021-01-01
MX2014002798A (es) 2014-04-10
CN107749797A (zh) 2018-03-02
CA2986723A1 (en) 2013-03-14
AU2011376302A1 (en) 2014-03-20
RU2595968C2 (ru) 2016-08-27
KR20140074291A (ko) 2014-06-17
US9049660B2 (en) 2015-06-02
CA2847175C (en) 2020-07-07
US9294379B2 (en) 2016-03-22
BR112014005354B1 (pt) 2021-07-13
US9596153B2 (en) 2017-03-14
CA2847175A1 (en) 2013-03-14
MX342074B (es) 2016-09-13
CN103051463A (zh) 2013-04-17
JP2014526731A (ja) 2014-10-06
AU2011376302B2 (en) 2017-03-30
AU2017201532A1 (en) 2017-03-23
AU2017201532B2 (en) 2018-02-01
EP2754001B1 (en) 2018-02-14
BR112014005354A8 (pt) 2018-02-06
EP2754001A1 (en) 2014-07-16
RU2014108876A (ru) 2015-09-20
US20160226727A1 (en) 2016-08-04
CA2986723C (en) 2019-09-17
US20130067060A1 (en) 2013-03-14
WO2013036255A1 (en) 2013-03-14

Similar Documents

Publication Publication Date Title
KR101928602B1 (ko) 웨이크 패턴 관리 기법
US9736050B2 (en) Keep alive management
US9939876B2 (en) Operating system management of network interface devices
US20100332212A1 (en) Method and apparatus for sleep and wake of computer devices

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant