KR101015098B1 - P2p 기반의 스트리밍 서비스 제공 시스템 및 방법 - Google Patents

P2p 기반의 스트리밍 서비스 제공 시스템 및 방법 Download PDF

Info

Publication number
KR101015098B1
KR101015098B1 KR1020100092039A KR20100092039A KR101015098B1 KR 101015098 B1 KR101015098 B1 KR 101015098B1 KR 1020100092039 A KR1020100092039 A KR 1020100092039A KR 20100092039 A KR20100092039 A KR 20100092039A KR 101015098 B1 KR101015098 B1 KR 101015098B1
Authority
KR
South Korea
Prior art keywords
peer
user
data
message
peers
Prior art date
Application number
KR1020100092039A
Other languages
English (en)
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 주식회사 한국미디어정보기술
Application granted granted Critical
Publication of KR101015098B1 publication Critical patent/KR101015098B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)

Abstract

P2P 기반의 스트리밍 서비스 제공 시스템 및 방법이 개시된다. IPTV 등 컴퓨터 네트워크를 이용한 방송에 있어서, P2P(Peer-to-peer) 통신을 이용하여 안정적으로 스트리밍 서비스를 제공하기 위한 P2P 기반의 스트리밍 서비스 제공 시스템은 릴레이 피어, 에이전트 피어, 및 사용자 피어를 포함한다. 릴레이 피어는 동일 피어 그룹 내의 사용자 피어 및 일반 피어와, 릴레이 피어 사이에서 메시지 송수신 파이프를 생성하고, 메시지 송수신 파이프를 통해 이동하는 메시지를 송수신하고, 에이전트 피어는 P2P 네트워크에 포함된 전체 피어들의 피어 정보를 저장하고, 사용자 피어로부터 데이터 검색 요청 메시지를 수신하면, 피어 정보를 사용자 피어로 전송한다. 또한, 사용자 피어는 사용자로부터 피어 정보 중 재생을 원하는 데이터가 선택되면, 선택된 데이터의 세그먼트를 저장하고 있는 피어들 중, 미리 설정된 데이터 구간들 각각에 대응하는 데이터 세그먼트를 저장하고 있는 피어들에게 릴레이 피어를 통해 피어 추가 메시지를 전송하고, 피어 추가 메시지를 수신한 피어들 중 미리 설정된 가변확률 기준에 따라 사용자 피어를 추가한 피어로부터 생성된 데이터 송수신 파이프를 통해, 데이터 전송 요청 메시지에 대응하는 데이터 전송 응답 메시지를 수신하여, 데이터 전송 응답 메시지에 포함된 데이터 세그먼트를 상기 미리 설정된 데이터 구간들 중 대응하는 위치로 저장하여 스트리밍 재생한다. 이로 인해, 컴퓨터 네트워크를 이용한 방송시 P2P 통신 방식을 이용하여, 스트리밍 서버 및 사용자 피어 하드웨어의 처리 능력에 대한 의존성을 줄일 수 있고, 네트워크 비용을 낮출 수 있으며, 사용자 피어와 IPTV의 동일 채널을 시청하고 있는 피어들로 능동적으로 오버레이 네트워크를 구성함으로써 안정적인 스트리밍 서비스의 제공 및 대규모 자원을 관리할 수 있다.

Description

P2P 기반의 스트리밍 서비스 제공 시스템 및 방법{System and method for providing P2P based streaming service}
본 발명은 P2P 기반의 스트리밍 서비스 제공 시스템 및 방법에 관한 것으로, 보다 상세하게는 IPTV 등 컴퓨터 네트워크를 이용한 방송에 있어서, P2P(Peer-to-peer) 통신을 이용하여 안정적으로 스트리밍 서비스를 제공하기 위한 시스템 및 방법에 관한 것이다.
IPTV(Internet Protocol Television)는 실시간 방송과 주문형 비디오(VoD, Viedo on Demand) 서비스를 인터넷을 통해 제공하는 양방향 텔레비전 서비스를 의미한다. 즉, 방송국에서 송출하는 TV 프로그램을 일방적으로 수신하여 시청할 수 있고, 비디오 서버에 저장된 프로그램을 사용자들이 원하는 시간에 원하는 장소에서 직접 선택하여 시청할 수 있게 하는 텔레비전 서비스를 의미한다.
사용자의 만족도를 높이기 위해 IPTV 서비스에 요구되는 중요한 기술 중 하나는 스트리밍(streaming) 기술이다.
스트리밍은 대용량의 비디오, 오디오 등과 같은 멀티미디어 데이터를 실시간으로 전송, 수신, 디코딩하여 네트워크와 CPU 자원을 최적으로 사용하는 기술로서, 전송되는 데이터를 물의 흐름처럼 끊김 없이 연속적으로 처리할 수 있는 기술을 의미한다.
현재, IPTV 등 컴퓨터 네트워크를 이용한 방송에서는 스트리밍 기술을 이용하여 사용자에게 데이터를 제공하기 위해, 데이터 스트림을 송출하는 스트리밍 서버와 이를 수신하는 다수 클라이언트가 유니캐스트(unincast) 방식으로 운용되고 있다.
하지만, 이러한 방식은 가입자가 많을수록 스트리밍 서버에 큰 부하가 발생하므로, 원활한 서비스 제공을 위해 현재의 서버 자원에 따라 접속 가능한 사용자 수가 제한된다는 문제가 있으며, 이를 해결하기 위해 IPTV 서비스에 대한 수요가 증가하는 경우, 더욱 많은 사용자에게 고품질의 스트리밍 서비스를 제공하기 위해 다음과 같은 방법을 사용한다.
첫 번째 방법은, 데이터의 압축을 통해 전송하는 데이터 패킷 크기를 줄이는 데이터 압축 포맷 등 트랜스코딩 방식을 향상시키는 것이다.
이 방법은 제한된 인프라 스트럭처에서 데이터의 스트리밍 품질을 높일 수는 있지만, 스트리밍 서버 및 클라이언트 하드웨어의 처리 능력에 크게 의존하게 된다는 문제점이 있다.
두 번째 방법은, 인프라 스트럭처를 확장시키는 것이다. 즉, 스트리밍 서버 또는 처리 능력이 더 뛰어난 네트워크 장비를 증설하거나, 물리적 대역폭을 확장하여 늘어난 트래픽을 감당하는 방식이다.
하지만, 이 방법은 인터넷 서비스 사업자(ISP)에 지불해야 하는 비용의 상승폭이 대역폭의 향상폭 보다 크다는 문제점이 있다.
본 발명은 이와 같은 종래의 문제점을 해결하기 위해 안출된 것으로서, IPTV 등 컴퓨터 네트워크를 이용한 방송시 P2P(Peer-to-peer) 통신을 이용하여 네트워크 비용을 낮추며, 안정적으로 스트리밍 서비스를 제공하는 것을 목적으로 한다.
상술한 과제를 해결하기 위한, 하나의 릴레이 피어와 메시지 송수신 파이프를 통해 연결되어 피어 그룹을 형성하는 사용자 피어 및 일반 피어, 복수의 피어 그룹 외부에서 복수의 릴레이 피어와 메시지 송수신 파이프를 통해 연결되는 에이전트 피어를 포함하는 본 발명에 따른 P2P 기반의 스트리밍 서비스 제공 시스템은 릴레이 피어, 에이전트 피어, 및 사용자 피어를 포함한다.
릴레이 피어는 동일 피어 그룹 내의 사용자 피어 및 일반 피어와, 릴레이 피어 사이에서 메시지 송수신 파이프를 생성하고, 메시지 송수신 파이프를 통해 이동하는 메시지를 송수신하고, 에이전트 피어는 P2P 네트워크에 포함된 전체 피어들의 피어 정보를 저장하고, 사용자 피어로부터 데이터 검색 요청 메시지를 수신하면, 피어 정보를 사용자 피어로 전송한다.
또한, 사용자 피어는 사용자로부터 피어 정보 중 재생을 원하는 데이터가 선택되면, 선택된 데이터의 세그먼트를 저장하고 있는 피어들 중, 미리 설정된 데이터 구간들 각각에 대응하는 데이터 세그먼트를 저장하고 있는 피어들에게 릴레이 피어를 통해 피어 추가 메시지를 전송하고, 피어 추가 메시지를 수신한 피어들 중 미리 설정된 가변확률 기준에 따라 사용자 피어를 추가한 피어로부터 생성된 데이터 송수신 파이프를 통해, 데이터 전송 요청 메시지에 대응하는 데이터 전송 응답 메시지를 수신하여, 데이터 전송 응답 메시지에 포함된 데이터 세그먼트를 상기 미리 설정된 데이터 구간들 중 대응하는 위치로 저장하여 스트리밍 재생한다.
이로 인해, 컴퓨터 네트워크를 이용한 방송시 P2P 통신 방식을 이용하여, 스트리밍 서버 및 사용자 피어 하드웨어의 처리 능력에 대한 의존성을 줄일 수 있고, 네트워크 비용을 낮출 수 있으며, 사용자 피어와 IPTV의 동일 채널을 시청하고 있는 피어들로 능동적으로 오버레이 네트워크를 구성함으로써 안정적인 스트리밍 서비스의 제공 및 대규모 자원을 관리할 수 있다.
또한, 사용자 피어는 일반 피어들 중 하나일 수 있다.
또한, 사용자 피어는 일반 피어로부터 릴레이 피어를 통해 전송된 피어 추가 메시지를 수신하면 미리 설정된 가변확률 기준에 따라 일반 피어를 추가하고, 가변확률은 '가변확률 = 1/(1+오버레이 네트워크에 포함되어 있는 피어의 개수)'의 식으로 산출할 수 있다.
또한, 사용자 피어는 미리 설정된 가변확률 기준인 소정 수치를 넘지 않을 경우, 피어 추가 메시지를 전송한 일반 피어를 추가하고, 자신과 일반 피어 사이에 데이터 송수신 파이프를 생성하여, 데이터 송수신 파이프로 연결된 피어들로 구성되는 오버레이 네트워크를 생성할 수 있다.
또한, 사용자 피어는 미리 설정된 데이터 구간들 중 하나의 구간에 대응하는 데이터 세그먼트를 저장하고 있는 피어가 복수로 존재할 경우, 자신과의 네트워크 거리를 비교하여, 네트워크 거리가 가장 가까운 피어에게 피어 추가 메시지를 전송할 수 있다.
또한, 사용자 피어는 피어 추가 메시지를 수신한 피어가 사용자 피어를 추가하지 않을 경우, 해당 피어가 저장하고 있는 데이터 세그먼트와 동일한 데이터 세그먼트를 저장하고 있는 타 피어에게 피어 추가 메시지를 전송할 수 있다.
또한, 에이전트 피어는 사용자 피어로부터 릴레이 피어를 통해 피어 추가 메시지를 수신하면, 가변확률 기준에 따라 사용자 피어를 추가한 후 데이터 송수신 파이프를 생성하고, 사용자 피어로부터 데이터 송수신 파이프를 통해 수신한 데이터 저장 메시지에 포함되어 있는 데이터 세그먼트를 저장할 수 있다.
상술한 과제를 해결하기 위한 본 발명에 따른 P2P 기반의 스트리밍 서비스 제공 방법은 사용자 피어와 릴레이 피어가 연결되는 (b) 단계, 사용자 피어가 릴레이 피어를 통해 에이전트 피어로 P2P 네트워크에 포함된 전체 피어들의 피어 정보를 요청하는 데이터 검색 요청 메시지를 전송하는 (c) 단계, 사용자 피어가 에이전트 피어로부터 수신한 데이터 검색 응답 메시지에 포함되어 있는 피어 정보를 이용하여, 사용자로부터 선택된 데이터를 저장하고 있는 피어 피어들 중, 미리 설정된 데이터 구간들 각각에 대응하는 데이터 세그먼트를 저장하고 있는 피어들에게 릴레이 피어를 통해 피어 추가 메시지를 전송하는 (d) 단계, 사용자 피어로부터 피어 추가 메시지를 수신한 피어들은 미리 설정된 가변확률 기준에 따라 사용자 피어를 추가하고, 데이터 송수신 파이프를 생성하는 (e) 단계, 및 사용자 피어는 사용자 피어를 추가한 피어들로 전송한 데이터 전송 요청 메시지에 대응하는 데이터 전송 응답 메시지를 수신하여, 데이터 전송 응답 메시지에 포함된 데이터 세그먼트를 순서대로 스트리밍 재생하는 (g) 단계를 포함한다.
또한, (b) 단계에서는 릴레이 피어가 동일 피어 그룹 내의 사용자 피어 및 일반 피어와, 릴레이 피어 사이에서 메시지 송수신 파이프를 생성하여, 사용자 피어와 릴레이 피어가 연결될 수 있다.
또한, (d) 단계에서는 미리 설정된 데이터 구간들 중 하나의 구간에 대응하는 데이터 세그먼트를 저장하고 있는 피어가 복수로 존재할 경우, 사용자 피어가 자신과의 네트워크 거리를 비교하여, 네트워크 거리가 가장 가까운 피어에게 피어 추가 메시지를 전송할 수 있다.
또한, 본 발명에 따른 P2P 기반의 스트리밍 서비스 제공 방법은 (e) 단계 및 (g) 단계 사이에서, 사용자 피어는 피어 추가 메시지를 수신한 피어가 사용자 피어를 추가하지 않을 경우, 해당 피어가 저장하고 있는 데이터 세그먼트와 동일한 데이터 세그먼트를 저장하고 있는 타 피어에게 피어 추가 메시지를 전송하는 (f) 단계를 더 포함할 수 있다.
또한, 사용자 피어는 상기 일반 피어들 중 하나일 수 있다.
또한, (e) 단계에서는 일반 피어로부터 피어 추가 메시지를 수신한 사용자 피어는 미리 설정된 가변확률 기준에 따라 일반 피어를 추가하고, 가변확률은 '가변확률 = 1/(1+오버레이 네트워크에 포함되어 있는 피어의 개수)'의 식으로 산출할 수 있다.
또한, (g) 단계에서는 사용자 피어가 미리 설정된 가변확률 기준인 소정 수치를 넘지 않을 경우, 피어 추가 메시지를 전송한 일반 피어를 추가하고, 자신과 일반 피어 사이에 데이터 송수신 파이프를 생성하여, 데이터 송수신 파이프로 연결된 피어들로 구성되는 오버레이 네트워크를 생성할 수 있다.
또한, 본 발명에 따른 P2P 기반의 스트리밍 서비스 제공 방법은 (b) 단계 이전에, 사용자 피어가 에이전트 피어로 피어 추가 메시지를 전송하는 (a-1) 단계, 에이전트 피어가 피어 추가 메시지를 수신하면, 가변확률 기준에 따라 사용자 피어를 추가한 후 데이터 송수신 파이프를 생성하는 (a-2) 단계, 및 에이전트 피어가 데이터 송수신 파이프를 통해 사용자 피어로부터 수신한 데이터 저장 메시지에 포함되어 있는 데이터 세그먼트를 저장하는 (a-3) 단계를 더 포함할 수 있다.
본 발명에 의해 IPTV 등 컴퓨터 네트워크를 이용한 방송시 P2P(Peer-to-peer) 통신 방식을 이용함으로써, 스트리밍 서버 및 사용자 피어 하드웨어의 처리 능력에 대한 의존성을 줄일 수 있고, 네트워크 비용을 낮출 수 있다.
또한, 본 발명은 사용자 피어에서 P2P 네트워크상의 피어들 중, 사용자 피어와 IPTV의 동일 채널을 시청하고 있는 피어들로 능동적으로 오버레이 네트워크를 구성함으로써 안정적으로 스트리밍 서비스를 제공할 수 있으며, 대규모 자원을 관리할 수 있다.
도 1은 본 발명에 따른 P2P 기반의 스트리밍 서비스 제공 시스템을 개략적으로 나타낸 네트워크 구성도.
도 2는 도 1의 각 구성을 상세하게 나타낸 블록도.
도 3은 본 발명에 따른 P2P 기반의 스트리밍 서비스 제공 방법을 나타낸 흐름도.
도 4는 도 3의 단계 S100인, 사용자 피어의 P2P 네트워크 연결 단계를 상세히 나타낸 흐름도.
도 5는 도 4에 따른 사용자 피어의 P2P 네트워크 연결 단계를 도시한 도면.
도 6은 도 3의 단계 S200인, 사용자 피어가 소정의 피어에게 피어 추가 메시지를 전송하는 단계를 상세히 나타낸 흐름도.
도 7은 피어 추가 메시지를 수신한 피어들과 사용자 피어 사이에 데이터 송수신 파이프가 생성되는 단계를 상세히 나타낸 흐름도.
도 8은 가변확률 P에 따라 사용자 피어를 등록하고, 생성한 데이터 송수신 파이프를 추가하는 실시예를 나타낸 도면.
도 9는 도 3의 단계 S400인, 사용자 피어가 재생하고자 하는 데이터 세그먼트를 수신하는 단계를 상세히 나타낸 흐름도.
도 10은 사용자 피어가 에이전트 피어에 자신의 데이터 세그먼트를 저장하는 과정을 나타낸 흐름도.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명한다. 발명의 이해를 보다 명확하게 하기 위해 동일한 구성요소에 대해서는 상이한 도면에서도 동일한 부호를 사용하도록 한다.
도 1은 본 발명에 따른 P2P 기반의 스트리밍 서비스 제공 시스템(100)을 개략적으로 나타낸 네트워크 구성도이고, 도 2는 도 1의 각 구성을 상세하게 나타낸 블록도이다.
도 1 및 도 2를 참조하면, P2P 기반의 스트리밍 서비스 제공 시스템(100)은 릴레이 피어(10 내지 30), 에이전트 피어(50), 및 사용자 피어(40)를 포함한다.
각각의 릴레이 피어(10, 20, 또는 30)는 자신이 속한 피어 그룹(110, 120, 또는 130)에 포함되어 있는 일반 피어 및 사용자 피어(40)와, 에이전트 피어(50)를 연결하며, 피어들 사이에서 메시지(데이터 검색 요청 및 응답 메시지, 데이터 전송 요청 메시지, 및 피어 추가 메시지 등)의 송수신을 도와준다.
즉, 일반 피어 및 사용자 피어(40)와, 에이전트 피어(50) 사이에서 전송되는 메시지들은 릴레이 피어(10, 20, 또는 30)를 통해 이동한다.
릴레이 피어 1(10)을 대표로 하여, 각각의 릴레이 피어(10, 20, 또는 30)의 상세 구성을 살펴보면, 릴레이 피어 1(10)은 메시지 파이프 관리부(11)를 포함할 수 있다.
메시지 파이프 관리부(11)는 P2P 네트워크에 연결된 피어들 중, 릴레이 피어 1(10)과 연결된 피어들 및 릴레이 피어 1(10) 사이에서, 데이터 세그먼트를 포함하지 않은 메시지의 송수신을 위한 파이프(메시지 송수신 파이프)를 생성하고, 생성된 파이프 정보를 저장할 수 있다.
에이전트 피어(50)는 서로 다른 피어 그룹(110 내지 130)에 각각 존재하는 복수의 릴레이 피어(10 내지 30)와 연결되며, 각각의 릴레이 피어(10, 20, 또는 30) 및 연결된 일반 피어들에 대한 피어 정보 및 데이터 세그먼트 정보를 저장한다.
피어 정보에는 다른 피어와의 연결 관계, 연결되어 있는 피어들 사이의 네트워크 거리 정보 등이 포함될 수 있는데, 네트워크 거리 정보에는, 연결되는 피어들 사이의 네트워크 토폴로지 상의 거리, 물리적 거리, 가용 트래픽, 혼잡도, 지연 시간, 통신 서비스 품질 등과 같은 정보들이 포함될 수 있으며, 데이터 세그먼트 정보에는 해당 세그먼트가 미리 설정된 데이터 구간들 중 어느 구간에 대응하는지에 대한 정보가 포함될 수 있다.
또한, 에이전트 피어(50)는 저장하고 있는 정보 중, 사용자 피어(40)로부터 요청되는 정보를 사용자 피어(40)에게 제공하고, 사용자 피어(40)로부터 전송되는 데이터 세그먼트를 저장할 수 있다.
또한, 에이전트 피어(50)는 사용자 피어(40)가 다른 피어 그룹(120, 130)에 소속된 일반 피어에게 전송하고자 하는 메시지(데이터 세그먼트가 포함되지 않은 메시지)를 릴레이 피어 1(10)로부터 수신하여, 메시지를 수신할 피어가 소속된 피어 그룹의 릴레이 피어로 전송할 수 있다.
이러한 에이전트 피어(50)는 메시지 분석부(51), 피어 정보 저장부(52), 데이터 저장부(53), 메시지 파이프 관리부(54), 및 데이터 파이프 관리부(55)를 포함할 수 있다.
메시지 분석부(51)는 릴레이 피어들(10 내지 30) 및 일반 피어들로부터 전송되는 모든 메시지의 내용을 분석할 수 있다.
피어 정보 저장부(52)는 P2P 네트워크에 연결된 모든 피어들에 대한 피어 정보를 저장할 수 있고, 또한, 일반 피어들로부터 데이터 세그먼트의 저장이 요청될 경우, 해당되는 일반 피어의 정보에 데이터 세그먼트의 저장 내용(예컨대, 일반 피어 3으로부터 전송된 A 데이터의 3번째 구간에 대응하는 데이터 세그먼트가 저장되어 있음)을 포함할 수 있다.
데이터 저장부(53)는 일반 피어들에 저장되어 있는 데이터 세그먼트를, 일반 피어들로부터 수신하여, 각각의 일반 피어에 대응하는 디렉터리에 저장할 수 있는데, 이러한 데이터 세그먼트는 해당 데이터의 미리 설정된 구간에 대응되는 위치 로 저장될 수 있다.
메시지 파이프 관리부(54)는 에이전트 피어(50)와 새로운 릴레이 피어를 연결하기 위해, 사용자 피어(40)와 릴레이 피어 사이에서 송수신되는 데이터 세그먼트를 포함하지 않은 메시지(데이터 검색 요청 및 응답 메시지, 데이터 전송 요청 메시지, 피어 추가 메시지, 데이터 목록 요청 및 응답 메시지, 및 데이터 삭제 요청 메시지)를, 릴레이 피어와 송수신하기 위해 메시지 송수신 파이프를 생성하고, 생성된 파이프 정보를 저장할 수 있다.
데이터 파이프 관리부(55)는 메시지 송수신 파이프를 통해 사용자 피어(40) 또는 일반 피어로부터 피어 추가 메시지를 수신하면, 가변확률 P에 의해 해당 피어의 추가 여부를 결정하고, 해당 피어를 추가하기로 결정한 경우, 에이전트 피어(50)와 해당 피어 사이에서 데이터 세그먼트의 송수신을 위한 파이프(데이터 송수신 파이프)를 생성하고, 생성된 파이프 정보를 저장할 수 있다.
이때, 생성된 데이터 송수신 파이프는, 사용자 피어(40)와 동일한 데이터를 재생하고 있는 피어들로 구성되는 오버레이 네트워크의 일부가 될 수 있다.
사용자 피어(40)는 P2P 네트워크에 연결되어 있는 복수의 일반 피어 중 하나이며, 사용자가 원하는 데이터 세그먼트를 다른 일반 피어들로부터 제공받을 수 있는 IPTV의 셋톱박스, PC, 노트북, 서버, PDA, 휴대폰 등의 유무선 단말인 사용자 단말을 의미한다.
사용자 피어(40)는 사용자 피어(40)의 요청에 의해 에이전트 피어(40)로부터 수신한 P2P 네트워크상의 전체 피어들의 피어 정보로부터, 사용자로부터 선택된 데이터를 저장하고 있는 피어를 검색하고, 검색된 피어들 중, 미리 설정된 데이터 구간들 각각에 대응하는 데이터 세그먼트들을 저장하고 있는 피어들로 피어 추가 메시지를 전송한다.
만약, 하나의 구간에 대응하는 데이터 세그먼트를 저장하고 있는 피어가 복수로 존재한다면, 사용자 피어(40)는 자신과의 네트워크 거리가 가장 가까운 피어를 선택하여 피어 추가 메시지를 전송할 수 있다.
또한, 사용자 피어(40)는 사용자 피어(40)를 추가한 피어들로 데이터 전송 요청 메시지를 전송하여, 해당 데이터 세그먼트를 포함하는 데이터 전송 응답 메시지를 데이터 송수신 파이프를 통해 수신하고, 수신한 데이터 세그먼트들을 미리 설정된 구간에 대응하도록 저장한 후 스트리밍 재생한다.
이러한 사용자 피어(40)는 메시지 분석부(41), 메시지 파이프 관리부(42), 데이터 파이프 관리부(43), 데이터 저장부(44), 및 데이터 재생부(45)를 포함할 수 있다.
메시지 분석부(41)는 릴레이 피어 1(10), 및 에이전트 피어(50)를 통해 타 피어 그룹(120 또는 130)에 포함되어 있는 일반 피어들로부터 전송되는 모든 메시지의 내용을 분석할 수 있다.
메시지 파이프 관리부(42)는, 릴레이 피어 1(10)가 사용자 피어(40)와의 연결을 위해 생성한 메시지 송수신 파이프에 대한 정보를 저장할 수 있다.
데이터 파이프 관리부(43)는 다른 일반 피어로부터 피어 추가 메시지를 수신하면, 가변확률 P에 의해 해당 피어의 추가 여부를 결정하고, 해당 피어를 추가하기로 결정한 경우, 사용자 피어(40)와 해당 피어 사이에서 데이터 송수신(데이터 요청 응답 메시지)을 위한 파이프(데이터 송수신 파이프)를 생성하고, 생성된 파이프 정보를 저장할 수 있다.
이때, 생성된 데이터 송수신 파이프는, 사용자 피어(40)와 동일한 데이터를 재생하고 있는 피어들로 구성되는 오버레이 네트워크의 일부가 될 수 있다.
데이터 저장부(44)는 사용자 피어(40)가 보유하는 데이터 세그먼트가 해당 데이터의 미리 설정된 구간들 중 대응하는 위치에 저장되어 있으며, 다른 일반 피어들로부터 전송받은 데이터 세그먼트가 대응하는 구간의 위치에 저장될 수 있다.
데이터 재생부(45)는 데이터 저장부(43)에 저장되어 있는 데이터 세그먼트들을 스트리밍 재생할 수 있는데, 순차적으로 해당 데이터의 첫 번째 구간부터 미리 설정된 개수의 구간 이상으로 데이터 세그먼트들이 위치할 경우에 재생할 수 있다.
사용자 피어(40)는 P2P 네트워크에 연결된 모든 일반 피어들 중 하나가 될 수 있으므로, 일반 피어들의 구성은 상술한 사용자 피어(40)의 구성과 동일함이 바람직할 것이다.
도 3은 본 발명에 따른 P2P 기반의 스트리밍 서비스 제공 방법을 나타낸 흐름도이다.
사용자 피어(40)가 P2P 네트워크 내의 하나의 릴레이 피어(이하, '릴레이 피어 1(10)'을 예로 들어서 설명함)에 연결되면(S100), 사용자 피어(40)는 에이전트 피어(50)로 다른 피어들의 피어 정보를 요청하는 데이터 검색 요청 메시지를 전송하고, 수신한 데이터 검색 응답 메시지에 포함되어 있는 피어 정보로부터 재생하고자 하는 데이터를 저장하고 있는 피어 중, 미리 설정된 데이터 구간들 각각에 대응하는 데이터 세그먼트들을 저장하고 있는 피어들로 피어 추가 메시지를 전송한다(S200).
사용자 피어(40)로부터 피어 추가 메시지를 수신한 피어는, 자신의 가변확률 을 산출하여 사용자 피어(40)의 추가 여부를 결정하고, 사용자 피어(40)를 추가하기로 결정한 경우, 사용자 피어(40)와 데이터를 송수신하기 위한 데이터 송수신 파이프를 생성한다(S300).
사용자 피어(40)는 사용자 피어(40)의 피어 추가 메시지 수신 후 데이터 송수신 파이프를 생성한 피어들로, 재생을 원하는 데이터 세그먼트의 전송을 요청하는 데이터 전송 요청 메시지를 전송하고, 해당하는 데이터 세그먼트들을 포함하는 데이터 전송 응답 메시지들을 수신하여, 데이터 세그먼트들을 미리 설정된 데이터 구간 각각에 대응하는 위치로 저장하고(S400), 데이터 세그먼트들을 스트리밍으로 재생한다(S500).
각 단계의 기능에 대해서는 이후에 언급되는 도 4 내지 도 9를 참조하여 상세하게 설명할 것이다.
도 4는 도 3의 단계 S100인, 사용자 피어(40)의 P2P 네트워크 연결 단계를 상세히 나타낸 흐름도이고, 도 5는 도 4에 따른 사용자 피어(40)의 P2P 네트워크 연결 단계를 도시한 도면이다.
도 4 및 도 5를 참조하면, 사용자 피어(40)는 릴레이 피어 1(10)에 접속한 후, 릴레이 피어 1(10)에게 자신의 IP 주소를 이름으로 한 파이프(메시지 송수신 파이프)의 생성을 요청한다(S110).
릴레이 피어 1(10)의 메시지 파이프 관리부(12)가 사용자 피어(40)의 요청에 따라, 사용자 피어(40)와 릴레이 피어 1(10) 사이에서 데이터 세그먼트를 포함하지 않은 메시지를 송수신하는 통로가 되는 파이프(메시지 송수신 파이프, 이하에서 'U-R1 파이프'라 명명함)를 생성하면(S120), U-R1 파이프의 생성 정보는 릴레이 피어 1(10)의 메시지 파이프 관리부(12), 및 사용자 피어(40)의 메시지 파이프 관리부(42)에 등록되고, 사용자 피어(40)와 릴레이 피어 1(10)은 연결된다(S130).
사용자 피어(40)는 메시지 파이프 관리부(42)를 검색하여 U-R1 파이프 생성 정보를 찾고, U-R1 파이프를 통하여 릴레이 피어 1(10)로부터의 메시지 수신을 확인하기 위해 파이프 리스닝 스레드를 동작한다(S140).
P2P 네트워크 내의 모든 피어들은 메시지 송수신 파이프의 생성으로부터 P2P 네트워크에 포함될 수 있으며, 에이전트 피어(50)는 모든 릴레이 피어들(10, 20, 30)과 연결될 수 있고, 모든 릴레이 피어들(10, 20, 30)은 사용자 피어(40)를 포함한 일반 피어들 및 에이전트 피어(50)와 연결될 수 있다.
도 6은 도 3의 단계 S200인, 사용자 피어(40)가 소정의 피어에게 피어 추가 메시지를 전송하는 단계를 상세히 나타낸 흐름도이다.
사용자 피어(40)가 에이전트 피어(50)로 P2P 네트워크 내의 피어들이 저장하고 있는 데이터의 검색을 요청하는 메시지(데이터 검색 요청 메시지)를 전송한다(S210).
데이터 검색 요청 메시지의 미리 설정된 포맷은 다음과 같다.
Figure 112010060983113-pat00001
<CMD>SearchReq</CMD>는 고정되어 있는 것으로, 메시지의 종류가 SearchReq(검색 요청)임을 나타내고 있다.
이하의 포맷은 사용자 피어(40)에서 설정되는데, <OTP>와 </OTP> 사이에는 데이터의 검색 조건(데이터 이름 또는 IP 주소)을 언급하며, <KEYWORD>와 </KEYWORD> 사이에는 데이터 검색시 사용할 키워드를 언급하고, <FROM>과 </FROM> 사이에는 메시지를 전송하는 피어의 IP주소를 언급한다.
에이전트 피어(50)가 데이터 검색 요청 메시지를 수신하면, 에이전트 피어(50)는 메시지를 분석한다(S220). 즉, 메시지의 종류를 확인하고, 검색 조건이 데이터 이름인지, IP 주소인지를 확인한다.
다음으로, 에이전트 피어(50)는 분석한 결과를 토대로, 검색 조건이 데이터 이름일 경우에는, 에이전트 피어(50) 내의 피어 정보 저장부(52)에서 주어진 키워드를 포함하는 데이터명을 검색하고, 검색 조건이 IP 주소일 경우에는, 에이전트 피어(50) 내의 피어 정보 저장부(52)에서 주어진 IP주소와 일치하는 데이터명을 검색한다(S230).
에이전트 피어(50)는 피어 정보 저장부(52)에서 검색된 데이터명 및 해당 데이터가 위치하는 피어 정보를 포함하는 데이터 검색 응답 메시지를 미리 설정된 포맷으로 사용자 피어(40)에게 전송한다(S240).
데이터 검색 응답 메시지의 미리 설정된 포맷은 다음과 같다.
Figure 112010060983113-pat00002
<CMD>SearchRes</CMD>는 고정되어 있는 것으로, 메시지의 종류가 SearchRes(검색 응답)임을 나타내고 있다.
이하의 포맷은 에이전트 피어(50)에서 설정되는데, <FROM>과 </FROM> 사이에는 키워드에 해당하는 데이터가 존재하는 피어의 IP 주소가 언급되며, <TO>와 </TO> 사이에는 데이터 검색 응답 메시지를 수신할 피어(사용자 피어(40))의 IP주소가 언급된다.
또한, <FILENAME>과 </FILENAME> 사이에는 검색된 데이터명이 언급되며, <FILESIZE>와 </FILESIZE> 사이에는 검색된 데이터의 크기, 데이터의 세그먼트 정보, 및 피어 정보가 언급된다.
이때, FROM 요소값에는 에이전트 피어(50)가 포함될 수 있는데, 이는 일반 피어 또는 사용자 피어(40)가 에이전트 피어(50)로 데이터 세그먼트를 전송할 경우, 에이전트 피어(50)는 수신한 데이터 세그먼트를 자신의 데이터 저장부(53)에 저장할 수 있기 때문이다(이하에서 자세히 설명할 것이다).
사용자 피어(40)는 수신한 데이터 검색 응답 메시지를 분석한다(S250). 즉, CMD 요소값으로부터 응답 메시지임을 확인한 후, FROM 요소값을 통해 어느 피어로부터 메시지가 전송되었는지를 확인하고, TO 요소값을 통해 자신에게 전송된 메시지인지가 맞는지를 확인한다.
사용자 피어(40)는 자신에게 전송된 메시지가 맞다면, 데이터 검색 응답 메시지에 포함된 정보 중 데이터명을 화면에 표시하여 사용자로부터 재생을 원하는 데이터명을 선택받고(S260), 선택된 데이터명에 따른 데이터를 저장하고 있는 피어들 중, 미리 설정된 데이터 구간들 각각에 대응하는 데이터 세그먼트들을 저장하고 있는 피어들로 피어 추가 메시지를 전송한다(S270).
만약, 하나의 구간에 대응하는 데이터 세그먼트를 저장하고 있는 피어가 복수로 존재한다면, 사용자 피어(40)는 자신과 각 피어들 사이의 네트워크 거리(피어 정보에 포함)를 비교한 후, 가장 가까운 거리에 위치한 피어로 피어 추가 메시지를 전송할 수 있다.
네트워크 거리의 비교는, 피어들 사이의 네트워크 토폴러지 상의 거리 및 물리적 거리가 가까운지, 가용 트래픽이 큰지, 혼잡도가 적은지, 지연 시간이 짧은지, 통신 서비스 품질이 높은지 여부를 비교하는 것으로 수행할 수 있다.
도 7은 피어 추가 메시지를 수신한 피어들과 사용자 피어(40) 사이에 데이터 송수신 파이프가 생성되는 단계를 상세히 나타낸 흐름도이다.
도 7 및 이하에서 언급될 도 8을 참조하면, 사용자 피어(40)로부터 피어 추가 메시지를 수신한 피어들(50, 60, 70, 90)은 자신이 사용자 피어(40)를 추가할지 여부를 가변확률 P에 따라 결정한다(S310).
가변확률 P는, 'P = 1/(1+오버레이 네트워크에 포함된 피어의 개수)'의 식에 의해 구할 수 있다.
오버레이 네트워크는 P2P 네트워크에 포함되어 있는 피어들 중, 데이터 송수신 파이프로 연결되어 있는 피어들로 구성된 네트워크를 의미하며, 이로 인해 데이터를 신속하게 송수신할 수 있다.
피어 추가 메시지를 수신한 피어들(50, 60, 70, 90)은 각자 자신을 중심으로 오버레이 네트워크를 생성할 수 있는데, 오버레이 네트워크에 포함되어 있는 피어들의 개수가 적을수록 사용자 피어(40)를 추가할 확률이 높다는 것을 의미한다.
오버레이 네트워크를 생성한 피어의 대역폭은 한정되어 있으며, 포함되는 피어의 개수가 증가하게 되면 할당되는 대역폭이 줄어듦으로, 이미 많은 수의 피어를 포함하고 있다면 효율적인 데이터 송수신을 위해 사용자 피어(40)를 추가하지 않을 수 있기 때문이다.
피어 추가 메시지를 수신한 피어들(50, 60, 70, 90)은 사용자 피어(40)를 추가하기로 결정하면, 자신과 사용자 피어(40) 사이에서 데이터 송수신을 위한 데이터 송수신 파이프를 생성한다(S320).
가변확률에 따라 사용자 피어(40)를 추가하고 데이터 송수신 파이프를 생성하는 예를 들어보면, 피어 추가 메시지를 수신한 피어들(50, 60, 70, 90) 중, 각자의 가변확률을 계산하여 자신이 미리 설정한 가변확률을 넘지 않는 피어가 사용자 피어(40)를 추가하고, 데이터 송수신 파이프를 생성하여 자신의 데이터 파이프 관리부(55, 63, 73, 93 중 일부)에 등록하는 것이 될 수 있다.
데이터 송수신 파이프가 생성되면 사용자 피어(40)도 자신의 데이터 파이프 관리부(43)에 데이터 송수신 파이프를 등록할 수 있다.
만약, 단계 S310에서, 피어 추가 메시지를 수신한 피어들(50, 60, 70, 90) 중 일부 피어가 사용자 피어(40)를 추가하지 않기로 결정한 경우에는, 사용자 피어(40)는 해당 피어가 저장하고 있는 데이터 세그먼트와 동일한 데이터 세그먼트를 저장하고 있는 타 피어로 피어 추가 메시지를 전송하고(S330), 단계 S310을 다시 수행할 수 있다.
도 8은 가변확률 P에 따라 사용자 피어(40)를 등록하고, 생성한 데이터 송수신 파이프를 추가하는 실시예를 나타낸 도면이다.
피어 추가 메시지를 수신한 피어들(50, 60, 70, 90)의 개수가 4개이고, 각각의 가변확률이 1/1, 1/3, 1/7, 1/6이라면, 미리 설정된 가변확률의 수치가 1/5일 경우에, 가변확률 1/1, 1/3 각각에 대응하는 피어들(50, 60)은 데이터 송수신 파이프를 생성하여 사용자 피어(40)를 자신의 오버레이 네트워크에 추가하고, 자신들(50, 60)의 데이터 파이프 관리부(55, 63)에 등록한다.
또한, 사용자 피어(40)도 생성된 데이터 송수신 파이프를 자신의 데이터 파이프 관리부(43)에 등록하여 오버레이 네트워크를 생성할 수 있다.
만약, 사용자 피어(40)를 추가하기로 결정한 피어에 이미 피어 추가 메시지의 내용이 존재한다면, 해당 피어는 자신의 메시지 파이프 관리부에서 랜덤하게 고른 다른 파이프와 연결된 피어에게 피어 추가 메시지를 전송하고, 피어 추가 메시지를 수신한 피어는 상술한 바와 같은 가변확률을 이용하여 추가 여부를 결정하는 과정을 반복할 수 있다.
사용자 피어(40)는 데이터 송수신 파이프를 데이터 파이프 관리부(43)에 등록함으로써, 자신의 오버레이 네트워크를 능동적으로 생성할 수 있다.
도 8에서 사용자 피어(40)의 오버레이 네트워크는 진한 실선으로 연결된 피어들로 구성될 수 있다.
도 9는 도 3의 단계 S400인, 사용자 피어(40)가 재생하고자 하는 데이터 세그먼트를 수신하는 단계를 상세히 나타낸 흐름도이다.
사용자 피어(40)는 사용자 피어(40)를 추가한 피어들로, 재생을 원하는 데이터 세그먼트의 전송을 요청하는 데이터 전송 요청 메시지를 미리 설정된 포맷으로 전송한다(S410).
데이터 전송 요청 메시지의 미리 설정된 포맷은 다음과 같다.
Figure 112010060983113-pat00003
<CMD>FileDownReq</CMD>는 고정되어 있는 것으로, 메시지의 종류가 FileDownReq(데이터 다운로드(전송) 요청)임을 나타내고 있다.
이하의 포맷은 사용자 피어(40)에서 설정되는데, <TO>와 </TO> 사이에는 데이터 전송 요청 메시지를 수신할 피어의 IP주소가 언급되며, <FROM>과 </FROM> 사이에는 데이터 전송 요청 메시지를 수신한 피어가 데이터 전송시 사용해야 하는 파이프의 아이디가 언급되며, <FILENAME>과 </FILENAME> 사이에는 전송받고자 하는 데이터명 및 데이터 세그먼트가 언급된다.
데이터 전송 요청 메시지를 수신한 피어는 수신한 메시지를 분석한다(S420). 즉, 메시지의 종류를 확인하고, TO 요소값과 FILENAME 요소값을 확인한다.
데이터 전송 요청 메시지를 수신한 피어는 자신과 사용자 피어(40) 사이에 생성되어 있는 데이터 송수신 파이프를 통해, FILENAME 요소값에 대응하는 데이터 명과 데이터 세그먼트를 그룹화한 데이터 전송 응답 메시지를 사용자 피어(40)로 전송한다(S430).
데이터명과 데이터 세그먼트를 그룹화한 데이터 전송 응답 메시지의 포맷은 다음과 같다.
Figure 112010060983113-pat00004
<CMD>FileDownRes</CMD>는 고정되어 있는 것으로, 메시지의 종류가 FileDownRes(데이터 다운로드(전송) 응답)임을 나타내고 있다.
이하의 포맷은 데이터 전송 요청 메시지를 수신한 피어에서 설정되는데, <FILENAME>과 </FILENAME> 사이에는 전송하는 데이터명이 언급되며, <CONTENT>와 </CONTENT> 사이에는 데이터 세그먼트가 언급된다.
사용자 피어(40)는 수신한 데이터 전송 응답 메시지를 분석하여(S440), 메시지의 종류로부터 응답 메시지임을 확인한 후, 메시지에 포함되어 있는 데이터 세그먼트를 데이터 저장부(44)에 저장한다(S450).
데이터 세그먼트를 저장할 때, 사용자 피어(40)는 미리 설정된 크기, 시간, 내용에 따라 나누어진 미리 설정된 데이터 구간들 중, 수신한 데이터 세그먼트에 대응하는 구간 위치로 데이터 세그먼트들을 저장할 수 있다.
이와 같이 데이터 세그먼트를 저장하면, 데이터 세그먼트들이 순서대로 위치하므로, 하나의 피어로부터 동일 데이터 전체를 수신하는 경우와 동일한 데이터를 얻을 수 있으며, 더욱 신속하게 수신할 수 있어, 단속 없는 스트리밍 재생을 실행할 수 있다는 장점이 있다.
도 10은 사용자 피어(40)가 에이전트 피어(50)에 자신의 데이터 세그먼트를 저장하는 과정을 나타낸 흐름도이다.
상술한 설명에서, 사용자 피어(40)는 스트리밍 재생을 하기 위해, 원하는 데이터 세그먼트들을 P2P 네트워크 내의 다른 일반 피어들로부터 전송받았다.
하지만, 이러한 방식 이외에도 에이전트 피어(50)로부터, 에이전트 피어(50)의 데이터 저장부(53)에 저장되어 있는 데이터 세그먼트들을 전송받을 수도 있다.
에이전트 피어(50)의 데이터 저장부(53)에 저장되어 있는 데이터 세그먼트들은, P2P 네트워크 내의 일반 피어들이 자신이 저장하고 있는 데이터 세그먼트를 에이전트 피어(50)로 전송한 것이며, 사용자 피어(40) 또한 일반 피어들 중 하나이므로, 자신이 저장하고 있는 데이터 세그먼트를 에이전트 피어(50)로 전송할 수 있다.
이하에서는, 사용자 피어(40)가 에이전트 피어(50)로 자신의 데이터 세그먼트를 전송하여, 에이전트 피어(50)가 저장하게 하는 과정을 도 10을 참조하여 설명하고자 한다.
사용자 피어(40)는 자신과 에이전트 피어(50) 사이에 생성된 데이터 송수신 파이프(이하, 'U-A 파이프'라 명명함)를 통해, 에이전트 피어(50)로 저장시키고자 하는 데이터 세그먼트를 포함하는 데이터 저장 메시지를 전송한다(S600).
이때, 사용자 피어(40)와 에이전트 피어(50) 사이의 데이터 송수신 파이프는, 사용자 피어(40)로부터 두 피어 사이의 메시지 송수신 파이프를 통해 전송된 피어 추가 메시지를 에이전트 피어(50)가 수신한 경우, 에이전트 피어(50)가 상기 도 3의 단계 S300에서와 같이 가변확률을 산출하여 사용자 피어(40)를 등록한 후 생성될 수 있다.
그리고나서, 에이전트 피어(50)는 생성한 U-A 파이프를 통해 사용자 피어(40)로부터 수신한 데이터 저장 메시지에 포함되어 있는 데이터 세그먼트를 저장할 수 있다.
데이터 저장 메시지의 미리 설정된 포맷은 다음과 같다.
Figure 112010060983113-pat00005
<CMD>FileUp</CMD>는 고정되어 있는 것으로, 메시지의 종류가 FileUp(데이터 저장)임을 나타내고 있다.
이하의 포맷은 사용자 피어(40)에서 설정되는데, <FROM>과 </FROM> 사이에는 데이터 저장 메시지를 전송한 피어(사용자 피어(40))의 IP주소가 언급되고, <FILENAME>과 </FILENAME> 사이에는 전송하는 데이터명이 언급되며, <CONTENT>와 </CONTENT> 사이에는 데이터 세그먼트가 포함된다.
에이전트 피어(50)는 수신한 데이터 저장 메시지를 분석하는데(S610), 메시지의 종류를 확인하고, FROM 요소값, FILENAME 요소값, 및 CONTENT 요소값을 확인한다.
그리고나서, 에이전트 피어(50)는 자신의 피어 정보 저장부(52)에 저장되어 있는 사용자 피어(40)에 대한 정보에, 저장시키고자 하는 데이터명, 데이터 세그먼트의 크기 정보를 추가한 후, 자신의 데이터 저장부(53)에 사용자 피어(40)의 IP 주소로 디렉터리를 생성하여 해당 데이터 세그먼트를 저장한다(S620).
에이전트 피어(50)는 사용자 피어(40)로부터, 에이전트 피어(50)에 저장되어 있는 데이터 세그먼트들의 목록을 요청하는 데이터 목록 요청 메시지를 수신하면(S630), 수신한 메시지를 분석하여, 메시지 분석 결과에 따른 데이터 목록 응답 메시지를 사용자 피어(40)로 전송한다(S631).
데이터 목록 요청 메시지의 미리 설정된 포맷은 다음과 같다.
Figure 112010060983113-pat00006
<CMD>AgentListReq</CMD>는 고정되어 있는 것으로, 메시지의 종류가 AgentListReq(에이전트 피어(50)에 저장된 데이터 목록 요청)임을 나타내고 있으며, <FROM>과 </FROM> 사이에는 사용자 피어(40)에서 설정되는, 데이터 목록 요청 메시지를 전송한 피어(사용자 피어(40))의 IP주소가 언급된다.
또한, 데이터 목록 응답 메시지의 미리 설정된 포맷은 다음과 같다.
Figure 112010060983113-pat00007
<CMD>AgentListRes</CMD>는 고정되어 있는 것으로, 메시지의 종류가 AgentListRes(에이전트 피어(50)에 저장된 데이터 목록 응답)임을 나타내고 있다.
이하의 포맷은 에이전트 피어(50)에서 설정되며, <TO>와 </TO> 사이에는 데이터 목록 응답 메시지를 수신할 피어(사용자 피어(40))의 IP주소가 언급되고, <FILENAME>과 </FILENAME> 사이에는 전송하는 데이터명의 목록이 언급된다.
또한, 에이전트 피어(50)는 사용자 피어(40)로부터, 에이전트 피어(50)에 저장되어 있는 소정 데이터 세그먼트의 삭제를 요청하는 데이터 삭제 요청 메시지를 수신하면(S640), 수신한 메시지를 분석한다.
데이터 삭제 요청 메시지의 미리 설정된 포맷은 다음과 같다.
Figure 112010060983113-pat00008
CMD>DeleteReq</CMD>는 고정되어 있는 것으로, 메시지의 종류가 DeleteReq(에이전트 피어(50)에 저장된 데이터 삭제 요청)임을 나타내고 있다.
이하의 포맷은 에이전트 피어(50)에서 설정되며, <FROM>과 </FROM> 사이에는 데이터 목록 요청 메시지를 전송한 피어(사용자 피어(40))의 IP주소가 언급되고, <FILENAME>과 </FILENAME> 사이에는 삭제를 요청하는 데이터명이 언급된다.
에이전트 피어(50)는 데이터 삭제 요청 메시지의 분석 결과로부터, FROM 요소값과 FILENAME 요소값이 모두 일치하는 데이터 세그먼트를 자신의 데이터 저장부(53)에서 검색하여, 대응하는 디렉터리 및 데이터 세그먼트를 삭제하고, 피어 정보 저장부(52) 저장되어 있는 사용자 피어(40)에 대한 정보에 포함되어 있는 해당 데이터명, 데이터 세그먼트의 크기 정보를 삭제한다(S641).
사용자 피어(40)는 삭제를 요청한 데이터가 삭제되었는지 여부를 확인하기 위해, 단계 S630 및 단계 S631을 수행할 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
10 릴레이 피어 1
11 메시지 파이프 관리부
20 릴레이 피어 2
30 릴레이 피어 3
40 사용자 피어
41 메시지 분석부
42 메시지 파이프 관리부
43 데이터 파이프 관리부
44 데이터 저장부
45 데이터 재생부
50 에이전트 피어
51 메시지 분석부
52 피어 정보 저장부
53 데이터 저장부
54 메시지 파이프 관리부
55 데이터 파이프 관리부
60 일반 피어 3(P3)
63 데이터 파이프 관리부
70 일반 피어 4(P4)
80 일반 피어 5(P5)
90 일반 피어 6(P6)
110 피어 그룹 1
120 피어 그룹 2
130 피어 그룹 3

Claims (15)

  1. 하나의 릴레이 피어와 메시지 송수신 파이프를 통해 연결되어 피어 그룹을 형성하는 사용자 피어 및 일반 피어, 복수의 상기 피어 그룹 외부에서 복수의 상기 릴레이 피어와 메시지 송수신 파이프를 통해 연결되는 에이전트 피어를 포함하는 P2P 기반의 스트리밍 서비스 제공 시스템에 있어서,
    동일 피어 그룹 내의 상기 사용자 피어 및 상기 일반 피어와, 상기 릴레이 피어 사이에서 상기 메시지 송수신 파이프를 생성하고, 상기 메시지 송수신 파이프를 통해 이동하는 메시지를 송수신하는 상기 릴레이 피어;
    P2P 네트워크에 포함된 전체 피어들의 피어 정보를 저장하고, 상기 사용자 피어로부터 데이터 검색 요청 메시지를 수신하면, 상기 피어 정보를 상기 사용자 피어로 전송하는 에이전트 피어; 및
    사용자로부터 상기 피어 정보 중 재생을 원하는 데이터가 선택되면, 선택된 데이터의 세그먼트를 저장하고 있는 피어들 중, 미리 설정된 데이터 구간들 각각에 대응하는 데이터 세그먼트를 저장하고 있는 피어들에게 상기 릴레이 피어를 통해 피어 추가 메시지를 전송하고, 상기 피어 추가 메시지를 수신한 피어들 중 미리 설정된 가변확률 기준에 따라 상기 사용자 피어를 추가한 피어로부터 생성된 데이터 송수신 파이프를 통해, 데이터 전송 요청 메시지에 대응하는 데이터 전송 응답 메시지를 수신하여, 상기 데이터 전송 응답 메시지에 포함된 데이터 세그먼트를 상기 미리 설정된 데이터 구간들 중 대응하는 위치로 저장하여 스트리밍 재생하는 상기 사용자 피어; 를 포함하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 시스템.
  2. 제 1항에 있어서,
    상기 사용자 피어는 상기 일반 피어들 중 하나인 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 시스템.
  3. 제 2항에 있어서,
    상기 사용자 피어는,
    상기 일반 피어로부터 상기 릴레이 피어를 통해 전송된 상기 피어 추가 메시지를 수신하면 상기 미리 설정된 가변확률 기준에 따라 상기 일반 피어를 추가하고,
    상기 가변확률은 '가변확률 = 1/(1+오버레이 네트워크에 포함되어 있는 피어의 개수)'의 식으로 산출하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 시스템.
  4. 제 3항에 있어서,
    상기 사용자 피어는,
    상기 미리 설정된 가변확률 기준인 소정 수치를 넘지 않을 경우, 상기 피어 추가 메시지를 전송한 일반 피어를 추가하고, 자신과 상기 일반 피어 사이에 상기 데이터 송수신 파이프를 생성하여, 상기 데이터 송수신 파이프로 연결된 피어들로 구성되는 상기 오버레이 네트워크를 생성하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 시스템.
  5. 제 1항에 있어서,
    상기 사용자 피어는,
    상기 미리 설정된 데이터 구간들 중 하나의 구간에 대응하는 데이터 세그먼트를 저장하고 있는 피어가 복수로 존재할 경우, 자신과의 네트워크 거리를 비교하여, 네트워크 거리가 가장 가까운 피어에게 상기 피어 추가 메시지를 전송하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 시스템.
  6. 제 1항에 있어서,
    상기 사용자 피어는,
    상기 피어 추가 메시지를 수신한 피어가 상기 사용자 피어를 추가하지 않을 경우, 해당 피어가 저장하고 있는 데이터 세그먼트와 동일한 데이터 세그먼트를 저장하고 있는 타 피어에게 상기 피어 추가 메시지를 전송하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 시스템.
  7. 제 1항에 있어서,
    상기 에이전트 피어는,
    상기 사용자 피어로부터 상기 릴레이 피어를 통해 피어 추가 메시지를 수신하면, 상기 가변확률 기준에 따라 상기 사용자 피어를 추가한 후 데이터 송수신 파이프를 생성하고, 상기 사용자 피어로부터 상기 데이터 송수신 파이프를 통해 수신한 데이터 저장 메시지에 포함되어 있는 데이터 세그먼트를 저장하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 시스템.
  8. 하나의 릴레이 피어와 메시지 송수신 파이프를 통해 연결되어 피어 그룹을 형성하는 사용자 피어 및 일반 피어, 복수의 상기 피어 그룹 외부에서 복수의 상기 릴레이 피어와 메시지 송수신 파이프를 통해 연결되는 에이전트 피어를 포함하는 스트리밍 서비스 제공 시스템을 이용한 P2P 기반의 스트리밍 서비스 제공 방법에 있어서,
    (b) 상기 사용자 피어와 상기 릴레이 피어가 연결되는 단계;
    (c) 상기 사용자 피어가 상기 릴레이 피어를 통해 상기 에이전트 피어로 P2P 네트워크에 포함된 전체 피어들의 피어 정보를 요청하는 데이터 검색 요청 메시지를 전송하는 단계;
    (d) 상기 사용자 피어가 상기 에이전트 피어로부터 수신한 데이터 검색 응답 메시지에 포함되어 있는 피어 정보를 이용하여, 사용자로부터 선택된 데이터를 저장하고 있는 피어 피어들 중, 미리 설정된 데이터 구간들 각각에 대응하는 데이터 세그먼트를 저장하고 있는 피어들에게 상기 릴레이 피어를 통해 피어 추가 메시지를 전송하는 단계;
    (e) 상기 사용자 피어로부터 상기 피어 추가 메시지를 수신한 피어들은 미리 설정된 가변확률 기준에 따라 상기 사용자 피어를 추가하고, 데이터 송수신 파이프를 생성하는 단계;
    (g) 상기 사용자 피어는 상기 사용자 피어를 추가한 피어들로 전송한 데이터 전송 요청 메시지에 대응하는 데이터 전송 응답 메시지를 수신하여, 상기 데이터 전송 응답 메시지에 포함된 데이터 세그먼트를 순서대로 스트리밍 재생하는 단계; 를 포함하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 방법.
  9. 제 8항에 있어서,
    상기 (b) 단계에서는,
    상기 릴레이 피어가 동일 피어 그룹 내의 상기 사용자 피어 및 상기 일반 피어와, 상기 릴레이 피어 사이에서 상기 메시지 송수신 파이프를 생성하여, 상기 사용자 피어와 상기 릴레이 피어가 연결되는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 방법.
  10. 제 8항에 있어서,
    상기 (d) 단계에서는,
    상기 미리 설정된 데이터 구간들 중 하나의 구간에 대응하는 데이터 세그먼트를 저장하고 있는 피어가 복수로 존재할 경우, 상기 사용자 피어가 자신과의 네트워크 거리를 비교하여, 네트워크 거리가 가장 가까운 피어에게 상기 피어 추가 메시지를 전송하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 방법.
  11. 제 8항에 있어서,
    상기 (e) 단계 및 상기 (g) 단계 사이에서,
    (f) 상기 사용자 피어가 상기 피어 추가 메시지를 수신한 피어가 상기 사용자 피어를 추가하지 않을 경우, 해당 피어가 저장하고 있는 데이터 세그먼트와 동일한 데이터 세그먼트를 저장하고 있는 타 피어에게 상기 피어 추가 메시지를 전송하는 단계; 를 더 포함하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 방법.
  12. 제 9항에 있어서,
    상기 사용자 피어는 상기 일반 피어들 중 하나인 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 방법.
  13. 제 12항에 있어서,
    상기 (e) 단계에서는,
    상기 일반 피어로부터 상기 피어 추가 메시지를 수신한 상기 사용자 피어는 상기 미리 설정된 가변확률 기준에 따라 상기 일반 피어를 추가하고,
    상기 가변확률은 '가변확률 = 1/(1+오버레이 네트워크에 포함되어 있는 피어의 개수)'의 식으로 산출하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 방법.
  14. 제 13항에 있어서,
    상기 (g) 단계에서는,
    상기 사용자 피어가 상기 미리 설정된 가변확률 기준인 소정 수치를 넘지 않을 경우, 상기 피어 추가 메시지를 전송한 일반 피어를 추가하고, 자신과 상기 일반 피어 사이에 상기 데이터 송수신 파이프를 생성하여, 상기 데이터 송수신 파이프로 연결된 피어들로 구성되는 상기 오버레이 네트워크를 생성하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 방법.
  15. 제 8항에 있어서,
    상기 (b) 단계 이전에,
    (a-1) 상기 사용자 피어가 상기 에이전트 피어로 피어 추가 메시지를 전송하는 단계;
    (a-2) 상기 에이전트 피어가 상기 피어 추가 메시지를 수신하면, 상기 가변확률 기준에 따라 상기 사용자 피어를 추가한 후 데이터 송수신 파이프를 생성하는 단계; 및
    (a-3) 상기 에이전트 피어가 상기 데이터 송수신 파이프를 통해 상기 사용자 피어로부터 수신한 데이터 저장 메시지에 포함되어 있는 데이터 세그먼트를 저장하는 단계; 를 더 포함하는 것을 특징으로 하는 P2P 기반의 스트리밍 서비스 제공 방법.
KR1020100092039A 2009-12-11 2010-09-17 P2p 기반의 스트리밍 서비스 제공 시스템 및 방법 KR101015098B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020090123292 2009-12-11
KR20090123292 2009-12-11

Publications (1)

Publication Number Publication Date
KR101015098B1 true KR101015098B1 (ko) 2011-02-16

Family

ID=43777491

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100092039A KR101015098B1 (ko) 2009-12-11 2010-09-17 P2p 기반의 스트리밍 서비스 제공 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101015098B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030053305A (ko) * 2001-12-22 2003-06-28 엘지전자 주식회사 무선 인터넷에서의 멀티미디어 스트리밍 서비스 시스템 및방법
KR20060035934A (ko) * 2004-10-21 2006-04-27 주식회사 팬택 스트리밍 서비스 제공 방법 및 그 장치
KR100750583B1 (ko) 2006-08-30 2007-08-20 엠큐브웍스(주) 스트리밍 서비스를 제공하는 네트워크 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030053305A (ko) * 2001-12-22 2003-06-28 엘지전자 주식회사 무선 인터넷에서의 멀티미디어 스트리밍 서비스 시스템 및방법
KR20060035934A (ko) * 2004-10-21 2006-04-27 주식회사 팬택 스트리밍 서비스 제공 방법 및 그 장치
KR100750583B1 (ko) 2006-08-30 2007-08-20 엠큐브웍스(주) 스트리밍 서비스를 제공하는 네트워크 시스템

Similar Documents

Publication Publication Date Title
US9332051B2 (en) Media manifest file generation for adaptive streaming cost management
CN102238419B (zh) 播放实况内容的方法和装置
US8055793B2 (en) Method and apparatus for reducing delay of media playing
US6801576B1 (en) System for accessing, distributing and maintaining video content over public and private internet protocol networks
KR101758613B1 (ko) 방송 컨텐츠 제공 방법 및 장치와 그 시스템
US8738685B2 (en) Content distributed-storage system, frame image obtaining method, node device, and recording medium on which node processing program is recorded
US8176192B2 (en) Networked transmission system and method for stream data
US20080160911A1 (en) P2P-based broadcast system and method using the same
JP2005518727A (ja) プログラムガイドに従ってインターネットコンテンツを取得する方法およびシステム
KR20030056701A (ko) P2p 방식을 이용한 멀티미디어 스트리밍 장치 및 방법
CN102084661A (zh) 代理功能性
CN111510734B (zh) 一种cdn调度方法、装置、存储介质及设备
US20060005224A1 (en) Technique for cooperative distribution of video content
US10432696B2 (en) Transmitting apparatus, transmitting method, receiving apparatus, receiving method, program, and content distribution system
WO2023061060A1 (zh) 音视频码流的调度方法、系统、介质及电子装置
US20080115177A1 (en) Method and system for providing a file
CN107645475B (zh) 异质网络中的文件资源分发系统与方法
US20090193476A1 (en) Method for live transmission of content with a view to defered recovery in P2P mode after division, and control device and associated equipment
KR101015098B1 (ko) P2p 기반의 스트리밍 서비스 제공 시스템 및 방법
Peltotalo et al. RTSP-based mobile peer-to-peer streaming system
JP2009177811A (ja) 分割後のp2pモードでの繰延回復を目的としたコンテンツのライブ送信のための方法、並びに制御装置及び関連する設備
Fouda et al. A novel P2P VoD streaming technique integrating localization and congestion awareness strategies
KR100616250B1 (ko) 인터넷 네트워크에서 서버와 클라이언트들 간의 데이터전송 시스템 및 방법
Ha et al. Topology and architecture design for peer to peer video live streaming system on mobile broadcasting social media
KR101040312B1 (ko) 하이브리드 ip―tv 서비스 제공 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee