KR102160494B1 - 네트워크 노드, 엔드포인트 노드 및 관심 메시지 수신 방법 - Google Patents

네트워크 노드, 엔드포인트 노드 및 관심 메시지 수신 방법 Download PDF

Info

Publication number
KR102160494B1
KR102160494B1 KR1020187035017A KR20187035017A KR102160494B1 KR 102160494 B1 KR102160494 B1 KR 102160494B1 KR 1020187035017 A KR1020187035017 A KR 1020187035017A KR 20187035017 A KR20187035017 A KR 20187035017A KR 102160494 B1 KR102160494 B1 KR 102160494B1
Authority
KR
South Korea
Prior art keywords
bid
node
message
interest
value
Prior art date
Application number
KR1020187035017A
Other languages
English (en)
Other versions
KR20190002670A (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 KR20190002670A publication Critical patent/KR20190002670A/ko
Application granted granted Critical
Publication of KR102160494B1 publication Critical patent/KR102160494B1/ko

Links

Images

Classifications

    • H04L67/2852
    • 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
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 적어도 하나의 통신 인터페이스, 적어도 하나의 메모리, 및 적어도 하나의 프로세서를 포함하는 네트워크 노드(15)에 관한 것이다. 적어도 하나의 프로세서는, 상기 적어도 하나의 통신 인터페이스를 통해 다운스트림 노드(14)로부터 관심 메시지를 수신하고 - 상기 관심 메시지는 요청된 데이터 객체의 이름을 포함함 - ; 상기 요청된 데이터 객체를 상기 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하고; 입찰 값을 계산하고; 상기 관심 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 업스트림 노드(16)에 전달하고 - 상기 관심 메시지는 적어도 입찰할지 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - ; 상기 업스트림 노드로부터 상기 요청된 데이터 객체를 포함하는 데이터 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 수신하고; 적어도 상기 데이터 메시지로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하고; 상기 네트워크 노드가 상기 입찰을 낙찰받았다면 상기 데이터 객체를 상기 적어도 하나의 메모리에 저장하고; 상기 데이터 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 상기 다운스트림 노드에 전달하도록 구성된다.

Description

네트워크 노드, 엔드포인트 노드 및 관심 메시지 수신 방법
본 발명은 네트워크 노드에 관한 것이다.
본 발명은 또한 관심 메시지를 수신하는 방법에 관한 것으로, 특히 관심 메시지 및 데이터 메시지를 수신하는 방법에 관한 것이다.
본 발명은 또한 HTTP 요청을 수신하는 방법에 관한 것으로, 특히 HTTP 요청 및 응답 메시지를 수신하는 방법에 관한 것이다.
본 발명은 또한 컴퓨터 시스템으로 하여금 그러한 방법을 수행할 수 있게 하는 컴퓨터 프로그램 제품에 관한 것이다.
본 발명은 또한 관심 메시지를 송신하기 위한 엔드포인트 노드(endpoint node)에 관한 것이다.
정보 중심 네트워킹(Information-Centric Networking: ICN)은 호스트 지향 시스템으로부터 데이터 지향 시스템으로 현재 인터넷 인프라구조를 발전시키는 것을 목표로 하는 새로운 네트워킹 패러다임이다. IP 주소를 통해 엔드포인트(endpoints)를 어드레싱하는 대신, ICN에서는 데이터 그 자체가 어드레싱된다. 데이터를 청크(chunks)로 나누어 각각의 청크에 고유하고 계층적인 이름을 제공함으로써, ICN은 소정의 이름의 데이터가 어디에 위치/저장되어 있는지를 걱정할 필요없이, 클라이언트로 하여금 그 소정의 이름의 데이터 객체를 네트워크에 요청하게 할 수 있다. 데이터 명명(naming data)의 이점 중 하나는, 스위치 또는 라우터와 같은 각 중간 네트워크 노드가 자신을 통과하는 데이터 패킷을 캐싱할 능력을 갖는다는 것이다. 이러한 방식으로, 새로운 소비자가 이미 네트워크에 캐싱되어 있는 데이터를 요청하면, 그 요청은 네트워크를 통해 그 데이터의 최초 생산자를 향해 이동할 필요는 없지만, 대신에 그 데이터의 사본을 보유하고 있는 중간 네트워크 노드 중 하나에 의해 서빙될 수 있다.
현재의 ICN 아키텍처는 그의 코어에 관심 메시지 및 데이터 메시지라는 두 개의 기본 타입의 메시지를 갖는다. 애플리케이션이 특정 데이터 객체를 검색하기를 원할 경우, 그 애플리케이션은 그 데이터 객체에 대한 관심 메시지를 발송한다. 이 관심 메시지의 가장 중요한 부분은 객체의 이름이거나 그 객체의 전체 이름이 알려져 있지 않은 경우 프리픽스(prefix)이다.
이러한 ICN 아키텍처의 예는 ACM SIGCOMM Computer Communication Review 44 Issue 3, 2014 년 7 월, 66-73 페이지에서 Zhang 등에 의한 "명명된 데이터 네트워킹"에서 기술된 명명된 데이터 네트워킹(Named Data Networking: NDN)이다. 네트워크 노드가 NDN에서 관심 메시지를 수신하면, 그 네트워크 노드는 우선 관심 메시지 내의 이름과 매칭되는 명명된 데이터 객체를 그의 로컬 캐시가 포함하는지 여부를 검사한다. 해당 명명된 데이터 객체가 발견되면, 그것은 데이터 메시지 내에 래핑되어(wrapped), 관심 메시지가 수신된 인터페이스를 통해 되 전송된다.
객체가 캐싱되어 있지 않은 경우, 다음 단계는 요청된 이름이 소위 미완료된 관심 테이블(Pending Interest Table: PIT) 내에 이미 존재하고 있는지 여부를 검사하는 것이다. PIT는 기존의 미완료된 데이터 객체 요청 및 그 데이터 객체가 요청되었된 해당 인터페이스의 리스트를 유지하고 있다. 데이터 메시지가 입력되면, 그 데이터 메시지는 PIT에 따라서 해당 이름에 대해 처리되지 않은 관심(unsatisfied interest)을 가진 모든 인터페이스에게로 전달된다. PIT 내의 엔트리는 그 후 삭제된다. 인커밍 관심 메시지(incoming interest message)의 이름이 PIT 내에 열거되어 있지 않으면, 그 관심 메시지는 그 메시지가 수신되었던 인터페이스와 함께 추가된다. 그 관심 메시지는, 다른 노드에서 요청된 데이터의 검색시에, 포워딩 정보 베이스(Forwarding Information Base: FIB) 및 전략 계층(Strategy layer)에 따라 하나 이상의 아웃고잉 인터페이스(outgoing interfaces) 상으로 전달된다.
ICN에서의 캐싱은 소비자가 경험하는 대기 시간을 감소시키는 동시에, 네트워크 트래픽을 감소시킬 수 있다. 그러나, (중간 캐싱 노드 또는 최초 생산자일 수 있는) 컨텐츠 소스로부터 소비자로의 경로 상의 임의의 노드가 컨텐츠를 캐싱할 수 있으므로, 캐싱 노드의 캐싱 결정 관리는 그러한 네트워크 내 캐싱 용량의 비효율적인 사용과 트래픽 및 대기 시간의 측면에서의 최적화되지 못한 성능을 회피하는 데 필수적이다. 신중하게 관리될 필요가 있는 중요한 캐싱 결정은 다음과 같다: 즉, 1. 특정 캐시가 어떤 데이터 항목을 저장해야 하는지와, 2. 캐시 저장소가 꽉 찼으면 어떤 데이터 항목이 대체되어야 하는지이다.
노드들이 ICN의 표준 접근법인 "로컬" 정보(즉, 요청되는 항목, 캐싱되는 항목, 요청 빈도 등과 같이 각각의 캐싱 노드 자체에서 이용 가능한 정보)에만 기초하여 서로 독립적으로 그러한 결정을 행할 경우에 비효율적인 캐싱 결정이 발생할 가능성이 더 높다는 것은 분명해 보인다. 그러나, "글로벌" 픽처의 일부 수준(예를 들어, 새롭게 수신된 항목이 이미 이웃 캐시에 캐싱되어 있는가?는 캐시가 현재 저장하고 있는 데이터가 새롭게 수신한 항목보다 많이 사용된다라는 것인가?)을 고려하여 정보 중심 네트워크(ICN)에서 효율적인 캐싱을 결정할 필요가 있다.
제 23 회 컴퓨터 통신 및 네트워크 국제 회의(2014)에서 IEEE에 의해 발표된 Zhongxing Ming, Mingwei Xu 및 Dan Wang에 의한 "정보 중심 네트워킹에서의 연령 기반의 협력적인 캐싱"은 만료 시간을 나타내는 연령 필드와 함께 항목을 캐시에 저장하는 방법을 개시하고 있다. 만료 시간이 경과하면, 그 항목은 다른 항목으로 대체된다. 캐시 내에 항목과 함께 저장된 연령 필드(age field)의 값은 그 항목을 포함하는 수신된 데이터 메시지의 연령 필드를 기반으로 한다. 항목의 연령은 항목의 인기도에 기반한 경로를 따라 제 1 노드에 의해 설정된다. 경로를 따르는 각 후속 노드는 데이터 메시지의 연령을 증가시킨 후(예를 들어, 두 배로 증가시킨 후), 그 데이터 메시지를 전달한다. 결과적으로, 가장자리의 캐시는 주로 인기있는 항목을 포함하는 반면, 가장자리에서 멀리 떨어진 캐시는 또한 덜 인기있는 항목을 포함한다. 이 방법의 장점은 라우터 간에 (별도의) 시그널링 메시지를 필요로 하지 않다는 것이다.
이 방법의 결점은, 특정 인기 아이템이 가장자리 및 가장자리로부터 더 멀리 떨어진 하나 이상의 노드 모두에서 캐싱될 가능성이 있는 반면, 특정의 덜 인기있는 항목은 전혀 캐싱될 가능성이 없기 때문에 캐시가 효율적으로 사용되지 않는다는 것이다.
캐시의 사용은 다른 타입의 네트워크에서도 알려져 있는데, 이는 각 요청이 완전한 네트워크를 통해 그 요청을 처리할 수 있는 서버로 이동해야 하는 것을 방지할 목적으로 캐시를 사용하는 것이 유리하기 때문이다. 인기있는 컨텐츠는 캐시에 보통 저장되어, 대역폭을 절약하고, 서버 부하를 감소시키며, 클라이언트 응답 시간을 향상시킨다.
예를 들어, 네트워크 서비스 제공자(Network Service Provider: NSP)는 자신의 네트워크에서 캐싱 프록시를 사용하여 자신의 네트워크를 보다 효율적으로 이용할 수 있다. 캐싱 프록시는, 컨텐츠를 캐싱하고 HTTP 요청 및 응답을 위한 중간 네트워크 노드로 기능할 수 있는 프록시 서버이다. 예를 들어, 컨텐츠 네트워크의 경우, 다수의 캐싱 프록시는 사용자 에이전트(User Agent: UA)와 컨텐츠 서비스 제공자(Content Service Provider: CSP) 사이의 다양한 지점에 상주할 수 있다. 주요 차이점은, ICN 컨텍스트 내에서 데이터가 어드레싱되는 반면, HTTP에서는 데이터의 위치가 어드레싱된다는 점이다.
HTTP 요청 및 응답 모두가 이들 캐싱 프록시를 통해 흐르기 때문에, 각 서버는 요청된 데이터 객체를 캐싱할지 여부를 자체적으로 결정한다. 이러한 결정은 로컬 정책(local policies)에 기반할 수 있다. 캐싱 프록시는, 예를 들어, 자주 요청되는 인기 항목만을 캐싱하거나, HTTP 헤더를 평가하여 컨텐츠를 캐싱할지 여부를 선택할 것을 결정할 수 있다.
캐싱 프록시의 단점은, 각 서버가 데이터 객체를 저장할지 여부를 자체적으로 결정하기 때문에, 종종 UA와 CSP 사이의 다수의 캐싱 프록시에 인기있는 컨텐츠가 저장되고 덜 요청된 컨텐츠는 전혀 저장되지 않아, 사용 가능한 캐싱 용량을 비효율적으로 사용하게 한다는 것이다.
본 발명의 제 1 목적은 정보 중심 네트워크(ICN)에서 캐시의 보다 효율적인 사용을 가능하게 하는 네트워크 노드를 제공하는 것이다.
본 발명의 제 2 목적은 정보 중심 네트워크에서 캐시의 보다 효율적인 사용을 가능하게 하는 관심 메시지를 수신하는 방법을 제공하는 것이다.
본 발명의 제 3 목적은 정보 중심 네트워크에서 캐시의 보다 효율적인 사용을 가능하게 하는 엔드포인트 노드를 제공하는 것이다.
본 발명의 제 4 목적은 컨텐츠 네트워크에서 캐시의 보다 효율적인 사용을 가능하게 하는 네트워크 노드를 제공하는 것이다.
본 발명의 제 5 목적은 네트워크에서 캐시의 보다 효율적인 사용을 가능하게 하는 데이터 객체에 대한 HTTP 요청을 수신하는 방법을 제공하는 것이다.
본 발명에 따르면, 제 1 목적은 네트워크 노드가 적어도 하나의 통신 인터페이스와 적어도 하나의 메모리와 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서는, 상기 적어도 하나의 통신 인터페이스를 통해 다운스트림 노드로부터 관심 메시지를 수신하고 - 상기 관심 메시지는 요청된 데이터 객체의 이름을 포함함 - ; 상기 요청된 데이터 객체를 상기 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하고; 입찰 값(bid value)을 계산하고; 상기 관심 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 업스트림 노드에 전달하고 - 상기 관심 메시지는 적어도 입찰할지 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - ; 상기 업스트림 노드로부터 상기 요청된 데이터 객체를 포함하는 데이터 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 수신하고; 적어도 상기 데이터 메시지로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하고; 상기 네트워크 노드가 상기 입찰을 낙찰받았다면 상기 데이터 객체를 상기 적어도 하나의 메모리에 저장하며; 상기 데이터 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 상기 다운스트림 노드에 전달하도록 구성되는 것에 의해 실현된다.
본 발명자는, 데이터 메시지에서 수신된 항목을 캐싱하는, 데이터 메시지의 경로 내의 네트워크 노드의 개수를 제한함으로써, 정보 중심 네트워크에서 캐시의 보다 효율적인 사용이 실현된다는 것을 인식하였다. 이는, 네트워크 노드가 항목을 자신의 캐시에 저장하도록 입찰하게 하여, 경로를 따르는 다른 네트워크 노드 또는 경로를 따르는 동일한 네트워크 노드 그룹 내의 다른 네트워크 노드와 경쟁하게 함으로써, 달성된다. 즉, 항목을 캐싱할 권한이 경매된다. 이렇게 하면, 덜 인기있는 항목이 전혀 캐싱되지 않을 가능성이 감소하게 된다. 이는 또한 네트워크를 통해 컨텐츠의 최적화된 확산(서버 적중 횟수 감소)을 달성할 수 있으므로, 컨텐츠 생산자가 오프라인으로 전환하는 것과 관련한 역동성(robustness)을 향상시킨다. 또한, 이는 네트워크 트래픽을 증가시키지 않고 요청 노드가 경험하는 대기 시간을 감소시킬 수 있다. 추가의 이점은, 예를 들어, 개별 노드 특성, 최소 오버헤드로 캐싱의 노드 간 조정을 고려한, 요청의 지리적 및/또는 타이밍 컴포넌트에 기초한 최적화된 캐싱일 수 있다.
상기 적어도 하나의 통신 인터페이스가 다수의 통신 인터페이스를 포함하는 경우, 상기 관심 메시지는 이 메시지를 전달한 통신 인터페이스와는 다른 통신 인터페이스를 통해 수신되는 것이 바람직하다. 관심 메시지는 노드의 전달 룰(forwarding rules)에 따라 전달된다. 데이터 메시지는 일반적으로 관심 메시지를 업스트림 노드에 전달하였던 통신 인터페이스와 동일한 통신 인터페이스를 통해 업스트림 노드로부터 수신된다. 적어도 하나의 통신 인터페이스가 단일 인터페이스, 예를 들어, 무선 인터페이스를 포함하는 경우, 네트워크 노드는 관심 메시지를 수신하였던 통신 인터페이스와 동일한 통신 인터페이스를 통해 관심 메시지를 전달할 수 있다.
적어도 하나의 프로세서는 입찰 값을 계산한 후, 요청된 데이터 객체를 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정할 수 있다. 예를 들어, 적어도 하나의 프로세서는 계산된 입찰 값이 특정 임계 값보다 높거나 낮거나 특정 범위 내에 있는 경우에만 입찰할 것을 결정할 수 있다. 대안으로, 적어도 하나의 프로세서는 요청된 데이터 객체를 적어도 하나의 메모리에 저장하기 위해 입찰하기로 결정한 후에 입찰 값을 계산할 수 있다. 예를 들어, 적어도 하나의 프로세서는 적어도 하나의 메모리가 빈 슬롯을 가지거나 이미 캐싱된 데이터 객체 중 적어도 하나가 특정 연령보다 오래된 경우에만 입찰 값을 계산할 수 있다.
입찰 값은 하나 이상의 파라미터에 기초하여 계산될 수 있다. 파라미터는 캐시 크기 또는 업스트림 링크의 대역폭과 같은 노드의 로컬 상황과 관련될 수 있다. 또한, 파라미터는 컨텐츠 및/또는 네트워크와 관련된 특정 요청의 "컨텍스트"를 캡처할 수 있다. 예를 들어, 파라미터는 컨텐츠 관련된, 가령, 항목의 인기도 또는 항목의 원하는 대기 시간이거나, 또는 네트워크 관련된, 가령, 관심 메시지의 발신자로부터 네트워크 노드까지의 홉(hop)의 개수 또는 관심 메시지가 경험하는 네트워크 대기 시간일 수 있다. 다운스트림 노드는 네트워크 노드에 관심 메시지를 송신하고 네트워크 노드로부터 데이터 메시지를 수신하는 노드, 즉 현재 노드보다 최초 데이터 요청자에 더 가까이 위치한 관심/데이터 경로 상의 노드이다. 업스트림 노드는 네트워크 노드로부터 관심 메시지를 수신하고 네트워크 노드에 데이터 메시지를 송신하는 노드, 즉 현재 노드보다 최초 데이터 요청자로부터 더 멀리 떨어져 위치한 관심/데이터 경로 상의 노드이다.
상기 수신된 관심 메시지는 수신된 입찰 값을 더 포함할 수 있고, 상기 적어도 하나의 프로세서는, 입찰할지 여부에 대한 결정이 긍정이었고 상기 계산된 입찰 값이 상기 수신된 입찰 값보다 높은 입찰을 나타내는 경우, 상기 관심 메시지에 상기 계산된 입찰 값을 포함하도록 구성될 수 있다. 제 1 실시예에서, 높은 입찰 값은 높은 입찰을 나타내고, 제 2 실시예에서, 낮은 입찰 값은 높은 입찰을 나타낸다. 만약 네트워크 노드가 관심 메시지를 수신하는 본 발명에 따른 제 1 노드가 아니라면, 관심 메시지가 네트워크 노드에 의해 수신될 때, 관심 메시지는 이미 입찰 값을 포함할 것이다. 일 실시예에서, 계산된 입찰 값이 수신된 입찰 값보다 높은 입찰을 나타내지 않으면, 네트워크 노드는 그 입찰을 낙찰받지 못하게 된다. 다른 실시예에서, 계산된 입찰 값이 더 높은 입찰을 나타내지 않고 수신된 입찰 값과 동일하지 않은 경우, 네트워크 노드는 그 입찰을 낙찰받지 못하게 된다. 네트워크 노드가 그 입찰을 낙찰받지 못했다면, 그 네트워크 노드는 관심 메시지를 업스트림 노드로 전달하기 전에는, 수신된 관심 메시지 내의 수신된 입찰 값을 변경하지 않는다.
상기 적어도 하나의 프로세서는, 네트워크 노드가 계산된 입찰 값을 관심 메시지 내에 포함했는지 여부를 나타내는 입찰 정보를 적어도 하나의 메모리에 기록하도록 더 구성될 수 있다. 이러한 입찰 정보, 예를 들어, True 또는 False 값은 네트워크 노드가 관심 메시지를 전달하기 전에 저장되고, 나중에 네트워크 노드가, 예를 들어, 다음의 두 단락에서 기술되는 바와 같이, 데이터 메시지를 수신할 때 사용될 수 있다.
상기 적어도 하나의 프로세서는 적어도 상기 데이터 메시지 및 상기 입찰 정보로부터 상기 네트워크 노드가 입찰을 낙찰받았는지 여부를 결정하도록 구성될 수 있다. 기록된 입찰 정보는 네트워크 노드가 데이터 메시지 단독으로부터 입찰을 낙찰받았는지 여부를 결정할 수 없는 경우에 유익하다. 예를 들어, 네트워크 노드는 관심 메시지를 전달할 때, 입찰 정보에 의해 표시되며, 데이터 메시지로부터는 결정될 수 없는 가장 높은 입찰을 가졌다는 조건이 충족되는 경우에만, 데이터 메시지로부터 그 입찰을 낙찰받았음을 결정할 수 있다. 이는 다음 단락에서 보다 상세히 설명된다.
다른 실시예에서, 네트워크 노드는, 예를 들어, 데이터 메시지가 그 입찰을 낙찰받은 네트워크 노드의 고유 식별자(예를 들어, IP 어드레스 또는 MAC 어드레스)를 포함하거나, 또는 선택적으로, 경매 알고리즘이 하나의 관심 경로 내에서 다수의 경매가 발생할 수 있게 허용하는 경우에 복수의 고유 식별자를 포함하면, 그 데이터 메시지 단독으로부터 그 입찰을 낙찰받았는지 여부를 결정할 수 있다. 다른 대안의 실시예에서, 입찰 값들이 동일할 가능성이 없을 경우, 계산된 입찰 값 자체는, 네트워크 노드가 그 계산된 입찰 값을 관심 메시지에 포함했고 낙찰된 입찰 값 또는 값들이 데이터 메시지에 포함되는 경우에, 적어도 하나의 메모리에 저장된다. 이것은 네트워크 노드로 하여금 저장된 입찰 값을 수신된 데이터 메시지 내의 낙찰된 입찰 값(들)과 비교함으로써, 그 입찰을 낙찰받았는지 여부를 결정하게 한다.
상기 데이터 메시지는 무시 카운터(ignore counter)를 포함할 수 있으며, 상기 무시 카운터는 상기 업스트림 노드 또는 다른 업스트림 노드에 의해 결정된 바와 같이 상기 입찰을 낙찰받지 못한 다운스트림 노드의 개수를 나타내며, 상기 적어도 하나의 프로세서는 적어도 상기 무시 카운터 및 상기 입찰 정보로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하도록 구성될 수 있다. 네트워크 노드는 지금까지 가장 높은 입찰을 가졌는지 여부를 결정할 수 있지만, 관심 메시지를 여전히 수신할 임의의 네트워크 노드가 보다 높은 입찰 값을 계산할 예정인지 여부를 결정할 수는 없다. 관심 메시지의 경로를 따라 더 멀리있는 네트워크 노드가 더 높은 입찰 값을 계산한다면, 그 네트워크 노드는 그 경로를 따르는 이전 노드 또는 그 경로를 따라 동일한 네트워크 노드 그룹의 이전 노드가 그 입찰을 낙찰받지 않았고, 리턴하는 데이터 메시지의 무시 카운터를, 입찰을 낙찰받지 않은 이전 노드의 개수로 설정할 수 있음을 알고 있다. 관심 메시지에 계산된 입찰 값을 포함한 네트워크 노드는 이후 무시 카운터가 0이 아닌 경우, 그 입찰을 낙찰받지 않았음을 결정할 수 있다.
상기 적어도 하나의 프로세서는, 상기 관심 메시지 내의 노드 카운터를 증분시킨 후, 상기 업스트림 노드에 상기 관심 메시지를 전달하도록 더 구성될 수 있으며, 상기 노드 카운터는 다운스트림 노드의 개수를 나타낸다. 이는, 더 높은 입찰 값을 계산하는 관심 메시지의 경로를 따라 더 멀리있는 네트워크 노드가, 그 네트워크 노드가 전달하는 관심 메시지 내에 그의 입찰 값을 포함한다면, 상기 입찰을 낙찰받지 않은 이전 노드의 개수를 결정하게 하여, 그 개수를 적어도 하나의 메모리에 저장하게 한다. 노드 카운터는 기준 개수에 대해 값을, 예를 들어, 0, 1, 2, 3 등으로 증가시키거나, 기준 개수에 대해 값을, 예를 들어, 1000, 999, 998 등으로 감소시킴으로써 증분될 수 있다. 네트워크 노드는 경매에 참여하는 네트워크 노드 그룹의 제 1 노드 또는 마지막 노드일 때, 예를 들어, 노드 카운터가 임계 값에 도달하거나 임계 값을 초과하는 경우, 노드 카운터를 재설정할 수 있다.
상기 적어도 하나의 프로세서는, 상기 네트워크 노드가 상기 관심 메시지 내에 상기 계산된 입찰 값을 포함했다면, 상기 적어도 하나의 메모리에 낙찰받지 못한 입찰자 카운트를 기록하도록 더 구성될 수 있으며, 상기 낙찰받지 못한 입찰자 카운트는 상기 수신된 관심 메시지 내에 포함된 상기 노드 카운터에 기초하여, 상기 네트워크 노드에 의해 결정된 바와 같이, 상기 입찰을 낙찰받지 못한 다운스트림 노드의 개수를 나타낸다. 낙찰받지 못한 입찰자 카운트는, 네트워크 노드가 데이터 메시지를 수신하여, 예를 들어, 입찰을 낙찰받았다는 것을 결정할 때, 무시 카운터를 설정하는 데 사용될 수 있다. 상기 네트워크 노드는, 예를 들어, 상기 수신된 관심 메시지 내에 포함된 상기 노드 카운터를 증가시키고, 상기 증가된 노드 카운터를 상기 낙찰받지 못한 입찰자 카운트로서 저장하고, 상기 증가된 노드 카운터를 포함하는 상기 관심 메시지를 전달할 수 있다. 대안으로, 상기 네트워크 노드는, 예를 들어, 상기 수신된 노드 카운터를 상기 낙찰받지 못한 입찰자 카운트로서 저장하고, 상기 수신된 관심 메시지 내에 포함된 상기 노드 카운터를 증가시키고, 상기 증가된 노드 카운터를 포함하는 상기 관심 메시지를 전달할 수 있다.
상기 적어도 하나의 프로세서는, 상기 네트워크 노드가 상기 입찰을 낙찰받은 경우, 상기 낙찰받지 못한 입찰자 카운트에 기초하여 상기 데이터 메시지에 상기 무시 카운터를 설정한 후, 상기 다운스트림 노드에 상기 데이터 메시지를 전달하도록 구성될 수 있다. 무시 카운터는, 예를 들어, 관심 메시지가 수신되었을 때 상기 낙찰받지 못한 입찰자 카운트로서 저장되었던 노드 카운터로 설정될 수 있다. 이는, 네트워크 노드로 하여금 데이터 메시지를 사용하게 하여, 여전히 상기 데이터 메시지를 수신할, 상기 관심 메시지 경로를 따르는 이전 노드 또는 상기 관심 메시지 경로를 따르는 동일한 네트워크 노드 그룹 내의 이전 노드에게, 예를 들어, 그들이 입찰을 낙찰받지 못했다는 것을 통지하게 한다.
본 발명에 따르면, 제 2 목적은, 관심 메시지를 수신하는 방법에 의해 실현되며, 이 방법은, 적어도 하나의 통신 인터페이스를 통해 다운스트림 노드로부터 관심 메시지를 수신하는 단계 - 상기 관심 메시지는 요청된 데이터 객체의 이름을 포함함 - 와; 상기 요청된 데이터 객체를 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하는 단계와; 입찰 값을 계산하는 단계와; 상기 관심 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 (또는 존재한다면, 노드의 전달 룰에 따른 다른 통신 인터페이스를 통해) 업스트림 노드에 전달하는 단계 - 상기 관심 메시지는 적어도 입찰할지 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - 와; 상기 업스트림 노드로부터 상기 요청된 데이터 객체를 포함하는 데이터 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 수신하는 단계와; 적어도 상기 데이터 메시지로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하는 단계와; 상기 네트워크 노드가 상기 입찰을 낙찰받았다면 상기 데이터 객체를 상기 적어도 하나의 메모리에 저장하는 단계; 및 상기 데이터 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 상기 다운스트림 노드에 전달하는 단계를 포함한다. 상기 방법은 프로그램 가능한 디바이스 상에서 실행되는 소프트웨어에 의해 수행될 수 있다. 이 소프트웨어는 컴퓨터 프로그램 제품으로서 제공될 수 있다.
상기 수신된 관심 메시지는 수신된 입찰 값을 더 포함할 수 있고, 상기 방법은, 입찰할지 여부에 대한 결정이 긍정이었고 상기 계산된 입찰 값이 상기 수신된 입찰 값보다 높은 입찰을 나타내는 경우, 상기 관심 메시지 내에 상기 계산된 입찰 값을 포함하는 단계를 더 포함할 수 있다.
상기 방법은, 네트워크 노드가 계산된 입찰 값을 관심 메시지 내에 포함했는지 여부를 나타내는 입찰 정보를 적어도 하나의 메모리에 기록하는 단계를 더 포함할 수 있다. 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 적어도 상기 데이터 메시지로부터 결정하는 상기 단계는 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 적어도 상기 데이터 메시지 및 상기 입찰 정보로부터 결정하는 단계를 포함할 수 있다. 상기 수신된 데이터 메시지는 무시 카운터를 포함할 수 있으며, 상기 무시 카운터는, 상기 업스트림 노드 또는 다른 업스트림 노드에 의해 결정된 바와 같이, 상기 입찰을 낙찰받지 못한 다운스트림 노드의 개수를 나타내며, 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하는 단계는 적어도 상기 무시 카운터 및 상기 입찰 정보로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하는 단계를 포함할 수 있다.
상기 방법은 상기 관심 메시지 내의 노드 카운터를 증분시킨 후, 상기 업스트림 노드에 상기 관심 메시지를 전달하는 단계를 더 포함할 수 있으며, 상기 노드 카운터는 다운스트림 노드의 개수를 나타낸다. 상기 방법은, 상기 네트워크 노드가 상기 관심 메시지 내에 상기 계산된 입찰 값을 포함했다면, 상기 적어도 하나의 메모리에 낙찰받지 못한 입찰자 카운트를 기록하는 단계를 더 포함할 수 있으며, 상기 낙찰받지 못한 입찰자 카운트는 상기 수신된 관심 메시지 내에 포함된 상기 노드 카운터에 기초하여, 상기 네트워크 노드에 의해 결정된 바와 같이, 상기 입찰을 낙찰받지 못한 다운스트림 노드의 개수를 나타낸다. 상기 방법은, 상기 네트워크 노드가 상기 입찰을 낙찰받은 경우, 상기 낙찰받지 못한 입찰자 카운트에 기초하여, 상기 데이터 메시지 내의 상기 무시 카운터를 설정한 후, 상기 다운스트림 노드에 상기 데이터 메시지를 전달하는 단계를 더 포함할 수 있다.
본 발명에 따르면, 제 3 목적은, 엔드포인트 노드가 적어도 하나의 통신 인터페이스 및 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서가, 요청된 데이터 객체의 이름을 결정하고; 입찰 값을 삽입하기 위한 입찰 필드 및 상기 요청된 데이터 객체의 상기 이름을 포함하는 관심 메시지를 생성하고 - 상기 입찰 값은 상기 요청된 데이터 객체를 캐싱할 권한의 경매가 개시되어야 함을 나타내기 위해 정의되지 않은 상태로 남게 됨 - ; 상기 관심 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 업스트림 노드에 송신하도록 구성되는 것에 의해 실현된다.
본 발명에 따르면, 제 4 목적은, 네트워크 노드가 적어도 하나의 통신 인터페이스와 적어도 하나의 메모리 및 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서가, 상기 적어도 하나의 통신 인터페이스를 통해 다운스트림 노드로부터 데이터 객체에 대한 HTTP 요청을 수신하고; 상기 요청된 데이터 객체를 상기 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하고; 입찰 값을 계산하고; 상기 HTTP 요청을 상기 적어도 하나의 통신 인터페이스를 통해 업스트림 노드에 전달하고 - 상기 HTTP 요청은 적어도 입찰할지 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - ; 상기 업스트림 노드로부터 상기 요청된 데이터 객체를 포함하는 응답 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 수신하고; 적어도 상기 응답 메시지로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하고; 상기 네트워크 노드가 상기 입찰을 낙찰받았다면, 상기 데이터 객체를 상기 적어도 하나의 메모리에 저장하여; 상기 응답 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 상기 다운스트림 노드에 전달하도록 구성되는 것에 의해 실현된다.
본 발명에 따르면, 제 5 목적은, HTTP 요청을 수신하는 방법에 의해 실현되며, 이 방법은, 적어도 하나의 통신 인터페이스를 통해 다운스트림 노드로부터 데이터 객체에 대한 HTTP 요청을 수신하는 단계와; 상기 요청된 데이터 객체를 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하는 단계와; 입찰 값을 계산하는 단계와; 상기 HTTP 요청을 상기 적어도 하나의 통신 인터페이스를 통해 (또는 존재한다면, 노드의 전달 룰에 따른 다른 통신 인터페이스를 통해) 업스트림 노드에 전달하는 단계 - 상기 HTTP 요청은 적어도 입찰할지 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - 와; 상기 업스트림 노드로부터 상기 요청된 데이터 객체를 포함하는 응답 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 수신하는 단계와; 적어도 상기 응답 메시지로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하는 단계와; 상기 네트워크 노드가 상기 입찰을 낙찰받았다면, 상기 데이터 객체를 상기 적어도 하나의 메모리에 저장하는 단계; 및 상기 응답 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 상기 다운스트림 노드에 전달하는 단계를 포함한다. 상기 방법은 프로그램 가능한 디바이스 상에서 실행되는 소프트웨어에 의해 수행될 수 있다. 이 소프트웨어는 컴퓨터 프로그램 제품으로서 제공될 수 있다.
또한, 본원에 기술된 방법을 수행하기 위한 컴퓨터 프로그램뿐만 아니라 이 컴퓨터 프로그램을 저장하는 비 일시적 컴퓨터 판독 가능 저장 매체가 제공된다. 컴퓨터 프로그램은, 예를 들어, 기존 디바이스에 의해 다운로드되거나 기존 디바이스에 업로드되거나 이러한 시스템의 제조시 저장될 수 있다.
비 일시적인 컴퓨터 판독 가능 저장 매체는 적어도 하나의 소프트웨어 코드 부분을 저장하며, 이 소프트웨어 코드 부분은 컴퓨터에 의해 실행되거나 처리될 때, 실행 가능한 동작을 수행하도록 구성되며, 이 동작은, 적어도 하나의 통신 인터페이스를 통해 다운스트림 노드로부터 관심 메시지를 수신하는 것 - 상기 관심 메시지는 요청된 데이터 객체의 이름을 포함함 - 과; 상기 요청된 데이터 객체를 상기 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하는 것과; 입찰 값을 계산하는 것과; 상기 관심 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 업스트림 노드에 전달하는 것 - 상기 관심 메시지는 적어도 입찰할지 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - 과; 상기 업스트림 노드로부터 상기 요청된 데이터 객체를 포함하는 데이터 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 수신하는 것과; 적어도 상기 데이터 메시지로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하는 것과; 상기 네트워크 노드가 상기 입찰을 낙찰받았다면, 상기 데이터 객체를 상기 적어도 하나의 메모리에 저장하는 것; 및 상기 데이터 메시지를 상기 적어도 하나의 통신 인터페이스를 통해 상기 다운스트림 노드에 전달하는 것을 포함한다.
당업자라면 알 수 있는 바와 같이, 본 발명의 양태는 디바이스, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 발명의 양태는 완전한 하드웨어 실시예, (펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함하는) 완전한 소프트웨어 실시예 또는 소프트웨어 및 하드웨어 양태를 결합한 실시예의 형태를 취할 수 있으며, 이들 모두는 일반적으로 본원에서 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있다. 본 명세서에서 기술된 기능은 컴퓨터의 프로세서/마이크로프로세서에 의해 실행되는 알고리즘으로서 구현될 수 있다. 또한, 본 발명의 양태는 컴퓨터 판독 가능 프로그램 코드가 구현되어, 예를 들어, 저장된 하나 이상의 컴퓨터 판독 가능 매체(들)로 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터 판독 가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 신호 매체 또는 컴퓨터 판독 가능 저장 매체일 수 있다. 컴퓨터 판독 가능 저장 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치 또는 디바이스, 또는 전술한 것의 임의의 적절한 조합일 수 있지만, 이에 국한되는 것은 아니다. 컴퓨터 판독 가능 저장 매체의 보다 구체적인 예는 하나 이상의 와이어를 갖는 전기적 접속, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(Random Access Memory), ROM(Read-Only Memory), EPROM 또는 플래시 메모리, 광섬유, CD-ROM, 광학 저장 디바이스, 자기 저장 디바이스, 또는 전술한 것의 임의의 적절한 조합을 포함할 수 있지만, 이에 국한되는 것은 아니다. 본 발명의 문맥에서, 컴퓨터 판독 가능 저장 매체는 명령어 실행 시스템, 장치 또는 디바이스에 의해 사용하거나 그와 관련하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 임의의 유형 매체(tangible medium)일 수 있다.
컴퓨터 판독 가능 신호 매체는, 예를 들어, 기저 대역에서 또는 반송파의 일부로서 구현된 컴퓨터 판독 가능 프로그램 코드를 갖는 전파된 데이터 신호를 포함할 수 있다. 이러한 전파된 신호는 전자기, 광학 또는 이들의 임의의 적절한 조합을 포함하지만, 이에 국한되지 않는 다양한 형태 중 임의의 것을 취할 수 있다. 컴퓨터 판독 가능 신호 매체는 컴퓨터 판독 가능 저장 매체가 아니며, 명령어 실행 시스템, 장치 또는 디바이스에 의해 사용되거나 또는 그에 관련하여 사용하기 위한 프로그램을 통신, 전파 또는 이송할 수 있는 임의의 컴퓨터 판독 가능 매체일 수 있다.
컴퓨터 판독 가능 매체 상에 구현된 프로그램 코드는 무선, 유선, 광섬유, 케이블, RF 등 또는 이들의 임의의 적절한 조합을 포함하지만, 이에 국한되지는 않는 임의의 적절한 매체를 사용하여 송신될 수 있다. 본 발명의 양태에 대한 동작을 수행하기 위한 컴퓨터 프로그램 코드는, Java(TM), Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차형 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 전적으로 사용자의 컴퓨터 상에서, 부분적으로 사용자의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 부분적으로는 사용자의 컴퓨터 상에서 부분적으로는 원격 컴퓨터 상에서, 또는 전적으로 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 LAN(Local Area Network) 또는 WAN(Wide Area Network)를 포함하는 임의의 타입의 네트워크를 통해 사용자의 컴퓨터에 접속될 수 있거나, 또는 외부 컴퓨터에 (예를 들어, 인터넷 서비스 제공자를 사용하는 인터넷을 통해) 접속이 행해질 수 있다.
본 발명의 양태는 본 발명의 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 아래에서 기술된다. 흐름도 및/또는 블록도의 각 블록, 및 흐름도 및/또는 블록도 내의 블록의 조합은 컴퓨터 프로그램 명령어에 의해 구현될 수 있음이 이해될 것이다. 이들 컴퓨터 프로그램 명령어는 범용 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 장치의 프로세서, 특히 마이크로프로세서 또는 중앙 처리 유닛(CPU)에 제공되어 머신을 생성할 수 있으며, 그에 따라, 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치 또는 다른 디바이스의 프로세서를 통해 실행되는 명령어는 흐름도 및/또는 블록도의 블록(들)에서 특정된 기능/동작을 구현하기 위한 수단을 생성하게 된다.
이들 컴퓨터 프로그램 명령어는 또한 컴퓨터, 다른 프로그램 가능 데이터 처리 장치 또는 다른 디바이스에 지시하여 특정 방식으로 기능하게 할 수 있는 컴퓨터 판독 가능 매체에 저장될 수 있어서, 컴퓨터 판독 가능 매체에 저장된 명령어는 흐름도 및/또는 블록도의 블록(들)에서 특정된 기능/동작을 구현하는 명령어를 포함하는 제조품을 생성하게 된다.
컴퓨터 프로그램 명령어는 또한 컴퓨터, 다른 프로그램 가능 데이터 처리 장치, 또는 다른 디바이스 상에 로딩되어, 컴퓨터, 다른 프로그램 가능한 장치 또는 다른 디바이스 상에서 일련의 동작 단계가 수행되어, 컴퓨터로 구현되는 프로세스를 생성할 수 있어서, 컴퓨터 또는 다른 프로그램 가능한 장치 상에서 실행되는 명령어는 흐름도 및/또는 블록도의 블록(들)에서 특정된 기능/동작을 구현하기 위한 프로세스를 제공하게 된다.
도면의 흐름도 및 블록도는 본 발명의 다양한 실시예에 따른 디바이스, 방법 및 컴퓨터 프로그램 제품의 가능한 구현예의 아키텍처, 기능 및 동작을 도시한다. 이와 관련하여, 흐름도 또는 블록도 내의 각 블록은 특정 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능 명령어를 포함하는 모듈, 세그먼트 또는 코드 부분을 나타낼 수 있다. 또한, 일부 대체 구현예에서, 블록에서 언급된 기능은 도면에서 언급된 순서를 벗어나 발생할 수 있음에 주목해야 한다. 예를 들어, 연속적으로 도시된 두 개의 블록은 사실상 실질적으로 동시에 실행될 수 있거나, 관련된 기능에 따라 때때로 블록이 역순으로 실행될 수 있다. 또한, 주목할 것은, 블록도 및/또는 흐름도의 각각의 블록, 및 블록도 및/또는 흐름도의 블록의 조합은 특정 기능 또는 동작을 수행하는 특수 목적 하드웨어 기반 시스템 또는 특수 목적 하드웨어 및 컴퓨터 명령어의 조합에 의해 구현될 수 있다는 것이다.
본 발명의 이들 및 다른 양태는 도면으로부터 명백하며, 도면을 참조하여 예로서 추가로 기술될 것이다:
도 1은 본 발명의 네트워크 노드의 일 실시예의 블록도이다.
도 2는 본 발명의 방법의 일 실시예의 흐름도이다.
도 3은 다수의 노드를 포함하는 네트워크 경로의 일 예를 도시한다.
도 4는 본 발명의 방법의 일 실시예에서 관심 메시지를 수신한 후에 수행되는 프로세스를 나타내는 흐름도이다.
도 5는 도 4의 단계 중 하나의 세부 사항을 도시하는 흐름도이다.
도 6은 도 4의 단계 중 하나의 세부 사항을 도시하는 흐름도이다.
도 7은 도 4의 단계 중 하나의 세부 사항을 도시하는 흐름도이다.
도 8은 본 발명의 방법의 일 실시예에서 데이터 메시지를 수신한 후에 수행되는 프로세스를 나타내는 흐름도이다.
도 9는 도 8의 단계 중 하나의 세부 사항을 도시하는 흐름도이다.
도 10은 도 8의 단계 중 하나의 세부 사항을 도시하는 흐름도이다.
도 11은 본 발명의 관심 메시지, 데이터 메시지 및 PIT에 삽입된 필드 및 값의 일 예를 도시한다.
도 12는 본 발명의 방법을 수행하기 위한 예시적인 데이터 처리 시스템의 블록도이다.
도 13은 본 발명의 엔드포인트 노드의 블록도이다.
도면에서 대응하는 요소는 동일한 참조 번호로 표시된다.
본 발명은 적어도 하나의 통신 인터페이스, 적어도 하나의 메모리 및 적어도 하나의 프로세서를 포함하는 네트워크 노드에 관한 것이다. 도 1에 도시된 실시예에서, 네트워크 노드(15)는 두 개의 통신 인터페이스(31-2), 하나의 메모리(5) 및 하나의 프로세서(7)를 포함한다. 프로세서(7)는 다운스트림 노드(14)로부터 통신 인터페이스(31)를 통해 관심 메시지를 수신하도록 구성된다. 상기 관심 메시지는 요청된 데이터 객체의 이름을 포함한다. 프로세서(7)는 요청된 데이터 객체를 메모리(5)에 저장하기 위해 입찰할지 여부를 결정하도록 더 구성된다. 프로세서(7)는 또한 입찰 값을 계산하도록 구성된다. 프로세서(7)는 관심 메시지를 통신 인터페이스(32)를 통해 업스트림 노드(16)에 전달하도록 더 구성된다. 관심 메시지는 적어도 입찰할지 여부에 대한 결정에 따라 계산된 입찰 값을 포함한다. 프로세서(7)는 업스트림 노드(16)로부터 요청된 데이터 객체를 포함하는 데이터 메시지를 통신 인터페이스(32)를 통해 수신하도록 더 구성된다. 프로세서(7)는 네트워크 노드가 입찰을 낙찰받았는지의 여부를 적어도 데이터 메시지로부터 결정하도록 더 구성된다. 프로세서(7)는, 네트워크 노드가 입찰을 낙찰받은 경우, 데이터 객체를 메모리(5)에 저장하도록 더 구성된다. 프로세서(7)는 데이터 메시지를 통신 인터페이스(31)를 통해 업스트림 노드(14)에 전달하도록 더 구성된다. 네트워크 노드(15)는 또한 (데이터 항목을 저장하도록 구성되지 않을 수 있고, 관심 메시지 및 데이터 메시지를 변경하도록 구성되지 않을 수 있는 관심/데이터 경로 상의 다른 노드와 구별하기 위해) 본원에서 "캐싱 노드"라고 지칭되기도 한다.
네트워크 노드(15)는, 예를 들어, 전용 네트워크 라우터일 수 있지만, 또한, 예를 들어, (사용자 인터페이스를 갖거나 갖지 않는) 사용자 디바이스, 예컨대, 모바일 폰 또는 차량에 내장된 디바이스일 수 있다. 적어도 하나의 프로세서는 하나 이상의 범용 프로세서 및/또는 하나 이상의 애플리케이션 특정 프로세서를 포함할 수 있다. 프로세서(7)는, 예를 들어, ARM 프로세서일 수 있다. 적어도 하나의 메모리는, 예를 들어, 하나 이상의 자기 하드 디스크, 하나 이상의 광 드라이브 및/또는 하나 이상의 고체 상태 메모리를 포함할 수 있다. 데이터 객체(들)는 동일한 메모리에 저장될 수 있거나 미완료된 관심 테이블(PIT) 또는 네트워크 노드 구성과 같은 다른 정보와는 상이한 메모리에 저장될 수 있다. 적어도 하나의 통신 인터페이스는, 예를 들어, 하나 이상의 광 포트 및/또는 하나 이상의 이더넷 포트를 포함할 수 있다.
본 발명의 관심 메시지를 수신하는 방법은 적어도 8 개의 단계를 포함한다(도 2 참조). 단계(11)는 다운스트림 노드로부터 적어도 하나의 통신 인터페이스를 통해 관심 메시지를 수신하는 단계를 포함하며, 관심 메시지는 요청된 데이터 객체의 이름을 포함한다. 단계(13)는 요청된 데이터 객체를 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하는 단계를 포함한다. 단계(15)는 입찰 값을 계산하는 단계를 포함한다. 단계(15)는, 예컨대, 단계(13) 이후 또는 단계(13) 이전에 수행될 수 있다. 단계(13)에서 입찰하지 않기로 결정되면, 단계(15)는 스킵(skipped)될 수 있다. 단계(15)에서 계산된 입찰 값은 입찰할지의 여부를 결정하기 위해 단계(13)에서 사용될 수 있다.
단계(17)는 상기 적어도 하나의 통신 인터페이스를 통해 업스트림 노드에 상기 관심 메시지를 전달하는 단계를 포함하며, 상기 관심 메시지는 적어도 입찰할지의 여부에 따라 상기 계산된 입찰 값을 포함한다. 단계(19)는 적어도 하나의 통신 인터페이스를 통해 상기 업스트림 노드로부터 요청된 데이터 객체를 포함하는 데이터 메시지를 수신하는 단계를 포함한다. 단계(21)는 네트워크 노드가 입찰을 낙찰받았는지 여부를 적어도 상기 데이터 메시지로부터 결정하는 단계를 포함한다. 단계(23)는, 네트워크 노드가 입찰을 낙찰받았다면, 상기 데이터 객체를 상기 적어도 하나의 메모리에 저장하는 단계를 포함한다. 단계(25)는 적어도 하나의 통신 인터페이스를 통해 상기 다운스트림 노드에 상기 데이터 메시지를 전달하는 단계를 포함한다.
즉, 관심 메시지가 이동하는 경로 상에 위치하는 캐싱 노드는 경매에 참여하여 (데이터 메시지에 의해) 그 관심 메시지에 응답하여 리턴될 데이터를 캐싱할 권한을 낙찰받는다. 캐싱할 권한에 대한 경매를 수행하면 요청 경로 상의 캐싱 노드는 어떠한 캐싱 노드가 데이터 객체의 사본을 저장할 예정인지를 조정할 수 있게 되며, 이로써 개별 결정으로 인한 중복된 캐싱을 회피할 수가 있다. 경매 낙찰자를 선출하고 시그널링하는 오버헤드를 제한하기 위해, 경매는 중앙 집중식으로 수행되는 것이 아니라 오히려 분산 방식으로 수행되며, 즉 현재 가장 높은 입찰 값이 관심 메시지에 피기백(piggybacked)되고, 각 캐싱 노드는 관심 메시지 내의 입찰 값 및 캐시 자체가 발행할 수 있는 자신의 입찰 값을 기반으로 하여 입찰할지 여부를 결정한다(캐싱 노드가 발행할 수 있는 입찰의 값은 요청 컨텍스트뿐만 아니라 노드의 로컬 파라미터를 기반으로 할 수 있다).
캐싱 노드가 입찰하기로 결정하면, 캐싱 노드는 관심 메시지 내의 현재 가장 높은 입찰을 그 자신의 입찰 값으로 대체한 후, 그 관심 메시지를 다음 노드에 전달할 것이다. 어떤 노드가 경매를 낙찰받았는지의 최종 결정은 그것을 리턴되는 데이터 메시지에 피기백(piggyback)하는 것을 통해 참여 캐싱 노드에 통신된다. 이 접근법은 캐싱 노드들이 여분의 또는 상당한 시그널링을 요구함이 없이, 캐싱 노드들 중 어떤 캐싱 노드가 항목을 캐싱할 예정인지에 대한 결정을 협력하게 할 뿐만 아니라, (선택적으로) (요청 컨텍스트와 함께) 이 결정을 초래하는 정보를 축적하게 할 수 있다.
입찰하기 위한 값을 선택하기 위해, 캐싱 노드는 로컬 정보 및 요청 컨텍스트 모두를 사용할 수 있다. 요청 컨텍스트를 기술하는 파라미터는, 예를 들어, 관심 메시지에 피기백되어 오버헤드를 최소화할 수 있거나, 또는 특수 메시지에 포함될 수 있다.
데이터 중복성(data redundancy)을 제어하기 위해, 다수의 캐싱 노드는 동일한 데이터 객체를 캐싱할 수 있다. 이는 상이한 그룹 내의 요청 경로 상에 캐싱 노드를 클러스터링하고, 각 그룹에 대해 별도의 경매를 수행함으로써 실현될 수 있다. 도 3에는 11 개의 노드가 도시되어 있는데, 그 중 9 개는 캐싱 노드(11-19)이고, 하나는 요청/관심 메시지가 발신되는 사용자 디바이스(31)이고, 하나는 데이터 객체가 발신되는 서버(35)이다. 캐싱 노드(11-19)는 3 개의 그룹(331-3) 내에 클러스터링된다. 특정 데이터 객체는 그룹(332)의 캐싱 노드(15) 및 그룹(333)의 캐싱 노드(19) 내에 캐싱된다. 데이터 중복성에 관한 결정은, 예를 들어, 로컬 정보 및 요청 컨텍스트의 조합을 기반으로 할 수 있거나 또는 네트워크 통계를 기반으로 한 네트워크 관리자에 의해 결정될 수도 있다.
특정 데이터 객체는 그룹(331) 내에는 캐싱되지 않는데, 왜냐하면 이 그룹 내의 캐싱 노드는 이미 매우 인기있는 컨텐츠를 보유하고 있기 때문이며(예를 들어, 이 노드는 다른 사용자 디바이스에 더 인접하게 위치하기 때문이며) 결과적으로 그룹(331) 내의 어떠한 캐싱 노드도 경매에 참여하지 않았기 때문이다. 이러한 캐싱 노드는 경매 임계 값을 사용하여 경매에 참여할지 여부를 결정했으며, 즉 캐싱 노드가 경매 임계 값보다 오래된 데이터를 가지고 있으면 경매에 참여할 자격을 갖게 된다. 경매 임계 값은 로컬 정보 및 글로벌 정보(사용 가능한 경우)의 조합을 기반으로 할 수 있거나 또는 네트워크 통계를 기반으로 한 네트워크 관리자에 의해 결정될 수도 있다. 도 3에 도시된 라우팅 경로는 요청된 데이터 객체의 이름에 기초하여 결정되었다.
캐싱 노드는 입찰할지 여부를 결정할 때 및 입찰 값을 계산할 때 하나 이상의 파라미터를 고려할 수 있다. 다음은 캐싱 노드가 고려할 수 있는 로컬 양태의 예이다:
● LRU: 최소 최근 사용된 항목의 타임스탬프이다. LRU 값은, 항목 요청이 오래된 값이 장래에 사용되지 않는 실시간 적용(예컨대, 센서 출력)의 결과일 수 있고, 캐싱 리소스의 낭비를 초래할 수 있는 경우를 회피하기 위해 적절하게 가중화되어야 한다.
● LFU: 최소 빈도 사용된 항목의 요청 카운트이다. LRU 및 LFU는, 노드가 인식하는 바와 같이, 이미 캐싱된 데이터의 인기도를 반영한다.
● BWIN: 인커밍 데이터 링크(INcoming data link)의 대역폭이다. 인커밍 데이터 링크의 대역폭이 작은 경우, 캐싱 노드는 보다 작은 링크 상에서의 보다 많은 트래픽을 회피하기 위해 더 높게 입찰하려고 할 것이다. BWIN은 캐싱 노드를 둘러싼 네트워크의 현재 상태를 반영한다. 추가적으로 또는 대안으로, 아웃고잉 데이터 링크(outgoing data link)의 대역폭이 고려될 수 있다.
● CS: 노드의 캐시 크기이다. CS는 노드 캐시의 캐싱 용량을 반영한다.
● RC: 캐싱 레이트(단위 시간당 캐싱되는 객체의 수). 인커밍 데이터 대 캐시 크기의 비율은 캐싱 노드의 성능에 대한 평가를 제공할 수 있다. RC는 노드의 캐시에서 데이터가 현재 얼마나 빨리 변경되는지를 반영한다. 따라서, 더 중요한 캐싱 노드가 더 높게 입찰하는 데 도움을 주게 될 가중치가 CS 및/또는 RC에 할당될 수 있다.
● INC: 동일한 관심 메시지가 노드에 도착했으나 캐싱되지 않았던 횟수의 카운트이다. 이전에 요청되었지만 캐싱되지 않은 관심의 임시 카운트가 유지되어야 한다. 이 카운트는 매우 인기있는 데이터 항목을 검색하는 데 도움을 주며, 이후 입찰 프로세스 중에 더 높은 가중치를 할당받을 수 있다. INC는 새롭게 수신된 데이터의 인기도를 반영한다.
또한, 캐싱 노드가 고려할 수 있는 여러 개의 넌 로컬(non-local) 파라미터("요청 컨텍스트")가 있다:
● HOP: 요청자로부터의 거리(홉(hop)의 개수)이다. 캐싱 노드가 요청 사용자 (디바이스)로부터 떨어져 있는 홉의 개수에 대한 정보는 사용자 (디바이스)에서 더 멀리 떨어져 있는 노드에 대해 낮은 캐싱 확률을 할당하는 데 도움을 줄 수 있으며, 반대의 경우도 마찬가지이다.
● L: 관심 메시지의 대기 시간이다.
입찰 값은, 예를 들어, 하나 이상의 위의 로컬 파라미터 및 컨텍스트 파라미터의 가중화된 합을 결정함으로써 계산될 수 있으며, 여기서 각각의 가중치는 각각의 양태에 대해 다소간의 강조를 제공한다. 가중치는, 예를 들어, 네트워크 의존적이거나, 또는 단지 네트워크 관리자에 의해 임의로 설정될 수 있다.
예를 들어, 입찰 값(bid)은 다음의 식을 사용하여 3 개의 경쟁 노드(R1-R3)에 의해 계산될 수 있다:
Figure 112018120756576-pct00001
Figure 112018120756576-pct00002
(식 1)
이 예에서, 가정되는 것은, 3 개의 노드 모두는 각 노드의 3 개의 파라미터, 즉 최소 최근 사용(Least Recently Used: LRU) 값, 최소 빈도 사용(Least Frequently Used: LFU) 값 및 캐시 크기(Cache Size: CS)에 기초하여 그들의 입찰 값을 결정할 것이라는 것이다. 임의의 다른 타입의 파라미터에 대한 식의 사용은 이 예로부터 추정될 수 있다. 노드는 네트워크 뷰(view of the network)에 대한 정보를 교환하지 않으므로, 예를 들어, 각 파라미터의 관찰 범위와 관련하여 상이한 설정을 가질 수 있다. 예를 들어, R1의 관점에서 볼 때, LRU 값의 최대 관측 범위는 1 초일 수 있지만, R3의 관점에서 볼 때, LRU 값의 최대 관측 범위는 10 초일 수 있다.
이 예를 위해, 캐싱 노드는 입찰 식에서 사용된 각각의 파라미터에 대해 다음과 같은 관측/추정된 값을 갖는다고 가정된다.
노드 R1 노드 R2 노드 R3
LRU (ms) 10 200 1000
LRU 최대 범위 1000 1000 1000
LFU (회수/초) 50 10 10
LFU 최대 범위 100 100 20
CS (MB) 200 500 500
CS 최대 범위 1000 1000 1000
α1 2 2 2
α2 2 2 2
α3 2 2 10
1 0.4 0.3 0.4
2 0.4 0.4 0.3
3 0.2 0.3 0.3
상기 제시된 값의 의미에 대한 약간의 설명이 아래에 주어진다:
● LRU: R1에 의해 저장된 최소 최근 사용 데이터 객체는 가장 최근에 액세스된 것인 반면 R3에 의해 저장된 최소 최근 사용 데이터 객체는 약 1 초 전에 액세스되었다. 이는 R3이 이 파라미터에 대해 R1 및 R2보다 더 높은 입찰 값을 계산하도록 유도해야 한다(오랫동안 액세스되지 않은 데이터 객체는 대체를 위한 제 1 후보가 되는 것이 바람직하다). 모든 노드는 이 파라미터의 최대 값에 대해 동일한 관점을 가지게 된다.
● LFU: R1에 의해 저장된 최소 빈도 사용 데이터 객체는 다른 노드에 의해 저장된 최소 빈도 사용 데이터 객체보다 훨씬 더 자주 액세스된다. 이는 R1이 LFU 값에 대해 낮은 입찰 값을 제시해야 함을 의미한다. 이 파라미터의 높은 값은 바람직하게도 낮은 입찰 값으로 변환되어야 하므로, 이 파라미터의 역수는 식 1에서 (범위 값에 대해) 분자와 분모 모두에서, 즉 (1/LFU) 또는 LFU-1로 사용된다. 노드 R3은 이 파라미터의 최대 값이 무엇인지에 대해 다른 관점을 가지며, 이는 이 파라미터에 대해 노드 R2와는 상이한 입찰 값을 유도할 것이며, 이는 노드들이 실제로 동일한 LFU 값을 갖는다할지라도 그러하다.
● CS: 노드 R1은 다른 노드와 비교하여 사용 가능한 더 작은 캐시를 가지며, 이는 식 1의 R1에서 이 파라미터와 관련하여 보다 작은 입찰 값을 유도한다(작은 메모리를 가진 캐시에 덜 자주 캐싱하는 것이 바람직할 수 있다). 이것은 또한 그 노드의 약점으로 간주될 수 있기 때문에, 이는 바람직하게도 R1이 데이터 객체를 캐싱할지 여부를 결정하는 가장 중요한 양태가 된다. 이런 이유 때문에, 이 파라미터에 주어진 가중치(R1의 w3)는 다른 두 개의 파라미터(LRU 및 LFU)에 대한 것보다 훨씬 작아, 가장 작은 캐시 크기를 갖는 노드에 데이터 객체가 캐싱될 가능성에 부정적인 영향을 준다.
● 감도 파라미터 (α1 - α3): 이들 값은 arctan 함수의 '경사도'를 정의하기 때문에 각 범위 내의 각 파라미터의 감도를 결정한다. 대부분의 경우 디폴트 값(예를 들어, 이 예에서는 2)이 사용될 수 있지만, 특정 노드에 대한 파라미터가 충분히 중요한 것으로 간주되고 해당 파라미터의 범위에 속하는 입찰 값에 더 높은 세분성이 필요한 경우, 이 파라미터의 감도 값은 증가될 수 있다(예를 들어, R3에 대한 α3은 이 예에서 10으로 증가된다).
● 파라미터 가중치 (w1 - w3): 이 가중치는 노드의 최종 입찰 값에 대한 각 파라미터의 기여도를 결정한다. 노드의 장점 또는 단점에 따라서 상이한 파라미터가 다소 중요한 것일 수 있다. 이들 파라미터는 애플리케이션 또는 네트워크 관리자에 의해 설정될 수 있으며, 반 정적으로(semi-statically) 조정될 수 있다. 이 예에서 노드에 대한 모든 가중치의 합은 1까지 가산된다(이 실시예에서, 입찰 값은 0과 1 사이의 값이다).
전술한 정보를 사용하여, 각각의 노드에 대한 식을 풀어 노드가 사용할 입찰 값을 구할 수 있다. 표 1에 언급된 값을 채우면 각 노드의 입찰 값이 결정될 수 있다.
또한, R1 입찰 값(Bid value):
Figure 112018120756576-pct00003
(식 2)
Bid (R1) = 0.0051 + 0.2 + 0.0484
Bid (R1) = 0.2535
또한, R2 입찰 값:
Figure 112018120756576-pct00004
(식 3)
Bid (R2) = 0.0727 + 0.3497 + 0.15
Bid (R2) = 0.5724
또한, R3 입찰 값:
Figure 112018120756576-pct00005
(식 4)
Bid (R3) = 0.2819 + 0.15 + 0.2623
Bid (R3) = 0.6942
Bid (R3)> Bid (R2)> Bid (R1)이기 때문에, 노드 R3은 입찰/경매의 낙찰자이고, 리턴될 경우 데이터 객체를 캐싱할 것이다.
각각의 경매 그룹에 대해, 0, 1 또는 그 초과의 입찰/경매 낙찰자, 즉 캐싱할 권한을 낙찰받은 캐싱 노드가 있을 수 있다. 예를 들어, 경매 그룹 내의 모든 캐싱 노드가 그들의 LRU 값보다 높은 값을 갖는 경매 임계 값을 가지며(이는 그 캐싱 노드가 이미 매우 인기있는/최근 데이터를 캐싱하고 있음을 의미함), 사용 가능한 캐싱 슬롯이 존재하지 않는 경우, 이러한 캐싱 노드 중 어떠한 노드도 입찰을 하지 않을 것이며 따라서 이 경매 그룹에는 낙찰자가 없고 어떠한 노드도 관심 메시지에서 요청된 데이터 객체를 캐싱하지 않을 것이다. 바람직하게, 경매 메커니즘이 경매 그룹 내의 캐싱 노드 중 하나만이 최종적으로 항목을 캐싱할 수 있게 하는 방식으로 구현되지만, 이 경매 메커니즘은 대안으로, 경매 그룹 내의 동일한 최고 값을 입찰하는 모든 캐싱 노드에게 캐싱할 권한을 부여할 수 있다.
경매를 수행하는 것을 지원하기 위해, 관심 메시지는 다음의 두 개의 필드로 확장될 수 있다:
● bid_win (낙찰받은 입찰 값): 이 필드는 현재 낙찰받은 입찰 값을 포함한다. 현재 노드의 입찰 값이 이 값보다 높으면, 그 현재 노드가 이 필드를 업데이트할 것이다. 현재 노드의 입찰 값이 이 필드의 값보다 작거나 같은 경우, 그 필드는 변경되지 않고 유지된다. 다른 실시예에서, 현재 노드의 입찰 값이 이 필드의 값과 동일하면, 그 필드도 또한 업데이트된다.
● bid_num (노드 카운터): 이 필드는 참여하는 캐싱 노드의 개수를 기록하고 있다. 따라서, 모든 캐싱 노드는 이 필드를 1 씩 증분시킬 것이다. bid_exp가 정의되었고(아래의 구성 정보 참조) bid_num이 bid_exp를 초과하면, bid_num은 0으로 재설정되고, bid_win은 비어있게 설정될 것이다. 이것은 또한 이전 경매의 종료와 새로운 캐싱 노드 그룹과의 새로운 경매의 시작을 표시할 것이다.
또한, 관심 메시지는 아래에 언급된 것과 같은 "요청 컨텍스트" 파라미터의 리스트를 운반할 수 있다:
● hop_count: 이 필드는 요청자로부터의 거리를 기록하고 있다. 모든 라우터는 이 필드를 1 씩 증분시킬 것이다.
● latency: 이 필드는 관심 메시지가 경험하는 대기 시간을 기록하고 있다. 각 라우터는 이전 홉으로부터의 측정된/추정된 대기 시간을 사용하여 이 필드를 증가시킨다.
경매를 수행하는 것을 지원하기 위해, 상기 데이터 메시지는 다음의 필드로 확장될 수 있다:
● ignore (무시 카운터): 이 필드는 경매에서 낙찰받지 못하여 데이터 객체를 캐싱하지 않을 예정인 캐싱 노드의 개수를 나타낸다. 본질적으로, 이 필드는 데이터 메시지가 캐싱되기 전에 통과해야 하는 캐싱 노드의 개수를 기록하고 있으며, 따라서 이 필드의 값은 매 홉마다 감소된다. 이 필드가 0의 값에 도달하면, 데이터는 (PIT의 "캐시" 필드가 아래에 참조되는 바와 같이, True 또는 False로 설정되어 있는지에 따라) 캐싱될 수 있으며, ignore 필드는 결과적으로 그 특정 캐싱 노드의 bid_ig의 값으로 설정될 것이며(아래의 PIT 참조), 즉 무시될 필요가 있는 후속 캐싱 노드의 카운트는 재설정된다.
경매를 수행하는 것을 지원하기 위해, 노드의 적어도 하나의 메모리에 저장된 PIT는 다음의 두 개의 필드로 확장될 수 있다:
● cache (입찰 정보): 이 필드는, 캐싱 노드가 관심 메시지의 bid_win 필드를 업데이트한 경우, True로 설정되고, 그렇지 않으면 False로 설정된다. True는 캐싱 노드가 인커밍 데이터 객체를 저장하기 위한 자신의 가용성을 제공했음을 의미한다(즉, 캐싱 노드는 데이터 객체의 캐싱시에 입찰 값을 갖는다). False는 캐싱 노드가 캐싱과 관련하여 인커밍 데이터 객체를 무시할 것임을 의미한다.
● bid_ig (낙찰받지 못한 입찰자 카운트): cache 필드가 True이면, 이 필드는 관심 메시지의 bid_num 필드의 값으로 설정되고, 그렇지 않으면 비어있게 될 것이다.
또한, 캐싱 노드는 아래에 기술된 바와 같이, 경매를 지원하기 위해 추가 파라미터를 저장할 수 있다:
● bid_exp: 이 필드는 하나의 경매 그룹에 참여할 수 있는 캐싱 노드의 개수를 나타낸다. 이 필드가 존재하지 않으면, 관심 경로의 모든 캐시는 동일한 경매에 참여할 것이다.
● auction_thresh (경매 임계 값): 이 임계 값보다 더 최근의 데이터를 가진 캐싱 노드는 경매에 참여하지 않을 것이다. 이 필드가 존재하지 않으면, 캐싱 노드는 저장한 데이터의 신선도(freshness)와는 무관하게, 경매에 참여할 것이다.
관심 메시지를 송신하는 프로세스 및 데이터 메시지를 수신하는 프로세스의 예가 도 4 내지 도 10의 도움으로 설명된다. 이 예를 위해, 컨텐츠 요청자가 발송한 관심 메시지, 즉 노드가 발신한 관심 메시지는 임의의 추가적인 필드를 갖지 않은 표준 관심 메시지처럼 보일 것이다. 이는 컨텐츠 요청자가 경매 불가지론자(auction-agnostic)가 되게 한다.
다른 실시예에서, 컨텐츠 요청자는 경매 메커니즘을 인지할 수 있고, 경매를 가능하게 하기 위해 관심 메시지 내에 추가 필드, 예를 들어, bid_win 및 bid_num을 포함할 수 있다. 이 필드의 값은 비어 있거나 정의되지 않은 상태로 남아 있거나, 실제의 잠재력있는 값의 범위 내에 있지 않는 값을 포함하여, 경로 내 제 1 노드에게 그곳에서 입찰이 시작되어야 한다는 것을 시그널링할 것이다.
도 4는 본 발명의 방법의 일 실시예에서 관심 메시지를 수신한 후에 수행되는 프로세스를 나타내는 흐름도이다. 캐싱 노드는, 단계(41)에서 인커밍 관심 메시지를 수신한 후, 단계(42)에서 요청된 데이터 객체가 자신의 캐시 메모리에 저장되어 있는지 여부를 결정할 것이다. 요청된 객체가 캐싱 노드에 의해 캐싱되었다면, 단계(43)에서 그에 따라 경매가 종료되었음을 결정하고, 단계(44)에서 데이터 객체를 포함하는 데이터 메시지를 만들고, 단계(45)에서 관심 경로를 통해 데이터 메시지를 다시 전송한다.
요청된 객체가 캐싱 노드에 의해 캐싱되지 않았다면, 캐싱 노드는 단계(46)에서, 관심 메시지가 bid_win 또는 bid_num과 같은 경매 특정 필드를 포함하는지 여부를 검사한다. 만약 그렇지 않은 경우, 캐싱 노드는 자신이 경매에 참여하는 관심 경로 상의 제 1 노드임을 결정하고 단계(50)을 수행한다. 단계(50)의 세부 사항은 도 5에 제공된다.
관심 메시지가 경매 특정 필드를 포함하면, 캐싱 노드는 단계(47)에서 자신이 경매에 참여하는 관심 경로 상의 제 1 노드가 아니라고 결정한다. 그런 다음, 캐싱 노드는 단계(48)에서 bid_num이 bid_exp-1과 같은지 여부를 검사하고, bid_num이 bid_exp-1과 동일한 경우, 즉 캐싱 노드가 새로운 경매 그룹의 제 1 노드인 경우, 단계(49)를 수행한다(따라서, 관심 메시지에서 운반되는 bid_win 필드를 무시해야 한다). 캐싱 노드는 bid_num이 bid_exp-1이 아닌 경우, 즉 캐싱 노드가 그의 이전 노드와 동일한 경매 그룹의 일부인 경우, 단계(51)를 수행한다. 단계(49 및 51)의 세부 사항은 각각 도 6 및 도 7에 제공된다.
캐싱 노드가 현재의 경매를 그의 실제의 만기 시간 전에 종료하기 위해 bid_exp 값을 오버라이드하는 것이 가능할 수 있다. 이는, 캐싱 노드가 낮은 대역폭의 업링크를 가지거나 캐싱 노드가 다른 타입의 네트워크의 접합부에, 예를 들어, 고정 네트워크와 차량의 ad hoc 네트워크(VANET)의 경계에 또는 대륙간 링크 간의 경계에 있을 때 유익할 수 있다.
경매에 참여하는 제 1 캐싱 노드는 단계(81)에서 먼저 (만약 정의된다면) 자신의 경매 임계 값을 검사할 것이며(도 5 참조), 그 노드에 캐싱된 데이터가 경매 임계 값보다 오래된 것이거나 또는 여전히 캐싱 슬롯이 사용 가능하다면, 입찰할 것을 결정할 것이다. 제 1 캐싱 노드는 그렇게 하기 위해, 단계(82)에서, 예를 들어 전술한 방식으로 입찰 값을 계산할 것이다. 그런 다음, 제 1 캐싱 노드는 단계(83)에서 PIT 내의 cache 엔트리를 true로 설정하고, 단계(84)에서 PIT 내의 bid_ig 엔트리를 0으로 설정할 것이다. 단계(84) 후에, 캐싱 노드는 단계(53)에서 요청 컨텍스트를 관심 메시지에 추가할 것이고, 단계(54)에서 값 0을 사용하여 bid_num 필드를 관심 메시지에 추가할 것이고, 단계(55)에서 계산된 입찰 값을 그의 값으로서 사용하여 bid_win 필드를 관심 메시지에 추가한 후, 단계(88)에서 정규 ICN 전달 전략에 의해 정의된 바와 같이 관심 메시지를 다음 홉으로 전달할 것이다.
그 노드에 캐싱된 데이터가 경매 임계 값보다 더 최근(younger)이고, 이용 가능한 캐싱 슬롯이 없는 경우, 캐싱 노드는 단계(85)에서 입찰하지 않기로 결정할 것이다. 그런 다음, 캐싱 노드는 단계(86)에서 PIT 내의 cache 엔트리를 false로 설정하고, 단계(87)에서 PIT 내의 bid_ig 엔트리를 정의되지 않은 상태로 남겨 둘 것이다. 단계(87) 후에, 캐싱 노드는 단계(56)에서 요청 컨텍스트를 관심 메시지에 추가할 것이고, 단계(57)에서 값 0을 사용하여 bid_num 필드를 관심 메시지에 추가할 것이며, 단계(58)에서 값이 없음을 사용하여 bid_win 필드를 관심 메시지에 추가한 후, 단계(88)에서 관심 메시지를 다음 홉으로 전달할 것이다.
새로운 경매 그룹의 제 1 캐싱 노드는 먼저 단계(81)에서 (만약 정의된다면) 자신의 경매 임계 값을 검사할 것이며(도 6 참조), 그 노드에 캐싱된 데이터가 경매 임계 값보다 오래된 것이거나 또는 여전히 캐싱 슬롯이 사용 가능하다면, 입찰하기로 결정할 것이다. 제 1 캐싱 노드는 그렇게 하기 위해, 단계(82)에서, 예를 들어, 전술한 방식으로 입찰 값을 계산할 것이다. 그런 다음, 제 1 캐싱 노드는 단계(83)에서 PIT 내의 cache 엔트리를 True로 설정하고, 단계(84)에서 PIT 내의 bid_ig 엔트리를 0으로 설정할 것이다. 단계(84) 후에, 캐싱 노드는 단계(63)에서 관심 메시지 내의 요청 컨텍스트를 업데이트할 것이고, 단계(64)에서 관심 메시지 내의 bid_num 필드를 값 0으로 설정할 것이고, 단계(65)에서 bid_win 필드를 계산된 입찰 값으로 설정한 후, 단계(88)에서 관심 메시지를 다음 홉으로 전달할 것이다.
그 노드에 캐싱된 데이터가 경매 임계 값보다 더 최근이고, 이용 가능한 캐싱 슬롯이 없는 경우, 캐싱 노드는 단계(85)에서 입찰하지 않기로 결정할 것이다. 그런 다음, 캐싱 노드는 단계(86)에서 PIT 내의 cache 엔트리를 False로 설정하고, 단계(87)에서 PIT 내의 bid_ig 엔트리를 정의되지 않은 상태로 남겨 둘 것이다. 단계(87) 후에, 캐싱 노드는 단계(66)에서 관심 메시지 내의 요청 컨텍스트를 업데이트할 것이고, 단계(67)에서 관심 메시지 내의 bid_num 필드를 0으로 설정할 것이며, 단계(68)에서 관심 메시지의 bid_win 필드를 값이 없음으로 설정한 후, 단계(88)에서 관심 메시지를 다음 홉으로 전달할 것이다.
캐싱 노드가 그의 이전 노드와 동일한 경매 그룹 내에 존재한다면, 그 캐싱 노드는 먼저 단계(81)에서 (만약 정의된다면) 자신의 경매 임계 값을 검사할 것이며(도 7 참조), 그 노드에 캐싱된 데이터가 경매 임계 값보다 오래된 것이거나 또는 여전히 캐싱 슬롯이 사용 가능하다면, 입찰하기로 결정할 것이다. 캐싱 노드는 그렇게 하기 위해, 단계(82)에서, 예를 들어, 전술한 방식으로 입찰 값을 계산할 것이다. 그 후, 캐싱 노드는 단계(71)에서 계산된 입찰 값이 수신된 관심 메시지의 bid_win 값보다 높은지 여부를 검사할 것이다. 만약 그러하다면, 캐싱 노드는 단계(83)에서 PIT 내의 cache 엔트리를 True로 설정할 것이고, 단계(72)에서 PIT 내의 bid_ig 엔트리를 bid_num+1로 설정할 것이다. 단계(72) 후에, 캐싱 노드는 단계(73)에서 관심 메시지 내의 요청 컨텍스트를 업데이트할 것이고, 단계(74)에서 관심 메시지 내의 bid_num 필드의 값을 1 만큼 증가시킬 것이며, 단계(75)에서 bid_win 필드를 계산된 입찰 값으로 설정한 후, 단계(88)에서 관심 메시지를 다음 홉으로 전달할 것이다.
단계(71)에서 계산된 입찰 값이 수신된 관심 메시지의 bid_win 값보다 높지 않거나, 캐싱 노드에 캐싱된 데이터가 경매 임계 값보다 더 최근이고, 이용 가능한 캐싱 슬롯이 없는 경우, 캐싱 노드는 단계(85)에서 입찰하지 않기로 결정할 것이다. 그런 다음, 캐싱 노드는 단계(86)에서 PIT 내의 캐시 엔트리를 False로 설정하고, 단계(87)에서 PIT 내의 bid_ig 엔트리를 정의되지 않은 상태로 남겨 둘 것이다. 단계(87) 후에, 캐싱 노드는 단계(76)에서 관심 메시지 내의 요청 컨텍스트를 업데이트할 것이고, 단계(77)에서 관심 메시지의 bid_num 필드의 값을 1 만큼 증가시킬 것이며, 단계(78)에서 관심 메시지의 bid_win 필드의 값을 변경되지 않은 상태로 남겨 둔 후, 단계(88)에서 관심 메시지를 다음 홉으로 전달할 것이다.
일단 관심 메시지가 데이터 객체의 사본을 보유하고 있는 노드(데이터 객체의 사본을 캐싱한 중간 노드 또는 생성 노드 자체, 예를 들어, 도 3의 서버(35))에 도달하면, 그 노드는 그 데이터 객체를 데이터 메시지 내에 패키징하고 그것을 관심 경로를 통해 다시 전송할 것이다. 데이터 객체의 사본을 보유하고 있는 노드에 의해 전송된 데이터 메시지는 표준 데이터 메시지의 포맷을 가질 수 있으며, 이는 컨텐츠 제공자가 경매 불가지론자가 되게 한다. 다른 실시예에서, 컨텐츠 제공자는 경매 메커니즘을 인지할 수 있고, 경매를 가능하게 하기 위해 데이터 메시지 내에 추가 필드, 예를 들어, ignore 필드를 포함할 수 있다. 도 4 내지 도 7의 흐름도는 현재 PIT에 관심이 기록되지 않은 요청된 데이터 객체를 위한 관심 메시지를 수신하는 캐싱 노드를 설명한다. 캐싱 노드가 PIT에 이미 관심이 기록된 관심 메시지를 수신할 경우, 다운스트림 노드는 이미 기록된 관심/요청된 데이터 객체 이름과 관련될 것이지만, 관심 메시지는 전달되지 않을 것이다. 따라서, 이 새로운 관심과 관련한 것에 대한 경매는 이 노드에서 종료된다.
도 8은 본 발명의 방법의 일 실시예에서 데이터 메시지를 수신한 후에 수행되는 프로세스를 나타내는 흐름도이다. 일단 노드가 단계(120)에서 데이터 메시지를 수신하면, 단계(121)에서 노드는 자신의 PIT 내에 데이터 객체에 대한 임의의 엔트리가 있는지 여부를 먼저 검사한다. PIT 내에 데이터 객체에 대한 엔트리가 없다면, 노드는 단계(127)에서 데이터 메시지가 그의 최종 목적지, 즉 관심 메시지의 발신자에 도달했으며 더 이상의 동작은 취해지지 않는다는 것을 결정한다. PIT 내에 데이터 객체에 대한 엔트리가 존재하는 경우, 노드는 단계(122)에서 노드가 수신된 데이터 메시지에 대한 중간 노드임을 결정한다. 노드가 단계(123)에서 캐싱을 지원한다고 결정하면, 노드는 단계(124)에서 PIT 내에 기록된 제 1 관심을 처리한다. 단계(124)의 세부 사항은 도 9에 제공된다. 노드가 단계(123)에서 캐싱을 지원하지 않는다고 결정하면, 노드는 단계(128)에서 이 데이터 객체에 대해 PIT 내에 기록된 하나 이상의 관심과 관련된 통신 인터페이스(들)를 통해 (변경되지 않은) 데이터 메시지를 전달한다.
PIT 내의 제 1 관심이 단계(124)에서 처리된 후, 노드는 단계(125)에서 PIT 내에 이 데이터 객체에 대한 임의의 다른 관심이 있는지 여부를 결정한다. PIT 내에 기록된 다른 관심이 없는 경우, 노드는 단계(129)에서 프로세스를 중지할 것이다. PIT 내에 기록된 다른 관심이 존재하는 경우, 이러한 다른 관심의 각각에 대해 단계(126)가 수행될 것이다. 단계(126)의 세부 사항은 도 10에 제공된다.
PIT 내의 제 1 관심에 대해, 캐싱 노드는 자신의 PIT 내의 cache 필드의 값이 단계(141)에서 "True"로 설정되는지 여부를 검사할 것이다(도 9 참조). 만약 그러하다면, 캐싱 노드는 단계(91)에서, 데이터 메시지가 ignore 필드를 포함하는지 여부를 검사할 것이고, 만약 그러하다면, ignore 필드가 0으로 설정되는지 여부를 검사할 것이다. ignore 필드가 없으면, (경매에 참여하는) 다른 업스트림 노드가 데이터 객체를 캐싱하지 않았음을 의미한다. Ignore 필드가 존재하지 않거나 0으로 설정되어 있다면, 노드는 단계(142)에서 항목 캐싱을 진행할 것이고, 그 후 단계(143)에서 데이터 메시지의 ignore 필드를 자신의 PIT의 bid_ig 필드의 값으로 설정할 것이다. 단계(143) 후에, 단계(144)에서 새로운 ignore 값을 갖는 데이터 메시지가 만들어지고, 단계(145)에서 관심 경로 상에서 더 아래로 전달된다.
그러나, 단계(91)에서 ignore 필드의 값이 0보다 큰 것으로 결정되면, 노드는 단계(93)에서 데이터 항목을 캐싱하지 않기로 결정할 것이다. 노드는 그 후 단계(95)에서 ignore 필드의 값을 1 만큼 감소시킨 후, 단계(144)에서 새로운 ignore 값을 사용하여 데이터 메시지를 만들고, 단계(145)에서 이 데이터 메시지를 관심 경로 상에서 더 아래로 전달할 것이다.
이와는 반대로, 만약 단계(141)에서 그 PIT 내의 cache 필드의 값이 "False"로 설정된다고 결정되면, 노드는 단계(92)에서 데이터 객체를 캐싱하지 않기로 결정할 것이다. 그 다음, 노드는 단계(145)에서 데이터 메시지를 변경되지 않은 상태로 관심 경로 상에서 더 아래로, 즉 관심 메시지를 수신한 다운스트림 노드로 전달할 것이다.
PIT 내에 기록된 제 1 관심 이외의 관심에 대해, 캐싱 노드는 단계(141)에서 그 PIT 내의 cache 필드의 값이 "True"로 설정되어 있는지 여부를 검사할 것이다(도 10 참조). 만약 그러하다면, 캐싱 노드는 단계(106)에서, 예를 들어, 데이터 객체에 대해 PIT 내의 이전 관심을 처리할 때, 데이터 객체가 이미 캐싱되어 있는지 여부를 검사할 것이다. 만약 그렇지 않다면, 캐싱 노드는 단계(142)에서 데이터 객체를 캐싱하는 것을 진행하고, 그 후 단계(143)로 진행할 것이다. 만약 데이터 객체가 이미 캐싱되었다면, 단계(142)는 스킵되고 단계(143)는 단계(106) 이후에 바로 수행된다. 단계(143)에서, 캐싱 노드는 데이터 메시지의 ignore 필드를 자신의 PIT의 bid_ig 필드의 값으로 설정할 것이다. 단계(143) 후에, 단계(144)에서 새로운 ignore 값을 갖는 데이터 메시지가 만들어지고, 단계(145)에서 관심 경로 상에서 더 아래로 전달된다.
이와는 반대로, 만약 단계(141)에서 그 PIT 내의 cache 필드의 값이 "False"로 설정된다고 결정되면, 노드는 단계(102)에서 데이터 객체를 캐싱하지 않기로 결정할 것이다. 그 후, 캐싱 노드는 단계(105)에서 데이터 메시지의 ignore 필드를 0으로 설정할 것이고, 단계(144)에서 새로운 ignore 값을 사용하여 데이터 메시지를 만들고, 단계(145)에서 이 데이터 메시지를 관심 경로 상에서 더 아래로 전달할 것이다.
다른 실시예에서, 데이터는 요청자와 데이터 소스 간에 단지 한 번만 캐싱되는 것이 바람직할 수 있다. 이 경우, 경로 상의 모든 노드는 동일한 경매에 참여할 수 있다. 즉, 하나의 경매 그룹만이 존재할 것이고, 캐싱 노드는 bid_exp 필드를 저장할 수 없다(또는 bid_exp 필드의 값을 무시할 수 있다). 예를 들어, bid_exp가 특별한 값, 예를 들어, 0을 가질 때, 캐싱 노드는 오직 하나의 경매 그룹만이 존재한다는 것을 알 수 있다.
bid_exp 필드는 경매 그룹의 개수가 데이터 객체의 소스에 의해 결정된다면 존재하지 않을 수도 있다. 여분의 정보를 업링크 캐싱 노드에 전달할 때, 도움이 될 수 있는 많은 필드가 관심 메시지에 부착될 수 있다. 이 정보는 요청된 컨텐츠를 가진 캐싱 노드에 의해 또는 서버에 의해 사용되어, bid_exp의 적절한 값을 선택할 수 있다. 따라서, 사용자에서 소스로 가는 도중에 bid_exp를 설정하는 대신, 이 경우 bid_exp 값은 서버에서 사용자를 향하는 리턴 경로 상에서 설정될 것이다.
도 11은 본 발명의 관심 메시지, 데이터 메시지 및 PIT에 삽입되는 필드 및 값의 일 예를 도시한다. 도 11은 도 3과 동일한 네트워크 경로를 도시한다. 이 예에서, 노드의 입찰 값은 그 LRU 값에만 기초하고, 3 개의 노드의 bid_exp 및 3초의 auction_thresh가 사용된다. 이 예에서, 네트워크 노드는 그 LRU 값이 경매 임계 값 auction_thresh보다 높거나 같을 때만 입찰한다. LRU 값은 최소 최근 사용 캐싱된 데이터 객체가 액세스된지 얼마나 되었는지를 나타낸다.
관심 메시지를 발신하는 사용자 디바이스(31)는 경매 불가지론적이며, 즉, 캐싱 노드(11)에 추가 필드를 갖지 않는 종래의 관심 메시지를 전송한다. 캐싱 노드(11)는 사용자 디바이스(31)로부터 관심 메시지를 수신하지만, 그의 LRU 값(1 초)이 경매 임계 값보다 낮기 때문에 입찰하지 않기로 결정한다. 캐싱 노드는 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 False로 설정하고 그의 PIT의 낙찰받지 못한 입찰자 카운터(예를 들어, bid_ig 필드의 값)를 정의되지 않은 상태로 남겨 둔다. 캐싱 노드가 경매에 참여한 제 1 노드이기 때문에, 캐싱 노드는 관심 메시지에 입찰 값(bid_win으로 지칭되기도 함) 및 bid_num 필드를 추가한 후, 이 관심 메시지를 캐싱 노드(12)로 전달한다. 입찰 값은 정의되지 않은 상태로 유지되고 bid_num 값(즉, 노드 카운터)은 0으로 설정된다.
캐싱 노드(12)는 (다운스트림) 캐싱 노드(11)로부터 관심 메시지를 수신하지만, 그의 LRU 값(1 초)이 경매 임계 값보다 낮기 때문에 입찰하지 않기로 결정한다. 캐싱 노드는 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 False로 설정하고 그의 PIT의 낙찰받지 못한 입찰자 카운트(예를 들어, bid_ig 필드의 값)를 정의되지 않은 상태로 남겨 둔다. 관심 메시지에 관해서, 캐싱 노드(12)는 입찰 값을 정의되지 않은 상태로 남겨 두고, bid_num 값(즉, 노드 카운터)을 2로 증가시킨 후, 관심 메시지를 (업스트림) 캐싱 노드(13)로 전달한다.
캐싱 노드(13)는 캐싱 노드(12)로부터 관심 메시지를 수신하지만, 그의 LRU 값(2 초)이 경매 임계 값보다 낮기 때문에 입찰하지 않기로 결정한다. 캐싱 노드(13)는 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 False로 설정하고 그의 PIT의 낙찰받지 못한 입찰자 카운트(예를 들어, bid_ig 필드의 값)를 정의되지 않은 상태로 남겨 둔다. 관심 메시지에 관해서, 캐싱 노드(13)는 입찰 값을 정의되지 않은 상태로 남겨 두고, bid_num 값을 2로 증가시키고, 그 후 관심 메시지를 캐싱 노드(14)에 전달한다.
캐싱 노드(14)는 캐싱 노드(13)로부터 관심 메시지를 수신하고, 먼저 bid_num이 bid_exp-1과 같다는 것, 즉 캐싱 노드(14)가 새로운 경매 그룹의 제 1 노드라는 것을 결정한다. 캐싱 노드(14)는 그 후 그의 LRU 값(5 초)이 경매 임계 값보다 높기 때문에 입찰 값을 계산하기로 결정한다. 캐싱 노드(14)는 (LRU 값과 동일한) 5의 입찰 값을 계산한다. 다른 실시예에서, 입찰 값은 값 0과 1 사이에서 정규화된다(5의 LRU 값은 식 1에 따라 정규화될 수 있고, 예를 들어, 0.5의 값을 취할 수 있다). 캐싱 노드(14)는 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 True로 설정하고, 그의 PIT의 낙찰받지 못한 입찰자 카운트(예를 들어, bid_ig 필드의 값)를 0으로 설정한다. 캐싱 노드(14)는 그 후 관심 메시지의 입찰 값을 그의 계산된 입찰 값으로 설정하고, bid_num(즉, 노드 카운터)을 0으로 재설정한 후, 관심 메시지를 캐싱 노드(15)로 전달한다.
캐싱 노드(15)는 캐싱 노드(14)로부터 관심 메시지를 수신하고, 그의 LRU 값(6 초)이 경매 임계 값보다 높기 때문에 입찰 값을 계산하기로 결정한다. 캐싱 노드(15)는 (LRU 값과 동일한) 6의 입찰 값을 계산한다. 계산된 입찰 값 6이 수신된 입찰 값 5보다 높기 때문에, 캐싱 노드(15)는 관심 메시지의 입찰 값을 계산된 입찰 값으로 설정하고, 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 True로 설정하고, 그의 PIT의 낙찰받지 못한 입찰자 카운트(예를 들어, bid_ig 필드의 값)를 bid_num+1, 즉 1로 설정한다. 캐싱 노드(15)는 또한 bid_num(즉, 노드 카운터) 값을 1로 증가시키고, 그 후 관심 메시지를 캐싱 노드(16)로 전달한다.
캐싱 노드(16)는 캐싱 노드(15)로부터 관심 메시지를 수신하고, 그의 LRU 값(4 초)이 경매 임계 값보다 높기 때문에 입찰 값을 계산하기로 결정한다. 캐싱 노드(16)는 (LRU 값과 동일한) 4의 입찰 값을 계산한다. 계산된 입찰 값 4가 수신된 입찰 값 6보다 낮기 때문에, 캐싱 노드(16)는 관심 메시지 내의 입찰 값 필드를 변경되지 않은 상태로 남겨 두고, 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 False로 설정하고, 그의 PIT의 낙찰받지 못한 입찰자 카운트를 정의되지 않은 상태로 설정한다. 캐싱 노드(16)는 또한 bid_num(즉, 노드 카운터) 값을 2로 증가시키고, 그 후 관심 메시지를 캐싱 노드(17)로 전달한다.
캐싱 노드(17)는 캐싱 노드(16)로부터 관심 메시지를 수신하고, 먼저 bid_num이 bid_exp-1과 같다는 것, 즉 캐싱 노드(17)가 새로운 경매 그룹의 제 1 노드라는 것을 결정한다. 캐싱 노드(17)는 그 후 그의 LRU 값(4 초)이 경매 임계 값보다 높기 때문에 입찰 값을 계산하기로 결정한다. 캐싱 노드(17)는 (LRU 값과 동일한) 4의 입찰 값을 계산한다. 캐싱 노드(17)는 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 True로 설정하고, 그의 PIT의 낙찰받지 못한 입찰자 카운트(예를 들어, bid_ig 필드의 값)를 0으로 설정한다. 캐싱 노드(17)는 그 후 관심 메시지의 입찰 값을 그의 계산된 입찰 값으로 설정하고, bid_num(즉, 노드 카운터)을 0으로 재설정한 후, 관심 메시지를 캐싱 노드(18)로 전달한다.
캐싱 노드(18)는 캐싱 노드(17)로부터 관심 메시지를 수신하고, 그의 LRU 값(5 초)이 경매 임계 값보다 높기 때문에 입찰 값을 계산하기로 결정한다. 캐싱 노드(18)는 (LRU 값과 동일한) 5의 입찰 값을 계산한다. 계산된 입찰 값 5가 수신된 입찰 값 4보다 높기 때문에, 캐싱 노드(18)는 관심 메시지의 입찰 값을 계산된 입찰 값으로 설정하고, 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 True로 설정하고, 그의 PIT의 낙찰받지 못한 입찰자 카운트(예를 들어, bid_ig 필드의 값)를 bid_num+1, 즉 1로 설정한다. 캐싱 노드(18)는 또한 bid_num(즉, 노드 카운터) 값을 1로 증가시키고, 그 후 관심 메시지를 캐싱 노드(19)로 전달한다.
캐싱 노드(19)는 캐싱 노드(18)로부터 관심 메시지를 수신하고, 그의 LRU 값(6 초)이 경매 임계 값보다 높기 때문에 입찰 값을 계산하기로 결정한다. 캐싱 노드(19)는 (LRU 값과 동일한) 6의 입찰 값을 계산한다. 계산된 입찰 값 6이 수신된 입찰 값 5보다 높기 때문에, 캐싱 노드(19)는 관심 메시지의 입찰 값을 계산된 입찰 값으로 설정하고, 그의 PIT의 입찰 정보(예를 들어, cache 필드의 값)를 True로 설정하고, 그의 PIT의 낙찰받지 못한 입찰자 카운트(예를 들어, bid_ig 필드의 값)를 bid_num+1, 즉 2로 설정한다. 캐싱 노드(19)는 또한 bid_num(즉, 노드 카운터) 값을 2로 증가시키고, 그 후 관심 메시지를 서버(35)로 전달한다.
서버(35)가 캐싱 노드(19)로부터 관심 메시지를 수신할 경우, 서버(35)는 입찰 값 및 bid_num 필드를 인식하지 못하지만, 요청된 데이터 객체를 저장했다는 것을 결정하고, 요청된 데이터 객체를 데이터 메시지로 캐싱 노드(19)에 송신한다. 서버(35)는 경매 불가지론적이며, 즉, 캐싱 노드(19)에 추가 필드를 갖지 않는 종래의 관심 메시지를 전송한다.
캐싱 노드(19)는 서버(35)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 True로 설정되고, 무시 카운터가 수신된 데이터 메시지에 존재하지 않음을 결정한다. 결론적으로, 캐싱 노드(19)는 그의 경매 그룹에서 입찰을 낙찰받았으며 데이터 객체를 캐싱한다는 것이다. 캐싱 노드(19)는 그런 다음 데이터 메시지에 무시 카운터를 추가하고, 데이터 메시지를 낙찰받지 못한 입찰자 카운트의 값(예를 들어, bid_ig 필드의 값), 즉 2로 설정한 후, 그 데이터 메시지를 캐싱 노드(18)로 전달한다.
캐싱 노드(18)는 (업스트림) 캐싱 노드(19)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 True로 설정되는 것을 결정하고, 수신된 데이터 메시지로부터, 무시 카운터가 0으로 설정되지 않음을 결정한다. 결론적으로, 캐싱 노드(18)는 그의 경매 그룹에서 입찰을 낙찰받지 못했으며 데이터 객체를 캐싱하지 않는다는 것이다. 캐싱 노드(18)는 그런 다음 무시 카운터의 값을 1 만큼, 즉 1로 감소시킨 후, 데이터 메시지를 (다운 스트림) 캐싱 노드(17)로 전달한다.
캐싱 노드(17)는 캐싱 노드(18)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 True로 설정되는 것을 결정하고, 수신된 데이터 메시지로부터, 무시 카운터가 0으로 설정되지 않음을 결정한다. 결론적으로, 캐싱 노드(17)는 그의 경매 그룹에서 입찰을 낙찰받지 못했으며 데이터 객체를 캐싱하지 않는다는 것이다. 캐싱 노드(17)는 그런 다음 무시 카운터의 값을 1 만큼, 즉 0으로 감소시킨 후, 데이터 메시지를 캐싱 노드(16)로 전달한다.
캐싱 노드(16)는 캐싱 노드(17)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 False로 설정되는 것을 결정한다. 결론적으로, 캐싱 노드(16)는 데이터 객체를 저장하기 위해 입찰을 낙찰받지 못했으며 그 데이터 객체를 캐싱하지 않는다는 것이다. 캐싱 노드(16)는 무시 카운터의 값을 0에서 변경되지 않은 상태로 남겨 두며, 데이터 메시지를 캐싱 노드(15)로 전달한다.
캐싱 노드(15)는 캐싱 노드(16)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 True로 설정되는 것을 결정하고, 수신된 데이터 메시지로부터, 무시 카운터가 0으로 설정된다는 것을 결정한다. 결론적으로, 캐싱 노드(15)는 그의 경매 그룹에서 입찰을 낙찰받았으며 데이터 객체를 캐싱한다는 것이다. 캐싱 노드(15)는 그런 다음 데이터 메시지의 무시 카운터를 낙찰받지 못한 입찰자 카운트의 값(예를 들어, bid_ig 필드의 값), 즉 1로 설정한 후, 그 데이터 메시지를 캐싱 노드(14)로 전달한다.
캐싱 노드(14)는 캐싱 노드(15)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 True로 설정되는 것을 결정하고, 수신된 데이터 메시지로부터, 무시 카운터가 0으로 설정되지 않음을 결정한다. 결론적으로, 캐싱 노드(14)는 그의 경매 그룹에서 입찰을 낙찰받지 못했으며 데이터 객체를 캐싱하지 않는다는 것이다. 캐싱 노드(14)는 그런 다음 무시 카운터의 값을 1 만큼, 즉 0으로 감소시킨 후, 데이터 메시지를 캐싱 노드(13)로 전달한다.
캐싱 노드(13)는 캐싱 노드(14)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 False로 설정되는 것을 결정한다. 결론적으로, 캐싱 노드(13)는 데이터 객체를 저장하기 위해 입찰을 낙찰받지 못했으며 그 데이터 객체를 캐싱하지 않는다는 것이다. 캐싱 노드(13)는 무시 카운터의 값을 0에서 변경되지 않은 상태로 남겨 두며, 데이터 메시지를 캐싱 노드(12)로 전달한다.
캐싱 노드(12)는 캐싱 노드(13)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 False로 설정되는 것을 결정한다. 결론적으로, 캐싱 노드(12)는 데이터 객체를 저장하기 위해 입찰을 낙찰받지 못했으며 그 데이터 객체를 캐싱하지 않는다는 것이다. 캐싱 노드(12)는 무시 카운터의 값을 0에서 변경되지 않은 상태로 남겨 두며, 데이터 메시지를 캐싱 노드(11)로 전달한다.
캐싱 노드(11)는 캐싱 노드(12)로부터 데이터 메시지를 수신하고, 그의 PIT로부터, 입찰 정보(예를 들어, cache 필드의 값)가 False로 설정되는 것을 결정한다. 결론적으로, 캐싱 노드(11)는 데이터 객체를 저장하기 위해 입찰을 낙찰받지 못했으며 그 데이터 객체를 캐싱하지 않는다는 것이다. 캐싱 노드(11)는 무시 카운터의 값을 0에서 변경되지 않은 상태로 남겨 두며, 데이터 메시지를 사용자 디바이스(31)로 전달한다. 사용자 디바이스(31)는 무시 카운터를 인식하지만, 이 데이터 객체에 대한 엔트리가 PIT에 존재하지 않으며, 따라서 데이터 메시지가 컨텐츠 요청자에 도달했음을 결정한다.
다른 실시 예에서, 캐싱 노드는 자신의 네트워크를 보다 효율적으로 활용하기 위해 네트워크 서비스 제공자(NSP)에 의해 사용되는 캐싱 프록시 서버이다. 상이한 타입의 프록시 서버는 사용자 에이전트(UA)와 컨텐츠 서비스 제공자(CSP) 사이의 다양한 지점에 상주할 수 있다. 프록시 서버가 컨텐츠를 캐싱할 수 있는 경우, 그 프록시 서버는 통상적으로 캐싱 프록시라고 지칭된다.
HTTP 요청 및 응답에 특별 입찰 HTTP 엔티티 헤더를 추가하거나 캐시 제어 헤더를 추가 또는 확장함으로써 캐싱 프록시에서 경매 기반 캐싱을 가능하게 할 수 있다. HTTP 요청 및 응답에 캐시 제어 헤더를 추가하거나 확장하는 것은 HTTP 프로토콜 사양을 변경하지 않고도 수행될 수 있으며 RFC 2616 섹션 14.9.6에 따라 하위 호환(backwards compatible)이 가능하다. 또한 HTTP 요청과 응답에 여분의 엔티티 헤더를 추가하는 것은 RFC 2616 섹션 7.1에서 지원된다.
경매 기반 캐싱은 bid_win 및 bid_num 필드와 선택적으로 hop_count 및 latency 필드를 HTTP 요청의 캐시 제어 헤더 또는 엔티티 헤더에 추가하고 ignore 필드를 HTTP 응답의 캐시 제어 헤더 또는 엔티티 헤더에 추가함으로써 가능해진다. 하나 이상의 테이블 또는 데이터베이스를 포함하는 캐싱 프록시는 또한 bid_ig, cache 및 선택적으로 bid_exp 및 auction_thresh 필드를 사용하여 확장될 것이다. 도 3 내지 도 11은 관심 메시지가 HTTP 요청으로서 판독되고 데이터 메시지가 HTTP 응답으로서 판독되는 이 실시예에도 적용된다.
중간 캐싱 프록시가 HTTP 요청을 수신하고, 제 1 노드이며, 입찰하기로 결정할 경우(도 5의 참조 번호 82), 캐싱 프록시는 먼저 캐시 제어 헤더 또는 엔티티 헤더가 HTTP 요청에 존재하는지 여부를 검사한다. 만약 존재하는 경우, 캐싱 프록시는 bid_num 및 bid_win 필드가 캐시 제어 헤더 또는 엔티티 헤더에 존재하는지 여부를 검사한다. 만약 존재한다면, 캐싱 프록시는 도 5의 흐름과 함께 계속된다. HTTP 요청에 캐시 제어 헤더 또는 엔티티 헤더가 존재하지 않으면, 캐싱 프록시는 이를 추가할 것이다. 만약 캐시 제어 헤더 또는 엔티티 헤더가 HTTP 요청에 존재하지만 bid_num 및 bid_win 필드를 포함하지 않으면, 캐싱 프록시는 이 필드를 엔티티 헤더에 추가하거나, 또는 이 필드를 추가함으로써 HTTP 요청의 캐시 제어 헤더를 확장한다. 그 후, 캐싱 프록시는 도 5의 흐름과 함께 계속된다.
도 12는 도 2 및 도 4 내지 도 10을 참조하여 기술된 방법을 수행할 수 있는 예시적인 데이터 처리 시스템을 도시한 블록도이다.
도 12에 도시된 바와 같이, 데이터 처리 시스템(300)은 시스템 버스(306)를 통해 메모리 요소(304)에 결합된 적어도 하나의 프로세서(302)를 포함할 수 있다. 이와 같이, 데이터 처리 시스템은 메모리 요소(304) 내에 프로그램 코드를 저장할 수 있다. 또한, 프로세서(302)는 시스템 버스(306)를 통해 메모리 요소(304)로부터 액세스된 프로그램 코드를 실행할 수 있다. 일 양태에서, 데이터 처리 시스템은 프로그램 코드를 저장 및/또는 실행하는 데 적합한 컴퓨터로 구현될 수 있다. 그러나, 데이터 처리 시스템(300)은 본 명세서에서 기술된 기능을 수행할 수 있는 프로세서 및 메모리를 포함하는 임의의 시스템의 형태로 구현될 수 있음을 알아야 한다.
메모리 요소(304)는, 예를 들어, 로컬 메모리(308) 및 하나 이상의 대용량 저장 디바이스(310)와 같은 하나 이상의 물리적 메모리 디바이스를 포함할 수 있다. 로컬 메모리는 프로그램 코드의 실제 실행 동안 일반적으로 사용되는 랜덤 액세스 메모리 또는 다른 비 영구적인 메모리 디바이스(들)를 지칭할 수 있다. 대용량 저장 디바이스는 하드 드라이브 또는 다른 영구 데이터 저장 디바이스로 구현될 수 있다. 처리 시스템(300)은 또한 실행 중에 프로그램 코드가 대용량 저장 디바이스(310)로부터 검색되어야 하는 횟수를 감소시키기 위해 적어도 일부 프로그램 코드의 임시 저장을 제공하는 하나 이상의 캐시 메모리(미도시)를 포함할 수 있다.
입력 디바이스(312) 및 출력 디바이스(314)로 도시된 입력/출력(I/O) 디바이스는 선택적으로 데이터 처리 시스템에 결합될 수 있다. 입력 디바이스의 예는 키보드, 마우스와 같은 포인팅 디바이스 등을 포함할 수 있지만, 이에 국한되는 것은 아니다. 출력 디바이스의 예는 모니터 또는 디스플레이, 스피커 등을 포함할 수 있지만, 이에 국한되는 것은 아니다. 입력 및/또는 출력 디바이스는 데이터 처리 시스템에 직접 결합될 수 있거나, 또는 개입된 I/O 제어기를 통해 결합될 수 있다.
일 실시예에서, 입력 및 출력 디바이스는 결합된 입력/출력 디바이스(입력 디바이스(312) 및 출력 디바이스(314)를 둘러싸는 파선으로 도 12에 도시 됨)로 구현될 수 있다. 이러한 결합된 디바이스의 예는 때때로 "터치 스크린 디스플레이" 또는 간단히 "터치 스크린"이라고 지칭되기도 하는 터치 감지 디스플레이이다. 그러한 실시예에서, 그 디바이스로의 입력은 터치 스크린 디스플레이 상에서 또는 그 부근에서 물리적인 물체, 예를 들어, 스타일러스 또는 사용자의 손가락의 움직임에 의해 제공될 수 있다.
네트워크 어댑터(316)는 또한 데이터 처리 시스템에 결합되어 이 데이터 처리 시스템이 개재된 사설 또는 공중 네트워크를 통해 다른 시스템, 컴퓨터 시스템, 원격 네트워크 디바이스 및/또는 원격 저장 디바이스에 연결될 수 있게 한다. 네트워크 어댑터는 상기 시스템, 디바이스 및/또는 네트워크에 의해 데이터 처리 시스템(300)으로 송신되는 데이터를 수신하기 위한 데이터 수신기 및 데이터 처리 시스템(300)으로부터의 데이터를 상기 시스템, 디바이스 및/또는 네트워크로 송신하는 데이터 송신기를 포함할 수 있다. 모뎀, 케이블 모뎀 및 이더넷 카드는 데이터 처리 시스템(300)과 함께 사용될 수 있는 상이한 타입의 네트워크 어댑터의 예이다.
도 12에 도시된 바와 같이, 메모리 요소(304)은 애플리케이션(318)을 저장할 수 있다. 다양한 실시예에서, 애플리케이션(318)은 로컬 메모리(308) 또는 하나 이상의 대용량 저장 디바이스(310)에 저장되거나, 상기 로컬 메모리 및 대용량 저장 디바이스로부터 분리될 수 있다. 데이터 처리 시스템(300)은 애플리케이션(318)의 실행을 가능하게 할 수 있는 운영 시스템(도 17에 미도시)을 더 실행할 수 있음을 이해해야 한다. 실행 가능 프로그램 코드의 형태로 구현되는 애플리케이션(318)은 데이터 처리 시스템 (300)에 의해, 예를 들어, 프로세서(302)에 의해 실행될 수 있다. 애플리케이션 실행에 응답하여, 데이터 처리 시스템(300)은 본원에 기술된 하나 이상의 동작 또는 방법 단계를 수행하도록 구성될 수 있다.
본 발명은 또한 적어도 하나의 통신 인터페이스(331) 및 적어도 하나의 프로세서(335)를 포함하는 엔드포인트 노드(330)(도 13 참조)에 관한 것이다. 적어도 하나의 프로세서(335)는 (예들 들어, 사용자가 요청된 데이터 객체의 이름을 지정할 수 있게 함으로써) 요청된 데이터 객체의 이름을 결정하고; 입찰 값을 삽입하기 위한 입찰 값 필드와 요청된 데이터 객체의 이름을 포함하는 관심 메시지를 생성하고 - 상기 입찰 값은 요청된 데이터 객체를 캐싱할 권한의 경매가 개시되어야 한다는 것을 나타내기 위해 정의되지 않은 상태(예를 들어, 값이 존재하지 않음 또는 값 ‘0’)로 남겨 짐 - ; 관심 메시지를 적어도 하나의 통신 인터페이스(331)를 통해 업스트림 노드(11)에 송신하도록 구성된다. 엔드포인트 노드(330)는, 예를 들어, 사용자 디바이스(31)일 수 있고, 예를 들어, 사용자 인터페이스, 예컨대, 터치 스크린을 포함할 수 있다. 엔드포인트 노드(330)는, 예를 들어, 랩탑, 태블릿, 모바일 폰 또는 차량에 내장된 디바이스일 수 있다. 적어도 하나의 프로세서(335)는, 예를 들어, ARM 또는 Qualcomm 프로세서일 수 있다. 엔드포인트 노드(330)는 엔드포인트 노드를 위한 전형적인 다른 컴포넌트, 예를 들어, 메모리 및 전원을 더 포함할 수 있다. 적어도 하나의 통신 인터페이스(331)는, 예를 들어, 무선 데이터(예를 들어, 셀룰러 및/또는 WiFi) 트랜시버를 포함할 수 있다.
본 발명의 다양한 실시예는 컴퓨터 시스템과 함께 사용하기 위한 프로그램 제품으로 구현될 수 있으며, 여기서 프로그램 제품의 프로그램(들)은 (본 명세서에 기술된 방법을 포함하는) 실시예의 기능을 정의한다. 일 실시예에서, 프로그램(들)은 다양한 비 일시적인 컴퓨터 판독 가능 저장 매체에 포함될 수 있으며, 여기서, 본 명세서에 사용되는 바와 같은 "비 일시적 컴퓨터 판독 가능 저장 매체"라는 표현은 모든 컴퓨터 판독 가능 매체를 포함하되, 유일한 예외 사항은 일시적인 전파 신호이다. 다른 실시예에서, 프로그램(들)은 다양한 일시적 컴퓨터 판독 가능 저장 매체에 포함될 수 있다. 예시적인 컴퓨터 판독 가능 저장 매체는 (i) 정보가 영구 저장되는 비 기록 가능 저장 매체(예를 들어, CD-ROM 드라이브에 의해 판독 가능한 CD-ROM 디스크와 같은 컴퓨터 내의 판독 전용 메모리 디바이스, ROM 칩 또는 임의의 타입의 고체 상태 비 휘발성 반도체 메모리); 및 (ii) 변경 가능한 정보가 저장되는 기록가능한 저장 매체(예를 들어, 플래시 메모리, 디스켓 드라이브 또는 하드디스크 드라이브 내의 플로피 디스크 또는 임의의 타입의 고체 상태 랜덤 액세스 반도체 메모리)를 포함하지만, 이에 국한되는 것은 아니다. 컴퓨터 프로그램은 본원에서 기술된 프로세서(302)상에서 실행될 수 있다.
본원에서 사용되는 용어는 특정 실시예를 기술하기 위한 목적으로만 사용되며, 본 발명을 제한하고자 하는 것은 아니다. 본원에서 사용되는 바와 같이, 단수 형태는 문맥상 다르게 명시적으로 지시하지 않는 한, 복수 형태를 또한 포함하는 것으로 의도된다. 본 명세서에서 사용되는 "포함한다" 및/또는 "포함하는"이라는 용어는 명시된 특징, 정수, 단계, 동작, 요소, 및/또는 컴포넌트의 존재를 명시하지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 컴포넌트 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다는 것이 또한 이해될 것이다.
아래의 청구범위에서 모든 수단 또는 단계 구성 요소(all means or step plus function elements)의 대응하는 구조, 재료, 작용 및 균등물은 구체적으로 청구된 바와 같은 다른 청구된 요소와 조합하여 기능을 수행하기 위한 임의의 구조, 재료 또는 작용을 포함하도록 의도된다. 본 발명의 실시예에 대한 기술은 설명의 목적으로 제시되었지만, 개시된 형태의 구현예에 한정되거나 국한되는 것으로 의도된 것은 아니다. 본 발명의 범주 및 사상을 벗어나지 않으면서 많은 수정 및 변형이 행해질 것이라는 것이 당업자에게는 명백할 것이다. 본 실시예는, 본 발명의 원리 및 일부 실제 응용을 가장 잘 설명하고, 당업자가 고려된 특정 용도에 적합한 다양한 변형을 가진 다양한 실시예를 위해 본 발명을 이해할 수 있도록 하기 위해, 선택 및 기술되었다.

Claims (16)

  1. 네트워크 노드(15)에 있어서,
    적어도 하나의 통신 인터페이스(31-2)와;
    적어도 하나의 메모리(5)와;
    적어도 하나의 프로세서(7)를 포함하고,
    상기 적어도 하나의 프로세서(7)는,
    다운스트림 노드(14)로부터 상기 적어도 하나의 통신 인터페이스(31) 상의 관심 메시지 - 상기 관심 메시지는 요청된 데이터 객체의 이름을 포함함 - 를 수신하고;
    상기 요청된 데이터 객체를 상기 적어도 하나의 메모리(5)에 저장하기 위해 입찰할지(bid) 여부를 결정하고;
    입찰 값을 계산하고;
    상기 적어도 하나의 통신 인터페이스(32) 상의 업스트림 노드(16)에 상기 관심 메시지 - 상기 관심 메시지는 적어도 입찰할지의 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - 를 전달(forward)하고;
    상기 적어도 하나의 통신 인터페이스(32) 상의 상기 업스트림 노드(16)로부터 상기 요청된 데이터 객체를 포함하는 데이터 메시지를 수신하고;
    적어도 상기 데이터 메시지로부터 상기 네트워크 노드(15)가 상기 입찰을 낙찰받았는지 여부를 결정하고;
    상기 네트워크 노드(15)가 상기 입찰을 낙찰받았다면 상기 적어도 하나의 메모리(5) 내에 상기 데이터 객체를 저장하고;
    상기 적어도 하나의 통신 인터페이스(31) 상의 상기 다운스트림 노드(14)에 상기 데이터 메시지를 전달하도록 구성되는 것인, 네트워크 노드(15).
  2. 제 1 항에 있어서,
    상기 수신된 관심 메시지는 수신된 입찰 값을 더 포함하고, 상기 적어도 하나의 프로세서(7)는, 입찰할지 여부에 대한 상기 결정이 긍정이었고 상기 계산된 입찰 값이 상기 수신된 입찰 값보다 높은 입찰을 나타내는 경우, 상기 관심 메시지에 상기 계산된 입찰 값을 포함하도록 구성되는 것인, 네트워크 노드(15).
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 프로세서(7)는 또한, 상기 네트워크 노드(15)가 상기 계산된 입찰 값을 상기 관심 메시지 내에 포함했는지 여부를 나타내는 입찰 정보를 상기 적어도 하나의 메모리(5)에 기록하도록 구성되는 것인, 네트워크 노드(15).
  4. 제 3 항에 있어서,
    상기 적어도 하나의 프로세서(7)는, 적어도 상기 데이터 메시지 및 상기 입찰 정보로부터 상기 네트워크 노드(15)가 입찰을 낙찰받았는지 여부를 결정하도록 구성되는 것인, 네트워크 노드(15).
  5. 제 4 항에 있어서,
    상기 수신된 데이터 메시지는 무시 카운터(ignore counter)를 포함하고, 상기 무시 카운터는, 상기 업스트림 노드(16) 또는 부가의 업스트림 노드에 의해 결정된, 상기 입찰을 낙찰받지 못한 다운스트림 노드의 개수를 나타내며, 상기 적어도 하나의 프로세서(7)는 적어도 상기 무시 카운터 및 상기 입찰 정보로부터 상기 네트워크 노드(15)가 상기 입찰을 낙찰받았는지 여부를 결정하도록 구성되는 것인, 네트워크 노드(15).
  6. 제 5 항에 있어서,
    상기 적어도 하나의 프로세서(7)는 또한, 상기 업스트림 노드(16)에 상기 관심 메시지를 전달하기 전에 상기 관심 메시지 내의 노드 카운터를 증분시키도록 구성되며, 상기 노드 카운터는 다운스트림 노드의 개수를 나타내는 것인, 네트워크 노드(15).
  7. 제 6 항에 있어서,
    상기 적어도 하나의 프로세서(7)는 또한, 상기 네트워크 노드(15)가 상기 관심 메시지 내에 상기 계산된 입찰 값을 포함했다면, 상기 적어도 하나의 메모리(5)에 낙찰받지 못한 입찰자 카운트를 기록하도록 구성되며, 상기 낙찰받지 못한 입찰자 카운트는, 상기 수신된 관심 메시지 내에 포함된 상기 노드 카운터에 기초하고, 상기 네트워크 노드(15)에 의해 결정된, 상기 입찰을 낙찰받지 못한 다운스트림 노드의 개수를 나타내는 것인, 네트워크 노드(15).
  8. 제 7 항에 있어서,
    상기 적어도 하나의 프로세서(7)는, 상기 네트워크 노드(15)가 상기 입찰을 낙찰받았다면, 상기 다운스트림 노드(14)에 상기 데이터 메시지를 전달하기 전에 상기 낙찰받지 못한 입찰자 카운트에 기초하여 상기 데이터 메시지 내의 상기 무시 카운터를 설정하도록 구성되는 것인, 네트워크 노드(15).
  9. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 프로세서(7)는, 적어도 하나의 빈 슬롯이 상기 적어도 하나의 메모리(5) 상에서 사용가능한지 여부와, 최소 최근 캐싱된 항목이 특정 연령 임계 값보다 오래된 것인지 여부 중의 적어도 하나를 검사함으로써, 상기 적어도 하나의 메모리(5)에 상기 요청된 데이터 객체를 저장하기 위해 입찰할지 여부를 결정하도록 구성되는 것인, 네트워크 노드(15).
  10. 제 1 항 또는 제 2 항에 있어서,
    상기 적어도 하나의 프로세서(7)는, 상기 계산된 입찰 값이 특정 경매 임계 값을 초과하는 입찰을 나타내는지 여부를 검사함으로써, 상기 적어도 하나의 메모리(5)에 상기 요청된 데이터 객체를 저장하기 위해 입찰할지 여부를 결정하도록 구성되는 것인, 네트워크 노드(15).
  11. 엔드포인트 노드(330, 31)에 있어서,
    적어도 하나의 통신 인터페이스(331)와;
    적어도 하나의 프로세서(335)를 포함하고,
    상기 적어도 하나의 프로세서(335)는,
    요청된 데이터 객체의 이름을 결정하고;
    상기 요청된 데이터 객체의 이름과 입찰 값 - 상기 입찰 값은, 상기 요청된 데이터 객체를 캐싱할 권한의 경매가 개시되어야 함을 나타내기 위해 정의되지 않은 상태로 남겨짐 - 을 삽입하기 위한 입찰 필드를 포함하는 관심 메시지를 생성하고;
    상기 적어도 하나의 통신 인터페이스(331) 상의 업스트림 노드(11)에 상기 관심 메시지를 송신하도록 구성되는 것인, 엔드포인트 노드(330, 31).
  12. 네트워크 노드에서 관심 메시지를 수신하는 방법에 있어서,
    다운스트림 노드로부터 적어도 하나의 통신 인터페이스 상의 관심 메시지 - 상기 관심 메시지는 요청된 데이터 객체의 이름을 포함함 - 를 수신하는 단계(11)와;
    상기 요청된 데이터 객체를 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하는 단계(13)와;
    입찰 값을 계산하는 단계(15)와;
    상기 적어도 하나의 통신 인터페이스 상의 업스트림 노드에 상기 관심 메시지 - 상기 관심 메시지는 적어도 입찰할지의 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - 를 전달하는 단계(17)와;
    상기 적어도 하나의 통신 인터페이스 상의 상기 업스트림 노드로부터 상기 요청된 데이터 객체를 포함하는 데이터 메시지를 수신하는 단계(19)와;
    적어도 상기 데이터 메시지로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하는 단계(21)와;
    상기 네트워크 노드가 상기 입찰을 낙찰받았다면 상기 적어도 하나의 메모리 내에 상기 데이터 객체를 저장하는 단계(23)와;
    상기 적어도 하나의 통신 인터페이스 상의 상기 다운스트림 노드에 상기 데이터 메시지를 전달하는 단계(25)를 포함하는 관심 메시지 수신 방법.
  13. 적어도 하나의 소프트웨어 코드 부분을 포함하는, 저장 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 소프트웨어 코드 부분은 컴퓨터 시스템 상에서 실행될 때, 제 12 항의 방법을 수행하도록 구성되는 것인, 저장 매체에 저장된 컴퓨터 프로그램.
  14. 네트워크 노드(15)에 있어서,
    적어도 하나의 통신 인터페이스(31-2)와;
    적어도 하나의 메모리(5)와;
    적어도 하나의 프로세서(7)를 포함하고,
    상기 적어도 하나의 프로세서(7)는,
    다운스트림 노드(14)로부터 상기 적어도 하나의 통신 인터페이스(31) 상의 데이터 객체에 대한 HTTP 요청을 수신하고;
    상기 요청된 데이터 객체를 상기 적어도 하나의 메모리(5)에 저장하기 위해 입찰할지 여부를 결정하고;
    입찰 값을 계산하고;
    상기 적어도 하나의 통신 인터페이스(32) 상의 업스트림 노드(16)에 상기 HTTP 요청 - 상기 HTTP 요청은 적어도 입찰할지의 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - 을 전달하고;
    상기 적어도 하나의 통신 인터페이스(32) 상의 상기 업스트림 노드(16)로부터 상기 요청된 데이터 객체를 포함하는 응답 메시지를 수신하고;
    적어도 상기 응답 메시지로부터 상기 네트워크 노드(15)가 상기 입찰을 낙찰받았는지 여부를 결정하고;
    상기 네트워크 노드(15)가 상기 입찰을 낙찰받았다면 상기 적어도 하나의 메모리(5) 내에 상기 데이터 객체를 저장하고;
    상기 적어도 하나의 통신 인터페이스(31) 상의 상기 다운스트림 노드(14)에 상기 응답 메시지를 전달하도록 구성되는 것인, 네트워크 노드(15).
  15. 네트워크 노드에서 HTTP 요청을 수신하는 방법에 있어서,
    다운스트림 노드로부터 적어도 하나의 통신 인터페이스 상의 데이터 객체에 대한 상기 HTTP 요청을 수신하는 단계(11)와;
    상기 요청된 데이터 객체를 적어도 하나의 메모리에 저장하기 위해 입찰할지 여부를 결정하는 단계(13)와;
    입찰 값을 계산하는 단계(15)와;
    상기 적어도 하나의 통신 인터페이스 상의 업스트림 노드에 상기 HTTP 요청 - 상기 HTTP 요청은 적어도 입찰할지의 여부의 상기 결정에 따라 상기 계산된 입찰 값을 포함함 - 을 전달하는 단계(17)와;
    상기 적어도 하나의 통신 인터페이스 상의 상기 업스트림 노드로부터 상기 요청된 데이터 객체를 포함하는 응답 메시지를 수신하는 단계(19)와;
    적어도 상기 응답 메시지로부터 상기 네트워크 노드가 상기 입찰을 낙찰받았는지 여부를 결정하는 단계(21)와;
    상기 네트워크 노드가 상기 입찰을 낙찰받았다면 상기 적어도 하나의 메모리 내에 상기 데이터 객체를 저장하는 단계(23)와;
    상기 적어도 하나의 통신 인터페이스 상의 상기 다운스트림 노드에 상기 응답 메시지를 전달하는 단계(25)를 포함하는 HPPT 요청 수신 방법.
  16. 적어도 하나의 소프트웨어 코드 부분을 포함하는, 저장 매체에 저장된 컴퓨터 프로그램에 있어서,
    상기 소프트웨어 코드 부분은 컴퓨터 시스템 상에서 실행될 때, 제 15 항의 방법을 수행하도록 구성되는 것인, 저장 매체에 저장된 컴퓨터 프로그램.
KR1020187035017A 2016-05-13 2017-05-12 네트워크 노드, 엔드포인트 노드 및 관심 메시지 수신 방법 KR102160494B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP16169624.0A EP3244590B1 (en) 2016-05-13 2016-05-13 Network node, endpoint node and method of receiving an interest message
EP16169624.0 2016-05-13
PCT/EP2017/061465 WO2017194738A1 (en) 2016-05-13 2017-05-12 Network node, endpoint node and method of receiving an interest message

Publications (2)

Publication Number Publication Date
KR20190002670A KR20190002670A (ko) 2019-01-08
KR102160494B1 true KR102160494B1 (ko) 2020-09-29

Family

ID=56008499

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187035017A KR102160494B1 (ko) 2016-05-13 2017-05-12 네트워크 노드, 엔드포인트 노드 및 관심 메시지 수신 방법

Country Status (6)

Country Link
US (1) US10715592B2 (ko)
EP (2) EP3244590B1 (ko)
KR (1) KR102160494B1 (ko)
CN (1) CN109076108B (ko)
ES (1) ES2703186T3 (ko)
WO (1) WO2017194738A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3711281A1 (en) * 2017-11-17 2020-09-23 Koninklijke KPN N.V. Selecting from a plurality of items which match an interest
US20190158621A1 (en) * 2017-11-21 2019-05-23 Koninklijke Kpn N.V. Auctioning the serving and/or caching of a data object
EP3963843A4 (en) * 2019-05-02 2023-01-25 INTEL Corporation QUALITY OF SERVICE (QOS) IN INFORMATION CENTERED NETWORKING (ICN)
CN112000299B (zh) * 2020-09-27 2022-08-16 苏州浪潮智能科技有限公司 一种节点数据转发方法及相关装置
CN113098783B (zh) * 2021-03-26 2022-06-14 辽宁大学 基于链路带宽和时延的命名数据网络拥塞控制方法
KR20230046592A (ko) * 2021-09-30 2023-04-06 한국전자통신연구원 엔디엔 콘텐츠 스토어의 콘텐츠 임시저장 방법 및 장치
CN114153760B (zh) * 2021-12-02 2022-07-29 北京乐讯科技有限公司 基于权重的健值存储缓存淘汰方法、***及存储介质
CN117156008B (zh) * 2023-09-14 2024-03-22 北京宝联之星科技股份有限公司 一种边缘节点的数据缓存方法、***和可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140164552A1 (en) 2012-12-07 2014-06-12 Ajou University Industry-Academic Cooperation Foundation Method of caching contents by node and method of transmitting contents by contents provider in a content centric network
US20150256601A1 (en) 2014-03-10 2015-09-10 Palo Alto Research Center Incorporated System and method for efficient content caching in a streaming storage

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7558859B2 (en) * 2005-10-17 2009-07-07 Microsoft Corporation Peer-to-peer auction based data distribution
JP5577404B2 (ja) * 2009-07-20 2014-08-20 カリンゴ・インコーポレーテッド ストレージ・クラスタにおける適応的な電力節約の方法
KR101688857B1 (ko) * 2010-05-13 2016-12-23 삼성전자주식회사 컨텐츠 중심 네트워크(ccn)에서 단말 및 허브의 통신 방법 및 컨텐츠 중심 네트워크를 위한 단말
WO2013010006A2 (en) * 2011-07-12 2013-01-17 Huawei Technologies Co., Ltd. Seamless mobility schemes in named-data networking using multi-path routing and content caching
EP2562978B1 (en) * 2011-08-12 2014-10-08 Alcatel Lucent Content router of a content centric network
US8762477B2 (en) 2012-02-28 2014-06-24 Futurewei Technologies, Inc. Method for collaborative caching for content-oriented networks
US9515920B2 (en) * 2012-04-20 2016-12-06 Futurewei Technologies, Inc. Name-based neighbor discovery and multi-hop service discovery in information-centric networks
CN103200640B (zh) * 2013-03-05 2015-11-18 北京交通大学 一种兴趣包转发和源切换方法
US9992281B2 (en) * 2014-05-01 2018-06-05 Cisco Technology, Inc. Accountable content stores for information centric networks
US9979644B2 (en) 2014-07-13 2018-05-22 Cisco Technology, Inc. Linking to content using information centric networking
CN104780205B (zh) * 2015-03-24 2018-03-02 清华大学深圳研究生院 内容中心网络的内容请求及传输方法和***
CN104753797B (zh) * 2015-04-09 2017-08-25 清华大学深圳研究生院 一种基于选择性缓存的内容中心网络动态路由方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140164552A1 (en) 2012-12-07 2014-06-12 Ajou University Industry-Academic Cooperation Foundation Method of caching contents by node and method of transmitting contents by contents provider in a content centric network
US20150256601A1 (en) 2014-03-10 2015-09-10 Palo Alto Research Center Incorporated System and method for efficient content caching in a streaming storage

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Caching in information centric networking, A survey.(Zhang Guoqiang et al, 2013.11.13.)
Distributed Cache Management in Information-Centric Networks (Sourlas Vasilis et al, 2013.09.01.)

Also Published As

Publication number Publication date
CN109076108B (zh) 2021-07-27
US20190306234A1 (en) 2019-10-03
EP3244590B1 (en) 2018-09-26
WO2017194738A1 (en) 2017-11-16
EP3456029B1 (en) 2020-04-29
ES2703186T3 (es) 2019-03-07
EP3456029A1 (en) 2019-03-20
KR20190002670A (ko) 2019-01-08
EP3244590A1 (en) 2017-11-15
US10715592B2 (en) 2020-07-14
CN109076108A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
KR102160494B1 (ko) 네트워크 노드, 엔드포인트 노드 및 관심 메시지 수신 방법
KR102301353B1 (ko) 컨텐츠 중심 네트워크에서 컨텐츠 소유자 및 노드의 패킷 전송 방법
US11463550B2 (en) Request management for hierarchical cache
US9838333B2 (en) Software-defined information centric network (ICN)
KR101786573B1 (ko) 문맥화된 정보 버스
US8694675B2 (en) Generalized dual-mode data forwarding plane for information-centric network
US11316609B2 (en) Data transmitting method, data receiving method, and device
US10567538B2 (en) Distributed hierarchical cache management system and method
WO2018040816A1 (zh) 一种资源获取的方法、终端及服务器
WO2013029569A1 (en) A Generalized Dual-Mode Data Forwarding Plane for Information-Centric Network
JP2016059039A (ja) Ccnにおける中間ルータにおけるインタレストキープアライブ
WO2012075970A1 (zh) 一种获取媒体内容的方法、设备及***
US20180191590A1 (en) Centrality-Based Caching in Information-Centric Networks
WO2019096970A1 (en) Selecting from a plurality of items which match an interest
KR102596938B1 (ko) 정보 중심 네트워크에 포함되는 노드의 제어 방법, 및 시스템
US20230103201A1 (en) Method and apparatus for content caching of contents store in ndn
CN111404972B (zh) 一种数据处理方法、装置、设备及存储介质
CN115567591A (zh) 内容资源分发方法、内容分发网络、集群及介质
JP6273949B2 (ja) ルータ、コンテンツ配信システム、メッセージ転送方法、プログラム
CN110807160A (zh) 内容获取方法及装置

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