KR102337119B1 - 컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드 - Google Patents

컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드 Download PDF

Info

Publication number
KR102337119B1
KR102337119B1 KR1020150038852A KR20150038852A KR102337119B1 KR 102337119 B1 KR102337119 B1 KR 102337119B1 KR 1020150038852 A KR1020150038852 A KR 1020150038852A KR 20150038852 A KR20150038852 A KR 20150038852A KR 102337119 B1 KR102337119 B1 KR 102337119B1
Authority
KR
South Korea
Prior art keywords
node
interest
pit
content
ack
Prior art date
Application number
KR1020150038852A
Other languages
English (en)
Other versions
KR20160010293A (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 삼성전자주식회사
Priority to US14/803,323 priority Critical patent/US10305640B2/en
Publication of KR20160010293A publication Critical patent/KR20160010293A/ko
Application granted granted Critical
Publication of KR102337119B1 publication Critical patent/KR102337119B1/ko

Links

Images

Classifications

    • H04L67/327
    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • 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
    • H04L67/104Peer-to-peer [P2P] networks

Landscapes

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

Abstract

컨텐츠 중심 네트워크에서 이전 노드로부터 컨텐츠를 요청하는 제1 인터레스트를 수신하고, 제1 인터레스트에 응답하여, 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지를 생성하며, 이전 노드에게 제1 ACK 메시지를 전송하는 노드의 통신 방법을 제공할 수 있다.

Description

컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드{COMMUNICATION METHOD OF NODE IN CONTENT CENTRIC NETWORK(CCN) AND NODE}
아래의 실시예들은 컨텐츠 중심 네트워크(Content Centric Networking; CCN))에서 노드의 통신 방법 및 그 노드에 관한 것이다.
컨텐츠 중심 네트워크(CCN)는 이름 기반의 라우팅(name-based routing), 네트워크 내의 캐싱(in-network caching) 및 패킷마다의 보안성을 제공하는 네트워킹 토폴로지이다. 컨텐츠 중심 네트워크는 피어-투-피어(peer-to-peer) 컨텐츠 공유를 위한 실용적인 기술 및 컴퓨터 네트워크의 아키텍쳐에 대한 대안이 될 수 있다. 컨텐츠 중심 네트워크는 인터넷 프로토콜(Internet Protocol; IP)의 호스트 주소들(host addresses)을 대체할 수 있는 컨텐츠 이름을 사용하여 효율적인 정보 공유를 위한 새로운 네트워킹 원리를 제공할 수 있다.
컨텐츠 중심 네트워크(CCN)는, 수신된 컨텐츠의 물리적 위치, 특정 참조(specific reference)를 가지기 보다는, 사용자로 하여금 사용자에 의해 요청된 데이터에 집중하도록 하는 통신 네트워크를 제공한다.
일 실시예에 따르면, 노드의 통신 방법은 컨텐츠 중심 네트워크에서 이전 노드(previous node)로부터 컨텐츠를 요청하는 제1 인터레스트(Interest)를 수신하는 단계; 상기 제1 인터레스트에 응답하여, 상기 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지(ACKnowledgement message)를 생성하는 단계; 및 상기 이전 노드에게 상기 제1 ACK 메시지를 전송하는 단계를 포함한다.
상기 제1 ACK 메시지를 생성하는 단계는 상기 제1 인터레스트와 관련된 고유의 시퀀스 넘버에 기초하여 상기 제1 ACK 메시지를 생성하는 단계를 포함할 수 있다.
상기 노드의 통신 방법은 상기 제1 ACK 메시지를 전송한 후, 상기 노드의 PIT(Propagating Interest Table)에 상기 제1 인터레스트와 관련된 PIT 엔트리를 생성하는 단계; 및 상기 PIT 엔트리에 상기 제1 인터레스트와 관련된 시퀀스 넘버를 저장하는 단계를 더 포함할 수 있다.
상기 노드의 통신 방법은 상기 제1 ACK 메시지를 전송한 후, 상기 제1 인터레스트와 관련된 컨텐츠가 상기 노드의 컨텐츠 스토어에 존재하지 않는 경우, 제2 인터레스트를 생성하는 단계; 다음 노드(next node)에게 상기 제2 인터레스트를 전송함에 따라, ACK 타이머(acknowledgement timer)를 시작하는 단계; 및 상기 다음 노드로부터 상기 제2 인터레스트에 응답한 제2 ACK 메시지를 수신한 경우, 상기 ACK 타이머를 정지하는 단계를 더 포함할 수 있다.
상기 제2 인터레스트를 생성하는 단계는 넌스(Nonce)를 가지는 상기 제2 인터레스트를 생성하는 단계를 포함할 수 있다.
상기 제2 인터레스트는 파라미터들을 포함하고, 상기 파라미터들은 상기 노드에서 상기 제2 인터레스트에 대응하는 컨텐츠의 이용 가능성(availability)에 기초하여 변경될 수 있다.
상기 노드의 통신 방법은 상기 제2 ACK 메시지가 상기 ACK 타이머의 만료 시까지 수신되지 않는 경우, 상기 다음 노드에게 상기 제2 인터레스트를 재전송하는 단계를 더 포함할 수 있다.
상기 노드의 통신 방법은 상기 제2 인터레스트를 재전송함에 따라, 상기 ACK 타이머를 일정한 백 오프 타임 아웃 값(back-off timeout value)으로 다시 시작하는 단계를 더 포함할 수 있다.
상기 제2 인터레스트는 상기 제2 인터레스트를 식별할 수 있는 고유의 시퀀스 넘버와 관련되고, 상기 고유의 시퀀스 넘버는 IN 시퀀스 넘버(IN Sequence Number; ISN) 및 OUT 시퀀스 넘버(OUT Sequence Number; OSN)를 포함할 수 있다.
상기 노드의 통신 방법은 상기 제1 인터레스트가 수신되면, 상기 노드의 PIT에 상기 IN 시퀀스 넘버를 저장하는 단계를 더 포함할 수 있다.
상기 노드의 통신 방법은 상기 제2 인터레스트를 상기 다음 노드에게 전송할 때, 상기 노드의 PIT에 상기 OUT 시퀀스 넘버를 저장하는 단계를 더 포함할 수 있다.
상기 제1 ACK 메시지를 전송하는 단계는 상기 제1 인터레스트가 수신된 인커밍 페이스(incoming face)가 원거리(remote)인지 여부를 판단 하는 단계; 및 상기 인커밍 페이스가 원거리로 판단되면, 상기 제1 인터레스트에 응답하여 상기 제1 ACK 메시지를 전송하는 단계를 포함할 수 있다.
상기 노드의 통신 방법은 상기 인커밍 페이스가 근거리로 판단되면, 상기 제1 인터레스트에 상기 이전 노드에 의해 생성된 복제된 넌스(duplicated Nonce)가 있는지 여부를 판단하는 단계; 상기 복제된 넌스가 있다고 판단되는 경우, 상기 제1 인터레스트의 IN 시퀀스 넘버가 상기 노드의 PIT에 포함된 엔트리(entry)의 IN 시퀀스 넘버와 일치하는지 여부에 기초하여, 상기 제1 인터레스트를 상기 이전 노드에 의해 재전송된 인터레스트로 선언하는 단계를 더 포함할 수 있다.
상기 노드의 통신 방법은 상기 다음 노드로부터 컨텐츠 를 수신함에 따라 상기 노드의 PIT 엔트리를 STALE 플래그에 의해 표시(mark)하는 단계; 상기 PIT 엔트리에 대응하는 PIT 타이머를 시작하는 단계; 및 상기 PIT 타이머가 만료되는 경우, 상기 노드의 PIT에서 상기 PIT 엔트리를 제거하는 단계를 더 포함할 수 있다.
상기 PIT 타이머의 값은 상기 노드의 Round Trip Time(RTT)에 기초하여 계산될 수 있다.
일 실시예에 따르면, 노드는 컨텐츠 중심 네트워크에서 이전 노드(previous node)로부터 컨텐츠를 요청하는 제1 인터레스트를 수신하는 수신부; 상기 제1 인터레스트에 응답하여, 상기 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지를 생성하는 처리부; 및 상기 이전 노드에게 상기 제1 ACK 메시지를 전송하는 전송부를 포함한다.
상기 노드는 PIT 엔트리들을 포함하는 PIT를 더 포함하고, 상기 처리부는 상기 PIT에 상기 제1 인터레스트와 관련된 PIT 엔트리를 생성하고, 상기 PIT 엔트리에 상기 제1 인터레스트와 관련된 시퀀스 넘버를 저장할 수 있다.
상기 노드는 컨텐츠를 저장하는 컨텐츠 스토어를 더 포함하고, 상기 처리부는 상기 전송부가 상기 제1 ACK 메시지를 전송한 후, 상기 제1 인터레스트와 관련된 컨텐츠가 상기 컨텐츠 스토어에 존재하지 않는 경우에 제2 인터레스트를 생성하여 다음 노드에게 전송할 수 있다.
상기 처리부는 상기 제2 인터레스트를 생성하여 다음 노드에게 전송함에 따라 ACK 타이머를 시작하고, 상기 다음 노드로부터 상기 제2 인터레스트에 응답한 제2 ACK 메시지를 수신한 경우에 상기 ACK 타이머를 정지할 수 있다.
상기 처리부는 상기 제2 ACK 메시지가 상기 ACK 타이머의 만료 시까지 수신되지 않는 경우, 상기 다음 노드에게 상기 제2 인터레스트를 재전송하고, 상기 ACK 타이머를 일정한 백 오프 타임 아웃 값으로 다시 시작할 수 있다.
상기 제2 인터레스트는 상기 제2 인터레스트를 식별할 수 있는 고유의 시퀀스 넘버와 관련되고, 상기 고유의 시퀀스 넘버는 IN 시퀀스 넘버 및 OUT 시퀀스 넘버를 포함할 수 있다.
상기 처리부는 상기 다음 노드로부터 컨텐츠 를 수신함에 따라 상기 노드의 PIT 엔트리를 STALE 플래그에 의해 표시하고, 상기 PIT 엔트리에 대응하는 PIT 타이머를 시작하며, 상기 PIT 타이머가 만료되면 상기 노드의 전파 인터레스트 테이블(PIT)에서 상기 PIT 엔트리를 제거할 수 있다.
일 실시예에 따르면, 노드의 통신 방법은 인터레스트 소유자- 상기 인터레스트 소유자는 상기 컨텐츠 중심 네트워크에서 상기 인터레스트의 신뢰성 있는 전송을 보증(ensure)하는 ACK 타이머(acknowledgement timer)를 유지함-가 노드에게 컨텐츠를 요청하는 인터레스트를 전송하는 단계; 및 상기 인터레스트 소유자가, 상기 ACK 타이머의 만료 전에 상기 노드에 의해 상기 인터레스트의 수신을 알리는 ACK 메시지를 수신하는 단계를 포함한다.
상기 노드의 통신 방법은 상기 ACK 타이머의 만료 이후에 상기 노드에게 상기 인터레스트 소유자에 의해 상기 인터레스트를 재전송하는 단계를 더 포함할 수 있다.
상기 인터레스트 소유자는 상기 인터레스트를 상기 노드에게 전송하기 위해 상기 인터레스트 소유자의 전달 인터레스트 테이블에서 상기 인터레스트의 엔트리를 생성할 수 있다.
상기 노드의 통신 방법은 상기 컨텐츠가 상기 노드의 컨텐츠 스토어에서 유용한지 여부를 결정하는 단계; 상기 결정에 응답하여 상기 인터레스트 소유자에게 상기 컨텐츠를 전송하는 단계; 상기 인터레스트 소유자가 상기 컨텐츠를 수신함에 응답하여 STALE 플래그에 의해 상기 펜딩 엔트리(pending entry)를 표시하는 단계-상기 인터레스트 소유자는 상기 컨텐츠를 수신함에 응답하여 PIT 타이머를 유지함-; 및 상기 PIT 타이머가 만료되었다는 결정에 응답하여 상기 PIT로부터 상기 STALE 플래그에 해당하는 펜딩 엔트리를 삭제하는 단계를 더 포함할 수 있다.
상기 노드의 통신 방법은 상기 스테일 플래그에 의해 해당 PIT가 표시되고, 상기 PIT 타이머가 만료되기 전에 상기 컨텐츠를 수신함에 응답하여 상기 컨텐츠가 중복되었음을 선언하는 단계를 더 포함할 수 있다.
상기 인터레스트는 IN 시퀀스 넘버 및 OUT 시퀀스 넘버와 연관되고, 상기 인터레스트의 상기 IN 시퀀스 넘버는 상기 인터레스트가 상기 노드에 수신될 때, 상기 노드의 PIT에 저장되고, 상기 인터레스트의 상기 OUT 시퀀스 넘버는 상기 인터레스트가 상기 컨텐츠 중심 네트워크의 다른 노드로부터 포워딩될 때, 상기 노드의 상기 PIT에 저장될 수 있다.
상기 ACK 메시지는 시퀀스 넘버와 관련되고, 상기 인터레스트와 관련된 고유 식별자(unique identifier)는 상기 ACK 메시지가 상기 인터레스트에 대응됨을 식별하기 위해 상기 ACK 메시지와 관련된 상기 고유 식별자와 매칭될 수 있다.
도 1은 일 실시예에 따른 컨텐츠 중심 네트워크(CCN)의 구조를 나타낸 도면이다.
도 2는 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드의 블록 다이어그램이다.
도 3은 일 실시예에 따른 노드의 통신 방법을 나타낸 흐름도이다.
도 4는 다른 실시예에 따른 노드의 통신 방법을 나타낸 흐름도이다.
도 5는 다른 실시예에 따른 노드의 통신 방법을 나타낸 흐름도이다.
도 6은 일 실시예에 따른 컨텐츠 중심 네트워크에서 인터레스트의 전송을 보장하기 위해 각 노드에서 ACK 타이머(Acknowledgement timer)와 PIT 타이머(PIT timer)가 유지되는 과정을 나타낸 도면이다.
도 7은 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드들 간에 전송된 ACK 패킷이 삭제(drop)된 경우의 동작을 나타낸 도면이다.
도 8은 다른 실시예에 따른 컨텐츠 중심 네트워크에서 노드들 간에 전송된 ACK 패킷이 삭제된 경우의 동작을 나타낸 도면이다.
도 9는 일실시예에 따른 컨텐츠 중심 네트워크에서 노드들간의 인터레스트가 삭제된 경우, ACK 타이머의 종료 후에 인터레스트가 재전송되는 과정을 나타낸 도면이다.
도 10은 일실시예에 따른 컨텐츠 중심 네트워크의 각 노드에서 인터레스트를 처리하는 방법을 나타낸 도면이다.
도 11은 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드가 인접 노드들부터 수신되는 컨텐츠(incoming content)를 처리하는 방법을 나타낸 도면이다.
도 12는 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드들 간에 인터레스트가 삭제된 경우를 나타낸 도면이다.
도 13은 일 실시예에 따라 다수의 CCN 클라이언드들을 포함하는 컨텐츠 중심 네트워크에서 두 노드들 중 어느 하나에서 인터레스트가 삭제된 경우를 나타낸 도면이다.
도 14는 일 실시예에 따라 두 개의 모바일 디바이스들 중 어느 하나의 모바일 디바이스와 액세스 포인트 간에 전송되는 인터레스트가 삭제되는 경우를 나타낸 도면이다.
도 15은 도 12에 도시된 경우에 대하여 일실시예에 따른 ACK 메커니즘을 사용한 경우 및 ACK 메커니즘을 사용하지 않은 경우의 처리율 비교 결과를 나타낸 그래프이다.
도 16는 노드들의 개수 증가를 통해 확률을 변화시키는 도 13에 도시된 경우에 대한 처리율 비교 결과를 나타낸 그래프이다.
도 17은 도 14에 도시된 경우에 대하여 일실시예에 따른 ACK 메커니즘을 사용한 경우 및 ACK 메커니즘을 사용하지 않은 경우의 처리율 비교 결과를 나타낸 그래프이다.
도 18은 일 실시예에 따른 노드의 블록도이다.
도 19는 일 실시예에 따른 컨텐츠 중심 네트워크에서 인터레스트의 전송을 제어하는 방법 및 시스템을 구현하는 컴퓨팅 환경을 설명하기 위한 도면이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명하는 실시예들에는 다양한 변경이 가해질 수 있다. 아래 설명하는 실시예들은 실시 형태에 대해 한정하려는 것이 아니며, 이들에 대한 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하에서는 컨텐츠 중심 네트워크(CCN)의 구조를 살펴보기에 앞서, 컨텐츠 중심 네트워크에 대하여 살펴본다.
컨텐츠 중심 네트워크에서, 요청 패킷은 인터레스트(Interest)로, 응답 패킷은 컨텐츠(또는 컨텐츠 객체(Content Object))로 알려져 있다. 컨텐츠는 적절한 크기의 청크들(chunks)(즉, 컨텐츠들)로 구분되고, 각각의 인터레스트는 청크를 요청한다.
컨텐츠를 요청하는 노드는 순차적인 방식으로 복수 개의 인터레스트들을 전송한다. 이때, 인터레스트 각각은 컨텐츠와 연관될 수 있다.
컨텐츠 중심 네트워크에서, 모든 인터레스트들을 위해, 최대 하나의 컨텐츠가 수신될 수 있다. 또한, 전송된 인터레스트는 적당한 이름 기반 라우팅 기술을 적용함으로써 컨텐츠 소스(content source)를 향해 전파될 수 있다.
인터레스트를 수신한 컨텐츠 중심 네트워크의 각 중간 노드(intermediate node)는 컨텐츠 스토어(Content Store; CS)로 알려진 컨텐츠 캐시(content cache)에 있는 컨텐츠에 대한 인터레스트의 수신을 체크한다.
요청된 컨텐츠가 컨텐츠 스토어에서 발견되면, 노드는 컨텐츠로 응답할 수 있다. 요청된 컨텐츠가 컨텐츠 스토어에서 발견되지 않으면, 노드는 인터레스트를 컨텐츠 중심 네트워크의 다음 노드(또는 인접 노드)에게 전달할 수 있다.
인터레스트를 전달하기 전에, 중간 노드는 인터레스트 정보를 전파 인터레스트 테이블(Propagating Interest Table; 이하 'PIT')로 알려진 인터레스트 테이블에 저장할 수 있다.
포워딩 정보는 수동으로 또는 적절한 라우팅 기술을 통해 알려지고, FIB (Forwarding Information Base) 테이블에 저장될 수 있다.
컨텐츠를 포함하는 노드는 중간 노드들에서 생성된 PIT 엔트리에 의해 형성된 역 방향 경로(reverse path)를 사용하여 컨텐츠를 요청한 노드에게 응답할 수 있다. 컨텐츠가 노드 내에 있는 경우에 컨텐츠가 컨텐츠를 요청한 노드를 향해 중간 노드들을 통과하면, PIT 엔트리는 (엔드 노드들을 포함하는) 중간 노드들에서 제거될 수 있다.
한번에 하나의 인터레스트를 전송하는 비효율적인 방법을 사용하는 대신에, 복수의 요청들이 인터레스트를 형성하기 위해 응집될 수 있다.
인터레스트는 인터레스트의 윈도우 사이즈(window size)라고 알려진 동적으로 변경된 엔티티(entity)에 의해 감시되는 하나 이상의 컨텐츠들을 요청한다. 윈도우 사이즈 'w_max'를 가지는 인터레스트는 인터레스트와 연관된 컨텐츠를 수신하기 위해 컨텐츠 중심 네트워크에서 노드에게 전송된다. 'w_max' 는 미리 정의된 최대 값일 수 있다.
컨텐츠 전송자(content sender)가 인터레스트를 수신하면, 컨텐츠 전송자는 인터레스트의 윈도우 사이즈를 판독하고, 요청 노드에게 컨텐츠를 전송할 수 있다. 또한, 인터레스트 정보는 세그먼트 시작 범위(segment start range)를 포함한다.
첫번째 누락 컨텐츠는 새로운 인터레스트가 구성되고, 다음 노드로 전송되는 지점(point)으로 간주될 수 있다. 이러한 방식으로, 인터레스트의 윈도우 사이즈는 각 노드에서의 컨텐츠의 이용 가능성에 기초하여 각 노드에서 감소될 수 있다.
인터레스트가 컨텐츠 중심 네트워크의 임의의 노드들에서 삭제(drop)된 경우, 요청하는 노드에서의 컨텐츠 복구 시간은 길어질 수 있다. 그러므로, 요청자 노드(requester node)에서 인터레스트에 대응하는 컨텐츠를 가지는 각 노드에 대하여 인터레스트의 신뢰성 있는 전송을 보장하는 것이 중요하다. 컨텐츠 중심 네트워크의 중간 노드들 중 임의의 중간 노드에서의 인터레스트의 삭제는 요청자 노드에서의 처리율에 영향을 미칠 수 있다.
도 1은 일 실시예에 따른 컨텐츠 중심 네트워크(CCN)의 구조를 나타낸 도면이다.
도 1에 도시된 바와 같이, 컨텐츠 중심 네트워크(CCN)(100)는 초기 노드(initial node)(110), 및 복수의 노드들(120,130)을 포함한다. 초기 노드(110)는 'CCN 클라이언트'라고도 불릴 수 있다.
일 실시예에서 '노드'는 컨텐츠 중심 네트워크에서 인터레스트 패킷을 전송하고, 컨텐츠를 수신할 수 있는 모바일 디바이스 및 액세스 포인트 등을 포함하는 모든 통신 장치를 의미하는 것으로서 본 명세서에서 기재하고 있는 초기 노드, CCN 클라이언트, 인터레스트 소유자, 중간 노드 등을 모두 포함하는 의미로 이해될 수 있다.
초기 노드(110)는 인접 노드(예를 들어, 노드(102))에게 컨텐츠를 요청하는 인터레스트(Interest)를 전송한다. '인터레스트'는 컨텐츠를 요청하는 패킷으로 이해될 수 있다.
인터레스트는 예를 들어, 요청들의 수 및 요청 시작 세그먼트 번호(request start segment number) 등과 같이 포함 가능한 파라미터들을 포함할 수 있지만, 반드시 이에 한정되지는 않는다.
초기 노드(110)로부터 수신한 인터레스트에 응답하여, 제2 노드(120)는 초기 노드(110)에게 ACK 메시지(Acknowledgement message)를 전송한다. 또한, 인터레스트는 제2 노드(120)로부터 제3 노드(130)에게 전송될 수 있다.
인터레스트는 인접 노드들에게 전송되기 전에 변경될 수 있다. 도 1의 실시예에서 초기 노드(110)의 인접 노드들은 제2 노드(120) 및 제3 노드(130)이다. 이때 각 노드에게 전송되는 인터레스트에 포함된 파라미터들은 인터레스트의 적어도 하나의 요청과 관련된 컨텐츠의 이용 가능성(availability)에 기초하여 변경될 수 있다.
실시예에서, 초기 노드(110)는 인터레스트를 생성하고, 생성된 인터레스트를 제2 노드(120)에게 전송할 수 있다. 컨텐츠 중심 네트워크에서 제2 노드(120)가 인터레스트를 수신하는 경우, 제2 노드(120)는 인터레스트를 처리하기 전에 즉시 ACK 메시지를 전송할 수 있다. 이와 유사하게, 제3 노드(130)가 초기 노드(110) 또는 제2 노드(120)로부터 인터레스트를 수신하는 경우, 제3 노드(130)은 인터레스트에 응답하여 즉시 초기 노드(110) 또는 제2 노드(120)에게 ACK 메시지를 전송할 수 있다.
이하의 상세한 설명에서 사용되는 용어 '인터레스트 소유자'는 컨텐츠 중심 네트워크에서 인접 노드에게 인터레스트를 전송하는 노드를 의미한다. 따라서, 컨텐츠 중심 네트워크에서 인터레스트를 전송하는 각 노드는 아래에서 기술하는 설명의 맥락에서 인터레스트 소유자로 이해될 수 있다.
일 실시예에서 인터레스트 소유자를 포함하는 각 노드는 컨텐츠 중심 네트워크에서 인터레스트의 신뢰성 있는 전송을 보장하기 위한 ACK 타이머(Acknowledgement timer)를 유지할 수 있다. 인터레스트 소유자는 다른 노드(들)에게 인터레스트를 전송한 후에 ACK 타이머를 초기화할 수 있다.
인터레스트 소유자는 인터레스트에 응답하여, 인터레스트를 수신한 노드로부터 ACK 메시지를 수신할 수 있다. ACK 메시지가 수신되면, 인터레스트 소유자에서의 ACK 타이머는 정지할 수 있다. ACK 타이머의 만료 시까지 인터레스트를 전송한 노드로부터 ACK 메시지가 수신되지 않으면, 인터레스트 소유자는 노드에게 인터레스트를 재전송할 수 있다.
일 실시예에서 인터레스트 소유자는 인터레스트를 생성하고, 생성된 인터레스트를 다음 노드에게 전송할 수 있다. 컨텐츠 중심 네트워크에서 노드가 인터레스트를 수신하는 경우, 노드는 인터레스트를 처리하기 전에 즉시 ACK 메시지를 전송할 수 있다. 이와 마찬가지로, 인접 노드가 인터레스트를 수신하는 경우, 인접 노드 또한 즉시 ACK 메시지를 전송할 수 있다. 일 실시예에서는 이처럼 컨텐츠 중심 네트워크에 포함된 각 노드가 전송된 모든 인터레스트에 대하여 ACK 메시지를 제공하는 ACK 메커니즘을 수행함으로써 인터레스트의 신뢰성 있는 전달을 보장할 수 있다.
일 실시예에 따른 ACK 메커니즘은 인터레스트들이 삭제(drop)되지 않은 경우에는 일반적인 ACK 메커니즘과 유사하게 수행될 수 있다. 인터레스트들이 삭제된다면, 일 실시예에 따른 ACK 메커니즘은 일반적인 ACK 메커니즘과 비교할 때에 처리량을 크게 향상시킬 수 있다.
일 실시예에 따른 ACK 메커니즘은 TCP(Transport Control Protocol)의 요청 ACK 메커니즘과 비교할 때 다음과 같은 차이점을 가질 수 있다.
TCP에서 ACK 메커니즘은 컨텐츠 수신을 승인하고, 또한 새로운 컨텐츠를 요청한다. 일 실시예에 따른 ACK 메커니즘은 컨텐츠 중심 네트워크에서 다음 노드로의 인터레스트의 전송을 보장하고, 컨텐츠와 어떠한 관련성도 가지지 않는다.
TCP에서 ACK 시퀀스 넘버는 요청된 다음 세그먼트 번호를 (바이트의 형태로) 식별하는 데에 이용된다. 일 실시예에 따른 ACK 메커니즘에서, 시퀀스 넘버는 두 개의 유사한 인터레스트들을 구별하기 위해 사용된다.
또한, TCP는 오직 하나의 시퀀스를 사용하는 반면에 일 실시예에 따른 ACK 메커니즘은 그 동작을 위해 IN 및 OUT 시퀀스 넘버를 요구한다. 또한, TCP에서는 PIT(Propagation Interest Table)의 개념이 없고, TCP에는 PIT 타이머가 존재하지 않는다.
도 2는 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드의 블록 다이어그램이다.
도 2에 도시된 바와 같이, 컨텐츠 중심 네트워크의 노드(200)는 노드(200) 내에서 존재하는 복수의 응용 프로그램들(예를 들어, 응용 프로그램 1 내지 응용 프로그램 n)이 존재하는 응용 계층(application layer)(201)을 포함할 수 있다. 여기서, 노드(200)는 도 1에 도시된 초기 노드(110)일 수도 있고, 제2 노드(120) 또는 제3 노드(103)일 수 있다. 일 실시예에서, 응용 프로그램은 노드(200)에 설치된 브라우저(browser)일 수도 있다.
컨텐츠 중심 네트워크에서 노드(200)는 예를 들어, 센서들(Sensors), 네트워크 코어(Network Core), 미디어 프레임워크(Media Framework), CCN 라이브러리(CCN library) 등을 포함하는 라이브러리들(libraries)(203)을 포함하지만, 이에 한정되지 않는다.
또한, 노드(200)는 CCN 엔진(210)을 포함할 수 있다.
CCN 엔진(210)은 컨텐츠 스토어(CS)(211), 전파 인터레스트 테이블(PIT)(213) 및 ACK 타이머(217)를 포함할 수 있다.
노드(200)는 컨텐츠에 대응하는 적어도 하나의 요청을 인터레스트와 함께 전송할 수 있다.
전송된 인터레스트는 적절한 이름 기반의 라우팅 기술을 적용함으로써 컨텐츠 소스를 향해 전파될 수 있다.
인터레스트를 수신한 각 중간 노드는 자신의 컨텐츠 스토어(컨텐츠 캐시라고도 함)(211)에 있는 컨텐츠를 체크할 수 있다. 컨텐츠 스토어(211)에서 요청된 컨텐츠가 발견되면, 노드(200)는 컨텐츠로 응답하고, 발견되지 않은 경우에는 인터레스트를 다음 노드 또는 인접 노드에게 포워딩할 수 있다.
포워딩하기 전에, 노드(200)는 전파 인터레스트 테이블(PIT)(213)로 알려진 인터레스트 테이블에 인터레스트 정보를 저장할 수 있다.
전파 인터레스트 테이블(PIT)(213)은 PIT 타이머(215)를 포함할 수 있다. PIT 타이머(215)는 노드에 컨텐츠가 도착하면 카운트를 시작할 수 있다.
일 실시예에서, 전파 인터레스트 테이블(PIT)(213)의 엔트리(entry)는 PIT 타이머(215)의 만료 시에 전파 인터레스트 테이블(PIT)(213)로부터 제거될 수 있다.
또한, CCN 엔진(210)은 전송 계층(transport layer)(205)을 통해 네트워크 계층(network layer)(207)으로 인터레스트를 전송할 수 있다. 전송 계층(205)은 예를 들어, UDP(User Datagram Protocol) 또는 TCP(Transport Control Protocol)을 사용할 수 있다. 네트워크 계층(207)은 IP(Internet Protocol)를 이용할 수 있다.
도 3은 일 실시예에 따른 노드의 통신 방법을 나타낸 흐름도이다.
도 3을 참조하면, 일 실시예에 따른 노드는 컨텐츠 중심 네트워크에서 이전 노드(previous node)로부터 컨텐츠를 요청하는 제1 인터레스트를 수신한다(310).
제1 인터레스트는 제1 인터레스트를 식별할 수 있는 고유의 시퀀스 넘버와 관련될 수 있다. 고유의 시퀀스 넘버는 IN 시퀀스 넘버(IN Sequence Number; ISN) 및 OUT 시퀀스 넘버(OUT Sequence Number; OSN)를 포함할 수 있다.
노드는 제1 인터레스트가 수신되면, 노드의 PIT에 IN 시퀀스 넘버를 저장할 수 있다.
노드는 제1 인터레스트에 응답하여, 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지(ACKnowledgement message)를 생성한다(320). 노드는 제1 인터레스트와 관련된 고유의 시퀀스 넘버에 기초하여 제1 ACK 메시지를 생성할 수 있다.
노드는 이전 노드에게 제1 ACK 메시지를 전송한다(330). 노드는 제1 인터레스트를 처리하기 전에 제1 ACK 메시지를 먼저 전송할 수 있다. 제1 ACK 메시지는 제1 인터레스트의 고유 식별자(unique identifier)에 해당하는 시퀀스 넘버와 관련될 수 있다. 제1 인터레스트의 시퀀스 넘버는 제1 ACK 메시지가 제1 인터레스트에 대응됨을 나타내기 위해 제1 ACK 메시지에서도 동일한 값으로 일치될 수 있다.
도 4는 다른 실시예에 따른 노드의 통신 방법을 나타낸 흐름도이다.
도 4를 참조하면, 일 실시예에 따른 노드는 컨텐츠 중심 네트워크에서 이전 노드로부터 컨텐츠를 요청하는 제1 인터레스트를 수신한다(405).
노드는 제1 인터레스트에 응답하여, 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지를 생성한다(410).
노드는 이전 노드에게 제1 ACK 메시지를 전송한다(415).
노드는 PIT에 제1 인터레스트와 관련된 PIT 엔트리를 생성할 수 있다(420).
노드는 PIT 엔트리에 제1 인터레스트와 관련된 시퀀스 넘버를 저장한다(425).
노드는 제1 인터레스트와 관련된 컨텐츠가 노드의 컨텐츠 스토어에 존재하는지 여부를 판단할 수 있다(430).
단계(430)의 판단 결과, 제1 인터레스트와 관련된 컨텐츠가 노드의 컨텐츠 스토어에 존재하는 경우, 노드는 컨텐츠를 이전 노드에게 전송할 수 있다(460).
단계(430)의 판단 결과, 제1 인터레스트와 관련된 컨텐츠가 노드의 컨텐츠 스토어에 존재하는지 않는 경우, 노드는 제2 인터레스트를 생성할 수 있다(435). 이때, 제2 인터레스트는 제1 인터레스트가 요청하는 것과 동일한 컨텐츠를 요청하는 것일 수 있다. 제1 인터레스트에 포함된 일부 파라미터들의 값은 노드에 의해 변경되어 제2 인터레스트에 반영될 수 있다. 제2 인터레스트는 파라미터들을 포함하고, 파라미터들은 노드에서 제2 인터레스트에 대응하는 컨텐츠의 이용 가능성에 기초하여 변경될 수 있다.
제2 인터레스트는 제2 인터레스트를 식별할 수 있는 고유의 시퀀스 넘버와 관련되고, 고유의 시퀀스 넘버는 IN 시퀀스 넘버 및 OUT 시퀀스 넘버를 포함할 수 있다. 노드는 넌스(Nonce)를 가지는 제2 인터레스트를 생성할 수 있다.
노드는 단계(435)에서 생성한 제2 인터레스트를 다음 노드에게 전송할 수 있다(440). 노드는 제2 인터레스트를 다음 노드에게 전송할 때, 노드의 PIT에 OUT 시퀀스 넘버를 저장할 수 있다.
노드는 다음 노드에게 제2 인터레스트를 전송함에 따라, ACK 타이머를 시작할 수 있다(445). 노드는 예를 들어, 제2 인터레스트의 전송과 동시에 ACK 타이머를 시작할 수 있다. ACK 타이머는 제2 인터레스트의 신뢰성 있는 전송을 보장하기 위한 것이다.
노드는 ACK 타이머의 만료 시까지 제2 ACK 메시지가 수신되었는지를 판단할 수 있다(450). 제2 ACK 메시지는 제2 인터레스트에 응답한 것일 수 있다.
단계(450)의 판단 결과, ACK 타이머의 만료 시까지 제2 ACK 메시지가 수신된 경우, 노드는 단계(445)에서 시작한 ACK 타이머를 정지할 수 있다(455).
단계(450)의 판단 결과, ACK 타이머의 만료 시까지 제2 ACK 메시지가 수신되지 않는 경우, 노드는 다음 노드에게 제2 인터레스트를 재전송할 수 있다(465). 단계(465)에서 제2 인터레스트의 재전송 시에, 노드는 ACK 타이머를 일정한 백 오프 타임 아웃 값(back-off timeout value)으로 다시 시작할 수 있다.
도 5는 다른 실시예에 따른 노드의 통신 방법을 나타낸 흐름도이다.
도 5를 참조하면, 일 실시예에 따른 노드는 컨텐츠 중심 네트워크에서 이전 노드로부터 컨텐츠를 요청하는 제1 인터레스트를 수신한다(510).
노드는 제1 인터레스트에 응답하여, 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지를 생성한다(515).
노드는 이전 노드에게 제1 ACK 메시지를 전송한다(520).
노드는 제1 인터레스트와 관련된 컨텐츠가 노드의 컨텐츠 스토어에 존재하는지 여부를 판단할 수 있다(525).
단계(525)의 판단 결과, 제1 인터레스트와 관련된 컨텐츠가 노드의 컨텐츠 스토어에 존재하는 경우, 노드는 이전 노드에게 컨텐츠를 전송할 수 있다(545).
단계(525)의 판단 결과, 제1 인터레스트와 관련된 컨텐츠가 노드의 컨텐츠 스토어에 존재하지 않는 경우, 노드는 제2 인터레스트를 생성할 수 있다(530).
노드는 다음 노드에게 제2 인터레스트를 전송할 수 있다(535).
노드는 다음 노드로부터 컨텐츠를 수신할 수 있다(540). 이때, 컨텐츠는 제2 인터레스트에 대응되는 것일 수 있다. 여기서, '대응된다'는 의미는 제2 인터레스트를 통해 요청한 컨텐츠에 해당한다는 것으로 이해될 수 있다.
노드는 제1 인터레스트를 통해 해당 컨텐츠의 전송을 요청한 이전 노드에게 단계(540)에서 수신한 컨텐츠를 전송할 수 있다(545).
노드는 PIT 엔트리를 STALE 플래그에 의해 표시(mark)할 수 있다(550). 이때, PIT 엔트리는 단계(545)에서 전송한 컨텐츠에 대응되는 것일 수 있다. STALE 플래그는 인터레스트에 의해 응답하여 수신한 컨텐츠에 해당하는 PIT 엔트리를 나타내는 것이다. STALE 플래그에 의해 표시된 PIT 엔트리는 일정 시간 후에 PIT에서 제거될 수 있다.
노드는 PIT 엔트리에 대응하는 PIT 타이머(PIT timer)를 시작할 수 있다(555).
노드는 단계(555)에서 시작한 PIT 타이머가 만료되는 경우, 노드의 PIT에서 PIT 엔트리를 제거할 수 있다(560).
예를 들어, 인터레스트가 정상적으로 노드에 도달하였으나, 노드가 인터레스트에 응답하여 전송한 ACK 메시지가 네트워크 정체 등으로 인해 삭제된 경우, ACK 메시지를 수신하지 못한 상대편 노드는 인터레스트를 재전송할 수 있다. 이러한 경우, 일반적으로 노드는 이전에 도달한 인터레스트가 요청하는 컨텐츠를 전송하고, 전송한 컨텐츠에 해당하는 PIT 엔트리를 자신의 PIT에서 즉시 삭제할 수 있다.
이때, 노드에는 상대편 노드가 재전송한 인터레스트에 대한 ACK 메시지 및 재전송 인터레스트와 관련된 컨텐츠가 다른 노드로부터 수신될 수 있다. 하지만, 컨텐츠에 일치하는 PIT 엔트리는 이미 노드의 PIT로부터 제거되었으므로, 노드는 PIT에서 일치하는 PIT 엔트리를 발견할 수 없어 전송된 컨텐츠를 삭제할 수 있다.
이러한 상황을 회피하기 위해, 일 실시예에서는 컨텐츠 중심 네트워크의 노드들 각각에서 PIT 타이머를 유지할 수 있다. 노드는 컨텐츠의 수신 시에 PIT에서 즉시 PIT 엔트리를 삭제하는 대신에 PIT 타이머의 카운트를 시작하고, PIT 타이머가 만료됨에 따라 PIT에 대응하는 PIT 엔트리를 제거할 수 있다. 이를 통해 일 실시예에서는 불필요한 중복 컨텐츠의 재전송에 의한 노드들 간의 링크 낭비를 줄일 수 있다.
도 6은 일 실시예에 따른 컨텐츠 중심 네트워크에서 인터레스트의 전송을 보장하기 위해 각 노드에서 ACK 타이머와 PIT 타이머가 유지되는 과정을 나타낸 도면이다.
일 실시예에서는 컨텐츠 중심 네트워크의 각 노드들이 인터레스트를 수신함에 응답하여 ACK 메시지를 제공하도록 함으로써 인터레스트들의 신뢰성 있는 전송을 보장한다. 일 실시예에서, ACK 메시지(또는 ACK 패킷)은 타입 필드(type field)가 'CCN_ACK'로 설정된 CCN 컨텐츠의 일 유형일 수 있다. ACK 메시지에 대한 정보(즉, 페이로드(payload))의 존재는 선택적일 수 있다.
도 6에 도시된 바와 같이, CCN 클라이언트(601)는 넌스를 가지는 인터레스트를 생성할 수 있다(610). 일반적으로, 넌스는 인터레스트가 다시 수신되지 않음을 보장하기 위해, CCN 클라이언트(601)에서 생성될 수 있다.
CCN 클라이언트(601)은 CCN 클라이언트(601)과 관련된 PIT의 엔트리를 생성한다(615). 일 실시예에서, CCN 클라이언트(601)에서 생성된 인터레스트는 OUT 시퀀스 넘버(OSN)와 연관될 수 있다. 이때, OUT 시퀀스 넘버는 노드로부터 나가는(outgoing) 인터레스트의 시퀀스 넘버를 나타낸다. OUT 시퀀스 넘버는 예를 들어, 9와 같이 무작위로 생성된 번호일 수 있다. OUT 시퀀스 넘버는 임의로 생성되거나, 또는 노드에서 실행되는 일정 논리에 기초하여 생성될 수 있다.
도 6에서, CCN 클라이언트(601)가 전송하는 인터레스트의 OUT 시퀀스 넘버는 9이고, 이 값은 컨텐츠 중심 네트워크의 각 노드에서 컨텐츠의 이용 가능성에 기초하여 각 노드에 의해 변경될 수 있다.
CCN 클라이언트(601)은 노드(603)에게 인터레스트를 전송할 수 있다(620).
또한, CCN 클라이언트(601)은 도 3에 도시된 바와 같이 노드(603)에게 인터레스트를 전송한 후에 자신(CCN 클라이언트(601))의 ACK 타이머를 시작할 수 있다.
인터레스트를 수신한 경우, 노드(603)는 수신한 인터레스트를 처리하기 전에 즉시 ACK 메시지를 전송할 수 있다(625). CCN 클라이언트(601)의 ACK 타이머는 노드(603)로부터 ACK 메시지를 수신하면 정지될 수 있다.
이와 유사하게, 노드(605)가 인터레스트를 수신한 경우, 노드(605)은 즉시 ACK 메시지를 전송할 수 있다. 일 실시예에서, 인터레스트는 CCN 클라이언트(601)로부터 노드(605)까지 전송되는 인터레스트를 고유하게 식별할 수 있는 고유의 시퀀스 넘버와 연관될 수 있다. 시퀀스 넘버는 인터레스트 경로를 따라 위치하는 모든 노드 페어들에 대해 고유하다.
일 실시예에서, 노드(603)로부터 ACK 메시지를 수신한 경우, CCN 클라이언트(601)는 OUT 시퀀스 넘버(OSN)에 매칭하기 위해 자신(CCN 클라이언트(601))의 PIT를 검색할 수 있다. 이때, CCN 클라이언트(601)는 노드(603)가 클라이언트(601)로부터 전송된 인터레스트의 수신을 확인하기 전에 자신(CCN 클라이언트(601)의 PIT를 검색할 수 있다.
인터레스트가 노드(603)에 수신되면, 노드(603)는 인터레스트와 관련된 IN 시퀀스 넘버(ISN) 9가 노드(603)의 PIT에 저장되도록 PIT의 엔트리를 생성할 수 있다(630). IN 시퀀스 넘버는 예를 들어, 9와 같이, 임의로 생성되거나 노드에서 실행되는 일정 논리에 기초하여 생성될 수 있다.
또한, 노드(603)는 CCN 클라이언트(601)로부터 수신한 인터레스트를 처리한 후에 노드(605)에게 인터레스트를 전송할 수 있다(635). 인터레스트를 처리하는 방법에 따르면, 노드(603)는 자신의 컨텐츠 스토어에서 CCN 클라이언트(601)로부터 수신한 인터레스트와 관련된 이용 가능한 컨텐츠의 존재 여부를 체크할 수 있다. 인터레스트와 관련된 컨텐츠가 컨텐츠 스토어에 존재하는 경우, 노드(603)는 인터레스트와 관련된 컨텐츠를 CCN 클라이언트(601)에게 전송할 수 있다. 이때, 인터레스트의 시퀀스 넘버는 인터레스트를 노드(605)에게 전송하기 전에 OUT 시퀀스 넘버(OSN) 17로서 노드(603)의 PIT에 저장될 수 있다.
일 실시예에서, 노드(605)는 노드(603)가 전송한 인터레스트의 수신을 확인하는 ACK 메시지를 생성하고, 노드(603)에게 ACK 메시지를 전송할 수 있다(640). ACK 메시지는 인터레스트와 관련된 시퀀스 넘버에 기초하여 노드(605)에서 생성될 수 있다.
일 실시예에서, ACK 타이머는 각 노드가 인터레스트를 이웃 노드(노드(603) 또는 노드(605))에게 포워딩 할 때 시작될 수 있다. 또한, ACK 메시지는, 각 노드의 ACK 타이머가 만료되기 전에, 노드들 중 어느 하나의 노드에 수신될 수 있다. 노드의 ACK 타이머가 만료되기 전까지 ACK 메시지가 수신되지 않으면, 노드는 인터레스트를 재전송할 수 있다. 이때, 인터레스트를 재전송한 노드의 ACK 타이머는 일정한 백-오프 타임 아웃 값으로 인터레스트의 재전송 시에 다시 카운트를 시작할 수 있다.
도 6에 도시된 바와 같이, CCN 클라이언트(601), 노드(603) 및 노드(605) 각각은 인터레스트를 다음 노드(인접 노드)로 포워딩함과 동시에 각자의 ACK 타이머의 카운트를 시작할 수 있다. 각 노드에서 ACK 메시지가 ACK 타이머의 만료 전에 수신된 경우, 각 노드는 인터레스트를 재전송하지 않는다.
노드(603)로부터 인터레스트를 수신한 후, 노드(605)은 자신의 PIT에 IN 시퀀스 넘버(ISN) 17로서 인터레스트의 엔트리를 생성하고, 인터레스트에 대한 처리를 시작할 수 있다(645).
인터레스트를 처리한 후에, 노드(605)는 인터레스트의 OUT 시퀀스 넘버(OSN)를 13으로 변경하여 CCN 서버(607)에게 전송할 수 있다(650).
노드(605)로부터 인터레스트가 수신됨에 응답하여, CCN 서버(607)는 노드(605)에게 인터레스트의 수신을 확인하는 ACK 메시지를 전송할 수 있다(655). ACK 메시지는 노드(605)의 ACK 타이머가 만료되지 이전에 노드(605)에게 전송될 수 있다. ACK 메시지를 전송한 후에 CCN 서버(607)는 인터레스트에 대한 처리를 시작할 수 있다.
CCN 서버(607)는 인터레스트를 처리한 후에, 노드(605)에게 (인터레스트에 일치하는) 컨텐츠를 전송할 수 있다(660). 일 실시예에서, 노드(605)가 CCN 서버(607)로부터 컨텐츠를 수신한 경우, 노드(605)는 STALE 플래그에 의해 해당 PIT 엔트리를 표시할 수 있다. 노드(605)은 PIT 타이머를 초기화할 수 있다. 인터레스트와 일치하는 컨텐츠를 수신함에 따른 노드의 PIT 타이머 초기화를 위한 요구 사항을 도 7의 실시예를 통해 설명한다.
PIT 타이머가 만료된 경우, 노드(605)은 해당 PIT 엔트리를 자신의 PIT에서 제거할 수 있다(665).
CCN 서버(607)로부터 수신된 컨텐츠는 노드(605)에 저장(cash)되고, 노드(605)은 노드(603)에게 컨텐츠를 전송할 수 있다(670).
컨텐츠가 수신되면, 노드(603)는 자신의 PIT 타이머 만료 후에 노드 노드(603)의 PIT에서 대응되는 PIT 엔트리를 제거할 수 있다 (675). 노드(603)는 PIT 타이머를 다시 초기화할 수 있다.
노드(603)는 노드(605)로부터 수신된 컨텐츠를 저장하고, 저장된 컨텐츠를 CCN 클라이언트(601)에게 전송할 수 있다(680).
CCN 클라이언트(601)은 노드(603)로부터 컨텐츠를 수신한 후에 자신의 PIT 타이머가 만료되면 자신(CCN 클라이언트(601))의 PIT에서 해당 PIT 엔트리를 제거한다(685). CCN 클라이언트(601)은 PIT 타이머를 다시 초기화할 수 있다.
도 7은 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드들 간에 전송된 ACK 패킷이 삭제(drop)된 경우의 동작을 나타낸 도면이다.
도 7을 참조하면, 인터레스트 소유자로 알려진 CCN 클라이언트(701)는 넌스를 가지는 인터레스트를 생성하고(710), 자신(CCN 클라이언트(701))의 PIT에 엔트리를 생성할 수 있다(715).
일 실시예에서, CCN 클라이언트(701)에서 생성된 인터레스트는 OUT 시퀀스 넘버(OSN)와 연관될 수 있다. 인터레스트의 OUT 시퀀스 넘버는 9일 수 있다. 인터레스트의 OUT 시퀀스 넘버는 컨텐츠 중심 네트워크에 있는 각 노드에서의 컨텐츠의 이용 가능성에 기초하여 각 노드에 의해 변경될 수 있다.
CCN 클라이언트(701)는 노드(703)에게 인터레스트를 전송할 수 있다(720). CCN 클라이언트(701)는 노드(703)에게 인터레스트를 전송한 후에 ACK 타이머를 초기화할 수 있다. 노드(703)는 클라이언트 노드(701)로부터 OUT 시퀀스 넘버(OSN) 9를 가진 인터레스트를 수신할 수 있다. 노드(703)에서 인터레스트의 IN 시퀀스 넘버(ISN)은 9일 수 있다.
노드(703)는 클라이언트 노드(701)로부터 수신한 인터레스트를 처리하기 전에 즉시 CCN 클라이언트(701)에게 ACK 메시지를 전송할 수 있다(725). 이때, CCN 클라이언트(701)의 ACK 타이머는 노드(703)로부터 ACK 메시지를 수신한 후에 정지될 수 있다.
클라이언트 노드(701)로부터 인터레스트가 수신되면, 노드(703)는 자신의 PIT에 엔트리를 생성할 수 있다(730). 예를 들어, 노드(703)는 PIT에 엔트리를 생성하고, PIT에 인터레스트와 관련된 시퀀스 넘버로서 IN 시퀀스 넘버(ISN) 9를 저장할 수 있다.
노드(703)는 단계(720)에서 CCN 클라이언트(701)로부터 수신한 인터레스트를 처리한 후에 노드(705)에게 인터레스트를 전송할 수 있다(735). 이때, 노드(703)가 노드(705)에게 전송하는 인터레스트의 시퀀스 넘버는 OUT 시퀀스 넘버(OSN) 17로서 노드(703)의 PIT에 저장될 수 있다. 또한, 노드(705)가 수신한 인터레스트의 IN 시퀀스 넘버는 17일 수 있다.
노드(703)로부터 인터레스트를 수신한 노드(705)는 인터레스트의 수신을 확인하는 ACK 메시지를 생성하여 노드(703)에게 전송할 수 있다. 이때, ACK 메시지는 예를 들어, 네트워크 정체 등으로 인해 노드들(705 및 703) 간에 삭제될 수 있다(740).
단계(740)에서와 같이, 노드(705)가 전송한 ACK 메시지가 노드들(705 및 703) 간에 삭제된 경우, 노드(703)는 노드(703)의 ACK 타이머의 만료 후에 OUT 시퀀스 넘버 17으로 인터레스트를 재전송할 수 있다(745). 노드(705)로 재전송된 인터레스트의 IN 시퀀스 넘버는 17일 수 있다.
노드(703)는 단계(745)에서 ACK 타이머의 만료에 따라 인터레스트를 재전송한 후, 노드(705)로부터 컨텐츠를 수신할 수 있다(750).
단계(745)에서의 인터레스트의 재전송과, 단계(750)에서 노드(705)로부터 중복 컨텐츠(duplicate content)의 수신을 초래한 인터레스트 때문에 노드(705)에서는 새로운 PIT 엔트리가 생성될 수 있다.
도 7에서, 노드(703)가 노드(705)에게 인터레스트를 전송한 후, 노드(705)에 의해 노드(703)로 전송되는 ACK 메시지는 예를 들어, 네트워크 정체(network congestion) 등으로 인해 삭제될 수 있다. 이때, 노드(703)는 자신의 ACK 타이머가 만료될 때까지 ACK 메시지의 수신을 대기할 수 있다. 노드(703)는 ACK 타이머의 만료 시까지 ACK 메시지가 수신되지 않으면 노드(705)에게 인터레스트를 재전송할 수 있다. 이후, 단계(750)에서 이전에 전송된 인터레스트(즉, 단계(435)에서 전송한 인터레스트)에 일치하는 컨텐츠가 노드(703)에게 수신될 수 있다.
단계(750)에서 수신된 컨텐츠에 대해 일치하는 PIT 엔트리가 노드(703)의 PIT에서 발견된 경우, 노드(703)에 의해 PIT 엔트리는 제거되고(755), 컨텐츠는 CCN 클라이언트(701)에게 전달될 수 있다(760).
단계(755)에서 노드(703)의 PIT 엔트리가 제거된 후, 노드(703)는 단계(745)에서 재전송한 인터레스트에 대한 ACK 메시지를 수신할 수 있다(765).
이후, 노드(705)에 의해 전송된, 재전송 인터레스트와 관련된 컨텐츠가 노드(703)에 도착할 수 있다(770).
단계(770)에서 수신된 컨텐츠에 일치하는 PIT 엔트리는 단계(755)에서 노드(703)의 PIT로부터 제거되었으므로, 노드(703)에서는 일치하는 PIT 엔트리가 발견되지 않고, 컨텐츠는 삭제될 수 있다(775). 상기 처리 과정에서, 노드(703)와 노드(705) 간의 링크는 불필요한 중복 컨텐츠의 재전송에 의해 낭비될 수 있다.
일 실시예에서는 이러한 상황을 회피하기 위해, 컨텐츠 중심 네트워크의 노드들(노드(701), 노드(703) 및 노드(705)) 각각에서 PIT 타이머를 유지할 수 있다.
노드들(노드(701), 노드(703) 및 노드(705)) 각각은 컨텐츠의 수신 시에 즉시 PIT 엔트리를 삭제하는 대신에 PIT 타이머의 카운트를 시작하고, PIT 타이머가 만료됨에 따라 PIT에 대응하는 PIT 엔트리를 제거할 수 있다. 일 실시예에서, PIT 타이머의 값은 각 노드에서의 Round Trip Time(RTT) 추정에 기초하여 동적으로 계산될 수 있다.
일 실시예에서, 컨텐츠가 수신되면 컨텐츠에 대응되는 PIT의 엔트리는 CCN_PR_STALE 플래그로 표시될 수 있다. 정상적인 동작을 위해, 각 노드에서는 CCN_PR_STALE 플래그가 설정되지 않은 PIT 엔트리들만이 이용될 수 있다.
인터레스트가 노드에게 수신되고, 노드 내의 컨텐츠 스토어에서 인터레스트에 해당하는 컨텐츠가 발견되면, 노드는 해당 인터레스트에 대한 PIT 엔트리를 생성하지 않을 수 있다.
상술한 바와 같이, 네트워크 정체 등으로 인해 노드가 ACK 메시지를 수신하지 못하여 인터레스트를 재전송하는 경우, 이것은 중복 컨텐츠 전송을 초래할 수 있다. 일 실시예에서는 이러한 경우에 노드가 PIT 엔트리를 생성하도록 할 수 있다. 이 경우, PIT 엔트리는 CCN_PR_STALE 플래그로 표시되고, 이러한 PIT 엔트리는 PIT 타이머의 만료 후에 순차적으로 제거될 수 있다.
도 8은 다른 실시예에 따른 컨텐츠 중심 네트워크에서 노드들 간에 전송된 ACK 패킷이 삭제된 경우의 동작을 나타낸 도면이다.
도 8을 참조하면, CCN 클라이언트(801)는 인터레스트를 생성하고(810), CCN 클라이언트(801)와 관련된 PIT에 엔트리를 생성(또는 표시)할 수 있다(815). 일 실시예에서, CCN 클라이언트(801)에서 생성된 인터레스트는 노드로부터 나가는 인터레스트의 시퀀스 넘버인 OUT 시퀀스 넘버와 연관될 수 있다. 인터레스트의 OUT 시퀀스 넘버는 예를 들어, 9일 수 있다.
인터레스트의 OUT 시퀀스 넘버는 컨텐츠 중심 네트워크의 각 노드에서 컨텐츠의 이용 가능성에 기초하여 각 노드에서 변경될 수 있다.
CCN 클라이언트(801)는 노드(803)에게 인터레스트를 전송할 수 있다(820). CCN 클라이언트(801)는 인터레스트를 노드(803)에게 전송한 후에 자신(CCN 클라이언트(801))의 ACK 타이머를 초기화할 수 있다.
노드(803)는 CCN 클라이언트(801)로부터 OUT 시퀀스 넘버 9를 가진 인터레스트를 수신할 수 있다. 노드(803)로 수신된 인터레스트의 IN 시퀀스 넘버는 9일 수 있다.
노드(803)가 CCN 클라이언트(801)로부터 인터레스트를 수신한 경우, 노드(803)는 인터레스트를 처리하기에 앞서 ACK 메시지로 즉시 응답할 수 있다(825). 노드(803)로부터 ACK 메시지가 수신된 경우, CCN 클라이언트(801)의 ACK 타이머는 정지될 수 있다.
인터레스트가 수신되면, 노드(803)는 PIT에 엔트리를 생성(또는 표시)할 수 있다(830). 예를 들어, 노드(803)의 PIT에서 엔트리가 생성되면, 인터레스트와 관련된 IN 시퀀스 넘버 9가 PIT에 저장될 수 있다.
노드(803)는 인터레스트를 처리한 후에 다음 노드(노드(805)에게 인터레스트를 전송할 수 있다(835). 이때, 인터레스트의 시퀀스 넘버는 인터레스트를 다음 노드(노드(805))에게 전송하기 전에 노드(803)의 PIT에 OUT 시퀀스 넘버는 17 로 저장될 수 있다.
노드(803)로부터 노드(805)에게 수신된 인터레스트의 IN 시퀀스 넘버는 17일 수 있다.
일 실시예에에서, 노드(805)는 인터레스트의 수신을 확인하는 ACK 메시지를 생성하고, 노드(803)에게 ACK 메시지를 전송할 수 있다. 도 8에 도시된 실시예에서, ACK 메시지는 노드(803)와 노드(805) 간의 전송 중에 예를 들어, 네트워크 정체 등으로 인해 삭제(drop)될 수 있다(840).
ACK 메시지가 전송 중에 삭제되어 ACK 메시지를 수신하지 못한 경우, 노드(803)는 ACK 타이머의 만료 후에 노드(805)에게 OUT 시퀀스 넘버 17을 가진 인터레스트를 재전송할 수 있다(845). 노드(805)에게 재전송된 인터레스트의 IN 시퀀스 넘버는 17일 수 있다. 단계(845)에서 재전송된 인터레스트는 CCN 클라이언트 노드(801)에서 생성된 것과 동일한 넌스를 포함할 수 있다.
단계(845)에서 재전송한 인터레스트에 응답하여, 노드(803)는 노드(805)로부터 ACK 메시지를 수신할 수 있다(850). 이때, 노드(805)은 노드(803)의 ACK 타이머의 만료 전에 ACK 메시지는 노드(805)에게 전송할 수 있다.
일 실시예에서, 단계(835)에서 전송된 인터레스트를 위한 PIT 엔트리가 노드(805)의 PIT에 생성되었기 때문에, 노드(805)는 PIT 엔트리를 생성하지 않을 수 있다(855).
단계(845)에서 노드(803)로부터 노드(805)로 재전송된 인터레스트는 이전의 단계(835)에서 전송된 인터레스트와 동일한 IN 시퀀스 넘버 17을 보유할 수 있다.
노드(805)가 재전송 인터레스트를 수신하면, 노드(805)은 시퀀스 넘버에 일치하는 엔트리들을 위해 자신의 PIT를 검색하여 일치하는 엔트리를 발견할 수 있다.
단계(835)에서 전송된 인터레스트로 인해 PIT에 이미 존재하던 PIT 엔트리로 인해, 노드(805)은 노드(803)에게 ACK 메시지를 전송할 수 있다. 노드(805)는 추가적인 인터레스트 처리를 수행하지 않고, 인터레스트를 삭제할 수 있다.
노드(805)은 CCN 서버(807)에게 인터레스트를 전송할 수 있다(860). 노드(805)에 의해 전송된 인터레스트의 OUT 시퀀스 넘버는 13이고, CCN 서버(807)에서 수신된 인터레스트의 IN 시퀀스 넘버는 13일 수 있다.
노드(805)로부터 수신한 인터레스트에 응답하여, CCN 서버(807)는 노드(805)에게 ACK 메시지를 전송할 수 있다(865). CCN 서버(807)은 노드(805)에게 ACK 메시지를 전송한 후에, 인터레스트의 처리를 시작할 수 있다.
인터레스트를 처리한 후에 CCN 서버(807)는 노드(805)에게 인터레스트에 일치하는 컨텐츠를 전송할 수 있다(870).
일 실시예에서, CCN 서버(807)로부터 컨텐츠가 수신된 경우, 노드(805)는 해당 PIT 엔트리를 STALE 플래그에 의해 표시할 수 있다. 노드(805)는 CCN 서버(807)로부터 컨텐츠를 수신함에 따라 노드(805)의 PIT 타이머를 초기화할 수 있다.
PIT 타이머가 만료되면, 노드(805)은 PIT에서 해당 PIT 엔트리를 제거할 수 있다(875).
CCN 서버(807)로부터 컨텐츠를 수신한 노드(805)는 컨텐츠를 저장한 후, 노드(803)에게 컨텐츠를 전송할 수 있다(880).
노드(803)에 컨텐츠가 수신되면, 노드(803)는 STALE 플래그에 의해 해당 PIT 엔트리를 표시할 수 있다. 노드(803)는 PIT 타이머의 만료에 따라, 노드(803)의 PIT에서 해당 PIT 엔트리를 제거할 수 있다(885). 이후, 노드(803)는 PIT 타이머를 초기화할 수 있다.
노드(803)는 노드(805)로부터 수신한 컨텐츠를 저장하고, CCN 클라이언트(801)에게 컨텐츠를 전송할 수 있다(890).
CCN 클라이언트(801)는 STALE 플래그에 의해 해당 PIT 엔트리를 표시하고, 노드(803)로부터 컨텐츠를 수신한 후에 자신의 PIT 타이머를 초기화할 수 있다. CCN 클라이언트(801)는 PIT 타이머가 만료됨에 따라 해당 PIT 엔트리를 제거할 수 있다(895).
도 9는 일실시예에 따른 컨텐츠 중심 네트워크에서 노드들간의 인터레스트가 삭제된 경우, ACK 타이머의 종료 후에 인터레스트가 재전송되는 과정을 나타낸 도면이다.
도 9를 참조하면, 인터레스트가 ACK 타이머의 만료 후에 ACK 메시지의 응답에 실패한 노드에게 재전송되는 경우가 도시된다.
도 9에서 CCN 클라이언트(901)와 노드(905) 간에 수행되는 동작은 도 8의 단계(810) 내지 단계(835)의 과정과 동일하므로 해당 부분의 설명을 참조한다. 또한, 도 9에서는 도 8의 단계(840)에서 노드(805)이 노드(803)에게 전송한 ACK 메시지가 정상적으로 수신된 것으로 가정하고, 노드(905)에서 PIT 엔트리가 생성된 이후에 노드(905)과 CCN 서버(907) 간의 동작을 설명한다.
도 9에서 노드(905)와 CCN 서버(907) 간에서 노드(905)로부터 전송된 OUT 시퀀스 넘버 13을 가진 인터레스트가 삭제될 수 있다(910).
인터레스트가 삭제되면, 노드(905)에서는 ACK 타이머의 만료 전에 인터레스트에 응답하여 ACK 메시지가 수신되지 않는다. 이러한 경우, 노드(905)은 OUT 시퀀스 넘버 13을 가진 인터레스트를 CCN 서버(907)에게 재전송할 수 있다(920).
CCN 서버(907)는 노드(905)로부터 IN 시퀀스 넘버 13을 가진 재전송된 인터레스트를 수신할 수 있다.
노드(905)에 의해 재전송된 인터레스트가 CCN 서버(907)에서 수신되면, CCN 서버(907)는 노드(905)에게 인터레스트에 대응하는 ACK 메시지를 전송할 수 있다(930).
이후, CCN 서버(907)와 CCN 클라이언트(901) 간에 수행되는 동작은 도 8의 단계(870) 내지 단계(895)와 동일하므로 해당 부분의 설명을 참조하도록 한다.
도 10은 일실시예에 따른 컨텐츠 중심 네트워크의 각 노드에서 인터레스트를 처리하는 방법을 나타낸 도면이다.
도 10을 참조하면, 일 실시예에 따른 노드는 컨텐츠 중심 네트워크에서 인터레스트 소유자로부터 인터레스트를 전송받을 수 있다(1001). 여기서, 인터레스트 소유자는 컨텐츠 중심 네트워크에서 인터레스트를 생성하여 전송한 노드로 이해될 수 있다.
노드는 인터레스트가 수신된 인커밍 페이스가 원거리(remote)인지 여부를 판단한다(1002). 여기서, '페이스(face)'는 통신 패킷이 전달되는 경로(path)를 의미하며, '인터페이스(interface)'로도 표현할 수 있다.
단계(1002)에서 인커밍 페이스가 원거리로 판단되는 경우, 노드는 인커밍 페이스를 통해 수신된 인터레스트에 응답하여 ACK 메시지를 전송할 수 있다(1003).
단계(1002)에서 인커밍 페이스가 원거리가 아닌 근거리로 판단되면, 노드는 인터레스트에 인터레스트 소유자에 의해 생성된 복제된 넌스(duplicate Nonce)가 있는지 여부를 판단할 수 있다(1004).
단계(1004)에서 인터레스트 소유자에 의해 생성된 중복 넌스가 있다고 판단되는 경우, 노드는 인터레스트의 시퀀스 넘버(ISN)가 PIT 엔트리의 ISN과 일치하는지 여부를 판단할 수 있다(1021).
단계(1021)에서, 인터레스트의 시퀀스 넘버(ISN)가 PIT 엔트리의 ISN과 일치한다고 판단되는 경우, 노드는 단계(1001)에서 수신한 인터레스트를 인터레스트 소유자에 의해 재전송된 인터레스트로 선언할 수 있다(1022).
단계(1021)에서, 인터레스트의 시퀀스 넘버(ISN)가 PIT 엔트리의 ISN과 일치하지 않는다고 판단되는 경우, 노드는 단계(1001)에서 수신한 인터레스트를 복제되거나 중복된 인터레스트들이라고 선언할 수 있다(1023). 단계(1022) 및 단계(1023)의 선언 후에 노드는 동작을 종료할 수 있다.
단계(1004)에서, 인터레스트 소유자에 의해 생성된 중복 넌스가 없다고 판단되는 경우, 노드는 인터레스트에 있는 세그먼트들을 찾기 위해 노드의 컨텐츠 스토어를 검색할 수 있다(1005). 또한, 노드는 컨텐츠 스토어에서 인터레스트에 있는 다음 세그먼트를 검색할지 여부를 판단할 수 있다(1006).
단계(1006)에서, 컨텐츠 스토어에서 검색할 다음 세그먼트가 존재하는 것으로 판단되면, 노드는 인터레스트에서 다음 세그먼트에 일치하는 것(즉, 컨텐츠 혹은 세그먼트)가 컨텐츠 스토어에서 발견되었는지를 판단할 수 있다(1007).
단계(1007)에서, 다음 세그먼트에 일치하는 컨텐츠가 컨텐츠 스토어에서 발견된 경우, 노드는 인커밍 페이스로 컨텐츠를 전송(1008)한 다음, 단계(1006)으로 되돌아 갈 수 있다.
단계(1006)에서, 컨텐츠 스토어에서 검색할 다음 세그먼트가 존재하지 않는다고 판단되면, 노드는 노드의 인커밍 페이스가 원거리인지 여부를 판단할 수 있다(1009).
단계(1007)에서, 인터레스트에서 다음 세그먼트와 일치하는 컨텐츠가 컨텐츠 스토어에 존재하지 않는다고 판단되면, 노드는 노드의 인커밍 페이스가 원거리인지 여부를 판단할 수 있다(1009).
단계(1009)에서, 인커밍 페이스가 원거리라고 판단된 경우, 노드는 컨텐츠 스토어로부터 제공된 컨텐츠가 있는지 여부를 판단할 수 있다(1010).
단계(1010)에서, 컨텐츠 스토어로부터 제공된 컨텐츠가 있다고 판단되면, 노드는 재전송된 인터레스트들에 대한 답변을 회피하기 위해 타임 아웃 값을 가지는 false PIT 엔트리를 생성할 수 있다(1011). 또한, 노드는 인커밍 페이스로 컨텐츠를 재전송하는 것을 피하기 위해서 STALE 플래그에 의해 PIT 엔트리를 표시할 수 있다(1012). 노드는 재전송된 인터레스트들에 대한 답변을 회피하기 위해서 PIT 타이머를 시작할 수 있다(1013).
단계(1010)에서, 컨텐츠 스토어로부터 제공된 컨텐츠가 없다고 판단되면, 노드는 인터레스트의 각 세그먼트를 위한 PIT 엔트리들을 생성할 수 있다(1015). 단계(1015)에서 인터레스트의 각 세그먼트에 대해 PIT 엔트리들이 생성된 경우, 노드는 변경된(modified) 인터레스트의 OSN을 갱신할 수 있다(1016).
노드는 변경된 인터레스트를 컨텐츠 중심 네트워크에서 인접한 노드에게 전송하기 전에, 변경된 인터레스트에 대한 ACK 타이머를 시작할 수 있다(1017).
단계(1017)에서 노드가 ACK 타이머를 시작한 경우, 노드는 ACK 타이머의 만료 전에 컨텐츠 중심 네트워크에서 인접 노드로부터 ACK 메시지가 수신되었는지 여부를 판단할 수 있다(1018). 단계(1018)에서 ACK 타이머의 만료 전에 인접 노드로부터 ACK 메시지가 수신된 경우, 노드는 ACK 타이머를 정지시킬 수 있다(1019). ACK 타이머의 만료 전에 인접 노드로부터 ACK 메시지가 수신되지 않은 경우, 노드는 컨텐츠 중심 네트워크에서 인접 노드로 인터레스트를 재전송할 수 있다(1020). 단계(1019) 또는 단계(1020)의 수행 후, 노드는 동작을 종료할 수 있다.
단계(1009)에서, 인커밍 페이스가 원거리가 아니라고(즉, 근거리로) 판단된 경우, 노드는 다시 단계(1014)로 가서 이후 동작을 수행할 수 있다.
일 실시예에서 노드는 인접 노드에게 인터레스트를 재전송한 후에 ACK 타이머를 시작할 수도 있다. 이때, 노드에 의해 재전송된 인터레스트의 개수는 3개가 될 수 있다. 인터레스트가 인접 노드로 재전송되고, ACK 타이머의 만료 전에 ACK 메시지가 노드에서 수신되지 않은 경우, 노드는 컨텐츠 중심 네트워크에서 인접 노드에게 인터레스트를 재전송할 수 있다. 인터레스트는 ACK 타이머의 만료 전에 노드에서 ACK 메시지가 수신되지 않은 경우, 일 실시예에 따르면, 3번 인접 노드에게 재전송될 수 있다. ACK 메시지가 3번의 인터레스트 재전송 시도 후에도 노드에 수신되지 않은 경우, 노드는 ACK 타이머를 중지할 수 있다.
도 10의 실시예에서 기술된 다양한 동작들, 유닛들, 블록들, 또는 행위들은 제시된 순서대로, 또는 다른 순서로, 동시에 또는 이들의 조합으로 수행될 수 있다. 또한, 실시예에 따라서, 도 10에서 나열된 동작들, 유닛들, 단계들, 블록들 또는 행위들은 생략될 수 있다.
도 11은 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드가 인접 노드들부터 수신되는 컨텐츠(incoming content)를 처리하는 방법을 나타낸 도면이다.
도 11을 참조하면, 일 실시예에 따른 노드는 컨텐츠 중심 네트워크에서 인접 노드(들)로부터 컨텐츠를 수신할 수 있다(1101).
노드는 컨텐츠 중심 네트워크에서 인접 노드로부터 수신된 컨텐츠의 타입을 결정할 수 있다(1102). 단계(1102)에서 노드로부터 수신된 컨텐츠의 타입이 ACK 메시지라고 판단되면, 노드는 컨텐츠 스토어에 ACK 메시지를 저장하지 않는다(1103). 노드는 ACK 메시지에 대응하는 인터레스트를 PIT에서 검색한다(1104).
노드는 PIT에서 PIT 엔트리가 ACK 메시지에 대응하는 인터레스트와 일치하는지 여부를 판단할 수 있다(1105).
단계(1105)에서 PIT 엔트리가 일치하는 경우, 노드는 ACK 메시지의 시퀀스 넘버가 PIT의 OUT 시퀀스 넘버와 일치하는지를 판단할 수 있다(1106). 단계(1106)에서, ACK 시퀀스 넘버와 PIT의 OUT 시퀀스 넘버가 일치하는 경우, 노드는 ACK 타이머를 정지시킨다(1107).
단계(1105)에서 PIT 엔트리가 일치하지 않는 경우, 노드는 PIT에 PIT 엔트리들이 더 존재하는지 여부를 판단할 수 있다(1108). 단계(1108)에서 PIT에 PIT 엔트리들이 더 존재하는 경우, 노드는 단계(1105)를 수행할 수 있다. 단계(1108)에서 PIT에 PIT 엔트리들이 더 존재하지 않는 경우, 노드는 동작을 종료할 수 있다(1109).
단계(1106)에서, ACK 시퀀스 넘버와 PIT의 OUT 시퀀스 넘버가 일치하지 않는 경우, 노드는 PIT에 PIT 엔트리들이 존재하는지 여부를 결정할 수 있다(1108). 노드는 PIT에 PIT 엔트리들이 존재하는지 여부에 기초하여, 동작을 종료(1109)하던지, 또는 단계(1105)로 되돌아 갈 수 있다.
단계(1102)에서 노드로부터 수신된 컨텐츠의 타입이 데이터라고 판단되면, 노드는 노드의 컨텐츠 스토어에 수신된 데이터를 저장할 수 있다(1110). 노드는 수신된 컨텐츠를 인터레스트와 일치시키기 위하여 자신의 PIT의 PIT 엔트리를 검색할 수 있다(1111). 노드는 PIT 엔트리가 인터레스트와 일치하는지 여부를 결정할 수 있다(1112). 일 실시예에서, 인터레스트의 OUT 시퀀스 넘버는 PIT 엔트리와 노드에서 수신된 인터레스트 간에 일치가 존재하는지 여부를 결정하기 위해 PIT 엔트리와 매칭될 수 있다.
단계(1112)에서 PIT 엔트리와 인터레스트가 일치하는 것으로 결정되면, 노드는 PIT에서 PIT 엔트리가 STALE 플래그에 의해 표시되었는지 여부를 판단할 수 있다(1113). 단계(1113)에서 PIT 엔트리가 STALE 플래그에 의해 표시되는지 않는 경우, 노드는 PIT 엔트리의 페이스로 컨텐츠를 전송할 수 있다(1114).
또한, 노드는 PIT 엔트리의 페이스가 원거리인지 여부를 판단할 수 있다(1115). 단계(1115)에서 PIT 엔트리의 페이스가 원거리로 판단되면, 노드는 컨텐츠의 재전송을 회피하기 위해 STALE 플래그에 의해 PIT 엔트리를 표시할 수 있다(1116). 노드는, 예를 들어, 도 7 및 도 9에서 ACK 메시지가 삭제되거나 인터레스트가 삭제된 경우와 같이, 재전송된 인터레스트들에 대한 응답을 회피하기 위해 PIT 타이머를 시작할 수 있다(1117).
노드는 PIT 타이머가 만료되었는지를 판단할 수 있다(1118). 단계(1118)에서 PIT 타이머가 만료되지 않은 경우, 노드는 PIT 타이머의 만료를 대기할 수 있다.
단계(1118)에서 PIT 타이머가 만료된 경우, 노드는 PIT에서 PIT 엔트리를 제거(1119)한 후, 동작을 종료할 수 있다.
단계(1115)에서 PIT 엔트리의 페이스가 근거리로 판단되면, 노드는 PIT에서 PIT 엔트리를 제거할 수 있다(1118).
단계(1112)에서, PIT 엔트리와 인터레스트가 일치하지 않는 것으로 결정되면, 노드는 PIT에 PIT 엔트리들이 더 존재하는지 여부를 판단할 수 있다(1120). 단계(1120)에서, PIT 엔트리들이 더 존재하는 경우, 노드는 단계(1112)로 돌아가서 PIT 엔트리가 인터레스트와 일치하는지 여부를 결정할 수 있다. 단계(1120)에서, PIT에 PIT 엔트리들이 더 존재하지 않는 경우, 노드는 동작을 종료할 수 있다(1121).
도 11의 실시예에서 기술된 다양한 동작들, 유닛들, 블록들, 또는 행위들은 제시된 순서대로, 또는 다른 순서로, 동시에 또는 이들의 조합으로 수행될 수 있다. 또한, 실시예에 따라서, 도 11에서 나열된 동작들, 유닛들, 단계들, 블록들 또는 행위들은 생략될 수 있다.
도 12는 일 실시예에 따른 컨텐츠 중심 네트워크에서 노드들 간에 인터레스트가 삭제된 경우를 나타낸 도면이다.
도 12를 참조하면, 일 실시예에 따른 컨텐츠 중심 네트워크는 CCN 클라이언트(1210) 및 CCN 노드들(즉, CCN 노드(1220) 및 CCN 노드(1230)), 및 CCN 서버(1240)를 포함할 수 있다.
CCN 클라이언트(910)는 컨텐츠 중심 네트워크의 각 노드에게 인터레스트의 신뢰성 있는 전달을 보장하는 일 실시예에 따른 ACK 메커니즘과 UDP(User Datagram Protocol)의 접속을 통해 100MB 파일을 요청할 수 있다.
도 12에서, 인터레스트는 CCN 노드(1220) 및 CCN 노드(1230) 간에 일정 삭제 확률(drop probability)로 삭제될 수 있다. 이때, CCN 노드(1220) 및 CCN 노드(1230) 간에는 인터레스트만이 삭제되고, 컨텐츠은 삭제되지 않는다.
인터레스트의 삭제 확률이 0에서 0.5로 변화되면, 노드는 해당 처리량을 측정할 수 있다. 도 12의 설정에서 ACK 메커니즘이 사용되지 않고, 노드가 전달할 수 있는 최대 중복 인터레스트는 3에서 10000으로 증가될 수 있다. 여기서, 숫자 10000은 노드들에게 전달되는 유사한 인터레스트들의 다수 허용하기 위해 임의로 선택된 값일 수 있다.
도 13은 일 실시예에 따라 다수의 CCN 클라이언드들을 포함하는 컨텐츠 중심 네트워크에서 두 노드들 중 어느 하나에서 인터레스트가 삭제된 경우를 나타낸 도면이다.
도 13을 참조하면, 일 실시예에 따른 컨텐츠 중심 네트워크는 다수의 CCN 클라이언트 노드들(1310), 두 개의 CCN 노드들(CCN 노드(1320) 및 CCN 노드(1330)) 및 CCN 서버(1340)를 포함할 수 있다.
일 실시예에 따른 ACK 메커니즘은 동일한 컨텐츠를 동시에 요청하는 다수의 클라이언트들에 대하여 공정성(fairness)을 유지할 수 있다. 도 13의 상황에서 다양한 삭제 확률에 대한 행동이 분석되고, 이에 대응되는 결과는 도 16에 도시될 수 있다. 일 실시예에서 인터레스트에 대한 서로 다른 삭제 확률들에 대하여 서로 다른 클라이언트들에 대하여 공정성이 유지되는 것을 도 16을 통해 관찰할 수 있다.
도 14는 일 실시예에 따라 두 개의 모바일 디바이스들 중 어느 하나의 모바일 디바이스와 액세스 포인트 간에 전송되는 인터레스트가 삭제되는 경우를 나타낸 도면이다.
도 14를 참조하면, 두 개의 모바일 기기들(1410, 1430)이 액세스 포인트(1450)와 연결되어 있는 것을 볼 수 있다. 모바일 기기들(1410, 1430) 중 하나는 CCN 클라이언트(1410)이고, 다른 하나는 CCN 서버(1430)일 수 있다. 일정 확률로의 인터레스트 삭제는 CCN 서버(1430)의 인터페이스에서 수행될 수 있다.
이러한 상황에서 일 실시예에 따른 ACK 메커니즘을 사용한 경우 및 ACK 메커니즘을 사용하지 않은 경우(비-ACK 메커니즘)들 각각에 대한 테스트 결과들은 도 17에 도시된다.
상기 두 경우들은 삭제된 인터레스트가 없는 경우에 거의 동일한 방식으로 수행되므로, ACK 메시지 전송으로 인해 발생하는 오버헤드(overhead)를 확인할 수 있지만, 처리량 측면에서 유리하다.
예를 들어, 인터레스트의 60%가 삭제된 경우, 일 실시예에 따른 ACK 메커니즘에 따르면, 인터레스트의 삭제가 없는 경우의 처리율에 비해 19.52%의 처리율을 제공할 수 있다(도 17 참조). 도 17에 도시된 바와 같이 인터레스트들의 20%만이 삭제된 경우, 비-ACK 메커니즘은 이상적인 무삭제 처리율의 20.5%를 제공할 수 있다. 또한, 비-ACK 메커니즘은 인터레스트들이 20% 이상 삭제된 경우, 파일 다운로드 완료에 실패할 수 있다.
PIT 엔트리에 대한 STALE 플래그 및 PIT 엔트리 타이머의 시작의 도입 결과, 필요한 메모리의 전반적인 증가가 있을 수 있다. ACK 메커니즘에서의 높은 처리율을 고려할 때 메모리의 증가는 수용할만하다.
도 15은 도 12에 도시된 경우에 대하여 일실시예에 따른 ACK 메커니즘을 사용한 경우 및 ACK 메커니즘을 사용하지 않은 경우의 처리율 비교 결과를 나타낸 그래프이다.
도 15에서는 각 노드에서 세 개의 중복 인터레스트들이 Non-ACK 메커니즘을 통해 전송되도록 허용할 수 있다.
도 12에 도시된 상황으로부터 획득된 결과는 컨텐츠 중심 네트워크에서 일 실시예에 따른 ACK 메커니즘 및 두 개의 다른 ACK 메커니즘 간에 비교될 수 있다.
제1 Non-ACK 메커니즘에서 최대 중복 인터레스트는 3 개이고, 제2 Non-ACK 메커니즘에서 최대 중복 인터레스트는 10000개일 수 있다.
일 실시예에 따른 ACK 메커니즘에 대한 처리율을 나타내는 그래프 A에서 0.5의 인터레스트 삭제 확률, 및 200Mbps의 처리율이 달성된 것을 관찰할 수 있다. 반면에, 0.3의 인터레스트 삭제 확률의 최대 중복 인터레스트 개수 3개를 가지는 Non-ACK 메커니즘에 대한 그래프 B에서 처리율은 그래프에 나타난 바와 같이 O으로 내려간다.
또한, 최대 중복 인터레스트 개수 10000개를 가지는 Non-ACK 메커니즘에 대한 그래프 C에서 처리율은 그래프에 보여지는 바와 같이 0.5의 인터레스트 삭제 확률로 매우 낮음을 알 수 있다.
도 16는 노드들의 개수 증가를 통해 확률을 변화시키는 도 13에 도시된 경우에 대한 처리율 비교 결과를 나타낸 그래프이다.
도 16에 도시된 그래프로부터, 도 13에 도시된 모든 CCN 클라이언트들이 서로 다른 인터레스트 삭제 확률들(drop probabiliites)에 대하여 유사한 처리량을 달성해 왔음을 관찰할 수 있다. 그래프에 나타난 바와 같이, 인터레스트의 삭제 확률 제로(0)부터 인터레스트 삭제 확률(0.4)까지에 대응되는 처리율은 모든 CCN 클라이언트들에 대하여 선형일 수 있다. 처리율은 모든 CCN 클라이언트들에 대하여 동일하게 유지될 수 있다.
도 16에서 인터레스트에 대한 서로 다른 삭제 확률들에 대하여도 서로 다른 클라이언트들에서 공정성이 유지됨을 알 수 있다.
도 17은 도 14에 도시된 경우에 대하여 일실시예에 따른 ACK 메커니즘을 사용한 경우 및 ACK 메커니즘을 사용하지 않은 경우의 처리율 비교 결과를 나타낸 그래프이다.
도 17에서, 그래프 A는 일 실시예에 따른 ACK 메커니즘에 대한 처리율을 나타내고, 그래프 B는 Non-ACK 메커니즘에 대한 처리율을 나타낸다.
그래프 A로부터, ACK 메커니즘을 사용하여 0.6의 삭제 확률으로 19.25%의 처리율이 달성되는 반면에, 그래프 B에서 Non-ACK 메커니즘을 사용하여 0.2의 삭제 확률로 20%의 처리율이 달성되는 것을 볼 수 있다. 그래프 B에서, 삭제 확률이 0.2를 초과하는 경우 처리율이 달성되지 않는 것을 관찰할 수 있다.
도 18은 일 실시예에 따른 노드의 블록도이다.
도 18을 참조하면, 일 실시예에 따른 노드(1800)는 수신부(1810), 처리부(1820), 전송부(1830)를 포함한다. 노드(1800)는 컨텐츠 스토어(CS)(1840), PIT(1850), 및 FIB(1860)를 더 포함할 수 있다.
수신부(1810)는 컨텐츠 중심 네트워크에서 이전 노드로부터 컨텐츠를 요청하는 제1 인터레스트를 수신한다.
처리부(1820)는 제1 인터레스트에 응답하여, 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지를 생성한다.
전송부(1830)는 이전 노드에게 제1 ACK 메시지를 전송한다.
컨텐츠 스토어(CS)(1840)는 컨텐츠를 저장한다. 처리부(1820)는 전송부(1830)가 제1 ACK 메시지를 전송한 후, 제1 인터레스트와 관련된 컨텐츠가 컨텐츠 스토어(1840)에 존재하지 않는 경우에 제2 인터레스트를 생성할 수 있다. 처리부(1820)는 전송부(1830)를 통해 다음 노드에게 제2 인터레스트를 전송할 수 있다.
PIT(1850)는 PIT 엔트리들을 포함한다. 처리부(1820)는 PIT(1850)에 제1 인터레스트와 관련된 PIT 엔트리를 생성하고, PIT 엔트리에 제1 인터레스트와 관련된 시퀀스 넘버를 저장할 수 있다.
처리부(1820)는 PIT(1850) 내에서 검새하고자 하는 엔트리가 존재하지 않는 경우, FIB(Forwarding Information Base)(1860)를 검색할 수 있다. 이때, 처리부(1820)는 예를 들어, 최장 프리픽스 매칭(longest prefix matching)을 기초로 프리픽스와 FIB(1860)의 엔트리에 등록된 프리픽스에 대한 정보에 대한 검색을 수행할 수 있다.
처리부(1820)는 제2 인터레스트를 생성하여 다음 노드(next node)에게 전송함에 따라 ACK 타이머를 시작하고, 수신부(1810)를 통해 다음 노드로부터 제2 인터레스트에 응답한 제2 ACK 메시지를 수신한 경우에 ACK 타이머를 정지할 수 있다.
처리부(1820)는 제2 ACK 메시지가 ACK 타이머의 만료 시까지 수신되지 않는 경우, 다음 노드에게 제2 인터레스트를 재전송하고, ACK 타이머를 일정한 백 오프 타임 아웃 값으로 다시 카운트를 시작할 수 있다.
처리부(1820)는 다음 노드로부터 컨텐츠를 수신함에 따라 노드의 PIT 엔트리를 STALE 플래그에 의해 표시하고, PIT 엔트리에 대응하는 PIT 타이머를 시작하며, PIT 타이머가 만료되면 노드의 전파 인터레스트 테이블(PIT)에서 PIT 엔트리를 제거할 수 있다.
도 19는 일 실시예에 따른 컨텐츠 중심 네트워크에서 인터레스트의 전송을 제어하는 방법 및 시스템을 구현하는 컴퓨팅 환경을 설명하기 위한 도면이다.
도시된 바와 같이 컴퓨팅 환경(1900)은 적어도 하나의 처리부(Processing Unit)(1910), 메모리(Memory)(1920), 저장부(Storage)(1930), 복수의 네트워킹 장치들(Networking Devices)(1950) 및 복수의 입출력 장치들(I/O Devices)(1940)를 포함한다.
컴퓨팅 환경(1900)은 다수의 동종 및/또는 이종의 코어, 다른 종류들의 다수의 CPU들, 특정 미디어 및 다른 가속기들로 구성될 수 있다.
처리부(1910)는 제어부(Control Unit)(1913), 및 산술 논리 유닛(Arithmetic Logic Unit; ALU)(1916)을 포함할 수 있다.
처리부(1910)는 알고리즘의 명령들을 처리할 수 있다.
처리부(1910)는 그 처리를 수행하기 위해서 제어부(1913)로부터 명령들을 수신한다. 또한, 명령들의 실행에 관련된 논리 및 산술 연산들은 산술 논리 유닛(ALU)(1916)의 도움으로 계산된다.
처리부(1910)는 단수 또는 복수 일 수 있으며, 단일 칩 또는 복수 개의 칩들에 위치할 수 있다.
구현을 위해 요구되는 명령들 및 코드들은 메모리(1920) 또는 저장부(1930) 중 어느 하나 또는 둘 다에 저장될 수 있다. 실행 시에, 처리부(1910)는 명령들을 메모리(1920) 및/또는 저장부(1930)로부터 가져올 수 있고, 가져온 명령들을 실행할 수 있다.
하드웨어 구현의 경우에 다양한 네트워킹 장치들(1950) 또는 외부 I/O 장치들(1940)은 네트워킹부 및 I/O 장치부를 통한 구현을 지원하는 컴퓨팅 환경에 연결될 수 있다. 실시예들은 적어도 하나의 하드웨어 장치에서 구동하고, 구성 요소들을 제어하기 위한 네트워크 관리 기능들을 수행하는 적어도 하나의 소프트웨어 프로그램을 통해 구현될 수 있다.
일 실시예에서 도시된 구성 요소들은 하드웨어 장치들 중 적어도 하나의 하드웨어 장치 및 소프트웨어 모듈의 조합이 될 수 있는 블록들을 포함할 수 있다.
이상에서 설명된 장치는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성 요소는, 예를 들어, 프로세서, 컨트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성 요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
1800: 노드
1810: 수신부
1820: 처리부
1830: 전송부
1840: 컨텐츠 스토어(CS)
1850: PIT(Propagating Interest Table)
1860: FIB(Forwarding Information Base)

Claims (22)

  1. 노드의 통신 방법에 있어서,
    컨텐츠 중심 네트워크에서 이전 노드(previous node)로부터 컨텐츠를 요청하는 제1 인터레스트(Interest)를 수신하는 단계;
    상기 제1 인터레스트에 응답하여, 상기 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지(ACKnowledgement message)를 생성하는 단계;
    상기 이전 노드에게 상기 제1 ACK 메시지를 전송하는 단계;
    상기 제1 인터레스트와 관련된 컨텐츠가 상기 노드의 컨텐츠 스토어에 존재하는지 여부를 판단하는 단계;
    상기 제1 인터레스트와 관련된 컨텐츠가 상기 노드의 컨텐츠 스토어에 존재하지 않는다는 판단에 따라, 제2 인터레스트를 생성하는 단계; 및
    다음 노드(next node)에게 상기 제2 인터레스트를 전송하는 단계
    를 포함하는, 노드의 통신 방법.
  2. 제1항에 있어서,
    상기 제1 ACK 메시지를 생성하는 단계는
    상기 제1 인터레스트와 관련된 고유의 시퀀스 넘버에 기초하여 상기 제1 ACK 메시지를 생성하는 단계
    를 포함하는, 노드의 통신 방법.
  3. 제1항에 있어서,
    상기 제1 ACK 메시지를 전송한 후, 상기 노드의 PIT(Propagating Interest Table)에 상기 제1 인터레스트와 관련된 PIT 엔트리를 생성하는 단계; 및
    상기 PIT 엔트리에 상기 제1 인터레스트와 관련된 시퀀스 넘버를 저장하는 단계
    를 더 포함하는, 노드의 통신 방법.
  4. 제1항에 있어서,
    상기 다음 노드(next node)에게 상기 제2 인터레스트를 전송함에 따라, ACK 타이머(acknowledgement timer)를 시작하는 단계; 및
    상기 다음 노드로부터 상기 제2 인터레스트에 응답한 제2 ACK 메시지를 수신한 경우, 상기 ACK 타이머를 정지하는 단계
    를 더 포함하는, 노드의 통신 방법.
  5. 제1항에 있어서,
    상기 제2 인터레스트를 생성하는 단계는
    넌스(Nonce)를 가지는 상기 제2 인터레스트를 생성하는 단계
    를 포함하는, 노드의 통신 방법.
  6. 제1항에 있어서,
    상기 제2 인터레스트는 파라미터들을 포함하고,
    상기 파라미터들은
    상기 노드에서 상기 제2 인터레스트에 대응하는 컨텐츠의 이용 가능성(availability)에 기초하여 변경되는, 노드의 통신 방법.
  7. 제4항에 있어서,
    상기 제2 ACK 메시지가 상기 ACK 타이머의 만료 시까지 수신되지 않는 경우, 상기 다음 노드에게 상기 제2 인터레스트를 재전송하는 단계
    를 더 포함하는, 노드의 통신 방법.
  8. 제7항에 있어서,
    상기 제2 인터레스트를 재전송함에 따라, 상기 ACK 타이머를 일정한 백 오프 타임 아웃 값(back-off timeout value)으로 다시 시작하는 단계
    를 더 포함하는, 노드의 통신 방법.
  9. 제1항에 있어서,
    상기 제2 인터레스트는
    상기 제2 인터레스트를 식별할 수 있는 고유의 시퀀스 넘버와 관련되고,
    상기 고유의 시퀀스 넘버는
    IN 시퀀스 넘버(IN Sequence Number; ISN) 및 OUT 시퀀스 넘버(OUT Sequence Number; OSN)를 포함하는, 노드의 통신 방법.
  10. 제9항에 있어서,
    상기 제1 인터레스트가 수신되면, 상기 노드의 PIT에 상기 IN 시퀀스 넘버를 저장하는 단계
    를 더 포함하는, 노드의 통신 방법.
  11. 제9항에 있어서,
    상기 제2 인터레스트를 상기 다음 노드에게 전송할 때, 상기 노드의 PIT에 상기 OUT 시퀀스 넘버를 저장하는 단계
    를 더 포함하는, 노드의 통신 방법.
  12. 제1항에 있어서,
    상기 제1 ACK 메시지를 전송하는 단계는
    상기 제1 인터레스트가 수신된 인커밍 페이스(incoming face)가 원거리(remote)인지 여부를 판단하는 단계; 및
    상기 인커밍 페이스가 원거리로 판단되면, 상기 제1 인터레스트에 응답하여 상기 제1 ACK 메시지를 전송하는 단계
    를 포함하는, 노드의 통신 방법.
  13. 제12항에 있어서,
    상기 인커밍 페이스가 근거리로 판단되면, 상기 제1 인터레스트에 상기 이전 노드에 의해 생성된 복제된 넌스(duplicated Nonce)가 있는지 여부를 판단하는 단계; 및
    상기 복제된 넌스가 있다고 판단되는 경우, 상기 제1 인터레스트의 IN 시퀀스 넘버가 상기 노드의 PIT에 포함된 엔트리(entry)의 IN 시퀀스 넘버와 일치하는지 여부에 기초하여, 상기 제1 인터레스트를 상기 이전 노드에 의해 재전송된 인터레스트로 선언하는 단계
    를 더 포함하는, 노드의 통신 방법.
  14. 제1항에 있어서,
    상기 다음 노드로부터 컨텐츠를 수신함에 따라 상기 노드의 PIT 엔트리를 STALE 플래그에 의해 표시(mark)하는 단계;
    상기 PIT 엔트리에 대응하는 PIT 타이머를 시작하는 단계; 및
    상기 PIT 타이머가 만료되는 경우, 상기 노드의 PIT에서 상기 PIT 엔트리를 제거하는 단계
    를 더 포함하는, 노드의 통신 방법.
  15. 제14항에 있어서,
    상기 PIT 타이머의 값은
    상기 노드의 Round Trip Time(RTT)에 기초하여 계산되는, 노드의 통신 방법.
  16. 제1항 내지 제15항 중에서 어느 하나의 항의 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
  17. 노드에 있어서,
    컨텐츠 중심 네트워크에서 이전 노드(previous node)로부터 컨텐츠를 요청하는 제1 인터레스트(Interest)를 수신하고,
    상기 제1 인터레스트에 응답하여, 상기 제1 인터레스트의 수신을 나타내는 제1 ACK 메시지(ACKnowledgement message)를 생성하는 처리하고,
    상기 이전 노드에게 상기 제1 ACK 메시지를 전송하고,
    상기 제1 인터레스트와 관련된 컨텐츠가 상기 노드의 컨텐츠 스토어에 존재하는지 여부를 판단하고,
    상기 제1 인터레스트와 관련된 컨텐츠가 상기 노드의 컨텐츠 스토어에 존재하지 않는다는 판단에 따라, 제2 인터레스트를 생성하며,
    다음 노드(next node)에게 상기 제2 인터레스트를 전송하는,
    적어도 하나의 프로세서
    를 포함하는, 노드.
  18. 제17항에 있어서,
    PIT 엔트리들을 포함하는 PIT를 더 포함하고,
    상기 프로세서는
    상기 PIT에 상기 제1 인터레스트와 관련된 PIT 엔트리를 생성하고, 상기 PIT 엔트리에 상기 제1 인터레스트와 관련된 시퀀스 넘버를 저장하는, 노드.
  19. 삭제
  20. 제17항에 있어서,
    상기 프로세서는
    상기 다음 노드(next node)에게 상기 제2 인터레스트를 전송함에 따라 ACK 타이머(acknowledgement timer)를 시작하고,
    상기 다음 노드로부터 상기 제2 인터레스트에 응답한 제2 ACK 메시지를 수신한 경우에 상기 ACK 타이머를 정지하는, 노드.
  21. 제20항에 있어서,
    상기 프로세서는
    상기 제2 ACK 메시지가 상기 ACK 타이머의 만료 시까지 수신되지 않는 경우, 상기 다음 노드에게 상기 제2 인터레스트를 재전송하고, 상기 ACK 타이머를 일정한 백 오프 타임 아웃 값(back-off timeout value)으로 다시 시작하는, 노드.
  22. 제20항에 있어서,
    상기 프로세서는
    상기 다음 노드로부터 컨텐츠를 수신함에 따라 상기 노드의 PIT 엔트리를 STALE 플래그에 의해 표시(mark)하고, 상기 PIT 엔트리에 대응하는 PIT 타이머를 시작하며, 상기 PIT 타이머가 만료되면 상기 노드의 전파 인터레스트 테이블(PIT)에서 상기 PIT 엔트리를 제거하는, 노드.
KR1020150038852A 2014-07-18 2015-03-20 컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드 KR102337119B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/803,323 US10305640B2 (en) 2014-07-18 2015-07-20 Communication method of node in content centric network (CCN) and the node

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN3541/CHE/2014 2014-07-18
IN3541CH2014 2014-07-18

Publications (2)

Publication Number Publication Date
KR20160010293A KR20160010293A (ko) 2016-01-27
KR102337119B1 true KR102337119B1 (ko) 2021-12-09

Family

ID=78865943

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150038852A KR102337119B1 (ko) 2014-07-18 2015-03-20 컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드

Country Status (1)

Country Link
KR (1) KR102337119B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102218325B1 (ko) * 2019-10-29 2021-02-22 숭실대학교산학협력단 정보 중심 네트워크 환경에서 생산자 이동성 관리 방법, 이를 수행하기 위한 기록 매체 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040100964A1 (en) * 2002-11-27 2004-05-27 Robotham Robert E. System and method for detecting lost messages transmitted between modules in a communication device
US20070274267A1 (en) * 1992-03-05 2007-11-29 Qualcomm Incorporated Apparatus and method for reducing message collision between mobile stations simultaneously accessing a base station in a cdma cellular communications system
US20130060962A1 (en) * 2011-09-01 2013-03-07 Futurewei Technologies, Inc. Generalized Dual-Mode Data Forwarding Plane for Information-Centric Network
US20130282860A1 (en) * 2012-04-20 2013-10-24 Futurewei Technologies, Inc. Name-Based Neighbor Discovery and Multi-Hop Service Discovery in Information-Centric Networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070274267A1 (en) * 1992-03-05 2007-11-29 Qualcomm Incorporated Apparatus and method for reducing message collision between mobile stations simultaneously accessing a base station in a cdma cellular communications system
US20040100964A1 (en) * 2002-11-27 2004-05-27 Robotham Robert E. System and method for detecting lost messages transmitted between modules in a communication device
US20130060962A1 (en) * 2011-09-01 2013-03-07 Futurewei Technologies, Inc. Generalized Dual-Mode Data Forwarding Plane for Information-Centric Network
US20130282860A1 (en) * 2012-04-20 2013-10-24 Futurewei Technologies, Inc. Name-Based Neighbor Discovery and Multi-Hop Service Discovery in Information-Centric Networks

Also Published As

Publication number Publication date
KR20160010293A (ko) 2016-01-27

Similar Documents

Publication Publication Date Title
CN107925674B (zh) 在内容为中心的网络(ccn)中推送数据的方法和装置
US9014001B2 (en) Transmission node and reception node in content centric network, and communication method of transmission node and reception node
JP6282293B2 (ja) ネットワーク・パラメータに基づく、完全性点検および選択的な重複排除を実施する方法、コンピュータ・システムおよびコンピュータ・プログラム
CN106537880B (zh) 在信息中心网络架构中缓存数据
US20200228433A1 (en) Computer-readable recording medium including monitoring program, programmable device, and monitoring method
US10798199B2 (en) Network traffic accelerator
US9590923B2 (en) Reliable link layer for control links between network controllers and switches
CN108199925B (zh) 一种数据发送方法、接收方法及装置
US8364775B2 (en) High availability management system for stateless components in a distributed master-slave component topology
US9003053B2 (en) Message acceleration
US20160182680A1 (en) Interest acknowledgements for information centric networking
KR20140009931A (ko) 컨텐츠 이름 기반의 컨텐츠 중심 네트워크에서 컨텐츠 및 실시간 스트리밍 컨텐츠 제공을 위한 컨텐츠 요청자 및 컨텐츠 제공자의 통신 방법
EP3176994B1 (en) Explicit content deletion commands in a content centric network
KR102160494B1 (ko) 네트워크 노드, 엔드포인트 노드 및 관심 메시지 수신 방법
KR20170031618A (ko) 콘텐트 중심 네트워크에서의 네트워크 명명된 단편들
KR20160027910A (ko) Ccn 파이프라인 스트림의 신뢰도있는 컨텐츠 교환 방법 및 시스템
JP6885736B2 (ja) 不均一ネットワークにまたがる統合されたデータ・ネットワーキング
JP2017063412A (ja) ネットワーク名称付きフラグメントによるフロー制御
JP2010213150A (ja) 送信装置、大容量ファイル配信システム、同システムにおけるファィル再送制御方法、再送制御プログラム
US10305640B2 (en) Communication method of node in content centric network (CCN) and the node
JP6800375B2 (ja) 通信装置、通信方法及び通信プログラム
KR102337119B1 (ko) 컨텐츠 중심 네트워크에서 노드의 통신 방법 및 그 노드
Caini et al. DTN Bundle Layer over TCP: Retransmission Algorithms in the Presence of Channel Disruptions.
BR102013015341B1 (pt) sistema, método e meio legível por computador para utilização com um dispositivo de usuário e um primeiro servidor
WO2018007349A1 (en) Systems and methods for transmitting and receiving interest messages

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right