본 발명은 데이터 네트워크에서 다지점 하부구조 전송(MINT) 프로토콜을 실행하는 방법 및 장치를 제공한다. MINT 프로토콜은 데이터 네트워크의 단일 노드와 특정 그룹에 가입된 데이터 네트워크의 엔드-호스트 노드외에 다른 모든 하부구조 사이에서 신뢰할만한 정보 전달 메카니즘을 제공한다. 본 발명은 희소 모드 PIM 또는 코어 기반 트리(CBT)와 같은 IP 멀티캐스트 라우팅 프로토콜을 이용하여 형성된 그룹에 사용하기 적당하며, 또한 멀티캐스트 그룹이 해당 랑데뷰 포인트 또는 노드를 가지는 다른 멀티캐스트 프로토콜에 사용하기 적당하다. 상기 프로토콜의 예는McCanne '869에 개시되어 있으며, 여기에는 오버레이 멀티캐스트 네트워크(OMN)의 설명이 기술되어 있다.
본 발명의 일 예는 데이터 네트워크의 데이터를 분배하는 방법을 제공한다. 데이터 네트워크는 다수의 노드를 접속하고, 다수의 노드중 적어도 일부는 멀티캐스트 그룹을 형성한다. 멀티캐스트 그룹의 노드들중 하나는 랑데뷰 노드로서 지정된다. 상기 방법은 멀티캐스트 그룹의 각 노드에서 그룹 상태를 갖는 데이터 저장부를 유지하는 단계를 포함한다. 랑데뷰 노드에서 수신된 상태 업데이트는 랑데뷰 노드에서 데이터 저장부의 그룹 상태를 업데이트시키는데 사용된다. 신뢰할만한 프로토콜을 이용하여 랑데뷰 노드로부터 멀티캐스트 그룹의 다른 노드에 상태 업데이트가 전달된다. 최종적으로, 데이터의 그룹 상태는 업데이트된 멀티캐스트 그룹의 다른 노드에 저장한다.
본 발명의 다른 실시예에서, 데이터 네트워크의 노드에서 데이터를 처리하는 프로세싱 에이전트가 제공된다. 데이터 네트워크는 다수의 노드를 연결시키고, 상기 다수의 노드중 적어도 일부는 멀티캐스트 그룹을 형성한다. 멀티캐스트 그룹의 노드들중 하나는 랑데뷰 노드로 지정된다. 프로세싱 에이전트는 상태 메모리와 프로토콜 프로세서를 포함한다. 프로토콜 프로세서는 데이터 네트워크의 선택된 노드에 결합하기 위한 로직을 가지며, 신뢰할만한 프로토콜을 이용하여 데이터 채널을 통하여 데이터 네트워크의 다른 프로세싱 에이전트와 함께 데이터를 송수신하는 로직을 가진다. 프로토콜 프로세서는 또한 상태 메모리에 결합되며, 상태 메모리에 데이터를 저장하며 상태 메모리로부터 데이터를 검색하는 로직을 가진다.
일 실시예에서, 본 발명은 데이터 네트워크의 전송자 노드 및 데이터 네트워크의 멀티캐스트 그룹, 엔드-호스트 및/또는 하부구조의 멤버들 사이에서 신뢰할만한 정보 전달 메카니즘을 제공하기 위하여 데이터 네트워크에서 MINT 프로토콜을 수행하는 방법 및 장치를 제공한다.
MINT를 사용하여, 전송자는 데이터 네트워크에 공포하고 데이터 네트워크를 거치는 멀티캐스트 그룹과 명명된 값들을 연관시킴으로써, 다른 그룹 멤버들외에 네트워크 엔티티로 하여금 분배된 상태의 상기 "데이터베이스"에 질문하도록 할 수 있다. 데이터베이스내의 각각의 투플은 "민트(mint)"로 불리며, 자신의 소유자(멀티캐스트 전송자), 명칭 및 멀티캐스트 그룹에 의하여 확인된다. 민트는 액티브 그룹 참가자들과 함께 네트워크의 모든 부분들에 신뢰할수 있을 정도로 전파된다. 바람직하게, 민트는 소스로부터 상기 그룹에 대한 액티브 수신기 세트로의 경로를 따르는 라우터에만 흐른다. 이것은 종래 시스템에 비하여 이점이 있으며 효과적인 라우팅 및 분배에 관하여 주의하지 않으면서 정보를 이용하여 전체 네트워크를 범람시킴으로써 동작하는 MINT 정보의 효과적인 라우팅을 초래한다. 엔드 호스트는 각각의 소유자에 의하여 공개된 모든 민트를 발견 및/또는 헤아리기 위하여 멀티캐스트 서브시스템에게 질물할 것이다. 다음으로, 민트값은 명칭/소유자에 대한 참조에 의하여 질문받을 수 있고, 질문을 수행하는 에이전트는 소유자가 값들ㅇ르 변경할 때 비동기식으로 통보받을 수 있다.
일 실시예에서, 특정 민트는 예를 들면 그룹을 애플리케이션 타입에 맵핑하거나 그룹의 특성을 기술함으로써 그룹이 서로 다른 네트워크 파트에 국부적으로 정의된 트래픽 등급에 맵핑될 수 있도록 하는 특정 시스템 기능을 위하여 예약된다. 예를 들어 만일 전송 데이터 스트림이 애플리케이션-레벨 프로세싱 및/또는트래픽 관리를 필요로 한다면, 특정 "셋업 민트"는 필요한 정보를 제공하고 데이터 전송에 우선한다.
다른 실시예에서, 정보 소스는 그룹에 삽입된 데이터 스트림에 주석을 부가하는 민트를 공개하기 위하여 MINT 프로토콜을 사용할 수 있다. 문제의 그룹에 대한 멀티캐스트 그룹의 각 노드에 위치한 특정화된 패킷 포워딩 엔진은 스트림 주석을 기초로 수신된 데이터 스트림을 처리한다. 예를 들어, 패킷 포워딩 엔진은 스트림 주석을 기초로 데이터 스트림에 네트워크 밴드폭을 할당할 수 있다.
도 1A는 본 발명을 사용하는데 적당한 컴퓨터 시스템(1)의 도면이다. 컴퓨터 시스템(1)은 디스플레이 스크린(5)을 가지는 디스플레이(3)를 포함한다. 캐비넷(7)은 디스크 드라이브, CDROM 드라이브, 디스플레이 어뎁터, 네트워크 카드, 랜덤 액세스 메모리(RAM), 중앙 처리 유닛(CPU) 및 다른 부품, 서브시스템 및 장치와 같은 표준 컴퓨터 부품(도시되지 않음)을 하우징한다. 버튼(13)을 가지는 마우스(11) 및 키보드(9)와 같은 사용자 입력 장치가 도시되어 있다. 트랙볼, 터치-스크린, 디지타이징 테블릿등과 같은 다른 사용자 입력 장치가 사용될 수 있다. 일반적으로, 컴퓨터 시스템은 본 발명을 사용하기에 적당한 데스크탑 컴퓨터와 같은 다른 타입의 컴퓨터 시스템의 일 예이다. 컴퓨터는 여러 서로다른 하드웨어로 구성될 수 있으며 여러 차원과 스타일(예를 들어 랩탑, 팜탑, 펜탑, 서버, 워크스테이션, 메인프레임)에서 만들어질수 있다. 본 명세서에 개시된 프로세싱을 처리하는데 적당한 임의의 하드웨어 플랫폼은 본 발명을 사용하는데 적당하다.
도 1B는 컴퓨터(1)의 캐비넷(7)과 같은 컴퓨터에서 전형적으로 발견될 수 있는 서브시스템을 도시한다. 도 1B에서, 서브시스템은 내부 버스(22)에 직접적으로 인터페이스된다. 서브시스템은 입력/출력(I/O)제어기(24), 시스템 랜덤 액세스 메모리(RAM;26), 중앙 처리 유닛(CPU;28), 디스플레이 어뎁터(30), 직렬 포트(40), 고정 디스크(42) 및 네트워크 인터페이스 어뎁터(44)를 포함한다. 버스(22)의 사용은 각각의 서브시스템으로 하여금 서브시스템들 사이에서 데이터를 전송할 수 있도록, 특히 CPU를 이용하여 데이터를 전송할 수 있도록 한다. 외부 장치는 버스상에서 서브시스템과 인터페이싱함으로써 버스(22)를 통하여 CPU 또는 다른 서브시스템과 통신할 수 있다. 모니터(46)는 디스플레이 어뎁터(30)를 통하여 버스에 접속한다. 마우스와 같은 관련 포인팅 장치(RPD;48)는 직렬 포트(40)를 통하여 접속한다. 키보드(50)와 같은 어떤 장치는 예를 들면 인터럽트 제어기와 해당 레지스터(도시되지 않음)를 통하여 메인 데이터 버스를 사용하지 않고 다이렉트 방법에 의하여 CPU와 통신할 수 있다.
도 1A에 도시된 외부 물리 구성과 마찬가지로, 여러 서브시스템 구성이 가능하다. 도 1B는 하나의 적당한 구성예이다. 도 1B에 도시된 것과 다른 서브시스템 부품 또는 장치가 추가될 수 있다. 적당한 컴퓨터 시스템은 도 1B에 도시된 모든 서브시스템을 이용하지 않고 달성될 수 있다. CDROM 드라이브, 그래픽 액셀러레이터등과 같은 다른 서브시스템은 본 발명의 시스템의 성능에 영향을 미치지 않으면서 구성에 포함될 수 있다.
도 2는 본 발명에 따라 구성된 데이터 네트워크(200)의 일부를 도시한다. 네트워크(200)는 라우팅 노드(또는 네이티브 라우터;202,204,206,208,210 및 212)를 포함한다. 노드는 214,216 및 218로 도시된 양방향 링크에 의하여 상호접속된다. 정보 소스(220,222)가 네트워크(200)에 포함된다. 또한, 추가의 양방향 링크를 통하여 라우팅 노드에 결합된 클라이언트(224,226,228 및 230)들이 네트워크(200)에 나타나 있다. 네트워크(200)는 라우팅 노드(204 및 210)이 사실 각각 도메인 X 및 도메인 Y와 같은 다른 네트워크 도메인의 일부라는 사실을 설명한다. 따라서, 네트워크(200)는 본 발명의 단지 하나의 실시예를 나타낸다. 다른 타입의 네트워크 구조 또는 토폴로지에서는 본 발명의 다른 실시예가 사용될 수 있음이 당업자에게는 명백할 것이다.
MINT 프로세싱 에이전트(232,234,236,238,240 및 242)는 네트워크(200)의 각 노드에 연결된다. MINT 프로세싱 에이전트는 라우팅 노드에 대해 외부적인 것으로 나타나 있지만, MINT 프로세싱 에이전트는 각 라우팅 노드 내에 통합될 수 있다. MINT 프로세싱 에이전트는 그와 관련된 노드를 거쳐 정보를 수신 및 송신하여 MINT 프로토콜을 구현한다. 네트워크(200)는 예컨대, 산발 모드 PIM 또는 코어 기반 트리와 같은 IP 멀티캐스트 라우팅 프로토콜에서 처럼 멀티캐스트 그룹을 형성할 수 있고, 상기 멀티캐스트 그룹은 관련된 렌데즈보우스(rendezvous) 포인트 또는 노드를 갖는다.
도 3은 본 발명에 따라 구성된 MINT 프로세싱 에이전트(300)에 대한 실시예를 나타낸다. MINT 프로세싱 에이전트(300)는 MINT 프로세싱 에이전트(232)와 같이 도 2에 나타난 MINT 프로세싱 에이전트를 나타낸다. MINT 프로세싱 에이전트(300)는 데이터 네트워크(200)에 사용되어 MINT 프로토콜을 구현할 수 있다. MINT 프로세싱 에이전트는 MINT 프로토콜 모듈(PM;302), 데이터 스토어(304) 및 선택적인 패킷 전송 엔진(306)을 포함한다.
MINT-PM(302)는 링크(308)를 통해 데이터 네트워크의 라우팅 노드에 연결된다. MINT-PM은 링크(308)를 사용하여 라우팅 노드와 통신하고 데이터 네트워크의 MINT 프로세싱 에이전트가 서로 통신할 수 있도록 해주는 MINT 채널을 형성한다. 예를 들어, MINT 채널은 데이터 네트워크의 MINT 프로세싱 에이전트 사이 및/또는 MINT 프로세싱 에이전트 및 클라이언트 사이, 정보 소스 및 임의의 다른 엔드-호스트들 사이에 정보를 전송 및 수신하는데 사용된다. 데이터 스토어(304)는 MINT-PM에 연결되고 분산된 상태의 데이터베이스를 형성하는 민트 정보를 저장한다.
선택적인 패킷 전송 엔진(306)은 MINT 프로세싱 에이전트가 McCanne '865에 설명된 바와 같은 민트 정보를 기초로 트래픽 스트림을 조절하는데 사용될 때 사용될 수 있다. 패킷 전송 엔진(306)은 네트워크(200) 상으로 전송된 데이터 패킷(310)을 수신하고 수신된 데이터를 처리하여 네트워크 전송용 출력 데이터 스트림(312)을 수신한다. 패킷 전송 엔진(302)은 MINT-PM(302) 및 데이터 스토어(304)에 연결되어, 패킷 전송 엔진(306)이 어떻게 수신된 데이터 패킷을 처리하는지를 결정하는데 사용되는 정보를 교환한다. 예를 들어, 데이터 스토어(304)로부터 검색된 민트 정보는 패킷 전송 엔진(306)에 의해 사용되어 수신된 데이터 패킷(310)에 대한 데이터 네트워크 상의 대역폭 할당을 결정한다. 또다른 예에서, 데이터 스토어(304)로부터 검색된 민트 정보는 패킷 전송 엔진(306)에 의해 사용되어 민트 정보에 포함된 우선 순위 정보를 기초로 출력 데이터스트림(312)의 패킷의 예정을 짠다.
MINT 프로세싱 에이전트(300)의 또다른 실시예에서, 패킷 전송 엔진(306)은 MINT 프로세싱 에이전트로부터 생략되고, 입사하는 원래(native) 라우터 내에 존재한다고 가정한다. 그러한 실시예에서, 민트 프로세싱 에이전트는 데이터 네트워크의 민트를 처리 및 전송하는데 사용되지만 네트워크에 전송된 데이터 패킷에 대해서는 처리를 수행하지 않는다. 따라서, MINT 프로세싱 에이전트는 민트를 처리하고 데이터 네트워크에서 민트의 신뢰도 있는 전달을 제공하는 작업으로 한정될 것이다.
MINT 프로토콜
MINT 프로토콜은 해당하는 그룹을 지지하는 멀티캐스트 라우팅 트리에 걸친 데이터 네트워크의 하위 집합에 그룹-발생의, 신뢰성 있는 정보 전달 메카니즘을 제공한다. 또한, 엔드-호스트 소스는 MINT 명령어를 당해 그룹의 렌데스보우스 포인트로 향하게 하므로써 데이터를 네트워크에 공개(publish)한다. MINT 프로토콜은 한 메카니즘을 제공하는데, 이에 의해 멤버들이 오고 가면서, 공개된 값들의 집합은 스패닝(spanning) 트리의 활성화된 노드와 관련된 모든 MINT 프로세싱 에이전트에서 유지된다. MINT 프로토콜의 추가적인 특징은 임의의 네트워크 클라이언트 또는 관리 에이전트에 의한 쿼리를 제공하여 가장 최근에 공개된 값들의 집합을 얻게 된다.
MINT 채널은 각 활성화 멀티캐스트 그룹과 관련된다. MINT 채널은 다수의 MINT 명령어들을 포함하는 MINT 액세스 프로토콜에 부착되는 TCP를 사용하는 신뢰성 있는 제어 연결일 수 있다. 애플리케이션은 MINT 명령어들을 렌데스보우스 포인트로 가게하므로써 "민트"라 불리는 이름 붙여진 데이터들을 MINT 채널로 공개한다.; 순서대로, 렌데스보우스 포인트의 MINT-PM는 각 그러한 민트가 각 그룹에 대한 분산 트리에 입사하는 라우팅 노드들과 관련된 모든 MINT 프로세싱 에이전트에 전파됨을 보증한다. 이것은 에지 애플리케이션이 상태를 네트워크에 공개하고 네트워크에 존재하거나 MINT 프로세싱 에이전트의 일부로서 제공되는 애플리케이션-레벨 프로세싱 에이전트(즉, 플러그인)와 통신하도록 한다. 예를 들어, 패킷 전송 엔진은 MINT 채널을 통해 에지 애플리케이션과 통신할 수 있는 애플리케이션-레벨 프로세싱 에이전트를 실행시켜 네트워크 대역폭을 에지 애플리케이션에 할당한다. MINT 프로토콜은 또한 하위-트리가 오고 가면서 동적 형식으로 스패닝 트리의 경로를 따라 민트를 보급하기 위해 분명하게 정의된 통신 추상화(communcation abstraction)를 제공한다. 라우터 또는 노드가 주어진 그룹의 스패닝 트리로의 가지 상에 붙여질 때마다, 그 그룹에 대한 모든 민트는 새로 발생된 브랜치를 따라 넘치거나, 전파된다. 결과적으로, 상태는 신뢰성있게 새로 붙여진 브랜치를 따라 모든 MINT 프로세싱 에이전트로 전파된다.
데이터 모델
MINT 프로토콜에 의해 가정된 데이터 모델은 이름 붙여진 세트(tuple) 또는 민트의 지속적인(persistent) 데이터 스토어이다. 원래의 노드(또는 소유주)는 민트를 네트워크로 공개하거나 그 연결을 MINT 액세스 명령어들을 사용하여 지속적인 데이터 스토어에 양보(relinquish)할 수 있다. 노드가 고장나거나 네트워크로부터연결이 끊어지는 경우에는, 모든 그 공개된 바인딩들은 그 관련된 데이터 스토어에서 삭제되고, 멀티캐스트 라우팅 트리의 해당 다리(leg)(당해 그룹에 대한)는 해체된다.
민트가 지속적이기 때문에, MINT 프로세싱 에이전트는 네트워크에 공개된 모든 민트를 유지할 리소스가 바닥날 수 있다. 이 경우에, 민트 공개 프로세스는 실패한다. 이 실패의 마지막 클라이언트에게 통보하기 위해, 특별 저장된 에러 민트가 그 그룹에 부착되고, 상기 에러 민트는 모든 현존 민트에 대한 우선 순위를 갖는다.
정적 우선 순위는 민트에 할당된다. 이것은 분산 트리의 다리들이 오고 가면서 MINT 프로세싱 에이전트들 사이에서 전파될 때의 민트의 상대적인 순서를 제어한다. 각 민트는 구조화된 계층으로 명명되고, 이에 의해 접두어, 정규 표현 또는 다른 검토 기술에 의해 민트 그룹을 검토하기 위한 풍족한 메카니즘을 제공한다. MINT 데이터 이름은 원래 이름 그대로 표현되는 반면에 MINT 값은 임의의 이진 데이터이다.
도 4는 MINT 프로세싱 에이전트(300)의 데이터 스토어(304)에서 발생할 수 있는 예시적인 MINT 정보(400)를 나타낸다. MINT 정보(400)는 임의의 타입의 정보를 나타내는 민트 파라미터들을 포함한다. 예를 들어, 민트 파라미터는 데이터 네트워크에서 전송된 정보를 설명한다. MINT 정보(400)의 특정 실시예가 도 4에 도시되어 있지만, 본 발명의 범위를 벗어나지 않고 MINT 정보의 다른 실시예들이 다른 타입의 데이터를 표현하는 것도 가능하다는 사실은 당업자에게 명백할 것이다.
MINT 정보(400)는 그룹(401), 원천(402), 이름(404), 값(406) 및 우선 순위(408)로 구성된다. 데이터 네트워크의 노드가 하나 이상의 멀티캐스트 그룹과 관련될 수 있으므로, MINT 정보는 하나 이상의 멀티캐스트 그룹과 관련된 민트 파라미터들을 포함할 수 있다. 도 4에 나타난 바와 같이, 한 원천은 수개의 명명된 값들과 관련될 수 있다. MINT 정보(400)의 특정 실시예에서, 이름 및 값 쌍들은 비디오 데이터 스트림을 설명한다. 상기 이름 및 값 쌍들이 임의의 타입의 정보를 표현할 수 있음이 당업자들에게는 명백할 것이다.
이름공간
MINT 데이터 스토어를 나타내는 이름들은 자연히 이름공간을 형성한다. 익명의 이름 공간은 각 그룹과 관련된다. 즉, 각 그룹의 민트들은 다른 모든 그룹들과 완전히 독립적이다. 이러한 이름 공간들에 대해 충분하고 효율적인 쿼리를 써포트하기 위해, 이름들은 구조화된 단순 형태로 표현된다. 보다 구체적으로, 이름들은 계층적인 이름 공간을 형성하고, 유닉스 파일 시스템이 디렉토리를 계층으로 정렬하고 "/" 분리기를 사용하여 트리 기반 계층을 통한 경로의 상대적인 엘리먼트를 표시하는 것과 마찬가지로 계층 분리는 "/" 분리기로 표시된다.
계층적인 이름 공간 표현은 매칭 쿼리가 현존 이름 공간에 반하여 실행되도록 한다. 예를 들어, 광고-삽입 서비스를 구축하기 위해, 방송 시스템은 "/ad/info"라는 접두어 하에 일련의 민트로서 광고 정보를 공개할 수 있다. 따라서, 클라이언트는 데이터베이스에 "글로빙(globbing)" 매칭을 갖는 이 접두어, 예컨대, "/ad/info" 하에 어떤 이름이 존재하는지 볼것을 쿼리할 수 있다. 마찬가지로, 네트워크 에이전트는 이 정보가 변화할 때마다 통보 받기를 원할 수도 있어서, "/ad/info"와 매칭되는 임의의 민트가 발생, 제거 또는 변형될때 이벤트 콜백(callback)이 발생할 수 있다.
프로토콜 모듈
네트워크의 각 민트 프로세싱 에이전트는 그 에이전트에 알려진 모든 공개된 민트의 원천, 그룹 및 이름으로 표시되는 데이터 스토어를 유지하는 MINT 프로토콜(MINT-PM)을 포함한다. 민트의 공개자는 그 원천 또는 소유자로 불린다. 원천이 데이터 네트워크의 임의의 위치에 배치되어 있는 동안에는, 그 원천은 그 그룹의 렌데즈보우스 포인트를 통한 특정 그룹에 대한 민트를 공개해야 한다.
본 발명의 한 실시예에서, 각 민트는 불명확하게 공개되고 리프레쉬(refresh) 프로세스는 존재하지 않는다. 이것은 MINT 프로토콜(기본적인 라우팅 프로토콜과 관련하여)이 그룹 상태로 하여금 그룹 스패닝 트리를 통해 일정하기 유지되도록 하기 때문에 가능하다. 예를 들어, 몇개의 라우팅 프로토콜에서 실패가 발생하는 경우에, 라우팅 시스템은 해체(tearing down)로서 응답하고, 필요한 그룹을 재구축하여, 결과적으로 당해 그룹에 부착된 임의의 민트는 그룹이 재구성될 때 MINT 그룹에 의해 전파될 것이다. 따라서, 그룹 상태는 지속적으로 유지보수될 수 있고 리프레쉬/타임아웃 프로세스는 필요없게 된다.
임의의 단일 노드가 네트워크 주입할 수 있는 민트의 양은 구성가능한 파라미터에 의해 제한된다. 임의의 주어진 그룹과 관련된 각 세트에 대해 저장된 데이터는 다음 엘리먼트들을 포함한다.
그룹 |
멀티캐스트 그룹의 이름 |
원천 |
이 엔트리를 공개한 노드의 주 IP 어드레스 |
이름 |
이 엔트리의 스트링-기반 이름. 각 세트는 그 원천에 상대적인 고유의 이름을 갖는다. |
값 |
명명된 데이터의 값. 이것은 그 의미가 이 프로토콜 설명의 범위를 벗어나는 임의의 이진 데이터이다. |
우선순위(pri) |
다른 공개된 값들과 비교하여 이 아이템의 전달 우선 순위를 나타내는 작은 정수(더 높은 우선 순위 값은 더 낮은 우선 순위 값들에 앞서 전송되는 경향이 있다. |
각 노드에서의 데이터 스토어는 그 그룹에 대한 렌데즈보우스 포인트에 유지되는 데이터 스토어에 수렴할 것이기 때문에 시퀀스 번호 또는 타임스탬프는 필요치 않다.
3개 타입의 프로토콜 메시지가 존재한다.
·공개 메시지는 MINT가 당해 그룹에 걸친 브로드캐스트 트리를 통해 발생, 전파 및 유지되도록 한다.
·양보 메시지는 그 원천 측에서의 민트 바인딩을 명시적으로 해체한다.
·쿼리 메시지는 MINT 데이터 스토어가 이름 및 값 정보에 대해 질의되도록 한다.
이러한 메세지들은 피어 MINT-PM과 교환되며 다음과 같은 추상적인 형태를 가진다.
공표(G,이름 , 값, pri) |
그룹G에 대한 MINT 채널에서 네트워크로 정해진 값을 공표. 데이타 값은 G에 대한 멀티캐스트 라우팅을 신장하는 네트워크의 모든 노드들로 신뢰성 있게 전달되고, 이는 각각 질의 호출로 이름에 의한 값에 액세스할 수 있게 하여준다. pri 파라미터는 다른 공표된 값들과 비교하여 이러한 아이템의 전달 우선성을 나타내는 (우선 값들이 높은 것이 낮은 우선 값들 앞서 전달되는 경향이 있음) 작은 정수이다. 이러한 바이딩은 오리진(opigin)이 종료되거나 철회 명령으로 상기 바인딩을 철회할 때까지 유지된다. 상태량이 지지 한계르 추가하면 값은 성공적으로 공표될 수 없다. 이러한 경우, 공표 호출이 이루어진 후 비동기적으로 에러가 전달된다. |
철회(G,이름) |
그룹 G에 대한 MINT 채널에서 네트워크로 이전에 공표되었던 정해진 값 철회함. |
질의_이름들(G) |
그룹 G에 대해 네트워크에서 공표된 데이타 바인딩을 알려진 모든 이름들(및 각각의 오리진들)을 리턴함 |
질의(G, 기점, 이름) |
그 키가 이름이고 오리진인 오리진인 그룹 G에 대한 네트워크에서 공표된 MINT 값을 질의함. 그 값을 리턴함. |
공표 메세지
본 발명의 신뢰도는 그룹 맴버쉽 프로토콜에 종속된 신규한 전달 매커니즘에 기초한다. MINT 프로토콜은 그룹 베이시스 상에서 실행되기 때문에, 논의되는 그룹을 일반적으로 "그룹 G"로 표시할 것이다. MINT-PM이 공표된 민트들을 수신하는 피어(peer)는 일반적으로 집결 포인트로 돌아가는 역경로 최단 루트상에 존재할 것이다. 이는 경로가 하부의 라우팅 프로세스에 기초하기 때문에 언제나 발생되는 경우는 아니다. 이러한 피어는 "어미(parent)" 피어로 언급될 수 있다. 임의의 지점에서, 공표된 미트들은 상이한 어미들로부터 수신될 수 있고, 그 결과 그룹 G에 대한 신장트리에서의 변화를 일으키는 라우팅 변경이 이루어진다. 상기 모든 MINT들은 MINT-PM과 연관된 데이터 저장부에서 유지된다.
그룹 G와 같은 그룹의 피어들과 관련된 MINT-PM 들은 유니캐스트 방식으로 MINT 채널상에서 서로 통신한다. MINT 채널은 기본 라우터의 대등(peering) 관계들과 일치하는 신뢰성 있는 TCP 접속과 같은 신뢰성 있는 접속이다.
MINT-PM이 그 어미 피어와 관련된 MINT-PM으로 부터 새로운 민트를 수신할 때, 그 민트를 그 데이타 저장부에 입력시키고, 민트 카피를 그룹 G에 대한 현재의 다중캐스트 신장트리에서 다른 피어들과 관련된 MINT-PM들로 전송한다. 예를 들어, MINT-PM이 그 어미 민트로부터 공표된 민트들 수신하고, 그 데이타 저장을 업데이트하고, 그리고 나서 다른 MINT-PM에게 어미로서 민트를 공표한다. 이러한 과정은 신장트리에 대한 임의의 변경과는 대조적으로 자동적으로 수행된다. 목적은 모든 그룹 G에 대한 신장트리에서 피어들과 관련된 모든 MINT-PM 들이 데이타 저장부에 저장된 모든 민트들을 신뢰성있게 분포시키는 불변값을 유지하는 것이고, 궁극적인 어미는 그룹에 대한 집결 포인트와 관련들 MINT-PM이다.
MINT-PM은 그 테이블에 이미 존재하는 민트를 그 어미로부터 수신하면, MINT-PM은 데이타 값이 상이한지 여부를 검사한다. 데이타 값이 상이하지 않다면, MINT-PM은 피어가 리던던트 데이타를 전송하지 않아야 했음을 알아야 했기 때문에 에러 카운터(네트워크 관리 프로토콜로부터 엑세스 가능함)를 증가시킨다. 데이타 값이 상이하다면, MINT-PM은 그 데이타 저장을 업데이트하고, 그 변화를 G에 대한 현재의 다중캐스트 신장트리에서 그 각각의 자식 피어들에게 전달한다(어미 피어로서 그 민트를 재-공표함으로써). 사실상, MINT-PM은 마치 어미인것처럼 피어 MINT-PM들에 또 다른 공표 명령을 송출한다.
MINT-PM은 그룹 G에 대한 그 어미가 아닌 피어로부터 민트를 수신하면, MINT-PM은 그 피어에 대한 새도우 테이블에서 그 민트 업데이트를 기록한다. 그 피어가 후에 G에 대한 어미가 되면, 이러한 새도우 테이블은 실제의 데이타를 저장하게된다(그리고 테이블을 변경시키는 동안 직면하게 되는 임의의 차이들은 정상적인 민트 도착, 변화, 또는 삭제들로서 취급된다).
그룹 G 노드가 접목(graft) 메세지를 수신하고, 요청 노드가 그룹 G에 접목되면, 그룹 G와 관련된 모든 민트들은 그 요청 노드와 관련된 MINT-PM으로 전송된다. MINT들은 정적인 우선순서로 전송된다(투플의 우신필드에 따라). 모든 알려진 민트들 집합은 후발 민트 도착 및 다른 상태 변경과는 대조적으로 자동적으로 형성되어야만 한다. 노드가 절단(prune) 메세지를 그룹 G의 다른 노드로부터 수신하면, 상기 노드는 아무것도 할 필요가 없고 다운스트림 피어가 그룹 G에 대한 모든 민트들을 잊어버렸다가 가정하여야 한다.
MINT-PM이 그룹 G 에 대한 멀티캐스트 트리에 존재하지 않는 피어로부터 민트를 수신하면, MINT-PM은 업데이트를 무시하고 에러 카운터를 증가시킨다. 피어가 이전에 결합된 그룹을 가지지 않는다면 그룹 G에 대한 민트들을 피어가 전송할 수 없기 때문에, 이는 에러 상태이다.
철회 메세지
그룹 G에 대한 민트가 기점(origin) 노드에 의해 삭제되면(집결 포인트로 전송된 철회 메세지를 통해), 집결 포인트에서 MINT-PM은 그 데이타 저장소로부터 상응하는 민트를 삭제하고 G에 대한 현재 멀티캐스트 신장트리에서 그 각각의 자식 피어들로 철회 메세지를 전달한다.
MINT-PM이 어미 피어로부터 민트에 대한 철회 메세지를 수신하면, 그 데이타 저장을 상의한다(소유자 및 이름에 의해 인덱싱됨). 동일한 소유자 및 이름을 가진 튜플(tuple)이 존재하면, 그 데이타 저장부로부터 상응하는 민트를 제거하고 현재 G에 대한 현재 멀티캐스트 신장트리에서 그 각각의 자식 피어들에 철회 메세지를 전달한다. 이름 및 소유자를 가진 민트가 존재하지 않으면, 에러 상태를 표시하기 위해 에러 카운터가 증가된다. 철회 메세지가 비-어미 피어로부터 수신되면, 새도우 테이블이 업데이트되고 비-어미 피어가 어미 피어가 되면 사용될 것이다. 민트의 철회와 관련된 임의의 이벤트들은 민트가 데이타 저장부로부터 삭제되는 경우 발송된다.
트랙잭션 예들
다음 내용은 본 발명에 따라 MINT 프로토콜을 사용하는 트랜잭션 예들을 보여준다. 트랙잭션 예들은 네트워크 그룹들이 그룹에 대한 앵커(anchor)으로 제공되기 위해 집결 포인트(RP)를 사용하는 프로토콜들을 라우팅함으로써 형성된다고 가정한다. 전형적인 네트워크 동작기간 동안, 각각의 라우팅 노드는 특정 그룹 도는 그와 관련된 RP에 직접 또는 간접으로 액세스할 수 있다.
도5는 본 발명에 따른 데이타 네트워크(200) 및 관련 MINT 처리 에이젼트들을 보여준다. 상기 네트워크(200)에서, 그룹에 대해 RP로서 라우팅 노드(206)를 가지는 멀티캐스트 그룹 A가 형성된다. 그룹 A는 라우팅 노드들(202,206,208,204)을 포함하며, 상기 노드들은 이러한 노드들로부터 다운스트림상에 위치하는 다른 그룹 A 맴버들로 정보를 라우팅한다. 본 발명은 그룹 A에서 도매인 X의 노드(204)를 포함함으로써 제시되듯이 단일 도매인에서 형성된 그룹들 또는 다중 도매인의 노드들로부터 형성된 그룹들이 사용되기에 적합하다.
도6은 본 발명에 따라 도5의 네트워크(200)을 동작시키는 방법(600)에 대한 블록 다이아그램이다. 블록(602)에서, 상기 방법(600)은 도5에 제시되듯이 노드(206)에 위치하는 그룹 A에 대한 RP를 가지는 그룹 A의 형성으로부터 시작한다.
블록(604)에서, 정보 소스(220)는 그룹 A에 민트를 공표한다. 예를 들어, 일 실시예에서 정보 소스(220)는 민트 정보를 포함하는 그룹 A에 대한 공표 명령을 노드(202)로 전송한다. 기본적인 라우팅 프로토콜의 일부로서, 노드(202)는 노드(206)가 그룹 A에 대한 RP임을 알고 있다. 결과적으로, 노드(202)는 수신 종착점인 RP 방향으로 공표 명령을 라우팅한다. 다른 실시예에서, 정보 소스(202)는 예를 들어 그룹 A 에 대한 RP의 위치를 결정하기 위해 디렉토리 서비스를 사용하여 네트워크에 질의할 수 있다. RP 위치가 일단 알려지면, 정보 소스는 RP에 직접적으로 공표 명령을 전달할 수 있다. 트랙잭션 경로(502)는 소스(220)로부터 RP로의 공표 명령 루트를 보여준다.
블록(606)에서, RP는 공표 명령을 수신하고 여기서 공표 명령은 트랙잭션 경로(504)에 의해 제시되듯이 MINT 처리 에이젼트로 전달된다.
블록(608)에서, MINT 처리 에이젼트(236)는 새로운 민트 정보로 그 저장 데이타를 업데이트한다. 이러한 과정은 MINT-PM(302)이 MINT 채널(308)에서 공표된 민트를 수신하고 그 관련 저장 데이타(304)를 업데이트하기 위해 그 민트 정보를 사용하는 경우에 발생한다.
블록(610)에서, 업데이트된 민트 정보는 그룹 A 의 다른 MINT 처리 에이젼트들, 즉 에이젼트(232,234,240)로 전달된다. 이를 달성하기 위해, RP와 관련된 MINT-PM은 MINT 채널을 통해 그룹 A의 다른 MINT 처리 에이젼트들로 새로운 민트 정보를 분배한다. MINT 처리 에이젼트(236)는 새로운 MINT 정보를 그룹 A에 공표하고 업데이트가 기본 라우팅 프로토콜에 의해 결정되는 그룹 A 라우팅을 뒤따른다. 예를 들어, 트랙잭션 경로(506)는 MINT 처리 에이젼트(236)로부터 그룹 A 의 다른 MINT 처리 에이젼트들로 새롭게 공표된 민트의 라우팅을 보여준다. 위에서 제시된 것과 같이 다음 민트 분배 룰들에 의해 일관성이 유지된다. 결과적으로, 정보 소스(220)에 의해 공표된 민트 정보는 그룹 A의 모든 MINT 처리 에이젼트들에 신뢰성있게 분배된다.
도7은 도5의 네트워크(200)을 보여주는 도로서, 그룹 A의 맴버쉽에 대한 변경이 제시된다. 예를 들어, 그룹 A에 대한 맴버쉽이 라인(750)에 지정된 그룹으로부터 노드(212)를 포함하는 라인(752)에 의해 지정된 그룹으로 증가됨을 주목하라.
도8은 본 발명에 따라 도7의 네트워크를 동작시키는 방법(800)에 대한 블록 다이아그램이다. 방법(800)에서, 클라이언트(226)는 그룹 A를 결합시키도록 요청하고, 결과적으로 그룹 A는 확장되어 노드(212) 및 MINT 처리 에이젼트(242)를 포함하게 된다. 방법(800)은 새로운 그룹 맴버를 수용하기 위해 민트 정보가 어떻게 신뢰성있게 전달될 수 있는가를 보여준다.
블록(802)에서, 그룹 A의 현재 맴버쉽은 도7의 750에서 제시되듯이 노드(202,204,206,208)를 포함한다. 블록(804)에서, 클라이언트(228)은 그룹 A를 결함시키도록 노드(212)에 요청을 전달한다. 클라이언트(228)는 그룹 A 상에서 현재 멀티캐스팅되는 정보를 수신하기를 희망할 수 있다. 블록(806)에서, 노드(212)는 연결 요청을 노드(206)에 전달하며, 상기 노드(206)는 그룹(A)의 멤버이다. 상기 연결 요청은 트랜잭션 경로(702)에 의해 도시된다. 노드(212)가 노드(212)로부터 연결 요청을 수신할 때, 노드(212)는 그룹 (A)에 대한 스패닝 트리(spanning tree)에 포함될 것이며, 그룹(A) 멤버쉽은 752에 의해 도시된다. 노드(212)와 관련된 MINT 처리 에이전트(242)는 또한 그룹(A)의 멤버이다.
블록(808)에서, 노드(206)는 노드(212) 및 상기 노드(212)에 관련된 MINT 처리 에이전트(242)가 그룹(A)에 연결되었음을 MINT 처리 에이전트(236)에 알린다. 이것은 트랜잭션 경로(704)에 의해 도시된다. 블록(810)에서, 상기 MINT 처리 에이전트(236)는 MINT 데이터 기억 장치로부터 새롭게 부가된 MINT 처리 에이전트(242)로 그룹(A)에 관련된 민트를 전달한다. 상기 민트는 에이전트(236)의 MINT-PM이 민트 정보를 에이전트(242)의 MINT-PM에 공개할 때 상기 MINT 채널을 통해 전달된다. 이것은 트랜잭션 경로(706)에 의해 도시되다. 블록(812)에서, 상기 MINT 처리 에이전트(242)는 그룹(A)의 모든 MINT 처리 에이전트가 동일한 그룹(A) MINT 정보를 갖도록 상기 새로운 MINT 정보를 데이터 기억 장치에 업데이팅시킨다. MINT 에이전트 (236)는 MINT 에이전트(242)의 부모 동일체이다. MINT 처리 에이전트(242)가 다른 새롭게 부가된 MINT 처리 에이전트의 부모 동일체라면, 상기 다른 MINT 처리 에이전트에 상기 새로운 민트 정보를 재공개할 것이다.
상기의 예에서, 하나의 노드만이 순차적으로 민트 정보가 업데이팅되는 그룹 (A)에 부가된다. 여러 노드가 상기 그룹에 부가되는 상황에서, 상기 민트 전파는연결 요청에 따라 형성된 루트에 따를 것이다. 예를 들어, 일 실시예에서, 상기 민트 정보는 역방향(연결 요청에 대해), 즉 상기 연결 요청자에 되돌려진 연결 요청을 수신한 그룹의 노드로부터의 홉단위 시작 방식으로 전파된다. 상기 그룹에 대한 스패닝 트리의 새로운 분기와 관련된 모든 MINT 처리 에이전트가 업데이팅될 때까지 역방향 홉 단위 루트의 각 MINT 처리 에이전트가 업데이팅된다.
각각의 데이터 기억 장치에 그룹(A)에 관련된 동일한 민트 정보를 갖는 모든 MINT 처리 에이전트를 갖고서, 소스(220)는 그룹(A)에 업데이팅된 민트 정보를 공개하기를 원한다. 블록(814)에서, 상기 소스(220)는 노드(202)를 통해 RP에 공개 명령을 전송한다. 이것은 트랜잭션 경로(708)에 의해 도시된다. 이전에, 상기 소스는 그룹(A)에 대한 RP에 상기 공개 명령을 전송하기 위해 여러 방법 중 하나를 사용할 수 있다.
블록(816)에서, 상기 RP는 소스(220)로부터 공개 명령을 수신한다. 블록 (818)에서, RP는 공개 명령(경로(708))을 MINT 처리 에이전트(236)에 알리고, 상기 MINT 처리 에이전트(236)는 민트를 수신하고 새로운 공개 명령의 민트에 기초하여 데이터 기억 장치를 업데이팅한다. 블록(820)에서, 상기 MINT 처리 에이전트 (236)(부모)는 새로운 민트 정보를 상기 그룹(A)에 관련된 모든 동등 MINT 처리 에이전트(자식 동일체)에 전달한다. 트랜잭션 경로(710)에 의해 도시된 바와 같이, MINT 처리 에이전트(236)는 그룹(A)의 다른 멤버에 MINT 채널을 통해 공개 명령을 전달한다. 그 결과로서, 새로운 민트 정보는 그룹(A)의 모든 부분 및 에이전트 (236)에 대한 자식 동일체인 모든 노드(202, 204, 208, 212)들에 신뢰성있게 전파된다.
상기 예에서, 에이전트(236)에 의해 공개된 새로운 민트 정보는 도 7에 도시된 바와 같이 자식 동일체에 도달하기 위해 하나의 전파 홉만을 필요로 한다. 그러나, 당업자는 자식 동일체가 그룹(A)의 다른 노드들에 민트 정보를 재공개할 수 있음(부모로서)을 명백히 알 것이다. 따라서, 그룹(A) 스패닝 트리가 상호접속된 노드의 큰 분기들을 포함하면, 상기 새로운 민트 정보는 스패닝 트리 아래로 그룹(A)에 관련된 모든 노드(및 MINT 처리 에이전트)에 홉단위로 전파될 것이다.
블록(822)에서, 상기 MINT 처리 에이전트(232, 234, 240, 242)는 모두 새로운 민트 정보를 수신하고 관련된 데이터 기억 장치를 새로운 민트 정보로 업데이팅한다. 따라서, 본 발명에 따르면, 새롭게 공개된 민트 정보는 그룹(A)의 스패닝 트리의 활성 노드와 관련된 모든 MINT 처리 에이전트에 신뢰성있게 분배된다.
방법(800)은 또한 민트 정보가 본 발명에 따라 조회되는 방법을 도시한다.
블록(824)에서, 클라이언트(228)는 그룹(A)과 관련된 민트 정보를 조회하기를 원한다. 클라이언트(228)는 관련 그룹으로서 그룹(A)를 명기하는 노드(212)에 조회 명령을 전송한다. 사용되는 조회 형태는 그룹(A)에 대해 망에 공개된 데이터 바인딩의 모든 공지된 네임(및 각각의 기원)을 리턴하는 것이다. 예를 들어, 상기의 조회 명령[query_name(A)]에 기초된 네임은 상기 정보를 리턴할 것이다.
블록(826)에서, 상기 MINT 처리 에이전트(242)는 조회 명령을 수신한다. 이것은 트랜잭션 경로(712)에 의해 도시된다.
블록(828)에서, 상기 MINT 처리 에이전트(242)는 트랜잭션 경로(714)에 의해나타난 바와 같이 클라이언트(228)에 상기 조회 결과를 전송함으로써 요청된 민트 정보에 응답한다. 이것은 에이전트(242)의 MINT-PM이 관련된 민트 데이터 기억 장치로부터 요청된 정보를 검색하고 상기 결과를 MINT 채널을 통해 클라이언트(228)에 전송할 때 발생한다. 블록(830)에서, 클라이언트(228)는 상기 요청된 민트 정보를 수신하고, 그 결과, 상기 클라이언트(228)는 그룹(A) 상태를 결정하거나 또는 그룹(A)에 전송된 데이터 스트림을 수신하기 위한 동작을 수행하기 위해 리턴된 민트 정보를 사용할 수 있다.
도 9는 클라이언트(228)가 그룹(A)에 대한 자신의 접속을 종료시키고 MINT 바인딩을 철회하는 방법(900)에 대한 블록선도를 도시한다. 상기 방법(900)은 도 10과 도 11을 참조하여 논의될 것이다.
도 10 및 11은 망(200)과 상기 방법(900)의 동작동안 발생하는 관련 트랜잭션을 도시한다.
도 9를 다시 참조하면, 블록(902)에서, 클라이언트(228)는 도 10에 도시된 바와 같은 노드 및 MINT 처리 에이전트를 구성하는 그룹(A)에 부가된다. 블록(904)에서, 클라이언트(228)는 상기 클라이언트(228)로부터 노드(212)로 종료 요청을 전송함으로써 그룹(A)으로부터 종료할 것을 요청한다. 상기 종료 요청의 루트는 1002에 도시된다.
블록(906)에서, 상기 노드(212)는 클라이언트(228)가 그룹(A)으로부터 멤버쉽을 종료하고, 따라서 노드(212)가 상기 그룹으로부터 절단됨을 에이전트(242)에 알린다. 블록(908)에서, 노드(212)가 상기 그룹(A)으로부터 절단되기 때문에, 에이전트(242)는 그룹(A)에 관련된 민트를 폐기시킨다. 그러나, 노드(212)가 다른 그룹의 멤버라면, 상기 다른 그룹에 관련된 민트들은 에이전트(242)에 의해 유지된다. 다른 실시예에서, 에이전트(242)는 하기의 섹션에 기술된 바와 같이 본 발명의 또 다른 측면에 따라 상기 그룹을 떠난후에도 민트를 유지할 수 있다.
블록(910)에서, 상기 노드(212)는 계속적으로 수신될 RP(노드(206))를 향해 종료 요청을 전달한다. 상기 RP는 에이전트(236)에 트랜잭션 경로(1004)에서 도시된 바와 같은 종료 요청(클라이언트(228)에 의한)을 통지한다. 블록(912)에서, 상기 에이전트(236)는 그룹(A)에 대한 민트의 저장을 유지하는데 이것은 상기 민트가 상기 그룹에 대한 RP와 관련되기 때문이다. 그룹(A)가 존재하는 한, 에이전트 (236)는 데이터 기억장치의 민트를 유지할 것이며, 이 경우 상기 에이전트(236)는 다른 그룹 멤버들에게 상기 민트를 전달할 것을 요청받는다.
블록(914)에서, 상기 RP(노드(206))는 클라이언트(228)로부터 종료 요청을 처리하고, 그 결과, 상기 노드(212)는 그룹(A)으로부터 제거된다. 이것이 발생한후에, 상기 결과 그룹은 도 11의 그룹(A)에 의해 도시된 바와 같이 노드(202, 206, 208)를 포함한다.
도 11을 참조하면, 상기 그룹으로부터 제거된 노드(212)를 가지고, 상기 방법(900)은 다음과 같이 기술되는 부가 트랜잭션을 계속한다.
블록(916)에서, 상기 정보 소스(220)는 그룹(A)과 관련된 새로운 민트를 공개한다. 상기 노드(202)는 상기 공개 명령을 수신하고 상기 RP에 상기 명령을 라우팅한다. 상기에 논의된 바와 같이, 상기 정보 소스는 상기 RP의 위치를 탐색하고 상기 공개 명령을 상기 RP에 직접 전달한다. 선택적으로, 상기 노드(202)는 기본이 되는 그룹 라우팅 프로토콜의 결과로서 상기 RP의 위치를 알 수 있고, 따라서 상기 공개 명령을 상기 RP에 라우팅시킨다. 상기 트랜잭션은 트랜잭션 경로(1102)에 도시된다.
블록(918)에서, 트랜잭션 경로(1104)에 도시된 바와 같이, 상기 RP는 공개 명령을 수신하고 상기 공개된 민트를 상기 MINT 처리 에이전트(236)에 전달한다. 블록(920)에서, 상기 MINT 처리 에이전트(236)는 데이터 기억 장치에 새로운 민트 정보를 업데이팅한다. 블록(922)에서, 상기 MINT 처리 에이전트는 에이전트(232, 234, 240)라는 명칭의 그룹(A)의 다른 MINT 처리 에이전트에 상기 새로운 민트 정보를 전달한다. 이것은 트랜잭션 경로(1106)에 의해 나타난다. 상기 민트 전파는 상기 에이전트(236)가 그룹(A)의 다른 노드들에 새로운 민트 정보를 갖는 공개 명령을 전달할 때 발생한다.
클라이언트(228)가 상기 그룹(A)에의 연결을 종료하고, 결과적으로 노드 (212)가 그룹(A) 스패닝 트리로부터 제거됨으로써, 상기 MINT 처리 에이전트(242)는 더 이상 그룹(A)에 대한 새로운 민트 정보로 업데이팅되지 않을 것이다. 그러나, 상기 MINT 프로토콜은 그룹(A)의 활성 멤버들인 MINT 처리 에이전트에 대한 민트 데이터 기억 장치를 신뢰성있게 계속해서 업데이팅할 것이다. 노드(212)가 장래에 그룹(A)에 연결할 것을 요청하면, 상기 업데이팅된 민트들은 다시 노드(212)로 전달되고 그후에 MINT 처리 에이전트(242)로 전달된다.
또 다른 실시예에서, 상기 MINT 프로토콜은 지나친 라우팅 변동과 관련된 문제점을 극복하도록 동작한다. 특정 노드들이 반복해서 상기 그룹을 떠나고 다시 연결하게 되는 지나친 라우팅 변동동안, 상기 노드들에 관련된 데이터 기억 장치의 민트 정보가 반복적으로 폐기되고 다시 재생된다. 이것은 데이터 망에 지나친 민트 정보 전송 발생시킨다. 상기의 문제점을 해결하기 위해, 강화된 MINT 프로토콜은 지나친 라우팅 변화로서 발생하는 데이터 저장의 폐기 및 재생을 방지시킨다.
일 실시예에서, MINT 다이제스트는 데이터 기억장치의 민트를 통해 계산된다. 상기 MINT 다이제스트는 상기 데이터 기억장치의 민트들의 선택된 부분 또는 상기 데이터 기억장치의 모든 민트를 표시할 수 있다. 노드가 상기 그룹을 떠날때 상기 민트 정보를 폐기하는 대신에, 상기 노드와 관련된 민트 정보는 관련된 MINT 다이제스트에 따라 데이터 기억장치에 보존된다. 상기 노드가 상기 그룹에 재연결할 때, 상기 노드는 MINT 다이제스트를 상기 그룹에 전송한다. 상기 노드의 MINT 다이제스트가 상기 그룹에 대한 현재 MINT 다이제스트와 다르다면, 상기 노드는 상기 민트 정보의 새로운 카피로 업데이팅된다. 상기 노드는 그후에 민트 데이터 기억장치 및 관련된 다이제스트를 업데이팅한다. 상기 노드로부터의 MINT 다이제스트가 상기 그룹에 대한 MINT 다이제스트와 매칭하면, 상기 MINT 다이제스트는 상기 노드에 상기 민트 정보의 새로운 카피를 전송할 필요가 없다. 따라서, 강화된 MINT 프로토콜은 망에서 민트 정보의 지나친 전송을 방지한다.
또 다른 실시예에서, 시간 파라미터는 데이터 기억장치의 자원을 지나간 민트 정보를 저장하는데 이용되지 않도록 하기 위해 사용된다. 노드가 그룹을 떠날때, 상기 노드에 관련된 상기 MINT 처리 에이전트는 상기 데이터 기억장치의 민트정보를 얼마나 오랫동안 보존할 것인지를 결정하기 위해 상기 시간 파라미터를 사용한다. 상기 시간 파라미터 값은 망 관리자에 의해 결정될 수 있다. 상기 시간 파라미터에 의해 결정된 시간 주기동안 상기 데이터 기억장치 및 관련된 MINT 다이제스트를 보존함으로써, 상기에 논의된 바와 같이 민트 정보의 지나친 전송이 방지될 수 있다. 그러나, 일단 하나의 노드가 그룹을 떠나고 시간 파라미터에 의해 정해진 시간 주기의 종료가 발생하면, 상기 민트 데이터 기억장치에 있는 상기 그룹에 대한 민트가 제거될 수 있으며, 그로인해 데이터 기억장치의 자원들이 자유롭게 이용할 수 있게된다. 따라서, 상기 MINT 처리 에이전트는 망 플랩핑(flapping)동안 과다한 민트 전송을 방지하도록 데이터 기억장치를 유지하며, 선택된 시간 주기의 종료후에, 부가의 민트를 저장하기 위해 유효 자원을 자유롭게 이용하도록 데이터 기억장치를 비운다.
상기에 기술된 MINT 프로토콜을 실행하는 방법 및 장치의 변형이 본 발명의 범위를 벗어나지 않고서 가능하다는 것을 당업자는 명백히 알 것이다. 따라서, 상기에 개시된 기술은 예시적인 것이며 본 발명은 다음의 청구범위에 의해서만 한정된다.