KR101183430B1 - 피어-투-피어 네트워크에서의 수신자 구동형 스트리밍을위한 시스템 및 방법 - Google Patents

피어-투-피어 네트워크에서의 수신자 구동형 스트리밍을위한 시스템 및 방법 Download PDF

Info

Publication number
KR101183430B1
KR101183430B1 KR1020050071698A KR20050071698A KR101183430B1 KR 101183430 B1 KR101183430 B1 KR 101183430B1 KR 1020050071698 A KR1020050071698 A KR 1020050071698A KR 20050071698 A KR20050071698 A KR 20050071698A KR 101183430 B1 KR101183430 B1 KR 101183430B1
Authority
KR
South Korea
Prior art keywords
client
peer
media
serving
request
Prior art date
Application number
KR1020050071698A
Other languages
English (en)
Other versions
KR20060050257A (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
Priority claimed from US10/934,823 external-priority patent/US7664109B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060050257A publication Critical patent/KR20060050257A/ko
Application granted granted Critical
Publication of KR101183430B1 publication Critical patent/KR101183430B1/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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • 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
    • 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
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • 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/756Media network packet handling adapting media to device capabilities
    • 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/764Media network packet handling at the destination 
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1019Random or heuristic server selection
    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • 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/1066Session management
    • H04L65/1101Session protocols
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1038Load balancing arrangements to avoid a single path through a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (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)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

"피어스트리머"는 느슨하게 연결된 P2P 네트워크에서의 수신자 구동형 피어-투-피어(P2P) 미디어 스트리밍을 제공한다. 네트워크 내의 피어는 단순한 동작만을 수행하고, 스트리밍 미디어의 전부 또는 일부를 캐슁할 수 있고, 다른 피어와 협력하지 않으며, 신뢰되지 않을 수 있고, 임의의 소정의 스트리밍 세션 중에 오프라인으로 벗어나거나 온라인이 될 수 있다. 네트워크 내의 클라이언트는 피어를 조정하고, 복수의 피어로부터 미디어를 스트리밍하고, 부하 균형 맞춤을 수행하고, 피어의 온라인/오프라인 상태를 처리하고, 스트리밍 미디어의 디코딩 및 렌더링을 수행하도록 실시간으로 동작한다. 일 실시예에서, 피어스트리머는 클라이언트가 특정 블럭이 검색되는 장소 및 이 특정 블럭이 무엇인지에 관계없이 고정된 수의 삭제 코딩된 블럭을 검색하기만 하도록, 복수의 서빙 피어가 충돌 없이 부분적인 미디어를 보유하도록 하는 고속 삭제 내성 코딩을 이용한다. 다른 실시예에서, 피어스트리머는 이용가능한 서비스 대역폭 및 클라이언트 큐 상태에 따라서 스트리밍 비트율이 변하는 내장 코딩된 미디어를 이용한다.
삭제 내성 코딩, 피어스트리머, 클라이언트 큐, P2P

Description

피어-투-피어 네트워크에서의 수신자 구동형 스트리밍을 위한 시스템 및 방법{A SYSTEM AND METHOD FOR RECEIVER DRIVEN STREAMING IN A PEER-TO-PEER NETWORK}
도 1은 본 명세서에서 기술된 바와 같이, "피어스트리머"를 구현하는 예시적인 시스템을 구성하는 범용 컴퓨팅 장치를 도시하는 일반적인 시스템도.
도 2는 본 명세서에서 기술된 바와 같이, 수신자 구동형 미디어 스트리밍을 위한 예시적인 P2P 네트워크를 도시하는 도면.
도 3은 본 명세서에서 기술된 바와 같이, 피어스트리머를 구현하는 프로그램 모듈을 도시하는 예시적인 구조적 흐름도.
도 4는 본 명세서에서 기술된 바와 같이, 스트리밍 미디어 파일의 파일 포맷을 도시하는 도면.
도 5는 본 명세서에서 기술된 바와 같이, 테스트된 실시예에서 피어스트리머에 의하여 이용되는 "데이터 단위"를 도시하는 도면.
도 6은 본 명세서에서 기술된 바와 같이, 8개의 데이터 단위로 분할된 내장 코딩된 미디어 패킷의 부분적인 캐슁을 도시하는 도면.
도 7은 클라이언트 피어스트리머 미디어 스트리밍 세션의 샘플 DirectShow™ 필터 그래프를 제공하는 도면.
도 8은 본 명세서에서 기술된 바와 같이, 점선으로 도시된 시스템 버퍼를 갖는, 피어스트리머 요청, 스테이징 큐, 및 스트리밍 미디어 디코딩, 렌더링 및 재생을 나타내는 구조적인 시스템을 도시하는 도면.
도 9는 도착하는 데이터 단위에 대한 피어스트리머 클라이언트 스테이징 큐, 및 각 서빙 피어에 대한 피어스트리머 클라이언트 요청 큐의 블럭도.
도 10은 본 명세서에서 기술된 바와 같이, 피어스트리머의 한 실시예의 일반적인 동작을 도시하는 동작적인 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
130: 시스템 메모리
191: 모니터
200: 서버
210: 클라이언트
220: 피어
300: 미디어 코딩 모듈
310: 피어 리스트
350: 디코딩/렌더링/재생 모듈
본 출원은 Jin Li가 저술한 발명의 명칭이 "A SYSTEM AND METHOD FOR DISTRIBUTED STREAMING OF SCALABLE MEDIA"인, 2004년 9월 3일에 출원된, 미국 특허 출원 번호 10/934,823의 분할 출원이다.
본 발명은 느슨하게 연결된 피어-투-피어(peer-to-peer: P2P) 네트워크에서의 수신자 구동형 P2P 미디어 스트리밍에 관한 것으로, 보다 상세히는 P2P 협력을 제공할 필요 없이 클라이언트의 제어 및 실시간 조정 하에 복수의 피어로부터 클라이언트에게 미디어를 스트리밍하는 시스템 및 방법에 관한 것이다.
최근 시장 조사는 2004년에 미국 내의 인터넷 사용자의 절반 이상이 몇 가지 형태의 스트리밍 미디어를 액세스해 왔음을 나타낸다. 스트리밍 음악으로의 액세스는 매우 인기있는 활동인 한편, 스트리밍 비디오의 인기도가 빠르게 증가하고 있다.
그러나 불행하게도, 통상적인 웹 페이지와는 다르게, 스트리밍 미디어 파일은 일반적으로 크기면에서 매우 크다. 예를 들면, 2 Mbps로 인코딩된 3분 영화 예고편은 사용되는 코덱에 따라 45 MB 미디어 파일이 생성될 수 있다. 스트리밍 미디어가 해결해야 하는 다른 문제는 패킷 전달의 임계 시점이다. 결과적으로, 스트리밍 미디어 파일의 대형 사이즈 및 패킷 전달 시점 요건으로 인해, 통상적인 스트리밍 미디어 서버는 설정 및 실행에 있어 상대적으로 비싸지게 된다. 예를 들면, 한 유통 추정치로 스트리밍 미디어의 획득 비용을 서비스 트래픽의 1GB 당 10 달러로 산정한다. 45 MB 파일 사이즈를 예로 들면, 이 파일의 대역폭 비용은 배포된 영화 예고편 당 0.45 달러가 될 수 있다. 분명히 이러한 비용은 미디어 스트리밍 양이 증가함에 따라 빠르게 상승할 수 있다.
미디어 스트리밍의 상대적으로 높은 비용에 대한 하나의 해결책은 P2P 네트워크를 사용하여 개개의 클라이언트에게 미디어 스트리밍을 제공하는 것이다. 일반적으로, P2P 네트워크의 기본 개념은 스트리밍 미디어를 분산시키는 데 있어서 각 피어 노드가 미디어 서버를 돕도록 하는 것이다. 미디어를 스트리밍하는 P2P 네트워크의 성공은 P2P 네트워크를 구현하는 다수의 종래의 접근법을 발생시켰다.
예를 들면, "말단 시스템 멀티캐스트" 및 "피어캐스트"라 칭하는 종래의 P2P 스킴은 미디어 스트리밍을 위한 애플리케이션-레벨 멀티캐스트(ALM)를 이용한다. 보다 상세히는, ESM 및 피어캐스트 모두에서, 피어 노드는 기존의 IP 네트워크를 통해 스스로 오버레이(overlay) 트리로 구성될 수 있다. 그 다음 스트리밍 데이터는 오퍼레이 트리를 따라 분산된다. 그러면 대역폭을 제공하는 비용은 피어 노드들 간에서 공유되므로, 미디어 서버를 실행시키는 대역폭 부담(즉 달러 비용)을 감소시킨다. 그러나, ESM 및 피어캐스트 모두에서, 분산 트리의 단말 노드(leaf node)는 스트리밍 미디어를 수신할 뿐이여서 컨텐츠 분산에 기여하지 않는다.
2개의 다른 종래의 스킴, "CoopNet" 및 "SplitStream"은 소스에서 피어 노드에 이르는 복수의 분산 트리를 이용함으로써 ESM 및 피어캐스트와 같은 스킴의 컨텐츠 분산 한계를 해결한다. 그러면 CoopNet 및 SplitStream 내의 각 트리는 스트리밍 미디어의 개별 조각을 전송할 수 있다. 결과적으로, 모든 트리 노드는 컨텐츠 분산에 포함될 수 있다.
종래의 P2P 미디어 스트리밍 해결책의 추가적인 예는 "OStream"이라 칭하는 스트리밍 스킴을 포함한다. OStream은 피어 노드가 이전에 자신의 캐쉬로부터 분산된 미디어로 클라이언트를 서비스하는 "캐쉬-엔드-릴레이(cache-and-relay)" 접근법을 이용한다. 다른 종래의 시스템인, "GnuStream"은 잘 알려진 "그누텔라(Gnutella)" 시스템의 최상부에 작성된 수신자 구동형 P2P 미디어 스트리밍 시스템을 제공한다. "컬렉트캐스트(CollectCast)"라 칭하는 또 다른 종래의 스킴은 최상의 스트리밍 품질을 달성할 가능성이 가장 높은, 서빙 피어를 활발히 탐색하면서, 네트워크 변동 및 피어 장애에 동적으로 적응한다.
다른 유형의 종래의 스킴은 파일의 조각들이 복수의 피어에 걸쳐 널리 분산된 한 유형의 분산형 파일 공유를 제공한다. 그러면, 클라이언트가 그 파일의 다운로드를 요청할 때마다, 그 요청은 서버로부터 직접 서비스되기 보다는 복수의 피어로부터 서비스된다. 예를 들면, "스웜캐스트(Swarmcast)"라 칭하는 한 이러한 스킴은 파일들을 훨씬 적은 조각들로 쪼갬으로써 다운로드가능한 인기있는 컨텐츠를 제공하는 웹 사이트에 위치되는 부하를 분산시킨다. 일단 사용자가 스웜캐스트 클라이언트 프로그램을 설치했다면, 이들의 컴퓨터는 이들이 이미 다운로드하였던 데이터의 조각을 곳곳에 전달(즉, 서비스)함으로써 자동적으로 다른 사용자들의 컴퓨터와 상호동작하므로, 중앙 서버 상의 전체적인 서비스 부하를 감소시킨다. "빗토런트(BitTorrent)"라 칭하는 유사한 스킴은 매우 유사한 원리에 따라 동작한다. 보다 상세히는, 부하가 적을 때, 빗토런트 스킴을 이용하여 대형 파일을 서비스하는 웹 싸이트는 이 싸이트가 직접 서비스 대부분을 수행하기 때문에 통상적인 http 서버와 매우 유사하게 행동할 것이다. 그러나, 서버 부하가 어느 정도 비교적 높 은 레벨에 도달할 때, 빗토런트는 다른 다운로딩 클라이언트를 서비스하기 위한 대부분의 업로드 부담이 다운로딩 클라이언트로부터 직접 지원되는 상태로 전환될 것이다.
불행하게도, 스웜캐스트 및 빗토런트와 같은 스킴이 P2P 네트워크 사이즈의 함수로서 급격하게 증가하는 서버 용량에 대하여 파일들의 조각을 분산시키는 데에 매우 유용하지만, 이들 시스템은 효과적인 미디어 스트리밍에 적합하지 않다. 상세히는, 스웜캐스트 및 빗토런트와 같은 스킴은 파일 또는 다운로드되고 있는 파일을 구성하는 데이터 패킷의 전달 순서 또는 시점에 대하여 주의를 기울이지 않는다. 파일은 단순히 다양한 피어로부터 클라이언트에게 조각들로 브로드캐스팅 되고, 그러면 국부적으로 클라이언트 컴퓨터 상에서 본래의 파일을 재구성하기 위해 단순히 올바른 순서로 다시 조립된다. 그러나, 스트리밍 미디어의 경우에서, 데이터 패킷의 시점 및 순서는 그 미디어의 효과적인 스트리밍을 제공하기 위하여 주의깊게 고려되고 제어되어야 한다.
그러므로, 느슨하게 연결된 피어들의 컬렉션으로부터 클라이언트로의 미디어 스트리밍의 수신자 구동형 제어를 위한 시스템 및 방법이 필요하다. 이러한 시스템은 피어들 간의 통신 또는 협력을 요구해서는 안된다. 또한, 이러한 시스템 및 방법은 클라이언트에게 대량의 임의의 필요한 계산 동작을 수행할 것을 요구함으로써 피어 상에 부여되는 계산 요구를 최소화해야 한다.
본 명세서에서 기술한 바와 같이, "피어스트리머"는 느슨하게 연결된 P2P 네 트워크에서의 수신자 구동형 P2P 미디어 스트리밍을 제공한다. 네트워크 내의 피어들은 단순한 동작만을 수행하고, 스트리밍 미디어의 전체 또는 일부분을 캐슁할 수 있고, 다른 피어들과 협력하지 않고, 신뢰되지 않을 수 있으며, 임의의 소정의 스트리밍 세션 중에 오프라인으로 벗어나거나 온라인이 될 수 있다. 네트워크 내의 클라이언트(즉 수신자)는 피어를 조정하고, 복수의 피어들로부터 미디어를 스트리밍하고, 부하 균형 맞춤을 수행하고, 피어의 온라인/오프라인 상태를 처리하고, 스트리밍 미디어의 디코딩 및 렌더링을 수행하도록 실시간으로 동작한다.
본 명세서에서 기술된 피어스트리머 시스템이 복수의 클라이언트 및 피어들을 갖는 대형 P2P 네트워크에서의 이용에 적용될 수 있지만, 이하의 설명은 명확한 설명을 위하여 일반적으로 개개의 클라이언트를 언급할 것을 유의한다. 본 기술 분야에서 숙련된 기술을 가진 자라면 피어스트리머에 의해 제공된, 기술된 시스템 및 방법은 복수의 클라이언트에 적용가능하다고 이해할 것이다. 또한, 본 명세서에 기술된 피어들이 수신자 또는 클라이언트에 미디어를 서비스하는 데에 이용되기 때문에, P2P 네트워크 내의 피어들의 클러스터는 본 명세서에서 일반적으로 피어들 또는 "서빙 피어들"로서 칭한다. 이 "서빙 피어들"는 본 명세서에서 기술된 특정 스트리밍 미디어 파일들이 최초로 유래한 출처인 "미디어 서버들"과 혼동되어서는 안됨을 또한 유의해야 한다.
일반적으로, 피어스트리머는 수신자 구동형 미디어 스트리밍을 제공한다. 피어스트리머 동작은 요청된 스트리밍 미디어의 전부 또는 일부를 보유하는 근처의 피어들의 리스트를 검색하는 각각의 수신하는 클라이언트로 시작한다. 이 문맥에 서, 미디어 서버는 서빙 피어 중 하나로서 동작할 수도 있음을 유의한다. 이 리스트는 스트리밍 미디어의 완전한 사본 또는 부분적인 사본을 보유하는 하나 이상의 이웃 서빙 피어의 집합의 청취 포트 및 IP 주소를 포함한다. 이 리스트를 검색하는 방법은: 1) 미디어 서버로부터 직접 리스트를 검색하는 단계, 2) 알려진 서빙 피어로부터 리스트를 검색하는 단계, 및 3) 서빙 피어를 식별하는 분산형 해쉬 테이블(DHT) 접근법을 이용하는 단계를 포함한다.
일단 클라이언트가 이용가능한 서빙 피어의 리스트를 검색하였다면, 클라이언트는 각각의 서빙 피어에 접속하고 이 피어의 "이용가능성 벡터"를 획득한다. 일반적으로, 각각의 서빙 피어에 대한 이용가능성 백터는 서빙 피어가 보유하는 미디어의 정확한 부분의 간결한(compact) 설명이다. 그 다음 이들 이용가능성 벡터는 클라이언트에 의해, 다양한 서빙 피어가 보유하는 인코딩된 미디어의 정확한 블럭을 결정하는 데에 이용된다.
예를 들면, 특정 서빙 피어가 전체 서비스되는 미디어를 보유하는 경우 그 피어의 이용가능성 벡터는 서빙 피어가 완전한 미디어 사본을 보유함을 나타내는 하나의 플래그일 수 있다. 마찬가지로, 서빙 피어가 서비스되는 미디어의 일부만을 보유한다면, 그 서빙 피어의 이용가능성 벡터는 클라이언트에게 서빙 피어가 보유하는 미디어의 어느 부분인지, 예를 들면, 서빙 피어가 보유하는 각각의 패킷의 블럭의 개수 및 블럭 인덱스에 대한 신호를 보낼 것이다.
또한, 이하에 기술될 삭제 코딩 기법과 같은 추가적인 코딩이 이용되는 경우, 이용가능성 벡터는 서빙 피어에 할당되는 미디어 삭제 코딩 키, 및 서빙 피어 가 보유하는 삭제 블럭의 개수를 포함할 것이다. 또한, 서비스하는피어가 삭제 코딩을 이용하고 미디어 또한 내장 코딩된다면, 이용가능성 백터는 할당된 미디어 삭제 코딩 키, 내장 코딩에 의해 이용되는 서로 다른 비트율 레벨에서의 각 패킷의 삭제 블럭의 개수를 포함할 것이다.
일반적으로, 인코딩된 미디어 파일은 통상적으로 인코딩된 미디어를 나타내는 복수의 미디어 패킷(즉, "미디어 본문")이 후속하는 "미디어 헤더"를 포함한다. 이용가능성 벡터가 주어지면, 다음 단계는 클라이언트가 미디어 헤더 및 피어 클러스터로부터 스트리밍될 인코딩된 미디어 파일로부터 유도된 "미디어 구조"의 길이를 검색하는 것이다. 패킷의 집합의 미디어 구조는 단순히 패킷 헤더에다 패킷 비트스트림 길이를 더한 것이다. 이들 길이가 검색된 이후에, 클라이언트는 미디어 헤더 및 미디어 구조의 "데이터 단위 ID"를 계산하고, 이들을 협력적인 방식으로 피어 클러스터 내의 하나 이상의 피어로부터 검색한다.
일단 미디어 헤더가 도착하면, 클라이언트는 미디어 헤더를 분석하고, 그 다음 스트리밍되고 있는 특정 유형의 미디어(즉, MPEG 1/2/4, WMA, WMV, 등)의 디코딩 및 렌더링 또는 재생에 필요한 오디오/비디오 디코더 및 렌더링 장치를 구성하거나 초기화한다. 일단 이 초기 설정 단계가 완료되면, 그 다음 클라이언트는 후술될 바와 같이 피어 클러스터로부터 미디어 본문의 진행중인 스트리밍을 조정하는 것을 진행한다.
상세히는, 특정 스트리밍 미디어의 전술한 미디어 구조가 주어지면, 클라이언트는 스트리밍 미디어의 패킷(즉, 미디어 본문)의 데이터 단위 ID를 계산한 다 음, 한개씩 이들 패킷을 검색한다. 관련된 실시예에서, 피어스트리머는 내장 코딩된 미디어를 이용하고, 그 다음 스트리밍 비트율은 이용가능한 서비스 대역폭 및 클라이언트 큐 상태에 따라 달라진다. 이러한 경우, 미디어 본문의 미디어 패킷의 진행중인 검색은 이용가능한 대역폭에 기초하여 최소 비율 왜곡을 제공할 패킷에 대응한다.
한 경우에서, 클라이언트는 주기적으로 서빙 피어 리스트를 갱신하고, 잠재적인 새로운 서빙 피어에 접속한다. 테스트된 실시예에서, 클라이언트는 각각의 잠재적인 서빙 피어에 주기적인 종래의 TCP 접속 함수 호출을 발행함으로써 잠재적인 새로운 서빙 피어에 대하여 검사하였다. 클라이언트가 새로운 서빙 피어로의 접속을 구축한 이후에, 먼저 이 클라이언트는 전술된 이용가능성 벡터를 검색한다. 그 다음 새로운 피어는, 수신자/클라이언트 지시로, 클러스터 내의 다른 활성화된 피어들에 합류할 수 있다. 그 다음 클라이언트는 피어를 조정하고, 자신의 서비스 대역폭과 컨텐츠 이용가능성에 따라 피어의 서비스 부하의 균형을 맞추고, 하나 이상의 다른 활성화된 피어로의 접속이 끊기거나 시간만료된 피어의 완료되지 않은 요청을 다시 지정한다. 그 다음 스트리밍 동작은 전체 스트리밍 미디어가 수신되거나 스트리밍 동작이 사용자에 의해 정지될 때까지 이러한 방식으로 계속된다.
일 실시예에서, 피어스트리머는 고속 삭제 내성 코딩(high rate erasure resilient coding)을 이용하여 클라이언트는 특정 블럭이 검색되는 곳과 어떠한 특정 블럭이 검색되는지에 관계 없이 삭제 코딩된 블럭의 고정된 수를 검색하기만 하도록, 복수의 서빙 피어가 충돌 없이 미디어의 일부를 보유하게 한다. 이러한 경 우에서, 수신된 삭제 코딩된 블럭은 클라이언트의 스테이징 큐에 보관되고, 여기서 다음에 미디어 패킷이 조립된다. 그 다음 완전하게 조립된 미디어 패킷은 스트리밍되고 있는 특정 유형의 미디어의 디코딩 및 렌더링 또는 재생을 위하여 구성되거나 초기화된 오디오/비디오 디코더 및 렌더링 장치를 이용하여 디코딩되고 재생될 다운스트림으로 송신된다. 이러한 경우에서, 스테이징 큐의 길이, 요청 큐의 길이, 및 압축된 오디오/비디오 버퍼의 길이를 제어함으로써, 클라이언트는 (테스트된 실시예에서는 약 4초로) 어느정도의 소정의 기간의 스트리밍 버퍼를 보유한다. 그 다음 이 결합된 버퍼는 네트워크 패킷 손실 및 지터(jitter)를 제거하는 데에 이용된다.
상기 요약의 관점으로, 본 명세서에서 기술된 피어스트리머가 P2P 네트워크에 수신자 구동형 미디어 스트리밍을 제공하는 고유한 시스템 및 방법을 제공하는 것이 명백하다. 여기서 기술된 이점 외에도, 피어스트리머의 다른 이점은 첨부된 도면에 관련하여 이루어진 본 명세서의 이하의 상세한 설명으로부터 명백해질 것이다.
본 발명의 특정한 특징, 양태, 및 이점은 이하의 설명, 특허 청구 범위, 첨부된 도면에 관련하여 보다 잘 이해되게 될 것이다.
본 발명의 바람직한 실시예의 이하의 설명에서, 본 명세서의 일부를 형성하는 첨부된 도면으로의 참조가 이루어지며, 이 도면에서 본 발명이 실행될 수 있는 특정 실시예의 예시로서 도시된다. 다른 실시예들이 이용될 수 있으며 본 발명의 범위를 벗어나지 않고 구조적인 변경이 이루어질 수 있다고 이해된다.
1.0 예시적인 오퍼레이팅 환경:
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 나타낸다. 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안된다.
본 발명은 많은 다른 범용 또는 특수목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 동작될 수 있다. 본 발명과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held), 랩탑 또는 모바일 컴퓨터 또는 셀룰러폰 및 PDA와 같은 통신 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 탑 박스(set top box), 프로그램가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산형 컴퓨팅 환경 등을 포함하지만, 이에 한정되지 않는다.
본 발명은 마이크로폰 어레이(198)의 컴포넌트를 포함하는 하드웨어 모듈과의 조합인 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 일반적으로 관련하여 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴 포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 태스크를 수행하는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 국부 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다. 도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다.
컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 메자닌(Mezzanine) 버스로도 알려진 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다.
컴퓨터 저장 매체는 RAM, ROM, PROM, EPROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중의 임의의 조합이 컴퓨터 판독가능 매체의 범위 내에 또한 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출 력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하는 것은 아님) 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광 매체 등의 분리형 비휘발성 광 디스크(156)로부터 판독하거나 그 광 디스크에 기록하는 광 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데 이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다.
(도시되지 않은) 기타 입력 장치는 조이스틱, 게임 패드, 위성 안테나, 스캐너, 라디오 수신기, 및 텔레비전 또는 브로드캐스트 비디오 수신기 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스(121)에 연결된 유선 또는 무선 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB), IEEE 1394 인터페이스, 블루투스TM 무선 인터페이스, IEEE 802.11 무선 인터페이스 등과 같은 그 밖의 통상의 인터페이스 및 버스 구조에 의해 접속될 수 있다. 또한, 컴퓨터(110)는 마이크로폰 또는 마이크로폰 어레이(198)와 같은 음성 또는 오디오 입력 장치, 및 예를 들면, 병렬, 직렬, USB, IEEE 1394, 블루투스TM 등과 같은 통상의 유선 또는 무 선 인터페이스를 또한 포함하는 오디오 인터페이스(199)를 통해 확성기(197) 또는 접속된 다른 사운드 출력 장치도 포함할 수 있다.
모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함한다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 , 즉 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 1은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있음이 인식될 것이다.
여기서 예시적인 오퍼레이팅 환경이 기술되었고, 이 설명의 나머지 부분은 분산형 미디어 스트리밍을 위한 수신자 구동형 P2P 네트워크에서의 하나 이상의 피어의 클러스터 상에 동적인 실시간 클라이언트 제어를 제공하는 "피어스트리머"를 구현하는 프로그램 모듈 및 프로세스의 설명에 전념할 것이다.
2.0 도입부:
본 명세서에서 기술된 "피어스트리머"는 느슨하게 연결된 P2P 네트워크에서의 수신자 구동형 P2P 미디어 스트리밍을 제공한다. 네트워크 내의 피어들은 단순히 동작만을 수행하고, 스트리밍 미디어의 전부 또는 일부를 캐슁할 수 있고, 다른 피어들과 협력하지 않고, 신뢰성이 없을 수 있으며, 임의의 소정의 스트리밍 세션 중에 오프라인으로 벗어나거나 온라인이 될 수 있다. 네트워크 내의 클라이언트들은 피어들을 조정하고, 복수의 피어들로부터 미디어를 스트리밍하고, 부하 균형 맞춤을 수행하고, 피어들의 온라인/오프라인 상태를 처리하며, 스트리밍 미디어의 렌더링 및 디코딩을 수행하도록 실시간으로 동작한다.
본 명세서에 기술된 피어스트리머 시스템은 복수의 클라이언트 및 피어를 갖는 대형 P2P에서의 이용에 적용될 수 있지만, 이하의 설명은 간단한 설명을 위하여 일반적으로 개개의 클라이언트를 언급할 것임을 유의한다. 본 기술 분야에서 숙련된 기술을 가진 자라면 피어스트리머가 제공한 상술된 시스템 및 방법은 복수의 클라이언트에 적용될 수 있다고 이해할 것이다. 또한, 본 명세서에 기술된 피어가 수신자 또는 클라이언트에게 미디어를 서비스하는 데에 이용되기 때문에, P2P 네트워크 내의 피어들의 클러스터는 일반적으로 본 명세서에서 피어들 또는 "서빙 피어들"로서 언급된다. 이 "서빙 피어들"은 본 명세서에서 기술된 바와 같이, 특정 스트리밍 미디어 파일들이 최초로 유래한 출처인 "미디어 서버들"과 혼동되어서는 안된다는 것 또한 유의한다.
일반적으로, 피어스트리머는 도 2에 도시된 네트워크와 같은 P2P 네트워크에서 동작한다. 특정 스트리밍 세션에 대하여, "서버"(200)는 스트리밍 미디어를 최초로 발생시킨 P2P 네트워크 내의 노드로서 정의되고, "클라이언트"(또는 수신자)(210)는 현재 스트리밍 미디어를 요청하는 노드로서 정의되며, "서빙 피어"(220)는 스트리밍 미디어의 완전한 사본 또는 부분적인 사본으로 클라이언트에게 서비스하는 노드로서 정의된다.
일반적으로, 서버(200), 클라이언트(210) 및 서빙 피어(220)는 모두 인터넷과 같은 네트워크에 접속되는 말단-사용자이다. 서버(200)가 항상 스트리밍 미디어를 서비스할 수 있기 때문에, 서버 노드는 서빙 피어(200)로서도 동작한다. 서버 노드(200)는 또한, 예를 들면, 이용가능한 서빙 피어의 리스트를 보유하고, 디지털 권리 관리(DRM) 기능을 수행하는 등의, 서빙 피어(220)에 의해 수행될 수 없 는 미디어 관리자 기능들을 수행할 수 있다. 또한, 종래의 P2P 스킴 등에서, 본 명세서에 기술된 피어스트리머는 하나 이상의 스트리밍 피어 노드(220)가 배포되었기 때문에 효율성이 증가되는 이점이 있다. 상세히는, 스트리밍 피어 노드(220)의 개수가 증가할 수록, 미디어 서버(200) 상의 부하는 줄어드므로, 실행에 보다 비용이 줄어들게 되는 한편, 각 클라이언트 노드(210)는 특정 미디어 스트리밍 세션 중에 훨씬 더 좋은 미디어 품질을 수신할 수 있을 것이다.
또한, 많은 다른 P2P 유형의 네트워크에서와 같이 특정 노드의 규칙은 변경될 수 있음은 명백할 것이다. 예를 들면, 특정 노드는 하나의 특정 스트리밍 세션 내의 클라이언트(210)로서 동작할 수 있는 한편, 다른 세션에서는 서빙 피어(220)로서 동작할 수 있다. 또한, 특정 노드는 동시에 클라이언트 노드(210)와 서버(200) 또는 서빙 피어(220)로서 동작하여 동시에 하나 이상의 미디어 파일, 또는 미디어 파일의 일부를 스트리밍 수 있는 한편, 하나 이상의 다른 서빙 피어로부터 다른 스트리밍 미디어를 수신할 수 있다.
스트리밍 세션 중에, 클라이언트(200)는 먼저 소정의 미디어 중 일부 또는 모두를 보유하는 복수의 인접한(close-by) 피어(220)를 찾아내고, 그 다음 (서버(200)를 포함할 수 잇는) 복수의 피어로부터 미디어를 스트리밍 한다. 결과적으로, 각 서빙 피어(200)는 클라이언트(210)의 다운로드 요청의 일부를 서비스함으로써 전체 업로드 부담을 줄이는 것으로 서버(200)를 돕도록 동작한다. 결과적으로, 서버(200)를 돕는 많은 스트리밍 피어(220)가 존재할 때 이용가능한 서비스 대역폭이 상당히 높아지기 때문에, 클라이언트(210)는, 클라이언트가 많은 경우에서 특 히, 보다 좋은 스트리밍 미디어 품질을 종종 수신할 수 있다.
임의의 P2P 네트워크에서와 같이, 개개의 피어(220) 각각은 하나 이상의 서비스하는 클라이언트(210)로부터 직접적인 이익을 얻을 수 없다. 그러나, 일 실시예에서, 종래의 P2P "공평성 메카니즘(fairness mechanism)"이 이용되어 후속 스트리밍 요청을 위해 서비스되는 데에 상호동작하는 피어(220)들이, 서빙 피어로서 동작하는 데에 동일하게 상호동작 하지 않은 다른 피어보다 더 높은 우선순위를 수신하는 것을 보장한다. 결과적으로, 피어스트리머에 이러한 공평성 메카니즘을 구현한다면, 상호 동작하는 피어(220)는 통상적으로 클라이언트(210)가 되는 다음 시기에 보다 좋은 미디어 품질을 기대할 수 있다.
결과적으로, 각 서빙 피어(220)가 임의의 특정 스트리밍 세션 중에 클라이언트(210) 및 서버(200) 모두를 위해 바람직한 행위를 효과적으로 수행하고 있다는 사실을 인식하면, 좋은 설계 철학은 서빙 피어가 경량(lightweight)이며 P2P 네트워크는 느슨하게 연결됨을 보장하는 것이다. 다시 말하면, 서빙 피어(220)는 낮은 CPU 부하로 매우 단순한 동작을 수행하는 데에만 필요해야 한다. 또한, 다른 실시예에서, 서빙 피어(220)는 또한 각 서빙 피어에 의해 본질적으로 나타나는 저장 공간을 최소화하기 위하여, 미디어의 오직 일부를 캐슁하는 것으로 할 수 있다. 또한, 피어(220)들 간의 통신의 임의의 대역폭 비용을 줄이기 위하여, 각 서빙 피어는 다른 피어와 협력하는 것이 요구되지 않아야 한다. 마지막으로, 임의의 특정 서빙 피어(220)에서 실행되는 다른 프로그램은 임의의 특정 시점에서 CPU 및 네트워크 자원을 요구하는 데에 높은 우선순위를 가질 수 있거나, 특정 피어는 임의의 시점에서 단순히 켜지거나 꺼질 수 있다. 결과적으로, 특정 서빙 피어(200)는, 이용가능한 서비스 대역폭에서의 변동으로 신뢰되지 않을 수 있다. 사실상, 특정 서빙 피어는, 스트리밍 세션 중의 임의의 시점에서 단순히 오프라인으로 벗어나거나, 온라인이 될 수 있다.
반대로, 클라이언트(210)의 부담을 증가시켜 스트리밍 세션으로 자원을 보내는 것이 공평하다. 상세히는, 클라이언트(210)는 복수의 피어(220)로부터 스트리밍 미디어를 수신하는 것이 필요하여, 이미 피어들에 접속된다. 또한, 클라이언트(210)가 자신만의 스트리밍 경험을 향상시키기 위하여 피어(200)를 효과적으로 조정하거나 관리하려는 동기가 존재한다. 결과적으로, 본 명세서에서 기술된 피어스트리머 시스템 및 방법은, 클라이언트가 다양한 스트리밍 피어 간에서 패킷 요청을 송신하고 조정하는 역할을 하는 느슨하게 연결된 P2P 네트워크 내의 서빙 피어를 통한 수신자 구동형 제어를 이용한다.
2.1 시스템 개요:
상술한 바와 같이, 본 명세서에서 기술된 피어 스트리머는 느슨하게 연결된 P2P 네트워크에서의 수신자 구동형 P2P 미디어 스트리밍을 위한 시스템 및 방법을 제공한다. 네트워크 내의 피어는 단순한 동작 만을 수행하고, 스트리밍 미디어의 전부 또는 일부를 캐슁할 수 있고, 다른 피어와 협력하지 않고, 신뢰되지 않을 수 있으며, 임의의 소정의 스트리밍 세션 중에 오프라인으로 벗어나거나 온라인이 될 수 있다. 네트워크 내의 클라이언트(또는 수신자)는 피어를 조정하고, 복수의 피어로부터 미디어를 스트리밍하고, 부하 균형 맞춤을 수행하고, 피어의 온라인/오프 라인 상태를 처리하며, 스트리밍 미디어의 디코딩 및 렌더링을 수행하도록 실시간으로 동작한다.
일반적으로, 피어스트리머는 수신자 구동형 미디어 스트리밍을 제공한다. 피어스트리머 동작은 요청된 스트리밍 미디어의 전부 또는 일부를 보유하는 근처의 스트리밍 피어의 리스트를 검색하는 각각의 수신하는 클라이언트로 시작한다. 이 문맥에서, 미디어 서버가 서빙 피어 중 하나로서 동작할 수도 있음을 유의한다. 이 리스트는 서비스되는 미디어의 완전한 사본 또는 부분적인 사본을 보유하는 하나 이상의 이웃 서빙 피어의 집합의 청취 포트 및 IP 주소를 포함한다. 이러한 리스트를 검색하는 방법은: 1) 미디어 서버로부터 직접 리스트를 검색하는 단계; 2) 알려진 서빙 피어로부터 리스트를 검색하는 단계; 및 3) 서빙 피어를 식별하는 분산형 해쉬 테이블(DHT) 접근법을 이용하는 단계를 포함한다.
일단 클라이언트가 이용가능한 서빙 피어의 리스트를 검색했다면, 클라이언트는 각 서빙 피어에 접속하고 이 피어의 "이용가능성 벡터"를 획득한다. 일반적으로, 각 서빙 피어에 대한 이용가능성 벡터는 각 서빙 피어가 보유하는 미디어의 정확한 부분의 간결한 설명이다. 그 다음 이 이용가능성 벡터는 클라이언트에 의해, 서빙 피어가 보유하는 인코딩된 미디어의 정확한 블럭을 결정하는 데에 이용된다.
예를 들면, 특정 서빙 피어가 전체 서비스되는 미디어를 보유하는 경우 그 피어의 이용가능성 벡터는 서빙 피어가 완전한 미디어 사본을 보유함을 나타내는 하나의 플래그일 수 있다. 마찬가지로, 서빙 피어가 서비스되는 미디어의 일부만 을 보유한다면, 그 서빙 피어의 이용가능성 벡터는 클라이언트에게 서빙 피어가 보유하는 미디어의 어느 부분인지, 예를 들면, 서빙 피어가 보유하는 각각의 패킷의 블럭의 개수 및 블럭 인덱스에 대한 신호를 보낼 것이다.
또한, 이하에 기술될 삭제 코딩 기법과 같은 추가적인 코딩이 이용되는 경우, 이용가능성 벡터는 서빙 피어에 할당되는 미디어 삭제 코딩 키, 및 서빙 피어가 보유하는 삭제 블럭의 개수를 포함할 것이다. 또한, 서빙 피어가 삭제 코딩을 이용하고 미디어 또한 내장 코딩된다면, 이용가능성 백터는 할당된 미디어 삭제 코딩 키, 내장 코딩에 의해 이용되는 서로 다른 비트율 레벨에서의 각 패킷의 삭제 블럭의 개수를 포함할 것이다.
이용가능성 벡터가 주어지면, 다음 단계는 클라이언트가 "미디어 헤더" 및 피어 클러스터로부터 스트리밍될 미디어에 대한 "미디어 구조"의 길이를 검색하는 것이다. 이들 길이가 검색된 이후에, 클라이언트는 미디어 헤더 및 미디어 구조의 "데이터 단위 ID"를 계산하고, 이들을, 각 서빙 피어에 대한 이용가능성 백터를 분석한 결과로서 어떤 피어가 어떤 패킷 ID를 갖는지 알아낸 것에 기초하여 피어 클러스터 내의 하나 이상의 피어로부터 검색한다.
일단 미디어 헤더가 도착하면, 클라이언트는 미디어 헤더를 분석하고, 그 다음 스트리밍되고 있는 특정 유형의 미디어(즉, MPEG 1/2/4, WMA, WMV, 등)의 디코딩 및 렌더링 또는 재생에 필요한 오디오/비디오 디코더 및 렌더링 장치를 구성하거나 초기화한다. 일단 이 초기 설정 단계가 완료되면, 그 다음 클라이언트는 후술될 바와 같이 피어 클러스터로부터 미디어 본문의 진행중인 스트리밍을 조정하는 것을 진행한다. 상세히는, 특정 스트리밍 미디어의 전술한 미디어 구조가 주어지면, 클라이언트는 스트리밍 미디어의 패킷의 데이터 단위 ID를 계산한 다음, 여러가지 피어로부터 한개씩 이들 패킷을 검색한다.
그 다음 클라이언트는 (서빙 피어를 식별하는 전술된 방법들 중 하나를 이용하여) 주기적으로 서빙 피어 리스트를 갱신하고, 잠재적인 새로운 서빙 피어에 접속한다. 테스트된 실시예에서, 클라이언트는 각각의 잠재적인 서빙 피어에 주기적인 종래의 TCP 접속 함수 호출을 발행함으로써 잠재적인 새로운 서빙 피어에 대하여 검사하였다. 클라이언트가 새로운 서빙 피어로의 접속을 구축한 이후에, 먼저 이 클라이언트는 전술된 이용가능성 벡터를 검색한다. 그 다음 새로운 피어는, 수신자/클라이언트 지시로, 클러스터 내의 다른 활성화된 피어들에 합류할 수 있다. 그 다음 클라이언트는 피어를 조정하고, 자신의 서비스 대역폭과 컨텐츠 이용가능성에 따라 피어의 서비스 부하의 균형을 맞추고, 하나 이상의 다른 활성화된 피어로의 접속이 끊기거나 시간만료된 피어의 완료되지 않은 요청을 재지정한다. 그 다음 스트리밍 동작은 전체 스트리밍 미디어가 수신되거나 스트리밍 동작이 사용자에 의해 정지될 때까지 이러한 방식으로 계속된다.
2.2 시스템 아키텍처 개요:
상기 요약된 프로세스는 도 3의 일반적인 시스템도에 의해 도시된다. 상세히는, 도 3의 시스템도는 기술된 바와 같이, 피어스트리머를 구현하는 프로그램 모듈들 간의 상호관계를 도시한다. 도 3의 임의의 박스 또는 띄엄 띠엄된 선이나 점선에 의해 도시되는 박스들 간의 상호 접속은 본 명세서에서 기술된 피어스트리머 의 대안적인 실시예를 나타내고, 이하에 기술된 바와 같이, 임의의 또는 모든 이들 대안적인 실시예는 본 명세서 전반에 걸쳐 기술된 다른 대안적인 실시예와 조합하여 이용될 수 있음을 유의한다.
일반적으로, 피어스트리머는 각각의 클라이언트(210)에 관련하여 클라이언트가 위치 추적 모듈(305)을 이용하여 요청된 스트리밍 미디어의 전부 또는 일부를 보유하는 근처의 서빙 피어(220)들의 리스트(310)를 검색하고 식별하도록 하는 동작을 시작한다. 이 문맥에서, 미디어 서버(200)는 서빙 피어(220) 중 하나로서 동작할 수도 있음을 유의한다. 피어 리스트(310)를 검색하기 위하여 피어 위치 추적 모듈(305)에 의해 다양한 방법이 이용된다. 예를 들면, 일 실시예에서, 피어 리스트(310)는 서버(200)로부터 직접 제공된다. 다른 실시예에서, 피어 리스트(310)는 알려진 서빙 피어(220)로부터 검색된다. 마지막으로, 또 다른 실시예에서, 종래의 분산형 해쉬 테이블(DHT)이 피어 위치 추적 모듈(305)에 의해, 서빙 피어(220)를 식별하는 데에 이용된다. 상술된 바와 같이, 피어 리스트(305)는 서비스되는 미디어의 완전한 사본 또는 부분적인 사본을 보유하는 하나 이상의 이웃 서빙 피어(220)의 청취 포트 및 IP 주소를 포함한다.
서비스되는 미디어는 그 자체가, 예를 들면, MPEG 1/2/4, WMA, WMV, 등을 포함하는, 복수의 종래의 코덱 중 임의의 것을 이용하는 서버(200) 상에 존재하는 미디어 코딩 모듈(300)에 의해 인코딩된다. 미디어를 인코딩 하는 데에 사용되는 코덱은 본 명세서에서 보다 상세히 기술할 바와 같이, 내장되거나, 내장되지 않을 수 있음을 유의한다. 또한, 일 실시예에서, 이하 보다 상세히 기술할 바와 같이 "고 속 삭제 내성 코딩"은 본질적으로 신뢰될 수 없는 서빙 피어(220)에 향상된 강건함을 제공하기 위하여 임의의 코덱들과 조합하여 이용된다.
먼저, 인코딩된 미디어는 미디어가 최초로 인코딩되었던 서버 상에만 존재한다. 그 다음 하나 이상의 서빙 피어(220)에게 이 미디어의 전부 또는 일부가 분산된다(또한, 서버(200)는 미디어 스트리밍을 위해 서빙 피어로도 동작할 수 있다). 서빙 피어(220)로의 분산은 미디어 스트림의 패킷의 피어들로의 직접적인 분산의 결과 또는 (클라이언트(210)로서 동작할 때) 그 미디어를 이미 스트리밍한 하나 이상의 피어가 단순히 그 서빙 피어에게 최초로 스트리밍 되었던 미디어의 모두 또는 일부를 캐슁하도록 한 결과이다. 임의의 경우에서, 설명을 위하여 (피어 리스트(310)에 의해 정의된) 복수의 알려진 피어가 존재하고, 각각의 피어는 스트리밍 되어야 할 인코딩된 미디어의 전부 또는 일부를 보유한다고 가정한다.
일단 클라이언트(210)가 이용가능한 서빙 피어의 리스트(310)를 검색하면, 클라이언트는 각 피어로부터 전술한 이용가능성 벡터를 검색하는 이용가능성 벡터 검색 모듈(320)을 통하여 각 서빙 피어(220)에 접속한다. 그 다음, 각 피어(320)에 대한 이용가능성 벡터에 대한 정보가 주어지면, 클라이언트(210)는 미디어 헤더/미디어 구조 분석 모듈(325)을 이용하여 피어 클러스터(220)로부터 스트리밍되어야할 미디어 헤더 및 미디어 구조에 대한 "미디어 헤더" 및 "미디어 구조"의 길이를 검색한다. 이들 길이가 검색된 이후에, 클라이언트(210)는 미디어 헤더를 분석한 다음, 클라이언트 구성 모듈(330)을 이용하여 스트리밍되고 있는 특정 유형의 미디어(즉, MPEG 1/2/4, WMA, WMV, 등)의 디코딩 및 렌더링 또는 재생에 필요한 오 디오/비디오 디코더 및 렌더링 장치를 구성하거나 초기화한다.
또한, 미디어 헤더/미디어 구조 분석 모듈(325)은 미디어 구조 및 미디어 헤더의 분석으로부터 내장 코딩된 미디어 또는 고속 삭제 내성 코딩중 하나 또는 모두가 스트리밍 되어야 할 미디어를 인코딩하는데 이용되었는지에 대한 판정도 한다.
그 다음 데이터 단위 ID 계산 모듈(335)이 이용되어 미디어 헤더 및 미디어 구조에 포함된 정보에 기초하여 스트리밍 미디어의 패킷에 대한 "데이터 단위 ID"를 계산한다. 그 다음 데이터 단위 요청 모듈(340)은 계산된 데이터 단위 ID를 이용하여 피어 클러스터(220) 내의 다양한 피어로부터 스트리밍 미디어의 데이터 블럭 또는 특정 패킷을 요청한다.
이하 보다 상세히 기술된 바와 같이, 피어스트리머가 내장 코딩된 미디어를 이용하는 경우에, 스트리밍 비트율은 이용가능한 서비스 대역폭 및 클라이언트 큐 상태에 따라 달라진다. 이러한 경우, 데이터 단위 요청 모듈(340)에 의한 미디어 패킷 또는 데이터 단위의 검색에 대한 진행중인 요청은 이용가능한 대역폭에 기초하여 최고 비율 왜곡을 제공할 패킷(또는 데이터 블럭)에 대응한다. 또한, 고속 삭제 내성 코딩이 이용되는 다른 경우에서, 클라이언트는 특정 블럭이 검색되는 곳과 어떠한 특정 블럭이 검색되는지에 관계 없이 삭제 코딩된 블럭의 고정된 수를 단순히 검색하기만하면 되도록 복수의 서빙 피어는 충돌 없이 부분적인 미디어를 보유한다.
임의의 경우에서, 클라이언트(210)는 데이터 단위 프로세싱 모듈(345)을 통 해 미디어의 스트리밍 블럭을 검색하기 때문에, 클라이언트는, 후술될 바와 같이 디코딩될 패킷을 전달하거나, 데이터 단위 프로세싱 모듈이 먼저 데이터 블럭으로부터 미디어 스트림의 패킷을 재구성할 것이다(이하의 고속 삭제 코딩에 기술됨). 또한, 클라이언트(210)는 (서빙 피어를 식별하는 전술된 방법 중 하나를 이용하여) 서빙 피어 리스트(310)를 주기적으로 갱신할 것이다. 리스트(310)가 갱신될 때마다, 또는 몇몇의 소정의 주기로, 클라이언트(210)는 잠재적인 새로운 서빙 피어와 접속하여 전술된 이용가능성 벡터를 검색할 것이다. 그 다음 새로운 피어는 수신자/클라이언트(210)의 지시에 따라, 클러스터(220) 내의 다른 활성화된 피어에 합류할 수 있다.
그 다음 클라이언트(210)는 피어(320)를 조정하고, 자신들의 서비스 대역폭 및 컨텐츠 이용가능성에 따라 피어의 서비스 부하의 균형을 맞추고 하나 이상의 다른 활성화된 피어로의 접속이 끊기거나 시간만료된 피어의 완료되지 않은 요청을 재지정한다. 그 다음 스트리밍 동작은 전체 스트리밍 미디어가 수신되거나 디코딩/렌더링/재생 모듈(350)을 통하여 디코딩되고 렌더링되고 재생될 때까지 이러한 방식으로 계속된다. 디코딩된 미디어의 재생은 디코딩/렌더링/재생 모듈(350)로부터 이 미디어의 입력을 제공한 종래의 디스플레이 장치(355) 및/또는 스피커(360)를 통해 제공됨을 유의한다.
3.0 동작 개요:
피어스트리머를 구현하는 데에 전술된 프로그램 모듈이 채용된다. 상기 요약한 바와 같이, 피어스트리머는 느슨하게 연결된 P2P 네트워크에서의 수신자 구동 형 P2P 미디어 스트리밍을 제공한다. 이하의 섹션은 피어스트리머의 동작, 및 도 2와 관련하여 섹션 2에 기술된 프로그램 모듈을 구현하는 예시적인 방법의 상세한 설명을 제공한다. 상세히는, 이하의 섹션 3.1 및 3.2에서 제공될 피어스트리머 동작의 상세한 설명에 따르면, 동작적 흐름도가, 이 상세한 설명의 관점에서 피어스트리머의 전체 동작을 요약하는 도 10에 도시된다.
3.1 피어스트리머의 동작적 세부사항:
이하는 본 명세서에서 기술한 피어스트리머의 상세한 특정 기능 및 대안적인 실시예를 간략히 서술한다. 상세히 기술하자면, 이하의 단락은 피어스트리머에 의해 사용되는 "스트리밍 미디어 모델", 미디어 패킷 또는 "데이터 단위"를 검색하기 위한 데이터 ID를 계산하는 데에 필요한 스트리밍 미디어의 특징을 정의하는 (기본적으로 "동료 파일") 요청된 스트리밍 미디어의 "미디어 구조", 스트리밍을 위한 미디어 패킷의 고정된 사이즈 영역을 나타내는 피어스트리머 데이터 단위, 저장소 요구량을 줄이기 위한 미디어의 부분적인 캐슁, 본질적으로 신뢰되지 않는 서빙 피어로의 피어스트리머 시스템의 강력함을 향상시키기 위한 미디어의 고속 삭제 코딩을 기술한다.
3.1.1 스트리밍 미디어 모델:
일반적으로, 스트리밍 미디어는 이 미디어가 도착했을때 디코딩되고 렌더링되는 패킷의 스트림으로 구성된다(즉 네임 스트리밍). 스트리밍을 하지 않으면, 전체 미디어는 이용될 수 있기 전에 하나의 큰 청크로 다운로드되어야 한다. 피어스트리머에 의해 이용되는 스트리밍 미디어 파일의 일반적인 구조는 도 4에 도시된 다.
상세히 기술하면, 도 4에 도시된 바와 같이, 미디어는 미디어를 기술하는 전체적인 정보, 예를 들면, 미디어 내의 채널의 수, 각 채널의 속성 및 특징(오디오 샘플링율, 비디오 해상도/프레임율), 사용되는 코덱, 미디어의 저자/저작권 보유자, 등을 포함하는 "미디어 헤더"가 이끈다. 미디어 헤더는 일반적으로 스트리밍 세션을 시작하기 전에 다운로드되어, 클라이언트는 추후에 수신되는 패킷을 디코딩하고 렌더링하는 데에 필요한 도구를 설정할 수 있다. 스트리밍 미디어는 몇가지 채널로 구성될 수 있으며, 이 채널 각각은 독립적으로 선택되거나 디코딩될 수 있는, 분리된 미디어 컴포넌트, 예를 들면, 영어 오디오 트랙, 스페인어 오디오 트랙, 4:3 비디오, 16:9 비디오 등임을 유의한다.
미디어 헤더에는, 각각이 짧은 기간 동안 유지되는 특정 채널의 압축된 비트스트림을 포함하는, 일련의 미디어 패킷이 후속된다. 각각의 미디어 패킷은 패킷 헤더가 이끄는데, 이 패킷 헤더는 채널 인텍스, 패킷의 시작 타입스탬프, 패킷의 기간, 및 복수의 플래그, 예를 들면, 패킷이 키 프레임(MPEG I 프레임)인지 여부, 패킷이 (절단될 수 있는 비트스트림을 갖는) 내장 코딩된 패킷인지 여부, 등과 같은 정보를 포함한다. 그 다음 패킷의 압축된 비트스트림이 뒤따라 온다.
MPEG1/2/4 오디오/비디오, WMA/WMV, RealAudio?/RealVideo? 등과 같은, 대부분의 종래의 압축된 미디어 코덱은 오늘날 비내장 코딩된 미디어 패킷을 생성한다. 결과적으로, 이러한 시스템에 의해 생성된 미디어 패킷의 사이즈는 변할 수 없다. 또한, 이러한 비트스트림 내의 미디어 패킷 중 하나가 상실되거나 과하게 지연되는 경우마다, 미디어가 디코딩될 수 없거나, 재생이 고르지 못하거나 때때로 중단되는 결과에 이르러, 스트리밍 미디어의 재생 품질을 저하시킨다. 이들 종래의 코덱과의 호환성을 유지하기 위하여, 일 실시예에서, 피어스트리머 시스템 및 방법은 미디어 패킷이 비-내장 코딩(확장-불가능)될 수 있도록 한다. 그러나, 통상적인 압축 미디어 포맷을 지원하는 것 이외에도, 피어스트리머는 일 실시예에서 내장 코딩된 미디어도 지원한다.
내장 코딩된 미디어를 이용하면, 각 미디어 패킷은 후에 독립적으로 잘려질 수 있는 방식으로 인코딩된다. 일반적으로, 2가지 유형의 내장 코딩은 피어스트리머, 비트플레인(bitplane) 코딩 및 인헨스먼트(enhancement) 계층 인코딩에 의해 지원된다. 내장 코딩의 2가지 유형 모두 본 기술 분야에서 숙련된 기술을 가진 자에게 잘 알려져 있음을 유의한다. 따라서, 이러한 코딩은 이하의 단락에서 일반적으로만 기술할 것이다.
예를 들면, 비트플레인 코딩을 이용하면, 미디어 블럭의 확장가능한 코딩은 일반적으로, 비트플레인 단위로, 최상위비트(MSB)로부터 최하위비트(LSB)로, 오디오/비디오 변환 계수의 블럭을 코딩함으로써 수행된다. 비트스트림이 인코딩 이후에 잘려지면, 정보는 모든 계수의 최상위 비트플레인 몇몇에 대하여 보유된다. 또한, 잘려진 비트스트림은 낮은 비트율로 압축된 비트스트림에 대응하며, 이 비트스트림은 높은 비트율로 압축된 비트스트림에 내장되는 것즉, 이름 내장 코딩으로 고려된다. 결과적으로, 매우 밀접한 비트-왜곡 상충관계로, 내장된 코더에 의해 생성된 미디어 패킷이 분리될 수 있다.
인헨스먼트 계층 코딩을 이용하면, 미디어 컨텐츠는 기본 계층 및 하나 이상의 인헨스먼트 계층 내로 압축되며, 통상적으로 각각의 계층은 개별 채널을 차지한다. 상세히 기술하자면, 이러한 코딩은 수신될 최소 품질 미디어 스트림이 기본 계층에 가입되도록 한다. 각각의 이어지는 고급 계층을 추가하면, 디코딩된 미디어의 품질이 향상된다. 따라서, 이런 시스템에서, 수신자 또는 클라이언트는 통상적으로 기본 계층 및 이용가능한 대역폭에 따라서 가능한 많은 인헨스먼트 계층에 가입함으로써 수신된 정보의 품질을 최적화한다.
3.1.2 피어스트리머 미디어 구조:
수신자 구동형 모드에서 동작하기 위하여, 피어스트리머 클라이언트는 각 피어로부터 어떤 패킷이 요청되는지 및 각 패킷의 어떤 부분인지를 알 수 있도록 요청되어야 할 미디어 패킷의 구조를 알 필요가 있다. 이 정보는 요청될 스트리밍 미디어의 구조의 정의를 포함하는 한 유형의 "동료 파일"에서 제공된다. 일반적으로, 이 미디어 구조는 피어스트리머 클라이언트에게 (예를 들면, 각 패킷의 시작 타임스탬프, 각 패킷의 기간 등과 같은) 전체 미디어의 새의 눈 시각을 제공하여 P2P 스트리밍 세션을 지능적으로 계획하고, 특정 미디어 패킷이 디코딩 및 렌더링할 시간 내에 도착하는 것을 보장할 수 있다. 미디어 구조 정보를 포함하는 동료 파일은 미디어 파일이 본래 인코딩되었던 시간에 최초로 생성되고 그 다음 미디어 헤더의 최초 요청과 함께 각 스트리밍 세션의 첫 부분에서 요청할 때 클라이언트에게 스트리밍된다. 동료 파일 내의 정보는 미디어가 통상의 코덱에 의해 인코딩된 이후에 미디어 헤더 및 패킷 헤더 정보를 분석함으로써 생성될 수도 있다.
상세히 기술하자면, 패킷의 집합의 미디어 구조는 패킷 헤더와 패킷 비트스트림 길이의 합으로 구성된다. 따라서, 이 정보는 클라이언트에 의해, 요청되어야 할 특정 패킷, 이들 패킷이 요청되어야 할 시간, 및 요청되어야 할 이들 패의 출처인 피어를 결정하는 데에 이용될 수 있다. 결과적으로, 피어스트리머는 먼저 스트리밍 "구축" 단계에서 전체 미디어의 미디어 구조를 검색한다. 미디어를 실제로 스트리밍하기 전에 이 정보를 검색하는 것은 스트리밍의 개시를 약간 지연시킨다. 그러나, 미디어를 스트리밍하기 이전에 이 정보를 먼저 검색함으로써, 미디어 구조 정보를 클라이언트에 서비스하기 위한 (미디어를 스트리밍하는 중에) 대역폭면에서의 어떠한 추가적인 비용도 존재하지 않는다.
전술된 스트리밍의 개시에 있어서의 지연은 통상적으로 스트리밍 미디어의 전체 길이에 비하여 매우 작음을 유의한다. 예를 들면, 피어스트리머의 테스트된 실시예에서, 사이즈 범위가 31 MB 내지 49 MB 까지인 5개의 테스트 무비 클립은 범위가 약 37 KB 내지 약 53 KB 까지인 미디어 구조 동료 파일을 가졌었다. 따라서, 미디어 구조 사이즈는 전체 미디어 본문의 대략 0.10-0.15%와 유사한 것으로 관측될 수 있다. 그러므로, 서비스 대역폭이 미디어 비트율보다 크거나 같고, 미디어 구조는 미디어 본문의 0,15%라고 가정하면, 10분인 클립의 미디어 구조를 다운로드하는 것은 0.9초보다 작은 추가적인 지연을 일으킨다.
관련된 실시예에서, 몇몇의 소정의 길이(즉, 10초, 30초, 1분, 등)의 일련의 미디어 세그먼트에 대한 부분적인 미디어 구조가 생성된다. 그 다음 각각의 부분적인 미디어 구조는 대응하는 미디어 세그먼트가 가까운 미래에 스트리밍되기 전에 만 검색된다. 이는 미디어 구조 요청 및 전송이 미디어 패킷 요청 및 전송과 함께 존재할 수 있기 때문에 대역폭 요구량을 소폭으로 증가시킨다. 그러나, 이 경우 미디어 구조의 사이즈가 매우 작기 때문에, 전체 대역폭 요구량에 미치는 효과는 통상적으로 미약하다.
3.1.3 피어스트리머 데이터 단위:
일 실시예에서, 피어스트리머는 미디어 패킷, 미디어 헤더 및 미디어 구조를 길이 L의 고정된 사이즈 데이터 단위들로 쪼갠다. 고정된 데이터 단위를 사용하는 이유는 피어스트리머 클라이언트 및 서빙 피어가 그러면 사이즈 L의 메모리 블럭으로 미리 할당할 수 있으므로, 스트리밍 프로세스 중에 비용이 큰 메모리 할당 연산을 방지할 수 있다는 것이다. 또한, (잠재적으로 매우 큰) 미디어 패킷을 작은 고정된 사이즈 데이터 단위들로 분할하는 것은 또한 피어스트리머 클라이언트가 작은 낱알로 피어들에게 서비스 부하를 분산시키도록 하여, 피어들간의 더 좋은 대역폭 부하 균형 맞춤을 수행한다.
일반적으로, (미디어 패킷, 미디어 헤더, 또는 미디어 구조일 수 있는) 길이 P 패킷을 사이즈 L인 블럭들로 분할하는 것은 각 패킷을 「P/L」 데이터 단위들로 분할함으로써 수행되며, 여기서 「x」는 x보다 크거나 같은 가장 작은 정수를 반환하는 통상적인 실링(ceiling) 함수이다. 그 다음 길이가 P mod L 인, 각각의 패킷의 잠재적인 마지막 데이터 단위를 제외하고, 모든 데이터 단위는 고정된 길이 L을 갖는다.
미디어의 비-내장 코딩이 이용되는 경우에서, 각 미디어 패킷을 포함하는 데 이터 단위는 미디어 재생 품질의 손실 없이 네트워크 전송 중에 버려질 수 없다. 그러므로 이들 데이터 패킷은 모두 수신되어야 하므로 "필수적인 데이터 단위"로서 지정된다.
이와 다르게, 내장 코딩된 미디어 패킷이 데이터 단위들로 분할될 때, 오직 기본 계층 데이터 단위만이 전달되어야 하며, 나머지 데이터 단위는 서비스 대역폭이 충분하지 않은 경우에 선택적으로 버려질 수 있다. 이들 선택적인 데이터 단위는 "필수적이지-않은 데이터 단위"로서 지정된다. 필수적이지-않은 데이터 단위의 서비스를 위해 요구되는 대역폭은 아래와 같이 계산될 수 있다. 예를 들면, 내장 코딩의 경우, 미디어 패킷은 마지막 T초일 것이다. 미디어 패킷이 복수의 데이터 단위들로 분할된다고 가정하면, 계층 i에서의 데이터 단위를 클라이언트에게 서비스하기 위하여, 계층 i 아래의 모든 데이터 단위 또한 클라이언트에게 서비스되어야 한다. 결과적으로, 계층 i에서의 데이터 단위를 서비스하는 데에 필요한 서비스 대역폭은:
Figure 112005043361769-pat00001
이다.
그러므로, 수학식 1은 내장 코딩된 미디어에 관련할 때 데이터 단위의 비트율 R을 제공한다. 그 다음 피어스트리머 클라이언트는 이용가능한 서비스 대역폭보다 큰 비트율을 산출하도록 필수적이지-않은 데이터 단위를 버림으로써 가변적인 서비스 대역폭을 조절한다.
미디어가 비-내장 코딩되는 경우 또는 내장 코딩되는 경우 중 한 경우에서, 미디어 패킷, 미디어 헤더 및 미디어 구조의 데이터 단위를 포함하는 특정 미디어 스트림의 모든 데이터 단위는 유한 ID 공간으로 매핑된다. 예를 들면, 테스트된 실시예에서, 미디어 패킷의 데이터 단위는 (16진의) 0x00000000 내지 0xfdffffff로부터, 미디어 헤더의 데이터 단위는 0xfe000000 내지 0xfeffffff로부터, 미디어 구조의 데이터 단위는 0xff000000 내지 0xffffffff로부터 인덱싱되었다. 이 테스트된 실시예에서 이용된 데이터 단위는 도 5에 도시된 피어스트리머의 것이다.
미디어 헤더 및 미디어 구조의 데이터 단위 ID를 얻기 위하여, 먼저 미디어 헤더 및 미디어 구조의 길이가 필요함을 유의한다. 이들을 이들의 "메가-구조"라 칭한다. 미디어 패킷의 데이터 단위 ID를 얻기 위하여, 미디어 패킷 비트스트림의 길이가 필요하다. 이 정보는 미디어 구조에 포함된다.
3.1.4 미디어의 부분적인 캐슁
서비스하기 위해, 각 서빙 피어는 자신의 서비스 대역폭에 비례하는 미디어의 일부를 보유하는 것만이 필요하다. 종종, 인터넷에 접속된 대부분의 컴퓨터의 서비스(또는 업로드 대역폭)는 (각 특정 노드가 수신할 수 있는 가장 높은 스트리밍 비트율을 나타내는) 이 컴퓨터의 다운로드 대역폭보다 훨씬 작다. 결과적으로, 인터넷 상의 각 말단-사용자 노드는 자신의 업로드 대역폭과 자신의 다운로드 대역폭 간의 불균형을 갖는 것을 의도한다. 예를 들면, 가정 사용자가 이용할 수 있는 통상적인 상업적 ADSL/케이블 모뎀 네트워크 상의 노드가 주어지면, 다운로드 대역폭이 이 노드의 업로드 대역폭보다 높은 등급의 값이되는 것은 드문 일이 아니다. 마찬가지로, 캠퍼스/회사 네트워크 상의 노드들은 통상적으로 서비스 대역폭의 상한을 정하여 P2P 유형 활동에서의 임의의 소정의 노드의 참여가 다른 임무가-중요한 기능들에 영향을 미치지 않을 것이다.
결과적으로, 각 서빙 피어는 통상적으로 클라이언트에게 개별적으로 전체 미디어 스트림을 서비스할 수 없기 때문에, 전체 미디어 스트림을 임의의 한 서빙 피어에 캐슁할 필요는 없다. 그러므로, 임의의 서빙 피어가 요구하는 저장 자원의 양을 줄이는 효과적인 방식은 각 서빙 피어가 스트림되어야 할 미디어의 일부만을 보유하도록 하는 것이다. 예를 들면, 비내장 코딩된 미디어를 스트리밍하는 데에 필요한 비트율이 R이고, 스트리밍 세션에서의 피어에 의해 제공된 최대 서비스 대역폭이 B라면, 각 피어 노드는 자신의 캐쉬에 스트리밍 미디어의 p 부분만 저장하는 것만을 필요로 하여, 이 p 값은 수학식 2로 나타난다.
Figure 112005043361769-pat00002
예를 들면, 미디어 비트율이 서비스 대역폭의 2배, 즉, R = 2B 라고 가정한다. 그러면 서빙 피어는 혼자서 전체 스트리밍 비트율로 클라이언트를 서비스할 수 없기 때문에 이 피어는 자신의 저장소에 스트리밍 미디어의 반만을 저장할 것만 필요로 한다. 실제로, 전술한 이 예의 소정의 제약 사항에서, 피어가 할 수 있는 최대의 것은 기껏해야 미디어의 반을 공급하는 것이다. 결과적으로, 피어는 자신 의 캐쉬에 미디어의 반을 저장하는 것만이 필요하다. 그 다음 스트리밍되어야 할 미디어의 나머지 부분은 다른 서빙 피어에 의해 제공될 수 있다.
또한, 수학식 1 및 수학식 2의 조합은 내장 코딩된 미디어가 이용되는 경우를 위해 저장될 미디어의 양을 결정할 수 있도록 한다는 것을 유의해야 한다. 섹션 3.1.3에서 앞서 기술한 바와 같이, 내장 코딩된 미디어의 미디어 패킷은 서로 다른 비트율을 갖는 복수의 데이터 단위로 분할된다. 그러므로, 특정 계층 L에 대한 데이터 단위의 비트율을 R로 하면, 수학식 2는 이제 그 데이터 단위로 보유되는 미디어의 일부를 제공한다. 예를 들면, 도 6에 도시된 바와 같이, 내장된 미디어 패킷은 복수의 데이터 단위(이 예에서는 8개)로 분할될 수 있다. 도 6에 도시된 바와 같이, 그 다음 각 데이터 단위에 대하여 (L/T = 0.5B로) 캐슁되어야 할 필요가 있는 미디어의 양은 수학식 2에 따라 결정되는 것으로 도시된다.
그러나, 일 실시예에서, 특정 서빙 피어의 저장 자원이 충분히 클 경우, 서빙 피어는 단순히, 도 2에서 높은 "잠재적인 서비스 대역폭", B'를 이용함으로써 미디어의 더 큰 부분을 캐슁하는 것으로 할 수 있다. 그 다음 캐슁된 미디어의 나머지 부분은 미디어가 변동적이지만, 고품질인 방식으로 서비스될 수 있도록 한다. 예를 들면, 각 서빙 피어는 자신의 실제 서비스 대역폭의 2배인 잠재적인 서비스 대역폭, 즉, B’ = 2B를 이용하기로 한 것으로 가정하면, P2P 네트워크 내의 미디어양의 결과는 클라이언트가 그 스트리밍 비율의 절반으로 미디어를 검색하는 것이 충분할 것이다. 다시 말하면, 모든 이용가능한 피어의 통합된 서비스 대역폭이 R/2보다 크다고 가정하면, 클라이언트는 처음에는 미디어의 절반을 다운로드하고, 그 다음 계속하여 나머지 반을 스트리밍하고 재생할 수 있어야 한다. 마찬가지로, 클라이언트는 시간 Ts로 미디어의 Ts/2 세그먼트를 다운로드 하고, 계속해서 다른 Ts/2 세그먼트를 스트리밍하고 재생하고, 그 다음 다른 세그먼트를 다운로드하고 스트리밍하기로 할 수도 있다. 그러므로 스트리밍 미디어는 변동적인 방식이지만 비율 R로 재생될 수 있다.
3.1.5 미디어의 고속 삭제 코딩
상술한 바와 같이, 피어는 본질적으로 신뢰되지 않을 수 있다. 따라서, 피어스트리머 시스템 및 방법에 증가되는 중복을 제공하는 몇몇의 수단을 제공하여 서빙 피어의 본질적으로 신뢰될 수 없는 서비스 행위를 효과적으로 처리하는 것이 바람직하다. 이러한 이슈를 다루면 해결되어야 할 복수의 문제가 생긴다. 예를 들면, 미디어의 부분 p가 각 피어에 의해 저장되어야 하는지에 대한 판정이 문제가 될 수 있다. 또한, 미디어가 최종적으로 전술한 데이터 단위로 분할되기 때문에, 각 피어가 데이터 단위의 p 부분을 보유해야 하는지에 대한 판정 또한 문제가 될 수 있다.
이들 이슈를 해결하는 한 전략은 각 데이터 단위를 k 블럭으로 단순히 나누는 것이다. 그 다음 미디어의 p 부분을 저장하는 피어는 전술한 실링 함수인 「x」를 이용한, 「k·p」 블럭을 무작위로 보유할 수 있다. 그러나, 이 스킴의 무작위성에 의한 한 문제점은 피어 클러스터에서 이용가능한 k 블럭보다 많은 블럭이 존재하는 경우에도 클러스터는 전체적으로 특정 블럭 j를 빠뜨릴 수 있을 가능성이 있으므로, 전체 데이터 단위를 검색할 수 없도록 한다는 점이다. 또한, 이러한 스킴에서, 클라이언트는 피어로부터 각각의 및 매번의 개별적인 블럭을 찾아내어야 하는 역할도 담당하여, 클라이언트와 피어 간의 프로토콜의 설계를 복잡하게 한다.
따라서, 보다 나은 전략은 "고속 삭제 내성 코드"를 이용하여 하나 이상의 피어가 특정 데이터 단위를 재구성하는 데에 필요한 데이터 블럭을 갖는 반면 필요한 데이터를 포함하는 피어가 무엇인지 식별하려는 클라이언트 측의 요구를 단순하게 하는 것을 보장한다. 일반적으로, 삭제 내성 코드는 파라미터(n, k)를 갖는 블럭 에러 정정 코드인데, 여기서 k는 본래의 메세지 개수이고, n는 코딩된 메세지 개수이다. 고속 삭제 내성 코드는 n이 k보다 훨씬 크다는 성질을 만족시키므로, k개의 본래의 메세지는 n개의 메세지의 훨씬 큰 코딩된 메세지 공간으로 확장된다. 삭제 코딩 기법은 일반적으로 데이터 코딩에 매우 잘 알려져 있지만, 본 명세서에서 기술한 바와 같이, P2P 네트워크 환경에서 미디어를 스트리밍하는 이러한 기법의 적용은 알려져 있지 않다.
블럭 에러 정정 코드와 같은, 고속 삭제 내성 코드의 동작은 유한체(Galois Field) GP(p) 상의 행렬 곱을 통해 기술될 수 있다.
Figure 112010050435709-pat00025
여기서 p는 유한체의 순서이고, {x0, x1, …, xk -1}은 본래의 메세지이고, {c0, c1, …, cn -1}은 코딩된 메세지이며, G는 생성자 행렬이다. 수학식 3은 한번에 모든 코딩된 메세지를 생성하는 데에 이용되지 않음을 유의한다. 대신에, 생성자 행렬 G는 코딩된 메세지 공간을 정의한다. 따라서, 클라이언트가 k개의 코딩된 메세지 {c’0, c’1, …, c’k-1}을 수신할 때, 이 메세지들은 수학식 4로 나타날 수 있다.
Figure 112010050435709-pat00026
여기서 Gk는 코딩된 메세지에 대응하는 생성자 행렬 G의 k개의 행에 의해 형성된 부-생성자 행렬이다. 또한, 부-생성자 행렬 Gk가 총 순위 k를 갖는다면, 행렬 Gk는 역행렬로 연산될 수 있어서 본래의 메세지가 디코딩될 수 있다.
예를 들어, 리드-솔로몬(Reed-Solomon) 삭제 코드, 토네이도(tornado) 코드, 및 LPDC 코드를 포함하는 몇몇의 잘 알려진 삭제 코딩 기법이 이용될 수 있다. 그러나, 일 실시예에서, 피어스트리머는 유한체 GF(216) 상의 수정된 리드-솔로몬 코드에 기초하여 새로운 고속 삭제 내성 코드를 제공한다. 이 예에서, 본래 메세지 k의 개수는 16이다. 코딩된 메세지 공간의 사이즈 n은 216 = 65536이다. 리드-솔로몬 코드는 최대 거리 분리가능(MDS) 코드이다. 따라서, 생성자 행렬 G의 임의의 16행은 총 랭크 16을 갖는 부-생성자 행렬을 형성한다. 다시 말하면, 본래 메세지는 임의의 16개의 코딩된 메세지로부터 복원될 수 있다. 다른 필드 사이즈, p 또한 이용될 수 있고, 피어스트리머는 본 명세서에서 기술한 특정 필드 사이즈만을 이용한다고 제한되지 않음을 유의해야 한다. 또한, MDS 삭제 코딩을 이용하지 않는 실시예에서는, 사용된 특정 삭제 코딩에 따라, 본래의 메세지를 복원하기 위해 k 블럭보다 크거나 같은 k' 블럭을 검색하는 것이 필요할 수 있다. 리드-솔로몬 기반 삭제 코드는 MDS 코드이기 때문에, 부분적으로 이용되었을 수 있고, 이 코드는 효과적으로 인코딩되고 디코딩될 수 있는 반면 대부분의 통상적인 컴퓨터의 CPU에 작은 계산적인 오버해드만을 갖는다.
고속(n, k) 삭제 내성 코드에서, 각 피어 노드는 n의 코딩된 메세지 공간에 할당된 k 키이며, 각 키는 생성자 행렬 G의 행 인덱스이다. 키 할당은 서버에 의해 수행될 수 있다. 또한, 미디어를 캐슁하는 피어의 개수가 n/k보다 작다면, 각 피어에 고유한 키 집합을 할당하는 것이 가능하다. 결과적으로, 각 피어는 개별적으로 코딩된 메세지를 보유함을 보장할 수 있다. 이 전략은 여러가지 이득을 제공하지만, (서버와 같은) 중앙집중식 배치 노드 또한 요구한다.
결과적으로, 다른 실시예에서, 중앙집중식 배치 노드의 역할은 각 피어가 k개의 무작위 키를 선택하도록 함으로써 제거된다. 피어 노드의 개수가 n/k보다 크고 키가 중앙집중식 배치 노드 없이 할당될 경우, 특정 피어 노드는 동일한 키를 보유할 수 있다. 그럼에도 불구하고, 클라이언트가 m개의 피어에 접속된 세션을 스트리밍 하는 대부분의 미디어에서, m은 보통 n/k보다 매우 작다. 그러므로, 2개의 서빙 피어가 동일한 키를 보유하여 그 피어 중 한 키가 소용없게 될 확률은 매우 작다. 그러나, 충돌하는 키가 있더라도, 클라이언트가 피어에 첫번째로 접속되어 있다면 이러한 충돌을 쉽게 식별할 수 있다. 이러한 충돌이 식별되는 경우에서, 클라이언트는 단순히 스트리밍 세션의 여분을 위해 중복된 키 중 하나를 무효화 한다. 따라서, 클라이언트는 실제로 스트리밍 프로세스 중에 키 충돌을 해결할 필요가 없다.
예를 들면, S1 및 S2가 각각 서빙 피어 1 및 서빙 피어 2의 삭제 코딩된 키 공간이며, S1 = { 1, 7, 23, 43, 48 } 및 S2 = { 3, 7, 28, 49, 99 }라 가정한다. 명백하게, 키 공간 S1 및 S2는 다르다. 그러나, 키 7이 이 2개의 키 공간에 의해 공유되므로, 서빙 피어 1 및 서빙 피어 2는 동일한 키, 즉, 키 "7"을 공유하는 삭 제 코딩된 블럭을 보유할 수 있다. 그러므로, 특정 코딩된 블럭을 요청하기 이전에, 키 "7"은 서빙 피어들 중 하나에 관련하여 무효화되어 키 "7"에 의해 코딩된 블럭은 오직 하나의 피어로부터 검색되므로, 중복된 키에 의해 발생되는 임의의 디코딩 충돌을 방지할 수 있다. 그러나, 하나의 서빙 피어가 미디어 스트리밍 동작 중에 오프라인이 되는 경우, 이 오프라인된 서빙 피어가 하나 이상의 중복된 키를 이용한 결과로서 이전에 충돌했던 곳인 다른 서빙 피어의 특정한 무효화된 코딩 키는 다시 유효화될 수 있음을 유의한다.
(65536, 16) 리드-솔로몬 코드에서, 각 데이터 단위는 16개의 블럭으로 분해된다. 미리-할당된 키의 집합을 이용하여, 피어는 「16p」 삭제 인코딩된 블럭을 캐슁하는 것을 선택하고, 여기서 p는 수학식 1 및 2로부터 계산된 파라미터이다. 클라이언트가 전술한 피어 이용가능성 벡터에 의해 제공되는 정보를 이용함으로써 피어에 의해 (데이터 단위/블럭 ID로) 얼마나 많은 삭제 코딩된 블럭이 및 어떤 삭제 코딩된 블럭이 보유되는지를 결정하도록, 피어에 할당된 키, 및 그 최대 서비스 대역폭 B는 피어의 이용가능성 벡터를 구성한다. 또한, 클라이언트는 각 피어가 최초로 접속된 시간에서의 임의의 키 충돌을 해결한다. 그 다음, 스트리밍 세션 중에, 클라이언트는 임의의 서빙 피어 노드로부터 임의의 k개의 코딩된 메세지를 검색하고, 관련 데이터 단위를 디코딩할 수 있다.
또한, 임의의 하나의 서빙 피어 상의 특정 데이터 단위를 디코딩하기 위해 코딩된 블럭의 전체 집합을 저장하는 것은 필요하지 않다. 다시 말하면, 임의의 특정 데이터 단위에 대해 임의의 특정 서빙 피어가 보유하는 블럭의 개수는 k개 보 다 작을 수 있다. 그러므로, 모든 코딩 키를 위하여 모든 코딩된 블럭을 계산하여 계산력을 낭비하는 것 보다는, 일 실시예에서, 특정 피어에 실제로 전달되고 있는 코딩된 블럭들만 생성된다. 다시 말하면, k보다 작은 j개의 블럭이 특정 서빙 피어 상에 저장되는 경우, 특정 데이터 단위를 위하여 j 블럭만이 생성되어야 한다.
3.2 P2P 네트워크에서의 피어스트리머 동작의 구현:
이하의 단락에서는 피어스트리머의 동작적인 상세하게 전술한 설명의 관점으로 피어스트리머 동작의 구현이 기술된다. 상세히 기술하면, 이하의 단락은 클라이언트에 의한 서빙 피어의 위치 추적, 검색된 미디어 구조에 기초하는 클라이언트 디코딩 및 렌더링 구축, 피어스트리머 네트워크 접속, 스트리밍 비트율 제어, 피어스트리머 클라이언트 요청 및 피어 응답, 및 마지막으로 피어 스트리머 요청 및 스테이징 큐를 기술한다.
3.2.1 서빙 피어의 위치 추적
상술한 바와 같이, 클라이언트에 의해 수행된 제1 태스크는 서비스되는 미디어의 완전한 사본 혹은 부분적인 사본을 보유하는 이웃 서빙 피어의 리스트의 IP 주소 및 청취 포트를 획득하는 것이다. 또한, 이 리스트는 미디어 스트리밍 세션 중에 갱신될 수도 있다. 상술한 바와 같이, 이 리스트를 획득하는 일반적인 접근법은 1) 서비스로부터 리스트를 검색하는 단계, 2) 알려진 서빙 피어로부터 리스트를 검색하는 단계, 및 3) 미디어 서버와 서빙 피어 모두가 이전에 알려지지 않았을 경우 서빙 피어를 식별하는 분산형 해쉬 테이블(DHT) 접근법을 이용하는 단계를 포함한다.
3.2.2 디코딩 및 렌더링 구축:
서빙 피어 리스트를 보안(secure)을 갖춘 이후에, 클라이언트는 서빙 피어 각각에 접속하기를 시도한다. 일단 접속되면, 상술한 바와 같이, 클라이언트는 각 피어의 이용가능성 벡터를 검색하고, 임의의 키 충돌을 해결한다. 그 다음, 클라이언트는 피어들 중 하나로부터 미디어 헤더 및 미디어 구조의 길이를 검색한다. 두 길이가 모두 검색된 후에, 미디어 헤더 및 미디어 구조의 데이터 단위의 ID가 형성된다. 그 다음 미디어 헤더 및 미디어 구조는 섹션 3.2.6에서 보다 상세히 기술될 P2P 방식으로 검색될 수 있다. 일단 미디어 헤더가 검색되면, 클라이언트는 어떤 디코더와 렌더링기가 클라이언트에게 스트리밍될 미디어를 디코딩하고 렌더링하기 위해 초기화되어야 할지를 결정한다.
DirectX™를 이용하여 구현된 테스트된 실시예에서, 이 구축은 먼저 미디어 헤더에서 제공된 정보로부터 DirectShow™ 필터 그래프를 형성함으로써 수행되었다. 본 명세서에서 기술된 피어스트리머는 DirectX™ 기능을 이용하는 구현으로 제한되지 않고, DirectX™의 이용 및 테스트된 실시예에 관련된 이 이용의 설명은 클라이언트 컴퓨터가 클라이언트 재생을 위하여 스트리밍 미디어를 디코딩하고 렌더링하는 것에 관한 구축을 기술하기 위한 목적으로만 제공됨을 유의한다.
그러므로, 클라이언트 구축을 위한 DirectX™ 구현을 가정하면, 클라이언트의 네트워크 컴포넌트는 DirectShow™ 네트워크 소스 필터에 의해 나타나고, 이 필터의 출력은 적절한 오디오/비디오 디코더 DirectX™ 미디어 객체(DMO)로 피드(feed)된다. 그 다음 이 DMO는 적절한 오디오/비디오 렌더링 장치로 더 접속된다. 예를 들면, 클라이언트 피어스트리머 미디어 스트리밍 세션의 샘플 DirectShow™ 필터 그래프는 도 7에 도시된다. 이 예에서, 스트리밍된 미디어는 비내장 코딩된다. 오디오 비트스트림은 WMA로 압축되고, 비디오 스트림은 MPEG-4로 압축된다.
DirectShow™ 프레임워크를 통한 피어스트리머 클라이언트 구축의 구현을 이용하는 것에 대한 한가지 이점은 DirectShow™ 하에 개발된 기존의 오디오/비디오 인코더/디코더의 거대한 라이브러리를 이용할 수 있다는 점이다. 예를 들면, DirectShow™에서, 피어스트리머 클라이언트는, 예를 들면, MPEG 1/2/4, WMA/WMV, 인디오 비디오(Indeo Video) 등을 포함하는 다양한 코덱, 또는 DirectShow™ 디코더 DMO 컴포넌트를 갖는 임의의 다른 코덱에 의해 코딩된 미디어를 디코딩하고 렌더링할 수 있다. DirectShow™ 또한 해상도/색 공간 변환 및 비비월(deinterlacing)과 같은 추가적인 오디오/비디오 프로세싱 모듈 또한 제공하여, 디코딩된 오디오/비디오는 클라이언트의 오디오/비디오 렌더링 장치의 기능에 자동적으로 일치될 수 있다.
또한, DirectShow™는 자동적으로 오디오/비디오 추적의 동기화를 처리할 수 있다. 예를 들면, 오디오 스트림이 전체 스트림의 기준 클럭을 보유하는 경우, 스트리밍 비디오를 재생할 때, DirectShow™는 비디오 스트림의 시스템 타이밍 클럭이 립 싱크(lip sync)와 같은 이슈를 해결하기 위하여 오디오 스트림의 클럭에 가능한 근접하게 위치할 것을 보장한다. 마지막으로, DirectShow 애플리케이션은 본질적으로 멀티스레드(multithread)된다. 결과적으로, 멀티프로세스 PC (또는 하이퍼-스레딩(Hyper-Threading)이 활정화 PC) 상에서, 클라이언트의 다양한 컴포넌트, 예를 들면, 네트워크 컴포넌트, 오디오 디코더, 비디오 디코더, 및 오디오/비디오 렌더링 엔진 등의 계산적인 부하는 복수의 프로세서에 분산될 수 있다. 이는 클라이언트의 실행 속도를 매우 높이고 보다 복잡한 오디오/비디오 디코더가 사용될 수 있도록 한다.
마지막으로, 본 명세서에서 기술된 피어스트리머는 DirectX™ 기능을 이용하는 구현으로 제한되지 않고, DirectX™의 이용 및 테스트된 실시예에 관련된 이 이용의 설명은 클라이언트 컴퓨터가 클라이언트 재생을 위하여 스트리밍 미디어를 디코딩하고 렌더링하는 것에 관한 구축을 기술하기 위한 목적으로만 제공됨을 유의한다.
3.2.3 피어스트리머 네트워크 링크 및 패킷 손실 관리:
예를 들면, 윈도우즈? 미디어 플레이어 또는 리얼플레이어?와 같은 대부분의 미디어 스트리밍 클라이언트는 UDP의 최상부에 전송되는 잘 알려진 실시간 전송 프로토콜(RTP)을 이용한다. 1) UDP 프로토콜은 IP 멀티캐스트를 지원하여, IP 멀티캐스트가 활성화된 네트워크 상의 노드의 집합으로 미디어를 송신할 때 효과적일 수 있고, 2) UDP 프로토콜은 임의의 재전송 또는 데이터율 관리 기능을 가지지 않으므로 통상적으로 미디어 스트리밍 애플리케이션을 위하여 UDP/RTP 프로토콜이 선택된다. 따라서, 스트리밍 서버 및 클라이언트는 확장된 패킷 전송 기능, 예를 들면, 순방향 오류 정정(FEC)을 구현하여 미디어 패킷의 전달을 적시에 하는 것을 보장할 수 있다.
그러나, 상술한 잘 알려진 미디어 스트리밍 스킴과는 다르게, 피어스트리머는 클라이언트와 서빙 피어 간의 네트워크 링크로서 TCP 접속을 이용한다. 통상적인 UDP/RTP 프로토콜 보다는 TCP 접속을 선택한 한 가지 이유는 IP 멀티캐스트가 내부-도메인 라우팅 프로토콜, ISP 기업 모델 (과금 모델(charging model)), 분산 트리에 따른 정체 제어 등과 같은 이슈 때문에 실제 생활에서 널리 배포되지 않기 때문이다.
또한, 복수의 상업적 미디어 플레이어와 마찬가지로, 피어스트리머 클라이언트는 (테스트된 실시예에서는 4초인) 스트리밍 미디어 버퍼를 포함하여 지터 또는 정체와 같은 네트워크 변동 사항에 대처한다. 실제로, 스트리밍 미디어 버퍼가 클라이언트와 서빙 피어 간의 왕복 소요 시간(round trip time: RTT) 보다 몇배 크다고 주어졌을 때, 스트리밍 미디어의 평활한 재생을 제공하기에 충분한 시간으로 미디어 패킷을 전달하는 TCP ARQ(automated repeated request) 메카니즘이 매우 적절하다.
일반적으로, 미디어 패킷 손실을 해결하기 위해 (잘 알려진 변형물이 매우 많은) 3개의 잘 알려진 메카니즘이 존재한다. 예를 들면, 이들 메카니즘은 일반적으로 FEC, 선택적인 패킷 재전송, 및 ARQ를 포함한다. 임의의 이들 패킷 손실 메카니즘은 피어스트리머에 의해 이용될 수 있다. 그러나, 후술될 바와 같이, 다른 것들 보다는 특정 메카니즘을 이용하는 것이 바람직하다.
상세히 기술하면, 특징이 변경되는 삭제 채널 및 알려지지 않는 패킷 손실율이 고려될 수 있는 인터넷 채널에서, 고정된 FEC 스킴은 (너무 많이 보호되면) 대 역폭을 낭비하거나 (너무 적게 보호되면) 손실된 패킷을 복구하는 것을 실패한다. 그러므로 이 스킴은 클라이언트와 피어 간의 대역폭 자원을 효과적으로 이용하지 않는다. 따라서, RTT보다 몇배 큰 버퍼를 스트리밍하고, 따라서 복수의 재전송 기회가 생긴다면, (선택적인 재전송 및 ARQ와 같은) 재전송 기반 에러 보호는 FEC 보다 바람직하다.
ARQ 및 선택적인 재전송을 고려하면, TCP 프로토콜을 이용하는 인터넷 채널에서 선택적인 재전송은 다수의 패킷이 재전송된다고 선택되지 않은 경우에만 ARQ 보다 유리함을 가질 것임을 알 수 있다. 비내장 코딩된 미디어에서, 손실된 패킷은 일반적으로, 특정 패킷을 디코딩하고 재생을 제공하는 것에 대한 실패를 포함하는 심각한 재생 저하를 일으킨다. 그러므로, 손실된 패킷은 거의 항상 재전송된다. 이와는 다르게, 내장 코딩된 미디어에서, 손실된 패킷은 미디어가 재생되는 것을 막지 않을 수 있다. 그러나, 무작위 패킷의 손실은 복수의 파생된 패킷이 이용가능할 수 없도록 하기도 한다. 결과적으로, 가장 상부의 인헨스먼트 계층 패킷만이 재전송되도록 선택되지 않을 수 있다.
선택적인 재전송에 비하여, ARQ는 일단 패킷이 요청되면 패킷이 가장 상위 인헨스먼트 계층에 속하더라도 패킷을 항상 재전송한다. 그럼에도 불구하고, ARQ 스킴은 다음의 미디어 패킷의 최상위 인헨스먼트 계층 패킷을 요청하는 것으로 선택하지 않을 수 있어, 선택적인 전송 스킴과 동일한 대역폭 이용 및 인식된 미디어 재생 품질을 성취할 수 있다. 따라서, 네트워크 상태가 매우 빠르게 변하지만 않으면, TCP 프로토콜에 의해 채용된 ARQ 메카니즘은 미디어 스트리밍에 있어서의 패 킷 손실을 처리하기에 충분하다.
TCP를 네트워크 프로토콜로 이용하는 것은 또한 상술한 바와 같이 통상적인 미디어 스트리밍 스킴보다 나은 몇몇의 추가적인 이점을 제공한다. 예를 들면, TCP에서, 흐름 제어(flow control), 처리량 추정, 정체 제어 및 방지, 활성화 유지 등을 명시적으로 처리할 필요가 없다. 모든 이들 이슈는 TCP 프로토콜에 의해 자동적으로 처리된다. TCP 프로토콜은 또한 오프라인이 되는 피어를 탐지하고, 피어와 클라이언트 간의 접속 링크의 종료를 매우 잘 처리할 수 있다.
3.2.4 내장 코딩을 이용한 피어스트리머 스트리밍 비트율 제어:
비내장 코딩된 미디어는 클라이언트에서의 미디어 재생의 저하를 방지하기 위해 미디어의 비트율로 항상 스트리밍되는 것이 바람직하다. 그러나, 내장 코딩된 미디어의 스트리밍 비트율은 스트리밍 세션 중에 변할 수 있다.
그러므로, 일 실시예에서, 각 내장 코딩된 미디어 패킷에 대한 스트리밍 비트율 Rrecv은 먼저, 다음과 같이 수학식 5, 6, 및 7에 의해 계산된다.
Figure 112005043361769-pat00005
Figure 112005043361769-pat00006
Figure 112005043361769-pat00007
여기서 Th는 복수의 서빙 피어의 통합된 서비스 대역폭이고, Tstaging은 (테스트된 실시예에서는 2.5초가 디폴트인) 타겟 스테이징 버퍼 사이즈이고, Trft는 (테스트된 실시예에서는 1.0초가 디폴트인) 소정의 요청 완료 시간이고, Bstaging는 스테이징 큐 내의 수신된 패킷의 길이이고, Boutstanding은 수신될 미해결의 응답의 길이이고, Rmin은 (필수적인 데이터 단위만을 갖는) 기본 계층 비트율이며, α는 저 통과 제어 파라미터이다.
그 다음 수학식 5-7의 결과는 통합된 서비스 대역폭 Th와 스테이징 및 요청 큐 상태를 따름으로써 스트리밍 비트율 Rrecv을 제어하는 데에 이용되는데, 이는 섹션 3.2.6에서 이하 더 상세히 설명된다. 일단 스트리밍 비트율이 결정되면, 클라이언트는 스트리밍 비트율 Rrecv 이하의 비트율로 데이터 단위에 대한 요청만을 발행한다.
관련된 실시예에서, 보다 향상된 기법이 데이터 단위의 왜곡 분포 또한 고려함으로써 비트율 Rrecv을 제어하는 데에 이용된다. 그러나, 이는 클라이언트가, 미디어 구조에 포함되고 클라이언트에 송신되어야 할 데이터 단위의 왜곡 (또는 비트-왜곡 곡선)으로의 액세스를 획득하는 것을 요구한다. 그러나, 미디어 구조에 존 재하는 정보와는 다르게, 데이터 단위의 왜곡은 디코딩에는 필요하지 않으므로 추가적인 오버헤드가 될 것이다. 따라서, 클라이언트로 송신될 오버헤드의 양과 비율 제어 정확도 간의 상충관계(trade-off)가 존재한다.
3.2.5 피어스트리머 데이터 블럭 요청 및 응답:
클라이언트 데이터 블럭의 요청과 이에 대한 피어의 응답의 수명은 일반적으로 도 8에 의해 도시된다. 보다 상세히는, 도 8에 도시된 바와 같이, 클라이언트는 특정 서빙 피어로의 외부경계 TCP 접속을 통해 요청을 생성하고 송신한다. 또한, 네트워크 전달시에, TCP는 동일한 피어에 발행된 이전 요청들로 이 요청을 묶을 수 있다. 전송중에 이전 요청이 손실된 경우, TCP는 요청의 재전송 또한 처리한다.
패킷 요청 피어에 전달된 이후에, 이 요청은 서빙 피어의 TCP 수신 버퍼에 저장된다. 그 다음 피어는 이 요청들을 한번에 하나씩 처리한다. 각 요청마다, 피어는 자신의 디스크 또는 메모리 저장 장치로부터 (이용된 코딩에 따라, 삭제 코딩될 수 있거나 삭제 코딩되지 않을 수 있는) 요청된 블럭을 판독하고, 요청된 컨텐츠를 클라이언트에게 다시 송신한다. 서빙 피어로부터 클라이언트까지의 TCP 소켓(socket)이 블러킹된 경우, 즉, 어떤 대역폭도 더 이용될 수 없는 경우, 서빙 피어는 TCP 접속이 열릴때까지 클라이언트 요청을 더 블러킹할 것이다.
요청이 클라이언트에 의해 발행된 시간과 그 응답이 클라이언트에 의해 수신된 시간 간의 간격은 RFT(request fulfillment time)로서 정의된다. 요청은 보통 이 요청의 응답보다 훨씬 작으며, 예를 들면, 디스크 판독과 같은 요청의 처리에 속하는 동작은 통상적으로 컨텐츠를 다시 송신하는 데에 이용되는 네트워크 전달 시간에 비해 매우 작다. 그러므로, 요청의 RFT, T'rft는 다음과 같이 수학식 8로 계산된다.
Figure 112005043361769-pat00008
여기서 Thi는 피어 i의 서비스 대역폭이고, Bi ,outstanding은 이 요청 이전에 수신되지 않은 응답의 길이이며, Bcur은 요청된 컨텐츠의 길이이다. 그러므로, RFT는 피어의 서비스 대역폭, 요청의 사이즈 및 피어로부터 수신되지 않은 컨텐츠의 사이즈의 함수로서 결정된다.
일단 요청된 컨텐츠 패킷이 클라이언트에 도달한다면, 이 패킷은 스테이징 큐에 즉시 이동된다. 스테이징 큐에서, 복수의 피어로부터의 (삭제 코딩된 블럭을 포함할 수 있는) 데이터 블럭은 데이터 단위로 결합되고 디코딩되며, 이 데이터 단위는 미디어 패킷으로 더 결합된다. 주기적으로, 클라이언트는 전달된 미디어 패킷을 스테이징 큐로부터 제거하고, 이 패킷을 대응하는 오디오/비디오 디코더에 푸싱(push)한다. 미디어 패킷이 디코더에 의해 압축해지된 이후에, 압축해지된 오디오/비디오 데이터 스트림은 클라이언트 재생 장치(디스플레이 모니터, 스피커, 등)에서의 스트리밍 재생을 위해 오디오/비디오 렌더링 유닛으로 송신된다.
일 실시예에서, 도 8에 도시된 버퍼는 패킷 손실 및 지터와 같은 네트워크 변동 사항에 대처하는 데에 이용된다. (그러나, DirectShow™ 구현을 이용할 경우, 압축해지된 오디오/비디오 버퍼는 DirectShow 필터 그래프의 제어 하에 있고 프로그램될 수 없다). 피어스트리머의 테스트된 실시예에서, 스테이징 버퍼의 사이즈는 Tstaging = 2.5초로 설정되었고, 원하는 RFT는 Trft = 1.0초로 설정되었고, 압축된 오디오/비디오 버퍼는 0.5초로 설정되었다. 따라서, 이 테스트된 실시예에서, 피어스트리머 클라이언트의 총 버퍼는 약 4초이다.
삭제 코딩이 이용된 실시예에서, 각 데이터 블럭 요청은 특정 데이터 단위의 삭제 코딩된 블럭의 그룹을 요청으로써 형식화된다. 삭제 코딩된 블럭 그룹은 블럭 인덱스의 첫부분과 요청된 블럭의 개수로 식별가능한다. 데이터 단위는 32 비트 ID를 통해 식별가능하다. 그러므로 이 요청은 다음과 같은 형태이다.
Data_Unit_ID [32], Start_Index [4], Number_of_Blocks [4]
여기서, 각괄호 안의 숫자는 각 컴포넌트의 비트수이다.
그러므로, 수학식 9가 나타내는 바와 같이, 삭제 코딩된 블럭의 경우, 각 요청은 5바이트 길이이다. 한편, 요청된 컨텐츠는 사이즈가 128 내지 2048의(데이터 단위 길이 L=2048, k=16) 범위에 있다. 따라서, 요청의 사이즈는 오직 응답의 약 0.24% 내지 3.91%이다. 그러므로 요청을 송신할 클라이언트에 의해 소모된 업로드 대역폭의 총 량은 요청된 컨텐츠에 비해 매우 작다.
3.2.6 피어스트리머 요청 및 스테이징 큐.
상술한 바와 같이, 피어스트리머 클라이언트는 (삭제 코딩될 수 있는) 수신된 데이터 블럭을 보유하는 하나의 스테이징 큐를 유지하고 이 큐로부터 데이터 블럭이 데이터 단위로 조립되고 그 다음 미디어 패킷으로 조립된다. 클라이언트는 또한 서빙 피어 각각에 대한 개별적인 요청 큐를 유지하여 각 피어에게 송신된 완료되지 않은 요청을 보유한다. 이들 요청 및 스테이징 큐의 한 예는 도 9에 도시된다.
스테이징 큐는 피어스트리머 클라이언트의 주요 스트리밍 버퍼이다. 모든 수신된 컨텐츠는 처음에는 스테이징 큐에 보관된다. 요청 큐는 1) 처리량 제어 및 부하 균형 맞춤을 수행하고, 2) 각 서빙 피어에 의해 다시 송신되는 응답을 식별하고, 3) 접속이 끊긴 피어를 처리하는 3가지 목적을 서비스한다.
요청 큐의 제1 기능은 서빙 피어들 간의 부하의 균형을 맞추는 것이다. 미디어가 삭제 코딩된 경우, 데이터 단위에 대한 요청은 삭제 코딩된 블럭의 복수의 그룹의 요청으로 쪼개지어, 각 그룹은 하나의 피어로 향한다. 요청은 다음의 동작을 통해 생성된다. 데이터 단위 요청시에, 클라이언트는 먼저 피어의 이용가능성 벡터를 검사하고, 데이터 단위에 대하여 각 피어에 의해 보유된 삭제 코딩된 블럭의 개수(ai)를 계산한다. 온라인에서 모든 피어가 보유하는 블럭의 총 개수가 k보다 작을 경우, 데이터 단위는 회복될 수 없다. 회복될 수 없는 데이터 단위가 필수적이지 않다면(즉, 내장 코딩된 매체의 기반 계층이 아니라면), 클라이언트는 단순히 데이터 단위를 건너뛴다.
이와 다르게, 회복될 수 없는 데이터 단위가 필수적이라면, 즉, 비내장 코딩된 미디어 패킷에 속하거나 내장 코딩된 미디어 패킷의 기본 계층에 속한다면, 클라이언트는 스트리밍 미디어의 다운로드 및 재생으로 진행될 수 없다. 그러므로, 일 실시예에서, 보다 많은 피어가 상실된 블럭을 제공하기 위하여 온라인이 되는 것을 기다릴 것이다. 대안적인 실시예에서, 클라이언트는 모든 미디어 패킷을 건너뛰고, 이 패킷을 이어지는 오디오/비디오 디코더에 상실됐다고 표시할 것이다. 그 결과는 렌더링된 미디어에 갭(gap) 또는 건너뛰기 일 것이다. 그러나, 하나의 필수적인 데이터 단위가 피어 클러스터로부터 회복될 수 없다면, 추가적인 이어지는 필수적인 데이터 단위 또한 회복될 수 없을 가능성이 매우 높다. 따라서, 데이터가 이용가능할 때까지 클라이언트를 기다리게 하여 사용자에게 보다 나은 재생 경험을 제공하는 것이 통상적으로 더 바람직하다.
특정 데이터 단위가 회복가능하는 것을, 즉,
Figure 112005043361769-pat00009
을 보장한 이후에,
클라이언트는 각 피어의 요청 큐에 이용가능한 공간을 검사한다. 각 피어의 RFT를 시스템 상수 Trft에 근접하게 유지하는 것이 바람직하다. 테스트된 실시예에서, 대략 1.0 초인 Trft가 바람직한 결과를 제공한다. (너무 짧은 요청 큐를 이용하면 클라이언트로부터 피어로의 대역폭을 효과적으로 이용할 수 없음을 유의한다 .)
상세히 기술하면, 클라이언트에 의해 송신된 요청 패킷이 손실되거나 지연되는 경우, 서빙 피어는 송신될 것이 없는 채로 남아있어, 자신의 서비스 대역폭을 낭비할 수 있다. 이와 반대로, 너무 긴 요청 큐를 이용하는 것은 피어 중의 하나의 접속이 끊길 때와 같은, 변화에 클라이언트가 빠르게 적응하지 못하게 할 수 있다. 또한, 모든 피어에 대한 요청 큐가, RFT와 동일한 길이라면 요청 큐의 용량은 자신의 서비스 대역폭: Thi×Trft에 비례하게 된다.
예를 들면, Trft가 1.0초라 가정하면, 서비스 대역폭이 16kbps인 피어는 자신의 요청 큐에서 대기중인 완료되지 않은 요청의 2KB를 허용하는 한편, 서비스 대역폭이 1Mbps인 피어는 대기중인 완료되지 않은 요청의 128KB를 허용 한다. 따라서, 특정 피어로부터 요청될 수 있는 삭제 코딩된 블럭의 개수는 이 피어의 요청 큐에 남은 공간에 의해 수용된다:
Figure 112005043361769-pat00010
여기서 ei는 피어 i로부터 요청될 수 있는 삭제 코딩된 블럭의 개수이고, bk는 삭제 코딩된 블럭의 사이즈이다.
수학식 11은 클라이언트가 Trft보다 큰 예측된 RFT를 갖는 요청을 송신할 수 없음을 보장한다. 클라이언트가 충분한 현재 이용가능한 삭제 코딩된 블럭을 발견하지 못한다면, 즉,
Figure 112005043361769-pat00011
라면,
서빙 피어의 요청 큐가 클리어될 때까지 기다릴 것이다. 데이터 단위 요청은
Figure 112005043361769-pat00012
일 때만 형성되고 피어에 송신된다. 특정 피어로부터 요청된 블럭의 실제 개수(bi)은 다음과 같이 계산된다.
Figure 112005043361769-pat00013
여기서 c는
Figure 112005043361769-pat00014
를 만족시키는 상수이다.
일반적으로, 상술한 절차는 서비스 부하를 각 피어에게 이 피어의 서비스 대역폭 Thi(수학식 13)에 비례하여 할당한다. 클라이언트는 그 서빙 피어에 의해 실제로 캐슁되거나 저장되는 특정 서빙 피어로부터 더이상 블럭을 요청하지 않음 또한 보장한다. 마지막으로, 수학식 11이 나타낸 바와 같이, 이 절차는 또한 요청의 RFT가 Trft를 초과하지 않음을 보장한다.
요청 큐의 제2 기능은 각 서빙 피어에 의해 다시 전송된 컨텐츠를 식별하는 것이다. 상술한 바와 같이, 피어스트리머 클라이언트와 피어는 TCP를 통해 통신하 는데, TCP는 데이터 전송의 순서를 보존하고 패킷 전달을 보장한다. 또한, 각 피어는 들어오는 요청을 순차적으로 처리한다. 결과적으로, 다시 송신되는 컨텐츠는 각 피어에 대한 요청 큐에 대기하고 있는 제1 요청에 대한 것이 분명하기 때문에, 다시 송신되는 컨텐츠를 특별히 식별할 필요는 없다.
상술한 요청 큐의 제3 기능에 관련하여, 요청 큐는 또한 접속이 끊긴 피어의 요청을 다시 지정하는 데에 이용된다. 예를 들면, 특정 서빙 피어가 클라이언트로부터의 접속이 끊길 때마다, 접속 끊김 이벤트가 TCP 프로토콜에 의해 선택된 다음 TCP 프로토콜은 클라이언트에 이 접속 끊김을 보고한다. 그 다음 클라이언트는 접속이 끊긴 피어의 큐에 대기하고 있는 완료되지 않은 요청 모두를 하나 이상의 남아있는 피어에게 동적으로 재할당한다. 요청을 재할당하는 절차는 처음 위치에 요청을 할당하는 절차와 매우 유사하다. 한가지 다른 점은 접속이 끊긴 피어로부터 이미 요청된 블럭의 개수가 요청 재할당에 고려되어야 한다는 점이다.
마지막으로, 삭제 코딩된 블럭이 클라이언트에 도달할 때마다, 이 블럭은 TCP 소켓으로부터 즉시 수송된다. 도착하는 컨텐츠를 대기중인 요청과 쌍으로 묶은 후에, 완료된 요청은 요청 큐로부터 제거된다. 그 다음 식별된 삭제 코딩된 블럭은 스테이징 큐에 보관된다. 결과적으로 스테이징 큐의 사이즈가 증가한다. 스테이징 큐가 소정의 사이즈 Tstaging에 도달한다면, 미디어 패킷/데이터 단위의 어떠한 추가적인 요청도 송신되지 않는다. 일단 특정 데이터 단위의 모든 삭제 코딩된 블럭이 수신됐다면, 데이터 단위는 삭제 디코딩되고, 준비됐다고 표시된다. 미디 어 패킷은 자신의 모든 요청된 데이터 단위가 준비된 경우에 준비가 된다. 주기적으로, 오디오/비디오 디코더는 스테이징 큐로부터 "준비된" 미디어 패킷을 제거한다. 이는 스테이징 큐의 사이즈를 줄이고 새로운 미디어 패킷 요청의 생성을 트리거할 수 있다.
그 다음 상술한 미디어 스트리밍 동작은 미디어 파일의 재생이 완료되거나 미디어를 스트리밍하는 데에 이용가능한 피어가 불충분하거나 사용자가 스트리밍 세션을 종료할 시간까지 계속된다.
3.3 피어스트리머 동작:
도 2 내지 도 9에 관련하여 상술한 프로세스는 도 10의 일반적인 기능적 흐름도에 의해 도시된다. 일반적으로, 도 10은 피어스트리머의 몇몇의 기능적 실시예를 도시하는 예시적인 기능적 흐름도를 도시한다. 도 10의 임의의 박스와 띄엄 띠엄된 선 또는 점선으로 도시된 박스들 간의 상호접속은 본 명세서에서 기술한 피어스트리머의 대안적인 실시예를 나타내고 이들 대안적인 실시예의 전부 또는 일부는, 후술될 바와 같이, 이 문서를 통해 기술될 다른 대안적인 실시예와 관련하여 이용될 수 있음을 유의한다.
상세히는, 도 10에 도시된 바와 같이, 미디어 스트리밍 동작 이전에, (피어(220) 중 하나일 수도 있는) 서버(200)는 스트리밍될 미디어를 인코딩한다(1000). 상술한 바와 같이, 피어스트리머는, 예를 들면, MPEG 1/2/4, WMA, WMV 등과 같은 복수의 통상적인 코덱 중 임의의 것을 가지고 동작할 수 있다. 또한, 인코딩 프로세스(1000) 중에, 서버(200)는 또한 전술한 미디어 헤더, 및 미디어 구조를 포함하 는 동료 파일을 모두 생성한다.
상술된 바와 같이, 일 실시예에서, 일단 미디어가 인코딩되면(1000), 인코딩된 미디어 패킷은 고정된 사이즈의 복수의 데이터 단위로 분할된다(1005). 또한, 인코딩된 미디어 등에서, 미디어 헤더 및 미디어 구조는 인코딩된 미디어 패킷을 분할하는 데에 이용된 것과 동일한 고정된 사이즈의 복수의 데이터 단위로 또한 분할된다(1005). 상술한 바와 같이, 이 정보를 고정된 길이 데이터 단위로 분할하는 것(1005)은 클라이언트 및 서빙 피어 모두가 미디어 스트리밍 동작 이전에 메모리 블럭을 미리 할당할 수 있게 함으로써, 스트리밍 프로세스 중에 계산적으로 비용이 드는 메모리 할당 동작을 방지한다. 또한, 더 작은 데이터 단위를 사용하면 스트리밍 동작 중에 클라이언트 데이터 단위 요청을 만족시키는, 각 서빙 피어에 의해 소비되는 대역폭의 정확한 양이 클라이언트에 의하여 정교하게 제어될 수 있다.
인코딩된 미디어, 미디어 헤더, 및 미디어 구조를 더 작은 데이터 단위로 분할하는 것(1005) 이외에도, 일 실시예에서, 추가적인 코딩의 계층은 서빙 피어가 본질적으로 신뢰되지 않는 통상적인 P2P 환경에서 증가하는 중복을 제공하는 데에 이용된다. 상세히 기술하자면, 상술한 바와 같이, 일 실시예에서, 데이터 단위는 키-기반 고속 삭제 내성 코딩 프로세스(1010)를 이용하여 복수의 데이터 블럭으로 더 나뉘어진다.
이러한 코딩(1010)의 이용은 하나 이상의 피어가 특정 데이터 단위를 재구성하는 데에 필요한 데이터 블럭을 가질 것인 반면 어떤 피어가 필요한 데이터를 포함하는지를 식별하려는 클라이언트 측의 요구를 간단하게 함을 보장한다. 또한, 상술한 바와 같이, 일 실시예에서, 각각의 서빙 피어(220)에 의해 이용되는 삭제 내성 코딩 키는 서버(200)에 의해 각 피어에게 자동적으로 할당된다. 그러나, 다른 실시예에서, 각 서빙 피어(200)는 단순히 삭제 내성 코딩 키를 무작위로 선택한다. 그 다음 이들 키는 각 피어(220)가 클라이언트에 의해 초기에 접촉될 때 클라이언트(210)에 의해 검색된 전술한 이용가능성 벡터와 함께 포함된다. 그 다음, 무작위 키 실시예에서, 클라이언트는 소정의 데이터 단위에 대한 키 충돌이 존재하는 하나 이상의 피어의 키를 무효화한다.
일단 미디어가 처음에 인코딩되고(1000), 데이터 단위로 분할되고(1005), 가능한 경우 더 삭제 코딩되면(1010), 결과 데이터 단위 또는 데이터 블럭은 다양한 서빙 피어(220)에게 분산된다(1015). 이 분산(1015)은 인코딩된 미디어의 블럭 또는 패킷이 P2P 네트워크에 합류한 클라이언트에 의해 호출될 때 추가적인 스트리밍 동작을 위해 캐슁되거나 저장되는 복수의 피어에게 모두 또는 일부분으로 제공된다는 점에서 신중할 수 있다.
대안으로, 상술한 바와 같이, 클라이언트(210)가 특정 미디어 파일을 스트리밍할 때마다, 복원된 미디어 패킷은 바로 인코딩 동작(100) 이후의 미디어 패킷이다. 이 패킷은 데이터 단위(1005)로 분할될 수 있고 가능하다면 더 삭제 코딩(1010)되고, 클라이언트는 가능하면 로컬 메모리 또는 저장 장치 내에서, 자신에게 스트리밍 되었던 컨텐츠 중 적어도 일부를 보유할 수 있다. 그 다음 클라이언트는 추후의 스트리밍 동작을 위하여 (전술한 피어 리스트(310) 내의) 서빙 피어(220)로서 식별된다. 이 실시예의 한가지 이점은 특정 미디어 파일의 일부를 포함하는 피 어의 개수는 처음에는 적어서, 서비스 요청을 만족시키는 서버 자체에서의 수요는 증가하는 반면, 시간이 지나고 보다 많은 클라이언트가 미디어를 스트리밍할 수록, 이들 클라이언트는 추후의 스트리밍 요청을 위한 피어로서 동작할 수 있다는 점이다. 따라서, 스트리밍될 미디어의 모든 또는 일부를 초기에 캐슁한 것을 보유하는 서빙 피어(220)를 명시적으로 선택할 필요는 없다. 결과적으로, 서버 상의 임의의 수요는 스트리밍될 미디어의 초기 캐쉬를 받아들이고자 하는 피어를 식별하기를 시도함에 따라서 더 줄어든다.
그 중 한 경우에서, 일단 미디어가 서빙 피어들(220)에 배포되었다면(1015), 클라이언트(210)는 이들 서빙 피어로의 스트리밍 요청을 시작할 준비가 된다. 또한, 상술한 바와 같이, 서버(200)는 클라이언트(210)에게 스트리밍하기 위하여 서빙 피어(220)로서 또한 동작할 수 있다. 다시, 상술한 설명의 관점에서, 특정 미디어 파일의 초기 스트리밍은 더 많은 서버(200) 영향력이 필요할 수 있는 한편, 시간이 지나고, 보다 많은 클라이언트(210)가 그 미디어를 스트리밍(하고 그 다음 서빙 피어로서 동작하는 데에 이용가능) 함에 따라, 서빙 피어로서 실제로 동작하라는 서버 상의 수요는 줄어들거나, 심지어는 없어진다.
이 점에서, 클라이언트(210)는 처음에 이용가능한 서빙 피어(220)의 리스트(310)를 검색함으로써 스트리밍 세션을 시작한다. 상술한 바와 같이, 이 리스트(310)는 서버(200)로부터 직접, 피어(220) 중 하나로부터, 또는 잠재적인 서빙 피어를 식별하는 통상의 DHT 방법(315)을 이용함으로써 검색된다. 일단 클라이언트(210)가 피어 리스트(310)를 검색했다면, 클라이언트는 각 서빙 피어(220)에 접속되고 각 피어로부터 이용가능성 벡터를 검색한다(1025). 또한, 일 실시예에서, 클라이언트(210)는 진행중인 스트리밍 동작 중에 주기적으로 피어 리스트(310)로의 갱신(1030)을 검사한다. 이러한 주기적인 검사(1030)를 수행하는 한 가지 이점은 대형 P2P 네트워크에서, 복수의 서빙 피어는 임의의 소정의 시점에서 온라인이되고 오프라인이 될 가능성이 있다는 점이다. 따라서, 클라이언트(210)가 갱신된 피어 리스트(310)를 갖는다는 것을 보장하는 것은 클라이언트가 현재 클라이언트에게 미디어를 스트리밍하고 있는 피어(220)의 손실이나 저하에 응답할 수 있도록 할 것이다. 리스트(310)의 주기적인 검사(1030)가 리스트에 새로운 피어(220)가 추가됐음을 나타낼 때마다, 클라이언트(210)는 다시 새로운 피어에 접속하고 그 새로운 피어의 이용가능성 백터를 검색한다(1025).
일단 클라이언트(210)가 각 피어(220)의 이용가능성 벡터를 검색했다면(1025), 클라이언트는 이 클라이언트와 이들의 피어 간의 네트워크 접속을 통하여 하나 이상의 피어로부터의 정보에 대응하는 데이터 단위를 요청함으로써 하나 이상의 서빙 피어로부터 스트리밍될 미디어의 미디어 헤더 및 미디어 구조를 검색한다(1035).
상술한 바와 같이, 미디어 헤더는 일반적으로 미디어를 기술하는 전체적인 정보, 예를 들면, 미디어 내의 채널의 개수, 각 채널의 속성 및 특성(오디오 샘플링율, 비디오 해상도/프레임율), 사용된 코덱, 미디어의 저자/저작권 보유자, 등을 포함한다. 결과적으로, 미디어 스트리밍 세션의 처음에서의 미디어 헤더의 검색은 클라이언트(220)가 스트리밍 세션 중에 후속으로 수신된 패킷의 수신 이전에 이들 패킷을 디코딩(1070)하고 렌더링(1075)하는 데에 필요한 도구를 구축하거나 초기화(1040)하도록 한다.
또한, 특정 스트리밍 미디어의 미디어 구조를 검색한(1035) 이후에, 클라이언트는 미디어 구조를 분석하고 스트리밍 프로세스 중에 요청될 필요가 있을 스트리밍 미디어의 데이터 단위의 데이터 단위 ID를 계산한다(1045). 그 다음 클라이언트(210)는 하나 이상의 서빙 피어(220)로부터 이들 데이터 단위를 하나씩 요청한다(1050).
또한, 상술한 바와 같이, 삭제 코딩이 코딩 키의 무작위 피어 선택에 관련하여 이용되는 실시예에서, 클라이언트(210)는 하나 이상의 피어(220) 상의 중복 키를 무효화함으로써 키 충돌을 관리한다(1055). 관련된 실시예에서, 피어스트리머는 내장 코딩된 미디어를 이용하고, 그 다음 각 피어(220)에 대한 데이터 요청(및 스트리밍 비트율)이 이용가능한 서비스 대역폭 및 클라이언트(210) 큐 상태에 따라 관리된다(1060). 이 경우, 데이터 단위(1050)에 대한 진행중인 요청은 다양한 서빙 피어의 이용가능한 대역폭에 기초하여 최소 비율 왜곡을 제공할 패킷에 대응한다. 이중 한 경우, 상술한 바와 같이, 상실되거나 지연된 데이터 단위는, 내장 코딩이 이용되었는지 비내장 코딩이 이용되었는지, 피어의 접속 상태, 상실되거나 지연된 데이터 단위를 요청하고 수신하기에 남은 시간에 따라, 동일한 피어 또는 대안적인 피어(220)로부터 다시 요청된다(1050).
마지막으로, 일단 특정 미디어 패킷을 구성하는 모든 데이터 단위가 클라이언트(220) 요청(1050)에 따라 검색된다면, 이들 데이터 패킷은 본래의 미디어 패킷 으로 다시 조립된다(1065). 그 다음 다시 조립된 미디어 패킷은 디코딩되고(1070), 렌더링되어(1075) 통상의 디스플레이 장치(355) 또는 스피커(260) 중 하나 또는 둘다에서의 재생에 제공된다.
피어스트리머의 전술된 설명은 예시 및 설명을 위하여 제시되었다. 이 설명은 개시된 정확한 형태로 본 발명을 제한하거나 고갈시키려는 의도를 가지지 않는다. 상술한 가르침에 비추어 복수의 수정 및 변형이 가능하다. 또한, 전술한 대안적인 실시예 중 일부 또는 모두가 피어스트리머의 추가적인 혼합된 실시예를 형성하기에 바람직한 임의의 조합으로 이용될 수 있음을 유의한다. 본 발명의 범위는 이 상세한 설명으로 한정되지 않으며, 오히려 특허 청구 범위에 의해서 한정된다고 의도된다.
본 명세서에서 기술한 바와 같이, "피어스트리머"는 느슨하게 연결된 P2P 네트워크에서의 수신자 구동형 P2P 미디어 스트리밍을 제공한다. 네트워크 내의 피어들은 단순한 동작만을 수행하고, 스트리밍 미디어의 전체 또는 일부분을 캐슁할 수 있고, 다른 피어들과 협력하지 않고, 신뢰되지 않을 수 있으며, 임의의 소정의 스트리밍 세션 중에 오프라인으로 벗어나거나 온라인이 될 수 있다. 네트워크 내의 클라이언트(즉 수신자)는 피어를 조정하고, 복수의 피어들로부터 미디어를 스트리밍하고, 부하 균형 맞춤을 수행하고, 피어의 온라인/오프라인 상태를 처리하고, 스트리밍 미디어의 디코딩 및 렌더링을 수행하도록 실시간으로 동작한다.

Claims (28)

  1. P2P(peer-to-peer) 네트워크에서 멀티미디어 데이터 패킷의 클라이언트 구동형 스트리밍을 제공하는 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 기록 매체로서,
    상기 컴퓨터 실행가능 명령어들은,
    클라이언트 컴퓨터 상에서 복수의 클라이언트 요청 큐(queue)를 보유하고 - 각각의 클라이언트 요청 큐는 서빙 피어(serving peer) 클러스터 내의 복수의 서빙 피어 중 하나에 대응함 - ;
    상기 클라이언트 컴퓨터로부터 하나 이상의 데이터 패킷의 클라이언트 요청을 하나 이상의 서빙 피어에 송신하고 - 임의의 서빙 피어로의 상기 클라이언트 데이터 패킷 요청은, 상기 서빙 피어가 상기 클라이언트 요청에 대한 응답으로 송신되는 데이터 패킷들을 식별할 필요가 없도록, 신뢰성 있고 순서가 보존되는 링크를 통하여 상기 서빙 피어에 제공됨 - ;
    각각의 데이터 패킷 요청이 상기 클라이언트로부터 상기 서빙 피어 중 하나에 송신될 때 각각의 데이터 패킷 요청을 대응하는 상기 요청 큐에 추가하고;
    대응하는 상기 데이터 패킷이 상기 서빙 피어로부터 상기 클라이언트에 의해 수신될 때 각각의 패킷 요청을 상기 대응하는 요청 큐로부터 제거하고;
    각각의 수신된 데이터 패킷을 상기 클라이언트에 의해 보유된 공통 스테이징 큐(common staging queue)에 제공하고;
    상기 공통 스테이징 큐 내의 상기 데이터 패킷을, 대응하는 멀티미디어 데이터 패킷에 어셈블링하는
    것을 수행하는 컴퓨터 판독가능 기록 매체.
  2. 제1항에 있어서,
    클라이언트 컴퓨터 상에서 복수의 클라이언트 요청 큐를 보유하는 것은, 상기 서빙 피어 클러스터에 후속하여 합류(join)하는 임의의 추가 서빙 피어에 대응하는 추가 클라이언트 요청 큐를 생성하고 보유하는 것을 더 포함하는 컴퓨터 판독가능 기록 매체.
  3. 제1항에 있어서,
    클라이언트 컴퓨터 상에서 복수의 클라이언트 요청 큐를 보유하는 것은, 상기 서빙 피어 클러스터로부터 드롭(drop)된 서빙 피어에 대응하는 요청 큐에 남아있는 임의의 데이터 패킷 요청을 하나 이상의 다른 클라이언트 요청 큐로 이동시키는 것을 더 포함하는 컴퓨터 판독가능 기록 매체.
  4. 제1항에 있어서,
    상기 컴퓨터 실행가능 명령어들은
    상기 클라이언트 컴퓨터 상에서 상기 어셈블링된 멀티미디어 데이터 패킷을 디코딩하고 렌더링하여, 상기 클라이언트 컴퓨터 상에서 스트리밍 미디어 재생을 제공하는 것을 더 수행하는 컴퓨터 판독가능 기록 매체.
  5. 제1항에 있어서,
    상기 데이터 패킷은 내장 코딩된 데이터 패킷이며,
    상기 컴퓨터 실행가능 명령어들은
    하나 이상의 상기 서빙 피어에 대한 하나 이상의 데이터 패킷의 상기 클라이언트 요청을,
    상기 서빙 피어들의 통합된 서비스 대역폭,
    공통 스테이징 큐의 사이즈,
    원하는 RFT(request fulfillment time),
    상기 공통 스테이징 큐에서 수신된 패킷의 길이,
    각각의 요청 큐에서 처리되지 않은(outstanding) 응답의 길이, 및
    상기 내장 코딩된 데이터 패킷의 기본 계층 비트율
    의 함수로서 자동적으로 제한함으로써, 각각의 내장 코딩된 데이터 패킷의 스트리밍 비트율에 관하여 클라이언트 제어를 유지하는 것을 더 수행하는 컴퓨터 판독가능 기록 매체.
  6. 하나 이상의 비협력(non-cooperating) 피어들의 클러스터로부터 클라이언트 구동형 미디어 스트리밍을 조정하는 시스템으로서,
    컴퓨팅 장치를 이용하여,
    클라이언트와의 통신에 이용가능한 서빙 피어 클러스터 내의 하나 이상의 서빙 피어들에 대해, 인코딩된 미디어 파일의 모든 패킷을 배포(distributing)하고;
    클라이언트 요청에 응답하여 상기 클러스터 내의 상기 서빙 피어들의 리스트를 상기 클라이언트에 제공하고;
    상기 클러스터 내의 각각의 서빙 피어에 대응하는 상기 클라이언트에 개별 패킷 요청 큐를 제공하고;
    상기 클라이언트로부터 하나 이상의 특정 데이터 패킷에 대한 하나 이상의 클라이언트 요청을 상기 클러스터 내의 하나 이상의 특정 서빙 피어에 송신하고, 각각의 요청을 대응하는 상기 패킷 요청 큐에 추가하고;
    대응하는 상기 데이터 패킷이 상기 클라이언트에 의해 수신될 때 대응하는 상기 패킷 요청 큐로부터 각각의 요청을 제거하고;
    각각의 수신된 데이터 패킷을 상기 클라이언트의 클라이언트 스테이징 큐에 캐싱하고;
    상기 수신된 데이터 패킷을 디코딩하고 렌더링하여 스트리밍 미디어 재생을 상기 클라이언트에 제공하는
    것을 포함하는 시스템.
  7. 제6항에 있어서,
    클라이언트 요청에 응답하여 상기 클러스터 내의 각각의 서빙 피어로부터 이용가능성 벡터(availability vector)를 제공하는 것을 더 포함하고,
    각각의 이용가능성 벡터는 각각의 대응하는 서빙 피어 상에 저장된 이용가능한 데이터 패킷을 기술하는 시스템.
  8. P2P(peer-to-peer) 네트워크에서 하나 이상의 비협력 피어들의 클러스터로부터 클라이언트 구동형 미디어 스트리밍을 조정하기 위한 컴퓨터 실행가능 명령어들을 저장한 컴퓨터 판독가능 기록 매체로서,
    상기 컴퓨터 실행가능 명령어들은,
    클라이언트와의 통신에 이용가능한 서빙 피어 클러스터 내의 하나 이상의 서빙 피어들에 대해, 인코딩된 미디어 파일의 모든 패킷을 배포(distributing)하고;
    클라이언트 요청에 응답하여 상기 클러스터 내의 상기 서빙 피어들의 리스트를 상기 클라이언트에 제공하고;
    상기 클러스터 내의 각각의 서빙 피어에 대응하는 상기 클라이언트에 개별 패킷 요청 큐를 제공하고;
    상기 클라이언트로부터 하나 이상의 특정 데이터 패킷에 대한 하나 이상의 클라이언트 요청을 상기 클러스터 내의 하나 이상의 특정 서빙 피어에 송신하고, 각각의 요청을 대응하는 상기 패킷 요청 큐에 추가하고;
    대응하는 상기 데이터 패킷이 상기 클라이언트에 의해 수신될 때 대응하는 상기 패킷 요청 큐로부터 각각의 요청을 제거하고;
    각각의 수신된 데이터 패킷을 상기 클라이언트의 클라이언트 스테이징 큐에 캐싱하고;
    상기 수신된 데이터 패킷을 디코딩하고 렌더링하여 스트리밍 미디어 재생을 상기 클라이언트에 제공하는
    것을 수행하는 컴퓨터 판독가능 기록 매체.
  9. 제8항에 있어서,
    클라이언트 요청에 응답하여 상기 클러스터 내의 각각의 서빙 피어로부터 이용가능성 벡터를 제공하기 위한 명령어들을 더 포함하고,
    각각의 이용가능성 벡터는 각각의 대응하는 서빙 피어 상에 저장된 이용가능한 데이터 패킷을 기술하는 컴퓨터 판독가능 기록 매체.
  10. P2P(peer-to-peer) 네트워크에서 하나 이상의 비협력 피어들의 클러스터로부터 클라이언트 구동형 미디어 스트리밍을 제공하기 위한 방법으로서,
    클라이언트와의 통신에 이용가능한 서빙 피어 클러스터 내의 하나 이상의 서빙 피어들에 대해, 인코딩된 미디어 파일의 모든 패킷을 배포(distributing)하는 단계;
    클라이언트 요청에 응답하여 상기 클러스터 내의 상기 서빙 피어들의 리스트를 상기 클라이언트에 제공하는 단계;
    상기 클러스터 내의 각각의 서빙 피어에 대응하는 상기 클라이언트에 개별 패킷 요청 큐를 제공하는 단계;
    상기 클라이언트로부터 하나 이상의 특정 데이터 패킷에 대한 하나 이상의 클라이언트 요청을 상기 클러스터 내의 하나 이상의 특정 서빙 피어에 송신하고, 각각의 요청을 대응하는 상기 패킷 요청 큐에 추가하는 단계 - 임의의 서빙 피어에 송신된 상기 클라이언트 요청은, 상기 서빙 피어가 상기 클라이언트 요청에 대한 응답으로 송신되는 데이터 패킷들에 대한 데이터 패킷 식별을 포함할 필요가 없도록, 신뢰성 있고 순서가 보존되는 링크를 통하여 상기 서빙 피어에 제공됨 - ;
    대응하는 상기 데이터 패킷이 상기 클라이언트에 의해 수신될 때 대응하는 상기 패킷 요청 큐로부터 각각의 요청을 제거하는 단계;
    각각의 수신된 데이터 패킷을 상기 클라이언트의 클라이언트 스테이징 큐에 캐싱하는 단계; 및
    상기 수신된 데이터 패킷을 디코딩하고 렌더링하여 스트리밍 미디어 재생을 상기 클라이언트에 제공하는 단계
    를 포함하는 방법.
  11. P2P(peer-to-peer) 네트워크에서 미디어 파일들의 클라이언트-제어 스트리밍을 제공하는 시스템으로서,
    컴퓨팅 장치를 이용하여,
    인코딩된 미디어 파일의 모든 패킷이 서빙 피어들 중 적어도 하나 상에 캐싱되도록, 인코딩된 미디어 파일의 하나 이상의 패킷을, 이용가능한 서빙 피어 클러스터 내의 하나 이상의 상기 서빙 피어 상에 저장하고 - 상기 인코딩된 미디어 파일은 미디어 헤더 및 미디어 본문(body)을 포함함 - ;
    클라이언트를 이용하여 상기 클라이언트에 이용가능한 서빙 피어의 리스트를 검색하고,
    각각의 이용가능한 서빙 피어에 대하여 상기 클라이언트 상의 개별 패킷 요청 큐를 초기화하고,
    상기 클라이언트로부터 하나 이상의 특정 데이터 패킷에 대한 하나 이상의 클라이언트 요청을 하나 이상의 특정 서빙 피어에 송신하고, 각각의 요청을 대응하는 상기 패킷 요청 큐에 추가하고 - 임의의 서빙 피어에 송신된 상기 클라이언트 요청은, 상기 서빙 피어가 상기 클라이언트 요청에 대한 응답으로 송신되는 데이터 패킷들을 식별할 필요가 없도록, 신뢰성 있고 순서가 보존되는 링크를 통하여 상기 서빙 피어에 제공됨 - ;
    대응하는 상기 데이터 패킷이 서빙 피어로부터 상기 클라이언트에 의해 수신될 때 대응하는 상기 패킷 요청 큐로부터 각각의 요청을 제거하고;
    상기 수신된 데이터 패킷을 디코딩하고 렌더링하여, 스트리밍 미디어 재생을 상기 클라이언트에 제공하는
    것을 포함하는 시스템.
  12. 제11항에 있어서,
    각각의 이용가능한 서빙 피어로부터 이용가능성 벡터를 상기 클라이언트에 다운로드하는 것을 더 포함하고,
    각각의 이용가능성 벡터는 각각의 대응하는 서빙 피어에 저장된 이용가능한 데이터 패킷을 기술하고,
    하나 이상의 특정 데이터 패킷에 대한 상기 클라이언트 요청은 상기 다운로드된 이용가능성 벡터에 기초하는 시스템.
  13. P2P(peer-to-peer) 네트워크에서 미디어 파일들의 클라이언트-제어 스트리밍을 제공하기 위한 컴퓨터 실행가능 명령어들을 저장한 컴퓨터 판독가능 기록 매체로서,
    상기 컴퓨터 실행가능 명령어들은,
    인코딩된 미디어 파일의 모든 패킷이 서빙 피어들 중 적어도 하나 상에 캐싱되도록, 인코딩된 미디어 파일의 하나 이상의 패킷을, 이용가능한 서빙 피어 클러스터 내의 하나 이상의 상기 서빙 피어 상에 저장하고 - 상기 인코딩된 미디어 파일은 미디어 헤더 및 미디어 본문을 포함함 - ;
    클라이언트를 이용하여 상기 클라이언트에 이용가능한 서빙 피어의 리스트를 검색하고,
    각각의 이용가능한 서빙 피어에 대하여 상기 클라이언트 상의 개별 패킷 요청 큐를 초기화하고,
    상기 클라이언트로부터 하나 이상의 특정 데이터 패킷에 대한 하나 이상의 클라이언트 요청을 하나 이상의 특정 서빙 피어에 송신하고, 각각의 요청을 대응하는 상기 패킷 요청 큐에 추가하고 - 상기 서빙 피어가 상기 클라이언트 요청에 대한 응답으로 송신되는 데이터 패킷들을 식별할 필요가 없도록, 임의의 상기 서빙 피어에 송신된 상기 클라이언트 요청은 TCP 링크를 통해 상기 서빙 피어에 제공되며, 서빙 피어로부터 상기 클라이언트에 의해 수신되는 임의의 들어오는 데이터 패킷은, 상기 데이터 패킷이 수신된 상기 서빙 피어에 대응하는 상기 요청 큐에서의 첫번째 데이터 패킷 요청에 대응함 - ;
    대응하는 상기 데이터 패킷이 서빙 피어로부터 상기 클라이언트에 의해 수신될 때 대응하는 상기 패킷 요청 큐로부터 각각의 요청을 제거하는
    것을 포함하는 컴퓨터 판독가능 기록 매체.
  14. P2P(peer-to-peer) 네트워크에서 미디어 파일들의 클라이언트-제어 스트리밍을 제공하는 방법으로서,
    인코딩된 미디어 파일의 모든 패킷이 서빙 피어들 중 적어도 하나 상에 캐싱되도록, 인코딩된 미디어 파일의 하나 이상의 패킷을, 이용가능한 서빙 피어 클러스터 내의 하나 이상의 상기 서빙 피어 상에 저장하는 단계 - 상기 인코딩된 미디어 파일은 미디어 헤더 및 미디어 본문(body)을 포함함 - ;
    클라이언트를 이용하여 상기 클라이언트에 이용가능한 서빙 피어의 리스트를 검색하는 단계;
    각각의 이용가능한 서빙 피어에 대하여 상기 클라이언트 상의 개별 패킷 요청 큐를 초기화하는 단계;
    상기 클라이언트로부터 하나 이상의 특정 데이터 패킷에 대한 하나 이상의 클라이언트 요청을 하나 이상의 특정 서빙 피어에 송신하고, 각각의 요청을 대응하는 상기 패킷 요청 큐에 추가하는 단계 - 임의의 서빙 피어에 송신된 상기 클라이언트 요청은, 상기 서빙 피어가 상기 클라이언트 요청에 대한 응답으로 송신되는 데이터 패킷들을 식별할 필요가 없도록, 신뢰성 있고 순서가 보존되는 링크를 통하여 상기 서빙 피어에 제공됨 - ;
    대응하는 상기 데이터 패킷이 서빙 피어로부터 상기 클라이언트에 의해 수신될 때 대응하는 상기 패킷 요청 큐로부터 각각의 요청을 제거하는 단계; 및
    상기 수신된 데이터 패킷을 디코딩하고 렌더링하여, 스트리밍 미디어 재생을 상기 클라이언트에 제공하는 단계
    를 포함하는 방법.
  15. 제14항에 있어서,
    각각의 이용가능한 서빙 피어로부터 이용가능성 벡터를 상기 클라이언트에 다운로드하는 단계를 더 포함하고,
    각각의 이용가능성 벡터는 각각의 대응하는 서빙 피어에 저장된 이용가능한 데이터 패킷을 기술하고,
    하나 이상의 특정 데이터 패킷에 대한 상기 클라이언트 요청은 상기 다운로드된 이용가능성 벡터에 기초하는 방법.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020050071698A 2004-09-03 2005-08-05 피어-투-피어 네트워크에서의 수신자 구동형 스트리밍을위한 시스템 및 방법 KR101183430B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/934,823 US7664109B2 (en) 2004-09-03 2004-09-03 System and method for distributed streaming of scalable media
US10/934,823 2004-09-03
US10/951,482 2004-09-28
US10/951,482 US7174385B2 (en) 2004-09-03 2004-09-28 System and method for receiver-driven streaming in a peer-to-peer network

Publications (2)

Publication Number Publication Date
KR20060050257A KR20060050257A (ko) 2006-05-19
KR101183430B1 true KR101183430B1 (ko) 2012-09-17

Family

ID=35447794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050071698A KR101183430B1 (ko) 2004-09-03 2005-08-05 피어-투-피어 네트워크에서의 수신자 구동형 스트리밍을위한 시스템 및 방법

Country Status (4)

Country Link
US (3) US7174385B2 (ko)
EP (1) EP1643716B1 (ko)
JP (1) JP4920220B2 (ko)
KR (1) KR101183430B1 (ko)

Families Citing this family (291)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7391865B2 (en) 1999-09-20 2008-06-24 Security First Corporation Secure data parser method and system
US7649901B2 (en) * 2000-02-08 2010-01-19 Mips Technologies, Inc. Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing
US7139901B2 (en) * 2000-02-08 2006-11-21 Mips Technologies, Inc. Extended instruction set for packet processing applications
US8544038B2 (en) * 2006-12-08 2013-09-24 Sirius Xm Radio Inc. System for insertion of locally cached information into a received broadcast stream
GB0031157D0 (en) * 2000-12-20 2001-01-31 Ncr Int Inc Streaming of data
NL1017388C2 (nl) * 2001-02-16 2002-08-19 Marc Van Oldenborgh Organisch datanetwerk met een dynamische topologie.
US8713623B2 (en) 2001-09-20 2014-04-29 Time Warner Cable Enterprises, LLC Technique for effectively providing program material in a cable television system
EP1510031A4 (en) 2002-05-06 2009-02-04 Syncronation Inc LOCALIZED AUDIO NETWORKS AND ASSOCIATED DIGITAL TOOLS
US20040107242A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Peer-to-peer content broadcast transfer mechanism
US7146185B2 (en) * 2003-06-12 2006-12-05 Richard Lane Mobile station-centric method for managing bandwidth and QoS in error-prone system
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
US8868772B2 (en) 2004-04-30 2014-10-21 Echostar Technologies L.L.C. Apparatus, system, and method for adaptive-rate shifting of streaming content
US8266429B2 (en) 2004-07-20 2012-09-11 Time Warner Cable, Inc. Technique for securely communicating and storing programming material in a trusted domain
US8312267B2 (en) 2004-07-20 2012-11-13 Time Warner Cable Inc. Technique for securely communicating programming content
KR100584323B1 (ko) * 2004-10-04 2006-05-26 삼성전자주식회사 멀티미디어 컨텐츠의 스트리밍 서비스 방법
EP1825412A1 (en) 2004-10-25 2007-08-29 Rick L. Orsini Secure data parser method and system
US20060095582A1 (en) * 2004-10-29 2006-05-04 Narasimhan Nitya Device and method for transferring apportioned data in a mobile ad hoc network
KR100684178B1 (ko) * 2004-11-06 2007-02-20 한국전자통신연구원 강건한 오버레이 멀티캐스트 트리 관리 방법 및 장치
US9723267B2 (en) 2004-12-15 2017-08-01 Time Warner Cable Enterprises Llc Method and apparatus for wideband distribution of content
US7689814B2 (en) * 2004-12-20 2010-03-30 Sony Computer Entertainment Inc. Methods and apparatus for disabling error countermeasures in a processing system
US8102837B2 (en) * 2004-12-30 2012-01-24 Massachusetts Institute Of Technology Network coding approach to rapid information dissemination
US8046426B2 (en) * 2004-12-30 2011-10-25 Massachusetts Institute Of Technology Random linear coding approach to distributed data storage
US20060168291A1 (en) * 2005-01-05 2006-07-27 Van Zoest Alexander Interactive multichannel data distribution system
US7664872B2 (en) * 2005-01-05 2010-02-16 Divx, Inc. Media transfer protocol
US7533182B2 (en) * 2005-01-24 2009-05-12 Starz Media, Llc Portable screening room
US7508812B2 (en) * 2005-01-28 2009-03-24 Research In Motion Limited Socket management for always-on data connections
US7602820B2 (en) 2005-02-01 2009-10-13 Time Warner Cable Inc. Apparatus and methods for multi-stage multiplexing in a network
US7567565B2 (en) 2005-02-01 2009-07-28 Time Warner Cable Inc. Method and apparatus for network bandwidth conservation
US7639627B1 (en) * 2005-02-18 2009-12-29 Sprint Communications Company L.P. System and method for trace replay using parallelized streams
US8219635B2 (en) * 2005-03-09 2012-07-10 Vudu, Inc. Continuous data feeding in a distributed environment
US8904463B2 (en) * 2005-03-09 2014-12-02 Vudu, Inc. Live video broadcasting on distributed networks
US20080022343A1 (en) * 2006-07-24 2008-01-24 Vvond, Inc. Multiple audio streams
US9176955B2 (en) * 2005-03-09 2015-11-03 Vvond, Inc. Method and apparatus for sharing media files among network nodes
US20060230107A1 (en) * 2005-03-15 2006-10-12 1000 Oaks Hu Lian Technology Development Co., Ltd. Method and computer-readable medium for multimedia playback and recording in a peer-to-peer network
US20060224759A1 (en) * 2005-03-15 2006-10-05 1000 Oaks Hu Lian Technology Development Co., Ltd. System and method for a peer-to-peer streaming content operation by a browser plug-in
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
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
US8370514B2 (en) 2005-04-28 2013-02-05 DISH Digital L.L.C. System and method of minimizing network bandwidth retrieved from an external network
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
US8099511B1 (en) * 2005-06-11 2012-01-17 Vudu, Inc. Instantaneous media-on-demand
US20060287994A1 (en) * 2005-06-15 2006-12-21 George David A Method and apparatus for creating searches in peer-to-peer networks
TWI318833B (en) * 2005-06-22 2009-12-21 Asustek Comp Inc Network device, local network system, and network transmitting method
US20070011343A1 (en) * 2005-06-28 2007-01-11 Microsoft Corporation Reducing startup latencies in IP-based A/V stream distribution
JP2007028364A (ja) * 2005-07-20 2007-02-01 Matsushita Electric Ind Co Ltd 通信制御装置、受信装置、集積回路、及び通信制御方法
US20070022459A1 (en) 2005-07-20 2007-01-25 Gaebel Thomas M Jr Method and apparatus for boundary-based network operation
US8250137B1 (en) * 2005-09-19 2012-08-21 Apple Inc. Peer to peer component distribution
US8224968B1 (en) 2005-09-19 2012-07-17 At&T Intellectual Property Ii, L.P. Method and system for scalable content storage and delivery
US7644173B1 (en) * 2005-09-26 2010-01-05 Roxbeam Media Network Corporation System and method for facilitating expedited delivery of media content
US8775655B2 (en) * 2005-10-21 2014-07-08 Roxbeam Media Network Corporation System and method for presenting streaming media content
CA2629015A1 (en) 2005-11-18 2008-05-08 Rick L. Orsini Secure data parser method and system
JP5095631B2 (ja) * 2006-01-25 2012-12-12 フランス・テレコム マルチブロードキャストデータ伝送の信頼性を改善するシステム
US20070180079A1 (en) * 2006-01-30 2007-08-02 Santrum Networks Inc. Method and system for peer-to-peer stream
US7480848B2 (en) * 2006-02-10 2009-01-20 The Directv Group, Inc. Methods and apparatus to select tornado error correction parameters
US8904456B2 (en) * 2006-02-13 2014-12-02 Tvu Networks Corporation Methods, apparatus, and systems for providing media content over a communications network
US8458753B2 (en) 2006-02-27 2013-06-04 Time Warner Cable Enterprises Llc Methods and apparatus for device capabilities discovery and utilization within a content-based network
US8170065B2 (en) 2006-02-27 2012-05-01 Time Warner Cable Inc. Methods and apparatus for selecting digital access technology for programming and data delivery
US8718100B2 (en) 2006-02-27 2014-05-06 Time Warner Cable Enterprises Llc Methods and apparatus for selecting digital interface technology for programming and data delivery
US8725845B2 (en) * 2006-03-16 2014-05-13 Exceptional Innovation Llc Automation control system having a configuration tool
US8209398B2 (en) * 2006-03-16 2012-06-26 Exceptional Innovation Llc Internet protocol based media streaming solution
US7966083B2 (en) * 2006-03-16 2011-06-21 Exceptional Innovation Llc Automation control system having device scripting
US8155142B2 (en) * 2006-03-16 2012-04-10 Exceptional Innovation Llc Network based digital access point device
US8001219B2 (en) * 2006-03-16 2011-08-16 Exceptional Innovation, Llc User control interface for convergence and automation system
EP2005704B1 (en) * 2006-03-27 2014-08-27 Rayv Inc. Realtime media distribution in a P2P network
US8271881B2 (en) 2006-04-20 2012-09-18 Exceptional Innovation, Llc Touch screen for convergence and automation system
US8738778B2 (en) * 2006-04-26 2014-05-27 Bittorrent, Inc. Peer-to-peer download and seed policy management
US7706260B2 (en) 2006-04-26 2010-04-27 Bittorrent, Inc. End-system dynamic rate limiting of background traffic
JP2007298056A (ja) * 2006-04-27 2007-11-15 Tsubakimoto Chain Co 防食性ローラチェーン
US8280982B2 (en) 2006-05-24 2012-10-02 Time Warner Cable Inc. Personal content server apparatus and methods
US9386327B2 (en) 2006-05-24 2016-07-05 Time Warner Cable Enterprises Llc Secondary content insertion apparatus and methods
US7925781B1 (en) * 2006-05-26 2011-04-12 The Hong Kong University Of Science And Technology Distributed storage to support user interactivity in peer-to-peer video 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
US8676882B2 (en) * 2007-02-27 2014-03-18 Sony Corporation System and method for preloading content segments to client devices in an electronic network
US8024762B2 (en) 2006-06-13 2011-09-20 Time Warner Cable Inc. Methods and apparatus for providing virtual content over a network
US8401535B2 (en) * 2006-06-19 2013-03-19 Samsung Electronics Co., Ltd. System, a method, and an apparatus for sharing an updated content with peers
BRPI0621786A2 (pt) * 2006-06-27 2011-12-20 Thomson Licensing solicitação de conteúdo entre parcerias com desempenho monitorado
CN100452741C (zh) * 2006-06-29 2009-01-14 腾讯科技(深圳)有限公司 一种可扩展的p2p流媒体系统
US8150966B2 (en) 2006-07-20 2012-04-03 Thomson Licensing Multi-party cooperative peer-to-peer video streaming
GB2440774B (en) * 2006-08-11 2011-07-27 Cachelogic Ltd Content Delivery System For Digital Object
US8296812B1 (en) 2006-09-01 2012-10-23 Vudu, Inc. Streaming video using erasure encoding
US20100011103A1 (en) * 2006-09-28 2010-01-14 Rayv Inc. System and methods for peer-to-peer media streaming
US8520850B2 (en) 2006-10-20 2013-08-27 Time Warner Cable Enterprises Llc Downloadable security and protection methods and apparatus
US20080098123A1 (en) * 2006-10-24 2008-04-24 Microsoft Corporation Hybrid Peer-to-Peer Streaming with Server Assistance
US8732854B2 (en) 2006-11-01 2014-05-20 Time Warner Cable Enterprises Llc Methods and apparatus for premises content distribution
WO2008073658A2 (en) * 2006-11-09 2008-06-19 Exceptional Innovation, Llc. Portable device for convergence and automation solution
US9386056B1 (en) * 2006-11-14 2016-07-05 Arris Enterprises, Inc. System, method and computer readable medium for providing media stream fragments
US20080133767A1 (en) * 2006-11-22 2008-06-05 Metis Enterprise Technologies Llc Real-time multicast peer-to-peer video streaming platform
KR100836619B1 (ko) * 2006-11-24 2008-06-10 엔에이치엔(주) P2p 시스템에서 피어 관리 서버 및 피어 관리 방법
US20080222236A1 (en) * 2006-11-27 2008-09-11 Christopher James Nason Method and system for processing data on a plurality of communication devices
US7996550B2 (en) * 2006-11-30 2011-08-09 Red Hat, Inc. Peer-to-peer download with quality of service fallback
US20080133545A1 (en) * 2006-12-04 2008-06-05 Electronics And Telecommunications Research Institute Terminal devices with function of distributing data and method and system for distributing multimedia data using the same
US9729829B2 (en) * 2006-12-05 2017-08-08 Crackle, Inc. Video sharing platform providing for posting content to other websites
EP2482218A3 (en) * 2006-12-05 2012-10-31 Security First Corporation Improved storage backup method using a secure data parser
EP1936497A3 (en) * 2006-12-20 2009-04-08 NCR Corporation Automated wide area software distribution with reduced network bandwidth requirements
US20080160911A1 (en) * 2006-12-27 2008-07-03 Goosean Media Inc. P2P-based broadcast system and method using the same
US8621540B2 (en) 2007-01-24 2013-12-31 Time Warner Cable Enterprises Llc Apparatus and methods for provisioning in a download-enabled system
US20080189429A1 (en) * 2007-02-02 2008-08-07 Sony Corporation Apparatus and method for peer-to-peer streaming
DE102007007344A1 (de) 2007-02-14 2008-08-28 Siemens Ag Verfahren zum Verteilen zumindest eines Datensegments mindestens eines Datenstroms an eine Gruppe von mehreren Nutzern in einem Netzwerk, sowie ein Nutzer und ein System
KR20090000582A (ko) * 2007-02-27 2009-01-08 삼성전자주식회사 스트리밍 데이터를 중계하는 방법 및 장치
US20080209053A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation HTTP-Based Peer-to-Peer Framework
JP5029685B2 (ja) * 2007-02-28 2012-09-19 富士通株式会社 バックアップ装置
US7630370B2 (en) 2007-02-28 2009-12-08 Sharp Laboratories Of America, Inc. Overlay join latency reduction using preferred peer list
US8181206B2 (en) 2007-02-28 2012-05-15 Time Warner Cable Inc. Personal content server apparatus and methods
JP5319072B2 (ja) * 2007-03-16 2013-10-16 ソフトバンクBb株式会社 データ転送システム及びデータ転送方法
US20080235746A1 (en) * 2007-03-20 2008-09-25 Michael James Peters Methods and apparatus for content delivery and replacement in a network
US20080244075A1 (en) * 2007-03-29 2008-10-02 Deh-Yung Kuo High performance real-time data multiplexer
US8019830B2 (en) * 2007-04-16 2011-09-13 Mark Thompson Methods and apparatus for acquiring file segments
WO2008137432A2 (en) * 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network
US8024723B2 (en) * 2007-05-18 2011-09-20 Samsung Electronics Co., Ltd. System and method for peer-to-peer datacasting in a broadcasting network
US20080294788A1 (en) * 2007-05-21 2008-11-27 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Systems and methods for p2p streaming
US7860081B2 (en) * 2007-05-31 2010-12-28 International Business Machines Corporation Optimization process and system for multiplexed gateway architecture
US10419360B2 (en) 2007-05-31 2019-09-17 International Business Machines Corporation Market-driven variable price offerings for bandwidth-sharing ad hoc networks
US8040863B2 (en) * 2007-05-31 2011-10-18 International Business Machines Corporation Demand pull and supply push communication methodologies
US7979311B2 (en) * 2007-05-31 2011-07-12 International Business Machines Corporation Payment transfer strategies for bandwidth sharing in ad hoc networks
US8249984B2 (en) * 2007-05-31 2012-08-21 International Business Machines Corporation System and method for fair-sharing in bandwidth sharing ad-hoc networks
US8520535B2 (en) 2007-05-31 2013-08-27 International Business Machines Corporation Optimization process and system for a heterogeneous ad hoc Network
US7817623B2 (en) * 2007-05-31 2010-10-19 International Business Machines Corporation Optimization process and system for non-multiplexed peer-to-peer architecture
US7873019B2 (en) * 2007-05-31 2011-01-18 International Business Machines Corporation Systems and methods for establishing gateway bandwidth sharing ad-hoc networks
US8620784B2 (en) 2007-05-31 2013-12-31 International Business Machines Corporation Formation and rearrangement of ad hoc networks
US8320414B2 (en) 2007-05-31 2012-11-27 International Business Machines Corporation Formation and rearrangement of lender devices that perform multiplexing functions
US7898993B2 (en) * 2007-05-31 2011-03-01 International Business Machines Corporation Efficiency and resiliency enhancements for transition states in ad hoc networks
US7843861B2 (en) * 2007-05-31 2010-11-30 International Business Machines Corporation Coalition formation and service provisioning of bandwidth sharing AD HOC networks
US10623998B2 (en) 2007-05-31 2020-04-14 International Business Machines Corporation Price offerings for bandwidth-sharing ad hoc networks
CN101102312B (zh) * 2007-06-11 2010-06-02 华为技术有限公司 一种网络通信数据处理方法、网络通信系统及客户端
US8051362B2 (en) * 2007-06-15 2011-11-01 Microsoft Corporation Distributed data storage using erasure resilient coding
WO2009005747A1 (en) * 2007-06-28 2009-01-08 The Trustees Of Columbia University In The City Of New York Set-top box peer-assisted video-on-demand
WO2009002325A1 (en) * 2007-06-28 2008-12-31 Thomson Licensing Queue-based adaptive chunk scheduling for peer-to-peer live streaming
US8316146B2 (en) * 2007-07-13 2012-11-20 Spotify Ab Peer-to-peer streaming of media content
US8307024B2 (en) * 2007-07-20 2012-11-06 Hewlett-Packard Development Company, L.P. Assisted peer-to-peer media streaming
US8625607B2 (en) 2007-07-24 2014-01-07 Time Warner Cable Enterprises Llc Generation, distribution and use of content metadata in a network
US8296461B2 (en) * 2007-08-07 2012-10-23 Object Innovation Inc. Data transformation and exchange
JP5007624B2 (ja) * 2007-08-10 2012-08-22 ブラザー工業株式会社 コンテンツ分散保存システム、コンテンツデータ取得方法、ノード装置、及びノード処理プログラム
US8078729B2 (en) * 2007-08-21 2011-12-13 Ntt Docomo, Inc. Media streaming with online caching and peer-to-peer forwarding
US8214475B1 (en) * 2007-08-30 2012-07-03 Amazon Technologies, Inc. System and method for managing content interest data using peer-to-peer logical mesh networks
CN101790876A (zh) * 2007-08-30 2010-07-28 汤姆逊许可证公司 用于无线网格网络中的内容服务的统一对等和缓存系统
US8386630B1 (en) * 2007-09-09 2013-02-26 Arris Solutions, Inc. Video-aware P2P streaming and download with support for real-time content alteration
WO2009036461A2 (en) * 2007-09-13 2009-03-19 Lightspeed Audio Labs, Inc. System and method for streamed-media distribution using a multicast, peer-to-peer network
KR100919254B1 (ko) * 2007-09-19 2009-09-30 주식회사 그래텍 유디피 홀펀칭을 이용한 피어 대 피어 데이터 전송을 통해스트리밍 데이터를 분산 전송하는 분산 스트리밍 시스템 및그 방법
US8015311B2 (en) * 2007-09-21 2011-09-06 Polytechnic Institute Of New York University Reducing or minimizing delays in peer-to-peer communications such as peer-to-peer video streaming
US8561116B2 (en) 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
US9071859B2 (en) 2007-09-26 2015-06-30 Time Warner Cable Enterprises Llc Methods and apparatus for user-based targeted content delivery
US8392604B2 (en) * 2007-10-09 2013-03-05 Yahoo! Inc. Peer to peer browser content caching
US8099757B2 (en) 2007-10-15 2012-01-17 Time Warner Cable Inc. Methods and apparatus for revenue-optimized delivery of content in a network
US8606846B2 (en) * 2007-10-15 2013-12-10 Nbcuniversal Media, Llc Accelerating peer-to-peer content distribution
US20090100128A1 (en) * 2007-10-15 2009-04-16 General Electric Company Accelerating peer-to-peer content distribution
CN100568957C (zh) * 2007-10-17 2009-12-09 华中科技大学 一种基于p2p技术的视频点播节目缓存方法
US7975282B2 (en) * 2007-11-01 2011-07-05 Sharp Laboratories Of America, Inc. Distributed cache algorithms and system for time-shifted, and live, peer-to-peer video streaming
US7979419B2 (en) * 2007-11-01 2011-07-12 Sharp Laboratories Of America, Inc. Distributed search methods for time-shifted and live peer-to-peer video streaming
US8019856B1 (en) * 2007-11-07 2011-09-13 Trend Micro Incorporated Automatic mapping and location discovery of computers in computer networks
CN101459585B (zh) * 2007-12-14 2010-11-03 中国科学院声学研究所 一种p2p流媒体数据请求方法
CN101459584B (zh) * 2007-12-14 2011-03-16 中国科学院声学研究所 一种p2p流媒体数据请求末端处理方法
US8804627B2 (en) * 2007-12-19 2014-08-12 Qualcomm Incorporated Method and apparatus for improving performance of erasure sequence detection
WO2009080111A1 (en) * 2007-12-21 2009-07-02 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing media over a communications network
GB2468057A (en) * 2007-12-21 2010-08-25 Ericsson Telefon Ab L M Method and apparatus for distributing media over a communications network
GB2468068B (en) * 2007-12-21 2012-10-10 Ericsson Telefon Ab L M Method and apparatus for distributing media over a communications network
US9769255B2 (en) 2007-12-24 2017-09-19 Core Wireless Licensing S.A.R.L. Continuous scheduling for peer-to-peer streaming
CN101472166B (zh) 2007-12-26 2011-11-16 华为技术有限公司 一种内容缓存、查询方法及点对点媒体传输系统
EP2081363A1 (en) * 2008-01-15 2009-07-22 Thomson Licensing, Inc. System and method for selecting a set of serving peers
US8260952B2 (en) * 2008-01-31 2012-09-04 Microsoft Corporation Multi-rate peer-assisted data streaming
US9503691B2 (en) 2008-02-19 2016-11-22 Time Warner Cable Enterprises Llc Methods and apparatus for enhanced advertising and promotional delivery in a network
US8300541B2 (en) * 2008-02-19 2012-10-30 Time Warner Cable Inc. Apparatus and methods for utilizing statistical multiplexing to ensure quality of service in a network
GB2469763B (en) * 2008-02-22 2011-03-09 Ericsson Telefon Ab L M Method and apparatus for obtaining media over a communications network
CN104283880A (zh) * 2008-02-22 2015-01-14 安全第一公司 安全工作组管理和通信的系统和方法
WO2009103343A1 (en) * 2008-02-22 2009-08-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for distributing media over a communications network
GB0804192D0 (en) * 2008-02-22 2008-04-16 Ericsson Telefon Ab L M Method and apparatus for obtaining media over a communications network
US8316108B2 (en) 2008-02-22 2012-11-20 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for obtaining media over a communications network
US8813143B2 (en) 2008-02-26 2014-08-19 Time Warner Enterprises LLC Methods and apparatus for business-based network resource allocation
KR20100136472A (ko) * 2008-02-27 2010-12-28 톰슨 라이센싱 분산적 계층적 클러스터링된 피어-투-피어 라이브 스트리밍 시스템
CN101237339B (zh) * 2008-03-11 2010-12-08 东南大学 基于分层点对点组播网络的流媒体传输方法
US8806046B1 (en) * 2008-03-31 2014-08-12 Symantec Corporation Application streaming and network file system optimization via integration with identity management solutions
US8325800B2 (en) 2008-05-07 2012-12-04 Microsoft Corporation Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers
US8379851B2 (en) * 2008-05-12 2013-02-19 Microsoft Corporation Optimized client side rate control and indexed file layout for streaming media
US7836184B2 (en) * 2008-05-15 2010-11-16 Ray-V Technologies, Ltd. Method for managing the allocation of resources to channel swarms in a peer-to-peer network
WO2010077379A1 (en) 2008-05-23 2010-07-08 Jason Nieh Systems and methods for peer-to-peer bandwidth allocation
US7925774B2 (en) * 2008-05-30 2011-04-12 Microsoft Corporation Media streaming using an index file
US20090313317A1 (en) * 2008-06-12 2009-12-17 Integra Micro Systems (P) Ltd. Wider Delivery Of Multimedia Content
JP5223480B2 (ja) * 2008-06-13 2013-06-26 富士通株式会社 コンテンツ配信方法及び通信端末装置
EP2314038B1 (en) * 2008-06-20 2015-08-12 Telefonaktiebolaget L M Ericsson (publ) System and method for ingesting media content in a peer-to-peer network
US8539092B2 (en) * 2008-07-09 2013-09-17 Apple Inc. Video streaming using multiple channels
US8108537B2 (en) * 2008-07-24 2012-01-31 International Business Machines Corporation Method and system for improving content diversification in data driven P2P streaming using source push
JP4850218B2 (ja) * 2008-07-30 2012-01-11 株式会社ソニー・コンピュータエンタテインメント データ配信システム
JP5340664B2 (ja) * 2008-07-30 2013-11-13 株式会社ソニー・コンピュータエンタテインメント データ配信システム
US8265140B2 (en) * 2008-09-30 2012-09-11 Microsoft Corporation Fine-grained client-side control of scalable media delivery
US7996546B2 (en) * 2008-10-02 2011-08-09 Ray-V Technologies, Ltd. Dynamic allocation of a quota of consumer nodes connecting to a resource node of a peer-to-peer network
US20100088520A1 (en) * 2008-10-02 2010-04-08 Microsoft Corporation Protocol for determining availability of peers in a peer-to-peer storage system
US8650301B2 (en) 2008-10-02 2014-02-11 Ray-V Technologies, Ltd. Adaptive data rate streaming in a peer-to-peer network delivering video content
US20100094971A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Termination of fragment delivery services from data centers participating in distributed streaming operations
US7818445B2 (en) * 2008-10-15 2010-10-19 Patentvc Ltd. Methods and devices for obtaining a broadcast-like streaming content
US8166170B2 (en) * 2008-10-26 2012-04-24 Imagine Communications Ltd. Distributed multiplexing
US8775456B2 (en) * 2008-11-03 2014-07-08 Bmc Software, Inc. System and method for scheduled and collaborative distribution of software and data to many thousands of clients over a network using dynamic virtual proxies
JP5096293B2 (ja) * 2008-11-05 2012-12-12 日本電信電話株式会社 コンテンツ配信支援システムと方法およびプログラム
US9357247B2 (en) 2008-11-24 2016-05-31 Time Warner Cable Enterprises Llc Apparatus and methods for content delivery and message exchange across multiple content delivery networks
EP2192746A1 (en) * 2008-11-26 2010-06-02 Thomson Licensing Method and apparatus for receiving content
US8452886B2 (en) * 2008-12-04 2013-05-28 Microsoft Corporation Peer-to-peer packet scheduling algorithm
EP2204965B1 (en) * 2008-12-31 2016-07-27 Google Technology Holdings LLC Device and method for receiving scalable content from multiple sources having different content quality
US20100185769A1 (en) * 2009-01-16 2010-07-22 Amlogic Co., Ltd. Methods for Downloading a File to Consumer Electronic Devices via a Peer-to-peer Network
GB2467743A (en) * 2009-02-11 2010-08-18 Sony Corp Video server and method of distributing media over a network
US8838824B2 (en) * 2009-03-16 2014-09-16 Onmobile Global Limited Method and apparatus for delivery of adapted media
US9215423B2 (en) 2009-03-30 2015-12-15 Time Warner Cable Enterprises Llc Recommendation engine apparatus and methods
US11076189B2 (en) 2009-03-30 2021-07-27 Time Warner Cable Enterprises Llc Personal media channel apparatus and methods
JP5757536B2 (ja) 2009-05-19 2015-07-29 セキュリティー ファースト コープ. クラウド内にデータを確保するシステムおよび方法
US11064023B2 (en) 2009-05-27 2021-07-13 Verizon Media Inc. Method for actively sharing available bandwidth to consumer nodes in a peer-to-peer network for delivery of video streams
US8375129B2 (en) * 2009-05-27 2013-02-12 Ray-V Technologies, Ltd. Method for dynamically adjusting resource nodes in a peer-to-peer network for delivering time-sensitive content
US8326992B2 (en) * 2009-05-27 2012-12-04 Ray-V Technologies, Ltd. Controlling the provision of resources for streaming of video swarms in a peer-to-peer network
WO2010138972A2 (en) * 2009-05-29 2010-12-02 Abacast, Inc. Selective access of multi-rate data from a server and/or peer
US9602864B2 (en) 2009-06-08 2017-03-21 Time Warner Cable Enterprises Llc Media bridge apparatus and methods
US9866609B2 (en) * 2009-06-08 2018-01-09 Time Warner Cable Enterprises Llc Methods and apparatus for premises content distribution
IT1398195B1 (it) * 2009-06-25 2013-02-14 St Microelectronics Srl "procedimento e sistema per la distribuzione di contenuti informativi, relativo prodotto informatico"
CN101938505B (zh) * 2009-07-01 2013-01-30 华为技术有限公司 一种P2P流媒体数据分发的方法、系统和proxy节点
US8813124B2 (en) 2009-07-15 2014-08-19 Time Warner Cable Enterprises Llc Methods and apparatus for targeted secondary content insertion
US9237381B2 (en) 2009-08-06 2016-01-12 Time Warner Cable Enterprises Llc Methods and apparatus for local channel insertion in an all-digital content distribution network
US8396055B2 (en) 2009-10-20 2013-03-12 Time Warner Cable Inc. Methods and apparatus for enabling media functionality in a content-based network
US10264029B2 (en) * 2009-10-30 2019-04-16 Time Warner Cable Enterprises Llc Methods and apparatus for packetized content delivery over a content delivery network
US9635421B2 (en) 2009-11-11 2017-04-25 Time Warner Cable Enterprises Llc Methods and apparatus for audience data collection and analysis in a content delivery network
US8149831B2 (en) * 2009-11-19 2012-04-03 Alcatel Lucent Technique for packet compression in an application level multicast
US8745372B2 (en) 2009-11-25 2014-06-03 Security First Corp. Systems and methods for securing data in motion
US9519728B2 (en) * 2009-12-04 2016-12-13 Time Warner Cable Enterprises Llc Apparatus and methods for monitoring and optimizing delivery of content in a network
US10009396B2 (en) * 2009-12-11 2018-06-26 Thomson Licensing Queue-based adaptive chunk scheduling for peer-to-peer live streaming
FR2954879A1 (fr) * 2009-12-29 2011-07-01 France Telecom Procede et dispositif de transmission de contenu
US9510029B2 (en) 2010-02-11 2016-11-29 Echostar Advanced Technologies L.L.C. Systems and methods to provide trick play during streaming playback
US9342661B2 (en) 2010-03-02 2016-05-17 Time Warner Cable Enterprises Llc Apparatus and methods for rights-managed content and data delivery
KR101662843B1 (ko) * 2010-03-05 2016-10-14 삼성전자주식회사 데이터 통신 망에서의 스트리밍 서비스 장치 및 방법
US8447875B2 (en) * 2010-03-10 2013-05-21 Thomson Licensing Unified cache and peer-to-peer method and apparatus for streaming media in wireless mesh networks
US20110225312A1 (en) * 2010-03-10 2011-09-15 Thomson Licensing Unified cache and peer-to-peer method and apparatus for streaming media in wireless mesh networks
WO2011123699A2 (en) 2010-03-31 2011-10-06 Orsini Rick L Systems and methods for securing data in motion
US20110264530A1 (en) 2010-04-23 2011-10-27 Bryan Santangelo Apparatus and methods for dynamic secondary content and data insertion and delivery
EP2569941A2 (en) 2010-05-12 2013-03-20 SMSC Holdings S.à.r.l. Systems and methods for operating media devices
US9300445B2 (en) 2010-05-27 2016-03-29 Time Warner Cable Enterprise LLC Digital domain content processing and distribution apparatus and methods
JP2013528332A (ja) 2010-05-27 2013-07-08 エスエムエスシイ・ホールディングス・エス エイ アール エル メディアストリームのシームレスな転送
EP2577936A2 (en) 2010-05-28 2013-04-10 Lawrence A. Laurich Accelerator system for use with secure data storage
US9906838B2 (en) 2010-07-12 2018-02-27 Time Warner Cable Enterprises Llc Apparatus and methods for content delivery and message exchange across multiple content delivery networks
US8997136B2 (en) 2010-07-22 2015-03-31 Time Warner Cable Enterprises Llc Apparatus and methods for packetized content delivery over a bandwidth-efficient network
GB2483088B (en) * 2010-08-26 2012-07-18 Giraffic Technologies Ltd Asynchronous data streaming in a peer-to-peer network
US9185341B2 (en) 2010-09-03 2015-11-10 Time Warner Cable Enterprises Llc Digital domain content processing and distribution apparatus and methods
US20120303834A1 (en) * 2010-10-07 2012-11-29 Stellatus, LLC Seamless digital streaming over different device types
TWI415427B (zh) * 2010-11-04 2013-11-11 Ind Tech Res Inst 同儕即時串流系統與方法
US8930979B2 (en) 2010-11-11 2015-01-06 Time Warner Cable Enterprises Llc Apparatus and methods for identifying and characterizing latency in a content delivery network
US10148623B2 (en) 2010-11-12 2018-12-04 Time Warner Cable Enterprises Llc Apparatus and methods ensuring data privacy in a content distribution network
US9602414B2 (en) 2011-02-09 2017-03-21 Time Warner Cable Enterprises Llc Apparatus and methods for controlled bandwidth reclamation
US9258625B2 (en) * 2011-04-19 2016-02-09 Sensormatic Electronics, LLC Method and system for load balancing between a video server and client
US8930959B2 (en) 2011-05-13 2015-01-06 Orions Digital Systems, Inc. Generating event definitions based on spatial and relational relationships
US8676993B1 (en) * 2011-06-21 2014-03-18 Google Inc. Bundled transmission control protocol connections
US8903908B2 (en) 2011-07-07 2014-12-02 Blackberry Limited Collaborative media sharing
US20130031241A1 (en) * 2011-07-29 2013-01-31 Nico Schwan Distributed service instantiation for information-centric networks
JP2014531142A (ja) 2011-08-16 2014-11-20 デスティニーソフトウェアプロダクションズ インク スクリプトをベースとするビデオ・レンダリング
CA2849853C (en) * 2011-10-05 2017-12-12 Peerialism AB Method and device for arranging peers in a live streaming p2p network
US9160697B2 (en) * 2012-01-01 2015-10-13 Qualcomm Incorporated Data delivery optimization
US9612902B2 (en) 2012-03-12 2017-04-04 Tvu Networks Corporation Methods and apparatus for maximum utilization of a dynamic varying digital data channel
US9467723B2 (en) 2012-04-04 2016-10-11 Time Warner Cable Enterprises Llc Apparatus and methods for automated highlight reel creation in a content delivery network
US9489193B2 (en) 2012-05-01 2016-11-08 Sophos Limited Method and system for providing software updates to local machines
JP2013258657A (ja) * 2012-06-14 2013-12-26 Nippon Hoso Kyokai <Nhk> P2pネットワークサービスに用いる端末装置及びプログラム
US9854280B2 (en) 2012-07-10 2017-12-26 Time Warner Cable Enterprises Llc Apparatus and methods for selective enforcement of secondary content viewing
US20140082645A1 (en) 2012-09-14 2014-03-20 Peter Stern Apparatus and methods for providing enhanced or interactive features
KR101481122B1 (ko) 2012-11-30 2015-01-14 성균관대학교산학협력단 클라우드 컴퓨팅 기반의 트랜스코딩을 위한 동적 캐시 관리 방법 및 시스템
US9565472B2 (en) 2012-12-10 2017-02-07 Time Warner Cable Enterprises Llc Apparatus and methods for content transfer protection
US9131283B2 (en) 2012-12-14 2015-09-08 Time Warner Cable Enterprises Llc Apparatus and methods for multimedia coordination
US9544366B2 (en) * 2012-12-19 2017-01-10 Hive Streaming Ab Highest bandwidth 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
US9680926B2 (en) 2012-12-19 2017-06-13 Hive Streaming Ab Nearest peer download request policy in a live streaming P2P network
US20140282786A1 (en) 2013-03-12 2014-09-18 Time Warner Cable Enterprises Llc Methods and apparatus for providing and uploading content to personalized network storage
US9066153B2 (en) 2013-03-15 2015-06-23 Time Warner Cable Enterprises Llc Apparatus and methods for multicast delivery of content in a content delivery network
US10368255B2 (en) 2017-07-25 2019-07-30 Time Warner Cable Enterprises Llc Methods and apparatus for client-based dynamic control of connections to co-existing radio access networks
US9282148B2 (en) * 2013-06-06 2016-03-08 Dell Products L.P. Multi-user peer-to-peer collaboration system and method
US9313568B2 (en) 2013-07-23 2016-04-12 Chicago Custom Acoustics, Inc. Custom earphone with dome in the canal
US9462032B2 (en) * 2013-07-24 2016-10-04 Google Inc. Streaming media content
US9699236B2 (en) * 2013-12-17 2017-07-04 At&T Intellectual Property I, L.P. System and method of adaptive bit-rate streaming
US10116740B2 (en) * 2013-12-27 2018-10-30 Microsoft Technology Licensing, Llc Peer-to-peer network prioritizing propagation of objects through the network
JP6369024B2 (ja) * 2014-01-09 2018-08-08 富士通株式会社 映像配信システム及び映像配信システムにおいて使用されるノード装置
US9621940B2 (en) 2014-05-29 2017-04-11 Time Warner Cable Enterprises Llc Apparatus and methods for recording, accessing, and delivering packetized content
US11540148B2 (en) 2014-06-11 2022-12-27 Time Warner Cable Enterprises Llc Methods and apparatus for access point location
US9961373B2 (en) * 2014-06-27 2018-05-01 Panasonic Avionics Corporation Vehicle entertainment system
US9935833B2 (en) 2014-11-05 2018-04-03 Time Warner Cable Enterprises Llc Methods and apparatus for determining an optimized wireless interface installation configuration
US10116676B2 (en) 2015-02-13 2018-10-30 Time Warner Cable Enterprises Llc Apparatus and methods for data collection, analysis and service modification based on online activity
US9986578B2 (en) 2015-12-04 2018-05-29 Time Warner Cable Enterprises Llc Apparatus and methods for selective data network access
US10237589B2 (en) * 2015-12-15 2019-03-19 Telefonaktiebolaget Lm Ericsson (Publ) System and method for facilitating fast channel change
US9918345B2 (en) 2016-01-20 2018-03-13 Time Warner Cable Enterprises Llc Apparatus and method for wireless network services in moving vehicles
US10075563B2 (en) * 2016-02-05 2018-09-11 Gridraster, Inc. Network and video/audio system and method for gaming and virtual reality
EP3286648B1 (en) 2016-02-12 2020-08-26 Hewlett-Packard Enterprise Development LP Assembling operating system volumes
US10404758B2 (en) 2016-02-26 2019-09-03 Time Warner Cable Enterprises Llc Apparatus and methods for centralized message exchange in a user premises device
US10492034B2 (en) 2016-03-07 2019-11-26 Time Warner Cable Enterprises Llc Apparatus and methods for dynamic open-access networks
US10687115B2 (en) 2016-06-01 2020-06-16 Time Warner Cable Enterprises Llc Cloud-based digital content recorder apparatus and methods
US10164858B2 (en) 2016-06-15 2018-12-25 Time Warner Cable Enterprises Llc Apparatus and methods for monitoring and diagnosing a wireless network
US11212593B2 (en) 2016-09-27 2021-12-28 Time Warner Cable Enterprises Llc Apparatus and methods for automated secondary content management in a digital network
US10911794B2 (en) 2016-11-09 2021-02-02 Charter Communications Operating, Llc Apparatus and methods for selective secondary content insertion in a digital network
US10645547B2 (en) 2017-06-02 2020-05-05 Charter Communications Operating, Llc Apparatus and methods for providing wireless service in a venue
US10638361B2 (en) 2017-06-06 2020-04-28 Charter Communications Operating, Llc Methods and apparatus for dynamic control of connections to co-existing radio access networks
US11553014B2 (en) * 2017-07-04 2023-01-10 Vmware, Inc. Downloading of server-based content through peer-to-peer networks
US11109290B2 (en) 2017-08-04 2021-08-31 Charter Communications Operating, Llc Switching connections over frequency bands of a wireless network
US11736406B2 (en) * 2017-11-30 2023-08-22 Comcast Cable Communications, Llc Assured related packet transmission, delivery and processing
US10939142B2 (en) 2018-02-27 2021-03-02 Charter Communications Operating, Llc Apparatus and methods for content storage, distribution and security within a content distribution network
CN112188216A (zh) * 2019-07-05 2021-01-05 腾讯美国有限责任公司 视频数据的编码方法、装置、计算机设备及存储介质
US11917205B2 (en) * 2019-07-05 2024-02-27 Tencent America LLC Techniques and apparatus for scalable lifting for point-cloud attribute coding

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020049760A1 (en) 2000-06-16 2002-04-25 Flycode, Inc. Technique for accessing information in a peer-to-peer network

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603058A (en) * 1994-09-08 1997-02-11 International Business Machines Corporation Video optimized media streamer having communication nodes received digital data from storage node and transmitted said data to adapters for generating isochronous digital data streams
US5712976A (en) * 1994-09-08 1998-01-27 International Business Machines Corporation Video data streamer for simultaneously conveying same one or different ones of data blocks stored in storage node to each of plurality of communication nodes
US6742023B1 (en) * 2000-04-28 2004-05-25 Roxio, Inc. Use-sensitive distribution of data files between users
JP3841256B2 (ja) * 2000-02-15 2006-11-01 三菱電機株式会社 通信システム及び通信方法及び送信端末
US20020059274A1 (en) * 2000-03-03 2002-05-16 Hartsell Neal D. Systems and methods for configuration of information management systems
US7099926B1 (en) * 2000-07-06 2006-08-29 International Business Machines Corporation Object caching and update queuing technique to improve performance and resource utilization
US6829634B1 (en) * 2000-07-31 2004-12-07 The Boeing Company Broadcasting network
JP3699910B2 (ja) * 2000-10-31 2005-09-28 株式会社東芝 データ伝送装置、データ伝送方法及びプログラム
US7062567B2 (en) * 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US20020143959A1 (en) * 2001-04-03 2002-10-03 David El-Baze Method and apparatus for interactive direct peer-to-peer multimedia streaming
US20020172221A1 (en) * 2001-05-18 2002-11-21 Telgen Corporation Distributed communication device and architecture for balancing processing of real-time communication applications
US7440994B2 (en) * 2001-07-06 2008-10-21 Intel Corporation Method and apparatus for peer-to-peer services to shift network traffic to allow for an efficient transfer of information between devices via prioritized list
EP1413119B1 (en) * 2001-08-04 2006-05-17 Kontiki, Inc. Method and apparatus for facilitating distributed delivery of content across a computer network
JP3955989B2 (ja) * 2001-11-29 2007-08-08 株式会社 アンクル ストリームデータ分散配信方法及びそのシステム
US6920501B2 (en) * 2001-12-17 2005-07-19 Ntt Docomo, Inc. Communication socket migration among different devices
US6789123B2 (en) * 2001-12-28 2004-09-07 Microsoft Corporation System and method for delivery of dynamically scalable audio/video content over a network
US7010598B2 (en) * 2002-02-11 2006-03-07 Akamai Technologies, Inc. Method and apparatus for measuring stream availability, quality and performance
US7249264B2 (en) * 2002-04-02 2007-07-24 International Business Machines Corporation Secure IP based streaming in a format independent manner
JP2003309600A (ja) * 2002-04-17 2003-10-31 Bios:Kk コンテンツ配信および再生システムと再生管理システム
US20030204602A1 (en) * 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US20030212804A1 (en) * 2002-05-09 2003-11-13 Ardeshir Hashemi Method and apparatus for media clip sharing over a network
TWI265697B (en) * 2002-06-06 2006-11-01 Ibm Digital contents distribution system, digital contents distribution method, computer readable recording medium storing the program therein, and server and client therefor
JP2004080145A (ja) * 2002-08-12 2004-03-11 Canon Inc 映像サーバシステム及びその映像再生方法
US7225267B2 (en) * 2003-01-27 2007-05-29 Microsoft Corporation Reactive bandwidth control for streaming data
US7555559B2 (en) * 2003-02-28 2009-06-30 Onion Networks, KK Parallel data transfer over multiple channels with data order prioritization
US7395339B2 (en) * 2003-08-07 2008-07-01 International Business Machines Corporation Method and system for providing on-demand media streaming from a user's own library to a receiving device of the user
US8239446B2 (en) * 2003-11-19 2012-08-07 Sony Computer Entertainment America Llc Content distribution architecture
US20050125831A1 (en) * 2003-12-04 2005-06-09 Blanchard Donald E. System and method for broadcasting entertainment related data
US7581158B2 (en) * 2004-03-22 2009-08-25 Codemate A/S Distribution method, preferably applied in a streaming system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020049760A1 (en) 2000-06-16 2002-04-25 Flycode, Inc. Technique for accessing information in a peer-to-peer network

Also Published As

Publication number Publication date
EP1643716A1 (en) 2006-04-05
US7174385B2 (en) 2007-02-06
JP2006079606A (ja) 2006-03-23
KR20060050257A (ko) 2006-05-19
US20070130361A1 (en) 2007-06-07
EP1643716B1 (en) 2013-03-20
US7539767B2 (en) 2009-05-26
US20070130360A1 (en) 2007-06-07
US20060080454A1 (en) 2006-04-13
JP4920220B2 (ja) 2012-04-18
US7752327B2 (en) 2010-07-06

Similar Documents

Publication Publication Date Title
KR101183430B1 (ko) 피어-투-피어 네트워크에서의 수신자 구동형 스트리밍을위한 시스템 및 방법
KR101176648B1 (ko) 스트리밍 미디어의 삭제 코딩을 위한 시스템 및 방법
KR101159332B1 (ko) 확장가능한 미디어의 분산형 스트리밍을 위한 시스템 및방법
Li PeerStreaming: A practical receiver-driven peer-to-peer media streaming system
JP4738900B2 (ja) ピアツーピアコンピュータネットワーク内の効率的な一対多コンテンツ配信
US20070067485A1 (en) Method and system for managing video networks
US20080189429A1 (en) Apparatus and method for peer-to-peer streaming
KR20080106187A (ko) 분산형 네트워크에 저장될 파일들을 인코딩하기 위한 컴퓨터 구현 프로세스 및 이를 실행하기 위한 컴퓨터 판독 가능 매체, 피어 투 피어 네트워크의 저장 신뢰도 및 효율성을 향상시키기 위한 시스템, 및 분산형 네트워크에 저장된 인코딩된 파일을 디코딩하기 위한 컴퓨터 구현 프로세스
KR20030056701A (ko) P2p 방식을 이용한 멀티미디어 스트리밍 장치 및 방법
US20130198151A1 (en) Methods for file sharing related to the bit fountain protocol
KR100919254B1 (ko) 유디피 홀펀칭을 이용한 피어 대 피어 데이터 전송을 통해스트리밍 데이터를 분산 전송하는 분산 스트리밍 시스템 및그 방법
US20100208728A1 (en) Multi-Route Transmission of Packets Within a Network
Zimmerman et al. Retransmission-based error control in a many-to-many client-server environment
JP2004221756A (ja) 情報処理装置および情報処理方法、並びにコンピュータ・プログラム
Alkwai et al. Dynamic quality adaptive P2P streaming system
Chakareski et al. Adaptive p2p video streaming via packet labeling
Veeravalli et al. Distributed Technologies for Multimedia Retrieval Over 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: 20150819

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 7