KR101081147B1 - 동일한 레이블과 매칭하는 다중 노드를 식별하는 컴퓨터네트워크 - Google Patents

동일한 레이블과 매칭하는 다중 노드를 식별하는 컴퓨터네트워크 Download PDF

Info

Publication number
KR101081147B1
KR101081147B1 KR1020057018850A KR20057018850A KR101081147B1 KR 101081147 B1 KR101081147 B1 KR 101081147B1 KR 1020057018850 A KR1020057018850 A KR 1020057018850A KR 20057018850 A KR20057018850 A KR 20057018850A KR 101081147 B1 KR101081147 B1 KR 101081147B1
Authority
KR
South Korea
Prior art keywords
node
address
message
nodes
list
Prior art date
Application number
KR1020057018850A
Other languages
English (en)
Other versions
KR20060056888A (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 KR20060056888A publication Critical patent/KR20060056888A/ko
Application granted granted Critical
Publication of KR101081147B1 publication Critical patent/KR101081147B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4541Directories for service discovery
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

컴퓨터 네트워크의 노드는, 레이블의 입력에 응답하여 그 레이블과 매칭하는 노드의 주소를 식별하는 제 1 검색 동작, 및 제 1 검색 수단에 의해 식별된 주소에 응답하여 동일한 레이블과 매칭하는 추가적인 노드의 주소를 식별하도록 동작가능한 제 2 검색 동작을 수행함으로써 구축되고,
주어진 레이블과 매칭하는 각 노드는, 동일한 레이블과 매칭하는 다른 노드의 주소를 저장하기 위한 데이터 저장장치를 가지고, 문의 메시지에 응답하여 리스트의 주소를 저장하고 있는 메시지를 리턴하며;
상기 제 2 검색 동작은, 상기 제 1 검색 수단에 의해 식별된 주소로 문의 메시지를 전송하고, 응답을 받고서 이전의 문의 메시지 응답에 포함된 주소로 추가적인 문의 메시지를 반복하여 전송하도록 동작하는 것을 특징으로 한다.

Description

동일한 레이블과 매칭하는 다중 노드를 식별하는 컴퓨터 네트워크{A COMPUTER NETWORK FOR IDENTIFYING MULTIPLE NODES MATCHING THE SAME LABEL}
본 발명은 컴퓨터 네트워크에 관한 것으로써, 특히 P2P 시스템과 같은 분배시스템에서의 정보 검색에 대해서 뿐만 아니라, 중앙 기억장치 또는 중앙 제어를 가지지 않은 정보 검색에 대한 것이다.
본 발명의 일 측면에 따르면, 컴퓨터 네트워크는 노드를 구비하고,
레이블과 매칭하는 노드의 주소를 식별하기 위해 레이블의 입력에 응답하는 제 1 검색 수단;
상기 제 1 검색 수단에 의해 식별된 주소를 수신하기 위해 연결되고, 상기 수신에 응답하여 동일한 레이블과 매칭하는 추가적인 노드의 주소를 식별하도록 동작가능한 제 2 검색 수단을 포함하고,
주어진 레이블과 매칭하는 각 노드는, 동일한 레이블과 매칭하는 다른 노드들의 주소를 수용하는 데이터 스토리지 영역과 연관되고, 문의(enquiry) 메시지에 응답하여 리스트의 주소를 저장하고 있는 메시지를 리턴하며;
상기 제 2 검색 수단은, 상기 제 1 검색 수단에 의해 식별된 주소로 문의 메시지를 전송하고, 응답을 받고서 그 문의 메시지에 대한 응답, 또는 연속한 문의 메시지에 대한 응답에 포함된 주소로 문의 메시지를 반복하여 전송하는 컴퓨터 네트워크가 제공된다.
본 발명의 또다른 측면에서, 본 발명은 노드를 구비하는 컴퓨터 네트워크에서 동작하는 방법으로서,
레이블의 입력에 응답하여, 그 레이블과 매칭하는 노드의 주소를 식별하는 제 1 검색 동작을 수행하는 단계;
상기 제 1 검색 수단에 의해 식별된 주소에 응답하여, 상기 동일한 레이블과 매칭하는 추가적인 노드의 주소를 식별하는 제 2 검색 동작을 수행하는 단계를 포함하고,
주어진 레이블과 매칭하는 각 노드는, 동일한 레이블과 매칭하는 다른 노드의 주소를 저장하기 위한 데이터 저장장치를 노드와 연관시키고, 문의 메시지에 응답하여 리스트의 주소를 저장하고 있는 메시지를 리턴하며;
상기 제 2 검색 동작은, 상기 제 1 검색 수단에 의해 식별된 주소로 문의 메시지를 전송하고, 응답을 받고서 그 문의 메시지에 대한 응답, 또는 연속한 문의 메시지에 대한 응답에 포함된 주소로 문의 메시지를 반복하여 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 네트워크를 동작시키는 방법이 제공된다.
본 발명의 다른 바람직한 특징은 청구범위에 정의된다.
도 1은 본 발명의 일 실시예에서 사용되는 컴퓨터의 블록도;
도 1A는 제 1 및 제 2 가상 네트워크를 이용하는 데이터 검색 동작을 도시하는 순서도;
도 2는 컴퓨터 네트워크의 노드들 사이의 링크의 관리를 예시하는 도식도,
도 3 내지 도 10은 제 2 가상 네트워크의 노드의 동작의 국면들을 도시하는 순서도;
도 11 내지 도 14와 도 16은 제 1 가상 네트워크의 노드의 동작의 국면들을 도시하는 순서도; 및
도 15는 도 14에 설명된 프로세스 동안에 메시지의 흐름을 예시하는 도식도이다.
이제 본 발명의 어떤 실시예가 첨부된 도면을 참조하면서 예로서 설명될 것이다.
노드
이 설명에서 처리, 저장 및 통신 능력을 갖는 컴퓨팅 노드에 대한 언급이 행해질 것이다. 컴퓨팅 노드는 컴퓨터나 다른 장치일 수 있거나, 또는, 단일 컴퓨터가 자신 상에서 실행되고 있는 다수의 독립적인 프로그램이나 프로세스를 가질 수 있음을 주목한다면, 그러한 프로그램이나 프로세스일 수 있다. 저장된 데이터의 아이템도 또한, 비록 다수의 그러한 아이템이 단일 프로그램이나 프로세스에 의해 서비스될 수 있지만, 별개의 노드로 간주될 수 있다.
이 설명은 각 컴퓨팅 노드가 예를 들면 IP(인터넷 프로토콜) 네트워크와 같은 통신 네트워크일 수 있는 어떤 통신 기반구조에 연결되어 있으며, 그리하여 메시지가 그것에 전송될 수 있다는 것을 가정한다. 그리하여, 각 컴퓨팅 노드는 통신 기반구조 내의 노드를 또한 구성한다.
가상 네트워크에 속하는 가상 노드에 대한 언급이 또한 행해질 것이다. 그 구별은 중요한데 왜냐하면 컴퓨팅 노드는 그것과 관련된 두 개 이상의 가상 노드(아마도 상이한 가상 네트워크에 속하는)를 가질 수 있기 때문이다. 이름이 암시하듯이, 가상 노드는 물리적 의미에서는 존재하지 않는다; 오히려, 곧 명확해 지듯이, 그 존재는 가상 노드들 간의 링크를 정의하고 그리하여 그것이 속하는 가상 네트워크를 또한 정의하는 저장 데이터에 의해 확립된다.
가상 노드는 컴퓨팅 노드와 반드시 연관되어야 하는데, 컴퓨팅 노드는 가상 노드에 처리, 저장 및 통신 능력을 제공한다: 가상 노드에 의한 메시지의 전송, 수신 및 처리에 대한 참조는 가상 노드를 대신해 컴퓨팅 노드에 의한 그러한 전송, 수신 또는 처리를 참조한다.
도 1에 하나의 예가 도시되어 있다. 컴퓨터는 통상의 구성요소들, 즉 처리기(1), 메모리(2), 디스플레이(3), 키보드(4), 네트워크(10)를 통한 통신을 위한 통신 인터페이스(5)를 갖는다.
메모리(2)는 운영체계와 다른 프로그램(도시되지 않음), 도시된 텍스트 파일(20)과 같은 데이터 파일을 포함한다. 또한 그것은 텍스트 파일(20)에 상응하는 레이블(21a)과 자신의 주소(21b)를 포함하는 저장장치(21)를 갖는다. 추가로, 그것은 주소 목록(22)과 지원 프로그램(23)을 갖는데 이들은 함께 가상 네트워크의 노드의 존재를 컴퓨터 상에 정의한다. 이 노드는 주소(24)를 갖는다. 또한 주소 목록(25)과 지원 프로그램(26)이 도시되어 있는데 이들은 함께 다른 가상 네트워크의 노드의 존재를 컴퓨터 상에 정의한다. 이 노드는 주소(27)를 갖는다. 목록(22, 25)에 저장된 주소는 동일한 가상 네트워크에 있는 다른 노드들의 주소이다.
룩-업 시스템
이제 우리는 비록 이것이 본 발명에 대한 애플리케이션의 단지 한 가지 가능한 예지만, 분산 룩-업 시스템을 설명할 것이다. 이 시스템은 사용자가 코멘트들을 웹 페이지와 연관시키는 것을 허용한다. 사용자가 이 페이지를 방문할 때마다, 그는 또한 다른 사용자가 작성한 코멘트를 보는 기회를 갖는다. 코멘트는 그 코멘트를 단 사용자의 컴퓨터에 저장되어 있다(예를 들면 텍스트 파일로).
웹 페이지(혹은 오히려 그의 컴퓨터)를 보는 사용자는 그 웹 페이지의 유니버설 리소스 로케이터(URL)를 갖는데, 필요한 것은 그 코멘트를 검색할 수 있는 메카니즘이다. 이 예에서 그 메카니즘은 다음과 같다:
텍스트 파일은 코멘트를 단 사용자의 컴퓨터에 저장되어 있으며, 우리의 국제특허출원 제WO 03/034669호(대리인 참조번호 A30044)에 설명된 유형의 가상 네트워크의 노드와 연관되는데, 다른 웹 페이지에 대한 코멘트를 포함하는 다른 텍스트 파일 및 아마도 다른 관련되지 않은 파일일 수도 있다. 이 가상 네트워크(본 발명의 맥락에서는 제 1 가상 네트워크, 또는 간단히 제 1 네트워크를 지칭함)는 만약 노드를 식별하는 레이블을 가지고 있다면 주소를 몰라도 그 노드에 메시지를 전송하는 것을 허용하도록 기능한다. 비록 그런 종류의 네트워크는 고유한 레이블(노 드당 하나)로써 기능할 수 있지만, 이 예에서 레이블은 고유하지 않다: 오히려, 특정 웹 페이지에 대한 코멘트를 포함하는 텍스트 파일과 연관된 모든 노드가 동일한 레이블을 갖는다. 이 레이블은 그 웹 페이지의 URL의 해시(hash) 기능이다. 이 가상 네트워크는 단지 하나의 노드에 도달하는 검색 메카니즘을 제공한다.
또한 텍스트 파일은 제 2 가상 네트워크의 노드와 연관된다. 이것(제 2 가상 네트워크)은 하나의 특정 웹 페이지에 대한 코멘트를 포함하는 텍스트 파일과 연관된 노드들만을 포함한다.
그러나, 전술한 우리의 국제특허출원에 따른 제 1 네트워크의 사용이 바람직하지만, 그것이 필수적인 것이 아님을 주목하라. 실제로, 가상 네트워크를 사용하는 것은 전혀 필수적인 것이 아니다: 레이블을 검색하고 그것에 상응하는 하나의 노드의 주소를 회신하는 다른 제 1 검색 메카니즘이 그 대신에 사용될 수 있다.
코멘트를 포스팅하고 있는 컴퓨터는 도 1에 도시된 바와 같으며, 반드시
●제 1 네트워크에서 노드를 생성해야 한다. 이 노드는 레이블(21a)과 네트워크 주소(24)를 갖는다.
●제 2 네트워크에서 노드를 생성해야 한다. 이 노드는 네트워크 주소(27)를 갖는다.
초기에 주소 목록(22, 25)은 목록(22)이 부트스트랩 링크를 포함하고 있는 것을 제외하고는 비어 있다. 목록(22)이 제 1 네트워크의 어떤 다른 노드들의 주소와 레이블을 포함하고 목록(25)이 제 2 네트워크의 어떤 다른 노드들의 주소를 포함하는 것을 보장하기 위한 네트워크의 자기-조직화가 후술될 것이다. 당분간, 이들 레이블과 주소가 존재한다는 가정에 기초하여 시스템이 설명될 것이다.
주소에 대한 약간의 말이 이 시점에서 순서를 기다리고 있다. 텍스트 파일(20)에 의해 형성된 노드, 제 1 가상 네트워크의 노드 및 제 2 가상 네트워크의 노드는 개념적으로는 단일한 정체성을 가지고 있지만 그들 자신의 주소를 갖는다. 비록 실제적으로는 특히나 편리한 것은 아니지만, 통신 네트워크(10) 내에서 각 노드에 별개의 주소를 할당하는 것이 가능할 것이다. 우리의 바람직한 구현예에서, 각 노드는 세 개의 부분으로 구성되는 주소를 갖는다:
●인터넷 주소, 이것은 컴퓨팅 노드의 "위치를 정한다". 예를 들면, 130.146.209.15
●포트 번호, 이것은 컴퓨팅 노드에서의 특정 통신 포트의 위치를 정한다. 포트는 인터넷 주소의 표준적인 부분이다. 그것은 예를 들면 독립적인 상이한 애플리케이션 프로그램들이 독립적으로 메시지를 송수신하는 것을 허용한다. 즉, 각각은 자신의 포트에서 메시지를 수신할 것이며, 다른 애플리케이션 프로그램을 위해 의도된 메시지를 수신하거나 그것에 의해 "혼동"되지 않을 것이다. 포트 번호와 더불어 인터넷 주소는 네트워크 주소로 간주될 수 있다(TCP/IP와 같은, 사용되고 있는 통신 프로토콜의 부분이듯이). 모든 제 1 및 제 2 노드에 대한 네트워크 주소는 동일할 수 있으나, 반드시 그런 것은 아니다. 예를 들면, 제 1 노드들에 대한 모든 메시지는 제 2 메시지가 수신되는 포트와는 상이한 포트에서 수신될 수 있다(이것은 그러한 메시지들을 구별하는 한 가지 방법이다).
●노드 식별자(정수값), 이는 메시지가 의도된 특정 노드의 위치를 정한다. 예를 들면, 제 1 네트워크상의 모든 메시지가 전용 포트에서 수신되면, 각 노드와 연관된 국지적으로 고유한 식별자가 여전히 존재하는 것이다. 그리하여, 다수의 노드가 있을 때, 어떤 노드에 대해서 그 메시지가 의도되었는지가 명확하다. 이 노드 식별자는 애플리케이션-특정 주소 확장자(extension)이다(그것은 표준적인 인터넷 프로토콜의 부분이 아님). 그것은 전송되는 메시지에 단순히 포함된다. 그것을 수신하는 프로세스는 이 점을 "알며", 이 노드 식별자를 검사하여 어떤 노드에 메시지가 포워딩되어야 하는지를 판정한다.
양쪽 노드 모두가 동일한 네트워크 주소를 갖는 것이 가능하지만 반드시 그런 것은 아니다. 모든 노드가 자신의 포트를 가지는 것은 아니며(부분적으로는, 이용가능한 포트의 수가 다소 제한되어 있기 때문에), 하나의 노드가 두 개의 포트(그리하여 두 개의 상이한 네트워크 주소), 제 1 네트워크를 위한 하나와 제 2 네트워크를 위한 하나를 갖는 것도 무방하다. 일반적으로, 다수의 제 2 네트워크가 있을 것이며, 이들은 모두 동일한 포트를 사용할 수 있다.
다음의 설명에서, 노드의 주소에 대한 언급은 그 노드의 완전한 주소를 지칭한다는 점이 강조되어야 한다.
특히나 매력적인 접근은 텍스트 파일과 제 1 및 제 2 노드가 모두 동일한 노드 식별자(및 IP 주소)를 가지고, 단지 포트 번호만이 상이하도록 규정하는 것이다. 그러한 어드레싱 프로토콜은, 하나의 노드의 주소를 가지고 있고 그것과 연관된 다른 노드의 주소를 필요로 하는 경우에, 후자의 노드의 주소가 룩-업되기 보다는 전자의 노드로부터 추론될 수 있다는 점에서, 처리의 일부의 간략화를 위한 기회를 제공할 수 있다. 그러나, 다음의 설명에서, 어떠한 그러한 간략화도 행해지지 않으며, 그리하여 이들 프로세스는 임의의 주소 프로토콜과도 동작할 것이다.
웹 페이지를 보는 컴퓨터는 다음에 의해 연관 코멘트를 검색한다:
●레이블을 얻기 위해 동일한 해시 함수를 URL에 적용함에 의해
●하나의 노드의 주소를 얻기 위해 제 1 가상 네트워크 상에 질의(레이블을 포함하는)를 전송함으로써
●발견된 주소를 이용하여, 제 2 가상 네트워크 상의 보다 많은(혹은 모든) 다른 노드의 주소를 얻도록 제 2 가상 네트워크 상에 질의를 전송함으로써
●디스플레이를 위한 코멘트를 검색하도록 이들 주소를 이용함으로써.
검색하는 컴퓨터는 가상 네트워크의 노드를 반드시 포함할 필요는 없다는 것을 주목하라; 그것은 검색 프로세스를 구현하는 소프트웨어와, 가상 네트워크의 노드들이 존재하고 있는 컴퓨터들과 통신할 수 있도록 하는 통신 인터페이스가 로딩된 종래의 컴퓨터일 수 있다. 이 프로세스는 도 1A의 순서도에 도시되어 있으며, 다음과 같이 진행한다:
단계(30): 사용자가 입력하는 URL(또는 선택하는 하이퍼링크)에 따라서 컴퓨터는 상응하는 웹 페이지를 검색한다. 이 단계는 전적으로 종래적이다.
단계(31): 레이블을 얻기 위해 해시 함수가 그 URL에 적용된다. 우리의 전술한 국제특허출원에서 논의된 바와 같이, 이것은 SHA-1 알고리즘을 이용할 수 있다.
단계(32): 검색하는 컴퓨터의 네트워크 주소와 이러한 레이블을 포함하는 'Find' 메시지가 제 1 네트워크의 노드에 전송된다. 명백하게, 컴퓨터가 적어도 하나의 그러한 주소를 보유하는 것이 필요하다.
단계(33): 검색하는 컴퓨터는 제 1 네트워크로부터 'Found' 메시지를 수신한다. 이 메시지는 발견된 노드의 주소와 레이블뿐만 아니라 제 2 네트워크의 연관 노드의 주소, 및 코멘트의 주소를 포함한다. 만약 Found 메시지가 적절한 시간 내에 수신되지 않으면 그 프로세스를 취소하기 위한 타임아웃 메카니즘이 포함될 수 있다.
단계(34): 이 예에서, 제 1 네트워크는 Find 메시지에 포함되어 있는 레이블에 가장 가까운 레이블을 갖는 노드의 주소와 레이블을 항상 회신하도록 구성된다. 그리하여, 회신된 레이블이 요청된 것과 동일한 것인지를 보기위한 검사가 수행되며, 만약 그렇지 않다면, 프로세스는 종료된다. "가장 가까운"의 의미에 대한 설명을 위해서는 아래를 참조하라.
단계(35): 레이블이 일치한다고 가정하면, 검색하는 컴퓨터는 하나의 프로세스(아래에서 상세히 설명됨)를 실행하는데, 이를 통해 그것은 제 2 네트워크를 이용하는 추가적인 주소를 검색하기 위해 Found 메시지에 의해 회신된 주소를 이용한다.
단계(36): 이후 이들 주소는 "포스팅" 컴퓨터로부터 코멘트를 포함하는 텍스트 파일을 검색하기 위해 사용된다.
제 2 가상 네트워크
이 네트워크의 목적은 한 그룹의 노드들을 단일 가상 네트워크로 자기-조직화하는 것인데, 단일 가상 네트워크는 뒤이어 그 그룹의 부분인 모든 노드를 발견하기 위해 사용될 수 있다. 주요 요건은 결과 네트워크가 모든 노드를 포함하고 있다는 것이다. 다른 요건은 네트워크를 생성하고 유지하는데 필요한 시스템 부하가 모든 노드에 걸쳐 동일하게 퍼져있다는 것이다. 이것은 가장 "공정(fair)" - 이는 상이한 사용자들이 그들의 자원을 분산된 애플리케이션에 줄 때 중요하다 - 할 뿐만 아니라 과부하로부터 시스템을 보호하는데 도움이 된다.
그러므로, 네트워크는 다음과 같은 특성을 갖는다:
●각 노드에 의해 유지되는 링크의 수는 바람직하게는 동일하다.
●모든 링크는 양방향이다. 그 결과, 노드에 대한 링크의 수 또한 각 노드에 대해 동일하다. 이 점은 중요한데, 왜냐하면 이는 노드가 수신하고 취급해야만 하는 메시지의 수에 영향을 미치기 때문이다.
●그것은 "플랫(flat)" 구조를 갖는다. 노드들은 자신들을 계층적으로 배치하지 않는다. 그 결과, 시스템 부하는 모든 노드에 걸쳐 동일하게 퍼진다.
각 노드의 구조
각 노드는 그것과 연관된 다음과 같은 데이터를 갖는다:
●다른 노드들에 대한 다수의 링크. 각 링크는 단순히 다른 노드의 주소이다. 상태는 각 링크와 연관되는데, 이 상태는 "확인(confirmed)"이거나 "미확인(unconfirmed)"일 수 있다. 각 노드는 단지 최대 개수의 링크를 유지할 수 있으며, 이는 시스템-범위(system wide) 파라미터 L에 의해 주어진다. L에 대한 일반 적인 값은 예를 들면 6이다. 이 파라미터가 모든 노드에 대해서 동일해야 하는 것은 필수적이지 않다; 그러나 그것을 다르게 한다고 해서 얻어지는 이익도 없다.
●스페어(spare) 링크, 혹은 간단히 스페어의 목록. 각 스페어는 단순히 다른 노드의 주소이다. 스페어는 가상 네트워크를 형성하기 위한 자기-조직화 프로세스에 의해 사용된다. 노드는 자신이 이미 그것에 링크되어 있거나, 또는 자신이 이미 최대 개수의 링크를 가지고 있기 때문에, 링크로서 추가할 수 없는 노드에 대해 통지받을 때 다른 노드들을 스페어로서 추가한다. 노드가 유지할 수 있는 스페어의 수는 또한 제한되어 있으며, 시스템-범위 파라미터 S에 의해 주어진다. S에 대한 일반적인 값은 예를 들면 3이다. 스페어 링크의 목록은 일반적으로 필수적이지 않으나, 국지적으로 수용될 수 없는 링크가 가상 네트워크에서 어떤 다른 포인트에 전파될 수 있도록 하는 추가적인 메카니즘을 제공하는데 매우 유용하다. 그러나 스페어 링크의 사용(또는 유사한 전파 메카니즘)은 수신되는 Notify 메시지가 항상 제 2 네트워크의 동일 노드(또는 매우 작은 개수의 노드들 중의 하나)에서 도착하는 시스템에서 필요하다.
메시지
네트워크 안으로 자기-조직화하고 어느 노드가 주어진 네트워크의 부분인가를 알아내기 위해서, 노드는 서로 메시지를 보낸다: 다음과 같은 메시지 유형이 제 2 네트워크에 의해 사용된다:
●AddLink 메지시: 다음을 포함함
●송신자의 주소
●수신자의 주소
이것은 하나의 노드(송신자)에 의해 다른 노드(수신자)로 전송되어 상호 링크를 요청한다.
●ChangeLink 메시지: 다음을 포함함
●송신자의 주소
●수신자의 주소
●주체(subject)의 주소
이것은 하나의 노드(X)에 의해 다른 노드(Y)로 전송되어 그것의 링크(Z) 중의 하나를 자신(X)에 대한 링크로 변경하도록 요청한다. 프로토콜은 X가 Z에 유사한 메시지를 전송하여 그것으로 하여금 Y에 대한 링크를 자신(X)에 대한 링크로 변경하도록 요청한다. 그리하여, 효과적으로, X는 현재 Y와 Z 사이의 링크에 자신을 삽입하도록 요청한다.
●LinkAdded 메시지: 다음을 포함함
●송신자의 주소
●수신자의 주소
이것은 노드에 송신자가 방금 그에 대한 링크를 추가했음을 통지하기 위해 사용된다.
●LinkError 메시지: 다음을 포함함
●송신자의 주소
●수신자의 주소
●주체의 주소
●에러 코드
이것은 노드에게 그것의 링크 중의 하나에 문제가 있는 것 같다는 것을 통지하기 위해 사용된다. 예를 들면, 주체 노드가 응답하지 않을 수 있으며, 또는 링크가 상호적이지 않을 수 있다. 그것은 에러 유형을 나타내는 에러 코드를 포함한다.
●Links 메시지: 다음을 포함함
●송신자의 주소
●수신자의 주소
●모든 링크의 주소
●참조 값
●Links 메시지는 또한 송신자 노드로부터의 어떤 다른 데이터를 포함할 수 있다. 웹 페이지 코멘트 예에서 이것은 연관된 코멘트의 주소이다.
이것은 송신 노드의 모든 현재 링크를 포함한다. 이것은 LinksQuery 메시지에 대한 응답으로 항상 전송된다. 참조는 응답되는 특정 질의를 구별하기 위해 사용될 수 있다.
●LinksQuery 메시지: 다음을 포함함
●송신자의 주소
●수신자의 주소
●참조 값
이것은 응답으로 Links 메시지(현재의 링크를 포함하는)를 전송하도록 노드에 요청하기 위해 사용된다.
●Notify 메시지: 다음을 포함함
●송신자의 주소
●수신자의 주소
●주체의 주소
●통지 레벨
이것은 노드에게 네트워크에 있는 다른 노드를 통지하기 위해 사용된다. 통지 레벨은 Notify 메시지의 전파를 제어하고 제한하기 위해 사용된다. 전술한 바와 같이, 송신자 주소는 사용되지는 않으나, 디버깅에 또는 만약 수신확인의 전송이 요구된다면 유용하다.
제 2 네트워크의 형성
시스템은 그룹 노드가 단일 가상 네트워크로 자기-조직화하도록 하며, 그리하여 만약 하나의 노드의 주소를 가지고 있다면 그 그룹에 있는 다른 노드들의 주소도 알 수 있다. 이 부분은 동일한 제 2 네트워크에 속해야 하는 노드들이 발견될 때 어떻게 신규 링크가 생성되는가를 설명한다. 두 개의 부분이 여기서 구별될 수 있다.
동일한 제 2 네트워크에 속해야 하는 노드들의 쌍의 발견. 노드들을 동일한 네트워크로 그룹핑하는 기준은 애플리케이션마다 다르다. 웹 페이지 주석 예에서, 동일한 URL에 대한 코멘트를 나타내는 모든 노드는 제 2 네트워크로 함께 그룹핑되 어야 한다. 함께 그룹핑되어야 하는 노드들이 어떻게 발견되는가 하는 것 역시 애플리케이션마다 다르다. 곧 예가 제시된다.
노드 발견의 결과로서 제 2 네트워크를 갱신/확장하는 것. 동일한 제 2 네트워크에 속해야 하는 노드들의 쌍이 발견될 때, 시스템은 결과로서 하나 이상의 신규 링크를 만들 수 있다. 신규 링크는 반드시 노드들의 쌍 사이에 있는 것은 아니며, 예를 들면 이들 두 노드가 링크되는 노드들 사이에 있을 수 있다. 신규 링크가 어떻게 생성되는가 하는 것은 후술될 것이다.
초기 Notify 메시지
제 2 네트워크의 조직은 예를 들면 그룹의 현존 및 신규 멤버를 식별할 수 있는 도착하는 'Notify' 메시지의 존재를 전제한다(비록 초기에, 어떠한 노드도 아직 그룹의 일부가 아니고, 반면에, 나중에, 자기-조직화 프로세스에서, 두 노드 모두 이미 그 그룹의 일부일 수 있음에도 불구하고). 제 2 네트워크에 속해야 하는 노드들을 그것에 통지하는 것은 시스템의 또다른 부분에 달려 있다. 이것이 행해질 수 있는 상이한 방법들이 있다. 여기서 우리는 우리의 앞선 국제특허출원에서 설명된 유형의 제 1 네트워크와 결합되어 제 2 네트워크가 사용될 때 이것이 행해지는 방법의 예를 제시한다. 웹 페이지 주석 예에서, 각각의 코멘트는 상응하는 웹 페이지의 URL에 기초한 레이블 아래에서 제 1 네트워크에서의 노드로서 스스로를 공표한다. 이러한 방식으로, 제 1 네트워크는 만약 존재하다면, 주어진 URL에 대한 코멘트를 룩업하기 위해 사용될 수 있다. 주어진 URL에 대한 모든 코멘트를 보여주기 위해, 각 코멘트는 또한 그것과 연관된 제 2 네트워크의 노드를 갖는다. 동일한 URL에 대한 코멘트에 상응하는 노드들은 그 URL에 특정한 제 2 네트워크로 자기-조직화된다. 이러한 방식으로, 일단 제 1 네트워크가 URL에 대한 단일 코멘트를 발견하기 위해 사용되면, 제 2 네트워크는 동일 URL에 대한 다른 코멘트를 발견하기 위해 사용될 수 있다.
그리하여 이와 같은 경우에, 다함께 그룹핑되어야 하는 제 2 네트워크의 노드들은 제 1 네트워크에서의 동일 레이블 하에서 각각 공표된다. 제 1 네트워크에서, 노드들이 링크를 만들고 유지하기 위해 주기적으로 'Push' 갱신을 실행하는 메카니즘이 아래에서 설명될 것이며, 이는 하나의 노드가 동일 레이블 하에서 공표되는 다른 노드를 인식하게 될 때마다, 필요한 Notify 메시지가 생성되도록 하는 변형을 포함한다.
Notify 메시지의 취급
노드가 아직 자신에 링크되지 않은 노드에 대한 Notify 메시지를 수신할 때, 다음 중의 하나가 일어날 것이다.
만약 수신 노드가 허용된 링크의 최대 개수를 이미 가지고 있다면, 그 노드는 대신에 그것을 스페어로서 추가한다(그 노드가 이미 그것을 스페어로서 가지고 있지 않을 때). 만약 그렇게 하는 과정에서, 그 노드가 자신의 최대 스페어 개수를 초과한다면, 그것은 하나의 스페어를 제거한다. 이후 그것은 또한 Notify 메시지를 그것이 제거한 스페어에 전달할 수 있다. 그것이 그렇게 하느냐 안 하느냐의 여부는 통지 레벨의 값에 의존한다. 통지 레벨은 메시지가 끝없이 전파되는 것을 방지하기 위해 매번 마다 감소된다.
그렇지 않은 경우, 만약 주체 노드가 아직 최대 수의 링크를 가지고 있지 않다면, 수신 노드는 두 노드 간의 상호 링크를 생성하려 시도한다. 이것은 도 2의 다이어그램(a 및 b)에 예시되어 있다. 여기서, L=3이며, 노드(1)는 노드(2)에 대한 Notify 메시지를 수신하였다. 두 노드 모두 단지 두 개의 링크만을 가지고 있기 때문에, 노드(1)와 노드(2) 사이의 링크가 생성된다.
그렇지 않은 경우, 주체 노드가 이미 최대 수의 링크를 가지고 있을 때, 두 노드 간의 상호 링크를 단순히 생성하는 것은 가능하지 않다. 그리하여, 일어나는 일은 수신 노드가 자신을 현존 링크에 삽입하려 시도하는 것이다. 이것은 도 2의 다이어그램(c 및 d)에 예시되어 있다. 여기서, 노드(2)와 노드(3) 간의 링크는 끊어지나, 두 개의 신규 링크-노드(1)와 노드(2) 사이의 링크 및 노드(1)와 노드(3) 사이의 링크에 의해 대체된다. 그리하여 총 링크 수는 하나가 증가된다. 그것은 노드(2)와 노드(3)가 이미 최대의 링크 수를 가지고 있었다 할지라도 작동한다. 그러나, 노드(1)는 이것이 성공하기 위해서는 두 개의 신규 링크를 생성할 수 있을 것이 요구되었다. 상기 프로세스는 도 3 내지 도 9의 순서도에서 보다 상세히 설명된다.
도 3은 노드가 도착하는 Notify 메시지를 어떻게 취급하는지를 도시한다. 여기서 신규 링크가 생성되어야 하는지의 여부와 만약 그렇다면 그 방법(신규 링크를 추가함으로써 또는 현존 링크를 두 개의 링크로 변경함으로써)이 결정된다. 만약 어떠한 신규 링크도 생성되지 않으면, 스페어의 세트가 갱신될 수 있고 다른 Notify 메시지가 보내질 수 있다.
단계(300)에서, Notify 메시지가 수신되는데, 이것은 그것을 보낸 노드의 주소(송신자), 주체 노드의 주소, 전파 제한치, 통지 레벨을 포함한다. 수신 노드는 우선 신규 링크를 설정할 공간을 가지고 있는지(301)와 그것이 이미 주체 노드에 대한 링크를 가지고 있는지(302)의 여부를 검사한다. 만약 그렇지 않다면, 그것은 주체와의 링크를 설정하기 위해 시도한다.
단계(303)에서, 그것은 주체 노드에 LinksQuery 메시지를 전송하며, 단계(304)에서 응답을 기다린다. 일단 응답 - Links 메시지- 이 수신되면, 그것은 다시 신규 링크를 설정할 수 있는 공간을 여전히 가지고 있는지를 검사한다(305)(그것이 그 동안에 어떤 다른 메시지를 수신하여 취급했고 그 결과 링크를 생성한 경우에). 만약 그렇다면, 이제 그것은 주체 노드가 신규 링크를 설정할 공간을 가지고 있는지를 검사하기 위해, 수신된 Links 메시지를 조사한다(306). 만약 그것이 가지고 있다면, 단계(307, 308)에서 수신 노드는 주체 노드의 주소를 자신의 링크 목록에 추가하며(그러나 "미확인"이라고 표시된), AddLink 메시지를 주체 노드로 전송한다.
그러나 만약 단계(306)에서 주체 노드가 추가적인 링크를 수용할 수 없는 것으로 판정되면, 수신 노드는 도 2를 참조하면서 전술된 바와 같이 자신을 현존 링크로 삽입하려 시도한다. 제 1 단계(309)는 수신 노드가 두 개의 링크에 대한 공간을 가지고 있는지의 여부를 검사하는 것이다: 만약 그렇지 않다면, 프로세스는 중단된다. 그러나 만약 그렇다면, 수신 노드는 수신된 Links 메시지에 있는 링크의 목록으로부터 랜덤하게 링크를 선택한다(그러나 수신 노드가 이미 그것에 대한 링크를 갖고 있는 노드는 아님). 즉, 주체 노드와 여기서 다른 것이라 지칭되는 다른 노드 사이의 링크. 수신 노드는 이후 다음의 동작을 통해 이 링크로 자신을 삽입하려 시도한다:
(311) 주체 노드의 주소(미확인)를 링크의 목록에 추가;
(312) 다른 노드의 주소(미확인)를 링크의 목록에 추가;
(313) 다른 것의 주소를 포함하는 ChangeLink 메시시를 주체 노드로 전송;
(314) 주체의 주소를 포함하는 ChangeLink 메시지를 다른 노드로 전송.
그러나 단계(301)에서 수신 노드가 링크를 추가할 공간을 가지고 있지 않다고 판정되면, 또는 단계(302)에서 그것이 이미 주체 노드에 대한 링크를 가지고 있다고 판정되면, 프로세스는 수신 노드가 스페어 링크의 목록에 링크를 추가해야 하는지의 여부를 조사한다. 단계(315)에서 만약 주체 노드가 이미 스페어 목록에 있다고 발견되면 프로세스는 종료된다. 단계(316)에서 스페어 목록에 링크를 추가할 공간이 있는지의 여부가 검사되며, 만약 그렇다면 이것은 단계(317)에서 정당하게 추가된다. 만약 그렇지 않다면, 스페어 링크 중의 현존하는 하나가 단계(318)에서 랜덤하게 선택되며, 단계(319)에서 제거되는데, 그리하여 그것은 단계(317)에서 주체에 대한 링크에 의해 대체될 수 있다. 또한, 가변적인 통지 레블은 단계(320)에서 감소되며, (단계(321)에서) 만약 그것이 0이 아닌 것으로 남아 있다면, 최초의 Notify 메시지 - 통지 레벨의 이러한 새로운 값을 가진 - 는 단계(322)에서 상기 랜덤하게 선택된 현존 링크에 의해 가리켜진 노드(대체라 지칭됨)로 전달된다.
이 프로세스의 결과는 가득찬 세트의 링크를 가지는 노드(A)가 주체 노드(B)에 링크할 것을 요청하는 Notify 메시지를 수신할 때, B의 주소는 스페어 링크로 기록되는 것이다. 이 링크는 A의 스페어 링크의 목록이 꽉 찰 때까지 잠재적인 것으로 남는다. 이후, 노드(C)에 링크할 것을 요청하는 차후의 Notify 메시지를 A가 수신하고, 노드(B)에 대한 스페어 링크가 단계(318)에서 선택될 때, 단계(322)에서 생성된 새로운 Notify 메시지는 사실상 자신으로부터 노드(C)에 대한 링크를 생성하라고 하는, 노드(B)에 대한 요청이다.
링크가 미확인이고 수신 노드가 주어진 시간 구간 동안에 확인을 수신(도 6을 참조하면서 아래에서 설명되는 바와 같이 LinkAdded 메시지에 의해)하지 못할 때, 상기 미확인 링크가 제거되는 메카니즘이 또한 제공된다 - 그러나 순서도에는 도시되지 않음 - . 다음을 주목하라. 즉, 수신 노드가 여전히 "미확인" 상태를 가지고 있을 때, 그것은 LinksQuery 메시지에 응답하여 이들 미확인 링크(물론 상기 확인된 것들뿐만 아니라)를 돌려보내며, 그리하여 그것이 링크를 설정하려 시도하고 있다고 확인하는 것을 다른 노드들에게 허용한다.
도 3에서, 단계(305, 309)에서의 "아니오"는 프로세스의 종료로 귀결된다: 그러나 만약 원한다면, 그것들은 단계(315)에서 시작하는 "스페어 링크" 프로세스로 라우팅될 수 있으며, 효율에 있어서 작은 개선을 갖는다.
단계(309 내지 314)에서, 노드는 주체 링크들 중의 하나를 효과적으로 끊으며 자신을 그 사이에 삽입한다. 다른 가능한 옵션은, 순서도에는 도시되지 않지만, 상기 노드가 자기 자신의 링크들 중의 하나를 끊어서(물론 그것이 적어도 하나의 링크를 가지고 있다고 가정함), 그 사이에 주체를 삽입하는 것일 것이다. 만약 구현된다면, 이 옵션은, 단계(301)에서의 "아니오" 직후에 시도될 것이다. 우선, 수신 노드는 주체 노드가 L-1보다 적은 링크를 가졌는지의 여부를 검사하고, 자기 자신의 링크들(다른 것 노드에 대한) 중의 하나를 랜덤하게 선택하고, 이것을 주체에 대한 미확인 링크로 대체하며, AddLink 메시지를 주체로 전송할 필요가 있을 것이다. 주체와 다른 것 사이의 양방향 링크를 확립하기 위해서, 그것은 (a) 주체가 자신의 링크 목록 미확인 링크로서 무조건적으로 다른 것을 추가하도록 요구하는 특별한 AddLink 메시지를 주체로 전송하며, (b) 제거될 옛 링크로서의 수신 노드와 추가될 신규 링크로서의 지명하는(naming) 주체를 갖는 특별한 ChangeLink 메시지를 다른 것으로 전송할 것이다. 이 옵션은 단계(309 내지 314) 외에, 또는 그 대신에 포함될 수 있다.
수신 노드가 자신의 링크들 중의 하나를 끊는 다른 옵션은 그것(우선 주체가 L-1개보다 적은 링크를 가지고 있음을 검증함)이 자신을 주체로서 지명하는 Notify 메시지를 주체로 전송하는 것일 것이다. 이것은 동일한 결과를 산출할 것이나, 조금 더 큰 메시징 오버헤드를 포함할 것이다.
도 4는 수신되는 ChangeLink 메시지를 노드가 취급하는 방법을 도시한다. 이들 메시지는 Notify 메시지를 수신한 노드(X)가 현존 링크를 두 개의 신규 링크로 변경하기를 원할 때 전송된다(도 2 참조). 수신 노드(Y)는 주체로서 노드(Z)를 갖는 Notify 메시지, 즉 노드(Z)에 대한 현존 링크를 노드(X)에 대한 것으로 대체할 것을 노드(Y)에게 요청하는 메시지를 단계(400)에서 수신한다. 만약 그것이 이미 X에 대한 링크를 가지고 있다면, 그것은 추가적인 행동을 취하지 않으며(단계 (401)), 반면에 만약 그것이 노드(Z)에 대한 링크를 사실상 소유하고 있지 않다면(단계(402)), 그것은 에러 메시지를 송신자 X에 전송한다(단계(403)).
모든 것이 잘 되었다고 가정하면, 그것은 LinksQuery 메시지를 송신자(X)로 전송하며(단계(404)), 송신 노드(X)로부터의 응답으로 Links 메시지를 기다리는데, 이는 주체 링크를 변경하기 전에 생성했어야 했던 두 개의 신규 링크를 후자가 정말로 생성했는지를 검사하기 위해서이다. 만약 이러한 검사가 성공적이라면(단계(406, 407)), 수신 노드는 Z에 대한 자신의 링크를 제거하며(단계(408)), 확인 링크로서 X를 추가하고(단계(409)), LinkAdded 메시지를 송신자(X)로 돌려보낸다(단계(410)).
도 5는 수신되는 AddLink 메시지를 노드가 취급하는 방법을 도시한다. 이들 메시지는 노드가 노드와의 신규 링크를 원할 때 전송된다(도 1 참조). 단계(501)에서 메시지가 수신된 후, 노드는 그것이 다른 링크를 위한 공간을 가지고 있는지의 여부를 단계(502)에서 검사하며, 만약 그렇지 않다면 에러 메시지를 단계(503)에서 돌려보낸다. 그렇지 않다면, 그것은 송신자에게 LinksQuery 메시지를 전송하고(단계(504)), 송신 노드로부터의 응답으로 Links 메시지를 기다리며(단계(505)), 그리하여 그것은 후자가 수신 노드에 대한 링크를 정말로 생성했는지를 단계(506)에서 검사할 수 있다. 만약 그렇지 않다면, 그것은 링크를 추가하기를 거부하고 종료하지만, 만약 그렇다면, 그것은 확인된 링크로서 송신자를 추가하고(단계(507)) LinkAdded 메시지를 확인에 의해 송신자로 돌려보낸다(단계(508)).
도 6은 수신되는 LinkAdded 메시지를 노드가 취급하는 방법을 도시한다. 이 들 메시지는 다른 노드가 ChangeLink 또는 AddLink 메시지에 대한 응답으로 수신 노드에 대한 링크를 수용했을 때 전송된다. 링크가 수용되었음을 나타내는 LinkAdded 메시지가 단계(600)에서 수신될 때, 그것의 상태는 단계(601)에서 "확인"으로 변경된다. 이후 링크는 그것이 신규 링크를 위해 변경되거나(ChangeLink 메시지에 대한 응답으로), 또는 상기 링크가 끊어질 때까지 유지될 것이다.
도 7은 수신되는 LinkError 메시지를 노드가 취급하는 방법을 도시한다. 이들 메시지는 수신 노드가 상호 링크를 요청한 후(ChangeLink 또는 AddLink 메시지에 의해) 수신 노드에 대한 링크를 노드가 생성할 수 없을 때, 또는 링크가 끊어진 것 같을 때(다른 쪽 끝에 있는 노드는 메시지에 응답하지 않고 있을 수 있거나, 또는 링크가 상호적이지 않을 수 있음) 전송된다. 클라이언트가 제 2 네트워크를 횡단할 때 외에는(후술되는 바와 같이) 끊어진 링크는 자기-조직 프로세스에 의해 검출되지 않는다.
단계(700)에서 메시지의 수신에 뒤이어, 수신 노드가 미확인 링크를 가지고 있는 노드에 대한 메시지인지를 단계(701)에서 판정한다. 만약 그렇다면, 그리고 단계(702)에서, 요청된 링크를 생성하는 것에 대한 실패를 나타내는 에러 코드를 그것이 운반하고 있다면, 링크는 단계(703)에서 제거된다. 그러나 만약 수신 노드가 미확인 링크를 가지고 있는 노드에 대한 메시지가 아니라면, 수신 노드는 주체에 LinksQuery 메시지를 전송하고(단계(704)), 응답으로 Links 메시지를 기다리며(단계(705)), 단계(706)에서 응답을 검사하여 주체가 자신에 대한 링크를 가지고 있는지를 검사하고, 만약 그렇지 않다면 단계(703)에서 주체 노드에 대한 링크를 제 거한다.
도 8은 수신되는 LinksQuery 메시지를 노드가 취급하는 방법을 도시한다. 이들 메시지는 다른 노드가 수신 노드의 링크들을 알기를 원할 때 전송되며, 그러므로 후자는 단계(800)에서 그것을 수신할 때 단계(801)에서 Links 메시지로써 응답한다.
도 9는 수신되는 Links 메시지를 노드가 취급하는 방법을 도시한다. 그것이 취급되는 방식은 상응하는 LinksQuery 메시지가 왜 전송되었는지에 전적으로 의존한다. 이것은 다른 도면 중에서도 도 3, 도 4, 도 5, 및 도 7에 도시되어 있는 바와 같이, 상이한 이유 때문에 일어난다. 그리하여, 발생하는 일은 다음과 같다. 즉, LinksQuery 메시지가 전송될 때, 국지적으로 고유한 기준이 주어지며, 메시지 취급자는 그 기준과 연관된다. 이후, 링크 메시지가 수신될 때(단계(900)), 적절한 메시지 취급자가 식별되며 메시지는 단계(902)에서 상기 적절한 메시지 취급자로 전달되어 그 메시지는 올바른 방식으로 취급된다.
물론, 예를 들면 수신 노드가 셧 다운했기 때문에 LinksQuery에 대한 응답으로 어떠한 Links 메시지도 수신되지 않는 일도 발생할 수 있다. 그러므로, 만약 주어진 기간 이후에, 어떠한 Links 메시지도 수신되지 않으면, 상응하는 메시지 취급자는 제거된다. 이것이 비록 여기서 설명된 순서도 중의 어디에도 도시되지는 않았지만, 그것은 링크 질의가 시간이 초과될 때, 어떠한 추가적인 행동도 취해지지 않으며 전체 순서도는 "완료"됨을 단순히 의미한다.
노드의 검색
제 2 네트워크의 단일 노드의 주소가 주어질 때, 그 네트워크에 있는 다른, 잠재적으로는 모든 노드를 발견하는 것이 가능하다. 이것이 행해질 수 있는 방법은 매우 간단하다. 알려진 노드에 그것의 모든 링크를 요청하는 LinksQuery 메시지를 전송한다. 노드는 자신이 링크되어 있는 모든 노드의 주소를 포함하는 Links 메시지로써 응답한다. 이제 이들 노드의 각각과 차례로 접촉하여 그것들의 링크와 그리하여 그들의 모든 링크의 주소를 얻을 수 있다. 이러한 방식으로 계속함으로써, 상기 네트워크를 횡단할 수 있으며, 점차적으로 그것이 포함하고 있는 모든 노드를 발견할 수 있다.
도 10은 이 프로세스를 보다 상세히 도시한다. 이것은 도 1A에 도시된 검색 단계(35)에서 사용된 프로세스임이 이해될 것이다. 성공적으로 접촉된 모든 알려진 노드의 주소는 "확인" 목록에 놓여진다. 데이터는 동시에 검색될 수 있다. "웹 페이지 코멘트" 예의 경우에, 데이터의 관련 아이템은 코멘트의 주소이며, 이것은 역시 노드 주소와 함께 확인 목록에 놓여진다. 확인 목록은 도 1A에서의 "검색" 코멘트 단계(36)를 위해 필요한 주소들을 제공한다. 반면에, "미확인" 목록은 아직 접촉되지 않은 알려진 노드들의 주소를 포함한다. 최종적으로, "알려진" 목록은 모든 알려진 노드의 주소를 포함한다. 그것은 "확인" 및 "미확인" 목록에 있는 모든 주소를 포함하며, 또한 접촉되었으나 응답하지 않는 노드들의 주소도 포함한다. 알려진 목록은 또한 그것에 입력된 각 주소에 대해서, 소스 주소 - 즉, 에러 보고용이며, 커런트(current) 포인터가 가리키는 주소가 얻어진 리스트를 소유하는 노드의 주소를 포함하기 위한 추가적인 필드를 갖는다.
어디서 검색 프로세스가 일어나느냐 하는 것은 중요한 것이 아니다: 그것은 노드일 수 있으며, 또는 다른 곳일 수 있다. 단계(1000)에서, 노드 주소를 검색하라는 요청은 출발 주소, 즉 해당 가상 네트워크에 속하는 것으로 판정된 하나의 노드의 주소와 함께 수신된다. 단계(1002)에서, 주소 포인터, 커런트는 초기에 이 주소로 설정되며, 반면에 제 2 주소 포인터, 소스(source)는 초기에 널(null)이다(단계(1003)).
단계(1004, 1005)에서 LinksQuery 메시지는 커런트에 의해 주어진 주소로 전송되며 응답이 기다려진다. Links 메시지가 수신될 때, 커런트는 Links 메시지로부터의 코멘트 주소와 함께 확인 목록에 추가된다(단계(1006)).
단계(1007)에서, 서브-프로세스가 삽입되며, 이는 Links 메시지에 포함된 주소들의 각각에 대해서 수행된다. 만약 상기 주소가 알려진 목록에 이미 있다면(단계(1008)), 상기 프로세스는 다음 주소로 나아간다. 그렇지 않다면 주소는 알려진 목록과 미확인 목록에 추가된다(단계(1009, 1010)). 또한 커런트에 있는 주소는 추가된 주소의 소스로서, 알려진 목록으로 들어간다(단계(1011)).
일단 이러한 서브-프로세스가 완료되면, (그리고 미확인 목록이 비어 있는 경우가 아니라면, 이 경우에 프로세스는 단계(1012)에서 종료됨) 단계(1013)에서 하나의 주소가 미확인 목록으로부터 랜덤하게 선택된다. 이 주소는 신규 커런트 주소가 되며, 미확인 목록으로부터 삭제된다. 다음 단계(1014)는 알려진 목록에서 커런트를 찾아 그것과 연관된 소스 주소를 검색하고 이것을 소스 포인터에 집어넣는다. 랜덤 선택이 필수는 아니다. 예를 들면, 커런트는 미확인 목록에 있는 "가 장 오래된(oldest)" 노드로 선택될 수 있으며, 또는 목록은 다른 기준(예를 들면, 노드의 주소들)에 의해 분류될 수 있고, 커런트는 항상 이 목록에서의 "첫 번째" 노드일 수 있다. 그러나, 커런트의 랜덤 선택은 이점을 갖는다. 그것은 시스템에 부하를 분산시키며(특히 만약 모든 노드가 항상 검색되지는 않는다면), 또한 네트워크의 링크들의 테스트를 분산시켜, 끊어진 링크가 보다 빨리 발견된다.
프로세스는 단계(1004)로부터 다시 계속되며 미확인 목록이 빌 때까지 - 즉, 어떠한 추가적인 신규 주소도 발견될 수 없을 때까지 반복된다.
상기 검색 프로세스의 부수적인 효과는 끊어진 링크를 발견한다는 것이다. 예를 들면, 노드가 응답하지 않거나, 또는 링크가 상호적이지 않은 일이 일어날 수 있다. 후자는 노드(A)가 노드(B)에 링크하지만, 노드(B)는 자신의 링크 테이블에 노드(A)를 가지고 있지 않은 경우이다. 끊어진 링크가 발견될 때, 그 링크의 "소스"인 노드는 LinkError 메시지에 의해 통지된다. 도 7이 이미 도시하고 있듯이, 이후 소스 노드는 그 링크를 스스로 검사할 수 있으며(에러 보고의 정확성을 확인하기 위해) 결과로서 그 링크를 제거할 수 있다. 응답하지 않는 노드는 단계(1005)에서, 설정된 타임-아웃 기간 내에서 Links 메시지를 수신하는 것에 대한 실패에 의해 인식되며, 단계(1015)에서, 커런트의 주소와 "응답 없음" 에러 코드를 포함하는 에러 메시지가 전송되며, 그 결과 제어는 단계(1012)로 돌아간다. 링크의 비-상호성은 커런트를 위해 수신된 Links 메시지가 소스의 주소를 포함하고 있는지를 판정하기 위한 단계(1016)에서의 테스트에 의해 인식된다: 만약 그렇지 않다면, 커런트의 주소와 "상호적이지 않음" 에러 코드를 포함하는 에러 메시지가 소 스로 전송되며(단계(1017)), 검색 프로세스는 전과 같이 계속되는데, 왜냐하면 치유 행동을 하는 것(도 7의 프로세스에 따라)은 소스 노드의 책임이기 때문이다. 단계(1016)에서의 테스트는 만약 소스가 널이라면 생략된다.
비록 다수의 확인 노드가 Links 메시지에 응답하지 않는 노드에 링크할지라도, 그 링크에 첫 번째로 공헌한 노드(소스 노드)만이 "응답 없음"이 있었다고 통지됨을 주목하라. 이것은 부분적으로는 그것이 순서도를 더 쉽게 이해하게 만들기 때문이다. 그러나, 다른 실용적인 이점이 있다고 주장될 수 있다. 일시적으로 과부하이기 때문에 노드가 (제시간에) 응답하지 않는 경우일 수 있다. 이 경우, 에러가 있는지를 테스트하기 위해 그것에게 LinksQuery 메시지를 다수의 노드가 동시에 전송하는 것을 원하지 않을 수도 있다(도 7에서와 같이). 필요하다면, 어떤 방식으로든, 끊어진 링크가 발견될 때 그러한 링크에 의해 영향받는 모든 알려진 노드에게 통지하도록 노드 검색 알고리즘을 갱신하는 것은 간단하다.
도 10에서 노드 검색은 모든 알려진 노드가 접촉될 때까지 중단되지 않는다. 실제에 있어서, 그 프로세스를 좀 더 빨리 종료하기를 원할 수 있다. 예를 들면, 만약 사용자가 파일을 다운로드할 위치를 찾고 있다면, 그 혹은 그녀에게 예를 들면 수천개 대신에 10개의 잠재적인 다운로드 주소에 대한 선택을 제공하는 것이 충분할 수 있다.
도 10에 있는 알고리즘은 전적으로 직렬인 것으로 도시되어 있다. 한번에 단지 하나의 노드만이 접촉된다. 다른 LinksQuery 메시지는 이전 것에 대한 응답이 수신된 후(또는 타임아웃이 된 후)에라야 전송된다. 그러나 실제에 있어서는, 다수의 LinksQuery 메시지를 병렬로 내보내어 검색 속도를 높이는 것을 선호한다. 또한 상자(1000)에서 다수의 검색 요청이 도 10의 프로세스의 다수 인스턴스에 의해 동시에 취급되는 경우일 수도 있다.
토론
자기-조직화의 성공도
제 2 가상 네트워크의 목적은 다수의 미연결 네트워크와는 반대로, 단일 네트워크로 다함께 그룹핑되어야 하는 모든 노드를 자기-조직화하는 것이다. 이것이 성공하느냐 하는 것은 최초의 Notify 메시지가 어떻게 생성되는가에 크게 달려있다. 예를 들면, 만약 다함께 그룹핑되어야 하는 12개의 노드의 일 그룹이 있고, 이 그룹 중에서 단지 5개의 노드만이 이 5개의 노드로 이루어지는 그룹에 있는 다른 노드에 대한 통지를 수신하고, 7개의 다른 노드 중의 어떤 것도 이들 5개의 노드 중의 어떤 것에 대해서도 통지받지 않는다면, 노드들이 단일 네트워크로 자기-조직화하는 것은 불가능하다. 대신에, 그것들은 5개의 노드로 이루어지는 네트워크와 7개의 노드로 이루어지는 네트워크, 이렇게 두 개의 분리된 네트워크로 배열된다. 그러나, 노드들이 단일 네트워크로 자기-조직화하는 것이 불가능하게 되는 방식으로 최초 통지가 이루어지지 않는 한, 자기-조직화 프로세스는 노드들이 단일 네트워크로 자기-조직화되지 않을 가능성이 없도록 된다. 자기-조직화가 단일 네트워크로 귀결되는 확률의 계산은 복잡하며 최초 통지가 생성되는 메카니즘에 의존한다. 그러나, 시뮬레이션에서 우리는 다수의 상이한 최초 통지 메카니즘을 실험하였으며, 그리하여 지금까지 노드들은 단일 네트워크로 자기-조직화하는 것이 결코 실패하지 않았다.
악의적 노드(malicious nodes)에 대한 완강성(robustness)
지금까지 모든 노드가 프로토콜을 준수한다고 가정하였다. 그러나, 규칙에 따라 작동하지 않는 악의적 노드가 있을 가능성이 있다. 그것들은 다른 노드에 의해 유지되는 링크를 끊으려 시도하거나 및/또는 자신들에 대한 너무 많은 링크를 얻으려 시도할 수 있다. 전체 시스템은 그러한 남용에 대해 가능한 한 완강할 필요가 있다.
지금까지 설명된 시스템은 이미 악의적 노드에 대해 상당히 완강하다. 그것은 각 노드가 자신의 링크를 변경하기 전에 다른 관련 노드에 의해 유지되는 링크를 LinksQuery-Links 메시지 교환으로써 항상 검사하기 때문이다. 예를 들면, 노드가 AddLink 메시지를 수신할 때(도 3 참조), 우선 그것은 송신자를 자신의 링크로서 추가하기 전에 송신 노드가 정말로 그것에 링크했는지를 검사한다.
그러나, 시스템은 여전히 상대적인 약점을 갖는다. 노드는 그것들이 Links 메시지에 응답할 때 쉽게 "거짓말"을 할 수 있다. 종종 노드는 수신 노드가 그것에 링크되어 있는지를 검사하기 위해 LinksQuery 메시지를 전송한다. 이를 알기 때문에, 수신 노드는 그것이 Links 메시지의 송신자를 링크로서 항상 포함하고 있다는 식으로 수정된 가짜 Links 메시지로써 응답할 수 있다. 이것은 노드가 그것에 링크된, 허용 개수 L보다 훨씬 더 많은 노드를 가지는 것을 가능하게 한다. 결과적으로, 이는 시스템에서 "양호한" 링크의 전체 개수를 감소시킨다.
다행히도, 이러한 약점에 대처하는 방법이 있다. 이것은 만약 노드가 프록시 노드를 통해 그것들의 LinksQuery를 전송한다면 행해질 수 있다. 이들 프록시는 노드가 질의를 전송하기를 원할 때마다 랜덤하게 선택된다. 예를 들면 각 노드는 그것이 현재 프록시로서 링크하고 있는 노드들을 사용할 수 있다. 이러한 방식으로, 다른 노드(B)의 링크를 알기를 원하는 노드(A)는 노드(B)에 알려지지 않는데, 왜냐하면 그것이 수신하는 LinksQuery 메시지는 프록시 노드(C)로부터 오며, 노드(B)가 노드(C)로부터 수신하는 메시지는 노드(A)를 전혀 참조하지 않기 때문이다. 그러므로, 노드(B)가 전체 시스템에 큰 영향을 미치는 가짜 메시지를 전송할 유효한 방법은 없다.
물론, 악의적 프록시의 효과가 무엇인지에 대한 의문은 있다. 비록 명백히 악의적 프록시가 해로운 효과를 가지고 있지만(프로토콜을 준수하지 않는 노드가 어느 정도 성능에 영향을 미치는 것은 불가피함), 이 효과는 제한되어 있다. 그 이유는 전달하도록 요청받은 LinksQuery를 그것들은 단지 악의적으로만 취급할 수 있으며, 이들 요청은 모든 노드에 걸쳐 대략 동등하게 퍼지기 때문이다. 반면에, 프록시가 사용되지 않을 때, 악의적 노드는 매우 적극적이 됨으로써 대혼란을 야기할 수 있다. 만약 이들 노드가 많은 위조 AddLink 메시지를 전송하고, 그것들이 뒤이어 전송하는 많은 Links 메시지를 위조한다면, 전체 시스템에 대한 효과는 훨씬 더 클 것이다.
제 1 가상 네트워크
제 1 네트워크는 우리의 전술한 국제특허출원에 상세히 설명되어 있다. 여기서는, 기본 검색 및 자기-조직화 메카니즘이 설명될 것이며, 이와 함께 제 2 네 트워크의 자기-조직화를 구동하기 위한 Notify 메시지의 생성을 가능하게 하는 수정도 설명될 것이다.
우선, 이 메카니즘에 의해 사용되는 가상 좌표 공간의 개념을 설명할 필요가 있다. 각 노드는 레이블을 가지고 있음이 이미 언급되었다. 레이블은 가상 공간에서의 좌표로 번역된다. 공간은 1, 2, 또는 더 높은 차원일 수 있다. 정밀한 번역 메카니즘이 매우 결정적인 것은 아니다: 1차원 공간에 대해서 2진수로 간주되는 레이블은 좌표로 직접 사용될 수 있다. 2 이상의 차원에 대해서 바람직한 방법은 비트의 스트링으로 간주되는 레이블이 두 개 이상의 동등한 그룹으로 분할되어, 2진수로 간주되는 각 그룹이 좌표 중의 하나를 형성하는 것이다. 각 좌표(또는 1차원 공간에서는 그 좌표)는 범위 [0,1] 내에 놓이도록 스케일링된다.
이 가상 공간에서 두 개의 레이블 사이의 거리는 (비록 시티 블럭 거리(종종 맨하탄 거리라 불림)와 같은 다른 거리가 필요하다면 사용될 수 있지만) 두 개의 좌표 세트 사이의 유클리드 거리이다. 좌표 공간은 랩핑(wrap)하며, 그리하여 x-방향으로 x1과 x2 사이의 거리는
Min{(1-|x1-x2|),|x1- x2|}
이며, 2차원에서 점(x1, y1)과 (x2,y2) 사이의 유클리드 거리는
√{[Min{(1-|x1-x2|),|x1- x2|}]2+[Min{(1-|y1-y2|),|y1- y2|}]2}
이다.
또한 우리는 이 시점에서 각 노드는 다른 노드들에 대한 링크를 나타내는 다수의 엔트리를 갖는 목록(22)(도 1)을 가지고 있음을 상기한다. 각 엔트리는 레이블과 그러한 다른 노드의 주소로 구성된다. 최초에 이 목록은 비어 있으며, 그러므로 노드는 유사한 제 2 부트스트랩 링크 - 즉, 초기에 그것이 네트워크의 다른 노드와 접촉할 수 있기 위한 몇 개의 링크(일반적으로 4)의 목록을 갖는다. 목록(22)에 있는 링크(단거리 링크라 지칭됨)들 외에, 또한 노드는 계층적으로 배치된 추가적인 그러한 목록들, 및/또는 장거리 링크의 목록을 가질 수 있다. 이들은 우리의 앞선 국제특허출원에 설명되어 있으나, 그것들은 선택적이기 때문에 여기서는 설명되지 않는다.
메시지
우선, 다음의 메시지가 사용된다(다음을 주목하라. 즉, 제 1 가상 네트워크에서 사용되는 메시지는 제 2 가상 네트워크에서 사용되는 메시지와 상이하며 완전히 독립적이다).
FIND 메시지는 노드 룩-업을 개시하고 이행하며 "PULL" 갱신을 지원하기 위해 사용된다. 이것은 다음을 포함한다:
●타깃 노드의 레이블
●질의를 개시한 노드의 주소
FOUND 메시지는 질의의 결과를 회신하기 위해 사용된다. 이것은 다음을 포함한다:
●타깃 노드의 레이블
●발견된 노드의 레이블
●발견된 노드의 주소
●발견된 노드와 연관되는 제 2 네트워크의 노드의 주소
●애플리케이션에 특정한 데이터 - 이 경우에는, 발견된 노드와 연관되는 코멘트 노드의 주소
PUSH 메시지는 노드의 레이블을 다른 노드들에 선전한다. 이것은 다음을 포함한다:
●주체 노드의 레이블
●주체 노드의 주소
●타깃 노드에 도달하기 위해 가야할 홉(hop) 수
NOTIFY 메시지는 push-갱신을 전파하기 위해 사용된다. 이것은 다음을 포함한다:
●주체 노드의 레이블
●주체 노드의 주소
검색
도 11은 수신되는 Find 메시지를 각 노드가 취급하는 방법을 도시한다. 원칙적으로, 수신 노드는 Find 메시지에서 식별된 타깃 노드에 자기 자신보다 더 가까운 노드를 찾는데, 만약 성공한다면 Find 메시지를 전달한다. 만약 성공하지 못한다면, 그것은 자신의 주소와 레이블을 회신한다. 그것은 다음의 단계를 수행함으로써 이것을 한다:
단계(1100): 노드는 타깃 노드의 레이블과 개시 노드의 주소를 포함하는 Find 메시지를 수신한다;
단계(1105): 노드는 타깃 노드의 레이블을 레이블 공간에서의 좌표로 번역하며, 그것이 기록한 모든 링크(노드) 중에서 어느 것이 레이블 공간에서 타깃 노드에 가장 가까운지를 계산한다. 관련 노드는 최근접 노드로 지정된다;
단계(1110): 노드는 자신의 좌표와 타깃 노드의 좌표 사이의 거리와, 최근접 노드의 좌표와 타깃 노드의 좌표 사이의 거리를 비교한다;
단계(1115): 만약 자신의 좌표와 타깃 노드의 좌표 사이의 거리가 더 작다면(또는 같다면), 노드는 네트워크(10)를 통해서, 자신의 레이블과 주소를 포함하는 Found 메시지를 개시 노드로 전송한다;
단계(1120): 만약 최근접 노드의 좌표와 타깃 노드의 좌표 사이의 거리가 더 작다면, 노드는 Find 메시지를 최근접 노드로 전달한다.
단계(1115)에서 회신된 노드의 주소는 타깃 레이블을 갖는 노드의 주소이거나, 또는 레이블 공간에서 그것에 가까운 노드이다. 회신된 레이블이 타깃 레이블과 일치하지 않을 때, 그것은 타깃 노드가 존재하지 않거나 또는 가상 네트워크가 충분히 자기-조직화되지 않았다는 것을 의미할 수 있다.
Push
각 노드는 Push 갱신을 자발적으로 개시한다. 예를 들면, 각 노드는 주기적으로 Push 갱신 프로세스를 시작할 수 있다. Push 갱신에서, 노드는 랜덤한 일련의 노드들을 통해, 자신의 레이블과 주소를 갖는 Push 메시지를 내보내는데, 이때 그 일련의 길이에 대한 제한을 설정한다. 그 일련에서의 마지막 노드는 개시 노드 쪽으로 Notify 메시지를 다시 전송한다. 도 12, 13, 14는 이 프로세스의 다양한 부분을 도시한다.
도 12는 노드가 Push 갱신을 어떻게 개시하는지를 도시하는데, 다음의 단계를 이용한다:
단계(1200): 노드는 부트스트랩 링크들 중에서 랜덤하게 링크를 선택하며, 선택된 링크에 의해 식별되는 노드의 주소를 다음 메시지를 위한 포워드 주소로서 입력한다;
단계(1205): 노드는 Push 메시지에, 가야할 홉 필드에 대해 작은 랜덤 양수를 입력한다;
단계(1210): 노드는 자신의 레이블과 주소를 주체 노드의 그것들로서 Push 메시지에 입력하며, 네트워크(10)를 이용하여, 포워드 주소에 있는 노드로 Push 메시지를 전송한다.
도 13과 14는 단거리 링크가 갱신되는 방법을 도시한다. Push 메시지는 단거리 링크를 갱신하기 위해서 Notify 메시지와 함께 사용된다. 이 갱신에는 두 단계가 있다. 제 1 단계에서, 각 노드는 수신된 대로의 메시지에 있는 가야할 홉에 있는 값이 "0"일 때까지 Push 메시지를 랜덤하게 전달한다. 만약 가야할 홉에 있는 값이 "0"이면, 수신 노드는 Notify 메시지를 전송함으로써 Push 갱신의 제 2 단계를 시작할 것이다. 제 2 단계에서, Notify 메시지는 가상 공간에서 주체 노드의 레이블에 점차적으로 더 가까운 레이블을 갖는 노드로 연속적으로 전달된다. 만약 더 가까운 레이블을 갖는 어떠한 노드도 발견될 수 없다면, 가장 늦게 발견된 노드에 대한 링크는 필요하다면 갱신된다. 이것은 예를 들면 그것이 아직 확립된 단거리 링크를 가지고 있지 않기 때문에, 주어진 주체 노드를 발견할 수 없을 때 항상 그러하다. 이후, 가장 늦게 발견된 노드는 링크 세트를 잠재적으로 개선할 수 있는 노드들에게 추가적인 Notify 메시지를 또한 전송한다.
도 13을 참조하면, 수신되는 Push 메시지를 다루는 Push 갱신의 제 1 단계는 다음 단계를 포함한다:
단계(1300): 노드는 Push 메시지를 수신한다. Push 메시지는 주체 노드로서의 개시 노드의 레이블과 주소를 포함할 것이며, 가야할 홉 필드에 값을 가질 것이다;
단계(1305): 수신 노드는 부트스트랩 링크들 중에서 랜덤하게 링크를 선택하며, 선택된 링크에 의해 식별되는 노드의 주소를 다음 메시지를 위한 포워드 주소로서 입력한다;
단계(1310, 1315): 수신 노드는 가야할 홉 필드에 있는 값을 1 만큼 감소시키고, 가야할 홉에 대한 감소된 값이 여전히 0 이상인지를 검사한다;
단계(1320): 만약 감소된 값이 여전히 0 이상이라면, 노드는 입력한 포워드 주소로 Push 메시지를 전달한다;
단계(1325): 만약 값이 0이라면, 노드는 대신에 주체 노드로서의 개시 노드의 레이블과 주소(수신된 Push 메시지에 주어진)를 Notify 메시지에 입력하고 그것이 입력한 포워드 주소로 Notify 메시지를 전송한다.
도 14를 참조하면, Notify 메시지를 처리하는 Push 갱신을 다루는 제 2 단계는 다음 단계를 포함한다:
단계(1400): 노드는 주체 노드로서의 노드의 레이블과 주소를 포함하는 Notify 메시지를 수신한다;
단계(1401): 수신 노드는 Notify 메시지의 주체가 수신 노드와 동일한 레이블을 가지고 있는지를 검사한다;
단계(1402): 만약 그렇다면, 수신 노드는 Notify 메시지의 주체가 수신 노드와 동일한 주소를 가지고 있는지를 검사한다. 그 경우 그것은 더 이상의 행동을 취하지 않는다.
그러나 만약 Notify 메시지의 주체가 수신 노드와 동일한 레이블 그리고 상이한 주소를 갖는 노드라면, 두 개의 이벤트가 발생한다. 우선 (단계(1403)) 수신 노드는 수신 노드의 단거리 링크의 목록으로부터 랜덤하게 선택된 노드를 주체로서 네이밍하는 Notify 메시지를, 수신되는 Notify 메시지의 주체 노드로 전송한다. 다음으로, 단계(1404)는 제 2 네트워크에 의한 행동을 위한 Notify 메시지의 생성을 야기한다. 그러나, 수신 노드는 그러한 메시지를 직접 생성할 수는 없다. 일반적으로, 우리는 통신 네트워크를 통해서, 상이한 가상 네트워크 사이에 메시지를 전송하는 것을 피하는 것을 선호하는데, 주요 문제는 수신 노드가 제 2 네트워크의 자신의 노드의 주소뿐만 아니라 주체 노드와 연관된 제 2 네트워크의 노드의 주소도 필요로 할 것이라는 점이다. 수신 노드는 이 주소를 가지고 있지 않다. 그러므로, 2단계로 이루어지는 프로세스가 사용된다.
우선, 수신 노드는 수신되는 Notify 메시지에서 주체로서 특정된 제 1 네트워크의 노드로 특별한 CrossNotify 메시지를 전송한다. 이 메시지는 다음을 포함한다:
●수신 노드(즉, 수신되는 (제 1 네트워크) 메시지를 수신한 노드)의 주소로 설정된 송신자 주소;
●수신되는 Notify 메시지에 포함된 주소로 설정된 수신자(또는 목적지) 주소;
●수신 노드와 연관된 제 2 네트워크의 노드의 주소로 설정된 주체 주소.
첫 번째 2개의 주소는 제 1 네트워크 상의 노드의 주소이며, 세 번째 주소는 제 2 네트워크 상의 노드의 주소임을 주목하라.
다음으로, CrossNotify 메시지를 수신하는 제 1 네트워크의 노드는, 사실상, 제 2 네트워크의 연관 노드로 그것을 전달한다. 필요하다면, 전달하는 노드는 제 2 네트워크에서 사용되는 포맷으로 메시지를 재포맷할 수 있으며, (제 1 네트워크) 수신자 주소를 제 2 네트워크의 연관 노드의 주소로 대체한다. 이후 메시지는 도 3에 도시된 것과 똑같은 방식으로 처리될 것이다. "사실상"이라고 말하는 이유는 실제에 있어서 우리는 CrossNotify 메시지를 수신하는 제 1 네트워크의 노드가 CrossNotify 메시지의 주체 필드에 특정된 주소를 포함하는 간단한 국지적 메시지를 제 2 네트워크의 연관 노드로 단지 전송하는 것을 선호하기 때문이다. 그 경우, 도 3의 프로세스는 적절한 값으로 통지레벨을 설정하는 단계를 포함하도록 수정될 것이다.
이 프로세스는 도 15를 참조하면서 예로서 설명될 것인데, 여기서 상자들은 노드를 나타내고 화살표는 메시지를 나타낸다. 제 1 네트워크의 노드(P1)가 도 14의 단계(1400)에서, 주체 로서의 제 1 네트워크의 노드(P2)의 레이블(LP2)과 주소(AP2)를 포함하는 Notify 메시지를 수신한다고 가정하자. 노드(P1)에서, 주체 노드는 P1과 동일한 레이블(즉, LP1=LP2) 및 상이한 주소(AP1≠AP2)를 가지고 있음이 인식된다(도 14에서 단계(1401, 1402)). 노드(P1)는 자신의 제 2 네트워크 노드(S1)의 주소(AS1)를 알며, 송신자 주소(AP1), 수신자 주소(AP2) 및 주체 주소(AS1)를 갖는 CrossNotify 메시지를 생성한다(도 14에서 단계(1404)). 이 메시지는 제 1 네트워크의 노드(P2)에서 수신되고 이것은 주소(AS1)를 갖는 국지적 Notify 메시지를 제 2 네트워크의 연관 노드(S2)로 전송한다. 또는, 제 2 네트워크의 노드(S2)는, 국지적 Notify 메시지를 수신할 때, 도 3의 프로세스에 따라 스스로 링크를 생성하는 대신에, 스스로를 주체로 네이밍하며, 노드(S1)로 전송하는 (제 2 네트워크의) 추가적인 Notify 메시지를 생성한다(도 12에 점선으로 도시됨). 이후 Notify 메시지는 도 3의 프로세스를 사용하는 노드(S1)에서 처리된다. 이 옵션은 추가적인 메시지를 포함하나 다음과 같은 이점을 갖는다. 즉, 도 3의 프로세스가 실행될 때, Notify 메시지는 그 메시지의 주체 필드에 있는 주소를 소유하는 노드에 의해 실제로 전송되었고, 주체 노드는 그리하여 여전히 존재하는 것으로 내재적으로 확인되었다.
이제 도 14로 되돌아가면:
단계(1405): 수신 노드는 주체 노드의 레이블을 좌표로 번역하며, 그것이 기록한 단거리 링크들 중의 어느 것이 가상 공간에서 주체 노드의 좌표와 가장 가까운 좌표를 갖는 노드 레이블로 귀결되는지를 계산한다. 관련 노드는 최근접 노드로 지정된다;
단계(1415): 수신 노드는 자신의 좌표와 주체 노드에 대한 좌표 사이의 거리와, 최근접 노드에 대한 좌표와 주체 노드에 대한 좌표 사이의 거리를 비교한다;
만약 단계(1415)에서, 수신 노드와 주체 노드 사이의 거리가 동일하거나 더 작은 것으로 발견되면, 수신 노드는 주체 노드의 레이블과 주소를 자신의 단거리 링크 세트에 링크로서 추가하며(단계(1420): 이 프로세스는 도 16을 참조하면서 아래에서 추가로 논의된다), 수신 노드의 레이블과 주소를 포함하는 Notify 메시지를 주체 노드로 전송하고(단계(1430)), 주체 노드의 레이블과 주소를 포함하는 Notify 메시지를 최근접 노드로 전송한다(단계(1435)).
만약 단계(1415)에서, 최근접 노드와 주체 노드 사이의 거리가 더 크다고 발견되면, 수신 노드는 단계(1435)로 되돌아가 주체 노드의 레이블과 주소를 포함하는 Notify 메시지를 최근접 노드로 전송한다.
도 16은 노드가 자신의 단거리 링크를 갱신할 때 행동하는 방식을 상세히 도시한다. 그것은 신규 링크를 자신의 단거리 링크에 추가하며 이 링크에 의해 대체되는 모든 단거리 링크를 제거한다.
도 16을 참조하면, 노드는 예를 들면 도 14에서의 단계(1420)의 결과로서, 자신의 단거리 링크의 목록에 신규 링크를 추가할 필요가 있을 수 있다.
단계(1600): 갱신 노드(즉, 자신의 단거리 링크 세트에 대한 갱신을 수행하고 있는 노드)는 신규 링크에 대한 노드의 레이블과 주소를 갖는다;
단계(1605): 갱신 노드는 갱신 노드보다 신규 노드에 더 가까운 노드들에 관해서 모든 현존 링크를 식별한다. 이들 식별된 링크들은 대체될 것이다. 이들 링크를 식별하기 위해서, 갱신 노드는 각각의 현존 링크에 대해서, 신규 노드에 대한 좌표와 현존 링크에 특정된 노드들에 대한 좌표 사이의 거리를 계산한다. 그것은 이들 거리의 각각과, 자기 자신의 좌표와 각 현존 링크에 특정된 노드에 대한 좌표 사이의 거리를 비교한다;
단계(1610): 신규 노드에 관한 거리가 갱신 노드에 관한 거리보다 작은 모든 링크는 단거리 링크로부터 제거된다;
삭제
단계(1620): 갱신 노드는 신규 노드에 대한 링크를 자신의 단거리 링크에 추가한다.

Claims (20)

  1. 노드를 가진 컴퓨터 네트워크에 있어서,
    레이블의 입력에 응답하여 상기 레이블과 매칭하는 노드의 주소를 식별하는 제 1 검색 수단;
    상기 제 1 검색 수단에 의해 식별된 주소를 수신하기 위해 연결되고, 상기 수신에 응답하여 상기 레이블과 매칭하는 추가적인 노드의 주소를 식별하도록 동작가능한 제 2 검색 수단을 포함하고;
    상기 레이블과 매칭하는 각 노드는 상기 레이블과 매칭하는 다른 노드들의 주소들을 포함하는 데이터 스토리지 영역을 자신의 노드에 연관시키고, 문의(enquiry) 메시지에 응답하여 상기 데이터 스토리지 영역의 주소들을 포함하는 메시지를 리턴하고,
    상기 제 2 검색 수단은 상기 제 1 검색 수단에 의해 식별된 주소로 문의 메시지를 전송하고, 응답을 수신한 즉시, 상기 문의 메시지에 대한 응답, 또는 연속한 문의 메시지에 대한 응답에 포함된 주소로 반복하여 문의 메시지를 전송하는 것을 특징으로 하는 컴퓨터 네트워크.
  2. 제 1 항에 있어서,
    상기 제 1 검색 수단은 가상 노드들의 제 1 네트워크에 의해 형성되고, 상기 노드의 각각은 상기 제 1 네트워크의 다른 노드들에 대한 링크의 리스트에 의해 정의되고, 상기 리스트의 각 엔트리는 상기 다른 노드 각각의 레이블과 주소를 포함하고,
    상기 노드의 각각은,
    레이블을 포함하는 요청 메시지의 수신에 응답하여 상기 네트워크 내에서 요청 메시지를 전달하는 수단, 및
    상기 요청 메시지를 수신한 노드의 레이블과 매칭하는 레이블을 포함하는 요청 메시지 수신에 응답하여 응답 메시지를 생성하는 수단을 포함하는 것을 특징으로 하는 컴퓨터 네트워크.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 2 검색 수단은 가상 노드들의 제 2 네트워크에 의해 형성되고,
    상기 노드의 각각은 상기 제 2 네트워크의 다른 노드들에 대한 링크의 리스트에 의해 정의되고, 상기 리스트의 각 엔트리는 상기 다른 노드 각각의 주소를 포함하고,
    상기 노드의 각각은 요청 메시지의 수신에 응답하여 리스트의 주소들을 포함하는 응답 메시지를 생성하는 수단을 포함하는 것을 특징으로 하는 컴퓨터 네트워크.
  4. 제 2 항에 있어서,
    상기 제 2 검색 수단은 가상 노드들의 제 2 네트워크에 의해 형성되고,
    상기 노드의 각각은 상기 제 2 네트워크의 다른 노드들에 대한 링크의 리스트에 의해 정의되고, 상기 리스트의 각 엔트리는 상기 다른 노드 각각의 주소를 포함하고,
    상기 각 노드들은 요청 메시지의 수신에 응답하여 리스트의 주소들을 포함하는 응답 메시지를 생성하는 수단을 포함하고,
    상기 제 1 네트워크의 노드에 의해 생성된 응답 메시지는 상기 응답 메시지를 생성하는 노드에 연관된 제 2 네트워크의 노드의 주소를 포함하는 것을 특징으로 하는 컴퓨터 네트워크.
  5. 제 2 항에 있어서,
    상기 제 2 검색 수단은 가상 노드들의 제 2 네트워크에 의해 형성되고,
    상기 노드의 각각은 상기 제 2 네트워크의 다른 노드들에 대한 링크의 리스트에 의해 정의되고, 상기 리스트의 각 엔트리는 상기 다른 노드 각각의 주소를 포함하고,
    상기 각 노드들은 요청 메시지의 수신에 응답하여 리스트의 주소들을 포함하는 응답 메시지를 생성하는 수단을 포함하고,
    상기 제 1 네트워크의 각 노드는 각각 상기 제 1 네트워크의 개시 노드(initiating node)의 레이블 및 주소를 포함하는 탐사(exploratory) 메시지를 초기화하여 전달하는 수단을 포함하고,
    각 노드는 수신 노드의 레이블과 매칭하는 레이블, 및 수신 노드의 주소와 일치하지 않는 주소를 포함하는 탐사 메시지를 수신하여, 상기 제 2 네트워크의 링크의 추가를 위한 통지 메시지를 생성하고,
    상기 통지 메시지는 상기 탐사 메시지를 초기화하는 노드를 식별하고 상기 수신 노드와 연관된 제 2 네트워크의 노드의 주소를 포함하는 것을 특징으로 하는 컴퓨터 네트워크.
  6. 제 5 항에 있어서,
    상기 통지 메시지는 목적지로서 상기 개시 노드의 주소를 포함하고,
    상기 개시 노드는 상기 통지 메시지를 수신하자마자 상기 개시 노드와 연관된 제 2 네트워크의 노드로, 상기 통지 메시지에 포함된 주소를 갖는 노드와 상기 개시 노드와 연관된 제 2 네트워크의 노드의 사이에 링크의 추가를 요청하는 메시지를 전송하는 것을 특징으로 하는 컴퓨터 네트워크.
  7. 제 3 항에 있어서,
    제 2 네트워크의 각 노드는 처리 수단을 구비하고,
    상기 처리 수단은
    메시지를 수신하는 단계;
    상기 리스트의 내용에 관한 정보를 요청하는 메시지에 응답하는 단계;
    수신된 요청에 따라, 상기 리스트에서의 주소의 삭제 및 상기 리스트로의 다른 주소의 삽입을 실시하는 단계; 및
    상기 노드와 제 2 노드 사이에 링크를 요청하는 메시지의 수신에 응답하여,
    A) 상기 제 2 노드의 리스트의 내용에 관한 정보를 상기 제 2 노드에 요청하는 메시지를 생성하고;
    B) 상기 제 1 노드와 제 2 노드 모두의 리스트에서의 주소의 개수가 미리 결정된 개수 미만인지의 조건을 만족하는지의 여부를 판정하고;
    C) 상기 B)의 조건이 만족되는 경우, 상기 노드의 리스트에 제 2 노드의 주소를 삽입하고, 상기 노드의 주소를 제 2 노드의 리스트에 부가하도록 상기 제 2 노드에 요청하는 제 2 노드로의 메시지를 생성하며;
    D) 상기 B)의 조건을 만족시키지 못하는 경우, 상기 노드가 미리 결정된 수보다 적어도 2개 적은 개수의 상기 노드의 리스트의 주소를 가지고 있는지를 판정하여;
    만일 가지고 있다면,
    a) 제 2 노드의 리스트에서 제 3 노드의 주소를 선택하고;
    b) 상기 노드의 리스트로 제 2 노드의 주소와 제 3 노드의 주소를 삽입하고;
    c) 제 2 노드의 리스트에서 제 3 노드의 주소를 삭제하고 상기 노드의 주소를 삽입하도록 요청하는 제 2 노드로의 메시지를 생성하며;
    d) 상기 제 3 노드의 리스트에서 제 2 노드의 주소를 삭제하고 상기 노드의 주소를 삽입하도록 요청하는 제 3 노드로의 메시지를 생성하는 단계;
    를 포함하는 동작을 실시하도록 프로그래밍된 것을 특징으로 하는 컴퓨터 네트워크.
  8. 노드를 포함하는 컴퓨터 네트워크 구동 방법에 있어서,
    레이블의 입력에 응답하여, 상기 레이블과 매칭하는 노드의 주소를 식별하기 위한 제 1 검색 동작을 실행하는 단계; 및
    상기 제 1 검색 동작을 실행하는 단계에 의해 식별된 주소에 응답하여, 상기 레이블과 매칭하는 추가적인 노드들의 주소들을 식별하기 위한 제 2 검색 동작을 실행하는 단계를 포함하고,
    상기 레이블과 매칭하는 각 노드는 상기 레이블과 매칭하는 다른 노드들의 주소들을 포함하는 데이터 스토리지 영역과 연관되고, 상기 데이터 스토리지 영역의 주소들을 포함하는 메시지를 리턴하는 문의 메시지에 응답하고;
    상기 제 2 검색 동작은 문의 메시지를 상기 제 1 검색 수단에 의해 식별된 주소로 전송하고, 응답을 수신하면, 문의 메시지에 대한 응답 또는 연속한 문의 메시지에 대한 응답에 포함된 주소로 응답 메시지를 반복하여 전송하는 것을 특징으로 하는 노드를 포함하는 컴퓨터 네트워크의 구동 방법.
  9. 제 8 항에 있어서,
    상기 제 1 검색 동작은 가상 노드들의 제 1 네트워크를 사용하고, 상기 노드의 각각은 제 1 네트워크의 다른 노드에 대한 링크의 리스트에 의해 정의되고, 상기 리스트의 엔트리는 각각의 다른 노드의 레이블과 주소를 포함하며,
    상기 방법은,
    레이블을 포함하는 요청 메시지를 수신하는 단계;
    상기 요청 메시지를 네트워크 내로 전파하는 단계; 및
    상기 요청 메시지를 수신하는 노드의 레이블과 매칭하는 레이블을 포함하는 요청 메시지가 노드에 도착하자마자, 응답 메시지를 생성하는 단계를
    포함하는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  10. 제 8 항 또는 제 9 항에 있어서,
    상기 제 2 검색 동작은 가상 노드들의 제 2 네트워크를 사용하고, 상기 노드의 각각은 제 2 네트워크의 다른 노드에 대한 링크의 리스트에 의해 정의되고, 상기 리스트의 각 엔트리는 각각의 다른 노드의 주소를 포함하며,
    상기 방법은,
    노드에 요청 메시지가 도착하자마자 상기 노드의 리스트의 주소를 포함하는 응답 메시지를 생성하는 단계를 추가로 포함하는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  11. 제 9 항에 있어서,
    상기 제 2 검색 동작은 가상 노드들의 제 2 네트워크를 사용하고, 상기 노드의 각각은 제 2 네트워크의 다른 노드에 대한 링크의 리스트에 의해 정의되고, 상기 리스트의 각 엔트리는 각각의 다른 노드의 주소를 포함하며,
    상기 방법은,
    노드에 요청 메시지가 도착하자마자 상기 노드의 리스트의 주소를 포함하는 응답 메시지를 생성하는 단계를 추가로 포함하고,
    상기 제 1 네트워크의 노드에 의해 생성된 응답 메시지는 상기 응답 메시지를 생성하는 노드와 연관된 제 2 네트워크의 노드의 주소를 포함하는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  12. 제 9 항에 있어서,
    상기 제 2 검색 동작은 가상 노드들의 제 2 네트워크를 사용하고, 상기 노드의 각각은 제 2 네트워크의 다른 노드에 대한 링크의 리스트에 의해 정의되고, 상기 리스트의 각 엔트리는 각각의 다른 노드의 주소를 포함하며,
    상기 방법은,
    노드에 요청 메시지가 도착하자마자 상기 노드의 리스트의 주소를 포함하는 응답 메시지를 생성하는 단계를 추가로 포함하고,
    제 1 네트워크의 각 노드는 제 1 네트워크의 초기화 노드의 레이블 및 주소를 각각 포함하는 탐사 메시지를 초기화하고 전파하도록 동작가능한 수단을 포함하고,
    상기 방법은, 상기 수신 노드의 레이블과 매칭하는 레이블과 상기 수신 노드의 주소와 매칭하지 않는 주소를 포함하는 탐사 메시지를 노드에서 수신하자마자, 제 2 네트워크에 대한 링크의 추가에 대한 통지 메시지를 생성하는 단계를 추가로 포함하고,
    상기 통지 메시지는 상기 탐사 메시지를 초기화하는 초기화 노드를 식별하고 상기 수신 노드와 연관된 제 2 네트워크의 노드의 주소를 포함하는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  13. 제 12 항에 있어서,
    상기 통지 메시지는 목적지로서 상기 초기화 노드의 주소를 포함하고,
    상기 초기화 노드는 상기 통지 메시지를 수신하자마자 상기 초기화 노드에 연관된 제 2 네트워크의 노드로 상기 통지 메시지 내에 포함된 주소를 갖는 노드 와 상기 초기화 노드와 연관된 제 2 네트워크의 노드의 사이의 링크 추가 요청 메시지를 포워딩하는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  14. 제 10 항에 있어서,
    (ⅰ) 제 2 가상 네트워크의 제 1 노드와 제 2 노드 사이의 링크를 요청하는 통지 메시지를 수신하고;
    (ⅱ) 상기 제 1 노드가 제 1 노드의 리스트 내에 미리 결정된 개수 미만의 복수의 주소들을 가지는 지를 판단하고, 상기 제 2 노드가 제 2 노드의 리스트 내에 미리 결정된 개수 미만의 복수의 주소들을 가지는 지를 판단하고,
    (ⅲ) (ii)의 조건이 만족된다면, 제 2 노드의 리스트로 제 1 노드의 주소를 삽입하고, 제 1 노드의 리스트로 제 2 노드의 주소를 삽입하며;
    (ⅳ) (ii)의 조건을 만족하지 못한다면, 상기 제 1 노드가 미리 결정된 개수보다 적어도 2개 적은 개수의 복수의 주소를 상기 제 1 노드의 리스트내에 가지는 지를 판단하고, 가진다면,
    (a) 제 2 노드의 리스트에서 제 3 노드의 주소를 선택하는 단계;
    (b) 제 2 노드의 리스트에서 제 3 노드의 주소를 제거하는 단계;
    (c) 제 3 노드의 리스트에서 제 2 노드의 주소를 제거하는 단계;
    (d) 제 1 노드의 리스트로 제 2 노드의 주소를 삽입하고, 제 1 노드의 리스트로 제 3 노드의 주소를 삽입하는 단계; 및
    (e) 제 2 노드의 리스트로 제 1 노드의 주소를 삽입하고, 제 3 노드의 리스트로 제 1 노드의 주소를 삽입하는 단계를 추가로 포함하는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  15. 제 14 항에 있어서,
    상기 링크를 요청하는 메시지는 제 1 노드에서 수신되고, 상기 단계 (ⅲ)에서
    확인되지 않았음을 나타내는 마커가 수반되는 제 1 노드의 리스트로 제 2 노드의 주소가 삽입되고;
    제 2 노드의 링크에 제 1 노드의 주소를 추가할 것을 제 2 노드에 요청하는 메시지가 제 1 노드에서 제 2 노드로 전송되며,
    제 2 노드에 주소가 추가되고 확인 메시지가 제 1 노드로 전송되고,
    제 1 노드에서 확인 메시지가 수신되었을 때, "확인되지 않음"의 마커가 삭제되는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  16. 제 15 항에 있어서,
    노드는 자신의 리스트로 특정 노드의 주소를 추가하도록 하는 요청 메시지를 수신할 때, 먼저 특정 노드의 리스트의 복사본을 요청하는 메시지를 상기 특정 노드로 전송하고, 그런 다음, 상기 특정 노드로부터 상기 요청을 수신하는 노드의 주소를 포함하는 리스트를 수신할 때에만 상기 요청에 따르는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  17. 제 14 항에 있어서,
    상기 링크를 요청하는 메시지가 제 1 노드에서 수신되고,
    상기 제 1 노드는 제 2 노드의 리스트 복사본에 대한 요청을 제 2 노드로 전송하고,
    제 2 노드는 제 1 노드로 요청된 복사본을 전송하며,
    리스트에서 제 3 노드의 주소를 선택하는 (ⅳ)의 (a)단계는 제 1 노드에서 수행되고,
    (ⅳ)의 (a) 단계 및 (b)단계의 수행은,
    상기 제 1 노드가 제 2 노드의 주소와 제 3 노드의 주소를 제 1 노드의 리스트에 추가하고, 각 경우에 확인되지 않았음을 나타내는 마커가 수반되고;
    제 1 노드는 제 2 노드가 제 2 노드의 리스트에서 제 3 노드의 주소를 삭제하고 제 1 노드의 주소로 대체하도록 하는 요청 메시지를 제 2 노드로 전송하며;
    제 1 노드는 제 3 노드가 제 3 노드의 리스트에서 제 2 노드의 주소를 삭제하고 제 1 노드의 주소로 대체하도록 하는 요청 메시지를 제 3 노드로 전송하고;
    상기 메시지를 수신하자마자 제 2 노드는, 제 2 노드의 리스트에서 제 3 노드의 주소를 삭제하고, 제 1 노드의 주소로 대체하고, 제 1 노드로 확인 메시지를 전송하며;
    상기 메시지를 수신하자마자 제 3 노드는, 제 3 노드의 리스트에서 제 2 노드의 주소를 삭제하고, 제 1 노드의 주소로 대체하고, 제 1 노드로 확인 메시지를 전송하고;
    제 2 또는 제 3 노드에서 확인 메시지를 수신하자마자 제 1 노드는 제 1 노드의 리스트에서 각각의 "미확인" 마커를 삭제하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  18. 제 17 항에 있어서,
    노드는 자신의 리스트에서 다른 노드의 주소를 삭제하고 특정 노드의 주소로 대체하도록 하는 요청 메시지를 받자마자, 먼저 상기 특정 노드의 리스트 복사본을 요청하는 메시지를 상기 특정 노드로 전송하고, 그런 다음, 요청을 수신하는 노드의 주소를 포함하는 리스트를 상기 특정 노드로부터 수신하였을 때에만 상기 요청에 따르는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  19. 제 16 항에 있어서,
    상기 특정 노드로의 리스트 요청 메시지와 상기 메시지에 대한 응답은 상기 리스트 요청 메시지를 전송하는 노드의 주소가 상기 특정 노드에 전달되지 않도록 중간 노드를 통해 전송되는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
  20. 제 14 항에 있어서,
    각 노드는 하나 이상의 예비 링크를 저장하는 수단을 구비하고,
    상기 방법은,
    제 1 노드가 제 1 노드의 리스트 내에 미리 결정된 개수와 같은 다수의 주소를 가질 때, 제 1 노드와 제 2 노드 사이의 링크를 요청하는 메시지를 수신하는 경우, 상기 예비 링크 스토리지로 제 2 노드의 주소를 삽입하는 단계; 및
    상기 제 1 노드와 또 다른 노드 사이의 링크를 요청하는 나중의 메시지를 수신 하자마자, 상기 나중의 메시지를 상기 제 1 노드의 예비 링크 스토리지 수단으로부터 검색된 주소로 포워딩하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 네트워크의 구동 방법.
KR1020057018850A 2003-09-25 2004-09-13 동일한 레이블과 매칭하는 다중 노드를 식별하는 컴퓨터네트워크 KR101081147B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0322494.6 2003-09-25
GBGB0322494.6A GB0322494D0 (en) 2003-09-25 2003-09-25 Computer networks
PCT/GB2004/003941 WO2005032104A1 (en) 2003-09-25 2004-09-13 A computer network for identifying multiple nodes matching the same label

Publications (2)

Publication Number Publication Date
KR20060056888A KR20060056888A (ko) 2006-05-25
KR101081147B1 true KR101081147B1 (ko) 2011-11-07

Family

ID=29286842

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057018850A KR101081147B1 (ko) 2003-09-25 2004-09-13 동일한 레이블과 매칭하는 다중 노드를 식별하는 컴퓨터네트워크

Country Status (10)

Country Link
US (1) US7568049B2 (ko)
EP (1) EP1665735B1 (ko)
JP (1) JP4685776B2 (ko)
KR (1) KR101081147B1 (ko)
CN (1) CN100559794C (ko)
AT (1) ATE355694T1 (ko)
CA (1) CA2517278A1 (ko)
DE (1) DE602004005059T2 (ko)
GB (1) GB0322494D0 (ko)
WO (1) WO2005032104A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0322491D0 (en) * 2003-09-25 2003-10-29 British Telecomm Virtual networks
GB0322494D0 (en) 2003-09-25 2003-10-29 British Telecomm Computer networks
JP4396242B2 (ja) * 2003-11-28 2010-01-13 富士ゼロックス株式会社 文書リンク構造情報作成装置及び方法
US20070160071A1 (en) * 2005-12-30 2007-07-12 Overtoom Eric J Framework for a wireless communication device
JP4696089B2 (ja) * 2007-03-30 2011-06-08 三菱電機インフォメーションシステムズ株式会社 分散ストレージシステム
RU2470484C2 (ru) * 2007-12-17 2012-12-20 Телефонактиеболагет Лм Эрикссон (Пабл) Избыточность мобильных узлов базовой сети
US8583771B2 (en) * 2008-07-01 2013-11-12 Cisco Technology, Inc. Mapping human-meaningful parameters to network-meaningful parameters to permit user to establish traffic importance in home network
CN102637200B (zh) * 2012-03-07 2014-05-14 江苏引跑网络科技有限公司 一种使多级关联数据分配到集群相同节点的方法
US10733067B1 (en) * 2018-04-14 2020-08-04 Juniper Networks, Inc. Apparatus, system, and method for efficiently deploying backup virtual network devices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107982A1 (en) 2000-11-22 2002-08-08 Dan Teodosiu Universal naming scheme for peer to peer resources
US20030131044A1 (en) 2002-01-04 2003-07-10 Gururaj Nagendra Multi-level ring peer-to-peer network structure for peer and object discovery

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3901806B2 (ja) * 1997-09-25 2007-04-04 富士通株式会社 情報管理システム及び二次サーバ
US6266322B1 (en) * 1998-02-12 2001-07-24 At&T Corp. Dimensioning bandwidth and connection admission control for elastic traffic in high-speed communication networks
US6856627B2 (en) * 1999-01-15 2005-02-15 Cisco Technology, Inc. Method for routing information over a network
CA2395347A1 (en) 1999-11-30 2001-06-07 Siemens Technology-To-Business Center, Llc. Characteristic routing
US20020163889A1 (en) * 2000-02-02 2002-11-07 Yechiam Yemini Method and apparatus for providing services on a dynamically addressed network
US7006453B1 (en) 2000-03-14 2006-02-28 Lucent Technologies Inc. Location based routing for mobile ad-hoc networks
US6757242B1 (en) * 2000-03-30 2004-06-29 Intel Corporation System and multi-thread method to manage a fault tolerant computer switching cluster using a spanning tree
US6944681B1 (en) * 2000-09-08 2005-09-13 Fisher-Rosemount Systems, Inc. Probing algorithm for foundation fieldbus protocol
JP3584873B2 (ja) 2000-10-31 2004-11-04 ヤマハ株式会社 通信制御装置及び通信システム
US20020145978A1 (en) * 2001-04-05 2002-10-10 Batsell Stephen G. Mrp-based hybrid routing for mobile ad hoc networks
GB0322491D0 (en) * 2003-09-25 2003-10-29 British Telecomm Virtual networks
GB0322494D0 (en) 2003-09-25 2003-10-29 British Telecomm Computer networks
GB0328888D0 (en) * 2003-12-12 2004-01-14 British Telecomm Distributed computer system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020107982A1 (en) 2000-11-22 2002-08-08 Dan Teodosiu Universal naming scheme for peer to peer resources
US20030131044A1 (en) 2002-01-04 2003-07-10 Gururaj Nagendra Multi-level ring peer-to-peer network structure for peer and object discovery

Also Published As

Publication number Publication date
DE602004005059T2 (de) 2007-07-12
US20060259640A1 (en) 2006-11-16
CN1768519A (zh) 2006-05-03
ATE355694T1 (de) 2006-03-15
DE602004005059D1 (de) 2007-04-12
WO2005032104A1 (en) 2005-04-07
JP2007507031A (ja) 2007-03-22
KR20060056888A (ko) 2006-05-25
US7568049B2 (en) 2009-07-28
EP1665735B1 (en) 2007-02-28
JP4685776B2 (ja) 2011-05-18
EP1665735A1 (en) 2006-06-07
CA2517278A1 (en) 2005-04-07
GB0322494D0 (en) 2003-10-29
CN100559794C (zh) 2009-11-11

Similar Documents

Publication Publication Date Title
JP4317522B2 (ja) ピアツーピア環境におけるネットワーク・トラフィック制御
EP1436957B1 (en) Network location management system
US7461128B2 (en) Method, apparatus and system for processing message bundles on a network
JP5684110B2 (ja) ルーティングテーブルを維持する方法およびオーバレイネットワーク内で使用するためのノード
US7953875B2 (en) Distributed computer system for storing data items assigned to virtual directories
US7773609B2 (en) Overlay network system which constructs and maintains an overlay network
US20040208119A1 (en) Providing a node of a peer-to peer network with access to a resource
KR101081147B1 (ko) 동일한 레이블과 매칭하는 다중 노드를 식별하는 컴퓨터네트워크
JP4437956B2 (ja) ファイル共有アプリケーションに対するインデックス・サーバ・サポートを提供する方法
KR101081203B1 (ko) 가상 네트워크
US20070288642A1 (en) Method for Initializing a Peer-to-Peer Data Network
CN100499569C (zh) 协议高速化装置
JP2006221457A (ja) Pure型P2P通信におけるレプリケーション制御を行うサーバントとそのレプリケーション制御方法およびプログラム
JP4624314B2 (ja) データ管理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141023

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151022

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161020

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171020

Year of fee payment: 7