KR20120104341A - Method and apparatus for locating services within peer-to-peer networks - Google Patents

Method and apparatus for locating services within peer-to-peer networks Download PDF

Info

Publication number
KR20120104341A
KR20120104341A KR1020127018264A KR20127018264A KR20120104341A KR 20120104341 A KR20120104341 A KR 20120104341A KR 1020127018264 A KR1020127018264 A KR 1020127018264A KR 20127018264 A KR20127018264 A KR 20127018264A KR 20120104341 A KR20120104341 A KR 20120104341A
Authority
KR
South Korea
Prior art keywords
service
node
search
nodes
network
Prior art date
Application number
KR1020127018264A
Other languages
Korean (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 KR20120104341A publication Critical patent/KR20120104341A/en

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • H04L67/107Discovery involving direct consultation or announcement among potential requesting and potential source peers with limitation or expansion of the discovery scope
    • 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/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • 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
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

코드 네트워크 또는 다른 피어-투-피어 네트워크(P2P) 네트워크와 같이, P2P 네트워크에서 서비스 위치 찾기 능력을 지원하기 위한 능력이 제공된다. 일 실시예에서, P2P 네트워크 내에서 서비스의 위치를 찾기 위한 방법이 제공된다. 상기 P2P 네트워크는 상기 P2P 네트워크 내에 상기 서비스의 위치를 찾기 위한 방법을 실행하는 타겟 노드를 포함하는, 복수의 노드들을 포함한다. 상기 타겟 노드는 상기 P2P 네트워크의 각각의 복수의 노드들을 식별하는 복수의 엔트리들을 포함하는 탐색 표를 포함한다. 상기 방법은 상기 P2P 네트워크 내에 상기 서비스를 탐색하기 위한 요청을 탐색하는 단계 및 상기 탐색 표의 노드들 중 적어도 하나를 향해 서비스 탐색 요청을 개시하는 단계를 포함한다. 상기 서비스 탐색 요청은 상기 서비스를 지원하는 상기 P2P 네트워크의 적어도 하나의 노드를 식별하기 위한 요청이다. 상기 서비스 탐색 요청은 상기 서비스를 나타내는 정보 및 상기 서비스 탐색 요청을 수신하는 노드에 의해 이용하기 위한 탐색 범위를 포함한다.Like code networks or other peer-to-peer network (P2P) networks, the ability to support service locating capabilities in P2P networks is provided. In one embodiment, a method is provided for locating a service within a P2P network. The P2P network includes a plurality of nodes, including a target node that executes a method for locating the service within the P2P network. The target node includes a lookup table that includes a plurality of entries that identify each of the plurality of nodes of the P2P network. The method includes searching for a request to search for the service within the P2P network and initiating a service search request towards at least one of the nodes in the search table. The service search request is a request for identifying at least one node of the P2P network supporting the service. The service search request includes information indicating the service and a search range for use by a node receiving the service search request.

Description

피어?투?피어 네트워크들 내에서 서비스들의 위치를 찾기 위한 방법 및 장치{METHOD AND APPARATUS FOR LOCATING SERVICES WITHIN PEER-TO-PEER NETWORKS}METHOD AND APPARATUS FOR LOCATING SERVICES WITHIN PEER-TO-PEER NETWORKS

관련 출원들에 대한 상호-참조Cross-Reference to Related Applications

본 출원은 그 전체가 여기에 참조로서 통합되는 "피어-투-피어 네트워크를 분해하고 분해된 피어-투-피어 네트워크를 이용하기 위한 방법 및 장치(METHOD AND APPARATUS FOR DECOMPOSING A PEER-TO-PEER NETWORK AND USING A DECOMPOSED PEER-TO-PEER NETWORK)"로 제목이 붙여진, 2009년 12월 17일에 출원된 미국 특허 출원 번호 제12/640,049호[대리인 문서 번호. ALU/805520]와 관계가 있다.The present application is directed to a method and apparatus for disassembling a peer-to-peer network and using a disassembled peer-to-peer network, the entirety of which is incorporated herein by reference. AND USING A DECOMPOSED PEER-TO-PEER NETWORK, US Patent Application No. 12 / 640,049 filed December 17, 2009, entitled Representative Document No. ALU / 805520].

본 발명은 피어-투-피어(P2P) 네트워크에 관한 것으로, 보다 상세하게는 전적으로는 아니지만 P2P 네트워크들 내에서 서비스들의 위치를 찾는 것에 관한 것이다.FIELD OF THE INVENTION The present invention relates to peer-to-peer (P2P) networks and, more particularly, to locating services within P2P networks.

파일 공유는 얼마 동안 집중적인 연구 및 그래스 루츠 이용(grass roots usage)의 초점이 되어 왔다. 파일 공유는 상세하게는 상기 목적을 위해 설계되고 이와 연관된 파일 공유 프로토콜들을 가진 상이한 파일 공유 시스템들로서 구현된 파일 공유 방식들에 의해 가능해졌다. 다수의 상이한 파일 공유 시스템들이 냅스터로 시작하여, 그 후 그누텔라(gnutella), 카자아(Kazaa), 당나귀(eDonkey), 위니(Winny), 및 비트토렌트(BitTorrent)와 같이, 다수의 상이한 파일 공유 시스템들의 생성을 통해 진행하여 구현되어왔다. 이들 파일 공유 시스템들 외에, Share and Perfect Dark와 같은 새로운 시스템들이 또한 개발되었다. 총괄하여, 이들 파일 시스템들 및 연관된 프로토콜들은 피어-투-피어(P2P) 파일 공유 시스템들/프로토콜들 또는 간단히 P2P 파일 공유 애플리케이션들로서 불리운다. 더욱이, P2P 파일 공유 애플리케이션들 외에, 상기 P2P 파일 공유 애플리케이션들과 건축학적으로 상이한 새로운 클래스의 P2P 애플리케이션들, 즉 P2P 텔레비전(P2PTV)이 나오고 있다.File sharing has been the focus of intensive research and grass roots usage for some time. File sharing has been made possible in particular by file sharing schemes designed for this purpose and implemented as different file sharing systems with associated file sharing protocols. Many different file sharing systems start with Napster and then many different file sharing systems, such as gnutella, kazaa, donkey, ewinny, and bittorrent. It has been implemented through the creation of them. In addition to these file sharing systems, new systems such as Share and Perfect Dark have also been developed. Collectively, these file systems and associated protocols are called peer-to-peer (P2P) file sharing systems / protocols or simply P2P file sharing applications. Moreover, besides P2P file sharing applications, a new class of P2P applications, namely P2P televisions (P2PTVs), which are architecturally different from the P2P file sharing applications, are emerging.

P2P 파일 공유의 대중성은 최근 트래픽 연구들에서 명확하다. 예를 들면, 미국 내의 수백만 광대역 이용자들의, 엘라코야 네트워크들(Ellacoya Networks)에 의한 최근의 트래픽 연구는 볼륨으로 주요 트래픽 유형들의 장애가 다음과 같음을 나타낸다: 웹(HTTP) - 46%; 피어-투-피어(P2P) - 37%; 비-HTTP 스트리밍 비디오 - 3%; 게임 - 2%; VoIP(voice-over-IP) - 1%; 기타 - 1%. 많은 양의 HTTP 트래픽에 대한 주 원인은 유투브로부터의 트래픽과 같은, 내장된 비디오 스트리밍 트래픽이고, 이것은 상기 언급된 연구에서의 총 트래픽의 9.8%를 차지한다). 그러나, P2P 파일 공유는 여전히 상기 트래픽의 큰 퍼센티지를 책임지고 있으며, P2PTV의 출연으로, 트래픽의 양은 급격하게 증가할 것으로 예상된다.The popularity of P2P file sharing is evident in recent traffic studies. For example, a recent traffic study by Ellacoya Networks, with millions of broadband users in the United States, indicates that the impairments of major traffic types in volume are: Web (HTTP)-46%; Peer-to-peer (P2P)-37%; Non-HTTP streaming video-3%; Games-2%; Voice-over-IP (VoIP)-1%; Other-1%. The main cause for large amounts of HTTP traffic is embedded video streaming traffic, such as traffic from YouTube, which accounts for 9.8% of the total traffic in the above mentioned studies). However, P2P file sharing is still responsible for a large percentage of the traffic, and with the appearance of P2PTV, the amount of traffic is expected to increase rapidly.

대다수의 기존의 P2P 애플리케이션들은 파일 공유를 수반하지만, 그러나 파일 공유를 수반하는 다수의 상기 기존의 P2P 애플리케이션들은 적어도 초기에 완전히 피어-투-피어가 아니었다. 오히려, 대부분의 기존의 P2P 애플리케이션들은 초기에 상기 P2P 네트워크의 구성원들 간에 활동을 조정하기 위해 중앙 서버를 이용하였다. 예를 들면, 비트토렌트에서, 상이한 가지들의 정보의 다운로딩이 피어-투-피어인 동안, 비트토렌트에서 트랙커(tracker)로서 불리우는 중앙 집중형 서버는 상기 비트토렌트 애플리케이션의 활동을 조정하기 위해 이용된다. 유사하게, 예를 들면, 파일 공유를 수반하는 많은 다른 P2P 애플리케이션들은 또한 냅스터 및 당나귀와 같이, 유사한 특성들을 가진다. 그러나, 중앙 서버의 이용은 또한 기존의 P2P 애플리케이션들이 혼잡 및 장애들에 취약하게 만들고 또한 기존의 P2P 애플리케이션들을 보안 위협들에 대한 매력적인 타겟으로 만든다. The majority of existing P2P applications involve file sharing, but many of the existing P2P applications that involve file sharing were not, at least initially, fully peer-to-peer. Rather, most existing P2P applications initially used a central server to coordinate activity among members of the P2P network. For example, in BitTorrent, while the downloading of different branches of information is peer-to-peer, a centralized server called as a tracker in BitTorrent is used to coordinate the activity of the BitTorrent application. . Similarly, many other P2P applications that involve file sharing, for example, also have similar characteristics, such as Napster and Donkey. However, the use of a central server also makes existing P2P applications vulnerable to congestion and failures and also makes existing P2P applications an attractive target for security threats.

그러나, 불리하게도, 기존의 P2P 애플리케이션들이 파일 공유를 지원하는 반면, 기존의 P2P 애플리케이션들은 서비스를 탐색하기 위한 능력을 지원하지 않는다.Disadvantageously, however, existing P2P applications support file sharing, while existing P2P applications do not support the ability to search for services.

일 실시예에서, P2P 네트워크 내에서 서비스의 위치를 찾기 위한 방법이 제공된다. 상기 P2P 네트워크는 상기 P2P 네트워크 내에 상기 서비스의 위치를 찾기 위한 방법을 실행하는 타겟 노드를 포함한, 복수의 노드들을 포함한다. 상기 타겟 노드는 상기 P2P 네트워크의 각각의 복수의 노드들을 식별하는 복수의 엔트리들을 포함하는 탐색 표를 포함한다. 상기 방법은 상기 P2P 네트워크 내에서 상기 서비스를 탐색하기 위한 요청을 검출하는 단계 및 상기 탐색 표의 상기 노드들 중 적어도 하나를 향해, 서비스 탐색 요청을 개시하는 단계를 포함한다. 상기 서비스 탐색 요청은 상기 서비스를 지원하는 상기 P2P 네트워크의 적어도 하나의 노드를 식별하기 위한 요청이다. 상기 서비스 탐색 요청은 상기 서비스를 나타내는 정보 및 상기 서비스 탐색 요청을 수신하는 상기 노드에 의해 이용하기 위한 서비스 범위를 포함한다.In one embodiment, a method is provided for locating a service within a P2P network. The P2P network includes a plurality of nodes, including a target node that executes a method for locating the service within the P2P network. The target node includes a lookup table that includes a plurality of entries that identify each of the plurality of nodes of the P2P network. The method includes detecting a request to search for the service within the P2P network and initiating a service search request towards at least one of the nodes in the search table. The service search request is a request for identifying at least one node of the P2P network supporting the service. The service search request includes information indicative of the service and a service range for use by the node receiving the service search request.

본 명세서의 교시들은 첨부한 도면들과 함께 다음의 상세한 설명을 고려함으로써 쉽게 이해될 수 있다.The teachings herein can be readily understood by considering the following detailed description in conjunction with the accompanying drawings.

종래 기술의 다양한 결점들이 코드 네트워크(Chord network) 또는 다른 적절한 피어-투-피어(P2P) 네트워크와 같이, P2P 네트워크에서 서비스 위치 찾기 능력을 지원하는 실시예들에 의해 해소된다.Various drawbacks of the prior art are addressed by embodiments that support service locating capability in a P2P network, such as a code network or other suitable peer-to-peer (P2P) network.

도 1은 대표적인 코드 네트워크를 도시한 도면.
도 2는 도 1의 대표적인 코드 네트워크의 노드들 중 하나에 의해 개시된 서비스 위치 탐색에 응답하여 도 1의 대표적인 코드 네트워크 내에서 개시된 서비스 탐색 요청 메시지들을 도시한 도면.
도 3은 서비스 위치 찾기 요청을 개시하는 노드에서 서비스 탐색 요청 메시지를 생성하기 위한 방법의 일 실시예를 도시한 도면.
도 4는 중간 노드에서 서비스 탐색 요청 메시지를 처리하기 위한 방법의 일 실시예를 도시한 도면.
도 5는 중간 노드에서 서비스 탐색 응답 메시지들을 처리하기 위한 방법의 일 실시예를 도시한 도면.
도 6은 대표적인 코드 네트워크에서 서비스를 위한 점진적 서비스 위치 탐색을 실행하는 일 예를 도시하는 대표적인 코드 네트워크를 도시한 도면.
도 7은 도 6의 대표적인 코드 네트워크에서 서비스를 위한 점진적 서비스 위치 탐색을 실행하기 위한 대표적인 탐색 범위를 도시한 도면.
도 8은 정렬된 점진적 서비스 위치 탐색을 이용하여 서비스 위치 찾기 요청을 개시하는 노드에서 서비스 탐색 요청 메시지들을 생성하기 위한 방법의 일 실시예를 도시한 도면.
도 9a 내지 도 9d는 도 1의 대표적인 코드 네트워크에서 서비스를 위한 정렬된 점진적 서비스 위치 탐색을 실행하는 일 예를 도시한, 도 1의 대표적인 코드 네트어크의 노드들 중 하나에 의해 개시된 서비스 위치 탐색에 응답하여 도 1의 대표적인 코드 네트워크 내에서 개시된 서비스 탐색 요청 메시지들을 도시한 도면들.
도 10은 여기에 설명된 기능들을 실행하는데 이용하기에 적절한 범용 컴퓨터의 고-레벨 블록도.
1 illustrates an exemplary code network.
FIG. 2 illustrates service discovery request messages initiated within the exemplary code network of FIG. 1 in response to service location discovery initiated by one of the nodes of the exemplary code network of FIG.
3 illustrates an embodiment of a method for generating a service search request message at a node initiating a service location search request.
4 illustrates an embodiment of a method for processing a service search request message at an intermediate node.
5 illustrates one embodiment of a method for processing service search response messages at an intermediate node.
FIG. 6 illustrates an exemplary code network illustrating an example of performing a gradual service location search for a service in an exemplary code network. FIG.
FIG. 7 illustrates an exemplary search range for performing a gradual service location search for a service in the exemplary code network of FIG.
8 illustrates one embodiment of a method for generating service search request messages at a node initiating a service location search request using aligned incremental service location search.
9A-9D illustrate a service location search initiated by one of the nodes of the representative code network of FIG. 1, illustrating an example of performing an ordered incremental service location search for a service in the representative code network of FIG. 1. Diagrams responsive to service discovery request messages initiated within the representative code network of FIG.
10 is a high-level block diagram of a general purpose computer suitable for use in carrying out the functions described herein.

이해를 용이하게 하기 위해, 가능하다면, 동일한 참조 부호들이 도면들에 공통인 동일한 요소들을 지정하기 위해 이용된다.To facilitate understanding, the same reference numerals are used to designate the same elements that are common to the figures, where possible.

서비스 위치 찾기 능력은 피어-투-피어(P2P) 네트워크 내에서 서비스의 위치를 찾는데 이용하기 위해 제공된다.Service locating capability is provided for use in locating a service within a peer-to-peer (P2P) network.

일 실시예에 따른 상기 서비스 위치 찾기 능력은 예로서 상기 서비스를 지원하는 상기 P2P 네트워크의 하나 이상의 다른 노드들을 탐색하기 위해, P2P 네트워크 내의 타겟 노드가 상기 P2P 네트워크 내에 특정 서비스의 위치를 탐색할 수 있게 한다. 상기 서비스 위치 찾기 능력은 서비스 위치 탐색을 실행하기 위해 상기 P2P 네트워크의 노드들의 기존의 탐색 표들을 재이용한다. 타겟 노드에 의해 개시된 서비스 위치 탐색은 서비스 탐색 요청들이 상기 탐색 표의 모든 노드들에 대해 동시에, 상기 서비스의 위치를 찾거나 상기 탐색 표이 소진될 때까지 연속하여 상기 탐색 표의 모든 노드들에 대해, 상기 탐색 표의 노드들의 서브세트에 대해 동시에, 및 그 후 상기 서비스의 위치를 찾거나 상기 탐색 표이 소진될 때까지 연속하여 상기 탐색 표의 임의의 남아있는 노드들에 대해, 및/또는 임의의 다른 적절한 기법들을 이용하여 개시되도록 실행될 수 있다. 상기 서비스 위치 탐색에서, 노드로 전송된 각각의 서비스 탐색 요청은 요청되는 서비스를 나타내는 정보, 상기 서비스 요청을 수신하는 상기 노드에 의해 이용하기 위한 탐색 범위, 및 선택적으로 서비스 특정 정보를 포함한다. 상기 서비스 탐색 요청은 다른 유형들의 정보를 포함할 수 있다. 노드에 의해 개시된 상기 서비스 위치 탐색은 각각의 노드가 기껏해야 M개의 응답 메시지들을 수신하도록 기껏해야 M개의 탐색 메시지들을 생성할 것이고(여기서 M은 상기 P2P 네트워크의 키 공간의 비트들의 크기이다), 그러므로 상기 전체 P2P 네트워크에 걸친 탐색은 어떤 상기 P2P 네트워크의 단일 로드도 탐색 요청 및/또는 응답 메시지들에 의해 오버로드되지 않도록 분배될 것이다. 상기 서비스 위치 탐색 능력은 제 1 P2P 네트워크에서의 노드가 또한 제 2 P2P 네트워크의 노드들인 상기 제 1 P2P 네트워크의 노드들을 식별하기 위해 상기 서비스 위치 찾기 능력을 이용함으로써 상기 제 2 P2P 네트워크에서의 오브젝트를 탐색할 수 있게 한다. 앞서 말한 설명은 단지 상기 서비스 위치 찾기 능력을 도입하기 위해 제공되는 상기 서비스 위치 찾기 능력의 특정 실시예들에 대한 일반적인 설명이고, 따라서 상기 서비스 위치 찾기 능력의 실시예들은 앞서 말한 설명에 의해 제한되는 것으로 의도되지 않음을 이해할 것이다.The service locating capability according to an embodiment may enable a target node in a P2P network to search for a location of a particular service in the P2P network, for example, to search for one or more other nodes of the P2P network supporting the service. do. The service location finding capability reuses existing search tables of nodes of the P2P network to perform service location search. The service location search initiated by a target node is performed for all nodes of the search table in a row until service search requests are made simultaneously for all nodes in the search table, until the location of the service is found or the search table is exhausted. Simultaneously for a subset of nodes in the table, and subsequently for any remaining nodes in the search table, and / or using any other suitable techniques until the location of the service or the search table is exhausted To be initiated. In the service location search, each service search request sent to a node includes information indicative of the requested service, a search range for use by the node receiving the service request, and optionally service specific information. The service search request may include other types of information. The service location search initiated by a node will generate at most M search messages so that each node receives at most M response messages (where M is the size of the bits of the key space of the P2P network), therefore The search across the entire P2P network will be distributed such that no single load of the P2P network is overloaded by search request and / or response messages. The service location search capability may be used to determine an object in the second P2P network by using the service location search capability to identify nodes in the first P2P network that are also nodes in the first P2P network. Make it searchable. The foregoing descriptions are merely general descriptions of specific embodiments of the service locating capability provided to introduce the service locating capability, and thus embodiments of the service locating capability are limited by the foregoing description. It will be understood that it is not intended.

상기 서비스 위치 찾기 능력은 주로 특정 유형의 P2P 네트워크, 즉 코드 네트워크의 문맥 내에서 묘사되고 설명된다. 코드 네트워크에서, 상기 코드 네트워크의 노드에 유지되는 탐색 표는 핑거 표(finger table)로서 불리우며, 상기 핑거 표의 각각의 엔트리는 각각 핑거로서 불리운다. 상기 서비스 위치 찾기 능력의 원리들은 다른 유형들의 P2P 네트워크들에 적용될 수 있으며, 따라서 핑거 표들 및 연관된 핑거들에 대한 참조들은 노드들을 식별하는 탐색 표들 및 연관된 엔트리들에 대한 참조들인 것으로서 보다 일반적으로 판독될 수 있다는 것이 이해될 것이다. The service locating capability is primarily depicted and described within the context of certain types of P2P networks, namely code networks. In a code network, a lookup table maintained at a node of the code network is called a finger table, and each entry in the finger table is called a finger, respectively. The principles of the service locating capability can be applied to other types of P2P networks, so that references to finger tables and associated fingers are more generally read as references to search tables and associated entries identifying nodes. It will be understood that it can.

도 1은 대표적인 코드 네트워크의 고-레벨 블록도를 묘사한다. 도 1에 묘사된 바와 같이, 코드 네트워크(100)는 링 구성으로 논리적으로 배열되는 복수의 노드들(110)을 포함한다. 상기 노드들(110) 각각은 상기 노드들(110) 가운데 공유될 수 있는 파일들을 저장한다. 상기 노드들(110)은 또한 다른 노드들(110)에 이용가능해질 수 있는 호스트 서비스들일 수 있다. 상기 노드들(110)은 코드 네트워크예를 들면,할 수 있는 임의의 노드들을 포함한다. 예를 들면, 노드들(110)은 컴퓨터들, 전화기들 등을 포함할 수 있다. 상기 노드들(110)은 각각 상기 서비스 위치 찾기 능력의 다양한 기능들을 제공하도록 구성된다.1 depicts a high-level block diagram of an exemplary code network. As depicted in FIG. 1, the code network 100 includes a plurality of nodes 110 logically arranged in a ring configuration. Each of the nodes 110 stores files that can be shared among the nodes 110. The nodes 110 may also be host services that may be made available to other nodes 110. The nodes 110 include any nodes capable of, for example, a code network. For example, the nodes 110 may include computers, telephones, and the like. The nodes 110 are each configured to provide various functions of the service location capability.

상기 서비스 위치 찾기 능력을 제공할 때 코드 네트워크(100)의 동작은 먼저 도 1의 대표적인 코드 네트워크와 함께 코드 네트워크들의 일반적인 동작을 고려함으로써 보다 잘 이해될 수 있다. The operation of the code network 100 when providing the service location capability can be better understood by first considering the general operation of the code networks in conjunction with the representative code network of FIG.

코드(Chord)에서, 상기 코드 네트워크의 노드들은 패킷-기반 네트워크(예로서, IP 네트워크 또는 임의의 다른 적절한 네트워크와 같은)를 통해 네트워크 접속성을 가지며, 코드는 근본적인 패킷-기반 네트워크 위에 오버레이 네트워크를 형성한다. 코드 네트워크의 노드들은 논리적으로 상기 노드들의 노드 ID들의 순서로 원으로 배열된다. 상기 노드들의 노드 ID들은 해시 함수(hash function)를 이용하여 할당받는다.In Chord, the nodes of the code network have network connectivity through a packet-based network (eg, an IP network or any other suitable network), and the code places an overlay network over the underlying packet-based network. Form. Nodes of the code network are logically arranged in a circle in the order of the node IDs of the nodes. The node IDs of the nodes are assigned using a hash function.

코드에서, 상기 코드 네트워크예를 들면,할 수 있는 노드들의 수는 코드 네트워크의 키 공간(어드레스 공간)의 크기에 기초한다. 일반적으로, 상기 키 공간은 M 비트들이고, 여기서 M은 임의의 적절한 수일 수 있다. 예를 들면, 코드 네트워크들에 이용된 통상적인 키 공간은 상기 키 공간의 크기를 2160 또는 ~ 1.45*1048과 동일하게 만드는 160 비트 구현을 이용하여 제공된다. 일관된 해시 함수는 입력들을 160-비트 값들로 매핑하기 위해(즉, 입력들을 상기 키 공간으로 매핑하기 위해) 이용된다. 상기 해시 함수로부터의 출력들은 균일하게 상기 키 공간으로 매핑된다. 보안 해시 함수(Secure Hash Algorithm; SHA-1), 메시지-다이제스트 알고리즘 5(Message-Digest Algorithm 5; MD5) 등과 같은 임의의 적합한 해시 함수가 이용될 수 있음이 이해될 것이다. 상기 키 공간으로 매핑될 때, 상기 해시 함수의 출력들은 상기 코드 네트워크 내의 상기 노드들을 논리적으로 배열하기 위해 이용되는 노드 ID들의 세트를 제공한다.In the code, the code network, for example, the number of nodes that can be based on the size of the key space (address space) of the code network. In general, the key space is M bits, where M can be any suitable number. For example, a typical key space used for code networks is provided using a 160 bit implementation that makes the size of the key space equal to 2 160 or ˜1.45 * 10 48 . A consistent hash function is used to map inputs to 160-bit values (ie, map inputs to the key space). Outputs from the hash function are mapped uniformly into the key space. It will be appreciated that any suitable hash function may be used, such as Secure Hash Algorithm (SHA-1), Message-Digest Algorithm 5 (MD5), and the like. When mapped to the key space, the outputs of the hash function provide a set of node IDs used to logically arrange the nodes in the code network.

코드에서, 활성 노드들(상기 코드 네트워크에 참여하는 기존의 노드들) 및 비활성 노드들(상기 코드 네트워크에 참여할 수 있는 잠재적 노드들)은 상기 노드들의 노드 ID들의 순서로 원형으로 논리적으로 배열된다. 코드는 원형으로 랩어라운드(wraparound)를 갖고 증가하는 노드 ID 값들의 방향으로 순서를 부여한다. 상기 코드 네트워크에서, 상기 코드 네트워크의 활성 노드들 간의 접속성은 상기 원들에서의 상기 활성 노드들의 인접한 것들 간의 논리적 접속성이다(비활성 노드들은 상기 코드 네트워크에 접속되지 않기 때문에, 따라서 단지 활성 노드들로서 상기 코드 네트워크에 참여할 수 있는 잠재적인 노드들이다). 이러한 방식으로, 상기 코드 네트워크에서의 타겟 활성 노드의 관점으로부터, 시계 방향으로 상기 원 상의 다음 활성 노드는 상기 타겟 활성 노드의 후속자(successor)이고 시계 반대 방향에서의 상기 원 상의 다음 활성 노드는 상기 타겟 활성 노드의 선행자(predecessor)이다.In the code, active nodes (existing nodes participating in the code network) and inactive nodes (potential nodes that can participate in the code network) are logically arranged in a circle in the order of the node IDs of the nodes. The code has a wraparound in a circle and orders in the direction of increasing node ID values. In the code network, connectivity between active nodes of the code network is logical connectivity between adjacent ones of the active nodes in the circles (since inactive nodes are not connected to the code network, therefore the code only as active nodes) Potential nodes that can participate in the network). In this way, from the perspective of the target active node in the code network, the next active node on the circle in a clockwise direction is a successor of the target active node and the next active node on the circle in a counterclockwise direction is the Predecessor of the target active node.

도 1에서, 상기 활성 노드들 및 상기 비활성 노드들은 명료함을 위해 디스플레이된다. 도 1에서, 상기 코드 네트워크의 키 공간은 6 비트들이다(또는 노드 ID 0에서 노드 ID 63까지 시계 방향 방식으로, 연속하여 넘버링된 64개의 노드들). 도 1에서, 노드들(0, 2-3, 5-7, 9, 12-13, 16-24, 26, 29-30, 32, 34-35, 37, 41, 43, 45, 49, 51, 53-54, 56-58, 및 62)은 활성이고, 나머지 노드들은 비활성이다. 도 1에서, 코드 네트워크(100)의 상기 활성 노드들 간의 논리적 접속성은 상기 원을 완성하기 위해 노드(0)에 접속되는 노드(62)를 갖고, 노드(0)가 노드(2)에 접속되고, 노드(2)가 노드(3)에 접속되고, 노드(3)가 노드(6)에 접속되는 등을 나타낸다. 코드는 랩어라운드를 갖고 시계 방향으로 증가하는 값들을 이용하여, 상기 원에 순서를 부여하기 때문에, 노드(2)는 노드(0)의 후속자로서 불리우며, 노드 62는 노드(0)의 선행자로서 불리우고, 노드(3)는 노드(2)의 후속자로서 불리우며, 노드(0)는 노드(2)의 선행자로서 불리운다.In FIG. 1, the active nodes and the inactive nodes are displayed for clarity. In Figure 1, the key space of the code network is 6 bits (or 64 nodes numbered consecutively, in a clockwise manner from node ID 0 to node ID 63). In Fig. 1, nodes 0, 2-3, 5-7, 9, 12-13, 16-24, 26, 29-30, 32, 34-35, 37, 41, 43, 45, 49, 51 , 53-54, 56-58, and 62) are active and the remaining nodes are inactive. In FIG. 1, the logical connectivity between the active nodes of the code network 100 has a node 62 connected to node 0 to complete the circle, where node 0 is connected to node 2 and Node 2 is connected to node 3, node 3 is connected to node 6, and so on. Node 2 is called as a successor of node 0, and node 62 is a predecessor of node 0, because the code has wraparound and uses clockwise incrementing values to order the circle. Node 3 is called as successor of node 2 and node 0 is called as predecessor of node 2.

여기에 설명된 바와 같이, 코드 네트워크는 파일 공유를 지원하여, 여기서 공유될 각각의 파일은 상기 코드 네트워크의 활성 노드들 중 하나 이상에 저장된다. 코드에서, 파일의 파일명은 상기 코드 네트워크의 노드들을 식별하기 위해 이용되는 동일한 해시 함수를 이용하여, 상기 코드 네트워크의 상기 노드들을 식별하기 위해 이용되는 동일한 키 공간으로 해싱된다. 상기 파일명을 해싱하는 것으로부터의 해싱된 출력은 상기 파일을 위한 파일 식별자이다. 따라서, 예를 들면, 160 비트들의 키 공간을 가진 코드 네트워크를 위해, 상기 코드 네트워크는 잠재적으로 1.45*1048개의 파일들을 수용할 수 있다. 코드에서, 파일은 노드가 활성이라면 상기 파일의 파일 ID에 매칭하는 노드 ID를 가진 노드에 저장되고, 노드가 비활성이라면, 상기 파일은 상기 파일 ID보다 큰 노드 ID를 가진 제 1 활성 노드에 저장된다. As described herein, the code network supports file sharing, where each file to be shared is stored on one or more of the active nodes of the code network. In code, the file name of the file is hashed to the same key space used to identify the nodes of the code network, using the same hash function used to identify the nodes of the code network. The hashed output from hashing the file name is a file identifier for the file. Thus, for example, for a code network with a key space of 160 bits, the code network could potentially accommodate 1.45 * 10 48 files. In code, the file is stored in a node with a node ID that matches the file ID of the file if the node is active, and if the node is inactive, the file is stored in a first active node with a node ID greater than the file ID. .

도 1에서, 코드 네트워크(100)는 다음과 같이 저장될 총 64개의 파일들을 수용할 수 있다: 노드(0)는 파일들(0, 63)을 저장하고; 노드(2)는 파일들(1, 2)을 저장하고; 노드(3)는 파일(3)을 저장하고; 노드(5)는 파일들(4, 5)을 저장하고; 노드(6)는 파일(6)을 저장하고; 노드(7)는 파일(7)을 저장하고; 노드(9)는 파일들(8, 9)을 저장하고; 노드(12)는 파일들(10, 11, 12)을 저장하고; 노드(13)는 파일(13)을 저장하고, 노드(16)는 파일들(14, 15, 16)을 저장하고; 노드(17)는 파일(17)을 저장하고; 노드(18)는 파일(18)을 저장하고; 노드(19)는 파일(19)을 저장하고; 노드(20)는 파일(20)을 저장하고; 노드(21)는 파일(21)을 저장하고; 노드(22)는 파일(22)을 저장하고; 노드(23)는 파일(23)을 저장하고; 노드(24)는 파일(24)을 저장하고; 노드(26)는 파일들(25, 26)을 저장하고; 노드(29)는 파일들(27 28, 29)을 저장하고; 노드(30)는 파일(30)을 저장하고; 노드(32)는 파일들(31, 32)을 저장하고; 노드(34)는 파일들(33, 34)을 저장하고; 노드(35)는 파일(35)을 저장하고; 노드(37)는 파일들(36, 37)을 저장하고; 노드(41)는 파일들(38. 39, 40, 41)을 저장하고; 노드(43)는 파일들(42, 43)을 저장하고; 노드(45)는 파일들(44, 45)을 저장하고; 노드(49)는 파일들(46, 47, 48, 49)을 저장하고; 노드(51)는 파일들(50, 51)을 저장하고; 노드(53)는 파일들(52, 53)을 저장하고; 노드(54)는 파일(54)을 저장하고; 노드(56)는 파일들(55, 56)을 저장하고; 노드(57)는 파일(57)을 저장하고; 노드(58)는 파일(58)을 저장하고; 노드(62)는 파일들(59, 60, 61, 62)을 저장한다. In Fig. 1, the code network 100 can accommodate a total of 64 files to be stored as follows: node 0 stores files 0 and 63; Node 2 stores files 1 and 2; Node 3 stores file 3; Node 5 stores files 4 and 5; Node 6 stores file 6; Node 7 stores file 7; Node 9 stores files 8 and 9; Node 12 stores files 10, 11, 12; Node 13 stores file 13, node 16 stores files 14, 15, and 16; Node 17 stores file 17; Node 18 stores file 18; Node 19 stores file 19; Node 20 stores file 20; Node 21 stores file 21; Node 22 stores file 22; Node 23 stores file 23; Node 24 stores file 24; Node 26 stores files 25 and 26; Node 29 stores files 27 28 and 29; Node 30 stores file 30; Node 32 stores files 31 and 32; Node 34 stores files 33 and 34; Node 35 stores file 35; Node 37 stores files 36 and 37; Node 41 stores files 38. 39, 40, 41; Node 43 stores files 42 and 43; Node 45 stores files 44 and 45; Node 49 stores files 46, 47, 48, 49; Node 51 stores files 50 and 51; Node 53 stores files 52 and 53; Node 54 stores file 54; Node 56 stores files 55 and 56; Node 57 stores file 57; Node 58 stores file 58; Node 62 stores files 59, 60, 61, 62.

가장 기본적인 구현에서, 단지 주어진 파일의 하나의 카피만이 상기 코드 네트워크에 저장되지만, 상이한 방법들이 상기 코드 네트워크 내에서 하나의 파일의 다수의 카피들을 저장하기 위해 이용될 수 있다(예를 들면, 노드 장애들, 부하-분선 등의 경우에서 탄력성을 위해).In the most basic implementation, only one copy of a given file is stored in the code network, but different methods may be used to store multiple copies of one file within the code network (eg, node For resilience in cases of failures, load-disruption, etc.).

일 실시예에서, 예를 들면, 다수의 버전들의 파일이 합의된 명명 규칙을 이용하여 상기 파일의 다수의 카피들에 대한 할당된 약간 상이한 파일명들에 의해 상기 코드 네트워크에 저장될 수 있다. 예를 들면, 파일의 명칭이 "abc"이라면, "-n"과 같은 확장이 동일한 파일을 나타내는 파일명에 부가될 수 있다. 이 예에서, 상기 파일의 다수의 카피들이 상기 명칭들("abc", "abc-1", "abc-2" 등) 하에 저장될 수 있다. 이러한 방식으로, 상기 "abc" 파일에 대한 다수의 파일명들이 동일하지 않기 때문에, 상이한 파일 명들의 해싱은 상이한 해시 출력들 및 그에 따른 상이한 파일 ID들을 야기할 것이고, 그에 의해 상기 파일의 다수의 카피들이 상기 코드 네트워크의 상이한 노드들에 저장되게 할 것이다.In one embodiment, for example, multiple versions of a file may be stored in the code network by assigned slightly different file names for multiple copies of the file using an agreed naming convention. For example, if the name of the file is "abc", an extension such as "-n" may be added to the file name indicating the same file. In this example, multiple copies of the file may be stored under the names ("abc", "abc-1", "abc-2", etc.). In this way, because multiple file names for the "abc" file are not the same, hashing of different file names will result in different hash outputs and hence different file IDs, whereby multiple copies of the file Will be stored in different nodes of the code network.

일 실시예에서, 예를 들면, 파일의 다수의 버전들이 상기 파일명을 이용하여(단일의 일관된 해시 함수가 이용되는 상술된 구현이라기보다는) 상기 파일을 위한 다수의 파일 ID들을 생성하도록 다수의 독립적인 해시 함수들을 이용함으로써 상기 코드 네트워크에 저장될 수 있다. 이 실시예에서, 상기 코드 네트워크로 파일을 시딩(seeding)하는 노드가 상기 해시 함수들을 이용하여 상기 파일의 가능한 파일 ID들의 각각을 결정하고, 상기 파일 ID들을 이용하여 상기 파일의 다수의 카피들을 상기 코드 네트워크에 삽입한다. 이 실시예에서, 상기 코드 네트워크에서 파일을 탐색하는 노드는 상기 파일의 가능한 파일 ID들의 모두를 결정할 것이고(상기 해시 함수들의 각각을 이용하여 상기 파일명을 해싱함으로써) 그 후 상기 결정된 파일 ID들을 연속적으로, 또는 동시에 이용하여 상기 파일을 탐색할 수 있다.In one embodiment, for example, multiple independent versions of multiple files of the file are generated to generate multiple file IDs for the file using the file name (rather than the implementation described above where a single consistent hash function is used). By using hash functions can be stored in the code network. In this embodiment, a node seeding a file with the code network determines each of the possible file IDs of the file using the hash functions and uses the file IDs to retrieve the multiple copies of the file. Insert into code network. In this embodiment, a node searching for a file in the code network will determine all of the possible file IDs of the file (by hashing the file name using each of the hash functions) and subsequently successively determine the determined file IDs. The file may be searched by using or simultaneously.

상기 코드 네트워크에서 파일의 다수의 버전들의 저장에 관하여, 파일의 다수의 버전들이 임의의 다른 적합한 방식으로 상기 코드 네트워크에 저장될 수 있다는 것이 이해될 것이다. With regard to the storage of multiple versions of a file in the code network, it will be understood that multiple versions of a file may be stored in the code network in any other suitable manner.

여기에 설명된 바와 같이, 코드는 노드들이 파일을 공유할 수 있게 한다. 상기 코드 네트워크의 노드들이 파일들을 공유할 수 있도록 하기 위해, 상기 코드 네트워크의 각각의 노드는 원하는 파일을 얻을 수 있도록 상기 원하는 파일의 위치를 탐색하고 궁극적으로 결정할 수 있도록 요구된다. As described herein, the code allows nodes to share a file. In order to allow nodes of the code network to share files, each node of the code network is required to be able to navigate and ultimately determine the location of the desired file to obtain the desired file.

코드에서, 각각의 노드는 탐색 표를 유지한다. M-비트 키 공간을 가진 코드 네트워크를 위해, 각각의 노드(N)는 M개의 엔트리들을 가진 탐색 표를 유지할 것이고, 여기서 상기 탐색 표의 엔트리들은 "핑거들"로서 불리운다. 노드(N)를 위한 상기 탐색 표에서, 제 i 핑거는 N으로부터 떨어진 적어도 2i-1인 상기 원상의 제 1 노드를 나타낸다. 일반적으로, 달리 표시되지 않는다면, 상기 용어 "제 i 핑거"는 상기 탐색 표의 상기 제 i 엔트리에 의해 나타내어지는 노드를 나타내기 위해 이용될 것이다. 예를 들면, 코드 네트워크(100)에서, 노드(0)의 제 3 핑거는 노드(5)이다.In the code, each node maintains a lookup table. For a code network with M-bit key space, each node N will maintain a lookup table with M entries, where the entries in the lookup table are called "fingers". In the search table for node N, the i th finger represents the circular first node that is at least 2 i-1 away from N. In general, unless otherwise indicated, the term "i th finger" will be used to denote a node represented by the i th entry of the search table. For example, in the code network 100, the third finger of node 0 is node 5.

총괄적으로, 상기 노드들의 탐색 표들은 상기 코드 네트워크 내의 오브젝트의 위치(들)가 결정될 수 있는 효율적인 전역적 탐색 알고리즘을 제공한다.Collectively, the search tables of the nodes provide an efficient global search algorithm in which the location (s) of the objects in the code network can be determined.

도 1에서, 상기 키 공간은 6비트들이고, 따라서 각각의 노드는 그것의 탐색 표에서 6개의 핑거들을 가진다. 도 1에서, 노드(0)에 대한 탐색 표는 다음과 같이 표 1에 표시된 바와 같이 표현될 수 있다.In Figure 1, the key space is 6 bits, so each node has six fingers in its search table. In FIG. 1, the lookup table for node 0 may be expressed as shown in Table 1 as follows.

Figure pct00001
Figure pct00001

코드에서, 상기 네트워크는 동적이다. 새로운 노드들이 상기 코드 네트워크에 접속하고 기존의 노드들은 상기 코드 네트워크를 떠나기 때문에, 상기 코드 네트워크의 활성 노드들에서의 탐색 표들이 시행될 수 있다. 이와 같이, 코드에서, 각각의 활성 노드(K)는 그것의 연관된 탐색 표를 주기적으로 업데이트할 것이다. 활성 노드(K)는 임의의 적합한 방식으로 그것의 탐색 표를 업데이트할 수 있다. 예를 들면, 활성 노드(K)는 노드(K+2i-1)를 탐색함으로써 그것의 탐색 표를 업데이트할 수 있으며, 이는 이러한 탐색을 실행하는 것으로부터의 결과가 상기 탐색 표의 제 i 핑거의 값일 것이기 때문이다. 코드 네트워크의 활성 노드들은 임의의 적합한 방식으로 그것들의 탐색 표들을 업데이트할 수 있음이 이해될 것이다.In code, the network is dynamic. Since new nodes connect to the code network and existing nodes leave the code network, lookup tables at active nodes of the code network can be enforced. As such, in the code, each active node K will periodically update its associated search table. The active node K may update its search table in any suitable way. For example, the active node K may update its search table by searching for node K + 2 i-1 , which results from performing this search on the i th finger of the search table. It will be a value. It will be appreciated that active nodes of the code network may update their search tables in any suitable manner.

코드에서, 상기 탐색 표 외에, 각각의 노드는 또한 링에서 그것의 후속자 및 그것의 선행자의 아이덴티티들을 저장한다. 이러한 정보는 새로운 노드들이 상기 네트워크에 접속하고 기존의 노드들이 상기 네트워크를 떠날 때, 뿐만 아니라 노드들이 장애로부터 복구될 때와 같이, 링 유지를 위해 이용된다. 몇몇 코드 네트워크들에서, 다수의 동시 발생 노드 장애들이 존재하는 상황에 대해 경계하기 위해, 노드는 링에서 그것의 N개의 후속자들 및 그것의 N개의 선행자들의 아이덴티티들을 저장할 수 있다.In code, in addition to the lookup table, each node also stores the identities of its successors and its predecessors in the ring. This information is used for ring maintenance, such as when new nodes connect to the network and existing nodes leave the network, as well as when nodes recover from failure. In some code networks, a node may store the identity of its N successors and its N predecessors in the ring, in order to be alert to the situation where there are multiple concurrent node failures.

코드에서, 상기 코드 네트워크의 노드들은 상기 코드 네트워크의 다른 노드들을 탐색하고 그로부터 파일들을 획득할 수 있다. 상기 코드 네트워크는 노드들이 상기 코드 네트워크에서의 다른 노드들로부터 이용가능한 파일들을 탐색할 수 있는 탐색 알고리즘을 지원한다. 상기 코드 탐색 알고리즘의 동작은 도 1의 코드 네트워크(100)를 이용한 일 예를 통해 도시될 수 있다. 이 예에서, 노드(2)는 도 1의 코드 네트워크(100)에서 파일(0)을 탐색하길 원한다고 가정한다. 노드(2)는 파일 요청을 전송할 다른 노드들 중 하나를 선택하기 위해 그것의 탐색 표를 액세스할 것이다. 노드(2)의 관점으로부터, 상기 타겟 파일의 파일 ID(즉, 파일(0))는 랩어라운드로 인해 노드(2)의 가장 큰 핑거의 값(즉, 노드(34))보다 크며, 노드(2)는 노드(34)가 파일(0)을 탐색하도록 요청하는 파일 요청을 노드(34)에 전송할 것이다. 노드(34)는 노드(2)로부터 상기 파일 요청을 수신한다. 파일(0)을 저장하지 않기 때문에, 노드(34)는 상기 파일 요청을 포워딩할 다른 노드들 중 하나를 선택하기 위해 그것의 탐색 표를 액세스할 것이다. 노드(34)에서, 상기 탐색 표는 노드들(35, 37, 40, 43, 51, 및 2)을 나타내는, 6개의 핑거들을 포함한다. 파일(0)의 오브젝트 ID는 제 5 및 제 6 핑거들(각각 노드(51) 및 노드(2)) 사이에 있기 때문에, 노드(34)는 상기 탐색 요청을 상기 제 5 핑거(노드(51))에 의해 식별된 노드에 포워딩한다. 노드(51)는 노드(34)로부터 상기 파일 요청을 수신한다. 노드(51)는 그것이 파일(0)을 저장하지 않기 때문에, 상기 파일 요청을 전송할 다른 노드들 중 하나를 선택하기 위해 상기 탐색 표를 액세스할 것이다. 노드(51)에서, 상기 탐색 표는 노드들(53, 53, 56, 62, 3, 및 19)을 나타내는 6개의 핑거들을 포함한다. 파일(0)의 오브젝트 ID는 제 4 및 제 5 핑거들(각각, 노드(62) 및 노드(3)) 사이에 있기 때문에, 노드(51)는 상기 탐색 요청을 상기 제 4 핑거(노드(62))에 의해 식별된 노드에 포워딩한다. 노드(62)는 노드(51)로부터 상기 파일 요청을 수신한다. 노드(62)는 그것이 파일(0)을 저장하지 않기 때문에, 상기 파일 요청을 전송할 다른 노드들 중 하나를 선택하기 위해 그것의 탐색 표를 액세스할 것이다. 노드(62)에서, 상기 탐색 표는 노드들(0, 0, 2, 6, 16, 및 30)을 나타내는, 6개의 핑거들을 포함한다. 파일(0)의 오브젝트 ID는 제 1 및 제 2 핑거들(노드(0)) 모두에서 나타내어지기 때문에, 노드(62)는 노드(0)가 활성이고 상기 탐색 요청을 노드(0)에 포워딩한다는 것을 알고 있다. 상기 탐색 요청을 수신하는 것에 응답하여, 상기 노드(0)는 직접 또는 파일(0)을 가지는 중간 노드들(즉, 노드(62), 노드(51), 노드(34), 및 그 후 노드(0))을 통해 노드(2)에 응답한다. 상기 노드(2)는 그 후 노드(0)로부터 직접 파일(0)을 획득할 수 있다. 따라서, 이 예로부터, 코드에서, 코드 네트워크에서 상기 노드들의 모두가 상기 코드 탐색 알고리즘을 지원하기 위해 협력한다는 것이 명확하다.In code, nodes of the code network may search for and obtain files from other nodes of the code network. The code network supports a search algorithm that allows nodes to search for files available from other nodes in the code network. The operation of the code search algorithm may be illustrated by way of example using the code network 100 of FIG. 1. In this example, assume that node 2 wants to search for file 0 in code network 100 of FIG. Node 2 will access its lookup table to select one of the other nodes to send the file request. From the point of view of node 2, the file ID of the target file (i.e. file 0) is greater than the value of the largest finger of node 2 (i.e. node 34) due to wraparound and the node ( 2) will send a file request to node 34 requesting node 34 to search for file 0. Node 34 receives the file request from node 2. Since it does not store file 0, node 34 will access its lookup table to select one of the other nodes to forward the file request. At node 34, the lookup table includes six fingers, representing nodes 35, 37, 40, 43, 51, and 2. Since the object ID of file 0 is between the fifth and sixth fingers (node 51 and node 2, respectively), node 34 sends the search request to the fifth finger (node 51). Forward to the node identified by). Node 51 receives the file request from node 34. Node 51 will access the lookup table to select one of the other nodes to send the file request since it does not store file 0. At node 51, the lookup table includes six fingers representing nodes 53, 53, 56, 62, 3, and 19. Since the object ID of file 0 is between the fourth and fifth fingers (node 62 and node 3, respectively), node 51 sends the search request to the fourth finger (node 62). Forward to the node identified by)). Node 62 receives the file request from node 51. Since node 62 does not store file 0, it will access its lookup table to select one of the other nodes to send the file request. At node 62, the lookup table includes six fingers, representing nodes 0, 0, 2, 6, 16, and 30. Since the object ID of file 0 is represented at both the first and second fingers (node 0), node 62 indicates that node 0 is active and forwards the search request to node 0. I know that. In response to receiving the search request, node 0 is directly or intermediate nodes having a file 0 (ie, node 62, node 51, node 34, and then node (). Reply to node 2). The node 2 can then obtain the file 0 directly from the node 0. Thus, from this example, it is clear that in the code, all of the nodes in the code network cooperate to support the code search algorithm.

코드에서, 노드들이 언제든 상기 코드 네트워크를 연결할 수 있고 상기 코드 네트워크를 떠날 수 있기 때문에, 상기 코드 네트워크는 동적이다. 노드들이 상기 코드 네트워크에 접속하고 떠날 때, 파일들은 노드들 간에 전달된다. 예를 들면, 연결 노드는 적어도 상기 연결 노드의 노드 ID와 동일한 파일 ID를 가진 파일(및, 잠재적으로 또한 다른 파일들)을 저장하기 위한 책임을 떠맡는 반면, 떠나는 노드는 하나 이상의 파일들을 저장하기 위한 책임을 또 다른 노드에 전달할 수 있다. 코드 네트워크를 참여하고 떠나는 것과 연관된 절차들이 이하에 부가적으로 상세히 설명된다.In code, the code network is dynamic because nodes can connect to the code network at any time and leave the code network. As nodes connect and leave the code network, files are transferred between nodes. For example, a connecting node assumes responsibility for storing a file (and potentially also other files) having at least the same file ID as the connecting node's node ID, while the leaving node is responsible for storing one or more files. Responsibility can be passed on to another node. The procedures associated with joining and leaving the code network are described in further detail below.

코드 연결 절차(Chord join procedure)에서, 노드가 코드 네트워크에 접속하기를 원할 때, 연결 노드는 그것의 노드 ID를 결정한다. 상기 연결 노드는 그것의 명칭을 키 값으로 해싱함으로써 그것의 노드 ID를 결정한다. 예를 들면, 상기 노드의 명칭이 node-xyx@company-abc.com이라면, 상기 노드 ID는 SHA-1의 출력(node-xyx@company-abc.com)일 것이고, 여기서, 단순함을 위해 우리는 상기 해시 함수가 SHA-1이라고 가정한다(비록, 임의의 적합한 해싱 함수가 이용될 수 있지만). 이 예에서, 상기 해싱 동작으로부터 결정된 바와 같이, 이러한 노드를 위한 노드 ID를 K라 하자.In a code join procedure, when a node wants to join a code network, the joining node determines its node ID. The connecting node determines its node ID by hashing its name with a key value. For example, if the name of the node is node-xyx@company-abc.com, the node ID would be the output of SHA-1 (node-xyx@company-abc.com), where for simplicity we will Assume the hash function is SHA-1 (although any suitable hashing function can be used). In this example, let K be the node ID for this node, as determined from the hashing operation.

상기 코드 연결 절차에서, 상기 연결 노드(K)는 그 후 상기 코드 네트워크의 활성 노드(초기화 노드로서 표기된)를 접촉한다. 처음에는, 이러한 초기화 노드는 중앙 집중 서버인 것처럼 보일 수 있지만, 이것은 다음과 같은 경우가 아니다: (a) 상기 초기화 노드는 상기 코드 네트워크에서 현재 활성인 임의의 노드일 수 있다(예로서, 노드(K1) 및 노드(K2)가 동시에 상기 코드 네트워크에 접속하기를 원한다면, 그것들은 상기 네트워크에 접속하기 위한 그것들 각각의 초기화 노드들로서 서로 다른 활성 노드들을 이용할 수 있으며, 이용할 가능성이 높다) 및 (b) 상기 초기화 노드는 기본적인 능력들 외에 임의의 특별한 능력을 제공할 필요가 없다(즉, 그것은 단지 상기 코드 네트워크에서 임의의 다른 노드처럼 행동할 수 있다). 상기 노드(K)는 임의의 적합한 방식으로 잠재적인 후보 초기화 노드들의 리스트를 획득할 수 있다(예로서, 연결 노드(K)에 대한 하나 이상의 탐색 표들, 후속자 리스트들 및/또는 프로세서 리스트들로부터, 연결 노드(K) 내에 관리상 구성된 정보로부터, 웹 사이트로부터 등). 이 예에서, 상기 초기화 노드의 노드 ID를 L이라 하자.In the code connection procedure, the connection node K then contacts an active node (denoted as an initialization node) of the code network. Initially, such an initialization node may appear to be a centralized server, but this is not the case: (a) The initialization node may be any node currently active in the code network (eg, node ( If K1) and node K2 want to connect to the code network at the same time, they may use and are likely to use different active nodes as their respective initiating nodes for connecting to the network) and (b) The initiating node need not provide any special capability other than the basic capabilities (ie it can only act like any other node in the code network). The node K may obtain a list of potential candidate initialization nodes in any suitable manner (eg, from one or more lookup tables, successor lists and / or processor lists for the connecting node K). , From administratively configured information within the connecting node K, from a web site, etc.). In this example, let L be the node ID of the initialization node.

상기 코드 연결 절차에서, 연결 노드(K)는 그 후 초기화 노드(L)가 연결 노드(K)를 탐색하는 요청을 전송한다(즉, ID = K를 가진 오브젝트를 탐색). 이 점에서, 두 개의 이벤트들이 발생할 수 있다:In the code concatenation procedure, the connection node K then sends a request for the initialization node L to search for the connection node K (ie, search for an object with ID = K). At this point, two events can occur:

(A) 노드(L)는 N의 값을 가진 연결 노드(K)에 응답한다. 노드(N)는 모든 활성 노드들 가운데 연결 노드(K)와 연관된 K보다 큰 노드 ID를 가진, 노드일 것이다. 따라서, 연결 노드(K)가 상기 코드 네트워크를 연결하기 위한 것이라면, 노드(N)는 연결 노드(K)에 대한 후속자 노드여야 한다. 노드(K)는 그 후 노드(N)를 접촉하고, 노드(N)의 선행자 노드의 아이덴티티를 노드(N)에 요청한다. 이 예에서, 노드(N)의 선행자는 노드 N-으로서 표기된다. 상기 노드(N)는 연결 노드(K)에 N-의 값을 제공한다. 이러한 정보에 기초하여, 노드(K)는 그 후 노드(N) 및 노드(N-) 사이의 코드 네트워크로 스스로 삽입해야 한다는 것을 알고 있다.(A) Node L responds to connection node K with a value of N. Node N will be a node with a node ID greater than K associated with connecting node K, among all active nodes. Thus, if connection node K is for connecting the code network, node N should be a successor node to connection node K. Node K then contacts node N and requests node N for the identity of the predecessor node of node N. In this example, the predecessor of node N is denoted as node N-. The node N provides the connection node K with a value of N−. Based on this information, it is known that node K must then insert itself into the code network between node N and node N-.

(B) 노드(L)는 K의 값을 갖고 연결 노드(K)에 응답한다. 이것은 상기 코드 네트워크 내에 이미 활성인 K의 노드 ID를 가진 또 다른 노드가 존재한다는 것을 의미한다. 이러한 경우는 대부분의 코드 네트워크들에서 매우 가능성이 낮지만(예로서, 160 비트 키 공간인 코드 네트워크(100)에서, 이러한 발생 상황의 공산은 1.45*1048에서 1이다), 가능하다. 이러한 상황은 그 자신의 이름을 약간 변경한 연결 노드(K)를 갖고(예로서, 타임스탬프를 부가하고, 숫자를 부가하는 등) 상이한 노드 ID(K'로서 표기된)를 생성하기 위해 상기 새로운 노드 명칭을 이용함으로써 해소될 수 있다. 상기 연결 노드(K')는 새로운 탐색 요청을 초기화 노드(L)(즉, 상기 초기화 노드(L)가 연결 노드(K')를 탐색하는 요청)에 전송함으로써 상기 프로세스를 다시 시작할 수 있다.(B) Node L has a value of K and responds to connection node K. This means that there is another node in the code network with a node ID of K already active. This case is very unlikely in most code networks (eg, in code network 100, which is a 160 bit key space, the probability of this occurrence is 1.45 * 10 48 to 1) is possible. This situation has the connection node K slightly changed its own name (e.g. adding a timestamp, adding a number, etc.) to generate a different node ID (denoted as K '). Can be resolved by using a name. The connection node K 'may restart the process by sending a new discovery request to the initialization node L (i.e., the request that the initialization node L searches for the connection node K').

상기 코드 연결 절차에서, 상기 연결 노드(K)에 대한 삽입부의 결정에 이어, 처리가 상기 코드 네트워크 내예를 들면, 노드를 삽입하기 위해 실행된다. 상기 연결 노드(K)는 노드(K-)(K의 후보 선행자) 및 노드(K+)(K의 후보 선행자) 사이에 삽입되고, 여기서, 이때, 노드(K)가 상기 네트워크에 접속하기 전에, 노드(K+)는 노드(K-)의 후속자이다. 상기 연결 노드(K)는 그것이 상기 코드 네트워크에 접속하고자 함을 나타내는 후속자 노드(K+)를 접촉한다. 상기 후속자 노드(K+)는 그 후 (1) 그것의 선행자가 노드(K-)임을 연결 노드(K)에 알리고, (2) 노드(K)가 책임을 가져야 하는 임의의 파일들(즉, (K-)+1 내지 K의 파일 ID들을 가진 파일들)을 연결 노드(K)에 전달하기 시작하고, (3) 연결 노드(K)가 상기 코드 네트워크에 접속하는 프로세스에 있음을 그것의 선행자 노드(K-)에 알린다. 상기 파일 전달이 완료된 후, 연결 노드(K)는 선행자 노드(K-)와의 연결을 수립한다. 연결 노드(K) 및 선행자 노드(K-) 사이의 연결이 수립된 후, 연결 노드(K)는 상기 코드 네트워크에 성공적으로 연결하였음을 후속자 노드(K+)에 알린다. 상기 후속자 노드(K+)는 그 후 선행자 노드(K-)와의 연결을 해제하고, 후속자 노드(K+) 및 선행자 노드(K-) 둘 모두는 그것들의 선행자 및 후속자 리스트들을 업데이트한다.In the code connection procedure, following the determination of the insert for the connection node K, a process is executed to insert a node, for example in the code network. The connecting node K is inserted between node K− (the candidate predecessor of K) and node K + (the candidate predecessor of K), where at this time, before node K connects to the network, Node K + is the successor of node K-. The connecting node K contacts the successor node K + indicating that it wishes to connect to the code network. The successor node K + then (1) informs the connecting node K that its predecessor is node K-, and (2) any files that node K should be responsible for (i.e., (K-) + files with file IDs from 1 to K), and (3) its predecessor that connection node (K) is in the process of connecting to the code network. Notifies node K-. After the file transfer is completed, the connecting node K establishes a connection with the predecessor node K-. After the connection between the connection node K and the predecessor node K− is established, the connection node K informs the successor node K + that it has successfully connected to the code network. The successor node K + then disconnects from the predecessor node K-, and both the successor node K + and the predecessor node K- update their predecessor and successor lists.

상기 코드 리브 절차(Chord leave procedure)에서, 처리는 상기 리브 노드(K)가 제어된 방식으로 상기 코드 네트워크를 떠날 수 있게 하기 위해 실행된다. 떠나는 상기 노드(K)는 선행자 노드(노드(K-)로서 표기된) 및 그와 연관된 후속자 노드(노드(K+)로 표기된)를 가진다. 상기 리브 노드(K)는 상기 선행자 노드(K-) 및 상기 후속자 노드(K+) 둘 모두를 접촉하고, 그것이 상기 코드 네트워크를 떠나려고 한다는 것을 둘 모두에게 알리고 다른 것의 아이덴티티를 상기 노드들 둘 모두에 제공한다. 상기 리브 노드(K)는 그 후 리브 노드(K)가 현재 상기 코드 네트워크를 대신하여 저장하고 있는 파일들의 모두(즉, K를 포함하여, (K-)+1 및 K 사이의 모든 ID들을 가진 모든 파일들)을 후속자 노드(K+)에 전달한다. 상기 파일들의 전달이 완료된 후, 연결 노드는 선행자 노드(K-) 및 후속자 노드(K+)로부터 접속해제함으로써 상기 코드 네트워크를 떠난다. 노드들(K-, K+)은 그 후 그 사이예를 들면,을 수립한다(그것들 중 하나에 의해 개시될 수 있는). 노드들(K-, K+)은 또한 그것들의 선행자 및 후속자 리스트들을 업데이트한다.In the Chord leave procedure, processing is performed to enable the rib node K to leave the chord network in a controlled manner. The leaving node K has a predecessor node (denoted as node K-) and a subsequent node associated with it (denoted node K +). The rib node K contacts both the predecessor node K− and the successor node K + and informs both that it is about to leave the code network and informs the identity of another of both nodes. To provide. The rib node K then has all of the IDs between (K −) + 1 and K, including K, that is currently being stored on behalf of the code network by the rib node K. All files) to the successor node (K +). After the transfer of the files is completed, the connecting node leaves the code network by disconnecting from the predecessor node K- and the successor node K +. Nodes K- and K + then establish, for example, between them (which can be initiated by one of them). Nodes K- and K + also update their predecessor and successor lists.

상기 코드 네트워크에 대한 동적 변화들을 가능하게 하기 위한 동적 상기 코드 연결 절차 및 상기 코드 리브 절차의 이용 외에, 코드는 또한 노드 장애들로부터의 복구를 가능하게 하기 위한 코드 복구 절차를 지원한다(즉, 상기 코드 리브 및 코드 연결 절차들은 노드 장애들로부터 복구하기 위해 이용되지 않는다). 코드 네트워크의 노드들은 주기적으로 그것들의 선행자 및 후속자 노드들 각각에 하트비트 메시지들(heartbeat messages)을 전송하고, 그에 의해 상기 코드 네트워크의 노드들이 노드 장애들을 빨리 검출할 수 있게 한다. 일반적으로, 노드로부터의 상기 하트비트 메시지는 상기 하트비트 메시지가 유래하는 노드의 선행자 및 후속자 노드들의 아이덴티티들을 포함할 것이다. 이러한 방식으로, 노드가 그것의 후속자 노드로부터 하트비트 메시지를 수신할 때, 그것은 그것의 후속자 노드의 상기 후속자 노드의 아이덴티티를 알며, 따라서, 노드의 후속자가 실패할 때, 상기 노드는 그것의 후속자 노드의 후속자 노드에 대한 연결을 개시할 수 있고 상기 코드 링이 유지된다. 상기 논의된 바와 같이, 몇몇 코드 네트워크들에서, 노드들은 k개의 선행자들 및 k개의 후속자들의 리스트들을 유지한다. 이러한 경우에, 상기 코드 네트워크는 k-1개의 연속적인 노드들의 장애들로부터 복구할 수 있다. 이러한 경우에, k의 값은 값에 대해서조차, k개의 연속적인 노드들의 장애의 가능성은 매우 작다. 몇몇 이러한 코드 네트워크들에서, k에 대한 값은 2*log2(L)로서 결정될 수 있으며, 여기서 L은 상기 네트워크에서의 활성 노드들의 평균 수이다(즉, 보통 100,000개의 활성 노드들을 가는 코드, k는 ~34일 것이다).In addition to using the dynamic code concatenation procedure and the code rib procedure to enable dynamic changes to the code network, the code also supports a code recovery procedure to enable recovery from node failures (ie, the Code rib and code attach procedures are not used to recover from node failures). Nodes of the code network periodically send heartbeat messages to each of their predecessor and successor nodes, thereby enabling nodes of the code network to quickly detect node failures. In general, the heartbeat message from a node will contain the identities of the predecessor and successor nodes of the node from which the heartbeat message originates. In this way, when a node receives a heartbeat message from its successor node, it knows the identity of the successor node of its successor node, so when the node's successor fails, the node does not The connection to the successor node of the successor node of may be initiated and the code ring is maintained. As discussed above, in some code networks, nodes maintain lists of k predecessors and k successors. In this case, the code network can recover from the failures of k-1 consecutive nodes. In this case, even for the value of k, the probability of failure of k consecutive nodes is very small. In some such code networks, the value for k may be determined as 2 * log 2 (L), where L is the average number of active nodes in the network (i.e., code that normally goes 100,000 active nodes, k) Will be ~ 34).

상술된 코드 복구 절차(Chord recovery procedure)는 상기 코드 네트워크가 노드 장애들의 경우에 보수될 수 있게 하지만, 상기 실패한 노드들에 저장되는 파일들은 손실된다. 이러한 문제는 다양한 방식들로 상기 설명된 것 중 적어도 두 개로 해소될 수 있다. 부가적으로, 또 다른 실시예에서, 이러한 문제는 파일들을 획득한 노드들이 자발적으로 상기 파일들을 위한 시드 노드들(seed nodes)이 되게 함으로써 해소된다. 하나의 이러한 실시예에 대한 설명이 따른다. 파일은 원래 상기 코드 네트워크의 멤버에 의해 상기 코드 네트워크에 도입된다(여기서, 상기 멤버 노드는 상기 파일의 시드 노드로서 불리운다). 상기 시드 노드는 상기 파일명(즉, 상기 파일 ID)의 해싱된 값을 획득하고, 상기 파일 ID와 동일한 노드 ID를 가진 노드를 탐색한다. 상기 시드 노드는 상기 파일 ID와 동일하거나 그보다 큰 노드 ID를 가진 상기 코드 네트워크에 제 1 활성 노드의 위치를 찾을 것이다. 상기 시드 노드는 상기 파일을 상기 위치를 찾은 노드에 전송한다. 그 후, 나중에 상기 파일을 획득하는 상기 코드 네트워크의 다른 노드들이 자발적으로 상기 파일을 위한 시드 노드들이 될 수 있다. 파일을 위한 시드 노드는 주기적으로 상기 코드 네트워크에서 상기 파일을 탐색할 것이고, 상기 시드 노드가 상기 파일을 찾는데 실패한다면, 그것은 상기 파일을 상술된 바와 같이 적절한 노드에 전송할 것이다. 이러한 방식으로, "손실된" 파일들이 상기 코드 네트워크에서 복구된다.The code recovery procedure described above allows the code network to be repaired in case of node failures, but files stored on the failed nodes are lost. This problem can be solved in at least two of the above described in various ways. Additionally, in another embodiment, this problem is solved by having the nodes that have obtained the files voluntarily become seed nodes for the files. One description of one such embodiment follows. The file is originally introduced into the code network by a member of the code network (where the member node is called as the seed node of the file). The seed node obtains a hashed value of the file name (ie, the file ID) and searches for a node having a node ID equal to the file ID. The seed node will locate the first active node in the code network with a node ID equal to or greater than the file ID. The seed node sends the file to the node that finds the location. Thereafter, other nodes of the code network that later acquire the file may voluntarily become seed nodes for the file. The seed node for the file will periodically search for the file in the code network, and if the seed node fails to find the file, it will send the file to the appropriate node as described above. In this way, "lost" files are recovered in the code network.

여기에 설명된 바와 같이, 파일들을 저장하고 공유하는 것 외에, 코드 네트워크는 또한 서비스들을 지원할 수 있다. 기존의 코드 네트워크들이 단지 파일 공유 서비스들을 지원했다면, 코드 네트워크들은 점차 파일 공유 서비스들 외에 하나 이상의 다른 서비스들을 지원할 수 있다. 서비스는 모든 노드들 또는 노드들의 서브세브로부터 이용가능할 수 있으며, 단지 노드들의 작은 서브세트로부터 이용가능할 수 있다. 서비스는 상기 노드들의 모두 또는 일부에 대해 의무적일 수 있거나, 또는 자유 의사에 따라 상기 노드들에 의해 지원될 수 있다. 서비스를 지원하는 상기 노드(들)는 활성 및 비활성 사이에서 전이할 수 있다. 코드 네트워크들에서 서비스들을 지원하는 것과 연관된 이들 특징들의 각각은 상기 지원하는 서비스의 유형, 상기 코드 네트워크의 구현, 유사한 인자들 중 하나 이상에 기초하여 변화할 수 있다. 코드 네트워크들에서 서비스들의 지원의 가능성을 고려하여, 상기 서비스 위치 찾기 능력은 상기 코드 네트워크 내의 상기 노드들의 각각이 특정 서비스를 제공하는 노드를 탐색하고 매치하게 할 수 있게 한다.As described herein, in addition to storing and sharing files, the code network may also support services. If existing code networks only supported file sharing services, code networks may increasingly support one or more other services in addition to file sharing services. The service may be available from all nodes or a subset of nodes, and may only be available from a small subset of nodes. Service may be mandatory for all or some of the nodes, or may be supported by the nodes at will. The node (s) supporting the service may transition between active and inactive. Each of these features associated with supporting services in code networks may vary based on one or more of the type of supporting service, the implementation of the code network, similar factors. In view of the possibility of supporting services in code networks, the service locating capability allows each of the nodes in the code network to search for and match a node providing a particular service.

상기 서비스 위치 찾기 능력은 특정 서비스를 지원하는 노드의 위치를 찾기 위해 이용될 때, 적어도 다음 이유들로 유리하다: (1) 그것은 상기 코드 네트워크의 상기 노드들 상에서 유지된 기존의 탐색 표들을 이용한다(즉, 새로운 탐색 표이 상기 노드들에 대해 요구되지 않는다); (2) 상기 탐색이 분배된다(예로서, 서비스를 탐색할 때, 상기 서비스 탐색을 개시하는 개시 노드는 기껏해야 M개의 메시지들을 개시할 것이고(여기서, M은 상기 코드 네트워크의 키 공간의 길이이다) 그에 따라 상기 개시 노드가 압도적인 수의 응답들에 의해 폭주되지 않도록 기껏해야 M개의 응답 메시지들을 수신할 것이다; 및 (3) 상기 서비스 탐색은 순서대로, 단계적으로 실행될 수 있으며, 여기서 각각의 단계는 상기 코드 네트워크에서 교환된 메시지들의 수가 최소화되도록 큰 성공 확률을 갖도록 구성될 수 있다. 상기 서비스 위치 찾기 능력은 또한 (많은 애플리케이션들에서 유용한) 효율적인 방송을 가능하게 하는 이득을 가진다.The service locating capability is advantageous for at least the following reasons when used to find the location of a node supporting a particular service: (1) it uses existing lookup tables maintained on the nodes of the code network ( That is, no new lookup table is required for the nodes); (2) the search is distributed (eg, when searching for a service, the initiating node initiating the service search will initiate at most M messages (where M is the length of the key space of the code network) ) Thus at most the M response messages will be received such that the initiating node is not congested by an overwhelming number of responses; and (3) the service search can be executed in stages, step by step, where each step Can be configured to have a large probability of success such that the number of messages exchanged in the code network is minimized The service locating capability also has the benefit of enabling efficient broadcasting (useful in many applications).

코드 네트워크에서 위치 찾기될 수 있는 상기 서비스들은 코드 네트워크에 의해 지원되기에 적절한 임의의 서비스들을 포함한다.The services that can be located in the code network include any services suitable to be supported by the code network.

코드 네트워크의 노드들에 의해 지원될 수 있는 제 1 서비스는 노드가 다수의 링크된 코드 네트워크들을 가로질러 파일을 탐색할 수 있는 "크로스-링 탐색(cross-ring searching)" 서비스이다. 일반적으로, 코드 네트워크는 커뮤니티에 대한 관심 있는 파일들이 저장되고 공유되는 관심 있는 커뮤니티를 나타낸다. 노드는 다수의 코드 네트워크들에 속할 수 있다. 이것은 코드 네트워크들예를 들면,할 수 있는 노드들과 연관된 개개의 이용자들이 상이한 관심을 가질 가능성이 높으며, 따라서 적어도 몇몇 노드들은 다수의 세트들의 코드 네트워크들에 속할 가능성이 높다는 이해로부터 명백하다. 노드가 코드 네트워크에서 파일을 탐색할 때, 상기 탐색 노드는, (a) 상기 파일이 상기 네트워크에 결코 저장되지 않는다(예로서, 상기 파일이 새롭게 생성되고 상기 코드 네트워크의 상기 노드들 중 어떤 것도 아직 상기 파일을 획득하지 않았다); (b) 상기 파일은 상기 커뮤니티에 대해 관심이 없을 수 있으며, 따라서 상기 코드 네트워크에 저장되지 않는다; (c) 상기 코드 네트워크에서의 각각의 노드가 상기 코드 네트워크를 대신하여 저장할 수 있는 파일들의 수에 대한 실제적인 제한을 가진다는 사실로 인해(예로서, 드문 경우들에서, 노드 및 그것의 선행자 간의 갭이 너무 크고, 따라서 상기 노드가 상기 파일들 모두를 저장할 수 없다; 예로서, 상기 코드 네트워크의 정책은 통상적으로 더 오래되고 및/또는 덜 인기있는 파일들이 저장될 수 없으며, 따라서 상기 코드 네트워크 내에서 이용가능하지 않을 것임을 특정한다); 및 (d) 노드들의 장애들은 몇몇 파일들이 상기 코드 네트워크 내에서 이용가능하지 않게 야기할 수 있으며; 및 (5) 파일들이 상기 코드 네트워크에서 이용가능하지 않게 야기할 수 있는 임의의 다른 이유들과 같이, 임의의 수의 이유들로 상기 코드 네트워크 내에서 상기 파일의 위치 찾기에 실패할 수 있다, 파일을 탐색하는 코드 네트워크의 노드가 다수의 코드 네트워크들에 속한다면, 상기 노드는 그것이 속하는 상기 코드 네트워크들의 각각에서 상기 파일을 탐색할 수 있다. 코드 네트워크의 노드가 상기 노드가 속하는 상기 코드 네트워크(들)에서 상기 파일의 위치를 찾을 수 없다면, 상기 노드는 그 후 하나 이상의 다른 코드 네트워크들에서 상기 파일을 탐색하고자 할 수 있다. 이 경우에, 상기 노드는 하나 이상의 다른 코드 네트워크들(이미 탐색된 상기 코드 네트워크(들) 외의)에 접속되는 상기 코드 네트워크에 다른 노드들을 탐색하길 원할 수 있다. 하나 이상의 부가적인 코드 네트워크들로의 상기 파일을 위한 탐색의 이러한 확대는 다른 코드 네트워크들에 속하는 상기 코드 네트워크의 노드들이 다수의 코드 네트워크들을 가로질러 상기 파일을 탐색하는데 이용하기 위해 위치를 찾는 크로스-링 탐색 서비스를 이용하여 실행된다.The first service that may be supported by nodes of a code network is a "cross-ring searching" service, which allows a node to search for files across multiple linked code networks. In general, a code network represents an interesting community in which files of interest to a community are stored and shared. A node can belong to multiple code networks. This is evident from the understanding that individual users associated with possible code networks, for example, may have different interests, and therefore at least some nodes are likely to belong to multiple sets of code networks. When a node searches for a file in the code network, the search node may: (a) the file is never stored in the network (eg, the file is newly created and none of the nodes in the code network are yet; Did not obtain the file); (b) the file may not be of interest to the community and is therefore not stored in the code network; (c) due to the fact that each node in the code network has a practical limit on the number of files it can store on behalf of the code network (eg, in rare cases, between a node and its predecessor). The gap is too large and thus the node cannot store all of the files; for example, the policy of the code network is typically that older and / or less popular files cannot be stored, and thus within the code network It will not be available); And (d) failures of nodes can cause some files to be unavailable in the code network; And (5) the location of the file within the code network may fail for any number of reasons, such as for any other reasons that may cause files not to be available in the code network. If a node of the code network searching for belongs to multiple code networks, the node may search for the file in each of the code networks to which it belongs. If a node of a code network cannot find the location of the file in the code network (s) to which the node belongs, then the node may then wish to search for the file in one or more other code networks. In this case, the node may wish to discover other nodes in the code network that are connected to one or more other code networks (other than the code network (s) already discovered). This extension of the search for the file to one or more additional code networks is cross-located for use by nodes of the code network belonging to other code networks to search the file across multiple code networks. It is implemented using the ring search service.

코드 네트워크의 노드들에 의해 지원될 수 있는 제 2 서비스는 "번역" 서비스이다. 상기 번역 서비스는 언어들 간에 문서들을 번역하기 위한 것일 수 있다. 예를 들면, 상기 코드 네트워크의 노드는 영어에서 독일어로 번역된 문서를 원할 수 있으며, 상기 코드 네트워크에서 상기 노드들의 일부는 이러한 능력을 가질 수 있다. 유사하게는, 상기 코드 네트워크의 노드가 이탈리아어에서 프랑스어로 번역된 문서를 원할 수 있으며, 상기 코드 네트워크에서의 상기 노드들 중 일부가 이러한 능력을 가질 수 있다. 이러한 유형의 서비스를 위해, 노드는 단지 번역 서비스들을 지원하지 않는 노드들이 아닌, 보다 상세하게는, 상기 탐색 노드에 의해 요구된 특정 번역 서비스들(즉, 하나의 언어에서 또 다른 언어로의 번역)을 지원하는 노드들의 위치를 찾도록 시도할 수 있다.The second service that can be supported by the nodes of the code network is a "translation" service. The translation service may be for translating documents between languages. For example, a node of the code network may want a document translated from English to German, and some of the nodes in the code network may have this capability. Similarly, a node of the code network may want a document translated from Italian to French, and some of the nodes in the code network may have this capability. For this type of service, the node is not just nodes that do not support translation services, more specifically the specific translation services required by the search node (ie translation from one language to another). You can try to find the location of nodes that support.

상술된 대표적인 서비스들은 파일 공유 외에, 코드 네트워크들에 의해 지원될 수 있는 많은 상이한 서비스들이 존재한다는 것을 입증한다. 따라서, 비록 코드 네트워크들에서 제공될 수 있는 서비스들의 특정 예들이 상기 서비스 위치 찾기 능력을 설명할 때 명료함을 위해 여기에서 설명되지만, 상기 서비스 위치 찾기 능력은 임의의 특정 서비스를 갖고 이용하기 위해 제한되지 않는다는 것이 이해될 것이다.The representative services described above demonstrate that in addition to file sharing, there are many different services that can be supported by code networks. Thus, although specific examples of services that may be provided in code networks are described herein for clarity when describing the service location capability, the service location capability is limited to use with any particular service. Will be understood.

상기 서비스 위치 찾기 능력은 코드 네트워크 상의 노드가 특정 서비스를 지원하거나 제공하는 상기 코드 네트워크 상에 하나 이상의 다른 노드들의 위치를 찾을 수 있는 알고리즘을 제공한다.The service locating capability provides an algorithm that allows a node on a code network to locate one or more other nodes on the code network that support or provide a particular service.

여기에 설명된 바와 같이, 기존의 코드 네트워크들은 코드 네트워크들 상에서의 노드들이 상기 코드 네트워크 상에서 다른 노드들을 탐색하거나 상기 코드 네트워크에 저장된 파일들을 탐색할 수 있게 한다. 여기에 묘사되고 설명된 상기 서비스 위치 찾기 능력은 코드 네트워크로 하여금 상기 코드 네트워크 내에 새로운 유형의 탐색, 즉 상기 코드 네트워크 상에서의 노드가 상기 코드 네트워크 상에 특정 서비스의 위치를 탐색할 수 있는 서비스 위치 탐색을 지원할 수 있게 한다(즉, 서비스 탐색 요청에서 특정한 바와 같이, 특정 서비스를 지원하는 상기 코드 네트워크 상의 하나 이상의 다른 노드들을 탐색하기 위해).As described herein, existing code networks allow nodes on code networks to search for other nodes on the code network or to search files stored in the code network. The service location locating capability described and described herein allows a code network to search for a new type of search within the code network, ie a node on the code network can locate a particular service on the code network. (I.e., to search for one or more other nodes on the code network that support a particular service, as specified in a service search request).

상기 서비스 위치 찾기 능력의 설명을 간단히 하기 위해, 상기 용어 "탐색"은 달리 구체적으로 표시되거나 설명되지 않는다면, 서비스 위치 탐색을 나타내기 위해 다음 단락들에서 이용될 것이지만; 상기 서비스 위치 찾기 능력이 상기 코드 네트워크의 상기 노드들 상의 기존의 탐색 표들을 이용하기 때문에, 다음 단락들에서 이용된 상기 용어 "탐색 표들"은 여전히 상기 코드 네트워크의 노드들에서 유지된 상기 코드 "핑거" 표들을 나타낸다.To simplify the description of the service location locating capability, the term “search” will be used in the following paragraphs to indicate service location search unless specifically indicated or described otherwise; Since the service locating capability uses existing lookup tables on the nodes of the code network, the term "lookup tables" used in the following paragraphs is still the code "finger held at nodes of the code network." "Tables.

상기 서비스 위치 찾기 능력은 일 예를 이용하여 설명되고, 그 후 상기 코드 네트워크 내에 상기 서비스 위치 찾기 능력을 제공하는데 참여하는 상기 코드 네트워크의 상이한 노드들에서 실행된 처리를 보여주는 방법도들을 이용하여 보다 일반적인 용어들로 표현된다.The service locating capability is described using an example and then more generally using method diagrams showing processing performed at different nodes of the code network participating in providing the service locating capability within the code network. Expressed in terms.

도 1에 설명되고 상기에 설명된 바와 같이, 코드 네트워크(100)는 6개의 비트 키 공간(즉, 64개의 어드레스들을 지원하는)을 가지며, 상기 64개의 노드들 중 36개는 활성이다(즉, 노드들(0, 2, 3, 5, 6, 7, 9, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 29, 30, 32, 34, 35, 37. 41, 43, 45, 49, 51, 53, 54, 56, 57, 58, 62). 도 1에 추가로 서술된 바와 같이, 상기 활성 노드들의 서브세트(즉, 노드들(7, 19, 30, 및 51)은 서비스(A)로서 표기되는 서비스를 지원한다(설명적으로, 서비스(A)를 지원하는 상기 활성 노드들의 각각은 서비스(A)를 지원하지 않는 활성 노드들을 갖고 이용되는 것보다 어두운 쉐이딩을 이용하여 표시된다).As described in FIG. 1 and described above, the code network 100 has six bit key spaces (ie supporting 64 addresses), and 36 of the 64 nodes are active (ie Nodes (0, 2, 3, 5, 6, 7, 9, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 29, 30, 32, 34, 35 41, 43, 45, 49, 51, 53, 54, 56, 57, 58, 62. As further described in Figure 1, the subset of the active nodes (ie, nodes 7, 19, 30, and 51 support a service denoted as service A (descriptively, each of the active nodes supporting service A is used with active nodes that do not support service A). Are displayed using darker shading than is used).

일 예로서, 도 1을 참조하여, 노드(0)는 서비스(A)를 지원하는 코드 네트워크(100)의 노드들 중 하나의 위치를 찾고 싶어한다고 가정하자. 상기 예의 설명을 단순화하기 위해, 우리는 상기 탐색을 초기화하는 상기 노드는 노드(0)라고 가정한다(그것은 동일한 프로세스가 단지 상기 코드 네트워크에서 상기 노드들의 모두의 노드 ID들로부터 N의 값을 감함으로써 실행될 수 있는 것처럼, 상기 탐색을 초기화하는 상기 노드가 노드(N)이라면 동일한 논의가 이루어질 수 있기 때문에, 일반성의 손실이 없음을 이해할 것이다). 표 1에서 상기 표시된 바와 같이(이하에서 반복된다), 노드(0)에서 상기 탐색 표는 다음의 정보를 포함한 6개의 엔트리들을 가진다:As an example, with reference to FIG. 1, assume that node 0 wants to find the location of one of the nodes of code network 100 supporting service A. FIG. To simplify the description of the example, we assume that the node initiating the search is node 0 (that is, by the same process only subtracting the value of N from the node IDs of all of the nodes in the code network). As can be done, it will be understood that there is no loss of generality since the same discussion can be made if the node initiating the search is node N). As indicated above in Table 1 (it is repeated below), at node 0 the search table has six entries containing the following information:

[표 1] TABLE 1

Figure pct00002
Figure pct00002

이 예에서, 노드(0)는 코드 네트워크(100) 내에 서비스(A)의 위치를 찾기 위한 탐색을 개시한다. 노드(0)에 유지된 이러한 탐색 표에 기초하여, 노드(0)는 각각 상기 탐색 표의 M개의 핑거들에 의해 식별된 M개의 노드들에 M개의 탐색 요청 메시지들을 전송함으로써 상기 탐색 위치 찾기 서비스(A)를 개시한다. 제 i 핑거에 대한 상기 탐색 요청 메시지는 다음의 정보를 포함한다: (1) 위치 찾기될 서비스의 표시; 및 (2) 서비스 범위, 즉 상기 제 i 핑거가 탐색해야 하는 노드들의 범위.In this example, node 0 initiates a search for locating service A within code network 100. Based on this search table maintained at node 0, node 0 transmits the M search request messages to the M nodes each identified by the M fingers of the search table, thereby providing the search location service ( A) is started. The search request message for the i-th finger contains the following information: (1) an indication of the service to be located; And (2) a service range, that is, a range of nodes that the i-th finger should search for.

위치 찾기될 상기 서비스의 표시는 서비스를 특정하기 위한 임의의 적절한 기준들을 이용하여 특정될 수 있다(예로서, 서비스 식별자, 상기 서비스를 설명하기 위해 이용될 수 있는 하나 이상의 파라미터들 등, 뿐만 아니라 그것의 다양한 조합들과 같이).The indication of the service to be located may be specified using any suitable criteria for specifying the service (eg, a service identifier, one or more parameters that may be used to describe the service, etc., as well as it). Like various combinations of).

상기 제 i 핑거가 탐색해야 하는 노드들의 범위를 식별하는 탐색 범위는 임의의 적절한 방식으로 특정될 수 있다. 상기 탐색 범위를 설명하는데 명료함을 위해, 이용될 표기법[m,n)을 m에서 n까지의 범위를 표기하기 위해 이용되고, 여기서 m은 포함하지만 n은 배제한다.The search range that identifies the range of nodes that the i-th finger should search for may be specified in any suitable manner. For clarity in describing the search range, the notation [m, n) to be used is used to denote a range from m to n, where m is included but n is excluded.

일 실시예에서, 상기 제 i 핑거를 위해, 상기 탐색 범위는 [제 i 핑거, 제 i+1 핑거)일 것이다. 우리의 예에서, 노드(0)는 탐색 메시지들을 노드(2), 노드(5), 노드(9), 노드(16), 및 노드(32)에 전송할 것이고, 상기 탐색 메시지들은 각각 [2, 5), [5, 9), [9, 16), [16, 32), 및 [32, 0)의 탐색 범위들을 포함할 것이다.In one embodiment, for the i th finger, the search range will be [i th finger, i + 1 finger). In our example, node 0 will send discovery messages to node 2, node 5, node 9, node 16, and node 32, each of the discovery messages [2, 5), [5, 9), [9, 16), [16, 32), and [32, 0).

또 다른 실시예에서, 상기 제 i 핑거를 위해, 상기 탐색 범위는 [제 i 핑거, 제 i+1 핑거)로부터 [제 i 핑거, 2i)까지로 추가 감소될 수 있다. 우리의 예에서, 노드(5)의 제 3 핑거를 위해, 상기 탐색 범위는 [5, 9) 대신에 [5, 8)일 것이고, 이는 상기 제 (i+1) 핑거가 2i보다 크거나 동일한 제 1 노드이기 때문이다(즉, 제 2i 및 상기 제 i+1 핑거 사이에 활성 노드들이 없다). 이 실시예는 감소된 범위를 제공하지만, 상기 감소된 범위는 [2i, 제 i+1 핑거]의 범위에 있는 새로운 노드가 노드(0)가 그것의 탐색 표를 업데이트하기 전에 상기 네트워크예를 들면,할 수 있는 드문 경우를 설명하지 않을 것이다. 이러한 잠재적인 문제는 노드(0)의 제 3 핑거를 고려함으로써 이해될 수 있으며, 이것은 노드(0)가 그것의 탐색 표를 업데이트하기 전에 노드(8)가 코드 네트워크(100)예를 들면,하는 이벤트를 나타낸다.In another embodiment, for the i th finger, the search range may be further reduced from [i th finger, i + 1 finger) to [i th finger, 2 i ). In our example, for the third finger of node 5, the search range would be [5, 8) instead of [5, 9), where the (i + 1) finger is greater than 2 i This is because it is the same first node (ie there are no active nodes between the second i and the i + 1 finger). This embodiment provides a reduced range, but the reduced range means that a new node in the range of [2 i , i + 1 finger] may take the network example before node 0 updates its lookup table. For example, we will not describe the rare cases that can be done. This potential problem can be understood by considering the third finger of node 0, which means that node 8 has a code network 100, e.g., before node 0 updates its search table. Represents an event.

이들 탐색 범위 실시예들의 설명들로부터, 실시예들 모두가 실제로 작동하지만, 상기 [제 i 핑거, 제 i+1 핑거) 탐색 범위에 기초한 실시예는 상기 [제 i 핑거, 2i) 탐색 범위에 기초한 실시예보다 더 강력하다는 것이 명백하다.From the descriptions of these search range embodiments, all of the embodiments actually work, but an embodiment based on the (i-finger, i + 1 finger) search range is in the (i-finger, 2 i ) search range. It is evident that it is more powerful than the based embodiment.

상술된 바와 같이, 노드(0)는 서비스 탐색 요청 메시지들을 각각 노드들(2, 5, 9, 16, 및 32)에 전송함으로써 코드 네트워크(100) 내에 서비스(A)의 위치를 찾기 위한 탐색을 개시한다. 노드들(2, 5, 9, 16, 및 32)에 의해 각각 수신된 상기 서비스 탐색 요청 메시지들은 상기 서비스 위치 탐색을 계속하기 위해 처리된다.As described above, node 0 performs a search for locating service A within code network 100 by sending service search request messages to nodes 2, 5, 9, 16, and 32, respectively. It starts. The service search request messages received by nodes 2, 5, 9, 16, and 32, respectively, are processed to continue the service location search.

노드(0)로부터 상기 서비스 탐색 요청 메시지를 수신할 때, 상기 노드들(2, 5, 9, 16, 및 32)의 각각은 먼저 상기 요청된 서비스가 국소적으로 지원되는지의 여부를 결정한다. 노드(0)로부터 상기 서비스 탐색 요청 메시지를 수신하는 상기 노드들(2, 5, 9, 16, 및 32)의 임의의 것이 상기 서비스가 국소적으로 지원됨을 결정한다면, 상기 노드는 그것이 상기 서비스를 지원한다는 것을 나타내는 서비스 탐색 응답 메시지로 노드(0)에 응답한다. 상기 서비스가 국소적으로 지원되지 않음을 결정하는 노드(0)로부터의 상기 서비스 탐색 요청 메시지를 수신하는 상기 노드들(2, 5, 9, 16, 및 32)의 각각에 대해, 상기 노드는 노드(0)에 의해 요청된 상기 서비스의 위치를 찾기 위한 하나 이상의 다른 노드들로의 하나 이상의 탐색 메시지들을 개시하는지의 여부를 결정하기 위해 처리를 개시한다. 서비스 탐색 요청 메시지를 수신한 노드(서비스가 국소적으로 지원되지 않는)는 상기 수신된 서비스 탐색 요청 메시지에서 특정된 탐색 범위 내에 속하는 그것의 국소적 탐색 표에서의 핑거 또는 핑거들(만약에 있다면)로 서비스 탐색 요청 메시지를 개시할 것이다.Upon receiving the service search request message from node 0, each of the nodes 2, 5, 9, 16, and 32 first determines whether the requested service is locally supported. If any of the nodes 2, 5, 9, 16, and 32 that receive the service search request message from node 0 determine that the service is locally supported, then the node determines that it is the service. Respond to node 0 with a service search response message indicating that it supports. For each of the nodes 2, 5, 9, 16, and 32 that receive the service search request message from node 0 that determines that the service is not locally supported, the node is a node. Initiate processing to determine whether to initiate one or more search messages to one or more other nodes for locating the service requested by (0). The node that received the service search request message (where the service is not locally supported) is the finger or fingers (if any) in its local search table that fall within the search range specified in the received service search request message. Will initiate a service search request message.

이 예에서, 노드(0)로부터 서비스 탐색 요청 메시지를 수신하는 상기 노드들(2, 5, 9, 16, 및 32) 중 어떤 것도 서비스(A)를 지원하지 않기 때문에, 상기 노드들(2, 5, 9, 16, 및 32)의 각각은 노드(0)에 의해 요청된 서비스(A)의 위치를 찾기 위한 하나 이상의 다른 노드들에 대한 하나 이상의 탐색 메시지들을 개시하는지의 여부를 결정한다. In this example, since none of the nodes 2, 5, 9, 16, and 32 that receive a service search request message from node 0 support service A, the nodes 2, Each of 5, 9, 16, and 32 determines whether to initiate one or more search messages for one or more other nodes to find the location of service A requested by node 0.

노드(0)로부터 서비스 탐색 요청 메시지를 수신하는 노드에서 실행된 처리는 노드(0)로부터 상기 서비스 탐색 요청 메시지를 수신하는 상기 노드들 중 하나(즉, 노드들(2, 5, 9, 16, 및 32) 중 하나)에 의해 실행된 처리를 고려함으로써 더 잘 이해될 수 있다.The processing executed at the node receiving the service search request message from node 0 is performed by one of the nodes receiving the service search request message from node 0 (ie, nodes 2, 5, 9, 16, And 32) may be better understood by considering the processing performed by one of 32).

이 예에서, 노드(0)로부터 상기 서비스 탐색 요청 메시지를 수신할 때 노드(16)에서 실행된 처리를 고려하자. 노드(16)는 [16, 32)의 범위를 갖고 노드(0)로부터 탐색 요청을 수신한다. 상기 표시된 바와 같이, 노드(16)는 먼저 그것이 요청된 서비스를 지원하는지의 여부를 결정한다. 이 예에서, 노드(16)는 서비스(A)를 지원하지 않는다. 노드(16)는 그 후 코드 네트워크(100)의 또 다른 노드(들)로 서비스 탐색 요청 메시지(들)를 개시할지 여부를 결정한다. 노드(16)는 노드(0)로부터 수신된 상기 서비스 탐색 요청 메시지에 포함된 탐색 범위[16, 32)를 이용하고 그것의 국소적 탐색 표를 이용하여 코드 네트워크(100)의 또 다른 노드(들)로 서비스 탐색 요청 메시지(들)를 개시할지 여부를 결정한다. 상기 노드(16)의 탐색 표는 다음과 같이, 표 2에 표시된다.In this example, consider the processing executed at node 16 when receiving the service search request message from node 0. Node 16 has a range of [16, 32] and receives a search request from node (0). As indicated above, node 16 first determines whether it supports the requested service. In this example, node 16 does not support service A. Node 16 then determines whether to initiate the service search request message (s) to another node (s) of code network 100. Node 16 uses the search range [16, 32] included in the service search request message received from node 0 and uses its local search table to add another node (s) of code network 100. Determine whether to initiate the service search request message (s). The lookup table of node 16 is shown in Table 2 as follows.

Figure pct00003
Figure pct00003

이 예에서, 노드(0)로부터 수신된 상기 서비스 탐색 요청 메시지에 포함된 [16, 32)의 탐색 범위 및 상기 특정된 탐색 표에 기초하여, 노드(16)는 노드들(17, 18, 20, 24)에 대한 서비스 탐색 요청 메시지들을 생성할 것이다. 노드(0)에 의해 개시된 것과 같이, 노드(16)에 의해 개시된 상기 서비스 탐색 요청 메시지들은 (1) 위치 찾기될 서비스의 표시; 및 (2) 서비스 범위, 즉 제 i 핑거가 탐색해야 하는 노드들의 범위를 포함한다. 이 예에서, 노드들(17, 18, 20, 24)에 대해 개시된 상기 서비스 탐색 요청 메시지들 각각은 서비스(A)를 특정하고, 또한 각각 탐색 범위들([17, 18), [18, 20), [20, 24), [23, 32))을 포함한다. 노드(16)는 노드(32)(제 5 핑거) 및 노드(48)(제 6 핑거)에 대한 서비스 탐색 요청 메시지들을 개시하지 않으며, 이는 이들 노드들이 노드(0)로부터 수신된 상기 서비스 탐색 요청 메시지에서 특정된 탐색 범위 외부에 있기 때문이다.In this example, based on the search range of [16, 32) and the specified search table included in the service search request message received from node 0, node 16 is responsible for nodes 17, 18, 20. Will generate service discovery request messages for. As initiated by node 0, the service search request messages initiated by node 16 may include (1) an indication of the service to be located; And (2) the range of coverage, i. E., The range of nodes that the i-th finger must seek. In this example, each of the service search request messages initiated for nodes 17, 18, 20, 24 specifies a service A, and also each of the search ranges [17, 18, 20]. ), (20, 24), (23, 32)). Node 16 does not initiate service discovery request messages for node 32 (fifth finger) and node 48 (sixth finger), which are the service discovery requests for which these nodes were received from node 0. This is because it is outside the search scope specified in the message.

도 2는 도 1의 대표적인 코드 네트워크(100)의 노드(0)에 의해 개시된 서비스 위치 탐색에 응답하여 도 1의 대표적인 코드 네트워크(100) 내에서 개시된 서비스 탐색 요청 메시지들을 묘사한다. 2 depicts service discovery request messages initiated within the representative code network 100 of FIG. 1 in response to service location discovery initiated by node 0 of the representative code network 100 of FIG.

도 2에 묘사된 바와 같이, 서비스 탐색 요청 메시지들은 다음과 같이 코드 네트워크(100) 내에서 전송된다: 노드(0)는 노드들(2, 5, 9, 16, 32)로 메시지들을 전송하고; 노드(2)는 노드(3)로 메시지를 전송하고; 노드(5)는 노드들(6, 7)로 메시지들을 전송하고; 노드(9)는 노드들(12, 13)로 메시지들을 전송하고; 노드(16)는 노드들(17, 18, 20, 24)로 메시지들을 전송하고; 노드(18)는 노드(19)로 메시지를 전송하고; 노드(20)는 노드들(21, 22)로 메시지들을 전송하고; 노드(22)는 노드(23)로 메시지를 전송하고; 노드(24)는 노드들(26, 29)로 메시지들을 전송하고; 노드(29)는 노드(30)로 메시지를 전송하고; 노드(32)는 노드들(34, 37, 41, 49)로 메시지들을 전송하고; 노드(32)는 노드(33)로 메시지를 전송하고; 노드(40)는 노드들(42, 45)로 메시지들을 전송하고; 노드(49)는 노드들(51,53, 56)로 메시지들을 전송하고; 노드(53)는 노드(54)로 메시지를 전송하고; 노드(56)는 노드들(57, 58, 62)로 메시지들을 전송한다.As depicted in FIG. 2, service search request messages are sent within the code network 100 as follows: node 0 sends messages to nodes 2, 5, 9, 16, 32; Node 2 sends a message to node 3; Node 5 sends messages to nodes 6 and 7; Node 9 sends messages to nodes 12 and 13; Node 16 sends messages to nodes 17, 18, 20, and 24; Node 18 sends a message to node 19; Node 20 sends messages to nodes 21 and 22; Node 22 sends a message to node 23; Node 24 sends messages to nodes 26 and 29; Node 29 sends a message to node 30; Node 32 sends messages to nodes 34, 37, 41, and 49; Node 32 sends a message to node 33; Node 40 sends messages to nodes 42 and 45; Node 49 sends messages to nodes 51, 53 and 56; Node 53 sends a message to node 54; Node 56 sends messages to nodes 57, 58, 62.

이러한 방식으로, 노드(0)에 의해 개시되는 서비스(A)에 대한 서비스 위치 찾기 요청은 코드 네트워크(100)의 각각의 노드가 그것이 상기 요청된 서비스를 지원하는지의 여부에 대한 표시를 갖고 응답할 수 있도록(및, 따라서 노드(0)는 서비스(A)를 지원하는 임의의 노드들의 아이덴티티를 알게 될 수 있도록) 코드 네트워크(100) 전역에 걸쳐 전파된다. In this way, a service locator request for service A initiated by node 0 may respond with each node of code network 100 having an indication as to whether it supports the requested service. So that node 0 can thus be aware of the identity of any nodes that support service A).

상기 설명된 바와 같이, 서비스의 위치를 찾기 위해 상기 코드 네트워크 내에 개시된 각각의 서비스 탐색 요청 메시지는 대응하는 서비스 탐색 응답 메시지의 개시를 초래한다. 상기 서비스 탐색 응답 메시지들은 상기 서비스 위치 탐색이 비롯되는 상기 노드를 향해 전파한다. 이러한 방식으로, 상기 서비스 위치 탐색이 비롯되는 상기 노드는 상기 요청된 서비스를 지원하는 상기 코드 네트워크의 노드(들)를 알게 된다.As described above, each service search request message initiated within the code network to locate a service results in the initiation of a corresponding service search response message. The service search response messages propagate towards the node from which the service location search originates. In this way, the node from which the service location search originates knows the node (s) of the code network supporting the requested service.

서비스 탐색 응답 메시지들의 전파에 대하여, 긍정의 응답 메시지들 및 부정의 응답 메시지들의 전파가 상이하게 처리된다.For propagation of service search response messages, propagation of positive response messages and negative response messages is handled differently.

업스트림 노드로부터 서비스 탐색 요청 메시지를 수신하는 주어진 다운스트림 노드에서, 긍정의 응답 메시지가 상기 주어진 다운스트림으로부터 상기 업스트림 노드를 향해 즉시 전파된다. 예를 들면, 이것은 그것이 상기 요청된 서비스를 국소적으로 지원하는 상기 주어진 다운스트림 노드에 의한 결정에 응답할 수 있거나, 또는 상기 다운스트림 노드의 더욱 아래쪽의 노드(즉, 상기 주어진 다운 스트림 노드가 서비스 탐색 요청 메시지를 개시하는 다운스트림 노드)로부터 긍정의 응답 메시지를 수신하는 상기 주어진 다운스트림 노드에 응답할 수 있다.At a given downstream node receiving a service search request message from an upstream node, a positive response message is immediately propagated from the given downstream towards the upstream node. For example, this may be in response to a determination by the given downstream node that it locally supports the requested service, or a node further down the downstream node (ie, the given downstream node is serviced). Reply to the given downstream node receiving a positive response message from the downstream node initiating the search request message.

업스트림 노드로부터 서비스 탐색 요청 메시지를 수신하는 주어진 다운스트림 노드에서, 부정의 응답 메시지가 상기 주어진 다운스트림 노드가 서비스 탐색 요청 메시지(들)를 개시하는 각각의 다운스트림 노드(들)로부터 응답 메시지들을 대기한 후에만 상기 주어진 다운스트림으로부터 상기 업스트림 노드를 향해 전파된다. 이러한 방식으로, 상기 주어진 다운스트림 노드는 그것의 다운스트림 노드(들)로부터의 응답을 상기 업스트림 노드가 전송되는 단일 응답 메시지에 통합할 수 있다.At a given downstream node receiving a service search request message from an upstream node, a negative response message waits for response messages from each downstream node (s) at which the given downstream node initiates a service search request message (s). Only after it has propagated from the given downstream toward the upstream node. In this way, the given downstream node may incorporate a response from its downstream node (s) into a single response message to which the upstream node is sent.

서비스 탐색 응답 메시지들의 전파는 도 1 및 도 2의 대표적인 코드 네트워크를 고려함으로써 더 양호하게 이해될 수 있다.The propagation of service search response messages can be better understood by considering the exemplary code network of FIGS. 1 and 2.

이 예에서, 노드(19)가 노드(18)로부터 서비스 탐색 요청 메시지를 수신할 때, 노드(19)는 그것이 서비스(A)를 지원한다는 것을 나타내는 노드(18)에 즉시 응답하고, 노드(18)는 차례로 상기 응답을 상기 노드(0)로 다시 전달할 노드(16)에 이러한 응답을 즉시 전달할 것이다. In this example, when node 19 receives a service search request message from node 18, node 19 immediately responds to node 18 indicating that it supports service A, and node 18 Will in turn forward this response to node 16, which in turn will forward the response back to node 0.

이 예에서, 노드(9)가 노드(0)로부터 서비스 탐색 요청 메시지를 수신할 때, 노드(9)는 노드들(12, 13)에 각각 두 개의 서비스 탐색 요청 메시지들을 전송하는데, 이는 노드(9) 자체가 서비스(A)를 지원하지 않기 때문이다. 여기에서, 노드(9)가 노드(13)로부터 부정 응답을 수신하기 전에 노드(12)로부터 부정의 응답을 수신한다고 가정할 때, 노드(9)는 노드(13)로부터 응답을 기다리는 동안 노드(12)로부터 부정의 응답을 저장할 것이다. 그 후, 노드(13)로부터 상기 부정의 응답을 수신하자마자, 노드(9)는 노드들(12, 13)로부터의 상기 두 개의 부정의 응답들을 단일의 부정의 응답으로 통합할 것이고 상기 단일 부정 응답을 노드(0)에 전송할 것이다.In this example, when node 9 receives a service search request message from node 0, node 9 sends two service search request messages to nodes 12 and 13, respectively, which is the node ( 9) because it does not support service (A) itself. Here, assuming that node 9 receives a negative response from node 12 before receiving a negative response from node 13, node 9 waits for a response from node 13, 12) will store the negative response. Then, upon receiving the negative response from node 13, node 9 will merge the two negative responses from nodes 12 and 13 into a single negative response and Will be sent to node (0).

여기에서 묘사되고 설명된 상기 서비스 위치 찾기 능력에서, 메시지들에 대한 참조들은(및, 보다 상세하게는, 응답 메시지들) 일반적으로 애플리케이션 레벨 메시지들에 대한 참조들이다. 이러한 구별에 대한 필요성은 노드(N)가 노드(J)로 메시지를 전송할 때, 노드(J)는 보통 그것이 메시지를 수신하였음을 노드(N)에 나타내기 위해 노드(N)에 수식확인으로 응답할 것임을 고려함으로써 이해될 것이다. 노드(N)가 얼마 후 상기 수신확인을 수신하지 않았다면, 노드(N)는 상기 메시지를 재전송할 것이다(예로서, 최대 특정 수의 시도들까지). 여기에 묘사되고 설명된 상기 서비스 위치 찾기 능력에서, 이러한 수신확인 프로세스는 백그라운드 프로세스인 것으로 가정되고, 상기 서비스 위치 찾기 능력의 설명을 간략화히기 위해 여기에서는 무시된다. 달리 말하면, 여기에 참조된 상기 서비스 탐색 응답 메시지들은 상기 코드 네트워크 내에서 구동할 수 있거나 구동할 없는 상기 백그라운드 프로세스의 수신확인들이 아니다. In the service location finding capability described and described herein, references to messages (and, more specifically, response messages) are generally references to application level messages. The need for this distinction is that when node N sends a message to node J, node J usually responds with a validation check to node N to indicate to node N that it has received the message. It will be understood by considering. If node N has not received the acknowledgment after some time, node N will resend the message (eg, up to a maximum number of attempts). In the service locator capability described and described herein, this acknowledgment process is assumed to be a background process, and is ignored here to simplify the description of the service locator capability. In other words, the service search response messages referenced herein are not acknowledgments of the background process that may or may not run in the code network.

상기 서비스 위치 찾기 능력의 실시예들에 대한 양호한 이해를 제공하기 위해, 상기 서비스 위치 찾기 능력을 제공할 때 발신 노드 및 중간 노드들에 의해 실행된 상기 처리는 도 3 내지 도 5에 관하여 묘사되고 설명된다.In order to provide a good understanding of embodiments of the service locating capability, the processing performed by the originating node and intermediate nodes when providing the service locating capability is depicted and described with respect to FIGS. do.

도 3은 발신 노드에서 서비스 탐색 요청 메시지를 생성하기 위한 방법의 일 실시예를 묘사한다.3 depicts one embodiment of a method for generating a service search request message at an originating node.

단계(302)에서, 방법(300)이 시작된다.At step 302, method 300 begins.

단계(304)에서, 상기 발신 노드는 서비스 위치 찾기 요청을 검출한다. 상기 서비스 위치 찾기 요청은 P2P 네트워크 내에서 상기 서비스의 위치(들)를 식별하기 위해(예로서, 상기 서비스를 지원하는 상기 P2P 네트워크의 하나 이상의 노드들을 식별하기 위해), 상기 P2P 네트워크 내에서 서비스를 탐색하기 위한 요청이다.In step 304, the originating node detects a service location search request. The service location lookup request may be configured to identify a location (s) of the service within a P2P network (eg, to identify one or more nodes of the P2P network supporting the service), and to identify a service within the P2P network. Request to search.

상기 서비스 위치 찾기 요청은 상기 발신 노드에서 요구되거나 원하는 서비스를 식별한다. 상기 서비스 위치 찾기 요청은 임의의 적절한 방식으로 검출될 수 있으며, 이것은 상기 서비스 위치 찾기 요청이 상기 발신 노드에서 개시되는 방식에 의존할 수 있다. 상기 서비스 위치 찾기 요청은 수동으로(예로서, 상기 발신 노드의 이용자에 의해) 또는 자동으로(예로서, 트리거 상태를 검출하는 것에 응답하여 상기 발신 노드에 의해) 개시될 수 있다.The service location search request identifies the service required or desired at the originating node. The service location search request may be detected in any suitable manner, which may depend on how the service location search request is initiated at the originating node. The service location request may be initiated manually (eg by the user of the originating node) or automatically (eg by the originating node in response to detecting a trigger condition).

단계(306)에서, 상기 발신 노드는 상기 서비스를 위한 서비스 위치 탐색을 개시한다. 상기 서비스 위치 탐색은 상기 P2P 네트워크 내에서 상기 서비스의 위치(들)를 식별하기 위해 상기 P2P 네트워크 내에서 서비스를 탐색하기 위한 프로세스이다.In step 306, the originating node initiates a service location search for the service. The service location search is a process for searching for a service within the P2P network to identify the location (s) of the service within the P2P network.

상기 서비스 위치 탐색은 상기 발신 노드에서 유지된 탐색 표를 이용하여 개시될 수 있다. 상기 서비스 위치 탐색은 상기 발신 노드 상에서 유지된 상기 탐색 표의 하나 이상의 노드들로 서비스 탐색 요청을 개시함으로써 개시될 수 있다. 상기 발신 노드는 상기 탐색 표의 상기 노드들 중 하나 이상을 향해 하나 이상의 서비스 탐색 요청 메시지들을 전파함으로써 상기 서비스 탐색 요청을 개시할 수 있다.The service location search may be initiated using a search table maintained at the originating node. The service location search may be initiated by initiating a service search request with one or more nodes of the search table maintained on the originating node. The originating node may initiate the service search request by propagating one or more service search request messages toward one or more of the nodes in the search table.

상기 발신 노드에 의해 생성되고 전파된 서비스 탐색 요청 메시지는 상기 기원 노드가 상기 요청된 서비스를 지원하는 상기 P2P 네트워크의 적어도 하나의 노드의 위치를 찾을 수 있게 하는데 이용하도록 적응된다.The service search request message generated and propagated by the originating node is adapted to be used by the originating node to locate the location of at least one node of the P2P network supporting the requested service.

상기 서비스 탐색 요청 메시지는 상기 서비스 탐색 요청 메시지에 응답하기 위해 상기 서비스 탐색 요청 메시지를 수신하는 노드들에 의한 이용을 위해 상기 발신 노드의 노드 ID를 포함한다.The service search request message includes a node ID of the originating node for use by nodes receiving the service search request message to respond to the service search request message.

상기 서비스 탐색 요청 메시지는 동일한 서비스 위치 탐색의 요청 메시지들 및 응답 메시지들을 매칭시키기 위한 상기 서비스 탐색 요청 메시지를 수신하는 노드 및 상기 발신 노드에 의한 이용을 위해, 상기 서비스 탐색 요청 메시지의 메시지 ID를 포함한다. The service search request message includes a node receiving the service search request message for matching request messages and response messages of the same service location search and a message ID of the service search request message for use by the originating node. do.

상기 서비스 탐색 요청 메시지는 상기 요청된 서비스를 식별하는데 이용하기 위해 적응된 서비스 식별 정보를 포함한다. 예를 들면, 상기 서비스 식별 정보는 상기 서비스를 식별하는 서비스 ID, 서비스 설명 정보(예로서, 상기 서비스를 식별하는데 이용하기 위해 적응되고 및/또는 상기 서비스를 설명하는 하나 이상의 파라미터들, 속성들, 및/또는 기준들) 등 중 하나 이상을 포함할 수 있다.The service search request message includes service identification information adapted for use in identifying the requested service. For example, the service identification information may include a service ID identifying the service, service description information (eg, one or more parameters, attributes, adapted for use in identifying the service and / or describing the service, And / or criteria), and the like.

상기 서비스 탐색 요청 메시지는 상기 서비스 탐색 요청 메시지가 개시되는 노드에 의한 이용을 위해 상기 발신 노드에 의해 특정된 탐색 범위를 포함한다. 상기 탐색 범위는 [K1, K2)로서 표시되고, 여기서 K2는 상기 탐색 범위의 가장 큰 값이고 K1은 상기 탐색 범위의 가장 작은 값이다. 상기 서비스 탐색 요청 메시지의 탐색 범위는 상기 발신 노드에 의해 개시된 서비스 위치 탐색의 유형(예로서, 전체 네트워크 탐색, 단계적 네트워크 탐색, 점진적 네트워크 탐색 등)에 의존할 수 있다.The service search request message includes a search range specified by the originating node for use by the node from which the service search request message is initiated. The search range is indicated as (K1, K2), where K2 is the largest value of the search range and K1 is the smallest value of the search range. The search range of the service search request message may depend on the type of service location search initiated by the originating node (eg, full network search, phased network search, progressive network search, etc.).

상기 서비스 탐색 요청 메시지 내에 포함된 정보는 상이할 수 있음이 이해되 것이다(예로서, 보다 적은 정보가 포함될 수 있고, 보다 많은 정보가 포함될 수 있고, 상이한 정보가 포함될 수 있는 등).It will be appreciated that the information included in the service search request message may be different (eg, less information may be included, more information may be included, different information may be included, etc.).

상기 발신 노드가 상기 서비스 위치 탐색을 개시하는 방식(즉, 상기 발신 노드에 의해 개시된 서비스 탐색 요청 메시지들의 수, 및 상기 서비스 탐색 요청 메시지들의 타이밍)은 실행되는 서비스 위치 탐색의 유형(예로서, 전체 네트워크 탐색, 단계적 네트워크 탐색, 점진적 네트워크 탐색 등)에 의존한다.The manner in which the originating node initiates the service location search (ie, the number of service search request messages initiated by the originating node, and the timing of the service search request messages) is the type of service location search that is executed (eg, total Network discovery, phased network discovery, incremental network discovery, etc.).

전체 네트워크 탐색이 상기 발신 노드에 의해 개시되는 일 실시예에서, 서비스 탐색 요청 메시지들은 상기 발신 노드로부터 상기 핑거 표에서의 핑거들의 각각을 향해 동시에 전파된다. In one embodiment where a full network search is initiated by the originating node, service search request messages are propagated simultaneously from the originating node towards each of the fingers in the finger table.

단계적 네트워크 탐색이 상기 발신 노드에 의해 개시되는 일 실시예에서, 서비스 탐색 요청 메시지들은 상기 발신 노드로부터 상기 핑거 표에서의 하나 이상의 핑거들을 향해 연속하여 전파된다. 단계적 네트워크 탐색의 이용은 여기에 묘사되고 설명된 다른 도면들과 함께 도 6 및 도 7에 대한 참조에 의해 보다 양호하게 이해될 수 있다.In one embodiment where staged network discovery is initiated by the originating node, service discovery request messages are sequentially propagated from the originating node toward one or more fingers in the finger table. The use of phased network search can be better understood by reference to FIGS. 6 and 7 in conjunction with the other figures depicted and described herein.

점진적 네트워크 탐색이 상기 발신 노드에 의해 개시되는, 일 실시예에서, 서비스 탐색 요청 메시지들은 상기 발신 노드로부터 초기 탐색으로서 상기 핑거 표에서의 핑거들의 서브세트를 향해 동시에, 그리고 하나 이상의 후속 탐색들로서 상기 핑거 표에서의 하나 이상의 후속 핑거들을 향해 연속하여 전파된다. 점진적 네트워크 탐색의 이용은 여기에 묘사되고 설명된 다른 도면들과 함께 도 8 및 도 9에 대한 참조에 의해 보다 양호하게 이해될 수 있다.In one embodiment, where progressive network discovery is initiated by the originating node, service search request messages are simultaneously directed from the originating node toward a subset of the fingers in the finger table as the initial discovery and as one or more subsequent searches. It propagates continuously toward one or more subsequent fingers in the table. The use of progressive network search may be better understood by reference to FIGS. 8 and 9 in conjunction with the other figures depicted and described herein.

단계(308)에서, 방법(300)이 종료된다.At step 308, method 300 ends.

비록 종료로서 묘사되고 설명되었지만, 상기 발신 노드에 의한 상기 서비스 위치 탐색의 개시에 이어, 상기 발신 노드는 그 후 상기 발신 노드에 의해 개시된 상기 하나 이상의 서비스 탐색 요청 메시지들에 응답하여 상기 발신 노드에 의해 수신된 하나 이상의 서비스 탐색 응답 메시지들을 처리하기 위한 처리를 개시함으로써 상기 서비스 위치 탐색을 지지하여 계속해서 처리할 수 있다. Although depicted and described as termination, following the initiation of the service location search by the originating node, the originating node is then moved by the originating node in response to the one or more service search request messages initiated by the originating node. Initiating processing to process the received one or more service search response messages may support and continue processing the service location search.

여기에서는 주로 연속적으로 실행되는 것으로서 묘사되고 설명되었지만, 방법(300)의 단계들의 적어도 일부는 동시에 또는 도 3에 대하여 묘사되고 설명된 것과 상이한 순서로 실행될 수 있다. 주로 중간 노드에서 서비스 탐색 요청 메시지 생성을 실행하기 위한 프로세스 로직의 특정 구현에 대하여 여기에 묘사되고 설명되었지만, 중간 노드에서의 서비스 탐색 요청 메시지 생성을 실행하기 위한 프로세스 로직은 여기에 묘사되고 설명된 상기 서비스 위치 찾기 능력을 여전히 지원하면서 다양한 다른 방식들로 구현될 수 있다는 것이 이해될 것이다.Although depicted and described herein primarily as being executed in succession, at least some of the steps of the method 300 may be executed concurrently or in a different order than that depicted and described with respect to FIG. 3. Although primarily depicted and described herein with respect to a particular implementation of process logic for executing service search request message generation at an intermediate node, process logic for executing service search request message generation at an intermediate node is described and described herein. It will be appreciated that it can be implemented in a variety of different ways while still supporting the service locating capability.

도 4는 중간 노드에서 서비스 탐색 요청 메시지를 처리하기 위한 방법의 일 실시예를 묘사한다.4 depicts one embodiment of a method for processing a service search request message at an intermediate node.

단계(402)에서, 방법(400)이 시작된다.At step 402, method 400 begins.

단계(404)에서, 상기 중간 노드(노드(J)로서 표시됨)는 업스트림 노드(노드(N)로서 표시됨)로부터 서비스 탐색 요청 메시지를 수신하고, 이것은 서비스 위치 탐색의 개시자 또는 업스트림 중간 노드일 수 있다.In step 404, the intermediate node (denoted as node J) receives a service discovery request message from an upstream node (denoted as node N), which may be the initiator or upstream intermediate node of the service location discovery. have.

상기 서비스 탐색 요청 메시지는 상기 요청된 서비스를 탐색하기에 적합한 임의의 정보를 포함한다.The service search request message includes any information suitable for searching for the requested service.

상기 서비스 탐색 요청 메시지는 상기 서비스 탐색 요청 메시지의 발신자(즉, 업스트림 노드(N))의 노드 ID를 포함한다. The service search request message includes the node ID of the originator (ie, upstream node N) of the service search request message.

상기 서비스 탐색 요청 메시지는 상기 서비스 탐색 요청 메시지의 메시지 ID를 포함한다.The service search request message includes a message ID of the service search request message.

상기 서비스 탐색 요청 메시지는 상기 요청된 서비스를 식별하는데 이용하기 위해 적응된 서비스 식별 정보를 포함한다. 예를 들면, 상기 서비스 식별 정보는 상기 서비스를 식별하는 서비스 ID, 서비스 디스크립션 정보(예로서, 상기 서비스를 설명하고 및/또는 상기 서비스를 식별하는데 이용하기 위해 적응되는 하나 이상의 파라미터들, 속성들, 및/또는 기준들) 등 중 하나 이상을 포함할 수 있다.The service search request message includes service identification information adapted for use in identifying the requested service. For example, the service identification information may include a service ID identifying the service, service description information (eg, one or more parameters, attributes, adapted for describing the service and / or for use in identifying the service, And / or criteria), and the like.

상기 서비스 탐색 요청 메시지는 상기 중간 노드(J)를 위한 업스트림 노드(N)에 의해 특정된 탐색 범위를 포함한다. 상기 탐색 범위는 [K1, K2)로서 표시되고, 여기서 K2는 상기 탐색 범위의 가장 큰 값이고 K1은 상기 탐색 범위의 가장 작은 값이다.The service search request message includes a search range specified by the upstream node N for the intermediate node J. The search range is indicated as (K1, K2), where K2 is the largest value of the search range and K1 is the smallest value of the search range.

상이한 정보가 상기 서비스 탐색 요청 메시지 내에 포함될 수 있다는 것이 이해될 것이다. It will be appreciated that different information may be included in the service discovery request message.

단계(406)에서, 상기 중간 노드(J)가 상기 요청된 서비스를 지원하는지의 여부에 대한 결정이 이루어진다. 이러한 결정은 임의의 적절한 방식으로(예로서, 상기 서비스 식별 정보의 적어도 일부를 중간 노드(J)에서 이용가능한 정보에 비교함으로써) 실행될 수 있다.In step 406, a determination is made whether the intermediate node J supports the requested service. This determination may be performed in any suitable manner (eg, by comparing at least a portion of the service identification information to information available at intermediate node J).

중간 노드(J)가 상기 요청된 서비스를 지원한다면, 방법(400)이 단계(408)로 진행한다(이 점에서, 상기 중간 노드(J)는 업스트림 노드(N)에 대한 긍정의 서비스 탐색 응답 메시지를 개시한다).If the intermediate node J supports the requested service, the method 400 proceeds to step 408 (in which point the intermediate node J responds with a positive service search response to the upstream node N). Start a message).

중간 노드(J)가 상기 요청된 서비스를 지원하지 않는다면, 방법(400)은 단계(410)로 진행한다(이 점에서, 상기 중간 노드(J)는 상기 서비스 탐색 요청 메시지의 탐색 범위 내에서 상기 네트워크의 다른 노드들로 상기 서비스 위치 탐색을 확대할지 여부를 결정하기 위한 부가적인 처리를 개시한다).If the intermediate node J does not support the requested service, the method 400 proceeds to step 410 (at this point, the intermediate node J is said to be within the search range of the service search request message). Initiate additional processing to determine whether to extend the service location search to other nodes in the network).

단계(408)에서, 상기 중간 노드(J)는 상기 업스트림 노드(N)에 대한 긍정의 서비스 탐색 응답 메시지를 전송한다. 상기 서비스 탐색 응답 메시지는 상기 요청된 서비스가 상기 중간 노드(J)에 의해 지원되고 상기 발신 노드가 중간 노드(J)로부터 상기 서비스를 요청할 수 있게 함을 상기 발신 노드에 알리는데 이용하기에 적합한 임의의 정보를 포함할 수 있다. 예를 들면, 상기 서비스 탐색 응답 메시지는 상기 중간 노드(J)의 식별자, 상기 메시지가 업스트림 노드(N)로부터의 서비스 탐색 요청 메시지에 대한 응답이라는 표시(예로서, 상기 서비스 탐색 요청 메시지의 메시지 ID), 중간 노드(J)가 상기 요청된 서비스를 지원한다는 표시, 중간 노드(J)로부터 서비스를 요청하는데 상기 발신 노드에 의해 이용하기 위한 중간 노드(J)를 위한 네트워크 접촉 정보(예로서, IP 어드레스, 포트 번호 등) 등을 포함할 수 있다. 상기 서비스 탐색 응답 메시지는 상이한 정보를 포함할 수 있다는 것이 이해될 것이다. 단계(408)로부터, 방법(400)은 단계(434)로 진행하고, 여기서 방법(400)은 종료된다. In step 408, the intermediate node J sends a positive service search response message for the upstream node N. The service search response message is any suitable for use to inform the originating node that the requested service is supported by the intermediate node J and allows the originating node to request the service from the intermediate node J. Information may include For example, the service search response message is an identifier of the intermediate node J, an indication that the message is a response to a service search request message from an upstream node N (eg, a message ID of the service search request message). ), An indication that intermediate node J supports the requested service, network contact information for intermediate node J for use by the originating node to request service from intermediate node J (eg, IP Address, port number, etc.). It will be appreciated that the service search response message may include different information. From step 408, the method 400 proceeds to step 434, where the method 400 ends.

단계(410)에서, 상기 중간 노드(J)는 그것의 탐색 표의 제 1 핑거를 식별한다.In step 410, the intermediate node J identifies the first finger of its search table.

도 4에 묘사된 바와 같이, 단계(410)와 함께 또는 임의의 다른 적절한 시간에, 중간 노드(J)는 또한 상기 서비스 위치 탐색을 상기 네트워크의 다른 노드들로 확대할지 여부를 결정하기 위한 부가적인 처리를 실행하는데 이용하기 위한 초기화 함수들을 실행할 수 있다. 예를 들면, 상기 중간 노드(j)는 1과 동일한 핑거 카운터(i)를 초기화할 수 있으며, 제 1 핑거 변수(F1)를 중간 노드(j)의 제 1 핑거와 동일하게 설정하고(즉, F1 = 제 1 핑거), 제 2 핑거 변수(F2)를 NULL과 동일하게 설정하고, 탐색 리스트를 NULL과 동일하게 설정한다(여기서, 상기 탐색 리스트는 중간 노드(J)가 업스트림 노드(N)로부터 수신된 상기 서비스 탐색 요청 메시지를 대신하여 서비스 탐색 요청 메시지를 전송하는 노드들의 리스트이고, 이것은 중간 노드(J)에 의해 개시된 임의의 서비스 탐색 요청 메시지들에 대한 응답들을 관리하기 위해 이용될 수 있다). 보다 적고, 보다 많고, 및/또는 상이한 변수들, 리스트들, 및/또는 유사한 파라미터들이 이용될 수 있고 및/또는 임의의 다른 적절한 방식으로 초기화될 수 있다는 것이 이해될 것이다.As depicted in FIG. 4, in conjunction with step 410 or at any other suitable time, the intermediate node J may also additionally determine whether to extend the service location search to other nodes in the network. You can execute initialization functions to use to perform the processing. For example, the intermediate node j may initialize the finger counter i equal to 1, and set the first finger variable F1 equal to the first finger of the intermediate node j (ie, F1 = first finger), the second finger variable F2 is set equal to NULL, and the search list is set equal to NULL (where the search list is defined by intermediate node J from upstream node N). A list of nodes that transmit a service search request message on behalf of the service search request message received, which may be used to manage responses to any service search request messages initiated by intermediate node J) . It will be appreciated that fewer, more, and / or different variables, lists, and / or similar parameters may be used and / or initialized in any other suitable manner.

단계(412)에서, 상기 탐색 범위의 가장 큰 값(K2)이 상기 중간 노드(J)의 제 1 핑거(F1)보다 큰지 여부에 대한 결정이 이루어진다. 상기 중간 노드(J)는 그것의 제 1 핑거가 상기 탐색 범위의 밖에 있는지의 여부를 검사한다. K2가 F1보다 크지 않다면, 방법(400)은 단계(414)로 진행한다. K2가 F1보다 크다면, 방법(400)은 단계(416)로 진행한다.In step 412, a determination is made as to whether the largest value K2 of the search range is greater than the first finger F1 of the intermediate node J. The intermediate node J checks whether its first finger is outside the search range. If K2 is not greater than F1, the method 400 proceeds to step 414. If K2 is greater than F1, the method 400 proceeds to step 416.

단계(414)에서, 상기 중간 노드(J)는 부정의 서비스 탐색 응답 메시지를 업스트림 노드(N)로 전송한다. 이 경우에, 어떤 서비스 탐색 요청 메시지도 중간 노드(J)에 의해 생성되지 않는다. 상기 서비스 탐색 응답 메시지는 서비스(A)를 지원하는 [F1, F2)의 범위에 있는 노드가 없다는 것을 업스트림 노드(N)에 알리는데 이용하기에 적합한 임의의 정보를 포함할 수 있다. 단계(412)로부터, 방법(400)은 단계(434)로 진행하고, 여기서 방법(400)이 종료된다.In step 414, the intermediate node J sends a negative service discovery response message to the upstream node N. [ In this case, no service search request message is generated by the intermediate node J. The service search response message may include any information suitable for use to inform upstream node N that there are no nodes in the range of [F1, F2) supporting service A. From step 412, method 400 proceeds to step 434, where method 400 ends.

단계(416)에서, 상기 중간 노드(J)는 그것의 탐색 표의 제 (i+1) 핑거를 식별한다. 방법(400)을 통한 제 1 패스에서, 이것은 중간 노드(J)의 탐색 표의 제 2 핑거이다.In step 416, the intermediate node J identifies the (i + 1) finger of its search table. In the first pass through method 400, this is the second finger of the search table of intermediate node J.

단계(418)에서, 상기 탐색 범위의 가장 큰 값(K2)이 상기 중간 노드(J)의 제 (i+1) 핑거(F2)보다 큰지 여부에 대한 결정이 이루어진다. 상기 중간 노드(J)는 그것의 제 (i+1) 핑거가 상기 탐색 범위의 밖에 있는지의 여부를 검사한다.In step 418, a determination is made as to whether the largest value K2 of the search range is greater than the (i + 1) th finger F2 of the intermediate node J. The intermediate node J checks whether its (i + 1) finger is outside the search range.

K2가 F2보다 크다면, 방법(400)은 단계(428)로 진행한다(즉, 상기 메시지의 탐색 범위는 (F1, K2)로 감소되고, 중간 노드(J)에 의해 생성되는 결과적인 서비스 탐색 요청 메시지는 업스트림 노드(N)로부터 수신된 상기 서비스 탐색 요청 메시지에 응답하여 중간 노드(J)에 의해 생성될 마지막이다).If K2 is greater than F2, the method 400 proceeds to step 428 (ie, the search range of the message is reduced to (F1, K2) and the resulting service search generated by the intermediate node J). The request message is the last to be generated by intermediate node J in response to the service search request message received from upstream node N).

K2가 F2보다 크지 않다면, 방법(400)은 단계(420)로 진행한다(즉, 중간 노드(J)에 의해 생성되는 결과적인 서비스 탐색 요청 메시지는 업스트림 노드(N)로부터 수신된 서비스 탐색 요청 메시지에 응답하여 중간 노드(J)에 의해 생성되는 마지막 서비스 탐색 요청 메시지이다).If K2 is not greater than F2, method 400 proceeds to step 420 (ie, the resulting service search request message generated by intermediate node J is a service search request message received from upstream node N). In response to the last service discovery request message generated by intermediate node J).

단계(420)에서, 중간 노드(J)는 (F1, F2)의 탐색 범위를 가진 노드(F1)로 서비스 탐색 요청 메시지를 전송한다. 이 점에서, F1 및 F2 모두는 K2보다 작으며, 따라서 탐색 범위([F1, F2))는 상기 탐색 범위([K1, K2)) 내에 있다. 상기 서비스 탐색 요청 메시지는 여기에 설명된 바와 같이, 통상적으로 서비스 탐색 요청 메시지에 포함된 정보를 포함한다.In step 420, intermediate node J sends a service search request message to node F1 having a search range of (F1, F2). In this respect, both F1 and F2 are smaller than K2, so the search range (F1, F2) is within the search range (K1, K2). The service search request message typically includes the information contained in the service search request message, as described herein.

단계(422)에서, 중간 노드(J)는 중간 노드(J)에 의해 개시된 임의의 서비스 탐색 요청 메시지들에 대한 응답들을 관리하기 위해 중간 노드(J)에 의해 이용하기 위한, 상기 탐색 리스트에 노드(F1)를 부가한다.In step 422, the intermediate node J is a node in the search list for use by the intermediate node J to manage responses to any service search request messages initiated by the intermediate node J. (F1) is added.

단계(424)에서, 중간 노드(J)는 상기 제 1 핑거 변수(F1)를 상기 제 2 핑거 변수(F2)에 동일하도록 업데이트하고 상기 핑거 카운터를 증분시킨다(i = i+1)In step 424, the intermediate node J updates the first finger variable F1 to be equal to the second finger variable F2 and increments the finger counter (i = i + 1).

단계(426)에서, 핑거 카운터(i)가 M보다 크거나 동일하지 여부에 대한 결정이 이루어진다(여기서, 2M은 키 공간의 크기이고 M은 중간 노드(J) 상의 상기 핑거 표의 크기이다).In step 426, a determination is made as to whether the finger counter i is greater than or equal to M (where 2 M is the size of the key space and M is the size of the finger table on the intermediate node J).

상기 핑거 카운터(i)는 M보다 크거나 동일하지 않으며, 방법(400)은 단계(416)로 리턴한다. The finger counter i is not greater than or equal to M and the method 400 returns to step 416.

상기 핑거 카운터(i)가 M보다 크거나 동일하다면, 방법(400)은 단계(428)로 진행한다(즉, F1은 마지막 핑거이고, 중간 노드(J)에 의해 생성되는 결과적인 서비스 탐색 요청 메시지는 업스트림 노드(N)로부터 수신된 상기 서비스 탐색 요청 메시지에 응답하여 중간 노드(J)에 의해 생성되는 마지막이다).If the finger counter i is greater than or equal to M, the method 400 proceeds to step 428 (ie, F1 is the last finger and the resulting service search request message generated by the intermediate node J). Is the last generated by intermediate node J in response to the service search request message received from upstream node N).

단계(428)에서, 중간 노드(J)는 [F1, F2)의 탐색 범위를 갖는 노드(F1)에 서비스 탐색 요청 메시지를 전송한다. 상기 서비스 탐색 요청 메시지는 여기에 설명된 바와 같이, 서비스 탐색 요청 메시지 내에 통상적으로 포함된 정보를 포함한다.In step 428, intermediate node J sends a service search request message to node F1 having a search range of [F1, F2]. The service search request message includes information typically included in the service search request message, as described herein.

단계(430)에서, 중간 노드(J)는 중간 노드(J)에 의해 개시된 임의의 서비스 탐색 요청 메시지들에 대한 응답들을 관리하기 위해 중간 노드(J)에 의한 이용을 위해, 상기 탐색 리스트에 노드(F1)를 부가한다.In step 430, intermediate node J is a node in the search list for use by intermediate node J to manage responses to any service search request messages initiated by intermediate node J. (F1) is added.

단계(432)에서, 중간 노드(J)는 시간을 시작하고, 중간 노드(J)에 의해 개시된 하나 이상의 서비스 탐색 요청 메시지들에 응답하여 중간 노드(J)에 의해 수신될 하나 이상의 서비스 탐색 응답 메시지들을 대기한다.In step 432, intermediate node J starts time and one or more service search response messages to be received by intermediate node J in response to one or more service search request messages initiated by intermediate node J. Wait to hear

단계(434)에서, 방법(400)이 종료된다.At step 434, method 400 ends.

방법(400)의 실행이 중간 노드(J)에 의해 하나 이상의 서비스 탐색 요청 메시지들의 개시를 초래하는, 종료로서 묘사되고 설명되었지만, 중간 노드(J)는 중간 노드(J)에 의해 개시된 하나 이상의 서비스 탐색 요청 메시지들에 응답하여 중간 노드(J)에 의해 수신된 하나 이상의 서비스 탐색 응답 메시지들을 처리하기 위한 처리를 개시함으로써(예로서, 도 5에 대하여 묘사되고 설명된 방법(500)을 실행함으로써) 상기 발신 노드에 의해 개시된 상기 서비스 위치 찾기 요청을 지지하여 계속해서 처리를 실행할 수 있다.Although the execution of the method 400 is depicted and described as termination, resulting in the initiation of one or more service search request messages by the intermediate node J, the intermediate node J is one or more services initiated by the intermediate node J. By initiating processing to process one or more service search response messages received by the intermediate node J in response to the search request messages (eg, by executing the method 500 depicted and described with respect to FIG. 5). The service location finding request initiated by the originating node may be supported to continue processing.

주로 연속하여 실행되는 것으로서 여기에 묘사되고 설명되었지만, 방법(400)의 단계들의 적어도 일부는 동시에 또는 도 3에 대하여 묘사되고 설명된 것과 상이한 순서로 실행될 수 있다. 중간 노드에서 서비스 탐색 요청 메시지 생성을 실행하기 위한 프로세스 로직의 특정 구현에 대하여 여기에 주로 묘사되고 설명되었지만, 중간 노드에서 서비스 탐색 요청 메시지 생성을 실행하기 위한 프로세스 로직은 여기에 묘사되고 설명된 상기 서비스 위치 찾기 능력을 여전히 지원하면서 다양한 다른 방식들로 구현될 수 있다는 것이 이해될 것이다.Although depicted and described herein primarily as being executed in succession, at least some of the steps of the method 400 may be executed concurrently or in a different order than that depicted and described with respect to FIG. 3. Although mainly depicted and described herein with respect to a particular implementation of process logic for executing service discovery request message generation in an intermediate node, process logic for executing service discovery request message generation in an intermediate node is described and described herein. It will be appreciated that it can be implemented in a variety of different ways while still supporting the ability to locate.

도 5는 중간 노드(노드(J)로서 표시되는)에서 서비스 탐색 응답 메시지들을 처리하기 위한 방법의 일 실시예를 묘사한다. 상기 중간 노드(J)는 하나 이상의 부가적인 서비스 탐색 요청 메시지들을 하나 이상의 다운스트림 노드들로 전송하도록 중간 노드(J)를 트리거링한 서비스 탐색 요청 메시지를 중간 노드(J)가 수신한 업스트림 노드로 서비스 탐색 응답 메시지를 제공하기 위해 서비스 탐색 응답 메시지들을 처리하기 위한 방법을 실행한다.5 depicts one embodiment of a method for processing service search response messages at an intermediate node (represented as node J). The intermediate node J services the upstream node received by the intermediate node J a service discovery request message that triggered the intermediate node J to send one or more additional service discovery request messages to the one or more downstream nodes. Implement a method for processing service search response messages to provide a search response message.

단계(502)에서, 방법(500)이 시작된다.At step 502, method 500 begins.

단계(504)에서, 중간 노드(J)는 하나 이상의 서비스 탐색 응답 메시지들을 대기한다. 중간 노드(J)에 의해 개시된 하나 이상의 서비스 탐색 요청 메시지들에 응답하여 상기 중간 노드(J)에 의해(예로서, 도 4에 대하여 묘사되고 설명되는 방법(400)을 실행함으로써) 상기 서비스 탐색 응답 메시지(들)가 예상된다.In step 504, intermediate node J waits for one or more service search response messages. The service search response by the intermediate node J (eg, by executing the method 400 depicted and described with respect to FIG. 4) in response to one or more service search request messages initiated by the intermediate node J. Message (s) are expected.

단계(506)에서, 중간 노드(J)는 서비스 탐색 응답 메시지가 다운스트림 노드로부터 수신되었는지의 여부를 결정한다.In step 506, the intermediate node J determines whether a service search response message has been received from the downstream node.

서비스 탐색 응답 메시지가 다운스트림 노드로부터 수신된다면, 방법(500)은 단계(510)로 진행한다(이 점에서, 서비스 탐색 응답 메시지의 처리가 시작된다).If a service search response message is received from the downstream node, the method 500 proceeds to step 510 (at which point processing of the service search response message begins).

서비스 탐색 응답 메시지가 다운스트림으로부터 수신되지 않는다면, 방법(500)은 단계(508)로 진행한다.If a service search response message is not received from downstream, the method 500 proceeds to step 508.

단계(508)에서, 타이머가 만료되었는지의 여부에 대한 결정이 이루어진다. 상기 타이머는 임의의 적절한 방식으로 중간 노드(J)에 의해 설정될 수 있다(예로서, 방법(500)의 실행시 초기화 단계처럼, 방법(400)의 실행의 일부처럼, 또는 임의의 다른 적절한 방식으로). 상기 타이머는 임의의 적절한 시간 길이로 설정될 수 있다.In step 508, a determination is made whether the timer has expired. The timer may be set by the intermediate node J in any suitable manner (eg, as part of the execution of the method 400, as in the initialization phase of the execution of the method 500, or in any other suitable manner. to). The timer can be set to any suitable length of time.

상기 타이머가 만료되지 않았다면, 방법(500)은 단계(504)로 리턴하고 단계(504)에서 단계(506)(즉, 상기 중간 노드(J)가 하나 이상의 다운스트림 노드들로부터 하나 이상의 서비스 탐색 응답 메시지들을 대기하는 대기 상태로)로 진행한다.If the timer has not expired, the method 500 returns to step 504 and in step 504 step 506 (ie, the intermediate node J responds with one or more service discovery responses from one or more downstream nodes). To the waiting state for messages).

상기 타이머가 만료되었다면, 방법(500)은 단계(522)로 진행한다(이 점에서, 중간 노드(J)는 상기 업스트림 노드에 대한 부정의 서비스 탐색 응답 메시지를 개시하는데, 이는 중간 노드(J)가 할당된 시간 길이 내에서 다운스트림 노드들로부터 아직 처리되지 않은 모든 서비스 탐색 응답 메시지들을 수신하지 않았기 때문이다).If the timer has expired, the method 500 proceeds to step 522 (at this point, intermediate node J initiates a negative service search response message for the upstream node, which is intermediate node J). Does not receive all service discovery response messages that have not yet been processed from downstream nodes within the allotted time length).

단계들(504, 506, 508)에 대하여, 이러한 기능은 다른 방식들로 구현될 수 있다는 것이 이해될 것이다. 예를 들면, 서비스 탐색 응답 메시지가 수신되었는지의 여부를 결정하고(단계(506)) 타이머가 만료되었는지의 여부를 결정하는(단계(508)) 명시적인 단계들이 방법(500) 내에서 실행되기보다는, 훨씬 적은 것이 특정 시퀀스로 방법(500) 내에서 실행되고, 방법(500)은 서비스 탐색 응답 메시지가 수신됨을 검출할 때까지(이 점에서 방법(500)은 단계(510)로 진행한다) 또는 상기 타이머가 만료됨을 검출할 때까지(이 점에서 방법(500)은 단계(522)로 진행한다) 여전히 대기 상태(즉 단계(504))에 남아있을 수 있다는 것이 이해될 것이다. 예를 들면, 상기 방법(400) 내에서 명시적인 단계로서 상기 타이머를 모니터링하기보다는, 처리가 실행되는 방법(500)에서의 포인트에 상관없이, 상기 타이머가 만료되는 상기 중간 노드(J)에 의한 검출이 방법(500)으로 하여금 단계(522)로 진행하게 할 수 있도록 백그라운드 프로세스로서 실행될 수 있다(예로서, 직접 또는 완곡하게). 이러한 기능은 다른 방식들로 구현될 수 있다는 것이 이해될 것이다.With respect to steps 504, 506, 508, it will be understood that this functionality may be implemented in other ways. For example, explicit steps that determine whether a service search response message has been received (step 506) and whether the timer has expired (step 508) are performed rather than executed within the method 500. , Much less is executed within method 500 in a particular sequence, and until method 500 detects that a service search response message has been received (in which point method 500 proceeds to step 510), or It will be appreciated that until it detects that the timer has expired (in which point method 500 proceeds to step 522), it may still remain in a waiting state (ie, step 504). For example, rather than monitoring the timer as an explicit step within the method 400, regardless of the point in the method 500 in which processing is performed, by the intermediate node J, the timer expires. Detection may be performed as a background process (eg, directly or smoothly) to cause the method 500 to proceed to step 522. It will be appreciated that this functionality may be implemented in other ways.

단계(510)에서, 상기 수신된 서비스 탐색 응답 메시지가 정당한지 여부에 대한 결정이 이루어진다. 상기 수신된 서비스 탐색 응답 메시지의 정당성은 임의의 적절한 방식으로 결정될 수 있다. 예를 들면, 일 실시예에서, 상기 수신된 서비스 탐색 응답 메시지의 정당성은 상기 서비스 탐색 응답 메시지가 중간 노드(J)로부터의 서비스 탐색 요청 메시지에 응답하여 제공됨을 검증하기 위해 상기 수신된 서비스 탐색 응답 메시지 내에 포함된 요청 ID를 검사함으로써 결정된다.In step 510, a determination is made whether the received service search response message is legitimate. The validity of the received service search response message may be determined in any suitable manner. For example, in one embodiment, the validity of the received service search response message is provided to verify that the service search response message is provided in response to a service search request message from an intermediate node J. This is determined by checking the request ID included in the message.

상기 서비스 탐색 응답 메시지가 정당하지 않다면, 방법(500)은 단계(512)로 진행한다.If the service search response message is not valid, the method 500 proceeds to step 512.

상기 서비스 탐색 응답 메시지가 정당하다면, 방법(500)은 단계(514)로 진행한다.If the service search response message is valid, the method 500 proceeds to step 514.

단계(512)에서, 중간 노드(J)는 상기 수신된 서비스 탐색 응답 메시지를 무시한다. 단계(512)로부터, 방법(500)은 단계(504)로 리턴한다(즉, 중간 노드(J)는 하나 이상의 서비스 탐색 응답 메시지들을 계속해서 대기한다).In step 512, the intermediate node J ignores the received service search response message. From step 512, the method 500 returns to step 504 (ie, intermediate node J continues to wait for one or more service search response messages).

단계(514)에서, 상기 수신된 서비스 탐색 응답 메시지가 긍정인지(즉, 상기 요청된 서비스를 지원하는 노드의 위치를 찾았다) 또는 부정인지(즉, 상기 요청된 서비스를 지원하는 노드의 위치가 찾아지지 않았다) 여부에 대한 결정이 이루어진다.In step 514, the received service discovery response message is found to be positive (i.e., the location of the node supporting the requested service was found) or negative (i.e., the location of the node supporting the requested service is found). Decision is made.

상기 서비스 탐색 응답 메시지가 긍정이면, 방법(500)은 단계(516)로 진행한다.If the service search response message is affirmative, the method 500 proceeds to step 516.

상기 서비스 탐색 응답 메시지가 부정이면, 방법(500)은 단계(518)로 진행한다.If the service search response message is negative, the method 500 proceeds to step 518.

단계(516)에서, 중간 노드(J)는 긍정의 서비스 탐색 응답 메시지를 상기 업스트림 노드에 전송한다.In step 516, intermediate node J sends a positive service search response message to the upstream node.

상기 서비스 탐색 응답 메시지는 상기 업스트림 노드에 상기 요청된 서비스를 지원하는 것으로서 식별되는 상기 노드의 표시를 제공하는데 이용하기에 적합한 임의의 정보를 포함할 수 있다. 예를 들면, 상기 서비스 탐색 응답 메시지는 상기 중간 노드(J)의 식별자, 상기 메시지가 상기 업스트림 노드로부터 서비스 탐색 요청 메시지에 대한 응답이라는 표시(예로서, 상기 서비스 탐색 요청 메시지의 메시지 ID), 상기 요청된 서비스를 지원하는 노드의 표시, 상기 요청된 서비스를 지원하는 노드로부터 상기 서비스를 요청할 때 상기 발신 노드에 의해 이용하기 위한 상기 요청된 서비스를 지원하는 노드에 대한 네트워크 접촉 정보(예로서, IP 어드레스, 포트 번호 등) 등을 포함할 수 있다. 상기 서비스 탐색 응답 메시지는 상이한 정보를 포함할 수 있다는 것을 이해할 것이다. 단계(516)로부터, 방법(500)은 단계(524)로 진행하고, 여기서 방법(500)이 종료된다.The service search response message may include any information suitable for use in providing an upstream node with an indication of the node identified as supporting the requested service. For example, the service search response message may be an identifier of the intermediate node J, an indication that the message is a response to a service search request message from the upstream node (eg, the message ID of the service search request message), and An indication of a node supporting the requested service, network contact information (eg, IP) for the node supporting the requested service for use by the originating node when requesting the service from a node supporting the requested service; Address, port number, etc.), and the like. It will be appreciated that the service search response message may include different information. From step 516, the method 500 proceeds to step 524, where the method 500 ends.

단계(518)에서, 중간 노드(J)는 탐색 리스트로부터 상기 소스 노드를 제거한다. 상기 소스 노드는 중간 노드(J)에 의해 수신된 상기 서비스 탐색 응답 메시지의 소스이다. 상기 탐색 리스트는 중간 노드(J)가 방법(400)에 대하여 설명된 바와 같이, 중간 노드(J)에 의해 개시된 임의의 서비스 탐색 요청 메시지에 대한 응답들을 관리하기 위해 중간 노드(J)에 의해 이용되는 서비스 탐색 응답 메시지를 예상하는 하나 이상의 노드들의 리스트이다.In step 518, intermediate node J removes the source node from the search list. The source node is the source of the service search response message received by intermediate node J. The search list is used by intermediate node J to manage responses to any service search request message initiated by intermediate node J, as described with respect to method 400. A list of one or more nodes for which to expect a service discovery response message.

단계(520)에서, 상기 탐색 리스트가 NULL인지 여부에 대한 결정이 이루어진다. 이것은 중간 노드(J)에 의해 수신될 것으로 예상된 상기 서비스 탐색 응답 메시지들의 모두가 사실상 수신되었는지의 여부에 대한 결정이다(연관된 서비스 탐색 응답 메시지가 중간 노드(J)로부터 상기 업스트림 노드로 전송될 수 있도록).In step 520, a determination is made whether the search list is NULL. This is a determination as to whether or not all of the service search response messages expected to be received by intermediate node J have actually been received (an associated service search response message can be sent from intermediate node J to the upstream node). So that).

상기 탐색 리스트가 NULL이면(즉, 모든 예측된 서비스 탐색 응답 메시지들이 수신되었다), 방법(500)은 단계(522)로 진행한다.If the search list is NULL (ie, all predicted service search response messages have been received), the method 500 proceeds to step 522.

상기 탐색 리스트가 NULL이 아니면(즉, 예상된 서비스 탐색 응답 메시지들 모두가 수신되지 않았다), 방법(500)은 단계(504)로 리턴하고 단계(504)로부터 단계(506)로(즉, 상기 중간 노드(J)가 하나 이상의 다운스트림 노드들로부터 하나 이상의 서비스 탐색 응답 메시지들을 여전히 대기하는 대기 상태로) 진행한다.If the search list is not NULL (ie, not all expected service search response messages have been received), the method 500 returns to step 504 and from step 504 to step 506 (ie, the Intermediate node J proceeds to a waiting state, still waiting for one or more service search response messages from one or more downstream nodes).

단계(522)에서, 중간 노드(J)는 부정의 서비스 탐색 응답 메시지를 상기 업스트림 노드에 전송한다.In step 522, intermediate node J sends a negative service search response message to the upstream node.

상기 서비스 탐색 응답 메시지는 중간 노드(J)가 상기 요청된 서비스를 지원하지 않고, 상기 업스트림 노드 대신에 중간 노드(J)에 의해 접촉된 다운스트림 노드들 중 어떤 것도 상기 요청된 서비스를 지원하지 않는다는 표시를 상기 업스트림 노드에 제공할 때 이용하기에 적합한 임의의 정보를 포함할 수 있다. 단계(522)로부터, 방법(500)은 단계(524)로 진행하고, 여기서 방법(500)은 종료된다.The service search response message indicates that intermediate node J does not support the requested service, and none of the downstream nodes contacted by intermediate node J on behalf of the upstream node do not support the requested service. It may include any information suitable for use in providing an indication to the upstream node. From step 522, the method 500 proceeds to step 524, where the method 500 ends.

단계(524)에서, 방법(500)이 종료된다.At step 524, method 500 ends.

여기에서는 연속하여 실행되는 것으로서 주로 묘사되고 설명되지만, 방법(500)의 단계들 중 적어도 일부는 동시에, 또는 도 5에 대하여 묘사되고 설명된 것과 상이한 순서로 실행될 수 있다. 중간 노드에서 서비스 탐색 응답 메시지 처리를 실행하기 위한 프로세스 로직의 특정 구현에 대하여 여기에서 주로 묘사되고 설명되었지만, 중간 노드에서 서비스 탐색 응답 메시지 처리를 위한 프로세스 로직은 여기에 묘사되고 설명된 서비스 위치 찾기 능력을 여전히 지원하면서 다양한 다른 방식들로 구현될 수 있다는 것이 이해될 것이다. Although primarily depicted and described herein as being executed in succession, at least some of the steps of the method 500 may be executed concurrently or in a different order than that depicted and described with respect to FIG. 5. Although mainly depicted and described herein with respect to a particular implementation of process logic for performing service discovery response message processing at an intermediate node, the process logic for processing service discovery response message at an intermediate node is the service location capability described and described herein. It will be appreciated that it can be implemented in a variety of different ways while still supporting.

여기에 표시된 바와 같이, 도 5는 주로 중간 노드에서 실행된 서비스 탐색 응답 메시지 처리 쪽으로 향해져 있다. 그러나, 도 5는 또한 발신 노드, 즉 상기 서비스를 위한 상기 서비스 위치 찾기 요청을 개시하는 노드에서 실행된 서비스 탐색 응답 메시지 처리를 특정하도록 적응될 수 있다. 발신 노드에 대하여, 방법(500)은 단계들(516, 522)을 제거함으로써 적응된다. 단계(516) 및 단계(522)에 대하여, 이들 단계들은 상기 발신 노드가 상기 서비스 위치 찾기 요청의 소스인 이래 발신 노드에 대해 불필요하다(즉, 상기 발신 노드는 응답을 전송할 필요성이 없다). 단계(516)의 제거에 대하여, 단계(514)로부터, 방법(500)이 단계(524)로 진행할 수 있거나(예로서, 일단 발신 노드가 상기 요청된 서비스를 지원하는 노드들 중 하나를 식별하면, 상기 발신 노드는 상기 요청된 서비스를 지원하는 임의의 다른 노드들이 존재하는지의 여부를 상관하지 않는다) 또는 여전히 미해결된 것이 있는지(예로서, 상기 발신 노드가 상기 요청된 서비스를 지원하는 상기 네트워크의 모든 노드들의 리스트를 원할 수 있는) 부가적인 서비스 탐색 응답 메시지들에 대해 계속해서 모니터링할 수 있다. 단계(508)(타이머가 만료되는) 및 단계(520)(탐색 리스트가 NULL인)로부터 단계(522)의 제거에 대하여, 방법(500)은 단계(524)로 진행한다.As indicated here, FIG. 5 is primarily directed towards processing service search response messages executed at intermediate nodes. However, FIG. 5 may also be adapted to specify service search response message processing executed at an originating node, i.e., a node initiating the service location search request for the service. For the originating node, the method 500 is adapted by eliminating steps 516 and 522. For steps 516 and 522, these steps are unnecessary for the originating node since the originating node is the source of the service location search request (ie, the originating node does not need to send a response). For the removal of step 516, from step 514, the method 500 may proceed to step 524 (eg, once the originating node identifies one of the nodes supporting the requested service). The originating node does not care whether there are any other nodes supporting the requested service) or if there is still an unresolved (eg, the originating node of the network supporting the requested service). You can continue to monitor for additional service search response messages (which may want a list of all nodes). For removal of step 522 from step 508 (the timer expires) and step 520 (the navigation list is NULL), the method 500 proceeds to step 524.

상술된 바와 같이 서비스 위치 탐색에서: (1) 코드 네트워크의 키 공간이 M개의 비트들이라면, 상기 서비스 위치 탐색의 소스는 기껏해야 M개의 서비스 탐색 요청 메시지들을 발송하고 기껏해야 M개의 서비스 탐색 응답 메시지들을 수신할 것이고, 상기 중간 노드들은 훨씬 적은 요청 메시지들을 발송하고 훨씬 적은 응답 메시지들을 수신하고, 상기 코드 네트워크의 노드들 중 어떤 것도 메시지들로 오버로드되지 않도록 하고, (2) 업스트림 노드로부터 다운스트림 노드로 전송된 서비스 탐색 요청 메시지는 하나 이상의 부가적인 서비스 탐색 요청 메시지들이 상기 다운스트림 노드에서 생성되게 할 수 있어서, 상기 서비스를 위한 서비스 위치 탐색이, 최대 기껏해야 M-1개의 단계들 또는 스테이지들까지, 하나 이상의 단계들 또는 스테이지들에 걸쳐 분배될 수 있는 탐색들의 시퀀스를 생성할 수 있도록 한다. 이로부터, 상술된 바와 같이 서비스 위치 탐색에서, 서비스 위치 찾기 요청시 상기 코드 네트워크에 K개의 활성 노드들이 존재한다면, 상기 서비스 위치 찾기 요청은, 상기 서비스 위치 탐색 프로세스가 결국(상기 서비스 위치 찾기 요청의 소스를 배제한) 코드 네트워크의 각각의 노드로 하나의 서비스 탐색 요청 메시지를 전달하기 때문에 상기 코드 네트워크에서 K-1개의 메시지들을 생성할 것이다. 이들 메시지들은 상기 노드들 중 어떤 것도 상기 메시지들에 의해 오버로딩되지 않도록 상기 노드들 모두에 걸쳐 분배되지만, 일반적으로, K는 큰 수이고, 따라서 서비스의 위치를 찾기 위해 상기 코드 네트워크에서 생성된 메시지들의 수를 감소시키는 것이 바람직할 것이다.In the service location search as described above: (1) if the key space of the code network is M bits, then the source of the service location search sends at most M service search request messages and at most M service search response messages. Will receive, the intermediate nodes send far fewer request messages and receive much less response messages, and ensure that none of the nodes in the code network are overloaded with messages, and (2) downstream nodes from the upstream node. The service search request message sent to may cause one or more additional service search request messages to be generated at the downstream node such that a service location search for the service may be performed up to M-1 steps or stages. Distribution across one or more steps or stages Navigation can be to generate a sequence of. From this, in the service location search as described above, if there are K active nodes in the code network in the service location search request, the service location search request is eventually terminated (the service location search request). It will generate K-1 messages in the code network because it passes one service discovery request message to each node of the code network (excluding source). These messages are distributed across all of the nodes such that none of the nodes are overloaded by the messages, but in general, K is a large number, and thus, of messages generated in the code network to locate a service. It would be desirable to reduce the number.

일 실시예에서, 서비스의 위치를 찾기 위해 상기 코드 네트워크에서 생성된 메시지들의 수는 상기 서비스를 위한 탐색들이 상기 원의 모든 부분들에 대해 동시에 상기 서비스를 위한 탐색들을 개시하기보다는, 상기 원의 일부들에서 단계적으로 연속하여 개시되는 점진적 탐색을 실행함으로써 감소될 수 있다. 이러한 유형의 서비스 위치 탐색은 여기에서 점진적 서비스 위치 탐색으로서 불리운다.In one embodiment, the number of messages generated in the code network to locate a service is a portion of the circle, rather than the searches for the service initiating searches for the service simultaneously for all parts of the circle. Can be reduced by performing a gradual search that is initiated step by step in succession. This type of service location search is referred to herein as progressive service location search.

상기 점진적 서비스 위치 탐색은 먼저 서비스의 위치를 찾기 위해 상기 코드 네트워크에서 생성된 메시지들의 수를 감소시키기 위한 하나의 방법은 초기 검색에서, 전체 원 대신에, 원의 일부만을 검색하는 것임을 고려함으로써 보다 양호하게 이해될 수 있다. 이 경우에, 전체 원은 검색되지 않기 때문에, 이러한 검색은 요청된 서비스를 제공하는 노드의 위치를 찾을 수 없다. 이러한 경우에, 상기 원의 일부에 대한 검색이 성공적인 확률은 서비스의 위치를 찾기 위해 개시된 메시지들의 수에 대하여(즉, 상기 원 내의 탐색 범위의 크기에 대하여) 균형이 유지될 수 있다. 이 경우에, 상기 탐색 범위의 크기는 다음과 같이 결정될 수 있다.The incremental service location search is better by first considering that one way to reduce the number of messages generated in the code network to locate the service is to search only a portion of the circle, instead of the entire circle, in the initial search. Can be understood. In this case, because the entire circle is not searched, this search cannot find the location of the node providing the requested service. In such a case, the probability that a search for a portion of the circle is successful may be balanced against the number of messages initiated to locate the service (ie, relative to the size of the search range within the circle). In this case, the size of the search range can be determined as follows.

상기 탐색 범위의 크기가 작은 탐색 실패율을 보장하기 위해 결정될 수 있는 방식이 일 예를 고려함으로써 더욱 양호하게 이해될 수 있다. 이 예에서, 키 공간을 2M이라 하고, 평균하여, 상기 서비스를 제공하는 상기 네트워크에서 보통 2K 활성 노드들이 존재한다고 가정하자. 이들 가정들에 기초하여, 특정 노드-ID를 위한 서비스를 제공하는 활성 노드가 존재하는 확률은 α= 2K/2M = 2-(M-K)이다. 이 예에서, 노드(0)는 [1,L)의 초기 탐색 범위 내에서 서비스(A)를 탐색한다고 추가로 가정하자. 상기 범위([1,L))내의 어떤 노드도 서비스(A)를 제공하지 않을 확률은 (1-α)L-1이다. 이 예에서, 원하는 탐색 실패율은 예를 들면, 2% 미만(비록, 임의의 원하는 탐색 실패율이 이용될 수 있지만)이라고 하고, 이것은 식((1-α)L-1 < 1/50)을 초래한다. 이러한 식을 이용하고, 상기 식의 양측들의 로그(베이스 e)를 취하면, 적들: (L-1)*In(1-α) <- In(50), 여기서, In(1-α) = -α - α2/2 - α3/3 - α4/4 등. 일반적으로, α는 매우 작은 수이고, 따라서 고차 항들은 대수롭지 않으며 무시될 수 있다. 따라서, 상기 식은 다음과 같이 근사될 수 있다: -(L-1)*α < -In(50), 또는 L > (3.91)*1/α + 1, 보다 간단하게는, L > (3.91)*1/α(1을 무시).The manner in which the size of the search range can be determined to ensure a small search failure rate can be better understood by considering an example. In this example, let us assume that the key space is 2M , and on average, there are usually 2K active nodes in the network providing the service. Based on these assumptions, the probability that there is an active node providing a service for a particular node-ID is α = 2 K / 2 M = 2 -− (MK) . In this example, further assume that node 0 searches for service A within the initial search range of [1, L). The probability that no node in the range ([1, L)) will provide service A is (1-α) L-1 . In this example, the desired search failure rate is, for example, less than 2% (although any desired search failure rate may be used), which results in the formula ((1-α) L-1 <1/50). do. Using this equation and taking the logarithm of both sides of the equation (base e), the enemies: (L-1) * In (1-α) <-In (50), where In (1-α) = such as α 4/4 - -α - α 2/2 - α 3/3. In general, α is a very small number, so higher order terms are not algebraic and can be ignored. Thus, the equation can be approximated as:-(L-1) * α <-In (50), or L> (3.91) * 1 / α + 1, more simply, L> (3.91) * 1 / α (ignore 1).

상기 탐색 범위의 크기가 작은 탐색 실패율을 보장하기 위해 결정될 수 있는 방식은 또한 보다 설명적인 예를 고려함으로써 양호하게 이해될 수 있다. 이 예에서, 160비트들의 키 공간을 가진 코드 네트워크를 고려하자. 평균하여, 서비스(A)를 제공하는 상기 활성 노드들 가운데 보통 210(또는 1024)개의 노드들이 존재하는 상기 네트워크에 100,000개의 활성 노드들이 존재한다고 가정하자(즉, 상기 활성 노드들의 ~1%). 이 경우에 α=2-150이고, L은 (3.91)*2150보다 크게 되도록 선택된다. L=4*2150 = 2152이라고 하자. 이러한 L의 선택을 갖고, 초기 탐색은 상기 원의 2152/2160 = 1/28 - 1/256 부분을 커버할 것이다. 따라서, 이 예에서, 상기 초기 탐색은 98% 성공 가능성을 가질 것인 반면, 상기 서비스의 위치를 찾기 위해 상기 네트워크에서 교환된 메시지들의 수는 256의 인자에 의해 감소된다(즉, 평균하여 상기 초기 서비스 범위에서의 노드들의 수는 대략 400개이고, 따라서 상기 초기 탐색은 그 외 상기 초기 탐색이 전체 코드 네트워크에 걸친다면 생성될 100,000개의 탐색 메시지들이라기보다는, 단지 약 400개의 탐색 메시지들만을 생성한다. The manner in which the size of the search range can be determined to ensure a small search failure rate can also be better understood by considering more illustrative examples. In this example, consider a code network with a key space of 160 bits. On average, assume that there are 100,000 active nodes in the network where there are usually 2 10 (or 1024) nodes among the active nodes providing service A (ie ~ 1% of the active nodes). . In this case α = 2−150 and L is selected to be larger than (3.91) * 2 150 . Let L = 4 * 2 150 = 2 152 . Have the choice of these L, the initial search is 2152/2160 = 8 1/2 of the one-part will cover the 1/256. Thus, in this example, the initial search will have a 98% chance of success, while the number of messages exchanged in the network to locate the service is reduced by a factor of 256 (ie, the initial on average). The number of nodes in the service range is approximately 400, so the initial search produces only about 400 search messages, rather than 100,000 search messages to be generated if the initial search spans the entire code network.

상술된 바와 같이, 상기 초기 탐색이 단지 상기 서비스를 지원하는 노드의 위치를 찾는데 실패할 가능성이 희박하기 쉽다. 상기 초기 탐색이 상기 서비스를 지원하는 노드의 위치를 찾는데 실패할 경우에, 상기 서비스 위치 탐색의 소스는 그 후 상기 원의 제 2 부분에 대한 제 2 검색을 개시할 수 있다(예로서, 상기 예에서, 노드(0)는 범위([L, 2L))를 갖고 제 2 서비스 위치 탐색을 개시할 것이다). 상기 제 2 탐색이 상기 서비스를 지원하는 노드의 위치를 찾는데 실패한다면, 상기 서비스 위치 탐색의 소스는 그 후 상기 원의 제 3 부분에 대한 제 3 검색을 개시할 수 있다(예로서, 상기 예에서, 노드(0)는 범위([2L, 3L))를 갖고 제 3 서비스 위치 탐색을 개시할 것이다). 따라서, 상기 소스 노드는 서비스를 지원하는 노드의 위치가 찾아지거나 전체 원이 상기 서비스를 지원하는 노드의 위치를 찾지 않고 탐색될 때까지 상기 코드 네트워크의 원의 복수의 부분들의 각각을 계속해서 탐색할 수 있으며, 그에 의해 상기 서비스를 지원하는 노드의 위치를 찾기 위해 상기 코드 네트워크 내에서 교환된 메시지들의 수를 상당히 감소시킬 수 있는 점진적 서비스 위치 탐색을 제공할 수 있다.As mentioned above, it is unlikely that the initial search will simply fail to locate the node that supports the service. If the initial search fails to locate a node that supports the service, the source of the service location search may then initiate a second search for the second portion of the circle (eg, the example above). Node 0 will have a range ([L, 2L) and initiate a second service location search). If the second search fails to locate a node that supports the service, then the source of the service location search may then initiate a third search for the third portion of the circle (eg, in the example above). Node 0 will have a range ([2L, 3L) and initiate a third service location search). Thus, the source node may continue to search each of the plurality of portions of the circle of the code network until the location of the node supporting the service is found or the entire circle is searched without finding the location of the node supporting the service. Thereby providing a progressive service location search that can significantly reduce the number of messages exchanged within the code network to locate the node supporting the service.

상기 설명된 점진적 서비스 위치 탐색 실시예에서, 상기 탐색 아크들(arcs)(및, 그에 따른 탐색 범위들)의 엔드포인트들은 L, 2L, 3L, 4L 등이다. 이것은 도 6에 묘사된다.In the progressive service location search embodiment described above, the endpoints of the search arcs (and thus search ranges) are L, 2L, 3L, 4L, and the like. This is depicted in FIG. 6.

도 6은 대표적인 코드 네트워크에서 서비스를 위한 점진적 서비스 위치 탐색을 실행하는 일 예를 도시하는, 대표적인 코드 네트워크를 묘사한다. 코드 네트워크(600)에서, 키 공간은 6비트들(즉, 64개의 ID들)이고, 상기 점진적 서비스 위치 탐색의 각각의 스테이지를 위한 탐색 범위의 크기는 8개의 노드들이다.6 depicts an exemplary code network, illustrating an example of performing a gradual service location search for a service in an exemplary code network. In the code network 600, the key space is 6 bits (ie 64 IDs) and the size of the search range for each stage of the progressive service location search is 8 nodes.

상술된 점진적 서비스 위치 탐색 실시예에서, 상기 탐색 아크들의 엔드포인트들은 L, 2L, 3L, 4L 등이고, 이것은 상기 서비스 위치 찾기 요청을 개시하는 상기 소스 노드에서 유지된 상기 탐색 표과 호환될 수 없다(즉, 그것들은 상기 소스 노드에서 유지된 상기 탐색 표의 핑거들이 아니다). 그 결과, 상기 아크들 중 하나에 걸쳐 탐색을 실행할 때(예로서, [n*L, (n+1)*L)에 걸쳐), 다수의 서비스 위치 탐색 메시지들이 생성될 필요가 있을 수 있다. 이것은 도 7에 묘사된다.In the gradual service location search embodiment described above, the endpoints of the search arcs are L, 2L, 3L, 4L, etc., which is not compatible with the search table maintained at the source node initiating the service location request. , They are not fingers of the search table maintained at the source node). As a result, when performing a search across one of the arcs (eg, over [n * L, (n + 1) * L)), multiple service location search messages may need to be generated. This is depicted in FIG.

도 7은 도 6의 대표적인 코드 네트워크에서 서비스를 위한 점진적 서비스 위치 탐색을 실행하기 위한 대표적인 탐색 범위를 묘사한다. 도 7에 묘사된 바와 같이, 제 (k+1) 핑거는 상기 탐색 범위(즉, n*L < 제 (k+1) 핑거 < (N+1)*L)에 속하고, 상기 제 k 핑거 및 상기 제 (k+2) 핑거 둘 모두는 상기 탐색 범위 밖에 있다. 이 경우에, 상기 아크에 걸쳐 서비스 위치 탐색을 실행하기 위해, 상기 소스 노드는 다음과 같이 두 개의 서비스 탐색 요청 메시지들을 생성할 것이다: (a) 하나의 탐색 요청이 (n*L, 제 (k+1) 핑거)의 탐색 범위를 갖고 제 k 핑거에 전송되고, (b) 하나의 탐색 요청이 [(제 (k+1) 핑거, (N+1)*L)의 탐색 범위를 갖고 제 (k+1) 핑거에 전송된다.FIG. 7 depicts an exemplary search range for performing a gradual service location search for a service in the exemplary code network of FIG. 6. As depicted in FIG. 7, the (k + 1) fingers belong to the search range (ie, n * L <(k + 1) fingers <(N + 1) * L) and the kth finger And the (k + 2) fingers are both outside the search range. In this case, to perform a service location search across the arc, the source node will generate two service search request messages as follows: (a) One search request is (n * L, (k) +1) finger) and is sent to k-th finger, and (b) one search request has a search range of ((k + 1) finger, (N + 1) * L) k + 1) is sent to the finger.

일 실시예에서, 상기 점진적 서비스 위치 탐색은 상기 점진적 서비스 위치 탐색이 상기 소스 노드의 탐색 표과 일직선이도록 수정될 수 있으며, 그에 의해 아크를 통한 탐색이 다수의 서비스 탐색 요청 메시지들을 요구하는 상황을 방지한다.In one embodiment, the progressive service location search may be modified such that the progressive service location search is in line with the search table of the source node, thereby avoiding a situation where a search through an arc requires multiple service search request messages. .

정렬된 점진적 서비스 위치 탐색의 대표적인 실시예가 도 8 및 도 9에 대하여 묘사되고 설명된다.A representative embodiment of aligned progressive service location search is depicted and described with respect to FIGS. 8 and 9.

도 8은 정렬된 점진적 서비스 위치 탐색을 이용하여 서비스 위치 찾기 요청을 개시하는 노드에서 서비스 탐색 요청 메시지를 생성하기 위한 방법의 일 실시예를 묘사한다.8 depicts one embodiment of a method for generating a service search request message at a node initiating a service location search request using aligned incremental service location search.

단계(802)에서, 방법(800)이 시작된다.At step 802, method 800 begins.

단계(804)에서, 상기 노드는 상기 서비스를 지원하는 활성 노드들(L로서 표시되는)의 추정된 평균수를 결정한다.In step 804, the node determines an estimated average number of active nodes (denoted as L) that support the service.

상기 서비스를 지원하는 활성 노드들의 추정된 평균 수는 이러한 정보의 임의의 적절한 소스로부터(예로서, 상기 노드의 로컬 메모리로부터, 웹 서버로부터 등) 결정될 수 있다.The estimated average number of active nodes supporting the service can be determined from any suitable source of such information (eg, from the local memory of the node, from a web server, etc.).

서비스를 지원하는 활성 노드들의 평균 수는 임의의 적절한 방식으로 추정될 수 있다. 일 실시예에서, 서비스를 지원하는 활성 노드들의 평균 수는 도 1 내지 도 6에 대하여 묘사되고 설명되는 서비스 위치 탐색 알고리즘의 수정된 버전을 이용하여 추정될 수 있다. 도 1 내지 도 6에 대하여 설명된 상기 서비스 위치 탐색 알고리즘에서, 중간 노드는 그것이 다운스트림 노드로부터 수신되자마자 업스트림 노드로 긍정의 응답 메시지를 포워딩한다. 일 실시예에서, 도 1 내지 도 6에 대하여 묘사되고 설명된 상기 서비스 위치 탐색 알고리즘은 서비스 탐색 요청 메시지들을 개시한 다운스트림 노드들 중 하나로부터 제 1 긍정의 응답을 수신하자마자 상기 업스트림 노드로 긍정의 응답을 즉시 포워딩하기보다는, 각각의 중간 노드는 그것이 서비스 탐색 요청 메시지들을 개시한 모든 다운스트림 노드들로부터 모든 응답 메시지들을 대기하고 그 후 통합된 응답(상기 서비스를 지원하는 상기 다운스트림 노드들의 총 수, 및 이들 노드들 중 적어도 하나의 노드 ID 및 IP 어드레스를 포함하는)을 상기 업스트림 노드에 포워딩하도록 변경될 수 있다. 상기 중간 노드들은 임의의 적절한 방식으로 이러한 변경된 처리를 실행하도록 지시받을 수 있다. 일 실시예에서, 예를 들면, 새로운 표시자가 서비스를 지원하는 활성 노드들의 평균 수를 추정하기 위한 처리를 실행할지 여부에 대해 상기 중간 노드들에 알리기 위해 상기 서비스 탐색 요청 메시지들에 부가될 수 있다. 이러한 일 실시예에서, 상기 새로운 표시자는 특정 서비스를 위한 적어도 제 1의 몇몇 검색들을 위해 참(TRUE)으로 설정될 수 있으며, 따라서 상기 소스 노드는 상기 노드가 서비스를 지원하는 활성 노드들의 평균 수의 추정치를 그로부터 결정할 수 있도록 서비스를 지원하는 활성 노드들의 수의 적어도 몇몇 추정치들을 수신한다. 상기 새로운 표시자는 그 후 상기 중가 노드들이 상기 서비스를 위한 모든 요청을 위한 수정된 처리를 실행하도록 요구되지 않도록 거짓(FALSE)으로 설정될 수 있다. 추가적인 일 실시예에서, 상기 서비스를 지원하는 활성 노드들의 평균 수의 추정치는 참으로 설정된 새로운 표시자를 갖고 도 1 내지 도 6에 대하여 설명된 상기 서비스 위치 탐색 알고리즘을 이용하여 상기 서비스에 대한 서비스 위치 탐색을 주기적으로 실행함으로써 주기적으로 업데이트될 수 있다. 서비스를 지원하는 활성 노드들의 평균 수의 추정치를 결정한 후, 상기 노드는 그 후 상기 점진적 서비스 위치 탐색 능력들을 이용하여 상기 서비스에 대한 후속 탐색들을 실행하도록 서비스를 지원하는 활성 노드들의 평균 수의 추정치를 이용할 수 있다. 더욱이, 상술된 실시예들 외에, 상술된 실시예들의 많은 변형들이 이용될 수 있다. 예를 들면, 발신 노드로부터 상기 네트워크의 일부로의 탐색 메시지들은 상기 표시자를 참으로 설정할 수 있는 반면, 상기 표시자는 나머지 부분을 위해 거짓으로 설정된다. 이 예에서, 참으로 설정된 상기 표시자를 가진 상기 탐색 메시지들로부터의 응답들은 상기 서비스르 지원하는 활성 노드들의 평균 수를 추정하기 위해 이용될 수 있지만, 보다 적은 정확도를 갖고, 거짓으로 설정된 상기 표시자를 가진 탐색 메시지들이 긍정의 응답들을 대기하지 않기 때문에 보다 빠른 응답을 생성할 것이다. 많은 다른 방법들이 또한 가능하다는 것이 이해될 것이다. 일반적으로, 상이한 방법들 간의 차이들은 추정의 정확도, 알고리즘의 복잡도, 응답 시간, 생성된 메시지들의 수 간에 트레이드-오프들(trade-offs)을 포함한다.The average number of active nodes supporting the service can be estimated in any suitable manner. In one embodiment, the average number of active nodes supporting a service may be estimated using a modified version of the service location search algorithm depicted and described with respect to FIGS. In the service location search algorithm described with respect to FIGS. 1-6, the intermediate node forwards a positive response message to the upstream node as soon as it is received from the downstream node. In one embodiment, the service location search algorithm depicted and described with respect to FIGS. 1 to 6 is positive to the upstream node upon receipt of a first positive response from one of the downstream nodes that initiated service search request messages. Rather than forwarding the response immediately, each intermediate node waits for all response messages from all downstream nodes from which it initiated service search request messages and then integrated response (the total number of the downstream nodes supporting the service). And a node ID and IP address of at least one of these nodes) may be changed to forward to the upstream node. The intermediate nodes may be instructed to execute this modified process in any suitable manner. In one embodiment, for example, a new indicator may be added to the service search request messages to inform the intermediate nodes as to whether to perform a process for estimating an average number of active nodes supporting a service. . In one such embodiment, the new indicator may be set to TRUE for at least some first searches for a particular service, so that the source node is the average number of active nodes for which the node supports the service. Receive at least some estimates of the number of active nodes supporting the service so that an estimate can be determined therefrom. The new indicator may then be set to FALSE so that the intermediate nodes are not required to perform modified processing for all requests for the service. In a further embodiment, an estimate of the average number of active nodes supporting the service is a service location search for the service using the service location search algorithm described with respect to FIGS. 1-6 with a new indicator set to true. Can be updated periodically by executing. After determining an estimate of the average number of active nodes supporting a service, the node then uses the progressive service location search capabilities to estimate an average number of active nodes supporting a service to perform subsequent searches for the service. It is available. Moreover, in addition to the above-described embodiments, many variations of the above-described embodiments may be used. For example, search messages from the originating node to part of the network may set the indicator to true while the indicator is set to false for the rest. In this example, responses from the search messages with the indicator set to true can be used to estimate the average number of active nodes supporting the service, but with less accuracy, the indicator set to false Since the search messages that are held do not wait for positive responses, they will generate a faster response. It will be appreciated that many other methods are also possible. In general, the differences between the different methods include trade-offs between the accuracy of the estimate, the complexity of the algorithm, the response time, and the number of messages generated.

단계(806)에서, 상기 노드는 상기 서비스에 대한 초기 탐색을 위한 핑거들의 수를 결정한다(K로서 표시되는). 상기 초기 탐색을 위한 핑거들의 수는 상기 서비스를 지원하는 활성 노드들의 평균 수를 이용하여 결정된다. 상기 초기 탐색을 위한 핑거들의 수는 식((L-1)*In(1-a) < In(1/b))로부터의 L에 대해 풀음(solve)으로써 결정되고, 여기서 (i) a는 노드 ID가 상기 서비스를 지원하는 활성 노드를 가질 확률이고, (ii) b는 상기 탐색이 부정적인 확률이고, (iii) L은 탐색 범위이다.In step 806, the node determines (indicated as K) the number of fingers for the initial search for the service. The number of fingers for the initial discovery is determined using the average number of active nodes supporting the service. The number of fingers for the initial search is determined by solving for L from the equation ((L-1) * In (1-a) <In (1 / b)), where (i) a is The node ID is the probability of having an active node supporting the service, (ii) b is the probability that the search is negative, and (iii) L is the search range.

단계(808)에서, 상기 노드는 서비스 탐색 요청 메시지들을 상기 노드에서 유지된 상기 탐색 표의 첫 K개의 핑거들에 전송한다. 서비스 탐색 요청 메시지는 상기 서비스 탐색 요청 메시지의 ID, 상기 요청된 서비스를 식별하는데 이용하기 위해 적응된 서비스 식별 정보, 탐색 범위 등과 같이, 상기 요청된 서비스를 탐색하는데 이용하기에 적합한 임의의 정보를 포함한다. 제 i 핑거에 대한 탐색 범위는 [제 i 핑거, 제 (i+1) 핑거)이고, 여기서 i= 1,..., K이다. 상이한 정보가 상기 서비스 탐색 요청 메시지 내에 포함될 수 있다는 것이 이해될 것이다.In step 808, the node sends service search request messages to the first K fingers of the search table maintained at the node. The service search request message includes any information suitable for use in searching for the requested service, such as the ID of the service search request message, service identification information adapted for use in identifying the requested service, search range, and the like. do. The search range for the i th finger is [i th finger, (i + 1) finger), where i = 1, ..., K. It will be appreciated that different information may be included in the service discovery request message.

단계(810)에서, 상기 서비스를 지원하는 노드가 식별되었는지의 여부에 대한 결정이 이루어진다(즉, 단계(808)로부터의 초기 서비스 탐색 요청 메시지들에 기초하여, 및 선택적으로, 단계(816)로부터의 하나 이상의 후속 서비스 탐색 요청 메시지들). 상기 서비스를 지원하는 노드가 식별되었다면, 방법(800)은 단계(818)로 진행하고, 이 포인트에서 방법(800)이 종료된다. 상기 서비스를 지원하는 노드가 식별되지 않았다면, 방법(800)은 단계(812)로 진행한다.In step 810, a determination is made as to whether a node supporting the service has been identified (ie, based on initial service search request messages from step 808, and optionally from step 816). One or more subsequent service discovery request messages). If a node supporting the service has been identified, the method 800 proceeds to step 818, at which point the method 800 ends. If a node supporting the service has not been identified, the method 800 proceeds to step 812.

단계(812)에서, 상기 탐색 표에서의 최종 핑거가 선택되었는지의 여부(즉, K = M인지 여부)에 대한 결정이 이루어진다. 상기 탐색 표에서의 최종 핑거가 선택되었다면, 방법(800)은 단계(818)로 진행하고, 이 포인트에서 방법(800)은 종료된다. 상기 탐색 표에서의 최종 핑거가 선택되지 않았다면, 방법(800)은 단계(814)로 진행한다.In step 812, a determination is made as to whether the last finger in the lookup table has been selected (ie, K = M). If the last finger in the search table has been selected, the method 800 proceeds to step 818, at which point the method 800 ends. If the last finger in the lookup table has not been selected, the method 800 proceeds to step 814.

단계(814)에서, K의 값은 증분된다. 단계(816)에서, 상기 노드는 서비스 탐색 요청 메시지를 상기 노드에서 유지된 상기 탐색 표의 제 K 핑거에 전송한다. 단계(816)로부터, 방법(800)은 단계(810)로 리턴하고, 이 포인트에서, 상기 서비스를 지원하는 노드가 상기 점진적 탐색의 현재 스테이지 동안 식별되었는지의 여부에 대한 결정이 이루어진다.In step 814, the value of K is incremented. In step 816, the node sends a service search request message to the Kth finger of the search table maintained at the node. From step 816, the method 800 returns to step 810, where a determination is made as to whether a node supporting the service has been identified during the current stage of the progressive search.

상기 서비스를 지원하는 노드가 식별되거나 상기 탐색 표의 모든 핑거들이 처리된 후 상기 서비스를 지원하는 어떤 노드도 식별되지 않을 때 들어가지는, 단계(816)에서, 방법(800)이 종료된다.At step 816, the method 800 ends when a node supporting the service is identified or entered when no node supporting the service is identified after all the fingers of the search table have been processed.

도 8에 대하여, 일 실시예에서, 제 (i+1) 핑거가 제 i 핑거와 동일하다면, 서비스 탐색 요청 메시지는 제 (i+1) 핑거에 대해 전송되지 않으며(초기 탐색에서 중복 메시지들을 상기 핑거들에 전송하는 것을 회피하기 위해), 그에 의해 다수의 서비스 탐색 요청 메시지들이 동일한 노드에 전송되는 것을 방지한다.8, in one embodiment, if the (i + 1) finger is the same as the i th finger, the service search request message is not sent for the (i + 1) finger (recalling duplicate messages in the initial search). To avoid sending to the fingers) thereby preventing multiple service search request messages from being sent to the same node.

주로 연속하여 실행되는 것으로서 여기에 묘사되고 설명되었지만, 방법(800)의 단계들의 적어도 일부는 동시에, 또는 도 8에 대하여 묘사되고 설명된 것과 상이한 순서로 실행될 수 있다. 주로 중간 노드에서 서비스 탐색 요청 메시지 생성을 실행하기 위한 프로세스 로직의 특정 구현에 대하여 여기에 묘사되고 설명되었지만, 중간 노드에서 서비스 탐색 요청 메시지 생성을 실행하기 위한 프로세스 로직은 여전히 여기에 묘사되고 설명된 상기 서비스 위치 찾기 능력을 지원하면서 다양한 다른 방식들로 구현될 수 있다는 것이 이해될 것이다.Although depicted and described herein primarily as being executed in succession, at least some of the steps of the method 800 may be executed concurrently or in a different order than that depicted and described with respect to FIG. 8. Although primarily depicted and described herein with respect to a particular implementation of process logic for executing service search request message generation at an intermediate node, the process logic for executing service search request message generation at an intermediate node is still described and described above. It will be appreciated that it can be implemented in a variety of different ways while supporting the service location capability.

도 9a 내지 도 9d는 도 1의 대표적인 코드 네트워크에서의 서비스를 위한 배열된 점진적 서비스 위치 탐색을 실행하는 일 예를 도시하는, 도 1의 대표적인 코드 네트워크의 노드들 중 하나에 의해 개시된 서비스 위치 탐색에 응답하여 도 1의 대표적인 코드 네트워크 내에서 개시된 서비스 탐색 요청 메시지들을 묘사한다.9A-9D illustrate a service location search initiated by one of the nodes of the representative code network of FIG. 1, illustrating an example of performing an ordered incremental service location search for a service in the exemplary code network of FIG. 1. In response, depict service discovery request messages initiated within the representative code network of FIG.

도 9a 내지 도 9d의 예에서, 노드(0)는 서비스 위치 찾기 요청을 개시한다. 상기 요청된 서비스를 지원하는 활성 노드들의 추정된 평균 수는 8과 동일하고(L=23=8), 이것은 상기 서비스를 위한 초기 탐색이 노드(0)의 탐색 표의 첫 3개의 핑거들, 즉 노드들(2, 2, 및 5)을 포함할 것임을 나타낸다. 따라서, 서비스 탐색 요청 메시지들은 각각 [2, 5) 및 [5, 9)의 탐색 범위들을 갖고 노드들(2, 5)로 전송된다(노드(9)는 제 4 핑거이다). 노드(0)에 의한 초기 탐색은 도 9a에 도시되고, 상기 서비스 탐색 요청 메시지들은 노드들(2, 5)에 전송되고 노드(2)는 서비스 탐색 요청 메시지를 노드(3)로 전송하고, 노드(5)는 서비스 탐색 요청 메시지들을 노드들(6, 7)로 전송한다. 이 예에서, 노드(7)는 상기 요청된 서비스를 지원하는 활성 노드이고, 따라서 노드(0)는 상기 초기 검색에서 상기 요청된 서비스를 지원하는 노드의 위치를 찾을 것이고, 상기 정렬된 점진적 서비스 위치 탐색이 완료될 것이다.In the example of FIGS. 9A-9D, node 0 initiates a service location search request. The estimated average number of active nodes supporting the requested service is equal to 8 (L = 2 3 = 8), so that the initial search for the service is the first three fingers of node 0's search table, i.e. Nodes 2, 2, and 5, respectively. Thus, service search request messages are sent to nodes 2 and 5 with search ranges of [2, 5) and [5, 9), respectively (node 9 is the fourth finger). The initial search by node 0 is shown in FIG. 9A, where the service search request messages are sent to nodes 2, 5 and node 2 sends a service search request message to node 3, and the node (5) sends service search request messages to the nodes (6, 7). In this example, node 7 is the active node supporting the requested service, so node 0 will find the location of the node supporting the requested service in the initial search, and the aligned incremental service location. The search will complete.

도 9a 내지 도 9d의 예에서, 그러나, 예시적인 목적들을 위해, 노드(7)는 상기 서비스를 지원하지 않으며, 따라서 상기 초기 검색이 실패한 것으로 가정하자. 상기 초기 검색이 실패하였음을 결정할 때, 그 후, 노드(0)는 그것의 탐색 표에서의 다음 핑거, 즉 노드(9)로 상기 서비스를 위한 후속 탐색을 개시한다. 따라서, 서비스 탐색 요청 메시지는 [9, 16)의 탐색 범위를 갖고 노드(9)로 전송된다. 노드(0)에 의한 이러한 후속 탐색은 도 9b에 도시되고, 상기 서비스 탐색 요청 메시지는 노드(9)로 전송되고 노드(9)는 서비스 탐색 요청 메시지들을 노드들(12, 13)로 전송한다. 이 예에서, 상기 요청된 서비스를 지원하는 상기 범위([9, 16)) 내에 활성 노드들이 존재하지 않으며, 따라서 상기 정렬된 점진적 서비스 위치 탐색은 계속될 것이다.In the example of FIGS. 9A-9D, however, for illustrative purposes, assume that node 7 does not support the service and therefore that the initial search has failed. Upon determining that the initial search has failed, node 0 then initiates a subsequent search for the service with the next finger in its search table, namely node 9. Thus, the service search request message is sent to node 9 with a search range of [9, 16). This subsequent search by node 0 is shown in FIG. 9B, where the service search request message is sent to node 9 and node 9 sends service search request messages to nodes 12 and 13. In this example, there are no active nodes in the range ([9, 16) supporting the requested service, so the aligned progressive service location search will continue.

도 9a 내지 도 9d의 예에서, 상기 제 1 후속 탐색이 실패하였음을 결정할 때, 노드(0)는 그 후 그것의 탐색 표에서의 다음 핑거, 즉 노드(16)로 상기 서비스를 위한 제 2 후속 탐색을 개시한다. 따라서, 서비스 탐색 요청 메시지는 [16, 32)의 범위를 갖고 노드(16)로 전송된다. 노드(0)에 의한 이러한 후속 탐색은 도 9c에 도시되고, 상기 서비스 탐색 요청 메시지는 노드(16)에 전송되고, 노드(16)는 서비스 탐색 요청 메시지들을 노드들(17, 18, 20, 24)에 전송한다(뿐만 아니라, 이들 노드들은 부가적인 서비스 탐색 요청 메시지들을 전파한다). 이 예에서, 노드(19)는 상기 요청된 서비스를 지원하는 활성 노드이고, 따라서 노드(0)는 상기 초기 탐색에서 상기 요청된 서비스를 지원하는 노드의 위치를 찾을 것이고, 상기 정렬된 점진적 서비스 위치 탐색이 완료될 수 있다.In the example of FIGS. 9A-9D, upon determining that the first subsequent search has failed, node 0 then moves to the next finger in its search table, namely node 16, the second subsequent for the service. Start the search. Thus, the service search request message is sent to node 16 with a range of [16, 32]. This subsequent search by node 0 is shown in FIG. 9C, where the service search request message is sent to node 16, and node 16 sends service search request messages to nodes 17, 18, 20, 24. (As well as these nodes propagate additional service search request messages). In this example, node 19 is the active node supporting the requested service, so node 0 will find the location of the node supporting the requested service in the initial search, and the aligned incremental service location. The search can be completed.

도 9a 내지 도 9d의 예에서, 그러나, 예시적인 목적들을 위해, 노드(19)는 상기 서비스를 지원하지 않으며, 따라서 상기 제 2 후속 탐색이 실패하였다고 가정하자. 상기 제 2 후속 탐색이 실패하였음을 결정할 때, 노드(0)는 그 후 그것의 탐색 표에서의 다음 핑거, 즉 노드(32)로 상기 서비스를 위한 제 3 후속 탐색을 개시한다. 따라서, 서비스 탐색 요청 메시지는 [32, 0)의 탐색 범위를 갖고, 노드(32)로 전송된다. 노드(0)에 의한 이러한 후속 탐색은 도 9d에 도시되고, 상기 서비스 탐색 요청 메시지는 노드(32)로 전송되고 노드(32)는 서비스 탐색 요청 메시지들을 노드들(34, 37, 40, 49)에 전송한다(뿐만 아니라 이들 노드들은 부가적인 서비스 탐색 요청 메시지들을 전파한다), 이 예에서, 노드(51)는 상기 요청된 서비스를 지원하는 활성 노드이고, 따라서 노드(0)는 상기 초기 검색에서 상기 요청된 서비스를 지원하는 노드의 위치를 찾을 것이고, 상기 정렬된 점진적 서비스 위치 탐색이 완료될 것이다.In the example of FIGS. 9A-9D, however, for illustrative purposes, assume that node 19 does not support the service and therefore the second subsequent search has failed. Upon determining that the second subsequent search has failed, node 0 then initiates a third subsequent search for the service with the next finger in its search table, namely node 32. Thus, the service search request message has a search range of [32, 0) and is sent to node 32. This subsequent search by node 0 is shown in FIG. 9D, where the service search request message is sent to node 32 and node 32 sends service search request messages to nodes 34, 37, 40, 49. (As well as these nodes propagate additional service search request messages), in this example, node 51 is the active node supporting the requested service, so node 0 is in the initial search. The location of the node supporting the requested service will be found, and the aligned incremental service location search will be completed.

상기 정렬된 점진적 서비스 위치 탐색에서, 다수의 서비스 탐색 요청 메시지들이 상기 초기 단계에서 상기 발신 노드에 의해 전송되지만, 단일 서비스 탐색 요청 메시지가 후속 단계들의 각각에서 상기 발신 노드에 의해 송신된다. 이것은 도 8의 대표적인 방법 및 도 9a 내지 도 9d의 예로부터 명백하다. 일반적으로, 첫 두 개의 탐색들을 위한 탐색 범위들은 각각 L개의 노드 ID들을 커버하고, 그 후, 상기 후속 탐색들의 탐색 범위는 모든 단계에서 두 배이다(예로서, 제 3 탐색은 대략 2*L개의 노드 ID들을 커버하고, 상기 제 4 탐색은 대략 4*L개의 노드 - ID들을 커버한다).In the aligned incremental service location search, multiple service search request messages are sent by the originating node in the initial stage, but a single service search request message is sent by the originating node in each of the subsequent stages. This is evident from the exemplary method of FIG. 8 and the examples of FIGS. 9A-9D. In general, the search ranges for the first two searches each cover L node IDs, and then the search range of the subsequent searches is doubled in every step (eg, the third search is approximately 2 * L Cover node IDs, and the fourth search covers approximately 4 * L node-IDs).

여기에 설명된 바와 같이, 점진적 서비스 위치 탐색은 요청된 서비스를 지원하는 노드의 위치를 찾기 위한 상기 코드 네트워크 내에서 교환된 메시지들의 수를 감소시키기 위한 하나의 적절한 방법이다.As described herein, progressive service location search is one suitable method for reducing the number of messages exchanged within the code network to find the location of a node that supports the requested service.

일 실시예에서, 요청된 서비스를 지원하는 노드의 위치를 찾기 위한 코드 네트워크 내에서 교환된 메시지들의 수는 상기 네트워크의 노드들에서, 상기 요청된 비스를 지원하는 노드들로서 이전에 식별된 하나 이상의 노드들의 노드 ID들을 캐싱함으로써 감소될 수 있다. 이 실시예에서, 상기 노드의 소스 노드의 관점으로부터, 상기 요청된 서비스를 지원하는 노드들로서 상기 소스 노드에 의해 이전 식별된 하나 이상의 노드들의 노드 ID들은 상기 소스 노드로서 캐싱될 수 있다. 이 실시예에서, 상기 서비스를 탐색할 때, 상기 탐색 메시지는 상기 소스 노드가 기꺼이 캐싱된 정보를 수용한다는 것을 나타내기 위해 설정될 수 있으며, 따라서 노드가 이러한 탐색 요청을 수신할 때, 상기 노드는 그 후 그것의 캐시로부터의 노드 ID(들)를(을) 갖고 대응할 수 있다. 이러한 방식으로, 탐색 메시지들의 수가 감소되고 응답 시간은 더 빨라지지만, 상기 캐싱된 정보가 오래될 위험이 있다. 일 실시예에서, 오래된 정보를 회피하기 위해, 마지막 X의 시간량 내에 캐싱된 노드 ID들만이 응답에 포함될 것이고, 여기서 X의 시간량은 필요한 대로 또는 원하는 대로 구성될 수 있다(예로서, 마지막 30분들, 마지막 4시간들, 마지막 날 등).In one embodiment, the number of messages exchanged within the code network to locate the node supporting the requested service is one or more nodes previously identified as nodes supporting the requested service at the nodes of the network. Can be reduced by caching the node IDs of the nodes. In this embodiment, from the perspective of the source node of the node, node IDs of one or more nodes previously identified by the source node as nodes supporting the requested service may be cached as the source node. In this embodiment, when searching for the service, the search message may be set to indicate that the source node is willing to accept cached information, so when the node receives such a search request, the node It can then respond with the node ID (s) from its cache. In this way, the number of search messages is reduced and the response time is faster, but there is a risk of the cached information becoming old. In one embodiment, to avoid stale information, only node IDs cached within the last X amount of time will be included in the response, where the amount of time of X may be configured as needed or desired (eg, the last 30 Last 4 hours, last day, etc.).

일 실시예에서, 요청된 서비스를 지원하는 노드의 위치를 찾기 위한 코드 네트워크 내에서 교환된 메시지들의 수는 어던 노드들이 어떤 서비스들을 지원하는지에 관한 정보를 교환하기 위해 상기 코드 네트워크의 노드들 간에 교환되는 하트비트 메시지들을 피기백(piggyback)함으로써 감소될 수 있다. 여기에 설명된 바와 같이, 상기 코드 네트워크에서의 노드는 그것의 선행자 및 후속자 노드들로 하트비트 메시지들을 주기적으로 전송한다. 노드에 의해 그것의 선행자로 전송된 상기 하트비트 메시지들은 상기 노드의 후속자(또는 K개의 후속자들)의 노드 ID(들)를(을) 포함하고, 유사하게는, 노드에 의해 그것의 후속자로 전송된 상기 하트비트 메시지는 상기 노드의 상기 선행자(또는 K개의 선행자들)의 노드 ID(들)를(을) 포함한다. 이 실시예에서, 선행자/후속자 정보 외에, 노드에 의해 전송된 상기 하트비트 메시지는 상기 노드에 의해 지원된 임의의 메시지들을 나타내는 정보를 포함할 것이고, 그에 의해 상기 노드들의 각각이 그것의 이웃들의 서비스 능력들을 알도록 할 수 있다. 이러한 방식으로, 상기 코드 네트워크에 서비스의 위치를 찾기 위해 교환될 필요가 있는 메시지들의 수는 감소된다.In one embodiment, the number of messages exchanged within the code network to locate the node supporting the requested service is exchanged between the nodes of the code network to exchange information about which services are supported by which nodes. It can be reduced by piggybacking the heartbeat messages that are made. As described herein, a node in the code network periodically sends heartbeat messages to its predecessor and successor nodes. The heartbeat messages sent by the node to its predecessor include the node ID (s) of the successor (or K successors) of the node, and similarly, its subsequent by the node. The heartbeat message sent to the child contains the node ID (s) of the predecessor (or K predecessors) of the node. In this embodiment, in addition to the predecessor / successor information, the heartbeat message sent by the node will include information indicative of any messages supported by the node, whereby each of the nodes is associated with its neighbors. Know your service capabilities. In this way, the number of messages that need to be exchanged to locate the service in the code network is reduced.

상기에 설명된 바와 같이, 코드 네트워크에 의해 지원될 수 있는 하나의 서비스는 크로스-링 탐색 서비스이다. 상기 크로스-링 탐색 서비스는 타겟 노드가 상기 타겟 노드가 구성원이 아닌 하나 이상의 다른 코드 네트워크들 상에서 오브젝트를 탐색하기 위한 요청을 개시할 수 있게 한다.As described above, one service that can be supported by the code network is a cross-ring search service. The cross-ring search service enables a target node to initiate a request to search for an object on one or more other code networks for which the target node is not a member.

일반적으로, 코드 네트워크의 구성원들은 특정 유형의 음악, 특정 유형의 비디오들, 학문 조사 토픽들 등과 같이, 몇몇 공통 관심사(들)와 관련되는 파일들을 공유하기를 좋아하는 커뮤니티를 형성한다. 이용자는 많은 관심사들을 가질 수 있으며, 따라서 그 또는 그녀의 노드는 동시에 다수의 코드 네트워크들에 가입할 수 있다. 파일을 탐색하는 노드가 그것이 속하는 상기 코드 네트워크(들)에 상기 파일의 위치를 찾는데 실패하였다면, 상기 노드는 하나 이상의 부가적인 코드 네트워크들로 상기 파일에 대한 탐색을 확장시키고자 할 수 있으며, 이것은 상기 크로스-링 탐색 서비스를 이용하여 달성될 수 있다.In general, members of a code network form a community that likes to share files related to some common interest (s), such as certain types of music, certain types of videos, research topics, and the like. A user can have many interests, so his or her node can join multiple code networks at the same time. If a node searching for a file fails to locate the file in the code network (s) to which it belongs, the node may wish to extend the search for the file to one or more additional code networks, It can be achieved using a cross-ring search service.

상기 크로스-링 탐색 서비스를 이용하여, 상기 파일을 탐색하는 발신 노드는 그것이 하나 이상의 다른 코드 네트워크들에 속하는 임의의 노드(들)의 위치를 찾기 위해 구성원인 상기 코드 네트워크(들)를 탐색할 것이다. 상기 발신 노드는 탐색 요청을 개시한다. 상기 탐색 요청에서, 상기 발신 노드는 상기 서비스가 크로스-링 탐색 서비스임을 특정한다. 상기 탐색 요청은 부가적인 서비스 특정 정보를 포함할 수 있다.Using the cross-ring search service, the originating node searching the file will search the code network (s) that is a member to find the location of any node (s) belonging to one or more other code networks. . The originating node initiates a search request. In the search request, the originating node specifies that the service is a cross-ring search service. The search request may include additional service specific information.

상기 부가적인 서비스 특정 정보는 비-탐색 리스트를 포함할 수 있으며, 이것은 상기 발신 노드가 이미 상기 파일을 탐색한 코드 네트워크들의 코드 네트워크 ID들의 리스트이다. 이 경우에, 이러한 요청에 응답할 때, 이들 코드 네트워크들은 무시되어야 한다(즉, 상기 탐색 요청을 수신한 노드는 상기 노드가 상기 비-탐색 리스트에 표시된 상기 코드 네트워크(들) 이외의 코드 네트워크(들)의 구성원이라면 단지 긍정의 응답을 전송할 것이다).The additional service specific information may comprise a non-search list, which is a list of code network IDs of code networks for which the originating node has already searched the file. In this case, when responding to such a request, these code networks should be ignored (i.e., the node receiving the search request must be configured with a code network other than the code network (s) the node has indicated in the non-browsing list). If you are a member of s) you will only send a positive response).

상기 부가적인 서비스 특정 정보는 특정-탐색 리스트를 포함할 수 있으며, 이것은 상기 발신 노드가 상기 파일을 탐색하고 싶어하는 코드 네트워크들의 코드 네트워크 ID들의 리스트이다. 이 경우에, 이러한 요청에 응답할 때, 이들 코드 네트워크들 이외의 모든 코드 네트워크들은 무시되어야 한다(즉, 상기 탐색 요청을 수신하는 노드는 단지 상기 노드가 상기 특정-탐색 리스트에 표시된 상기 코드 네트워크들 중 하나의 구성원인 경우 긍정의 응답을 전송할 것이다).The additional service specific information may comprise a specific-search list, which is a list of code network IDs of code networks for which the originating node wishes to search the file. In this case, when responding to this request, all code networks other than these code networks should be ignored (i.e., the node receiving the search request is simply the code networks whose node is indicated in the specific-search list). If you are a member of either, you will send a positive response).

상기 크로스-링 탐색 서비스를 이용할 때, 상기 파일을 탐색하는 발신 노드는 상기 탐색 요청에 응답하여 탐색 응답들을 수신할 것이다. 이 경우에, 임의의 긍정의 탐색 응답은 상기 긍정의 탐색 응답을 트리거링한 상기 코드 네트워크(들)의 상기 코드 네트워크 ID(들)를(을) 포함한다. 긍정의 탐색 응답을 수신할 때, 상기 발신 노드는 임의의 적절한 방식으로 상기 식별된 코드 네트워크(들)로부터 상기 파일을 획득하려고 시도할 수 있다.When using the cross-ring search service, the originating node searching for the file will receive search responses in response to the search request. In this case, any positive search response includes the code network ID (s) of the code network (s) that triggered the positive search response. Upon receiving a positive search response, the originating node may attempt to obtain the file from the identified code network (s) in any suitable manner.

일 실시예에서, 긍정의 탐색 응답을 수신할 때, 상기 발신 노드는 상기 식별된 코드 네트워크(들)에 접속함으로써 상기 식별된 코드 네트워크(들)로부터 파일을 획득하려고 시도할 수 있다. 이 경우에, 상기 코드 네트워크(들)에 접속할 때, 상기 발신 노드는 그 후 상기 연결된 코드 네트워크(들) 내에서의 상기 파일에 대한 탐색을 개시할 수 있다.In one embodiment, upon receiving a positive search response, the originating node may attempt to obtain a file from the identified code network (s) by connecting to the identified code network (s). In this case, upon connecting to the code network (s), the originating node may then initiate a search for the file within the connected code network (s).

일 실시예에서, 긍정의 탐색 응답을 수신할 때, 상기 발신 노드는 상기 긍정의 탐색 응답으로 응답되는 노드가 상기 발신 노드 대신에 상기 식별된 코드 네트워크(들) 내에서 상기 파일에 대한 탐색을 개시하도록 요청할 수 있다. 이것은 상기 발신 노드가 상기 식별된 코드 네트워크(들)에 접속하기 위한 권한을 가지지 않는 경우, 상기 발신 노드가 상기 식별된 코드 네트워크(들)에 접속하고 떠나기 위해 요구된 리소스를 가지지 않거나 이를 바치도록 원하지 않는 경우(즉, 노드가 코드 네트워크에 접속할 때, 내포된 가정은 상기 노드가 상기 코드 네트워크 대신에 다수의 파일들을 저장할 것이고, 코드 네트워크에 접속하고 떠나는 것은 시간이 걸리며 파일들과 같은 네트워크 리소스들은 노드들 사이에서 전달된다), 상기 발신 노드가 상기 식별된 코드 네트워크에 기술적으로 연결할 수 없는 경우(예로서, 상기 발신 노드가 IPv4-전용 노드이고 상기 식별된 코드 네트워크(들)는 IPv6 코드 네트워크인 경우 또는 상기 발신 노드가 IPv6 전용 노드이고 상기 식별된 코드 네 트워크(들)가(이) IPv4 네트워크인 경우) 등과 같은 상기 발신 노드가 상기 식별된 코드 네트워크(들)에 접속할 수 없거나 연결하기를 꺼려하는 경우에 유용할 수 있다. 상기 발신 노드는 상기 긍정의 탐색 응답을 갖고 응답되는 상기 노드가 탐색 요청 메시지를 상기 긍정의 탐색 응답을 갖고 응답되는 상기 노드에 전송함으로써 상기 발신 노드 대신에 상기 식별된 코드 네트워크(들) 내에서 상기 파일에 대한 탐색을 개시하도록 요청할 수 있다. 이러한 경우에, 상기 발신 노드에 의해 전송된 상기 탐색 요청 메시지는 상기 발신 노드가 탐색하는 파일의 전체 명칭을 포함하는데, 이는 상기 식별된 코드 네트워크(들)가(이) 상이한 키 공간을 가질 수 있고/있거나 상기 발신 노드의 코드 네트워크와 상이한 해시 함수를 이용할 수 있기 때문이다. 상기 파일이 상기 식별된 코드 네트워크(들) 내에서 위치를 찾을 수 없다면, 상기 발신 노드는 부정의 탐색 응답을 수신한다. 상기 파일이 상기 식별된 코드 네트워크(들) 내에서 찾아진다면, 상기 파일을 저장하는 노드는 상기 파일을 상기 발신 노드로 포워딩한다. 상기 파일은 상기 발신 노드의 상기 코드 네트워크에 저장될 수 있거나 저장될 수 없다.In one embodiment, upon receiving a positive search response, the originating node initiates a search for the file within the identified code network (s) on behalf of the originating node by a node that is answered with the positive search response. You can ask. This means that if the originating node does not have permission to access the identified code network (s), the originating node does not have or dedicates the resources required to access and leave the identified code network (s). (I.e. when the node connects to the code network, the implied assumption is that the node will store multiple files instead of the code network, and accessing and leaving the code network takes time and network resources such as files Between the originating node is technically unable to connect to the identified code network (eg, the originating node is an IPv4-only node and the identified code network (s) is an IPv6 code network). Or the originating node is an IPv6-only node and the identified code network (s) May be useful if the originating node, such as (in the case of an IPv4 network), is unable or unwilling to connect to the identified code network (s). The originating node is configured to transmit the search request message to the node that is answered with the positive search response and to the node that is responded with the positive search response to the node within the identified code network (s) instead of the originating node. You can request to initiate a search for a file. In this case, the search request message sent by the originating node includes the full name of the file searched by the originating node, which may cause the identified code network (s) to have a different key space and And / or use a hash function that is different from the code network of the originating node. If the file cannot find a location within the identified code network (s), the originating node receives a negative search response. If the file is found in the identified code network (s), the node storing the file forwards the file to the originating node. The file may or may not be stored in the code network of the originating node.

주로 상기 서비스 위치 찾기 능력이 특정 유형의 P2P 네트워크, 즉 코드 네트워크 내에서 구현되는 실시예들에 대하여 여기에 묘사되고 설명되지만, 상기 P2P 서비스 위치 찾기 능력은 상기 서비스 탐색 능력을 지원하기에 적합한 임의의 다른 유형의 P2P 네트워크들 내에서 구현될 수 있다.Although primarily described and described herein with respect to embodiments in which the service locating capability is implemented within a particular type of P2P network, i.e., a code network, the P2P service locating capability is any suitable for supporting the service searching capability. It may be implemented within other types of P2P networks.

일 실시예에서, 상기 서비스 위치 찾기 능력은 상기 서비스 위치 찾기 능력이 일반적으로 DHT-기반 P2P 네트워크들에서 이용하기에 적합하도록 적응될 수 있다. 이러한 일 실시예에서, 상기 서비스 매칭 능력이 제공되는 상기 P2P 네트워크는 잘-구성된 기하학적 구조(예로서, 코드를 위해, 상기 기하학적 구조는 원형이다)를 가지며, "영역"의 개념은 이러한 기하학적 구조로부터 규정될 수 있다(예로서, 코드를 위해, 상기 "영역"은 상기 원의 아크이다). 상기 DHT-기반 P2P 네트워크의 소스 노드가 서비스 위치 탐색을 개시할 때, 상기 소스 노드는 서비스 탐색 요청을 그것의 라우팅 표에서의 노드들에 전송하고, 노드로 전송된 각각의 서비스 탐색 요청은 상기 탐색이 상기 서비스 탐색 요청을 수신하는 노드에 제한되어야 하는 영역에 대한 설명을 포함한다. 중간자가 서비스 탐색 요청을 수신할 때, 상기 중간 노드들은 그것이 상기 요청된 서비스를 지원하는 노드를 국소적으로 인식하는지의 여부를 결정한다(예로서, 그것은 그 자체, 그것의 선행자, 그것의 후속자, 상기 중간 노드에서 이용가능한 캐싱된 정보로부터의 하나 이상의 노드들 등, 뿐만 아니라 그것의 조합들을 식별할 수 있다). 상기 중간 노드가 상기 요청된 서비스를 지원하는 노드를 국소적으로 식별한다면, 상기 중간 노드는 긍정의 응답을 갖고 응답한다. 상기 중간 노드가 상기 요청된 서비스를 지원하는 노드를 국소적으로 식별할 수 없다면, 상기 중간 노드는 그 자신의 라우팅 표에 기초하여 상기 서비스 탐색 요청을 전파한다. 상기 중가 노드에 의한 상기 서비스 탐색 요청의 전파는 상기 중간 노드에 의해 수신된 상기 서비스 탐색 요청 내에 포함된 정보 및 상기 중간 노드의 라우팅 표로부터의 정보에 의해 제한되는 범위를 가진다. 서비스를 매치하기 위해 이용된 서비스 탐색 요청들의 탐색 범위들은 상기 탐색의 효율성을 향상시키기 위해, 탐색 범위들 간의 중첩이 최소화되도록 적응될 수 있지만, 특정 경우들에서 상기 중첩이 탐색 범위 설명 요건들을 단순화한다면 적어도 몇몇 중첩이 바람직할 수 있다. 서비스 위치 찾기 능력의 이러한 일반화된 구현에서, 코드 네트워크들에 대하여 여기에 묘사되고 설명되는 많은 다른 능력들이 또한 이용될 수 있다(예로서, 상기 탐색이 하나의 영역에 제한될 때 성공적인 탐색의 확률을 추정하기 위해, 점진적 탐색들을 실행하기 위해서 등, 뿐만 아니라 그것들의 조합들).In one embodiment, the service location locating capability may be adapted such that the service location locating capability is generally suitable for use in DHT-based P2P networks. In one such embodiment, the P2P network to which the service matching capability is provided has a well-configured geometry (eg, for code, the geometry is circular), and the concept of "area" is derived from this geometry. (Eg, for code, the "region" is the arc of the circle). When a source node of the DHT-based P2P network initiates a service location search, the source node sends a service search request to the nodes in its routing table, and each service search request sent to the node is the search. A description of the area to be restricted to the node receiving the service search request. When an intermediary receives a service search request, the intermediate nodes determine whether it locally recognizes a node that supports the requested service (eg, it is itself, its predecessor, its successor). One or more nodes from cached information available at the intermediate node, etc., as well as combinations thereof). If the intermediate node locally identifies a node that supports the requested service, the intermediate node responds with a positive response. If the intermediate node cannot locally identify a node that supports the requested service, the intermediate node propagates the service search request based on its own routing table. Propagation of the service search request by the intermediate node has a range limited by information included in the service search request received by the intermediate node and information from the routing table of the intermediate node. Search ranges of service search requests used to match a service may be adapted to minimize the overlap between search ranges to improve the efficiency of the search, but in certain cases if the overlap simplifies the search range description requirements At least some overlap may be desirable. In this generalized implementation of service locating capability, many other capabilities described and described herein for code networks may also be used (eg, the probability of successful search when the search is limited to one area). To estimate, to perform gradual searches, etc., as well as combinations thereof).

서비스 위치 찾기 능력이 제공되는 실시예들에 대하여 여기에 묘사되고 설명되었지만, 여기에 묘사되고 설명된 상기 서비스 위치 찾기 능력은 P2P 네트워크들 내에 정보를 분배하기 위한 정보 분배 능력을 제공하도록 적응될 수 있다는 것이 이해될 것이다. 이러한 실시예들에서, 상기 서비스 위치 탐색 능력의 문맥 내에서 여기에 설명되는 상기 서비스 탐색 요청 메시지들은 상기 정보 분배 능력에서 정보 분배 메시지들로서 이용하기 위해 적응될 수 있다. 이러한 실시예들에서, 상기 정보 분배 능력은 정보가 상기 P2P 네트워크의 모든 노드들, 상기 P2P 네트워크의 노드들의 하나 이상의 범위들, 하나 이상의 기준들을 만족하는 상기 P2P 네트워크의 하나 이상의 노드들 등, 뿐만 아니라 그것의 다양한 조합들로 분배될 수 있도록 구현될 수 있다.Although described and described herein with respect to embodiments in which service location capabilities are provided, the service location capabilities described and described herein may be adapted to provide information distribution capabilities for distributing information within P2P networks. Will be understood. In such embodiments, the service search request messages described herein within the context of the service location search capability may be adapted for use as information distribution messages in the information distribution capability. In such embodiments, the information distribution capability may include not only all nodes of the P2P network, one or more ranges of nodes of the P2P network, one or more nodes of the P2P network that meet one or more criteria, etc. It can be implemented to be distributed in various combinations thereof.

도 10은 여기에 설명된 기능들을 실행하는데 이용하기에 적합한 컴퓨터의 고-레벨 블록도를 묘사한다. 도 10에 묘사된 바와 같이, 컴퓨터(1000)는 프로세서 소자(1002)(예로서, 중앙 처리 유닛(CPU) 또는 다른 적절한 프로세서(들)), 메모리(1004)(예로서, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM) 등), 서비스 위치 탐색 모듈/프로세스(1005), 및 다양한 입력/출력 디바이스들(1006)(예로서, 이용자 입력 디바이스(키보드, 키패드, 마우스 등과 같은), 이용자 출력 디바이스(디스플레이, 스피커 등과 같은), 입력 포트, 출력 포트, 수신기, 송신기, 및 저장 디바이스들(예로서, 테이프 드라이브, 플로피 드라이브, 하드 디스크 드라이브, 콤팩트 디스크 드라이브 등)을 포함한다.10 depicts a high-level block diagram of a computer suitable for use in carrying out the functions described herein. As depicted in FIG. 10, computer 1000 may include processor element 1002 (eg, a central processing unit (CPU) or other suitable processor (s)), memory 1004 (eg, random access memory (RAM), or the like. ), Read-only memory (ROM), etc.), service location search module / process 1005, and various input / output devices 1006 (eg, user input devices (such as keyboards, keypads, mice, etc.), user outputs). Devices (such as displays, speakers, etc.), input ports, output ports, receivers, transmitters, and storage devices (eg, tape drives, floppy drives, hard disk drives, compact disk drives, etc.).

여기에 묘사되고 설명된 기능들은 예로서, 범용 컴퓨터, 하나 이상의 애플리케이션 특정 집적 회로들(ASIC), 및/또는 임의의 다른 하드웨어 동등물들을 이용한, 소프트웨어로 및/또는 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다는 것이 주의되어야 한다. 일 실시예에서, 서비스 위치 탐색 프로세스(1005)는 상기 에 논의된 바와 같이 상기 기능들을 시행하기 위해 메모리(1004)에 로딩되고 프로세서(1002)에 의해 실행될 수 있다. 이와 같이, 서비스 위치 탐색 프로세스(1005)(연관된 데이터 구조들을 포함하는)는 컴퓨터 판독가능한 저장 매체 또는 캐리어, 예로서, RAM 메모리, 자기 또는 광학 드라이브 또는 디스켓 등에 저장될 수 있다.The functions depicted and described herein may be implemented in software and / or in a combination of software and hardware, eg, using a general purpose computer, one or more application specific integrated circuits (ASICs), and / or any other hardware equivalents. It should be noted that it can. In one embodiment, service location search process 1005 may be loaded into memory 1004 and executed by processor 1002 to implement the functions as discussed above. As such, the service location search process 1005 (including associated data structures) may be stored in a computer readable storage medium or carrier, such as a RAM memory, magnetic or optical drive or diskette, and the like.

소프트웨어로서 구현되는 여기에 논의된 상기 기능들의 일부들이 임의의 적절한 방식으로(예로서, 상기 노드들의 제조 동안 제공되고, 관리상으로 상기 노드에 로딩되고, 웹 서버 또는 다른 적절한 소스로부터 다운로딩되는 등 뿐만 아니라 그것의 다양한 조합들) 피어-투-피어 네트워크의 노드들 상에서 구성될 수 있다는 것이 고려된다. 소프트웨어 방법들로서 여기에 논의된 단계들의 일부는 예를 들면, 다양한 방법 단계들을 실행하기 위해 상기 프로세서와 협력하는 회로와 같이, 하드웨어 내에 구현될 수 있다는 것이 고려된다. 여기에 설명된 상기 기능들/소자들의 일부들이 컴퓨터에 의해 처리될 때, 여기에 설명된 상기 방법들 및/또는 기술들이 호출되거나 그렇지 않고 제공되도록 상기 컴퓨터의 동작을 적응시키는 컴퓨터 프로그램 제품으로서 구현될 수 있다.Some of the functions discussed herein, implemented as software, are provided in any suitable manner (eg, provided during the manufacture of the nodes, administratively loaded into the node, downloaded from a web server or other suitable source, etc.). As well as its various combinations) may be configured on nodes of a peer-to-peer network. It is contemplated that some of the steps discussed herein as software methods may be implemented in hardware, such as, for example, circuitry that cooperates with the processor to execute various method steps. When some of the functions / elements described herein are processed by a computer, they may be implemented as a computer program product that adapts the operation of the computer such that the methods and / or techniques described herein are invoked or otherwise provided. Can be.

본 발명의 양태들은 청구항들에 특정된다. 본 발명의 이들 및 다른 양태들은 다음의 번호가 붙은 조항들에서 특정된다. Aspects of the invention are specified in the claims. These and other aspects of the invention are specified in the following numbered clauses.

1. 복수의 노드들을 포함하는 피어-투-피어(P2P) 네트워크 내에서 서비스를 탐색하기 위한 방법은:1. A method for discovering a service within a peer-to-peer (P2P) network comprising a plurality of nodes is:

상기 P2P 네트워크의 타겟 노드에서, 상기 P2P2 네트워크 내에서 서비스를 탐색하기 위한 요청을 검출하는 단계로서, 상기 타겟 노드는 상기 P2P 네트워크의 각각의 복수의 노드들을 식별하는 복수의 엔트리들을 포함하는 탐색 표를 포함하는, 상기 검출 단계; 및Detecting, at a target node of the P2P network, a request to search for a service within the P2P2 network, the target node comprising a search table comprising a plurality of entries identifying each of the plurality of nodes of the P2P network; Including, the detecting step; And

상기 탐색 표에서 식별된 상기 노드들 중 적어도 하나를 향해 서비스 탐색 요청을 개시하는 단계로서, 상기 서비스 탐색 요청은 상기 서비스를 지원하는 상기 P2P 네트워크의 적어도 하나의 노드를 식별하기 위한 요청이고, 상기 서비스 탐색 요청은 상기 서비스를 나타내는 정보 및 상기 서비스 탐색 요청이 개시되는 상기 노드에 의해 이용하기 위한 탐색 범위를 포함하는, 상기 개시 단계를 포함한다.Initiating a service search request towards at least one of the nodes identified in the search table, wherein the service search request is a request to identify at least one node of the P2P network supporting the service; The search request includes the initiating step, which includes information indicative of the service and a search range for use by the node from which the service search request is initiated.

2. 조항 1의 방법에서, 상기 서비스 탐색 요청은 상기 탐색 표의 상기 노드들의 모두를 향해 동시에 개시된다.2. In the method of clause 1, the service search request is initiated simultaneously towards all of the nodes of the search table.

3. 조항 1의 방법에서, 상기 서비스 탐색 요청은 상기 서비스를 지원하는 적어도 하나의 노드가 식별되거나 상기 P2P 네트워크의 상기 노드들 중 어떤 것도 상기 서비스를 지원하지 않는다는 결정이 이루어질 때까지 상기 탐색 표의 상기 노드들을 향해 연속하여 개시된다.3. The method of clause 1, wherein the service search request is selected in the search table until at least one node supporting the service is identified or a determination is made that none of the nodes in the P2P network support the service. It is initiated in sequence towards the nodes.

4. 조항 3의 방법에서, 서비스 탐색 요청은 상기 탐색 표의 제 i 노드로부터 부정의 탐색 응답을 수신하는 것에 응답하여 상기 탐색 표의 제 (i+1) 노드를 향해 개시된다.4. In the method of clause 3, a service search request is initiated towards the (i + 1) node of the search table in response to receiving a negative search response from the i th node of the search table.

5. 조항 1의 방법에서, 상기 서비스 탐색 요청은 상기 탐색 표의 상기 노드들의 서브세트를 향해 동시에 개시되고, 상기 탐색 표의 노드들의 서브세트는 상기 탐색 표의 첫 K개의 엔트리들에서 식별된 노드들을 포함한다.5. In the method of clause 1, the service search request is initiated simultaneously towards the subset of the nodes of the search table, the subset of nodes in the search table including the nodes identified in the first K entries of the search table. .

6. 조항 5의 방법은,6. The method of clause 5,

긍정의 탐색 응답이 상기 탐색 표의 노드들의 서브세트의 노드들 중 적어도 하나로부터 수신된다면, 상기 서비스를 위한 요청을 개시하는 단계; 및If a positive search response is received from at least one of the nodes of the subset of nodes of the search table, initiating a request for the service; And

긍정의 탐색 응답이 상기 탐색 표의 노드들의 서브세트의 노드들 중 적어도 하나로부터 수신되지 않는다면:If a positive search response is not received from at least one of the nodes of the subset of nodes of the search table:

상기 탐색 표의 노드들의 서브세트에 있지 않은 상기 탐색 표의 다음 엔트리와 연관된 다음 노드를 향해, 상기 P2P 네트워크 내에 상기 서비스의 위치를 찾기 위한 후속 서비스 탐색 요청을 개시하는 단계를 추가로 포함한다.Initiating a subsequent service search request to locate the service within the P2P network towards the next node associated with a next entry of the search table that is not in the subset of nodes of the search table.

7. 조항 5의 방법은:7. The method of Clause 5 is:

상기 서비스를 지원하는 상기 P2P 네트워크의 추정된 평균 수의 노드들을 이용하여 상기 탐색 표의 노드들의 서브세트를 식별하는 단계를 추가로 포함한다.Identifying a subset of the nodes of the lookup table using the estimated average number of nodes of the P2P network supporting the service.

8. 조항 7의 방법에서, 상기 탐색 표의 노드들의 서브세트는 L에 대해, 식((L-1)*In(1-a)<In(1/b)를 풀음으로써 식별되고, (i) a는 노드 ID가 상기 서비스를 지원하는 활성 노드를 가질 확률이고, (ii) b는 상기 탐색이 부정적인 확률이고, (iii) L은 탐색 범위이다.8. In the method of clause 7, the subset of nodes in the lookup table is identified by solving for the L, by the equation ((L-1) * In (1-a) <In (1 / b), and (i) a is the probability that the node ID will have active nodes supporting the service, (ii) b is the probability that the search is negative, and (iii) L is the search range.

9. 조항 7의 방법에서, 상기 서비스를 지원하는 상기 P2P 네트워크의 상기 추정된 평균 수의 노드들은 상기 노드의 로컬 메모리로부터 또는 웹 서버로부터 결정된다.9. In the method of clause 7, the estimated average number of nodes of the P2P network supporting the service is determined from the node's local memory or from a web server.

10. 조항 7의 방법에서, 상기 서비스를 지원하는 상기 P2P 네트워크의 상기 추정된 평균 수의 노드들은,10. The method of clause 7 wherein the estimated average number of nodes of the P2P network supporting the service are:

상기 탐색 표의 노드들의 각각을 향해, 상기 서비스를 지원하는 상기 P2P의 노드들의 각각의 타겟 노드에 의한 식별을 가능하게 하도록 구성된 각각의 서비스 탐색 요청 메시지를 개시하는 단계; 및Initiating each service discovery request message configured to enable identification by each target node of the nodes of the P2P supporting the service towards each of the nodes of the discovery table; And

상기 탐색 표의 상기 노드들의 각각으로부터, 상기 서비스를 지원하는 상기 P2P 네트워크의 노드들의 수를 도출할 때 이용하기 위해 적응된 정보 또는 서비스를 지원하는 노드들인 것으로서 상기 노드에 의해 식별된 상기 P2P 네트워크의 노드들의 수의 표시를 포함하는 각각의 서비스 탐색 응답 메시지를 수신하는 단계; 및A node of the P2P network identified by the node as being nodes supporting the service or information adapted for use in deriving from each of the nodes of the search table the number of nodes of the P2P network supporting the service Receiving each service search response message comprising an indication of the number of times; And

상기 서비스를 지원하는 상기 P2P 네트워크의 추정된 수의 노드들을 계산하기 위해 상기 서비스 탐색 응답 메시지들을 처리하는 단계로서, 상기 서비스를 지원하는 상기 P2P 네트워크의 상기 추정된 수의 노드들은 상기 서비스를 지원하는 상기 P2P 네트워크의 상기 추정된 평균 수의 노드들을 결정할 때 이용하기 위해 적응되는, 상기 처리 단계를 포함하는 방법에 의해 추정된다.Processing the service search response messages to calculate an estimated number of nodes of the P2P network supporting the service, wherein the estimated number of nodes of the P2P network supporting the service support the service. Estimated by the method comprising the processing step, adapted for use in determining the estimated average number of nodes of the P2P network.

11. 조항 1의 방법은:11. The method of Clause 1 is:

상기 서비스 탐색 요청이 개시되는 상기 탐색 표의 상기 노드들 중 적어도 하나의 각각으로부터, 상기 노드가 상기 서비스를 지원하는지 또는 상기 서비스를 지원하는 식별된 또 다른 노드를 가지는지의 여부를 나타내는 탐색 응답을 수신하는 단계를 추가로 포함한다.Receive a search response from each of at least one of the nodes of the search table from which the service search request is initiated, indicating whether the node supports the service or has another identified node supporting the service. It further comprises the step of.

12. 조항 1의 방법은:12. The method of clause 1 is:

상기 타겟 노드가 상기 서비스를 지원하는 노드가 위치됨을 나타내는 긍정의 탐색 응답을 수신할 때, 상기 타겟 노드로부터 상기 서비스를 지원하는 상기 노드를 향해 상기 서비스를 위한 요청을 개시하는 단계를 추가로 포함한다.When the target node receives a positive search response indicating that a node supporting the service is located, initiating a request for the service from the target node towards the node supporting the service. .

13. 조항 12의 방법에서, 상기 긍정의 탐색 응답은 상기 서비스를 지원하는 상기 노드의 노드 식별자 및 상기 서비스를 지원하는 상기 노드의 IP 어드레스를 포함한다.13. The method of clause 12, wherein the positive search response includes a node identifier of the node supporting the service and an IP address of the node supporting the service.

14. 조항 1의 방법에서, 상기 서비스는 부가적인 P2P 네트워크의 구성원인 상기 P2P 네트워크의 적어도 하나의 다른 노드를 식별하기 위한 크로스-링 탐색 서비스이다.14. The method of clause 1, wherein the service is a cross-ring discovery service for identifying at least one other node of the P2P network that is a member of an additional P2P network.

15. 조항 14의 방법은:15. The method of clause 14 is:

상기 타겟 노드가 부가적인 P2P 네트워크의 구성원인 노드의 위치가 찾아짐을 나타내는 긍정의 탐색 응답을 수신할 때, When the target node receives a positive search response indicating that a location of a node that is a member of an additional P2P network is found,

상기 타겟 노드로부터, 상기 부가적인 P2P 네트워크에 접속하기 위해 상기 타겟 노드를 위한 프로세스를 개시하는 단계; 및Initiating a process for the target node from the target node to connect to the additional P2P network; And

상기 타겟 노드로부터, 상기 부가적인 P2P 네트워크의 구성원인 상기 노드를 향해, 상기 부가적인 P2P 네트워크 내에서 오브젝트에 대한 탐색을 개시하기 위해 상기 부가적인 P2P 네트워크의 구성원인 노드에 대한 요청을 개시하는 단계 중 적어도 하나를 실행하는 단계를 추가로 포함한다.Initiating a request from the target node toward the node that is a member of the additional P2P network, for a node that is a member of the additional P2P network to initiate a search for an object within the additional P2P network. Further comprising executing at least one.

16. 복수의 노드들을 포함하는 피어-투-피어(P2P) 네트워크 내에서 서비스를 탐색하기 위한 장치는:16. An apparatus for discovering a service within a peer-to-peer (P2P) network including a plurality of nodes:

상기 P2P 네트워크의 각각의 복수의 노드들을 식별하는 복수의 엔트리들을 포함하는 탐색 표를 저장하기 위한 메모리; 및A memory for storing a lookup table comprising a plurality of entries identifying each of a plurality of nodes of the P2P network; And

프로세서로서,As a processor,

상기 P2P 네트워크 내에서 서비스를 탐색하기 위한 요청을 검출하고,Detect a request to search for a service within the P2P network,

상기 탐색 표에서 식별된 상기 노드들 중 적어도 하나를 향해 서비스 탐색 요청을 개시하는 것으로서, 상기 서비스 탐색 요청은 상기 서비스를 지원하는 상기 P2P 네트워크의 적어도 하나의 노드를 식별하기 위한 요청이고, 상기 서비스 탐색 요청은 상기 서비스를 나타내는 정보 및 상기 서비스 탐색 요청이 개시되는 상기 노드에 의해 이용하기 위한 탐색 범위를 포함하는, 상기 서비스 탐색 요청을 개시하도록 구성된, 상기 프로세서를 포함한다.Initiating a service search request towards at least one of the nodes identified in the search table, wherein the service search request is a request to identify at least one node of the P2P network supporting the service; The request includes the processor, configured to initiate the service search request, including information indicating the service and a search range for use by the node from which the service search request is initiated.

17. 복수의 노드들을 포함하는 피어-투-피어(P2P) 네트워크 내에서 서비스의 위치를 찾기 위한 방법은:17. A method for locating a service within a peer-to-peer (P2P) network including a plurality of nodes is:

상기 P2P 네트워크의 타겟 노드에서, 서비스 탐색 요청을 수신하는 단계로서, 상기 서비스 탐색 요청은 요청되는 상기 서비스를 나타내는 정보 및 상기 타겟 노드를 위한 탐색 범위를 포함하는, 상기 수신 단계;Receiving, at a target node of the P2P network, a service search request, the service search request including information indicating the service requested and a search range for the target node;

상기 요청되는 서비스를 나타내는 상기 정보의 적어도 일부를 이용하여, 상기 타겟 노드가 상기 서비스를 지원하는지의 여부를 결정하는 단계;Determining whether the target node supports the service using at least some of the information indicative of the requested service;

상기 타겟 노드가 상기 서비스를 지원한다는 결정이 이루어질 때, 상기 서비스가 상기 타겟 노드에 의해 지원된다는 것을 나타내는 서비스 탐색 응답 메시지를 상기 타겟 노드로부터 개시하는 단계; 및When a determination is made that the target node supports the service, initiating a service search response message from the target node indicating that the service is supported by the target node; And

상기 타겟 노드가 상기 서비스를 지원하지 않는다는 결정이 이루어질 때, 상기 타겟 노드로부터 상기 P2P 네트워크의 적어도 하나의 다른 노드를 향해 서비스 탐색 요청을 개시할지 여부를 결정하는 단계를 포함한다.When a determination is made that the target node does not support the service, determining whether to initiate a service search request from the target node toward at least one other node of the P2P network.

18. 조항 17의 방법에서, 상기 타겟 노드로부터 상기 P2P 네트워크의 적어도 하나의 다른 노드를 향해 서비스 탐색 요청을 개시하기 위한 결정이 이루어지지 않을 때, 상기 방법은:18. In the method of clause 17, when no determination is made to initiate a service search request from the target node towards at least one other node of the P2P network, the method further comprises:

상기 타겟 노드로부터, 상기 서비스를 지원하는 노드가 상기 탐색 범위를 이용하여 상기 타겟 노드에 의해 위치를 찾을 수 없음을 나타내는 부정의 응답 메시지를 개시하는 단계를 추가로 포함한다.Initiating a negative response message from the target node indicating that a node supporting the service cannot find a location by the target node using the search range.

19. 조항 17의 방법에서, 상기 P2P 네트워크의 적어도 하나의 다른 노드를 향해 서비스 탐색 요청을 개시하도록 결정이 이루어질 때, 상기 방법은:19. In the method of clause 17, when the determination is made to initiate a service search request towards at least one other node of the P2P network, the method includes:

상기 타겟 노드에 의해 개시될 새로운 서비스 탐색 요청을 위한 탐색 범위를 결정하는 단계로서, 상기 탐색 범위는 상기 타겟 노드에서 수신된 상기 서비스 탐색 요청에 포함된 상기 탐색 범위 및 상기 타겟 노드 상에 저장된 탐색 범위를 이용하여 결정되는, 상기 결정 단계; 및Determining a search range for a new service search request to be initiated by the target node, wherein the search range is the search range included in the service search request received at the target node and the search range stored on the target node. The determination step, determined using; And

상기 타겟 노드로부터 새로운 서비스 탐색 요청을 개시하는 단계로서, 상기 새로운 서비스 탐색 요청은 상기 요청된 서비스를 나타내는 정보 및 상기 새로운 서비스 탐색 요청을 위해 결정된 상기 탐색 범위를 포함하는, 상기 개시 단계를 추가로 포함한다.Initiating a new service search request from the target node, wherein the new service search request further includes the initiating step, including information indicative of the requested service and the search range determined for the new service search request. do.

20. 조항 17의 방법에서, 상기 P2P 네트워크의 적어도 하나의 다른 노드를 향해 서비스 탐색 요청을 개시할지 여부를 결정하는 단계는:20. In the method of clause 17, determining whether to initiate a service search request towards at least one other node of the P2P network:

상기 타겟 노드의 탐색 표의 임의의 엔트리들이 상기 타겟 노드에서 수신된 상기 서비스 탐색 요청의 탐색 범위 내에 속하는 노드들을 식별하는지의 여부를 결정하는 단계; 및Determining whether any entries in the search table of the target node identify nodes that fall within the search range of the service search request received at the target node; And

상기 타겟 노드의 탐색 표의 엔트리들이 상기 서비스 탐색 요청의 상기 탐색 범위에 속하는 노드들을 식별하지 않는다면, 상기 타겟 노드는 임의의 서비스 탐색 요청들을 개시할 필요가 없다고 결정하는 단계; 및If the entries in the search table of the target node do not identify nodes that belong to the search range of the service search request, determining that the target node does not need to initiate any service search requests; And

상기 타겟 노드의 상기 탐색 표의 적어도 하나의 엔트리가 상기 서비스 탐색 요청의 탐색 범위에 속하는 적어도 하나의 노드를 식별한다면, 상기 타겟 노드로부터 상기 서비스 탐색 요청의 탐색 범위에 속하는 상기 타겟 노드의 탐색 표의 적어도 하나의 엔트리의 각각의 적어도 하나의 노드를 향해 적어도 하나의 서비스 탐색 요청을 개시하는 단계를 포함한다.If at least one entry in the search table of the target node identifies at least one node belonging to a search range of the service search request, at least one of the search table of the target node belonging to the search range of the service search request from the target node Initiating at least one service search request towards each at least one node of the entry of the.

21. 조항 17의 방법에서, 상기 P2P 네트워크의 적어도 하나의 다른 노드를 향해 서비스 탐색 요청을 개시하도록 결정이 이루어질 때, 상기 방법은:21. In the method of clause 17, when the determination is made to initiate a service search request towards at least one other node of the P2P network, the method includes:

상기 P2P 네트워크의 다른 노드를 향해 상기 타겟 노드에 의해 개시된 서비스 탐색 요청과 연관된 서비스 탐색 응답을 수신하는 단계;Receiving a service search response associated with a service search request initiated by the target node towards another node of the P2P network;

상기 서비스 탐색 응답이 정당한 응답이 아니라면, 상기 서비스 탐색 응답을 무시하고 적어도 하나의 부가적인 서비스 탐색 응답을 계속해서 대기하는 단계;If the service search response is not a valid response, ignoring the service search response and continuously waiting for at least one additional service search response;

상기 서비스 탐색 응답이 정당한 응답이라면, 상기 서비스 탐색 응답이 긍정의 응답인지 또는 부정의 응답인지를 결정하는 단계;If the service search response is a legitimate response, determining whether the service search response is a positive response or a negative response;

상기 서비스 탐색 응답이 긍정의 응답이라면, 상기 타겟 노드로부터 상기 서비스 탐색 요청이 수신된 노드를 향해 긍정의 서비스 탐색 응답을 개시하는 단계;If the service search response is a positive response, initiating a positive service search response toward the node from which the service search request was received from the target node;

상기 서비스 탐색 응답이 부정의 응답이라면, 모든 예상된 서비스 탐색 응답 메시지들이 상기 타겟 노드에 의해 수신되었는지의 여부를 결정하는 단계;If the service search response is a negative response, determining whether all expected service search response messages have been received by the target node;

상기 예상된 서비스 탐색 응답 메시지들의 모두가 상기 타겟 노드에 의해 수신되지 않았다면, 적어도 하나의 부가적인 서비스 탐색 응답을 계속해서 대기하는 단계; 및If all of the expected service search response messages have not been received by the target node, continuing to wait for at least one additional service search response; And

상기 예상된 서비스 탐색 응답 메시지들의 모두가 상기 타겟 노드에 의해 수신되었다면, 상기 타겟 노드로부터 상기 서비스 탐색 요청이 수신되는 노드를 향해 부정의 서비스 탐색 응답을 개시하는 단계를 추가로 포함한다.If all of the expected service search response messages have been received by the target node, further comprising initiating a negative service search response from the target node towards the node from which the service search request is received.

22. 복수의 노드들을 포함하는 피어-투-피어(P2P) 네트워크 내에서 서비스의 위치를 찾기 위한 장치는:22. An apparatus for locating a service within a peer-to-peer (P2P) network including a plurality of nodes includes:

상기 P2P 네트워크의 타겟 노드에서, 서비스 탐색 요청을 수신하기 위한 수단으로서, 상기 서비스 탐색 요청은 상기 서비스를 나타내는 하나 이상의 기준들 및 상기 타겟 노드를 위한 탐색 범위를 포함하는, 상기 수신 수단;Means for receiving a service search request at a target node of the P2P network, the service search request comprising one or more criteria indicative of the service and a search range for the target node;

상기 하나 이상의 서비스 탐색 기준들의 적어도 일부를 이용하여, 상기 타겟 노드가 상기 서비스를 지원하는지의 여부를 결정하기 위한 수단;Means for determining whether the target node supports the service using at least some of the one or more service search criteria;

상기 타겟 노드가 상기 서비스를 지원한다는 결정이 이루어질 때, 상기 서비스가 상기 타겟 노드에 의해 지원됨을 나타내는 서비스 탐색 응답 메시지를 상기 타겟 노드로부터 개시하기 위한 수단; 및Means for initiating a service search response message from the target node indicating that the service is supported by the target node when a determination is made that the target node supports the service; And

상기 타겟 노드가 상기 서비스를 지원하지 않는다는 결정이 이루어질 때, 상기 타겟 노드로부터 상기 P2P 네트워크의 적어도 하나의 다른 노드를 향해 서비스 탐색 요청을 개시할지 여부를 결정하기 위한 수단을 포함한다.Means for determining whether to initiate a service search request from the target node towards at least one other node of the P2P network when a determination is made that the target node does not support the service.

비록 본 발명의 교시들을 포함하는 다양한 실시예들이 여기에 상세히 도시되고 설명되었지만, 이 기술분야의 숙련자들은 이들 교시들을 계속해서 포함하는 많은 다른 변경된 실시예들을 쉽게 고안할 수 있다.Although various embodiments, including the teachings of the present invention, are shown and described in detail herein, those skilled in the art can readily devise many other modified embodiments that continue to incorporate these teachings.

100: 코드 네트워크 110: 복수의 노드들
1000: 컴퓨터 1002: 프로세서 소자
1004: 메모리 1006: 입력/출력 디바이스들
1005: 서비스 위치 탐색 모듈/프로세스
100: code network 110: a plurality of nodes
1000: computer 1002: processor element
1004: memory 1006: input / output devices
1005: service location navigation module / process

Claims (10)

복수의 노드들을 포함하는 피어-투-피어(P2P) 네트워크 내에서 서비스를 탐색하기 위한 방법에 있어서:
상기 P2P 네트워크의 타겟 노드에서, 상기 P2P 네트워크 내에서 서비스를 탐색하기 위한 요청을 검출하는 단계로서, 상기 타겟 노드는 상기 P2P 네트워크의 각각의 복수의 노드들을 식별하는 복수의 엔트리들을 포함하는 탐색 표를 포함하는, 상기 검출 단계; 및
상기 탐색 표에서 식별된 상기 노드들 중 적어도 하나를 향해 서비스 탐색 요청을 개시하는 단계로서, 상기 서비스 탐색 요청은 상기 서비스를 지원하는 상기 P2P 네트워크의 적어도 하나의 노드를 식별하기 위한 요청이고, 상기 서비스 탐색 요청은 상기 서비스를 나타내는 정보 및 상기 서비스 탐색 요청이 개시되는 상기 노드에 의해 이용하기 위한 탐색 범위를 포함하는, 상기 개시 단계를 포함하는, 서비스 탐색 방법.
A method for discovering a service within a peer-to-peer (P2P) network comprising a plurality of nodes, comprising:
Detecting, at a target node of the P2P network, a request to search for a service within the P2P network, the target node comprising a search table comprising a plurality of entries identifying each of a plurality of nodes of the P2P network; Including, the detecting step; And
Initiating a service search request towards at least one of the nodes identified in the search table, wherein the service search request is a request to identify at least one node of the P2P network supporting the service; The search request includes the initiating step, including information indicative of the service and a search range for use by the node from which the service search request is initiated.
제 1 항에 있어서,
상기 서비스 탐색 요청은 상기 탐색 표의 상기 노드들의 모두를 향해 동시에 개시되는, 서비스 탐색 방법.
The method of claim 1,
And the service search request is initiated simultaneously towards all of the nodes of the search table.
제 1 항에 있어서,
상기 서비스 탐색 요청은 상기 서비스를 지원하는 적어도 하나의 노드가 식별되거나 상기 P2P 네트워크의 상기 노드들 중 어떤 것도 상기 서비스를 지원하지 않는다는 결정이 이루어질 때까지 상기 탐색 표의 상기 노드들을 향해 연속하여 개시되는, 서비스 탐색 방법.
The method of claim 1,
The service search request is initiated continuously toward the nodes of the search table until at least one node supporting the service is identified or a determination is made that none of the nodes of the P2P network support the service, How to navigate the service.
제 1 항에 있어서,
상기 서비스 탐색 요청은 상기 탐색 표의 상기 노드들의 서브세트를 향해 동시에 개시되고, 상기 탐색 표의 노드들의 서브세트는 상기 탐색 표의 첫 K개의 엔트리들에서 식별된 노드들을 포함하는, 서비스 탐색 방법.
The method of claim 1,
Wherein the service search request is initiated simultaneously towards the subset of the nodes of the search table, wherein the subset of nodes of the search table includes the nodes identified in the first K entries of the search table.
제 4 항에 있어서,
긍정의 탐색 응답이 상기 탐색 표의 노드들의 서브세트의 노드들 중 적어도 하나로부터 수신된다면, 상기 서비스를 위한 요청을 개시하는 단계; 및
긍정의 탐색 응답이 상기 탐색 표의 노드들의 서브세트의 노드들 중 적어도 하나로부터 수신되지 않는다면:
상기 탐색 표의 노드들의 서브세트에 있지 않은 상기 탐색 표의 다음 엔트리와 연관된 다음 노드를 향해, 상기 P2P 네트워크 내에 상기 서비스의 위치를 찾기 위한 후속 서비스 탐색 요청을 개시하는 단계를 추가로 포함하는, 서비스 탐색 방법.
The method of claim 4, wherein
If a positive search response is received from at least one of the nodes of the subset of nodes of the search table, initiating a request for the service; And
If a positive search response is not received from at least one of the nodes of the subset of nodes of the search table:
Initiating a subsequent service search request for locating the service within the P2P network towards a next node associated with a next entry of the search table that is not in the subset of nodes of the search table. .
제 4 항에 있어서,
상기 서비스를 지원하는 상기 P2P 네트워크의 추정된 평균 수의 노드들을 이용하여 상기 탐색 표의 노드들의 서브세트를 식별하는 단계를 추가로 포함하는, 서비스 탐색 방법.
The method of claim 4, wherein
And identifying a subset of the nodes in the lookup table using the estimated average number of nodes in the P2P network supporting the service.
제 1 항에 있어서,
상기 서비스 탐색 요청이 개시되는 상기 탐색 표의 노드들 중 적어도 하나의 각각으로부터, 상기 노드가 상기 서비스를 지원하는지 또는 상기 서비스를 지원하는 식별된 또 다른 노드를 가지는지를 나타내는 탐색 응답을 수신하는 단계를 추가로 포함하는, 서비스 탐색 방법.
The method of claim 1,
Receiving from each of at least one of the nodes of the search table from which the service search request is initiated a search response indicating whether the node supports the service or has another identified node supporting the service. Including, service discovery method.
제 1 항에 있어서,
상기 타겟 노드가 상기 서비스를 지원하는 노드가 위치된다는 것을 나타내는 긍정의 탐색 응답을 수신할 때, 상기 타겟 노드로부터 상기 서비스를 지원하는 상기 노드를 향해 상기 서비스를 위한 요청을 개시하는 단계를 추가로 포함하는, 서비스 탐색 방법.
The method of claim 1,
When the target node receives a positive search response indicating that a node supporting the service is located, initiating a request for the service from the target node towards the node supporting the service. How to navigate the service.
복수의 노드들을 포함하는 피어-투-피어(P2P) 네트워크 내에서 서비스를 탐색하기 위한 장치에 있어서:
상기 P2P 네트워크의 각각의 복수의 노드들을 식별하는 복수의 엔트리들을 포함하는 탐색 표를 저장하기 위한 메모리; 및
프로세서로서,
상기 P2P 네트워크 내에서 서비스를 탐색하기 위한 요청을 검출하고,
상기 탐색 표에서 식별된 상기 노드들 중 적어도 하나를 향해 서비스 탐색 요청을 개시하도록 구성된, 상기 프로세서를 포함하고,
상기 서비스 탐색 요청은 상기 서비스를 지원하는 상기 P2P 네트워크의 적어도 하나의 노드를 식별하기 위한 요청이고, 상기 서비스 탐색 요청은 상기 서비스를 나타내는 정보 및 상기 서비스 탐색 요청이 개시되는 상기 노드에 의해 이용하기 위한 탐색 범위를 포함하는, 서비스 탐색 장치.
An apparatus for discovering a service within a peer-to-peer (P2P) network comprising a plurality of nodes, comprising:
A memory for storing a lookup table comprising a plurality of entries identifying each of a plurality of nodes of the P2P network; And
As a processor,
Detect a request to search for a service within the P2P network,
The processor, configured to initiate a service search request towards at least one of the nodes identified in the search table,
The service search request is a request for identifying at least one node of the P2P network supporting the service, and the service search request is for use by information indicative of the service and by the node from which the service search request is initiated. A service navigation device comprising a search range.
복수의 노드들을 포함하는 피어-투-피어(P2P) 네트워크 내에서 서비스의 위치를 찾기 위한 방법에 있어서:
상기 P2P 네트워크의 타겟 노드에서, 서비스 탐색 요청을 수신하는 단계로서, 상기 서비스 탐색 요청은 요청되는 상기 서비스를 나타내는 정보 및 상기 타겟 노드를 위한 탐색 범위를 포함하는, 상기 수신 단계;
상기 요청되는 서비스를 나타내는 상기 정보의 적어도 일부를 이용하여, 상기 타겟 노드가 상기 서비스를 지원하는지의 여부를 결정하는 단계;
상기 타겟 노드가 상기 서비스를 지원한다는 결정이 이루어질 때, 상기 서비스가 상기 타겟 노드에 의해 지원된다는 것을 나타내는 서비스 탐색 응답 메시지를 상기 타겟 노드로부터 개시하는 단계; 및
상기 타겟 노드가 상기 서비스를 지원하지 않는다는 결정이 이루어질 때, 상기 타겟 노드로부터 상기 P2P 네트워크의 적어도 하나의 다른 노드를 향해 서비스 탐색 요청을 개시할지 여부를 결정하는 단계를 포함하는, 서비스 위치 찾기 방법.
A method for locating a service in a peer-to-peer (P2P) network comprising a plurality of nodes, comprising:
Receiving, at a target node of the P2P network, a service search request, the service search request including information indicating the service requested and a search range for the target node;
Determining whether the target node supports the service using at least some of the information indicative of the requested service;
When a determination is made that the target node supports the service, initiating a service search response message from the target node indicating that the service is supported by the target node; And
When a determination is made that the target node does not support the service, determining whether to initiate a service search request from the target node toward at least one other node of the P2P network.
KR1020127018264A 2009-12-17 2010-12-01 Method and apparatus for locating services within peer-to-peer networks KR20120104341A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/640,072 2009-12-17
US12/640,072 US10084856B2 (en) 2009-12-17 2009-12-17 Method and apparatus for locating services within peer-to-peer networks

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020147008205A Division KR101433702B1 (en) 2009-12-17 2010-12-01 Method and apparatus for locating services within peer-to-peer networks

Publications (1)

Publication Number Publication Date
KR20120104341A true KR20120104341A (en) 2012-09-20

Family

ID=43530576

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127018264A KR20120104341A (en) 2009-12-17 2010-12-01 Method and apparatus for locating services within peer-to-peer networks
KR1020147008205A KR101433702B1 (en) 2009-12-17 2010-12-01 Method and apparatus for locating services within peer-to-peer networks

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147008205A KR101433702B1 (en) 2009-12-17 2010-12-01 Method and apparatus for locating services within peer-to-peer networks

Country Status (6)

Country Link
US (1) US10084856B2 (en)
EP (1) EP2514175A1 (en)
JP (1) JP5567683B2 (en)
KR (2) KR20120104341A (en)
CN (1) CN102668513B (en)
WO (1) WO2011084272A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015080461A1 (en) * 2013-11-29 2015-06-04 주식회사 케이티 Method and device for searching for available device in m2m environment
KR101534555B1 (en) * 2013-06-25 2015-07-08 숭실대학교산학협력단 Circle -Mesh overlay network construction and maintain method
WO2019022583A1 (en) * 2017-07-28 2019-01-31 전자부품연구원 Data query method of specific type device, based on location information
US10206090B2 (en) 2013-11-29 2019-02-12 Kt Corporation Method and device for searching for available device in M2M environment

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9298732B2 (en) * 2010-09-29 2016-03-29 Red Hat, Inc. Searching cloud-based distributed storage resources using a set of expendable probes
US8443086B2 (en) 2011-06-22 2013-05-14 National Chiao Tung University Decentralized structured peer-to-peer network and load balancing methods thereof
GB2500720A (en) * 2012-03-30 2013-10-02 Nec Corp Providing security information to establish secure communications over a device-to-device (D2D) communication link
US9069761B2 (en) 2012-05-25 2015-06-30 Cisco Technology, Inc. Service-aware distributed hash table routing
US9658841B2 (en) * 2012-08-30 2017-05-23 Avaya Inc. System and method for efficient software replication
CN103973460B (en) * 2013-01-30 2017-06-27 华为终端有限公司 For realizing the method and device that network is intended to
WO2014186593A1 (en) * 2013-05-15 2014-11-20 Intel Corporation Techniques to support power-saving background device discovery in a wireless communications system
JP6131907B2 (en) * 2014-04-24 2017-05-24 カシオ計算機株式会社 Distributed database, data sharing method, program, and apparatus
JP6697158B2 (en) * 2016-06-10 2020-05-20 富士通株式会社 Information management program, information management method, and information management device
CN106202303B (en) * 2016-06-30 2019-09-10 南京邮电大学 A kind of Chord routing table compression method and optimization file search method
CN106571973A (en) * 2016-09-28 2017-04-19 杭州鸿雁智能科技有限公司 Heartbeat packet timeout management method and system
CN106681794B (en) * 2016-12-07 2020-04-10 长春市三昧动漫设计有限公司 Interest behavior based distributed virtual environment cache management method
CN108055651A (en) * 2017-11-14 2018-05-18 华中科技大学 A kind of mobile terminal device heartbeat package transmitting method based on D2D technologies
CN109962942B (en) * 2017-12-22 2022-06-07 天翼云科技有限公司 Copy update method and apparatus, and computer-readable storage medium
CN116346892A (en) * 2021-12-24 2023-06-27 上海诺基亚贝尔股份有限公司 Method, apparatus, device and medium for service provision

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1000000A (en) * 1910-04-25 1911-08-08 Francis H Holton Vehicle-tire.
US5819258A (en) 1997-03-07 1998-10-06 Digital Equipment Corporation Method and apparatus for automatically generating hierarchical categories from large document collections
US7020698B2 (en) * 2000-05-31 2006-03-28 Lucent Technologies Inc. System and method for locating a closest server in response to a client domain name request
US6961723B2 (en) * 2001-05-04 2005-11-01 Sun Microsystems, Inc. System and method for determining relevancy of query responses in a distributed network search mechanism
DE10143754A1 (en) 2001-09-06 2003-04-03 Siemens Ag Scalable peer-to-peer network with a directory service
US7213047B2 (en) * 2002-10-31 2007-05-01 Sun Microsystems, Inc. Peer trust evaluation using mobile agents in peer-to-peer networks
US7831367B2 (en) * 2002-11-21 2010-11-09 Lucas Automotive Gmbh System for influencing the speed of a motor vehicle
JP2004258994A (en) 2003-02-26 2004-09-16 Nippon Telegr & Teleph Corp <Ntt> Dynamic file retrieval method for p2p network, terminal, program, and recording medium
US7805448B2 (en) * 2003-04-18 2010-09-28 Hewlett-Packard Development Company, L.P. Storing attribute values of computing resources in a peer-to-peer network
US7558875B2 (en) 2003-09-15 2009-07-07 Microsoft Corporation Measurement-based construction of locality-aware overlay networks
US7779415B2 (en) 2003-11-21 2010-08-17 International Business Machines Corporation Adaptive load distribution in managing dynamic and transient data for distributed applications
US7975035B2 (en) 2003-12-01 2011-07-05 International Business Machines Corporation Method and apparatus to support application and network awareness of collaborative applications using multi-attribute clustering
US20080281950A1 (en) * 2004-03-08 2008-11-13 First Oversi Ltd Method and Device for Peer to Peer File Sharing
US9160571B2 (en) * 2004-03-11 2015-10-13 Hewlett-Packard Development Company, L.P. Requesting a service from a multicast network
US7487239B2 (en) * 2004-03-25 2009-02-03 International Business Machines Corporation Composite resource models
ATE390013T1 (en) * 2004-05-18 2008-04-15 British Telecomm PEER-TO-PEER NETWORKS
JP4334424B2 (en) * 2004-07-09 2009-09-30 富士通株式会社 Network resource, service discovery method, and relay node device
US8014321B2 (en) 2004-10-22 2011-09-06 Microsoft Corporation Rendezvousing resource requests with corresponding resources
US20070288638A1 (en) * 2006-04-03 2007-12-13 British Columbia, University Of Methods and distributed systems for data location and delivery
US7516116B2 (en) * 2006-04-07 2009-04-07 Microsoft Corporation Range and cover queries in overlay networks
US9507778B2 (en) 2006-05-19 2016-11-29 Yahoo! Inc. Summarization of media object collections
US8131971B2 (en) * 2006-06-20 2012-03-06 Patentvc Ltd. Methods and systems for push-to-storage
WO2008041173A2 (en) * 2006-10-02 2008-04-10 Nokia Corporation Method system and devices for network sharing or searching of resources
CN101207531A (en) 2006-12-21 2008-06-25 浙江工业大学 Method and system for establishing P2P covering network capable of spanning multilevel subnetwork
US8756253B2 (en) * 2007-01-22 2014-06-17 Xerox Corporation Two-level structured overlay design for cluster management in a peer-to-peer network
US20080275969A1 (en) * 2007-02-02 2008-11-06 Blaksley Ventures 108, Llc System and method for managing a plurality of network clusters
JP4306740B2 (en) 2007-02-21 2009-08-05 ソニー株式会社 Overlay network system and service providing program
CN101257396B (en) 2007-03-02 2010-12-08 中国科学院声学研究所 System for distributing multi-field content based on P2P technique as well as corresponding method
JP2008234563A (en) 2007-03-23 2008-10-02 Nec Corp Overlay management device, overlay management system, overlay management method, and program for managing overlay
US7978631B1 (en) * 2007-05-31 2011-07-12 Oracle America, Inc. Method and apparatus for encoding and mapping of virtual addresses for clusters
US8238237B2 (en) * 2007-06-18 2012-08-07 Sony Computer Entertainment Inc. Load balancing distribution of data to multiple recipients on a peer-to-peer network
US7802009B2 (en) 2007-06-26 2010-09-21 Microsoft Corporation Automatic reverse engineering of message formats from network traces
CN101374087A (en) 2007-08-20 2009-02-25 华为技术有限公司 Mobile self-grouping network, node and region partitioning method thereof
US8041773B2 (en) * 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
CN101159755A (en) * 2007-11-07 2008-04-09 中兴通讯股份有限公司 Mobile search system and mobile search method
JP5151511B2 (en) * 2008-01-30 2013-02-27 ソニー株式会社 Search service providing system and search service providing method
CN100537201C (en) 2008-04-09 2009-09-09 宁波朗格世明汽车部件有限公司 Method for manufacturing automobile treadle pad by using waste and old PVC material
CN101394423B (en) 2008-09-27 2012-07-18 中兴通讯股份有限公司 Media positioning, searching method and system
KR101607178B1 (en) * 2008-10-23 2016-03-29 아브 이니티오 테크놀로지 엘엘시 A method, a system, and a computer-readable medium storing a computer program for performing a data operation, measuring data quality, or joining data elements
US8144611B2 (en) * 2009-02-10 2012-03-27 Microsoft Corporation Network coordinate systems using IP information
CN102483768B (en) * 2009-04-16 2015-12-16 泰必高软件公司 Memory structure based on strategy distributes
WO2011049491A1 (en) * 2009-10-21 2011-04-28 Telefonaktiebolaget L M Ericsson (Publ) Method and arrangement for locating services in a peer-to-peer network
BR112012010503B1 (en) * 2009-11-03 2021-11-16 Telecom Italia S.P.A. METHOD TO ALLOW SHARING OF CONTENT FILES BETWEEN US OF A NON-HIERARCHICAL NETWORK, AND, NON-HIERARCHICAL NETWORK
US8805932B2 (en) * 2009-11-03 2014-08-12 Telecom Italia S.P.A. Sharing of digital contents in P2P networks exploiting localization data
KR102031392B1 (en) * 2011-11-15 2019-11-08 아브 이니티오 테크놀로지 엘엘시 Data clustering based on candidate queries
US9268589B2 (en) * 2011-12-09 2016-02-23 Yahoo! Inc. Method and system for deploying multiple distributed application stacks on a target machine

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101534555B1 (en) * 2013-06-25 2015-07-08 숭실대학교산학협력단 Circle -Mesh overlay network construction and maintain method
WO2015080461A1 (en) * 2013-11-29 2015-06-04 주식회사 케이티 Method and device for searching for available device in m2m environment
US10206090B2 (en) 2013-11-29 2019-02-12 Kt Corporation Method and device for searching for available device in M2M environment
WO2019022583A1 (en) * 2017-07-28 2019-01-31 전자부품연구원 Data query method of specific type device, based on location information

Also Published As

Publication number Publication date
US20110153634A1 (en) 2011-06-23
CN102668513A (en) 2012-09-12
EP2514175A1 (en) 2012-10-24
KR20140044948A (en) 2014-04-15
JP2013514733A (en) 2013-04-25
KR101433702B1 (en) 2014-08-27
US10084856B2 (en) 2018-09-25
WO2011084272A1 (en) 2011-07-14
CN102668513B (en) 2016-03-23
JP5567683B2 (en) 2014-08-06

Similar Documents

Publication Publication Date Title
KR101433702B1 (en) Method and apparatus for locating services within peer-to-peer networks
Lua et al. A survey and comparison of peer-to-peer overlay network schemes
KR101481874B1 (en) Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network
JP4806203B2 (en) Routing in peer-to-peer networks
US20050080858A1 (en) System and method for searching a peer-to-peer network
EP2139205B1 (en) Method of redundant data storage
US20050201278A1 (en) Reconfiguring a multicast tree
Karbhari et al. Bootstrapping in gnutella: A measurement study
KR20090034829A (en) Inter-proximity communication within a rendezvous federation
KR20090034322A (en) Inter-proximity communication within a rendezvous federation
El Dick et al. Building a peer-to-peer content distribution network with high performance, scalability and robustness
Shen et al. A proximity-aware interest-clustered P2P file sharing system
Shi et al. Popularity adaptive search in hybrid P2P systems
Lua et al. ASurvey AND COMPARISON OF PEER-TO-PEER OVERLAY NETWORK SCHEMES
JP4923115B2 (en) Method, computer program and node for distributing references to objects in a self-organizing distributed overlay network, and self-organizing distributed overlay network
Kapoor et al. Survey of various search mechanisms in unstructured peer-to-peer networks
Brands et al. Taxonomy of p2p applications
Salter An efficient reactive model for resource discovery in DHT-based peer-to-peer networks
Nhat Searching in P2P networks: a survey
Cowan S4h: A Peer-to-Peer Search Engine with Explicit Trust
Ktari et al. Symmetric replication for efficient flooding in DHTs
Bonnel et al. Search in p2p triangular mesh by space filling trees
Ahmed et al. Collaborative Web Hosting: Challenges and Research Directions
Mary et al. Peer-to-Peer Overlays: Issues and Trends
Lei et al. An adaptive search method based on the interest in Gnutella-like network

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
A107 Divisional application of patent