KR20060049121A - 자원 요청을 대응하는 자원과 랑데뷰시키는 방법 및 시스템 - Google Patents
자원 요청을 대응하는 자원과 랑데뷰시키는 방법 및 시스템 Download PDFInfo
- Publication number
- KR20060049121A KR20060049121A KR1020050099588A KR20050099588A KR20060049121A KR 20060049121 A KR20060049121 A KR 20060049121A KR 1020050099588 A KR1020050099588 A KR 1020050099588A KR 20050099588 A KR20050099588 A KR 20050099588A KR 20060049121 A KR20060049121 A KR 20060049121A
- Authority
- KR
- South Korea
- Prior art keywords
- node
- nodes
- message
- ring
- destination
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
- Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
- Peptides Or Proteins (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 자원 요청을 대응하는 자원과 랑데뷰(rendezvous)시키는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 것이다. 이중 연결 정렬 리스트(doubly linked sorted list)는 모듈로 산술(modulo arithmetic)을 사용하여 양방향으로 순회(traverse)된다. 정렬 리스트는 다중 근접 메트릭(multiple proximity metric)에 기초하여 분할될 수 있다. 노드 라우팅 테이블(node routing table)은 보다 효율적인 라우팅을 용이하게 해주기 위해 연합 기반구조(federation infrastructure)의 ID 공간 내의 노드에 로그 인덱스(logarithmic index)를 제공한다. 메시지는 링 내의 노드들로 라우팅될 수 있고 또 다른 분할된 링 내의 노드들로 근접 라우팅(proximal routing)될 수 있다.
라우팅, 자원 랑데뷰, 연합 기반 구조, 라우팅 테이블
Description
도 1은 연합 기반구조의 예를 나타낸 도면.
도 2는 요청을 파트너들에게 간접적으로 라우팅하는 것을 용이하게 해주는 컴퓨터 아키텍처의 예를 나타낸 도면.
도 3은 정렬 리스트 및 대응하는 링 형태의 연합 기반구조 내의 노드들 간의 예시적인 이진 관계(binary relationship)를 나타낸 도면.
도 4는 근접 라우팅(proximal routing)을 용이하게 해주는 링들 중 예시적인 링을 나타낸 도면.
도 5는 근접 라우팅을 용이하게 해주는 링들의 예시적인 근접 유도 분할 트리(proximity induced partition tree)를 나타낸 도면.
도 6은 본 발명의 원리들에 적당한 운영 환경을 나타낸 도면.
도 7은 근접 기준(proximity criterion)을 고려하는 노드 라우팅 테이블을 채우는 방법의 예시적인 흐름도.
도 8은 연합 기반구조의 노드들을 분할하는 방법의 예시적인 흐름도.
도 9는 노드 라우팅 테이블을 채우는 방법의 예시적인 흐름도.
도 10은 메시지를 목적지 노드쪽으로 번호 라우팅(numerical routing)하는 방법의 예시적인 흐름도.
도 11은 메시지를 목적지 노드쪽으로 근접 라우팅(proximal routing)하는 방법의 예시적인 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
101, 102, 103: 노드
121, 122, 123: 어플리케이션 계층
131, 132, 133: 기타 하위 계층
본 출원은 발명의 명칭이 "자원 요청의 대응하는 자원과의 랑데뷰(Rendezvousing Resource Requests With Corresponding Resources)"인 2004년 10월 22일자로 출원된 미국 특허 출원 제10/971,451호의 계속 출원으로서, 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함된다.
본 발명은 자원에 액세스하는 것에 관한 것이며, 보다 상세하게는 자원 요청을 대응하는 자원과 랑데뷰시키는 것에 관한 것이다.
컴퓨터 시스템 및 관련 기술은 사회의 많은 측면에 영향을 주고 있다. 실제로, 컴퓨터 시스템의 정보 처리 능력은 우리의 삶 및 업무 방식을 변환시켰다. 컴퓨터 시스템은 현재 통상 컴퓨터 시스템의 출현 이전에 수작업을 수행되었던 많은 작업(예를 들어, 워드 프로세싱, 스케쥴링, 및 데이터베이스 관리)을 한다. 보다 최근에, 컴퓨터 시스템은 서로에 또한 다른 전자 장치에 연결되어 유선 및 무선 컴퓨터 네트워크 둘다를 형성하며, 이를 통해 컴퓨터 시스템 및 다른 전자 장치들은 전자 데이터를 전송할 수 있다. 그 결과, 컴퓨터 시스템에서 수행되는 많은 작업들(예를 들어, 음성 통신, 전자 메일 액세스, 가전 제품 제어, 웹 브라우징, 및 문서 인쇄)은 유선 및/또는 무선 컴퓨터 네트워크를 통한 다수의 컴퓨터 시스템들 및/또는 다른 전자 장치들 간의 전자 통신을 포함한다.
그렇지만, 네트워크 자원을 이용하여 컴퓨터화된 작업을 수행하기 위해서, 컴퓨터 시스템은 네트워크 자원을 식별하고 그에 액세스하는 어떤 방법을 가지고 있어야만 한다. 따라서, 자원은 일반적으로 고유의 식별자, 예를 들어 자원들을 일의적으로 식별해주고 또 한 자원을 다른 자원들과 구분하는 데 사용될 수 있는 네트워크 주소를 할당받는다. 따라서, 자원을 이용하기를 원하는 컴퓨터 시스템은 자원에 대응하는 네트워크 주소를 사용하여 자원에 연결될 수 있다. 그렇지만, 컴퓨터 시스템이 네트워크 자원에 대한 네트워크 주소를 미리 알고 있지 않으면 네트워크 자원에 액세스하는 것이 어려울 수 있다. 예를 들어, 컴퓨터 시스템은 컴퓨터 시스템(또는 다른 네트워크화된 컴퓨터 시스템)이 네트워크 프린터의 네트워크 주소를 알고 있지 않은 한, 네트워크 프린터에서 문서를 인쇄할 수 없다.
따라서, 컴퓨터가 이전의 미지의 자원을 식별(및 액세스)하기 위한 여러가지 메커니즘[예를 들어, DNS(Domain Name System, 도메인 네임 시스템), AD(Active Directory, 액티브 디렉토리), DFS(Distributed File Systems, 분산 파일 시스템)]이 개발되었다. 그렇지만, 여러가지 컴퓨터 네트워크를 통해 액세스가능한 자원들 (예를 들어, 장치들 및 서비스들)의 양 및 다양성으로 인해, 개발자는 종종 다양한 서로 다른 자원 식별 및 액세스 메커니즘을 구현하는 어플리케이션을 개발해야만 한다. 각각의 서로 다른 메커니즘은 서로 다른 코딩 요건을 가질 수 있으며 또 개발자에게 어플리케이션에서 필요로 하는 모든 기능을 제공하지 않을 수 있다.
예를 들어, DNS가 분산 관리 아키텍처(즉, 중앙집중식 관리가 필요하지 않음)를 갖지만, DNS는 충분히 동적이지 않고 자기 조직적(self-organizing)이지 않으며, 취약한 데이터 및 쿼리 모델을 지원하고, 또 고정된 일련의 루트를 갖는다. 반면에, AD는 충분히 동적이지만 중앙집중식 관리를 필요로 한다. 게다가, 서로 다른 메커니즘의 측면들이 서로 호환되지 않을 수 있다. 예를 들어, DNS를 사용하여 식별된 자원은 DFS 라우팅 프로토콜과 호환되지 않을 수 있다. 따라서, 개발자는 가장 적합한 메커니즘을 선택하여 다른 메커니즘의 이점을 포기할 수 있다.
자원을 식별하는 메커니즘은 피어-투-피어 네트워크에서 특히 문제가 될 수 있다. DNS는 탐색 요청을 구현하기 위해 일련의 특별한 루트 서버에 의존하는, 호스트 이름을 키로서 갖고 또 IP 주소를 값으로서 갖는 탐색 서비스를 제공한다. 또한, DNS는 클라이언트가 네임 서버 계층구조를 순회할 수 있도록 하기 위해 정보(NS 레코드)의 관리를 필요로 한다. 따라서, 자원이 네트워크 상에서 식별될 수 있기 전에, 그 자원은 DNS에 들어가 있어야만 한다. 빈번히 연결되고 분리되는 노드들이 네트워크를 형성하는 대규모 네트워크 상에서 정보의 입력에 의존하는 것이 항상 실용적인 것은 아니다. 게다가, DNS는 호스트 또는 서비스를 찾는 일에 전용되어 있으며 일반적으로 다른 유형의 자원에 적용가능하지 않다.
따라서, 이들 단점을 해소하기 위해 자원 식별 및 액세스를 위한 다른 메커니즘이 개발되었다. 다수의 메커니즘은 DNS보다 확장성이 있는 분산 탐색 프로토콜을 포함한다. 이들 메커니즘은 요청을 대응하는 자원으로 라우팅하고 또 탐색을 위한 정보를 저장하기 위해 여러가지 노드 구성 및 라우팅 알고리즘을 사용한다.
이들 메커니즘 중 적어도 하나는 메시지를 목적지 노드로 라우팅하기 위해 네트워크 내의 각각의 노드에서 로컬 다중 레벨 이웃 맵(local multi-level neighbor map)을 이용한다. 이 결과 기본적으로 각각의 노드가 대응하는 노드들(그의 이웃 맵 내의 노드들)의 트리의 "루트 노드"인 아키텍처가 얻어진다. 메시지는 번호별로(예를 들어, ***6 => **46 =>, *346 => 2346, 여기서 *는 와일드카드를 나타냄) 목적지 ID로 점진적으로 라우팅된다. 이들 유형의 메커니즘의 라우팅 효율은 O(log N) 라우팅 홉이며 노드가 O(log N) 크기의 라우팅 테이블을 유지해야만 한다.
이들 메커니즘 중 적어도 하나의 다른 메커니즘은 노드들에, 번호들의 선형 링으로부터 가져온 고유의 ID를 할당한다. 노드들은 (ID 값에 따라) 그의 직접 후손 노드(immediate successor node) 및 값 ID + 2L의 가장 가까운 후손인 ID 값을 갖는 노드에 대한 포인터를 포함하는 라우팅 테이블을 유지한다. 이들 유형의 메커니즘의 라우팅 효율도 역시 O(log N) 라우팅 홉이며 노드가 O(log N) 크기의 라우팅 테이블을 유지해야만 한다.
적어도 하나의 또다른 메커니즘은 O(log N1/d) 라우팅 홉을 필요로 하며 노드 가 O(D) 크기의 라우팅 테이블을 유지해야만 한다. 따라서, 이들 메커니즘 모두의 라우팅 효율은 적어도 부분적으로 시스템 내의 노드들의 수에 의존한다.
게다가, (메커니즘의 적어도 일부에 대한) ID가 링 주변에 균일하게 분산될 수 있기 때문에, 링 상의 노드들 간의 라우팅이 어떤 비효율을 가져올 약간의 가능성이 항상 있다. 예를 들어, 라우팅 홉이 광대한 지리적 거리에 걸쳐 있거나 더욱 고비용의 링크에 걸쳐 있거나 또는 불안전한 도메인을 통과할 수 있거나, 기타 등등일 수 있다. 게다가, 메시지 라우팅이 다수의 홉을 수반하는 경우, 이러한 이벤트가 여러번 일어날 약간의 가능성이 있다. 불행하게도, 이들 메커니즘은 노드들의 서로에 대한 (물리적 또는 다른 방식의) 근접을 고려하지 않는다. 예를 들어, 링 상에서의 노드 분포에 따라, 뉴욕에서 보스톤으로의 메시지 라우팅은 메시지를 뉴욕에서 런던으로, 아틀란타로, 도쿄로, 이어서 보스톤으로 라우팅하는 것을 수반할 수 있다.
따라서, 적어도 하나의 다른 최근의 메커니즘은 근접을 단일의 근접 스칼라 메트릭(예를 들어, IP 라우팅 홉 또는 지리적 거리)으로서 정의함으로써 근접을 고려한다. 이들 메커니즘은 라우팅 테이블 엔트리의 근접-기반 선택의 개념을 사용한다. 각각의 라우팅 테이블 엔트리에 대한 많은 "정확한" 노드 후보가 있기 때문에, 이들 메커니즘은 후보 노드들 중에서 근접도가 가까운 노드(proximally close node)를 선택하려고 한다. 이들 메커니즘이 각각의 노드가 주어진 IP 주소를 갖는 노드의 그 자신까지의 "거리"를 결정할 수 있게 해주는 기능을 제공할 수 있다. 메시지는 더 멀리 있는 노드로 라우팅되기 전에 목적지쪽으로 진행하도록 하기 위 해 근접도가 더 가까운 노드들(nodes in closer proximity) 간에 라우팅된다. 따라서, 어떤 자원들은 보존될 수 있고 라우팅은 보다 효율적이다.
불행하게도, 이들 기존의 메커니즘은 일반적으로 그 중에서도 특히 노드들 간의 대칭적 관계(즉, 제1 노드가 제2 노드를 그의 파트너로 간주하는 경우, 제2 노드도 역시 제1 노드를 파트너로서 간주함), 링 상에서 양방향(시계방향 및 반시계 방향)으로의 메시지 라우팅, 복수의 근접 메트릭에 기초한 노드들의 연결 리스트의 분할, 및 복수의 근접 메트릭에 기초한 메시지의 라우팅을 제공하지 않는다. 따라서, 이들 메커니즘을 이용하여 자원 요청을 대응하는 자원과 랑데뷰시키는 시스템, 방법, 컴퓨터 프로그램 제품이 유리할 것이다.
종래 기술에서의 상기한 문제점들은 자원 요청을 대응하는 자원과 랑데뷰시키는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 본 발명의 원리들에 의해 극복된다. 소정 실시예들에서, 연합 기반구조의 노드들은 분할된다. 연합 기반구조 내의 노드들에 할당된 노드 ID를 포함하는 정렬 연결 리스트가 액세스된다. 정렬 연결 리스트를 분할하는 복수의 서로 다른 근접 기준을 나타내는 근접 카테고리가 액세스된다. 정렬 연결 리스트는 제1 근접 기준에 기초하여 하나 이상의 제1 서브리스트로 분할되고, 하나 이상의 제1 서브리스트 각각은 적어도 정렬 연결 리스트로부터의 노드 ID의 서브셋을 포함한다. 하나 이상의 제1 서브리스트로부터 선택된 제1 서브리스트는 제2 근접 기준에 기초하여 하나 이상의 제2 서브리스트로 분할되고, 하나 이상의 제2 서브리스트 각각은 적어도 제1 서브리스트에 포함된 노드 ID의 서브셋을 포함한다.
다른 실시예들에서, 예를 들어 도 3에 도시된 바와 같이, 노드 라우팅 테이블이 채워진다. 직접 선조 노드가 라우팅 테이블에 삽입된다. 직접 후손 노드가 라우팅 테이블에 삽입된다. 적절한 이웃 노드 식별자가 라우팅 테이블에 삽입되고, 이웃 노드는 소정의 또는 추정된 이웃 범위 및 이웃 크기에 기초하여 제1 방향 및 제2 반대 방향 양쪽으로 정렬 연결 리스트로부터 식별된다. 적절한 라우팅 노드 식별자가 라우팅 테이블에 삽입되고, 라우팅 노드는 연합 기반구조에 대한 ID 공간의 기수 및 필드 크기에 기초하여 제1 및 제2 방향 양쪽으로 정렬 연결 리스트로부터 식별되고, 라우팅 노드는 제1 및 제2 방향 양쪽으로의 정렬 연결 리스트의 로그 인덱스를 나타낸다.
또다른 실시예들에서, 노드 라우팅 테이블은 근접 기준을 고려하여 채워질 수 있다. 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 선조 노드가 라우팅 테이블에 삽입되고, 각각의 계층적으로 분할된 라우팅 링은 대응하는 근접 기준에 따라 분할되며 부모 링의 양방향 연결 리스트의 서브셋을 적어도 포함한다. 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 후손 노드가 라우팅 테이블에 삽입된다. 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 적절한 이웃 노드가 라우팅 테이블에 삽입된다. 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 적절한 라우팅 노드가 라우팅 테이블에 삽입된다.
또다른 실시예들에서, 메시지는 잠재적으로 대응하는 하나 이상의 노드 클래 스를 정의하는 하나 이상의 접근 기준에 기초하여 목적지 노드쪽으로 라우팅된다. 수신측 노드는 목적지 노드를 나타내는 목적지 번호 및 선택적으로 하나 이상의 근접 기준과 함께 메시지를 수신한다. 잠재적으로 현재 노드 클래스 내의 노드 중의 수신측 노드는 그가 대응하는 선조 노드보다 숫자상으로 목적지 번호로부터 더 멀고 또 대응하는 후손 노드보다 숫자상으로 목적지 번호로부터 더 먼 것 중 적어도 하나인지를 판정한다. 목적지가 수신측 노드에 대응하는, 잠재적으로 현재 노드 클래스 내의 노드 중의 일련의 이웃 노드 내에 있지 않은지 판정된다.
수신측 모드에 대응하는 라우팅 테이블로부터의 중간 노드가 식별되고, 중간 노드는 대응하는 라우팅 테이블 내의 다른 라우팅 노드들보다 목적지 번호에 숫자상으로 더 가깝다. 메시지는 중간 노드로 전송된다. 중간 노드는 계속하여 메시지를 라우팅할 수 있다. 메시지를 수신하는 노드가 그의 후손 노드나 그의 선조 노드보다 목적지 번호에 숫자상으로 더 가까운 경우, 메시지는 궁극적으로 목적지 노드에 도달한다. 하나 이상의 근접 기준에 기초하여 라우팅하는 실시예들에서, 이 숫자상 가까움은 선택된 노드 클래스 내의 노드들에 대한 것일 수 있다.
따라서, 근접 기준에 기초하여 메시지를 라우팅하는 것은 그 링 내에서 라우팅하는 것에 의해 더 이상의 진행을 할 수 없을 때까지 주어진 근접 링(노드들의 클래스) 내의 목적지 노드에 점진적으로 더 가깝게 이동함으로써 목적지 노드(ID)로 라우팅하는 것을 포함한다. 더 이상 진행할 수 없는지를 판정하는 것은 목적지 번호가 현재 노드의 ID와 그의 선조 또는 후손 노드의 ID 사이에 있을 때 행해진다. 이 시점에서, 현재 노드는 그가 참여하고 있는 그 다음으로 큰 근접 링 내의 그의 파트너 노드를 통해 라우팅하기 시작한다. 분할 경로를 따라 루트 링 쪽으로 올라감으로써 목적지 노드쪽으로 점진적으로 이동하는 이 프로세스는 목적지 노드에 도달할 때 종료한다.
본 발명의 이들 및 다른 목적 및 특징은 이하의 설명 및 첨부된 청구항들로부터 더욱 명백하게 되거나 이후에 기술되는 본 발명의 실시에 의해 알게 될 수 있다.
본 발명의 상기한 이점 및 특징과 기타의 이점 및 특징을 더 명백히 하기 위해, 본 발명의 더욱 상세한 설명이 첨부 도면에 도시되어 있는 구체적인 실시예를 참조하여 행해질 것이다. 이들 도면이 본 발명의 단지 일반적인 실시예를 나타낸 것이며 따라서 그의 범위를 한정하는 것으로 간주되어서는 안된다는 것을 잘 알 것이다. 본 발명은 첨부 도면을 사용하여 부가의 상세 및 세부에 대해 기술되고 설명될 것이다.
종래 기술에서의 상기한 문제점들은 자원 요청을 대응하는 자원과 랑데뷰시키는 방법, 시스템 및 컴퓨터 프로그램 제품에 관한 본 발명의 원리들에 의해 극복된다. 소정 실시예들에서, 연합 기반구조의 노드들은 분할된다. 연합 기반구조 내의 노드들에 할당된 노드 ID를 포함하는 정렬 연결 리스트가 액세스된다. 정렬 연결 리스트를 분할하는 복수의 서로 다른 근접 기준을 나타내는 근접 카테고리가 액세스된다. 정렬 연결 리스트는 제1 근접 기준에 기초하여 하나 이상의 제1 서브리스트로 분할되고, 하나 이상의 제1 서브리스트 각각은 적어도 정렬 연결 리스트 로부터의 노드 ID의 서브셋을 포함한다. 하나 이상의 제1 서브리스트로부터 선택된 제1 서브리스트는 제2 근접 기준에 기초하여 하나 이상의 제2 서브리스트로 분할되고, 하나 이상의 제2 서브리스트 각각은 적어도 제1 서브리스트에 포함된 노드 ID의 서브셋을 포함한다.
다른 실시예들에서, 예를 들어 도 3에 도시된 바와 같이, 노드 라우팅 테이블이 채워진다. 직접 선조 노드가 라우팅 테이블에 삽입된다. 직접 후손 노드가 라우팅 테이블에 삽입된다. 적절한 이웃 노드 식별자가 라우팅 테이블에 삽입되고, 이웃 노드는 소정의 또는 추정된 이웃 범위 및 이웃 크기에 기초하여 제1 방향 및 제2 반대 방향 양쪽으로 정렬 연결 리스트로부터 식별된다. 적절한 라우팅 노드 식별자가 라우팅 테이블에 삽입되고, 라우팅 노드는 연합 기반구조에 대한 ID 공간의 기수 및 필드 크기에 기초하여 제1 및 제2 방향 양쪽으로 정렬 연결 리스트로부터 식별되고, 라우팅 노드는 제1 및 제2 방향 양쪽으로의 정렬 연결 리스트의 로그 인덱스를 나타낸다.
또다른 실시예들에서, 노드 라우팅 테이블은 근접 기준을 고려하여 채워질 수 있다. 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 선조 노드가 라우팅 테이블에 삽입되고, 각각의 계층적으로 분할된 라우팅 링은 대응하는 근접 기준에 따라 분할되며 부모 링의 양방향 연결 리스트의 서브셋을 적어도 포함한다. 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 후손 노드가 라우팅 테이블에 삽입된다. 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 적절한 이웃 노드가 라우팅 테이블에 삽입된 다. 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 적절한 라우팅 노드가 라우팅 테이블에 삽입된다.
또다른 실시예들에서, 메시지는 잠재적으로 대응하는 하나 이상의 노드 클래스를 정의하는 하나 이상의 접근 기준에 기초하여 목적지 노드쪽으로 라우팅된다. 수신측 노드는 목적지 노드를 나타내는 목적지 번호 및 선택적으로 하나 이상의 근접 기준과 함께 메시지를 수신한다. 잠재적으로 현재 노드 클래스 내의 노드 중의 수신측 노드는 그가 대응하는 선조 노드보다 숫자상으로 목적지 번호로부터 더 멀고 또 대응하는 후손 노드보다 숫자상으로 목적지 번호로부터 더 먼지를 판정한다. 목적지가 수신측 노드에 대응하는, 잠재적으로 현재 노드 클래스 내의 노드 중의 일련의 이웃 노드 내에 있지 않은지 판정된다.
수신측 모드에 대응하는 라우팅 테이블로부터의 중간 노드가 식별되고, 중간 노드는 대응하는 라우팅 테이블 내의 다른 라우팅 노드들보다 목적지 번호에 숫자상으로 더 가깝다. 메시지는 중간 노드로 전송된다. 중간 노드는 계속하여 메시지를 라우팅할 수 있다. 메시지를 수신하는 노드가 그의 후손 노드나 그의 선조 노드보다 목적지 번호에 숫자상으로 더 가까운 경우, 메시지는 궁극적으로 목적지 노드에 도달한다. 하나 이상의 근접 기준에 기초하여 라우팅하는 실시예들에서, 이 숫자상 가까움은 선택된 노드 클래스 내의 노드들에 대한 것일 수 있다.
따라서, 근접 기준에 기초하여 메시지를 라우팅하는 것은 그 링 내에서 라우팅하는 것에 의해 더 이상의 진행을 할 수 없을 때까지 주어진 근접 링(노드들의 클래스) 내의 목적지 노드에 점진적으로 더 가깝게 이동함으로써 목적지 노드(ID) 로 라우팅하는 것을 포함한다. 더 이상 진행할 수 없는지를 판정하는 것은 목적지 번호가 현재 노드의 ID와 그의 선조 또는 후손 노드의 ID 사이에 있을 때 행해진다. 이 시점에서, 현재 노드는 그가 참여하고 있는 그 다음으로 큰 근접 링 내의 그의 파트너 노드를 통해 라우팅하기 시작한다. 분할 경로를 따라 루트 링 쪽으로 올라감으로써 목적지 노드쪽으로 점진적으로 이동하는 이 프로세스는 목적지 노드에 도달할 때 종료한다.
본 발명의 범위 내의 실시예들은 컴퓨터 실행가능 명령어 또는 데이터 구조를 담고 있는 또는 저장하고 있는 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 전용 컴퓨터 시스템에 의해 액세스가능한 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EPROM, CD-ROM 또는 기타의 광 디스크 저장 장치, 자기 디스크 저장 장치나 기타의 자기 저장 장치, 또는 컴퓨터 실행가능 명령어, 컴퓨터 판독가능 명령어, 또는 데이터 구조 형태의 원하는 프로그램 코드 수단을 담고 있거나 저장하는 데 사용될 수 있고 또 범용 또는 전용 컴퓨터 시스템에 의해 액세스될 수 있는 물리적 저장 매체를 포함할 수 있다.
이 설명 및 이하의 청구항들에서, "네트워크"는 컴퓨터 시스템들 및/또는 모듈들(예를 들어, 하드웨어 및/또는 소프트웨어 모듈들) 간의 전자 데이터의 전송을 가능하게 해주는 (아마도 서로 다른 속도의) 하나 이상의 데이터 링크로서 정의된다. 정보가 네트워크 또는 다른 통신 연결(유선, 무선, 또는 유선이나 무선의 조합)을 통해 컴퓨터 시스템으로 전송 또는 제공될 때, 그 연결을 컴퓨터 판독가능 매체로서 보는 것도 무난하다. 상기의 것들의 조합도 역시 컴퓨터 판독가능 매체의 범위 내에 포함되어야만 한다. 컴퓨터 실행가능 명령어는 범용 컴퓨터 시스템 또는 전용 컴퓨터 시스템으로 하여금 어떤 기능 또는 일군의 기능을 수행하도록 하는 예를 들어 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는 예를 들어 바이너리, 어셈블리어 등의 중간 형식 명령어(intermediate format instruction) 또는 심지어 소스 코드일 수도 있다. 소정 실시예들에서, 예를 들어 전용 집적 회로 또는 게이트 어레이 등의 하드웨어 모듈은 본 발명의 원리들을 구현하기 위해 최적화되어 있다.
이 설명 및 이하의 청구항들에서, "노드"는 전자 데이터에 대한 연산을 수행하기 위해 함께 동작하는 하나 이상의 소프트웨어 모듈, 하나 이상의 하드웨어 모듈, 또는 이들의 조합으로서 정의된다. 예를 들어, 노드의 정의는 개인용 컴퓨터의 하드웨어 컴포넌트는 물론, 개인용 컴퓨터의 운영 시스템 등의 소프트웨어 모듈도 포함한다. 모듈의 물리적 레이아웃은 중요하지 않다. 노드는 네트워크를 통해 연결된 하나 이상의 컴퓨터를 포함할 수 있다. 이와 마찬가지로, 노드는 내부 모듈들(메모리 및 프로세서 등)이 전자 데이터에 대한 연산을 수행하기 위해 함께 동작하는 단일의 물리적 장치(모바일 전화나 개인 휴대 단말기(PDA) 등)를 포함할 수 있다. 게다가, 노드는 예를 들어 전용 집적 회로를 포함하는 라우터 등의 전용 하드웨어를 포함할 수 있다.
당업자라면 본 발명이 개인용 컴퓨터, 랩탑 컴퓨터, 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화, PDA, 호출기, 라우터, 게이트웨이, 브로커(broker), 프록시, 방화벽, 리디렉터(redirector), 네트워크 주소 변환기, 및 기타 등등을 비롯하여, 많은 유형의 노드 구성을 갖는 네트워크 컴퓨팅 환경에서 실시될 수 있음을 잘 알 것이다. 본 발명은 또한 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크, 또는 유선 및 무선 데이터 링크의 조합에 의해) 링크되어 있는 로컬 및 원격 노드 둘다가 작업을 수행하는 분산 시스템 환경에서 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘다에 위치될 수 있다.
연합 아키텍처
도 1은 연합 기반구조(100)의 예를 나타낸 것이다. 연합 기반구조(100)는 여러가지 유형의 연합 파트너쉽을 형성할 수 있는 노드(101, 102, 103)를 포함한다. 예를 들어, 노드(101, 102, 103)는 루트 노드없이 서로 간에 피어로서 연합될 수 있다. 각각의 노드(101, 102, 103)는 각각 대응하는 ID(171, 182, 193)를 갖는다.
일반적으로, 노드(101, 102, 103)는 파트너쉽을 형성하고 정보(예를 들어, 다른 노드와의 상호작용과 관련한 상태 정보)를 교환하기 위해 연합 프로토콜을 이용할 수 있다. 파트너쉽의 형성 및 정보의 교환은 자원에 대한 보다 효율적이고 신뢰성있는 액세스를 용이하게 해준다. 다른 중간 노드(도시 생략)가 노드(101, 102, 103) 사이에 존재할 수 있다(예를 들어, 171과 193 사이의 ID를 갖는 노드). 따라서, 예를 들어, 노드(101)와 노드(103) 사이에서 라우팅되는 메시지는 다른 중 간 노드들 중 하나 이상을 통과할 수 있다.
연합 기반구조(100) 내의 노드들(다른 중간 노드들을 포함함)은 대응하는 랑데뷰 프로토콜 스택(rendezvous protocol stack)을 포함할 수 있다. 예를 들어, 노드(101, 102, 103)는 각각 대응하는 랑데뷰 프로토콜 스택(141, 142, 143)을 포함한다. 프로토콜 스택(141, 142, 143) 각각은 어플리케이션 계층[예를 들어, 어플리케이션 계층(121, 122, 123)] 및 기타 하위 계층[예를 들어, 대응하는 기타 하위 계층(131, 132, 133)]을 포함한다. 랑데뷰 프로토콜 스택 내의 각각의 계층은 자원 요청을 대응하는 자원과 랑데뷰시키는 것과 관련된 서로 다른 기능을 맡고 있다.
예를 들어, 기타 하위 계층들은 채널 계층, 라우팅 계층, 및 기능 계층(function layer)을 포함할 수 있다. 일반적으로, 채널 계층은 한 엔드포인트(endpoint)에서 다른 엔드포인트로[예를 들어, 노드(101)에서 노드(103)로] 메시지를 [예를 들어, WS-릴라이어블메시징(WS-ReliableMessaging) 및 SOAP(Simple Object Access Protocol)를 사용하여] 신뢰성있게 전송하는 일을 맡고 있다. 채널 계층은 또한 들어오는/나가는 신뢰성있는 메시징 헤더를 처리하는 일과 신뢰성있는 메시징 세션과 관련한 상태를 유지하는 일을 맡고 있다.
일반적으로, 라우팅 계층은 목적지로의 그 다음 홉을 계산하는 일을 맡고 있다. 라우팅 계층은 또한 들어오는/나가는 어드레싱 및 라우팅 메시지 헤더를 처리하는 일과 라우팅 상태를 유지하는 일을 맡고 있다. 일반적으로, 기능 계층은 가입(join) 및 출발(depart) 요청, 핑(ping), 업데이트 및 기타 메시지 등의 랑데뷰 프로토콜 메시지를 발행 및 처리하는 일은 물론, 이들 메시지에 대한 응답의 생성을 맡고 있다. 기능 계층은 라우팅 계층으로부터의 요청 메시지를 처리하고 대응하는 응답 메시지가 있는 경우 이를 라우팅 계층을 사용하여 다시 발신측 노드로 전송한다. 기능 계층은 또한 요청 메시지를 개시하고 라우팅 계층을 이용하여 요청 메시지를 전달한다.
일반적으로, 어플리케이션 계층은 기능 계층으로부터 전달된 비랑데뷰 프로토콜 관련 데이터(non-rendezvous protocol specific data)(예를 들어, 어플리케이션 메시지)를 처리한다. 기능 계층은 어플리케이션 계층으로부터의 어플리케이션 데이터에 액세스하고 또 어플리케이션 데이터를 랑데뷰 프로토콜 메시지로 받기(get) 및 보내기(put)를 할 수 있다(예를 들어, 핑 및 업데이트). 즉, 기능 계층은 어플리케이션 데이터가 랑데뷰 프로토콜 메시지 상에 피기백(piggyback)될 수 있게 해주고 또 랑데뷰 프로토콜 노드의 수신에 있어서 어플리케이션 데이터가 다시 어플리케이션 계층으로 전달될 수 있게 해준다. 소정 실시예들에서, 어플리케이션 데이터는 자원 및 자원 이해관계자(resource interests)를 식별하는 데 사용된다. 따라서, 어플리케이션 계층은 자원 및 자원 이해관계자를 식별하기 위해 기타 하위 계층으로부터 수신된 및 그로 전송된 데이터를 처리하는 어플리케이션 관련 논리 및 상태를 포함할 수 있다.
연합 메커니즘
노드는 다양한 서로 다른 메커니즘을 사용하여 연합할 수 있다. 제1 연합 메커니즘은 피어 노드가 모든 다른 피어 노드들에 정보를 포워딩하는 것으로 포함 한다. 노드가 연합 기반구조에 가입하려고 하는 경우, 노드는 그의 존재를 알려주기 위해 예를 들어, WS-디스커버리(WS-Discovery) 등의 브로드캐스트/멀티캐스트 발견 프로토콜(broadcast/multicast discovery protocol)을 이용하고 다른 노드들을 검출하기 위해 브로드캐스트/멀티캐스트 찾기(broadcast/multicast find)를 발행한다. 노드는 이어서 네트워크 상에 이미 존재하는 다른 노드들과 간단한 포워딩 파트너쉽을 설정하고 또 새로 가입하는 노드들과의 새로운 파트너쉽을 수락한다. 그 후에, 노드는 그의 파트너 노드들 모두에게 모든 어플리케이션 관련 메시지를 간단히 포워딩한다.
제2 연합 메커니즘은 어플리케이션 관련 메시지를 그의 목적지(들)로 가장 효율적으로 전송하는 피어 노드를 포함한다. 새로운 노드가 연합 기반구조에 가입하려고 하는 경우, 새로운 노드는 그의 존재를 알려주기 위해 예를 들어, WS-디스커버리(WS-Discovery) 등의 브로드캐스트/멀티캐스트 발견 프로토콜을 이용하고 연합 기반구조의 일부인 다른 노드들을 검출하기 위해 브로드캐스트/멀티캐스트 찾기(broadcast/multicast find)를 발행한다. 다른 노드를 검출할 시에, 새로운 노드는 다른 노드와 파트너쉽을 설정한다. 설정된 파트너쉽으로부터, 새로운 노드는 연합 기반구조에 이미 참여하고 있는 다른 노드들의 존재에 관해 알게 된다. 새로운 노드는 이어서 이들 새로 알게 된 노드들과 파너트쉽을 설정하고 또 임의의 새로 들어오는 파트너쉽 요청을 수락한다.
노드 도착/출발 및 어떤 어플리케이션 관련 메시지에 대한 관심의 등록(registration of interest) 둘다는 연합 기반구조를 통해 플러딩(flood)되고 그 결과 모든 노드는 다른 파트너 노드들 및 어플리케이션 관련 메시지에 대한 관심의 등록에 대해 전반적으로 알게 된다. 이와 같이 전반적으로 알게 되면, 어떤 노드라도 어플리케이션 관련 메시지를, 어플리케이션 관련 메시지에 대한 관심을 표현한 노드로 직접 전송할 수 있게 된다.
제3 연합 메커니즘은 모든 어플리케이션 관련 메시지를 그의 목적지(들)로 간접적으로 포워딩하는 피어 노드를 포함한다. 이 제3 메커니즘에서, 노드들은 예를 들어, 128비트 또는 160비트 식별자(ID) 등의 식별자(ID)를 할당받는다. 주어진 어플리케이션 관련 메시지에 대한 관심의 등록을 유지하는 일을 맡고 있는 노드는 어플리케이션 관련 메시지의 목적지 식별자(예를 들어, URI)를 이 128비트 또는 160비트 ID 공간으로 매핑(예를 들어, 해싱)함으로써 획득되는 것과 가장 가까운 ID를 갖는 것으로 판정될 수 있다.
이 제3 메커니즘에서, 노드 도착 및 출발은 전체 패브릭(fabric)에 걸쳐 플러딩된다. 반면에, 어떤 어플리케이션 관련 메시지에 대한 관심의 등록은 이러한 등록 정보를 유지하는 일을 맡고 있는 것으로 판정된 노드로 포워딩된다. 확장성, 부하 분산 및 장애허용성(fault-tolerance)을 위해, 어떤 어플리케이션 관련 메시지에 대한 관심의 등록을 수신하는 노드는 그의 이웃 세트(neighborhood set) 내에 그 등록 정보를 신뢰성있게 플러딩할 수 있다. 지정된 노드에 대한 이웃 세트는 지정된 노드의 ID의 양측에서 소정의 범위 내의 ID를 갖는 노드의 세트인 것으로 판정될 수 있다.
제2 메커니즘과 유사하게, 새로 가입하는 노드는 그의 존재를 알려주기 위해 예를 들어 WS-디스커버리 등의 브로드캐스트/멀티캐스트 발견 프로토콜을 이용하고 또 이미 연합 기반구조의 일부인 노드를 검출하기 위해 로컬 브로드캐스트/멀티캐스트 찾기(local broadcast/multicast find)를 발행한다. 새로운 노드는 발견된 노드와 파트너쉽을 설정하고 또 그 파트너쉽을 사용하여 연합 기반구조에 참여하고 있는 다른 새로운 노드의 존재에 관해 알게 된다. 새로운 노드는 이어서 새로 발견된 노드와 추가의 파트너쉽을 설정하고 임의의 새로 들어오는 파트너쉽 요청을 수락한다. 새로운 노드는 자신이 맡고 있는 그의 파트너들로부터 들어오는 어떤 어플리케이션 계층 관련 자원에 대한 관심의 등록을 수락하고 이들을 그의 이웃 세트에 걸쳐 플러딩할 수 있다. 따라서, 메시지들은 일반적으로 (예를 들어, 새로 가입하는 노드와 파트너를 이루고 있거나 파트너 노드가 알고 있는) 중간 라우팅 노드를 거쳐 그의 최종 목적지로 포워딩될 수 있다.
들어오는 어플리케이션 관련 메시지의 수신에 응답하여, 새로운 노드는 그 메시지를, 메시지에 지정된 목적지에 대한 등록 정보를 유지하는 일을 맡고 있을 수 있는 파트너 노드로 포워딩한다. 따라서, 이 제3 메커니즘을 사용할 때, 연합 기반구조 내의 모든 노드는 모든 다른 노드들에 대해 전반적으로 알고 있지만 등록 정보가 노드들 간에 효율적으로 분배된다. 어플리케이션 관련 메시지는 그 어플리케이션 관련 메시지에 대한 관심의 등록 정보를 유지하는 일을 맡고 있을 수 있는 파트너의 노드만을 통해 그의 최종 목적지로 전송된다. 따라서, 인다이렉션(indirection)은 처리되고 있는 메시지에 대한 관심의 등록 정보를 전반적으로 알고 있는 파트너 노드에만 포워딩함으로써 달성된다. 이것은 인다이렉션이 모든 파 트너 노드에 포워딩함으로써 달성되는 제1 메커니즘과 반대이다.
제4 연합 메커니즘은 다른 피어 노드들에 메시지를 라우팅하는 피어 노드를 포함한다. 이 제4 메커니즘은 적어도 노드 도착/출발 및 어떤 어플리케이션 관련 메시지에 대한 관심의 등록 둘다가 모두 플러딩되지 않고 라우팅된다는 점에서 제3 메커니즘과 다르다. 라우팅 프로토콜은 어플리케이션 관련 메시지와 그 어플리케이션 관련 메시지에 대한 관심을 표현하는 등록 메시지 간의 랑데뷰를 보장하도록 설계된다.
도 2는 요청들을 파트너에게로 간접적으로 라우팅하는 것을 용이하게 해주는 컴퓨터 아키텍처(200)의 예를 나타낸 것이다. 컴퓨터 아키텍처(200)는 연합 기반구조에 참여하고 있는 다수의 로컬 발견 범위(local discovery scope)에 걸쳐 분산되어 있을 수 있는 여러가지 유형의 컴퓨터 시스템 및 장치를 나타내고 있다.
워크스테이션(233)은 등록된 PnP 제공업체 인스턴스를 포함할 수 있다. 그의 파트너에게 이 PnP 제공업체 인스턴스의 존재를 알려주기 위해, 워크스테이션(233)은 연합 기반구조를 통해 등록 요청(201)을 라우팅한다. 등록 요청(201)은 처음에 랩탑(231)으로 포워딩되고, 이어서 랩탑(231)은 등록 요청(201)을 메시지 브로커(237)로 포워딩하고, 이어서 메시지 브로커(237)는 등록 요청(201)을 메시지 게이트웨이(241)로 포워딩한다. 메시지 게이트웨이(241)는 등록 정보 등록 요청(201)을 그의 데이터베이스에 저장하고 성공 메시지(204)를 워크스테이션(233)으로 반환한다.
그 후에, 다른 등록된 제공업체 인스턴스, 즉 이 경우에 서비스를 실행하고 있는 인스턴스는 워크스테이션(233) 내에서 활동을 하게 된다. 이 때, 노드는 메시지 게이트웨이(241)가 등록을 책임지고 있음을 알게 되고 등록 요청(205)을 메시지 게이트웨이(241)로 직접 포워딩한다. 메시지 게이트웨이(241)는 등록 정보 등록 요청(205)을 그의 데이터베이스에 저장하고 성공 메시지(206)를 워크스테이션(233)으로 반환한다.
그 후에, 프린터(236)(예를 들어, UPnP 프린터)는 전원이 켜지고 통지(announcement)(207)를 전송한다. 서버(234)는 통지(207)를 검출하고 등록 요청(208)을 메시지 브로커(237)로 라우팅한다. 메시지 브로커(237)는 등록 요청(208)을 메시지 게이트웨이(241)로 포워딩한다. 메시지 게이트웨이(241)는 등록 정보 등록 요청(208)을 그의 데이터베이스에 저장하고 성공 메시지(210)를 서버(234)로 반환한다.
그 후에, 개인용 컴퓨터(242)는 모든 장치들을 발견하기 위해 탐색 요청(lookup request)(211)을 발행한다. 개인용 컴퓨터(242)가 탐색 요청(211)을 어디로 포워딩해야 하는지를 모르기 때문에, 개인용 컴퓨터(242)는 탐색 요청(211)을 워크스테이션(243)을 통해 라우팅한다. 등록 및 탐색 요청이 동일한 목적지로 라우팅되기 때문에, 라우팅 프로토콜은 기본적으로 2개의 요청 간의 랑데뷰를 보장하며, 그 결과 워크스테이션(243)은 찾기 요청(find request)(211)을 메시지 게이트웨이(241)로 포워딩한다. 메시지 게이트웨이(241)는 그에 의해 유지된 등록 정보를 탐색하고 찾기 요청(211)을 워크스테이션(233) 및 서버(234) 둘다에게 포워딩한다. 워크스테이션(233) 및 서버(234)는 각각 응답 메시지(214, 216)를 개인용 컴 퓨터(242)로 전송한다.
이 제4 메커니즘은 요청에 지정된 등록에 대해 전반적으로 알고 있는 노드[메시지 게이트웨이(241)]로 요청을 (플러딩하지 않고) 라우팅함으로써 동작한다. 이 제4 메커니즘은 이하에 더욱 상세히 기술하는 바와 같이, 기본적으로 라우팅이 O(log N) 홉 내에 달성될 수 있도록 보장하며, 여기서 N은 연합 기반구조에 참여하고 있는 노드의 수이다. 이 제4 메커니즘이 노드 파트너쉽 및 등록 정보 둘다를 효율적으로 분배하기 때문에, 이는 초대규모 네트워크로, 심지어 인터넷으로까지 확장된다.
다수의 연합 메커니즘이 기술되어 있지만, 당업자에게는 본 설명을 검토한 후에는 다른 연합 메커니즘들이 가능하다는 것이 명백할 것이다.
연합 내의 노드들 간의 관계
따라서, 연합은 정보가 체계적이고 효율적으로 유포 및 탐색될 수 있는 동적이고 확장가능한 네트워크를 형성하기 위해 서로 협력하는 일련의 노드로 이루어져 있다. 노드들은 노드 식별자들의 도메인에 걸쳐 반사적(reflexive), 반대칭적(antisymmetric), 추이적(transitive), 총계적(total)인 그리고 정의된(defined) 이진 관계를 사용하여 정렬 리스트로서 연합에 참여하도록 조직되어 있다. 정렬 리스트의 양단은 연결되어 있으며, 따라서 링을 형성한다. 따라서, 리스트 내의 각 노드는 (모듈로 산술을 사용하는 결과로서) 그 자신을 정렬 리스트의 중간에 있는 것으로 볼 수 있다. 게다가, 리스트는 어떤 노드라도 양방향으로 리스트를 순회할 수 있도록 이중 연결되어 있다.
각각의 연합 노드는 0과 어떤 고정된 상한 사이에 있는 고정된 ID 세트로부터 [예를 들어, 중복 검출(duplicate detection)을 갖는 난수 발생기에 의해] ID를 할당받을 수 있다. 따라서, 고정된 상한의 ID에 1을 가산하면 0의 ID가 얻어진다, 즉 연결 리스트의 끝에서 연결 리스트의 시작으로 이동한다. 게다가, 노드 식별자의 값 도메인으로부터 노드 자신으로의 1:1 매핑 기능이 정의된다.
도 3은 예시적인 연결 리스트(304) 및 대응하는 링(306)을 나타낸 것이다. 이러한 링이 주어지면, 이하의 함수가 정의될 수 있다.
RouteNumerically(V, Msg): 노드 식별자의 값 도메인으로부터의 값 V 및 메시지 "Msg"가 주어지면, 그 메시지를, 매핑 함수를 사용하여 V에 매핑될 수 있는 식별자를 갖는 노드 X로 전달한다.
Neighborhood(X, S): 이웃은 카디낼리티(cardinality)가 S인, 노드 X의 양측에 있는 일련의 노드이다.
연합 내의 모든 노드가 링에 대해 전반적으로 알고 있는 경우, RouteNumerically(V, Msg)는 Msg를, V에 매핑 함수를 적용함으로써 획득되는 식별자를 갖는 노드 X로 직접 전송함으로써 구현된다. 다른 대안에서, 노드가 다른 노드들에 대해(예를 들어, 바로 인접한 노드들에 대해서만) 제한적으로 알고 있는 경우, RouteNumerically(V, Msg)는 메시지를, 목적지 노드 X에 도달할 때까지 링을 따라 연속한 노드들에 포워딩함으로써 구현된다.
다른 대안으로서(또한 유익하게도), 노드들은 (전반적으로 알 필요없이 또는 바로 인접한 노드들 간의 라우팅을 구현할 필요없이) 분산 이진 검색(distributed binary search)을 수행하기 위해 링에 관한 충분한 지식을 저장할 수 있다. 링 지식의 양은 링 지식을 유지하는 것이 각각의 노드에 충분히 작은 영향을 미치지만 라우팅 홉의 수의 감소로부터 향상된 라우팅 성능이 가능하도록 구성가능하다.
이전에 기술한 바와 같이, ID는 자연수의 충분히 큰 유계 집합(bounded set)에 걸쳐 정의된 "<"(보다 작다) 관계를 사용하여 할당받을 수 있으며, 이는 그의 범위가 0 이상 어떤 고정값 이하의 번호들의 유한 집합(finite set)에 걸쳐 있음을 의미한다. 따라서, 연합에 참여하고 있는 모든 노드는 0 이상 어떤 적절히 선택된 상한 이하의 자연수를 할당받는다. 이 범위는 엄격할 필요가 없으며, 노드에 할당된 번호들 간에 격차가 있을 수 있다. 노드에 할당된 번호는 링 내에서의 그의 식별자로서 기능한다. 매핑 기능은 2개의 노드 식별자 사이에 있는 번호를, 숫자상으로 그 번호에 가장 가까운 식별자를 갖는 노드에 매핑함으로써 번호 공간에서의 격차의 원인이 된다.
이 방법은 많은 이점을 갖는다. 각각의 노드에 균일하게 분포된 번호를 할당함으로써, 링의 모든 세그먼트가 균일하게 채워질 가능성이 높아진다. 게다가, 후손(successor), 선조(predecessor), 및 이웃(neighborhood) 계산이 모듈로 산술을 사용하여 효율적으로 행해질 수 있다.
소정 실시예들에서, 연합 노드는 (예를 들어, 난수 발생이 사용되는 경우) 2개의 노드가 동일한 ID를 할당받을 가능성이 거의 없을 정도로 큰 ID 공간 내로부터 ID를 할당받는다. 예를 들어, 노드는 0 내지 bn-1 범위의 ID를 할당받을 수 있 으며, 여기서 b는 예를 들어 8 또는 16이고, n은 예를 들어 128비트 또는 160비트의 등가 숫자(equivalent digit)이다. 따라서, 노드는 예를 들어 0 내지 1640-1(즉, 대략 1.461502E48)의 범위로부터의 ID를 할당받을 수 있다. 0 내지 1640-1의 범위는 예를 들어 인터넷 상의 모든 노드에 고유의 ID를 할당하기 위한 충분한 수의 ID를 제공할 것이다.
따라서, 연합 내의 각각의 노드는 이하의 것을 가질 수 있다.
0 내지 bn-1 범위에 균일하게 분포된 숫자값인 ID, 및
후손 노드(s),
선조 노드(p),
로 이루어진 라우팅 테이블.
여기서, b는 기수(number base)이고, n은 필드 크기(단위: 숫자의 개수)이며, u는 이웃 범위이고, v는 이웃 크기이며, 산술은 모듈로 bn으로 수행된다. 양호한 라우팅 효율 및 장애허용성을 위해, u 및 v의 값은 u=b 및 일 수 있으며, 여기서 N은 연합에 물리적으로 참여하고 있는 노드의 총수이다. N은 예를 들어 ID의 균일한 분포가 있을 때 b보다 크거나 같은 길이를 갖는 링 세그먼트에 존재하는 노드의 수로부터 추정될 수 있다. b 및 n에 대한 일반적인 값은 b=8 또는 16이고 n=128비트 또는 160비트의 등가 숫자이다.
따라서, 라우팅 노드는 링에 걸쳐 있는 로그 인덱스를 형성할 수 있다. 링 상에서의 노드의 위치에 따라, 예를 들어 (단, i=(1, 2,...,(n-1)임)의 세트 내의 각각의 번호에 기존의 노드가 있을 때 정밀한 로그 인덱스가 가능하다. 그렇지만, 그 세트 내의 각각의 번호에 기존의 노드가 없을 수도 있다. 그 경우에, 에 가장 가까운 노드가 라우팅 노드로서 선택될 수 있다. 그 결과 얻어지는 로그 인덱스는 정확하지 않고 그 세트 내의 어떤 번호들에 대한 고유의 라우팅 노드가 결여되어 있을 수조차 있다.
다시 도 3을 참조하면, 도 3은 정렬 리스트(304) 및 대응하는 링(306) 형태의 연합 기반구조 내의 노드들 간의 이진 관계의 예를 나타낸 것이다. 정렬 리스트(304)의 ID 공간은 0 내지 28-1(즉, 255)의 범위 내에 있다. 즉, b=2이고 n=8이다. 따라서, 도 3에 도시된 노드들은 0 내지 255 범위의 ID를 할당받는다. 정렬 리스트(304)는 노드 식별자의 도메인에 걸쳐 반사적, 반대칭적, 추이적, 총계적인 그리고 정의된 이진 관계를 이용한다. 정렬 리스트(304)의 양단이 연결되어 있으며, 그에 따라 링(306)을 형성한다. 이것에 의해 도 3 내의 각각의 노드는 그 자신을 정렬 리스트(304)의 중간에 있는 것으로 볼 수 있게 된다. 정렬 리스트(304) 는 어떤 노드라도 양방향으로 정렬 리스트(304)를 순회할 수 있도록 이중 연결되어 있다. 정렬 리스트(304)[또는 링(306)]을 순회하기 위한 산술은 모듈로 28로 수행된다. 따라서, 255(즉, 정렬 리스트(304)의 끝) + 1 = 0(즉, 정렬 리스트(304)의 시작)이다.
라우팅 테이블은 ID(64)의 후손이 ID(76)[ID(64)로부터 시계방향으로 바로 있는 ID]임을 나타낸다. 후손은 예를 들어 새로운 노드(예를 들어, 71의 ID)가 가입하거나 기존의 노드[예를 들어, ID(76)]가 연합 기반구조에서 나갈 때 변할 수 있다. 이와 마찬가지로, 라우팅 테이블은 ID(64)의 선조가 ID(50)[ID(64)로부터 반시계방향으로 바로 있는 ID]임을 나타낸다. 선조는 예를 들어 새로운 노드(예를 들어, 59의 ID)가 가입하거나 기존의 노드[예를 들어, ID(50)]가 연합 기반구조에서 나갈 때 변할 수 있다.
라우팅 테이블은 또한 ID(64)에 대한 이웃 노드 세트가 ID(83, 76, 50, 46)을 가짐을 나타낸다. 이웃 노드 세트는 ID(64)의 지정된 범위(즉, 이웃 범위 u) 내에 있는 지정된 수의 노드(즉, 이웃 크기 v)일 수 있다. 예를 들어 V=4 및 U=10 등의 다양한 서로 다른 이웃 크기 및 이웃 범위가 잠재적으로는 일련의 이웃 노드를 식별하는 데 사용될 수 있다. 이웃 세트는 예를 들어 노드들이 가입하거나 연합 기반구조를 나갈 때 또는 지정된 수의 노드 또는 지정된 범위가 변동될 때 변할 수 있다.
라우팅 테이블은 또한 ID(64)가 ID(200, 2, 30, 46, 50, 64, 64, 64, 76, 83, 98, 135, 200)를 갖는 노드들로 라우팅될 수 있음을 나타낸다. 이 리스트는 (단, i=(1, 2, 3, 4, 5, 6, 7)임) 세트 내의 각각의 번호에 가장 가까운 노드를 식별함으로써 생성된다. 즉, b=2이고 n=8이다. 예를 들어, ID(76)을 갖는 노드는 64+23, 즉 72에 가장 가까운 노드를 계산하는 것으로부터 식별될 수 있다.
노드는 메시지(예를 들어, 자원에 대한 접근의 요청)를 선조 노드, 후손 노드, 이웃 노드 세트 내의 임의의 노드, 또는 임의의 라우팅 노드로 직접 라우팅할 수 있다. 소정 실시예들에서, 노드는 메시지를 라우팅하기 위해 숫자 라우팅 함수(numeric routing function)를 구현한다. 따라서, RouteNumerically(V, Msg)는 Msg를, V에 숫자상으로 가장 가까운 ID를 갖는 연합 내의 노드 Y로 전달하고 또 노드 Y의 ID를 노드 X로 반환하기 위해 노드 X에서 구현될 수 있다. 예를 들어, ID(64)를 갖는 노드는 메시지가 ID(250)를 갖는 노드로 라우팅되도록 하기 위해 RouteNumerically(243, Msg)를 구현할 수 있다. 그렇지만, ID(250)가 ID(64)에 대한 라우팅 노드가 아니기 때문에, ID(64)는 메시지를 ID(2)(243에 가장 가까운 라우팅 노드)로 라우팅할 수 있다. ID(2)를 갖는 노드는 이어서 메시지가 ID(250)를 갖는 노드로 (직접 또는 다른 중간 노드를 통해) 라우팅되도록 하기 위해 RouteNumerically(243, Msg)를 구현할 수 있다. 따라서, RouteNumerically 함수가 재귀적으로 호출될 수 있으며, 각각의 호출은 목적지에 더 가깝게 메시지를 라우팅한다.
유익하게도, 본 발명의 다른 실시예들은 하나 이상의 근접 카테고리(예를 들 어, 지리적 경계, 라우팅 특성(예를 들어, IP 라우팅 홉), 관리 도메인, 조직 경계, 기타 등등)의 복수의 근접 기준에 기초하여 링을, 링들의 링 또는 링들의 트리로 분할하는 것을 용이하게 해준다. 링이 동일한 유형의 근접 기준을 사용하여 2회 이상 분할될 수 있음을 이해해야 한다. 예를 들어, 링은 대륙 근접 기준(continent proximity criteria) 및 국가 근접 기준(country proximity criteria)(둘다 지리적 경계 근접 카테고리임)에 기초하여 분할될 수 있다.
ID가 (난수 발생의 결과로서) ID 공간에 걸쳐 균일하게 분포될 수 있기 때문에, 근접 클래스가 거의 동일한 카디낼리티를 갖는다면, 원형 ID 공간의 임의의 주어진 세그먼트가 서로 다른 근접 클래스에 속하는 노드를 포함할 확률이 높다. 의미있는 통계적 거동을 획득하기에 충분한 수의 노드가 있을 때는 확률이 더욱 증가한다.
따라서, 임의의 주어진 노드의 이웃 노드는 일반적으로 근접성(proximality)의 관점에서 볼 때 잘 분산되어 있다. 게시된 어플리케이션 상태가 이웃 노드들 간에 복제될 수 있기 때문에, 게시된 정보도 역시 근접성의 관점에서 볼 때 잘 분산될 수 있다.
도 4는 근접 라우팅(proximal routing)을 용이하게 해주는 링들의 링(400)을 나타낸 것이다. 링(401)은 마스터 또는 루트 링으로 볼 수 있으며, 각각의 링(402, 403, 404) 내의 모든 노드를 포함한다. 각각의 링(402, 403, 404)은 지정된 근접 기준에 기초하여 분할된 링(401)으로부터의 노드들의 서브셋을 포함한다. 예를 들어, 링(401)은 지리적 위치에 기초하여 분할될 수 있으며, 여기서 링(402)은 북아메리카 내의 노드들을 포함하고, 링(403)은 유럽 내의 노드들을 포함하며, 링(404)은 아시아 내의 노드들을 포함한다.
65,536(216)개의 ID를 포함하는 숫자 공간에서, ID(5,345)를 갖는 북아메리카 노드로부터 ID(23,345)를 갖는 아시아 노드로 메시지를 라우팅하는 것은 아시아 노드의 이웃 노드가 식별될 때까지 링(402) 내에서 메시지를 라우팅하는 것을 포함할 수 있다. 이어서, 이웃 노드는 그 메시지를 아시아 노드로 라우팅할 수 있다. 따라서, 북아메리카 노드와 아시아 노드 사이에서 단일 홉(다중 홉과 반대임)이 행해진다. 그에 따라, 자원 효율적인 방식으로 라우팅이 수행된다.
도 5는 근접 라우팅을 용이하게 해주는 링들의 예시적인 근접 유도 분할 트리(proximity induced partition tree)(500)를 나타낸 것이다. 도시된 바와 같이, 링들의 분할 트리(500)는 다수의 링을 포함한다. 각각의 링은 정렬 연결 리스트의 부분을 나타낸다. 복수의 노드를 포함하는 각각의 링은 정렬 연결 리스트 내의 ID를 갖는다. 그렇지만, 잠재적인 노드의 숫자로 인해, 명백함을 위해, 노드는 링에 명시적으로 나타내어져 있지 않다[예를 들어, 분할 트리(500)의 ID 공간은 b=16 및 n=40일 수 있다].
분할 트리(500)에서, 루트 링(501)은 기준(571)(제1 관리 도메인 경계 기준)에 기초하여, 서브링(511, 512, 513, 514)을 포함하는 복수의 서브링으로 분할된다. 예를 들어, DNS 이름의 각각의 성분은 근접 기준으로 간주될 수 있으며, 이 때 그들 간의 부분 순서는 우로부터 좌로 읽을 때 DNS 이름에서 나타나는 순서에 따라 유도된다. 따라서, 서브링(511)은 기준(581)(제2 관리 도메인 경계 기준)에 따라 서브링(521, 522, 523)을 포함하는 복수의 서브링으로 추가로 분할될 수 있다.
서브링(522)은 기준(572)(지리적 경계 기준)에 기초하여, 서브링(531, 532, 533)을 포함하는 복수의 서브링으로 추가로 분할될 수 있다. 위치 기반 근접 기준은 대륙, 국가, 우편 번호, 및 기타 등등으로 된 라인을 따라 부분적으로 순서화될 수 있다. 우편 번호 자체는 계층적으로 구성되어 있으며, 이는 우편 번호가 근접 기준의 부분 순서 서브리스트(partially ordered sub-list)를 추가로 유도하는 것으로 볼 수 있음을 의미한다.
서브링(531)은 기준(573)(제1 조직 경계 기준)에 기초하여, 서브링(541, 542, 543, 544)을 포함하는 복수의 서브링으로 추가로 분할될 수 있다. 근접 기준의 부분적으로 순서화된 리스트는 국, 부, 및 제품 사업본부 등의 주어진 회사가 조직상 어떻게 구성되어 있는지의 라인을 따라 유도될 수 있다. 따라서, 서브링(543)은 기준(583)(제2 조직 경계 기준)에 기초하여, 서브링(551, 552)을 포함하는 복수의 서브링으로 추가로 분할될 수 있다.
분할 트리(500)에서, 각각의 노드는 단일의 ID를 가지며, 루트(root)로부터 리프(leaf)로의 대응하는 분할 경로를 따라 링에 참여한다. 예를 들어, 서브링(552)에 참여하는 각각의 노드는 또한 서브링(543, 531, 522, 511) 및 루트(501)에 참여하고 있다. 목적지 노드(ID)로의 라우팅은 다음과 같이 RouteNumerically 함수를 구현함으로써 달성될 수 있다.
RouteNumerically(V, Msg, P): 노드 식별자의 도메인으로부터의 값 V 및 메시지 "Msg"가 주어지면, 그 메시지를, 근접 기준 P에 의해 등가인 것으로 간주되는 노드들 중에서 V에 매핑될 수 있는 식별자를 갖는 노드 Y로 전달한다.
따라서, 라우팅은 목적지가 현재의 노드와 그의 후손 또는 선조 노드 사이에 있다는 조건으로부터 판정되는 바와 같이 그 링 내에서의 라우팅에 의해서는 더 이상 진행할 수 없을 때까지 점차적으로 주어진 링 내의 목적지 노드에 더 가까이 이동함으로써 달성될 수 있다. 이 때, 현재의 노드는 그가 참여하고 있는 그 다음으로 큰 링 내의 그의 파트너 노드를 통해 라우팅하기 시작한다. 분할 경로를 따라 루트 링쪽으로 올라감으로써 목적지 노드쪽으로 점차적으로 이동하는 이 프로세스는 RouteProximally 호출에서 최초로 지정된 바와 같이, 요청된 근접 컨텍스트(proximal context) 내에서 목적지 노드에 가장 가까운 노드에 도달될 때 종료된다.
라우팅 홉(routing hop)은 목적지 노드가 요청을 발신한 노드의 근접 이웃 외부에 있기 때문에 그 이웃 내에서 더 이상 진행할 수 없을 때까지 그 이웃에 여전히 있을 수 있다. 이 때, 근접 기준은 근접 이웃의 크기를 증가시켜 추가의 진행을 하기 위해 완화된다. 이 프로세스는 근접 이웃이 목적지 노드(ID)를 포함하도록 충분히 확장될 때까지 반복된다. 근접 이웃 기준의 각각의 연속적인 완화 이후에 행해지는 라우팅 홉은 근접 공간에서의 잠재적으로 더 큰 점프일 수 있는 반면 이전의 홉에 비해 숫자 공간에서 대응하는 더 작은 점프를 한다. 따라서, 절대적으로 요구되는 횟수의 이러한 [링 간(inter-ring)] 홉만이 목적지에 도달되기 전 에 행해진다.
게시된 어플리케이션 데이터가 목적지 노드의 이웃 노드들 간에 복제될 때 분할 트리 아래쪽에 복제되기 때문에, 탐색 메시지를 위한 어떤 홉이 회피되는 경우가 있을 수 있다.
근접 라우팅을 달성하기 위해, 각각의 연합 노드는 그가 멤버(단일 링에 대한 후손 및 선조와 유사함)로서, 즉 근접 선조, 근접 후손, 및 근접 이웃으로서 참여하고 있는 모든 링 내의 그의 후손 및 선조 노드에 대한 참조를 유지한다. 라우팅을 효율적이게 하기 위해, 노드는 또한 라우팅 파트너(단일 링에 대한 라우팅 노드와 유사함)로서 링의 어느 반쪽 상에서 지수적으로 증가하는 거리에 가장 가까운 다른 노드들에 대한 참조를 유지할 수 있다. 소정 실시예들에서, 한 쌍의 연속적인 후손 또는 선조 노드 사이에 있는 라우팅 파트너 노드는 현재의 노드 및 후손 또는 선조 노드 쌍 중에서 그에 숫자상으로 가장 가까운 노드에 의해 각각 공유되는 동일한 최하위 링에 참여한다. 따라서, 목적지 노드쪽으로의 라우팅 홉은 더 진행해야 할 필요가 절대적으로 있을 때만 완화된 근접 기준을 사용하는 것으로 전환된다(즉, 상위 링으로의 전환). 따라서, 메시지가 대응하는 연합 노드와 효율적으로 랑데뷰될 수 있다.
소정 실시예들에서, 노드는 등가성 기준 관계(equivalence criteria relations)에 기초하여 메시지를 라우팅하기 위해 근접 라우팅 함수를 구현한다. 따라서, 번호 V 및 메시지 "Msg"가 주어지면, 노드는 메시지를, 근접 기준 P에 의해 등가인 것으로 간주되는 노드들 중에서 V로 매핑될 수 있는 ID를 갖는 노드 Y로 전달하기 위해 RouteProximally(V, Msg, P)를 구현할 수 있다. 근접 기준 P은 그에 의해 근접성에 있어서 등가(proximally equivalent)인 것으로 간주되는 모든 노드에 대한 공통 조상인 분할 트리 내의 최하위 링을 식별한다. 근접 기준은 루트 링으로부터 경로 분리 문자 '/'에 의해 분리되어 있는 근접 기준에 의해 식별된 링까지의 경로를 따라 발견되는 근접 기준을 연결함으로써 획득되는 문자열로서 표현될 수 있다. 예를 들어, 서브링(542)을 식별하는 근접 기준은 "Proximity:/.COM/Corp21/LocationA/Div2"로서 표현될 수 있다. 분할 트리(500) 내의 각각의 링은 예를 들어 SHA 기반 알고리즘으로 그의 표현 문자열을 해싱함으로써 고유의 번호를 할당받을 수 있다. 번호 0이 루트 링을 위해 예약되어 있는 경우, RouteNumerically(V, Msg) ≡ RouteProximally(V, Msg, 0)인 것으로 추론될 수 있다.
예를 들어, 서브링(544) 내의 노드는 서브링(531) 내의 (예를 들어, 서브링(513) 내의 노드에) 더 가까운 노드를 식별하기 위해 RouteProximally를 구현할 수 있다. 이어서, 서브링(531)은 서브링(522) 내의 더 가까운 노드를 식별하기 위해 RouteProximally를 구현할 수 있다. 이와 마찬가지로, 서브링(522)은 서브링(511) 내의 더 가까운 노드를 식별하기 위해 RouteProximally를 구현할 수 있다. 이와 유사하게, 서브링(511)은 링(501) 내의 더 가까운 노드를 식별하기 위해 RouteProximally를 구현할 수 있다. 따라서, RouteProximally 함수는 재귀적으로 호출될 수 있으며 각각의 호출은 메시지를 목적지에 더 가깝게 라우팅한다.
따라서, 근접 기준이 고려될 때, 최종 목적지까지의 경로 상의 라우팅 홉은 목적지 노드에 도달하거나 선택된 근접 조건 하에서 더 이상 진행할 수 없을 때(이 시점에서 목적지쪽으로 더 진행하기에 충분하도록 근접 조건이 완화됨)까지 숫자 공간에서 발신 노드와 목적지 노드 사이에서 상당한 진행을 하면서 요청을 발신하는 노드에 근접하여 있을 수 있다. 예를 들어, 근접 기준은 메시지가 링(531)에서 위로 링(522) 등등까지 라우팅되도록 충분히 완화될 수 있다.
근접에 대한 상기 방법을 사용하여, 게시된 정보를 주어진 링으로 한정시키는 것이 가능하다. 예를 들어, 조직은 조직 관련 정보를 그의 신뢰 도메인 외부의 엔티티들이 (1) 그의 도메인 외부의 노드로의 이웃 복제(neighborhood replication)의 형태로 묵시적으로 또는 (2) 이러한 정보에 대한 탐색 요청을 서비스하는 형태로 명시적으로 이용할 수 없도록 보장하고자 할 수 있다. 첫번째 측면은 지정된 링 내의 목표 ID에 이웃하는 노드들 간에만 게시된 정보를 복제함으로써 충족된다. 노드에 의해 발신된 모든 메시지가 그가 속하는 링들을 루트 링쪽으로 계속하여 올라감으로써 라우팅되기 때문에, 조직 내에서 발신된 모든 탐색 요청들이 그 조직으로 한정된 게시된 정보를 찾아낼 수 있는 가능성이 높으며 그에 따라 두번째 측면을 묵시적으로 충족시킨다.
또한, 조직은 그의 신뢰 도메인 외부의 노드들과 자동적으로 연합하는 노드를 싫어한다. 이것은 예를 들어 방문 세일즈 맨이 그의 랩탑 컴퓨터를 고객 구내에 있는 네트워크에 연결할 때 일어날 수 있다. 이상적으로는, 세일즈 맨이 소유하는 랩탑 컴퓨터는 그의 홈 도메인에 게시된 정보를 찾아내고 및/또는 그의 최하위 양호한 근접 링부터 시작하여 그의 홈 도메인 내의 노드들과 연합하기를 원한 다. 고객의 도메인에 있는 노드들과 연합하는 것은 일반적으로 허용되지 않는다. 이 시나리오를 지원하려면 홈 도메인에서 씨드 노드(seed node)를 찾아낼 수 있어야 한다. 이러한 씨드 노드는 홈 도메인에 게시된 정보를 찾아내고, 홈 연합(home federation)에 가입하며 또 도메인에 걸쳐 게시된 정보를 선택적으로 가져오기(import) 및 내보내기(export)하는데 사용될 수 있다. 씨드 노드는 또한 때로 메시지 게이트웨이(message gateway)라고도 한다.
다른 실시예들에서, 엔티티는 루트 링에 씨드 노드에 대한 참조를 게시한다. 씨드 노드는 (목표 ID로서의) 링과 연관된 고유 번호(그의 표현 문자열을 해싱함으로써 획득된 것 등)로 게시될 수 있다. 씨드 노드 정보는 또한 루트 링 내의 대응하는 목표 ID로의 경로 상에 있는 여러가지 링 내의 노드들에 의해 주문형 캐싱(on-demand cache)될 수 있다. 이러한 주문형 캐싱은 성능 개선 및 반정적 정보(semi-static information)가 아주 빈번히 탐색될 때 일어날 수 있는 상습 병목지점(hotspot)의 감소를 제공한다. 씨드 노드 정보는 또한 DNS 등의 다른 수단을 통해 획득될 수 있다.
제한된 게시 정보에 대한 장애허용성을 제공하기 위해, 각각의 노드는 그가 참여하는 모든 링 내의 이웃 노드 세트를 유지할 수 있다. 상기의 것이 주어진 경우, 노드에 의해 유지된 상태는 다음과 같이 요약될 수 있다.
● 0 내지 bn-1 범위에 균일하게 분포된 숫자값인 ID
● 이하의 것으로 이루어진 라우팅 테이블(모든 산술은 모듈로 bn으로 행해 짐)
○ 노드들이 참여하고 있는 각각의 링, 예를 들어 링 d에 대해,
■ 후손 노드(sd)
■ 선조 노드(pd)
여기서, b는 기수(number base)이고, n은 필드 크기(단위: 숫자의 개수)이며, u는 이웃 범위이고, v는 이웃 크기이다.
유의할 점은 링 "d" 내의 주어진 노드에 의해 유지되는 이웃 노드의 서브셋이, 주어진 노드도 역시 참여하고 있는 자식 링 "d+1"에 이웃 노드로서 다시 나타날 수 있다는 것이다. 그 자체로서, 주어진 노드가 참여하고 있는 모든 D개의 링에 걸쳐 주어진 노드에 의해 유지되는 이웃 노드의 총 수에 관한 상한을 으로서 도출할 수 있다. 이것은 주어진 노드에 대한 하나의 참조만이 유지되고 최악의 경우의 상한이 균형 트리(balanced tree)에 대한 것임을 고려한다.
유의할 점은 링이 복수의 대응하는 형제 서브링(sibling sub-ring)으로 분할될 때, 지정된 노드가 예를 들어 엘리어싱(aliasing)을 통해 동시에 복수의 대응하는 형제 서브링 중 2개 이상에 참여하는 것이 허용된다는 것이다. 엘리어싱은 예를 들어 서로 다른 형제로부터의 서로 다른 상태를 지정된 노드와 연관시키기 위해 구현될 수 있다. 따라서, 주어진 노드에 대한 별칭(alias)이 동일한 ID를 가지더라도, 각각의 별칭은 그와 연관된 별개의 상태를 가질 수 있다. 엘리어싱에 의해 지정된 노드는 반드시 보다 구체적인 근접 기준의 공통 선조일 필요는 없는, 별개의 근접 기준을 갖는 다수의 링에 참여할 수 있다. 즉, 지정된 노드는 근접 트리(proximity tree)의 다수의 브랜치(branch)에 참여할 수 있다.
예를 들어, 듀얼 NIC (유선 및 무선) 랩탑은 랩탑과 동일한 LAN 세그먼트를 공유하는 다른 무선 및 유선 노드 둘다와 근접성에 있어서 등가(proximally equivalent)인 것으로 간주될 수 있다. 그렇지만, 이들 2개의 별개의 근접 기준은 예를 들어 조직상 소속 관계에 기초하는 기준 등의 다른 상위 우선순위 근접 기준의 적용 후에만 적용가능한 서브기준으로서 모델링될 수 있다. 랩탑이 동일한 조직에 속할 때, 1) 유선 LAN 세그먼트에서의 소속 관계 및 2) 무선 LAN 세그먼트에서의 소속 관계를 나타내는 2개의 서브링 내의 엘리어싱된 노드는 랩탑이 속하는 조직을 나타내는 링 내의 단일 노드로 병합된다. RouteProximally가 엘리어싱의 존재 시에 어떤 수정없이 예상대로 동작한다는 것을 이해해야 한다.
각각의 근접 링은 (잠재적으로 서로 다른) 링 파라미터에 따라 구성될 수 있다. 링 파라미터는 이웃을 정의하는 데(예를 들어, 링 파라미터는 이웃 범위, 이 웃 크기, 핑 메시지 및 출발 메시지 타이밍, 그리고 핑 및 출발 메시지에 대한 분포 패턴을 나타낼 수 있음), (예를 들어, 상기 기술한 제1 내지 제4 연합 메커니즘 중에서 또는 다른 연합 메커니즘 중에서) 특정의 연합 메커니즘을 나타내는 데, 또는 동일한 근접 링 내의 라우팅 파트너들 간의 통신 상세(communication specifics)를 정의하는 데 사용될 수 있다. 일부 링 파라미터는 보다 일반적이어서 복수의 서로 다른 연합 메커니즘에 적용될 수 있는 반면, 다른 링 파라미터는 보다 구체적이고 특정의 유형의 연합 메커니즘에 적용된다.
상위 레벨 근접 링을 구성하는 데 사용되는 링 파라미터는 소정 실시예들에서 하위 레벨 근접 링에 의해 상속될 수 있다. 예를 들어, 링(543)은 링(531)의 링 파라미터 중 어떤 것을 상속할 수 있다(링(531)은 차례로 링(522)으로부터 상속하고 이하 마찬가지다). 따라서, 링(531)과 연관된 이웃 크기 및 이웃 범위는 또한 링(541)과 연관되어 있다.
그렇지만, 상속된 링 파라미터는 변경될 수 있고 및/또는 근접 링은 서로 다른 링 파라미터에 따라 개별적으로 구성될 수 있다. 예를 들어, 링(511)은 많은 수의 노드를 포함하는 관리 도메인에 대한 것이고 따라서 상기한 제4 연합 메커니즘은 링(511)에 대해 더 적합할 수 있다. 반면에, 링(521)은 비교적 적은 수의 노드를 갖는 소기업에 대한 것이고 따라서 상기한 제2 연합 메커니즘이 링(521)에 대해 더 적합할 수 있다. 따라서, 링(521)과 연관된 링 파라미터는 링(511)과 연관된 링 파라미터와 다른 값으로 설정될 수 있다(또는 상속된 파라미터가 그 링 파라미터와 다른 값으로 변경될 수 있다). 예를 들어, 특정의 유형의 연합 메커니즘을 나타내는 링 파라미터는 링(511)과 링(521) 간에 서로 다를 수 있다. 이와 유사하게, 이웃을 정의하는 파라미터는 링(511)과 링(521) 간에 서로 다를 수 있다. 게다가, 링(521)은 상기한 제2 연합 메커니즘에 관련된 특정의 파라미터에 따라 구성될 수 있는 반면, 링(511)은 상기한 제4 연합 메커니즘에 관련된 부가적인 특정의 파라미터에 따라 구성된다.
따라서, 근접 링은 근접 링 내의 노드들의 특성(예를 들어, 수, 포함된 자원, 기타 등등)에 기초하여 유연성있게 구성될 수 있다. 예를 들어, 관리자는 (예를 들어, 사용자 인터페이스를 통해) 구성 절차를 사용하여 근접 링에 대한 링 파라미터를 선택할 수 있다. 구성 절차는 예를 들어 달리 상속된 링 파라미터를 무효화시키기 위해 근접 링들 간의 상속 관계를 구성하는 것은 물론, 개별적인 근접 링을 구성하는 것을 용이하게 해줄 수 있다.
도 8은 연합 기반구조의 노드들을 분할하는 방법(800)의 예시적인 흐름도를 나타낸 것이다. 방법(800)은 도 5의 분할 트리(500)의 링과 관련하여 기술된다. 방법(800)은 연합 기반구조 내의 노드들에 할당된 노드 ID를 포함하는 정렬 연결 리스트에 액세스하는 단계(단계 801)를 포함한다. 예를 들어, 링(501)으로 나타내어진 정렬 연결 리스트가 액세스될 수 있다. 정렬 연결 리스트의 노드 ID[링(501) 상에 나타낸 노드들]는 연합 기반구조[예를 들어, 연합 기반구조(100)] 내의 노드를 나타낼 수 있다.
방법(800)은 정렬 연결 리스트를 분할하기 위한 복수의 서로 다른 근접 기준을 나타내는 근접 카테고리에 액세스하는 단계(단계 802)를 포함한다. 예를 들어, 도메인 경계(561), 지리적 경계(562) 및 조직 경계(563)를 나타내는 근접 기준이 액세스될 수 있다. 그렇지만, 신뢰 도메인 경계 등의 다른 근접 기준도 역시 액세스된 근접 기준에 나타내어져 있을 수 있다. 근접 카테고리는 이전에 생성된 근접 기준 부분적으로 순서화된 리스트(partially ordered lists of proximity criteria)를 포함할 수 있다. 근접 기준의 부분적으로 순서화된 리스트에 기초하여 링이 분할될 수 있다.
방법(800)은 제1 근접 기준에 기초하여 정렬 연결 리스트를 하나 이상의 제1 서브 리스트로 분할하되, 하나 이상의 제1 서브리스트 각각은 정렬 연결 리스트로부터의 노드 ID의 서브셋을 적어도 포함하도록 분할하는 단계(단계 803)를 포함한다. 예를 들어, 링(501)은 기준(571)에 기초하여 서브링(511, 512, 513, 514)으로 분할될 수 있다. 각각의 서브링(511, 512, 513, 514)은 링(501)으로부터의 노드 ID의 서로 다른 서브셋을 포함할 수 있다.
방법(800)은 하나 이상의 제1 서브리스트 중에서 선택된 제1 서브리스트를, 제2 근접 기준에 기초하여 하나 이상의 제2 서브리스트로 분할하되, 하나 이상의 제2 서브리스트 각각이 제1 서브리스트에 포함된 노드 ID의 서브셋을 적어도 포함하도록 분할하는 단계(단계 804)를 포함한다. 예를 들어, 서브링(511)은 기준(581)에 기초하여 서브링(521, 522, 523)으로 분할될 수 있다. 각각의 서브링(521, 522, 523)은 서브링(511)으로부터의 노드 ID의 서로 다른 서브셋을 포함할 수 있다.
도 9는 노드의 라우팅 테이블을 채우는 방법(900)의 예시적인 흐름도를 나타 낸 것이다. 방법(900)은 도 3의 정렬 연결 리스트(304) 및 링(306)과 관련하여 기술된다. 방법(900)은 선조 노드를 라우팅 테이블에 삽입하되, 선조 노드가 정렬 연결 리스트의 제1 방향에서 현재 노드에 대해 현재 노드 앞에 오도록 삽입하는 단계(단계 901)를 포함한다. 예를 들어, ID(50)를 갖는 노드는 ID(64)를 갖는 노드(현재 노드)에 대한 선조로서 라우팅 테이블에 삽입될 수 있다. 시계 방향(321)으로[정렬 연결 리스트(304)의 끝 A로부터 정렬 연결 리스트(304)의 끝 B쪽으로] 이동하면, ID(50)를 갖는 노드는 ID(64)를 갖는 노드 앞에 오게 된다. 선조 노드를 삽입하는 것은 현재 노드가 선조 노드의 파트너가 되고 선조 노드가 현재 노드의 파트너가 되도록, 현재 노드와 선조 노드 간에 대칭적 파트너쉽을 설정할 수 있다.
방법(900)은 후손 노드를 라우팅 테이블에 삽입하되, 후손 노드가 정렬 연결 리스트에서 제2 반대 방향으로 현재 노드에 대해 현재 노드 뒤에 오도록 삽입하는 단계(단계 902)를 포함한다. 예를 들어, ID(76)를 갖는 노드는 ID(64)를 갖는 노드(현재 노드)에 대한 후손으로서 라우팅 테이블에 삽입될 수 있다. 반시계 방향(322)으로 이동하면, ID(76)를 갖는 노드는 ID(64)를 갖는 노드 뒤에 오게 된다. 후손 노드를 삽입하는 것은 현재 노드가 후손 노드의 파트너가 되고 후손 노드가 현재 노드의 파트너가 되도록, 현재 노드와 후손 노드 간에 대칭적 파트너쉽을 설정할 수 있다.
방법(900)은 라우팅 테이블에 적절한 이웃 노드를 삽입하되, 이웃 노드가 이웃 범위 및 이웃 크기에 기초하여 제1 방향 및 제2 반대 방향 양쪽에서 정렬 연결 리스트로부터 식별되도록 삽입하는 단계(단계 903)를 포함한다. 예를 들어, ID(83, 76, 50, 46)를 갖는 노드는 ID(64)를 갖는 노드(현재 노드)에 대한 이웃 노드로서 라우팅 테이블에 삽입될 수 있다. 20의 이웃 범위 및 4의 이웃 크기에 기초하여, ID(83, 76)를 갖는 노드는 시계 방향(321)에서 식별될 수 있고 ID(50, 46)를 갖는 노드는 반시계 방향(322)[정렬 연결 리스트(304)의 끝 B에서 정렬 연결 리스트(304)의 끝 A로 이동]에서 식별될 수 있다. 어떤 환경에서는, 어떤 적절한 이웃 노드도 식별되지 않을 수 있다. 이웃 노드를 삽입하는 것은 현재 노드가 이웃 노드의 파트너가 되고 이웃 노드가 현재 노드의 파트너가 되도록, 현재 노드와 이웃 노드 간에 대칭적 파트너쉽을 설정할 수 있다.
방법(900)은 라우팅 노드가 연합 기반구조에 대한 ID 공간의 기수 및 필드 크기에 기초하여 제1 및 제2 방향 양쪽에서 정렬 연결 리스트로부터 식별되는 적절한 라우팅 노드를 라우팅 테이블에 삽입하되, 라우팅 노드가 제1 및 제2 방향 양쪽에서 정렬 연결 리스트의 로그 인덱스를 나타내도록 삽입하는 단계(단계 904)를 포함한다. 예를 들어, ID(200, 2, 30, 46, 50, 64, 64, 64, 64, 76, 83, 98, 135, 200)을 갖는 노드는 ID(64)를 갖는 노드에 대한 라우팅 노드로서 라우팅 테이블에 삽입될 수 있다. 2의 기수 및 8의 필드 크기에 기초하여, ID(64, 64, 76, 83, 98, 135, 200)를 갖는 노드는 방향(321)에서 식별될 수 있고, ID(64, 64, 50, 46, 30, 2, 200)를 갖는 노드는 방향(322)에서 식별될 수 있다. 링(306) 내부에 나타낸 바와 같이, 라우팅 노드는 시계 방향(321) 및 반시계 방향(322) 양쪽에서 정렬 연결 리스트(304)의 로그 인덱스를 나타낸다. 라우팅 노드를 삽입하는 것은 현재 노드가 라우팅 노드의 파트너가 되고 라우팅 노드가 현재 노드의 파트너가 되도록, 현 재 노드와 라우팅 노드 간에 대칭적 파트너쉽을 설정할 수 있다.
도 7은 근접 기준을 고려하는 노드 라우팅 테이블을 채우는 방법(700)의 예시적인 흐름도를 나타낸 것이다. 방법(700)은 도 5의 링과 관련하여 기술된다. 방법(700)은 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 선조 노드를 라우팅 테이블에 삽입하는 단계(701)를 포함한다. 각각의 선조 노드는 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링 내에서 제1 방향(예를 들어, 시계 방향)에서 현재 노드 앞에 온다. 계층적으로 분할된 라우팅 링은 대응하는 근접 기준에 따라 분할되고 양방향 연결 리스트의 서브셋(및 아마도 양방향 연결 리스트 전부)을 적어도 포함한다. 예를 들어, 지정된 노드가 루트 링(501) 및 서브링(511, 522, 523, 531, 542)에 참여할 수 있다. 따라서, 선조 노드는 링(501) 및 서브링(511, 522, 523, 531, 542) 각각의 내부로부터 지정된 노드에 대해 선택된다.
방법(700)은 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링의 후손 노드를 라우팅 테이블에 삽입하는 단계(단계 702)를 포함한다. 각각의 후손 노드는 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링 내에서 제2 반대 방향으로 현재 노드 뒤에 온다. 예를 들어, 후손 노드는 링(501) 및 서브링(511, 522, 523, 531, 542) 각각의 내부로부터 지정된 노드에 대해 선택된다.
방법(700)은 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 적절한 이웃 노드를 라우팅 테이블에 삽입하는 단계(단계 703)를 포함한 다. 이웃 노드는 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링으로부터 이웃 범위 및 이웃 크기에 기초하여 제1 방향(예를 들어, 시계 방향) 및 제2 반대 방향(예를 들어, 반시계 방향) 양쪽에서 식별될 수 있다. 예를 들어, 이웃 노드는 링(501) 및 서브링(511, 522, 523, 531, 542) 각각의 내부로부터 지정된 노드에 대해 식별될 수 있다.
방법(700)은 현재 노드가 참여하고 있는 각각의 계층적으로 분할된 라우팅 링에 대한 적절한 라우팅 노드를 라우팅 테이블에 삽입하는 단계(단계 704)를 포함한다. 예를 들어, 라우팅 노드는 링(501) 및 서브링(511, 522, 523, 531, 542) 각각의 내부로부터 지정된 노드에 대해 식별될 수 있다.
소정 실시예들에서, 적절한 라우팅 노드는 노드 Y가 참여하고 있는 리프 링(즉, 엘리어싱을 이용하는 실시예에서 리프 링)을 제외한 각각의 근접 링 d에 대해 삽입된다. 적절한 라우팅 노드는 이하의 표현식에 기초하여 삽입될 수 있다.
링이 이전의 단계에서 식별되지 않은 경우, 리드 링(lead ring)[예를 들어, 링(501)]을 링 d로서 사용한다. 이제, 링 d가 노드 Y가 z에 가장 가까운 라우팅 파트너를 찾아야 하는 근접 링이다.
도 10은 메시지를 목적지 노드쪽으로 라우팅하는 방법(1000)의 예시적인 흐름도를 나타낸 것이다. 방법(1000)은 도 3의 정렬 연결 리스트(304) 및 링(306)과 관련하여 기술된다. 방법(1000)은 수신측 노드가 목적지를 나타내는 번호와 함께 메시지를 수신하는 단계(단계 1001)를 포함한다. 예를 들어, ID(64)를 갖는 노드는 212의 목적지를 나타내는 메시지를 수신할 수 있다.
방법(1000)은 수신측 노드가 대응하는 선조 노드보다 목적지로부터 숫자상으로 더 멀리 있는지 및 대응하는 후손 노드보다 목적지로부터 숫자상으로 더 멀리 있는지 중 적어도 하나를 판정하는 단계(단계 1002)를 포함한다. 예를 들어, 방향(322)에서, ID(64)는 ID(50)보다 목적지(212)로부터 더 멀리 있으며, 방향(321)에서, ID(64)는 ID(76)보다 목적지(212)로부터 더 멀리 있다. 방법(1000)은 목적지가 수신측 노드에 대응하는 이웃 노드 세트 내에 있지 않은지를 판정하는 단계(단계 1003)를 포함한다. 예를 들어, ID(64)를 갖는 노드는 목적지(212)가 이웃 세트(83, 76, 50, 46) 내에 있지 않은 것으로 판정할 수 있다.
방법(1000)은 수신측 노드에 대응하는 라우팅 테이블로부터 중간 노드를 식별하는 단계로서, 중간 노드가 대응하는 라우팅 테이블에서 다른 라우팅 노드보다 목적지에 숫자상으로 더 가까운 것인 식별 단계(단계 1004)를 포함한다. 예를 들어, ID(64)를 갖는 노드는 ID(200)를 갖는 라우팅 노드를, 다른 라우팅 노드보다 목적지(212)에 숫자상으로 더 가까운 것으로 식별할 수 있다. 방법(1000)은 중간 노드로 메시지를 전송하는 단계(단계 1005)를 포함한다. 예를 들어, ID(64)를 갖는 노드는 ID(200)로 메시지를 전송할 수 있다.
도 11은 근접 기준에 기초하여 목적지 노드쪽으로 메시지를 라우팅하는 방법(1100)의 예시적인 흐름도를 나타낸 것이다. 방법(1100)은 도 4 및 도 5 내의 링 과 관련하여 기술된다. 방법(1100)은 수신측 노드가 목적지를 나타내는 번호 및 근접 기준과 함께 메시지를 수신하는 단계(단계 1101)를 포함한다. 근접 기준은 하나 이상의 노드 클래스를 정의한다. 수신측 노드는 근접 기준에 기초하여 하나 이상의 노드 클래스 중에서 선택된 현재 노드 클래스의 일부로서 메시지를 수신한다. 예를 들어, ID(172)를 갖는 노드는 201의 목적지를 나타내는 메시지 및 목적지 노드가 링(401)에 의해 나타내어진 클래스의 일부이어야 함을 가리키는 근접 기준을 수신할 수 있다. ID(172)를 갖는 노드는 링(404)의 일부로서 메시지를 수신할 수 있다.
방법(1100)은 수신측 노드가 선택된 노드 클래스 내의 노드 중에서, 대응하는 선조 노드보다 목적지로부터 더 멀리 있는지 및 대응하는 후손 노드보다 목적지로부터 더 멀리 있는지 중 적어도 하나를 판정하는 단계(단계 1102)를 포함한다. 예를 들어, 링(404) 내에서, ID(172)를 갖는 노드는 반시계 방향에서 ID(174)를 갖는 노드보다 목적지(201)로부터 더 멀리 있고, 반시계 방향에서 ID(153)를 갖는 노드보다 목적지(201)로부터 더 멀리 있다.
방법(1100)은 목적지가 근접 기준에 의해 정의된 하나 이상의 노드 클래스 중 임의의 것에 대해 수신측 노드의 이웃 노드 세트 내에 있지 않은지를 판정하는 단계(단계 1003)를 포함한다. 예를 들어, ID(172)를 갖는 노드는 목적지(201)가 링(404) 또는 링(401) 내의 대응하는 이웃 세트 내에 있지 않은 것으로 판정할 수 있다.
방법(1100)은 수신측 노드의 라우팅 테이블로부터 중간 노드를 식별하는 단 계로서, 중간 노드는 라우팅 테이블 내의 다른 라우팅 노드보다 목적지에 숫자상으로 더 가까운 것인 식별 단계(단계 1104)를 포함한다. 예를 들어, ID(172)를 갖는 노드는 ID(194)를 갖는 노드를, 링(404) 내의 다른 라우팅 노드보다 목적지(201)로부터 숫자상으로 더 가까운 것으로 식별할 수 있다. 방법(1100)은 중간 노드로 메시지를 전송하는 단계(단계 1105)를 포함한다. 예를 들어, ID(172)를 갖는 노드는 ID(194)를 갖는 노드로 수신된 메시지를 전송할 수 있다. ID(172)를 갖는 노드는 근접 기준의 이전에 정의된 부분적으로 순서화된 리스트를 존중하기 위해 ID(194)를 갖는 노드로 수신된 메시지를 전송할 수 있다.
노드(194)는 링(404) 내에서 가능한 만큼 목적지(201)에 가까울 수 있다. 따라서, 그 다음 레그(leg)에서 목적지쪽으로의 추가의 라우팅이 링(401)에서 행해질 수 있을 정도로만 근접성이 완화될 수 있다. 즉, 라우팅은 링(404)에서 링(401)으로 전환되는데 그 이유는 링(404) 상에서 목적지쪽으로 더 이상 진행할 수 없기 때문이다. 다른 대안에서, ID(201)를 갖는 노드가 링(401)에서 ID(194)를 갖는 노드의 이웃 내에 있을 수 있으며, 그 결과 더 이상 라우팅하지 못한다. 따라서, 소정 실시예들에서, 그 다음 상위 링으로 가기 위해 근접 기준을 완화시키는 것은 추가의 라우팅을 야기하는 데 충분하다.
그렇지만, 다른 실시예들에서, 그 다음의 상위 링으로의 전환을 가져오는 근접 기준의 점차적 완화는 추가의 라우팅이 행해질 수 있을 때까지(또는 루트 링을 만날 때까지) 계속된다. 즉, 추가의 라우팅 진행이 행해질 수 있기 전에 상위 링으로의 복수의 전환이 일어난다. 예를 들어, 지금 도 5를 참조하면, 링(531) 상에 서 추가의 라우팅 진행이 행해질 수 없을 때, 근접 기준은 링(511)으로 또는 심지어 링(501)으로 전환하기에 충분할 정도로 완화될 수 있다.
도 6 및 이하의 기술은 본 발명이 실시될 수 있는 적당한 컴퓨팅 환경의 간략한 전체적인 설명을 제공하기 위한 것이다. 꼭 그럴 필요는 없지만, 본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술되어 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조, 및 기타 등등을 포함한다. 컴퓨터 실행가능 명령어, 관련 데이터 구조, 및 프로그램 모듈은 본 명세서에 기술된 방법의 동작들을 실행하는 프로그램 코드 수단의 예를 나타낸다.
도 6을 참조하면, 본 발명을 구현하는 예시적인 시스템은 프로세싱 유닛(621), 시스템 메모리(622), 및 시스템 메모리(622)를 비롯한 여러가지 시스템 컴포넌트를 프로세싱 유닛(621)에 연결하는 시스템 버스(623)를 포함하는 컴퓨터 시스템(620) 형태의 범용 컴퓨팅 장치를 포함한다. 프로세싱 유닛(621)은 본 발명의 특징들을 비롯한 컴퓨터 시스템(620)의 특징들을 구현하도록 설계된 컴퓨터 실행가능 명령어를 실행시킬 수 있다. 시스템 버스(623)는 메모리 버스나 메모리 컨트롤러, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇 가지 유형의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리는 판독 전용 메모리("ROM")(624) 및 랜덤 액세스 메모리("RAM")(625)를 포함한다. 시동 중과 같은 때에, 컴퓨터 시스템(620) 내의 구성요소들 간의 정보의 전송을 돕는 기 본적인 루틴을 포함하는 기본 입출력 시스템("BIOS")(626)은 ROM(624)에 저장될 수 있다.
컴퓨터 시스템(620)은 또한 자기 하드 디스크(639)로부터 판독 및 그에 기록하는 자기 하드 디스크 드라이브(627), 분리형 자기 디스크(629)로부터 판독하거나 그에 기록하는 자기 디스크 드라이브(628), 및 예를 들어 CD-ROM 또는 다른 광 매체 등의 분리형 광 디스크(631)로부터 판독하거나 그에 기록하는 광 디스크 드라이브(630)를 포함할 수 있다. 자기 하드 디스크 드라이브(627), 자기 디스크 드라이브(628), 및 광 디스크 드라이브(630)는 각각 하드 디스크 드라이브 인터페이스(632), 자기 디스크 드라이브 인터페이스(633), 및 광 드라이브 인터페이스(634)에 의해 시스템 버스(623)에 연결된다. 이들 드라이브 및 그의 관련 컴퓨터 판독가능 매체는 컴퓨터 시스템(620)의 컴퓨터 실행가능 명령어, 데이터 구조, 프로그램 모듈, 및 다른 데이터의 비휘발성 저장을 제공한다. 본 명세서에 기술된 예시적인 환경은 자기 하드 디스크(639), 분리형 자기 디스크(629), 및 분리형 광 디스크(631)를 이용하지만, 자기 카세트, 플래시 메모리 카드, DVD, 베르누이 카트리지, RAM, ROM, 및 기타 등등을 비롯한, 데이터를 저장하는 다른 유형의 컴퓨터 판독가능 매체가 사용될 수 있다.
운영 시스템(635), 하나 이상의 어플리케이션 프로그램(636), 기타 프로그램 모듈(637), 및 프로그램 데이터(638)를 비롯한 하나 이상의 프로그램 모듈을 포함하는 프로그램 코드 수단은 하드 디스크(639), 자기 디스크(629), 광 디스크(631), ROM(624) 또는 RAM(625) 상에 저장될 수 있다. 사용자는 키보드(640), 포인팅 장 치(642), 또는 예를 들어 마이크로폰, 조이스틱, 게임 패드, 스캐너 또는 기타 등등의 다른 입력 장치(도시 생략)를 통해 명령 및 정보를 컴퓨터 시스템(620)에 입력할 수 있다. 이들 및 다른 입력 장치는 시스템 버스(623)에 연결된 입출력 인터페이스(646)를 통해 프로세싱 유닛(621)에 연결될 수 있다. 입출력 인터페이스(646)는 논리적으로 예를 들어 직렬 포트 인터페이스, PS/2 인터페이스, 병렬 포트 인터페이스, USB(Universal Serial Bus) 인터페이스, IEEE(Instatute of Electrical and Electronics Engineers) 1394 인터페이스(즉, FireWire 인터페이스) 등의 다양한 서로 다른 인터페이스 중 임의의 것을 나타내거나 심지어 논리적으로 여러가지 인터페이스의 조합을 나타낼 수 있다.
모니터(647) 또는 다른 디스플레이도 역시 비디오 인터페이스(648)를 통해 시스템 버스(623)에 연결되어 있다. 스피커(669) 또는 다른 오디오 출력 장치도 역시 오디오 인터페이스(649)를 통해 시스템 버스(623)에 연결되어 있다. 예를 들어, 프린터 등의 다른 주변 출력 장치(도시 생략)도 역시 컴퓨터 시스템(620)에 연결될 수 있다.
컴퓨터 시스템(620)은 예를 들어 사무실 규모 또는 기업 규모 컴퓨터 네트워크, 홈 네트워크, 인트라넷, 및/또는 인터넷 등의 네트워크에 연결가능하다. 컴퓨터 시스템(620)은 이러한 네트워크를 통해 예를 들어 원격 컴퓨터 시스템, 원격 어플리케이션, 및/또는 원격 데이터베이스 등의 외부 소스와 데이터를 교환할 수 있다.
컴퓨터 시스템(620)은 네트워크 인터페이스(653)를 포함하며, 이를 통해 컴 퓨터 시스템(620)은 외부 소스로부터 데이터를 수신 및/또는 외부 소스로 데이터를 전송한다. 도 6에 도시한 바와 같이, 네트워크 인터페이스(653)는 링크(651)를 통해 원격 컴퓨터 시스템(683)과의 데이터의 교환을 용이하게 해준다. 네트워크 인터페이스(653)는 논리적으로 예를 들어 네트워크 인터페이스 카드 및 대응하는 네트워크 드라이버 인터페이스 규격(Network Driver Interface Specification)("NDIS") 스택 등의 하나 이상의 소프트웨어 및/또는 하드웨어 모듈을 나타낼 수 있다. 링크(651)는 네트워크의 일부분(예를 들어, 이더넷 세그먼트)을 나타내고, 원격 컴퓨터 시스템(683)은 네트워크의 노드를 나타낸다.
이와 마찬가지로, 컴퓨터 시스템(620)은 입출력 인터페이스(646)를 포함하며, 이를 통해 컴퓨터 시스템(620)은 외부 소스로부터 데이터를 수신 및/또는 외부 소스로 데이터를 전송한다. 입출력 인터페이스(646)는 링크(659)를 통해 모뎀(654)[예를 들어, 표준 모뎀, 케이블 모뎀, 또는 디지털 가입자 회선("DSL") 모뎀]에 연결되어 있으며, 이 모뎀을 통해 컴퓨터 시스템(620)은 외부 소스로부터 데이터를 수신 및/또는 외부 소스로 데이터를 전송한다. 도 6에 도시한 바와 같이, 입출력 인터페이스(646) 및 모뎀(654)은 링크(652)를 통한 원격 컴퓨터 시스템(693)과의 데이터 교환을 용이하게 해준다. 링크(652)는 네트워크의 일부분을 나타내고, 원격 컴퓨터 시스템(693)은 네트워크의 노드를 나타낸다.
도 6이 본 발명의 적당한 운영 환경을 나타내지만, 본 발명의 원리들은 필요한 경우 적당한 수정을 하면 본 발명의 원리들을 구현할 수 있는 임의의 시스템에서 이용될 수 있다. 도 6에 나타낸 환경은 단지 예시적인 것으로서 본 발명의 원 리들이 구현될 수 있는 다양한 환경 중 작은 부분도 나타내지 않는다.
본 발명에 따르면, 노드, 어플리케이션 계층, 및 기타 하위 계층은 물론, 라우팅 테이블 및 노드 ID를 비롯한 관련 데이터는 컴퓨터 시스템(620)과 연관된 임의의 컴퓨터 판독가능 매체 상에 저장 및 그로부터 액세스될 수 있다. 예를 들어, 이러한 모듈의 일부분 및 관련 프로그램 데이터의 일부분은 시스템 메모리(622)에 저장하는 운영 시스템(635), 어플리케이션 프로그램(636), 프로그램 모듈(637) 및/또는 프로그램 데이터(638)에 포함될 수 있다.
예를 들어 자기 하드 디스크(639) 등의 대용량 저장장치가 컴퓨터 시스템(620)에 연결되어 있을 때, 이러한 모듈 및 관련 프로그램 데이터도 역시 대용량 저장 장치에 저장될 수 있다. 네트워크화된 환경에서, 컴퓨터 시스템(620)과 관련하여 도시된 프로그램 모듈 또는 그의 일부분은 원격 컴퓨터 시스템(683) 및/또는 원격 컴퓨터 시스템(693)과 연관된 시스템 메모리 및/또는 대용량 저장 장치 등의 원격 메모리 저장 장치에 저장될 수 있다. 이러한 모듈의 실행은 앞서 기술한 바와 같이 분산 환경에서 수행될 수 있다.
본 발명은 본 발명의 정신 또는 필수적인 특징을 벗어나지 않고 다른 구체적인 형태로 구현될 수 있다. 기술된 실시예들은 모든 면에서 단지 예시적인 것이며 제한적인 것이 아닌 것으로 간주되어야 한다. 따라서, 본 발명의 범위는 이상의 설명에 의해서보다는 첨부된 청구항들에 의해 나타내어져 있다. 청구항들의 균등물의 의미 및 범위 내에 속하는 모든 변경은 그의 범위 내에 속한다.
노드들 간의 대칭적 관계, 링 상에서 양방향으로의 메시지 라우팅, 복수의 근접 메트릭에 기초한 노드들의 연결 리스트의 분할, 및 복수의 근접 메트릭에 기초한 메시지의 라우팅을 이용하여, 자원 요청을 대응하는 자원과 랑데뷰시킬 수 있다.
Claims (51)
- 연합 기반구조(federation infrastructure)에서, 목적지 노드쪽으로 메시지를 라우팅하는 방법으로서,수신측 노드가 목적지를 나타내는 목적지 식별자와 함께 메시지를 수신하는 단계 - 상기 수신측 노드는 양방향 라우팅을 위해 구성된 노드들의 링 내에 포함됨 - ,상기 수신측 노드의 상기 노드들의 링 내에서의 위치에 기초하여 상기 메시지를 수신하게 될 그 다음의 적절한 노드를 결정하는 단계 - 상기 그 다음의 적절한 노드는 상기 수신측 노드의 라우팅 테이블 내의 다른 라우팅 노드들보다 상기 목적지에 숫자상으로 더 가까우며, 상기 라우팅 테이블은 적어도 상기 노드들의 링 내의 다른 노드들의 로그 인덱스(logarithmic index)를 나타내고, 상기 라우팅 테이블은 적어도 상기 연합 기반구조 내에 식별자들을 생성하기 위한 식별자 공간을 생성하는 데 이용되는 기수(number base)에 기초하여 채워지며, 상기 수신측 노드는 수신측 노드의 라우팅 테이블 내의 노드들과 대칭적 관계를 가짐 - , 및상기 그 다음의 적절한 컴포넌트로 상기 메시지를 전송하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 메시지를 수신하게 될 그 다음의 적절한 노드를 결정하는 단계는, 상기 수신측 노드의 라우팅 테이블 내의 다른 라우팅 노드들보다 상기 목적지에 숫자상으로 더 가까운 중간 노드를 식별하는 단계를 포함하는 방법.
- 제2항에 있어서,상기 중간 노드를 식별하는 단계는 상기 중간 노드를 상기 수신측 노드의 라우팅 테이블 내에 포함된 노드로서 식별하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 메시지를 수신하게 될 그 다음의 적절한 노드를 결정하는 단계는 상기 수신측 노드가 이전에 메시지를 전송했던 노드로부터 상태 메시지를 수신하는 단계를 포함하는 방법.
- 제4항에 있어서,상기 상태 메시지를 수신하는 단계는 노드 존재 정보를 포함하는 상태 메시지를 수신하는 단계를 포함하는 방법.
- 제4항에 있어서,상기 상태 메시지를 수신하는 단계는 상기 수신측 노드가 다른 그 다음의 적절한 컴포넌트를 식별하게 해주는 상태 메시지를 수신하는 단계를 포함하는 방법.
- 제4항에 있어서,상기 수신된 상태 메시지로부터, 상기 수신된 메시지가 상기 수신측 노드에 의해 더 이상 전송되어서는 안 되는 것으로 판정하는 단계를 더 포함하는 방법.
- 제7항에 있어서,상기 수신된 상태 메시지로부터 상기 메시지가 더 이상 전송되어서는 안 되는 것으로 판정하는 단계는, 상기 수신된 상태 메시지로부터, 상기 메시지가 적어도 하나의 목적지 노드에 전달된 것으로 판정하는 단계를 포함하는 방법.
- 제7항에 있어서,상기 수신된 상태 메시지로부터 상기 메시지가 더 이상 전송되어서는 안 되는 것으로 판정하는 단계는, 상기 메시지가 어떠한 목적지 노드에도 전달되지 않은 것으로 판정하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 수신측 노드에 상기 메시지를 전송했던 노드에, 상기 수신된 메시지에 관련된 상태 메시지를 전송하는 단계를 더 포함하는 방법.
- 제10항에 있어서,상기 수신된 메시지에 관련된 상태 메시지를 전송하는 단계는, 상기 수신된 메시지를 상기 수신측 노드에 전송했던 노드에 이전에 수신된 상태 메시지를 다시 전송하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 메시지를 수신하게 될 그 다음의 적절한 노드를 결정하는 단계는, 상기 수신측 노드를 그 다음의 적절한 노드로서 식별하는 단계를 포함하는 방법.
- 제12항에 있어서,상기 수신측 노드를 그 다음의 적절한 노드로서 식별하는 단계는, 상기 수신측 노드의 식별자가 상기 목적지 식별자와 더욱 가깝게 일치하는 것으로 판정하는 단계를 포함하는 방법.
- 제13항에 있어서,상기 수신측 노드의 식별자가 상기 목적지 식별자와 더욱 가깝게 일치하는 것으로 판정하는 단계는, 상기 수신측 노드의 식별자가 상기 목적지 노드의 식별자와 정확하게 일치하는 것으로 판정하는 단계를 포함하는 방법.
- 제13항에 있어서,상기 수신된 메시지를 상기 수신측 노드의 직접 이웃 노드(immediate neighboring node)로 포워딩하는 단계를 더 포함하며, 상기 직접 이웃 노드는 상기 수신측 노드의 현재의 링 내에 있는 것인 방법.
- 제15항에 있어서,상기 수신된 메시지를 상기 수신측 노드의 직접 이웃 노드로 포워딩하는 단계는, 상기 목적지 식별자가 상기 수신측 노드와 상기 수신측 노드의 직접 선조 이웃 노드(immediate predecessor neighbor node) 사이에 속하는 것으로 판정하는 단계를 포함하는 방법.
- 제15항에 있어서,상기 수신된 메시지를 상기 수신측 노드의 직접 이웃 노드로 포워딩하는 단계는, 상기 목적지 식별자가 상기 수신측 노드와 상기 수신측 노드의 직접 후손 이웃 노드(immediate successor neighbor node) 사이에 속하는 것으로 판정하는 단계를 포함하는 방법.
- 제15항에 있어서,상기 수신측 노드의 직접 이웃 노드가 상기 포워딩된 메시지에 관련된 상태 메시지를 상기 수신측 노드에 다시 전송하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 수신측 노드의 직접 이웃 노드가 노드 존재 정보를 상기 상태 메시지 내에 포함시키는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 수신측 노드의 직접 이웃 노드가 상기 포워딩된 메시지에 관련된 상태 메시지를 상기 수신측 노드에 다시 전송하는 단계는, 상기 수신측 노드의 직접 이웃 노드에 의해 상기 수신측 노드가 상기 메시지에 대한 최상의 그 다음의 적절한 노드로 간주된다는 표시를 적어도 포함하는 상태 메시지를 전송하는 단계를 더 포함하는 방법.
- 제18항에 있어서,상기 수신측 노드의 직접 이웃 노드가 상기 포워딩된 메시지에 관련된 상태 메시지를 상기 수신측 노드에 다시 전송하는 단계는, 노드 존재 정보를 포함하는 상태 메시지를 전송하는 단계를 포함하는 방법.
- 제18항에 있어서,상기 수신측 노드의 직접 이웃 노드가 상기 포워딩된 메시지에 관련된 상태 메시지를 상기 수신측 노드에 다시 전송하는 단계는, 상기 수신된 메시지가 상기 수신측 노드에 의해 더 이상 전송되어서는 안된다는 표시를 포함하는 상태 메시지를 전송하는 단계를 포함하는 방법.
- 제12항에 있어서,상기 수신측 노드를 그 다음의 적절한 노드로서 식별하는 단계는, 상기 수신된 메시지가 상기 수신측 노드를 그 다음의 적절한 노드로서 식별하게 해주는 단계를 포함하는 방법.
- 제1항에 있어서,상기 메시지를 그 다음의 적절한 컴포넌트에 전송하는 단계는, 상기 메시지를 그 다음의 적절한 노드에 전송하는 단계를 포함하는 방법.
- 제24항에 있어서,상기 메시지를 그 다음의 적절한 노드에 전송하는 단계는, 상기 수신측 노드가 부가의 노드 존재 정보를 그 다음의 적절한 노드에 전송되는 메시지에 포함시키는 단계를 포함하는 방법.
- 제1항에 있어서,상기 메시지를 그 다음의 적절한 컴포넌트에 전송하는 단계는, 상기 수신측 노드가 상기 메시지의 최종 목적지로서 기능하는 단계를 포함하는 방법.
- 제26항에 있어서,상기 수신측 노드가 상기 메시지의 최종 목적지로서 기능하는 단계는, 상기 메시지를 상기 수신측 노드에 관련된 어플리케이션 컴포넌트에 전달하는 단계를 포함하는 방법.
- 제26항에 있어서,상기 수신된 메시지를 상기 수신측 노드에 전송했던 노드에 상기 수신된 메시지에 관련된 상태 메시지를 다시 전송하는 단계를 더 포함하는 방법.
- 분할된 노드 클래스들의 계층구조를 포함하는 연합 기반구조에서, 근접 기준(proximity criterion)에 기초하여 목적지 노드쪽으로 메시지를 라우팅하는 방법으로서,수신측 노드가 목적지 식별자 및 근접 기준과 함께 메시지를 수신하는 단계 - 상기 근접 기준은 노드 클래스들의 계층구조 내의 하나 이상의 노드 클래스들을 정의하고, 상기 수신측 노드는 노드 클래스들의 계층구조 내의 현재 노드 클래스의 일부이고, 상기 현재 노드 클래스는 노드 클래스들의 계층구조 내의 하나 이상의 노드 클래스 중에서 선택됨 - ,상기 수신측 노드의 라우팅 테이블로부터 적절한 노드를 식별하는 단계 - 상기 적절한 노드는 근접 기준에 의해 정의된 하나 이상의 노드 클래스 내에 여전히 있으면서 상기 라우팅 테이블 내의 다른 라우팅 노드들보다 목적지에 숫자상으로 더 가까우며, 연합 기반구조에 대한 ID 공간을 생성하는 데 이용되는 기수(number base)에 기초하여 채워진 상기 라우팅 테이블은 근접 기준에 의해 정의된 하나 이 상의 노드 클래스들 내의 다른 노드들의 로그 인덱스를 적어도 나타냄 - , 및그 다음의 적절한 노드에 상기 메시지를 전송하는 단계를 포함하는 방법.
- 제29항에 있어서,상기 수신측 노드가 목적지 식별자 및 근접 기준과 함께 메시지를 수신하는 단계는, 상기 수신측 노드가 근접 기준의 이전에 정의된 부분적으로 순서화된 리스트(previously defined partially ordered list of proximity criterion)에 액세스하는 단계를 포함하는 방법.
- 제30항에 있어서,상기 수신측 노드가 근접 기준의 이전에 정의된 부분적으로 순서화된 리스트에 액세스하는 단계는, 근접 기준의 이전에 정의된 부분적으로 순서화된 리스트를 수신하는 단계를 포함하는 방법.
- 제29항에 있어서,상기 그 다음의 적절한 노드에 상기 메시지를 전송하는 단계는, 근접 기준의 이전에 정의된 부분적으로 순서화된 리스트를 존중하도록 그 다음의 적절한 노드에 상기 메시지를 전송하는 단계를 포함하는 방법.
- 분할된 노드 클래스들의 계층구조를 포함하는 연합 기반구조에서, 메시지를 충분한 자격이 있는 목적지 노드(sufficient destination node)로 라우팅하는 방법으로서,수신측 노드가 목적지 식별자 및 근접 기준과 함께 메시지를 수신하는 단계 - 상기 근접 기준은 노드 클래스들의 계층구조 내의 하나 이상의 노드 클래스들 내의 최상위 노드 클래스를 정의하고, 상기 수신측 노드는 노드 클래스들의 계층구조 내의 적어도 현재 노드 클래스의 일부이며, 상기 현재 노드 클래스는 노드 클래스들의 계층구조 내의 하나 이상의 노드 클래스 중에서 선택됨 - ,상기 메시지에 대한 충분한 자격이 있는 목적지 노드를 식별하는 단계 - 상기 충분한 자격이 있는 목적지 노드는 상기 수신된 근접 기준에 의해 정의된 최상위 노드 클래스의 멤버이고, 상기 충분한 자격이 있는 목적지 노드는 최상위 노드 클래스에서 상기 목적지 식별자의 이웃에 있음 - , 및상기 충분한 자격이 있는 목적지 노드에 상기 메시지를 전송하는 단계를 포함하는 방법.
- 제33항에 있어서,상기 충분한 자격이 있는 목적지 노드를 식별하는 단계는, 근접 기준에 기초하여 적어도 상기 수신측 노드의 라우팅 테이블로부터 충분한 자격이 있는 목적지 노드를 식별하는 단계를 포함하는 방법.
- 제33항에 있어서,상기 충분한 자격이 있는 목적지 노드를 식별하는 단계는, 상기 수신측 노드에 관련된 어플리케이션 컴포넌트의 어플리케이션 로직이 충분한 자격이 있는 목적지 노드를 식별하는 단계를 포함하는 방법.
- 제33항에 있어서,상기 충분한 자격이 있는 목적지 노드가 최상위 노드 클래스에서 상기 목적지 식별자의 이웃에 있는 것으로 자격을 부여(qualify)하는 단계를 더 포함하는 방법.
- 제36항에 있어서,상기 충분한 자격이 있는 목적지 노드가 최상위 노드 클래스에서 상기 목적지 식별자의 이웃에 있는 것으로 자격을 부여하는 단계는, 상기 수신측 노드가 또한 상기 수신측 노드의 라우팅 테이블을 사용하여 상기 충분한 자격이 있는 목적지 노드가 또한 최상위 노드 클래스에서 상기 목적지 식별자에 숫자상으로 가장 가까이 있는 것으로 자격을 부여하는 단계를 포함하는 방법.
- 제33항에 있어서,상기 충분한 자격이 있는 목적지 노드가 상기 수신측 노드인 것으로 자격을 부여하는 단계를 더 포함하는 방법.
- 복수의 계층적으로 분할된 노드 클래스들을 포함하는 시스템으로서,노드들의 상위 링(upper ring) - 상기 노드들의 상위 링 내의 각각의 노드는 노드들의 정렬 연결 리스트(sorted linked list)에서의 위치를 나타내는 노드 식별자를 가짐 - ,노드들의 제1 하위 링(lower ring) - 상기 노드들의 제1 하위 링 내의 각각의 노드는 노드들의 제1 서브리스트 내의 노드 식별자를 가지며, 상기 노드들의 제1 서브리스트는 상기 제1 하위 링 내의 노드들이 또한 상기 상위 링 내의 노드가 되도록 상기 정렬 연결 리스트로부터 분할되고, 상기 제1 서브리스트는 노드들의 링이 어떻게 분류되어야만 하는지를 나타내는 근접 기준에 따라 상기 정렬 연결 리스트로부터 분할되며, 상기 노드들의 제1 하위 링은 라우팅된 메시지 트래픽이 상기 노드들의 제1 링 내에서 라우팅될 때 상기 연결 리스트 내에 포함된 적어도 몇몇 노드들을 우회할 수 있도록 구성됨 - , 및노드들의 제2 하위 링 - 상기 노드들의 제2 하위 링 내의 각각의 노드는 노드들의 상이한 제2 서브리스트 내의 노드 식별자를 가지며, 상기 노드들의 제2 서브리스트는 상기 제2 하위 링 내의 노드들이 또한 상기 상위 링 내의 노드가 되도록 상기 정렬 연결 리스트로부터 분할되고, 상기 제2 서브리스트는 상기 제1 하위 링 및 상기 제2 하위 링이 상기 상위 링의 근접 기준에 대해 동등하게 분류되도록 근접 기준에 따라 상기 정렬 연결 리스트로부터 분할되며, 상기 노드들의 제2 하위 링은 라우팅된 메시지 트래픽이 상기 노드들의 제2 하위 링 내에서 라우팅될 때 상 기 노드들의 제1 하위 링 내에 포함된 적어도 몇몇 노드들을 우회할 수 있도록 구성됨 -을 포함하는 시스템.
- 제39항에 있어서,메시지 트래픽은 상기 노드들의 상위 링에 제한되는 시스템.
- 제39항에 있어서,메시지 트래픽은 상기 노드들의 제1 하위 링에 제한되는 시스템.
- 제39항에 있어서,메시지 트래픽은 상기 노드들의 제2 하위 링에 제한되는 시스템.
- 제39항에 있어서,상기 노드들의 상위 링 내의 목적지 노드에 보내지는 메시지가 상기 메시지의 라우팅이 상기 노드들의 상위 링에서 계속되기 전에 상기 노드들의 제1 하위 링에서 가능한 한 상기 목적지 노드쪽으로 많이 진행하도록 구성되는 시스템.
- 제39항에 있어서,상기 노드들의 상위 링 내의 목적지 노드에 보내지는 메시지가 상기 메시지 의 라우팅이 상기 노드들의 상위 링에서 계속되기 전에 상기 노드들의 제2 하위 링에서 가능한 한 상기 목적지 노드쪽으로 많이 진행하도록 구성되는 시스템.
- 제39항에 있어서,표현된 등가 노드 클래스(expressed equivalence class of nodes) 내에서 상기 목적지 노드의 이웃에 있는 노드에 상기 메시지가 수신된 후에, 상기 노드들의 상위 링 내의 목적지 노드에 보내지는 메시지가 상기 목적지 노드에 관련된 어플리케이션 컴포넌트에 전달될 수 있도록 구성되는 시스템.
- 제39항에 있어서,상기 노드들의 상위 링 내의 노드들 간의 라우팅 관계가 대칭적(symmetric)이 되도록 구성되는 시스템.
- 제39항에 있어서,상기 노드들의 상위 링 내의 노드들 간의 라우팅 관계가 양방향적(bi-directional)이 되도록 구성되는 시스템.
- 제39항에 있어서,노드들의 제1 서브리스트 내의 노드 식별자를 갖는 상기 노드들의 제1 하위 링 내의 각각의 노드가, 상기 노드들의 상위 링으로부터의 노드 식별자를 갖는 상 기 노드들의 제1 하위 링 내의 각각의 노드를 포함하는 시스템.
- 제39항에 있어서,노드들의 제2 서브리스트 내의 노드 식별자를 갖는 상기 노드들의 제2 하위 링 내의 각각의 노드가, 상기 노드들의 상위 링으로부터의 노드 식별자를 갖는 상기 노드들의 제2 하위 링 내의 각각의 노드를 포함하는 시스템.
- 제39항에 있어서,상기 노드들의 제1 하위 링 내의 노드들 중 하나 이상은 또한 상기 노드들의 제2 하위 링 내에 포함되는 시스템.
- 제50항에 있어서,상기 노드들의 제2 하위 링 내에 포함되어 있는 노드들의 제1 하위 링 내의 노드들 중 하나 이상은 상기 노드들의 제2 하위 링 내에 엘리어싱(aliasing)되어 있는 노드들의 제1 하위 링 내의 하나 이상의 노드들을 포함하는 시스템.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/971,451 US20060090003A1 (en) | 2004-10-22 | 2004-10-22 | Rendezvousing resource requests with corresponding resources |
US10/971,451 | 2004-10-22 | ||
US11/220,756 US8014321B2 (en) | 2004-10-22 | 2005-09-07 | Rendezvousing resource requests with corresponding resources |
US11/220,756 | 2005-09-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060049121A true KR20060049121A (ko) | 2006-05-18 |
KR101201072B1 KR101201072B1 (ko) | 2012-11-14 |
Family
ID=35517374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050099588A KR101201072B1 (ko) | 2004-10-22 | 2005-10-21 | 자원 요청을 대응하는 자원과 랑데뷰시키는 방법 및 시스템 |
Country Status (10)
Country | Link |
---|---|
US (3) | US8014321B2 (ko) |
EP (1) | EP1650911B1 (ko) |
JP (1) | JP4726604B2 (ko) |
KR (1) | KR101201072B1 (ko) |
AT (1) | ATE553571T1 (ko) |
AU (1) | AU2005220253B2 (ko) |
BR (1) | BRPI0504513A (ko) |
CA (1) | CA2523897A1 (ko) |
MX (1) | MXPA05011314A (ko) |
RU (1) | RU2400806C2 (ko) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782654B2 (en) | 2004-03-13 | 2014-07-15 | Adaptive Computing Enterprises, Inc. | Co-allocating a reservation spanning different compute resources types |
WO2005089241A2 (en) | 2004-03-13 | 2005-09-29 | Cluster Resources, Inc. | System and method for providing object triggers |
US20070266388A1 (en) | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
US8176490B1 (en) | 2004-08-20 | 2012-05-08 | Adaptive Computing Enterprises, Inc. | System and method of interfacing a workload manager and scheduler with an identity manager |
US7640299B2 (en) | 2004-09-30 | 2009-12-29 | Microsoft Corporation | Optimizing communication using scaleable peer groups |
US7613703B2 (en) | 2004-09-30 | 2009-11-03 | Microsoft Corporation | Organizing resources into collections to facilitate more efficient and reliable resource access |
US8095600B2 (en) * | 2004-10-22 | 2012-01-10 | Microsoft Corporation | Inter-proximity communication within a rendezvous federation |
US8392515B2 (en) * | 2004-10-22 | 2013-03-05 | Microsoft Corporation | Subfederation creation and maintenance in a federation infrastructure |
US20080288659A1 (en) | 2006-11-09 | 2008-11-20 | Microsoft Corporation | Maintaining consistency within a federation infrastructure |
US7730220B2 (en) | 2004-10-22 | 2010-06-01 | Microsoft Corporation | Broadcasting communication within a rendezvous federation |
US8014321B2 (en) * | 2004-10-22 | 2011-09-06 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US7958262B2 (en) * | 2004-10-22 | 2011-06-07 | Microsoft Corporation | Allocating and reclaiming resources within a rendezvous federation |
US20110082928A1 (en) | 2004-10-22 | 2011-04-07 | Microsoft Corporation | Maintaining consistency within a federation infrastructure |
US8095601B2 (en) | 2004-10-22 | 2012-01-10 | Microsoft Corporation | Inter-proximity communication within a rendezvous federation |
US7694167B2 (en) * | 2004-10-22 | 2010-04-06 | Microsoft Corporation | Maintaining routing consistency within a rendezvous federation |
US8549180B2 (en) * | 2004-10-22 | 2013-10-01 | Microsoft Corporation | Optimizing access to federation infrastructure-based resources |
US20060090003A1 (en) * | 2004-10-22 | 2006-04-27 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US8271980B2 (en) | 2004-11-08 | 2012-09-18 | Adaptive Computing Enterprises, Inc. | System and method of providing system jobs within a compute environment |
US8863143B2 (en) | 2006-03-16 | 2014-10-14 | Adaptive Computing Enterprises, Inc. | System and method for managing a hybrid compute environment |
US8631130B2 (en) | 2005-03-16 | 2014-01-14 | Adaptive Computing Enterprises, Inc. | Reserving resources in an on-demand compute environment from a local compute environment |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
CA2603577A1 (en) | 2005-04-07 | 2006-10-12 | Cluster Resources, Inc. | On-demand access to compute resources |
US7881223B2 (en) * | 2006-03-31 | 2011-02-01 | Panasonic Corporation | Method for on demand distributed hash table update |
US8693392B2 (en) * | 2007-02-21 | 2014-04-08 | Avaya Canada Corp. | Peer-to-peer communication system and method |
US7779175B2 (en) * | 2007-05-04 | 2010-08-17 | Blackwave, Inc. | System and method for rendezvous in a communications network |
US20080276091A1 (en) * | 2007-05-04 | 2008-11-06 | Annikki Welin | Mobile Device File Sharing Method and Apparatus |
US8041773B2 (en) | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
US8954976B2 (en) * | 2008-07-10 | 2015-02-10 | Juniper Networks, Inc. | Data storage in distributed resources of a network based on provisioning attributes |
US8887166B2 (en) * | 2008-07-10 | 2014-11-11 | Juniper Networks, Inc. | Resource allocation and modification using access patterns |
US20100011091A1 (en) * | 2008-07-10 | 2010-01-14 | Blackwave Inc. | Network Storage |
US9176779B2 (en) * | 2008-07-10 | 2015-11-03 | Juniper Networks, Inc. | Data access in distributed systems |
US8191070B2 (en) | 2008-07-10 | 2012-05-29 | Juniper Networks, Inc. | Dynamic resource allocation |
US8706900B2 (en) * | 2008-07-10 | 2014-04-22 | Juniper Networks, Inc. | Dynamic storage resources |
US8650270B2 (en) * | 2008-07-10 | 2014-02-11 | Juniper Networks, Inc. | Distributed computing with multiple coordinated component collections |
US8364710B2 (en) * | 2008-07-10 | 2013-01-29 | Juniper Networks, Inc. | Model-based resource allocation |
US8099402B2 (en) | 2008-07-10 | 2012-01-17 | Juniper Networks, Inc. | Distributed data storage and access systems |
US9066141B2 (en) * | 2009-01-21 | 2015-06-23 | Juniper Networks, Inc. | Resource allocation and modification using statistical analysis |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US10877695B2 (en) | 2009-10-30 | 2020-12-29 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US20110153737A1 (en) * | 2009-12-17 | 2011-06-23 | Chu Thomas P | Method and apparatus for decomposing a peer-to-peer network and using a decomposed peer-to-peer network |
US10084856B2 (en) | 2009-12-17 | 2018-09-25 | Wsou Investments, Llc | Method and apparatus for locating services within peer-to-peer networks |
CN102117278B (zh) * | 2009-12-31 | 2016-10-05 | 联想(北京)有限公司 | 链表的创建方法及系统、数据的查找方法及系统 |
CN103200209B (zh) | 2012-01-06 | 2018-05-25 | 华为技术有限公司 | 成员资源的访问方法、群组服务器和成员设备 |
RU2012136239A (ru) * | 2012-08-24 | 2014-03-27 | Олег Александрович Серебренников | Способ поиска информации в сети интернет |
US9298719B2 (en) * | 2012-09-04 | 2016-03-29 | International Business Machines Corporation | On-demand caching in a WAN separated distributed file system or clustered file system cache |
JP6307746B2 (ja) * | 2014-03-18 | 2018-04-11 | 株式会社リコー | 宛先管理システム、通信システム、宛先管理方法、及びプログラム |
US9311811B1 (en) | 2014-10-08 | 2016-04-12 | Google Inc. | Alarm profile for a fabric network |
KR102209292B1 (ko) | 2015-11-04 | 2021-01-29 | 삼성전자 주식회사 | 멀티미디어 시스템에서 데이터 제공 방법 및 장치 |
JP6839859B2 (ja) * | 2015-11-25 | 2021-03-10 | ボルタ ネットワークス, インコーポレイテッド | ネットワークルーティングシステムおよび技法 |
US11108854B2 (en) * | 2018-07-25 | 2021-08-31 | International Business Machines Corporation | Peer-to-peer network for internet of things resource allocation operation |
US11895005B1 (en) * | 2022-12-02 | 2024-02-06 | Arista Networks, Inc. | Network devices with hardware accelerated table updates |
Family Cites Families (125)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5689701A (en) | 1994-12-14 | 1997-11-18 | International Business Machines Corporation | System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax |
US5745683A (en) | 1995-07-05 | 1998-04-28 | Sun Microsystems, Inc. | System and method for allowing disparate naming service providers to dynamically join a naming federation |
US5996075A (en) | 1995-11-02 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for reliable disk fencing in a multicomputer system |
US5831975A (en) | 1996-04-04 | 1998-11-03 | Lucent Technologies Inc. | System and method for hierarchical multicast routing in ATM networks |
US6574654B1 (en) * | 1996-06-24 | 2003-06-03 | Oracle Corporation | Method and apparatus for lock caching |
US6253292B1 (en) | 1997-08-22 | 2001-06-26 | Seong Tae Jhang | Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme |
US6178174B1 (en) | 1997-08-26 | 2001-01-23 | International Business Machines Corporation | Optimistic, eager rendezvous transmission mode and combined rendezvous modes for message processing systems |
US5999712A (en) | 1997-10-21 | 1999-12-07 | Sun Microsystems, Inc. | Determining cluster membership in a distributed computer system |
US6269452B1 (en) | 1998-04-27 | 2001-07-31 | Cisco Technology, Inc. | System and method for fault recovery for a two line bi-directional ring network |
US6456597B1 (en) * | 1998-05-04 | 2002-09-24 | Hewlett Packard Co. | Discovery of unknown MAC addresses using load balancing switch protocols |
US6279034B1 (en) | 1998-06-03 | 2001-08-21 | International Business Machines Corporation | Distributed monitor timer service for use in a distributed computing environment |
US7076507B1 (en) | 1998-07-08 | 2006-07-11 | Required Technologies, Inc. | Value-instance-connectivity computer-implemented database |
US6304556B1 (en) | 1998-08-24 | 2001-10-16 | Cornell Research Foundation, Inc. | Routing and mobility management protocols for ad-hoc networks |
US7430171B2 (en) * | 1998-11-19 | 2008-09-30 | Broadcom Corporation | Fibre channel arbitrated loop bufferless switch circuitry to increase bandwidth without significant increase in cost |
US6480473B1 (en) | 1998-12-29 | 2002-11-12 | Koninklijke Philips Electronics N.V. | Verification of active nodes in an open network |
US6115804A (en) | 1999-02-10 | 2000-09-05 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention |
US6839348B2 (en) | 1999-04-30 | 2005-01-04 | Cisco Technology, Inc. | System and method for distributing multicasts in virtual local area networks |
US6546415B1 (en) | 1999-05-14 | 2003-04-08 | Lucent Technologies Inc. | Network management system using a distributed namespace |
WO2000074402A1 (en) * | 1999-05-28 | 2000-12-07 | Afx Technology Group International, Inc. | Wireless transceiver network employing node-to-node data messaging |
US6850987B1 (en) | 1999-06-01 | 2005-02-01 | Fastforward Networks, Inc. | System for multipoint infrastructure transport in a computer network |
US6411967B1 (en) | 1999-06-18 | 2002-06-25 | Reliable Network Solutions | Distributed processing system with replicated management information base |
US7463648B1 (en) * | 1999-08-23 | 2008-12-09 | Sun Microsystems, Inc. | Approach for allocating resources to an apparatus based on optional resource requirements |
US7117273B1 (en) | 2000-01-25 | 2006-10-03 | Cisco Technology, Inc. | Methods and apparatus for maintaining a map of node relationships for a network |
US6269085B1 (en) * | 2000-02-03 | 2001-07-31 | Sun Microsystems, Inc. | Method and apparatus for hierarchical discovery and pruning of slow members of a multicast group |
US6917985B2 (en) | 2000-03-10 | 2005-07-12 | The Regents Of The University Of California | Core assisted mesh protocol for multicast routing in ad-hoc Networks |
US6553377B1 (en) | 2000-03-31 | 2003-04-22 | Network Associates, Inc. | System and process for maintaining a plurality of remote security applications using a modular framework in a distributed computing environment |
EP1139602A1 (en) | 2000-03-31 | 2001-10-04 | Lucent Technologies Inc. | Method and device for multicasting |
US7123620B1 (en) * | 2000-04-25 | 2006-10-17 | Cisco Technology, Inc. | Apparatus and method for scalable and dynamic traffic engineering in a data communication network |
US6775703B1 (en) | 2000-05-01 | 2004-08-10 | International Business Machines Corporation | Lease based safety protocol for distributed system with multiple networks |
WO2001098936A2 (en) | 2000-06-22 | 2001-12-27 | Microsoft Corporation | Distributed computing services platform |
US6947963B1 (en) | 2000-06-28 | 2005-09-20 | Pluris, Inc | Methods and apparatus for synchronizing and propagating distributed routing databases |
US7139270B1 (en) * | 2000-08-22 | 2006-11-21 | Lucent Technologies Inc. | Systems and method for transporting multiple protocol formats in a lightwave communication network |
WO2002019624A2 (en) * | 2000-08-31 | 2002-03-07 | The Regents Of The University Of California | Cluster-based aggregated switching technique (cast) for routing data packets and information objects in computer networks |
AU2001295809A1 (en) * | 2000-10-26 | 2002-05-06 | British Telecommunications Plc | Telecommunications routing |
US7379994B2 (en) * | 2000-10-26 | 2008-05-27 | Metilinx | Aggregate system resource analysis including correlation matrix and metric-based analysis |
US20020150094A1 (en) | 2000-10-27 | 2002-10-17 | Matthew Cheng | Hierarchical level-based internet protocol multicasting |
US6836756B1 (en) | 2000-11-13 | 2004-12-28 | Nortel Networks Limited | Time simulation techniques to determine network availability |
US6947434B2 (en) | 2000-11-16 | 2005-09-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Subgroup multicasting in a communications network |
CA2326851A1 (en) * | 2000-11-24 | 2002-05-24 | Redback Networks Systems Canada Inc. | Policy change characterization method and apparatus |
WO2002057917A2 (en) | 2001-01-22 | 2002-07-25 | Sun Microsystems, Inc. | Peer-to-peer network computing platform |
US7062563B1 (en) | 2001-02-28 | 2006-06-13 | Oracle International Corporation | Method and system for implementing current user links |
US6625604B2 (en) | 2001-03-09 | 2003-09-23 | Hewlett-Packard Development Company, L.P. | Namespace service in a distributed file system using a database management system |
US7085825B1 (en) | 2001-03-26 | 2006-08-01 | Freewebs Corp. | Apparatus, method and system for improving application performance across a communications network |
US7113536B2 (en) | 2001-04-16 | 2006-09-26 | Telefonaktiebolaget L M Ericsson (Publ) | Rendezvous point interpiconet scheduling |
US6928578B2 (en) | 2001-05-10 | 2005-08-09 | International Business Machines Corporation | System, method, and computer program for selectable or programmable data consistency checking methodology |
EP1410196B1 (en) | 2001-06-22 | 2019-08-07 | AVEVA Software, LLC | Installing supervisory process control and manufacturing software from a remote location and maintaining configuration data links in a run-time environment |
US7181547B1 (en) | 2001-06-28 | 2007-02-20 | Fortinet, Inc. | Identifying nodes in a ring network |
GB2377140B (en) | 2001-06-29 | 2005-01-19 | Ibm | Method and apparatus for recovery from faults in a loop network |
US6922791B2 (en) | 2001-08-09 | 2005-07-26 | Dell Products L.P. | Failover system and method for cluster environment |
US7493363B2 (en) | 2001-09-19 | 2009-02-17 | Microsoft Corporation | Peer-to-peer group management and method for maintaining peer-to-peer graphs |
ITMI20012088A1 (it) | 2001-10-10 | 2003-04-10 | Cit Alcatel | Metodo per propagare l'informazione di guasto in una rete rpr e relativo tipo di pacchetto rpr |
US6983397B2 (en) | 2001-11-29 | 2006-01-03 | International Business Machines Corporation | Method, system, and program for error handling in a dual adaptor system where one adaptor is a master |
US7426573B2 (en) | 2001-12-12 | 2008-09-16 | Alcatel Lucent | System and method for providing service availability data for a communication network |
US7231463B2 (en) | 2002-01-04 | 2007-06-12 | Intel Corporation | Multi-level ring peer-to-peer network structure for peer and object discovery |
US7076796B2 (en) | 2002-01-04 | 2006-07-11 | Reeves Drue A | Virtual media from a directory service |
US20030145086A1 (en) | 2002-01-29 | 2003-07-31 | O'reilly James | Scalable network-attached storage system |
JP3937855B2 (ja) | 2002-02-06 | 2007-06-27 | 日本電気株式会社 | マルチリング制御方法およびそれを用いるノード並びに制御プログラム |
CN1177436C (zh) | 2002-02-09 | 2004-11-24 | 华为技术有限公司 | 移动网络中多播用户的管理方法 |
US7043550B2 (en) | 2002-02-15 | 2006-05-09 | International Business Machines Corporation | Method for controlling group membership in a distributed multinode data processing system to assure mutually symmetric liveness status indications |
US6779093B1 (en) | 2002-02-15 | 2004-08-17 | Veritas Operating Corporation | Control facility for processing in-band control messages during data replication |
WO2003073206A2 (en) * | 2002-02-22 | 2003-09-04 | Bea Systems, Inc. | System and method for using a data replication service to manage a configuration repository |
US7254634B1 (en) | 2002-03-08 | 2007-08-07 | Akamai Technologies, Inc. | Managing web tier session state objects in a content delivery network (CDN) |
US7039719B2 (en) | 2002-03-21 | 2006-05-02 | Hewlett-Packard Development Company, L.P. | Distributed system with an efficient atomic broadcast mechanism |
US7512649B2 (en) * | 2002-03-22 | 2009-03-31 | Sun Microsytems, Inc. | Distributed identities |
US7103884B2 (en) * | 2002-03-27 | 2006-09-05 | Lucent Technologies Inc. | Method for maintaining consistency and performing recovery in a replicated data storage system |
US7290262B2 (en) | 2002-05-21 | 2007-10-30 | International Business Machine Corporation | Method and apparatus for dynamically determining information for deploying a web service |
EP1394999A1 (en) | 2002-08-07 | 2004-03-03 | Infineon Technologies AG | Method for routing of data packets and routing apparatus |
US7849140B2 (en) | 2002-08-29 | 2010-12-07 | Oracle America, Inc. | Peer-to-peer email messaging |
US7613796B2 (en) | 2002-09-11 | 2009-11-03 | Microsoft Corporation | System and method for creating improved overlay network with an efficient distributed data structure |
US7239605B2 (en) | 2002-09-23 | 2007-07-03 | Sun Microsystems, Inc. | Item and method for performing a cluster topology self-healing process in a distributed data system cluster |
US7200657B2 (en) | 2002-10-01 | 2007-04-03 | International Business Machines Corporation | Autonomic provisioning of network-accessible service behaviors within a federated grid infrastructure |
US6909721B2 (en) | 2002-10-31 | 2005-06-21 | Nokia Corporation | Device detection and service discovery system and method for a mobile ad hoc communications network |
US7289520B2 (en) | 2002-11-20 | 2007-10-30 | Hewlett-Packard Development Company, L.P. | Method, apparatus, and system for expressway routing among peers |
US6850487B2 (en) | 2002-12-05 | 2005-02-01 | The Regents Of The University Of California | Method and apparatus for guaranteeing a failure-recovery time in a wavelength-division multiplexing network |
US7652998B2 (en) | 2002-12-11 | 2010-01-26 | Nippon Telegraph And Telephone Corporation | Multicast communication path calculation method and multicast communication path calculation apparatus |
AU2003300900A1 (en) * | 2002-12-13 | 2004-07-09 | Internap Network Services Corporation | Topology aware route control |
US7404006B1 (en) | 2002-12-20 | 2008-07-22 | Symantec Operating Corporation | Publishing a network address in a computer network |
US7480708B2 (en) | 2002-12-23 | 2009-01-20 | Sap Ag | Method and computer program product for managing data consistency |
US7137018B2 (en) * | 2002-12-31 | 2006-11-14 | Intel Corporation | Active state link power management |
US7747731B2 (en) | 2003-03-27 | 2010-06-29 | Nokia Corporation | Minimizing message processing latency in a communication network |
US7120824B2 (en) | 2003-05-09 | 2006-10-10 | International Business Machines Corporation | Method, apparatus and program storage device for maintaining data consistency and cache coherency during communications failures between nodes in a remote mirror pair |
US6988173B2 (en) | 2003-05-12 | 2006-01-17 | International Business Machines Corporation | Bus protocol for a switchless distributed shared memory computer system |
US7426637B2 (en) * | 2003-05-21 | 2008-09-16 | Music Public Broadcasting, Inc. | Method and system for controlled media sharing in a network |
US7032089B1 (en) | 2003-06-09 | 2006-04-18 | Veritas Operating Corporation | Replica synchronization using copy-on-read technique |
EP1494394A1 (en) | 2003-06-30 | 2005-01-05 | Sony International (Europe) GmbH | Distance-aware service mechanism for determining the availability of remote services in wireless personal area networks |
US7334062B1 (en) | 2003-07-22 | 2008-02-19 | Symantec Operating Corporation | Technique to monitor application behavior and tune replication performance |
US20050031119A1 (en) | 2003-08-04 | 2005-02-10 | Yuying Ding | Method and communications device for secure group communication |
US7680152B2 (en) | 2003-08-07 | 2010-03-16 | Robert Bosch Gmbh | Method for establishing a user of a data network as a pilot master |
US20050050320A1 (en) | 2003-09-02 | 2005-03-03 | Microsoft Corporation | Branding framework |
US20050091399A1 (en) | 2003-09-30 | 2005-04-28 | Candan Kasim S. | Resource-aware adaptive multicasting in a shared proxy overlay network |
US7289501B2 (en) | 2003-11-06 | 2007-10-30 | Teknovus, Inc. | Method and apparatus for bandwidth-efficient multicast in ethernet passive optical networks |
US20050108481A1 (en) | 2003-11-17 | 2005-05-19 | Iyengar Arun K. | System and method for achieving strong data consistency |
US20050111352A1 (en) | 2003-11-21 | 2005-05-26 | Boon Ho | Method and system for monitoring a network containing routers using a backup routing protocol |
US7243089B2 (en) | 2003-11-25 | 2007-07-10 | International Business Machines Corporation | System, method, and service for federating and optionally migrating a local file system into a distributed file system while preserving local access to existing data |
KR100576935B1 (ko) | 2003-12-22 | 2006-05-10 | 한국전자통신연구원 | 온톨로지 기반의 애드혹 서비스 검색 시스템 및 방법 |
US7420954B2 (en) | 2004-01-13 | 2008-09-02 | General Motors Corporation | Efficient lightweight information dissemination algorithm for mobile wireless ad hoc networks |
US7313565B2 (en) | 2004-02-19 | 2007-12-25 | Microsoft Corporation | Data overlay, self-organized metadata overlay, and associated methods |
US20050220106A1 (en) | 2004-03-31 | 2005-10-06 | Pierre Guillaume Raverdy | Inter-wireless interactions using user discovery for ad-hoc environments |
US7730207B2 (en) | 2004-03-31 | 2010-06-01 | Microsoft Corporation | Routing in peer-to-peer networks |
US7478263B1 (en) | 2004-06-01 | 2009-01-13 | Network Appliance, Inc. | System and method for establishing bi-directional failover in a two node cluster |
US7512064B2 (en) | 2004-06-15 | 2009-03-31 | Cisco Technology, Inc. | Avoiding micro-loop upon failure of fast reroute protected links |
US7805407B1 (en) | 2004-06-16 | 2010-09-28 | Oracle America, Inc. | System and method for dynamic configuration of replicated database servers |
GB0416074D0 (en) | 2004-07-17 | 2004-08-18 | Ibm | Controlling data consistency guarantees in storage apparatus |
US7715396B2 (en) * | 2004-08-19 | 2010-05-11 | Microsoft Corporation | Network routing |
US7613703B2 (en) * | 2004-09-30 | 2009-11-03 | Microsoft Corporation | Organizing resources into collections to facilitate more efficient and reliable resource access |
US8549180B2 (en) | 2004-10-22 | 2013-10-01 | Microsoft Corporation | Optimizing access to federation infrastructure-based resources |
US8392515B2 (en) | 2004-10-22 | 2013-03-05 | Microsoft Corporation | Subfederation creation and maintenance in a federation infrastructure |
US7958262B2 (en) | 2004-10-22 | 2011-06-07 | Microsoft Corporation | Allocating and reclaiming resources within a rendezvous federation |
US7730220B2 (en) | 2004-10-22 | 2010-06-01 | Microsoft Corporation | Broadcasting communication within a rendezvous federation |
US20060090003A1 (en) | 2004-10-22 | 2006-04-27 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US8014321B2 (en) | 2004-10-22 | 2011-09-06 | Microsoft Corporation | Rendezvousing resource requests with corresponding resources |
US7694167B2 (en) | 2004-10-22 | 2010-04-06 | Microsoft Corporation | Maintaining routing consistency within a rendezvous federation |
US20110082928A1 (en) | 2004-10-22 | 2011-04-07 | Microsoft Corporation | Maintaining consistency within a federation infrastructure |
US20080288659A1 (en) | 2006-11-09 | 2008-11-20 | Microsoft Corporation | Maintaining consistency within a federation infrastructure |
US8095601B2 (en) | 2004-10-22 | 2012-01-10 | Microsoft Corporation | Inter-proximity communication within a rendezvous federation |
US8095600B2 (en) | 2004-10-22 | 2012-01-10 | Microsoft Corporation | Inter-proximity communication within a rendezvous federation |
US20060155781A1 (en) | 2005-01-10 | 2006-07-13 | Microsoft Corporation | Systems and methods for structuring distributed fault-tolerant systems |
US7467265B1 (en) * | 2005-06-30 | 2008-12-16 | Symantec Operating Corporation | System and method for block conflict resolution within consistency interval marker based replication |
US7827262B2 (en) * | 2005-07-14 | 2010-11-02 | Cisco Technology, Inc. | Approach for managing state information by a group of servers that services a group of clients |
US8589574B1 (en) * | 2005-12-29 | 2013-11-19 | Amazon Technologies, Inc. | Dynamic application instance discovery and state management within a distributed system |
JP4727437B2 (ja) | 2006-02-03 | 2011-07-20 | 株式会社日立製作所 | データベースを有するストレージシステムの記憶制御方法 |
US7673069B2 (en) | 2006-02-24 | 2010-03-02 | Microsoft Corporation | Strong routing consistency protocol in structured peer-to-peer overlays |
US20070214194A1 (en) | 2006-03-07 | 2007-09-13 | James Reuter | Consistency methods and systems |
WO2008036777A2 (en) * | 2006-09-19 | 2008-03-27 | Bea Systems, Inc. | System and method for supporting service networks in a service-oriented architecture environment |
TWI390869B (zh) | 2008-04-24 | 2013-03-21 | Univ Nat Taiwan | 網路資源分配系統及方法 |
-
2005
- 2005-09-07 US US11/220,756 patent/US8014321B2/en not_active Expired - Fee Related
- 2005-10-07 AU AU2005220253A patent/AU2005220253B2/en not_active Ceased
- 2005-10-13 EP EP05109546A patent/EP1650911B1/en not_active Not-in-force
- 2005-10-13 AT AT05109546T patent/ATE553571T1/de active
- 2005-10-19 BR BRPI0504513-4A patent/BRPI0504513A/pt not_active IP Right Cessation
- 2005-10-19 CA CA002523897A patent/CA2523897A1/en not_active Abandoned
- 2005-10-21 KR KR1020050099588A patent/KR101201072B1/ko not_active IP Right Cessation
- 2005-10-21 MX MXPA05011314A patent/MXPA05011314A/es active IP Right Grant
- 2005-10-21 RU RU2005132569/09A patent/RU2400806C2/ru not_active IP Right Cessation
- 2005-10-21 JP JP2005306949A patent/JP4726604B2/ja not_active Expired - Fee Related
-
2011
- 2011-06-07 US US13/155,098 patent/US20110238841A1/en not_active Abandoned
- 2011-06-07 US US13/155,113 patent/US8417813B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006174417A (ja) | 2006-06-29 |
US8014321B2 (en) | 2011-09-06 |
US20060087990A1 (en) | 2006-04-27 |
US20110235551A1 (en) | 2011-09-29 |
JP4726604B2 (ja) | 2011-07-20 |
KR101201072B1 (ko) | 2012-11-14 |
EP1650911A2 (en) | 2006-04-26 |
RU2005132569A (ru) | 2007-04-27 |
EP1650911A3 (en) | 2006-05-31 |
EP1650911B1 (en) | 2012-04-11 |
AU2005220253B2 (en) | 2010-07-01 |
BRPI0504513A (pt) | 2006-06-27 |
AU2005220253A1 (en) | 2006-05-11 |
US8417813B2 (en) | 2013-04-09 |
ATE553571T1 (de) | 2012-04-15 |
CA2523897A1 (en) | 2006-04-22 |
MXPA05011314A (es) | 2006-04-26 |
RU2400806C2 (ru) | 2010-09-27 |
US20110238841A1 (en) | 2011-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101201072B1 (ko) | 자원 요청을 대응하는 자원과 랑데뷰시키는 방법 및 시스템 | |
US20100046399A1 (en) | Rendezvousing resource requests with corresponding resources | |
RU2433461C2 (ru) | Взаимодействие между соседствами в рамках объединения по механизму рандеву | |
RU2431184C2 (ru) | Межблизостная связь в федерации рандеву | |
US7730220B2 (en) | Broadcasting communication within a rendezvous federation | |
US7694167B2 (en) | Maintaining routing consistency within a rendezvous federation | |
US7958262B2 (en) | Allocating and reclaiming resources within a rendezvous federation | |
Kang et al. | A Semantic Service Discovery Network for Large‐Scale Ubiquitous Computing Environments | |
Hwang et al. | Resource name-based routing in the network layer | |
Doval | Self-organizing resource location and discovery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20151016 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20161019 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |