KR101352630B1 - 가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법 - Google Patents

가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법 Download PDF

Info

Publication number
KR101352630B1
KR101352630B1 KR1020110077113A KR20110077113A KR101352630B1 KR 101352630 B1 KR101352630 B1 KR 101352630B1 KR 1020110077113 A KR1020110077113 A KR 1020110077113A KR 20110077113 A KR20110077113 A KR 20110077113A KR 101352630 B1 KR101352630 B1 KR 101352630B1
Authority
KR
South Korea
Prior art keywords
node
virtualization
content
download
chunk
Prior art date
Application number
KR1020110077113A
Other languages
English (en)
Other versions
KR20130026578A (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 KR1020110077113A priority Critical patent/KR101352630B1/ko
Publication of KR20130026578A publication Critical patent/KR20130026578A/ko
Application granted granted Critical
Publication of KR101352630B1 publication Critical patent/KR101352630B1/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/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Tourism & Hospitality (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

콘텐츠를 공유하는 제1 노드 집합에 참여하는 사용자 노드가 제2 노드 집합에서 공유되는 콘텐츠를 공유하는 방법으로서, 가상화를 지원하는 물리적 노드를 이용하여 제2 노드 집합에 참여하는 사용자 노드의 제1 가상화 노드를 생성하는 단계, 제1 가상화 노드가 제2 노드 집합에서 공유되는 콘텐츠를 다운로드하도록 제1 가상화 노드를 제어하는 단계, 그리고 제1 가상화 노드로부터 제1 가상화 노드가 다운로드한 콘텐츠를 전달받는 단계를 포함한다.

Description

가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법{VIRTUALIZED NODE, USER NODE EMPLOYING VIRTUALIZED NODE, AND CONTENTS SHARING METHOD USING VIRTUALIZED NODE}
본 발명은 가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법과 이를 동일한 원리가 적용되는 피어 투 피어(peer-to-peer, P2P) 기반 응용으로 확장하는 방법에 관한 것이다.
피어 투 피어(peer-to-peer, P2P) 파일 공유 시스템은 서버로부터 파일을 다운로드하는 대신 이웃한 피어 노드(이하에서는 노드로 약칭)끼리 파일을 공유하는 시스템으로서, 다양한 P2P 파일 전송 기술로 구현될 수 있다.
다양한 P2P 파일 전송 기술 중에 대표적인 방식으로 비트토렌트(BitTorrent)가 있다. 비트토렌트는 같은 콘텐츠를 공유하는 노드들의 집합인 스웜(swarm)들로 이루어지고, 스웜안의 노드끼리 콘텐츠를 공유한다. 이때, 콘텐츠는 일정 크기의 청크(chunk)로 분할되어 스웜안의 노드들에 저장되고, 스웜안의 노드들은 자신이 보유한 청크를 이웃 노드들과 공유하여 전체 청크를 다운로드하면 완전한 콘텐츠를 획득하게 된다.
스웜에 참여하고 싶은 노드는 토렌트 파일로부터 트래커(tracker)에 대한 정보를 얻고, 트래커로부터 관련 콘텐츠를 공유하고 있는 노드들의 정보를 제공받는다. 이때 트래커는 스웜안의 노드가 보고한 정보를 참여 노드들에게 전달하는 서버이다.
비트토렌트에서 노드는 완전한 콘텐츠를 보유하여 서버와 같은 역할을 하는 시드(seed) 노드와 보통의 노드인 리치(leech) 노드로 구분된다. 이때, 스웜안에 서버 역할을 하는 시드 노드가 존재하지 않거나, 참여 노드 수가 적을 경우, 스웜안에 콘텐츠의 전체 청크 집합이 존재할 가능성이 낮아진다. 따라서 노드가 콘텐츠 다운로드를 완료하기 어려운 콘텐츠 비가용성(unavailability) 문제가 발생한다.
특히, 비트토렌트는 스웜안의 노드끼리 통신하고, 다른 스웜의 노드와 통신하지 않는다. 따라서, 스웜안에 전체 청크 집합이 존재하지 않아 다운로드를 완료하지 못한 노드는 다른 스웜에 원하는 콘텐츠를 보유한 노드가 있더라도, 다른 스웜의 노드의 존재를 알지 못해 결국 전체 청크를 다운로드할 수 없다. 또한, 비트토렌트는 동일한 콘텐츠를 공유하지만 다른 트래커를 통해 지원되는 스웜 사이의 통신을 지원하지 않아 같은 콘텐츠에 대해 존재하는 청크 목록을 알 수 없다. 지금까지 이러한 콘텐츠 비가용성 문제를 개선하기 위한 방법으로 다중 스웜 간의 협력 방법이나 관련 콘텐츠를 묶어 전달하는 방법이 있으나, 다른 스웜으로부터 청크를 다운로드하는데 한계가 있다.
본 발명이 해결하고자 하는 과제는 가상화를 지원하는 물리적 노드의 자원을 이용하여 사용자 노드의 스웜이나 다른 스웜에 사용자 주도형 가상화 노드를 설치하고, 가상화 노드를 통해 콘텐츠를 빠르게 확보하는 사용자 노드, 그리고 사용자 주도형 가상화 노드를 이용한 콘텐츠 공유 방법을 제공하는 것이다.
본 발명의 한 실시예에 따른 콘텐츠를 공유하는 제1 노드 집합에 참여하는 사용자 노드가 제2 노드 집합에서 공유되는 상기 콘텐츠를 공유하는 방법으로서, 가상화를 지원하는 물리적 노드를 이용하여 상기 제2 노드 집합에 참여하는 상기 사용자 노드의 제1 가상화 노드를 생성하는 단계, 상기 제1 가상화 노드가 상기 제2 노드 집합에서 공유되는 상기 콘텐츠를 다운로드하도록 상기 제1 가상화 노드를 제어하는 단계, 그리고 상기 제1 가상화 노드로부터 상기 제1 가상화 노드가 다운로드한 콘텐츠를 전달받는 단계를 포함한다.
상기 방법은 상기 제1 가상화 노드와 네트워크 연결을 위한 제2 가상화 노드를 생성하는 단계를 더 포함하며, 상기 제1 가상화 노드가 다운로드한 콘텐츠를 전달받는 단계는 상기 제1 가상화 노드와 연결된 상기 제2 가상화 노드를 통해 상기 다운로드한 콘텐츠를 전달받을 수 있다.
상기 제2 가상화 노드를 생성하는 단계는 상기 제1 가상화 노드와 일정 대역폭의 가상화 링크로 연결되는 상기 제2 가상화 노드를 생성할 수 있다.
상기 제1 가상화 노드를 제어하는 단계는 상기 제2 노드 집합에서 다운로드할 콘텐츠의 청크를 선택하는 단계, 그리고 선택한 청크를 다운로드하도록 상기 제1 가상화 노드로 제어 명령을 보내는 단계를 포함할 수 있다.
상기 다운로드할 콘텐츠의 청크를 선택하는 단계는 상기 제1 노드 집합에서 상기 콘텐츠를 구성하는 청크의 희귀성을 기초로 상기 제2 노드 집합에서 다운로드할 청크를 선택할 수 있다.
상기 제1 가상화 노드를 생성하는 단계는 상기 물리적 노드의 여유 자원 여부를 기초로 상기 제1 가상화 노드를 생성할 수 있다.
상기 제1 가상화 노드를 생성하는 단계는 상기 물리적 노드의 여유 자원이 부족한 경우, 상기 제1 노드 집합에서 상기 콘텐츠를 구성하는 전체 청크 중에서 공유되는 공유 청크를 확인하는 단계, 상기 공유 청크를 기초로 상기 제1 노드 집합에서 상기 콘텐츠 다운로드를 완료할 수 있는지 판단하는 단계, 그리고 상기 콘텐츠 다운로드를 완료할 수 없는 경우, 상기 콘텐츠를 공유하는 상기 제2 노드 집합에 상기 제1 가상화 노드를 설치하는 단계를 포함할 수 있다.
상기 콘텐츠 다운로드를 완료할 수 있는지 판단하는 단계는 상기 공유 청크가 상기 콘텐츠를 구성하는 전체 청크를 포함하지 않으면, 상기 콘텐츠 다운로드를 완료할 수 없는 경우로 판단할 수 있다.
상기 콘텐츠 다운로드를 완료할 수 있는지 판단하는 단계는 상기 콘텐츠를 구성하는 전체 청크를 보유하는 시드 노드가 상기 제1 노드 집합에 없으면, 상기 콘텐츠 다운로드를 완료할 수 없는 경우로 판단할 수 있다.
상기 제1 가상화 노드를 생성하는 단계는 상기 물리적 노드의 컴퓨팅 자원과 네트워킹 자원을 이용하여 상기 제1 가상화 노드를 생성할 수 있다.
본 발명의 다른 실시예에 따른 비트토렌트 파일 공유 네트워크에서 사용자 노드가 가상화 노드를 이용하여 콘텐츠를 공유하는 방법으로서, 피어(peer) 노드끼리 같은 콘텐츠를 공유하는 제1 스웜에 참여하는 단계, 물리적 노드의 자원을 기초로 상기 제1 스웜과 같은 상기 콘텐츠를 공유하는 제2 스웜에 상기 제2 스웜의 피어 노드로 동작하는 다운로드용 가상화 노드를 설치하는 단계, 물리적 노드의 자원을 기초로 상기 제2 스웜과의 네트워크 연결을 위한 네트워크 연결용 가상화 노드를 설치하는 단계, 상기 다운로드용 가상화 노드가 상기 제2 스웜에서 상기 콘텐츠를 구성하는 일부 청크를 다운로드하도록 상기 다운로드용 가상화 노드를 제어하는 단계, 상기 다운로드용 가상화 노드가 다운로드한 청크를 상기 네트워크 연결용 가상화 노드를 통해 전달받는 단계, 그리고 상기 제1 스웜에서 다운로드한 청크와 상기 다운로드용 가상화 노드가 다운로드한 청크를 조합하는 단계를 포함한다.
상기 다운로드용 가상화 노드를 설치하는 단계는 상기 제1 스웜에서 상기 콘텐츠를 구성하는 전체 청크 중에서 공유되는 공유 청크를 확인하는 단계, 상기 공유 청크를 기초로 상기 제1 스웜에서 상기 콘텐츠 다운로드를 완료할 수 있는지 판단하는 단계, 그리고 상기 콘텐츠 다운로드를 완료할 수 없는 경우, 상기 제2 스웜에 상기 다운로드용 가상화 노드를 생성하는 단계를 포함할 수 있다.
상기 네트워크 연결용 가상화 노드를 설치하는 단계는 상기 다운로드용 가상화 노드와 일정 대역폭의 가상화 링크로 연결되는 상기 네트워크 연결용 가상화 노드를 설치할 수 있다.
상기 다운로드용 가상화 노드를 제어하는 단계는 상기 제2 스웜에서 다운로드할 콘텐츠의 청크를 선택하는 단계, 그리고 선택한 청크를 다운로드하도록 상기 다운로드용 가상화 노드로 제어 명령을 보내는 단계를 포함할 수 있다.
상기 다운로드할 콘텐츠의 청크를 선택하는 단계는 상기 제1 스웜에서의 상기 콘텐츠를 구성하는 청크의 희귀성을 기초로 상기 제2 스웜에서 다운로드할 청크를 선택할 수 있다.
상기 다운로드용 가상화 노드를 제어하는 단계는 상기 다운로드용 가상화 노드가 다운로드한 청크 목록을 알리도록 상기 다운로드용 가상화 노드를 제어할 수 있다.
상기 방법은 상기 다운로드용 가상화 노드가 다운로드한 청크 목록에 포함되지 않은 청크를 상기 제1 스웜의 피어 노드로부터 획득하는 단계를 더 포함할 수 있다.
상기 다운로드용 가상화 노드를 제어하는 단계는 상기 제1 스웜에서 공유되는 상기 콘텐츠의 청크 집합과 상기 제2 스웜에서 공유되는 상기 콘텐츠의 청크 집합을 비교하여 결정한 상기 제2 스웜에서 다운로드할 청크 목록을 상기 다운로드용 가상화 노드로 전달할 수 있다.
상기 방법은 상기 제1 스웜에서 다운로드한 청크와 상기 다운로드용 가상화 노드가 다운로드한 청크를 조합한 결과, 상기 제1 스웜과 상기 제2 스웜으로부터 상기 콘텐츠의 전체 청크를 획득하지 못하는 경우, 상기 콘텐츠를 공유하는 제3 스웜에 상기 제3 스웜의 피어 노드로 동작하는 다운로드용 가상화 노드를 추가하는 단계, 그리고 상기 제3 스웜의 피어 노드로 동작하는 다운로드용 가상화 노드가 다운로드한 청크를 전달받는 단계를 더 포함할 수 있다.
본 발명의 한 실시예에 따른 가상화를 지원하는 물리적 노드를 이용하여 생성한 가상화 노드를 이용하여 콘텐츠를 공유하는 사용자 노드로서, 피어(peer) 노드끼리 같은 콘텐츠를 공유하는 스웜에 참여하여 상기 콘텐츠를 구성하는 청크를 다운로드하여 저장하고, 저장된 청크를 상기 참여 스웜 안에서 공유하는 공유부, 가상화 노드의 필요성을 판단하고, 상기 참여 스웜이 아닌 다른 스웜에 상기 물리적 노드의 자원을 기초로 상기 다른 스웜의 피어 노드로 동작하는 다운로드용 가상화 노드를 설치하는 가상화 노드 설치부, 상기 다운로드용 가상화 노드가 상기 다른 스웜에서 상기 콘텐츠를 구성하는 일부 청크를 다운로드하도록 상기 다운로드용 가상화 노드를 제어하는 가상화 노드 제어부, 그리고 상기 다운로드용 가상화 노드가 다운로드한 청크를 전달받는 가상화 노드 연결부를 포함한다.
상기 공유부는 상기 수신부가 전달받은 청크를 저장할 수 있다.
상기 가상화 노드 설치부는 상기 콘텐츠를 구성하는 전체 청크 중 상기 참여 스웜에서 공유되는 공유 청크의 희귀성을 기초로 상기 가상화 노드의 필요성을 판단할 수 있다.
상기 가상화 노드 설치부는 상기 다운로드용 가상화 노드와 네트워크 연결되는 네트워크 연결용 가상화 노드를 더 설치할 수 있다.
상기 가상화 노드 제어부는 상기 다운로드용 가상화 노드가 상기 네트워크 연결용 가상화 노드로 다운로드한 청크를 전송하고, 상기 네트워크 연결용 가상화 노드가 상기 수신부로 상기 다운로드용 가상화 노드가 다운로드한 청크를 전송하도록 상기 다운로드용 가상화 노드와 상기 네트워크 연결용 가상화 노드를 제어할 수 있다.
상기 가상화 노드 제어부는 상기 다른 스웜에서 다운로드할 콘텐츠의 청크를 선택하고, 선택한 청크를 다운로드하도록 상기 다운로드용 가상화 노드로 제어 명령을 보낼 수 있다.
상기 가상화 노드 제어부는 상기 참여 스웜에서의 상기 콘텐츠를 구성하는 청크의 희귀성을 기초로 상기 다른 스웜에서 다운로드할 청크를 선택하고, 상기 다운로드용 가상화 노드가 다운로드한 청크 목록을 알리도록 상기 다운로드용 가상화 노드를 제어할 수 있다.
본 발명의 한 실시예에 따른 제1 스웜에 참여한 사용자 노드에 의해 가상화를 지원하는 물리적 노드를 이용하여 제2 스웜에 설치된 가상화 노드로서, 상기 사용자 노드로부터 제어 명령을 수신하는 명령 수신부, 상기 제어 명령에 따라 상기 제2 스웜에 참여하여 상기 제2 스웜의 피어 노드로부터 상기 콘텐츠를 구성하는 청크를 다운로드하는 공유부, 그리고 상기 제어 명령에 따라 다운로드한 청크를 상기 사용자 노드로 전송하는 송신부를 포함한다.
상기 가상화 노드는 상기 제어 명령에 따라 상기 제2 스웜에서 공유되는 상기 콘텐츠의 청크 정보와 상기 공유부에서 다운로드한 청크 목록을 상기 사용자 노드로 보고하는 보고부를 더 포함할 수 있다.
상기 송신부는 다운로드한 청크를 상기 제어 명령이 지정하는 네트워크 연결용 가상화 노드로 전송할 수 있다.
본 발명의 실시예에 따르면 가상화를 통해 생성된 적어도 하나의 사용자 주도형 가상화 노드를 이용하여 스웜 사이의 콘텐츠를 공유하여 사용자 노드가 효율적으로 콘텐츠를 확보할 수 있다. 또한 사용자 노드가 같은 콘텐츠를 공유하는 다른 스웜에 가상화 노드를 설치하여 콘텐츠를 확보하므로, 콘텐츠 비가용성 문제를 해결하여 콘텐츠 가용성이 높아져 원하는 P2P 응용의 성능을 얻을 수 있다.
도 1은 본 발명의 한 실시예에 따른 파일 공유 네트워크를 개략적으로 나타내는 도면이다.
도 2는 본 발명의 한 실시예에 따른 가상화 노드의 개념을 설명하는 도면이다.
도 3은 본 발명의 한 실시예에 따른 가상화 노드를 이용한 콘텐츠 공유 방법의 흐름도이다.
도 4는 본 발명의 다른 실시예에 따른 가상화 노드를 이용한 콘텐츠 공유 방법의 흐름도이다.
도 5는 본 발명의 한 실시예에 따른 가상화 노드를 생성하는 방법의 흐름도이다.
도 6과 도 7 각각은 본 발명의 한 실시예에 따른 가상화 노드를 제어하는 방법의 흐름도이다.
도 8은 본 발명의 한 실시예에 따른 사용자 노드의 개략적인 블록도이다.
도 9는 본 발명의 한 실시예에 따른 가상화 노드의 개략적인 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이제 도면을 참고하여 본 발명의 실시예에 따른 가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법에 대하여 상세하게 설명한다.
도 1은 본 발명의 한 실시예에 따른 파일 공유 네트워크를 개략적으로 나타내는 도면이다.
도 1을 참고하면, 피어 투 피어(peer-to-peer, P2P) 파일 공유 네트워크는 이웃한 노드끼리 파일을 공유하는 네트워크로서, 같은 콘텐츠를 공유하는 복수의 노드를 포함하는 노드 집합(10/20)으로 구성된다.
노드 집합(10)은 피어(peer) 노드인 복수의 노드(11, 12, 13)를 포함하며, 복수의 노드(11-13)끼리 같은 콘텐츠를 공유한다. 이때, 콘텐츠는 일정 크기의 데이터 조각인 청크(chunk)로 분할되어 노드 사이에서 공유된다. 각 노드(11-13)는 자신이 보유한 청크를 이웃 노드와 공유하고, 콘텐츠를 구성하는 전체 청크를 다운로드하면 완전한 콘텐츠를 획득한다.
마찬가지로, 노드 집합(20)은 피어 노드인 복수의 노드(21, 22, 23, 24, 25)를 포함하며, 복수의 노드(21-25)끼리 같은 콘텐츠를 공유한다. 그리고 각 노드(21-25)는 자신이 보유한 청크를 이웃 노드와 공유하여 콘텐츠를 구성하는 전체 청크를 다운로드한다.
이러한 두 노드 집합(10, 20)은 같은 콘텐츠를 공유할 수 있지만, 집합 내부의 피어 노드끼리만 콘텐츠의 청크를 공유한다. 따라서 노드 집합(10)의 노드(11)는 자신이 보유한 청크를 다른 노드 집합(20)의 노드(21-25)와 직접 통신하여 콘텐츠를 공유할 수 없다.
사용자 노드(100)는 노드 집합을 관리하는 서버를 통해 원하는 콘텐츠를 공유하고 있는 노드들의 정보를 얻는다. 그리고 사용자 노드(100)는 원하는 콘텐츠를 공유하는 노드 집합에 참여하여 콘텐츠를 다운로드한다. 만약 같은 콘텐츠를 공유하는 두 노드 집합(10, 20)이 있는 경우, 사용자 노드(100)는 어느 하나의 노드 집합(10)을 선택하여 참여할 수 있다. 이 경우, 사용자 노드(100)는 노드(11-13)로부터 콘텐츠의 전체 청크를 다운로드하여 완전한 콘텐츠를 획득할 수 있다. 그러나, 노드 집합(10)에 콘텐츠의 전체 청크를 보유한 노드가 없거나, 노드(11-13)가 보유한 청크 집합으로 전체 청크를 구성하지 못할 가능성이 있으면, 콘텐츠 비가용성(unavailability) 문제가 발생할 수 있다. 따라서, 사용자 노드(100)는 노드 집합을 관리하는 서버를 통해 자신이 참여하지 않은 다른 노드 집합의 정보를 얻고, 이를 기초로 원하는 콘텐츠를 공유하는 노드 집합(20)을 선택한다. 그리고 사용자 노드(100)는 가상화를 지원하는 물리적 노드(physical node)를 이용하여 노드 집합(20)에 참여하는 가상화 노드(virtualized node)(200)를 생성한다.
가상화 노드(200)는 노드 집합(20)에서 피어 노드로 동작하는 사용자 노드(100)의 분신 노드이다. 가상화 노드(200)는 사용자 노드(100)의 제어 명령에 따라 노드 집합(20)에 참여하여 노드(21-25)로부터 청크를 다운로드한다. 따라서 가상화 노드(200)를 다운로드용 가상화 노드라고 할 수 있다. 그리고 가상화 노드(200)는 사용자 노드(100)의 제어 명령에 따라 다운로드한 청크를 사용자 노드(100)로 전송한다. 이와 같이 사용자 노드(100)는 가상화 노드(200)를 통해 자신이 참여한 노드 집합(10)에서 얻을 수 없는 청크를 획득할 수 있다. 또한 사용자 노드(100)는 자신이 참여한 노드 집합(10)과 가상화 노드(200)가 참여한 노드 집합(20)에서 청크를 다운로드하므로, 노드 집합(10) 안에서만 콘텐츠를 공유할 때 보다 일을 빨리 처리하여 성능을 높일 수 있다.
사용자 노드(100)는 가상화 노드(200)로부터 직접 다운로드 청크를 수신할 수 있지만, 가상화 노드(200)와 네트워크 연결을 담당하는 다른 가상화 노드(300)를 생성할 수 있다. 이때 두 가상화 노드(200, 300)는 가상화를 지원하는 가상화 링크가 생성되어 일정 대역폭을 보장할 수 있다. 이러한 가상화 노드(300)를 네트워크 연결용 가상화 노드라고 할 수 있다.
이러한 가상화 노드(200, 300)는 사용자 노드(100)의 제어에 따라 동작하는 사용자 주도형 가상화 노드(user-driven virtualized node)이다. 따라서, 가상화 노드(200, 300)는 사용자 노드(100)에 의해 특정 위치에 배치되고, 사용자 노드(100)가 해야 할 일을 분담하며, 분담하여 처리한 일을 사용자 노드(100)가 효과적으로 전달받도록 동작하여, 결과적으로 콘텐츠 공유를 포함한 사용자 노드(100)의 각종 일 처리 성능 향상시킨다.
가상화 노드(200, 300)는 가상화를 지원하는 물리적 노드를 이용하여 생성된다. 사용자 노드(100)는 가상화 노드(200, 300)와 연결되어 자신이 직접 참여하지 않은 노드 집합(20)에서 공유되는 콘텐츠를 획득한다. 이때 가상화를 지원하는 물리적 노드는 일종의 자원 풀(resource pool)로서, 미리 일정 지역에 설치되어 가상화를 위한 자원을 제공한다. 가상화란 물리적 자원을 여러 사용자가 동시에 사용하고 있음에도 불구하고 혼자서 전체 자원을 사용하고 있는 것처럼 느끼도록 해주는 기술이다. 예를 들어, 컴퓨팅 자원을 가상화하여 제공하면 컴퓨팅 가상화라고 할 수 있고, 대역폭과 같은 네트워킹 자원을 가상화하여 제공하면 네트워크 가상화라 할 수 있다.
이러한 P2P 파일 공유 네트워크는 다양할 수 있는데, 예를 들면 비트토렌트(BitTorrent) 네트워크일 수 있다. 비트토렌트 네트워크는 스웜(swarm)이라고 하는 노드들의 집합(10, 20)으로 구성된다. 각 스웜(10, 20)의 노드(11-13, 21-25)는 스웜안에서 콘텐츠를 공유한다. 스웜에 참여하고 싶은 사용자 노드(100)는 웹사이트로부터 트래커(tracker)에 대한 정보를 얻고, 트래커로부터 관련 콘텐츠를 공유하고 있는 노드들의 정보를 제공받는다. 스웜(10)에 참여한 사용자 노드(100)는 노드(11-13)로부터 원하는 콘텐츠를 획득하는데, 각 노드(11-13)와 파일을 주고 받는(give-and-take) 방식의 TFT(tit-for-tat) 메커니즘을 따를 수 있다. 그리고 사용자 노드(100)는 콘텐츠를 구성하는 전체 청크 중에서 희귀한 청크를 우선적으로(rarest-first) 선택할 수 있다.
도 2는 본 발명의 한 실시예에 따른 가상화 노드의 개념을 설명하는 도면이다.
도 2를 참고하면, 사용자 노드(100)는 가상화를 지원하는 물리적 노드(400)를 이용하여 가상화 노드(200, 300)를 생성한다. 사용자 노드(100)는 자신이 직접 참여하지 않은 스웜인 노드 집합(20)에 가상화 노드(200)를 설치하여 노드(21-25)가 보유한 청크를 얻을 수 있다. 또한 사용자 노드(100)는 가상화 노드(200)와의 네트워크 대역폭을 보장하도록 가상화 노드(200)와 가상화 링크(30)로 연결되는 네트워크 연결용 가상화 노드(300)를 더 설치할 수 있다.
가상화를 지원하는 물리적 노드(400)는 일종의 자원 풀(resource pool)로서, 미리 일정 지역에 설치되어 가상화를 위한 자원을 제공한다. 물리적 노드(400)는 컴퓨팅 자원(410)과 네트워킹 자원(430)을 가상화 노드(200, 300)에 제공할 수 있다.
이와 같이 사용자 노드(100)는 가상화를 지원하는 물리적 노드(400)로부터 생성된 가상화 노드(200, 300)를 통해 직접 연결되기 어려운 다른 스웜(20)의 노드(21-25)와 연결될 수 있다.
도 3은 본 발명의 한 실시예에 따른 가상화 노드를 이용한 콘텐츠 공유 방법의 흐름도이다.
도 3을 참고하면, 콘텐츠(A)를 공유하는 노드 집합(10)에 참여한 사용자 노드(100)는 같은 콘텐츠(A)를 공유하는 다른 노드 집합(20)에 가상화 노드(200)를 생성한다(S310). 가상화 노드(200)는 물리적 노드(400)의 컴퓨팅 자원(410)과 네트워킹 자원(430)을 이용한다. 사용자 노드(100)는 노드 집합을 관리하는 서버로부터 필요한 노드 집합 정보를 얻을 수 있다. 이때, 사용자 노드(100)는 물리적 자원을 고려하여 가상화 노드(200)를 생성한다. 즉, 사용자 노드(100)는 자원이 여유가 있으면, 적어도 하나의 가상화 노드(200)를 설치하여 자신의 다운로드 성능을 높일 수 있다. 이 경우, 사용자 노드(100)는 두 노드 집합(10, 20)에서 동시에 청크를 다운로드하므로 가상화 노드(200)를 설치하지 않은 경우에 비해 일을 빨리 처리할 수 있다. 그러나, 자원이 부족하면, 사용자 노드(100)는 가상화 노드(200)를 설치할 필요가 있는지 판단하여 설치할 수 있다. 예를 들면, 사용자 노드(100)는 자신이 참여한 노드 집합(10)에서 완벽한 콘텐츠(A)를 얻을 수 있는지에 따라 가상화 노드(200)를 생성할 수 있다. 구체적으로 사용자 노드(100)는 노드(11-13) 중에서, 콘텐츠(A)의 전체 청크를 보유한 시드(seed) 노드가 없거나, 노드(11-13)가 보유한 청크 집합으로 전체 청크를 구성하지 못할 가능성이 있는 것으로 판단되면 다른 노드 집합(20)에 가상화 노드(200)를 생성할 수 있다.
사용자 노드(100)는 가상화 노드(200)가 노드 집합(20)에서 공유되는 콘텐츠(A)를 다운로드하도록 가상화 노드(200)를 제어한다(S320). 사용자 노드(100)는 자신이 다운로드하는 청크와 가상화 노드(200)가 다운로드하는 청크가 겹치지 않도록 청크 확보에 관한 규칙을 정한다. 사용자 노드(100)는 가상화 노드(200)가 노드 집합(20)에서 다운로드할 콘텐츠의 청크를 선택하여, 선택한 청크를 다운로드하도록 가상화 노드(200)로 제어 명령을 보낸다. 가상화 노드(200)가 다운로드할 청크를 선택하는 규칙은 다양할 수 있는데, 예를 들면 노드 집합(10)에서 콘텐츠(A)를 구성하는 청크의 희귀성(rareness)을 기초로 노드 집합(20)에서 다운로드할 청크를 선택할 수 있다. 그리고 사용자 노드(100)는 노드 집합(20)에서 다운로드한 청크 목록을 알리도록 가상화 노드(200)로 제어 명령을 보낼 수 있다.
사용자 노드(100)는 가상화 노드(200)가 다운로드한 콘텐츠를 전달받는다(S330). 이때 사용자 노드(100)는 가상화 노드(200)와 네트워크 연결을 위한 가상화 노드(300)를 생성하여, 가상화 노드(200)와 연결된 가상화 노드(300)를 통해 다운로드한 콘텐츠를 전달받을 수 있다. 다운로드용 가상화 노드(200)와 네트워크 연결용 가상화 노드(300)는 일정 대역폭의 가상화 링크로 연결된다.
이와 같이 사용자 노드(100)는 노드 집합(10)에서 다운로드한 청크와 가상화 노드(200)가 노드 집합(20)에서 다운로드한 청크를 조합하여 콘텐츠(A)의 전체 청크를 획득하면, 콘텐츠(A)의 다운로드를 완료한다. 만약, 두 노드 집합(10, 20)에서 콘텐츠(A)의 전체 청크를 획득하지 못하거나, 획득할 가능성이 낮은 경우, 또 다른 노드 집합에 가상화 노드를 추가할 수 있다. 이때 사용자 노드(100)는 비트토렌트 파일 공유 네트워크에 참여하는 노드일 수 있다.
도 4는 본 발명의 다른 실시예에 따른 가상화 노드를 이용한 콘텐츠 공유 방법의 흐름도이다.
도 4를 참고하면, 비트토렌트 파일 공유 네트워크에서 사용자 노드(100)는 콘텐츠(A)를 공유하는 노드 집합인 스웜(10)에 참여한다(S410).
사용자 노드(100)는 물리적 노드(400)의 자원을 기초로 콘텐츠(A)를 공유하는 다른 스웜(20)에 스웜(20)의 피어 노드로 동작하는 다운로드용 가상화 노드(200)를 설치한다(S420). 사용자 노드(100)는 노드 집합을 관리하는 서버인 트래커로부터 이웃한 스웜 정보를 얻을 수 있다. 사용자 노드(100)는 물리적 자원을 고려하여 가상화 노드(200)를 생성한다. 즉, 사용자 노드(100)는 자원이 여유가 있으면, 적어도 하나의 가상화 노드(200)를 설치하여 자신의 다운로드 성능을 높일 수 있다. 그러나, 자원이 부족하면, 사용자 노드(100)는 콘텐츠 비가용성을 판단하여 가상화 노드(200)를 설치할 필요가 있는 경우 설치할 수 있다.
사용자 노드(100)는 물리적 노드(400)의 자원을 기초로 스웜(20)과의 네트워크 연결을 위한 네트워크 연결용 가상화 노드(300)를 설치한다(S430). 다운로드용 가상화 노드(200)와 네트워크 연결용 가상화 노드(300)는 일정 대역폭의 가상화 링크로 연결된다.
사용자 노드(100)는 가상화 노드(200)가 스웜(20)에서 콘텐츠(A)를 구성하는 일부 청크를 다운로드하도록 다운로드용 가상화 노드(200)를 제어한다(S440). 사용자 노드(100)는 가상화 노드(200)가 다운로드하는 청크와 겹치지 않도록 청크 확보에 관한 규칙을 정한다. 비트토렌트에서 사용자 노드(100)는 콘텐츠를 구성하는 전체 청크 중에서 희귀한 청크를 우선적으로(rarest-first) 선택하도록 가상화 노드(200)로 제어 명령을 보낸다.
사용자 노드(100)는 다운로드용 가상화 노드(200)가 다운로드한 청크를 네트워크 연결용 가상화 노드(300)를 통해 전달받는다(S450).
사용자 노드(100)는 스웜(10)에서 다운로드한 청크와 다운로드용 가상화 노드(200)가 다운로드한 청크를 조합한다(S460).
조합한 결과, 콘텐츠(A)의 전체 청크를 획득하지 못하는 경우, 사용자 노드(100)는 콘텐츠(A)를 공유하는 다른 스웜에 다운로드용 가상화 노드를 추가한다(S470).
사용자 노드(100)는 추가한 다운로드용 가상화 노드가 다운로드한 청크를 전달받는다(S480).
도 5는 본 발명의 한 실시예에 따른 가상화 노드를 생성하는 방법의 흐름도이다.
도 5를 참고하면, 사용자 노드(100)는 물리적 자원을 고려하여 가상화 노드(200)를 생성한다. 사용자 노드(100)는 자원이 여유가 있으면, 노드 집합(10)에 참여한 후, 같은 콘텐츠(A)를 공유하는 노드 집합을 탐색하여 적어도 하나의 가상화 노드(200)를 설치할 수 있다. 그러나, 가상화 노드를 설치할 물리적 자원이 부족하면, 사용자 노드(100)는 가상화 노드(200)를 설치할 필요가 있는지 판단하여 설치할 수 있다.
가상화 노드를 설치할 물리적 자원이 부족한 경우, 사용자 노드(100)는 콘텐츠(A)를 구성하는 전체 청크 중 노드 집합(10)에서 공유되는 공유 청크를 확인한다(S510). 사용자 노드(100)는 노드(11-13)와 정보, 예를 들면 비트맵(BitMap, BM)을 주기적으로 교환하여 노드(11-13)가 보유한 청크를 체크한다.
사용자 노드(100)는 공유 청크를 기초로 노드 집합(10)에서 콘텐츠(A) 다운로드를 완료할 수 있는지 판단한다(S520). 즉, 사용자 노드(100)는 노드 집합(10)에서 콘텐츠의 모든 청크를 얼마나 안정적으로 다운로드할 수 있는지 나타내는 정보인 콘텐츠 가용성(availability)을 판단한다. 예를 들면, 사용자 노드(100)는 노드(11-13) 중에서, 콘텐츠(A)의 전체 청크를 보유한 시드 노드가 없거나, 노드(11-13)가 보유한 청크 집합으로 전체 청크를 구성하지 못할 가능성이 있는 것으로 판단되면 다른 노드 집합(20)에 가상화 노드(200)를 생성할 수 있다.
노드 집합(10)에서 콘텐츠(A) 다운로드를 완료할 수 없다고 판단된 경우, 사용자 노드(100)는 콘텐츠(A)를 공유하는 다른 노드 집합(20)에 가상화 노드(200)를 설치한다(S530). 사용자 노드(100)는 노드 집합을 관리하는 서버인 트래커로부터 같은 콘텐츠(A)를 공유하는 이웃한 노드 집합 정보를 얻을 수 있다. 사용자 노드(100)는 선택한 노드 집합(20)에 가상화 노드(200)를 참여시킨다. 그리고 사용자 노드(100)는 가상화 노드(200)와 연결한다.
이렇게 설치된 가상화 노드(200)는 노드 집합(20)의 피어 노드로 동작하여, 사용자 노드(100)에 의해 선택된 청크를 노드(21-25)로부터 다운로드하고, 이를 사용자 노드(100)로 전달한다.
도 6과 도 7 각각은 본 발명의 한 실시예에 따른 가상화 노드를 제어하는 방법의 흐름도이다.
먼저 도 6을 참고하면, 사용자 노드(100)는 자신이 다운로드하는 청크와 가상화 노드(200)가 다운로드하는 청크가 겹치지 않도록 청크 확보에 관한 규칙을 정한다. 다운로드 할 청크를 선택 청크 확보에 관한 규칙은 다양할 수 있다.
사용자 노드(100)는 가상화 노드(200)가 노드 집합(20)에서 다운로드할 콘텐츠의 청크를 선택한다(S610). 특히 비트토렌트 파일 공유 네트워크에 참여한 노드들은 스웜안에서 가장 희귀한 청크를 우선하여 다운로드하므로 사용자 노드(100)는 청크의 희귀성(rareness)을 기초로 노드 집합(20)에서 다운로드할 청크를 선택할 수 있다. 사용자 노드(100)는 희귀한 청크를 체크하기 위해 각 노드 집합(10, 20)안에서 공유되는 청크 빈도(occurrence)를 고려할 수 있다. 사용자 노드(100)는 가상화 노드(200)에게 노드 집합(20)에서 공유되는 청크를 보고하도록 하고, 두 노드 집합(10, 20)의 청크 빈도를 기초로 가상화 노드(200)가 다운로드할 청크를 선택한다. 이때, 사용자 노드(100)는 동일한 빈도나 아직 비트필드(bitfield) 메시지에 나타나지 않는 청크는 가상화 노드(200)와 자신이 번갈아 가며 다운로드하도록 할 수 있다.
사용자 노드(100)는 선택한 청크를 다운로드하도록 가상화 노드(200)로 제어 명령을 보낸다(S620).
그리고 사용자 노드(100)는 자신이 다운로드한 청크와 가상화 노드(200)가 다운로드한 청크로 콘텐츠(A)를 획득할 수 있는지 판단한다(S630). 사용자 노드(100)는 자신과 가상화 노드(200)가 다운로드한 청크 집합이 콘텐츠 전체 청크를 포함하는지 비교한다.
판단 결과, 콘텐츠(A)를 획득하면, 사용자 노드(100)는 콘텐츠(A)의 청크 다운로드를 종료한다(S640).
판단 결과, 아직 콘텐츠(A)의 전체 청크를 획득하지 못하는 경우, 사용자 노드(100)는 단계(S610)을 반복한다.
다음 도 7을 참고하면, 사용자 노드(100)와 가상화 노드(200)는 참여한 노드 집합안에서 희귀한 청크를 우선하여 다운로드한다(S710, S720).
사용자 노드(100)는 가상화 노드(200)에게 다운로드한 청크 목록을 보고하도록 한다(S730). 이때 사용자 노드(100)는 가상화 노드(200)가 자신이 다운로드한 청크를 다운로드하지 않도록 자신이 다운로드한 청크 목록을 포함하는 제어 명령을 가상화 노드(200)로 전달한다.
가상화 노드(200)는 사용자 노드(100)에게 다운로드한 청크 목록을 보고한다(S740).
사용자 노드(100)는 가상화 노드(200)로부터 보고받은 청크를 제외한 청크를 다운로드한다(S750).
사용자 노드(100)는 가상화 노드(200)가 다운로드한 청크를 전달받는다(S760).
도 8은 본 발명의 한 실시예에 따른 사용자 노드의 개략적인 블록도이다.
도 8을 참고하면, 사용자 노드(100)는 다운로드용 가상화 노드(200)를 설치하여, 자신이 직접 참여하지 않은 노드 집합(20)으로부터 원하는 콘텐츠의 청크를 얻을 수 있다. 또한 사용자 노드(100)는 네트워크 연결용 가상화 노드(300)를 설치하여 가상화 노드(200)와 연결되는 네트워크 대역폭을 보장할 수 있다. 이를 위해 사용자 노드(100)는 콘텐츠를 공유하는 공유부(110), 가상화 노드 설치부(130), 가상화 노드 제어부(150), 그리고 가상화 노드 연결부(170)를 포함한다.
공유부(110)는 원하는 콘텐츠를 공유하는 노드 집합인 스웜(10)에 참여하여 콘텐츠를 구성하는 청크를 다운로드하여 저장하고, 저장된 청크를 참여한 스웜(10) 안에서 공유한다. 공유부(110)는 트래커로부터 공유를 위한 각종 정보를 수신한다.
가상화 노드 설치부(130)는 가상화 노드의 필요성을 판단하고, 가상화 노드를 설치한다. 가상화 노드 설치부(130)는 물리적 노드의 자원을 기초로 가상화 노드를 설치한다. 가상화 노드 설치부(130)는 물리적 노드의 자원이 부족한 경우, 콘텐츠를 구성하는 전체 청크 중 스웜(10)에서 공유되는 공유 청크의 희귀성을 기초로 가상화 노드가 필요한지 판단할 수 있다.
가상화 노드 설치부(130)는 원하는 콘텐츠를 공유하고 있는 다른 스웜(20)에 피어 노드로 동작하는 다운로드용 가상화 노드(200)를 설치한다. 그리고 가상화 노드 설치부(130)는 다운로드용 가상화 노드(200)와 네트워크 연결되는 네트워크 연결용 가상화 노드(300)를 더 설치할 수 있다.
가상화 노드 제어부(150)는 가상화 노드(200, 300)를 제어한다. 가상화 노드 제어부(150)는 다운로드용 가상화 노드(200)가 스웜(20)에서 콘텐츠를 구성하는 일부 청크를 다운로드하도록 제어한다. 이때 가상화 노드 제어부(150)는 가상화 노드(200)가 다운로드할 청크를 선택하여 가상화 노드(200)로 명령할 수 있다. 또한, 가상화 노드 제어부(150)는 가상화 노드(200)가 가상화 노드(300)로 다운로드한 청크를 전송하고, 가상화 노드(300)가 가상화 노드 연결부(170)로 가상화 노드(200)가 다운로드한 청크를 전송하도록 가상화 노드(200, 300)를 제어할 수 있다. 가상화 노드 제어부(150)는 가상화 노드 연결부(170)를 통해 제어 명령을 전송할 수 있다.
가상화 노드 연결부(170)는 가상화 노드(200)가 다운로드한 청크를 전달받는다. 가상화 노드 연결부(170)는 전달받은 청크를 공유부(110)로 전달하여 저장할 수 있다. 가상화 노드 연결부(170)는 가상화 노드(200, 300)와 연결되어, 가상화 노드(200, 300)로 제어 명령을 전송하거나, 가상화 노드(200, 300)로부터 전달된 정보를 가상화 노드 제어부(150)로 전달할 수 있다.
이와 같이 사용자 노드(100)는 공유부(110)에서 다운로드한 청크와 가상화 노드 연결부(170)에서 전달받은 청크를 조합하여 원하는 콘텐츠의 전체 청크를 획득하면, 다운로드를 완료한다.
도 9는 본 발명의 한 실시예에 따른 가상화 노드의 개략적인 블록도이다.
도 9를 참고하면, 가상화 노드(200)는 사용자 노드(100)의 성능 향상을 위해 이용되고, 사용자 노드(100)의 제어에 따라 동작하는 사용자 주도형 가상화 노드이다. 가상화 노드(200)는 사용자 노드(100)에 의해 가상화를 지원하는 물리적 노드(400)를 이용하여 콘텐츠를 공유하는 노드 집단인 스웜(20)에 설치된다. 이러한 가상화 노드(200)는 명령 수신부(210), 공유부(230), 송신부(250), 그리고 보고부(270)를 포함한다.
명령 수신부(210)는 사용자 노드(100)로부터 제어 명령을 수신한다.
공유부(230)는 제어 명령에 따라 스웜(20)에 참여하여 스웜(20)의 피어 노드로부터 콘텐츠를 구성하는 청크를 다운로드한다. 공유부(230)는 사용자 노드(100)가 정한 청크 확보에 관한 규칙에 따라 다운로드한다. 사용자 노드(100)가 지정한 청크를 우선적으로 다운로드할 수 있다.
송신부(250)는 제어 명령에 따라 다운로드한 청크를 사용자 노드(100)로 전달한다. 이때 송신부(250)는 다운로드한 청크를 제어 명령이 지정하는 가상화 노드(300)로 전달할 수 있다.
보고부(270)는 제어 명령에 따라 스웜(20)에서 공유되는 청크 정보와 공유부(230)에서 다운로드한 청크 목록을 사용자 노드(100)로 보고한다.
이때 명령 수신부(210) 및 보고부(270)는 청크가 전달되는 송신부(250)와 다른 채널로 연결되어 항상 사용자 노드(100)와 연결될 수 있다.
이와 같이 사용자 노드(100)는 가상화를 통해 생성된 가상화 노드(200)를 이용하여 직접 참여하지 않은 노드 집합의 콘텐츠를 공유하기 때문에 직접 참여한 노드 집합에서만 콘텐츠를 공유할 때보다 빨리 원하는 콘텐츠를 확보할 수 있다. 그리고, 사용자 노드(100)는 직접 참여한 노드 집합에서 원하는 청크를 확보하기 어렵더라도 가상화 노드(200)를 다른 노드 집합에 참여시켜 콘텐츠 비가용성 문제를 해결할 수 있다. 또한 사용자 노드(100)는 가상화 노드(300)를 이용하여 노드 사이의 네트워크 성능을 향상시킬 수 있다.
지금까지 사용자 노드(100)가 하는 일의 한 종류인 콘텐츠 공유를 예로 들어 사용자 노드(100)가 가상화 노드(200, 300)를 설치하여 일을 분담시키는 방법을 설명하였다. 따라서, 사용자 노드(100)는 콘텐츠 공유뿐만 아니라 자신이 할 일을 분담하고, 분담하여 처리한 일을 효과적으로 전달받기 위해 가상화 노드(200, 300)를 설치하여 자신의 일 처리 성능 높인다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (29)

  1. 콘텐츠를 공유하는 제1 노드 집합에 참여하는 사용자 노드가 제2 노드 집합에서 공유되는 상기 콘텐츠를 공유하는 방법으로서,
    가상화를 지원하는 물리적 노드를 이용하여 상기 제2 노드 집합에 참여하는 상기 사용자 노드의 제1 가상화 노드를 생성하는 단계,
    상기 제1 가상화 노드가 상기 제2 노드 집합에서 공유되는 상기 콘텐츠를 다운로드하도록 상기 제1 가상화 노드를 제어하는 단계, 그리고
    상기 제1 가상화 노드로부터 상기 제1 가상화 노드가 다운로드한 콘텐츠를 전달받는 단계
    를 포함하는 가상화 노드를 이용한 콘텐츠 공유 방법
  2. 제1항에서,
    상기 제1 가상화 노드와 네트워크 연결을 위한 제2 가상화 노드를 생성하는 단계를 더 포함하며,
    상기 제1 가상화 노드가 다운로드한 콘텐츠를 전달받는 단계는
    상기 제1 가상화 노드와 연결된 상기 제2 가상화 노드를 통해 상기 다운로드한 콘텐츠를 전달받는 가상화 노드를 이용한 콘텐츠 공유 방법.
  3. 제2항에서,
    상기 제2 가상화 노드를 생성하는 단계는
    상기 제1 가상화 노드와 일정 대역폭의 가상화 링크로 연결되는 상기 제2 가상화 노드를 생성하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  4. 제1항에서,
    상기 제1 가상화 노드를 제어하는 단계는
    상기 제2 노드 집합에서 다운로드할 콘텐츠의 청크를 선택하는 단계, 그리고
    선택한 청크를 다운로드하도록 상기 제1 가상화 노드로 제어 명령을 보내는 단계
    를 포함하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  5. 제4항에서,
    상기 다운로드할 콘텐츠의 청크를 선택하는 단계는
    상기 제1 노드 집합에서 상기 콘텐츠를 구성하는 청크의 희귀성을 기초로 상기 제2 노드 집합에서 다운로드할 청크를 선택하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  6. 제1항에서,
    상기 제1 가상화 노드를 생성하는 단계는
    상기 물리적 노드의 여유 자원 여부를 기초로 상기 제1 가상화 노드를 생성하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  7. 제6항에서,
    상기 제1 가상화 노드를 생성하는 단계는
    상기 물리적 노드의 여유 자원이 부족한 경우, 상기 제1 노드 집합에서 상기 콘텐츠를 구성하는 전체 청크 중에서 공유되는 공유 청크를 확인하는 단계,
    상기 공유 청크를 기초로 상기 제1 노드 집합에서 상기 콘텐츠 다운로드를 완료할 수 있는지 판단하는 단계, 그리고
    상기 콘텐츠 다운로드를 완료할 수 없는 경우, 상기 콘텐츠를 공유하는 상기 제2 노드 집합에 상기 제1 가상화 노드를 설치하는 단계
    를 포함하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  8. 제7항에서,
    상기 콘텐츠 다운로드를 완료할 수 있는지 판단하는 단계는
    상기 공유 청크가 상기 콘텐츠를 구성하는 전체 청크를 포함하지 않으면, 상기 콘텐츠 다운로드를 완료할 수 없는 경우로 판단하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  9. 제7항에서,
    상기 콘텐츠 다운로드를 완료할 수 있는지 판단하는 단계는
    상기 콘텐츠를 구성하는 전체 청크를 보유하는 시드 노드가 상기 제1 노드 집합에 없으면, 상기 콘텐츠 다운로드를 완료할 수 없는 경우로 판단하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  10. 제1항에서,
    상기 제1 가상화 노드를 생성하는 단계는
    상기 물리적 노드의 컴퓨팅 자원과 네트워킹 자원을 이용하여 상기 제1 가상화 노드를 생성하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  11. 비트토렌트 파일 공유 네트워크에서 사용자 노드가 가상화 노드를 이용하여 콘텐츠를 공유하는 방법으로서,
    피어(peer) 노드끼리 같은 콘텐츠를 공유하는 제1 스웜에 참여하는 단계,
    물리적 노드의 자원을 기초로 상기 제1 스웜과 같은 상기 콘텐츠를 공유하는 제2 스웜에 상기 제2 스웜의 피어 노드로 동작하는 다운로드용 가상화 노드를 설치하는 단계,
    물리적 노드의 자원을 기초로 상기 제2 스웜과의 네트워크 연결을 위한 네트워크 연결용 가상화 노드를 설치하는 단계,
    상기 다운로드용 가상화 노드가 상기 제2 스웜에서 상기 콘텐츠를 구성하는 일부 청크를 다운로드하도록 상기 다운로드용 가상화 노드를 제어하는 단계,
    상기 다운로드용 가상화 노드가 다운로드한 청크를 상기 네트워크 연결용 가상화 노드를 통해 전달받는 단계, 그리고
    상기 제1 스웜에서 다운로드한 청크와 상기 다운로드용 가상화 노드가 다운로드한 청크를 조합하는 단계
    를 포함하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  12. 제11항에서,
    상기 다운로드용 가상화 노드를 설치하는 단계는
    상기 제1 스웜에서 상기 콘텐츠를 구성하는 전체 청크 중에서 공유되는 공유 청크를 확인하는 단계,
    상기 공유 청크를 기초로 상기 제1 스웜에서 상기 콘텐츠 다운로드를 완료할 수 있는지 판단하는 단계, 그리고
    상기 콘텐츠 다운로드를 완료할 수 없는 경우, 상기 제2 스웜에 상기 다운로드용 가상화 노드를 생성하는 단계
    를 포함하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  13. 제11항에서,
    상기 네트워크 연결용 가상화 노드를 설치하는 단계는
    상기 다운로드용 가상화 노드와 일정 대역폭의 가상화 링크로 연결되는 상기 네트워크 연결용 가상화 노드를 설치하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  14. 제11항에서,
    상기 다운로드용 가상화 노드를 제어하는 단계는
    상기 제2 스웜에서 다운로드할 콘텐츠의 청크를 선택하는 단계, 그리고
    선택한 청크를 다운로드하도록 상기 다운로드용 가상화 노드로 제어 명령을 보내는 단계
    를 포함하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  15. 제14항에서,
    상기 다운로드할 콘텐츠의 청크를 선택하는 단계는
    상기 제1 스웜에서의 상기 콘텐츠를 구성하는 청크의 희귀성을 기초로 상기 제2 스웜에서 다운로드할 청크를 선택하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  16. 제11항에서,
    상기 다운로드용 가상화 노드를 제어하는 단계는
    상기 다운로드용 가상화 노드가 다운로드한 청크 목록을 알리도록 상기 다운로드용 가상화 노드를 제어하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  17. 제16항에서,
    상기 다운로드용 가상화 노드가 다운로드한 청크 목록에 포함되지 않은 청크를 상기 제1 스웜의 피어 노드로부터 획득하는 단계
    를 더 포함하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  18. 제11항에서,
    상기 다운로드용 가상화 노드를 제어하는 단계는
    상기 제1 스웜에서 공유되는 상기 콘텐츠의 청크 집합과 상기 제2 스웜에서 공유되는 상기 콘텐츠의 청크 집합을 비교하여 결정한 상기 제2 스웜에서 다운로드할 청크 목록을 상기 다운로드용 가상화 노드로 전달하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  19. 제11항에서,
    상기 제1 스웜에서 다운로드한 청크와 상기 다운로드용 가상화 노드가 다운로드한 청크를 조합한 결과, 상기 제1 스웜과 상기 제2 스웜으로부터 상기 콘텐츠의 전체 청크를 획득하지 못하는 경우, 상기 콘텐츠를 공유하는 제3 스웜에 상기 제3 스웜의 피어 노드로 동작하는 다운로드용 가상화 노드를 추가하는 단계, 그리고
    상기 제3 스웜의 피어 노드로 동작하는 다운로드용 가상화 노드가 다운로드한 청크를 전달받는 단계
    를 더 포함하는 가상화 노드를 이용한 콘텐츠 공유 방법.
  20. 가상화를 지원하는 물리적 노드를 이용하여 생성한 가상화 노드를 이용하여 콘텐츠를 공유하는 사용자 노드로서,
    피어(peer) 노드끼리 같은 콘텐츠를 공유하는 스웜에 참여하여 상기 콘텐츠를 구성하는 청크를 다운로드하여 저장하고, 저장된 청크를 상기 참여 스웜 안에서 공유하는 공유부,
    가상화 노드의 필요성을 판단하고, 상기 참여 스웜이 아닌 다른 스웜에 상기 물리적 노드의 자원을 기초로 상기 다른 스웜의 피어 노드로 동작하는 다운로드용 가상화 노드를 설치하는 가상화 노드 설치부,
    상기 다운로드용 가상화 노드가 상기 다른 스웜에서 상기 콘텐츠를 구성하는 일부 청크를 다운로드하도록 상기 다운로드용 가상화 노드를 제어하는 가상화 노드 제어부, 그리고
    상기 다운로드용 가상화 노드가 다운로드한 청크를 전달받는 가상화 노드 연결부
    를 포함하는 가상화 노드를 이용하는 사용자 노드.
  21. 제20항에서,
    상기 공유부는 상기 가상화 노드 연결부가 전달받은 청크를 저장하는 사용자 노드.
  22. 제20항에서,
    상기 가상화 노드 설치부는
    상기 콘텐츠를 구성하는 전체 청크 중 상기 참여 스웜에서 공유되는 공유 청크의 희귀성을 기초로 상기 가상화 노드의 필요성을 판단하는 가상화 노드를 이용하는 사용자 노드.
  23. 제20항에서,
    상기 가상화 노드 설치부는
    상기 다운로드용 가상화 노드와 네트워크 연결되는 네트워크 연결용 가상화 노드를 더 설치하는 가상화 노드를 이용하는 사용자 노드.
  24. 제23항에서,
    상기 가상화 노드 제어부는
    상기 다운로드용 가상화 노드가 상기 네트워크 연결용 가상화 노드로 다운로드한 청크를 전송하고, 상기 네트워크 연결용 가상화 노드가 상기 가상화 노드 연결부로 상기 다운로드용 가상화 노드가 다운로드한 청크를 전송하도록 상기 다운로드용 가상화 노드와 상기 네트워크 연결용 가상화 노드를 제어하는 가상화 노드를 이용하는 사용자 노드.
  25. 제20항에서,
    상기 가상화 노드 제어부는
    상기 다른 스웜에서 다운로드할 콘텐츠의 청크를 선택하고, 선택한 청크를 다운로드하도록 상기 다운로드용 가상화 노드로 제어 명령을 보내는 가상화 노드를 이용하는 사용자 노드.
  26. 제25항에서,
    상기 가상화 노드 제어부는
    상기 참여 스웜에서의 상기 콘텐츠를 구성하는 청크의 희귀성을 기초로 상기 다른 스웜에서 다운로드할 청크를 선택하고, 상기 다운로드용 가상화 노드가 다운로드한 청크 목록을 알리도록 상기 다운로드용 가상화 노드를 제어하는 가상화 노드를 이용하는 사용자 노드.
  27. 제1 스웜에 참여한 사용자 노드에 의해 가상화를 지원하는 물리적 노드를 이용하여 제2 스웜에 설치된 가상화 노드로서,
    상기 사용자 노드로부터 제어 명령을 수신하는 명령 수신부,
    상기 제어 명령에 따라 상기 제2 스웜에 참여하여 상기 제2 스웜의 피어 노드로부터 콘텐츠를 구성하는 청크를 다운로드하는 공유부, 그리고
    상기 제어 명령에 따라 다운로드한 청크를 상기 사용자 노드로 전송하는 송신부
    를 포함하는 가상화 노드.
  28. 제27항에서,
    상기 제어 명령에 따라 상기 제2 스웜에서 공유되는 상기 콘텐츠의 청크 정보와 상기 공유부에서 다운로드한 청크 목록을 상기 사용자 노드로 보고하는 보고부
    를 더 포함하는 가상화 노드.
  29. 제27항에서,
    상기 송신부는
    다운로드한 청크를 상기 제어 명령이 지정하는 네트워크 연결용 가상화 노드로 전송하는 가상화 노드.
KR1020110077113A 2011-08-02 2011-08-02 가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법 KR101352630B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110077113A KR101352630B1 (ko) 2011-08-02 2011-08-02 가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110077113A KR101352630B1 (ko) 2011-08-02 2011-08-02 가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법

Publications (2)

Publication Number Publication Date
KR20130026578A KR20130026578A (ko) 2013-03-14
KR101352630B1 true KR101352630B1 (ko) 2014-01-17

Family

ID=48177769

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110077113A KR101352630B1 (ko) 2011-08-02 2011-08-02 가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법

Country Status (1)

Country Link
KR (1) KR101352630B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102212111B1 (ko) * 2018-05-24 2021-02-05 주식회사 네트워크디파인즈 피어 집합을 활용한 p2p 네트워크 성능 향상 방법
CN115022096B (zh) * 2022-08-09 2022-11-22 北京航天奥祥通风科技股份有限公司 下载软件方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090080051A (ko) * 2006-09-29 2009-07-23 큐리오 홀딩스, 인크. P2p 네트워크에서 가상 피어를 호스팅하는 스폰서 노드, 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090080051A (ko) * 2006-09-29 2009-07-23 큐리오 홀딩스, 인크. P2p 네트워크에서 가상 피어를 호스팅하는 스폰서 노드, 및 방법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
2010년 IEEE 논문지(Xiaowen Chen 외2인) *
2011년 IEEE 논문지(김종원 외2인) *
스톡홀롬 대학교 석사 학위 논문(2010년, ANL CAN AKAY) *

Also Published As

Publication number Publication date
KR20130026578A (ko) 2013-03-14

Similar Documents

Publication Publication Date Title
KR101386185B1 (ko) 통신 모드를 결정하고 및/또는 결정된 통신 모드를 이용하기 위한 방법들 및 장치
US9350603B2 (en) Daisy chain distribution in data centers
KR101980129B1 (ko) 관리 기능이 부여된 피투피 네트워크 시스템
US20110087783A1 (en) Allocating resources of a node in a server farm
US20060224687A1 (en) Method and apparatus for offline cooperative file distribution using cache nodes
EP3087722B1 (en) Peer-to-peer network prioritizing propagation of objects through the network
US9173006B2 (en) Method for live broadcasting in a distributed network and apparatus for the same
WO2018076765A1 (zh) 云计算系统的内容分发方法及装置、计算节点及系统
US20110246658A1 (en) Data exchange optimization in a peer-to-peer network
KR101573197B1 (ko) 피투피 기반 파일 전송 제어 방법 및 이를 위한 피투피 통신 제어 장치
CN101977236A (zh) 大文件多点分发系统
US20080313350A1 (en) Method and system of cache discovery in a peer-to-peer environment
Kim et al. Efficacy of techniques for responsiveness in a wide-area publish/subscribe system
JP2007164264A (ja) 負荷分散プログラム、負荷分散装置、サービスシステム
EP1794676A1 (en) Service discovery and provision for peer-to-peer networks of mobile devices
KR101352630B1 (ko) 가상화 노드, 가상화 노드를 설치하여 콘텐츠를 공유하는 사용자 노드, 그리고 가상화 노드를 이용한 콘텐츠 공유 방법
US20220182444A1 (en) Peer-managed content distribution network
US9544371B1 (en) Method to discover multiple paths to disk devices cluster wide
JP2007272540A (ja) データ配信方法及びデータ配信システム
Baccaglini et al. A study of an hybrid CDN–P2P system over the PlanetLab network
CN101500020A (zh) 基于点对点协议对数据块进行传送的方法和装置
US20080288447A1 (en) Methods and apparatus for improving peer efficiency
JP2018207285A (ja) 通信経路管理プログラム、通信経路管理方法、および通信経路管理装置
Zhang et al. Towards a dynamic file bundling system for large-scale content distribution
CN115242780A (zh) 文件下载方法、装置、下载管理器及可读存储介质

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
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20161219

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee