상기한 바와 같은 목적들을 달성하기 위해, 본 발명의 일 실시예에 따르면, 복수의 노드에 연결을 설정하는 단계(a); 상기 연결을 설정한 각 노드에 스트리밍 데이터의 서브 블록을 요청하여 수신하는 단계(b); 상기 연결을 설정한 각 노드의 수신 상태를 모니터링하는 단계(c); 및 상기 모니터링 결과에 상응하여 연결을 설정한 노드들 중 일부 노드에서 수신할 서브 블록을 재분배하는 단계(d)를 포함하며, 스트리밍 데이터의 블록에 포함되는 서브 블록을 모두 수신할 경우, 다음 블록의 서브 블록에 대해 상기 (b) 내지 (d) 단계를 반복하는 스트리밍 데이터의 다운로드 방법이 제공된다.
본 발명에 따르면, 연결을 설정한 각 노드로부터 수신할 스트리밍 데이터의 서브 블록을 결정하는 단계를 더 포함할 수 있다.
상기 단계(c)는 수신을 완료한 연결이 존재하는지 여부를 모니터링할 수 있다.
상기 각 노드들로부터 수신할 서브 블록은 각 연결의 연결 상태 평가 지수를 계산하여 결정될 수 있다.
상기 연결 상태 평가 지수는 각 노드와의 라운드 트립 시간 및 각 노드와의 평균 수신속도로 이루어진 그룹으로부터 선택된 어느 하나 또는 이들의 조합을 이용하여 계산할 수 있다.
상기 단계(d)는 모니터링 결과 요청한 모든 서브 블록을 수신한 연결이 존재할 경우, 수신이 진행중인 연결들의 일부와 수신이 완료된 연결에서 수신할 서브 블록을 재분배하는 단계를 포함할 수 있다.
상기 단계(d)는 상기 수신이 완료된 연결과 상기 수신이 진행중인 연결 중 수신율이 가장 낮은 연결에서 수신할 서브 블록을 재분배하는 단계를 포함할 수 있다.
상기 요청한 서브 블록의 수신이 완료된 연결과 수신율이 가장 낮은 연결에서 수신할 서브 블록을 재분배하는 단계는, 상기 수신이 완료된 연결과 상기 수신율이 가장 낮은 연결의 수신 속도를 판단하는 단계; 상기 수신율이 가장 낮은 연결에서 수신할 남은 서브 블록 수를 판단하는 단계; 상기 남은 서브 블록 수의 판단 결과, 서브 블록을 재분배할 필요가 있는지 여부를 판단하는 단계; 및 서브 블록을 재분배할 필요가 있는 경우, 상기 남은 서브 블록을 상기 판단한 수신 속도의 비에 따라 상기 수신이 완료될 연결 및 상기 수신율이 가장 낮은 연결에 분배하는 단계를 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 연결 제어 서버와 복수의 사용자 클라이언트가 네트워크를 통해 결합되어 있는 시스템에서 상기 복수의 사용자 클라이언트에 설치되어 스트리밍 데이터의 수신을 제어하는 수신 에이전트 프로그램으로서, 상기 연결 제어 서버로 사용자 클라이언트에 저장되어 있는 컨텐츠 정보 및 사용자 클라이언트 식별 정보를 제공하고, 사용자가 컨텐츠를 요청할 경우 컨텐츠 요청 정보를 상기 연결 제어 서버에 전송하는 에이전트 관리 모듈; 상기 연결 제어 서버로부터 사용자가 요청한 컨텐츠를 저장하고 있는 노드 리스트 정보를 수신하여 저장하는 노드 정보 관리 모듈; 상기 노드 리스트 정보를 이용하여 복수의 노드에 연결을 설정하고, 연결된 노드들로부터 수신할 스트리밍 데이터의 서브 블록을 결정하여 요청하며, 연결된 노드들로부터 서브 블록의 수신 중 서브 블록의 수신상태를 모니터링하여 연결을 설정한 일부 노드에서 수신할 서브 블록을 재분배하는 연결 제어 모듈 ;상기 연결 제어 모듈에서 블록에 포함되는 모든 서브 블록이 수신되는지 판단하며, 모든 서브 블록이 수신될 경우 다음 블록의 서브 블록을 수신하도록 상기 연결 제어 모듈에 요청하는 서브 블록 관리 모듈을 포함하는 수신 에이전트 프로그램이 제공된다.
본 발명의 또 다른 실시예에 따르면, 복수의 컨텐츠 서버와 적어도 하나의 연결 제어 서버를 포함하는 시스템으로부터 스트리밍 데이터를 수신하는 클라이언 트에 설치되어 스트리밍 데이터의 수신을 제어하는 수신 에이전트 프로그램으로서, 상기 연결 제어 서버로 스트리밍 데이터의 전송을 요청하는 데이터 요청 모듈; 상기 연결 제어 서버로부터 사용자가 요청한 데이터를 수신할 컨텐츠 서버들의 리스트 정보를 수신하여 저장하는 노드 정보 관리 모듈; 상기 컨텐츠 서버 리스트 정보에 포함된 복수의 컨텐츠 서버들에 연결을 설정하고, 연결된 컨텐츠 서버들로부터 수신할 스트리밍 데이터의 서브 블록을 결정하여 요청하며, 연결된 컨텐츠 서버들로부터 서브 블록의 수신 중 서브 블록의 수신상태를 모니터링하여 연결을 설정한 일부 컨텐츠 서버에서 수신할 서브 블록을 재분배하는 연결 제어 모듈; 및 상기 연결 제어 모듈에서 블록에 포함되는 모든 서브 블록이 수신되는지 판단하며, 모든 서브 블록이 수신될 경우 다음 블록의 서브 블록을 수신하도록 상기 연결 제어 모듈에 요청하는 서브 블록 관리 모듈을 포함하는 것을 특징으로 하는 수신 에이전트 프로그램이 제공된다.
본 발명의 또 다른 실시예에 따르면, 복수의 사용자 클라이언트와 네트워크를 통해 연결되어 있으며 사용자 클라이언트가 복수의 다른 사용자 클라이언트들과 접속하여 스트리밍 데이터를 수신하도록 사용자 클라이언트들간의 연결을 제어하는 연결 제어 서버로서, 상기 접속되어 있는 복수의 사용자 클라이언트들로부터 각 사용자 클라이언트가 저장하고 있는 컨텐츠 정보 및 사용자 클라이언트의 주소 정보를 수신하고, 컨텐츠 전송을 요청하는 사용자 클라이언트에 요청한 컨텐츠를 저장하고 있는 노드 정보를 제공하는 메쉬 제어 모듈; 및 상기 메쉬 제어 모듈에서 수신하는 각 사용자 클라이언트가 저장하는 있는 컨텐츠 정보 및 사용자 클라이언트 의 주소 정보를 저장하는 메쉬 정보 데이터베이스를 포함하되, 상기 복수의 사용자 클라이언트에는 수신 에이전트가 설치되어 있으며, 상기 수신 에이전트는 상기 제공된 노드 정보를 이용하여 복수의 노드에 연결을 설정하고, 연결된 노드들로부터 수신할 스트리밍 데이터의 서브 블록을 결정하여 요청하며, 연결된 각 노드에서의 서브 블록의 수신 상태를 모니터링하여 수신할 서브 블록을 재분배하도록 사용자 클라이언트를 제어하는 연결 제어 서버가 제공된다.
복수의 컨텐츠 서버 및 사용자 클라이언트와 네트워크를 통해 연결되어 있으며 사용자 클라이언트가 적어도 두 개 이상의 컨텐츠 서버와 접속하여 스트리밍 데이터를 수신하도록 사용자 클라이언트와 컨텐츠 서버들간의 연결을 제어하는 연결 제어 서버로서, 상기 접속되어 있는 복수의 컨텐츠 서버들로부터 상태 정보를 수신하여 각 컨텐츠 서버의 상태를 판단하는 서버 상태 판단 모듈; 상기 사용자 클라이언트로부터 컨텐츠 요청 정보를 수신할 경우, 요청한 컨텐츠의 스트리밍 데이터를 수신할 컨텐츠 서버 리스트 정보를 상기 사용자 클라이언트에 제공하는 서버 리스트 제공 모듈을 포함하되, 상기 사용자 클라이언트에는 수신 에이전트가 설치되어 있으며, 상기 수신 에이전트는 상기 제공되는 서버 리스트 정보를 이용하여 적어도 두 개 이상의 컨텐츠 서버에 연결을 설정하며, 연결된 컨텐츠 서버들로부터 수신할 스트리밍 데이터의 서브 블록을 결정하여 요청하며, 연결된 각 노드에서의 서브 블록의 수신 상태를 모니터링하여 수신할 서브 블록을 재분배하도록 사용자 클라이언트를 제어하는 연결 제어 서버가 제공된다.
이하에서, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 따른 스트 리밍 데이터 다운로드 방법의 바람직한 실시예를 상세하게 설명한다.
도 1은 본 발명이 적용되는 스트리밍 데이터 전송 시스템의 간략한 구성을 도시한 도면이다.
도 1에 도시된 바와 같이, 본 발명에 따르 스트리밍 데이터 전송 시스템은 복수의 노드(100, 102, 104, 106, 108, 110)와 사용자 클라이언트(112)를 포함할 수 있다.
사용자 클라이언트(112)는 선택한 복수의 노드(102, 106, 108)와 연결을 설정하여 스트리밍 데이터를 수신한다.
도 1에서, 복수의 노드(100, 102, 104, 106, 108, 110)는 컨텐츠 데이터를 저장하고 있으며, 사용자 클라이언트로부터 컨텐츠 전송 요청 신호를 수신하여 요청한 컨텐츠를 사용자 클라이언트에 전송한다. 노드는 일반적으로 컨텐츠를 전송하는 서버일 수도 있으며, 다른 사용자 클라이언트일 수도 있다.
사용자 클라이언트(112)는 컨텐츠 전송을 요청할 복수의 노드들(102, 106, 108)에 컨텐츠 요청 신호를 전송하며, 해당 노드들(102, 106, 108)로부터 컨텐츠 스트리밍 데이터를 수신한다. 즉, 본 발명에 따르면, 복수의 노드를 통해 복수의 경로로부터 스트리밍 데이터를 수신한다.
이때, 사용자 클라이언트는 연결이 설정된 각각의 노드에 서로 다른 스트리밍 데이터를 요청하며, 복수의 노드들로부터 수신한 스트리밍 데이터를 조합한다.
도 5는 본 발명의 일 실시예에 따른 스트리밍 데이터의 구조를 도시한 도면이다.
도 5에 도시된 바와 같이, 본 발명의 일 실시예에 따른 스트리밍 데이터는 복수의 블록(500)으로 이루어지며, 각 블록(500)은 복수의 서브 블록(502)으로 이루어진다.
블록 및 서브 블록은 전체 스트리밍 데이터를 나누기 위한 논리적 단위이며 이와 다른 용어가 사용될 수도 있다는 것은 당업자에게 있어 자명할 것이다.
일반적인 파일 수신과는 달리, 스트리밍 데이터는 수신이 되면서 동시에 재생이 되어야 한다. 따라서, 종래의 다중 경로에 의한 파일 수신과 같이 파일 전체를 몇 부분으로 나누어 수신하는 방법을 사용할 수 없다. 종래의 같이 다중 경로를 통해 파일을 수신할 경우 파일 전체가 모두 수신되지 않으면 해당 파일을 재생할 수 없기 때문이다.
따라서, 본 발명에 따르면, 전체 스트리밍 데이터를 블록 단위로 세분화하며, 블록에 포함되는 서브 블록들을 다중 경로를 통해 병렬/분산 방식으로 수신한다.
예를 들어, 도 1과 같이 연결이 설정된 시스템에서 하나의 블록이 10개의 서브 블록으로 이루어질 경우, 사용자 클라이언트(112)는 제2 노드(102)에 1번~3번 서브 블록, 제4 노드(106)에 4번~7번 서브 블록, 제5 노드(108)에 8번~10번 서브 블록을 요청한다.
사용자 클라이언트(112)는 하나의 블록에 포함되는 모든 서브 블록이 수신되면 다음 블록에 포함되는 서브 블록을 요청한다. 하나의 블록 데이터를 모두 수신한 후에 다음 블록의 데이터를 수신하므로, 다중 경로를 통해 데이터를 수신하더라 도 데이터 수신과 동시에 데이터를 재생하는 스트리밍 서비스를 지원할 수 있게 된다.
도 5에서는 블록 및 서브 블록으로 스트리밍 데이터를 분할하는 경우만을 도시하였으나, 서브 블록보다 더 작은 단위로 스트리밍 데이터가 분할되어 전송될 수도 있다는 것은 당업자에게 있어 자명할 것이다.
사용자 클라이언트는 연결된 각 노드에 서브 블록을 요청 시, 각 노드와의 연결 상태를 판단하여 서브 블록을 요청한다. 예를 들어, 연결된 제2 노드(102), 제4 노드(106) 및 제5 노드(108) 중 제2 노드의 연결 상태가 가장 좋고 제5 노드의 연결 상태가 가장 좋지 않을 경우, 사용자 클라이언트(112)는 제2 노드(102)에 가장 많은 수의 서브 블록을 요청하며, 제5 노드에 가장 적은 수의 서브 블록을 요청한다. 각 노드와의 연결 상태를 판단하고 이에 따라 요청할 서브 블록을 분배하는 방법에 대해서는 별도의 도면을 통해 후에 자세히 설명하도록 한다.
복수의 경로를 통해 블록에 포함되는 서브 블록을 수신할 경우, 일부 경로에서는 수신이 완료되더라도 다른 경로에서 수신이 계속되면 전송이 완료된 경로는 다른 경로의 수신이 완료될 때까지 데이터를 수신하지 않는다. 이와 같은 아이들 커넥션(Idle Connection)은 데이터의 전송 효율을 저하시킨다.
따라서, 본 발명에 따르면, 복수의 경로 중 어느 한 경로에서의 서브 블록 수신이 완료된 경우, 수신이 완료된 경로로부터 아직 수신이 완료되지 않은 서브 블록을 수신하도록 한다. 어느 한 경로에서 수신이 완료된 경우 수신할 서브 블록을 재분배하는 과정에 대해서는 별도의 도면을 통해 후에 자세히 설명하도록 한다.
도 2는 본 발명에 따른 스트리밍 데이터 전송 방법이 적용되는 구체적인 네트워크 시스템의 일례를 도시한 도면이다.
도 2는 P2P(Peer to Peer) 방식에 의해 본 발명에 따른 스트리밍 데이터 전송 방법이 적용되는 경우를 도시한 것이다.
도 2에 도시된 바와 같이, 본 발명이 적용되는 네트워크 시스템은 연결 제어 서버(200)와 복수의 클라이언트들(202, 204, 206, 208, 210, 212, 214, 216)을 포함할 수 있다.
연결 제어 서버(200)는 사용자 클라이언트로부터 컨텐츠 전송 요청 신호를 수신하고, 수신한 컨텐츠 전송 요청 신호에 응답하여 해당 컨텐츠를 저장하고 있는 다른 사용자 클라이언트의 주소 정보를 컨텐츠를 요청한 사용자 클라이언트에 제공한다. 컨텐츠를 요청한 사용자 클라이언트는 연결 제어 서버(200)에서 제공하는 주소 정보를 이용하여 복수의 경로를 통해 컨텐츠의 스트리밍 데이터를 수신할 수 있다.
예를 들어, 사용자 클라이언트(210)가 A라는 영화의 전송을 연결 제어 서버(200)에 요청할 경우, 연결 제어 서버(200)는 A 영화를 저장하고 있는 사용자 클라이언트 정보를 파악하고, 파악한 사용자 클라이언트의 주소 정보를 컨텐츠를 요청한 사용자 클라이언트(210)에 제공한다.
여기서, 주소 정보는 아이피 주소 및 포트 번호 일 수 있으며, 다른 주소 식별 수단이 사용될 수 있다는 것은 당업자에게 있어 자명할 것이다.
A 영화를 저장하고 있는 클라이언트가 도 2에서 202, 204, 및 208이라고 가 정한다. 연결 제어 서버가 A 영화를 저장하고 있는 클라이언트(202, 204, 208) 정보를 컨텐츠를 요청한 클라이언트(210)에 제공할 경우, 컨텐츠를 요청한 클라이언트(210)는 A 영화를 저장하고 있는 클라이언트들(202, 204, 208)과 연결을 설정한다.
연결이 설정되면, 사용자 클라이언트(210)는 연결이 설정된 클라이언트들(202, 204, 208)에 서로 다른 서브 블록을 요청한다. 블록에 포함되는 모든 서브 블록이 수신될 경우 사용자 클라이언트(210)는 다음 블록의 서브 블록을 요청한다. 전송된 스트리밍 데이터는 사용자 클라이언트(210)에 저장되며, 다른 클라이언트의 전송 요청 시 저장된 데이터를 전송한다.
각 클라이언트에는 다른 클라이언트 또는 연결 제어 서버와의 통신을 위해 수신 에이전트 프로그램이 설치된다. 본 실시예에서는 수신 에이전트가 컴퓨터 소프트웨어인 경우에 대하여 설명할 것이나 수신 에이전트가 소프트웨어 이외의 별도의 장치나 카드의 형태로 구현되어 사용자 클라이언트에 설치될 수 있다는 것은 당업자에게 있어 자명할 것이다.
클라이언트의 전원이 켜지거나 또는 설치된 에이전트 프로그램이 실행되면, 에이전트 프로그램은 사용자 클라이언트에 저장되어 있는 컨텐츠 정보를 연결 제어 서버(200)에 전송하며, 연결 제어 서버는 전송된 정보를 저장한다.
도 3은 본 발명에 따른 스트리밍 데이터 전송 방법이 적용되는 구체적인 네트워크 시스템의 다른 예를 도시한 도면이다.
도 3은 다중 서버를 통해 스트리밍 데이터를 제공하는 경우를 도시한 것이 다.
도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 스트리밍 데이터 전송 시스템은 복수의 컨텐츠 서버(300, 302, 304, 306, 308), 연결 제어 서버(310) 및 사용자 클라이언트(312)를 포함할 수 있다.
연결 제어 서버(310)는 사용자 클라이언트(312)로부터 컨텐츠 전송 요청 신호를 수신하여 복수의 컨텐츠 서버(300, 302, 304, 306, 308) 중 사용자 클라이언트(312)가 접속할 서버의 정보를 제공하는 기능을 한다.
연결 제어 서버(310)는 컨텐츠 서버들(300, 302, 304, 306, 308)로부터 상태 정보를 주기적으로 수신하며, 수신한 상태 정보를 참조하여 상태가 좋은 서버에 사용자 클라이언트가 접속할 수 있도록 한다.
사용자 클라이언트(312)는 연결 제어 서버(310)로부터 서버 리스트 정보를 수신하여 리스트에 있는 컨텐츠 서버들과 연결을 설정하고 다중 경로를 통해 스트리밍 데이터를 수신한다.
도 2의 경우와 마찬가지로 사용자 클라이언트에는 다중 경로를 통한 스트리밍 데이터 수신을 위해 수신 에이전트 프로그램이 설치된다. 수신 에이전트 프로그램의 상세한 모듈 구성에 대해서는 별도의 도면을 통해 후에 자세히 설명한다.
도 4는 본 발명의 따른 스트리밍 데이터 전송 방법이 적용되는 네트워크 시스템의 또 다른 예를 도시한 도면이다.
도 4는 도2에 의한 P2P 시스템과 도 3에 의한 다중 서버 데이터 전송 시스템이 합쳐진 시스템이다.
도 4에 도시된 바와 같이, 본 발명의 일 실시예에 따른 스트리밍 데이터 전송 시스템은 연결 제어 서버(410), 복수의 컨텐츠 서버(400, 402, 404, 406, 408) 및 복수의 클라이언트들(412, 414, 416, 418, 420, 422, 424, 426, 428)을 포함할 수 있다.
도 4에서, 연결 제어 서버(410)는 사용자 클라이언트로부터 컨텐츠 요청 정보를 수신하며, 사용자가 요청한 컨텐츠를 저장하고 있는 클라이언트 또는 컨텐츠 서버 리스트 정보를 컨텐츠를 요청한 클라이언트에 제공한다.
사용자 클라이언트들(412, 414, 416, 418, 420, 422, 424, 426, 428)에는 도 2 및 도 3의 경우와 마찬가지로 에이전트 프로그램이 설치되며, 클라이언트의 전원이 켜지거나 에이전트 프로그램이 실행될 경우 클라이언트에 저장되어 있는 컨텐츠 정보를 연결 제어 서버(410)에 전송한다.
컨텐츠를 요청한 사용자 클라이언트는 연결 제어 서버(410)에서 제공하는 리스트 정보에 포함된 클라이언트 또는 컨텐츠 서버에 연결을 설정하며, 연결된 클라이언트 또는 컨텐츠 서버에 각각 서로 다른 서브 블록을 요청하여 스트리밍 데이터를 수신한다.
도 2내지 도 4에서는 다중 경로를 통해 스트리밍 데이터를 수신할 수 있는 시스템에 대해 살펴보았으며, 도 2 내지 도 4의 시스템 이외에도 복수의 노드를 통해 데이터를 전송하는 시스템에는 본 발명에 따른 스트리밍 데이터 전송 및 다운로드 방법이 사용될 수 있다는 것은 당업자에게 있어 자명할 것이다.
도 6은 본 발명의 바람직한 일 실시예에 따른 스트리밍 데이터 다운로드 방 법의 순서도이다.
도 6에 도시된 바와 같이, 우선 사용자 클라이언트는 연결 제어 서버로부터 노드 리스트 정보를 수신한다(S600). 도 2의 시스템의 경우 노드는 컨텐츠를 저장하고 있는 사용자 클라이언트이고, 도 3의 시스템의 경우 노드는 복수의 컨텐츠 서버이며, 도 4의 시스템의 경우 노드는 사용자 클라이언트일 수도 있고 컨텐츠 서버일 수도 있다.
노드 리스트 정보를 수신하면, 리스트에 존재하는 노드들의 일부 또는 전부와 연결을 설정한다(S602). 본 발명의 바람직한 실시예에 따르면, 클라이언트는 노드에 TCP 연결을 설정하며, 다른 연결 설정 방식이 사용될 수도 있을 것이다. 연결 설정에 실패할 경우, 연결에 실패한 노드 정보를 블랙 리스트 큐에 저장하도록 하며, 블랙 리스트 큐에 저장된 노드에 대해서는 이후 연결을 설정하지 않는다.
연결이 설정되면, 각 노드들과의 연결 상태를 판단하여 각 노드들로부터 수신할 서브 블록 번호를 결정한다(S604).
본 발명의 일 실시예에 따르면, 각 노드들과의 라운드 트립(Round Trip) 시간 또는 각 노드에서의 수신 속도를 이용하여 노드들과의 연결 상태를 판단한다.
본 발명의 다른 실시예에 따르면, 연결 제어 서버에서 노드들의 상태 정보를 제공할 수도 있다. 도 3과 같이 다중 서버를 이용한 스트리밍 데이터 전송 시스템의 경우, 연결 제어 서버는 각 서버의 상태 정보를 클라이언트에 제공한다.
본 발명의 또 다른 실시예에 따르면, 접속 초기에는 상태 정보를 판단하지 않고 노드들로부터 수신할 서브 블록을 결정할 수 있다. 예를 들어, 세 개의 노드 로부터 스트리밍 데이터를 수신하고 하나의 블록이 15개의 서브 블록으로 이루어질 경우, 각 노드에 5개의 서브블록을 요청하는 것이다.
각 노드들로부터 수신할 서브 블록이 결정되면, 연결된 노드들에 해당 서브 블록의 전송을 요청한다(S606). 연결된 모든 노드들의 서브 블록을 요청할 수도 있으며, 연결된 노드들 중 일부에 서브 블록의 전송을 요청할 수도 있을 것이다.
클라이언트는 요청한 서브 블록을 연결된 노드들로부터 수신한다(S608). 도 6에는 도시되어 있지 않으나, 클라이언트는 서브 블록의 수신 시 수신 오류가 있는지 여부를 판단한다. 본 발명의 일 실시예에 따르면, 서브 블록의 체크섬(Checksum) 값을 검사하여 수신 오류가 있는지 여부를 판단한다.
물론, 블록을 모두 수신한 후 블록의 체크섬 값을 이용하여 수신 오류를 체크할 수도 있을 것이다.
서브 블록의 수신 도중, 요청한 모든 서브 블록을 수신한 연결이 존재하는지 여부를 판단한다(S610).
모든 서브 블록을 수신한 연결이 존재할 경우, 클라이언트는 수신을 완료한 연결이 아이들(Idle) 상태가 되지 않도록 수신이 완료되지 않은 서브 블록을 해당 연결에 재분배하고, 재분배된 서브 블록을 수신한다. 서브 블록을 재분배하는 방법에 대해서는 별도의 도면을 통해 후에 상세히 설명하기로 한다.
클라이언트는 블록에 포함되는 모든 서브 블록이 수신되는지 여부를 판단한다(S614).
모든 서브 블록이 수신되면, 다음 블록의 서브 블록들을 다중 경로로부터 수 신하기 위해 각 노드들로부터 수신할 다음 블록의 서브 블록 번호를 결정하는 과정이 반복된다(S604).
모든 서브 블록이 수신되지 않을 경우, 모든 서브 블록이 수신될 때까지 단계 S610 내지 S614가 반복된다.
도 6을 참조해 설명한 바와 같이, 본 발명에 따르면, 다중 경로 중 어느 한 경로에서 수신이 완료될 경우, 각 노드에서 수신할 서브 블록을 재분배하여 수신하도록 함으로써 아이들(Idle) 커넥션이 발생하는 것을 방지하므로 데이터의 수신 효율을 높일 수 있다.
도 6에서는 현재 스트리밍 데이터를 수신중인 노드들 사이에서 수신할 서브 블록을 재분배하는 경우에 대하여 도시하였으나, 연결 설정은 되어 있으나 서브 블록의 전송을 요청받지 않는 노드들의 상태를 모니터링하여, 데이터를 전송중인 노드와 데이터를 전송하지 않는 노드들 사이에서 서브 블록이 재분배될 수 있다는 것은 당업자에게 있어 자명할 것이다.
또한, 도 6에는 도시되어 있지 않으나, 복수의 노드를 통해 스트리밍 데이터를 수신할 수 없을 경우, 단일 서버를 통해 일반적인 방식으로 스트리밍 데이터를 수신하도록 수신 모드를 전환하는 과정이 더 포함될 수도 있을 것이다.
도 7은 본 발명의 바람직한 일 실시예에 따른 연결 제어 서버의 동작을 도시한 순서도이다.
도 7에 도시된 연결 제어 서버의 동작은 도 2와 같은 P2P망 또는 도 4와 같은 P2P와 다중 서버가 혼합된 망에서의 연결 제어 서버의 동작을 도시한 것이다.
도 7에 도시된 바와 같이, 연결 제어 서버는 연결된 노드들로부터 노드에 저장된 컨텐츠 정보와 노드의 주소 정보를 수신한다(S700). 전술한 바와 같이, P2P 망의 각 사용자 클라이언트(노드)에는 수신 에이전트 프로그램이 설치되며, 수신 에이전트 프로그램은 사용자 클라이언트에 저장되어 있는 컨텐츠 정보 및 사용자 클라이언트의 주소 정보를 연결 제어 서버에 전송한다. 수신된 노드의 주소 및 노드에 저장된 컨텐츠 정보는 연결 제어 서버의 데이터베이스에 저장된다.
연결 제어 서버는 연결된 노드들로부터 컨텐츠 요청 정보를 수신한다(S702). 컨텐츠 요청 정보를 수신한 연결 제어 서버는 상기 단계(S700)에서 수신하여 저장하고 있는 정보를 이용하여, 요청한 컨텐츠를 저장하고 있는 노드들을 조회한다(S704).
연결 제어 서버는 요청한 컨텐츠를 저장하고 있는 노드 리스트 정보를 컨텐츠를 요청한 클라이언트에 제공한다(S706).
도 7에는 도시되어 있지 않으나, 연결 제어 서버는 노드들로부터 상태 정보(예를 들어, PING 정보)를 수신할 수 있으며, 수신한 노드 상태 정보를 노드 리스트 정보와 함께 제공할 수도 있다.
연결 제어 서버로부터 노드 상태 정보를 수신하면, 사용자 클라이언트는 수신된 상태 정보를 통해 연결을 설정할 노드를 선택하며, 연결 설정에 실패하거나 데이터 수신율이 좋지 않을 경우, 노드 상태 정보를 이용하여 새로 연결을 시도할 노드를 선택한다. 이러한 노드 상태 정보는 계속적으로 갱신될 수 있으며, 갱신된 정보는 데이터 전송을 요청하거나 데이터를 수신중인 사용자 클라이언트에 전송된 다.
도 8은 본 발명의 다른 실시예에 따른 연결 제어 서버의 동작을 도시한 순서도이다.
도 8은 도 3과 같은 다중 서버를 이용한 스트리밍 데이터 전송 네트워크에서의 연결 제어 서버의 동작을 도시한 것이다.
도 8에 도시된 바와 같이, 연결 제어 서버는 각 컨텐츠 서버로부터 상태 정보를 수신한다(S800). 본 발명의 바람직한 일 실시예에 따르면, 상태 정보는 대역폭 정보, CPU 사용율 정보, 메모리 사용율 정보, 접속자 수 정보 및 파일 I/O 정보로 이루어진 그룹으로부터 선택된 어느 하나 또는 이들의 조합일 수 있다. 서버의 상태 정보로 상기한 정보 이외의 정보가 사용될 수도 있다는 것은 당업자에게 있어 자명할 것이다.
연결 제어 서버는 사용자 클라이언트로부터 컨텐츠 요청 정보를 수신한다(S802).
컨텐츠 요청 정보를 수신한 연결 제어 서버는 상기 단계(S800)에서 수신한 상태 정보를 참조하여 상태가 좋은 컨텐츠 서버들의 주소 정보(즉, 노드 리스트 정보) 및 서브 블록 분배 정보(각 컨텐츠 서버에서 어떠한 서브 블록을 수신할 것인가에 대한 정보)를 컨텐츠를 요청한 클라이언트에 제공한다(S804).
도 8에서는 서브 블록 분배 정보를 연결 제어 서버가 사용자 클라이언트에 제공하는 경우를 도시하였으나, 사용자 클라이언트가 각 컨텐츠 서버와 연결 후에 연결 상태를 체크하여 수신할 서브 블록을 분배할 수도 있을 것이다.
또한, 이와 다르게, 수신 초기에는 서브 블록 분배 정보를 연결 제어 서버에서 제공하나, 하나의 블록 수신이 완료된 후에는 사용자 클라이언트가 각 컨텐츠 서버와의 수신 속도를 알고 있으므로, 다음 블록을 수신할 때에는 사용자 클라이언트가 수신할 각 컨텐츠 서버로부터 수신할 서브 블록을 분배할 수도 있을 것이다.
도 9는 본 발명의 바람직한 일 실시예에 따른 사용자 클라이언트에 설치되는 에이전트 프로그램의 모듈 구성을 도시한 블록도이다.
도 9에 도시된 바와 같이, 본 발명의 일 실시예에 따른 수신 에이전트 프로그램은 에이전트 관리 모듈(900), 캐쉬 관리 모듈(902), 연결 제어 모듈(904), 노드 관리 모듈(906), 블록 관리 모듈(908) 및 서브 블록 관리 모듈(910)을 포함할 수 있다.
도 9에서, 에이전트 관리 모듈(900)은 연결 제어 서버와의 통신을 담당하며, 사용자 클라이언트가 켜지거나 에이전트 프로그램이 실행될 경우, 사용자 클라이언트의 아이피 주소 및 포트 번호를 포함하는 사용자 클라이언트 정보와 사용자 클라이언트에 저장되어 있는 컨텐츠 정보를 연결 제어 서버에 제공하는 기능을 한다.
또한, 에이전트 관리 모듈(900)은 사용자가 컨텐츠 전송을 요청할 경우, 컨텐츠 요청 정보를 연결 제어 서버에 전송한다. 요청한 컨텐츠의 재생에 메타 정보가 필요할 경우, 요청한 컨텐츠에 대한 메타 정보를 컨텐츠를 재생할 플레이어에 제공하는 기능을 수행할 수도 있다.
캐쉬 관리 모듈(902)은 노드들로부터 수신한 스트리밍 데이터를 관리하는 모듈이다. 캐쉬 관리 모듈(902)은 현재 남아있는 캐쉬의 용량, 저장되어 있는 컨텐츠 의 정보를 저장하고 있으며, 사용자 클라이언트가 켜지거나 에이전트 프로그램이 실행되었을 때 상기 저장하고 있는 정보를 에이전트 관리 모듈(900)에 제공한다. 본 발명의 바람직한 실시예에 따르면, 캐쉬 관리 모듈은 수신된 스트리밍 데이터를 스크램블링된 상태로 저장한다.
연결 제어 모듈(904)은 연결 제어 서버로부터 수신하는 노드 리스트 정보를 이용하여 미리 설정된 수의 노드에 연결을 설정하는 기능을 한다. 연결 제어 모듈(904)은 각 노드들과의 연결 상태 정보를 판단하여 각 노드들로부터 수신할 서브 블록을 분배하며, 분배 결과에 따라 각 노드들에 서브 블록을 요청한다.
또한, 연결 제어 모듈(904)은 각 노드들과 설정된 연결들 수신 상태를 계속적으로 모니터링하고, 모니터링 결과에 따라 설정된 연결들 중 일부에서 수신할 서브 블록을 재분배하도록 한다.
본 발명의 바람직한 일 실시예에 따르면, 연결 제어 모듈(904)은 각 노드들과 설정된 연결들 중 수신을 완료한 연결이 존재하는지 여부를 모니터링하고, 수신이 완료된 연결이 존재할 경우 수신이 완료된 연결과 수신이 완료되지 않은 연결 중 일부에서 수신할 서브 블록을 재분배하여 아이들(Idle) 커넥션이 발생하지 않도록 한다.
본 발명의 다른 실시예에 따르면, 각 연결들의 수신 상태 정보를 이용하여, 수신이 완료된 연결이 존재하지 않더라도 각 연결들의 수신 상태에 따라 미리 서브 블록을 재분배할 수도 있다.
본 발명의 또 다른 실시예에 따르면, 연결 제어 모듈(904)은 연결이 설정된 노드들 중 데이터를 전송하지 않는 노드의 상태 정보를 모니터링하고, 데이터를 전송하지 않는 노드의 일부와 데이터를 전송중인 노드의 일부에서 수신할 서브 블록을 재분배할 수도 있다.
노드 관리 모듈(906)은 연결 제어 서버로부터 제공되는 노드 리스트 정보를 연결 제어 모듈(904)에 제공하는 기능을 한다. 전술한 바와 같이, 노드 리스트 정보에는 노드의 아이피(IP) 주소와 포트 번호가 포함될 수 있을 것이다. 사용자의 컨텐츠 요청 시 에이전트 관리 모듈(900)은 사용자가 요청한 컨텐츠를 저장하고 있는 노드 정보를 연결 제어 서버에 요청하며, 노드 리스트 정보를 수신하여 노드 관리 모듈(906)에 제공한다. 컨텐츠를 저장하고 있는 노드들의 전원이 꺼지거나 연결이 불안해질 수 있으므로, 노드 정보는 계속적으로 갱신된다.
서브 블록 관리 모듈(910)은 노드들로부터 서브 블록을 수신하고, 특정 블록에 포함되는 모든 서브 블록이 수신되었는지를 판단한다. 모든 서브 블록이 수신되면, 서브 블록 관리 모듈(910)은 수신이 완료된 블록 데이터를 블록 관리 모듈(908)에 제공한다. 서브 블록 관리 모듈에서 하나의 블록에 포함되는 모두 서브 블록이 수신되었다고 판단할 경우, 연결 제어 모듈은 다음 블록의 서브 블록을 요청하여 수신하는 과정을 진행한다.
블록 관리 모듈(908)은 수신이 완료된 블록 데이터를 스트리밍 데이터를 재생하는 플레이어 또는 캐쉬 관리 모듈에 제공하는 기능을 한다.
도 9에는 도시되어 있지 않으나, 예약 관리 모듈이 수신 에이전트 프로그램에 더 포함될 수 있다. 스트리밍 데이터가 고속으로 전송되는 경우, 사용자의 인터 넷 접속 환경이 이러한 전송 속도를 따라올 수 없는 경우가 있다. 따라서, 이러한 경우에는 영화를 직접 재생시키기 전에 예약을 하여 영화 데이터를 미리 캐쉬에 저장시키도록 하며, 예약 관리 모듈은 이러한 예약을 위한 처리 과정을 수행한다.
예약 관리 모듈은 사용자가 예약을 요청한 스트리밍 데이터 및 요청한 데이터를 수신하였는지에 대한 정보를 관리하며, 요청한 데이터가 모두 수신될 때까지 연결 제어 모듈을 통해 필요한 데이터를 요청한다.
도 10은 본 발명의 바람직한 일 실시예에 따른 연결 제어 모듈의 상세한 모듈 구성을 도시한 블록도이다.
도 10에 도시된 바와 같이, 본 발명의 일 실시예에 따른 연결 제어 모듈은 연결 설정 모듈(1000), 연결 상태 판단 모듈(1002), 서브 블록 분배 모듈(1004) 및 수신상태 모니터링 모듈(1006)을 포함할 수 있다.
연결 설정 모듈(1000)은 연결 제어 서버에서 제공하는 노드 리스트 정보를 이용하여 데이터를 수신할 노드들에 연결을 설정하는 기능을 한다. 연결 설정은 사용자 클라이언트에서 노드에 TCP 접속을 요청하고, 노드가 TCP 접속을 허락할 수 있는 상태인지를 판단하여 TCP 접속을 허락하는 과정으로 진행될 수 있을 것이다. 물론 TCP 접속 이외에 다른 연결 설정 방법이 사용될 수 있다는 것은 위에서 이미 설명하였다.
연결 상태 판단 모듈(1002)은 연결이 설정된 각 노드들과의 연결 상태를 판단한다. 연결 상태 판단 모듈(1002)은 각 노드들과의 연결 상태 평가 지수를 계산하여 연결 상태를 판단한다.
본 발명의 일 실시예에 따르면, 연결 상태 평가 지수는 각 노드들과의 라운드 트립 시간을 이용하여 계산될 수 있을 것이다.
본 발명의 다른 실시예에 따르면, 연결 상태 평가 지수는 각 노드들과의 수신 속도를 이용하여 계산될 수도 있으며, 상기 라운드 트립 시간 및 수신 속도를 함께 고려하여 계산될 수도 있을 것이다.
초기의 데이터 수신 시에는 수신 속도를 알 수 없으므로, 라운드 트립 시간을 이용하여 연결 상태 평가 지수를 계산하며, 데이터 수신이 진행되어 수신 속도를 알 수 있으면, 수신 속도를 이용하여 연결 상태 평가 지수를 계산하는 것이 바람직하다. 수신 속도는 계속 변하므로, 연결 상태 평가 지수 역시 계속적으로 갱신된다.
본 발명의 다른 실시예에 따르면, 연결 상태 판단 모듈은 연결 제어 서버로부터 노드들의 상태 정보를 수신하고, 수신한 상태 정보를 이용하여 연결 상태를 판단할 수도 있다.
서브 블록 분배 모듈(1004)은 연결 상태 판단 모듈(1002)에서 계산한 연결 상태 평가 지수를 이용하여 연결이 설정된 노드들로부터 수신할 서브 블록을 분배한다. 연결 상태 평가 지수의 비에 따라 각 노드들로부터 수신할 서브 블록의 수를 결정하는 것이 바람직할 것이다.
수신 상태 모니터링 모듈(1006)은 각 노드들과 설정된 연결들 중 서브 블록의 수신이 완료되는 연결이 있는지 여부를 판단하고, 수신이 완료된 연결이 존재할 경우, 서브 블록 분배 모듈(1004)에 수신할 서브 블록의 재분배를 요청한다.
연결이 설정된 모든 노드에 대해 서브 블록을 재분배하게 되면, 모든 노드에 제어 신호를 다시 송신하여야 하므로 효율이 떨어질 수 있다. 따라서, 본 발명의 바람직한 실시예에 따르면, 수신이 완료된 연결과 수신율이 가장 낮은 연결에 대해서만 서브 블록을 재분배하는 것이 바람직하다. 이 경우, 수신이 완료된 연결과 수신율이 가장 낮은 경로에만 서브 블록 재분배에 대한 제어 신호를 송신하면 된다.
도 11은 본 발명의 바람직한 일 실시예에 따른 연결 상태를 판단하여 서브 블록을 분배하는 과정을 도시한 순서도이다.
도 11에 도시된 바와 같이, 수신 초기에는 연결이 설정된 각 노드들과의 라운드 트립 시간을 측정한다(S1100). 라운드 트립 시간은 연결된 노드에 체크 신호를 전송하고 이에 대한 응답 신호가 수신되는데 걸리는 시간을 의미한다.
라운드 트립 시간의 측정 후, 연결이 설정된 모든 연결에서의 평균 수신 속도 정보를 알고 있는지 여부를 판단한다(S1102). 이미 여러 개의 블록을 수신한 상태라면 모든 경로에서의 평균 수신 속도 정보를 알 수 있을 것이다.
모든 연결에서의 평균 수신 속도를 알고 있을 경우, 평균 수신 속도 정보를 이용해 연결 상태 평가 지수를 계산한다(S1104). 예를 들어, 세 개의 노드를 통해 스트리밍 데이터를 수신하고, 각 연결의 평균 수신 속도가 500,000bps, 100,000bps 및 64,000bps인 경우, 각 연결의 연결 상태 평가 지수는 500,000, 100,000, 64,000으로 설정한다. 물론 평균 수신 속도를 정규화한 값을 연결 상태 평가 지수로 사용할 수도 있을 것이다.
모든 연결에서의 평균 수신 속도를 알고있지 않을 경우, 일부 연결에서의 평 균 수신 속도 정보를 알고 있는지 여부를 판단한다(S1106). 이러한 경우는 스트리밍 데이터의 수신 중 새로운 노드를 통해 스트리밍 데이터를 수신할 경우에 발생할 수 있을 것이다.
일부 연결의 평균 수신 속도 정보를 알고 있을 경우, 라운드 트립 시간 및 평균 수신 속도를 이용하여 연결 상태 평가 지수를 계산한다(S1108).
예를 들어, 3개의 노드를 통해 스트리밍 데이터를 수신하고, 세 개의 노드 중 제1 노드의 평균 수신 속도는 200,000bps이고, 제2 노드의 평균 수신 속도는 100,000bps이며, 제3 노드의 평균 수신 속도 정보는 알 수 없는 경우를 가정하자. 또한, 제1 노드의 라운드 트립 시간은 23ms, 제2 노드의 라운트 트립 시간은 32ms 제3 노드의 라운드 트립 시간은 20ms라고 가정하자.
이때, 연결 상태 평가 지수는 (수신 속도)/(라운드 트립 시간)에 의해 계산한다. 이 경우, 제3 노드의 평균 수신 속도는 (수신 속도)/(라운드 트립 시간)을 계산한 연결의 값이 가장 작은 연결의 값을 이용하여 예측한다. 제2 노드의 (수신속도)/(라운드 트립 시간)을 계산한 값이 가장 작으므로, 제3 노드의 평균 수신 속도는 다음의 수학식 1과 같이 계산될 수 있을 것이다.
모든 노드의 평균 수신 속도 정보를 알고 있지 않은 경우, 라운드 트립 시간을 이용해 성능 평가 지수를 계산한다. 본 발명의 일 실시예에 따르면, 라운드 트 립 시간의 역수를 성능 평가 지수로 사용할 수 있다.
예를 들어, 세 개의 노드를 통해 스트리밍 데이터를 수신하고, 각 노드의 라운드 트립 시간이 23ms, 41ms 및 32ms라고 가정하자. 이 경우, 각 연결의 성능 평가 지수는
이 될 수 있을 것이다.
각 연결에 대한 성능 평가 지수를 계산하면, 각 노드들로부터 블록에 포함되는 총 서브 블록 중 몇 개의 서브 블록을 수신할지 여부를 결정한다.
각 노드들로부터 수신할 서브 블록의 수는 연결 상태 평가 지수의 비에 의해 결정될 것이다. 구체적으로 각 노드로부터 수신할 서브 블록의 수는 다음의 수학식 2와 같이 계산될 수 있을 것이다.
여기서 P_i는 각 연결에 요청할 서브 블록의 수이고, alpha_i는 각 연결의 성능 평가 지수이다. 즉, 서브 블록을 요청하는 사용자 클라이언트는 계산된 P_i만큼 각 노드에 서브 블록을 요청한다.
도 12는 본 발명의 바람직한 일 실시예에 따른 서브 블록 수신이 완료된 노드가 존재할 경우의 처리 과정을 도시한 순서도이다.
도 12에 도시된 바와 같이, 연결 제어 모듈의 수신 상태 모니터링 모듈은 수 신이 완료된 연결이 존재하는지 여부를 모니터링한다(S1200).
수신이 완료된 연결이 존재할 경우, 수신이 아직 완료되지 않은 연결들 중 수신율이 가장 낮은 연결을 탐색한다(S1202). 여기서 수신율은 (수신한 서브 블록 수)/(요청한 서브 블록 수)에 의해 계산될 수 있을 것이다.
수신율이 가장 낮은 연결을 찾은 후, 수신율이 가장 낮은 연결에서 수신하여야 할 서브 블록의 수를 계산한다(S1204).
남은 서브 블록의 수를 계산한 후에는 수신율이 낮은 연결과 수신이 완료된 연결이 서브 블록을 재분배하여 수신할 필요가 있는지 여부를 판단한다(S1206). 예를 들어, 서브 블록 재분배를 위해 제어 신호를 보내는 시간 동안 남은 서브 블록이 모두 수신될 수 있다면 서브 블록 재분배를 할 필요가 없을 것이다.
서브 블록 재분배가 필요하다고 판단되는 경우, 연결 상태 평가 지수에 따라 수신이 완료된 연결과 수신율이 가장 낮은 연결이 수신하여야할 서브 블록의 수를 재분배한다(S1208).
서브 블록의 재분배는 다음의 수학식 3과 같이 이루어질 수 있다.
P_2 = (남은 서브 블록 수)- P_1
여기서 P_1은 수신율이 낮은 연결에 새로 배분된 서브 블록의 수이고 alpha_1은 수신율이 낮은 연결의 성능 평가 지수이며, P_2는 수신이 완료된 연결에 새로 배분된 서브 블록의 수이고, alpha_2는 수신이 완료된 연결의 연결 상태 판단 지수이다.
서브 블록이 재분배되면, 분배 기준에 따라 각 연결에 해당하는 노드에 서브 블록을 재요청한다(S1210). 계산 결과 수신율이 낮은 연결에서 더 이상 서브 블록을 수신할 필요가 없는 경우, 해당 노드에 서브 블록 전송 중지를 요청한다.
도 13은 본 발명의 바람직한 일 실시예에 따른 연결 제어 서버의 모듈 구성을 도시한 도면이다.
도 13은 도 2와 같은 P2P 망 또는 도 4와 같은 다중 서버와 P2P가 혼재된 망에서의 연결제어 서버의 모듈 구성을 도시한 것이다.
도 13에 도시된 바와 같이, 본 발명의 일 실시예에 따른 연결 제어 서버는 메쉬 관리 모듈(1300), 노드 정보 제공 모듈(1302) 및 인증 모듈(1304)을 포함할 수 있으며, 연결 제어 서버에는 사용자 데이터베이스(1306), 메타 정보 데이터베이스(1308) 및 메쉬 정보 데이터 베이스(1310)가 결합될 수 있다.
도 13에서, 메쉬 관리 모듈(1300)은 접속되어 있는 사용자 클라이언트들의 정보를 관리하는 기능을 한다. 전술한 바와 같이, 클라이언트의 전원이 켜지거나 수신 에이전트 프로그램이 실행될 경우, 클라이언트의 주소 정보 및 저장된 컨텐츠 정보가 연결 제어 서버로 전송되며, 메쉬 관리 모듈(1300)은 상기 정보를 수신하고 이를 메쉬 정보 데이터베이스(1310)에 저장한다.
노드 정보 제공 모듈(1302)은 사용자가 특정 컨텐츠의 전송을 요청할 경우, 해당 컨텐츠를 저장하고 있는 노드에 대한 정보를 메쉬 정보 데이터베이스(1310)를 조회하여 추출하고 이를 컨텐츠 전송을 요청한 사용자 클라이언트에 제공한다.
인증 모듈(1304)은 컨텐츠를 요청하는 사용자를 인증하고 과금 정보를 처리하는 기능을 한다. 사용자가 컨텐츠를 요청할 경우, 사용자 아이디 및 비밀 번호를 포함하는 인증키 정보가 연결 제어 서버로 전송되며, 인증 모듈(1304)은 등록된 사용자인지 여부를 판단한다. 또한 인증 모듈(1304)은 외부 과금 서버(미도시)와 연계되어 컨텐츠를 요청한 사용자가 컨텐츠 요청에 따른 금액을 지불하였는지 여부를 판단한다.
사용자 데이터베이스(1306)에는 등록된 사용자들의 아이디, 비밀번호, 신상 정보 등이 저장되며, 메타 정보 데이터베이스(1308)에는 컨텐츠의 코딩 방식, 저작자 등에 대한 정보가 저장된다. 컨텐츠를 요청한 사용자가 인증되면, 메쉬 관리 모듈(1300)은 컨텐츠를 요청한 사용자에게 요청한 컨텐츠의 메타 정보를 제공한다. 일반적으로 메타 정보는 스트리밍 데이터의 재생을 위해 필요한 정보이나, 만약 메타 정보 없이 데이터 재생이 가능한 경우에는 메타 정보 데이터베이스(1308)는 구비되지 않아도 무방하다.
메쉬 정보 데이터베이스(1310)에는 연결 제어 서버(1310)에 접속되어 있는 사용자 클라이언트 및 사용자 클라이언트에 저장되어 있는 컨텐츠 정보가 저장된다.
도 14는 본 발명의 다른 실시예에 따른 연결 제어 서버의 모듈 구성을 도시한 도면이다.
도 14에 도시된 바와 같이, 본 발명의 다른 실시예에 따른 연결 제어 서버는 서버 상태 판단 모듈(1400), 서브 블록 분배 모듈(1402), 서버 리스트 제공 모듈(1404) 및 인증 모듈(1406)을 포함할 수 있으며, 사용자 데이터베이스(1408), 컨텐츠 서버 데이터베이스(1410) 및 메타 정보 데이터베이스(1412)가 결합될 수 있다.
서버 상태 판단 모듈(1400)은 연결 제어 서버가 관리하는 컨텐츠 서버들의 상태 정보를 판단하는 모듈이다. 전술한 바와 같이, 서버 상태 판단 모듈(1400)은 대역폭 정보, CPU 사용율 정보, 메모리 사용율 정보, 접속자 수 정보 및 파일 I/O 정보 등을 이용하여 각 컨텐츠 서버의 상태를 판단한다.
서버 리스트 제공 모듈(1404)은 컨텐츠를 요청하는 사용자 클라이언트에 사용자 클라이언트가 접속할 컨텐츠 서버의 리스트 정보를 제공하는 기능을 한다. 서버 리스트 제공 모듈은 상기 서버 상태 판단 모듈의 판단 결과를 이용하여 상태가 좋은 서버들의 리스트를 사용자 클라이언트에 제공한다.
서브 블록 분배 모듈(1402)은 각 컨텐츠 서버의 상태 판단 결과를 이용하여 사용자 클라이언트가 각 컨텐츠 서버로부터 수신하여야할 서브 블록 수에 대한 정보를 컨텐츠를 요청한 사용자 클라이언트에 제공하는 기능을 한다. 물론 서브 블록의 분배가 사용자 클라이언트에서 이루어질 수도 있다는 것은 위에서 이미 설명한 바 있다.
컨텐츠 서버 데이터베이스(1410)에는 연결 제어 서버가 관리하는 컨텐츠 서버의 대한 정보가 저장된다.
인증 모듈(1406)의 기능 및 사용자 데이터베이스(1408) 및 메타 정보 데이터 베이스(1412)에 저장되는 정보는 도 13의 경우와 동일하므로 이에 대한 설명은 생략한다.
상기한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대해 통상의 지식을 가진 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.