KR101089562B1 - 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법 - Google Patents

고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법 Download PDF

Info

Publication number
KR101089562B1
KR101089562B1 KR1020100038823A KR20100038823A KR101089562B1 KR 101089562 B1 KR101089562 B1 KR 101089562B1 KR 1020100038823 A KR1020100038823 A KR 1020100038823A KR 20100038823 A KR20100038823 A KR 20100038823A KR 101089562 B1 KR101089562 B1 KR 101089562B1
Authority
KR
South Korea
Prior art keywords
stream
viewing
node
client
information
Prior art date
Application number
KR1020100038823A
Other languages
English (en)
Other versions
KR20110119229A (ko
Inventor
이헌복
선경렬
이석훈
Original Assignee
주식회사 나우콤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 나우콤 filed Critical 주식회사 나우콤
Priority to KR1020100038823A priority Critical patent/KR101089562B1/ko
Priority to PCT/KR2011/002457 priority patent/WO2011136481A2/ko
Publication of KR20110119229A publication Critical patent/KR20110119229A/ko
Application granted granted Critical
Publication of KR101089562B1 publication Critical patent/KR101089562B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • 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/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • 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/765Media network packet handling intermediate

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 P2P 라이브 스트리밍 시스템에 관한 것으로, 보다 상세하게는 이를 통해 실시간 방송을 P2P 네트워크 내 다수의 시청자에게 안정적으로 전송할 수 있게 된다.
이와 같은 본 발명의 특징은 방송 클라이언트로부터 전송되는 원본 스트림을 적어도 둘 이상의 서브 스트림으로 분할하여 시청 네트워크에 채널별로 전송하는 스트리밍 서버; 상기 스트리밍 서버에 채널 할당 정보를 제공하여 서브 스트림의 분할 전송을 지원하고, 상기 시청 네트워크의 각 시청 클라이언트들에게 원본 스트림을 복원할 수 있는 모든 채널의 서브 스트림 접속 정보를 제공하는 릴레이 서버를 포함하되, 상기 시청 네트워크는 적어도 하나 이상의 시청 클라이언트를 포함하고, 시청 네트워크 내 시청 클라이언트들은 상기 릴레이 서버에 의해 할당된 다수의 부모 노드들로부터 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생하고 상기 릴레이 서버에 의해 할당된 다수의 자식 노드들에게 지정된 채널의 서브 스트림을 재전송함으로써 부모 노드 및 자식 노드의 관계가 다 대 다로 연결되는 풀 메시 시청 네트워크로 구성되는 것을 특징으로 한다.

Description

고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법{P2P LIVE STREAMING SYSTEM FOR HIGH-DEFINITION MEDIA BROADCASTING AND THE METHOD THEREFOR}
본 발명은 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 시스템 및 방법에 관한 것으로, 실시간 방송을 P2P 네트워크 내 다수의 시청자에게 안정적으로 전송하기 위한 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 시스템 및 방법에 관한 것이다.
일반적으로 인터넷 방송을 위한 네트워크 구조로는 클라이언트-서버(C/S) 구조나 P2P(Peer to Peer) 구조를 갖는 것으로 분류된다.
클라이언트-서버의 네트워크 구조는 서버를 무조건 경유하여 파일을 공유하는 것을 의미하며, 개인의 컴퓨터는 서버를 경유하여 데이터의 상호 교환이 수행된다.
반면 P2P(Peer to Peer) 네트워크 구조는 인터넷에서 이루어지는 개인 대 개인의 파일 공유를 의미하며, 개인의 컴퓨터 사이를 직접 연결하여 각 컴퓨터가 보유하는 데이터를 상호 검색하여 데이터 교환이 수행된다.
또한 최근에는 인터넷 속도, 즉 전송 대역폭의 증가로 인해 사용자들의 만족도가 커지고 있는데, 이러한 인터넷 관련 기술의 빠른 발전으로 인해 생동감 있는 오디오와 비디오들이 결합된 멀티미디어 콘텐츠를 온라인 검색을 통해 보고들을 수 있도록 해주는 인터넷 서비스가 가능하게 되었다. 그 대표적인 것으로 멀티미디어 스트리밍 서비스이다. 스트리밍(streaming)이란 크기가 큰 오디오 데이터 또는 비디오 데이터를 실행시키는데 있어서 전부 다운로드 받아 실행하는 것이 아니고 여러 개의 파일로 나누어 연이어 실시간 전송하는 것이다.
한편 P2P 실시간 방송의 기존 기술은 도 1에 도시된 바와 같이 통상 트리 구조의 TCP(Transmission Control Protocol) 전송을 구현하고 있다. 이러한 P2P 실시간 방송 시스템은 원본 방송 스트림을 전송하는 방송 클라이언트(1)와, 상기 방송 클라이언트(1)로부터 원본 방송 스트림을 전송받아 실시간으로 배포하는 스트리밍 서버(2)와, 상기 스트리밍 서버로부터 방송 스트림을 전송받아 방송을 재생하는 다수의 시청 클라이언트(3)로 이루어진다.
이러한 종래 기술에 따른 P2P 실시간 방송은 다수의 시청 클라이언트(3)로 이루어지는 시청 네트워크가 하나의 부모 클라이언트에 일정 수의 자식 클라이언트가 연결되는 수직적인 트리 구조를 가지기 때문에 하나의 클라이언트 노드의 이탈이 자식 관계 클라이언트들에게 큰 영향을 미쳐 안정적인 실시간 방송이 어려운 구조적 한계를 가진다.
또한 이 같은 트리 구조의 TCP 전송 방식은 높은 대역폭을 요구하는 고화질로 갈수록 네트워크 사용 효율이 떨어지고, 특히 위에서 설명한 바와 같이 시청 클라이언트의 잦은 교체시 전송지연(버퍼링 현상)이 늘어나는 단점이 있다.
특히 하나의 부모 클라이언트에 연결된 자식 클라이언트는 단일 노드로 부모 클라이언트와 연결되기 때문에 부모 클라이언트 또는 노드에 전송오류가 생길 경우에, 자식 클라이언트가 데이터를 전송받지 못하거나 전송이 지연될 수도 있으며, 이로인하여 실시간 방송의 실현이 잘 이루어지지 않을 수도 있을 것이다.
상기와 같은 문제점을 해소하기 위한 본 발명은 실시간 방송을 P2P 네트워크 내 다수의 시청자에게 안정적으로 전송하기 위한 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 시스템을 제공하는 목적이 있다.
또한 실시간 방송을 P2P 네트워크 내 다수의 시청자에게 전송하는 라이브 스트리밍 방송에서 전송 중인 모든 방송을 관리하고 전체적인 시청 네트워크를 풀 메시 타입의 네트워크에 의한 P2P 라이브 스트리밍 방법을 제공하는 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명은 방송 정보의 원본 스트림을 다수의 서브 스트림으로 분할하며, 풀 메시 그래프 구조의 시청 네트워크의 시청 클라이언트 측으로 분할된 서브 스트림 데이터를 전송하도록 하는 스트리밍서버시스템; 상기 스트리밍서버시스템으로부터 분할된 서브 스트림을 전송받고 분할된 서브 스트림에서 원본 스트림으로 복원하도록 하는 풀 메시 그래프 구조의 시청 네트워크의 시청 클라이언트가 포함되어 구비되고, 상기 스트리밍서버시스템은, 풀 메시 그래프 구조의 시청 네트워크의 다수 시청 클라이언트의 서브 스트림 접속 정보데이터를 전송받고, 하나의 시청 클라이언트로부터 방송 정보 제공의 요청 정보를 수신받으면 해당 시청 클라이언트에 대한 풀 메시 그래프 구조의 시청 네트워크에서의 할당된 다수의 부모 노드 정보데이터를 해당 시청 클라이언트로 전송하며, 상기 시청 클라이언트는 상기 스트리밍서버시스템으로부터 전송된 풀 메시 그래프 구조의 시청 네트워크에서의 할당된 다수의 부모 노드 정보데이터를 전송받고, 할당된 다수의 부모 노드를 통하여 분할된 서브 스트림 데이터를 전송받도록 하여, 다수의 상기 시청 클라이언트가 다수의 부모 노드와 다수의 자식 노드로 된 풀 메시 그래프 구조의 시청 네트워크를 이루도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 시스템이 제공된다.
이에 상기 스트리밍서버시스템은, 방송 클라이언트로부터 전송되는 원본 스트림을 적어도 둘 이상의 서브 스트림으로 분할하여 시청 네트워크에 채널별로 전송하는 스트리밍 서버; 상기 스트리밍 서버에 채널 할당 정보를 제공하여 서브 스트림의 분할 전송을 지원하고, 상기 시청 네트워크의 각 시청 클라이언트들에게 원본 스트림을 복원할 수 있는 모든 채널의 서브 스트림 접속 정보를 제공하는 릴레이 서버가 포함되어 구비되고, 상기 시청 네트워크는 적어도 하나 이상의 시청 클라이언트가 포함되며, 시청 네트워크 내 시청 클라이언트들은 상기 릴레이 서버에 의해 할당된 다수의 부모 노드들로부터 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생하고 상기 릴레이 서버에 의해 할당된 다수의 자식 노드들에게 지정된 채널의 서브 스트림을 재전송함으로써 부모 노드 및 자식 노드의 관계가 다 대 다로 연결되는 풀 메시 시청 네트워크로 구비되고, 상기 릴레이 서버는 시청 네트워크 내 각 시청 클라이언트에게 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생할 수 있는 다수의 부모 노드들을 할당하고, 지정된 채널의 서브 스트림을 재전송할 수 있는 다수의 자식 노드들을 할당하며, 전체 네트워크 내 노드 정보를 관리하도록 구비될 수 있다.
또한 상기 스트리밍 서버는, 상기 방송 클라이언트로부터 수신된 원본 스트림을 다수의 블록들로 분할하는 스트림 분할부; 상기 스트림 분할부에 의해 분할된 각 블록에 일련 번호를 부여하며 소정 블록 개수마다 패리티 블록을 생성하여 추가시켜 다수의 분할된 서브 스트림으로 구성하는 FEC 인코더; 상기 릴레이 서버에 의해 할당된 시청 클라이언트들에게 지정된 채널의 서브 스트림을 UDP 방식으로 전송하는 스트림 송신부; 및 상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령을 TCP 방식으로 수신하는 제어정보 수신부가 포함되어 구비되고, 상기 FEC 인코더를 통해 생성되어 추가되는 패리티 블록은 해당 블록의 이전 블록 데이터의 xor 합으로 이루어지도록 구비될 수 있다.
그리고 상기 시청 클라이언트는, 다수의 부모 노드로부터 UDP 방식으로 모든 채널의 서브 스트림을 전송받는 스트림 수신부; 상기 스트림 수신부를 통해 수신된 다수의 서브 스트림을 일련 번호를 참조하여 순서에 맞게 버퍼에 저장하는 스트림 조합부; 저장되는 서브 스트림에서 누락된 블록을 복원하는 FEC 디코더; 할당된 자식 노드들에게 지정된 채널의 서브 스트림을 UDP 방식으로 재전송하는 스트림 송신부; 및 상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령을 TCP 방식으로 수신하는 제어정보 수신부가 포함되어 구비되고, 상기 FEC 디코더는 손실 블록이 존재하면 해당 손실 블록에 대한 패리티 블록을 통해 손실 블록을 복원하도록 구비될 수 있다.
또한 상기 스트리밍서버시스템은, 상기 시청 클라이언트와 소정 간격으로 테스트 패킷을 통신하여 해당 시청 클라이언트의 현재 업/다운 속도를 측정하는 속도 측정 서버가 더 포함되어 구비되고, 상기 시청 클라이언트는 측정된 속도 정보를 릴레이 서버에 전송하고, 각 시청 클라이언트의 속도 정보를 수집한 릴레이 서버에서 해당 속도 정보를 통해 채널 할당을 제어하도록 구비될 수 있다.
그리고 본 발명은, (a) 스트리밍서버시스템의 스트리밍 서버에서 방송 원본 스트림을 다수의 서브 스트림으로 분할하여 시청 네트워크에 채널별로 전송하는 스트림분할전송단계(S210); (b) 스트리밍서버시스템의 릴레이 서버에서 상기 스트리밍 서버 측으로 채널 할당 정보가 전송되도록 하고, 상기 스트리밍 서버에서 채널 할당 정보에 대해 서브 스트림의 분할정보를 생성하고, 릴레이 서버에서 시청 네트워크의 각 시청 클라이언트들에게 원본 스트림을 복원할 수 있는 채널의 서브 스트림 접속 정보데이터를 전송하는 스트림접속정보제공단계(S230); 및 (c) 상기 시청 클라이언트에서 상기 릴레이 서버에 의해 할당된 다수의 부모 노드들로부터 원본 스트림에서 분할되었던 서브 스트림을 전송받아 원본 방송 스트림으로 복원하여 재생하고 상기 릴레이 서버에 의해 할당된 다수의 자식 노드들에게 지정된 채널의 서브 스트림을 재전송하는 스트림복원재생재전송단계(S250)가 포함되어 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 방법이 제공된다.
이에 상기 스트림분할전송단계(S210)는, (a-1) 방송 클라이언트로부터 수신된 원본 스트림을 다수의 블록들로 분할되도록 하는 원본스트림블록분할단계(S211); (a-2) 분할된 각 블록에 일련 번호가 부여되도록 하며, 복수의 블록 개수마다 패리티 블록이 생성되어 추가되도록 하여 다수의 분할된 서브 스트림이 생성되도록 하는 서브스트림생성단계(S212); 및 (a-3) 릴레이 서버에 의해 할당된 시청 클라이언트들에게 지정된 채널의 서브 스트림이 UDP 방식으로 전송되도록 하는 지정채널스트림전송단계(S213)가 포함되어 구비되고, 상기 스트리밍 서버는 상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령데이터를 TCP 방식으로 수신받도록 구비되며, 상기 서브스트림생성단계(S212)는, 스트리밍 서버의 FEC 인코더를 통해 생성되어 추가되는 패리티 블록이 해당 블록의 이전 블록 데이터의 xor 합으로 이루어지도록 구비될 수 있다.
또한 상기 스트림복원재생재전송단계(S250)는, (c-1) 자식 노드의 시청 클라이언트에서 다수의 부모 노드로부터 UDP 방식으로 모든 채널의 서브 스트림을 수신받는 다수부모노드서브스트림수신단계(S251); (c-2) 수신된 다수의 서브 스트림을 일련 번호를 참조하여 순서에 맞게 버퍼에 저장하는 스트림일련순서저장단계(S252); (c-3) 저장되는 서브 스트림에서 누락된 블록을 복원하는 스트림누락블록복원단계(S253); 및 (c-4) 해당 시청 클라이언트에서 스트리밍서버시스템으로부터 할당된 자식 노드들에게 지정된 채널의 서브 스트림을 UDP 방식으로 재전송하는 할당자식노드재전송단계(S254)가 포함되어 구비되고, 상기 시청 클라이언트는 상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령데이터를 TCP 방식으로 수신하도록 구비되며, 상기 스트림누락블록복원단계(S253)는, 시청 클라이언트의 FEC 디코더에 의해 손실 블록이 존재하면 해당 손실 블록에 대한 패리티 블록을 통해 손실 블록을 복원하도록 구비될 수 있다.
그리고 상기 시청 클라이언트는 속도 측정 서버와 일정 간격으로 테스트 패킷을 통신하여 해당 시청 클라이언트의 업/다운 속도를 측정하고, 측정된 속도 정보를 릴레이 서버에 전송하도록 구비되며, 상기 릴레이 서버는 각 시청 클라이언트의 속도 정보를 수집해 해당 속도 정보를 통해 채널 할당을 제어하도록 구비되고, 상기 릴레이 서버에서, 방송 클라이언트의 방송 정보를 등록하고, 해당 방송을 배포하는 스트리밍 서버에 원본 방송을 분할한 다수의 서브 스트림의 전송에 대한 채널 정보를 할당하도록 하는 서브스트림채널정보할당단계(S240)가 더 구비되며, 상기 릴레이 서버는 시청 네트워크 내 각 시청 클라이언트에게 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생할 수 있는 다수의 부모 노드들을 할당하고, 지정된 채널의 서브 스트림을 재전송할 수 있는 다수의 자식 노드들을 할당하며, 전체 네트워크 내 노드 정보가 관리되도록 구비될 수 있다.
또한 상기 릴레이 서버에서 시청 네트워크 내에서 부모 노드의 시청 클라이언트에 대한 노드의 이탈이 발생하거나 자식 노드의 시청 클라이언트로부터 특정 채널의 노드 교체를 요청하는 신호를 전송하게 되면, 해당 서브 스트림에 대한 새로운 부모 노드의 시청 클라이언트로 접속할 수 있도록 하는 대체 접속 정보를 제공하도록 하는 부모노드대체접속스트림제공단계(S270)가 더 포함되어 구비될 수 있다.
이에 상기 부모노드대체접속스트림제공단계(S270)는 새로운 부모 노드의 시청 클라이언트로 접속할 수 있도록 하는 대체접속 정보의 제공이 후보 선정 과정과 우선 순위에 의한 노드 선택 과정을 통해 이루어지도록 하고, 상기 릴레이 서버에서의 후보 선정 과정은, 시청 클라이언트가 보낸 요청에 대해 검색 대상 노드가 소정 개수 이하의 자식 노드를 가지고 있는지 여부를 판단하는 제 1 판단 기준, 방송 참여 후 소정 시간이 지났는지 여부를 판단하는 제 2 판단 기준, 이미 과거에 교체 재할당한 노드인지 여부를 판단하는 제 3 판단 기준, 대상 노드의 클라이언트의 누적 유실률이 소정 임계치 이하인지 여부를 판단하는 제 4 판단 기준 및 요청 채널에 대한 부모의 경로에 따른 상위 검색시 요청한 클라이언트 자신을 지나지 않고 채널의 루트 노드에 도달하는 노드인지 여부를 판단하는 제 5 판단 기준, 중 적어도 하나 이상의 기준이 적용되어 후보 부모 노드가 선정되도록 구비되며, 상기 릴레이 서버에서의 우선 순위에 의한 노드 선택 과정은, 상기 후보 노드의 선택 이후, 전송 참여 시간, 기 자식 노드 수, 루트 노드에서의 노드 거리를 고려하여 우선 순위를 산정하고, 해당 우선 순위가 가장 높은 부모 노드를 선택하도록 구비되고, 상기 릴레이 서버에서, 후보 선정 과정과 우선 순위에 의한 노드 선택 과정을 통해 할당할 노드의 검색이 실패하면, 이미 다른 채널에 할당된 노드를 기설정된 중복 허용 개수 내에서 다시 할당하거나, 기교체된 이력이 있고 재할당 노드이면서 검색 조건을 만족하는 가장 첫 번째 노드를 재할당 노드로 할당하거나, 스트리밍 서버를 재할당 노드로 할당되도록 구비될 수 있다.

나아가 본 발명은, 방송 정보의 원본 스트림을 다수의 서브 스트림으로 분할하며, 풀 메시 그래프 구조의 시청 네트워크의 시청 클라이언트 측으로 분할된 서브 스트림 데이터를 전송하도록 하는 스트리밍서버시스템과, 상기 스트리밍서버시스템으로부터 분할된 서브 스트림을 전송받고 분할된 서브 스트림에서 원본 스트림으로 복원하도록 하는 풀 메시 그래프 구조의 시청 네트워크의 시청 클라이언트가 포함되어 구비되고, 상기 스트리밍서버시스템은, 시청 클라이언트로부터 방송 정보 제공의 요청 정보를 수신받으면 해당 시청 클라이언트에 대한 풀 메시 그래프 구조의 시청 네트워크에서의 할당된 다수의 부모 노드 정보데이터를 해당 시청 클라이언트로 전송하며, 상기 시청 클라이언트는 상기 스트리밍서버시스템으로부터 전송된 풀 메시 그래프 구조의 시청 네트워크에서의 할당된 다수의 부모 노드 정보데이터를 전송받고, 할당된 다수의 부모 노드를 통하여 분할된 서브 스트림 데이터를 전송받도록 구비된 스트리밍시스템에 있어서, 상기 스트리밍서버시스템에는, 원본 스트림을 적어도 둘 이상의 서브 스트림으로 분할하여 시청 네트워크에 채널별로 전송하는 스트리밍 서버와; 상기 스트리밍 서버에 시청 클라이언트의 채널 할당 정보를 제공하고, 시청 네트워크의 각 시청 클라이언트들에게 원본 스트림을 복원할 수 있는 채널의 서브 스트림 접속 정보를 제공하는 릴레이 서버가 포함되어 구비되고, 상기 시청 네트워크는 적어도 하나 이상의 시청 클라이언트가 포함되며, 상기 시청 네트워크의 시청 클라이언트들은 상기 릴레이 서버에 의해 할당된 다수의 부모 노드들로부터 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생하고 상기 릴레이 서버에 의해 할당된 다수의 자식 노드들에게 지정된 채널의 서브 스트림을 재전송함으로써 부모 노드 및 자식 노드의 관계가 다 대 다로 연결되는 풀 메시 시청 네트워크로 구비되고, 상기 릴레이 서버는 시청 네트워크의 각 시청 클라이언트에게, 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생할 수 있는 다수의 부모 노드들을 할당하고, 지정된 서브 스트림을 재전송할 수 있는 다수의 자식 노드들을 할당하도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 시스템이 제공된다.
상기와 같이 구성되는 본 발명은 원본 스트림 데이터를 일정 크기로 분할 전송하여 전송에 필요한 최소 단위 네트워크 대역폭을 줄임으로써 P2P 풀 전체의 네트워크 대역폭을 고르고 효율적으로 사용하여 다수의 방송 시청자에게 전송시 네트워크 비용 효율을 극대화할 수 있는 효과가 있다.
즉 시청 클라이언트 사이에서 종래의 단일 부모 클라이언트가 고정되는 방식에서, 부모 클라이언트가 변동되도록 하기 때문에 전송되는 노드를 최적의 상태로 유지할 수 있어 P2P 실시간 방송 서비스를 안정적으로 이용할 수 있는 것이다.
또한 하나의 클라이언트 노드의 이탈이 자식 관계 클라이언트들에게 미치는 영향이 상대적으로 줄어들게 되므로 더 안정적인 전송 품질을 보장할 수 있고 예측 가능한 품질의 서비스를 보장할 수 있게 되는 효과도 있다.
그리고 원본 스트림의 분할 과정에서 일정 분할 단위로 패리티 패킷을 추가하여 일부분 전송 오류나 지연 발생시 이미 수신하여 대기 중인 스트림 데이터에 의한 복원이 가능하도록 하여 P2P 간 최소한의 재전송이 발생하도록 하는 효과도 있다.
또한 제어 명령 전송에는 전송 안정성을 위해 TCP를 사용하나 방송 스트림 전송에는 UDP를 사용함으로써 P2P를 통한 다단계 전송에 의한 시간차를 극소화하고 실시간성을 높일 수 있게 되는 효과도 있다.
즉 고화질 방송 전송시의 네트워크 효율 향상과 잦은 시청 클라이언트 교체에서도 거의 버퍼링을 일으키지 않는 전송 품질의 안정성을 보장할 수 있으며, UDP를 사용함으로써 P2P 풀의 확대 및 실시간성 향상을 기대할 수 있고, 풀 HD급 방송을 다수의 시청자들에게 안정적으로 전달하면서도 운영 비용 효율을 최대화시킬 수 있어 실시간 방송 전송 솔루션에 적합하다고 할 수 있다.
특히 본 발명의 풀 메시 시청 네트워크에서는 클라이언트 노드의 이탈이 자식 관계 클라이언트들에게 영향을 미치는 것은 기존 트리 구조와 다름없으나, 그 영향이 상대적으로 1/(분할한 스트림의 갯수)만큼 줄어들게 되므로 더 안정적인 전송 품질을 보장할 수 있게 된다.
도 1은 종래 기술에 따른 트리 구조의 P2P 실시간 방송 기술을 설명하기 위한 구성예시도.
도 2는 본 발명에 따른 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 시스템의 방송 데이터 및 제어 데이터의 전송 구조를 설명하기 위한 구성도.
도 3은 본 발명에 따른 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 시스템의 전체적인 구조를 설명하기 위한 구성도.
도 4는 본 발명에 따른 스트리밍 서버를 설명하기 위한 블록도.
도 5는 본 발명에 따른 스트리밍 서버의 UDP 전송 스트림 분할 방식을 설명하기 위한 스트림 분할 예시 설명도.
도 6은 본 발명에 따른 시청 클라이언트를 설명하기 위한 블록도.
도 7은 본 발명에 따른 시청 클라이언트의 UDP 전송 스트림 복원 방식을 설명하기 위한 스트림버퍼 송수신 설명 예시도.
도 8은 본 발명에 따른 릴레이 서버를 설명하기 위한 블록도.
도 9는 본 발명에 따른 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 방법을 설명하기 위한 흐름도.
도 10은 본 발명에 따른 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 방법에 대한 순서도.
이하 첨부되는 도면을 참조하여 상세히 설명한다.
즉 본 발명에 따른 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템(100) 및 방법 등은 도 2 내지 도 10에 도시된 바와 같이, 방송 클라이언트(10), 방송 클라이언트(10)로부터 데이터를 전송받아 다수의 시청 클라이언트(30)에 스트림 서비스를 제공하는 스트리밍서버시스템(200) 그리고 이러한 스트리밍서버시스템(200)으로부터 스트림 데이터를 전송받아 동영상 데이터를 플레이하게 되는 다수의 시청 클라이언트(30) 등으로 이루어지는 것이다. 이에 대한 설명을 상세히 하면 다음과 같다.
우선 도 2 및 도 3 등은 본 발명에 따른 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 시스템(100)에 의한 방송 데이터 및 제어 데이터의 전송 구조를 설명하기 위한 도면이다.
이에 도 2를 참조하면, 본 발명에 따른 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 시스템(100)은 원본 방송 스트림을 전송하는 방송 클라이언트(10)와, 상기 방송 클라이언트(10)로부터 원본 방송 스트림을 전송받아 다수의 서브 스트림으로 분할하여 실시간으로 전송하는 스트리밍서버시스템(200)의 스트리밍 서버(20)와, 상기 스트리밍 서버로부터 분할된 서브 스트림을 전송받아 원본 방송 스트림으로 조합하여 방송을 재생하는 다수의 시청 클라이언트(30), 상기 방송 클라이언트(10), 스트리밍 서버(20) 및 다수의 시청 클라이언트(30)를 제어하여 스트리밍 서버(20) 및 시청 클라이언트(30)들에게 분할된 서브 스트림에 대한 채널 접속 정보를 할당하여 해당 라이브 스트리밍 방송을 관리하는 릴레이 서버(40) 등으로 이루어진다.
이러한 본 발명에서 다수의 시청 클라이언트(30)들은 시청 네트워크 내에서 스트림 배포하는 하나의 구성요소로서 볼 때 각각의 구성 노드로서 스트림의 전송을 위한 부모 노드(parent node) 또는 스트림의 수신을 위한 자식 노드(child node)로서 기능하게 된다. 이러한 관점에서 보면 상기 스트리밍 서버(20)는 루트 노드(root node)의 역할을 하게 되며, 전체적인 시청 네트워크는 풀 메시(Full-Mesh) 타입의 네트워크를 구성하게 된다.
도 2를 참조하면, 상기 풀 메시 타입의 시청 네트워크에서는 스트리밍 서버(20) 및 다수의 시청 클라이언트(30)들에서 방송을 위해 전송되는 데이터 스트림의 전송에는 UDP(User Datagram Protocol)를 사용하고, 이와 달리 방송의 제어 명령 전송에는 TCP(Transmission Control Protocol)를 사용하게 된다. 이러한 이중적 데이터 전송 구조는 제어 명령 전송에는 TCP를 사용함으로써 전송 안정성을 꾀하게 되고, 이와 달리 방송 스트림의 전송에는 UDP를 사용하여 P2P를 통한 다단계 전송에 따른 시간차를 최소화하고 실시간성을 높일 수 있게 된다. 이때, UDP 특성상 발생할 수 있는 전송 오류나 패킷 순서 오류 등은 이하에서 상세히 기술되는 클라이언트의 자체적인 스트림 버퍼 관리와 FEC(Forward Error Correction) 오류 복원 그리고 재전송 기능을 통해 보완할 수 있게 된다.
한편, 이러한 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 시스템의 전체적인 구조가 도 3에 도시되어 있다.
도 3을 참조하면, 상기 방송 클라이언트(10)는 방송 시작 정보를 상기 릴레이 서버(40)에 등록하고 방송의 원본 스트림을 스트리밍 서버(20)로 전송하며, 스트리밍 서버(20)에서는 분할 기능에 의해 원본 방송 스트림을 다수의 서브 스트림으로 분할하여 릴레이 서버(40)에 의해 할당된 시청 클라이언트(30)로 전송하며, 시청 클라이언트(30)들은 릴레이 서버(40)에 의해 부모-자식 관계를 맺게 되고 할당된 부모 노드들로부터 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생하고 또한 릴레이 서버(40)에 의해 할당된 자식 노드들에게 지정된 채널의 서브 스트림을 재전송하게 된다. 이때, 이러한 시청 클라이언트(30)들은 일정 시간 간격으로 속도측정 서버(50)와 통신하여 자신의 현재 업/다운 밴드 속도를 측정하고 릴레이 서버(40)에게 측정정보를 전송하게 된다.
이러한 본 발명의 각 구성요소에 대하여 도면을 참조하여 이하에서 보다 상세히 설명하기로 한다.
우선 상기 방송 클라이언트(10)는 방송의 주체로서 방송 시작시 방송 번호, 방송 스트림 정보를 스트리밍서버시스템(200)의 릴레이 서버(40)에 등록하고, 방송 등록이 성공하면 상기 스트리밍 서버(20)에 원본 스트림을 전송한다.
다음으로 스트리밍서버시스템(200)의 스트리밍 서버(20)는 상기 방송 클라이언트(10)로부터 원본 방송 스트림을 수신하여 본 발명에 따른 분할 기능에 의해 해당 원본 방송 스트림을 전송 서브 스트림으로 분할하고 상기 릴레이 서버(40)에 의해 할당된 시청 클라이언트(30)들에게 지정된 채널의 서브 스트림을 전송하게 된다.
도 4를 참조하여 이러한 스트리밍서버시스템(200)의 스트리밍 서버(20)를 좀더 상세히 살펴보면, 해당 스트리밍 서버(20)는 상기 방송 클라이언트(10)로부터 원본 방송 스트림을 수신하기 위한 방송 수신부(22), 상기 방송 수신부(22)로부터 수신된 원본 스트림을 일정 크기의 블록들로 분할하는 스트림 분할부(23), 상기 스트림 분할부(23)에 의해 분할된 각 블록에 일련 번호를 부여하며 일정 블록 개수마다 패리티(parity) 블록을 생성하여 추가시켜 다수의 분할된 서브 스트림으로 구성하는 FEC 인코더(24), 상기 할당된 시청 클라이언트(30)들에게 지정된 채널의 서브 스트림을 UDP 방식으로 전송하는 스트림 송신부(25), 상기 릴레이 서버(40)로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령을 TCP 방식으로 수신하는 제어정보 수신부(26), 상기 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보의 저장을 위한 메모리(27) 및 상기 각 구성을 제어하기 위한 스트리밍 제어부(21)로 구성된다.
이러한 스트리밍 서버(20)는 상술한 바와 같이 원본 스트림을 일정 크기의 블록들로 분할하고 각 블록에 일련 번호를 부여하며 일정 블록 개수마다 패리티 블록을 추가시키며, 각 블록을 순차적으로 미리 정해진 채널 개수만큼의 새로운 스트림에 할당함을 반복하여 서브 스트림을 생성하게 된다.
이와 같은 스트리밍 서버(20)의 UDP 전송 스트림 분할 방식을 도 5를 통해 설명하면 다음과 같다.
도 5를 참조하면, UDP 전송 스트림 분할 방식에서 상기 스트림 분할부(23)는 원본 스트림(S)을 B(1024 이하) 바이트 길이를 가진 다수의 블록들(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)로 분할한다. 이때, 각 블록은 원본 스트림 패킷 번호, 블록 일련 번호, 타임스탬프 정보, 분할 스트림 데이터로 구성된다.
그리고 상기 FEC 인코더(24)는 각 K 블록마다 이전 K 개의 연속된 블록 데이터의 xor 합으로 이루어진 패리티 블록(P0, P1)을 추가하여 다수의 서브 스트림(S0, S1, S2)을 생성한다. 즉 패리티 블록 P0 는 블록 0, 1, 2, 3의 xor 합으로 이루어지며, 패리티 블록 P1 은 블록 4, 5, 6, 7의 xor 합으로 이루어진다.
즉 서브 스트림 분할 채널 개수를 n 이라 하면, 각 블록은 순차적으로 각 채널에 배치되어 새로운 서브 스트림 S0 ~ Sn 으로 분할된다. 예를 들어 원본 스트림 S의 블록 배치가 b0, b1, b2 ... bn, bn +1 등이라면 서브 스트림 S0 의 블록 구성은 b0, bn, b2n ...이 되는 것이다.
도 5의 스트림 분할 예는 K는 4이고 n은 3인 경우이다. 즉 원본 스트림 S를 3개의 서브 스트림 S0, S1, S2 로 분할하게 되는데, 4개의 블록마다 FEC 를 위한 패리티 블록을 생성하게 된다.
다음으로 상기 시청 클라이언트(30)는 상기 릴레이 서버(40)에 의해 할당된 부모 노드들에게서 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생하고 또한 상기 릴레이 서버(40)에 의해 할당된 자식 노드들에게 지정된 채널의 서브 스트림을 재전송시키게 된다.
도 6을 참조하여 이러한 시청 클라이언트(30)를 좀더 상세히 살펴보면, 해당 시청 클라이언트(30)는 다수의 부모 노드로부터 UDP 방식으로 모든 채널의 서브 스트림을 전송받는 스트림 수신부(32), 상기 스트림 수신부(32)를 통해 수신된 다수의 서브 스트림을 일련 번호를 참조하여 순서에 맞게 전송 버퍼에 저장하는 스트림 조합부(33), 저장되는 서브 스트림에서 누락된 블록에 대한 복원을 담당하는 FEC 디코더(34), 할당된 자식 노드들에게 지정된 채널의 서브 스트림을 UDP 방식으로 재전송하는 스트림 송신부(35), 상기 수신되어 조합된 서브 스트림을 통해 원본 스트림을 재생하는 스트림 재생부(36), 상기 릴레이 서버(40)로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령을 TCP 방식으로 수신하는 제어정보 수신부(37), 일정시간 간격으로 별도의 속도측정 서버와 통신하여 자신의 현재 업/다운 밴드 속도를 측정하고 상기 릴레이 서버(40)에 해당 속도 정보를 전송하는 속도측정부(38), 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보의 저장을 위한 메모리(39) 및 상기 각 구성을 제어하기 위한 클라이언트 제어부(31)로 구성된다.
이러한 시청 클라이언트(30)는 풀 메시 타입의 시청 네트워크 내에서 할당된 부모 노드들에게서 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생하는 자식 노드로서 동작하면서, 동시에 할당된 자식 노드들에게 지정된 채널의 서브 스트림을 재전송하는 부모 노드로서 동작하게 된다.
방송 참여시, 해당 시청 클라이언트(30)는 릴레이 서버(40)에 접속하여 자신의 네트워크 상태, 전송 속도 등과 같은 상태 정보를 전송하고 참여할 방송의 번호를 전송한 후 릴레이 서버(40)로부터 분할된 개수만큼의 모든 채널의 서브 스트림의 접속 정보를 할당 받는다.
이후 각 채널의 전송이 진행되는 동안 해당 시청 클라이언트(30)는 수신되는 서브 스트림을 내부 전송 버퍼에 일련 번호를 참조하여 순서에 맞게 저장하며, 이때 전송이 누락된 블록이나 전송 지연으로 판단되는 블록 발견시 FEC 디코더(34)를 통해 복원을 시도하게 된다.
이러한 FEC 디코더(34)를 통한 시청 클라이언트(30)의 UDP 전송 스트림 복원 방식을 도 7을 통해 설명하면 다음과 같다.
도 7을 참조하면, 원본 스트림이 n 개의 서브 스트림으로 분할되어 있고, 각 K 개의 블록마다 패리티 블록이 추가되어 있는 경우 복원할 블록이 포함된 K 개의 블록 시작 번호와 끝 번호를 계산하여 해당 블록을 제외한 인접 K 개의 블록이 모두 존재한다면 블록 데이터의 xor 합에 의해 해당 손실 블록의 데이터를 복원할 수 있다. 버퍼링 타임(시청에 사용하기 전 버퍼에 저장하는 시간양)을 t 초, 수동 타이밍을 t1초, 그리고 능동 타이밍을 t2로 설정할 때(0<t1<t2<t), 일정 시간에 타임스탬프와 현재 시간과의 차이에 의한 계산으로 t1초간 전송되는 블록은 일련 번호에 맞게 전송 버퍼에 저장하고 t1 ~ t2 초에 수신되지 않은 블록은 기존 블록에 의한 복원을 시도하고 t2초가 지나도 수신되지 않는 블록은 부모노드에 재요청 및 복원을 시도하며 t초가 지나는 순간까지도 수신 또는 복원되지 않은 블록은 유실 상태가 되어 더 이상 처리하지 않게 된다. 왜냐하면, 실시간 방송에서는 방송 시간이 지난(과거의) 스트림 데이터는 의미가 없기 때문이다.
이를 참조하면, 도 7에서 t1까지는 블록 3이 없으므로 패리티 블록 P0를 이용해 복원을 시도하여 복원을 성공시키며, t2까지는 블록 6이 없고 복원을 위한 패리티 블록 P1이 수신되어 있지 않으므로 재전송을 해당 부모 노드에 요청하여 수신함으로써 재생을 위한 원본 스트림을 재생 스트림 버퍼에 채워 넣게 된다.
즉 일정 임계 시간(t2) 내에 복원이 되지 않은 블록에 대해서는 해당 채널의 부모 노드에 재전송을 요청하게 된다.
자식 노드의 재전송 요청에 대해 시청 클라이언트는 내부 버퍼에 수신 또는 복원된 요청 블록이 있을 경우 즉각 전송을 실행한다.
이 경우, 오류 복원 이후 상태의 블록에 한해 재전송이 이루어지므로 수신 오류 데이터의 하부 전파는 일어나지 않는다.
또한 시청 클라이언트(30)의 클라이언트 제어부(31)는 일정 시간마다 각 채널의 전송 유실률을 계산하여 그 값이 한계치를 초과하는 경우 릴레이 서버에게 해당 채널의 재할당 요구를 전송하여, 모든 채널을 일정 수준의 전송 성공률 이상으로 유지시킨다. 이때, 시청 클라이언트(30)의 클라이언트 제어부(31)는 일정 시간 간격을 두고 누적 전송 유실률과 시스템 부하를 측정하여 릴레이 서버(40)에 통보하게 된다.
이 경우 해당 시청 클라이언트(30)는 노드의 재할당을 릴레이 서버(40)에 요청할 수 있다. 즉 매 T1초마다 모든 채널에 대해, 할당받은 노드의 접속 정보를 검사하여 정상적이지 않은 노드가 발견되면 릴레이 서버에 해당 노드의 재할당을 요청하게 된다. 또한 시청 클라이언트는 매 T2초마다 모든 채널에 대하여 T2초간의 누적 손실률이 임계치(Lth)를 초과하는 모든 노드를 릴레이 서버(40)에 재할당 요청한다. 이때, 새로 할당받은 노드는 초기 전송 안정기간의 부여를 위해 처음 T2초 동안은 손실률 계산 및 검사를 수행하지 않는 것이 바람직하다.
한편 상기 속도측정 서버(50)는 시청 클라이언트(30)와 테스트 패킷을 일정 간격으로 일정 횟수 통신하여 해당 시청 클라이언트의 현재 업/다운 밴드 속도를 측정하게 된다.
상기 릴레이 서버(40)는 상기 스트리밍 서버(20)를 루트 노드로 하여 분할된 서브 스트림 데이터를 시청 네트워크로 전달하도록 하고, 다수의 시청 클라이언트(30)들을 분할된 서브 스트림 데이터 전달의 부모 노드 겸 자식 노드로 동작하도록 하여 부모 노드 및 자식 노드의 관계가 다 대 다로 연결되는 메시 그래프(Mesh Graph) 형태의 풀 메시 시청 네트워크를 구성시켜 해당 라이브 스트리밍 방송을 관리하게 된다.
도 8을 참조하여 이러한 릴레이 서버(40)를 좀더 상세히 살펴보면, 해당 릴레이 서버(40)는 방송 클라이언트(10) 및 시청 클라이언트(30)가 접속할 수 있는 클라이언트 접속부(43), 방송에 참여하고 있는 방송 클라이언트(10) 및 시청 클라이언트(30)의 네트워크 상태 및 전송 상태를 통해 각 클라이언트의 방송 참여 상태를 분석하는 클라이언트 분석부(44), 상기 스트리밍 서버(20)에 시청 클라이언트 할당 정보를 전송하여 스트리밍 방송을 동작시키는 스트리밍 관리부(42), 각 방송의 시청 네트워크에 포함된 노드 정보를 관리하여 노드의 할당 및 재할당 그리고 노드 교체를 담당하는 시청 관리부(45), 방송에 필요한 각종 정보를 관리하는 데이터 저장장치(46) 및 상기 각 구성을 제어하기 위한 릴레이 제어부(41)로 구성된다.
이러한 릴레이 서버(40)는 각 시청 클라이언트(30)의 추가 및 이탈과 부모/자식 관계를 모두 관리하게 되므로 예측 가능한 품질의 서비스를 보장할 수 있게 된다.
이를 보다 상세히 설명하면, 상기 릴레이 서버(40)는 전송 중인 모든 방송의 방송 번호, 방송 스트림 정보, 방송 클라이언트에 대한 정보, 사용하는 스트리밍 서버 정보를 방송 정보 DB를 통해 관리하며, 접속한 모든 시청 클라이언트의 네트워크 정보, 업/다운 밴드 상태 정보, 시청 중인 방송 번호, 전송 상태 정보, 인접 P2P 노드 정보(부모, 자식 및 최근 할당 오류 정보)를 시청 정보 DB를 통해 관리한다. 이를 위해 상기 릴레이 서버(40)는 클라이언트 접속부(43)를 통해 접속한 시청 클라이언트(30)의 네트워크 주소와 상태 정보를 저장하고 주기적으로 시청 클라이언트(30)로부터 업/다운 밴드 속도, 전송 상태 등을 수신받아 저장한다.
또한 상기 릴레이 서버(40)는 클라이언트 접속부(43)를 통해 접속한 시청 클라이언트(30)가 방송에 참여를 요청하면, 노드 검색부(45a)에서 노드 정보 DB에 저장된 요청한 방송 번호의 방송에 대한 P2P 노드 정보를 검색하여 할당할 노드를 선택하고, 노드 할당부(45b)에서 모든 서브 스트림 채널에 대한 접속 정보의 목록을 해당 시청 클라이언트(30)에 전달한다.
그리고 상기 릴레이 서버(40)는 방송에 이미 참여 중인 시청 클라이언트(30)가 특정 채널의 노드 교체를 요청할 경우, 노드 검색부(45a)에서 노드 정보 DB에 저장된 요청한 방송 번호의 방송에 대한 P2P 노드 정보를 검색하여 해당 채널을 전송할 수 있는 다른 접속 정보를 추출하고, 노드 할당부(45b)에서 이렇게 검색된 대체 접속 정보를 재할당 정보로서 해당 시청 클라이언트(30)에 전달한다.
또한 상기 릴레이 서버(40)는 방송에 참여 중인 특정 시청 클라이언트(30)가 시청을 중단하거나 접속이 해제되면, 노드 검색부(45a)에서 노드 정보 DB에 저장된 요청한 방송 번호의 방송에 대한 P2P 노드 정보를 검색하여 해당 시청 클라이언트의 모든 자식 노드에 대해 해당 이탈 클라이언트가 현재 전송 중인 채널의 새로운 접속 정보를 추출하고, 노드 할당부(45b)에서 이렇게 검색된 대체 접속 정보를 재할당 정보로서 해당 시청 클라이언트(30)에 전달한다.
이와 같은 할당 검색시 릴레이 서버(40)의 노드 검색부(45a)는 해당 채널의 노드 전송 관계그래프에 루프가 발생하지 않고 해당 채널의 루트 노드에 가장 가까운 부모 노드를 검색하게 된다. 또한, 하나의 노드에 자식 노드가 몰려서 할당되지 않고 채널을 전송하는 각 노드들에 고르게 분산하여 할당될 수 있도록 한다. 또한 해당 채널의 각 노드의 업밴드 속도, 누적 전송 오류율, 시스템 상태 등에 의한 우선 순위를 계산하여 적합한 채널을 검색하게 된다. 이 같은 계산에 포함되는 각 요소나 변수는 설정할 수 있게 하여 적용 환경 변화에 적응하도록 구현된다.
P2P 시스템의 특성상 하나의 피어가 인접한 피어에 영향을 미치고 그 영향이 전파되는 경향이 있기 때문에 상기 노드 검색부(45a)의 노드 검색 적용 방법과 전략에 따라 전체 시스템의 성능과 안정성에 직접적인 영향을 받으며, 특히 분할 전송의 특성상 P2P 참여 피어가 늘수록 할당 검색 횟수가 크게 증가하는 경향을 보이므로 릴레이 서버(40)는 단순하고 빠르면서도 효율적인 검색 전략으로 구동되는 것이 바람직하다.
이제 이러한 릴레이 서버(40)의 노드 검색 방식에 대하여 보다 상세히 살펴보기로 한다.
릴레이 서버(40)의 노드 검색부(45a)는 하나의 방송에 참여한 시청 클라이언트의 목록을 바탕으로 검색을 수행하게 되는데, 검색 속도의 향상과 노드 분산을 위해 순차 검색에 의한 일정 수 후보 선정과 우선 순위에 의한 노드 선택을 수행하게 된다.
우선 후보 선정에 있어서, 노드 검색부(45a)는 시청 클라이언트(30)가 보낸 요청에 대해 검색 대상 노드가 일정 개수 이하의 자식 노드를 가지고 있는지 여부를 제 1 판단 기준으로 한다.
또한 후보 선정에 있어서, 노드 검색부(45a)는 방송 참여 후 일정 시간이 지났는지 여부를 제 2 판단 기준으로 한다.
또한 후보 선정에 있어서, 노드 검색부(45a)는 이미 과거에 교체 재할당한 노드인지 여부를 제 3 판단 기준으로 한다. 즉 연속 재할당은 배제하게 된다.
또한 후보 선정에 있어서, 노드 검색부(45a)는 대상 노드의 클라이언트의 누적 유실률이 임계치 이하인지 여부를 제 4 판단 기준으로 한다.
또한 후보 선정에 있어서, 노드 검색부(45a)는 요청 채널에 대한 부모의 경로에 따른 상위 검색시 요청한 클라이언트 자신을 지나지 않고 채널의 루트 노드에 도달하는 노드인지 여부를 제 5 판단 기준으로 한다. 즉, 네트워크 내 루프를 배제하게 된다.
정리하면, 릴레이 서버(40)의 노드 검색부(45a)는 노드 검색에 있어서 일정 수의 후보 선정시, 검색 대상 노드가 일정 개수 이하의 자식 노드를 가지고, 방송 참여 후 일정 시간이 지났고, 이미 과거에 교체 재할당한 노드가 아니고, 대상 노드의 클라이언트의 누적 유실률이 임계치 이하이며, 부모의 경로에 따른 상위 검색시 요청한 클라이언트 자신을 지나지 않고 채널의 루트 노드에 도달하는 경우 해당 노드를 후보로 선정할 수 있다.
이때 상술한 후보 선정을 위한 판단 기준들은 상호 우선 순위를 가지는 것은 아니며, 적용 환경에 따라 다양하게 설정 가능하다.
다음으로, 우선 순위에 의한 노드 선택에 있어서, 노드 검색부(45a)는 상술한 바와 같이 일정 수의 후보 노드를 선택한 이후 전송 참여 시간, 기 자식 노드 수, 루트 노드에서의 노드 거리를 고려하여 우선 순위를 산정하고, 해당 우선 순위가 가장 높은 노드를 선택하게 된다. 이러한 선택 노드는 노드 할당부(45b)를 통해 해당 시청 클라이언트(30)에 전송된다.
이때 이와 같은 노드 검색 방식에 의해서 할당할 노드의 검색이 실패할 경우, 릴레이 서버(40)의 노드 검색부(45a)는 이미 다른 채널에 할당된 노드를 기설정된 중복 허용 개수 내에서 다시 할당해 응답할 수 있다. 하지만, 재할당 대상 노드도 검색되지 않는 경우에는 기교체 재할당 노드이면서 검색 조건을 만족하는 가장 첫번째 노드를 재할당 노드로 응답할 수 있다. 위 모든 검색 방식을 통해서도 검색 대상 노드가 발견되지 않는 경우에는 스트리밍 서버(20)(루트 노드)를 할당 응답하게 된다.
이를 위하여 해당 릴레이 서버(40)는 검색 과정에서 중복 할당에 사용할 수 있는 노드, 교체 재할당에 사용할 수 있는 노드의 후보도 함께 검색하여 일시 보관해야 한다.
이에 더하여 도 9를 참조하여 본 발명의 실시예에 따른 고화질 미디어 방송을 위한 P2P 라이브 스트리밍 방법에 대하여 살펴본다.
우선 라이브 스트리밍 방송을 하고자 하는 방송 클라이언트(10)는 스트리밍서버시스템(200)의 릴레이 서버(40)에 접속하여 방송 번호 및 방송 스트림 정보를 포함하는 방송 정보를 등록하고, 해당 릴레이 서버(40)는 내부 방송 정보 DB 에 해당 방송 정보를 등록함으로써 라이브 스트리밍 방송을 등록하는 절차를 수행하게 된다(S10).
이후 상기 방송 클라이언트(10)로부터 방송 원본 스트림을 전송받은 스트리밍서버시스템(200)의 스트리밍 서버(20)는 수신된 원본 스트림을 일정 크기의 블록들로 분할하고, 분할된 각 블록에 일련 번호를 부여하며 일정 블록 개수마다 패리티 블록을 생성하여 추가시킴으로써 다수의 분할된 서브 스트림을 구성하며, 릴레이 서버(40)에 의해 할당된 시청 클라이언트(30)들에게 지정된 채널의 서브 스트림을 전송하게 된다(S20).
이후 상기 스트리밍서버시스템(200)의 릴레이 서버(40)는, 시청 네트워크에 참여하는 각각의 시청 클라이언트들(30)에게 상기 스트리밍 서버(20)에서 분할된 서브 스트림의 갯수 만큼의 채널 접속 정보를 제공하여, 각각의 시청 클라이언트(30)가 다수의 부모 노드로부터 각각의 서브 스트림을 수신하도록 제어함으로써 해당 시청 네트워크 내 노드들의 부모/자식 관계가 다 대 다로 연결되는 메시 그래프(Mesh Graph) 형태의 풀 메시 시청 네트워크를 구성시켜 해당 라이브 스트리밍 방송을 관리하도록 하게 된다(S30).
즉 상기 스트리밍서버시스템(200)의 릴레이 서버(40)는 상기 스트리밍 서버(20)를 루트 노드로 하여 분할된 서브 스트림 데이터를 시청 네트워크로 전달하도록 하고, 다수의 시청 클라이언트(30)가 분할된 서브 스트림 데이터 전달의 부모 노드 겸 자식 노드로 동작하도록 한다.
따라서 하나의 시청 클라이언트(30)에서 볼 때, 해당 시청 클라이언트가 정보를 제공받게 되는 부모 노드는 분할된 서브 스트림의 갯수 만큼 존재할 수 있게 되는 것이다. 또한 하나의 시청 클라이언트(30)에 대한 자식 노드는 역시 다수가 존재하게 되며, 이러한 자식 노드의 수는 릴레이 서버(40)의 노드 할당에 따라 달라질 수 있다.
이러한 본 발명에 따른 풀 메시 그래프 구조의 시청 네트워크는 종래와 같이 일방적으로 하나의 부모 노드가 일정 수의 자식 노드를 가지는 트리 구조와 달리 부모/자식의 관계가 다 대 다로 연결되기 때문에 클라이언트 노드의 이탈이 자식 관계에 있는 클라이언트 노드에 미치는 영향이 줄어든다. 즉 종래의 트리 구조에서는 하나의 자식 노드에 대해 단일의 부모 노드만 존재하였으나, 본 발명에 따른 풀 메시 그래프 구조의 시청 네트워크에서는 하나의 자식 노드에 대해 다수의 부모 노드가 형성되고, 마찬가지로 하나의 부모 노드에 대해서도 다수의 자식 노드가 형성될 수 있는 네트워크 구조를 이루는 것이다.
이에 클라이언트 노드의 이탈은 시청 중에 있던 클라이언트가 방송 시청을 멈추는 경우, 또는 해당 클라이언트와 관련된 네트워크상 접속불가 상태의 경우와 같이 이변이 발생할 수 있는 것이다. 이 경우 종래기술에 따른 기존의 트리 구조방식에서는 해당 클라이언트에 다수의 자식 노드가 연결되어 있으므로 노드 이탈에 따라 순간적으로 시청 네트워크에 큰 변화가 발생하게 되며 이탈 노드의 하위 자식 노드에서는 새로운 부모 노드가 할당될 때까지 버퍼링과 같은 혼란이 발생하게 된다.
하지만 본 발명에 따른 풀 메시 그래프의 시청 네트워크 구조에서는 하나의 클라이언트 노드의 이탈이 자식 관계 클라이언트들에게 영향을 미치는 것은 기존 트리 구조와 다름없으나, 그 영향이 상대적으로 1/(분할한 스트림의 갯수)만큼 줄어들게 되므로 더 안정적인 전송 품질 및 안정적인 플레이상태를 보장할 수 있게 된다.
그리고 이와 같은 풀 메시 그래프 구조의 시청 네트워크 내의 각 시청 클라이언트(30)들은 일정시간 간격으로 스트리밍서버시스템(200)의 속도측정 서버(50)와 통신하여, 자신의 현재 업/다운 밴드 속도를 측정하고, 상기 스트리밍서버시스템(200)의 릴레이 서버(40)에 해당 속도 정보를 전송하며, 해당 릴레이 서버(40)에서는 이러한 각 시청 클라이언트(30)들의 속도 및 상태 정보를 포함하는 클라이언트에 대한 정보를 수집하여 차후 노드 이탈이나 채널 재할당 요구에 대한 기초 자료로 관리한다(S40).
여기에서 노드 이탈이라 함은 시청 중에 있던 클라이언트가 방송 시청을 멈추는 경우 일반적으로 발생할 수 있는 것을 말하며, 채널 재할당 요구는 시청 클라이언트(30)가 모든 채널에 대해 할당받은 노드의 접속 정보를 검사하여 정상적이지 않은 노드를 발견하면 해당 노드의 재할당을 요청하는 것을 의미한다.
즉 방송에 참여 중인 시청 클라이언트(30)가 시청을 중단하거나 접속이 해제되어 시청 네트워크 내에서 노드 이탈이 발생된 것을 판별하면(S50), 상기 릴레이 서버(40)는 이탈된 시청 클라이언트(30)의 모든 자식 노드에 대해 현재 전송 중인 채널의 새로운 접속 정보를 검색하여 할당하게 된다(S60).
또한 방송에 참여 중인 시청 클라이언트(30)가 특정 채널의 노드 교체를 요청하면(S70), 상기 릴레이 서버(40)는 P2P 노드정보를 검색하여 교체 요청된 채널을 전송할 수 있는 다른 접속 정보를 검색하여 할당하게 된다(S80).
이후 방송이 끝나면(S90), 상기 릴레이 서버(40)는 해당 방송과 관련된 모든 정보를 저장하고 방송을 종료하게 되며(S100), 방송 종료 전까지 이러한 노드 이탈이나 노드 교체를 지속적으로 관리하게 된다.
이와 같은 릴레이 서버(40)의 채널 검색 및 할당시, 릴레이 서버(40)의 노드 검색부(45a)는 해당 채널의 노드 전송 관계그래프에 루프가 발생하지 않고 해당 채널의 루트 노드에 가장 가까운 부모 노드를 검색하게 된다. 또한 하나의 노드에 자식 노드가 몰려서 할당되지 않고 채널을 전송하는 각 노드들에 고르게 분산하여 할당될 수 있도록 한다. 또한 해당 채널의 각 노드의 업밴드 속도, 누적 전송 오류율, 시스템 상태 등에 의한 우선 순위를 계산하여 적합한 채널을 검색하게 된다. 이 같은 계산에 포함되는 각 요소나 변수는 설정할 수 있게 하여 적용 환경 변화에 적응하도록 구현된다.
이를 보다 구체적으로 설명하면, 해당 릴레이 서버(40)는 하나의 방송에 참여한 시청 클라이언트의 목록을 바탕으로 검색을 수행하게 되는데, 검색 속도의 향상과 노드 분산을 위해 순차 검색에 의한 일정 수 후보 선정 과정과 우선 순위에 의한 노드 선택 과정을 수행하게 된다.
상기 후보 선정 과정에 있어서, 릴레이 서버(40)는 시청 클라이언트(30)가 보낸 요청에 대해 검색 대상 노드가 일정 개수 이하의 자식 노드를 가지고 있는지 여부를 제 1 판단 기준으로 한다.
또한 후보 선정 과정에 있어서, 릴레이 서버(40)는 방송 참여 후 일정 시간이 지났는지 여부를 제 2 판단 기준으로 한다.
또한 후보 선정 과정에 있어서, 릴레이 서버(40)는 이미 과거에 교체 재할당한 노드인지 여부를 제 3 판단 기준으로 한다. 즉 연속 재할당은 배제하게 된다.
또한 후보 선정 과정에 있어서, 릴레이 서버(40)는 대상 노드의 클라이언트의 누적 유실률이 임계치 이하인지 여부를 제 4 판단 기준으로 한다.
또한 후보 선정 과정에 있어서, 릴레이 서버(40)는 요청 채널에 대한 부모의 경로에 따른 상위 검색시 요청한 클라이언트 자신을 지나지 않고 채널의 루트 노드에 도달하는 노드인지 여부를 제 5 판단 기준으로 한다. 즉 네트워크 내 루프를 배제하게 된다.
정리하면, 릴레이 서버(40)는 노드 검색에 있어서 일정 수의 후보 선정시, 검색 대상 노드가 일정 개수 이하의 자식 노드를 가지고, 방송 참여 후 일정 시간이 지났고, 이미 과거에 교체 재할당한 노드가 아니고, 대상 노드의 클라이언트의 누적 유실률이 임계치 이하이며, 부모의 경로에 따른 상위 검색시 요청한 클라이언트 자신을 지나지 않고 채널의 루트 노드에 도달하는 경우 해당 노드를 후보로 선정할 수 있다.
이때 상술한 후보 선정을 위한 판단 기준들은 상호 우선 순위를 가지는 것은 아니며, 적용 환경에 따라 다양하게 설정 가능하다.
다음으로, 우선 순위에 의한 노드 선택 과정에 있어서, 릴레이 서버(40)는 상술한 바와 같이 일정 수의 후보 노드를 선택한 이후 전송 참여 시간, 기 자식 노드 수, 루트 노드에서의 노드 거리를 고려하여 우선 순위를 산정하고, 해당 우선 순위가 가장 높은 노드를 선택하게 된다. 이러한 선택 노드 정보는 해당 시청 클라이언트(30)에 전송된다.
이때 이와 같은 노드 검색 방식에 의해서 할당할 노드의 검색이 실패할 경우, 릴레이 서버(40)는 이미 다른 채널에 할당된 노드를 기설정된 중복 허용 개수 내에서 다시 할당해 응답할 수 있다. 하지만, 재할당 대상 노드도 검색되지 않는 경우에는 기교체 재할당 노드이면서 검색 조건을 만족하는 가장 첫번째 노드를 재할당 노드로 응답할 수 있다. 위 모든 검색 방식을 통해서도 검색 대상 노드가 발견되지 않는 경우에는 스트리밍 서버(20)(루트 노드)를 할당 응답하게 된다.
이를 위하여 해당 릴레이 서버(40)는 검색 과정에서 중복 할당에 사용할 수 있는 노드, 교체 재할당에 사용할 수 있는 노드의 후보도 함께 검색하여 일시 보관해야 한다.
다음은 본 발명에 따른 P2P 라이브 스트리밍 시스템(100)에 의한 P2P 라이브 스트리밍 방법을 구체적으로 살펴보기로 한다.
(a) 우선 스트리밍 서버에서 방송 원본 스트림을 다수의 서브 스트림으로 분할하여 시청 네트워크에 채널별로 전송하는 스트림분할전송단계(S210)가 수행된다.
(b) 그리고 릴레이 서버에서 상기 스트리밍 서버 측으로 채널 할당 정보가 전송되도록 하고, 상기 스트리밍 서버에서 채널 할당 정보에 대해 서브 스트림의 분할정보를 생성하고, 릴레이 서버에서 시청 네트워크의 각 시청 클라이언트들에게 원본 스트림을 복원할 수 있는 채널의 서브 스트림 접속 정보데이터를 전송하는 스트림접속정보제공단계(S230)가 수행되는 것이다.
(c) 또한 상기 시청 클라이언트에서 상기 릴레이 서버에 의해 할당된 다수의 부모 노드들로부터 원본 스트림에서 분할되었던 서브 스트림을 전송받아 원본 방송 스트림으로 복원하여 재생하고 상기 릴레이 서버에 의해 할당된 다수의 자식 노드들에게 지정된 채널의 서브 스트림을 재전송하는 스트림복원재생재전송단계(S250)가 수행되어, P2P 라이브 스트리밍 방법이 제공되는 것이다.
이에 상기 스트림분할전송단계(S210)는, (a-1) 방송 클라이언트로부터 수신된 원본 스트림을 다수의 블록들로 분할되도록 하는 원본스트림블록분할단계(S211); (a-2) 분할된 각 블록에 일련 번호가 부여되도록 하며, 복수의 블록 개수마다 패리티 블록이 생성되어 추가되도록 하여 다수의 분할된 서브 스트림이 생성되도록 하는 서브스트림생성단계(S212); 및 (a-3) 릴레이 서버에 의해 할당된 시청 클라이언트들에게 지정된 채널의 서브 스트림이 UDP 방식으로 전송되도록 하는 지정채널스트림전송단계(S213) 등으로 이루어지는 것이다.
그리고 상기 스트리밍 서버는 상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령데이터를 TCP 방식으로 수신받도록 구비되는 것이다. 또한 상기 서브스트림생성단계(S212)는, 스트리밍 서버의 FEC 인코더를 통해 생성되어 추가되는 패리티 블록이 해당 블록의 이전 블록 데이터의 xor 합으로 이루어지도록 구비되는 것이다.
이에 상기 스트림복원재생재전송단계(S250)는, (c-1) 자식 노드의 시청 클라이언트에서 다수의 부모 노드로부터 UDP 방식으로 모든 채널의 서브 스트림을 수신받는 다수부모노드서브스트림수신단계(S251)가 수행된다.
또한 (c-2) 수신된 다수의 서브 스트림을 일련 번호를 참조하여 순서에 맞게 버퍼에 저장하는 스트림일련순서저장단계(S252)와 (c-3) 저장되는 서브 스트림에서 누락된 블록을 복원하는 스트림누락블록복원단계(S253), 그리고 (c-4) 해당 시청 클라이언트에서 스트리밍서버시스템으로부터 할당된 자식 노드들에게 지정된 채널의 서브 스트림을 UDP 방식으로 재전송하는 할당자식노드재전송단계(S254)가 포함되어 구비되는 것이다.
그리고 상기 시청 클라이언트는 상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령데이터를 TCP 방식으로 수신하도록 구비되는 것이다.
또한 상기 스트림누락블록복원단계(S253)는, 시청 클라이언트의 FEC 디코더에 의해 손실 블록이 존재하면 해당 손실 블록에 대한 패리티 블록을 통해 손실 블록을 복원하도록 구비되는 것이다.
이와 함께 상기 시청 클라이언트는 속도 측정 서버와 일정 간격으로 테스트 패킷을 통신하여 해당 시청 클라이언트의 업/다운 속도를 측정하고, 측정된 속도 정보를 릴레이 서버에 전송하도록 구비되며, 이와 대응되어 상기 릴레이 서버는 각 시청 클라이언트의 속도 정보를 수집해 해당 속도 정보를 통해 채널 할당을 제어하도록 구비되는 것이다.
그리고 상기 릴레이 서버에서, 방송 클라이언트의 방송 정보를 등록하고, 해당 방송을 배포하는 스트리밍 서버에 원본 방송을 분할한 다수의 서브 스트림의 전송에 대한 채널 정보를 할당하도록 하는 서브스트림채널정보할당단계(S240)가 더 구비되는 것이다.
특히 본 발명에 있어서, 상기 릴레이 서버는 시청 네트워크 내 각 시청 클라이언트에게 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생할 수 있는 다수의 부모 노드들을 할당하고, 지정된 채널의 서브 스트림을 재전송할 수 있는 다수의 자식 노드들을 할당하며, 전체 네트워크 내 노드 정보를 관리하도록 구비되는 것이다. 따라서 이러한 릴레이 서버에서의 풀 메시 그래프 구조의 시청 네트워크에 있어서의 다수의 시청 클라이언트에 의해 이루어지는 노드 정보는 릴레이 서버에서 정보수집 및 관리가 이루어지는 것으로, 이러한 릴레이 서버에 의하여 전체 본 발명에 따른 풀 메시 그래프 구조의 시청 네트워크의 구성이 원활하게 이루어지도록 하는 것이다.
이와 함께 상기 릴레이 서버에서 시청 네트워크 내에서 부모 노드의 시청 클라이언트에 대한 노드의 이탈이 발생하거나 자식 노드의 시청 클라이언트로부터 특정 채널의 노드 교체를 요청하는 신호를 전송하게 되면, 해당 서브 스트림에 대한 새로운 부모 노드의 시청 클라이언트로 접속할 수 있도록 대체 접속 정보를 제공하도록 하는 부모노드대체접속스트림제공단계(S270)가 더 포함되어 구비되는 것이다.
그리고 이러한 상기 부모노드대체접속스트림제공단계(S270)는 새로운 부모 노드의 시청 클라이언트로 접속할 수 있도록 하는 대체접속 정보의 제공이 후보 선정 과정과 우선 순위에 의한 노드 선택 과정을 통해 이루어지도록 구비되는 것이다.
이에 상기 릴레이 서버에서의 후보 선정 과정은, 시청 클라이언트가 보낸 요청에 대해 검색 대상 노드가 소정 개수 이하의 자식 노드를 가지고 있는지 여부를 판단하는 제 1 판단 기준, 방송 참여 후 소정 시간이 지났는지 여부를 판단하는 제 2 판단 기준, 이미 과거에 교체 재할당한 노드인지 여부를 판단하는 제 3 판단 기준, 대상 노드의 클라이언트의 누적 유실률이 소정 임계치 이하인지 여부를 판단하는 제 4 판단 기준 및 요청 채널에 대한 부모의 경로에 따른 상위 검색시 요청한 클라이언트 자신을 지나지 않고 채널의 루트 노드에 도달하는 노드인지 여부를 판단하는 제 5 판단 기준 중 적어도 하나 이상의 기준이 적용되어 후보 부모 노드가 선정되도록 구비되는 것이다.
또한 상기 릴레이 서버에서의 우선 순위에 의한 노드 선택 과정은, 상기 후보 노드의 선택 이후, 전송 참여 시간, 기 자식 노드 수, 루트 노드에서의 노드 거리를 고려하여 우선 순위를 산정하고, 해당 우선 순위가 가장 높은 부모 노드를 선택하도록 구비되는 것이다.
나아가 상기 릴레이 서버에서, 후보 선정 과정과 우선 순위에 의한 노드 선택 과정을 통해 할당할 노드의 검색이 실패하면, 이미 다른 채널에 할당된 노드를 기설정된 중복 허용 개수 내에서 다시 할당하거나, 기교체된 이력이 있고 재할당 노드이면서 검색 조건을 만족하는 가장 첫 번째 노드를 재할당 노드로 할당하거나, 스트리밍 서버를 재할당 노드로 할당되도록 구비되는 것이다.
이상으로 본 발명의 실시예에 대하여 상세히 설명하였으나, 이는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 일실시예를 기재한 것이므로, 상기 실시예의 기재에 의하여 본 발명의 기술적 사상이 제한적으로 해석되어서는 아니 된다.
100 : P2P 라이브 스트리밍 시스템
200 : 스트리밍서버시스템
10 : 방송 클라이언트 20 : 스트리밍 서버
21 : 스트리밍 제어부 22 : 방송수신부
23 : 스트림 분할부 24 : FEC 인코더
30 : 시청 클라이언트 31 : 클라이언트 제어부
32 : 스트림 수신부 34 : FEC 디코더
40 : 릴레이 서버 41 : 릴레이 제어부
42 : 스트리밍 관리부 45 : 시청 관리부

Claims (11)

  1. 방송 정보의 원본 스트림을 다수의 서브 스트림으로 분할하며, 풀 메시 그래프 구조의 시청 네트워크의 시청 클라이언트 측으로 분할된 서브 스트림 데이터를 전송하도록 하는 스트리밍서버시스템과,
    상기 스트리밍서버시스템으로부터 분할된 서브 스트림을 전송받고 분할된 서브 스트림에서 원본 스트림으로 복원하도록 하는 풀 메시 그래프 구조의 시청 네트워크의 시청 클라이언트가 포함되어 구비되고,
    상기 스트리밍서버시스템은, 시청 클라이언트로부터 방송 정보 제공의 요청 정보를 수신받으면 해당 시청 클라이언트에 대한 풀 메시 그래프 구조의 시청 네트워크에서의 할당된 다수의 부모 노드 정보데이터를 해당 시청 클라이언트로 전송하며,
    상기 시청 클라이언트는 상기 스트리밍서버시스템으로부터 전송된 풀 메시 그래프 구조의 시청 네트워크에서의 할당된 다수의 부모 노드 정보데이터를 전송받고, 할당된 다수의 부모 노드를 통하여 분할된 서브 스트림 데이터를 전송받도록 구비된 스트리밍시스템에 있어서,
    상기 스트리밍서버시스템에는,
    원본 스트림을 적어도 둘 이상의 서브 스트림으로 분할하여 시청 네트워크에 채널별로 전송하는 스트리밍 서버와;
    상기 스트리밍 서버에 시청 클라이언트의 채널 할당 정보를 제공하고, 시청 네트워크의 각 시청 클라이언트들에게 원본 스트림을 복원할 수 있는 채널의 서브 스트림 접속 정보를 제공하는 릴레이 서버가 포함되어 구비되고,
    상기 시청 네트워크는 적어도 하나 이상의 시청 클라이언트가 포함되며,
    상기 시청 네트워크의 시청 클라이언트들은 상기 릴레이 서버에 의해 할당된 다수의 부모 노드들로부터 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생하고 상기 릴레이 서버에 의해 할당된 다수의 자식 노드들에게 지정된 채널의 서브 스트림을 재전송함으로써 부모 노드 및 자식 노드의 관계가 다 대 다로 연결되는 풀 메시 시청 네트워크로 구비되고,
    상기 릴레이 서버는 시청 네트워크의 각 시청 클라이언트에게, 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생할 수 있는 다수의 부모 노드들을 할당하고, 지정된 서브 스트림을 재전송할 수 있는 다수의 자식 노드들을 할당하도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 시스템.
  2. 삭제
  3. 제 1항에 있어서,
    상기 릴레이서버는 상기 스트리밍 서버에 채널 할당 정보를 제공하여 서브 스트림이 분할 전송되도록 하고, 전체 네트워크의 노드 정보가 관리되도록 구비되며,
    상기 스트리밍 서버는,
    방송 클라이언트로부터 수신된 원본 스트림을 다수의 블록들로 분할하는 스트림 분할부;
    상기 스트림 분할부에 의해 분할된 각 블록에 일련 번호를 부여하며 소정 블록 개수마다 패리티 블록을 생성하여 추가시켜 다수의 분할된 서브 스트림으로 구성하는 FEC 인코더;
    상기 릴레이 서버에 의해 할당된 시청 클라이언트들에게 지정된 채널의 서브 스트림을 UDP 방식으로 전송하는 스트림 송신부; 및
    상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령을 TCP 방식으로 수신하는 제어정보 수신부가 포함되어 구비되고,
    상기 FEC 인코더를 통해 생성되어 추가되는 패리티 블록은 해당 블록의 이전 블록 데이터의 xor 합으로 이루어져 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 시스템.
  4. 제 1항에 있어서,
    상기 시청 클라이언트는,
    다수의 부모 노드로부터 UDP 방식으로 모든 채널의 서브 스트림을 전송받는 스트림 수신부;
    상기 스트림 수신부를 통해 수신된 다수의 서브 스트림을 일련 번호를 참조하여 순서에 맞게 버퍼에 저장하는 스트림 조합부;
    저장되는 서브 스트림에서 누락된 블록을 복원하는 FEC 디코더;
    할당된 자식 노드들에게 지정된 채널의 서브 스트림을 UDP 방식으로 재전송하는 스트림 송신부; 및
    상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령을 TCP 방식으로 수신하는 제어정보 수신부가 포함되어 구비되고,
    상기 FEC 디코더는 손실 블록이 존재하면 해당 손실 블록에 대한 패리티 블록을 통해 손실 블록이 복원되도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 시스템.
  5. 제 1항에 있어서,
    상기 스트리밍서버시스템은, 상기 시청 클라이언트와 소정 간격으로 테스트 패킷을 통신하여 해당 시청 클라이언트의 현재 업/다운 속도를 측정하는 속도 측정 서버가 더 포함되어 구비되고,
    상기 시청 클라이언트는 측정된 속도 정보를 릴레이 서버에 전송하고, 각 시청 클라이언트의 속도 정보를 수집한 릴레이 서버에서 해당 속도 정보를 통해 채널 할당을 제어하도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 시스템.
  6. (a) 스트리밍서버시스템의 스트리밍 서버에서 방송 원본 스트림을 다수의 서브 스트림으로 분할하여 시청 네트워크에 채널별로 전송하는 스트림분할전송단계(S210);
    (b) 스트리밍서버시스템의 릴레이 서버에서 상기 스트리밍 서버 측으로 채널 할당 정보가 전송되도록 하고, 상기 스트리밍 서버에서 채널 할당 정보에 대해 서브 스트림의 분할정보를 생성하고, 릴레이 서버에서 시청 네트워크의 각 시청 클라이언트들에게 원본 스트림을 복원할 수 있는 채널의 서브 스트림 접속 정보데이터를 전송하는 스트림접속정보제공단계(S230); 및
    (c) 상기 시청 클라이언트에서 상기 릴레이 서버에 의해 할당된 다수의 부모 노드들로부터 원본 스트림에서 분할되었던 서브 스트림을 전송받아 원본 방송 스트림으로 복원하여 재생하고 상기 릴레이 서버에 의해 할당된 다수의 자식 노드들에게 지정된 채널의 서브 스트림을 재전송하는 스트림복원재생재전송단계(S250)가 포함되어 구비되고,
    상기 시청 클라이언트는 속도 측정 서버와 일정 간격으로 테스트 패킷을 통신하여 해당 시청 클라이언트의 업/다운 속도를 측정하고, 측정된 속도 정보를 릴레이 서버에 전송하도록 구비되며,
    상기 릴레이 서버는 각 시청 클라이언트의 속도 정보를 수집해 해당 속도 정보를 통해 채널 할당을 제어하도록 구비되고,
    상기 릴레이 서버에서, 방송 클라이언트의 방송 정보를 등록하고, 해당 방송을 배포하는 스트리밍 서버에 원본 방송을 분할한 다수의 서브 스트림의 전송에 대한 채널 정보를 할당하도록 하는 서브스트림채널정보할당단계(S240)가 더 구비되며,
    상기 릴레이 서버는 시청 네트워크의 각 시청 클라이언트에게 모든 채널의 서브 스트림을 전송받아 원본 방송 스트림을 재생할 수 있는 다수의 부모 노드들을 할당하고, 지정된 채널의 서브 스트림을 재전송할 수 있는 다수의 자식 노드들을 할당하며, 전체 네트워크의 노드 정보를 관리하도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 방법.
  7. 제 6항에 있어서,
    상기 스트림분할전송단계(S210)는,
    (a-1) 방송 클라이언트로부터 수신된 원본 스트림을 다수의 블록들로 분할되도록 하는 원본스트림블록분할단계(S211);
    (a-2) 분할된 각 블록에 일련 번호가 부여되도록 하며, 복수의 블록 개수마다 패리티 블록이 생성되어 추가되도록 하여 다수의 분할된 서브 스트림이 생성되도록 하는 서브스트림생성단계(S212); 및
    (a-3) 릴레이 서버에 의해 할당된 시청 클라이언트들에게 지정된 채널의 서브 스트림이 UDP 방식으로 전송되도록 하는 지정채널스트림전송단계(S213)가 포함되어 구비되고,
    상기 스트리밍 서버는 상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령데이터를 TCP 방식으로 수신받도록 구비되고,
    상기 서브스트림생성단계(S212)는, 스트리밍 서버의 FEC 인코더를 통해 생성되어 추가되는 패리티 블록이 해당 블록의 이전 블록 데이터의 xor 합으로 이루어지도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 방법.
  8. 제 6항에 있어서,
    상기 스트림복원재생재전송단계(S250)는,
    (c-1) 자식 노드의 시청 클라이언트에서 다수의 부모 노드로부터 UDP 방식으로 모든 채널의 서브 스트림을 수신받는 다수부모노드서브스트림수신단계(S251);
    (c-2) 수신된 다수의 서브 스트림을 일련 번호를 참조하여 순서에 맞게 버퍼에 저장하는 스트림일련순서저장단계(S252);
    (c-3) 저장되는 서브 스트림에서 누락된 블록을 복원하는 스트림누락블록복원단계(S253); 및
    (c-4) 해당 시청 클라이언트에서 스트리밍서버시스템으로부터 할당된 자식 노드들에게 지정된 채널의 서브 스트림을 UDP 방식으로 재전송하는 할당자식노드재전송단계(S254)가 포함되어 구비되고,
    상기 시청 클라이언트는 상기 릴레이 서버로부터 시청 클라이언트 할당 정보 및 스트림 전송 채널 정보를 포함하는 제어 명령데이터를 TCP 방식으로 수신하도록 구비되며,
    상기 스트림누락블록복원단계(S253)는, 시청 클라이언트의 FEC 디코더에 의해 손실 블록이 존재하면 해당 손실 블록에 대한 패리티 블록을 통해 손실 블록을 복원하도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 방법.
  9. 삭제
  10. 제 6항에 있어서,
    상기 릴레이 서버에서 시청 네트워크 내에서 부모 노드의 시청 클라이언트에 대한 노드의 이탈이 발생하거나 자식 노드의 시청 클라이언트로부터 특정 채널의 노드 교체를 요청하는 신호를 전송하게 되면, 해당 서브 스트림에 대한 새로운 부모 노드의 시청 클라이언트로 접속할 수 있도록 하는 대체 접속 정보를 제공하도록 하는 부모노드대체접속스트림제공단계(S270)가 더 포함되어 구비되고,
    상기 부모노드대체접속스트림제공단계(S270)는 새로운 부모 노드의 시청 클라이언트로 접속할 수 있도록 하는 대체접속 정보의 제공이 후보 선정 과정과 우선 순위에 의한 노드 선택 과정을 통해 이루어지도록 하고,
    상기 릴레이 서버에서의 후보 선정 과정은,
    시청 클라이언트가 보낸 요청에 대해 검색 대상 노드가 소정 개수 이하의 자식 노드를 가지고 있는지 여부를 판단하는 제 1 판단 기준,
    방송 참여 후 소정 시간이 지났는지 여부를 판단하는 제 2 판단 기준,
    이미 과거에 교체 재할당한 노드인지 여부를 판단하는 제 3 판단 기준,
    대상 노드의 클라이언트의 누적 유실률이 소정 임계치 이하인지 여부를 판단하는 제 4 판단 기준 및
    요청 채널에 대한 부모의 경로에 따른 상위 검색시 요청한 클라이언트 자신을 지나지 않고 채널의 루트 노드에 도달하는 노드인지 여부를 판단하는 제 5 판단 기준,
    중 적어도 하나 이상의 기준이 적용되어 후보 부모 노드가 선정되도록 구비되며,
    상기 릴레이 서버에서의 우선 순위에 의한 노드 선택 과정은,
    후보 부모 노드의 선정 이후, 전송 참여 시간, 기 자식 노드 수, 루트 노드에서의 노드 거리를 고려하여 우선 순위를 산정하고, 해당 우선 순위가 가장 높은 부모 노드를 선택하도록 구비되고,
    상기 릴레이 서버에서, 후보 선정 과정과 우선 순위에 의한 노드 선택 과정을 통해 할당할 노드의 검색이 실패하면, 이미 다른 채널에 할당된 노드를 기설정된 중복 허용 개수 내에서 다시 할당하거나, 기교체된 이력이 있고 재할당 노드이면서 검색 조건을 만족하는 가장 첫 번째 노드를 재할당 노드로 할당하거나, 스트리밍 서버를 재할당 노드로 할당되도록 구비되는 것을 특징으로 하는 P2P 라이브 스트리밍 방법.
  11. 삭제
KR1020100038823A 2010-04-27 2010-04-27 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법 KR101089562B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100038823A KR101089562B1 (ko) 2010-04-27 2010-04-27 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법
PCT/KR2011/002457 WO2011136481A2 (ko) 2010-04-27 2011-04-07 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100038823A KR101089562B1 (ko) 2010-04-27 2010-04-27 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20110119229A KR20110119229A (ko) 2011-11-02
KR101089562B1 true KR101089562B1 (ko) 2011-12-05

Family

ID=44862000

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100038823A KR101089562B1 (ko) 2010-04-27 2010-04-27 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법

Country Status (2)

Country Link
KR (1) KR101089562B1 (ko)
WO (1) WO2011136481A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101397183B1 (ko) 2013-05-30 2014-05-19 주식회사 솔박스 스트리밍 서비스에서의 재생 목록 파일 관리 방법 및 그 장치

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8948081B2 (en) * 2012-04-13 2015-02-03 Intel Corporation Device, system and method of multiple-stream wireless communication
CN104184757B (zh) * 2013-05-22 2018-02-02 河南工业大学 一种面向流媒体直播系统的云平台资源调度方法
KR101451957B1 (ko) * 2013-06-05 2014-10-16 에스케이플래닛 주식회사 클라우드 컴퓨팅 기반 단말 장치간 스트리밍 서비스 시스템, 클라우드 서버를 이용한 단말 장치간 스트리밍 서비스 방법 및 이를 위한 장치
KR102130739B1 (ko) * 2013-09-27 2020-07-06 삼성전자주식회사 송신 장치, 수신 장치 및 그 제어방법
KR102210409B1 (ko) 2015-01-02 2021-01-29 에스케이텔레콤 주식회사 라이브 스트리밍 컨텐츠 제공 방법, 이를 위한 라이브 스트리밍 캐시 장치 및 이를 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
KR102174360B1 (ko) 2015-07-28 2020-11-04 에스케이텔레콤 주식회사 스트리밍 서비스 제공 방법 및 이를 위한 장치
KR20170018603A (ko) 2015-08-10 2017-02-20 에스케이텔레콤 주식회사 스트리밍 서비스 제공 방법 및 이를 위한 장치
KR102281217B1 (ko) 2015-10-30 2021-07-23 에스케이텔레콤 주식회사 인코딩 방법 및 디코딩 방법, 그리고 이를 위한 장치
KR102209782B1 (ko) 2015-11-02 2021-01-28 에스케이텔레콤 주식회사 스트리밍 서비스 제공 방법 및 이를 위한 장치
CN106817613B (zh) * 2015-11-30 2020-08-28 腾讯科技(深圳)有限公司 实现音视频内容播放的方法和装置
KR101791208B1 (ko) * 2016-01-12 2017-10-31 네이버 주식회사 생중계 데이터를 공유하는 방법 및 시스템
KR20170097546A (ko) 2016-02-18 2017-08-28 에스케이텔레콤 주식회사 이종 네트워크상에서의 컨텐츠 전송 방법 및 이를 위한 장치
KR102436443B1 (ko) * 2020-12-21 2022-08-25 펜타시큐리티시스템 주식회사 실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치
CN115480832A (zh) * 2021-05-27 2022-12-16 北京字节跳动网络技术有限公司 一种直播间服务配置方法、装置、设备及介质
US11936535B2 (en) 2021-10-29 2024-03-19 Samsung Electronics Co., Ltd. Server and electronic device for transmitting and receiving stream data and method for operating the same
KR102480326B1 (ko) * 2021-12-17 2022-12-23 주식회사 디나텍 무선 통신 중계 기능을 구비한 마을 무선 방송 장치 및 이를 이용한 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100537840B1 (ko) 2005-05-16 2005-12-20 넷플라이주식회사 대화형 고화질 방송이 가능한 자원 및 방송 피어 투 피어네트워크 구조
US20100064049A1 (en) 2006-11-29 2010-03-11 Nazanin Magharei Contribution aware peer-to-peer live streaming service

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7593333B2 (en) * 2004-07-07 2009-09-22 Microsoft Corporation Efficient one-to-many content distribution in a peer-to-peer computer network
US8997206B2 (en) * 2007-06-06 2015-03-31 Avaya Inc. Peer-to-peer network over a virtual private network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100537840B1 (ko) 2005-05-16 2005-12-20 넷플라이주식회사 대화형 고화질 방송이 가능한 자원 및 방송 피어 투 피어네트워크 구조
US20100064049A1 (en) 2006-11-29 2010-03-11 Nazanin Magharei Contribution aware peer-to-peer live streaming service

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101397183B1 (ko) 2013-05-30 2014-05-19 주식회사 솔박스 스트리밍 서비스에서의 재생 목록 파일 관리 방법 및 그 장치

Also Published As

Publication number Publication date
WO2011136481A2 (ko) 2011-11-03
WO2011136481A3 (ko) 2012-03-01
KR20110119229A (ko) 2011-11-02

Similar Documents

Publication Publication Date Title
KR101089562B1 (ko) 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법
US11539768B2 (en) System and method of minimizing network bandwidth retrieved from an external network
US7991906B2 (en) Method of data request scheduling in peer-to-peer sharing networks
CN1767636B (zh) 内容分布方法、程序和信息处理装置
US9325786B2 (en) Peer-to-peer interactive media-on-demand
CN105392068B (zh) 分布式多传输信道网络直播视频并行分发方法及系统
US8677008B2 (en) Distributed storage system with high bandwidth utilization
US8966097B1 (en) Fractional redundant distribution of media content
JP2020039140A (ja) 仮想ブロードキャストシステムおよび方法
JP5324582B2 (ja) 要求応答並列ビデオサーバにおける負荷分散及び受付予定管理
US20040255323A1 (en) System and method for piecewise streaming of video using a dedicated overlay network
JP5724139B2 (ja) セッション数によりp2pのツリー構造を形成するp2p方式のインターネットライブ放送サービスシステム及び方法
KR101252947B1 (ko) 비디오 청크 분포에 적응적인 푸쉬-풀 혼성 스트리밍 방법 및 장치
US20230126704A1 (en) System and method of minimizing network bandwidth retrieved from an external network
CN101668037B (zh) 一种p2p网络的调度方法
US9386056B1 (en) System, method and computer readable medium for providing media stream fragments
Meskovic et al. Content delivery architectures for live video streaming: hybrid cdn-p2p as the best option

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: 20141126

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150223

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161128

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190919

Year of fee payment: 9