KR101366364B1 - 콘텐츠 블록 교환 협상 방법, 컴퓨터 프로그램, 및 피어 노드 - Google Patents

콘텐츠 블록 교환 협상 방법, 컴퓨터 프로그램, 및 피어 노드 Download PDF

Info

Publication number
KR101366364B1
KR101366364B1 KR1020087027795A KR20087027795A KR101366364B1 KR 101366364 B1 KR101366364 B1 KR 101366364B1 KR 1020087027795 A KR1020087027795 A KR 1020087027795A KR 20087027795 A KR20087027795 A KR 20087027795A KR 101366364 B1 KR101366364 B1 KR 101366364B1
Authority
KR
South Korea
Prior art keywords
content
blocks
node
peer
offer
Prior art date
Application number
KR1020087027795A
Other languages
English (en)
Other versions
KR20090018907A (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 KR20090018907A publication Critical patent/KR20090018907A/ko
Application granted granted Critical
Publication of KR101366364B1 publication Critical patent/KR101366364B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

블록들 또는 다른 유닛들의 형태로 콘텐츠의 배포에 영향을 미침으로써 콘텐츠를 관리하는 것은 피어 대 피어 콘텐츠 배포 시스템의 성능에 중요하다. 본 발명은 이를 달성하기 위하여 각각의 피어 노드에 콘텐츠 관리 모듈을 제공한다. 콘텐츠 관리 모듈은 다른 피어 노드들과 콘텐츠의 블록들에 대해 협상하기 위해 콘텐츠 요청/응답 사이클을 구현한다. 이 사이클은 제의 요청, 제의 응답 및 블록 요청을 포함한다. 이러한 단계들에 이어서, 바람직하게는 데이터 교환 및 검증이 이루어진다. 본 발명의 콘텐츠 관리 모듈에 의해 사용되는 협상 프로토콜은 풀 네트워크 코딩 및 그룹 네트워크 코딩과 같은 상이한 인코딩 방식들과 함께 이롭게 사용되는 일반적인 방법을 제공한다. 일 실시예에서, 본 발명은 그룹 네트워크 코딩을 사용하며, 정보를 제의 요청 및 제의 응답에 추가하여 효율적인 콘텐츠 배포를 용이하게 한다. 가능한 경우에 온더플라이 디코딩의 사용을 촉진하기 위해 블록 요청 메시지들이 선택된다.
콘텐츠 관리, 피어 대 피어 콘텐츠 배포 시스템, 피어 노드, 그룹 네트워크 코딩, 협상 프로토콜

Description

콘텐츠 블록 교환 협상 방법, 컴퓨터 프로그램, 및 피어 노드{CONTENT MANAGEMENT IN PEER-TO-PEER CONTENT DISTRIBUTION CLOUDS}
본 발명은 일반적으로 피어 대 피어 콘텐츠 분배에 관한 것으로서, 구체적으로는 피어 대 피어 콘텐츠 분배 구름 내의 콘텐츠 관리에 관한 것이다.
피어 대 피어 파일 공유 구름 내의 콘텐츠 관리는 구름의 모든 또는 대다수의 멤버가 공유 콘텐츠를 수신할 수 있는 속도 및 용이성을 향상시키기 위하여 해결되어야 하는 중요한 문제이다.
과거에는, 기반구조 기반 솔루션을 제공하는 전용 서버 팜(farm)을 이용하여 대규모의 콘텐츠 분배가 수행되었다. 이러한 유형의 방법에서, 콘텐츠를 필요로 하는 각각의 클라이언트는 서버 팜의 서버에 대해 전용 고대역폭 접속을 형성하고, 필요에 따라 콘텐츠를 다운로드한다. 이러한 유형의 솔루션은 서버 팜을 제공하고 유지하여야 하는 콘텐츠 제공자에게 비용이 많이 든다. 이러한 유형의 솔루션은 콘텐츠 제공자에게 고비용이 들뿐만 아니라, 서버의 고장이 콘텐츠가 많은 클라이언트에게 제공되지 못하게 한다는 점에서 강력하지 못하다. 또한, 이러한 솔루션은 각각의 서버가 제한된 수의 클라이언트를 지원하므로 쉽게 확장될 수 없다.
보다 최근에, 노드들이 그들의 자원들(저장 장치, CPU, 대역폭)을 공유하는 협동 네트워크를 이용하는 분산형 아키텍처에 기초하여 콘텐츠 배포에 대한 새로운 패러다임이 출현하였다.
협동 콘텐츠 배포 솔루션들은, 보다 많은 노드가 형성됨에 따라 시스템의 대역폭 용량이 증가하고, 각각의 새로운 노드가 다른 노드들로부터의 서비스를 요청하는 동시에 다른 노드들에게 서비스를 제공한다는 점에서, 본질적으로 자기 확장 가능하다. 각각의 새로운 노드가 자원들을 제공하므로, 시스템의 용량은 수요가 증가함에 따라 증가하여, 제한 없는 시스템 확장성으로 이어진다. 협동으로 인해, 파일의 소스, 즉 서버는 보다 큰 사용자 집단을 수용하기 위해 그의 자원들을 증가시킬 필요가 없으며, 이는 또한, 대개는 영향받는 서버의 고장으로 이어지는 거대하고 갑작스런 트래픽 서지인 "플래시 크라우드(flash crowd)"에 대한 탄력성을 제공한다. 따라서, 엔드-시스템 협동 솔루션들은 오리지널 서버에서의 비용을 낮게 유지하면서, 매우 많은 수의 사용자들에게 소프트웨어 업데이트들, 중요한 패치들, 비디오들 및 다른 대형 파일들을 효율적이고 빠르게 전달하는 데 사용될 수 있다.
통상적으로, 피어 대 피어 파일 공유 프로토콜들은 배포할 파일을 블록들 또는 단편들로 분할한다. 이러한 블록들은 예를 들어 임의의 순서로 구름 내의 노드들에 배포되며, 요청 노드 상에서 조립될 수 있다. 각각의 노드는 국지적으로 누락된 블록들을 다운로드하고 원격적으로 누락된 블록들을 원격 노드들에 업로드하기 위해 원격 노드들에 접속한다.
콘텐츠의 블록들을 형성하고 배포하는 방식은 구름의 모든 멤버가 배포되는 콘텐츠를 수신할 수 있는 속도 및 용이성에 강한 영향을 미친다. 따라서, 블록들 또는 다른 유닛들의 형태로 콘텐츠의 배포에 영향을 미침으로써 콘텐츠를 관리하는 것은 피어 대 피어 콘텐츠 배포 시스템의 성능에 중요하다.
<발명의 요약>
다음은 독자에게 기본적인 이해를 제공하기 위해 본 개시의 간단한 요약을 제공한다. 이 요약은 본 개시의 포괄적인 개요는 아니며, 본 발명의 주요/필수 요소들을 식별하거나 본 발명의 범위를 정의하지 않는다. 그 유일한 목적은 본 명세서에 개시되는 소정의 개념들을 후술하는 보다 상세한 설명에 대한 서론으로서 간단한 형태로 제공하는 것이다.
블록들 또는 다른 유닛들의 형태로 콘텐츠의 배포에 영향을 미침으로써 콘텐츠를 관리하는 것은 피어 대 피어 콘텐츠 배포 시스템의 성능에 중요하다. 본 발명은 이를 달성하기 위하여 각각의 피어 노드에 콘텐츠 관리 모듈을 제공한다. 콘텐츠 관리 모듈은 다른 피어 노드들과 콘텐츠의 블록들에 대해 협상하기 위해 콘텐츠 요청/응답 사이클을 구현한다. 이 사이클은 제의(offer) 요청, 제의 응답 및 블록 요청을 포함한다. 이러한 단계들에 이어서, 바람직하게는 데이터 교환 및 검증이 이루어진다. 본 발명의 콘텐츠 관리 모듈에 의해 사용되는 협상 프로토콜은 풀 네트워크 코딩 및 그룹 네트워크 코딩(GNC)과 같은 상이한 인코딩 방식들과 함께 이롭게 사용되는 일반적인 방법을 제공한다. 일 실시예에서, 본 발명은 그룹 네트워크 코딩을 사용하며, 정보를 제의 요청 및 제의 응답에 추가하여 효율적인 콘텐츠 배포를 용이하게 한다. 또한, 가능한 경우에 온더플라이(on-the-fly) 디코딩의 사용을 촉진하기 위해 블록 요청 메시지들이 선택된다.
본 예는 피어 대 피어 콘텐츠 배포 구름 내에서 2개의 피어 사이에 콘텐츠의 어떠한 하나 이상의 블록을 교환할지를 협상하는 방법으로서,
클라이언트 노드로서 동작하는 피어 노드에서,
- 제의 요청 메시지를 서버 노드로서 동작하는 다른 피어 노드에 전송하여, 상기 서버 노드로부터 이용가능한 콘텐츠의 하나 이상의 블록의 제의를 요청하는 단계;
- 상기 서버 노드로부터 이용 가능한 콘텐츠의 하나 이상의 블록에 대한 정보를 포함하는 제의 응답 메시지를 상기 서버 노드로부터 수신하는 단계;
- 상기 제의 응답 메시지 내의 정보에 기초하여 적어도 하나의 블록을 선택하고, 블록 요청 메시지를 상기 서버 노드에 전송하여 상기 선택된 블록(들)을 요청하는 단계를 포함하고,
상기 블록들은 그룹 네트워크 코딩을 이용하여 인코딩되고, 상기 제의 요청 메시지는 상기 클라이언트 노드가 아직 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 정보를 포함하는 콘텐츠 블록 교환 협상 방법을 제공한다.
바람직하게는, 상기 제의 응답 메시지는 상기 서버로부터 이용 가능한 콘텐츠의 블록들의 총 수의 일부에 대한 정보만을 포함한다. 상기 정보는 전송할 준비가 된 블록들 중 일부 또는 전부, 및/또는 서버 노드의 인코딩 작업을 필요로 하는 블록들의 일부 또는 모두에 대한 것일 수 있다.
바람직하게는, 상기 제의 요청 메시지는 상기 클라이언트 노드가 이미 이용 가능한 콘텐츠의 블록들을 적어도 부분적으로 지시하는 정보를 포함한다.
바람직하게는, 상기 제의 요청 메시지는 상기 클라이언트 노드에 의해 요구되는 콘텐츠의 블록들을 적어도 부분적으로 지시하는 정보를 포함한다.
소정 실시예들에서, 상기 제의 응답 메시지는 상기 클라이언트 노드가 아직 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 제의를 포함한다.
예를 들어, 적어도 하나의 블록을 선택하는 상기 단계는, 각각의 그룹에 대해, 상기 제의된 블록들 중에서 혁신적인 블록들을 식별하는 단계, 및 상기 혁신적인 블록들 중 하나 이상을 선택하는 단계를 포함한다.
소정 실시예들에서, 상기 하나 이상의 혁신적인 블록의 선택은 실질적으로 임의의 방식으로 수행된다.
다른 예들에서, 상기 하나 이상의 혁신적인 블록의 선택은 관련된 그룹에 대해 이미 얻어진 콘텐츠의 양에 기초하여 수행된다.
본 발명은 또한, 컴퓨터 프로그램으로서, 상기 프로그램이 컴퓨터 상에서 실행될 때, 본 명세서에 설명되는 방법들 중 임의 방법의 모든 단계를 수행하도록 적응되는 컴퓨터 프로그램 코드 수단을 포함하는 컴퓨터 프로그램을 포함한다. 예를 들어, 상기 컴퓨터 프로그램은 컴퓨터 판독가능 매체 상에 구현된다.
본 발명은 또한, 피어 대 피어 콘텐츠 배포 구름 내에서 클라이언트 노드로서 동작하고, 그룹 네트워크 코딩을 이용하여 자신과 구름 내의 다른 피어 사이에 콘텐츠의 어떠한 하나 이상의 블록을 교환할지를 협상하기에 적합한 피어 노드(16, 19)로서,
- 제의 요청 메시지를 서버 노드로서 동작하는 다른 피어 노드에 전송하여, 상기 서버 노드로부터 이용 가능한 콘텐츠의 하나 이상의 블록의 제의를 요청하는 수단 - 상기 제의 요청 메시지는 상기 클라이언트 노드가 아직 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 정보를 포함함 - ;
- 상기 서버 노드로부터 이용 가능한 콘텐츠의 하나 이상의 블록에 대한 정보를 포함하는 제의 응답 메시지를 상기 서버 노드로부터 수신하는 수단;
- 상기 제의 응답 메시지 내의 정보에 기초하여 적어도 하나의 블록을 선택하고, 블록 요청 메시지를 상기 서버 노드에 전송하여 상기 선택된 블록(들)을 요청하도록 구성되는 프로세서를 포함하는 피어 노드를 제공한다.
바람직하게는, 상기 제의 응답 메시지를 수신하는 수단은 상기 서버로부터 이용 가능한 콘텐츠의 블록들의 총 수의 일부에 대한 정보만을 포함하는 제의 응답 메시지를 수신하도록 구성된다.
소정 실시예들에서, 상기 제의 요청 메시지를 전송하는 수단은 상기 클라이언트 노드가 이미 이용 가능한 콘텐츠의 블록들을 적어도 부분적으로 지시하는 정보를 포함하는 제의 요청 메시지를 전송하도록 구성된다.
소정 실시예들에서, 상기 제의 요청 메시지를 전송하는 수단은 상기 클라이언트 노드에 의해 요구되는 콘텐츠의 블록들을 적어도 부분적으로 지시하는 정보를 포함하는 제의 요청 메시지를 전송하도록 구성된다.
바람직하게는, 상기 제의 응답 메시지를 수신하는 수단은 상기 클라이언트 노드가 아직 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 제의를 수신하는 수단을 포함한다.
바람직하게는, 적어도 하나의 블록을 선택하도록 구성되는 상기 프로세서는 각각의 그룹에 대해 혁신적인 상기 제의된 블록들 중의 블록들을 식별하고 상기 혁신적인 블록들 중 하나 이상을 선택하도록 구성된다.
본 발명은 또한, 다른 피어들에 대한 블록들의 서버로서 동작하는 피어 노드에서의 방법을 포함한다. 따라서, 본 발명은 피어 대 피어 콘텐츠 배포 구름 내에서 2개의 피어 사이에 콘텐츠의 어떠한 하나 이상의 블록을 교환할지를 협상하는 방법으로서,
서버 노드로서 동작하는 피어 노드에서,
- 상기 서버 노드로부터 이용가능한 콘텐츠의 하나 이상의 블록의 제의를 요청하는 제의 요청 메시지를 클라이언트 노드로서 동작하는 다른 피어 노드로부터 수신하는 단계;
- 상기 서버 노드로부터 이용 가능한 콘텐츠의 하나 이상의 블록에 대한 정보를 포함하는 제의 응답 메시지를 전송하는 단계;
- 상기 제의된 블록들 중 하나 이상의 선택된 블록을 요청하는 블록 요청 메시지를 상기 클라이언트 노드로부터 수신하는 단계; 및
- 상기 요청된 블록(들)을 상기 클라이언트 노드로 전송하는 단계를 포함하고,
상기 블록들은 그룹 네트워크 코딩을 이용하여 인코딩되고, 상기 제의 요청 메시지는 상기 클라이언트 노드가 아직 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 정보를 포함하는 방법을 제공한다.
서버 노드로서 동작하기에 적합한 대응 피어 노드가 제공되는데, 피어 대 피어 콘텐츠 배포 구름 내에서 서버 노드로서 동작하고, 그룹 네트워크 코딩을 이용하여 자신과 구름 내의 다른 피어 사이에 콘텐츠의 어떠한 하나 이상의 블록을 교환할지를 협상하기에 적합한 피어 노드로서,
- 상기 서버 노드로부터 이용가능한 콘텐츠의 하나 이상의 블록의 제의를 요청하는 제의 요청 메시지를 클라이언트 노드로서 동작하는 다른 피어 노드로부터 수신하는 수단 - 상기 제의 요청 메시지는 상기 다른 피어 노드가 아직 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 정보를 포함함 - ;
- 상기 서버 노드로부터 이용 가능한 콘텐츠의 하나 이상의 블록에 대한 정보를 포함하는 제의 응답 메시지를 전송하는 수단;
- 상기 제의된 블록들 중 하나 이상의 선택된 블록을 요청하는 블록 요청 메시지를 상기 클라이언트 노드로부터 수신하는 수단; 및
- 상기 요청된 블록(들)을 상기 클라이언트 노드로 전송하는 수단을 포함하는 피어 노드가 제공된다.
본 명세서에 설명되는 방법들은 저장 매체 상의 기계 판독가능 형태의 소프트웨어에 의해 수행될 수 있다. 소프트웨어는 병렬 프로세서 또는 직렬 프로세서 상에서 실행하기에 적합할 수 있으며, 따라서 방법의 단계들은 임의의 적절한 순서로 또는 동시에 수행될 수 있다.
이는 소프트웨어가 유용하고, 개별적으로 거래 가능한 상품일 수 있음을 나타낸다. 원하는 기능들을 수행하기 위하여 "덤(dumb)" 또는 표준 하드웨어 상에서 실행되거나 이를 제어하는 소프트웨어를 포함하는 것을 의도한다(따라서, 소프트웨어는 본질적으로 레지스터의 기능들을 정의하며, 따라서 그의 표준 하드웨어와 결합되기 전에도 레지스터라고 할 수 있다). 유사한 이유로, 원하는 기능들을 수행하기 위해, 실리콘 칩을 설계하는 데, 또는 유니버설 프로그래머블 칩을 구성하는 데 사용되는 바와 같은 하드웨어 기술 언어(HDL) 소프트웨어와 같이, 하드웨어의 구성을 "기술" 또는 정의하는 소프트웨어를 포함하는 것을 의도한다.
많은 부수적인 특징들은 첨부 도면들과 관련하여 고려되는 아래의 상세한 설명을 참조하여 보다 양호하게 이해될 때 보다 쉽게 인식될 것이다.
본 설명은 첨부 도면들을 참조하여 읽혀지는 아래의 상세한 설명으로부터 보다 잘 이해될 것이다.
도 1은 피어 대 피어 콘텐츠 배포 구름의 개략도이다.
도 2는 네트워크 코딩을 이용하는 콘텐츠 배포 시스템 내의 블록들의 흐름을 나타내는 도면이다.
도 3은 콘텐츠 관리 모듈을 나타내는 피어 노드의 개략도이다.
도 4는 협상 프로토콜에 대한 하이 레벨 메시지 시퀀스 차트이다.
도 5는 그룹 네트워크 코딩을 이용하는 일 실시예에 대해 변형된 도 4의 메시지 시퀀스 차트이다.
첨부 도면들에서 동일 참조 부호들은 동일한 부분들을 지시하는 데 사용된다.
첨부 도면들과 관련하여 아래에 제공되는 상세한 설명은 본 예들의 설명으로서 의도되며, 본 예가 구성 또는 이용될 수 있는 유일한 형태들을 나타내는 것을 의도하지 않는다. 이 설명은 본 예의 기능들 및 본 예를 구성하고 동작시키는 단계들의 시퀀스를 설명한다. 그러나, 동일 또는 균등한 기능들 및 시퀀스들은 상이한 예들에 의해 달성될 수도 있다.
본 명세서에서 '컴퓨터'라는 용어는 명령어를 실행할 수 있도록 처리 능력을 갖는 임의의 장치를 지칭하는 데 사용된다. 이 분야의 전문가들은, 그러한 처리 능력들이 많은 상이한 장치들 내에 통합되며, 따라서 '컴퓨터'라는 용어는 PC, 서버, 이동 전화, 개인 휴대 단말기 및 많은 다른 장치를 포함한다는 것을 인식할 것이다.
본 명세서에서 "구름"이라는 용어는, 피어 대 피어 파일 공유 프로토콜에 대한 액세스를 갖고, 이 프로토콜을 이용하여, 배포되는 파일과 같은 특정 콘텐츠의 사본을 얻으려고 시도하는 통신 네트워크 내의 복수의 노드를 지칭하는 데 사용된다. 구름은 소정 문헌 내의 그래프로도 지칭된다. 구름 내의 노드들 각각은 다른 노드들에 대해 그 프로토콜을 이용한 하나 이상의 현재 접속을 갖는다. 따라서, 노드들은 구름 내의 기존 노드들에 대한 접속을 해제하거나 형성함에 따라 구름에 합류하거나 구름을 떠날 수 있다. 접속들은 네트워크 인코딩을 이용하거나 이용하지 않을 수 있는 특정 프로토콜을 이용하여 콘텐츠를 배포하기에 적합할 필요가 있지만, 항상 적극적으로 콘텐츠 배포에 이용될 필요는 없다. 접속들은 단방향 또는 양방향 접속일 수 있다. 본 명세서에 설명되는 특정 예들에서, 모든 접속은 단방향이며, 따라서 구름들은 비대칭이지만, 본 발명은 접속들이 양방향이어서 단일 접속들이 업로드 및 다운로드 양 방향에서의 트래픽을 지원하는 대칭 구름들에 적용 가능하며, 이들을 포함한다. 또한, 주어진 노드는 동시에 둘 이상의 구름의 멤버일 수 있다. 예를 들어, 노드들이 공유 비디오의 사본을 얻으려고 시도하고 있는 제1 구름 및 노드들이 디지털 정지 이미지들의 화집의 사본을 얻으려고 시도하고 있는 제2 구름이 존재한다. 구름들은 서로 독립적이거나, 부분적으로 또는 완전히 중첩될 수 있다.
도 1은 인터넷(11) 또는 임의의 다른 적절한 통신 네트워크를 통해 접속된 복수의 노드를 포함하는 피어 대 피어 파일 배포 구름(10)의 개략도이다. 명료화를 위해 10개 미만이 도시되지만, 구름 자체는 보다 많은 노드를 포함할 수 있다. 또한, 피어 대 피어 파일 공유 참가자들이 아니며, 따라서 구름의 멤버들은 아니지만, 다른 노드들이 구름 멤버들 사이에 또는 직접 접속되어 존재할 수 있는데, 이들은 도시되어 있지 않다.
하나 이상의 시드 노드(12)가 구름(10) 내에 제공된다. 시드 노드는 파일로도 참조되는 콘텐츠가 유래하는 노드이다. 예를 들어, 회사가 구름 멤버들과 공개적으로 공유하기를 원하는 제품 데모 비디오를 갖는 것으로 가정한다. 이 파일은시드 노드 상에 배치될 수 있다. 시드 노드는 통상적으로 "항상 온" 상태이며, 따라서 콘텐츠 파일들은 상당한 기간 동안(유지보수 기간 등은 제외) 시드 노드로부터 업로드에 이용될 수 있다. 일반적으로, 시드 노드는 콘텐츠의 다운로드가 아니라, 콘텐츠의 업로드 시에 활성이다. 구름 내의 제한된, 비교적 적은 수의 노드들만이 동시에 시드 노드로부터 콘텐츠를 다운로드할 수 있다. 시드 노드는 구름의 다른 멤버들에게 콘텐츠를 업로드하기 위해 피어 대 피어 파일 공유 프로토콜을 이용하거나 이용하지 않을 수 있다. 그러나, 그러한 다른 멤버들은 피어 대 피어 파일 공유 프로토콜을 이용하여 구름 멤버들과 콘텐츠 또는 콘텐츠의 부분들을 계속 공유한다. 따라서, 다른 구름 멤버들은 그들이 콘텐츠가 그들 자신으로부터 업로드되는 것은 허가하는 기간 동안 시드 노드들로서 유효하게 동작할 수 있지만, 그 기간 동안에는 콘텐츠를 활발히 다운로드하지 못한다. 소정의 사례들에서, 시드 노드(12)가 콘텐츠를 구름 내에 전송한 경우, 시드 노드(12)는 구름(10)이 여전히 기능하는 동안 오프 상태가 될 수 있다.
하나 이상의 추적자 노드(14)가 구름(10) 내에 제공된다. 추적자 노드(14)는 피어가 구름에 참가하고 있는지 그리고 임의의 공유할 정보를 갖고 있는지와 같은 구름 멤버들에 대한 정보를 갖는다. 이러한 추적자 노드는 구름 멤버들이 필요한 콘텐츠를 갖고 있는 다른 구름 멤버들을 찾는 것을 도와준다.
클라이언트로도 참조되는 복수의 피어 노드(16, 19)도 구름 내에 존재한다. 피어 노드는 구름 내의 공유 콘텐츠를 필요로 하고, 또한 그가 얻은 콘텐츠의 부분들을 공유하거나 공유하지 않을 수 있는 노드이다. 피어 노드는 전술한 바와 같은 임시 노드로서 작용할 수 있다. 도 1에 도시된 예에서, 피어 노드들(16)은 인터넷과 같은 공개 네트워크 내에 위치하는 반면, 피어 노드들(19)은 방화벽 및/또는 네트워크 어드레스 변환기(NAT)(18) 뒤의 사설 기업 네트워크들 또는 홈 네트워크들 내에 위치한다.
본 출원인은 본 발명의 피어 대 피어 파일 공유 기술들의 총체적인 목적 또는 목표를, 모든(또는 대다수의) 구름 멤버가 배포되고 있는 파일의 완전한 사본을 가장 짧은 가능한 시간에 취득할 수 있게 하는 것으로 정하였다. 소정의 사례들에서, 본 발명은 또한, 시드 노드들 또는 개시 서버들이 공유될 콘텐츠의 업로드들을 제공해야 하는 횟수를 줄이려고 시도한다.
전술한 바와 같이, 피어 대 피어 콘텐츠 배포 시스템들은 통상적으로 파일, 또는 배포될 다른 콘텐츠 항목을, 피어들 사이에 배포되는 블록들로 분할한다. 옵션으로서, 피어 노드는 하나 이상의 블록을 수신하자마자, 이들 블록에 대한 소스로서 동작하는 동시에, 추가 블록들을 수신할 수 있다. 이와 같이, 피어 노드는 클라이언트로서 그리고 서버로서 동시에 동작할 수 있다.
콘텐츠를 블록들로 분할하는 임의의 적절한 방법이 이용될 수 있다. 예를 들어, 풀 네트워크 코딩, 그룹 네트워크 코딩(GNC), 서버 코딩, 또는 코딩을 이용하거나 이용하지 않고 블록들을 형성하는 임의의 다른 방법이 이용될 수 있다. 풀 네트워크 코딩, GNC 및 블록 생성에 대한 보다 상세한 설명은 아래에 주어진다. 네트워크 코딩 이면의 원리는, 시드 노드들 또는 중앙 서버들만이 패킷들을 인코딩하는 서버 코딩과 달리, 피어들이 패킷들을 인코딩하는 것을 허가하는 것이다.
블록들을 생성하는 프로세스는 계산, 처리 용량 및 시간을 필요로 하며, 이러한 요건은 이용되는 블록 생성 방법의 유형에 따라 다르다. 예를 들어, 풀 네트워크 코딩은 그룹 네트워크 코딩보다 계산적으로 복잡하다. 유사하게, 블록들이 피어에서 수신되는 경우, 블록들은 배포되는 콘텐츠를 얻기 위해 조립되고 그리고/또는 디코딩되어야 한다. 이 프로세스도 계산적으로 고 비용이 든다. 본 발명은 콘텐츠의 블록들이 디코딩되거나 조립되는 데 걸리는 시간을 줄이고, 가능한 경우에 계산 요건들을 줄이려고 시도한다.
소스 파일이 분할되는 블록들의 수는 통상적으로 매우 크다. 예를 들어, 4GB 파일은 각각 2MB의 크기인 2048개의 블록으로 분할될 수 있다. 피어 노드가 예를 들어 2000개의 블록을 수신하였고 나머지 48개의 블록을 얻어야 하는 상황을 고려한다. 이러한 48개의 블록은 구름 내에 있기가 희박할 수 있으며, 피어 노드는 어느 다른 노드들이 누락 블록들을 갖고 있는지를 발견해야 한다. 이는 특히 대형 구름들에서 어려운 문제이다. 피어 노드가 소스로서 동작하고 있는 상황도 고려한다. 피어 노드는 예를 들어 1000개의 블록을 갖고 있으며, 다른 피어 노드로부터 요청을 수신한다. 피어 노드는 그의 1000개의 블록 중 어느 블록을 요청 피어에게 전송해야 하는가? 역시, 이것도 어려운 문제이다. 요청 노드가 이미 갖고 있는 블록들이 전송되는 경우, 시간 및 자원들이 낭비된다. 본 출원은 블록들이 효율적인 방식으로 전송될 수 있도록 콘텐츠를 관리하는 방법들을 제공한다.
풀 네트워크 코딩
이제, 서버(102)와 2개의 클라이언트(또는 노드), 즉 클라이언트 A(104) 및 클라이언트 B(106) 사이의 블록들의 흐름을 나타내는 도 2를 참조하여, 풀 네트워크 코딩이 설명된다. 피어 노드는 전술한 바와 같이 클라이언트 또는 서버 또는 양자로서 동작할 수 있다. 처음에, 모든 블록(B1-Bn)은 임의의 노드가 아니라, 서버에 의해서만 유지된다. 클라이언트 A가 블록을 얻기 위해 서버와 접촉할 때, 서버는 파일 내의 모든 블록의 선형 조합인 인코딩된 블록 E1을 생성하는데, 이는 다음과 같다.
Figure 112008078507919-pct00001
여기서, αi은 임의의 계수들이다. 블록 크기가 증가하지 않기 위하여, 이러한 연산들은 유한 필드, 통상적으로 GF(216) 내에서 행해져야 한다. 이어서, 서버는 새로운 인코딩된 블록 E1 및 계수 벡터 (αi) 양자를 클라이언트 A에게 전송한다. 클라이언트 A는 또한, 제2 세트의 임의 계수들 βi를 이용하여 생성된 제2 인코딩된 블록 E2를 서버로부터 수신할 수 있다. 클라이언트 A가 블록을 클라이언트 B에 전송해야 할 때, 클라이언트 A는 임의 계수들 ωi를 이용하여 E1 및 E2의 선형 조합으로부터 제3 인코딩된 블록 E3를 생성한다.
전술한 바와 같이, 네트워크 코딩이 이용될 때, 클라이언트는 한 세트의 선형 방정식을 푸는 것과 유사한 프로세스에서 서로 선형적으로 무관한 n개의 블록을 수신한 후에 오리지널 파일을 복원할 수 있다. 계수들이 각각의 클라이언트에 의해 임의로 선택되는 경우, 클라이언트는 그 자신에게 유용하지 않은 블록을 수신할 가능성이 없을 것이다. 그러나, 이를 더 체크하기 위하여, 클라이언트들은 블록 자체에 앞서 계수 벡터를 수신 클라이언트(도 1의 예에서 클라이언트 B)로 전송할 수 있다. 이어서, 수신 클라이언트는 결과적인 블록이 그에게 임의의 새로운 정보를 제공하는지를 체크하고, 블록이 수신 클라이언트에게 유용한 경우에만 블록의 다운로드를 요청할 수 있다.
전술한 바와 같이, 노드는 새로운 인코딩된 블록을 생성할 수 있기 위하여, 그가 메모리 내로 수신한 모든 블록을 판독해야 한다. 이는 프로세서 집약적이며, 지연을 발생시킨다. 또한, 디코딩 시, 노드는 인코딩된 블록들을 디코딩해야 하는 매우 복잡한 문제에 직면하게 되는데, 이 또한 프로세서 집약적이고 시간 소모적이다. 노드에서의 메모리에 대한 판독/기록 동작들은 특히 시간 소모적이다.
피어 대 피어 시스템에서 사용되는 풀 네트워크 코딩은 US-2006-0020560-A1로서 2006년 1월 26일자로 공개된 본 출원인의 이전 미국 특허 출원 "Content Distribution Using Network Coding"에도 설명되어 있다.
그룹 네트워크 코딩
그룹 네트워크 코딩은 풀 네트워크 코딩과 유사하지만, 코딩은 배포되는 파일을 구성하는 콘텐츠의 모든 블록이 아니라 블록들의 그룹들에 기초한다. GNC는 풀 네트워크 코딩의 변형이다. GNC에서, 오리지널 콘텐츠는 서비스 블록들의 그룹들로 분할되며, 네트워크 코딩은 각 그룹의 블록들에 대해서만 수행된다. 그룹 네트워크 코딩의 다양한 상이한 방법들이 존재하며, 이들은 풀 네트워크 코딩에 비해 피어 노드들에서의 처리 부하를 줄이는 것은 물론, 블록들을 인코딩 또는 디코딩하는 데 걸리는 시간을 줄인다. 임의의 적절한 그룹 네트워크 코딩 방법이 이용될 수 있다. 예를 들어, "Encoding and Decoding Optimisations"라는 제목으로 2005년 12월 22일자로 출원된 본 출원인의 유럽 특허 출원 번호 05270098.6은 그룹 네트워크 코딩의 적절한 방법들을 설명하고 있다.
여기에서 사용되는 GNC의 바람직한 실시예에서, 파일을 블록들 및 그룹들로 분할하는 알고리즘이 아래와 같이 제공된다.
파일을 블록들 및 그룹들로 분할하는 알고리즘은 다음과 같다.
1) 길이 L의 파일 및 타겟 블록 크기 BT가 예를 들어 사전 구성됨으로써 지정된다.
2) 블록들의 수가 모든 파일 콘텐츠에 맞도록 요구되는 블록들의 최소 수, B=Ceiling(L/BT)·(L/BT)!=Ceiling(L/BT)로서 먼저 계산되고, 최종 블록이 인코딩의 목적을 위해 제로들로 패딩된다.
예를 들어, 10 바이트의 타겟 블록 길이를 갖는 1001 바이트의 파일이 10 바이트의 101개의 블록으로 분할될 것이며, 최종 블록은 단지 1 바이트의 실제 정보를 포함할 것이다. 최종 블록은 논리적으로는 제로들로 패딩되지만, 각각의 콘텐츠 관리 모듈(300)이 최종 블록에 대해 어떤 크기를 기대하는지를 알고 있으므로, 패딩은 결코 전송되지 않는다.
블록들의 수가 계산되면, 알고리즘은 그룹들의 수를 결정하는데, 파일 내의 16(또는 다른 적절한 수) 블록마다 하나의 그룹이 생성된다. 블록들의 수가 16의 배수가 아닌 경우, 최종 그룹은 16개 미만의 블록을 가질 것이며, 네트워크 코딩 동작들은 그 수의 블록들에 대해서만 수행될 것이다. 예를 들어, 파일의 블록들의 수가 18인 경우, 2개의 그룹이 필요할 것인데, 하나는 16개의 블록을 갖고, 다른 하나는 단지 2개의 블록을 가질 것이다.
최종 블록을 패딩하는 데 사용되는 제로들과 같은 가상 정보는 재구성 동안 제거된다.
콘텐츠 관리 모듈
피어 대 피어 네트워크에서 콘텐츠를 관리하기 위하여, 본 발명은 각각의 피어 노드에 콘텐츠 관리 모듈을 제공한다. 이러한 콘텐츠 관리 모듈은 전용 하드웨어로서, 또는 임의의 다른 적절한 방식으로 제공될 수 있지만, 바람직한 실시예에서는 소프트웨어 구조이다. 이는 인코딩된 콘텐츠를 생성하고 검증하며 콘텐츠 관리 모듈의 상이한 인스턴스들 사이에서 교환하는 기능을 바람직하게 제공한다. 도 3은 피어 노드에서 네트워크 계층(301)과 통신하는 콘텐츠 관리 모듈(300)을 나타내는 피어 노드(16)의 개략도이다. 예를 들어, 피어 노드는 피어 대 피어 구름에 대한 인터넷 접속을 갖는 컴퓨터를 포함한다. 이는 피어 대 피어 애플리케이션이 콘텐츠의 배포에 참가하기 위해 동작하는 것을 가능하게 하기 위한, 이 분야에 공지된 바와 같은, 운영 체제 및 다른 소프트웨어 및/또는 하드웨어를 포함한다.
네트워크 계층은 피어 노드가 이 분야에 공지된 임의의 적절한 방법들을 이용하여 구름(11) 내의 다른 피어 노드들과 통신하는 것을 가능하게 하는 기능을 제공한다. 예를 들어, 본 피어 대 피어 콘텐츠 배포 프로토콜은 순서화된 전달을 보증하는 임의의 적절한 패킷 기반 통신 프로토콜을 통해 동작하도록 설계된다. TCP는 하나의 가능한 프로토콜이다. 통신 패킷들은 완전한, 올바르게 순서화된 데이터 전달을 보증하는 트랜스포트를 통해 전송된다.
바람직한 실시예에서, 콘텐츠 관리자(300)는 네트워크 계층(301)과의 통합 또는 맞춤형 인터페이스 구성에 대한 필요 없이 네트워크 계층(301)과 함께 사용될 수 있다는 점에서 플러그 가능한 모듈이다. 네트워크 계층은 상태 머신을 포함하며, 따라서 이는 네트워크 계층에서 어떤 패킷들이 송수신되었는지에 따라 소정 상태들에 있을 것이다. 콘텐츠 관리자(300)는 전술한 모듈 방식으로 네트워크 계층의 상태 머신과 연동할 수 있도록 바람직하게 형성된다.
콘텐츠 관리 모듈(300)의 플러그 가능 아키텍처는 또한 상이한 인코딩 방식들이 하나의 범용 협상 프로토콜을 이용하여 구현될 수 있도록 바람직하게 구성된다. 이 협상 프로토콜은 본 명세서에서 콘텐츠 요청/응답 사이클로서 참조된다.
콘텐츠 요청/응답 사이클
바람직한 실시예들에서, 본 발명은 다른 피어 노드들과 콘텐츠의 블록들에 대해 협상하기 위해 콘텐츠 요청/응답 사이클을 사용하도록 콘텐츠 관리 모듈(300)을 구성한다. 이러한 사이클은 하이 레벨에서 3개 단계, 즉 제의 요청, 제의 응답 및 데이터 검증을 포함한다. 도 4는 이러한 프로세스를 설명하는 하이 레벨 메시지 시퀀스 차트이다. 수신 확인 메시지들과 같은 추가 메시지들이 이 분야에 공지된 바와 같이 사용될 수 있으며, 이들은 명료화를 위해 도시되지 않는다.
피어 노드 앨리스(40)가 배포될 파일의 완전한 사본을 갖는 것으로 가정한다. 피어 노드 밥(41)이 파일을 요구한다. 앨리스는 임의의 적절한 방법을 이용하여 콘텐츠를 고정 크기의 블록들로 분할한다. 앨리스 및 밥은 이제 어떤 블록들 또는 블록들의 조합들을 교환할지를 협상하는 것이 필요하다. 이러한 협상의 목표는 앨리스가 밥에게 전송하는 콘텐츠가 유용하며, 밥이 이미 갖고 있는 콘텐츠가 아닌 것을 보증하는 것이다. 앨리스가 배포 파일을 형성하는 데 필요한 블록들의 서브세트만을 갖는 것도 가능하다. 이러한 블록들은 '앨리스'로 표시된 피어 노드에서 인코딩되거나, 인코딩된 형태로 앨리스에 의해 수신되었을 수 있다. 또한, 실제로, 구름(11) 내의 각각의 피어 노드는 앨리스 및 밥의 역할들 양자를 선택할 수 있다. 각각의 피어 노드는 구름 내의 임의 수의 다른 피어들에 대해 블록들을 동시에 송수신할 수 있다.
밥은 앨리스에게 그녀가 어떤 블록들을 그에게 제공할 수 있는지를 묻는 제의 요청 메시지(42)를 전송한다. 앨리스는 그녀가 제공할 수 있는 블록들의 설명을 갖는 제의 응답 메시지(43)를 이용하여 응답한다. 밥은 제의 응답을 검사하고, 그에게 유용한 제의된 블록들 중 하나를 그에게 전송하도록 앨리스에게 요청한다(블록 요청 메시지(44) 참조). 데이터 교환(45) 동안, 앨리스는 밥에게 그가 관심을 갖는 블록을 전송한다. 밥이 블록을 수신하면, 블록은 노드(41)에서의 데이터 검증 단계 동안 무결성에 대해 검증된다. 이러한 단계들은 밥이 오리지널 콘텐츠의 모든 블록을 수신할 때까지 반복될 수 있다.
이와 같이 적어도 메시지들(42, 43, 44)을 포함하는 콘텐츠 요청/응답 사이클을 이용함으로써, 본 발명은 간단하고 효율적인 방식으로 블록 협상을 달성할 수 있다. 본 출원인은 제의 응답(43)이 밥에 대한 혁신적인 콘텐츠를 포함할 가능성이 높은 상황들에서 콘텐츠 관리 모듈(300)이 네트워크 계층에 대하여 플러그 가능한 것을 가능하게 하는 데에 이러한 방법이 특히 이롭다는 것을 발견하였다. 이는 적어도 풀 네트워크 코딩 및 GNC가 사용될 때 사실이다. 또한, 이러한 협상 프로토콜은 상이한 인코딩 방식들과 함께 이롭게 사용할 수 있는 일반적인 방법을 제공한다.
제의 응답(43)이 밥에게 혁신적인 콘텐츠를 제공하지 못하는 경우, 밥은 앨리스에게 다른 제의 요청(42)을 발행할 수 있다. 대안으로, 밥은 앨리스에 대한 접속을 해제하고 구름 내의 다른 피어와의 접속을 시도할 수 있다.
풀 네트워크 코딩이 사용되는 경우, 제의 응답 메시지(43)는 앨리스에서 이용 가능한 모든 인코딩된 블록의 선형 조합을 포함할 수 있다. 이는 앨리스가 밥에게 혁신적인 콘텐츠를 제공할 수 있는 가능성을 증가시킨다.
소정 실시예들에서, 콘텐츠 요청/응답 사이클은 밥 및/또는 앨리스가 보다 많은 정보를 제공하는 것을 가능하게 하도록 추가된다. 예를 들어, 밥은 앨리스에게 그가 어떤 블록들을 요구하는지를 부분적으로 또는 완전히 설명할 수 있다. 이러한 경우에, 제의 요청 메시지(42)는 예를 들어 밥이 이미 이용 가능한 블록들(이는 밥이 다른 피어들로부터 요청하였으나 아직 받지 못한 블록들을 포함한다)의 상세를 포함한다.
앨리스가 어떤 블록들을 이용 가능한지를 부분적으로 또는 완전히 기술하는 것도 가능하다. 이들은 앨리스가 이미 인코딩된 형태로 갖고 있는 블록들 또는 그녀가 인코딩할 수 있는 블록들일 수 있다. 따라서, 제의 응답 메시지(43)는 앨리스가 이용 가능한 블록들의 모두 또는 일부에 대한 정보를 포함한다.
바람직한 실시예에서, GNC는 피어 대 피어 구름 내에서 구현된다. 이 경우, 협상 프로토콜은, 이제 도 5를 참조하여 설명되는 바와 같이 추가적인 정보가 교환되지만, 하이 레벨 용어에서 도 4와 그것과 동일하다.
GNC가 사용되는 이 실시예에서, 제의 요청 메시지(50)는 밥이 여전히 필요로 하는 콘텐츠의 대상인 그룹들 중 하나 이상의 그룹의 상세를 포함한다. 예를 들어, 밥은 그가 여전히 필요로 하는 콘텐츠의 대상인 그룹들의 리스트를 작성하며, 이 리스트는 효율성을 위해 비트 벡터로서 인코딩된다. 이어서, 비트 벡터는 제의 요청의 일부로서 전송된다. 그러나, 비트 벡터 인코딩을 사용하는 것은 필수적은 아니다. 밥의 불완전한 그룹들을 표현하는 임의의 적절한 방법이 이용될 수 있다. 비트 벡터를 이용하여, 어떤 그룹들에 대한 콘텐츠가 필요한지를 기술하는 것의 최적화가 이롭다. 이는 데이터가 유용한 그룹들의 간소한 표현을 허가한다. 예를 들어, 10GB 10,000 블록 500 그룹 파일에 대해, 전체 그룹에 바람직한 비트 벡터는 단지 63 바이트를 필요로 한다.
제의 응답 메시지(51)는 밥이 요청한 각각의 그룹에 대해 하나의 제의를 포함한다. 예를 들어, 단일 메시지 내에 일련의 제의들이 포함된다. 대안으로, 제의 응답 메시지(51)는 단일 그룹에 대한 제의를 각각 갖는 복수의 개별 제의 응답 메시지를 포함할 수 있다. 소정 실시예들에서 다수의 제의는 동일 그룹을 참조할 수 있다. 바람직한 실시예에서, 제의들은 이용 가능한 블록들을 나타내는 벡터들을 포함한다. 그러나, 벡터들을 사용하는 것은 필수적은 아니며, 임의의 적절한 유형의 표현이 사용될 수 있다. 벡터들이 사용되는 경우, 밥이 필요로 하는 콘텐츠의 대상이고 앨리스가 갖고 있는 블록들의 대상인 그룹들 각각에 대해, 앨리스는 그 그룹에 대한 단일 제의를 기술하는 벡터를 반환한다. 그러나, 앨리스가 동일 그룹에 대한 다수의 제의를 반환하는 것도 가능하다. 예를 들어, 이는 서버가 주어진 그룹에 대해 다수의 인코딩된 블록을 갖고, 이들을 새로운 조합된 블록으로 합성하기를 원하지 않는 경우에 유용하다. 앨리스는 그녀가 밥에게 전송하는 제의들의 리스트를 캐시할 수 있으며, 따라서 제의 생성 프로세스를 다시 행할 필요 없이 다수의 피어에게 동일 제의가 제공될 수 있다. 밥은 수신된 각각의 제의를 분석하고, 그가 관련 그룹에 대해 갖고 있는 임의의 다른 인코딩된 블록들에 대해 이를 대조한다. 혁신적인 제의들 중 하나가 선택되어, 앨리스에게 블록 요청(44)으로서 전송된다. 전술한 바와 같이, 블록 요청에 이어서, 데이터 교환(45) 및 데이터 검증이 행해진다.
피어 노드 밥은 임의의 적절한 방법을 이용하여 혁신적인 제의들 중 하나를 선택하도록 구성된다. 예를 들어, 선택은 실질적으로 무작위 또는 임의의 방식으로 행해진다. 대안으로, 선택은 밥이 관련 그룹에 대해 얼마나 많은 블록을 이미 갖고 있는지에 기초하여 이루어진다. 이는 온더플라이 그룹 디코딩이 사용되는 경우에 이롭다.
제의 요청 및 제의 응답에서 '부분' 정보를 전송함으로써 그리고/또는 제의 응답 단계에서 다수의 제의를 전송함으로써, 본 발명은 이점들을 달성한다. 이는 저성능 참가자들이 그들의 모든 현재 블록들에 대해 새로운 제의를 합성한 후 이를 트랜스코딩해야 하는 것이 아니라, 그들이 이미 수신한 블록들을 그들의 현재 형태로 제의하는 것을 가능하게 한다.
온더플라이 그룹 디코딩
소정 실시예들에서, 피어들(16)은 필요한 모든 인코딩된 콘텐츠를 수신할 때까지 기다린다. 이어서, 피어는 구름(11)으로부터 분리되어, 콘텐츠를 오리지널 파일로 디코딩한다. 대안 실시예들에서는, 온더플라이 그룹 디코딩이 사용된다. 이러한 실시예들에서는, GNC 또는 동등한 코딩 방법들이 이용된다. 이어서, 피어는 블록 교환과 동시에 디코딩될 충분한 블록들을 갖는 그룹들의 디코딩을 수행할 수 있다. 이러한 유형의 상황에서는, 다른 피어로부터의 제의들을 선택할 때 거의 완전한 그룹들을 우선 순위화할 수 있다. 이렇게 함으로써, 온더플라이 디코딩을 위해 완전한 그룹들이 비교적 빠르게 얻어질 수 있다.
데이터 검증
데이터 검증 프로세스는 임의의 적절한 방식으로 달성된다. 예를 들어, 네트워크 코딩(풀 네트워크 코딩 또는 GNC)이 사용되는 경우, 동형 해시(homomorphic hash) 또는 SRC(secure random checksum) 방법이 이용된다. 네트워크 코딩이 이용되지 않는 경우, 정규 체크섬 또는 단순 해시가 사용되거나, 대안으로 SRC 또는 동형 해시 방법이 이용될 수 있다. 예를 들어, 적절한 SRC 방법들의 상세는 2006년 2월 28일자로 출원된 본 출원인의 보다 앞선 유럽 특허 출원 번호 06270027.3에 설명되어 있다.
메시지 포맷
콘텐츠 관리 모듈들에 의해 서로 협상하는 데 사용되는 메시지들은 임의의 적절한 포맷을 갖는다. 예를 들어, 각각의 메시지는 하나 이상의 메시지 요소를 포함하며, 각각의 요소는 길이 및 필드 유형을 갖는다. 아래의 테이블들은 바람직한 실시예에서 각각의 메시지의 콘텐츠의 일례를 제공한다. 제의 요청 메시지(42)는 아래에서 Message_Contentrequest로서 참조되고, 제의 응답 메시지(43)은 아래에서 Message_Contentresponse로서 참조되고, 블록 요청 메시지(44)는 아래에서 Message_blockrequest로서 참조되며, 데이터 교환 프로세스(45)의 일부로서 블록을 전송하는 메시지는 Message_blockdata이다. 이들은 예시적일 뿐, 유사한 기능을 달성하기 위해 다른 메시지 포맷들 및 콘텐츠가 사용될 수 있다는 점에 유의한다. 이 예에서는, 메시지 요소 또는 컴포넌트마다 도시된 3개의 칼럼이 존재한다. 이들은 데이터 유형, 컴포넌트 명칭 및 컴포넌트의 값(관련되거나 공지된 경우)을 포함한다. 데이터 유형은 DWORD(더블 워드 32비트), WORD(16비트) 및 바이트(8비트) 중에서 선택된다.
Figure 112008078507919-pct00002
Figure 112008078507919-pct00003
Figure 112008078507919-pct00004
Figure 112008078507919-pct00005
이 분야의 전문가들은 프로그램 명령어를 저장하는 데 사용되는 저장 장치들이 네트워크를 통해 분산될 수 있음을 인식할 것이다. 예를 들어, 원격 컴퓨터는 소프트웨어로서 기술된 프로세스의 일례를 저장할 수 있다. 로컬 또는 단말 컴퓨터는 원격 컴퓨터에 액세스하고, 소프트웨어의 일부 또는 전부를 다운로드하여 프로그램을 실행할 수 있다. 대안으로, 로컬 컴퓨터는 필요에 따라 소프트웨어의 부분들을 다운로드하거나, 일부 소프트웨어 명령어를 로컬 단말기에서, 그리고 일부 소프트웨어 명령어는 원격 컴퓨터(또는 컴퓨터 네트워크)에서 실행할 수 있다. 이 분야의 전문가들은 또한, 이 분야의 전문가들에게 공지된 통상의 기술들을 이용함으로써 소프트웨어 명령어의 전부 또는 일부가 DSP, 프로그래머블 로직 어레이 등과 같은 전용 회로에 의해 실행될 수 있음을 인식할 것이다.
이 분야의 전문가에게 자명하듯이, 본 명세서에서 주어지는 임의의 범위 또는 장치 값은 추구하는 효과를 잃지 않고 확장 또는 변경될 수 있다.
본 명세서에 설명되는 방법들의 단계들은 임의의 적절한 순서로, 또는 적절한 경우에는 동시에 실행될 수 있다.
본 예들은 피어 대 피어 파일 배포 시스템에서 구현되는 것으로서 본 명세서에 설명되고 도시되지만, 설명되는 시스템은 제한이 아니라 일례로서 제공된다. 이 분야의 전문가들이 이해하듯이, 본 예들은 예를 들어 데이터베이스 또는 파일 트리의 하나의 사본을 최신 형태로 갱신하기 위한 데이터 복제를 포함하는 다양한 상이한 유형의 콘텐츠 배포 시스템들에서의 응용에 적합하다.
바람직한 실시예의 상기 설명은 단지 예시적으로 주어지며, 이 분야의 전문가들에 의해 다양한 변경들이 이루어질 수 있음을 이해할 것이다. 상기 명세서, 예들 및 데이터는 본 발명의 실시예들의 구조 및 사용의 완전한 설명을 제공한다. 본 발명의 다양한 실시예를 어느 정도 구체적으로 그리고 하나 이상의 개별 요소를 참조하여 전술하였지만, 이 분야의 전문가들은 본 발명의 사상 또는 범위를 벗어나지 않고 개시된 실시예들에 대해 다양한 변경들을 행할 수 있을 것이다.

Claims (20)

  1. 피어 대 피어 콘텐츠 배포 구름(peer to peer content distribution cloud, 10) 내에서 2개의 피어(16) 사이에 어떠한 하나 이상의 콘텐츠의 블록을 교환할지를 협상하는 방법으로서,
    클라이언트 노드로서 동작하는 피어 노드(41)에서,
    서버 노드로서 동작하는 다른 피어 노드(40)와의 연결을 설정하는 단계;
    제의 요청 메시지(an offer request message, 42)를 상기 연결을 통해 상기 서버 노드에 전송하여, 그 서버 노드로부터 이용가능한 하나 이상의 콘텐츠의 블록에 대한 제의(an offer of one or more blocks of content)를 요청하는 단계;
    상기 서버 노드로부터 이용 가능한 총 수의 콘텐츠의 블록들 중 단지 일부에 대한 정보를 포함하는 제의 응답 메시지(43)를 상기 연결을 통해 상기 서버 노드로부터 수신하는 단계;
    상기 제의 응답 메시지 내의 정보에 기초하여 적어도 하나의 블록을 선택하고, 블록 요청 메시지(a block request message, 44)를 상기 연결을 통해 상기 서버 노드에 전송하여 상기 선택된 블록 또는 블록들을 요청하는 단계를 포함하고,
    상기 블록들은 블록들의 그룹에 기초하여 수행되는 네트워크 코딩인 그룹 네트워크 코딩(Group Network Coding)을 이용하여 인코딩되고, 상기 제의 요청 메시지(42)는 상기 클라이언트 노드가 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹 네트워크 코딩 그룹에 대한 정보를 포함하는
    콘텐츠 블록 교환 협상 방법.
  2. 제1항에 있어서,
    상기 제의 요청 메시지는 상기 클라이언트 노드가 이미 이용 가능한 콘텐츠의 블록들을 적어도 부분적으로 나타내는 정보를 포함하는
    콘텐츠 블록 교환 협상 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제의 요청 메시지는 상기 클라이언트 노드에 의해 요구되는 콘텐츠의 블록들을 나타내는 정보를 포함하는
    콘텐츠 블록 교환 협상 방법.
  4. 제1항 또는 제2항에 있어서,
    상기 제의 응답 메시지는 상기 클라이언트 노드가 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 제의를 포함하는
    콘텐츠 블록 교환 협상 방법.
  5. 제1항 또는 제2항에 있어서,
    상기 제의 응답 메시지는 동일 그룹에 대한 복수의 제의를 포함하는
    콘텐츠 블록 교환 협상 방법.
  6. 제4항에 있어서,
    적어도 하나의 블록을 선택하는 상기 단계는, 각각의 그룹에 대해, 상기 제의된 블록들 중에서 클라이언트 노드에 존재하지 않는 블록들을 식별하는 단계를 포함하고, 상기 방법은 상기 식별된 블록들 중 하나 이상을 선택하는 단계를 더 포함하는
    콘텐츠 블록 교환 협상 방법.
  7. 제6항에 있어서,
    상기 하나 이상의 식별된 블록의 선택은 관련된 그룹에 대해 이미 얻어진 콘텐츠의 양에 기초하여 수행되는
    콘텐츠 블록 교환 협상 방법.
  8. 피어 대 피어 콘텐츠 배포 구름(10) 내에서 2개의 피어(16) 사이에 어떠한 하나 이상의 콘텐츠의 블록을 교환할지를 협상하는 방법으로서,
    서버 노드로서 동작하는 피어 노드(40)에서,
    클라이언트 노드로서 동작하는 다른 피어 노드(41)와의 연결을 설정하는 단계;
    상기 서버 노드로부터 이용가능한 하나 이상의 콘텐츠의 블록에 대한 제의를 요청하는 제의 요청 메시지(42)를 클라이언트 노드로서 동작하는 피어 노드(41)로부터 상기 연결을 통해 수신하는 단계;
    상기 서버 노드로부터 이용 가능한 총 수의 콘텐츠의 블록들 중 단지 일부에 대한 정보를 포함하는 제의 응답 메시지(43)를 상기 연결을 통해 전송하는 단계;
    상기 제의된 블록들 중 하나 이상의 선택된 블록을 요청하는 블록 요청 메시지(44)를 상기 연결을 통해 상기 클라이언트 노드로부터 수신하는 단계; 및
    상기 요청된 블록(들)을 상기 연결을 통해 상기 클라이언트 노드로 전송하는 단계를 포함하고,
    상기 블록들은 블록들의 그룹에 기초하여 수행되는 네트워크 코딩인 그룹 네트워크 코딩을 이용하여 인코딩되고, 상기 제의 요청 메시지(42)는 상기 클라이언트 노드가 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹 네트워크 코딩 그룹에 대한 정보를 포함하는
    콘텐츠 블록 교환 협상 방법.
  9. 제8항에 있어서,
    상기 제의 응답 메시지는 상기 클라이언트 노드가 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 제의를 포함하는
    콘텐츠 블록 교환 협상 방법.
  10. 제8항에 있어서,
    상기 제의 응답 메시지는 동일 그룹에 대한 복수의 제의를 포함하는
    콘텐츠 블록 교환 협상 방법.
  11. 제1항 또는 제8항의 모든 단계를 수행하도록 구성된 컴퓨터 프로그램 코드 수단을 포함하는
    컴퓨터 판독가능 저장 매체.
  12. 피어 대 피어 콘텐츠 배포 구름(10) 내에서 클라이언트 노드로서 동작하고, 블록들의 그룹에 기초하여 수행되는 네트워크 코딩인 그룹 네트워크 코딩을 이용하여 설정된 연결을 통해 자신과 구름 내의 다른 피어(40) 사이에 어떠한 하나 이상의 콘텐츠의 블록을 교환할지를 협상하기에 적합한 피어 노드(16, 19)로서,
    제의 요청 메시지(42)를 상기 설정된 연결을 통해 서버 노드로서 동작하는 다른 피어 노드에 전송하여, 그 서버 노드로부터 이용 가능한 하나 이상의 콘텐츠의 블록에 대한 제의를 요청하는 수단(300, 301) - 상기 제의 요청 메시지는 상기 클라이언트 노드가 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹 네트워크 코딩 그룹에 대한 정보를 포함함 - ;
    상기 서버 노드로부터 이용 가능한 총 수의 콘텐츠의 블록들 중 단지 일부에 대한 정보를 포함하는 제의 응답 메시지(43)를 상기 연결을 통해 상기 서버 노드로부터 수신하는 수단(300, 301);
    상기 제의 응답 메시지 내의 정보에 기초하여 적어도 하나의 블록을 선택하고, 블록 요청 메시지(44)를 상기 연결을 통해 상기 서버 노드에 전송하여 상기 선택된 블록 또는 블록들을 요청하도록 구성되는 프로세서(300, 301)를 포함하는
    피어 노드.
  13. 제12항에 있어서,
    상기 제의 요청 메시지를 전송하는 수단은 상기 클라이언트 노드가 이미 이용 가능한 콘텐츠의 블록들을 적어도 부분적으로 나타내는 정보를 포함하는 제의 요청 메시지를 전송하도록 구성되는
    피어 노드.
  14. 제12항 또는 제13항에 있어서,
    상기 제의 요청 메시지를 전송하는 수단은 상기 클라이언트 노드에 의해 요구되는 콘텐츠의 블록들을 적어도 부분적으로 나타내는 정보를 포함하는 제의 요청 메시지를 전송하도록 구성되는
    피어 노드.
  15. 제12항 또는 제13항에 있어서,
    상기 제의 응답 메시지를 수신하는 수단은 상기 클라이언트 노드가 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 제의를 수신하는 수단을 포함하는
    피어 노드.
  16. 피어 대 피어 콘텐츠 배포 구름(10) 내에서 서버 노드(40)로서 동작하고, 블록들의 그룹에 기초하여 수행되는 네트워크 코딩인 그룹 네트워크 코딩을 이용하여 설정된 연결을 통해 자신과 구름 내의 다른 피어(41) 사이에 어떠한 하나 이상의 콘텐츠의 블록을 교환할지를 협상하기에 적합한 피어 노드(16, 19)로서,
    상기 서버 노드로부터 이용가능한 하나 이상의 콘텐츠의 블록에 대한 제의를 요청하는 제의 요청 메시지(42)를 상기 연결을 통해 클라이언트 노드로서 동작하는 다른 피어 노드로부터 수신하는 수단(300, 301) - 상기 제의 요청 메시지는 상기 다른 피어 노드가 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 정보를 포함함 - ;
    상기 서버 노드로부터 이용 가능한 총 수의 콘텐츠의 블록들 중 단지 일부에 대한 정보를 포함하는 제의 응답 메시지(43)를 상기 연결을 통해 전송하는 수단(300, 301);
    상기 제의된 블록들 중 하나 이상의 선택된 블록을 요청하는 블록 요청 메시지(44)를 상기 연결을 통해 상기 클라이언트 노드로부터 수신하는 수단(300, 301); 및
    상기 요청된 블록 또는 블록들을 상기 클라이언트 노드로 전송하는 수단(300, 301)을 포함하는
    피어 노드.
  17. 제16항에 있어서,
    상기 다른 피어 노드가 필요로 하는 콘텐츠의 대상인 하나 이상의 그룹에 대한 정보는 비트 벡터(bit vector)로서 제공되는
    피어 노드.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020087027795A 2006-05-19 2007-04-05 콘텐츠 블록 교환 협상 방법, 컴퓨터 프로그램, 및 피어 노드 KR101366364B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06270051A EP1858226B1 (en) 2006-05-19 2006-05-19 Content management in peer-to-peer content distribution clouds
EP06270051.3 2006-05-19
PCT/US2007/008675 WO2007136464A1 (en) 2006-05-19 2007-04-05 Content management in peer-to-peer content distribution clouds

Publications (2)

Publication Number Publication Date
KR20090018907A KR20090018907A (ko) 2009-02-24
KR101366364B1 true KR101366364B1 (ko) 2014-02-21

Family

ID=37311040

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087027795A KR101366364B1 (ko) 2006-05-19 2007-04-05 콘텐츠 블록 교환 협상 방법, 컴퓨터 프로그램, 및 피어 노드

Country Status (8)

Country Link
US (1) US8090861B2 (ko)
EP (1) EP1858226B1 (ko)
KR (1) KR101366364B1 (ko)
CN (1) CN101449287B (ko)
AT (1) ATE482562T1 (ko)
DE (1) DE602006017040D1 (ko)
DK (1) DK1858226T3 (ko)
WO (1) WO2007136464A1 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680937B2 (en) * 2005-12-22 2010-03-16 Microsoft Corporation Content publication
US8694662B2 (en) * 2007-07-10 2014-04-08 Qualcomm Incorporated Method and apparatus for communicating transmission requests to members of a group and/or making group related transmission decisions
US7961698B2 (en) * 2007-07-10 2011-06-14 Qualcomm Incorporated Methods and apparatus for controlling interference to broadcast signaling in a peer to peer network
US8861418B2 (en) * 2007-07-10 2014-10-14 Qualcomm Incorporated Methods and apparatus for supporting group communications with data re-transmission support
US8495232B2 (en) * 2007-07-10 2013-07-23 Qualcomm Incorporated Methods and apparatus for supporting broadcast communications in a peer to peer network
CN101217489B (zh) * 2008-01-10 2011-05-04 复旦大学 具有网络编码功能的路由器和基于网络编码的组网方法
WO2010077379A1 (en) * 2008-05-23 2010-07-08 Jason Nieh Systems and methods for peer-to-peer bandwidth allocation
TWI372547B (en) * 2008-12-31 2012-09-11 Ind Tech Res Inst Method and system for peer-to-peer file transmission
US9258361B2 (en) * 2009-04-08 2016-02-09 New Jersey Institute Of Technology Transferring data among nodes on a network
US8935366B2 (en) * 2009-04-24 2015-01-13 Microsoft Corporation Hybrid distributed and cloud backup architecture
US8769055B2 (en) * 2009-04-24 2014-07-01 Microsoft Corporation Distributed backup and versioning
US8769049B2 (en) * 2009-04-24 2014-07-01 Microsoft Corporation Intelligent tiers of backup data
CN101901135A (zh) * 2009-05-27 2010-12-01 上海亿川信息技术有限公司 Ccea-云计算平台的开发及其在教育领域的应用
US8285681B2 (en) * 2009-06-30 2012-10-09 Commvault Systems, Inc. Data object store and server for a cloud storage environment, including data deduplication and data management across multiple cloud storage sites
US20110246294A1 (en) * 2010-03-30 2011-10-06 Beet, Inc. System and method for content management and distribution
US9432454B2 (en) * 2011-08-29 2016-08-30 At&T Intellectual Property I, L.P. Cloud-to-cloud peering
US9237107B2 (en) 2011-11-15 2016-01-12 New Jersey Institute Of Technology Fair quantized congestion notification (FQCN) to mitigate transport control protocol (TCP) throughput collapse in data center networks
EP2812833A1 (en) * 2012-02-06 2014-12-17 Redigi Inc. Digital data commerce system and methods with digital media object to cloud redirection
US8805797B2 (en) * 2012-02-22 2014-08-12 International Business Machines Corporation Optimizing wide area network (WAN) traffic by providing home site deduplication information to a cache site
US8950009B2 (en) 2012-03-30 2015-02-03 Commvault Systems, Inc. Information management of data associated with multiple cloud services
CN103516757B (zh) * 2012-06-28 2016-12-21 华为技术有限公司 内容处理方法、装置及系统
US9491494B2 (en) 2012-09-20 2016-11-08 Google Technology Holdings LLC Distribution and use of video statistics for cloud-based video encoding
US9549024B2 (en) 2012-12-07 2017-01-17 Remote Media, Llc Routing and synchronization system, method, and manager
US9143568B2 (en) 2012-12-18 2015-09-22 Microsoft Technology Licensing, Llc. Peer-to-peer sharing of cloud-based content
US10346259B2 (en) 2012-12-28 2019-07-09 Commvault Systems, Inc. Data recovery using a cloud-based remote data recovery center
KR20150000333A (ko) 2013-06-24 2015-01-02 삼성전기주식회사 데이터 브로드캐스팅 방법, 및 그를 이용한 중계 노드 및 다중 노드 네트워크
CN104065663A (zh) * 2014-07-01 2014-09-24 复旦大学 一种基于混合云调度模型的自动伸缩、费用优化的内容分发服务方法
CN105141470B (zh) * 2015-06-25 2018-12-11 南京师范大学 基于网络编码的内容分发系统线性相关性判断方法和装置
US11108858B2 (en) 2017-03-28 2021-08-31 Commvault Systems, Inc. Archiving mail servers via a simple mail transfer protocol (SMTP) server
US11074138B2 (en) 2017-03-29 2021-07-27 Commvault Systems, Inc. Multi-streaming backup operations for mailboxes
US11221939B2 (en) 2017-03-31 2022-01-11 Commvault Systems, Inc. Managing data from internet of things devices in a vehicle
US10552294B2 (en) 2017-03-31 2020-02-04 Commvault Systems, Inc. Management of internet of things devices
US11294786B2 (en) 2017-03-31 2022-04-05 Commvault Systems, Inc. Management of internet of things devices
CN108964845B (zh) * 2018-07-03 2021-04-16 网宿科技股份有限公司 一种获取bt资源信息的方法和设备
US10891198B2 (en) 2018-07-30 2021-01-12 Commvault Systems, Inc. Storing data to cloud libraries in cloud native formats
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US11366723B2 (en) 2019-04-30 2022-06-21 Commvault Systems, Inc. Data storage management system for holistic protection and migration of serverless applications across multi-cloud computing environments
US11461184B2 (en) 2019-06-17 2022-10-04 Commvault Systems, Inc. Data storage management system for protecting cloud-based data including on-demand protection, recovery, and migration of databases-as-a-service and/or serverless database management systems
US20210011816A1 (en) 2019-07-10 2021-01-14 Commvault Systems, Inc. Preparing containerized applications for backup using a backup services container in a container-orchestration pod
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
US11321188B2 (en) 2020-03-02 2022-05-03 Commvault Systems, Inc. Platform-agnostic containerized application data protection
US11422900B2 (en) 2020-03-02 2022-08-23 Commvault Systems, Inc. Platform-agnostic containerized application data protection
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11500669B2 (en) 2020-05-15 2022-11-15 Commvault Systems, Inc. Live recovery of virtual machines in a public cloud computing environment
US11314687B2 (en) 2020-09-24 2022-04-26 Commvault Systems, Inc. Container data mover for migrating data between distributed data storage systems integrated with application orchestrators
US11604706B2 (en) 2021-02-02 2023-03-14 Commvault Systems, Inc. Back up and restore related data on different cloud storage tiers
US12032855B2 (en) 2021-08-06 2024-07-09 Commvault Systems, Inc. Using an application orchestrator computing environment for automatically scaled deployment of data protection resources needed for data in a production cluster distinct from the application orchestrator or in another application orchestrator computing environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148411A1 (en) 2002-12-04 2004-07-29 Meinolf Blawat Method for communication between nodes in peer-to peer networks using common group label
KR20050051200A (ko) * 2003-11-27 2005-06-01 삼성전자주식회사 P2p 프로토콜을 이용하여 어플리케이션을 공유하는 방법및 장치
US20050283537A1 (en) 2004-05-14 2005-12-22 Microsoft Corporation Distributed hosting of web content using partial replication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3496613B2 (ja) * 2000-02-10 2004-02-16 日本電気株式会社 デジタルコンテンツのコピー制御方法及び装置
US7227864B2 (en) 2001-12-17 2007-06-05 Microsoft Corporation Methods and systems for establishing communications through firewalls and network address translators
US7225228B2 (en) 2002-03-25 2007-05-29 Sun Microsystems, Inc. Efficient binary content distribution using propagating messages
KR20050002560A (ko) * 2003-06-30 2005-01-07 주식회사 그래텍 피투피 기반의 멀티미디어 콘텐츠 제공 시스템 및 그 방법
EP1747636A2 (en) * 2004-05-07 2007-01-31 Home Box Office Inc. Method and system for secure distribution of content over a communications network
US20050276252A1 (en) * 2004-06-09 2005-12-15 Sizeland Robert L Medium access control for wireless networks
US7756051B2 (en) * 2004-07-02 2010-07-13 Microsoft Corporation Content distribution using network coding
US7593333B2 (en) * 2004-07-07 2009-09-22 Microsoft Corporation Efficient one-to-many content distribution in a peer-to-peer computer network
DE102005010131A1 (de) * 2005-03-02 2006-09-07 Arvato Mobile Gmbh Verfahren zur Übertragung von digitalen Inhalten eines Inhalteanbieters an die Nutzer eines Online- Inhalteübertragungssystems
US20060224760A1 (en) * 2005-03-15 2006-10-05 1000 Oaks Hu Lian Technology Development (Beijing) Co., Ltd. Method and system for providing streaming content in a peer-to-peer network with network coding
US20060212595A1 (en) * 2005-03-15 2006-09-21 1000 Oaks Hu Lian Technology Development (Beijing) Co., Ltd. Method and computer-readable medium for associating sequence numbers with data blocks for distribution of data in a peer-to-peer network
EP1826695A1 (en) * 2006-02-28 2007-08-29 Microsoft Corporation Secure content descriptions
EP1802079B1 (en) * 2005-12-22 2010-03-31 Microsoft Corporation Connection management in peer-to-peer content distribution clouds

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148411A1 (en) 2002-12-04 2004-07-29 Meinolf Blawat Method for communication between nodes in peer-to peer networks using common group label
KR20050051200A (ko) * 2003-11-27 2005-06-01 삼성전자주식회사 P2p 프로토콜을 이용하여 어플리케이션을 공유하는 방법및 장치
US20050283537A1 (en) 2004-05-14 2005-12-22 Microsoft Corporation Distributed hosting of web content using partial replication

Also Published As

Publication number Publication date
WO2007136464A1 (en) 2007-11-29
US8090861B2 (en) 2012-01-03
EP1858226B1 (en) 2010-09-22
CN101449287A (zh) 2009-06-03
ATE482562T1 (de) 2010-10-15
DK1858226T3 (da) 2011-01-24
KR20090018907A (ko) 2009-02-24
US20090198825A1 (en) 2009-08-06
EP1858226A1 (en) 2007-11-21
CN101449287B (zh) 2013-06-19
DE602006017040D1 (de) 2010-11-04

Similar Documents

Publication Publication Date Title
KR101366364B1 (ko) 콘텐츠 블록 교환 협상 방법, 컴퓨터 프로그램, 및 피어 노드
KR101292920B1 (ko) 피어-투-피어 메시지 형식 데이터 구조를 저장하고 있는컴퓨터 판독가능 매체 및 패킷 형성 방법
KR101153124B1 (ko) 네트워크 코딩을 사용한 콘텐츠 분배
JP3851275B2 (ja) 分散コンピュータ・ネットワークのスケーラブルなリソース・ディスカバリおよび再構成
US8051205B2 (en) Peer-to-peer distributed storage
US7849196B2 (en) Connection management in peer-to-peer content distribution clouds
JP3956365B2 (ja) 分散コンピュータ・ネットワーク内の資源要求に応答するシステムおよび方法
EP2057823B1 (en) Cache structure
US9270750B1 (en) Distributed cloud computing platform and content delivery network
EP2975819B1 (en) Reconstructable content objects
Costa et al. Camcubeos: a key-based network stack for 3d torus cluster topologies
Hofstätter et al. Chordella-a hierarchical peer-to-peer overlay implementation for heterogeneous, mobile environments
Xu et al. I-swifter: improving chunked network coding for peer-to-peer content distribution
Skevik et al. Analysis of bittorrent and its use for the design of a p2p based streaming protocol for a hybrid cdn
Anandaraj et al. An efficient framework for large scale multimedia content distribution in P2P network: I2NC
Erman Extending bittorrent for streaming applications
Hundeboll et al. Peer-assisted content distribution with random linear network coding
Wang et al. NCDN: A Node‐Failure Resilient CDN Solution with Reinforcement Learning Optimization
Bakker et al. Tribler protocol specification
Seo et al. The algorithm of sharing incomplete data in decentralized p2p
Wu et al. Research on P2P live streaming system
Bari PEER TO PEER VoIP/MESSAGING
Nam et al. Analysis of BitTorrent Protocol and Its Effect on the Network
Sabarigirivason et al. A Novel On Fast Parallel File Transfer Using Replication
Pourreza File sharing using bittorrent protocol in wireless ad-hoc networks

Legal Events

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

Payment date: 20170119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 7