KR20060045788A - 데이터 오버레이, 자가-조직 메타데이터 오버레이 및애플리케이션 레벨 멀티캐스팅 - Google Patents

데이터 오버레이, 자가-조직 메타데이터 오버레이 및애플리케이션 레벨 멀티캐스팅 Download PDF

Info

Publication number
KR20060045788A
KR20060045788A KR1020050031660A KR20050031660A KR20060045788A KR 20060045788 A KR20060045788 A KR 20060045788A KR 1020050031660 A KR1020050031660 A KR 1020050031660A KR 20050031660 A KR20050031660 A KR 20050031660A KR 20060045788 A KR20060045788 A KR 20060045788A
Authority
KR
South Korea
Prior art keywords
node
tree
dht
nodes
data
Prior art date
Application number
KR1020050031660A
Other languages
English (en)
Other versions
KR101120847B1 (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 마이크로소프트 코포레이션
Publication of KR20060045788A publication Critical patent/KR20060045788A/ko
Application granted granted Critical
Publication of KR101120847B1 publication Critical patent/KR101120847B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Library & Information Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Small-Scale Networks (AREA)

Abstract

피어-투-피어 네트워크 내의 분산 해쉬 테이블(DHT)에 의해 정의되는 논리 공간 상의 데이터 구조로서 데이터 오버레이가 구축된다. 데이터 오버레이는 트리 노드들을 갖는 트리를 포함하며, 각각의 트리 노드들은 DHT의 논리 공간 내의 대응 DHT 노드에 매핑된 존을 갖는다. DHT의 논리 공간은 머신들에 매핑되며, 각각의 머신은 트리 노드 존들 중 하나 이상에 대응된다. 작업이 그 작업의 요구를 충족시키는 머신들의 개별 능력에 따라 피어-투-피어 네트워크 내의 머신들에 의해 수행되도록, 트리 노드들은 트리 노드 크기 및 가용 자원에 의해 계층적으로 배치된다. 기초 DHT와 동일한 스케일 상에서 자가-조직되고 자가-치유되는 트리는, 트리 노드들의 계층구조를 사용하여 정보를 DHT 노드들로부터 취합하고 그것들을 유포하는데 사용된다.
논리 공간, 데이터 구조, 데이터 오버레이, 트리, 노드, 존, 피어, 머신, 해시 테이블, 분산 해시 테이블

Description

데이터 오버레이, 자가-조직 메타데이터 오버레이 및 애플리케이션 레벨 멀티캐스팅{DATA OVERLAY, SELF-ORGANIZED METADATE OVERLAY, AND APPLICATION LEVEL MULTICASTING}
도 1은 종래의 피어-투-피어(P2P) 시스템을 나타내는 도면.
도 2는 종래의 CAN 라우팅 전략을 나타내는 도면.
도 3은 종래의 CHORD 라우팅 전략을 나타내는 도면.
도 4는 로컬 머신 환경의 컨텍스트에서 데이터 구조의 두 객체를 링크하기 위한 종래기술을 나타내는 도면.
도 5는 P2P 분산 해시 테이블(DHT) 환경에서 데이터 구조의 두 객체를 링크하기 위한 예시기술을 나타내는 도면으로서, 두 객체는 P2P DHT 환경의 두개의 상이한 노드와 관련되고, 링크 기술은 DHT의 "상부"에 배치된 데이터 오버레이의 기본을 형성한다.
도 6은 링, 존, 및 각 사이드에 r 개의 이웃을 기록하는 기본 라우팅 테이블을 포함하는 단순한 P2P DHT를 나타내는 도면으로서, 해싱은 DHT 노드에 존을 할당한다.
도 7은 도 5에 도시된 데이터 오버레이의 개념을 사용하여 구축된 예시적인 트리 구조를 나타내는 도면으로서, 트리 구조는 자가-조직 메타데이터 오버레이 (SOMO)라고 한다.
도 8a 내지 8c는 상향식으로 SOMO를 구축하기 위한 프로세스의 순차적인 개략 도면으로서, 도 8a는 기준 프레임으로서 논리 트리를 구축하는 것을 나타내는 도면이고, 도 8b는 대표적인 가상 노드를 조사하는 것을 나타내는 도면이고, 도 8c는 물리적 머신으로 논리 트리를 매핑하는 것을 나타내는 도면이다.
도 9a 내지 9c는 도 8c에 도시된 상향식 SOMO를 치유하기 위한 자가-조정 프로세스의 순차적인 개략 도면으로서, 도 9a는 도 8c에 도시된 상향식 SOMO를 나타내는 도면이고, 도 9b는 물리적 머신을 추가하는 것을 나타내는 도면이고(대응하는 대표적인 가상 노드가 물리적 머신을 위한 논리 트리에서 발견됨), 도 9c는 모든 물리적 머신으로 교정된 논리 트리를 매핑하는 것을 나타내는 도면이다.
도 10a는 집합적으로 자원 풀을 만들기 위한 자원 풀링 및 상향식 SOMO에 대한 DHT의 성능의 결합을 나타내는 도면.
도 10b는 P2P 시스템의 참가자로부터의 정보의 수집 및 P2P 시스템의 참가자로의 정보의 유포에 대한 도 7의 SOMO 트리 구조의 예시적인 애플리케이션을 나타내는 도면.
도 11a는 애플리케이션 레벨 멀티캐스팅을 위한 개략적인 구성을 나타내는 도면이고, 도 11b는 자원 풀의 헬퍼 노드를 사용함으로써 도 11a에 도시된 구성이 향상되는 것을 나타내는 도면이다. 여기서, 원은 애플리케이션 레벨 멀티캐스팅 세션의 원래의 구성원을 나타내고, 사각형은 큰 차수를 갖는 사용가능한 피어를 나타낸다.
도 12는 단일의 애플리케이션 레벨 멀티캐스팅 세션을 스케줄링하기 위한 SOMO 보고 구조를 나타내는 도면으로서, 각 노드는 SOMO에게 그들의 보고 내의 대역폭 제한 뿐만 아니라 그들의 네트워크 좌표를 알린다.
도 13은 P2P 시스템의 참가자를 구현하는 데에 사용되는 예시적인 컴퓨터를 나타내는 도면으로서, P2P 시스템은 그 DHT의 상부에 구축된 데이터 오버레이를 포함한다.
본 발명은 피어-투-피어(peer-to-peer) 시스템과 상호작용하는 데이터 구조를 이용하고, 또 애플리케이션 레벨의 멀티캐스팅(application level multicasting, ALM)을 갖는 기술을 사용하기 위한 기술 및 분산 데이터 구조(distributed data structure)에 관련되어 있다.
피어-투-피어(P2P) 시스템은, 동일하거나 유사한 능력 및 책임을 갖는 참가 머신을 연결하는 네트워크를 사용한다. 이러한 시스템은 종래의 서버에 의한 조정없이(또는 서버에 의한 최소의 설정 조정으로) 작업을 수행한다. 예를 들면, 도 1은 P2P 시스템(100)에 대한 상위 수준의 묘사를 도시한다. 시스템(100)은 동일하거나 유사한 능력 및 책임을 갖는 피어 엔티티(102-112)의 집합을 포함한다. 일 예시에서, 피어 엔티티(102-110)는 인터넷 또는 인트라넷을 통해 함께 연결된 독립된 개인용 컴퓨터 장치에 해당할 수 있다. 피어 엔티티(102-110)는 그들 간에(예 시 통신 경로 114로써 지시되는 대로) 파일 또는 다른 정보를 서버의 도움없이 직접 전송할 수 있다. P2P 시스템에 대한 일반적인 소개는, 2002년 HP Lab에서 D. S. Milojicic, V. Kalogeraki, R. Lukose, K. Nagaraja, J. Pruyne, B. Richard, S. Rollins, 및 Z. Xu.가 발표한 기술보고서 제 HPL-2002-57호의 "Peer-To-Peer Computing" 에서 찾을 수 있다.
P2P 시스템은 시스템 내에서 참가 피어 엔티티로부터 객체의 저장 및 추출을 용이하게 하기 위해서 일반적으로 분산 해시 테이블(ditributed hash table, DHT)을 사용한다. 이름이 암시하는 바대로, 분산 해시 테이블(DHT)은, 별개의 컴퓨터 장치에 연결된 복수의 저장소에 걸쳐 분산된 것과 같이 복수의 장소에 걸쳐 분산되어 있는 해시 테이블을 지칭한다. 분산 해시 테이블은 개별적으로 할당된 ID를 갖는 복수의 DHT 노드를 지정한다. DHT 노드는 추상 DHT 논리 공간(abstract DHT logical space)을 집합적으로 정의한다. 키를 생산하는 해시 함수(hashing function)에 객체를 위임함으로써, 객체는 DHT 논리 공간으로 삽입되거나, DHT 논리공간으로부터 추출될 수 있다. 다음, 이 키는 객체를 수용하거나, 그로부터 객체가 추출될 수 있는 DHT 논리 공간에서 특정 목표 노드 ID의 위치를 찾는데 사용된다. 즉, 각 DHT 노드는 키의 어떤범위와 연관되어 있다; 객체는 그 객체의 키가 특정 DHT 노드와 연관된 키의 범위 내로 떨어지는지 여하에 따라 그 특정 DHT 노드에 추가되거나, 그로부터 추출될 수 있다. 비-분산 해시 테이블 구현과는 다르게, DHT 노드는 자유롭게 DHT 논리 공간에 합류하고, DHT 논리 공간을 떠날 수 있어서(예컨대, P2P 시스템에 합류 및 시스템을 떠나는 컴퓨터 장치에 각각 해당함), 이러 한 사건을 이끌어 내기 위해서는 기능성이 제공되어야 한다
P2P 시스템에서 객체의 저장 및 추출을 관리하기 위해서 다양한 종류의 DHT 전략이 개발되어 왔다. 도 2는 콘텐츠 어드레서블 네트워크(Content Addressable Network(CAN)) 전략을 도시하는데, 예를 들면, 2001년 8월 미국 캘리포니아주 샌디에고에서 열린 ACM SigComm 2001에서 S. Ratnasamy, P. Francis, M. Handley, R. Karp, 및 S. Shenker가 발표한, "Scalable Content-Addressable Network"에 기술된 내용을 들 수 있다. 이 전략은, D-차수 직교 공간(D-dimensional Cartesian space)(200)으로서 DHT 논리 공간을 모델링한다. 노드가 DHT 공간(200)에 합류할 때, CAN 전략은 공간(200)을 분할한다. 예를 들면, 노드(n1)가 합류할 때, CAN 전략은 전체 공간(200)을 이 노드로 할당한다. 노드(n2)가 합류할 때, CAN 전략은 공간(200)을 두 개의 반(two halves)으로 나눈 후, 각 반을 노드(n1) 및 노드(n2)에 각각 할당한다. 노드(n3)가 합류할 때, CAN 전략은 우반(the right half)을 상부 4분의 1(upper quarter) 및 하부 4분의 1(lower quarter)로 나누고, 상부 4분의 1을 노드 n2에 하부 4분의 1을 노드(n3)에 할당한다. 그리고, 노드(n4)가 합류할 때, CAN 전략은 하부 우 4분의 1을 좌 8분의 1(노드(n3)에 할당됨) 및 우 8분의 1(노드(n4)에 할당됨)로 나눈다. 이 절차는 추가 및 제거되고 있는 노드를 설명하기 위한 필요에 따라 얼마든지 반복될 수 있다. 결과로 나타난 분할부는, 분산 해시 테이블 내로 및 그로부터 객체를 삽입 및 추출하는데 사용되는 논리 공간의 경계를 정한다. 노드는 그의 공간에 위치하는 객체를 "소유"한다고 언급될 수 있다.
도 3은 CHORD(예컨대, 2001년 8월 미국 캘래포니아주 샌디에고서 열린 ACM SigComm 2001에서 I. Stoica, R. Morris, D. Karger, M.F. Kaashoek, 및 H. Balakrishnan이 발표한, "Chord: a Scalable Peer-To-Peer Lookup Service for Internet Applications"에 기술되어 있는)로 지칭되는 또 다른 전략을 도시한다. 이 전략에서, DHT 논리 공간은 원형 공간(300)으로 구조화되어 있다. DHT 노드는 ID를 할당받은 후, 그 할당된 ID에 기초하여 원형 DHT 논리 공간(300)에 추가된다. 예를 들면, 도 3에 도시된 예시 DHT 노드(n1, n2, n3, n4 및 n5)는 원형 DHT 논리 공간(300) 상에 그들의 "위치"를 지배하는 할당된 ID를 갖는다. 도 2의 경우와 마찬가지로, DHT 노드는 그들이 추가될 때, DHT 논리 공간(300)을 분할하며, 복수의 부분공간(subspace) 또는 존(zone)의 경계가 정해진다. 이러한 존은 각 노드가 "소유"하는 객체를 정의한다. 예를 들면, 도 3에 도시된 DHT 전략에 의해 지배되는 분산 해시 테이블로 객체를 삽입하기 위해서, 객체는 키를 생산하는 해시 함수로 위임된다. 다음, 객체는 그 키가 할당된 존을 포함하는 DHT 노드(예컨대, 그 객체의 키를 포함하는 어떤 키의 범위를 둘러싸는 DHT 노드)에 저장된다. 도 2및 도 3 두 경우 모두에 있어서, P2P 시스템 내 특정 노드를 빠르게 찾기 위해서 다양한 룩업(lookup) 전략이 사용될 수 있다. 일반적으로, 룩업 전략은 요구되는 목표 DHT 노드 상에서 좁히기 위해 DHT 논리 공간에서 수 개의 "홉(hop)"을 만드는 것을 포함한다. 이러한 탐색 속도를 촉진시키기 위하여 일반적으로 다양한 메커니즘이 제공된다. 예를 들면, CHORD 전략에서 각 DHT 노드는 다른 DHT 노드 집합의 ID를 저장한다. 이러한 다른 ID는 논리 공간(300) 속을 정밀 검사하는 소위 "핑거(finger)"를 설정하면서 지수적으로 증가할 수 있다. 이것은 룩업 절차가 요 구되는 DHT 노드의 위치를 작은 개수의 홉으로써 빨리 찾게 한다.
도 2 및 3은 두 개의 공지된 예시 DHT 라우팅 전략에 대해 단지 상위 수준의 개요를 제공한다. 다른 전략이 많이 있다. 예를 들면, 인기 있는 라우팅 전략의 또 다른 하나로, 2001년 11월 독일 하이델베르그에서 열린 제 18회 FIFP/ACM International Conference on Distributed Systems Platforms (Middleware)에서 A. Rowstron과 P. Druschel이 발표한, "Pastry: Scalable, Distributed Object Location and Routing for Large-Scale Peer-To-Peer Systems"에 기술된 PASTRY 라우팅 전략을 들 수 있다.
P2P 시스템은 종래의 클라이언트-서버 전략에 비해 많은 혜택을 제공한다. 예를 들면, P2P 시스템은 중앙의 조정없이 자동적으로 자유롭게 확장 및 축소할 수 있는 능력이 있다. 그러나, 이렇게 관리 조정이 부족한 점은 또한, 다양한 도전을 야기한다. 예를 들면, 어떤 글로벌 기능을 수행하기 위해서 P2P 시스템이 일제히 동작하게 하는 것이 바람직할 수 있다. 다양한 경우에 있어서, P2P 시스템의 참가자로부터 데이터를 수집하는 것이 바람직할 수 있다. 또는, P2P 시스템에 있는 참가자들에게 정보를 유포하는 것이 바람직할 수 있다. 클라이언트-서버 접근 방식에서는, 서버는 그 클라이언트로부터 정보를 취합하도록 하기 위해서 단순히 그의 클라이언트에게 폴링하거나, 그 클라이언트에게 정보를 유포하기 위해서 그의 클라이언트에게 정보를 방송할 수 있다. 그러나, 데이터 수집 및 유포는 P2P 시스템에서는 좀 더 문제가 되는데, 왜냐하면 P2P 시스템은 상호연결된 피어가 자유롭게 오고 갈 수 있도록 느슨한 연합에 의해 형성되어 있기 때문이다. 종래의 중앙형 보 고 기능(reporting functionality)을 추가하는 것은, P2P 시스템을 복잡하게 하여 그 융통성이나 이용성을 축소하는 결과가 된다.
따라서, P2P DHT와 상호작용하기 위한 효율적인 전략 분야에서는, 예를 들면, 그 참가자로부터 데이터를 취합하고 그 참가자에게 정보를 유포하는 것이 가능하도록 하는 예시적인 요구가 있다. 나아가, 효율적으로 P2P DHT를 편성하고, 애플리케이션 레벨의 멀티캐스팅 동작에서와 같이, 그 효율성으로부터 혜택을 얻을 동작에서 P2P DHT와 상호작용하는 것이 요구될 수 있다.
일 예시 구현에 따르면, 데이터 오버레이를 구축하기 위한 방법이 기술된다. 상기 방법은 피어-투-피어 시스템 속으로 및 시스템으로부터 객체를 삽입하고 추출하는 것을 지배하는 분산 해시 테이블(DTH)의 제공을 포함하는데, 여기에서 분산 해시 테이블은, 관련된 복수의 DHT 존을 포함하는 DHT 노드를 복수 포함하는 논리 공간을 포함한다. 상기 방법은 또한, 데이터 구조 내에 있는 객체를 DHT 노드에 연관시킴으로써 또, 데이터 구조 내에 있는 객체들 간 링크를 설정시킴으로써 분산 해시 테이블의 논리 공간 상부에 데이터 구조로서 데이터 오버레이를 구축하는 것을 포함한다. 데이터 오버레이는 트리 토폴로지를 갖는데, 트리는 개별적인 DHT 노드와 연관된 트리 노드를 갖는다. 각 트리 노드는, 분산 해시 테이블에 대한 논리 공간의 일부에 해당하는 것과 연관된 개별적인 트리 노드 존을 갖는다.
머신은 DHT의 논리 공간으로 매핑된다(mapped). 각 머신은 하나 이상의 트리 토드 존에 해당한다. 각 머신은, 그 머신에 해당하는 하나 이상의 트리 노드 존으로부터 가장 큰 크기의 트리 노드 존을 그의 대표 노드(representative node)로서 선택한다. 각 대표 노드는, 그의 부모 노드로서 더 큰 크기를 갖는 이웃 트리 노드 존에 대한 대표 노드인 또 다른 대표 노드를 선택한다.
머신이 DHT의 논리 공간으로 매핑된 이후, 메타데이터는 각 머신에서 메타데이터를 취합할 수 있다. 취합된 메타데이터는 각 머신으로부터 그의 대표 노드로 송신될 수 있고, 그러한 대표 노드는, 그렇게 수신된 메타데이터를 그들의 개별적인 부모 노드로 송신할 수 있다. 트리에서 가장 높은 노드에 수신된 메타데이터(예컨대, 루트 노드)는 처리된 후, 개별적인 부모 및 대표 노드를 통해서 각 머신으로 송신될 수 있다. 메타데이터는 예를 들면, 각 머신의 동작에 관한 정보일 수 있으며, 처리된 메타데이터는 각 머신의 동작을 지배할 수 있는 명령어일 수 있다.
추가적인 구현 및 특징(feature)들은 이하에서 기술될 것이다.
다음의 첨부 도면과 같이 후술하는 상세한 설명을 참조함으로써, 본 발명의 구현이 더 잘 이해될 수 있다.
본 명세서외 도면에서 유사한 구성요소와 특징을 나타내는 데에 동일한 번호가 사용된다. 100 번호 시리즈는 원래 도 1에 도시된 특징을, 200 번호 시리즈는 원래 도 2에 도시된 특징을, 300 번호 시리즈는 원래 도 3에 도시된 특징을 나타내고, 나머지도 마찬가지이다.
본 명세서에서 설명되는 전략은 피어-투-피어(P2P) 시스템에서 사용되는 분산 해시 테이블(DHT)의 "상부(on top of)"에 구축된 데이터 구조를 포함한다. 피 어-투-피어(P2P) 시스템이라는 용어는 도 1에 도시된 상호연결 네트워크(100)와 같이, 참가자가 직접적으로 다른 참가자와 상호작용할 수 있는, 참가자에 대한 임의의 상호연결을 설명할 수 있다. 일 실시예에서, P2P 시스템은 임의의 서버형 엔티티의 지원을 필요로 하지 않는다. 참가자는 개인용 컴퓨터, 랩탑 컴퓨터, PDA, 주문형 컴퓨팅 장치 등을 포함하는, 임의의 종류의 엔티티를 포함할 수 있다. 참가자는 고정배선 및/또는 무선 통신 라우팅 메카니즘, 다양한 라우터, 게이트웨이 등과 같이, 라우팅 인프라의 임의의 조합을 통하여 서로 통신할 수 있다. 또한, 참가자는 TCP/IP(예를 들어, 인터넷 또는 인트라넷에 의해 제공되는)와 같은 네트워크 프로토콜의 임의의 조합을 통하여 서로 통신할 수 있다.
더 일반적으로, 본 명세서에서 설명되는 임의의 기능은 소프트웨어, 펌웨어(예를 들어, 고정 논리 회로), 매뉴얼 프로세싱, 또는 이러한 구현의 조합을 사용하여 구현될 수 있다. 본 명세서에서 일반적으로 사용되는 "논리" 또는 "모듈"이라는 용어는 소프트웨어, 펌웨어, 또는 소프트웨어 및 펌웨어의 조합을 나타낸다. 예를 들어, 소프트웨어 구현의 경우에, "논리" 또는 "모듈"이라는 용어는 프로세싱 장치 또는 장치들(예를 들어, CPU 또는 CPU들) 상에서 작동될 때 특정 작업을 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독가능 메모리 장치에 저장될 수 있다.
본 명세서는 다음의 내용을 포함한다: 섹션 A는 P2P DHT의 "상부"에 구축될 수 있는 일반적인 데이터 오버레이 구조를 기술한다; 섹션 B는 자가-조직 메타데이터 오버레이(Self-Organized Metadata Overlay), 또는 "SOMO"를 기술한다; 섹션 C 는 P2P 시스템에서 정보의 취합 및 유포를 위한 SOMO의 적용을 기술한다; 섹션 D는 P2P DHT를 사용하여 애플리케이션 레벨 멀티캐스팅(Application Level Multicasting; ALM)을 기술한다; 섹션 E는 섹션 A-D에서 기술된 바와 같은 ALM을 갖는 P2P DHT 시스템 유형에서 사용될 수 있는 예시적인 P2P 참가자를 이용하는 것을 기술한다.
A. P2P DHT 상의 데이터 오버레이
데이터 오버레이는 객체들로 구성되는 데이터 구조이다. 데이터 구조는 분산 해시 테이블의 "상부"에 구현된다. 백그라운드로서, DHT는 P2P 시스템에 의해 제공되는 분산 저장소로 객체를 삽입 및 그로부터 객체를 추출하기 위한 기술을 제공한다. DHT는 논리 DHT 공간 내의 DHT 노드의 집합을 정의함으로써 이러한 작업을 수행한다. 즉, DHT 기술은 DHT 노드의 "존(zone)"이라고 하는, DHT 논리 공간의 소정의 부분에 각 DHT 노드를 할당한다. 예를 들어, CHORD 기술에서, 특정 DHT 노드의 존은 원형 DHT 논리 공간(예를 들어 도 3에 도시된 바와 같은)의 특정 DHT 노드와 그 근처의 노드 사이에서 정의되는 스팬(span)으로 해석될 수 있다. 객체는 키를 생성하기 위하여 객체를 해싱함으로서 저장되고, 그 후 이러한 키를 사용하여 객체와 DHT 논리 공간의 특정 노드 ID를 관련시킨다. 객체는 연관된 방식으로 DHT 논리 공간으로부터 추출된다. 노드와 머신 사이에 일대일 관계가 필요하지 않다고 하여도, 결국 관련된 존들은 실제 머신(예를 들어, 컴퓨터 장치 및 관련 파일 저장소 시스템)으로 매핑한다.
데이터 오버레이는 그 객체들이 DHT 논리 공간에서 노드들과 관련된다는 의 미에서 DHT의 "상부"에서 구현된다. 또한, 애플리케이션은 P2P DHT의 기초 프로토콜 및 서비스를 사용하여 데이터 오버레이의 데이터 구조에서 하나의 객체로부터 다른 객체로 횡단(traverse)한다(또는, 경로를 정한다). 더 구체적으로, 기준 프레임을 위하여, 단일 머신 환경(402)에 대한 도 4의 종래의 경우를 고려한다. 이러한 환경(402)에서, 데이터 구조는 두개의 객체, a(404) 및 b(406)를 포함하며, 단일 머신에 의해 제공되는 저장 장치에서 구현된다. 객체는 임의의 형태의 정보의 임의의 유닛을 폭넓게 나타낸다; 종래의 경우에, 예를 들어, 객체는 데이터베이스 기록, 예를 들어, 문서에 해당할 수 있다. 도 4의 예에서, 객체 a(404)는 객체 b(406)를 참조하는 포인터(408)를 포함한다.
반면에, 도 5는 P2P DHT 환경(502)의 컨텍스트에서 데이터 오버레이의 구현을 나타낸다. 이러한 환경(502)에서, 객체들은 DHT에 의해 이미 제공되는 DHT 노드 프레임워크의 "상부"에 구축되기 때문에, DHT 논리 공간의 개개의 노드들은 데이터 오버레이의 객체들을 "호스트(host)"한다. 예를 들어, DHT 노드 x(504)는 객체 a(506)를 호스트하고, DHT 노드 y(508)는 객체 b(510)를 호스트한다. 이러한 예에서, 객체 a(506)는 객체 b(510)를 참조한다. 일반적으로, 객체 b(510)에 액세스하는 데에 사용되는 키를 저장함으로써, 객체 a(506)는 객체 b(510)로 링크할 수 있다. 이러한 키는 객체 b(510)가 생성될 때 설정된다. 그러나, 도 5의 경우에, 참조 방식(referencing scheme)은 두개의 필드를 포함한다. 제1 필드(512)는 객체 a(506)로부터 객체 b(510)로 포인트하는 고정배선 주소를 포함한다. 이러한 필드는 a.foo.key라고 한다. 제2 필드(514)는 객체 b(510)를 호스트하는 마지막으로 알려진 DHT 노드(예를 들어, 노드 y(508))를 식별하는 소프트-상태 참조(soft-state reference)를 포함한다. 이러한 필드는 a.foo.host라고 한다. 따라서, 제2 필드(514)는 객체 b(510)에 엑세스하기 위한 라우팅 지름길의 역할을 한다.
데이터 오버레이의 노드들은 복수의 DHT 노드들 상에서 분산되기 때문에, 데이터 오버레이 그자체가 분산 데이터 구조로 간주될 수 있다. 데이터 구조가 분산된다고 하더라도, 그 객체들이 과도하지 않으면서 지리적으로 넓게 분산되는 방식으로 저장하는 것이 바람직할 수 있다. 이는 그들이 서로 가까이 있도록 a(506) 및 b(510)의 키들을 생성함으로써 얻어질 수 있다. 이는 P2P DHT 시스템이 이러한 키들을 P2P 시스템의 동일한 노드 또는 P2P DHT 시스템의 아주 가깝게 연관된 노드들과 관련되도록 할 가능성을 더 높여준다.
또한, 데이터 오버레이는 그 데이터 구조의 포인터 및 객체를 조작하는 데에 사용되는 프리미티브(primitive)의 집합을 제공한다. 더 구체적으로, 이러한 프리미티브는 객체 a로부터 다른 객체 b로 참조를 설정하기 위한 절차(setref), 객체 a에 의하여 포인트되는 객체를 반환시키기 위한 절차(deref), 및 객체 a에 의하여 포인트되는 객체를 삭제하기 위한 절차(delete)를 포함한다.
데이터 오버레이는 DHT 시스템의 상부에 구현되기 때문에, 그 프리미티브는 DHT의 서비스를 사용한다. 예를 들어, 프리미티브는 DHT 논리 공간에 객체를 삽입하기 위한 DHT_insert 서비스를 사용할 수 있다. 프리미티브는 DHT 논리 공간에서 그 키를 기초로 하는 객체를 찾는 소정의 DHT 라우팅 절차(DHT routing procedure)를 사용하기 위한 DHT_lookup 서비스(CHORD에 의해 사용되는 지수적 핑거 룩업 구 조와 같은)를 사용할 수 있다. 또한, 프리미티브는 객체를 저장하는 DHT 노드가 미리 알려진 경우에 객체에 직접 액세스하기 위한 DHT_direct 절차를 사용할 수 있다. 달리 말하자면, 그 키가 주어지면 DHT_direct는 정규의 DHT_lookup 라우팅 절차를 바이패스(bypass)하고, 객체를 호스트하는 노드를 직접 구한다. 부차적으로, DHT_lookup 및 DHT_insert는 모두 현재 목표 객체를 호스트하는 DHT의 DHT 노드를 복귀시킬 것이다.
데이터 오버레이는 객체를 생성하기 위하여 어떠한 라이브러리 루틴이 사용되더라도 이를 수정함으로써 그 기초 DHT 서비스를 이용하여 구현될 수 있는데, 또한 이러한 루틴은 객체의 속성으로서 상술한 바 있는 포인터를 설정하기 위한 것이다. 또한, 라이브러리 루틴은 참조를 설정하고, 참조에 의해 포인트된 객체를 복귀시키고, 및 참조에 의해 포인트된 객체를 삭제하기 위한 상술한 바 있는 프리미티브를 조정하도록 수정되어야만 한다.
DHT의 상부에 데이터 오버레이를 구축하는 것에는 많은 이점이 있다. 예컨대, DHT는 DHT 노드들이 DHT 논리 공간에 추가되거나 그로부터 삭제될 때(이는 각각 P2P 시스템에 합류하거나 P2P 시스템을 떠날 때와 관련됨) 자가-조직되도록 디자인되어 있다. DHT는 또한 DHT 노드들이 DHT 논리 공간에 추가되거나 그로부터 삭제되는 것에 대한 응답으로 (노드들 간의 링크를 재설정하고, 노드들간의 객체들을 전송하는 것 등에 의해) 자동적으로 스스로 "치유(healing)"하도록 디자인되어 있다. 데이터 오버레이가 DHT의 상부에서 구현되는 것에 힘입어, 데이터 오버레이는 또한, 자가-조직 및 자가-치유(self-healing)의 특징들을 채택할 수 있다. 더 구체적으로, 데이터 오버레이는 기초 DHT(underlying DHT)와 동일한 크기로 자가-조직 및 자가-치유 되도록 구성될 수 있다.
또한, 실행하기 위하여 P2P DHT의 상부에 다양한 애플리케이션들이 포트(port)될 수 있으며, 이들 애플리케이션에 대해 마치 무한한 저장 공간이 있는 듯한 일루전(illusion)을 부여한다(예컨대, DHT 논리 공간의 노드들을 포함하는 큰 크기의 단일 자원 풀이 있는 듯한 효과(impression)를 부여한다). 이러한 저장 공간은 P2P DHT 시스템에 참가하고 있는 머신들의 메모리 힙들(heaps)을 폭넓게 포함할 수 있다. 호스트 라우팅 지름길(예컨대, a.foo.host)은 데이터 오버레이를 이용하는 애플리케이션들의 성능을 기초 DHT 시스템과 독립적으로 되도록 한다.
DHT에서, 매우 큰 논리 공간(예컨대, 160 비트)이 가정된다. 노드들은 무작위 ID를 가지고 이러한 공간에 합류하는데, 그리하여 그 공간을 균일하게 분할한다. ID는 예컨대, 노드의 IP 주소 상의 MD5 해시일 수 있다. 서열화된 노드들의 세트는 차례로 노드가 책임지고 있는 존(zone)이 엄격하게 정의되도록 한다. p와 q가 각각 x의 선행하는 것과 후행하는 것이라고 하자. 노드의 존은 자신의 ID 및 바로 선행하는 ID(포괄적인 것은 아님) 사이의 공간으로 간단하게 정의될 수 있다. 즉, zone(x)≡ (ID(p), ID(x)).
도 6은 논리 공간으로서의 DHT를 나타내기 위한 하나의 방법을 도시하는데, 여기서 각각의 노드는 논리 공간 내의 논리 위치를 차지하고, 논리 공간은 분할되어 있다. 따라서, 각각의 노드는 논리 공간을 밀착시키기 위해 몇몇 인접한 이웃들을 기억해 둘 필요가 있다. 새로운 머신은 무작위 ID 하나를 선택하여, DHT에 합류한다. 트리가 자가-조직 및 자가-치유를 할 수 있도록, 새로운 머신은 임의의 노드들에 접촉하여, 위치를 발견하도록 노력하며, 자기 스스로 논리 공간을 분할한다. 자가-치유 현상은 머신이 떠날 때 발생하는데, 왜냐하면, 머신이 떠남이 인접 이웃 머신들에 의해 모니터링되기 때문이다. 떠나는 머신이 더 이상 그 존재를 가리키는 "고동(heart beat)" 통신을 송신하지 않을 때, 머신의 떠남이 검출된다. 그 후 새로운 이웃 머신이 자리를 차지하게 된다.
도 6은 실질상 일관된 해싱이 어떻게 DHT 노드들에게 존들을 할당하는지를 나타내는데, 여기에서는 링, 존 및 기본 라우팅 테이블이 사용된다. 시스템 다이너미즘(dynamism)에 반하여 링을 견고하게 하기 위해서, 각각의 노드는 통상 리프 세트(leaf-set)라고 알려진 기초적인 라우팅 테이블에서의 각 측면에 r개의 이웃들을 기록하여 둔다. 이웃들은 그들의 존재를 가리키기 위해서, 또한 노드가 합류/떠날 때나 이벤트가 발생할 때 그들의 라우팅 테이블을 업데이트 하기 위하여, 주기적인 통신(예컨대, "고동")을 교환한다. 도 6에 나타낸 이러한 기본 링은 단순히 P2P DHT이다. 만약 존이 통상의 해시 테이블에서의 해시 버킷(hash bucket)이라고 가정한다면, 링은 DHT이다. 공간 내에 키가 주어진다면, 어떠한 노드가 책임을 지고 있는지를 항상 결정할 수 있다. 이러한 단순한 링 구조에서 룩업 성능은 O(N)이며, 여기서 N은 시스템 내의 노드의 개수이다.
위와 같은 개념에 의해 이루어진 알고리즘은 O(log N) 또는 짝수의 상수 상태들(even constant states)(즉, 라우팅 테이블 엔트리들)을 갖는 O(log N) 성능을 성취한다. 대표적인 시스템은 CAN 분할 방식, CHORD 분할 방식 등을 포함한다. DHT의 전체 시스템은 주로 O(log N) 차수의 오버헤드를 가지고 자가-조직을 수행하고 있다. 또한, DHT는 자원 및 다른 엔티티들(예컨대, DHT에 저장되어 있는 문서들)이 함께 공존하는 공간을 가상화(virtualization)한 것이다.
B. SOMO 트리 구조: 데이터 오버레이의 경우
상술한 데이터 오버레이는 DHT 상부에 임의의 데이터 구조를 구축하기 위한 프레임워크를 제공한다. 데이터 구조는 데이터 구조 내의 노드들을 구성하고 있는 복수의 객체를 포함한다. 이러한 데이터 구조는 노드들을 상이한 방식으로 링크함으로써 임의 종류의 토폴로지를 나타낼 수 있다. 또한, 이러한 데이터 구조는 개개의 노드들에 할당된 동작에 따라서 별개의 기능을 수행할 수 있다. 이하의 섹션에서는, 자가-조직 메타데이터 오버레이 또는 간략히 "SOMO"라고 지칭되는 데이터 오버레이의 예시적인 경우를 설명한다.
SOMO 데이터 구조는 트리 구조의 토폴로지를 나타내도록 구성된다. SOMO 트리 구조는 루트 노드를 가지고 있다. 루트 노드는 하나 이상의 자식을 가질 수 있고, 그 자식은 다시 자신의 자식을 개별적으로 가질 수 있다. SOMO 트리 구조의 단말 노드들은 리프 노드들(leaf nodes)로 지칭된다. 리프 노드들은 P2P DHT 시스템의 DHT 논리 공간 내에 있는 개별적인 DHT 노드들과 연관되어 있다.
이하에서 더 상세히 설명되는 바와 같이, SOMO 트리 구조의 기능 하나는, DHT 노드들로부터 메타데이터를 추출(궁극적으로 P2P 시스템을 구현하는 머신으로부터 데이터 추출을 의미하는)하고, 이 메타데이터를 SOMO 트리를 통해 SOMO 트리 구조의 루트 노드로 전달하는 것이다. 그 후, 애플리케이션이 이 메타데이터를 판 독하여, 이 메타데이터에 기반한 어떤 동작을 수행할 수 있게 된다. (메타데이터는 일반적으로 P2P 시스템을 포함하는 머신들의 성능과 관련된 정보와 같이, P2P 시스템 내에서 수행되는 동작들과 연관된 임의의 종류의 정보를 나타낸다). SOMO 트리 구조는 또한 SOMO 트리 구조의 루트 노드로부터 P2P 시스템 내의 DHT 노드들 및 연관된 머신들로 정보를 유포하기 위하여 사용될 수 있다. 따라서, 일반적으로 말하면, SOMO 트리 구조는 데이터 취합(예컨대, 집합(aggregation)) 및 데이터 방송의 역할을 수행할 수 있다.
도 7은 기초 DHT 논리 공간(704)의 상부에 구축되는 예시적인 SOMO 트리 구조(702)를 나타낸다. DHT 논리 공간(704)은 예시적인 존(706) 및 예시적인 존(708) 등과 같이 다수의 존으로 분할된다. 각각의 존은 예시적인 DHT 노드(710) 와 같이 연관된 DHT 노드를 포함한다. CAN 분할 방식, CHORD 분할 방식, PASTRY 분할 방식, 또는 임의의 다른 종류의 DHT 분할 방식에 의해 제공되는 예시적인 기술과 같은 임의의 기술에 따라, DHT는 DHT 논리 공간(704)을 존들로 분할할 수 있다. 예컨대, CHORD 분할 방식을 사용함으로써, DHT 논리 공간(704)은 그 주위의 다양한 위치에 분산된 노드들을 갖는 링으로 정의될 수 있고, 존들은 링 상의 이웃하는 인접 DHT 노드들을 분리하는 스팬에 해당할 수 있다.
여기에서 SOMO 트리 구조(702)는, DHT 노드들과 구별하기 위하여 "SOMO 노드들"로 지칭되는 하나 이상의 노드들을 포함한다. 각각의 SOMO 노드는 기호 s로 나타낸다. 도 7에 나타낸 예시적인 SOMO 트리 구조(702)는 SOMO 노드들 s(712 내지 726)를 포함한다. 노드들(712 내지 726) s는 역전된 트리 형태(inverted tree shape)를 형성한다. 즉, 루트 노드(712)는 자식 노드(714) 및 자식 노드(716)로 분기된다. 이들 자식 노드들은 각각 그 자신의 자식 노드들을 가질 수 있는데, 예컨대, 자식 노드(714)는 자식 노드(718) 및 자식 노드(720)를 포함한다. 설명의 편의를 위하여, 도 7에서는 예시적인 SOMO 트리 구조(702)의 모든 구조가 간략화되어 있지만, SOMO 트리 구조(702)는 결국 DHT 논리 공간(704) 내에 대응하는 DHT 노드들에 묻혀 있는 리프 노드들(예컨대, 리프 노드들(722, 724, 726))에서 끝나게 된다. 일반적으로, SOMO 트리 구조(702) 내의 SOMO 노드들 간의 링크는, 도 7에서 SOMO 노드들을 함께 연결하는 점선으로 나타내고 있으며, 이러한 연결은 상기 "데이터 오버레이" 섹션에서 설명한 참조 방식을 사용하여 구현될 수 있다.
각각의 SOMO 노드 s는 연관된 존을 가진다. 예컨대, 루트 SOMO 노드(712)는 전체 DHT 논리 공간(704)에 걸쳐 있는 존(728)을 포함한다. 자식 노드(716)는 루트 노드(712)의 존(728)에 대해 절반에 걸쳐 있는 존(730)을 포함한다. SOMO 트리 구조(702) 내에서 더 깊숙이 있는 또 다른 자식 노드(720)는 루트 노드(712)의 존(728)의 4분의 1인 존(732)을 갖는다. 따라서, SOMO 트리 구조(702)의 계층에 추가된 연속적인 노드들 s는 루트 노드(712)의 존(728)의 점차적으로 더 가느다란 분할로 귀결된다. 또한, SOMO 트리 구조(702)의 계층은 공간(704)의 더 가느다란(즉, 더 밀집한) 분할을 나타내는 DHT 논리 공간(704)의 영역들에 대해서는 "더 큰 키"로 자라게 된다. 일반적으로, 도 7은 각 SOMO 노드의 존의 길이로 걸쳐 있는 수평 화살표에 의해 SOMO 노드들 각각에 연관된 존들을 나타낸다. 특정 SOMO 노드 s를 호스트하는 DHT 노드는 DHT_host(s)로 표현된다.
상술한 바와 같이, P2P 자원 풀을 완성하기 위해서는, DHT에는 시스템 내부 모니터링 인프라(in-system monitoring infrastructure)가 확대되어야 한다. 왜냐하면, 큰 시스템에 있어서는, 외부 모니터링 서비스에 의존하는 것은 비현실적이기 때문이다. 이러한 인프라는 다음과 같은 몇몇 주요한 특성을 만족시켜야 한다. (1) 호스팅 DHT와 동일한 크기로 자가-조직될 것. (2) 완전히 분산되고 자가-치유될 것. (3) 가능한 한 취합 및 유포된 메타데이터와 관련하여 정확할 것. 여기에서 제안된 SOMO는 이하 설명되는 것처럼 상향식으로 구축되어 있다.
모니터링 인프라는 많은 수의 토폴로지를 취할 수 있다. 자원 풀에 있어서, 가장 중요한 기능 중 하나는 집합이다. 그러므로, SOMO는 각각의 DHT 노드에 리프가 묻혀 있는 k 차수(degree)의 트리이다. 정보는 바닥으로부터 취합되어 루트를 향해 전파된다. 따라서, SOMO는 리프로부터 루트로 '수렴 캐스트(converge cast)'를 수행하고, 다음 (필요에 따라서) 리프로 다시 내려오는 방송으로 생각할 수 있다. 상태(phases)를 취합 및 유포하는 것은 O(log k N)로 구속되고, 여기서 N은 객체의 총 개수이다. SOMO에서의 각 동작은 k+1 보다 많지 않은 상호작용을 포함하여, 완전히 분산된다. 소프트-상태의 원리를 사용하여, 데이터는 O(log k N) 회 재생될 수 있다. SOMO 트리의 자가-조직 및 자가-치유는 상기 동일한 회수로 구속된다. 그런 면에서, SOMO는 모든 노드들에 의해 그 구축(construction)과 처리(processing)가 공유되는 응답형(responsive) "뉴스 방송(news broadcast)"으로 생각될 수 있다. 정시의 세계적인 "뉴스"는 자원 풀의 일루전을 창작하는 것이다.
B.1. SOMO 구축
SOMO의 핵심 아이디어는 복수의 개별적인 머신들 각각과 작업하고, 그들을 계층 구조로 구성하는 것 대신에, 먼저 논리 공간 내에서 트리를 "그리고(drawn)", 그 후 논리 트리로부터 실제 머신들로의 맵(map)을 만드는 것이다.
상술한 바와 같이, 데이터 오버레이는 기초 DHT 내에 이루어진 다이내믹하면서 감독받지 않는 변형들의 함수로서 확장 및 축소할 수 있다. SOMO 트리 구조(702)는 데이터 오버레이의 경우이므로, 이는 SOMO 트리 구조(702)는 또한 기초 DHT에 대해 이루어진 변형들에 대한 응답으로 확장 및 축소할 수 있는 능력을 가진다는 것을 의미한다. 또한, SOMO 트리 구조는 기초 DHT와 마찬가지로, 기초 DHT 내의 변형들에 대해 상쇄(counteract)하도록 스스로를 치유하는 능력을 가진다. 이하의 서브섹션에서는 기초 DHT 내에서의 변화에 대한 응답으로 SOMO 트리 구조(702)가 진화하는 방식에 대해 설명하기로 한다.
B.2. 논리 트리 구축
논리 트리는 P2P 풀 내의 모든 머신들이 완전히 분산되고 자동화된 방식으로 계층 구조로 조직화되도록 돕는 기준 프레임워크(reference framework)로서 작용한다. 논리 트리는 도 8a에 나타낸 바와 같이, 각각 키를 갖는 가상 노드들의 세트로 이루어지며, 여기서 키는 또한 1 차원 DHT 논리 공간에서의 논리 트리의 위치를 결정한다.
트리 구축의 제1 불변식은 각 가상 노드(virtual node)가 공간의 일부를 소유하고 있으며, 가상 노드의 키가 상기 가상 노드가 수유하는 부분-공간(sub- space)의 중심이라는 것이다. DHT 논리 공간이 [0,1]이라고 가정하면, 루트 가상 노드의 키는 0.5이다. 루트 가상 노드의 공간(이 점에서 전체 논리 공간)은 짝수의 k개의 부분-공간으로 분할되며, 각 부분-공간은 레벨-1에서 가상 노드에 의해 감싸진다. 이러한 분할 프로세스(dividing process)를 재귀적으로 적용하면, 논리 트리가 구축된다. 따라서, 레벨-i는 총 k i 개의 가상 노드를 보유하고, 여기서 각 가상 노드는 1/k i 크기의 부분-공간을 소유한다. 구체적으로, 레벨-i에서의 j(0<=j<2 i )번째 가상 노드는 [j/k i , (j+1)/k i ]의 공간을 소유하며, (2j+1)/2k i 에 키처리되거나 위치된다(keyed/positioned). 여기서, 'k'는 차수이고, 'i'는 레벨이다. 따라서, 도 8a 내지 8c에는 상향식 SOMO 트리 구조를 구축하기 위한 예시적인 절차가 도시되어 있다.
B.3. 물리적 트리로의 매핑
물리적 트리는 P2P 환경에서 각 머신이 부모 머신(parent machine)을 찾을 때에 구축된다. 이는 상기 구축된 논리 트리를 수단으로 하여 완전히 분산된 방식으로 수행될 수 있다. 모든 머신들은 논리 트리를 전부 알고 있기 때문에, 레벨-순위 트리 횡단 알고리즘(lever-order tree traversal algorithm)을 이용하여 각 머신은 그 구역에 포함되는 최상위 가상 노드(highest virtual node)를 선택한다. 이 가상 노드는 최종 물리적 트리에서 이 머신을 표시하며, 머신 x에 대한 대표 노드(representative node) 또는 repre(x)라고 호칭될 수 있다. 논리 트리의 결정적인 본질은 xrepre(x)의 부모 가상 노드의 키를 계산할 수 있다는 것을 의미한 다. 도 8b에 도시된 바와 같이, DHT 룩업을 이용하여, x는 그 키를 호스트하는 머신 y를 찾아 y로의 연결을 설정한다. 모든 머신은 순수하게 로컬 지식(존 및 결정적인 논리 트리 토폴로지)을 가지고, 동일한 절차를 수행한다. 모든 부모-자식간 연결은 논리 키 쌍, 즉, 자식 머신에 해당하는 대표 가상 노드 및 부모 머신에 해당하는 대응 부모 가상 노드에 의해 식별된다. 연결은 고동을 이용하여 유지되고, 상기 불변식은 항상 유지된다. 예를 들어, 새로운 이웃이 합류하여 x의 존이 나뉘어지면, x는 그 부모-종단점이 더이상 그 존에 속하지 않는 모든 연결을 해제할 것이다. 이 점에 있어서, 연결의 다른 쪽 머신들은 상술한 바와 같은 동일한 절차의 수행에 의해 그들의 부모 머신들을 재설정하고, 그리하여, 토폴로지는 자가-치유를 할 것이다. 그 예시가 도 9a 내지 9c에 예시적 절차로서 도시되어 있다.
상술한 절차는 머신들을 DHT의 논리 공간에 매핑하는 것으로 이해될 수 있다. 각 머신은 하나 이상의 트리 노드 존에 해당한다. 각 머신은 그에 대응하는 하나 이상의 트리 노드 존으로부터 가장 큰 크기의 트리 노드 존에 해당하는 트리 노드를 자신의 대표 노드로 선택한다. 각 대표 노드는, 더 큰 크기를 갖는 인접 트리 노드 존에 대한 대표 노드인 다른 대표 노드를 자신의 부모 노드로서 선택한다. 루트 노드를 포함하여 대표 및 부모 노드를 선택하는 예시적인 절차가 도 8a 내지 8c에 도시되어 있다. 도 7에서 볼 수 있는 바와 같이, 트리 노드 존의 크기는 트리의 레벨이 증가할수록 감소하는데, 여기서 제1 레벨은 DHT의 논리 공간의 전체 스팬에 해당하는 트리 노드 존을 갖는 루트 노드의 레벨이다.
상술한 절차는 완전히 분산된 방식으로 물리적 머신들을 트리로 조직한다. 또한, 트리는 k 차수이고 균형화될 확률이 높다. 대표 가상 노드는 머신의 존에 해당하는 최상위 가상 노드를 의미한다. 부모 가상 노드가 어떤 다른 머신에 상주하기 때문에 모든 머신은 연결된다. 결과적으로 나타난 그래프는 루프(loop)를 갖지 않는데, 이것은 루프가 형성될 경우 대표 가상 노드의 정의를 위반하기 때문이다. 따라서, 결과 그래프는 트리이어야 한다. 논리 트리 토폴로지는 결정적이고, DHT 공간에서의 자신의 존은 머신이 필요로 하는 유일한 다른 입력이 된다. 따라서, 트리 구축은 완전히 분산된다. 논리 트리는 k-차수의 균형화된 트리이다. 물리적 트리 또한 k-차수이고 균형화되는지의 여부는 주로 존 분산에 의해 결정된다. DHT에서의 머신의 ID는 무작위로 생성되므로, 결과 트리는 k-차수이고 균형화될 확률이 높다.
각 연결은 논리 점의 쌍, 즉 대표 가상 노드이고 그 DHT 존에 의해 결정되는 제1 점과, 제1 점이 주어지면 또한 결정되는 제2 점에 의해 결정되기 때문에, SOMO는 자동으로, 그리고 최소한의 오버헤드로 구성원의 변화를 다룰 수 있다. 따라서, 이 불변식이 지켜지는 한, 구성원의 변화가 있을 때마다 토폴로지가 재설정될 수 있다. 결과적으로, 도 9a 내지 9c에 도시된 바와 같이, SOMO 트리는 새로운 구성원이 풀에 합류할 때 확장하고, 피어들이 떠날 때에 축소한다. 따라서, 도 9a 내지 9c에는 상향식 SOMO 트리 구조를 치유하기 위한 예시적인 절차가 도시되어 있다.
논리 트리의 정상에 최대 용량을 갖는 머신을 위치시키기를 원할 경우, 노드 ID는 무작위적으로 생성되지 않은 다른 것으로 변화될 수 있다. 그 이후에, 최대 용량 노드를 식별하기 위하여 SOMO를 통해 상향 병합-분류(upward merge-sort)가 이루어진다. 이 노드는 현재 SOMO의 루트 논리점을 소유하는 노드(즉, 전체 공간 [0,1]의 0.5)와 ID를 교환하고, 이것은 임의의 다른 피어들을 방해하지 않고 루트로서 작용하는 머신을 효과적으로 변화시킨다. 이러한 자가-최적(self-optimizing) 특성은 먼저 논리 공간에서 동작함으로써 가능하게 된다.
C. 메타데이터 수집 및 유포
인프라로서의 SOMO는 어떤 데이터가 취합되어야 하는지에 대해서도, 취합된 데이터를 처리하기 위하여 불러올 동작에 대해서도 강요하지 않는다. 자원 풀을 구축하기 위하여, 각 머신은 자신의 자원 메트릭(resource metric)을 수집하고, 자식 노드로부터 수신했던 것과 자신의 자원 메트릭을 결합하며, 이것들을 그 부모 노드와 병합한다. 통과된 데이터는 소프트 상태여야 한다. 또한, 최적화로서, 보고는 연속적인 보고의 "델타"의 방식이 될 수 있다.
SOMO의 성능은 물리적 트리의 높이에 의해 결정되는데, 물리적 트리의 높이느 다시, 논리 트리의 파라미터 (즉, k) 및 논리 공간에서의 DHT 노드의 분산에 의해 결정된다. 노드 ID는 무작위이기 때문에, 물리적 트리의 높이는 O(log k N)이다. 따라서, 주어진 데이터 보고 간격 T일 때, 정보는 SOMO 리프로부터 취합되어, 최대 log k NㆍT의 대기 시간(latency)으로써 그 루트로 흘러간다. 이 제한은, SOMO의 계층구조들 사이에서의 흐름이 완전히 비동기화된 경우 유도된 것이다. 상위 SOMO 노드의 보고 요청이 즉시 그 자식들에게 유사한 동작을 촉발시키면, 대기 시간은 T+t hop
Figure 112005019837120-PAT00001
log k N 로 감소될 수 있으며, 여기서 t hop 는 호스팅 DHT에서의 이동의 평균 대기 시간이다. 비동기화된 흐름은 log k NㆍT의 대기 시간의 제한을 가지며, 여기서 동기화된 버전은 실질적으로 T (예를 들어, 5분)에 의해 제한될 것이다. O(t hop ㆍlog k N)은 절대 하한 경계(absolute lower bound)임을 주목한다. 2M 노드, k=8이며 DHT 홉 당 200ms의 통상 대기 시간에 대하여, SOMO 루트는 1.6초의 래그(lag)를 가지고 글로벌 뷰(global view)를 가질 것이다.
C.1. SOMO 트리 구조의 적용
상술한 바와 같이, SOMO 트리 구조(702)의 일 예시적인 이용은 DHT 논리 공간 (704)에 의해 표시되는 P2P 시스템에서의 물리적 머신들로부터 정보를 취합하는 것이다. SOMO 트리 구조(702)의 다른 예시적인 이용은 그러한 물리적 머신들로 정보를 유포하는 것이다. 수집된 정보는 메타데이터일 수 있다. 메타데이터는 물리적 머신들의 동작을 반영하는 정보와 같이 P2P 시스템의 동작에 관한 정보를 기술한다. 물리적 머신들로 유포되는 정보는 물리적 머신들의 동작을 지배할 수 있는 명령어를 표시할 수 있다. SOMO 메커니즘은 데이터 취합을 제공하기 위하여 SOMO 리프 노드로부터 SOMO 루트 노드로 수렴 캐스트를 수행하고, 다음 데이터 유포를 제공하기 위하여 SOMO 리프 노드로 다시 내리는 멀티캐스트를 수행하는 것으로 해석될 수 있다.
도 10a는 자원을 풀링(pooling resource)하는 DHT의 능력을 SOMO와 결합하여 DHT 및 SOMO로 구성되는 P2P 자원 풀을 집합적으로 만드는 것을 보여준다. 요약하 자면, DHT는 콘텐츠를 공유하는 의미로 사용되는 것이 아니고, 관리 오버헤드 및 확장성 병목현상(scalability bottleneck)을 거의 없이 또는 없이 다량의 자원을 함께 풀링하는 효율적인 방법으로 이용된다. SOMO는 DHT를 통해 계층화되는 자가-조직 "뉴스 방송" 계층 구조이다. O(logN) 시간에 자원 상태를 수집하는 것은 단일 자원 풀의 일루전을 생성한다. 도 10a에 도시된 절차는 자원을 쌍으로 등록하는 것, 통계를 취합하는 것, 취합된 통계 집합의 스냅샷(snapshot) 및 다음 애플리케이션에 의해 질의(query)될 수 있는 결과 다이내믹 데이터베이스를 보장하는 것을 보여준다. P2P의 규모 및 구성은, 관리 오버헤드를 거의 없도록 하기 위하여 모든 계층이 완전히 자가-조직, 자가-조정(self-scaling) 및 자가-치유할 것을 필요로 한다.
예를 들어, 도 10b는 SOMO 트리 구조(1004)가 DHT 논리 공간(1008)을 통하여 P2P 시스템에서 물리적 머신들(1006)로부터 정보를 수집하는데 이용되고 있는 시나리오(1002)를 나타낸다. 보다 구체적으로, 리프 SOMO 노드는 호스팅 DHT 노드로부터 필요한 정보를 추출한다. (부차적으로, 이 절차는 호스팅 DHT 노드가 고장나서 자식 노드가 사라졌을 경우 자식 SOMO 노드를 재시작할 수도 있다.) 하나 이상의 애플리케이션(1010)은 (P2P 시스템을 구성하는 물리적 인프라의 다양한 부하 및 용량에 관한 정보를 수집하는 성능 모니터링의 목적과 같은) 임의의 정해진 목적을 위해 이러한 취합 동작을 유발시킬 수 있다.
보다 구체적으로는, 도 10b는, 각각의 SOMO 노드로부터 자신의 해당 부모 SOMO 노드를 가리키는 화살표를 가지는 선들을 도시함으로써, 정보를 취합하기 위 한 SOMO 트리 구조(1004)의 구성을 도시한다. 이러한 방식으로, 정보는 리프 SOMO 노드들로부터 루트 SOMO 노드로 SOMO 트리 구조(1004)의 한 곳으로 집중된다. 애플리케이션(들)(1010)은 전체 P2P 시스템으로부터 정보를 추출해낸 완전한 보고를 루트 SOMO 노드로부터 추출할 수 있다. 이러한 보고는 조직화되지 않은 날 데이터(raw data)를 포함할 수 있다. 대안적으로, 이러한 보고는, SOMO 노드가 자신이 수집한 정보를 자신의 해당 부모 SOMO 노드로 넘머신 전에 병합하고 분류하는 기능을 수행하도록 구성되었다면, 병합되고 분류된 데이터를 포함할 수 있다. SOMO 노드는, 'op' 구성원이 병합 및 분류를 수행하도록 구성함으로써, 이러한 작업을 수행하도록 구성될 수 있다. 예를 들어, 구성원 op는 특정 SOMO 노드가 자신을 통과하는 정보에 대해 (데이터 취합 또는 데이터 유포 모드 중 하나에서) 수행할 수 있는 동작을 정의할 수 있다. 도 7을 참조하여 예를 들면, op는 SOMO 트리 구조(702)를 사용하여 정보를 수집하는 동안에 병합-분류 동작이 수행되어야 하도록 지정할 수 있다. op 구성원을 포함하는 것에 의해, SOMO 트리 구조(702)는 분산되고 병렬적인 방식으로 임의의 기능을 실행할 수 있다. 따라서, SOMO 트리 구조(702)는 또한 임의의 종류의 기능을 구현하기 위한 분산된 병렬 처리 프레임워크를 제공하기 위한 메커니즘으로 간주될 수 있다. 이것은 단지 하나의 예시일 뿐이다. SOMO 노드는, 정보가 그 SOMO 노드를 통과하여 루트 SOMO 노드로 진행할 때, 그 정보에 대하여 다양한 연산 동작들과 같은 기타 다른 동작들도 실행할 수 있다.
다음 의사-코드(pseudo-code)는 SOMO 트리 구조(1004)를 사용하여 정보를 취합하기 위한 하나의 기술을 제공한다: 의사-코드: SOMO 취합 저차:
get_report (SOMO_node s) {
Report_type rep[1..k]
for i∈[1..k]
if (s.child[i] ≠ NULL) // retrieving via DHT
rep[i] = deref(s.child[i]).report
s.report = s.op(rep[])
}
시스템 메타데이터를 취합하기 위해, SOMO 노드들은, 자신들의 각각의 자식들로부터 보고들을 요구함으로써, 주기적으로 상기 절차를 수행할 수 있다. 취합 절차는 SOMO 트리 구조(1004)로부터 특정 정보를 추출하도록 튜닝될 수 있다. 보다 구체적으로는, SOMO 트리 구조(1004)의 계층적 특성은 주어진 DHT 공간 영역과 관련된 정보를 발견하기 위한 복잡한 범위의 질의의 사용을 용이하게 한다. 예를 들어, k가 2이고 , DHT 논리 공간의 제1 4분의 1의 상태 보고를 추출하기 원할 경우, 애플리케이션(1010)은 단지 제2-레벨 SOMO 트리 구조(1004)의 좌측 자식 SOMO 노드(1012)로부터 보고를 획득할 필요가 있다. 또다른 유용한 구현에는 SOMO 노드에 질의들을 등록하는 것이 포함되는데, 이는 본질적으로 SOMO 메커니즘을 게시-등록(publish-subscribe; "pub-sub") 인프라로 변환한다.
도 10b는 또한, DHT 논리 공간(1008)를 통해 P2P 시스템 내의 물리적 머신들(1006)로 정보를 유포하기 위해 SOMO 트리 구조(1004)가 사용되고 있는, 시나리오(1002)를 보여준다. 하나 이상의 애플리케이션들(1010)은 물리적 머신들(106)로 지시들을 유포하기 위한 것과 같은 임의의 정의된 목적을 위해 이러한 유포 동작을 발생시킬 수 있다. 정보를 전파하기 위한 SOMO 트리 구조(1004)의 구성은, 부모 SOMO 노드로부터 자신들의 각각의 자식 SOMO 노드들을 가리키는 화살표를 가지는 선들을 도시함으로써, 도 10b에서 표시된다. 이러한 방식으로, 정보는 루트 SOMO 노드로부터 리프 SOMO 노드로 SOMO 트리 구조(1004)로 전파된다. 정보는 SOMO 트리 구조(1004)의 브랜치(branch)들을 통해 SOMO 노드들의 수정 없이 전파될 수 있다. 대안적으로, op 구성원을 포함하는 것에 의해, SOMO 노드들은 정보에 대해, 그 정보들이 자신들의 관련 자식 SOMO 노드들로 전달되기 전에, 임의의 종류의 동작을 수행할 수 있다. 또한, 데이터 취합의 경우에 대해 설명된 바와 같이, SOMO 트리 구조(1004)의 단지 선택된 브랜치들만을 포함함으로써, 정보를 DHT 논리 공간(1008)의 단지 일부분들만으로 유포하는 것도 가능하다.
D. 애플리케이션 레벨 멀티캐스팅(ALM)
SOMO 트리 구조 및 데이터 오버레이의 변화 및 추가적인 애플리케이션들이 구현될 수 있다. 예를 들어, 예시적인 일 실시예에서, SOMO 메커니즘은, SOMO 트리 구조로부터 취합되거나 또는 SOMO 트리 구조를 통해 유포되는 정보를 생성하는 메타데이터에 대해 작용하는 알고리즘들을 제공함으로써, 애플리케이션 레벨 멀티캐스팅(ALM)과 함께 사용될 수 있다. ALM 기술들은 도 10b에 도시된 애플리케이션(들)(1010) 내에 적합한 기능들을 제공함으로써 구현될 수 있다. 예시로서, 도 11a-11b는 ALM에 대한 개략적인 배치를 보여준다.
P2P 자원 풀의 사용가능성은 최적화 가능성을 제공한다. 도 11a-11b에 도시 된 바와 같이, 그렇지 않으면 유휴(idle)지만, 적합한 헬핑 피어(helping peer)가 식별될 때, 최적화가 이루어질 수 있다. 적합한 피어가 식별되었다면, 그것은 더 좋은 성능을 가진 토폴로지로 통합될 수 있다. 따라서, 도 11b는 도 11a에 도시된 배치에 대한 개량형을 보여준다. 자원 풀 내의 헬퍼 노드(helper node)의 사용에 의해 개량형이 만들어진다. 도 11a-11b에서, 원들은 애플리케이션 레벨 멀티캐스팅 세션의 본래 구성원들을 나타내고, 사각형은 큰 차수를 가진 사용가능한 피어를 나타낸다. 최적화는, 피어-투-피어 시스템 내에서 자원이 가장 필요한 작업가 자원이 가장 사용가능한 머신들에 의해 수행되도록, 시장 수요 시스템을 지향할 수 있다.
D.1 ALM에 대한 자원 메트릭의 생성
많은 P2P 애플리케이션들에 대해, 자원 통계는 CPU 부하 및 네트워크 활동들 뿐만 아니라 머신으로부터 국부적으로 얻어질 수 없는 보다 복잡한 자원 통계도 포함한다. 적절한 케이스는 ALM이다. 세션을 스케줄하기 원하고 잠재적인 헬핑 피어들의 대형 리스트가 SOMO를 질의함으로써 획득되었다고 가정하면, 근처에 있고 또한 적합한 대역폭을 가지는 하나의 피어가 선택되어야 한다. 단지 피어들의 IP 주소만이 주어지면, 이들의 주변을 찾기 위해 주소들을 핑잉 오버(pinging over)하는 처리는 시간-소모적이며 오차가 나기 쉽다. 다음 논의는 이러한 문제점의 완화방안으로서 대역폭 및 IP 주소의 메트릭들에 촛점을 맞출 것이다. 완전한 논리 공간을 유지하는 DHT 노드들 사이의 상호작용들에 영향을 줌으로써, 이들 속성들이 어떻게 생성될 수 있는지가 설명될 것이다.
D.2 노드 좌표 추정
좌표-기반 대기 시간 추정(coordinate-based latency estimation), latency(x,y)을 찾기 위해서는, distance(coord(x), coord(y))를 계산하는 것으로 충분하며, 여기서 coord는 d-차원 유클리드 공간 내의 네트워크 좌표이다. DHT 공간을 집합적으로 유지하기 위해서는, 각각의 노드가 자신의 고동을 자신의 리프 세트 노드에 제공해야 한다. 각각의 노드가 리프 세트 내의 노드들로부터 고동 메시지를 인식하기 위해 무작위로 선택하면, 각각의 노드는 자신의 리프 세트 이웃들에 대하여 측정된 지연 벡터(delay vector), dm을 가질 것이다. 고동 메시지에서, 각각의 노드는 또한 자신의 현재 좌표를 보고한다. 따라서, 예측된 지연 벡터 dp가 또한, 국부적으로 사용가능하다. 노드 x는, 다운힐 심플렉스 알고리즘(downhill simplex algorithm)을 실행하고 다음 함수를 최소화함으로써, 자신의 좌표를 업데이트한다:
Figure 112005019837120-PAT00002
. 최적화는 국부적으로 이루어지며, 그것은 단지 x 자신의 좌표만을 업데이트하는데, 이는 이어지는 고동에서 x의 리프 세트 이웃들로 분산될 것이다. 이러한 절차는 모든 노드들에 의해 주기적으로 실행되는데, 여기서 노드 좌표, 측정 및 예측된 지 벡터들은 연속적으로 업데이트된다.
D.3 병목 대역폭 추정(Bottleneck Bandwidth Estimation)
피어의 네트워크 대역폭은, 병목 대역폭과 처리량(throughput) 사이에 상관관계가 있다는 점에서, P2P 자원 풀 상에서 실행되는 다수의 애플리케이션들에 대한 또다른 중요한 메트릭이 된다. 그러므로, 병목 대역폭은 처리량에 대한 예측치(predictor)로서 기능할 수 있다. 병목 링크가 마지막 홉 내에 놓인다고 가정될 수 있다. 각각의 노드에 대해, 업스트림(upstream) 병목 대역폭은 그 노드로부터 그의 리프 세트 구성원들까지 측정된 병목 대역폭들의 최대값으로서 추정되는데, 이것은 그 노드의 업링크(uplink) 대역폭 및 리프 세트 노드들의 다운링크(downlink) 대역폭에 의해 제한된다. 기본 아이디어는, 만약 그 노드의 업링크 대역폭보다 더 큰 다운링크 대역폭을 가지는 하나의 이웃이 있다면 그 평가는 정확하다는 것이다. 따라서 보다 많은 리프 세트 노드들을 가질 경우 정확한 평가를 얻을 가능성은 더욱 커질 것이다. 동일한 이유로, 노드들의 다운스트림(downstream) 병목 대역폭은 리프 세트 노드들로부터 자신까지 측정된 병목 대역폭의 최대값으로서 추정된다.
병목 대역폭을 측정하는 것은 잘 이해된다. 예컨대, 패킷-쌍 기술(packet-pair technique)에서, 사이즈가 S인 2개의 패킷들이 소스 노드로부터 백-투-백(back-to-back)으로 송신된다. 수신기는 그 사이의 시간 소비(time dispersion) T를 측정하고, 소스로부터의 병목 대역폭을 S/T로서 추정한다.
고동들에 대한 리프 세트 노드들의 협력은 패킷-쌍 기술이 자연적으로 알맞게 사용될 수 있도록 한다. 주기적으로, 노드 x는 이웃 y에게 2개의 연속적인 고동 메시지를 백-투-백으로 그 사이즈가 충분히 커지도록(가령 1.5 KB) 각각을 덧대어 송신하도록 선택한다. 이제 'y'는 x로부터 자신으로의 경로 상의 병목 대역폭의 평가를 가진다. 이 값은 다음 고동에서 x로 피기백(piggyback)된다. 마찬가지로, yx와 동일한 검사를 수행한다. x는 자신의 리프 세트 구성원들로부터 측정 된 대역폭들을 충분히 수집한 후에, 이제 자신의 병목 대역폭을 전술한 바와 같이 추정할 수 있다.
D.4 P2P 자원 풀 내에 ALM 세션들을 스케줄링하기
동시에 발생하는 다수의 ALM 세션들에 대하여 P2P 자원 풀을 어떻게 최적으로 사용할 수 있는지가 이제 설명될 것이다. 최종 목표는 자원 풀 내의 모든 사용가능하고 적합한 피어들을 사용하여 활성 세션들이 최적 성능을 얻는 것이다. 세션의 성능 메트릭들은 특정 QoS 정의들에 의해 결정된다. 더욱이, 더 높은 우선순위 세션들은 비례하여 풀링된 자원들의 더 큰 부분을 획득해야 한다. 여기서, 중점은 QoS가 종종 요구사항인 것으로 믿어지는 소형 내지 중형 세션 크기들(예컨대, 비디오-컨퍼런스)에 맞춰진다. 비록 그 알고리즘이 동적 구성원자격(dynamic membership)에도 적용되도록 확장될 수 있지만, 주어진 세션 's'에 대하여 참가자들의 본래 집합이 M(s)로서 표시되는 정적 구성원자격(static membership)이 존재한다는 것이 또한 가정된다.
세션의 작업 관리자는, ALM의 토폴로지를 계획하기 위해 수정된 발견적 알고리즘(modified heuristic algorithm)을 실행시킬 책임이 있다. 풀 내의 여분의 자원들을 사용하기 위해, 작업 관리자는 SOMO에 질의하여 후보군 리스트를 획득한다. 리스트의 항목들은 자원 사용가능성 뿐만 아니라 자원의 네트워크 좌표들 및 대역폭도 포함한다. 계획이 작성되면, 작업 관리자는 헬핑 피어들과 접촉하여 이들의 사용을 예약한다. 경쟁하는 작업들은 순전히 자신의 각각의 우선순위들에 의해 그 경쟁을 해결할 것이다.
ALM에 대해, 대역폭 병목, 최대 레이턴시 또는 레이턴시의 분산과 같은 최적화에 대한 다수의 서로 다른 기준들이 존재한다. 모든 구성원들의 최대 레이턴시는, 최종 사용자들의 직관에 크게 영향을 미칠 수 있기 때문에, 트리 구축 알고리즘의 주요 목표로서 여기서 사용된다. 각각의 노드는 자신이 다룰 수 있는 통신 세션들의 수에 대한 한계를 가지는데, 이것은 여기서 '차수(degree)'로 부른다. 이것은 최종 시스템들의 작업부하 또는 제한된 액세스 대역폭에 기인할 수 있다. 최적화는, 피어-투-피어 시스템 내에서 자원이 가장 필요한 작업이 자원이 가장 사용가능한 머신들에 의해 서비스되도록 수행된다.
ALM에 대해, 대역폭 병목, 최대 대기 시간 또는 대기 시간의 분산과 같은 최적화에 대하여 수 개의 서로 다른 기준들이 존재한다. 모든 구성원들의 최대 대기 시간은, 최종 사용자들의 인식에 크게 영향을 미칠 수 있기 때문에, 트리 구축 알고리즘의 주요 목표로서 여기서 사용된다. 각각의 노드는 자신이 다룰 수 있는 통신 세션들의 수에 대하여 한계를 갖는데, 이것은 여기서 '차수'로 부른다. 이것은 최종 시스템들의 작업부하 또는 한정된 액세스 대역폭에 기인할 수 있다. 최적화는, 피어-투-피어 시스템 내에서 자원이 가장 필요한 작업이 자원이 가장 사용가능한 머신들에 의해 서비스되도록 수행된다.
하나의 주어진 세션에 대한 QoS의 정의는 공식적으로 다음과 같이 언급될 수 있다:
정의 1. DB-MHT(Degree-bounded, minimal height tree problem)
비방향성 완전 그래프를 G(V, E), 각각의 v∈V에 대하여 차수 경계(degree bound)를 d bound (v), 각각의 에지 e∈E에 대하여 대기 시간 함수를 l(e)라 할 때, 각각의 v∈T에 대하여 v의 차수가 d(v)≤d bound (v)를 만족하고, T의 높이( 루트로부터의 집합적인 대기 시간으로서 측정됨)가 최소화되도록 G의 스패닝 트리 T를 찾는 것.
자원 풀을 사용하여 QoS에 대한 상술한 정의는 확장될 수 있다. 헬퍼 노드 H의 확장된 세트가 그래프에 추가되는데, 이는 헬퍼 노드의 최소량을 추가함으로써, H를 사용함이 없이도 유도되는 최적 계획에 대한 최선의 솔루션을 달성하고자 함이다.
D.5 단일 ALM 세션 스케줄링
단일 ALM 세션을 스케줄링하는 방법이, 자원 풀을 사용하는 경우 단일 ALM 세션을 최적화하기 위한 알고리즘으로서 논의될 것이다. 본 알고리즘은 O(N 3 ) 성능 구속을 갖고, 1초 미만으로 수백 개의 노드들에 대한 솔루션을 발생시킬 수 있다. 예컨대, 대시 선으로 그어진 박스에서 코드 없는 아래 표 A를 참조하라. 여기서 "AMCast"로 지칭되는 이 알고리즘은 먼저 루트에서 시작하여 현재 솔루션의 세트를 루트에 추가한다. 다음으로, 나머지 노드들의 최소 높이가 차수 제약에 따라 솔루션 세트에서 그들의 가장 가까운 잠재적인 부모를 찾아냄으로써 계산된다. 이러한 루프는 솔루션 내로 가장 낮은 높이를 갖는 노드를 흡수시킴으로써 되돌아간다. 본 과정은 모든 노드가 결국 최종 트리에 포함될 때까지 계속된다. 시작할 최선의 가능성이 있는 트리가 획득되는 것을 보증하기 위하여, 본 알고리즘은 일련의 부가 적인 튜닝이나 조정 조치로 증가될 수 있다. 예를 들어, 글로벌한 최적 알고리즘에 접근하기 위한 튜닝이나 조정 조치는 트리를 일련의 발견 수단으로 조정할 수 있다. 이러한 수단은 (a) 최상위 노드에 대한 새로운 부모를 찾는 것, (b) 최상위 노드를 다른 리프 노드(leaf node)와 교환하는 것, (c) 그의 루트가 최상위 노드의 부모인 서브 트리를 다른 서브 트리와 교환하는 것을 포함한다.
이로운 헬퍼 노드를 검색할 때, 본 알고리즘은 (1) 검색을 촉발시키는 시간, (2) 추가를 판단할 기준이라는 두가지 고려 사항을 포함한다. 일반적인 메커니즘은 아래 표 A 중 "섹션 A"로 라벨이 붙은 박스 내의 의사-코드에 의해 설명된다.
표 A :
Figure 112005019837120-PAT00003
AMCast 알고리즘이 막 솔루션을 추가하려 하는 노드를 u라 하고, parent(u) 가 그 부모라 하자. parent(u)의 자유 차수가 1로 줄어들 경우, 추가 노드 h에 대하여 검색이 촉발된다. 그러한 h가 자원 풀에 존재한다면, h는 대신 u의 부모가 된 후, 원래 parent(u)의 자식이 되도록 u를 대체한다. 다른 버전들은 단지 h의 선택 기준에 따라서 달라지지만, 이러한 최적 클래스는 임계 노드(critical node) 알고리즘으로서 지칭될 수 있다. 여기서 "임계"는 특정 노드에 대하여 원래 알고리즘에 따라 개선될 마지막 기회를 의미한다.
다른 알고리즘들이 h를 검색하는데 사용될 수 있다. 본 알고리즘의 제1 변형은 부모 노드에 가장 가까운 추가 노드를 적절한 차수(예를 들어, '4'가 사용될 수 있음)로 찾는 것이다. l(a, b)를 두개의 임의 노드 a 및 b 사이의 대기 시간이라고 하자. 다음의 발견은 표 B에 도시된 바와 같이 훨씬 더 좋은 결과를 보여준다.
표 B :
Figure 112005019837120-PAT00004
여기서, vu의 형제(sibling) 중 하나이다. 여기서, 아이디어는 그러한 모든 v가 잠재적으로는 h의 미래의 자식이기 때문에, l(h, parent(u))+max(l(h,v))h의 합류 이후 잠재적인 트리 높이에 영향을 미치기 쉽다는 것이다(조건 1). 그러한 헬퍼 노드가 적절한 차수를 가져야 한다(조건 2). 결국, 비록 그들의 차수가 높다고 하더라도 멀리 떨어져 있는 "정크(junk)" 노드를 피하기 위해서는, 반경 R을 부 여하는데, 여기서 hparent(u)로부터 R 범위 내에 있어야 한다(조건 3). 이 절차를 실행하기 위하여 필요한 입력 파라미터는 네트워크 좌표를 포함하므로, 임의의 쌍 사이의 대기 시간 뿐만 아니라 각 노드의 차수도 계산할 수 있다. 이는 스케줄러가 사용하고 있는 SOMO 보고의 시각화인, 도 12에 도시된 바와 같이, SOMO로의 그들의 보고에서의 대역폭 제한 뿐만 아니라 그들의 네트워크 좌표를 각 노드가 게시하도록 함으로써 사용가능하게 된다. 따라서, 각 노드는 특정 부하(사용가능한 CPU 사이클), 특정 메모리 용량(RAM, 디스크 공간, 캐시)을 갖고, 또한 노드가 어디에 있는지(IP 주소)와 노드가 얼마나 많은 대역폭을 갖는지와 같은 임의의 네트워크 정보를 갖는다. 도 10a는 도 12에 도시된 바와 같은 SOMO 보고에서 사용할 데이터의 집합을 나타낸다.
D.6 다중 ALM 세션 최적화
이전 섹션이 하나의 ALM 세션에 대하여 독립 스케줄링 알고리즘을 설명하였다면, 이번 장은 다수의 활성 세션을 처리하는 방법을 설명하는데, 여기서 더 높은 우선 순위 세션이 비례적으로 더 많은 자원을 할당받음으로써, 전체적으로 자원 풀의 사용이 최대화된다.
모든 세션은 무작위로 시작 및 종료할 수 있다. 각 세션은 1과 3 사이의 정수값의 우선 순위를 갖는다. 우선 순위 1 세션이 가장 높은 클래스이다. 최대 동시 세션의 수는 10부터 60까지 변화하고, 각 세션은 사이즈 20의 비중첩(non-overlapping) 구성원 세트를 갖는다. 따라서, 60개의 활성 세션이 있는 경우, 모든 노드는 적어도 하나의 세션에 속할 것이다. 다시 말하여, 활성 세 션의 원래 구성원의 부분은 17%부터 100%까지 변화한다. 헬퍼 노드를 세는 경우, 세션은 일반적으로 원래 구성원 이상을 채택한다. 또한, 더 큰 차수를 갖는 노드가 하나 이상의 세션에 포함될 수 있다.
다수의 ALM 세션을 최적화하는 이 접근법의 기초가 되는 원리는 잘 조직화된 사회와 다소 유사하다. 즉, 글로벌, 정시 및 신뢰 지식이 사용가능한 한, 각각의 일들이 그들 자신의 자격(credentials)(즉, 그들 각자의 우선 순위)으로 자원에 대해 경합하도록 하는 것이 최선일 수 있다. 이러한 순수 시장-연동(market-driven) 모델은 어떤 종류의 글로벌 스케줄러의 필요성 없이 목표가 달성되도록 한다.
세션에 포함된 노드에 적절한 우선 순위를 설정하는 것은 가외의 고려사항이다. 공동의 P2P 환경에서, 노드가 구성원으로서 그 자체를 포함하는 일을 할 필요가 있다면, 그 일이 그 노드에서 가장 높은 우선 순위가 되도록 하는 것이 마땅하다. 그러므로, 우선 순위 L을 갖는 세션 s에 대하여, M(s)에서의 노드에 대하여 가장 높은 우선 순위(즉, 제1 우선 순위)를 갖고, 그 밖의 경우(즉, M(s) 밖에 놓여 있는 임의의 도움 노드에 대하여)에는 L을 갖는다. 이는 각 세션이 AMCast+adju 알고리즘에 대응하는 하한 경계로써 실행할 수 있는 것을 보증한다. 상한 경계는 s가 시스템에서 유일한 세션(즉, Leafset+adju)인 것으로 가정한 경우 얻어진다.
앞서와 같이, ALM 세션의 루트는 트리 토폴로지를 계획하고 스케줄링하는 작업 관리자이다. 각 세션은 SOMO에 의해 제공되는 시스템 자원 정보에 기초하여 그 자신에 따라 완벽하게 스케줄하기 위하여 Leafset-adjustment 알고리즘을 사용한다. 우선 순위 L을 갖는 세션에 대하여, L보다 더 낮은 우선 순위를 갖는 작업에 의해 점유된 임의의 자원은 사용가능한 것으로 고려된다. 마찬가지로, 활성 세션이 현 계획에서 자원을 상실하는 경우 다시 스케줄링할 필요가 있을 것이다. 각 세션은 또한 주기적으로 최근 자유 자원을 사용하여 더 좋은 계획이 현재의 것보다 더 좋은지를 검사하여 만약 그러하다면 이를 교환하도록 스케줄링을 다시 가동할 것이다.
각각의 작업 관리자의 계획을 돕기 위하여 자원 정보를 취합하고 유포하는 SOMO를 촉진하기 위해, 이전처럼 각각의 노드는 SOMO로의 보고 내의 네트워크 좌표와 같은 정보를 게시한다. 그러나, 이러한 차수는 부서져서, 활성 세션에 의해 취해진 우선 순위로 된다. 이는 다음의 차수 표 C 내의 두 예로 요약된다.
차수 표 C:
Figure 112005019837120-PAT00005
차수 표 C에서, 두개의 노드의 차수 표가 도시된다. x의 전체 차수는 4이고, 2차에 대하여는 세션 s4에 의해 취해지며, 다른 1차에 대하여는 s12에 의해 취해지는데, 이 경우 x를 하나의 자유 차수로 남겨둔다. 반면, y는 단지 2차만을 갖고, 이 둘은 세션 s5에 의해 취해진다. 차수 표는 노드의 차수 분할에 영향을 미치는 스케줄링이 발생할 때마다 업데이트된다. 앞서 설명한 바와 같이, 차수 표는 SOMO를 통해 취합되고, 임의의 실행 작업이 질의하는 것이 가능하게 된다. 차수 표 C는 머신이 ALM 세션의 다른 스트림 중에서 그 자체를 분할하는 것이 가능하게 되어, 대역폭을 동시에 분할함으로써 어떤 일이 이루어질 수 있음을 보여 준다. 이와 같이, 차수 표 C는 상이한 우선 순위 세션으로 스케줄링되도록 다른 일들 중에서 용량을 분할함으로써, 얼마나 많은 전체 차수를 가질 수 있고 얼마나 많은 전체 용량을 가질 수 있는가를 보여준다.
애플리케이션 레벨 멀티캐스팅에 더 많은 세션이 존재하고 전체 자원이 적어질 경우 성능이 감소된다. 그러나, 더 높은 우선 순위 작업이 더 낮은 것보다 훨씬 더 좋은 성능을 유지할 수 있다. 또한, 더 낮은 우선 순위 작업은 자원이 강한 경합 상태에 있을 때 더 많은 헬퍼 노드를 상실한다.
D.7 ALM 세션을 갖는 자원 풀
자원 풀을 생성하기 위하여, 적시의 집합을 보증하기 위하여 계층 구조가 채택되는 것이 불가피하다. 예를 들어, IP 레벨 멀티캐스팅이 어떤 장소에서 통계를 취합하도록 채택되는 2 레벨 아키텍처에서, 그 결과는 중앙 장소로 집합될 수 있다. 여기서 성분들, 즉 (1) P2P DHT의 자가-조직 능력의 결합 및 (2) 내부-시스템, 자가-조정 모니터링 인프라는 광역의 자원 풀이 실행가능하도록 하기 위하여 논의된다.
D.8 자원 풀을 사용하는 ALM 최적화
ALM은 P2P DHT에 알맞는 애플리케이션이다. 그러나, ALM을 최적화하기 위하여, 자원 풀이 사용되어야 한다. 자원 풀이 주어지면, 핸드-오프, 시장-연동 접근 법 내의 동시적인 다수 ALM 세션의 최적화 뿐만 아니라 단일 ALM 세션의 최적화가 이루어질 수 있다. 그러나, ALM은 단지 P2P 자원 풀에 대한 애플리케이션들 중 하나일 뿐임을 주목한다. 그럼에도, 중앙화된 중개 메커니즘보다는 분산된 방법에 대하여, 2단계 접근법이 지지된다. 즉, 그 접근법은 (1) 작업 스케줄링 마다 특정된 애플리케이션, (2) 작업들을 조정함으로써 시장-연동의 정당한 경쟁으로 결합되는 것이다.
E. 한개의 P2P 참가자를 구현하기 위한 예시적인 컴퓨터 환경
앞서 A 섹션에서 설명된 데이터 오버레이는 다수의 머신, 그리고 가능하게는 P2P 시스템 내에서의 다른 인프라에 걸쳐 분포할 수 있는 데이터 구조이다. 따라서, P2P 시스템 내의 각 참가자들은 데이터 오버레이의 일부를 구현하는 것으로 관찰될 수 있다. 이 효과를 달성하기 위하여, 각 참가자는 필수 코드 및 데이터를 저장하고 데이터 오버레이를 생성하여 상호작용한다. 이 코드 및 데이터는 (후술하는) 각 참가자의 휘발성 및/또는 비휘발성 메모리 내에 저장될 수 있다.
예를 들어, 도 13은 컴퓨터(1342)로서 예시적인 하나의 P2P 참가자의 상위 수준 관점을 도시한다. 이 컴퓨터(1342)는 범용 컴퓨터 또는 서버 유형의 컴퓨터 및 관련 디스플레이 장치(1374)에 해당한다. 그러나, 컴퓨터(1342)는 다른 종류의 컴퓨팅 장비를 사용하여 구현될 수 있다. 예를 들어, 도시되지는 않았지만, 컴퓨터(1342)는 핸드-헬드 또는 랩탑 장치, 셋탑 박스, 메인프레임 컴퓨터 등을 포함할 수 있다.
예시적인 컴퓨터(1342)는 여기에서 설명되는 프로세스를 구현하기 위해 사용 될 수 있다. 컴퓨터(1342)는 하나 이상의 프로세서 또는 처리 유닛(1344), 시스템 메모리(1346), 및 프로세서들(1344)에 대한 시스템 메모리(1346)를 포함하는 다양한 시스템 구성요소들을 연결하는 버스(1348)를 포함한다. 컴퓨터(1342) 내의 하나 이상의 저장 장치들은, SOMO 트리 구조의 일부와 같은 데이터 오버레이의 부분을 구현하는데 사용되는 데이터와 코드를 저장하기 위해 사용될 수 있다.
버스(1348)는 임의의 타입의 버스 구조들을 하나 이상 나타내는데, 메모리 버스나 메모리 제어기, 주변 버스, 가속 그래픽 포트, 및 임의의 다양한 버스 구조들을 사용하는 프로세서나 로컬 버스를 포함한다. 시스템 메모리(1346)는 ROM(1350) 및 RAM(1352)을 포함한다. 시동 중과 같이 컴퓨터 내부 구성요소들 사이의 정보 전달을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS)(1354)이 ROM(135)에 저장된다.
컴퓨터(1342)는 하드 디스크(도시 생략)에 대해 판독 및 기록을 하기 위한 하드 디스크 드라이브(1356), 이동 자기 디스크(1360)에 대해 판독 또는 기록을 하기 위한 자기 디스크 드라이브(1358) 및 CD ROM 또는 다른 광학 매체와 같은 이동용 광학 디스크(1364)에 대해 판독 또는 기록을 하기 위한 광학 디스크 드라이브(1362)를 더 포함한다. 하드 디스크 드라이브(1356), 자기 디스크 드라이브(1358) 및 광학 디스크 드라이브(1362)는 SCSI 인터페이스(1366) 또는 다른 적당한 인터페이스로 버스(1348)에 연결된다. 드라이브들 및 이와 관련된 컴퓨터 판 가능 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(1342)를 위한 다른 데이터의 비휘발성 저장 장치를 제공한다. 여기에 설명되는 예시적인 환경은 하드 디스크, 이동용 자기 디스크(1360) 및 이동용 광학 디스크(1364)를 사용하지만, 컴퓨터에 의해 접근 가능한 데이터를 저장할 수 있는, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, RAM, ROM 등과 같은 다른 유형의 컴퓨터 판독 가능 매체도 예시적인 운영 환경에 사용될 수 있다는 점을 당업자라면 이해할 수 있다.
운영 체제(1370)(웹 요청 추적 애플리케이션(Web request trace application)(140)과 같은), 하나 이상의 애플리케이션 프로그램(1372), 캐시/다른 모듈들(1374) 및 프로그램 데이터(1376)를 포함하여 다수의 프로그램 모듈이 하드 디스크(1356), 자기 디스크(1360), 광학 디스크(1364), ROM(1350), RAM(1352) 상에 저장될 수 있다. 운영 체제(1370)는 여기에서 설명되는 (추적 인프라(144)와 같은) 웹 요청 사건 추적 툴(Web request event tracing tool)을 포함할 수 있다. 사용자는 키보드(1378)와 포인팅 장치(1380)와 같은 입력 장치를 통해 컴퓨터(1342)로 명령과 정보를 입력할 수 있다. 다른 입력 장치들(도시 생략)은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이러한 다른 입력 장치들은 처리 유닛(1344)에 버스(1348)에 접속된 인터페이스(1382)를 통해 연결된다. 모니터(1384) 또는 다른 유형의 디스플레이 장치는 또한 비디오 어댑터(1386)와 같은 인터페이스를 통해 버스(1348)에 연결된다. 모니터와 함께, 개인용 컴퓨터는 일반적으로 스피커 및 프린터와 같은 다른 주변 출력 장치들(도시 생략)을 포함한다.
컴퓨터(1342)는 보통 원격 컴퓨터(1388)와 같은 하나 이상의 원격 컴퓨터로 의 논리 연결을 사용하여 네트워크 환경에서 동작한다. 원격 컴퓨터(1388)는 개인용 컴퓨터, 다른 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드, 그리고 일반적으로 컴퓨터(1342)와 관련되어 상술한 많은 또는 모든 구성요소들을 포함한다. 도 13에서 설명되는 논리 연결은 LAN(local area network) (1390) 및 WAN(wide area network)(1392)을 포함한다. 이러한 네트워크 환경은 사무실, 기업-영역 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(1342)는 네트워크 인터페이스나 어댑터(1394)를 통해 로컬 네트워크에 연결된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(1342)는 일반적으로 모뎀(1396) 또는 인터넷과 같이 WAN(1392)에 대해 통신을 확립하기 위한 다른 수단을 포함한다. 내장용이거나 외장용일 수 있는 모뎀(1396)은 직렬 포트 인터페이스(1368)를 거쳐 버스(1348)에 연결된다. 네트워크 환경에서, 개인용 컴퓨터(1342)와 관련되어 설명된 프로그램 모듈 또는 그 일부는 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 연결은 예시적이고, 컴퓨터 사이의 통신 링크를 확립하는 다른 수단이 사용될 수 있다는 점을 이해해야 한다.
일반적으로, 컴퓨터(1342)의 데이터 프로세서는 컴퓨터의 다양한 컴퓨터 판독가능 저장 장치에 서로 다른 시간에 저장된 명령어들에 의해 프로그램된다. 프로그램들과 운영 체제들은 일반적으로, 예를 들어, 플로피 디스크 또는 CD-ROM으로 배포된다. 여기에서부터, 이들은 설치되거나 컴퓨터의 2차 메모리에 로딩된다. 실행시에, 이들은 컴퓨터의 주 전자 메모리(primary electronic memory)에 적어도 일부분이 로딩된다. 여기에서 설명되는 본 발명은, 이들 및 다른 다양한 유형의 컴퓨터 판독가능 저장 매체를 포함하는데, 이러한 매체는 마이크로프로세서나 다른 데이터 프로세서와 관련하여 후술되는 블럭들을 구현하기 위한 프로그램이나 명령어를 포함한다. 본 발명은 또한 여기에서 설명되는 기술과 방법에 따라 프로그램될 때 컴퓨터 자체를 포함한다.
도시의 목적으로, 프로그램 및 운영 체제와 같은 다른 실행 가능 프로그램 구성요소들이 분리된 블럭들로 도시되었지만, 이러한 프로그램들 및 구성요소들은 다양한 시간에 컴퓨터의 서로 다른 저장 구성요소들에 상주하고, 컴퓨터의 데이터 프로세서에 의해 실행된다. 여기에서 설명되는 어떤 기능도 소프트웨어, 펌웨어(예를 들어, 고정 논리 회로(fixed logic circuitry)), 수동 처리(manual processing), 또는 이들 구현의 조합을 사용하여 구현될 수 있다. 여기에 사용되는 "논리" 또는 "모듈"은 일반적으로 소프트웨어, 펌웨어 또는 소프트웨어와 펌웨어의 조합을 나타낸다. 예를 들어, 소프트웨어 구현의 경우, 용어 "논리" 또는 "모듈"은 처리 장치(예를 들어, CPU) 상에서 실행될 때, 특정 작업를 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독가능 메모리 장치에 저장될 수 있다. 논리와 모듈을 별개의 유닛으로서 한 도식적 분리는 이러한 소프트웨어 및/또는 하드웨어의 실제의 물리적 그룹과 할당을 반영할 수 있거나, 단일 소프트웨어 프로그램 및/또는 하드웨어 유닛에 의해 수행되는 상이한 작업들의 개념적일 할당에 해당할 수 있다. 설명된 논리와 모듈은 (예를 들어, 단일 처리 장치에 의해 구현되듯이) 단일 사이트에 위치되거나, 복수의 위치에 분산될 수 있다.
H. 결론
P2P 자원 풀을 생성하기 위해, P2P DHT의 자가-조직 능력이 자가-조정, 계층구조 내부-시스템 모니터링 인프라에 결합된다. 자가-조정과 견고함(robustness)을 달성하기 위해, 이 인프라는 DHT에 의해 생성된 가상 공간 내에 확립되고 그 후 참가자들에게 매핑된 논리적 계층이어야 한다. DHT와 결합된 SOMO가 어떻게 효과적으로 자원 풀을 생성하는지 여기에 설명되었다.
자원 풀의 힘이 활용되어 SOMO를 통한 시기 적절하고 정확한 뉴스캐스트를 이용하고, 각 작업마다 특정 애플리케이션 스케줄러를 설치하고, 그 후 작업들 간에 공정 경쟁을 조정하는 무간섭, 시장-연동 접근을 할 수 있다.
P2P 시스템에서 DHT의 상부에 데이터 구조를 만들기 위한 구현이 설명되었다. 특정 계층 트리 구조가 P2P 시스템으로의 정보 유포와 P2P 시스템으로부터의 정보 수집을 위해 특히 설명되었다.
특정 순서로 수행되는 분리된 단계들을 구성하도록 특정 동작이 설명되었다. 이러한 구현은 예시적이고 제한적이지 않다. 여기에 설명된 특정 단계들은 함께 묶여지고 단일 동작으로 수행될 수 있고, 특정 단계들은 본 명세서에서 설명된 예에서 사용된 순서와 다른 순서로 수행될 수 있다.
또한, 많은 예들이 이 명세서에서 대안(예를 들면, 경우 A 또는 경우 B)으로서 제시될 것이다. 게다가, 비록 이 명세서가 항상 결합된 경우들을 명시적으로 언급하지는 않지만, 이 명세서는 단일 구현예(예를 들면, 경우 A 및 경우 B)에서의 대안들을 결합하는 경우들도 포괄한다.
본 발명은 그 사상이나 주요 특징들로부터 벗어나지 않는 범위에서 다른 특정 형태들로 구현될 수 있다. 기술된 실시예들은 모든 측면에서 단지 예시적인 것일 뿐 제한적이지 않은 것으로서 고려되어야 한다. 따라서, 본 발명의 범위는 상기 상세한 설명에 의해서가 아닌, 첨부된 특허청구범위에 의해 지시된다. 청구항들에서와 균등한 의미 및 범위에 해당하는 모든 변화는 본 범위 내에 포함되는 것이다.
P2P DHT와 상호작용하기 위한 효율적인 전략 분야에서는, 예를 들면, 그 참가자로부터 데이터를 취합하고 그 참가자에게 정보를 유포하는 것이 가능하도록 하는 예시적인 요구가 있다. 나아가, 효율적으로 P2P DHT를 편성하고, 애플리케이션 레벨의 멀티캐스팅 동작에서와 같이, 그 효율성으로부터 혜택을 얻을 동작에서 P2P DHT와 상호작용하는 것이 요구될 수 있다.
본 발명에서는, P2P 자원 풀을 생성하기 위해, P2P DHT의 자가-조직 능력이 자가-조정, 계층구조 내부-시스템 모니터링 인프라에 결합된다. 자가-조정과 견고함(robustness)을 달성하기 위해, 이 인프라는 DHT에 의해 생성된 가상 공간 내에 확립되고 그 후 참가자들에게 매핑된 논리적 계층으로서, 본 발명을 따라, DHT와 결합된 SOMO가 효과적으로 자원 풀을 생성하였다.

Claims (42)

  1. 피어-투-피어(peer-to-peer) 시스템을 위한 분산 해시 테이블(Distributed Hash Table, DHT) 내에 포함되는 논리 공간 상부의 데이터 구조로서 데이터 오버레이(data overlay)를 구축하는 단계- 상기 논리 공간은 연관된 복수의 DHT 존들(zones)을 갖는 복수의 DHT 노드들을 포함함 -;
    상기 데이터 오버레이에서, 각각이 상기 개별 DHT 노드와 연관된 하나 이상의 트리 노드를 포함하는 복수의 레벨들(levels)을 갖는 트리 토폴로지(a topology of a tree)를 구축하는 단계-
    상기 트리의 제1 레벨은, 상기 DHT의 상기 논리 공간의 전체 스팬(span)에 대응하고 각각이 복수의 트리 노드 존들로 논리적으로 분할되는 단일 트리 노드 존을 갖는 단일 트리 노드를 포함하고, 상기 복수의 트리 노드 존들은,
    상기 트리의 각 레벨에서의 상기 트리 노드들; 및
    상기 DHT의 상기 논리 공간의 일부
    에 각각 대응하며,
    상기 트리 노드 각각은, 개별 트리 노드 존과 연관된 키를 식별하는 키 구성원를 포함함 -; 및
    상기 DHT의 상기 논리 공간에 복수의 머신들을 매핑(mapping)하는 단계-
    각 머신은, 상기 트리 노드 존들 중 하나 이상에 대응하고,
    각 머신은, 그의 대표 노드로서, 대응하는 상기 하나 이상의 트리 노드 존으 로부터 가장 큰 크기의 트리 노드 존에 대응하는 트리 노드를 선택하며,
    상기 각 대표 노드는, 그 부모 노드로서, 더 큰 크기를 갖는 인접 트리 노드 존의 대표 노드인 다른 대표 노드를 선택함 -
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 머신 각각에서 메타데이터를 취합하는 단계;
    상기 머신에서 수집된 상기 메타데이터를 상기 대응하는 대표 노드로 송신하는 단계;
    각각의 상기 대표 노드에 의해 수신된 상기 메타데이터를 취합하는 단계;
    상기 각 대표 노드에 의해 취합된 상기 메타데이터를 상기 대응하는 부모 노드로 송신하는 단계; 및
    상기 트리의 상기 제1 레벨에서 상기 단일 트리 노드에서 수신된 메타데이터를 취합하는 단계
    를 더 포함하는 방법.
  3. 제2항에 있어서,
    상기 트리의 상기 제1 레벨에서, 상기 단일 트리 노드에서 취합된 상기 데이터를 처리하는 단계; 및
    상기 트리의 상기 제1 레벨에서의 상기 단일 트리 노드로부터의 상기 처리된 데이터를 상기 각 부모 및 대표 노드를 통하여 상기 머신 각각으로 송신하는 단계
    를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 메타데이터는, 상기 각 머신의 동작에 관한 정보를 포함하고,
    상기 처리된 데이터는, 상기 각 머신의 동작을 지배할 수 있는 명령어(instructions)를 포함하는 방법.
  5. 제1항에 있어서,
    상기 DHT의 상기 논리 공간의 상기 전체 스팬에 대응하는 상기 단일 트리 노드 존은, k개의 트리 노드 존들로 짝수로(evenly) 분할되고,
    k는, 상기 트리의 상기 제1 레벨에서의 트리 노드들의 수이며,
    상기 트리의 레벨 i에서의 j번째 트리 노드는, [j/ki, (j+1)/ki]의 크기 및 (2j+1)/2ki의 키(key)를 갖는 트리 노드 존을 갖는 방법(단, 0<=j<2i임).
  6. 제5항에 있어서,
    상기 각 키는, 상기 개별 트리 노드 존의 중심을 식별하는 좌표의 함수인 값을 갖고,
    상기 트리의 상기 i번째 레벨은 ki개의 트리 노드들을 포함하며,
    각 트리 노드의 상기 트리 노드 존은 1/ki의 크기를 갖는 방법.
  7. 제1항에 있어서,
    상기 각 머신에 대하여, 상기 머신의 개별적인 대표 및 부모 노드들의 개별 키들을 연산하는 단계
    를 더 포함하는 방법.
  8. 제7항에 있어서, 상기 개별 키들을 연산하는 단계는,
    상기 머신으로 상기 DHT 내의 룩업(lookup)을 사용하여 정보를 획득하는 단계
    를 더 포함하고, 상기 머신은, 상기 대응하는 대표 노드의 상기 키로 상기 정보를 사용하여 상기 대표 노드에 대응하는 머신과의 통신을 설정하는 방법.
  9. 제1항에 있어서,
    상기 각 머신에서, 상기 인접 트리 노드 존 내의 상기 각 머신으로부터 고동(heartbeat) 전송을 수신하는 단계; 및
    상기 고동 전송이 적시에 수신되지 않은 경우,
    상기 DHT의 제공을 반복하고,
    상기 DHT의 상기 논리 공간 상부에 상기 데이터 구조로서 상기 데이터 오버 레이의 구축을 반복하고,
    상기 재구축된 데이터 오버레이 내의 상기 복수 레벨 트리의 구축을 반복하고,
    상기 DHT의 상기 논리 공간으로 상기 복수의 머신들의 매핑을 반복함으로써
    상기 인접 트리 노드 존 내의 상기 대응 머신의 부재를 책임지는(account for) 단계
    를 더 포함하는 방법.
  10. 제1항에 있어서, 상기 각 대표 노드 및 상기 각 부모 노드는, 자원의 활용 가능성의 최적화 함수로서 선택되는 방법.
  11. 제10항에 있어서, 상기 최적화 함수는, 네트워크 좌표, 대역폭 병목(bandwidth bottleneck), 최대 대기 시간(maximal latency), 및 대기 시간의 분산으로 이루어지는 그룹으로부터 선택된 기준에 기초하고, 이에 의하여 최대 자원을 요하는 작업이 상기 피어-투-피어 시스템 내의 최대 자원 활용가능 머신들에 의해 수행되는 방법.
  12. 제1항에 있어서,
    상기 DHT는, 상기 피어-투-피어 시스템으로 및 그로부터의 객체들(objects)의 삽입 및 추출을 지배하고,
    상기 논리 공간은, 연관된 복수의 DHT 존들을 갖는 복수의 DHT 노드들을 포함하며,
    상기 DHT의 상기 데이터 오버레이는,
    상기 데이터 구조 내의 객체들을 상기 DHT 노드들과 연관시키는 단계; 및
    상기 데이터 구조 내의 상기 객체들 사이에 링크들을 설정하는 단계
    에 의해 구축되는 방법.
  13. 제12항에 있어서, 각 링크는,
    제1 객체로부터 제2 객체로 포인트(point)하는 고정배선(hardwired) 포인터를 제공하는 제1 필드; 및
    상기 제1 객체로부터 상기 제2 객체를 호스팅(hosting)하는 DHT 노드로 포인트하는 소프트-상태(soft-state)의 포인터를 제공하는 제2 필드를 포함하는 방법.
  14. 제12항에 있어서, 상기 데이터 오버레이의 상기 구축은,
    상기 DHT 내의 객체로 포인터를 설정하는 참조를 정하기 위한 제1 프리미티브(primitive);
    포인터에 의해 참조되는 객체를 반환하기 위한 제2 프리미티브; 및
    포인터에 의해 참조되는 객체를 삭제하기 위한 제3 프리미티브를 이용하는 방법.
  15. 제1항에 있어서,
    상기 데이터 오버레이 내의 각 트리 노드는, 상기 트리 노드를 통해 통과한 데이터에 대해 수행될 동작을 정의하는 동작 구성원을 포함하는 방법.
  16. 제1항에 있어서, 상기 데이터 오버레이의 각 트리 노드는, 상기 트리 노드를 사용하여 생성될 보고(repot) 유형을 정의하는 보고 구성원을 포함하는 방법.
  17. 제1항에 있어서,
    상기 트리의 상기 제1 레벨은, 상기 트리에 대한 루트 노드인 상기 트리 노드를 포함하고,
    상기 루트 노드는, 상기 DHT의 상기 논리 공간의 상기 전체 스팬에 대응하는 상기 트리 노드 존에 대응하는 방법.
  18. 제12항의 방법에 따라, 상기 데이터 오버레이 내에 객체들의 구축을 구현하기 위한 머신 판독가능 명령어를 포함하는 컴퓨터 판독가능 저장소.
  19. 제1항의 방법에 따라, 생성된 데이터 오버레이를 그 위에 저장하고 있는 컴퓨터 판독가능 저장소.
  20. 피어-투-피어 시스템을 위해 DHT 내에 포함된 논리 공간의 상부에 데이터 구 조로서 데이터 오버레이를 포함하는 데이터 구조를 그 위에 저장하고 있는 컴퓨터 판독 가능 저장소로서,
    상기 DHT는, 피어-투-피어 시스템으로 및 그로부터의 객체들의 삽입 및 추출을 지배하고,
    상기 논리 공간은, 연관된 복수의 DHT 존들을 갖는 복수의 DHT 노드들을 포함하며,
    상기 DHT의 상기 데이터 오버레이는,
    상기 데이터 구조 내의 객체들을 상기 DHT 노드와 연관시키고,
    상기 데이터 구조 내의 상기 객체들 사이에 링크들을 설정함으로써 구축되고, 상기 데이터 오버레이는, 복수의 레벨들을 포함하는 트리 토폴로지를 갖고,
    상기 트리는, 상기 개별 DHT 노드와 연관된 복수의 트리 노드들을 포함하고,
    상기 트리 노드는, 상기 DHT의 상기 논리 공간에 대응하는 트리 노드 존을 갖는 루트 노드를 포함하고,
    상기 루트 노드의 상기 트리 노드 존은, 복수의 트리 노드 존들로 논리적으로 분할되고, 상기 복수의 트리 노드 존들은,
    상기 트리의 각 레벨에서의 트리 노드들의 수; 및
    상기 분산 해시 테이블의 상기 논리 공간의 일부에 각각에 대응하며,
    상기 각 상기 트리 노드는, 그 개별 트리 노드 존과 연관된 키를 식별하는 키 구성원을 포함하고,
    상기 DHT의 상기 논리 공간은, 복수의 머신들에 매핑되고,
    각 머신은, 상기 트리 노드 존들 중 하나 이상에 대응하고,
    각 머신은, 그의 대표 노드로서, 대응하는 상기 하나 이상의 트리 노드 존으로부터 가장 큰 크기의 트리 노드 존에 대응하는 트리 노드를 선택하며,
    상기 각 대표 노드는, 그 부모 노드로서, 더 큰 크기를 갖는 인접 트리 노드 존의 대표 노드인 다른 대표 노드를 선택하는 컴퓨터 판독가능 저장소.
  21. 제20항에 있어서,
    상기 루트 노드의 상기 트리 노드 존은, k개의 트리 노드 존들로 짝수로 분할되고, k는, 상기 트리의 제1 레벨에서의 트리 노드들의 수이며,
    상기 트리의 레벨 i에서의 j번째 트리 노드는,
    [j/ki, (j+1)/ki]의 크기 및
    (2j+1)/2ki의 키를 갖는 트리 노드 존을 갖는 컴퓨터 판독 가능 저장소.(단, 0<=j<2i임).
  22. 제21항에 있어서,
    상기 각 키는, 상기 개별 트리 노드 존의 중심을 식별하는 좌표의 함수인 값을 갖고,
    상기 트리의 상기 i번째 레벨은 ki개의 트리 노드들을 포함하며,
    각 트리 노드의 상기 트리 노드 존은 1/ki의 크기를 갖는 컴퓨터 판독가능 저장소.
  23. 제20항에 있어서,
    상기 DHT는, 상기 피어-투-피어 시스템으로 및 그로부터의 객체들의 삽입 및 추출을 지배하고,
    상기 논리 공간은, 연관된 복수의 DHT 존들을 갖는 복수의 DHT 노드들을 포함하며,
    상기 DHT의 상기 데이터 오버레이는,
    상기 DHT 노드들과 연관된 상기 데이터 구조 내의 객체들을 구비하고,
    상기 데이터 구조 내의 상기 객체들 사이에 설정된 링크들을 구비하는 컴퓨터 판독가능 저장소.
  24. 제20항에 있어서, 각 링크는,
    제1 객체로부터 제2 객체로 포인트하는 고정배선 포인터를 제공하는 제1 필드; 및
    상기 제1 객체로부터 상기 제2 객체를 호스팅(hosting)하는 DHT 노드로 포인트하는 소프트-상태의 포인터를 제공하는 제2 필드를 포함하는 컴퓨터 판독가능 저 장소.
  25. 제20항에 있어서,
    제1 프리미티브가 상기 DHT 내의 객체로 포인터를 설정하는 참조를 정하고,
    제2 프리미티브가 포인터에 의해 참조되는 객체를 반환하고,
    제3 프리미티브가 포인터에 의해 참조되는 객체를 삭제하는 컴퓨터 판독 가능 저장소.
  26. 제20항에 있어서, 상기 데이터 오버레이 내의 각 트리 노드는, 상기 트리 노드를 통해 통과한 데이터에 대해 수행될 수 있는 동작을 정의하는 동작 구성원을 포함하는 컴퓨터 판독가능 저장소.
  27. 제20항에 있어서, 상기 데이터 오버레이의 각 트리 노드는, 상기 트리 노드를 사용하여 생성될 보고 유형을 정의하는 보고 구성원을 포함하는 컴퓨터 판독가능 저장소.
  28. 제20항에 있어서,
    상기 트리의 상기 제1 레벨은, 상기 트리에 대한 루트 노드인 상기 트리 노드를 포함하고,
    상기 루트 노드는, 상기 DHT의 상기 논리 공간의 상기 전체 스팬에 대응하는 상기 트리 노드 존에 대응하는 컴퓨터 판독가능 저장소.
  29. 피어-투-피어 방식으로 상호작용하는 복수의 머신들을 포함하는 피어-투-피어 시스템에 있어서,
    복수의 연관된 DHT 존들을 갖는 복수의 DHT 노드들을 포함하는 DHT의 논리 공간- 상기 DHT는 상기 피어-투-피어 시스템으로 및 그로부터의 객체들의 삽입 및 추출을 지배함 -; 및
    상기 DHT의 상기 논리 공간의 상부에 데이터 구조로서의 데이터 오버레이
    를 포함하고, 상기 DHT의 상기 데이터 오버레이는,
    상기 DHT 노드들과 연관된 상기 데이터 구조 내의 객체들을 구비하고,
    상기 데이터 구조 내의 상기 객체들 사이에 설정된 링크들을 구비하고,
    상기 데이터 오버레이는, 복수의 레벨을 포함하는 트리 토폴로지를 구비하고, 상기 개별 DHT 노드들과 연관된 복수의 트리 노드들을 포함하고,
    상기 트리 노드는, 상기 DHT의 상기 논리 공간에 대응하는 트리 노드 존을 구비하는 루트 노드를 포함하고,
    상기 루트 노드의 상기 트리 노드 존은, 복수의 트리 노드 존으로 논리적으로 분할되고, 상기 복수의 트리 노드 존들은,
    상기 트리의 각 레벨에서의 노드의 수; 및
    분산 해시 테이블의 상기 논리 공간의 일부에 각각 대응하며,
    상기 각 트리 노드는, 그의 개별 트리 노드 존과 연관된 키를 식별하는 키 구성원을 포함하고,
    상기 DHT의 상기 논리 공간은, 복수의 머신들에 매핑되고,
    각 머신은, 상기 트리 노드 존들 중 하나 이상에 대응하고,
    각 머신은, 그의 대표 노드로서, 대응하는 상기 하나 이상의 트리 노드 존으로부터 가장 큰 크기의 트리 노드 존에 대응하는 트리 노드를 선택하며,
    상기 각 대표 노드는, 그 부모 노드로서, 더 큰 크기를 갖는 인접 트리 노드 존의 대표 노드인 다른 대표 노드를 선택하는
    피어-투-피어 시스템.
  30. 제29항에 있어서,
    데이터를 상기 트리 노드들을 통해 통과시킴으로써 상기 데이터 오버레이를 통해 상기 데이터를 라우팅하도록 구성된 라우팅 논리(routing logic)
    을 더 포함하는 피어-투-피어 시스템.
  31. 제30항에 있어서, 상기 라우팅 논리는, DHT 노드들로부터 데이터를 취합하여 상기 데이터를 상기 트리 노드들을 통해 상기 트리의 상기 루트 노드로 위로 전달 함으로써 상기 데이터 오버레이를 통해 상기 데이터를 라우팅하도록 구성되는 피어-투-피어 시스템.
  32. 제30항에 있어서, 상기 라우팅 논리는, 데이터를 상기 트리의 상기 루트 노드로부터 상기 트리 노드들을 통해 상기 DHT 노드들로 유포함으로써 상기 데이터 오버레이를 통해 데이터를 라우팅하도록 구성되는 피어-투-피어 시스템.
  33. 피어-투-피어 시스템을 구축하기 위한 장치로서,
    피어-투-피어 시스템을 위한 분산 해쉬 테이블(DHT) 내에 포함되는 논리 공간 상부의 데이터 구조로서 데이터 오버레이를 구축하기 위한 수단-
    상기 DHT는, 피어-투-피어 시스템으로 및 그로부터의 객체들의 삽입 및 추출을 지배하고,
    상기 논리 공간은, 연관된 복수의 DHT 존들을 갖는 복수의 DHT 노드들을 포함하며,
    상기 DHT의 상기 데이터 오버레이는,
    상기 데이터 구조 내의 객체들을 상기 DHT 노드와 연관시키고,
    상기 데이터 구조 내의 상기 객체들 사이에 링크들을 설정함으로써 구축됨 -; 및
    상기 데이터 오버레이에서, 상기 개별 DHT 노드들과 연관된 복수의 트리 노드들을 포함하고, 복수의 레벨들을 갖는 트리의 토폴로지를 구축하기 위한 수단-
    상기 트리 노드들은, 상기 DHT의 상기 논리 공간에 대응하는 트리 노드 존을 갖는 루트 노드를 포함하고,
    상기 루트 노드의 상기 트리 노드 존은, 복수의 트리 노드 존들로으로 논리 적으로 분할되며, 상기 복수의 트리 노드 존들은,
    상기 트리의 각 레벨에서의 상기 트리 노드의 수; 및
    상기 분산 해시 테이블의 상기 논리 공간의 일부에 각각 대응하며,
    상기 각 상기 트리 노드는, 그 개별 트리 노드 존과 연관된 키를 식별하는 키 구성원을 포함함 -;
    상기 DHT의 상기 논리 공간에 복수의 머신들을 매핑하기 위한 수단- 각 머신은, 상기 트리 노드 존들 중 하나 이상에 대응함 -;
    대표 노드로서, 상기 각 머신에 대응하는 상기 하나 이상의 트리 노드 존으로부터 가장 큰 크기의 트리 노드 존에 대응하는 트리 노드를 선택하기 위한 수단; 및
    상기 각 대표 노드에 대하여, 그 부모 노드로서, 더 큰 크기를 갖는 인접 트리 노드 존의 대표 노드인 다른 대표 노드를 선택하기 위한 수단
    을 포함하는 장치.
  34. 제33항에 있어서,
    상기 머신 각각에서 메타데이터를 취합하기 위한 수단;
    상기 머신에서 수집된 상기 메타데이터를 상기 대응하는 대표 노드로 송신하기 위한 수단;
    각각의 상기 대표 노드에 의해 수신된 상기 메타데이터를 취합하기 위한 수단;
    상기 각 대표 노드에 의해 취합된 상기 메타데이터를 상기 대응하는 부모 노드로 송신하기 위한 수단; 및
    상기 트리의 상기 제1 레벨에서 상기 단일 트리 노드에서 수신된 메타데이터를 취합하기 위한 수단
    을 더 포함하는 장치.
  35. 제34항에 있어서,
    상기 트리의 상기 제1 레벨에서, 상기 단일 트리 노드에서 취합된 상기 데이터를 처리하기 위한 수단; 및
    상기 트리의 상기 제1 레벨에서의 상기 단일 트리 노드로부터의 상기 처리된 데이터를 상기 각 부모 및 대표 노드를 통하여 상기 머신 각각으로 송신하기 위한 수단
    을 더 포함하는 장치.
  36. 제35항에 있어서,
    상기 메타데이터는, 상기 각 머신의 동작에 관한 정보를 포함하고,
    상기 처리된 데이터는, 상기 각 머신의 동작을 지배할 수 있는 명령어를 포함하는 장치.
  37. 제33항에 있어서,
    상기 각 머신에서, 상기 인접 트리 노드 존 내의 상기 각 머신으로부터 고동 전송을 수신하기 위한 수단; 및
    상기 고동 전송이 적시에 수신되지 않은 경우,
    상기 DHT의 제공을 반복하고,
    상기 DHT의 상기 논리 공간 상부에 상기 데이터 구조로서 상기 데이터 오버레이의 구축을 반복하고,
    상기 재구축된 데이터 오버레이 내의 상기 복수 레벨 트리의 구축을 반복함으로써
    상기 인접 트리 노드 존 내의 상기 대응 머신의 부재를 책임지기 위한 수단
    을 더 포함하는 장치.
  38. 제37항에 있어서,
    책임지기 위한 상기 수단은, 상기 DHT의 상기 논리 공간으로 상기 복수의 머신들의 매핑을을 반복하기 위한 수단을 더 포함하며, 상기 장치는,
    상기 대응 머신들의 자원의 활용 가능성의 최적화 함수로서 상기 각 대표 노드 및 상기 각 부모 노드를 선택하기 위한 수단
    을 더 포함하는 장치.
  39. 제38항에 있어서, 상기 최적화 함수는, 네트워크 좌표, 대역폭 병목, 최대 대기 시간, 및 대기 시간의 분산으로 이루어지는 그룹으로부터 선택된 기준에 기초 하고, 이에 의하여 최대 자원을 요하는 작업이 상기 피어-투-피어 시스템 내의 최대 자원 활용가능 머신들에 의해 수행되는 장치.
  40. 제33항에 있어서,
    데이터를 상기 트리 노드들을 통해 통과시킴으로써 상기 데이터 오버레이를 통해 상기 데이터를 라우팅하기 위한 수단
    을 더 포함하는 장치.
  41. 제40항에 있어서, 상기 라우팅 수단은, DHT 노드들로부터 데이터를 취합하여 상기 데이터를 상기 트리 노드들을 통해 상기 트리의 상기 루트 노드로 위로 전달함으로써 상기 데이터 오버레이를 통해 상기 데이터를 라우팅하기 위한 수단을 포함하는 장치.
  42. 제40항에 있어서, 상기 라우팅 수단은, 데이터를 상기 트리의 상기 루트 노드로부터 상기 트리 노드들을 통해 상기 DHT 노드들로 유포함으로써 상기 데이터 오버레이를 통해 데이터를 라우팅하기 위한 수단을 포함하는 장치.
KR1020050031660A 2004-04-16 2005-04-15 데이터 오버레이, 자가-조직 메타데이터 오버레이 및 애플리케이션 레벨 멀티캐스팅 KR101120847B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/826,674 2004-04-16
US10/826,674 US7418454B2 (en) 2004-04-16 2004-04-16 Data overlay, self-organized metadata overlay, and application level multicasting

Publications (2)

Publication Number Publication Date
KR20060045788A true KR20060045788A (ko) 2006-05-17
KR101120847B1 KR101120847B1 (ko) 2012-03-16

Family

ID=34939303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050031660A KR101120847B1 (ko) 2004-04-16 2005-04-15 데이터 오버레이, 자가-조직 메타데이터 오버레이 및 애플리케이션 레벨 멀티캐스팅

Country Status (7)

Country Link
US (1) US7418454B2 (ko)
EP (1) EP1587282B1 (ko)
JP (1) JP4750457B2 (ko)
KR (1) KR101120847B1 (ko)
CN (1) CN1708026B (ko)
AT (1) ATE369693T1 (ko)
DE (1) DE602005001883T2 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008103568A1 (en) * 2007-02-20 2008-08-28 Nec Laboratories America, Inc. Method and apparatus for storing data in a peer to peer network
KR101128066B1 (ko) * 2007-09-26 2012-03-29 후아웨이 테크놀러지 컴퍼니 리미티드 패킷 라우팅 방법, 시스템 및 장치, 그리고 백업 자원을 선택하는 방법 및 시스템
KR101248712B1 (ko) * 2009-03-18 2013-03-28 파나소닉 주식회사 데이터를 복수의 노드간에서 네트워크를 경유하여 수신 및 전송하는 멀티캐스트 통신 방법 및 장치
CN109274759A (zh) * 2018-10-19 2019-01-25 杭州和利时自动化有限公司 一种集散控制系统及其节点间的通信方法和装置
KR20190113761A (ko) * 2016-11-19 2019-10-08 디피니티 스티프텅 시스템 아키텍쳐 및 시스템 아키텍쳐에서의 데이터 처리 방법

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316088B2 (en) * 2004-07-06 2012-11-20 Nokia Corporation Peer-to-peer engine for object sharing in communication devices
JP4506387B2 (ja) * 2004-09-30 2010-07-21 ブラザー工業株式会社 情報通信システム、ノード装置、及びオーバーレイネットワーク形成方法等
FR2878673B1 (fr) * 2004-11-26 2007-02-09 Univ Picardie Jules Verne Etab Systeme et procede de sauvegarde distribuee perenne
WO2006068365A1 (en) * 2004-12-21 2006-06-29 Electronics And Telecommunications Research Institute P2p overlay network construction method and apparatus
US7428220B1 (en) * 2005-02-10 2008-09-23 Sun Microsystems, Inc. Method and apparatus for data aggregation in a distributed system
US7895270B2 (en) * 2005-04-21 2011-02-22 Microsoft Corporation Transport abstraction for multiparty replication
US20070011171A1 (en) * 2005-07-08 2007-01-11 Nurminen Jukka K System and method for operation control functionality
JP4544072B2 (ja) * 2005-07-20 2010-09-15 ブラザー工業株式会社 ノード装置、コンピュータプログラム、情報配信システム、及びネットワーク参加方法
US7489689B2 (en) * 2005-10-26 2009-02-10 Cisco Technology, Inc. Method, system and apparatus for scheduling a large pool of resources
JP2007235243A (ja) * 2006-02-27 2007-09-13 Brother Ind Ltd 情報通信システム、情報収集方法、ノード装置、及びノード処理プログラム
JP4692355B2 (ja) * 2006-03-30 2011-06-01 ブラザー工業株式会社 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
US7516116B2 (en) * 2006-04-07 2009-04-07 Microsoft Corporation Range and cover queries in overlay networks
JP2007280303A (ja) * 2006-04-11 2007-10-25 Brother Ind Ltd 情報通信システム、コンテンツカタログ情報配信方法、及びノード装置等
GB0607294D0 (en) * 2006-04-11 2006-05-24 Nokia Corp A node
JP4862463B2 (ja) * 2006-04-11 2012-01-25 ブラザー工業株式会社 情報通信システム、コンテンツカタログ情報検索方法、及びノード装置等
JP4655986B2 (ja) * 2006-04-12 2011-03-23 ブラザー工業株式会社 ノード装置、記憶制御プログラム及び情報記憶方法
JP4539603B2 (ja) * 2006-04-13 2010-09-08 ブラザー工業株式会社 情報通信システム、情報通信方法、情報通信システムに含まれるノード装置および情報処理プログラム
TW200741493A (en) * 2006-04-18 2007-11-01 Benq Corp Systems and methods for discovering frequently accessed subtrees
JP4670726B2 (ja) * 2006-04-28 2011-04-13 ブラザー工業株式会社 ノード装置、情報処理方法及びノード装置用プログラム
US7523340B2 (en) 2006-05-31 2009-04-21 Microsoft Corporation Support self-heal tool
US7643459B2 (en) * 2006-06-16 2010-01-05 Alcatel-Lucent Usa Inc. Methods, devices and architectures for establishing peer-to-peer sessions
CN100525210C (zh) * 2006-06-26 2009-08-05 华为技术有限公司 域管理器系统、获知相邻域管理器及进行更新的方法
US8375141B2 (en) * 2006-09-29 2013-02-12 Microsoft Corporation Infrastructure to disseminate queries and provide query results
WO2008041173A2 (en) * 2006-10-02 2008-04-10 Nokia Corporation Method system and devices for network sharing or searching of resources
US7684352B2 (en) * 2006-11-02 2010-03-23 Nortel Networks Ltd Distributed storage of routing information in a link state protocol controlled network
CN101193032B (zh) * 2006-11-29 2012-03-21 曲锐 基于分布式哈希表的数据处理方法和网络
GB2446200A (en) * 2006-12-01 2008-08-06 David Irvine Encryption system for peer-to-peer networks which relies on hash based self-encryption and mapping
CN101005606B (zh) * 2006-12-31 2012-07-04 华为技术有限公司 一种减少媒体播放延时的方法和装置
US8018453B2 (en) * 2007-02-09 2011-09-13 International Business Machines Corporation Deferred acceleration data structure optimization for improved performance
US8693392B2 (en) * 2007-02-21 2014-04-08 Avaya Canada Corp. Peer-to-peer communication system and method
WO2008102195A1 (en) * 2007-02-22 2008-08-28 Telefonaktiebolaget Lm Ericsson (Publ) Consistent and fault tolerant distributed hash table (dht) overlay network
US7630370B2 (en) * 2007-02-28 2009-12-08 Sharp Laboratories Of America, Inc. Overlay join latency reduction using preferred peer list
EP2122905A2 (en) * 2007-03-09 2009-11-25 Telefonaktiebolaget LM Ericsson (PUBL) Dissemination of network management tasks in a distributed communication network
US20080225780A1 (en) * 2007-03-13 2008-09-18 Nortel Networks Limited Use of distributed hashtables for wireless access mobility management
JP4172522B1 (ja) * 2007-04-12 2008-10-29 ヤマハ株式会社 マルチキャスト配信システム及びマルチキャスト配信方法
CN101291321B (zh) * 2007-04-19 2012-10-03 华为技术有限公司 发布内容的方法及系统、查找内容的方法及系统
US20080276091A1 (en) * 2007-05-04 2008-11-06 Annikki Welin Mobile Device File Sharing Method and Apparatus
JP4389964B2 (ja) * 2007-05-15 2009-12-24 ソニー株式会社 情報処理装置および情報処理方法、並びにプログラム
CN101350807B (zh) * 2007-07-20 2012-04-04 华为技术有限公司 多地址空间移动网络架构、主机信息注册及数据发送方法
US7970916B2 (en) * 2007-07-25 2011-06-28 Cisco Technology, Inc. Register clustering in a sip-based network
US8582469B2 (en) * 2007-11-14 2013-11-12 Cisco Technology, Inc. Peer-to-peer network including routing protocol enhancement
JP4863973B2 (ja) * 2007-11-26 2012-01-25 日本電信電話株式会社 オーバーレイマルチキャスト配信ネットワーク構成方法とシステムおよびプログラム
CN101465796B (zh) * 2007-12-19 2012-10-31 中国移动通信集团公司 P2p系统元数据收集、分发方法及其装置和系统
JP5029373B2 (ja) * 2008-01-11 2012-09-19 日本電気株式会社 ノード、経路制御方法および経路制御プログラム
JP5151511B2 (ja) * 2008-01-30 2013-02-27 ソニー株式会社 検索サービス提供システム及び検索サービス提供方法
JP5058135B2 (ja) * 2008-02-08 2012-10-24 パナソニック株式会社 端末装置
US20090213754A1 (en) * 2008-02-26 2009-08-27 Roie Melamed Device, System, and Method of Group Communication
US8610673B2 (en) 2008-12-03 2013-12-17 Microsoft Corporation Manipulation of list on a multi-touch display
US8264988B2 (en) * 2009-01-30 2012-09-11 Nec Laboratories America, Inc. Method for inferring physical network topology from end-to-end measurement
US8078825B2 (en) * 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US8019862B2 (en) 2009-03-17 2011-09-13 Microsoft Corporation Collaborative speed determination in distributed systems
US7957385B2 (en) 2009-03-26 2011-06-07 Terascale Supercomputing Inc. Method and apparatus for packet routing
US7957400B2 (en) 2009-03-26 2011-06-07 Terascale Supercomputing Inc. Hierarchical network topology
CN101534309B (zh) 2009-04-14 2013-03-13 华为技术有限公司 节点注册方法、路由更新方法、通讯系统以及相关设备
JP4818396B2 (ja) * 2009-05-22 2011-11-16 株式会社東芝 オーバーレイネットワークシステム及び同システムにおけるオブジェクト登録方法
CN101938509B (zh) * 2009-06-29 2015-11-25 日电(中国)有限公司 为p2p网络提供节点信息的服务器、方法及系统
CN101635645B (zh) * 2009-08-28 2012-01-11 中兴通讯股份有限公司 一种网络拓扑的管理方法及装置
CN101656618B (zh) * 2009-09-11 2012-09-05 中兴通讯股份有限公司 一种基于结构化对等网络的多媒体消息广播方法及系统
US9357001B2 (en) * 2009-10-01 2016-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Location aware mass information distribution system and method
US7716179B1 (en) * 2009-10-29 2010-05-11 Wowd, Inc. DHT-based distributed file system for simultaneous use by millions of frequently disconnected, world-wide users
US9922331B2 (en) * 2009-11-04 2018-03-20 Blue Kai, Inc. Filter for user information based on enablement of persistent identification
DE102010006991A1 (de) * 2010-02-05 2011-08-11 Siemens Aktiengesellschaft, 80333 Verfahren und System zum Verwalten von verteilt in einem Rechnernetz gespeicherten Informationen
US9767475B2 (en) * 2010-08-20 2017-09-19 Blue Kai, Inc. Real time audience forecasting
JP5500257B2 (ja) * 2010-09-30 2014-05-21 日本電気株式会社 ストレージシステム
KR20120071576A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 분산 해쉬 테이블 기반의 rtps 디스커버리 방법, 장치 및 시스템
EP2477377A1 (en) * 2011-01-14 2012-07-18 Alcatel Lucent Peer node and method for improved peer node selection
JP5943430B2 (ja) * 2011-03-16 2016-07-05 日本電気株式会社 分散記憶システムおよび分散記憶方法
CN102185935B (zh) * 2011-04-27 2013-07-31 北京交通大学 一种面向资源的分层名字解析系统
WO2013046667A1 (ja) * 2011-09-27 2013-04-04 日本電気株式会社 情報システム、その管理方法およびプログラム、データ処理方法およびプログラム、ならびに、データ構造
JP6094487B2 (ja) * 2011-09-27 2017-03-15 日本電気株式会社 情報システム、管理装置、データ処理方法、データ構造、プログラム、および記録媒体
CA2897118A1 (en) * 2012-01-04 2013-07-11 Hongbing Fan System and method for providing p2p based reconfigurable computing and structured data distribution
US20150019574A1 (en) * 2012-03-09 2015-01-15 Nec Corporation Object placement device and method, and computer program
JP5818263B2 (ja) * 2012-05-10 2015-11-18 日本電信電話株式会社 データの分散管理システム及び装置及び方法及びプログラム
EP2875440A4 (en) 2012-07-20 2016-05-25 Hewlett Packard Development Co POLICY-BASED SCALING OF NETWORK RESOURCES
US10740797B2 (en) * 2012-07-30 2020-08-11 Oath Inc. Systems and methods for implementing a mobile application based online advertising system
JP6182861B2 (ja) * 2012-12-28 2017-08-23 富士通株式会社 情報処理装置、情報処理端末、情報検索プログラム及び情報検索方法
CN104063420B (zh) * 2014-03-25 2015-08-26 深圳市挪亚物联信息技术有限公司 一种统一动态数据模型实现的方法及系统
US9805392B2 (en) * 2014-07-02 2017-10-31 Oracle International Corporation Simulating online user activity to generate an advertising campaign target audience list
CN105488088B (zh) * 2014-12-31 2019-05-07 哈尔滨安天科技股份有限公司 基于树形结构的二维网络角度分配布局方法
US10652322B2 (en) * 2015-03-09 2020-05-12 International Business Machines Corporation Scalable parallel messaging process
EP3304303B1 (en) * 2015-06-03 2021-06-09 Telefonaktiebolaget LM Ericsson (PUBL) Allocating or announcing availability of a software container
CN105573836B (zh) * 2016-02-23 2018-12-28 中国农业银行股份有限公司 数据处理方法及装置
SG10201912412PA (en) * 2016-03-07 2020-02-27 Agency Science Tech & Res Method of facilitating distributed data search in a federated cloud and system thereof
WO2017201027A2 (en) * 2016-05-16 2017-11-23 Interdigital Patent Holdings, Inc. Enhancements for ieee 802.11ah relays
CN107453994A (zh) * 2016-05-30 2017-12-08 北京信威通信技术股份有限公司 基于dht网络的数据传输方法及装置
CN109962942B (zh) * 2017-12-22 2022-06-07 天翼云科技有限公司 副本更新方法和装置以及计算机可读存储介质
WO2020010270A1 (en) * 2018-07-04 2020-01-09 Neji, Inc. Dynamic routing using a distributed hash table
CN112216375B (zh) * 2020-09-03 2023-05-09 南京信息工程大学 一种自主构建医疗监测系统的方法
CN112187912B (zh) * 2020-09-24 2023-12-19 宜宾三江电子信息产业有限公司 一种基于分布式网络的数据漫游方法与装置
CN117785391B (zh) * 2024-02-28 2024-05-10 成都索贝视频云计算有限公司 一种服务操作逻辑结构化装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60131900T2 (de) 2000-10-26 2008-12-04 Flood, James C. jun., Portland Verfahren und system zur verwaltung von verteilten inhalten und verwandten metadaten
US7054867B2 (en) * 2001-09-18 2006-05-30 Skyris Networks, Inc. Systems, methods and programming for routing and indexing globally addressable objects and associated business models
US7644182B2 (en) * 2004-03-11 2010-01-05 Hewlett-Packard Development Company, L.P. Reconfiguring a multicast tree
US7730207B2 (en) * 2004-03-31 2010-06-01 Microsoft Corporation Routing in peer-to-peer networks
US20070079004A1 (en) * 2005-09-30 2007-04-05 Junichi Tatemura Method and apparatus for distributed indexing

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008103568A1 (en) * 2007-02-20 2008-08-28 Nec Laboratories America, Inc. Method and apparatus for storing data in a peer to peer network
KR101128066B1 (ko) * 2007-09-26 2012-03-29 후아웨이 테크놀러지 컴퍼니 리미티드 패킷 라우팅 방법, 시스템 및 장치, 그리고 백업 자원을 선택하는 방법 및 시스템
KR101248712B1 (ko) * 2009-03-18 2013-03-28 파나소닉 주식회사 데이터를 복수의 노드간에서 네트워크를 경유하여 수신 및 전송하는 멀티캐스트 통신 방법 및 장치
KR20190113761A (ko) * 2016-11-19 2019-10-08 디피니티 스티프텅 시스템 아키텍쳐 및 시스템 아키텍쳐에서의 데이터 처리 방법
CN109274759A (zh) * 2018-10-19 2019-01-25 杭州和利时自动化有限公司 一种集散控制系统及其节点间的通信方法和装置

Also Published As

Publication number Publication date
DE602005001883D1 (de) 2007-09-20
JP2005353039A (ja) 2005-12-22
US7418454B2 (en) 2008-08-26
JP4750457B2 (ja) 2011-08-17
EP1587282A2 (en) 2005-10-19
EP1587282A3 (en) 2006-05-24
US20050243740A1 (en) 2005-11-03
CN1708026A (zh) 2005-12-14
CN1708026B (zh) 2011-07-27
EP1587282B1 (en) 2007-08-08
DE602005001883T2 (de) 2007-12-20
ATE369693T1 (de) 2007-08-15
KR101120847B1 (ko) 2012-03-16

Similar Documents

Publication Publication Date Title
KR101120847B1 (ko) 데이터 오버레이, 자가-조직 메타데이터 오버레이 및 애플리케이션 레벨 멀티캐스팅
US7313565B2 (en) Data overlay, self-organized metadata overlay, and associated methods
US9602573B1 (en) Automatic clustering for self-organizing grids
Kavalionak et al. Integrating peer-to-peer and cloud computing for massively multiuser online games
Costa et al. Autonomous resource selection for decentralized utility computing
Giordanelli et al. Bio-inspired P2P systems: The case of multidimensional overlay
den Burger et al. Collective receiver-initiated multicast for grid applications
Kokkinos et al. Scheduling efficiency of resource information aggregation in grid networks
Graffi et al. Skyeye. kom: An information management over-overlay for getting the oracle view on structured p2p systems
Zhang et al. Capacity-aware multicast algorithms on heterogeneous overlay networks
Meiklejohn et al. Loquat: A framework for large-scale actor communication on edge networks
van Renesse et al. Autonomic computing: A system-wide perspective
Vasilakos et al. Decentralized as-soon-as-possible grid scheduling: a feasibility study
Gramoli et al. Slicing distributed systems
Montresor et al. Decentralized ranking in large-scale overlay networks
Castella et al. Discop: A p2p framework for managing and searching computing markets
Alzboon et al. Towards self-resource discovery and selection models in grid computing
Yang et al. Automatic clustering for self-organizing grids
Sentís et al. Discop2p: an efficient p2p computing overlay
DE SOUSA AFFINITY BASED OVERLAYS FOR DECENTRALIZED SYSTEMS
Celaya et al. Scalable architecture for allocation of idle CPUs in a P2P network
Tato Lazy and locality-aware building blocks for fog middleware: a service discovery use case
Umadevi et al. Scheduling the family jobs using Genetic algorithm for Big Data Clouds
Garbacki et al. Broker-placement in latency-aware peer-to-peer networks
Chen et al. Elasto: Dynamic, efficient, and robust maintenance of low fan-out overlays for topic-based publish/subscribe under churn

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 9