KR101417555B1 - 네트워크 접속을 유휴화하기 위한 방법 및 장치 - Google Patents

네트워크 접속을 유휴화하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR101417555B1
KR101417555B1 KR1020127021336A KR20127021336A KR101417555B1 KR 101417555 B1 KR101417555 B1 KR 101417555B1 KR 1020127021336 A KR1020127021336 A KR 1020127021336A KR 20127021336 A KR20127021336 A KR 20127021336A KR 101417555 B1 KR101417555 B1 KR 101417555B1
Authority
KR
South Korea
Prior art keywords
path
interface
network interface
counter
idle
Prior art date
Application number
KR1020127021336A
Other languages
English (en)
Other versions
KR20120106897A (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 KR20120106897A publication Critical patent/KR20120106897A/ko
Application granted granted Critical
Publication of KR101417555B1 publication Critical patent/KR101417555B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3209Monitoring remote activity, e.g. over telephone lines or network connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • 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/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)
  • Telephone Function (AREA)

Abstract

설명된 실시예들은 네트워크 인터페이스의 동작 상태를 제어하는 시스템을 제공한다. 동작 동안에, 경로에 대해 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여, 시스템은 경로에 대한 경로 구조를 생성하고 네트워크 인터페이스에 대한 인터페이스 데이터 구조 내의 경로 참조 카운터를 인크리멘트한다. 후속해서 애플리케이션이 더 이상 그 경로를 이용하고 있지 않다는 판정시에, 시스템은 경로 구조 내의 경로 만료 타이머를 미리결정된 만료 시간으로 설정한다. 경로 만료 타이머가 만료하면, 시스템은 경로 구조를 삭제하고 인터페이스 데이터 구조 내의 경로 참조 카운터를 디크리멘트한다. 인터페이스 데이터 구조 내의 경로 참조 카운터를 디크리멘트하여 경로 참조 카운터가 제로와 같아지면, 시스템은 구성 애플리케이션에 신호를 전송하여 애플리케이션에게 네트워크 인터페이스가 유휴화될 수 있다는 것을 통보한다.

Description

네트워크 접속을 유휴화하기 위한 방법 및 장치{METHOD AND APPARATUS FOR IDLING A NETWORK CONNECTION}
설명되는 실시예는 네트워크 접속을 제공하는 전자 장치에 관한 것이다. 더 구체적으로는, 설명되는 실시예는 네트워크 접속에 대한 개선된 유휴화를 용이하게 하는 전자 장치에 관한 것이다.
현대의 많은 전자 장치들은, 유선 또는 무선 네크워크를 가로질러 장치와 다른 장치 사이에서 데이터를 전송하는 데 이용될 수 있는 네트워킹 서브시스템을 포함한다. 예를 들어, 이들 전자 장치들은 BluetoothTM 네트워킹 서브시스템, 셀룰러 네트워킹 서브시스템, 유니버설 직렬 버스(USB) 네트워킹 서브시스템, IEEE(Institute for Electrical and Electronic Engineers) 802.11 무선 네트워크 서브시스템, 이더넷 네트워킹 서브시스템, 또는 유선이나 무선의 개인 영역 네트워킹(PAN) 서브시스템을 포함할 수 있다. 이들 전자 장치들에서, 각각의 네트워킹 서브시스템은 대응하는 네트워크 상에서 통신하기 위해 전자 장치들에 의해 이용되는 하드웨어(예를 들어, 송신기, 무선장치 등) 및/또는 소프트웨어를 포함하는 인터페이스를 가진다.
이들 전자 장치들 중 일부에서, 주어진 네트워킹 서브시스템의 인터페이스의 동작 모드는 인터페이스 관리자 태스크에 의해 제어된다. 인터페이스 관리자 태스크의 기능들 중 하나는, 인터페이스 상의 네트워크 트래픽의 부족에 기초하여 인터페이스의 전력을 차단함으로써 전력을 절감할 시기를 결정하는 것이 될 수 있다. 이들 장치에서, 인터페이스 상의 네트워크 트래픽의 레벨을 판정할 때, 인터페이스 관리자 태스크는 통상 인터페이스의 물리층에서 소정의 최소 레이트로 패킷들이 전송되고 있는지의 여부를 판정한다.
인터페이스 관리자 태스크는 인터페이스의 전력을 차단할지에 관한 결정을 내리기 위해 물리층에서 패킷들이 전송되고 있는 레이트를 이용하기 때문에, 인터페이스 관리자 태스크는 애플리케이션에 의해 여전히 사용중에 있는 인터페이스의 전력을 잘못 차단할 수 있다. 구체적으로는, 애플리케이션이 여전히 활성(예를 들어, 사용자에 의해 종료되지 않음)이지만, 단순히 미리결정된 양의 시간 동안 인터페이스를 이용하여 패킷들을 전송하고 있지 않다면, 인터페이스 관리자 태스크는 그 인터페이스의 전력을 차단할 수 있다. 후속해서 그 애플리케이션이 패킷 전송을 재개하면, 그 애플리케이션은 인터페이스가 다운된 것을 알고, 사용자에게 에러를 시그널링할 수 있다(또는 인터페이스를 재활성화하도록 강제될 수도 있다). 이것은 사용자를 불편하게 할 수 있다. 예를 들어, 2명 이상의 사용자들이, 장치들 사이에서 게임 데이터를 전송하기 위해 네트워크 접속에 의존하는 휴대형 전자 장치(예를 들어, 랩탑 또는 스마트폰)에서 게임 애플리케이션을 이용하고 있다고 가정하자. 만일 게임 데이터를 전송하는 동안에 미리결정된 시간보다 긴 일시정지(pause)가 발생한다면, 장치들 중 하나의 인터페이스 관리자 태스크는 대응하는 인터페이스의 전력을 차단(또는 인터페이스의 동작 모드를 기타의 방식으로 조정)할 수 있고, 이것은 인터페이스를 통해 게임 데이터를 전송하는 전자 장치의 능력에 지장을 주어, 잠재적으로 게임의 중단을 초래할 수도 있다.
설명된 실시예들은 네트워크 인터페이스의 동작 상태를 제어하는 시스템을 제공한다. 동작 동안에, 경로에 대해 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여, 시스템은 경로에 대한 경로 구조를 생성하고 네트워크 인터페이스에 대한 인터페이스 데이터 구조 내의 경로 참조 카운터를 인크리멘트한다. 후속해서 애플리케이션이 더 이상 그 경로를 이용하고 있지 않다는 판정시에, 시스템은 경로 구조 내의 경로 만료 타이머를 미리결정된 만료 시간으로 설정한다. 경로 만료 타이머가 만료하면, 시스템은 경로 구조를 삭제하고 인터페이스 데이터 구조 내의 경로 참조 카운터를 디크리멘트한다. 인터페이스 데이터 구조 내의 경로 참조 카운터를 디크리멘트하여 경로 참조 카운터가 제로와 같아지면, 시스템은 구성 애플리케이션에 신호를 전송하여 애플리케이션에게 네트워크 인터페이스가 유휴화될 수 있다는 것을 통보한다.
일부 실시예들에서, 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여, 만일 네트워크 인터페이스가 이미 활성이 아니라면, 시스템은 네트워크 인터페이스를 활성화한다. 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되면, 네트워크 인터페이스의 활성화시에, 시스템은 또한 적극적 인터페이스 카운터를 인크리멘트한다. (이들 실시예들에서, 적극적 인터페이스 카운터는, 적극적으로 유휴화되도록 구성된 어떠한 네트워크 인터페이스도 활성이지 않을 때 제로와 같다.)
일부 실시예들에서, 적극적으로 유휴화되도록 구성된 네트워크 인터페이스가 유휴화되었다는 것을 가리키는 신호를 수신하면, 시스템은 적극적 인터페이스 카운터를 디크리멘트한다.
일부 실시예들에서, 경로 구조를 삭제할 때, 시스템은 만료된 경로 만료 타이머를 갖는 경로 구조를 스캐닝하고, 만료된 경로 만료 타이머를 갖는 경로 구조를 삭제한다. 이들 실시예들에서, 적극적 인터페이스 카운터가 제로와 같을 때, 시스템은 네트워크 프로토콜 스택 메커니즘을 이용하여 경로 구조를 스캐닝한다. 그러나, 적극적 인터페이스 카운터가 제로보다 크면, 시스템은 경로 도메인의 드레인 기능을 이용하여 경로 구조를 스캐닝한다.
일부 실시예들에서, 시스템은 네트워크 프로토콜 스택 메커니즘을 이용하여 만료된 경로가 스캐닝될 때 경로 도메인의 드레인 기능에 대한 포인터를 NULL로 조정한다. 일부 실시예들에서, 시스템은 드레인 기능을 이용하여 만료된 경로가 스캐닝될 때 경로 도메인의 드레인 기능에 대한 포인터를 드레인 기능을 가리키도록 조정한다.
일부 실시예들에서, 경로 구조 내의 경로 만료 타이머를 미리결정된 만료 시간으로 설정하면, 시스템은 경로 구조에 의해 이용되는 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있는지를 판정한다. 만일 그렇다면, 시스템은 경로 만료 타이머를 더 짧은 만료 시간으로 설정한다. 그렇지 않다면, 시스템은 경로 만료 타이머를 통상의 만료 시간으로 설정한다. 이들 실시예들에서, 더 짧은 만료 시간은 통상의 만료 시간보다 짧다.
일부 실시예들에서, 네트워크 인터페이스를 유휴화할 때, 시스템은, (1) 네트워크 인터페이스의 전력을 차단하거나; (2) 네트워크 인터페이스를 저전력 모드로 전환하거나; (3) 네트워크 인터페이스를 통상의/활성 전력 레벨에서 이용하지만, 낮은 우선순위의 동작이나 유지보수 동작을 수행하기 위해서만 이용한다.
도 1은 설명된 실시예들에 따른 컴퓨터 시스템의 블록도를 나타낸다.
도 2는 설명된 실시예들에 따른 운영 체제를 나타낸다.
도 3은 설명된 실시예들에 따른 운영 체제 내의 예시적 인터페이스 데이터 구조와 경로 데이터 구조를 나타내는 블록도를 나타낸다.
도 4는 설명된 실시예들에 따른 다수의 예시적 커널 프로토콜 도메인들과 그들의 연관된 도메인-특유의 기능을 나타내는 블록도를 나타낸다.
도 5는 설명된 실시예들에 따른 운영 체제와 다수의 애플리케이션들의 블록도를 나타낸다.
도 6은 설명된 실시예들에 따른 인터페이스를 관리하기 위한 프로세스를 나타내는 플로차트를 나타낸다.
도 7은 설명된 실시예들에 따른 인터페이스를 유휴화하기 위한 프로세스를 나타내는 플로차트를 나타낸다.
도면들에서, 유사한 참조번호는 동일한 도면 요소들을 가리킨다.
이하의 설명은 당업자가 설명된 실시예들을 제작하고 이용할 수 있게 하도록 제시되며, 특정한 애플리케이션 및 그 요구조건의 맥락에서 제공된다. 설명된 실시예들에 대한 다양한 수정이 당업자에게는 명백할 것이며, 여기서 정의된 일반 원리는 설명된 실시예들의 사상과 범위를 벗어나지 않고 다른 실시예들 및 애플리케이션들에 적용될 수도 있다. 따라서, 설명된 실시예들은 도시된 실시예들로 한정되는 것은 아니며, 여기서 개시된 원리 및 특징과 일치하는 가장 넓은 범위가 주어져야 한다.
본 상세한 설명에서 설명되는 데이터 구조 및 코드는 컴퓨터-판독가능한 저장 매체에 저장될 수 있다. 컴퓨터-판독가능한 저장 매체는 컴퓨터 시스템에 의해 사용되는 데이터 구조 및 코드를 저장할 수 있는 임의의 장치나 매체(또는 장치 및/또는 매체의 조합)을 포함할 수 있다. 예를 들어, 컴퓨터-판독가능한 저장 매체는, 플래시 메모리, 랜덤 액세스 메모리(RAM, SRAM, DRAM, RDRAM, DDR/DDR2/DDR3 SDRAM 등), 자기 또는 광학 저장 매체(예를 들어, 디스크 드라이브, 자기 테이프, CD, DVD 등), 또는 데이터 구조나 코드를 저장할 수 있는 기타의 매체를 포함한, 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다. 설명된 실시예들에서, 컴퓨터-판독가능한 저장 매체는 전송 신호와 같은 법으로 정하지 않은 컴퓨터-판독가능한 저장 매체를 포함하지 않는다.
이하의 설명에서 설명되는 방법 및 프로세스는 컴퓨터-판독가능한 저장 매체에 저장되는 프로그램 코드로서 구현될 수 있다. 컴퓨터 시스템(예를 들어, 도 1의 컴퓨터 시스템(100)을 참조)이 컴퓨터-판독가능한 저장 매체에 저장된 프로그램 코드를 판독하고 실행할 때, 컴퓨터 시스템은 컴퓨터-판독가능한 저장 매체에 저장된 프로그램 코드 내의 방법 및 프로세스를 수행한다.
이하의 설명에서 설명되는 방법 및 프로세스는 하드웨어 모듈에 포함될 수 있다. 예를 들어, 하드웨어 모듈은 주문형 집적 회로(ASIC) 칩, FPGA(field-programmable gate arrays), 및 기타의 프로그래머블 논리 장치들을 포함할 수 있지만, 이것으로 한정되는 것은 아니다. 하드웨어 모듈들이 활성화될 때, 하드웨어 모듈들은 하드웨어 모듈들에 포함된 방법 및 프로세스를 수행한다. 일부 실시예들에서, 하드웨어 모듈은 방법 및 프로세스를 수행하기 위해 (예를 들어, 명령어를 실행함으로써) 구성될 수 있는 하나 이상의 범용 회로를 포함한다.
개관
설명된 실시예들은 네트워크 서브시스템에서 인터페이스에 대한 "적극적" 유휴화를 용이하게 한다. 실시예에 따라, "유휴화"란, 인터페이스가 완전히 전력이 차단되거나, 저전력(그러나 적어도 부분적으로는 동작) 모드로 전환하거나, 통상적으로 이용(그러나, 낮은 우선순위나 인터페이스 유지보수 동작만을 실시)되는 것을 의미한다. 본 설명에서 사용되는 "적극적"이란 더욱 즉각적으로 반응하거나 인터페이스에 대한 지능적인 유휴화를 가리키며, 이것은 시스템 자원 사용의 최적화를 용이하게 할 수 있다.
설명된 실시예에서, 주어진 인터페이스는 적극적으로 유휴화되도록 구성될 수 있다. 이러한 인터페이스에 대해, 운영 체제는 인터페이스를 참조하는 경로를 모니터링하여 경로가 더 이상 사용중이지 않아 만료되어 삭제되었는지를 판정한다. 인터페이스를 참조하는 마지막 경로가 삭제되면, 운영 체제는 인터페이스 관리자 태스크에게 인터페이스가 유휴화에 대한 후보라는 것을 통보할 수 있다(예를 들어, 구성 에이전트에게 통보하고, 그 다음, 구성 에이전트가 인터페이스 관리자 태스크에게 통보할 수 있다). 그러면 인터페이스 관리자 태스크는 인터페이스를 유휴화할 수 있다.
일부 실시예들에서, 인터페이스가 유휴화에 대한 후보라는 통보의 수신시, 인터페이스 관리자 태스크는 그 통보가 운영 체제에 의해 전송된 이후 그 인터페이스를 참조하는 어떠한 경로도 확립되지 않았다는 것을 보장하기 위해 운영 체제를 검사한다. 만일 그 인터페이스를 참조하는 새로운 경로가 확립되었다면, 인터페이스 관리자 태스크는 그 통보를 무시하고 인터페이스의 동작 모드를 미변경으로 둘 수 있다.
설명된 실시예들에서, 운영 체제는 커널 프로토콜 도메인(kernel protocol domains)과 연관된 태스크를 주기적으로 수행하기 위한 메커니즘을 포함한다. 이들 실시예들에서, 운영 체제는, 각각이 운영 체제 내의 상이한 프로토콜(예를 들어, 라우팅, IPv4 등)과 연관되어 있는 커널 프로토콜 도메인들의 리스트를 포함한다. 각각의 커널 프로토콜 도메인은 대응하는 도메인에 대한 하나 이상의 태스크를 수행하는 한 세트의 도메인-특유의 기능과 연관된다. 운영 체제는 커널 프로토콜 도메인들의 리스트를 주기적으로 순환(cycle through)하고 연관된 도메인-특유의 기능을 실행한다. 설명된 실시예들은 또한, 도메인-특유의 기능들 중 하나가 드레인 기능인 경로 도메인을 포함한다. 실행시, 드레인 기능은 운영 체제에서 만료된 경로들을 삭제한다.
설명된 실시예들에서, 각 경로는, 경로가 애플리케이션에 의해 더 이상 사용중이지 않을 때(예를 들어, 애플리케이션이 경로를 참조하는 소켓을 폐쇄할 때) 운영 체제에 의해 설정되는 만료 타이머를 포함한다. 타이머가 만료되면, 그 경로는 만료되고, (1) 운영 체제 내의 대응하는 프로토콜 메커니즘에 의해; 또는 (2) 경로 도메인에 대한 드레인 기능에 의해 삭제될 수 있다. 이들 실시예들에서, 만일 경로에 의해 참조되는 인터페이스가 적극적으로 유휴화되도록 구성되면, 타이머는 적극적, 짧은 만료 시간으로 설정된다. 그렇지 않고, 만일 경로에 의해 참조되는 인터페이스가 적극적으로 유휴화되도록 구성되지 않는다면, 타이머는 짧은 만료 시간보다 통상 몇 자릿수(orders of magnitude) 정도 긴 디폴트 만료 시간으로 설정된다.
일부 실시예들에서, 운영 체제는, 적극적으로 유휴화되도록 구성된 활성 인터페이스의 수를 추적하기 위해 운영 체제가 이용하는 적극적 인터페이스 카운터를 유지한다. 적극적으로 유휴화되도록 구성된 각 인터페이스가 활성화되면, 운영 체제는 적극적 인터페이스 카운터를 인크리멘트(increment)한다. 반면, 적극적으로 유휴화되도록 구성된 각 인터페이스가 유휴화되면, 운영 체제는 적극적 인터페이스 카운터를 디크리멘트(decrement)한다. 적극적 인터페이스 카운터가 0과 같으면(즉, 어떠한 활성 인터페이스도 적극적 유휴화로 구성되지 않으면), 운영 체제는 경로 도메인의 드레인 기능에 대한 포인터를 NULL로 설정하고, 이것은 커널 프로토콜 도메인의 각 순환시에 드레인 기능이 운영 체제에 의해 실행되는 것을 방지한다. 그러나, 적극적 인터페이스 카운터가 제로가 아니면, 운영 체제는 경로 도메인의 드레인 기능에 대한 포인터를 드레인 기능을 가리키도록 설정한다.
컴퓨터 시스템
도 1은 설명된 실시예들에 따른 컴퓨터 시스템(100)의 블록도를 나타낸다. 컴퓨터 시스템(100)은 처리 서브시스템(102), 메모리 서브시스템(104), 및 네트워킹 서브시스템(106)을 포함한다.
처리 서브시스템(102)은 계산 동작을 수행하도록 구성된 하나 이상의 장치를 포함할 수 있다. 예를 들어, 처리 서브시스템(102)은 하나 이상의 마이크로프로세서, ASIC, 마이크로제어기, 또는 프로그래머블 논리 장치를 포함할 수 있지만, 이것으로 한정되지 않는다.
메모리 서브시스템(104)은 처리 서브시스템(102) 및 네트워킹 서브시스템(106)에 대한 데이터 및/또는 명령어를 저장하기 위한 하나 이상의 장치를 포함할 수 있다. 예를 들어, 메모리 서브시스템(104)은 DRAM, 플래시 메모리, 및/또는 기타 유형의 메모리를 포함할 수 있다. 또한, 메모리 서브시스템(104)은 메모리로의 액세스를 제어하기 위한 메커니즘을 포함할 수 있다. 일부 실시예들에서, 메모리 서브시스템(104)은 컴퓨터 시스템(100)의 메모리에 결합된 하나 이상의 캐시(cache)의 배열을 포함하는 메모리 계층구조를 포함한다. 이들 일부 실시예들에서, 하나 이상의 캐시가 처리 서브시스템(102)에 위치한다.
일부 실시예들에서, 메모리 서브시스템(104)은 하나 이상의 고용량 대용량 저장 장치(미도시)에 결합된다. 예를 들어, 메모리 서브시스템(104)은 자기 또는 광 드라이브, 솔리드-스테이트 드라이브(solid-state drive), 또는 또 다른 유형의 대용량 저장 장치에 결합될 수 있다. 이들 실시예들에서, 메모리 서브시스템(104)은 자주 사용되는 데이터에 대한 고속 액세스 저장 장치로서 컴퓨터 시스템(100)에 의해 사용될 수 있는 반면, 대용량 저장 장치는 덜 빈번하게 사용되는 데이터를 저장하기 위해 사용된다.
네트워킹 서브시스템(106)은 유선 및/또는 무선 네트워크에 결합되어 네트워크 상에서 통신(즉, 네트워크 동작을 수행)하도록 구성된 하나 이상의 장치를 포함할 수 있다. 예를 들어, 네트워킹 서브시스템(106)은, BluetoothTM 네트워킹 시스템, 셀룰러 네트워킹 시스템(예를 들어, 3G/4G 네트워크), 유니버설 직렬 버스(USB; universal serial networking) 네트워킹 시스템, IEEE 802.11에서 설명되는 표준에 기초한 네트워킹 시스템(즉, 802.11 무선 네트워크), 이더넷 네트워킹 시스템, 또는 유선이나 무선의 개인영역 네트워킹(PAN; personal-area networking) 시스템(예를 들어, 적외선 데이터 연계(IrDA), 초광대역(UWB), Z-Wave, 또는 IEEE 802.15에서 설명되는 표준에 기초하는 네트워크)을 포함할 수 있으나, 이것으로 한정되는 것은 아니다.
네트워킹 서브시스템(106)은 제어기, 무선 네트워크 접속을 위한 무선장치/안테나, 물리-결선된 전기 접속을 위한 소켓/플러그, 및/또는 유선 및/또는 무선 네트워크에 결합되어, 네트워크 상에서 통신하며, 네트워크 상의 데이터와 이벤트를 처리하기 위해 이용되는 다른 장치들을 포함할 수 있다. 이들 일부 실시예들에서, 네트워킹 서브시스템(106)은 다른 장치들과 함께 애드 혹(ad hoc) 네트워크 접속(예를 들어, 애드 혹 무선 PAN)을 형성하기 위한 하나 이상의 메커니즘을 포함할 수 있다.
이하의 설명에서, 우리는, 각 네트워크 접속의 물리층에서 네트워크에 결합하고, 네트워크 상에서 통신하며, 네트워크 상의 데이터와 이벤트를 처리하는 데 이용되는 메커니즘의 한 서브셋을, 집합적으로, 대응하는 네트워크 접속에 대한 "인터페이스"라고 부른다. 일부 실시예들에서, 각 인터페이스는, 애플리케이션(예를 들어, 도 5의 인터페이스 관리자 태스크(504))이 인터페이스의 동작 모드를 제어할 수 있게 해주는 하나 이상의 메커니즘을 포함한다.
컴퓨터 시스템(100) 내에는, 처리 서브시스템(102), 메모리 서브시스템(104), 및 네트워킹 서브시스템(106)이 버스(110)를 이용하여 서로 결합된다. 버스(110)는 서브시스템들이 서로 명령과 데이터를 전달하기 위해 이용할 수 있는 전기적 접속이다. 명료성을 위해 하나의 버스(110)만이 도시되어 있지만, 상이한 실시예는 서브시스템들 사이에 상이한 개수의 또는 상이한 구성의 전기적 접속을 포함할 수 있다.
일부 실시예들에서, 버스(110)는 패킷 버스이며, 서브시스템들 사이의 통신은 미리결정된 포맷의 명령과 데이터 패킷을 버스(110) 상에서 전송하는 것을 포함한다. 대안적 실시예에서, 버스(110)는 하나 이상의 전용 신호선을 포함하며, 서브시스템들 사이의 통신은 하나 이상의 전용 신호선들 상에서 서브시스템들에게 시그널링하는 것을 포함한다.
도 1에서는 별개의 서브시스템들로서 도시되어 있지만, 일부 실시예들에서는, 주어진 서브시스템의 일부 또는 전부가 컴퓨터 시스템(100) 내의 하나 이상의 다른 서브시스템들 내에 통합될 수 있다. 이러한 방식으로 대안 실시예들이 구성될 수 있지만, 명료성을 위해 우리는 서브시스템들을 별개로 설명한다.
컴퓨터 시스템(100)은 많은 상이한 유형의 전자 장치들 내에 병합될 수 있다. 일반적으로, 이들 전자 장치들은 유휴화될 수 있는 네트워크 인터페이스를 갖춘 임의의 장치를 포함한다. 예를 들어, 컴퓨터 시스템(100)은, 데스크탑 컴퓨터, 랩탑 컴퓨터, 서버, 매체 재생기, 기기, 서브노트북/넷북, 태블릿 컴퓨터, 셀룰러 전화기, 테스팅 장비, 네트워크 기기, 셋탑 박스, PDA(personal digital assistant), 스마트폰, 장난감, 제어기, 또는 기타의 장치의 일부가 될 수 있다.
컴퓨터 시스템(100)을 설명하기 위해 특정한 컴포넌트들을 이용하고 있지만, 대안적 실시예에서, 컴퓨터 시스템(100)에는 상이한 컴포넌트 및/또는 서브시스템이 존재할 수도 있다. 예를 들어, 컴퓨터 시스템(100)은 하나 이상의 추가의 처리 서브시스템(102), 메모리 서브시스템(104), 및/또는 네트워킹 서브시스템(106)을 포함할 수도 있다. 대안으로서, 컴퓨터 시스템(100)에는 하나 이상의 서브시스템이 존재하지 않을 수도 있다.
일부 실시예들에서, 컴퓨터 시스템(100)은 도 1에 도시되지 않은 하나 이상의 추가 서브시스템을 포함할 수도 있다. 예를 들어, 컴퓨터 시스템(100)은, 디스플레이에 정보를 표시하기 위한 디스플레이 서브시스템, 데이터 수집 서브시스템, 오디오 서브시스템, 알람 서브시스템, 매체 처리 서브시스템, 및/또는 입력/출력(I/O) 서브시스템을 포함할 수 있지만, 이것으로 한정되는 것은 아니다.
운영 체제
도 2는 설명된 실시예들에 따라 처리 서브시스템(102)에 의해 실행되는 운영 체제(200)를 나타낸다. 일반적으로, 운영 체제(200)는 컴퓨터 시스템(100) 내의 시스템 하드웨어(예를 들어, 서브시스템 102-106)와, (예를 들어, 각각, 전자메일 애플리케이션, 웹 브라우저, 및 게임 애플리케이션일 수 있는) 애플리케이션(202-206)과 같은 처리 서브시스템(102)에 의해 실행되는 애플리케이션들 사이에서 중재자로서 역할한다. 예를 들어, 운영 체제(200)는, CA, Cupertino에 소재한 Apple, Inc.의 OS X 운영 체제; CO, Boulder에 소재한 The FressBSD Foundation의 FreeBSD 운영 체제; 또는 기타의 운영 체제일 수 있으나, 이것으로 한정되는 것은 아니다. 운영 체제 및 그들의 일반적 기능은 공지되어 있으므로, 상세히 설명하지 않는다.
이하의 설명에서, 우리는 운영 체제(200)를 참조하기 위해 "커널(kernel)"을 이용하여 실시예들을 설명한다. 커널은 운영 체제(200)의 코어 부분을 포함하며, 애플리케이션(202-206)이 시스템 하드웨어를 액세스 및/또는 제어하여 그들의 기능을 수행하기 위해 이용할 수 있는 컴퓨터 시스템(100) 내의 시스템 하드웨어에 대해 하위-레벨 추상화 계층(abstraction layer)을 제공한다.
네트워킹 서브시스템(106) 내의 적절한 인터페이스를 이용하여 컴퓨터 시스템(100) 내의 애플리케이션들과의 패킷 송수신을 관리하기 위해, 운영 체제(200)는 각각이 다수의 논리층을 포함하는 하나 이상의 네트워크 프로토콜 스택(미도시)을 유지한다. 예를 들어, 운영 체제는, 링크 계층, 인터넷 계층, 트랜스포트 계층, 및 애플리케이션 계층을 포함하는, 인터넷 프로토콜 스택을 유지할 수 있다. 또 다른 예로서, 운영 체제는, 애플리케이션 계층, 프리젠테이션 계층, 세션 계층, 트랜스포트 계층, 네트워크 계층, 데이터 링크 계층, 및 물리 계층을 포함하는, OSI 모델에 기초한 프로토콜 스택을 유지할 수 있다. 프로토콜 스택의 각 계층에서, 운영 체제는 계층과 연관된 기능을 수행하기 위한 제어 메커니즘과 데이터 구조를 포함한다. 프로토콜 스택 내의 각 계층과 연관된 기능은 공지되어 있으므로 상세히 설명하지 않는다.
운영 체제에 의해 유지되는 네트워크 접속 데이터
설명된 실시예들에서, 운영 체제(200)는 네트워킹 서브시스템(106)에서의 네트워크 접속의 동작을 모니터링, 구성, 및/또는 제어하기 위한 하나 이상의 데이터 구조를 포함한다. 예를 들어, 일부 실시예들에서, 운영 체제(200)는 네트워킹 서브시스템(106)의 네트워크 인터페이스(들)(예를 들어, 이더넷 인터페이스, 3G/4G 셀룰러 인터페이스, BluetoothTM 인터페이스 등)를 기록하는 데 이용되는 인터페이스 데이터 구조(다른 말로, "인터페이스 구조")를 포함한다. 이들 실시예들에서, 인터페이스 구조는, 인터페이스의 명칭, 인터페이스의 어드레스(예를 들어, 매체 액세스 제어(MAC) 어드레스), 인터페이스 플래그, 타이머, 운영 모드 데이터, 구성 데이터, 및/또는 인터페이스에 대한 기타의 정보와 같은 정보와 데이터를 포함할 수 있다. 인터페이스 구조 내에 통상 존재하는 정보와 데이터는 공지되어 있으므로, 상세히 설명하지 않는다.
운영 체제(200)는 또한, 운영 체제(200)가 주어진 목적지에 패킷을 전송하기 위해 적절한 네트워크 인터페이스를 선택할 수 있게 하는 경로 정보를 기록하는 데 이용되는 한 세트의 경로 데이터 구조(다른 말로 "경로 구조")를 더 포함할 수 있다. 설명된 실시예들에서, 특정한 서브넷이나 목적지로의 경로가 애플리케이션에 의해 요청되고 결정되면, 운영 체제(200)는 그 경로에 대한 정보를 갖는 경로 구조를 생성한다. 대안으로서, 기존의 경로 구조를 갖는 서브넷 또는 목적지에 대한 "템플릿" 경로가 복사되어 "클론" 경로를 생성할 수 있으며, 운영 체제(200)는 클론 경로에 대한 정보를 갖는 경로 구조를 생성할 수 있다. 그러면, 경로 구조 내의 정보는, 네트워킹 서브시스템(106) 내의 연관된 인터페이스를 이용하여 패킷을 라우팅하는 데 이용될 수 있다. 설명된 실시예들에서, 경로 구조는 경로에 대한 목적지 어드레스, 게이트웨이 어드레스, 플래그, 애플리케이션 참조 카운트(즉, 경로를 이용하고 있는 애플리케이션의 개수), 사용 카운트, 인터페이스 ID, 및 경로에 대한 기타의 정보와 같은 정보를 포함할 수 있다. 경로 구조 내에 통상 존재하는 정보와 데이터는 공지되어 있으므로, 상세히 설명하지 않는다.
설명된 실시예들에서, 하나보다 많은 애플리케이션이 연관된 목적지에 패킷을 전송하기 위해 주어진 경로 구조에서 기술된 경로를 이용하고 있을 수 있다. 이러한 경우들에서, 경로 구조 내의 애플리케이션 참조 카운트가 인크리멘트되어 그 경로를 이용하는 복수의 애플리케이션이 존재한다는 것을 나타낼 수 있다.
설명된 실시예들에서, 운영 체제(200)는 복수의 연관된 인터페이스 구조를 포함하는 하나 이상의 인터페이스를 네트워킹 서브시스템(106)에 포함할 수도 있다. 예를 들어, 네트워킹 서브시스템(106) 내의 WiFi 네트워크 인터페이스는 복수의 피어-투-피어 네트워크 접속을 처리하는 데 이용되는 복수의 가상 인터페이스를 제공할 수 있다. 명료성을 위해 하나의 인터페이스 구조를 이용하여 실시예들을 설명하지만, 복수의 인터페이스 구조를 갖는 실시예들도 유사한 방식으로 기능한다. 예를 들어, 일부 실시예들은 복수의 인터페이스 구조를 갖는 Bluetooth 인터페이스를 포함한다. 후술되는 메커니즘과 유사한 메커니즘을 이용하여, 인터페이스 구조가 임의의 경로(들)에 의해 참조되지 않을 때 이들 실시예들은 인터페이스를 유휴화할 수 있다.
설명된 실시예들에서의 인터페이스 데이터 구조는 기존의 인터페이스 데이터 구조와는 상이한데, 이것은 설명된 실시예의 인터페이스 데이터 구조는: (1) 적극적-유휴화 플래그; 및 (2) 경로 참조 카운터를 포함하기 때문이다. 이하에서 상세히 설명되는 바와 같이, 적극적-유휴화 플래그는 어느 인터페이스가 적극적으로 유휴화되어야 하는지를 판정하기 위해 운영 체제(200)에 의해 이용되며, 경로 참조 카운터는 인터페이스를 참조하는 경로(즉, 대응하는 경로 구조 내의 인터페이스 ID를 검사함으로써 인터페이스를 이용/참조하고 있다고 판정될 수 있는 경로)의 개수를 추적하는 데 이용된다. 인터페이스 유휴화를 설명하기 위해 이 설명에서 사용되는 "적극적"이란, 컴퓨터 시스템(100) 및 네트워킹 서브시스템(106) 내의 실제 동작 상태에 응답하는 인터페이스 유휴화를 말한다는 점에 유의한다. 더 즉각적 응답성의 유휴화는, 컴퓨터 시스템(100)으로 하여금 인터페이스의 전력 소비를 최적화하고, 애플리케이션으로부터의 요청들 및 애플리케이션에 대한 데이터 전송들에 대한 인터페이스의 응답성과 대조하여 전력 소비의 균형을 맞출 수 있게 한다.
도 3은 설명된 실시예들에 따른 운영 체제(200) 내의 예시적 인터페이스(IF) 구조(306-310)와 경로 구조(312-316)를 나타내는 블록도를 나타낸다. 도 3에서 알 수 있는 바와 같이, 네트워킹 서브시스템(106)은, 예를 들어, 각각, BluetoothTM 인터페이스, 이더넷 인터페이스, 및 802.11 무선 네트워크 인터페이스일 수 있는, 인터페이스들(300-304)을 포함한다. 전술된 바와 같이, 애플리케이션(202-206)은, 다른 장치에 데이터 패킷을 전송하기 위해, 각각이 운영 체제(200) 내의 경로와 네트워킹 시스템(106) 내의 대응하는 인터페이스(300-304)를 이용하는, 예를 들어, 각각, 전자메일 애플리케이션, 웹 브라우저, 및 게임 애플리케이션일 수 있다.
예시된 실시예에서, 운영 체제(200)는 인터페이스(302 및 304)를 통해 대응하는 목적지 호스트로의 패킷의 전송을 가능케 하는 경로를 확립하였다. 운영 체제(200)에서 이용가능한 것으로서 도 3에 도시된 경로들은 설명을 위해 간략화되었다; 대안적인 실시예들은 추가의 및/또는 상이한 유형의 경로를 포함한다는 점에 유의한다. 예를 들어, 인터페이스(300)에 대해 디폴트 경로가 확립될 수 있다. 또한, 우리는 기-확립된 경로를 이용한다; (특히, 각 경로와 연관되어 있는 네트워크 프로토콜에 따라) 이들 경로를 확립하기 위한 기술은 공지되어 있으므로 상세히 설명하지 않는다.
인터페이스 구조(306-310)는, 운영 체제(200)로 하여금, 각각, 기저(underlying) 인터페이스들(300-304)의 아이덴티티, 구성, 능력, 및 요구조건을 판정할 수 있게 하는 정보와 데이터를 포함한다. 경로 구조(312-316)는, 운영 체제(200)로 하여금, 이들 경로들 상의 패킷들을 인터페이스들(300-304) 중의 연관된 인터페이스로 라우팅할 수 있게 하는 정보와 데이터를 포함한다. 예를 들어, 경로의 목적지, 경로를 참조하는 개방된 소켓/애플리케이션의 수, 및 경로의 유형과 구성을 식별하는 정보와 함께, 경로 구조(312)는 또한 인터페이스 구조(308)에 대한 포인터를 포함한다. 전술된 바와 같이, 인터페이스 구조(308)는 연관된 경로의 이용시 운영 체제(200)를 인터페이스(302)로 안내하는 인터페이스 명칭 및/또는 MAC 어드레스를 포함한다.
예시된 실시예에서, 애플리케이션(202 및 204)은 동일한 인터페이스(302)를 참조하는 경로를 이용하고 있다. 예를 들어, 인터페이스(302)가 이더넷 인터페이스라고 가정하면, 양쪽 애플리케이션은 (예를 들어, 상이한 목적지 호스트를 갖는) 별개의 경로를 이용할 수 있고, 이것은 운영 체제(200)로 하여금 애플리케이션으로부터의 패킷을 이더넷 인터페이스로 포워딩하여 경로의 목적지에 전송될 수 있게 한다. 이 경우, 경로 구조(312 및 314)에 의해 포인팅되고 있는 인터페이스 구조(308) 내의 경로 참조 카운터는, 2개의 경로가 인터페이스(302)를 참조한다는 것을 나타낼 수 있다. 대조적으로, 경로 구조(316)에 의해서만 포인팅되고 있으며 인터페이스(304)와 연관되어 있는 인터페이스 구조(310) 내의 경로 참조 카운터는, 하나의 경로가 인터페이스(304)를 참조한다는 것을 나타낼 수 있다.
일부 실시예들에서, 컴퓨터 시스템(100)은 각 인터페이스에 대한 장치 드라이버를 포함한다. 실행시, 장치 드라이버는 적극적으로 유휴화되도록 인터페이스를 구성할 수 있다(즉, 운영 체제(200) 내의 대응하는 인터페이스 구조 내의 적극적-유휴화 플래그를 세트한다). 대안으로서, 운영 체제(200)는, 환경 변수, 파일, 또는 운영 체제 스위치를 이용하여, 적극적으로 유휴화되도록 인터페이스를 구성할 수 있다.
경로 및 인터페이스 구조들은, 구조 내의 정보를 액세스하고 판독할 수 있도록 운영 체제(200)에서 다양한 방식으로 배치될 수 있다는 점에 유의한다. 예를 들어, 일부 실시예들에서, 경로 및/또는 인터페이스 구조는 운영 체제(200) 내의 링크된 리스트(linked list)로 조직화될 수 있다. 운영 체제(200) 내의 구조의 배치는 공지되어 있으므로, 상세히 설명하지 않는다.
경로 만료화
설명된 실시예들에서, 일부 경로들은 운영 체제(200)에 의해 일시적으로만 유지된다. 이들 경로들에 대해서는, 경로가 적어도 하나의 애플리케이션에 의해 더 이상 이용되고 있지 않은 이후에 미리결정된 시간 동안만 운영 체제(200)에 의해, 경로 구조 및 그에 따른 운영 체제(200)에 대한 라우팅 테이블 내의 대응하는 엔트리들이 이용가능하게 유지된다. 미리결정된 시간이 만료하면, 경로 구조가 삭제됨으로써, 운영 체제(200)에 의해 유지된 라우팅 테이블로부터 경로를 제거할 수 있다.
더 구체적으로는, 설명된 실시예들에서, 운영 체제(200)는 애플리케이션이 소켓을 개방할 수 있게 하는 메커니즘을 제공하여, 애플리케이션이 네트워크 프로토콜 스택 내의 하위층들에 데이터 패킷을 전송하여 주어진 목적지 호스트에 포워딩될 수 있게 한다. 애플리케이션이 소켓의 이용을 종료하였거나 네트워크 접속을 잃는 경우, 그 애플리케이션은 소켓을 폐쇄한다. 대안으로서, 만일 애플리케이션이 충돌한다면, 운영 체제(200)는 소켓을 폐쇄할 수 있다. 소켓의 폐쇄는 운영 체제(200)로 하여금 연관된 경로에 대한 경로 구조 내의 애플리케이션 참조 카운트를 디크리멘트하게 한다. 만일 애플리케이션이 그 경로를 이용하고 있던 마지막 애플리케이션이라면, 디크리멘트 동작은 경로 구조 내의 애플리케이션 참조 카운트가 제로로 떨어지게 한다.
경로 구조의 애플리케이션 참조 개수가 제로로 떨어지면, 운영 체제(200)는 경로 구조 내의 만료 타이머를 미리결정된 값으로 업데이트하고 만료 타이머를 이용하여 경로 구조에 대해 카운트다운을 개시한다. 만료 타이머가 제로와 같게 되면, 경로 구조는 운영 체제(200)에 의한 삭제가 가능하다. (경로의 실제 삭제는, 후속하여 삭제 메커니즘이 만료된 경로 구조를 삭제할 때까지 발생하지 않을 수도 있다는 점에 유의한다.)
후술되는 바와 같이, 설명된 실시예들은 만료된 경로를 삭제하기 위한 다수의 상이한 삭제 메커니즘을 포함할 수 있다. 예를 들어, 운영 체제(200)는 네트워크 프로토콜 스택 내에 디폴트 경로 만료 메커니즘을 포함할 수 있다. 또한, 운영 체제(200)는, 적어도 하나의 활성 인터페이스가 적극적 유휴화를 위해 구성되는 한, 운영 체제(200)에 의해 실행되는 경로 프로토콜 도메인(406)과 연관된 드레인 기능(412)(도 4 참조)을 포함할 수 있다.
이들 실시예들에서, 만료 타이머가 설정되는 미리결정된 값은 경로가 참조하는 인터페이스(즉, 경로 구조에서 식별된 인터페이스)의 구성에 의존한다. 만일 경로가 적극적 유휴화를 위해 구성된 인터페이스를 참조한다면, 미리결정된 값은 더 짧은, 적극적 값이다. 예를 들어, 설명된 실시예는 10초, 30초, 1분, 5분, 또는 또 다른 값과 같은 값들을 이용할 수 있다. 대안으로서, 만일 경로가 적극적 유휴화를 위해 구성되지 않은 인터페이스를 참조한다면, 미리결정된 값은 디폴트 (더 긴) 값이다. 예를 들어, 설명된 실시예는 20분, 1시간, 24시간, 2일, 또는 또 다른 값과 같은 값들을 이용할 수 있다.
일부 실시예들의 경우, 적극적 유휴화를 위해 구성되지 않은 인터페이스를 참조하는 경로에 대해 이용되는 미리결정된 값은, 기존의 시스템에서 경로 만료화에 이용되는 값과 동일한 값이라는 점에 유의한다. 예를 들어, 일부 실시예는, 적극적 유휴화를 위해 구성되지 않은 인터페이스를 참조하는 ARP 경로에 대해 20분의 디폴트 값을 이용한다.
설명된 실시예들은 기존의 시스템과는 상이한데, 이것은 경로에 대한 만료 시간이, 경로가 적극적 유휴화를 위해 구성된 인터페이스를 참조하는지의 여부에 기초하여 상이하게 설정되기 때문이다. 참조되는 인터페이스가 적극적 유휴화를 위해 구성될 때 경로 만료값을 더 짧은 값으로 설정함으로써, 운영 체제(200)는, 경로가 기존 시스템 내의 경로보다 더 빨리(통상, 수 자릿수 더 빨리) 만료하는 것을 보장한다. 이것은, 결국, 운영 체제(200)로 하여금, 기저 인터페이스를 더욱 빨리 유휴화하게 하고, 이것은, 이용중에 있지 않은 경로들에 대해 인터페이스들이 불필요하게 활성 상태로 유지되지 않도록 하는 데 도움을 줄 수 있다.
프로토콜 스택 메커니즘을 이용한 만료된 경로들의 삭제
전술된 바와 같이, 운영 체제(200)는, 연관된 네트워크 프로토콜 스택에 대한 구/만료된 데이터를 삭제하기 위한 프로토콜-스택 메커니즘을 포함할 수 있다. 일반적으로, 프로토콜 스택 메커니즘은 운영 체제(200)에 의해 미리결정된 간격으로 실행된다. 예를 들어, 일부 실시예들에서, 프로토콜 스택 메커니즘은 10분 간격으로 실행될 수 있다. 프로토콜 스택 메커니즘은 만료 타이머가 제로에 도달한 경로 구조를 삭제할 수 있다. 프로토콜 스택 메커니즘은 공지되어 있으므로, 상세히 설명하지 않는다.
라우팅-도메인-특유의 드레인 기능을 이용한 만료된 경로들의 삭제
운영 체제(200)는 커널 프로토콜 도메인과 연관된 태스크를 수행하기 위해 한 세트의 커널 프로토콜 도메인을 주기적으로 순환하기 위한 메커니즘을 제공한다. 도 4는 설명된 실시예들에 따른 다수의 예시적 커널 프로토콜 도메인(400)과 그들의 연관된 도메인-특유의 기능(408-412)을 나타내는 블록도를 나타낸다.
도 4에서 알 수 있는 바와 같이, 도메인(400)은 커널 프로토콜 도메인(402-404)과 경로 도메인(406)을 포함한다. 커널 프로토콜 도메인(402 및 404) 각각은 다수의 상이한 프로토콜 도메인들 중 하나일 수 있다. 구체적으로는, 운영 체제(200)에 의해 지원되는 임의의 커널 프로토콜은 커널 프로토콜 도메인을 가질 수 있다. 한 예로서, 커널 프로토콜 도메인(402)은 IPv4 도메인을 포함할 수 있으며, 커널 프로토콜 도메인(404)은 어드레스 결정 프로토콜(ARP; address resolution protocol) 도메인을 포함할 수 있다. 대안으로서, 커널 프로토콜 도메인(402)은 IPv6 도메인을 포함할 수 있으며, 커널 프로토콜 도메인(404)은 IPv6 이웃 발견(ND; neighbor discovery) 도메인을 포함할 수 있다. 경로 도메인(406)은 또한 커널 프로토콜 도메인이지만, 도메인-특유의 기능(412) 내의 "드레인" 기능은 후술되는 바와 같이 설명된 실시예들에서 만료된 경로들을 삭제하는 데 이용될 수 있기 때문에, 구체적으로 열거된다.
각각의 커널 프로토콜 도메인(402-406)은, 각각, 한 세트의 도메인-특유의 기능(408-412)에 대한 한 세트의 포인터를 포함한다. 일부 실시예들에서, 각각의 도메인-특유의 기능은, 대응하는 커널 프로토콜 도메인으로부터의 포인터에 의해 표시될 수 있다. 각 세트의 도메인-특유의 기능(408-412) 내에는, 대응하는 도메인과 연관된 동작을 수행하기 위해 운영 체제(200)에 의해 실행되는 기능들이 있다. 예로서, 하나의 도메인-특유의 기능은 드레인 기능으로서, 이것은 처리 서브시스템(102) 및 컴퓨터 시스템(100)으로부터 구/만료된 도메인 데이터를 제거할 수 있다. 또한, 도메인-특유의 기능은 입력 기능, 출력 기능, 및 기타의 기능들을 포함할 수 있다.
동작 동안에, 운영 체제(200)는 도 4에서 "사이클"로 표시된 바와 같이 커널 프로토콜 도메인(402-406)(및 타원으로 표시된 바와 같은, 임의의 추가적인 커널 프로토콜 도메인)을 주기적으로 순환한다. 각각의 도메인에 대해, 운영 체제(200)는 도메인-특유의 기능을 실행하기 위해 도메인으로부터의 포인터를 추종한다. 이런 방식으로, 운영 체제(200)는 커널 프로토콜에 대해 업데이트, 구성, 및/또는 폐영역 회수(garbage collection) 동작을 수행하기 위해 도메인-특유의 기능을 주기적으로 실행할 수 있다.
운영 체제(200) 내에 존재하는 경로들(예를 들어, ARP 경로, ND6 경로, IPv6 경로, IPv4 경로 등)에 대한 데이터를 처리하는 경로 도메인(406)에 도달시, 커널 프로토콜 도메인(402-406)을 순환하면서, 운영 체제(200)는 경로 도메인(406)으로부터 드레인 기능 및 기타의 경로 도메인-특유의 기능(412)으로의 포인터들을 추종하여 이들 기능들을 실행한다. 드레인 기능의 실행은, 운영 체제(200)로 하여금, 경로 구조에 대한 만료 타이머가 제로에 도달했는지를 판정하기 위해 각각의 경로 구조(예를 들어, 경로 구조 312-316)를 즉시 검사하게 한다. 만료 타이머가 제로에 도달한 경로 구조 각각에 대해, 운영 체제(200)는 그 경로 구조를 삭제함으로써, 운영 체제(200)로부터 그 경로를 제거한다.
일부 실시예들에서, 운영 체제(200)가 커널 프로토콜 도메인을 순환하는 순환 시간(cycle time)은 약 500 밀리초이다. 이것은, 운영 체제가 약 1/2초마다 경로 도메인(406)에 대한 드레인 기능의 실행을 시도할 수 있다는 것을 의미한다. 만료된 경로를 검사하기 위한 드레인 기능의 실행으로 불필요하게 운영 체제(200)를 바쁘게 하는 것을 피하기 위해, 일부 실시예들에서는, 드레인 기능은 운영 체제(200)로 하여금, 매 N번째 커널 프로토콜 도메인의 순환마다 드레인 기능을 실행하게 하는 메커니즘을 포함한다. 구체적으로는, 경로 도메인(406)은, 드레인 기능으로의 진입시에 즉각적으로 검사되는 타이머 값을 포함한다. 이 타이머는 지정된 시간 동안(예를 들어, 10초, 30초, 또는 1분) 세트되며, 타이머가 제로에 도달하기 이전에, 운영 체제(200)는 드레인 기능을 건너뛴다. 그러나, 타이머가 제로에 도달하면, 운영 체제(200)는 드레인 기능의 나머지를 실행하고, 이것은 운영 체제(200)로 하여금 만료된 경로에 대한 경로 구조를 검사하게 한다.
경로 삭제에 기초하여 인터페이스가 유휴화될 수 있는지의 판정
설명된 실시예들에서, 주어진 경로 구조가 삭제되면(이로써, 운영 체제(200)로부터 그 경로를 삭제함), 운영 체제(200)는 경로 구조에서 어느 인터페이스가 참조되는지를 판정한다. 그 다음, 운영 체제(200)는 참조되고 있는 인터페이스에 대한 인터페이스 구조 내의 경로 참조 카운터를 디크리멘트한다. 예를 들어, 경로 구조(312)의 삭제시, 운영 체제(200)는 인터페이스(302)가 경로 구조(312)에 의해 참조되고 있는 인터페이스라고(그리고, 그에 따라, 그 경로에 대한 인터페이스가 인터페이스(302)라고) 판정한다. 그 다음, 운영 체제(200)는 IF 구조(306) 내의 경로 참조 카운터를 디크리멘트한다.
이런 방식으로, 주어진 인터페이스를 참조하는 마지막 경로가 삭제되면, 그 인터페이스 내의 경로 참조 카운터가 제로로 디크리멘트된다. 경로 참조 카운터가 제로라고 판정하면, 운영 체제(200)는 구성 에이전트(도 5의 구성 에이전트(502) 참조)에게 시그널링하여, 구성 에이전트가 그 인터페이스가 유휴화에 대한 후보라는 통보를 하나 이상의 애플리케이션에게 포워딩할 수 있게 한다. 일부 실시예들에서, 운영 체제(200)는, 인터페이스에 대한 인터페이스 구조에서 적극적-유휴화 플래그가 세트되어 있을 때에만 구성 에이전트에게 시그널링한다. 이들 실시예들에서, 만일 주어진 인터페이스에 대해 적극적 유휴화 플래그가 세트되어 있지 않다면, 운영 체제(200)는 제로로의 경로 참조 카운터의 디크리멘트를 무시할 수 있다.
구성 에이전트 및 인터페이스 관리자 태스크
도 5는 설명된 실시예들에 따른 다수의 애플리케이션과 상호작용하는 운영 체제의 블록도를 나타낸다. 컴퓨터 시스템(100) 내의 처리 서브시스템(102)에 의해 실행되는 도 5의 애플리케이션은, 애플리케이션(202), 구성 에이전트(502), 및 인터페이스 관리자 태스크(504)를 포함한다.
경로(500)는 애플리케이션(202)으로부터 인터페이스(300)를 통해 목적지 호스트로 패킷을 라우팅하기 위해 운영 체제(200)에 의해 사용되는 경로이다. 명료성을 위해, 경로(500), 인터페이스 구조(508) 및 인터페이스(300)는 개괄적으로만 기술된다(예를 들어, 경로(500)에 대한 경로 구조는 도시되어 있지 않다).
구성 에이전트(502)는 처리 서브시스템(102)의 하나 이상의 구성 양태를 관리한다. 구성 에이전트(502)는, 처리 서브시스템(102)/컴퓨터 시스템(100)의 원하는 및 현재의 상태를 반영하는 데이터를 유지할 수 있고, 이 데이터가 변할 때 애플리케이션(예를 들어, 애플리케이션(202) 및/또는 인터페이스 관리자 태스크(504))에 통보를 제공하고, 및/또는 연관된 구성 태스크를 수행할 수 있다. 일반적으로, 구성 에이전트(502)는 하나 이상의 입력 소스(선호사항, 하위-레벨 커널 이벤트, 통보 등)에 의존하고, 구성 에이전트(502)에 포함된 한 세트의 정책 모듈을 이용하여, 원하는 동작 구성을 확립하기 위해 처리 서브시스템(102)/컴퓨터 시스템(100)과 상호작용한다. 예를 들어, 일부 실시예에서, 구성 에이전트(502)는 CA, Cupertino 소재의 Apple, Inc.사의 "configd"와 유사한 구성 에이전트이다. 구성 에이전트는 공지되어 있으므로, 상세히 설명하지 않는다.
기존의 구성 에이전트와는 달리, 구성 에이전트(502)는 인터페이스가 그것을 참조하는 어떠한 경로도 갖지 않으므로 유휴화를 위한 후보가 될 수도 있다는 통보를 운영 체제(200)로부터 수락하기 위한 메커니즘을 포함한다. 또한, 구성 에이전트(502)는 통보를 다른 애플리케이션들에 전송하여 이들 애플리케이션들에게 인터페이스가 유휴화를 위한 후보라는 것을 통보하는 메커니즘을 포함한다.
인터페이스 관리자 태스크(504)는 인터페이스(300)의 동작을 제어한다. 예를 들어, 인터페이스 관리자 태스크(504)는, 인터페이스(300)를 초기화하고, 인터페이스(300)의 동작 모드를 구성하며, 인터페이스(300)의 전력을 차단하고, 인터페이스(300)에 관련된 제어 메시지를 운영 체제(200)에 보내거나 운영 체제(200)로부터 수신하며, 인터페이스(300)에 관한 또는 인터페이스(300)에 대한 다른 동작들을 수행할 수 있다.
일부 실시예들에서, 인터페이스 관리자 태스크(504)는 인터페이스(300)가 유휴화될 수 있는(즉, 유휴화에 대한 후보가 되는) 때를 통보받기 위해 구성 에이전트(502)에 등록한다. 이들 실시예들에서, 인터페이스 구조(508) 내의 경로 참조 카운터가 제로로 디크리멘트되었고 따라서 어떠한 활성 경로도 그 인터페이스를 참조하지 않는다고 판정할 시, 운영 체제(200)는 구성 에이전트(502)에게 인터페이스(300)가 그것을 참조하는 어떠한 경로도 갖지 않다는 것을 시그널링한다. 그러면 구성 에이전트(502)는 인터페이스(300)가 유휴화에 대한 후보라는 통보를 인터페이스 관리자 태스크(504)에 전송한다.
일부 실시예들에서, 인터페이스(300)가 유휴화에 대한 후보라는 통보의 수신시, 인터페이스 관리자 태스크(504)는 그 통보가 운영 체제(200)에 의해 전송된 이후 인터페이스(300)를 참조하는 어떠한 경로도 확립되지 않았다는 것을 보장하기 위해 운영 체제(200)를 검사한다. 그러면 운영 체제(200)는 인터페이스(300)에 대한 인터페이스 구조(508) 내의 경로 참조 카운터를 검사하여 그 값이 비-제로인지를 (즉, 새로이 확립된 경로가 인터페이스(300)를 참조하고 있는지를) 판정할 수 있다.
만일 인터페이스(300)를 참조하는 새로운 경로가 확립되었다면, 인터페이스 관리자 태스크(504)는 그 통보를 무시하고 인터페이스(300)의 동작 모드를 미변경으로 둘 수 있다. 이들 실시예들에서, 이러한 검사를 수행함으로써, 인터페이스 관리자 태스크(504)는, 인터페이스 관리자 태스크(504)에 의해 수신되기 이전에 지연되었을 수도 있는 통보(즉, 만일 운영 체제(200)가 분주하여(busy) 구성 에이전트(502)에 그 통보를 즉각적으로 전송하지 않았거나, 그 통보를 인터페이스 관리자 태스크(504)에 전송함에 있어서 구성 에이전트(502)가 지연되었다면)에 기초하여 활성 인터페이스를 잘못 유휴화하는 것을 피할 수 있다. 즉, 인터페이스 관리자 태스크(504)는 통보 신호와 운영 체제(200)에서의 새로운 경로의 확립 사이의 경쟁 조건(race condition)에 기초하여 인터페이스(300)를 잘못 유휴화시키기로 결정하는 것을 피할 수 있다.
그 외의 경우, 인터페이스 관리자 태스크(504)는 인터페이스를 유휴화시킬 수 있다. 전술된 바와 같이, 인터페이스의 유휴화는 실시예에 따라 상이한 것을 의미할 수 있다. 예를 들어, "유휴화"란, 인터페이스가 완전히 전력이 차단되거나, 저전력(그러나 적어도 부분적으로는 동작) 모드로 전환하거나, 통상적으로 이용되지만, 낮은 우선순위 동작이나 인터페이스 유지보수 동작만을 실시하는 것을 의미할 수 있다.
인터페이스 관리자 태스크(504)는 기존의 인터페이스 관리자 태스크와는 상이한데, 이것은 인터페이스 관리자 태스크(504)가 구성 에이전트(502)로부터 인터페이스가 유휴화를 위한 후보라는 통보를 수신할 수 있기 때문이다. 또한, 통보의 수신시, 인터페이스 관리자 태스크(504)는 인터페이스의 유휴화 이전에 임의의 경로에 의해 그 인터페이스가 참조되고 있는지를 판정하기 위해 운영 체제(200)를 검사할 수 있다.
비록 도 5에는 단 하나의 구성 에이전트와 하나의 인터페이스 관리자 태스크가 도시되어 있지만, 일부 실시예에서는, 컴퓨터 시스템(100)에서 복수의 구성 에이전트 및/또는 인터페이스 관리자 태스크가 실행될 수 있다는 점에 유의한다. 또한, 인터페이스 관리자 태스크(504)는 하나보다 많은 인터페이스에 대한 인터페이스 관리자 태스크일 수 있다.
적극적 인터페이스 카운터
일부 실시예들에서, 운영 체제(200)는, 운영 체제(200)가 적극적으로 유휴화되도록 구성된 활성 인터페이스의 수를 추적하는 데 이용하는 "적극적 인터페이스 카운터"를 유지한다. 적극적으로 유휴화되도록 구성된 각 인터페이스가 활성화되면, 운영 체제(200)는 적극적 인터페이스 카운터를 인크리멘트한다. 반면, 적극적으로 유휴화되도록 구성된 각 인터페이스가 유휴화되면, 운영 체제(200)는 적극적 인터페이스 카운터를 디크리멘트한다.
적극적 인터페이스 카운터가 제로와 같으면(즉, 적극적 유휴화를 위해 구성된 모든 인터페이스가 유휴상태이면), 운영 체제(200)는 경로 도메인(406)의 드레인 기능(412)에 대한 포인터를 NULL로 설정한다. 그러나, 적극적 인터페이스 카운터가 제로가 아닌 때에는, 운영 체제(200)는 경로 도메인(406)의 드레인 기능에 대한 포인터를 드레인 기능을 가리키도록 설정한다. 이런 방식으로 포인터를 설정함으로써, 이들 실시예들은 적극적으로 유휴화되도록 구성된 적어도 하나의 인터페이스가 활성인 동안에만 드레인 기능을 실행한다.
인터페이스를 관리하기 위한 프로세스
도 6은 설명된 실시예들에 따른 인터페이스를 관리하기 위한 프로세스를 나타내는 플로차트를 나타낸다. 더 구체적으로, 도 6에서, 적극적으로 유휴화되도록 구성된 네트워킹 서브시스템(106) 내의 BluetoothTM 인터페이스의 관리를 설명한다. 이 예에 대해, BluetoothTM 인터페이스는 초기에 유휴상태라고 가정한다. 또한, 적극적으로 유휴화되도록 구성된 다른 어떤 인터페이스도 활성이지 않으므로 적극적 인터페이스 카운터가 제로이고, 운영 체제(200)는 경로 도메인(406)에 대한 드레인 기능(412)을 실행하고 있지 않다고 가정한다(즉, 경로 도메인(406)의 드레인 기능(412)에 대한 포인터는 NULL을 가리킴).
BluetoothTM 인터페이스를 예로서 이용하여 인터페이스를 관리하기 위한 프로세스를 설명하지만, 대안적 실시예는 상이한 인터페이스를 이용한다. 이들 대안적 실시예들은 프로세스에서 더 많거나 더 적은 및/또는 상이한 단계들을 포함할 수 있다. 예를 들어, 다른 장치의 결정 및/또는 다른 장치의 어드레스는 상이하게 이루어지거나 전혀 이루어지지 않을 수도 있다(목적지 어드레스가 알려져 있을 수도 있다, 등등). 대안적 실시예들은 설명된 실시예와 유사한 방식으로 기타의 방식으로 동작한다.
도 6의 프로세스는, 처리 서브시스템(102)에 의해 실행중인 애플리케이션이 BluetoothTM 인터페이스를 이용하여 또 다른 전자 장치와의 네트워크 접속을 요청할 때 개시된다(단계 600). 예를 들어, 게임 애플리케이션은 그 게임 애플리케이션을 실행하고 있는 또 다른 전자 장치와의 BluetoothTM 접속의 형성을 요청할 수 있으며, 그 접속은 장치들 사이에서의 게임 데이터의 전송에 이용될 것이다. 그 다음, 애플리케이션은, 다른 장치를 발견하여 그 다른 장치에 대한 목적지 인터넷 프로토콜(IP) 어드레스를 결정할 프로세스를 개시한다. 예를 들어, 애플리케이션은 CA, Cupertino의 Apple, Inc.로부터의 BonjourTM 서비스를 개시하거나, 또 다른 어드레스-결정 서비스를 개시할 수 있다.
또 다른 장치가 이용가능하다고 판정되면, 애플리케이션은 인터페이스 관리 태스크(504)(예를 들어, BluetoothTM 서버)에게 BluetoothTM 인터페이스를 활성화하라고 시그널링한다(단계 602). 그러면, 인터페이스 관리자 태스크(504)는 BluetoothTM 인터페이스를 활성화하여, BluetoothTM 인터페이스를 애플리케이션을 위한 패킷의 송수신에 대해 준비시킨다.
BluetoothTM 인터페이스는 적극적으로 유휴화되도록 구성된다(그리고 그에 따라, 운영 체제(200) 내의 BluetoothTM 인터페이스에 대한 인터페이스 구조에서 적극적 유휴화 플래그가 세트된다)는 것을 상기한다. 따라서, BluetoothTM 인터페이스가 활성화되면, 운영 체제(200)는 적극적 인터페이스 카운터를 인크리멘트하고, 미사용 경로들의 만료와 삭제를 적극적으로 개시한다(단계 604).
더 구체적으로는, 운영 체제(200)는 경로 도메인(406)의 드레인 기능(412)에 대한 포인터를, NULL을 가리키는 것으로부터, 드레인 기능(412)을 가리키도록 조정한다. 적극적 인터페이스 카운터를 인크리멘트함으로써, 운영 체제(200)는 활성 인터페이스가 적극적 유휴화를 위해 구성된다고 기록한다. 또한, 경로 도메인(406)의 드레인 기능(412)에 대한 포인터의 조정은, 운영 체제(200)로 하여금 도메인(400)의 각각의 통과시에(더 구체적으로는, 경로 도메인(406)의 각각의 통과시에) 드레인 기능(412)을 실행하게 한다.
전술된 바와 같이, 드레인 기능(412)은 경로 도메인(406)의 각각의 통과시에 실행되지만, 드레인 기능(412) 내의 내부 카운터는 운영 체제(200)가 미리결정된 시간이 지날 때까지 드레인 기능(412)을 완전히 실행하지 못하게 한다. 예를 들어, 드레인 기능(412)은 X초(또는 경로 도메인(406)의 Y회 순환)만에 만료하는 카운트다운 카운터를 포함할 수 있다. 운영 체제(200)가 드레인 기능(412) 내의 카운터를 검사하여 그 카운터가 만료되었음을 발견하면, 운영 체제(200)는 드레인 기능(412)의 나머지를 실행하고 내부 카운터를 리셋한다. 드레인 기능(412)의 나머지가 실행될 때, 이것은 운영 체제(200)로 하여금 각각의 경로 구조(예를 들어, 경로 구조 312-316)를 검사하여 어느 경로가 만료했으며 그에 따라 삭제될 수 있는지를 판정하게 한다.
그 다음, 애플리케이션은 소켓을 개방하여 BluetoothTM 인터페이스를 이용해 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 세션을 개시한다(단계 606). 더 구체적으로는, 애플리케이션은 소켓을 개방하여, Bluetooth 인터페이스를 이용해 목적지 IP 어드레스에 있는 다른 장치로의 패킷의 전송을 개시한다. 운영 체제(200)는, 소켓 개방의 통보의 수신에 응답하여, BluetoothTM 인터페이스에 대한 참조/포인터를 포함하는, 경로에 대한 정보를 포함하는 (템플릿 경로로부터 클론될 수 있는) 경로 구조를 생성함으로써(단계 608), 그 경로를 운영 체제(200) 내의 경로 테이블에 추가한다. 또한, 운영 체제(200)는 BluetoothTM 인터페이스에 대해 인터페이스 구조 내의 경로 참조 카운터를 인크리멘트하여(단계 608), 그 경로가 BluetoothTM 인터페이스에 의존한다고 기록한다. 그 다음, 운영 체제(200)는 BluetoothTM 인터페이스를 이용하여 애플리케이션으로부터 대응하는 목적지로의 패킷 포워딩을 개시할 수 있다.
애플리케이션이 그 경로의 이용을 종료하면(또는 BluetoothTM 접속이 소실되면), 그 애플리케이션은 소켓을 폐쇄한다(단계 610). 애플리케이션이 소켓을 폐쇄하였다는 통보를 네트워크 프로토콜 스택의 연관된 계층으로부터 수신하는 것에 응답하여, 운영 체제(200)는 연관된 경로를 삭제하는 프로세스를 개시한다. 구체적으로는, 운영 체제(200)는 경로 구조의 만료 타이머를 단축된 만료 시간으로 설정한다(단계 612). 전술된 바와 같이, 만료 타이머는 단축된 만료 시간으로 설정되는데, 이것은 BluetoothTM 인터페이스에 대한 인터페이스 구조 내의 적극적 유휴화 플래그가 세트되기 때문이다.
만일 BluetoothTM 인터페이스에 대한 인터페이스 구조 내의 적극적-유휴화 플래그가 세트되지 않았다면, 운영 체제(200)는 경로 구조 내의 만료 타이머를, 통상적으로 단축된 만료 시간보다 적어도 수 자릿수 더 긴 디폴트 값으로 설정할 것이다. 이 경우, (드레인 기능(412)에 대한 포인터는 여전히 NULL로 설정될 것이기 때문에) 운영 체제(200)는 경로 도메인(406)에 대한 드레인 기능(412)을 실행중이지 않을 것이며, 따라서 만료된 경로를 제거하기 위한 프로토콜 스택 내의 연관된 메커니즘이 경로 구조의 삭제(그에 따른, 라우팅 테이블로부터 만료된 경로의 제거)를 책임질 것이다. 프로토콜 스택 내의 메커니즘은 드레인 기능(412)의 간격보다 훨씬 긴 간격으로 실행되기 때문에, 더 긴 디폴트 만료 시간과 프로토콜 스택 내의 메커니즘에 대한 더 긴 간격의 조합은, 단축된 만료 시간에 기초하여 드레인 기능에 의해 경로가 삭제되는 경우보다 훨씬 더 긴 시간 동안 경로가 삭제되지 않게 하는 결과로 이어진다.
경로 구조 내의 단축된 만료 타이머가 제로에 도달하면, 다음 번에 운영 체제(200)가 드레인 기능(412)을 완전히 실행할 때에, 운영 체제(200)는 경로 구조를 삭제함으로써(단계 614), 운영 체제(200)의 라우팅 테이블로부터 그 경로를 제거한다. 경로 구조를 삭제할 때, 운영 체제(200)는 또한, 경로가 참조하고 있는 인터페이스에 대한 포인트에 의해 인터페이스 업데이트 기능에 대한 콜백(callback)을 트리거한다. 콜백은 운영 체제(200)로 하여금, BluetoothTM 인터페이스에 대한 인터페이스 구조의 경로 참조 카운터를 디크리멘트하여 그 인터페이스를 참조한 경로의 삭제를 반영하게 한다(단계 616).
전술된 바와 같이, 그 경로는 그 인터페이스와 연관되었던 유일한 경로였기 때문에, 경로 구조의 삭제시 인터페이스 구조의 경로 참조 카운터의 디크리멘트는 그 인터페이스 구조 내의 경로 참조 카운터가 제로로 디크리멘트되게 한다. 운영 체제(200)는 인터페이스 구조의 경로 참조 카운터가 제로로 디크리멘트되었다고 판정하고 구성 에이전트(502)에게 메시지를 전송하여 구성 메시지(502)에게 그 인터페이스가 어떠한 경로에 의해서도 더 이상 참조되지 않음을 통보한다(단계 618).
운영 체제(200)로부터의 그 메시지의 수신시에, 구성 에이전트(502)는 인터페이스 관리자 태스크(504) 및 어떠한 경로도 그 인터페이스를 참조하고 있지 않을 때를 통보받기 위해 구성 에이전트(502)에 등록한 기타 임의의 애플리케이션들에 통보를 전송한다(단계 620). 그러면, 인터페이스 관리자 태스크(504)는 BluetoothTM 인터페이스를 유휴화할 수 있다(단계 622).
도 7은 설명된 실시예들에 따른 BluetoothTM 인터페이스를 유휴화하기 위한 프로세스를 나타내는 플로차트를 나타낸다. 더 구체적으로는, 도 7에 나타낸 실시예는 설명된 실시예에 따른 도 6의 단계(622)의 확대도이다.
도 7에 도시된 프로세스는, 인터페이스 관리자 태스크(504)가 구성 에이전트(502)로부터 어떠한 경로도 BluetoothTM 인터페이스를 참조하지 않는다는 통보를 수신할 때 개시된다(단계 700). 그 다음, 인터페이스 관리자 태스크(504)는, 운영 체제(200)가 구성 에이전트(502)에게 인터페이스가 유휴화되었다는 것을 시그널링한 이후 BluetoothTM 인터페이스를 참조하는 경로가 애플리케이션에 의해 확립되었는지를 판정하기 위해 운영 체제(200)에 대해 질의를 보낸다(단계 702).
이들 실시예에서, 그 인터페이스를 참조하는 경로가 확립되었다면(단계 704), 인터페이스 관리자 태스크(504)는 BluetoothTM 인터페이스를 활성 상태로 둔다(즉, BluetoothTM 인터페이스의 현재 동작 상태를 변경하지 않는다)(단계 706).
그렇지 않고, 그 인터페이스를 참조하는 어떠한 경로도 확립되지 않았다면(단계 704), 인터페이스 관리자 태스크(504)는 BluetoothTM 인터페이스를 유휴화한다(단계 708). 전술된 바와 같이, 인터페이스를 유휴화할 때, 인터페이스 관리자 태스크(504)는 BluetoothTM 인터페이스의 전력을 차단하고, BluetoothTM 인터페이스를 저전력 동작 모드로 두며(예를 들어, 인터페이스의 동작 속도를 변경하는 등), 및/또는 낮은-우선순위 동작을 수행하기 위해 BluetoothTM 인터페이스를 이용할 수 있다.
인터페이스 관리자 태스크(504)가 BluetoothTM 인터페이스를 유휴화할 때, 운영 체제(200)는 인터페이스의 유휴상태를 검출하고, 적극적 유휴화 모드의 인터페이스가 유휴화되었다고 판정한다. 그 다음, 운영 체제(200)는 적극적 인터페이스 카운터를 디크리멘트한다(단계 710). 그 인터페이스는 적극적으로 유휴화되도록 구성된 유일한, 그리고 그에 따라 마지막의, 활성 인터페이스였기 때문에, 적극적 인터페이스 카운터의 디크리멘트는 적극적 인터페이스 카운터가 제로로 되게 한다. 적극적 인터페이스 카운터의 제로화에 기초하여, 운영 체제(200)는 경로 도메인(406)의 드레인 기능(412)에 대한 포인터를, 드레인 기능(412)을 가리키는 것으로부터, NULL을 가리키는 것으로 조정하고(단계 712), 이것은 운영 체제(200)가 도메인(400)의 각각의 통과시에 드레인 기능(412)을 실행하지 않는다는 것을 의미한다.
인터페이스 관리자 태스크(504)가 BluetoothTM 인터페이스 상의 물리층에서의 트래픽만(즉, 실제 패킷 전송)을 모니터링하여 BluetoothTM 인터페이스를 유휴화할 때를 결정하는 기존의 시스템과는 대조적으로, 설명된 실시예에서는, 인터페이스 관리자 태스크(504)는 특정 인터페이스를 참조하는 경로들의 수에 대한 정보를 운영 체제 내부로부터 수신한다는 점에 유의한다. 이 정보를 이용하여, BluetoothTM 서버는, 컴퓨터 시스템(100)에서 실제로 수행되고 있는 동작에 대해 더욱 적절한 방식으로(즉, 어떠한 경로도 인터페이스를 이용하고 있지 않을 때에만) 인터페이스의 전력을 차단할 수 있다.
상기의 실시예들의 설명은 단지 예시와 설명을 위해서 제시되었다. 이 설명은, 철저히 남김없이 드러내거나 실시예들을 개시된 형태로 제한하기 위한 것이 아니다. 따라서, 많은 수정과 변형이 당업자에게는 명백할 것이다. 추가적으로, 상기 개시된 내용은 실시예들을 제한하기 위한 것이 아니다.

Claims (21)

  1. 컴퓨터 시스템에서 네트워크 인터페이스(network interface)의 동작 상태를 제어하기 위한 방법으로서,
    경로(route)에 대해 상기 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여,
    상기 경로에 대한 경로 구조를 생성하는 단계; 및
    상기 네트워크 인터페이스에 대한 인터페이스 데이터 구조 내의 경로 참조 카운터를 인크리멘트(increment)하는 단계;
    상기 애플리케이션이 더 이상 상기 경로를 이용하고 있지 않다는 판정시에, 상기 경로 구조 내의 경로 만료 타이머를 미리결정된 만료 시간으로 설정하는 단계;
    상기 경로 만료 타이머가 만료하면, 상기 경로 구조를 삭제하고 상기 인터페이스 데이터 구조 내의 상기 경로 참조 카운터를 디크리멘트(decrement)하는 단계; 및
    상기 인터페이스 데이터 구조 내의 상기 경로 참조 카운터를 디크리멘트하여 상기 경로 참조 카운터가 제로와 같아지면, 구성 애플리케이션에 신호를 전송하여 상기 애플리케이션에게 상기 네트워크 인터페이스가 유휴화될 수 있다는 것을 통보하는 단계
    를 포함하는, 네트워크 인터페이스의 동작 상태 제어 방법.
  2. 제1항에 있어서, 상기 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여, 상기 네트워크 인터페이스가 이미 활성이 아닌 경우, 상기 방법은,
    상기 네트워크 인터페이스를 활성화하는 단계; 및
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있다면, 적극적 인터페이스 카운터(aggressive interface counter)를 인크리멘트하는 단계를 더 포함하고,
    상기 적극적 인터페이스 카운터는, 적극적으로 유휴화되도록 구성된 어떠한 네트워크 인터페이스도 활성이지 않을 때 제로인, 네트워크 인터페이스의 동작 상태 제어 방법.
  3. 제2항에 있어서, 상기 방법은,
    상기 네트워크 인터페이스가 유휴화되었다는 것을 가리키는 신호를 수신하는 단계; 및
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있다면, 상기 적극적 인터페이스 카운터를 디크리멘트하는 단계
    를 더 포함하는, 네트워크 인터페이스의 동작 상태 제어 방법.
  4. 제3항에 있어서, 상기 경로 구조를 삭제하는 단계는,
    만료된 경로 만료 타이머(expired route expiration timer)를 갖는 경로 구조를 스캐닝하고 만료된 경로 만료 타이머를 갖는 경로 구조를 삭제하는 단계를 더 포함하고,
    상기 적극적 인터페이스 카운터가 제로와 같을 때는, 상기 경로 구조를 스캐닝하는 것은 네트워크 프로토콜 스택 메커니즘을 이용하는 것을 포함하고,
    상기 적극적 인터페이스 카운터가 제로보다 크면, 상기 경로 구조를 스캐닝하는 것은 경로 도메인의 드레인 기능을 이용하는 것을 포함하는, 네트워크 인터페이스의 동작 상태 제어 방법.
  5. 제4항에 있어서, 상기 방법은,
    상기 네트워크 프로토콜 스택 메커니즘을 이용하여 만료된 경로가 스캐닝될 때 상기 경로 도메인의 드레인 기능에 대한 포인터를 NULL로 조정하는 단계; 및
    상기 드레인 기능을 이용하여 만료된 경로가 스캐닝될 때 상기 경로 도메인의 드레인 기능에 대한 포인터를 상기 드레인 기능을 가리키도록 조정하는 단계
    를 더 포함하는, 네트워크 인터페이스의 동작 상태 제어 방법.
  6. 제1항에 있어서, 상기 경로 구조 내의 상기 경로 만료 타이머를 상기 미리결정된 만료 시간으로 설정하는 단계는,
    상기 경로 구조에 의해 이용되는 상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있는지를 판정하는 단계; 및
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있다면, 상기 경로 만료 타이머를 더 짧은 만료 시간으로 설정하고,
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있지 않다면, 상기 경로 만료 타이머를 통상의 만료 시간으로 설정하는 단계를 포함하고,
    상기 더 짧은 만료 시간은 상기 통상의 만료 시간보다 짧은, 네트워크 인터페이스의 동작 상태 제어 방법.
  7. 제1항에 있어서, 네트워크 인터페이스를 유휴화하는 단계는, 상기 네트워크 인터페이스의 전력을 차단하는 단계; 상기 네트워크 인터페이스를 저전력 모드로 전환하는 단계; 또는 상기 네트워크 인터페이스를 통상의/활성 전력 레벨에서 이용하지만, 낮은 우선순위의 동작이나 유지보수 동작을 수행하기 위해서만 이용하는 단계 중 하나를 포함하는, 네트워크 인터페이스의 동작 상태 제어 방법.
  8. 컴퓨터 시스템에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 컴퓨터 시스템 내의 네트워크 인터페이스의 동작 상태를 관리하기 위한 방법을 수행하게 하는 명령어를 유지하는 비일시적 컴퓨터-판독가능한 저장 매체로서, 상기 방법은,
    경로에 대해 상기 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여,
    상기 경로에 대한 경로 구조를 생성하는 단계; 및
    상기 네트워크 인터페이스에 대한 인터페이스 데이터 구조 내의 경로 참조 카운터를 인크리멘트하는 단계;
    상기 애플리케이션이 더 이상 상기 경로를 이용하고 있지 않다는 판정시에, 상기 경로 구조 내의 경로 만료 타이머를 미리결정된 만료 시간으로 설정하는 단계;
    상기 경로 만료 타이머가 만료하면, 상기 경로 구조를 삭제하고 상기 인터페이스 데이터 구조 내의 상기 경로 참조 카운터를 디크리멘트하는 단계; 및
    상기 인터페이스 데이터 구조 내의 상기 경로 참조 카운터를 디크리멘트하여 상기 경로 참조 카운터가 제로와 같아지면, 구성 애플리케이션에 신호를 전송하여 상기 애플리케이션에게 상기 네트워크 인터페이스가 유휴화될 수 있다는 것을 통보하는 단계
    를 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  9. 제8항에 있어서, 상기 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여, 상기 네트워크 인터페이스가 이미 활성이 아닌 경우, 상기 방법은,
    상기 네트워크 인터페이스를 활성화하는 단계; 및
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되면, 적극적 인터페이스 카운터를 인크리멘트하는 단계
    를 더 포함하고,
    상기 적극적 인터페이스 카운터는, 적극적으로 유휴화되도록 구성된 어떠한 네트워크 인터페이스도 활성이지 않을 때 제로인, 비일시적 컴퓨터-판독가능한 저장 매체.
  10. 제9항에 있어서, 상기 방법은,
    상기 네트워크 인터페이스가 유휴화되었다는 것을 가리키는 신호를 수신하는 단계; 및
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있다면, 상기 적극적 인터페이스 카운터를 디크리멘트하는 단계
    를 더 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  11. 제10항에 있어서, 상기 경로 구조를 삭제하는 단계는,
    만료된 경로 만료 타이머를 갖는 경로 구조를 스캐닝하고 만료된 경로 만료 타이머를 갖는 경로 구조를 삭제하는 단계를 더 포함하고,
    상기 적극적 인터페이스 카운터가 제로와 같을 때는, 상기 경로 구조를 스캐닝하는 것은 네트워크 프로토콜 스택 메커니즘을 이용하는 것을 포함하고,
    상기 적극적 인터페이스 카운터가 제로보다 크면, 상기 경로 구조를 스캐닝하는 것은 경로 도메인의 드레인 기능을 이용하는 것을 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  12. 제11항에 있어서, 상기 방법은,
    상기 네트워크 프로토콜 스택 메커니즘을 이용하여 만료된 경로가 스캐닝될 때 상기 경로 도메인의 드레인 기능에 대한 포인터를 NULL로 조정하는 단계; 및
    상기 드레인 기능을 이용하여 만료된 경로가 스캐닝될 때 상기 경로 도메인의 드레인 기능에 대한 포인터를 상기 드레인 기능을 가리키도록 조정하는 단계
    를 더 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  13. 제8항에 있어서, 상기 경로 구조 내의 상기 경로 만료 타이머를 미리결정된 만료 시간으로 설정하는 단계는,
    상기 경로 구조에 의해 이용되는 상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있는지를 판정하는 단계; 및
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있다면, 상기 경로 만료 타이머를 더 짧은 만료 시간으로 설정하고,
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있지 않다면, 상기 경로 만료 타이머를 통상의 만료 시간으로 설정하는 단계를 포함하며,
    상기 더 짧은 만료 시간은 상기 통상의 만료 시간보다 짧은, 비일시적 컴퓨터-판독가능한 저장 매체.
  14. 제8항에 있어서, 네트워크 인터페이스를 유휴화하는 단계는, 상기 네트워크 인터페이스의 전력을 차단하는 단계; 상기 네트워크 인터페이스를 저전력 모드로 전환하는 단계; 또는 상기 네트워크 인터페이스를 통상의/활성 전력 레벨에서 이용하지만, 낮은 우선순위의 동작이나 유지보수 동작을 수행하기 위해서만 이용하는 단계 중 하나를 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  15. 네트워크 인터페이스의 동작 상태를 관리하기 위한 장치로서,
    상기 네트워크 인터페이스; 및
    상기 네트워크 인터페이스에 결합된 처리 서브시스템
    을 포함하고,
    경로에 대해 상기 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여, 상기 처리 서브시스템은 상기 경로에 대한 경로 구조를 생성하고 상기 네트워크 인터페이스에 대한 인터페이스 데이터 구조 내의 경로 참조 카운터를 인크리멘트하며,
    상기 애플리케이션이 더 이상 상기 경로를 이용하고 있지 않다는 판정시에, 상기 처리 서브시스템은 상기 경로 구조 내의 경로 만료 타이머를 미리결정된 만료 시간으로 설정하고,
    상기 경로 만료 타이머가 만료하면, 상기 처리 서브시스템은 상기 경로 구조를 삭제하고 상기 인터페이스 데이터 구조 내의 상기 경로 참조 카운터를 디크리멘트하며,
    상기 인터페이스 데이터 구조 내의 상기 경로 참조 카운터를 디크리멘트하여 상기 경로 참조 카운터가 제로와 같아지면, 상기 처리 서브시스템은 구성 애플리케이션에 신호를 전송하여 상기 애플리케이션에게 상기 네트워크 인터페이스가 유휴화될 수 있다는 것을 통보하는, 네트워크 인터페이스 동작 상태 관리 장치.
  16. 제15항에 있어서, 상기 네트워크 인터페이스를 이용하기 위한 애플리케이션으로부터의 요청을 수신하는 것에 응답하여, 상기 네트워크 인터페이스가 이미 활성이 아닌 경우, 상기 처리 서브시스템은,
    상기 네트워크 인터페이스를 활성화하고,
    상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있다면, 적극적 인터페이스 카운터를 인크리멘트하며,
    상기 적극적 인터페이스 카운터는, 적극적으로 유휴화되도록 구성된 어떠한 네트워크 인터페이스도 활성이지 않을 때 제로인, 네트워크 인터페이스 동작 상태 관리 장치.
  17. 제16항에 있어서, 상기 네트워크 인터페이스가 적극적으로 유휴화되도록 구성되어 있을 때, 상기 네트워크 인터페이스가 유휴화되었다는 것을 가리키는 신호의 수신시에, 상기 처리 서브시스템은 상기 적극적 인터페이스 카운터를 디크리멘트하는, 네트워크 인터페이스 동작 상태 관리 장치.
  18. 제17항에 있어서, 상기 경로 구조의 삭제시에, 상기 처리 서브시스템은,
    만료된 경로 만료 타이머를 갖는 경로 구조를 스캐닝하고 만료된 경로 만료 타이머를 갖는 경로 구조를 삭제하며;
    상기 적극적 인터페이스 카운터가 제로와 같을 때는, 상기 경로 구조의 스캐닝시, 상기 처리 서브시스템은 네트워크 프로토콜 스택 메커니즘을 이용하고;
    상기 적극적 인터페이스 카운터가 제로보다 클 때, 상기 경로 구조의 스캐닝시, 상기 처리 서브시스템은 경로 도메인의 드레인 기능을 이용하는, 네트워크 인터페이스 동작 상태 관리 장치.
  19. 제18항에 있어서, 상기 처리 서브시스템은,
    상기 네트워크 프로토콜 스택 메커니즘을 이용하여 만료된 경로가 스캐닝될 때는 상기 경로 도메인의 드레인 기능에 대한 포인터를 NULL로 조정하고;
    상기 드레인 기능을 이용하여 만료된 경로가 스캐닝될 때는 상기 경로 도메인의 드레인 기능에 대한 포인터를 드레인 기능을 가리키도록 조정하는, 네트워크 인터페이스 동작 상태 관리 장치.
  20. 제15항에 있어서, 상기 네트워크 인터페이스의 유휴화시에, 상기 처리 서브시스템은,
    상기 네트워크 인터페이스의 전력을 차단하거나;
    상기 네트워크 인터페이스를 저전력 모드로 전환하거나; 또는
    통상의/활성 전력 레벨에서 이용하지만, 낮은 우선순위의 동작이나 유지보수 동작을 수행하기 위해서만 상기 네트워크 인터페이스를 이용하는, 네트워크 인터페이스 동작 상태 관리 장치.
  21. 삭제
KR1020127021336A 2010-01-15 2011-01-03 네트워크 접속을 유휴화하기 위한 방법 및 장치 KR101417555B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US29562210P 2010-01-15 2010-01-15
US61/295,622 2010-01-15
US12/857,427 US8706855B2 (en) 2010-01-15 2010-08-16 Method and apparatus for idling a network connection
US12/857,427 2010-08-16
PCT/US2011/020019 WO2011087924A1 (en) 2010-01-15 2011-01-03 Method and apparatus for idling a network connection

Publications (2)

Publication Number Publication Date
KR20120106897A KR20120106897A (ko) 2012-09-26
KR101417555B1 true KR101417555B1 (ko) 2014-07-08

Family

ID=44278361

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127021305A KR101552382B1 (ko) 2010-01-15 2011-01-03 네트워크 접속을 유휴화하기 위한 방법 및 장치
KR1020127021336A KR101417555B1 (ko) 2010-01-15 2011-01-03 네트워크 접속을 유휴화하기 위한 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020127021305A KR101552382B1 (ko) 2010-01-15 2011-01-03 네트워크 접속을 유휴화하기 위한 방법 및 장치

Country Status (5)

Country Link
US (2) US9009297B2 (ko)
EP (2) EP2580664B1 (ko)
JP (2) JP5536232B2 (ko)
KR (2) KR101552382B1 (ko)
WO (2) WO2013025184A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8744367B2 (en) * 2010-08-31 2014-06-03 At&T Intellectual Property I, L.P. Tail optimization protocol for cellular radio resource allocation
US8527627B2 (en) 2010-12-14 2013-09-03 At&T Intellectual Property I, L.P. Intelligent mobility application profiling with respect to identified communication bursts
US9264872B2 (en) 2011-06-20 2016-02-16 At&T Intellectual Property I, L.P. Controlling traffic transmissions to manage cellular radio resource utilization
US9220066B2 (en) 2011-06-20 2015-12-22 At&T Intellectual Property I, L.P. Bundling data transfers and employing tail optimization protocol to manage cellular radio resource utilization
US8806250B2 (en) 2011-09-09 2014-08-12 Microsoft Corporation Operating system management of network interface devices
US9049660B2 (en) 2011-09-09 2015-06-02 Microsoft Technology Licensing, Llc Wake pattern management
US8892710B2 (en) 2011-09-09 2014-11-18 Microsoft Corporation Keep alive management
KR101630315B1 (ko) * 2011-11-16 2016-06-14 노키아 솔루션스 앤드 네트웍스 오와이 네트워크 조정 장치
US10009246B1 (en) * 2014-03-28 2018-06-26 Amazon Technologies, Inc. Monitoring service
KR102524290B1 (ko) 2017-12-26 2023-04-21 현대자동차주식회사 이더넷 스위치, 차량 내 네트워크 구성 방법 및 차량
EP3965379A1 (en) * 2020-09-04 2022-03-09 Huawei Technologies Co., Ltd. Data transmission method, apparatus, and network device
CN117596184B (zh) * 2023-11-20 2024-05-28 江苏新质信息科技有限公司 一种通信连接检测方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050209804A1 (en) * 2004-03-17 2005-09-22 International Business Machines Corporation Method and system for maintaining and examining timers for network connections
US7284053B1 (en) * 2003-03-31 2007-10-16 Cisco Technology, Inc. System and method for loadbalancing in a network environment

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5223827A (en) 1991-05-23 1993-06-29 International Business Machines Corporation Process and apparatus for managing network event counters
US20020138627A1 (en) 2001-03-26 2002-09-26 Frantzen Michael T. Apparatus and method for managing persistent network connections
US20030226056A1 (en) 2002-05-28 2003-12-04 Michael Yip Method and system for a process manager
JP2004164566A (ja) * 2002-09-27 2004-06-10 Casio Comput Co Ltd 通信端末の電力制御装置及び通信端末の電力制御方法
JP2005099515A (ja) * 2003-09-25 2005-04-14 Toshiba Corp 情報処理装置および省電力制御方法。
TW200835357A (en) * 2007-01-17 2008-08-16 Nec Corp Radio communication system, its method, device and program used for them

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7284053B1 (en) * 2003-03-31 2007-10-16 Cisco Technology, Inc. System and method for loadbalancing in a network environment
US20050209804A1 (en) * 2004-03-17 2005-09-22 International Business Machines Corporation Method and system for maintaining and examining timers for network connections

Also Published As

Publication number Publication date
US8706855B2 (en) 2014-04-22
JP2013522698A (ja) 2013-06-13
WO2011087924A1 (en) 2011-07-21
EP2524310A1 (en) 2012-11-21
US20110179153A1 (en) 2011-07-21
WO2013025184A1 (en) 2013-02-21
KR20130051917A (ko) 2013-05-21
JP2013536663A (ja) 2013-09-19
US9009297B2 (en) 2015-04-14
JP5536232B2 (ja) 2014-07-02
KR101552382B1 (ko) 2015-09-10
EP2580664B1 (en) 2018-07-04
JP5662579B2 (ja) 2015-02-04
EP2580664A1 (en) 2013-04-17
EP2524310B1 (en) 2018-07-25
US20110179163A1 (en) 2011-07-21
KR20120106897A (ko) 2012-09-26

Similar Documents

Publication Publication Date Title
KR101417555B1 (ko) 네트워크 접속을 유휴화하기 위한 방법 및 장치
Lim et al. Design, implementation, and evaluation of energy-aware multi-path TCP
CN105453662B (zh) 用于支持休眠节点的邻居发现
EP2461631B1 (en) System support for accessing and switching among multiple wireless interfaces on mobile devices
TWI381658B (zh) 用於多無線電系統之能源察覺通訊
US20140126391A1 (en) Power saving wi-fi tethering
EP2700270A1 (en) Offloading of data to wireless local area network
US8732497B2 (en) Data processing apparatus, method for controlling data processing apparatus, and storage medium storing program
MX2009000108A (es) Tranferencia de un dispositivo de comunicación.
JP2023547257A (ja) Pdcp重複の配置、アクティブ化又は非アクティブ化方法と端末
JP5270010B2 (ja) 無線通信システムにおけるサービス・フロー維持のためのシステムおよび方法
JP2012227804A (ja) 情報処理装置および情報処理装置の制御方法
JP4302130B2 (ja) ネットワークモードをスイッチするための方法および装置
US20130028159A1 (en) Silent power-save mode for a wireless communication device
JP2004192256A (ja) ネットワークコントローラ
US20200336984A1 (en) Method and device for controlling operation mode
WO2024114213A1 (zh) 一种通信管理方法、终端设备、可读存储介质和芯片
JP5986528B2 (ja) 端末におけるスリープモードへの移行を防止する制御装置、プログラム及び方法
KR100810286B1 (ko) 통신 시스템에서 신호 송신 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 6