KR102029326B1 - 피어-투-피어 라이브 스트리밍 - Google Patents

피어-투-피어 라이브 스트리밍 Download PDF

Info

Publication number
KR102029326B1
KR102029326B1 KR1020137025340A KR20137025340A KR102029326B1 KR 102029326 B1 KR102029326 B1 KR 102029326B1 KR 1020137025340 A KR1020137025340 A KR 1020137025340A KR 20137025340 A KR20137025340 A KR 20137025340A KR 102029326 B1 KR102029326 B1 KR 102029326B1
Authority
KR
South Korea
Prior art keywords
peer
club
peers
data block
clubs
Prior art date
Application number
KR1020137025340A
Other languages
English (en)
Other versions
KR20140016303A (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 KR20140016303A publication Critical patent/KR20140016303A/ko
Application granted granted Critical
Publication of KR102029326B1 publication Critical patent/KR102029326B1/ko

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • 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/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • 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
    • 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/1044Group management mechanisms 
    • H04L67/1046Joining mechanisms
    • 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/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1063Discovery through centralising entities
    • 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
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 

Abstract

피어-투-피어 프로토콜에 따라서, 피어-투-피어 네트워크는, 네트워크의 소스에 의하여 배포되는 컨텐츠를 수신하는, 복수의 클럽들과 복수의 피어들을 포함한다. 복수 개의 피어의 각각은 적어도 2개의 클럽들의 일원이다. 컨텐츠가 생성됨에 따라서, 소스는 그 컨텐츠를 복수의 데이터 블록들로 나누고 각 데이터 블록을 하나의 클럽에 할당한다. 각 데이터 블록은, 그 데이터 블록이 할당된 클럽에 속하는 피어들에게 전송된다. 클럽 내의 피어가 그 클럽에 할당된 데이터 블록을 수신하는 때에, 그 피어는 그 데이터 블록을 클럽 내의 다른 피어들에게 전송한다. 추가적으로, 피어는 다른 클럽 내의 피어들에게 데이터 블록을 전송한다. 또한, 피어는, 그 클럽의 멤버가 아닌 피어들로부터 다른 클럽들에 할당된 데이터 블록들을 수신한다.

Description

피어-투-피어 라이브 스트리밍{PEER-TO-PEER LIVE STREAMING}
본 발명은 일반적으로는 피어-투-피어(peer-to-peer) 네트워크에 관한 것이고, 더욱 상세하게는 컨텐츠 스트리밍을 위한 피어-투-피어 프로토콜에 관한 것이다.
피어-투-피어 네트워크는 서로의 확립된 연결들을 가지는 다수의 피어들(peers)을 포함한다. 각 피어는 리소스의 제공자(즉, 송신자) 및 소비자(즉, 수신자) 양자 모두로서 역할을 하는데, 이는, 서버가 제공하고 클라이언트가 소비하는 식의 전통적인 클라이언트-서버 모델과는 상이하다.
피어-투-피어 네트워크는 다수의 피어들에게 라이브 컨텐츠를 배포(즉, 라이브 이벤트의 레코딩을 스트리밍)하는데 사용될 수 있다. 라이브 컨텐츠를 배포하는 한 가지 방법은, 네트워크의 각 피어로 하여금 수신한 컨텐츠의 각 데이터 블록을 이웃하는 피어들에게 전달하게 하는 것이다. 이러한 접근은, 각 피어가 다른 피어들로부터 동일한 블록을 여러번 수신할 것이라는 점에서 상당한 오버헤드(over head)를 수반한다. 라이브 컨텐츠를 배포하는 다른 방법은, 각 피어가 다른 피어들로부터 필요한 데이터 블록들을 명시적으로 요청하게 하는 것이다. 그러나, 이러한 접근은, 시간 지연(latency)(즉, 피어가 데이터 블록을 수신하는데 드는 시간의 양)이 많아지는 결과에 이른다.
여기서 설명되는 본 발명의 실시예들은, 피어-투-피어 네트워크에서 컨텐츠를 스크리밍하기 위한 프로토콜을 제공한다. 이 프로토콜에 따르면, 피어-투-피어 네크워크는, 복수개의 클럽들(clubs)과 네트워크의 소스에 의하여 배포되는 컨텐츠를 수신받는 복수개의 피어들을 포함한다. 복수개의 피어들은 각각 적어도 2개의 클럽들의 일원이다. 컨텐츠가 생성됨에 따라서, 소소는 컨텐츠를 복수개의 데이터 블록들로 나누고 각 데이터 블록을 하나의 클럽에 할당한다(assign). 각 데이터 블록은, 데이터 블록이 할당된 클럽에 속하는 피어들에게 전송된다. 클럽 내의 피어가 클럽에 할당된 데이터 블록을 수신하면, 그 피어는 그 데이터 블록을 클럽 내의 다른 피어들에게 배포한다. 추가적으로, 그 피어는 다른 클럽들 내의 피어들에게 그 데이터 블록을 배포하기도 한다. 또한, 그 피어는 다른 클럽들에 할당된 데이터 블록들을 자신의 클럽의 멤버들이 아닌 피어들로부터 수신하기도 한다.
도1은, 본 발명의 일실시예에 따른 네트워킹 환경의 블록도이다.
도2는, 본 발명의 일실시예에 따른, 소스, 트래커(tracker), 및/또는 피어로서 사용되는 전형적인 컴퓨터 시스템의 기능을 설명하는 블록도이다.
도3은, 본 발명의 일실시예에 따른, 피어-투-피어 네트워크의 아키텍쳐(architecture)를 설명하는 블록도이다.
도4는, 본 발명의 일실시예에 따라서, 컨텐츠를 수신하는 피어-투-피어 네트워크에 피어가 합류하는(join) 과정을 설명하는 흐름도이다.
도5는, 본 발명의 일실시예에 따라서, 피어-투-피어 네트워크에서 컨텐츠를 스트리밍하는 과정을 설명하는 흐름도이다.
도6은, 본 발명의 일실시예에 따라서, 피어-투-피어 네트워크 안에서 수신된 컨텐츠를 피어가 배포하는 과정을 설명하는 흐름도이다.
이 도면들은 다양한 실시예들을 설명하기 위한 목적으로 도시된 것이다. 본 기술 분야의 당업자는 이하의 논의로부터, 여기에서 설명되는 원리로부터 멀어지지 않으면서 여기에서 설명된 구조들 및 방법들에 관한 대안적인 실시예들을 용이하게 인식할 것이다.
개괄(Overview)
도1은, 본 발명의 일실시예에 따른, 네트워킹 환경(100)의 블록도이다. 네트워킹 환경(100)은, 피어-투-피어 네트워크(102)을 통하여 통신하는, 소스(source)(104), 트래커(tracker)(106) 및 피어들(108(a)~108(h))을 포함한다. 소스(104)는 피어들(108)과의 연결을 생성하고(create), 피어들(108)은 서로간의 연결을 생성하여 피어-투-피어 네트워크(102)을 형성한다. 소스(104)와 피어들(108)은, 여기에서 설명되는 피어-투-피어 프로토콜에 따라서 컨텐츠를 공유한다. 이러한 피어-투-피어 프로토콜은, 컨텐츠가 피어-투-피어 네트워크(102) 내에서 스트리밍되도록 하고, 짧은 대기시간(latency)과 낮은 오버헤드 퀄리티(overhead qualities)인하여 라이브 컨텐츠의 스트리밍에 특별히 유용하다. 실시예에서 도시된 환경(100)은, 하나의 소스, 하나의 트래커 및 제한된 수의 피어들이 포함된 경우이나, 다른 실시예에서는 각각 추가적인 갯수들(예를 들어서, 더 많은 수의 피어들)을 포함할 수 있다
소스(104)는 네트워크(102)의 피어들(108) 사이에 공유되는 컨텐츠를 제공하는(즉, 네트워크(102) 안으로 컨텐츠를 가져오는) 컴퓨터 시스템이다. 일실시예에서, 이 컨텐츠는 멀티미디어 컨텐츠(예를 들어서, 비디오 및/또는 오디오)의 공급원(feed)이다. 일실시예에서, 이 컨텐츠는 네트워크(102) 내에서 스트리밍되면서 생성되는(generate) 라이브 공급원(live feed)이다. 소스(104)는, 하기에서 설명되는 피어-투-피어 프로토콜에 따라서, 이 컨텐츠를 네트워크(102)의 피어들(108)에게 배포한다. 컨텐츠를 공유하는 소스(104) 및 피어들(108)은 집합적으로, 스웜(swarm) 또는 피어-투-피어 네트워크(102)로 불리워질 수도 있다.
트래커(tracker)(106)은, 이 무리떼(swarm)의 일원인 피어들(108)의 트랙(track)을 유지하는 컴퓨터 시스템이다. 일실시예에서, 트래커(106)는, 스웜(swarm)의 피어들(108)의 리스트를 유지한다. 스웜(swarm)의 각 피어에 대하여, 일실시예에서의 트래커(106)는, 피어의 인터넷 프로토콜(IP) 주소와 포트 넘버(식별 정보, identifying information)를 포함한다. 피어가 스웜(swarm)에 합류하면, 트래커(106)는 그 피어의 IP 주소와 포트 넘버를 리스트에 추가한다.
일실시예에서, 스웜(swarm)의 각 피어는, 트래커(106)에게 피어가 여전히 스웜(swarm)의 일원으로 있음을 알리도록, 트래커(106)에게 주기적으로 메시지를 전송한다. 만약 트래커(106)가 일정 시간 내에 어느 피어로부터 메시지를 수신하지 않으면, 트래커(106)는 그 피어를 리스트에서 제거하고, 그 피어는 더 이상 스웜(swarm)의 일원이 아니게 된다.
트래커(106)는 피어가 스웜(swarm)에 합류하는 것을 보조한다. 일실시예에서, 트래커(106)은 피어에게 리스트 또는 리스트의 일부분을 제공함으로써, 피어가 스웜(swarm)의 피어들(108)과의 연결을 생성하는 것이 가능하도록 한다.
각 피어는, 다른 피어들(108)로부터 데이터를 수신(즉, 다운로드)하고 다른 피어들(108)에게 데이터를 전송(즉, 업로드)하는 능력을 가지는 컴퓨터 시스템이다. 피어는, 예를 들어서, 퍼스널 컴퓨터, 모바일 폰, 테블릿, PDA, 텔레비젼 셋-톱 박스 또는 임의의 다른 네트워크-가능한 기기일 수 있다. 일실시예에서, 각 피어는, 피어-투-피어 프로토콜에 따라서, 피어들(108)로부터의 다운로드 및 피어들(108)로의 업로드를 관리하는 컴퓨터 프로그램을 저장한다.
컴퓨터 아키텍쳐(Computer Architecture)
도2는, 소스(104), 트래커(106) 및/또는 피어로서 사용되는, 전형적인 컴퓨터 시스템(200)의 기능적인 블록도이다. 칩셋(204)에 연결된 적어도 하나의 프로세서(202)가 도시되어 있다. 칩셋(204)은, 메모리 컨트롤러 허브(220) 및 입력/출력(I/O) 컨트롤러 허브(222)를 포함한다. 메모리(206) 및 그래픽 어댑터(212)는, 메모리 컨트롤러 허브(220)에 연결되고, 디스플레이 기기(218)은 그래픽 어댑터(212)에 연결된다. 저장 기기(208), 키보드(210), 포인팅 기기(214) 및 네트워크 어댑터(216)은 I/O 컨트롤러 허브(222)에 연결된다. 컴퓨터(200)의 다른 실시예는 다른 아키텍쳐를 가진다. 어떤 실시예에서는 예를 들어서, 메모리(206)가 프로세서(202)에 직접 연결된다.
저장 기기(208)는, 하드 드라이브, CD-ROM, DVD 또는 솔리드-스테이트 메모리 기기와 같은, 비-일시적인 컴퓨터가 읽어들일 수 있는 저장 매체이다. 메모리(206)은, 프로세서(202)에 의하여 사용되는 지시들 및 데이터를 보유한다. 포인팅 기기(214)는, 마우스, 트랙 볼 또는 다른 타입의 포인팅 기기이고, 키보드(210)와 함께 사용되어 컴퓨터 시스템(200)에 데이터를 입력한다. 그래픽 어댑터(212)는, 디스플레이 기기(218) 상에 이미지 또는 다른 정보들을 디스플레이한다. 네트워크 어댑터(216)는, 컴퓨터 시스템(200)이 피어-투-피어 네트워크(102)를 통하여 통신하는 것을 가능하게 한다. 컴퓨터 시스템(200)의 다른 실시예들은, 도2에 도시된 바와 상이하거나 및/또는 다른 요소들을 가진다.
컴퓨터 시스템(200)은, 여기에서 설명되는 기능을 제공하기 위한 컴퓨터 프로그램 모듈을 실행하도록 조정된다. 여기서, '모듈'이라는 용어는, 특정된 기능을 제공하는기 위하여 사용되는, 컴퓨터 프로그램 명령어들 및 다른 로직을 일컫는 것이다. 따라서, 모듈은 하드웨어, 펌웨어 및/또는 소프트웨어로 구현될 수 있다. 일실시예에서, 실행 가능한 컴퓨터 프로그램 명령들로 형성된 프로그램 모듈들은 저장 기기(208) 상에 저장되고, 메모리(206) 안으로 로딩되어 프로세서(202)에 의하여 실행된다.
소스(104), 트래커(106) 및 피어들(108)에 의하여 사용되는 컴퓨터 시스템들(200)의 타입은, 실시예들 및 사용되는 프로세싱 파워에 따라서 달라질 수 있다. 예를 들어서, 피어의 컴퓨터 시스템은, 소스(104) 또는 트래커(106)의 컴퓨터 시스템에 비하여 낮은 프로세싱 파워를 가질 수 있다.
네트워크 아키텍쳐(Network Architecture)
일실시예에서는, 피어-투-피어 프로토콜에 따르면, 스웜(swarm)/네트워크(102)는 많은 수의 클럽들을 가지고, 스웜(swarm)의 각 피어들은 하나의 클럽의 일원이다. 일실시예에서, 스웜(swarm)은 총 12개의 클럽들을 가진다. 그러나, 다른 실시예들에서는 더 많은 수의 또는 더 적은 수의 클럽들이 포함될 수 있다. 각 클럽은 소스(104) 및 클럽에게 스스로-선언된(self-declared) 스웜(swarm)의 피어들(108)의 서브셋을 포함한다. 따라서, 클럽은 데이터의 그룹핑(grouping of data) 및 스웜(swarm)의 피어들(108)의 서브셋을 포함한다.
일실시예에서, 각 피어는 복수의 클럽들(예를 들어서 2 클럽들)의 일원이다. 각 피어가 적어도 둘 이상의 클럽들의 일원인 것의 이익은, 클럽들간의 배포 업로드 역량에 도움이 된다. 예를 들어서, 12개의 클럽이 있고, 스웜(swarm) 중 8개의 피어들이 좋은 업로드 능력을 가지고 있고, 각 피어들은 단지 하나의 클럽에 합류한다고 가정하여 보자. 각 피어는 단지 하나의 클럽에 합류하였기 때문에 적어도 4개의 클럽들은 좋은 업로드 능력의 피어를 가지지 않을 것이고, 이러한 4개의 클럽들의 각 업로드 능력은 충분하지 않게 된다. 반면에, 업로드 능력이 좋은 8개의 피어들의 각각이 2개의 클럽에 합류한다면, 각 클럽이 8개의 피어들 중 어느 하나를 포함할 가능성이 높아진다.
도3은 일실시예의 피어-투-피어 프로토콜에 따른, 네트워크(102)의 아키텍쳐(300)의 예를 도시한 것이다. 도3은 스웜(swarm) 내의 12개의 클럽들 중에서 4개의 클럽들(302(a),302(b),302(c) 및 302(d))을 보여준다. 도시된 바와 같이, 소스(104)는, 각 클럽의 일원이고 이 실시예에서 각 피어는 12개의 클럽들 중에서 2개의 일원이다. 예를 들어서 피어(108(a))는 클럽들(302(a) 및 302(c))의 일원이다.
하나의 클럽의 소스(104)와 피어들(108)은 서로간의 연결들을 수립한다. 일실시예에서, 이러한 연결들은 단일 방향성의 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP) 연결들이다. 단일 방향성의 연결에서, 이 연결은 전송 피어와 수신 피어 사이이다. 이 전송 피어는 이 연결을 통하여 데이터를 수신 피어로 전송하지만, 수신 피어는 이 연결을 통하여 전송 피어로 데이터를 전송하지 않는다.
일실시예에서, 클럽의 각 피어는, 클럽(302) 내에서 다른 피어들(108)과 일정한 수의 업로드 연결들 및 다운 로드 연결들을 가지도록 분투한다. 일실시예에서, 클럽의 각 피어는, 클럽 내에서 데이터를 신속하게 배포하고 오버헤드를 낮게 유지하기 위하여, 클럽 내에서 2개 이상 3개 이하의 각 타입의 연결(업로드 및 다운로드 연결)을 가지도록 분투하다. 예를 들어서, 어느 하나의 클럽의 어느 하나의 피어가 클럽 내에서 하나의 다운로드 연결을 가지고 있다면, 그 피어는 클럽 내에서 또 다른 다운로드 연결을 생성하려고 추구할 것이다. 유사하게, 만약 그 피어가 클럽 내에서 4개의 업로드 연결을 가진다면, 그 피어는 업로드 연결들 중에서 하나를 끊을(drop) 수 있다. 다른 실시예들에서, 클럽 내의 피어는 3개 초과 또는 2개 미만의 각 타입의 연결을 가지도록 노력한다.
피어의 업로드 연결에서, 피어는 단일 방향성 연결의 전송 피어이다. 피어의 다운 로드 연결에서, 피어는 단일 방향성 연결의 수신 피어이다. 예를 들어서, 도3에서, 클럽(302(a)) 내의 피어(108(f))는, 피어들(108(h), 108(c))과의 2개의 업로드 연결들을 가지고, 피어(108(a))와 하나의 다운로드 연결을 가진다.
클럽 내의 각 피어는 또한, 다른 클럽들(302) 내의 피어들(108)과의 연결들을 가진다. 일실시예에서, 클럽 내의 각 피어는, 자신이 그 일원이 아닌 각 클럽의 피어와의 다운로드 연결을 가지도록 분투한다. 이러한 다운로드 연결들은 피어로 하여금 그 피어의 클럽에 할당되지 않은 데이터를 수신하는 것을 가능하게 하는데, 이하에서 상세하게 살펴본다. 예를 들어서, 도3에서, 클럽(302(a)) 내의 피어(108(c))는, 클럽(302(c)) 내의 피어(108(b))와의 다운로드 연결 뿐만 아니클럽니라, 02(d)) 내의 피어(108(d))와의 다운로드 연결을 가질 수 있다.
일실시예에서, 소스(104)는, 각 클럽 내의 피어들(108)과의 2개의 업로드 연결들을 가진다. 예를 들어서, 클럽(302(c))에서 소스(104)는 피어들(108(b), 108(e))와의 업로드 연결을 가진다. 다른 실시예에서 소스(104)는 클럽 내에서 2개보다 많거나 적은 업로드 연결을 가진다.
네트워크에 합류하기(Joining the Network)
본 발명에 따른 피어-투-피어 프로토콜에 따르면, 소스에 의하여 제공된 컨텐츠를 얻기 위하여 피어가 스웜(swarm)에 합류하기를 희망하는 때에, 피어는 트래커(106)에게 스웜(swarm) 내의 피어들(108)에 대한 정보 요청을 트래커(106)에 전송한다. 트래커(106)는 요청한 피어에게, 스웜(swarm)의 일원인 피어들(108)의 완전한 또는 부분적인 리스트(즉, 스웜(swarm) 내의 피어들의 확인 정보)를 제공하고, 요청한 피어에게 스웜(swarm) 내의 클럽들(302)의 총 수를 알려준다. 일실시예에서, 트래커(106)는 또한 피어에게 합류할 클럽들을 추천한다. 일실시예에서 트래커(106)는 피어에게 합류할 두개의 클럽들을 추천한다. 일실시예에서, 이러한 클럽들은 단지 추천일 뿐이고 피어는 클럽들(302) 중 어느 클럽에 합류할 지 선택할 수 있다. 다른 실시예에서, 피어는 추천된 클럽들에 합류하여야 하는 수도 있다.
일실시예에서, 합류하는 피어에게 합류할 클럽들(302)을 추천하기 위하여, 트래커(106)는, 스웜(swarm)의 클럽들(302)을 포함하는 추천 리스트를 생성한다. 트래커(106)는 리스트 내의 클럽들(302)을 셔플(shuffle)한다. 새로운 피어가 스웜(swarm)에 합류하기를 요청할 때에 각각, 트래커(106)는, 예를 들어서, 추천 리스트의 상위 2개의 클럽들(302)을 추천하고, 리스트로부터 그들을 제거한다. 트래커(106)은 리스트에 클럽들(302)이 더 이상 없는 때까지 이것을 계속한다. 리스트에 클럽들(302)이 더 이상 없으면, 트래커(106)는 리스트를 재생성한다. 클럽을 추천하는 이 과정은, 클럽들(302)로 하여금 피어들(108)의 수의 측면에서 균형을 이루도록 한다. 다른 실시예에서, 트래커는 클럽을 추천함에 있어서 다른 부하-균형 알고리즘(load-balancing algorithm)을 사용할 수 있다.
합류하는 피어는, 트래커(106)에 의하여 제공된 피어들(108)의 리스트를 사용하여, 프로토콜 하에서 필요한 연결들(즉, 선택된 클럽들 내에서의 피어들과의 연결 및 선택된 클럽들 내에 있지 않은 피어들과의 연결)을 생성한다. 일실시예에서, 클럽 내의 다른 피어들과의 연결을 생성하기 위하여, 합류하는 피어는 리스트 내에 포함된 피어들(108)에게, 피어들(108)의 정보를 문의하는 요청을 보낸다. 메시지를 받는 피어들(108)은 클럽 내에 있는 피어들(108)과 함께 응답한다. 이 응답들은 클럽 내에 있는 피어들(108)의 IP 주소들 및 포트 번호들이다.
합류하는 피어는 클럽 내에 있는 피어들(108)에게 핑(ping)을 전송한다. 합류하는 피어는 피어들(108)로부터 핑 응답들(ping responses)을 수신한다. 이러한 핑 응답들에 기초하여, 합류하는 피어는, 연결을 생성할, 클럽 내의 피어를 선택한다. 일실시예에서, 피어와 연결을 생성할지 여부를 결정하는데 사용되는 요소는, 피어로부터 핑 응답을 받는데 걸리는 시간의 양 및 피어의 큐(queue)를 전송할 때의 데이터의 양이다. 큐 내의 데이터의 양은 피어의 응답에 포함된다. 합류하는 피어는 선택된 피어와 통신하고 연결이 생성된다. 일실시예에서, 핑된 피어들의 주소들은, 합류하는 피어가 다음번에 연결을 생성할 때에 사용가능하도록 저장된다. 일실시예에서, 핑 응답들 또한 저장된다.
일실시예에서, 이미 스웜(swarm)의 일원인 피어는, 합류하는 피어에 대하여 설명한 것과 유사한 방법으로, 클럽 내의 피어와의 연결을 생성한다. 한 가지 상이한 점은, 트래커(106)로부터 수신된 리스트 내의 피어들(108)에게 요청을 보내는 대신에, 그 요청은, 생성되는 피어가 이미 연결들을 가지고 있는 스웜(swarm) 내의 피어들(108)에게 전송된다.
실시예에서, 생성되는 피어가 클럽 내의 피어들(108)에 관한 정보를 수신할 때, 생성되는 피어는, 생성되는 피어가, 최근(즉, 시간의 정해진 주기 내에)에 핑 응답을 받지 못한, 클럽 내의 피어들(108)에게 핑을 전송한다. 생성되는 피어가, 또 다른 연결을 생성할 때에, 클럽 내의 피어로부터 핑 응답을 최근에 수신하면, 생성되는 피어는 그 피어와 연결을 생성할지 여부를 결정하는데 그 핑 응답을 사용한다.
핑 응답들 및 생성되는 피어의 금지 리스트에 기초하여, 생성되는 피어는 연결을 생성할 클럽 내의 피어를 선택한다. 금지 리스트는, 생성되는 피어가 이전에 연결들을 가졌던 그리고 연결들을 끊어야 했던 피어들(108)을 포함한다. 어느 피어가 금지 리스트에 어떻게 포함되는 것에 관한 상세한 사항은 이하에서 제공된다. 일실시예에서, 생성되는 피어는, 금지 리스트에 있지 않은 피어들(108)과의 연결들을 생성하는데 더 높은 우선 순위를 준다. 일실시예에서, 생성되는 피어는 금지 리스트에 있는 피어와의 연결을 생성하지 않을 것이다.
컨텐츠 배포(Content Distribution)
피어-투-피어 프로토콜에 따르면, 컨텐츠의 공급(feed of content)이 만들어지고, 이 공급은, 예를 들어서 미디어 캡쳐링 기기로부터, 소스(104)에 의하여 수신된다. 일실시예에서, 소스(104)는 실시간 메시징 프로토콜(Real Time Messaging Protocol, RTMP)을 통하여 컨텐츠를 수신한다. 컨텐츠 공급이 소스(104)에 의하여 수신되면, 소스(104)는 이 컨텐츠 공급을 근사적으로 동일한 크기의 데이터 블록들로 나눈다. 일실시예에서 이 블럭들은 순차적으로 번호가 부여된다. 데이터의 각 블록은 하나의 클럽에 할당된다. 일실시예에서, 블록이 할당될 클럽을 정하기 위하여, 소스(104)는, 스웜(swarm)의 클럽들(302)의 수를 감안하여 블록의 서열 번호(sequence number)를 결정한다. 이 연산(operation)의 결과는 블록이 할당될 클럽이다.
일실시예에서, 인증 서명이 각 데이터 블록에 부착되어, 피어들(108)로 하여금 데이터 블록이 소스(104)로부터의 온 것이고, 무효 데이터 블록이 아님을 결정할 수 있게 한다. 일실시예에서, 인증 서명은 서열 내의 각 데이터 블록의 각 세트 번호에 대하여 대하여 생성된다(즉, 서명이 데이터 블록들의 배치에 대하여 생성된다). 예를 들어서, 인증 서명은 서열 내의 각 12 데이터 블록들에 대하여 생성될 수 있다. 배치의 인증 서명은 배치의 각 데이터 블록에 부착된다.
일실시예에서, 배치의 인증 서명은 해시 트리(hash tree)의 뿌리 해시(root hash)이다. 해시 트리를 생성하기 위하여, 배치의 각 데이터 블록의 해시가 생성된다. 데이터 블록들의 해시들은 해시 트리의 첫번째 레벨들이다. 데이터 블록들의 각 두개의 해시들은 함께 해시 트리의 두번째 레벨을 생성한다. 최종 레벨이 오로지 뿌리 해시로 생성될 때까지, 2개의 차일드 해시들이 함께 해싱함에 의하여 추가적인 레벨들은 생성된다.
소스(104)는, 소스(104)와 업로드 연결을 가지는 클럽 내의 피어들(108)에게 클럽에 할당된 각 데이터 블록을 전송한다. 예를 들어서, 도3에서, 클럽(302(d))에 할당된 데이터 블록에 대하여, 소스(104)는 그 블록을 피어들(108(d), 108(f)))에게 전송한다. 일실시예에서, 각자의 인증 서명을 가지는 데이터 블록을 전송하는 것에 더하여, 소스(104)는, 수신 피어가 블록의 인증 서명을 확인하는 것을 허용하기 위하여, 서명을 만드는데 사용된 상응하는 해시 트리의 해시들을 전송한다.
일실시예에서, 소스(104)는 또한, 컨텐츠 공급(conetent feed)의 비트 속도의 추정치를 전송되는 각 데이터 블록에 포함시킨다. 이 비트 속도 추정치는 피어들(108)로 하여금 데이터 블록을 업로드하는 속도를 알 수 있도록 한다. 일실시예에서, 시간 간격 동안 소스(104)는, 이전의 시간 간격(time interval) 내에 소스에 의하여 전송된 데이터 블록들의 수에 기초하여, 컨텐츠 공급(content feed)의 비트 속도 추정치를 결정한다.
일실시예에서, 소스(104)는 이전의 시간 간격의 비트 속도 추정치와 이전의 시간 간격 내에 전송된 데이터 블록들의 실제 수의 차이에 기초하여 현재의 시간 간격의 결정된 비트 속도 추정치를 조정한다. 일실시예에서, 만약 이 시간 간격에 대하여 결정된 비트 속도 추정치가 이전의 시간 간격의 비트 속도 추정치보다 작은 경우, 소스(104)는 이전의 비트 속도 추정치와 결정된 비트 속도 추정치 간의 차이를 구한다. 소스(104)는 현재 시간 간격의 비트 속도 추정치를 이전의 비트 속도 추정치에서 차이의 일부분(예를 들어서, 차이의 0.6)을 뺀 값으로 세팅한다. 이러한 접근의 잇점은 비트 속도가 점근적으로 떨어지는 것이다.
일실시예에서, 클럽 내의 피어가 클럽에 할당된 데이터 블록을 수신하면, 피어는 데이터 블록에 부착된 서명 및 수신된 대응하는 해시 트리를 해시를 이용하여 데이터 블록을 인증한다. 만약 피어가 데이터 블록을 인증할 수 없다면, 그 데이터 블록은 포기된다(dropped). 반면에 피어가 데이터 블록을 인증하는데 성공하면, 피어는 재생을 위하여 블록을 준비하고, 피어가 다운로드 연결을 가지는, 클럽 내의 다른 피어들(108)에게 이미 데이터 블록을 수신하였다고 알린다. 다른 피어들에게 알리는 것은, 그 피어가 그 데이터 블록의 복수개의 카피들을 수신하는 것을 방지한다(즉, 클럽 내에서 중복적인 전송들의 수를 줄인다). 일예로서, 도3에서, 클럽(302(a)) 내의 피어(108(a))가 소스(104)로부터 클럽(302(a))에 할당된 데이터 블록을 소스(104)로부터 수신하면, 피어(108(a))는 피어(108(h))에게 자신이 이미 데이터 블록을 수신하였다고 알린다.
피어가 업로드 연결을 가지는, 클럽 내의 각 수신 피어에 대하여, 수신 피어가 이미 데이터 블록을 수신하였다는 것을 표시하는 메시지가 없다면, 피어는 수신 피어에게 그 데이터 블록을 전송한다. 예를 들어서, 클럽(302(a)) 내의 피어(108(a))가 클럽(302(a))에 할당된 데이터 블록을 수신하면, 피어(108(f))가 이미 그 블록을 가졌다는 메시지를 피어(108(a)가 수신하지 않는 한, 피어(108(a))는 피어(108(f))에게 그 블록을 전송한다. 클럽 내의 각 피어가 적어도 클럽 내에서 2개의 다운로드 연결들 및 적어도 두개의 업로드 연결들을 가지도록 분투하는 것의 잇점은, 클럽에 할당된 블록들이 클럽 내에서 기하급수적인 속도로 배포되도록 한다.
피어는 또한, 그 피어가 업로드 연결을 가지는, 다른 클럽들(302) 내의 피어들(108)에게 데이터 블록을 제공한다. 그러나, 피어는, 데이터 블록이 할당된 클럽 내의 일원인 피어들에게 데이터 블록을 라우팅하는 것에 더 높은 우선 순위를 준다. 일실시예에서, 데이터 블록의 일정 수(예를 들어서 일련의 9개 데이터 블록들)가 연속적으로, 클럽 내의 피어에 의하여 전송된다면, 피어는 하나의 데이터 블록을 클럽의 외부로 전송한다. 이는 다른 클럽 내의 피어들과의 업로드 연결들이 기아 상태(starvation)가 되는 것을 방지하는데 도움이 된다.
일실시예에서, 피어가 수신 피어로 데이터 블록을 전송하는 때에는 언제나, 피어는, 그 블록의 인증 서명을 만드는데 사용되는 해시 트리에 상응되는 해시들을 또한 전송한다. 이 해시들은, 데이터 블록을 인증하기 위하여 수신 피어에 의하여 필요로 한다. 일실시예에서 피어는, 수신 피어에게 전송되거나 또한,수신 피어에 의하여 생성된 해시들 및 서명들의 트랙(track)을 유지한다. 데이터 블록이 수신 피어로 전송되는 다음 번에, 인증을 위하여 수신 피어로 보내어져야 하는 해시 또는 서명이 다른 데이터 블록을 위하여 이전에 이미 보내어진 경우에는 다시 전송되지 않는다. 수신 피어는 새로운 데이터 블록을 인증하는데 있어서 이전에 수신된 해시 또는 서명을 사용할 수 있다.
일실시예에서, 피어가, 피어가 속하지 않은 클럽으로부터 데이터 블록을 수신하는 때에는, 피어는 다른 피어들(108)(예를 들어서, 그 클럽 내의 피어들)에게 그 데이터 블록을 배포하지 않는다. 다시 말해서, 이 실시예에서, 각 피어는, 그의 각 클럽들(302)에 할당되지 않은, 데이터 블록을 수신하는 데에 있어서 다른 클럽들(302) 내의 피어들(108)에게 의존한다.
혼잡 제어(Congestion Control)
피어-투-피어 프로토콜 하에서, 혼잡 제어의 목적을 위하여, 일정 상황하에서 연결이 끊어질(dropped) 수 있다. 일실시예에서, 블록의 일-방향 지연(즉, 시간 지연(latency))이 한계 시간을 초과하면, 다운로드 연결을 통하여 피어에 의하여 수신된 데이터 블록이 혼잡 제어를 트리거할 수 있다. 일실시예에서, 이 한계 시간은 시스템 관리자에 의하여 세팅된다. 일실시예에서, 이 한계 시간은 데이터 블록 내에 포함된다. 데이터 블록을 수신하는 피어는, 데이터 블록 내에 포함된 전송 시간으로부터 데이터 블록을 수신하는데 걸린 시간을 차감함에 의하여 지연을 측정한다. 수신 피어는 계산된 지연을 한계 시간과 비교한다. 만약 그 지연이 한계 시간을 초과하면, 다운로드 연결은 수신 피어에 의하여 끊어진다(dropped).
일실시예에서, 데이터 블록이 다운로드 연결에 의하여 피어에 의하여 수신되는 때, 만약 데이터 블록의 서열 번호가 이전에 수신된 데이터 블록의 서열 번호에 1을 더한 값이 아니면, 수신 피어는 다운로드 연결을 끊는다(drop). 데이터 블록의 서열 번호가 기대된 값이 아닌 때에, 이는 중간에 끼인 데이터 블록이 끊어졌다는 것을 의미하고 이는 전형적으로, 혼잡 제어가 필요하는 것을 의미한다.
일실시예에서, 수신 피어가 연결을 통하여 데이터 블록을 마지막으로 수신한 때로부터 정해진 시간 주기가 경과하면, 다운로드 연결의 수신 피어는 연결을 끊는다. 이 액션은, 수신 피어가 다른 클럽들(302)로부터 필요한 데이터 블록들을 수신하는 것을 확실하게 하므로, 다른 클럽들(302)에서의 피어들(108)과의 다운로드 연결에 특히 도움을 준다. 일실시예에서, 연결의 수신 피어로부터 살아있다는(keep-alive) 메시지를 마지막으로 수신한 이후로 정해진 시간 주기 내에, 살아있다는(keep-alive) 메시지를 전송 피어가 수신하지 않으면, 업로드 연결의 전송 피어는 그 연결을 끊는다. 이 살아있다는(keep-alive) 메시지는 전송 피어에게 연결을 유지하도록 한다.
일실시예에서, 피어가 설명된 이유들 중 하나의 이유로 인하여 연결을 끊는 개시자(initiator)인 때에, 피어는 끊어진 연결의 다른 피어를 피어의 금지 리스트에 포함한다. 위에서 설명한 바와 같이, 금지 리스트는 새로운 연결들을 생성할 때에 피어에 의하여 사용된다. 일실시예에서, 일정 피어가 일정한 시간 동안에 금지 리스트에 올라 있었던 후에, 그 피어는 그 리스트에서 제거된다.
다른 실시예에서, 매 일정한 시간마다(예를 들어서, 매 5초마다), 금지된 리스트 상의 각 피어에 대하여, 피어는 그 리스트로부터 금지된 피어들을 제거할지 여부를 랜덤하게 결정한다(즉, 피어는 약간의 가능성(probability)을 가지고 금지된 피어를 제거할지 여부를 결정한다). 예를 들어서, 피어는 금지된 피어에 대하여 8면 주사위를 굴릴 수 있다. 만약 8이 나오면 금지된 피어는 제거된다.
일실시예에서, 연결이 끊어질 때, 대체할 연결이 생성되는지 여부는 끊어진 연결의 타입 및 그것이 어느 측면에서 보여지는지에 달려있다. 끊어진 연결의 수신 피어의 측면으로부터 보면, 만약에 수신 피어가 끊어진 연결의 전송 피어와 동일한 클럽 내에 있지 않으면, 그 수신 피어는 그 전송 피어의 클럽 내의 다른 피어와 대체 다운로드 연결을 생성한다. 이 연결은 연결을 생성하는 것에 관하여 상기 설명한 과정을 이용하여 생성된다. 일실시예에서, 새로운 다운로드 연결이 생성되는 때에, 수신 피어는 비트 필드(bit field)를 통하여 그의 클럽의 어느 데이터 블록들을 이미 가지고 있는지를 다른 피어들에게 알려서, 다른 피어들이 어느 블록을 전송할지를 알도록 한다. 일실시예에서 상기 비트 필드는, 인코딩 길이를 최소로 유지하기 위하여 엘리아스(Elias) 코딩을 사용하여 인코딩된 런 길이(run length)이다.
반면에, 만약 수신 피어가 중단된 연결의 전송 피어와 동일한 클럽에 있다면, 대체 연결이 생성되는지 여부는, 수신 피어가 클럽 내에서 가지고 있는, 남은 다운로드 연결이 얼마나 많은지에 달려있다. 일실시예에서, 만약 남아 있는 다운로드 연결들의 수가, 피어가 클럽 내에서 가지려고 분투하는 다운로드 연결들의 수(예를 들어, 2)와 같으면, 새로운 연결이 생성되지 않는다. 일실시예에서, 만약 남아 있는 다운로드 연결들의 수가, 피어들이 가지려고 분투하는 다운로드 연결 수보다 적으면, 수신 피어는, 상기에서 설명한 과정을 이용하여 클럽 내에서 피어와의 새로운 다운로드 연결을 생성한다.
전송 피어의 측면으로부터 보면, 끊어진 연결의 수신 피어가 전송 피어의 클럽과 다른 클럽내에 있으면, 전송 피어는 연결을 대체하는 것을 시도하지 않는다. 만약 수신 피어가 전송 피어와 동일한 클럽 내에 있었다면, 대체 연결을 생성할 것인지 여부는 전송 피어가 가지고 있는 남아 있는 업로드 연결들이 몇 개인지에 달려있다. 일실시예에서, 만약 남아 있는 업로드 연결들의 수가 피어들이 가지려고 분투하는 업로드 연결들의 수와 같거나 많으면, 대체 연결을 생성되지 않는다. 일실시예에서 만약 남아 있는 업로드 연결들의 수가 피어들이 가지려고 노력하는 업로드 연결들의 수보다 적으면, 수신 피어는 상기에서 설명한 바와 같은 과정을 사용하여 대체 업로드 연결을 생성한다.
일실시예에서, 피어(비-개시자(non-initiating) 피어)가 다른 피어(개시자(initiating) 피어)로부터 일정한 방향(업로드 또는 다운로드)으로의 연결을 생성하자는 요청을 받는 때에, 비-개시자 피어는 연결을 생성하는 것을 허락한다. 만약 개시자 피어가 비-개시자 피어와 동일한 클럽 내에 있고, 새로운 연결이 비-개시자 피어로 하여금 그것이 가지려고 분투하는, 한 방향의 연결들보다 많게 되는 것을 야기한다면, 비-개시자 피어는 그 방향의 연결 중 하나를 끊는다. 일실시예에서, 비-개시자 피어는 끊을 연결을 랜덤하게 선택한다. 다른 실시예에서는, 비-개시자 피어는 가장 오래된 또는 가장 최신의 연결을 끊는다.
재생(Playback)
피어-투-피어 프로토콜 하에서, 스웜(swarm)의 피어는 소스(104)에 의하여 스트리밍되는 컨텐츠의 데이터 블록들을 수신하면서, 피어는 데이터 블록들을 그 들의 각각의 서열 번호 순서대로 정돈함에 의하여 컨텐츠를 재조립한다. 일실시예에서 피어의 미디어 재생기는 스트리밍되는 컨텐트의 순서대로 정돈된 데이터 블록들을 재생한다. 일실시예에서 컨텐츠의 초기 재생은, 일단 피어가 일정 양의 재생 시간(예를 들어서, 1초 재생)이 되는 데이터 블록을 수신하여야만 시작된다.
피어는, 소스가 데이터 블록을 스웜(swarm) 안으로 보내는 시간으로부터 합리적인 범위 내의 재생 지연(play delay)을 가지고 데이터 블록들을 재생하는 것을 추구한다. 만약 피어가 재생 지연이 합리적인 범위보다 작은 것으로 판단하면, 컨텐츠가 재생되면서, 눈에 띄는 화면정지(freeze)를 방지하기 위하여 재생을 늦추도록 한다. 만약 재생 지연이 합리적인 범위보다 크다고 판단되면, 피어는 따라잡기 위하여, 재생되는 컨텐츠가 더 빨리 재생되도록 한다.
일실시예에서, 컨텐츠가 재생되면서, 피어가, 재생되어야 하는 다음 데이터 블록을 수신하지 않았다면, 피어는 그 데이터 블록의 재생을 건너뛰도록 한다. 다른 실시예에서, 피어가, 재생되어야 하는 다음 데이터 블록을 수신하지 않았다면, 피어는 최대한 일정 시간 동안 재생을 화면정지한다(freeze). 만약 일정 시간 안에 피어에 의하여 블록이 수신되면, 수신과 함께 재생이 다시 시작된다. 만약 일정 시간 내에 피어에 의하여 블록이 수신되지 않으면, 재생은 다시 시작되나 그 블록은 건너뛰어지게 된다.
피어의 우아한 실패(Graceful Failure of a Peer)
일실시예에서, 스웜(swarm)의 각 피어는, 소스(104)로부터의 데이터가 그 스웜(swarm) 내에서 얼마나 잘 배포되는지의 정도(즉, 스웜(swarm)의 질적 측정(quality measure)를 주기적으로 결정한다. 일실시예에서, 이러한 질적 측정은, 시간 내에 다른 피어들로부터 데이터 블록이 수신되지 않은 이유로 인하여, 일정한 시간 내에 하나 또는 그 이상의 데이터 블록들이 재생 도중에 건너뛰어졌는지의 횟수에 기초하여 결정된다. 일실시예에서, 이 질적 측정은 시간 내에 다른 피어들로부터 하나 또는 그 이상의 데이터 블록들이 수신되지 않은 이유로 인하여, 일정한 시간 내에 재생이 화면 정지된 횟수에 기초하여 결정된다. 각 질적 측정은, 그와 관련된 업로드 한계값을 가지고 있다. 만약 피어의 현재 업로드 속도가 결정된 질적 측정과 관련된 업로드 한계값보다 작으면, 피어는 모든 다운로드 및 업로드 활동을 중단한다. 이러한 접근의 잇점은 스웜(swarm)가 오버로드되는 것을 방지하게 하는 것이다.
프로세스(Process)
도4는, 피어-투-피어 프로토콜에 따라서, 피어-투-피어 네트워크(102)에 합류하는 피어의 프로세스(400)을 도시한 것이다. 피어는, 소스(104)에 의하여 컨텐츠가 스트리밍되고 있는 피어-투-피어 네트워크(102)의 일원인 피어들(108)에 관한 정보를 요구하는 요청을 트래커(106)로 전송한다(402). 피어는 피어-투-피어 네트워크(102)의 일원인 피어들(108)의 리스트를 트래커(106)로부터 수신한다(404). 피어는 합류할 피어-투-피어 네트워크(102)의 적어도 2개의 클럽들을 선택한다(406). 일실시예에서, 합류할 클럽들은 트래커(106)에 의하여 추천된다. 피어는, 각각 선택된 클럽의 일원인 피어들(108)에 대한 리스트 정보를 피어들(108)에게 요청하고 수신한다(408). 피어는 각 선택된 클럽의 피어들(108)과 연결들을 생성한다(410).
도5는, 피어-투-피어 프로토콜에 따라서, 피어-투-피어 네트워크(102) 안에서 컨텐츠를 스트리밍하는 프로세스(500)을 도시한 것이다. 소스(104)는 컨텐츠 공급을 수신하고(502), 이 공급을 복수개의 데이터 블록들로 나눈다(504). 소스(104)는, 각 데이터 블록을 피어-투-피어 네트워크(102)의 클럽들 중 하나에 할당한다(506). 소스(104)는 각 데이터 블록을 할당된 클럽의 일원인 피어들(108)에게 전송한다(508).
도6은, 피어-투-피어 프로토콜에 따라서 수신된 컨텐츠를 피어-투-피어 네트워크 내에 배포하는 피어의 프로세스(600)를 설명하는 흐름도이다. 클럽의 일원인 피어는, 피어-투-피어 네트워크(102)의 클럽에 할당된 데이터 블록을 수신한다(602). 피어는 재생을 위하여 데이터 블록을 준비한다(604). 일실시예에서 재생을 위하여 데이터 블록을 준비하기 전에, 피어는 데이터 블록을 인증한다. 피어는 피어가 다운로드 연결을 가지고 있는 클럽 내의 피어들(108)에게 데이터 블록이 수신되었음을 알린다(606). 피어가 클럽 내에서 가지는 각 업로드 연결에 대하여, 피어는, 데이터 블록이 다른 피어로부터 수신되었던 것인지를 알려주는 메시지가 그 연결의 수신 피어로부터 수신되었는지 여부를 결정한다(608). 피어는, 메시지가 수신되지 않은 각 업로드 연결의 수신 피어에게 데이터 블록을 전송한다(610). 피어는 또한, 피어가 업로드 연결들을 가지는, 네트워크(102) 내의 다른 클럽들(302)안의 피어들(108)에게 데이터 블록을 전송한다(612).
이 기술 분야의 당업자는 도4, 도5 및 도6의 단계들과는 다른 순서대로 다른 실시예들을 수행할 수 있다. 더욱이, 다른 실시예들은, 위에서 설명한 것과는 상이하거나 추가적인 단계들을 포함할 수도 있다.
본 명세서에서 "일실시예" 또는 "실시예"라고 하는 것은 설명되는 적어도 하나의 실시예에 포함되는 특정한 특성, 구조 또는 특징들을 의미한다. 본 명세서의 여러 군데에서 "일실시예에서" 또는 "바람직한 실시예"라는 용어는 필연적으로 동일한 실시예를 언급하는 것이 아니다.
상기의 몇 가지 부분들은, 컴퓨터 메모리 내에서 데이터 비트들에 대한 수행을 방법론적이고도 상징적인 측면에서 제시된 것이다. 이러한 설명들 및 제시들은, 그들의 업무의 실체를 해당 기술 분야의 다른 사람들에게 가장 효과적으로 전달하기 위하여, 본 기술 분야의 당업자들에 의하여 사용되는 수단들이다. 여기서 그리고 일반적으로, 방법이란 희망하는 결과에 이르는 자기-일관적인 단계들(지시들)의 순서들로 인지되는 것이다. 단계들은 물리적인 양들의 물리적인 처리를 필요로 하는 것이다. 이러한 양들은 반드시 그러할 필요는 없지만, 통상적으로, 저장되고, 전달되고, 연합되고, 비교되고 다르게 처리되는, 전기적, 자기적 또는 광학적인 신호들의 형태를 가진다. 가끔 통상적인 활용의 목적을 위하여 이는 편의적으로, 비트들, 값들, 요소들, 심볼들, 캐릭터들, 용어들, 숫자들 등과 같은 신호들로 일컬어지기도 한다. 더욱이 가끔 이들은, 일반선을 잃지 않고, 모듈 또는 코드 기기 등으로서의 물리적인 처리들을 필요로 하는 단계들의 일정 배열들을 의미하기도 한다.
그러나, 염두에 두어야 할 것은, 이러한 및 유사항 용어들의 모든 것들은 적절한 물리적인 양과 연관되어 있고, 단지 이러한 양들에 적용되는 편리한 표지일 뿐이다. 이상의 논의로부터 분명한 바와 같이, 특별하기 언급되지 않는 한, 명세서 전체를 거쳐서 "프로세싱" 또는 "컴퓨팅" 또는 "계산" 또는 "결정" 또는 "디스플레이" 또는 "결정" 등과 같은 용어들은, 컴퓨터 시스템 또는 유사한 전자적인 컴퓨팅 기기의 동작이나 프로세스를 일컫는 것으로서, 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 정보 저장, 전송 및 디스플에이 기기 안에서 물리적인(전자적인) 양으로서 표시되는 데이터를 처리하고 변환하는 것이다.
최종적으로, 본 명세서에서 사용되는 언어는 원칙적으로 쉽게 이해할 수 있도록 하는 목적에서 선택된 것으로서, 본 발명의 범위를 한정하기 위한 것이 아니다. 따라서, 본 명세서는 설명을 위한 것이고, 설명된 발명의 범위를 제한하지 않는 것으로 의도된 것이다.

Claims (27)

  1. 프로토콜에 따라서, 피어-투-피어 네트워크 내에서 컨텐츠를 배포하는 방법에 있어서,
    소스 컴퓨터 시스템에 의하여 컨텐츠를 복수개의 데이터 블록들로 나누는 단계;
    소스 컴퓨터 시스템에 의하여, 피어-투-피어 네트워크 내의 복수개의 클럽 들 중의 하나의 클럽에 상기 복수개의 데이터 블록들 각각을 할당하는 단계로서, 상기 피어-투-피어 네트워크는 복수개의 피어들을 포함하고, 상기 복수개의 피어들 각각은 상기 복수개의 클럽들로부터의 적어도 2개의 클럽들의 일원임; 및
    소스 컴퓨터 시스템에 의하여, 상기 복수개의 데이터 블록들 각각을, 데이터 블록이 할당된 클럽의 일원인 적어도 하나의 피어에 전송하는 단계를 포함하되,
    인증 서명은 상기 복수개의 데이터 블록들 각각에 부착되고;
    상기 복수개의 클럽들 중 클럽(a club)의 피어는, 상기 피어가 상기 클럽에 할당된 특정 데이터 블록을 수신하고 특정 데이터 블록의 인증 서명을 사용하여 특정 데이터 블록을 성공적으로 인증하는 경우, 다운로드 연결들을 갖는 상기 클럽의 다른 피어들에게 알림(notification)을 전송하며, 상기 알림은 다른 피어들이 상기 특정 데이터 블록을 상기 피어로 전송하는 것을 방지하고;
    상기 피어는, 상기 특정 데이터 블록을 인증할 때, 적어도 하나의 수신 피어가 이미 상기 특정 데이터 블록을 수신하였음을 나타내는 알림을 상기 적어도 하나의 수신 피어로부터 아직 수신하지 못한 것에 응답하여, 상기 특정 데이터 블록을 상기 클럽 내의 적어도 하나의 수신 피어에 전송하며; 그리고
    상기 피어는 상기 클럽 내의 피어들의 제1 서브셋과의 다운로드 연결들과 상기 클럽 내의 피어들의 제2 서브셋과의 업로드 연결들을 가지는 것을 특징으로 하는 방법.
  2. 제1항에 있어서, 상기 복수개의 데이터 블록들로부터의 데이터 블록은, 데이터 블록의 서열 번호(sequence number) 및 피어-투-피어 네트워크의 클럽들의 수를 감안하여 클럽에 할당되는 것임을 특징으로 하는 방법.
  3. 제2항에 있어서, 상기 데이터 블록을 클럽에 할당하는 상기 단계는,
    피어-투-피어 네트워크의 클럽들의 수를 감안하고 데이터 블록의 서열 번호를 포함하는 연산(operation)의 결과를 결정하는 단계; 및
    상기 데이터 블록을 상기 연산의 결과와 연관된 클럽에 할당하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 상기 소스는 복수개의 클럽들 각각에 있는 피어와의 업로드 연결을 가지고 있음을 특징으로 하는 방법.
  5. 제1항에 있어서, 상기 컨텐츠는 상기 소스 컴퓨터 시스템에 의하여 캡쳐된 라이브 컨텐츠인 것임을 특징으로 하는 방법.
  6. 제1항에 있어서, 상기 복수개의 데이터 블록들 각각은, 단일 방향성의 UDP 연결을 통하여 전송되는 것임을 특징으로 하는 방법.
  7. 제1항에 있어서, 상기 인증 서명은 해시 트리(hash tree)의 뿌리 해시(root hash)이고, 상기 복수개의 데이터 블록들 각각의 해시는 상기 해시 트리의 일부인 것임을 특징으로 하는 방법.
  8. 프로토콜에 따라서, 컨텐츠를 공유하는 방법에 있어서,
    합류하는 피어에 의하여, 합류할 피어-투-피어 네트워크의 복수개의 클럽들 중에서 적어도 2개의 클럽들을 선택하는 단계로서, 상기 피어-투-피어 네트워크는 소스에 의하여 소개되는(introduced) 컨텐츠를 수신하는 복수개의 피어들을 포함하고, 상기 복수개의 클럽들 각각은 상기 소스와 상기 복수개의 피어들의 서브셋을 포함하고, 상기 컨텐츠는 상기 소스에 의해 다수의 데이터 블록들로 나누어지고 각 데이터 블록은 클럽에 할당됨;
    선택된 각 클럽에 대한 합류 피어에 의하여, 상기 클럽 내의 피어들과 적어도 2개의 업로드 연결들 및 적어도 2개의 다운로드 연결들을 수립하는 단계;
    상기 합류하는 피어에 의하여, 상기 선택된 클럽들 중의 제1 클럽에 할당된 컨텐츠의 데이터 블록을 제1 피어로부터 수신하는 단계로서, 상기 제1 피어는 상기 제1 클럽 내에 있음;
    상기 블록을 수신하는 것에 대응하여, 상기 합류하는 피어에 의해 상기 데이터 블록이 수신되었다는 것을 제2 피어에게 알리는 단계로서, 다운로드 연결은 상기 합류하는 피어와 상기 제2 피어 사이에 존재함;
    상기 합류하는 피어가 제3 피어가 이미 상기 데이터 블록을 수신했다는 표시(indication)를 수신하지 않은 경우, 상기 합류하는 피어에 의해 상기 데이터 블록을 상기 제1 클럽 내의 제3 피어에게 전송하는 단계로서, 업로드 연결은 상기 합류하는 피어 및 상기 제3 피어 사이에 존재함; 그리고
    상기 합류하는 피어에 의하여, 상기 데이터 블록을 업로드 연결을 통해 상기 복수개의 클럽들로부터 선택되지 않은 클럽 내의 제4 피어에게 전송하는 단계로서, 상기 데이터 블록은 상기 제1 클럽에 있는 제3 피어에 기초하여 상기 제4 피어로 전송되기에 앞서 상기 제3 피어로 전송되는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    추가적인 선택되지 않은 클럽 내의 제5의 피어로부터 상기 추가적인 선택되지 않은 클럽에 할당된 추가적인 데이터 블록을 수신하는 단계를 더 포함하는 방법.
  10. 제8항에 있어서,
    연결을 통하여 수신되는 추가적인 데이터 블록의 통과 시간(transit time)을 결정하는 단계; 및
    상기 통과 시간이 한계치(threshold)를 초과한다는 것에 반응하여 연결을 끊는 단계를 더 포함하는 방법.
  11. 제10항에 있어서, 상기 통과 시간을 결정하는 단계는,
    상기 추가적인 데이터 블록 내에 포함되어 있는 제1 시간을, 상기 추가적인 데이터 블록의 수신 시에 결정된 제2 시간으로부터 삭감하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제8항에 있어서, 상기 합류하는 피어는 일정 시간 주기 내에 그 다운로드 연결을 통하여 추가적인 데이터 블록을 수신하지 못하는 것에 대응하여 상기 제2 피어와의 다운로드 연결을 끊는 것을 특징으로 하는 방법.
  13. 제8항에 있어서, 상기 데이터 블록은 상기 업로드 연결을 통하여 제3 피어로 전송되고, 상기 업로드 연결은, 일정 시간 주기 내에 제3 피어로부터 살아있다는 메시지(keep-alive message)를 수신하지 않음에 대응하여 끊어지는 것임을 특징으로 하는 방법.
  14. 제8항에 있어서,
    피어-투-피어 네트워크의 질적 측정(quality measure)을 결정하는 단계; 및
    상기 질적 측정과 연관된 업로드 한계치보다 합류하는 피어의 업로드 속도가 작은 것에 대응하여, 합류하는 피어에 의하여 다운로드 및 업로드 활동을 중단하는 단계를 더 포함하는 방법.
  15. 제14항에 있어서, 상기 질적 측정은, 재생 도중에 데이터 블록이 건너 띄어지는 수(number of skips)에 기초하여 결정되는 것임을 특징으로 하는 방법.
  16. 제14항에 있어서, 상기 질적 측정은, 재생 도중에 화면이 정지되는 수(number of freezes)에 기초하여 결정되는 것임을 특징으로 하는 방법.
  17. 제8항에 있어서,
    제3 피어에게 전송되는 상기 데이터 블록에 서명이 부착되고 상기 서명을 인증하기 위하여 해시가 사용되고,
    상기 합류하는 피어가, 제3 피어에 이전에 제공되었던 해시를 가지지 않는 것에 대응하여, 상기 서명을 인증하기 위하여 해시를 상기 제3 피어에게 전송하는 것을 더 포함하는 방법.
  18. 제8항에 있어서, 상기 제2 피어는 알림에 기초하여 상기 데이터 블록을 상기 합류하는 피어에 전송하지 않기로 결정하는 것을 특징으로 하는 방법.
  19. 제1항에 있어서, 상기 복수의 클럽들 각각은 상기 소스 컴퓨터 시스템 및 피어들의 셋(set)을 포함하는 것을 특징으로 하는 방법.
  20. 제1항에 있어서, 상기 복수의 피어들 각각은 피어가 속한 각 클럽 내에 적어도 두 개의 다운로드 연결과 적어도 두 개의 업로드 연결을 가지는 것을 특징으로 하는 방법.
  21. 프로토콜에 따라서, 피어-투-피어 네트워크 내에서 컨텐츠를 배포하기 위한 컴퓨터 프로그램을 저장한 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 프로그램은:
    소스 컴퓨터 시스템에 의하여 컨텐츠를 복수개의 데이터 블록들로 나누는 것;
    소스 컴퓨터 시스템에 의하여, 상기 복수개의 데이터 블록들 각각을 피어-투-피어 네트워크 내의 복수개의 클럽 들 중의 하나의 클럽에 할당하는 것 - 상기 피어-투-피어 네트워크는 복수개의 피어들을 포함하고, 상기 복수개의 피어들 각각은 상기 복수개의 클럽들로부터의 적어도 2개의 클럽들의 일원임;
    소스 컴퓨터 시스템에 의하여, 상기 복수개의 데이터 블록들 각각을, 데이터 블록이 할당된 클럽의 일원인 적어도 하나의 피어에 전송하는 것;을 위한 컴퓨터 프로그램 명령어를 가지며,
    상기 복수개의 클럽들 중의 클럽의 피어는 상기 피어가 상기 클럽에 할당된 특정 데이터 블록을 수신하고 특정 데이터 블록의 인증 서명을 사용하여 특정 데이터 블록을 성공적으로 인증하는 경우 다운로드 연결들을 갖는 상기 클럽의 다른 피어들에게 알림(notification)을 전송하며, 상기 알림은 다른 피어들이 특정 데이터 블록을 상기 피어로 전송하는 것을 방지하고;
    상기 피어는, 상기 특정 데이터 블록을 인증할 때, 적어도 하나의 수신 피어가 이미 상기 특정 데이터 블록을 수신하였음을 나타내는 알림을 상기 적어도 하나의 수신 피어로부터 아직 수신하지 못한 것에 응답하여, 상기 특정 데이터 블록을 상기 클럽 내의 적어도 하나의 수신 피어에 전송하며; 그리고
    상기 피어는 상기 클럽 내의 피어들의 제1 서브셋과의 다운로드 연결들과 상기 클럽 내의 피어들의 제2 서브셋과의 업로드 연결들을 가지는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  22. 제21항에 있어서, 상기 복수개의 데이터 블록들로부터의 데이터 블록은, 데이터 블록의 서열 번호(sequence number) 및 피어-투-피어 네트워크의 클럽들의 수를 감안하여 클럽에 할당되는 것임을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  23. 제22항에 있어서, 상기 복수개의 데이터 블록들 각각을 상기 클럽에 할당하는 것은,
    피어-투-피어 네트워크의 클럽들의 수를 감안하고 데이터 블록의 서열 번호를 포함하는 연산(operation)의 결과를 결정하는 것; 그리고
    상기 데이터 블록을 상기 연산의 결과와 연관된 클럽에 할당하는 것;을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  24. 제21항에 있어서, 상기 소스는 복수개의 클럽들 각각에 있는 피어와의 업로드 연결을 가지고 있음을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  25. 제21항에 있어서, 상기 컨텐츠는 상기 소스 컴퓨터 시스템에 의하여 캡쳐된 라이브 컨텐츠인 것임을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  26. 제21항에 있어서, 상기 복수개의 데이터 블록들 각각은, 단일 방향성의 UDP 연결을 통하여 전송되는 것임을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
  27. 제21항에 있어서, 상기 인증 서명은 해시 트리(hash tree)의 뿌리 해시(root hash)이고, 상기 복수개의 데이터 블록들 각각의 해시는 상기 해시 트리의 일부인 것임을 특징으로 하는 비일시적 컴퓨터 판독가능 저장 매체.
KR1020137025340A 2011-02-28 2012-02-28 피어-투-피어 라이브 스트리밍 KR102029326B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161447583P 2011-02-28 2011-02-28
US61/447,583 2011-02-28
PCT/US2012/027025 WO2012154287A2 (en) 2011-02-28 2012-02-28 Peer-to-peer live streaming

Publications (2)

Publication Number Publication Date
KR20140016303A KR20140016303A (ko) 2014-02-07
KR102029326B1 true KR102029326B1 (ko) 2019-11-29

Family

ID=46719741

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137025340A KR102029326B1 (ko) 2011-02-28 2012-02-28 피어-투-피어 라이브 스트리밍

Country Status (7)

Country Link
US (2) US9094263B2 (ko)
EP (1) EP2681869B1 (ko)
KR (1) KR102029326B1 (ko)
BR (1) BR112013021931B1 (ko)
CA (1) CA2828489C (ko)
RU (1) RU2553671C2 (ko)
WO (1) WO2012154287A2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5529177B2 (ja) * 2011-01-19 2014-06-25 ネイバー ビジネス プラットフォーム コーポレーション P2p基盤のストリーミングサービスでバッファリングを行うシステムおよび方法、並びにクライアントでバッファリングを処理するアプリケーションを配布するシステム
EP2681869B1 (en) 2011-02-28 2018-01-31 Bittorrent, Inc. Peer-to-peer live streaming
US9571571B2 (en) 2011-02-28 2017-02-14 Bittorrent, Inc. Peer-to-peer live streaming
ES2429222B1 (es) * 2011-05-12 2014-06-05 Telefónica, S.A. Método y nodo de extremo para distribuir flujo continuo de contenido en tiempo real en una red de distribución de contenido
WO2012170508A1 (en) 2011-06-07 2012-12-13 Interdigital Patent Holdings, Inc. Improving peer to peer (p2p) operation by integrating with content delivery networks (cdn)
US20130194108A1 (en) * 2012-01-30 2013-08-01 Telcordia Technologies, Inc. System, Method, Control Device and Program for Vehicle Collision Avoidance Using Cellular Communication
US9544366B2 (en) * 2012-12-19 2017-01-10 Hive Streaming Ab Highest bandwidth download request policy in a live streaming P2P network
US9680926B2 (en) 2012-12-19 2017-06-13 Hive Streaming Ab Nearest peer download request policy in a live streaming P2P network
US9591070B2 (en) 2012-12-19 2017-03-07 Hive Streaming Ab Multiple requests for content download in a live streaming P2P network
US10291696B2 (en) * 2014-04-28 2019-05-14 Arizona Board Of Regents On Behalf Of Arizona State University Peer-to-peer architecture for processing big data
FR3027180B1 (fr) * 2014-10-09 2016-11-11 Streamroot Procede de diffusion de contenus en streaming dans un reseau pair a pair
US9866602B2 (en) * 2014-10-16 2018-01-09 Kollective Technology, Inc. Adaptive bit rates during broadcast transmission in distributed content delivery networks
US10277646B2 (en) * 2014-12-19 2019-04-30 Vmware, Inc. Generating an automated multimedia feed based on virtual IT infrastructure users needs/interest
US10404781B2 (en) * 2015-01-14 2019-09-03 Cisco Technology, Inc. Flow characteristic based peer-to-peer system
FR3034943B1 (fr) 2015-04-07 2017-04-14 Streamroot Inc Procede de lecture en continu sur un equipement client d'un contenu diffuse au sein d'un reseau pair a pair
US10104416B2 (en) 2015-05-08 2018-10-16 Vmware, Inc. Generating an automated multimedia feed based on customer specific application software running on customer data center/cloud
US10075563B2 (en) * 2016-02-05 2018-09-11 Gridraster, Inc. Network and video/audio system and method for gaming and virtual reality
US10057337B2 (en) 2016-08-19 2018-08-21 AvaSure, LLC Video load balancing system for a peer-to-peer server network
FR3094597B1 (fr) 2019-03-27 2021-06-11 Streamroot Procédé de diffusion de contenus en streaming dans un réseau pair à pair
US10771524B1 (en) * 2019-07-31 2020-09-08 Theta Labs, Inc. Methods and systems for a decentralized data streaming and delivery network
WO2021025571A1 (ru) * 2019-08-05 2021-02-11 НЕЧАЕВ, Марк Александрович Система распределения нагрузки при передаче потокового видео
WO2021072417A1 (en) * 2019-10-11 2021-04-15 Theta Labs, Inc. Methods and systems for decentralized data streaming and delivery network
EP3873097A1 (en) 2020-02-28 2021-09-01 Streamroot Method for playing on a player of a client device a content streamed in a network
EP3886451A1 (en) 2020-03-26 2021-09-29 Streamroot Method for playing on a player of a client device a content streamed in a network
EP4013006A1 (en) 2020-12-11 2022-06-15 Streamroot Method for playing on a player of a client device a content streamed in a network
EP4016954B1 (en) 2020-12-18 2023-12-20 Streamroot Method for controlling a player playing a data stream streamed in a peer-to-peer network
EP4080891A1 (en) 2021-04-20 2022-10-26 Streamroot Method for playing on a player of a client device a content streamed in a network
EP4080892A1 (en) 2021-04-20 2022-10-26 Streamroot Method for playing on a player of a client device a content streamed in a network
EP4300916A1 (en) 2022-06-27 2024-01-03 Streamroot A controller for controlling a player in a peer-to-peer network

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010145199A1 (zh) 2009-06-17 2010-12-23 中国移动通信集团公司 在p2p流媒体系统中查找活动节点的方法、系统及设备

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6178448B1 (en) * 1997-06-18 2001-01-23 International Business Machines Corporation Optimal link scheduling for multiple links by obtaining and utilizing link quality information
US7493363B2 (en) 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
US7792982B2 (en) * 2003-01-07 2010-09-07 Microsoft Corporation System and method for distributing streaming content through cooperative networking
US7594275B2 (en) * 2003-10-14 2009-09-22 Microsoft Corporation Digital rights management system
US7610402B2 (en) * 2003-10-20 2009-10-27 Sony Computer Entertainment America Inc. Spectators in a peer-to-peer relay network
US7627678B2 (en) 2003-10-20 2009-12-01 Sony Computer Entertainment America Inc. Connecting a peer in a peer-to-peer relay network
US20050203851A1 (en) * 2003-10-25 2005-09-15 Macrovision Corporation Corruption and its deterrence in swarm downloads of protected files in a file sharing network
US7593333B2 (en) 2004-07-07 2009-09-22 Microsoft Corporation Efficient one-to-many content distribution in a peer-to-peer computer network
US7675856B2 (en) * 2005-03-24 2010-03-09 Microsoft Corporation Bandwidth estimation in broadband access networks
US8019988B2 (en) * 2005-08-22 2011-09-13 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of The University Of Oregon Security protocols for hybrid peer-to-peer file sharing networks
US7512943B2 (en) * 2005-08-30 2009-03-31 Microsoft Corporation Distributed caching of files in a network
EP1821487B1 (en) * 2006-02-21 2010-04-07 Microsoft Corporation Topology management in peer-to-peer content distribution clouds
US20090172157A1 (en) 2006-04-21 2009-07-02 Yongmin Zhang Method and Device for Content Transmission on P2P Network
US8477658B2 (en) 2006-04-25 2013-07-02 The Hong Kong University Of Science And Technology Intelligent peer-to-peer media streaming
US7945689B2 (en) * 2007-03-23 2011-05-17 Sony Corporation Method and apparatus for transferring files to clients using a peer-to-peer file transfer model and a client-server transfer model
CN101480050B (zh) 2006-06-27 2013-02-20 汤姆森特许公司 性能感知的对等内容点播
FR2909244B1 (fr) * 2006-11-23 2009-03-20 Trident Media Guard Tmg Sa Procede pour agir sur la diffusion d'un fichier dans un reseau p2p
US7716710B1 (en) * 2007-05-14 2010-05-11 Sprint Spectrum L.P. Managed cooperative downloading of digital cinema content
US20080291916A1 (en) * 2007-05-22 2008-11-27 Bo Xiong Systems and methods for dynamic quality of service
ES2704441T3 (es) * 2007-08-09 2019-03-18 Viasat Inc Redundancia para puerta de enlace virtual
GB0802739D0 (en) 2008-02-15 2008-03-26 Foreman Patrick J Computer system and methods to support a Cloud Commerce community for authorised sharing of digtial content via a contolled peer-to-peer network
US8655838B2 (en) 2008-02-20 2014-02-18 At&T Intellectual Property I, L.P. Selection of peers to cluster within a peer-to-peer network
CN101960793A (zh) * 2008-02-27 2011-01-26 汤姆逊许可公司 分散式分层群集对等实况流系统
US20100153578A1 (en) * 2008-07-16 2010-06-17 Nokia Corporation Method and Apparatus for Peer to Peer Streaming
KR101055265B1 (ko) * 2008-12-01 2011-08-09 고려대학교 산학협력단 P2p 서비스 제공장치 및 방법, 그리고 p2p 네트워크를 구성하는 피어노드에서의 데이터 교환방법을 컴퓨터에서 실행시키기 위한 기록매체
US7970932B2 (en) * 2008-12-16 2011-06-28 Polytechnic Institute Of New York University View-upload decoupled peer-to-peer video distribution systems and methods
US8244899B1 (en) * 2009-05-19 2012-08-14 Conviva Inc. Delivering a video stream
KR101562974B1 (ko) * 2009-09-07 2015-10-30 삼성전자 주식회사 스트리밍 서비스의 지연 감소를 위한 단말기, 시드 서버 및 트랙커 서버
US20110083015A1 (en) * 2009-10-05 2011-04-07 Eidgenossiche Technische Hochschule Zurich System and method for an electronic signature for quick and efficient data authentication
US8949436B2 (en) 2009-12-18 2015-02-03 Alcatel Lucent System and method for controlling peer-to-peer connections
WO2011109788A1 (en) * 2010-03-05 2011-09-09 Veetle, Inc. Pod-based server backend infrastructure for peer-assisted applications
US8976706B2 (en) 2010-03-12 2015-03-10 Telefonaktiebolaget L M Ericsson (Publ) Load balancing method and system for peer-to-peer networks
US8909747B2 (en) * 2011-02-24 2014-12-09 Alcatel Lucent Method and apparatus for localization in peer-to-peer systems
EP2681869B1 (en) * 2011-02-28 2018-01-31 Bittorrent, Inc. Peer-to-peer live streaming
US9571571B2 (en) * 2011-02-28 2017-02-14 Bittorrent, Inc. Peer-to-peer live streaming
US20150131529A1 (en) 2013-11-14 2015-05-14 Qualcomm Incorporated Server aided nan cluster merging

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010145199A1 (zh) 2009-06-17 2010-12-23 中国移动通信集团公司 在p2p流媒体系统中查找活动节点的方法、系统及设备

Also Published As

Publication number Publication date
CA2828489C (en) 2019-09-24
US9094263B2 (en) 2015-07-28
EP2681869B1 (en) 2018-01-31
RU2013143828A (ru) 2015-04-10
BR112013021931B1 (pt) 2022-07-12
EP2681869A4 (en) 2016-01-20
BR112013021931A2 (pt) 2016-11-01
WO2012154287A2 (en) 2012-11-15
US20150326657A1 (en) 2015-11-12
EP2681869A2 (en) 2014-01-08
US20120221640A1 (en) 2012-08-30
WO2012154287A3 (en) 2013-02-28
CA2828489A1 (en) 2012-11-15
KR20140016303A (ko) 2014-02-07
US10003644B2 (en) 2018-06-19
RU2553671C2 (ru) 2015-06-20

Similar Documents

Publication Publication Date Title
KR102029326B1 (ko) 피어-투-피어 라이브 스트리밍
US9571571B2 (en) Peer-to-peer live streaming
US8726327B2 (en) System and method for peer-to-peer live streaming
Mol et al. Give-to-get: free-riding resilient video-on-demand in p2p systems
US9712408B2 (en) Bandwidth management in a content distribution network
US10200432B2 (en) HTTP streaming client adaptation algorithm based on proportional-integral control
WO2017088381A1 (zh) 一种直播视频的播放方法、装置及系统
US11178200B2 (en) Systems and methods for playing adaptive bitrate streaming content by multicast
Liang et al. Incentivized peer-assisted streaming for on-demand services
US11012725B2 (en) Live video replay method, replay server and system
JP6523447B2 (ja) 分散型コンテンツ配信ネットワークにおけるブロードキャスト送信中の適応ビットレート
Hammami et al. Hybrid live P2P streaming protocol
US20150188963A1 (en) Systems and Methods for Distributing Adaptive Bitrate Streaming Content by Multicast
US20230396845A1 (en) Method for playing on a player of a client device a content streamed in a network
Liang et al. ipass: Incentivized peer-assisted system for asynchronous streaming
US9386056B1 (en) System, method and computer readable medium for providing media stream fragments
Mol et al. Give-to-get: An algorithm for P2P video-on-demand
KR100804075B1 (ko) 분할화된 데이터를 이용한 클라이언트/서버 간의 접속 제어방법 및 시스템 및 이를 이용한 데이터 수신/재생 방법 및시스템
Pelayo Bandwidth prediction for adaptive video streaming
Fetoh et al. A proposed peer selection algorithm for transmission scheduling in p2p-vod systems
US20170374142A1 (en) Method of protocol management and operation of a content distribution network
Granja et al. Managing QoS constraints in a P2P-cloud video on demand system
CN117714718A (zh) 直播调度方式的动态配置方法、系统及计算设备
Hoßfeld et al. Investigation of chunk selection strategies in peer-assisted video-on-demand systems

Legal Events

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