[go: up one dir, main page]

KR20060090810A - 단일 접속과 장애 극복 대칭 다중 계산 시스템을 통한 그룹대 그룹 통신 방법 및 장치 - Google Patents

단일 접속과 장애 극복 대칭 다중 계산 시스템을 통한 그룹대 그룹 통신 방법 및 장치 Download PDF

Info

Publication number
KR20060090810A
KR20060090810A KR1020067005585A KR20067005585A KR20060090810A KR 20060090810 A KR20060090810 A KR 20060090810A KR 1020067005585 A KR1020067005585 A KR 1020067005585A KR 20067005585 A KR20067005585 A KR 20067005585A KR 20060090810 A KR20060090810 A KR 20060090810A
Authority
KR
South Korea
Prior art keywords
group
data
node
communication
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
KR1020067005585A
Other languages
English (en)
Inventor
안니쿠마 도미닉
Original Assignee
트란세임 테크놀로지스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/942,763 external-priority patent/US8086747B2/en
Priority claimed from US10/942,260 external-priority patent/US7525902B2/en
Application filed by 트란세임 테크놀로지스 filed Critical 트란세임 테크놀로지스
Publication of KR20060090810A publication Critical patent/KR20060090810A/ko
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

원자적 다중점 전달 및 다중점 전송, 예를 들어, TCP/IP 를 확장하여 두 세트의 노드 사이에서 신뢰성있고 순서화된 데이터 통신을 가능하게 하는 시스템이 개시된다. 다중 노드로 데이터를 전달해야하는 경우, 전달은 원자적으로 수행된다. 노드 그룹을 사용하여 장애 극복형 대칭 다중 컴퓨팅이 가능한 시스템이 또한 개시된다. 신뢰성있고 순서화된 원자적 그룹대그룹 TCP 통신 시스템을 이용하여 네트워킹된 대칭의 노드 그룹은 클라이언트 어플리케이션에 장애 극복의 단일 시스템 이미지를 제공하기 위해 사용된다. 클라이언트와 그룹 간의 통신은 임의의 표준 TCP/IP 엔드포인트가 균등하게 그룹과 통신할 수 있다는 점에서 표준 기반이다. 프로세싱 부하는 어플리케이션 세그먼트에 태스크를 투명하게 분배하여 노드 그룹 간에 공유된다. 상기 시스템은 노드가 남은 레플리카에 실패한 경우 서비스 또는 접속 중단없이 서비스를 계속한다는 점에서 장애 극복형이다.
다중점 전송, 그룹대그룹 통신, 장애-극복, 엔드포인트, 인스턴스, 어플리케이션 세그먼트, 투명성, 레플리카

Description

단일 접속과 장애 극복 대칭 다중 계산 시스템을 통한 그룹 대 그룹 통신 방법 및 장치{GROUP-TO-GROUP COMMUNICATION OVER A SINGLE CONNECTION AND FAULT TOLERANT SYMMETRIC MULTI-COMPUTING SYSTEM}
본 발명은 네트워크 내의 n 대 n 지점간의 네트워크 통신에 관한 것으로 여기서 n은 임의의 정수 값이다.
최적의 자원 이용 유연성 및 절감된 관리 비용을 위해 산업계는 "유틸리티 컴퓨팅(utility computing)" 모델에 근거한 솔루션을 요구한다. 상기 모델은 처리 능력과 저장 용량이 필요한 만큼 부가될 수 있고 자원들이 변화하는 요구에 부합하기 위해 동적으로 공급된다. 기존의 메인프레임 솔루션은 고 비용으로 인하여 일반 기업들의 접근영역에서 벗어나 있다. 시장에서 활용 가능한 고성능 저가의 "블레이드 서버(blade server)"와 네트워킹 기술이 다수 존재한다. 그러나, 이러한 자원들을 효율적이고 유연하게 취합하고, 유틸리티 컴퓨팅 요구에 부합하기 위해 폭넓은 응용분야에서 동작할 수 있는 솔루션은 아직 존재하지 않는다.
클라이언트-서버 패러다임은 클라이언트가 요청하고 서버가 응답하는 단순성에 기인하여 산업계에 일반화되어 있다. 이 패러다임을 가능케 하기 위하여 통신 네트워크에서 클라이언트와 서버 간에 사용되는 일반적인 통신 프로토콜은 전송 제 어 프로토콜/인터넷 프로토콜(transmission control protocol/Internet Protocol) 또는 간단히, "TCP/IP" 이다. 통신네트워크에서 클라이언트(또는 클라이언트 시스템 또는 머쉰)는 서버(또는 서버 시스템 또는 머쉰)를 단일 논리 호스트나 엔티티로 간주한다. 단일 물리 서버는 종종 수많은 클라이언트의 요구를 효과적으로 만족시키지 못한다. 결국, 고장난 서버는 클라이언트의 실행을 불가능하게 한다.
단일 물리 서버의 결함을 처리하기 위해, 클라이언트에 서비스를 제공하기 위한 병렬 또는 격자로 동작하는 많은 서버를 갖는 클러스터 구성이 부하 분산기(load balancer)를 사용하여 개발되었다. 이러한 구성은 메인프레임에 필적할 만한 장애극복(fault-tolerance), 저비용, 효율성과 유연성과 같은 잠재적인 이점을 제공한다. 그러나, 이러한 또는 다른 이점들은 본래의 제한과 대부분의 어플리케이션에서 이루어지는 표준 플랫폼의 결여로 인해 널리 실현되지 못하고 있다.
물리적인 클러스터링에 더하여, 기존의 소프트웨어 시스템은 운영체제 레벨과 어플리케이션 레벨에서 클러스터링을 도입하기 위한 시도를 했다. 그러나, 어플리케이션에 클러스터링이 도입된 인스턴스를 포함하는 이러한 소프트웨어 구성의 단점은 이러한 어플리케이션의 사용을 제한한다는 것이다. 유사하게, 운영체제 레벨의 클러스터링이 매력적이지만, 이 분야의 기존의 노력들은 가상화되어야 하는 많은 추상적 개념에 기인하여 아직 성공적이지 못하다.
물리 서버, 소프트웨어 어플리케이션 및 운영체제의 클러스터링에 비해, 네트워크 레벨 클러스터링은 이러한 문제점들에 대해 고민하지 않고 약간의 매력적인 이점을 제공한다. 예를 들어, 서버 노드들의 클러스트를 단일 가상 엔티티로 처리 하는 능력은 클라이언트 서버 프로그래밍에서 유용한 요구사항이다. 또한,노드들의 풀로 가상의 클러스트를 쉽게 생성하는 능력은 좀 더 나은 활용과 메인프레임 클래스의 유연성에 부가된다.
기존의 네트워크 레벨 클러스터링 플랫폼은 넓은 응용 분야에 일반적이어야 하고 적용가능해야 한다. 이러한 어플리케이션은 웹 서버, 스토리지 서버, 데이터 베이스 서버, 과학적인 그리드(grid) 컴퓨팅의 응용 범위에 이른다. 이러한 기존의 네트워크 레벨 클러스터는 계산 능력과 노드들의 용량의 집합을 가능케 하여 어플리케이션 비율에 따라 고르게 정한다. 현재의 어플리케이션은 최소한의 거부(no) 또는 변화로 동작할 수 있어야 한다. 그러나, 기존의 네트워크 레벨 클러스터는 단지 제한적인 성공을 거두었을 뿐이다.
대칭 멀티 프로세서(Symmetric Multi-Processor: SMP) 구조의 일정 정도의 성공은 프로세서와 메모리의 위치를 어플리케이션에 투명하게 만드는 버스의 단순성에 기인할 수 있다. 클러스터링에서도 역시 노드 위치의 투명성과 노드 자체의 투명성은 서버 노드들을 연결하는 가상의 버스의 단순성에 기인할 수 있다. 그러나, 이러한 기존의 시스템들은 클라이언트의 어플리케이션이 효율성을 위해 버스를 직접 탭핑시킬 수 있는 능력이 부족하다. 마찬가지로, 유저 데이터그램 프로토콜(User Datagram Protoclol: "UDP") 패킷 브로드캐스트 및 멀티캐스트에 기반한 버스는 데이터 전송의 보증이 결여되어 어플리케이션 레벨 클러스터링을 야기한다.
산업체에 의해 전송 보증을 갖는 가장 많이 사용되는 프로토콜이 TCP/IP이다. TCP의 데이터 전송 보증 요구된 전송 보증및 편재로 가상화 TCP가 바람직하 다. 그러나, 접속 당 두 개의 엔드포인트만의 TCP의 지원은 그것의 잠재력을 제한한다. 들어오는 요구를 클러스터에 분산하는 것과 같은 미리 지정된 작업을 갖는 프로세싱 요소/노드들의 비대칭적인 구성은 본질적으로 유연하지 않고 관리나 로드 밸런싱이 어렵다. 비대칭 노드들은 주로 단일 지점에서 자주 실패하고 병목 현상을 일으킨다. 멀티 컴퓨팅(Multi-Computing: MC)을 성공하기 위하여 비대칭 노드 구성에 반대되는 대칭 구성이 요구된다.
클라이언트 서버 환경에서 비대칭에 대한 또 다른 문제는 레이턴시(latency)이다. 스위치와 라우터는 데이터가 지나가는 동안에 레이턴시를 감소시키기 위한 특별한 하드웨어를 채택한다. 테이터가 노드의 UDP/TCP/IP 스택을 통과해야만 할때, 복사와 처리로 인한 심각한 레이턴시가 추가된다. 그러므로, 최적의 성능을 달성하기 위하여, 시스템은 비대칭적 구조를 가지는 매개 노드를 데이터가 통과하는 것을 반드시 피해야 한다. 그러나, 만일 서버 노드의 CPU들이 다량의 네트워크 트래픽을 취급해야 한다면, 어플리케이션의 처리량과 프로세싱은 이를 감수해야 한다. 그래서, 기존의 시스템은 어플리케이션의 성능을 개선하고 엔드포인트에서의 레이턴시를 감소시키기 위하여 특수한 집적회로 칩이나 어댑터 카드와 같은 하드웨어 가속기를 사용해야만 한다. 이는 시스템의 비용과 복잡성을 증가시킨다.
저비용의 장애 극복은 많은 산업에서 높게 요구된다. 정해진 수의 추가 하드웨어 부품이 사용된 솔루션은 유연성의 부족, 쉽게 복구할 수 있는 능력의 부족과 복잡성에 기인한 고 비용을 대가로 한다. 오늘날의 솔루션은 장애 발생 이후 스탠바이 서버로 신속히 서비스를 스위칭함으로써 높은 유용성을 제공한다. 스탠바이 시스템은 수동적이기 때문에 그 자원들은 고 비용 때문에 활용되지 못한다. 단순하지만 복제(replication)에 의한 장애 극복의 강력한 형태로 노드의 장애 시 중단없이 접속을 통한 서비스를 지속한다.
기존의 클러스터에서는 능동 노드는 태스크를 수행하고 수동 노드는 변경에 대해 나중에 업데이트 한다. 다수의 인스턴스에 있어서, 쿼리(query)와 같은 다른 태스크(task)에 비교해서 적은 수의 업데이트가 존재한다. 머쉰은 업데이트가 레플리카(replica)에 반영되는 동안에 로드가 모든 레플리카 사이에서 공유될 때 가장 잘 활용된다. 업데이트는 동기적이어야 하고 일관성을 위하여 같은 순서로 만들어져야 한다. 원자적 전송(atomic delivery)으로, 클라이언트가 데이터 수신을 표시하는 TCP ACK 신호를 수신하기 전에 데이터는 모든 목적지에 전송되는 것을 보증한다. 실패가 발생하면, 나머지는 장애 극복에 영향을 주는 접속 중단을 피하면서 서비스를 지속할 수 있다. 비 원자적 복제(Non atomic replication)는 유용성이 부족하다. 특히, 클라이언트의 요청이 서비스에 의해 수신될 때 각각은 응답을 생성한다. 클라이언트는 서버를 단일의 엔티티로 보기 때문에 단지 하나의 응답 인스턴스만이 클라이언트에게 되돌아 가는 것이 보증되어야 한다. 비슷하게, 다수의 클라이언트 레플리카가 동일한 요청 발송을 시도하는 경우에도, 단지 하나의 인스턴스만이 서버로 보내지는 것이 보증되어야 한다. 기존의 시스템은 종종 이러한 원자성을 제공하는데 실패한다. 그래서, 유용성과 접속 중단을 피하는 장애 극복이 부족하다.
기존의 클러스터링 시스템의 다른 문제는 로드 밸런싱이다. 다른 어떠한 시 스템에서처럼, 노드 사이의 부하를 고르게 맞추는 능력이 최적의 어플리케이션 성능을 위해 필요하다. 그러나, 기존의 클러스터링 시스템은 예를 들어, 라운드-로빈(round-robin), 컨텐츠 해시드(content hashed) 및 가중치기반 우선순위(weighted priority)와 같은 표준 로드 밸런싱 스키마(scheme)에 대해서만 제한적으로 지원한다. 게다가, 많은 기존의 클러스터링 시스템은 특정한 로드 밸런싱 스키마의 어플리케이션의 구현을 지원할 수 없다.
많은 서비스들은 시간에 의존하는 클러스터에서 많은 변화를 갖는 로드 레벨을 갖는다. 동작하는 프로세스는 능동 서버를 멈추게 하기 위해 이동할 필요가 있다. 기존의 클러스터 시스템은 서비스 중단없이 쉽게 수행되는 방법으로 클러스트에서 노드를 추가하거나 제거하는 지원이 부족하다.
네트워크 레벨의 가상화를 처리하기 위한 많은 시도들이 있어 왔다. 그러나, 각 시도들은 아직 중대한 단점들을 가지고 있다. 예를 들어, 하나의 기존 솔루션은 업계에서 인기 있는 웹서버의 클러스터에서 로드 밸런싱을 위한 디바이스이다. 미국 특허번호 6,006,264와 6,449,647에 또한 공개된 이 로드 밸런싱 디바이스는 들어오는 클라이언트 TCP 접속을 서버 풀 내의 한 서버로 스위칭한다. 이 처리를 위한 기존의 서버는 클라이언트 패킷을 스위치나 라우터로 모든 노드에 브로드캐스트 하거나 멀티캐스트 하는 마이크로소프트의 네트워크 부하 분산기 소프트웨어이다. 그러나, 접속이 한번 맵핑되면, 동일한 서버가 기존의 일 대 일 관계의 TCP 접속 라이프 동안 모든 클라이언트의 요청을 취급한다.
위와 같은 전통적 시스템의 문제점은 서비스가 노드에서 동작하는 다른 유형 의 작업으로 구성된 때, 클라이언트가 접속을 통해 요청하는 모든 서비스를 하지 않는 어떠한 맵핑된 서버는 서비스 실패로 인해 완전한 솔루션을 제공하지 못한다는 것이다. 이는 페이지를 제공하는 단지 하나의 태스크가 많은 노드들에 복제되는 웹페이지를 제공하는 이러한 시스템의 사용을 제한한다. 게다가, 서버에 외부적으로 구현된 디바이스의 맵핑도 병목 현상과 한 지점의 장애를 초래한다. 또한 접속이 오직 두 엔드포인트를 갖기 때문에 복제는 지원되지 않는다. 그러므로, 이러한 단일 종단 TCP를 이용한 업데이트는 레플리카에 반영되지 못하여 유용성에 상당한 한계가 있다.
위의 기존의 시스템의 단점을 처리하기 위하여 클라이언트의 요청을 다른 태스크를 제공하는 노드로의 접속을 통해 분산하기 위한 또 다른 전통적 시스템들이 시도되었다. 라비 코쿠(Ravi Kokku) 등은 "Half Pipe Anchoring."이란 그의 논문에서 이러한 시스템을 발표했다. Half pipe anchoring은 백엔드 포워딩에 기반한다. 이 스키마에서는, 클라이언트의 요청이 서버의 클러스터에 도달하였을 때, 지정된 서버는 요청을 수락하고 데이터의 시험이 끝난 후에 최적의 서버에 전송한다. 이후 접속 상태 정보가 주어진 최적의 서버는 원래의 타겟 어드레스로 어드레스를 교체한 후 클라이언트에 직접적으로 응답한다. 여기서 단일 TCP 엔드포인트가 요청을 분산하기 위해 노드에 동적으로 맵핑된다. 이 스키마는 매개 노드(intervening node)가 데이터를 가로채고 데이터 내용에 기반하여 이를 분배시키는 "비대칭적"인 접근 방법의 한 예이다.
비대칭 구조를 만들어 내려는 또 다른 전통적 시스템은 EMIC 네트워크 사의 두 개의 백서에 발표되었다. 이 기존의 시스템에서는 독점적 프로토콜을 사용하여 지정된 노드가 들어오는 데이터를 가로채고 캡쳐하여 여러 노드에 이를 확실하게 전달한다. 때때로 오직 하나의 노드만이 데이터 전송이 허용되고 데이터는 지정된 서버로 먼저 전송되고 이후 서버는 클라이언트에 데이터를 전송한다. 여기서, 또한 단일 엔드포인트는 동적으로 맵핑되고 TCP 접속은 복제가 초기화되는 매개 노드에서 종결된다. 이 스키마는 매개 노드가 데이터를 가로채어 복제하는 "비대칭적" 시도의 또 다른 예이다.
위에서 기술된 두 스키마는 비록 다른 노드에서 매핑 되었다 하여도 두 엔드포인트의 TCP 정의를 유지한다. 이러한 기존의 스키마에서의 복제는 독점적 프로토콜을 사용하여 어플리케이션 레벨에서 수행된다. 게다가, 이러한 기존의 스키마는 비대칭적 노드 구조를 채택한다. 여기서 선택 노드는 요청을 분산하는 어플리케이션 레벨 라우터로 동작한다. 그러나, 이러한 비대칭성은 Aaron 등에 의해 "Scalable Content Aware Request Distribution in Cluster Based Network Servers" 에서 언급된 것과 같은 범용성이 제한된다. 이러한 제한점은 단일지점에서의 장애, 데이터 처리량의 병목현상, 높은 레이턴시로 인한 차선 성능 및 위치 투명성의 부족 등을 포함한다.
그러므로, m 대 n 접속을 제공하기 위해 TCP의 두 엔드포인트의 현재 정의를 사용하는 방법 및 대칭시스템이 요구된다.(m, n은 임의의 정수로 같을 수도 있고, 같지 않을 수도 있다.)
위에서 언급된 요구사항 및 다른 요구사항은 TCP의 현재 호스트 대 호스트간 통신 범위를 그룹 대 그룹간 통신으로 확장함으로써, 보다 상세하게는 두 접속 엔드포인트(connection endpoint)에 대한 현재의 정의를 대칭적으로 구성된 노드들로 연결된 두 그룹의 엔드포인트의 정의로 확장함으로써 달성된다. 각각의 엔드포인트는 TCP의 순서화된 전송을 유지하면서 독립적이고 병렬로 수신과 전송할 권리를 갖는다. 데이터는 구성에 따라 전체그룹이나 서브세트(subset)에 전달된다. 필요한 타겟 엔드포인트만이 TCP의 ACK를 피어(peer) 그룹에 전송하기 전에 데이터를 수신하도록 요구된다.
일실시예에서, 본 발명은 하나 이상의 IP 어드레스를 가진 단일 가상 엔티티로서 노드의 클러스터를 어드레싱하는 것을 허용한다. 클라이언트 그룹과 서버 그룹간의 통신은 어떠한 표준 TCP/IP 엔드포인트라도 그룹과 결함없이 통신할 수 있어야 한다는 점에서 엄격하게 표준기반이다. 데이터는 대칭적으로 구성된 그룹의 노드에서 종결되는 엔드포인트로 원자적으로 전달된다.
엔드포인트에 설치된 필터는 어플리케이션 세그먼트에 무관한 도착한 데이터를 필터링한다. 어플리케이션 세그먼트로의 데이터 전달은 적절하게 구성되어 설치된 필터에 의해 동적으로 제어된다. 추가적으로 필터는 복사본의 개입 없이 들어오는 데이터를 직접 타겟 어플리케이션 메모리에 배치하는 것을 선택적으로 수행한다.
접속을 통한 입력과 출력은 노드가 서로 독립적으로 및 병렬로 수신하고 전송함으로써 분리된다. 모든 전송은 TCP 명세에 따라 순차적이고 노드간의 전송제어는 그룹 노드간의 라운드 로빈 방식이나 전송 요청자 간의 라운드 로빈 방식 또는 어플리케이션 특정 스키마에 기반하여 순서화된다. 노드들은 병렬로 재전송하고 이를 수행하는 데 있어 이들 간에 추가적인 동기화를 필요로 하지 않는다.
범용성 및 부하 공유를 위해 어플리케이션 기능은 그룹 노드에 분산된다. 이를 달성하기 위해 어플리케이션은 논리적으로 분할되어 있으며, 각각은 어플리케이션 기능의 서브세트로 동작한다. TCP 접속에 도달한 들어오는 요청은 효과적으로 부하를 분배하는 그룹상에 상주하는 세그먼트에 전달된다. 어플리케이션 인스턴스에 특정한 요청 세트만을 전달함으로써 논리 세그먼트화는 어플리케이션 코드 변경 없이 가능하다. 어플리케이션 세그먼트는 노드에서 노드로 접속 중단없이 동적으로 이동할 수 있다.
게다가, 노드는 그룹에 의해 대표되는 가상의 엔티티로 접속을 형성함으로써 그룹의 다른 노드들과 통신할 수 있다. 이는 그룹 노드들 간의 통신을 위한 위의 모든 특징을 제공한다.
이 시스템은 노드가 어플리케이션 구동을 실패한 경우 그룹 내에 남아 있는 어플리케이션 레플리카 세트가 접속 및 서비스의 중단 없이 서비스를 계속할 수 있다는 점에서 장애 극복성을 갖는다. 노드는 어플리케이션에 투명한 방식의 서비스의 확실한 품질을 유지하기 위해 동적으로 그룹에 부가되거나 그룹으로부터 제거된다. 노드들 사이의 부하 밸런싱 또는 노드 제거 목적을 위하여 시스템은 투명하게 액티브 서비스를 이동시키고 그룹 내에서 태스크를 재분배한다.
그룹의 노드들에서 동작하는 어플리케이션은 클라이언트/서버 응용 프로그래밍과 자원의 관리를 단순화한 가상의 단일 엔티티로 그룹의 나머지를 보고 동작할 수 있다. 본 발명의 일실시예는 그룹 노드를 통해 독립적으로 동작하는 하나 이상의 세그먼트로 어플리케이션을 분리하는 것을, 코드 변경 요구 없이 어플리케이션에 투명한 방법으로 허용한다.
시스템은 다양한 어플리케이션 세그먼트로 접속을 통해 들어오는 태스크를 동적으로 투명하게 분배함으로써 노드 그룹간의 프로세싱 로드를 공유한다. 접속을 통해 도달한 단일 요청은 결합된 다중 세그먼트 작업에 의해 서비스되어 노드들에 대해 처리나 계산의 적절한 분배가 가능해진다. 이 시스템은 세그먼트의 다중 인스턴스가 병렬로 동작하는 것을 허용한다. 요청은 라운드 로빈, 최소 부하 노드(least loaded node), 친화성 기반(affinity based), 컨텐츠 해싱(content hashing) 등과 같은 스키마에 기반하여 선택된 인스턴스에 전달된다.
들어오는 요청은 장애 극복을 위해 다중 세그먼트 인스턴스로 원자적으로 전달된다. 결과는 선택적으로 비교되고 하나의 인스턴스가 출력이다. 세그먼트/노드의 실패시 남아있는 세그먼트 인스턴스는 접속 중단없이 서비스를 지속한다.
상기 시스템은 접속 엔드포인트에서 미세하게 필터를 제어하고 구성하는 방식으로 태스크를 분배함으로써 시스템의 유연한 외부적인 관리를 허용한다. 제거될 때, 노드의 로드에 대한 책임은 최하 부하, 라운드 로빈 또는 어플리케이션 특정 스키마와 같은 스키마를 사용하여 선택된 다른 노드로 이동된다. 이 시스템은 자동적이고 동적으로 자원을 변화하는 요구에 맞춰 풀로부터 그룹으로 부가한다. 마찬가지로 노드는 자동적이고 동적으로 제거되고 공급된다. 이 시스템은 자원을 자동적으로 추가하거나 제거하면서 일정 품질의 서비스를 유지한다.
이 명세서에 기술된 특징과 이점들은 모든 특징들을 포함하는 것이 아니고, 특히, 많은 추가적인 특징과 이점들이 도면, 명세서, 청구항의 관점에서 당업자에게 명확할 것이다. 또한 명세서에서 사용된 언어들은 가독성과 교육적 목적을 위해 원칙적으로 선택되었고 발명의 주제를 제한하기 위해 선택된 것은 아니다.
본 발명의 다른 이점 및 특징은 도면을 참고하여 다음의 발명의 상세한 설명과 부가된 청구항으로부터 좀더 쉽게 명확해질 것이다.
도 1a 는 본 발명의 일실시예에 따라 구축된 통신시스템의 일반화된 다이어그램이다.
도 1b는 본 발명의 일실시예에 따른 통신시스템의 블록 다이어그램을 나타낸다.
도 1c는 본 발명의 일실시예에 따른 통신시스템의 구현을 위한 상위 레벨 컴포넌트의 구성을 나타낸 블록 다이어그램을 나타낸다.
도 1d는 본 발명의 일실시예에 따른 통신시스템의 최적 성능을 위한 하위 레벨 구성 컴포넌트 구현의 블록 다이어그램을 나타낸다.
도 2는 본 발명의 일실시예에 따른 통신 시스템의 구현을 위한 상위 레벨 컴포넌트의 하드웨어 구성의 블록 다이어그램을 나타낸다.
도 3a는 본 발명의 일실시예에 따른 접속시 입력 데이터의 처리 경로에 대한 순서도를 나타낸다.
도 3b는 본 발명의 일실시예에 따른 접속시 입력데이터의 처리 경로에 대한 도 3a의 순서도의 나머지를 나타낸다.
도 3c는 본 발명의 일실시예에 따른 접속시 들어오는 데이터의 필터링에 대한 순서도를 나타낸다.
도 4는 본 발명의 일실시예에 따른 노드 간의 공평을 위해 일회 당 최대 전송 크기를 제한하면서 접속을 통해 데이터를 전송하는 순서도를 나타낸다.
도 5a는 본 발명의 일실시예에 따른 액티브 발송헤드 할당을 위한 요청/그랜트 스키마의 블록 다이어그램을 나타낸다.
도 5b는 본 발명의 일실시예에 따른 발송헤드에 대한 요청을 처리하기 위한 순서도를 나타낸다.
도 6은 본 발명의 일실시예에 따른 피어 그룹 윈도우 광고에 대한 가상 윈도우 스키마에 대해 기술한 블록 다이어그램을 나타낸다.
도 7a는 본 발명의 일실시예에 따른 통신시스템에 대한 컴퓨팅 시스템의 블록 다이어그램을 나타낸다.
도 7b는 본 발명의 일실시예에 따른 메인 프로세서의 부하의 경감을 제공하는 통신시스템에 대한 컴퓨팅 시스템의 불록 다이어그램을 나타낸다.
도 7c는 본 발명의 일실시예에 따른 전용 하드웨어/가속기 칩에 대한 메인 프로세서의 부하의 경감을 제공하는 통신시스템에 대한 컴퓨팅 시스템의 블록 다이어그램을 나타낸다.
도 8은 본 발명의 일실시예에 따른 통신 시스템의 다른 일반화된 다이어그램 을 나타낸다.
도 9는 본 발명의 일실시예에 따른 클라이언트 그룹과 서버 그룹간의 데이터 전달과 확인 응답 스키마를 나타낸다.
도 10은 본 발명의 일실시예에 따른 구현의 논리적 관점을 나타낸다.
도 11은 본 발명의 일실시예에 따른 장애 극복, 부하 배분, 부하 공유 및 단일 시스템 이미지를 갖는 대칭 다중 컴퓨터 시스템의 일반화된 다이어그램을 나타낸다.
본 발명은, 예를 들어, TCP/IP를 확장하는 원자적 다 지점 전달과 다 지점 전송으로 두 세트의 노드들 간의 신뢰성 있고 순서화된 데이터 통신이 가능한 시스템을 포함한다. 본 발명은 TCP의 신뢰성 있는 호스트 대 호스트 통신의 개념을 그룹간의 데이터 트래픽에 대한 TCP의 사양을 유지하는 대칭적인 그룹대 그룹 통신을 포함하도록 확장한다. 더 나아가서, 본 발명은 TCP 접속의 두 엔드포인트의 정의를 단일 접속을 통해 통신하는 적어도 두 그룹의 엔드포인트를 포함하는데까지 확장한다.
본 발명에서는, 접속의 엔드 포인트는 그룹 노드에서 종결된다. 다중 노드에 데이터가 전달되어야 할 때, 전달은 원자적으로 이루어진다. 선택적으로, 다중 노드로부터 발생한 데이터에 관하여 단일 데이터 인스턴스가 전송된다. 후술되는 바와 같이, 각 엔드포인트는 독립적으로 동작하는 수신헤드(receiveHead)와 발송헤드(sendeHead)로 이루어져 있다.
본 발명의 일실시예에서, 노드는 네트워크상의 접속, 예를 들어, 범용 컴퓨터 등의 데이터 처리 장치나 마이크로프로세서 또는 네트워크 관련 통신을 위한 데이터 처리 장치의 기능을 갖는 소프트웨어를 구비한 다른 장치를 포함한다. 그룹은 하나 이상의 대칭적으로 구성된 노드들의 집합을 의미한다. 어플리케이션 세그먼트는 다양한 그룹 노드들상에서 동작하는 다른 어플리케이션 세그먼트와 함께 제공되는 어플리케이션이나 어플리케이션의 세그먼트를 의미한다. 어플리케이션은 하나 이상의 어플리케이션 세그먼트로 구성되고 어플리케이션 세그먼트는 하나 이상의 프로세스로 구성된다.
발송헤드는 TCP 접속의 전송 엔드를 나타내는데, 이는 데이터 전송을 제어하고 노드에서 전송 상태를 유지한다. 수신헤드는 TCP 접속의 수신 엔드를 나타내는데 이는 접속상태에서 데이터 수신을 제어하고 노드에서 데이터 수신 상태를 유지한다. 액티브 발송헤드는, 예를 들어, 데이터 시퀀스 번호와 최근 확인응답(acknowledgement)의 시퀀스 번호 등의 가장 최신의 전송상태 정보를 갖도록 지정된 발송헤드를 나타낸다.
버스 콘트롤러는 접속 설정과 피어 그룹과의 종결 프로세스를 제어하고/하거나 조정하는 노드를 나타낸다. 신호는 논리 버스를 통해 노드 그룹 안에서 교환되는 메시지를 나타낸다. 신호의 소스와 타겟이 같은 노드 안에 있으면, 비록 내부적으로 신호를 수신하는 효과와 마찬가지더라도, 신호는 발송되지 않는다. 접속의 엔드포인트는 사전에 동의된 시퀀스 번호의 쌍에 기반한 순차적인 순서로 피어(peer)와 데이터를 교환하는 TCP 같은 스택을 나타낸다. 접속의 엔드포인트는 출력 데이 터 스트림 시작점과 입력데이터 스트림 종결점을 갖는다. 요청(request)은 들어오는 데이터 스트림, 예를 들면, 클라이언트의 서비스 요청의 선택 세그먼트를 나타낸다.
시스템 개요
도 1a는 본 발명의 일실시예에 따른 통신시스템을 도시한다. 통신시스템은 제 1 그룹(120)과 제 2 그룹(160)을 연결하는 TCP 접속(130)을 포함한다. 예를 들면, 제 1 그룹(120)은 제 1, 제 2 및 제 3 멤버 노드(100a, 100b, 100c)를 가지고 있으며, 제 2 그룹(160)은 제 1 및 제 2 멤버 노드(150x, 150y)를 가지고 있다. 이 두 그룹의 멤버 노드는 각 노드가 TCP 접속에 대해 동일한 액세스를 가지고 독립적이고 병렬로 동작하는 점에서 대칭적으로 구성된다. 제 1 데이터 스트림(110)과 제 2 데이터 스트림(111)은 통신시스템의 제 1 그룹(120)과 제 2 그룹(160) 간을 흐를 수 있다.
제 1 어플리캐이션 세그먼트(135)와 제 2 어플리케이션 세그먼트 (136)는 120에서 서버 어플리케이션을 구축한다. 제 1 어플리케이션 세그먼트(135)는 레플리카 세트(135x 및 135y)를 가지고, 제 2 어플리케이션 세그먼트(136) 역시 레플리카 세트(136x 및 136y)를 갖는다. 어플리케이션 세그먼트 레플리카(135x 및 135y)는 노드(100a, 100b)를 통해 각각 가동되고 레플리카(136y 및 136x)는 각각 노드(100b, 100c)를 통해 가동된다. 그룹(160)의 클라이언트 어플리케이션은 레플리카 (151a 및 151b)를 갖는 어플리케이션 세그먼트(151)로 구성된다.
제 1 그룹(120)의 어플리케이션 세그먼트(135 및 136)는 제 2 그룹(160)의 세그먼트(151)와 접속(130)을 통해 통신한다. 접속(130)의 두 개의 데이터 스트림( 110 및 111)은 TCP 프로토콜을 따른다. 접속(130)은 제 1 그룹(120)에서 세 개의 다른 접속 엔드포인트(130a, 130b, 130c) 및 동일한 접속에 대해 그룹(160)에서 두 개의 다른 접속 엔드포인트(130x, 130y)를 갖는다.
각 그룹(120, 160)은 각각의 그룹 인터넷 프로토콜("IP") 어드레스(121, 161)가 할당된다. 그룹은 노드들로 구성되는 동안 서로를 단일 엔티티로 본다. 두 그룹(120, 160) 간의 통신은 그룹 IP 어드레스(121, 161)를 통해 각각 어드레싱된다. 세그먼트(151)로부터의 요청이 제 1 그룹(120)에 도달하면, 이는 그룹 IP 어드레스(161)로부터 온 데이터처럼 보인다. 마찬가지로, 제 2 그룹(160)은 그룹 어드레스(121)를 타겟으로 하여 데이터를 보낸다.
제 1 그룹(120)의 엔드포인트(130a, 130b, 130c)는 하나 이상의 어플리케이션 세그먼트 레플리카(135a, 135b, 136a, 136b)가 입력되는 요청과 함께 전달되도록 설정될 수 있다. 어플리케이션 세그먼트에 데이터가 전달되는 다른 방침의 예는 모든 레플리카, 하나의 레플리카, 모든 어플리케이션 세그먼트와 선택 어플리케이션 세그먼트, 요청을 특정 노드에 맵핑하기 위해 해싱 스키마에 기반하여, 라운드 로빈 요청 분배에 기반하여, 요청 컨텐츠에 기반하여 결정된 타겟 및 가중치 기반 우선 순위 등이다. 이러한 하나의 스키마 변경("쓰기(write)") 요청은 어플리케이션 세그먼트의 모든 레플리카에 전달되고 "판독(read)" 요청은 오직 하나의 선택된 레플리카에 전달된다.
제 2 그룹(160)에서 엔드포인트(130x 또는 130y)의 각각은 서버 그룹(120)에 요청을 보낼 수도 있다. 제 1 그룹(120)의 엔드포인트(130a, 130b, 130c)에서 하나 이상의 수신헤드는 세팅에 의존하는 데이터를 수신한다. 제 1 그룹(120)의 엔드포인트(130a, 130b, 130c)는 제 2 그룹(160)의 엔드포인트(130x, 130y)가 수신한 응답 데이터를 전송할 수도 있다. 특정한 또는 모든 들어오는 데이터의 수신을 원하는 어플리케이션 프로세스들은 데이터의 수신으로 클라이언트에 확인응답하기 전에 이를 수신했음을 보증 받는다. 데이터 전송의 TCP의 순차적 순서를 유지하기 위하여, TCP 시퀀스 번호는 데이터 전송이 시작하기 전에 연속적인 순서로 할당된다.
선택적으로, 제 2 그룹(160)의 레플리카(151a, 151b)에 의한 복제된 데이터 출력은 통신시스템에 의해 제 1 그룹(120)에 전달될 단일 인스턴스로 감소된다. 마찬가지로, 제 1 그룹(120)의 어플리케이션 세그먼트(135, 136)의 레플리카 출력도 또한 하나로 감소할 수 있다. 135a, 135b, 136a, 136b의 레플리카가 반드시 출력을 생성할 필요는 없는데, 이는 많은 경우에 있어 세팅에 따라 요청이 단지 하나의 레플리카에만 전달되기 때문이다.
본 발명에 따른 통신 시스템은 유리한 원자적 클라이언트/서버 요청과 응답을 제공한다. 즉, 이들은 단일 접속을 통해 두 그룹간의 데이터를 주고 받는 다중 프로세스를 가능하게 하여 바이트의 연속적인 시퀀스로서 발송 또는 수신된다.
그룹(120 및 160) 간의 프로토콜은 TCP이고 데이터는 기존의 TCP에 따라 발송되었던 일련의 순서로 전달되는 것이 보증된다. 다중 엔드포인트를 타겟으로 하는 경우, 클라이언트가 데이터의 수령을 나타내는 TCP ACK 세그먼트를 전송하기 전 에 데이터가 모든 타겟 엔드포인트에 전달되는 것이 보증된다. 선택적으로, 레플리카 출력이 단일 복사 출력의 전송으로 감소되어야만 할 때, 모든 노드가 같은 데이터를 출력한다면 데이터가 전송된다는 점에서 출력은 원자적임이 보증된다. 그러나 결과가 부합되지 않는다면, 어플리케이션은 선택적으로 다수의 동의나 정정 또는 성공적인 결과 등에 따라 전송하기 위해 출력을 선택할 수 있다.
어플리케이션 세그멘트화로, 어플리케이션 프로세스는 프로세싱을 위해 들어오는 데이터 스트림의 단지 선택부와 함께 전형적으로 전달된다. 예를 들면, 제 2 데이터 스트림(111)에 도달한 요청은 어플리케이션 세그먼트를 선택하기 위하여 전달될 수 있다. 어플리케이션 프로세스로의 데이터의 전달 순서는 RFC 793에 의해 지정된 대로 발송되는 순서가 되도록 보증되어야 한다. 즉, 특정 데이터가 어플리케이션 세그먼트에 전달되기 전에 스트림으로 도착된 모든 진행 데이터는 성공적으로 타겟의 엔드포인트에 전달되어야만 한다.
도 1b를 보면, 제 1 그룹(120)은 제 1, 제 2, 제 3 노드(100a, 100b, 100c)로 구성된다. 제 1 그룹(120)과 제 2 그룹(160) 간의 접속(130)은 나가고 들어오는 데이터 스트림(110, 111)을 가지고 있다. 각 노드(100a-c)는 각각 그룹 대 그룹 통신 스택(130a-c)을 갖는다. 모든 노드들로의 데이터 전달은 각각의 노드(100a-c)와 결합된 스위치(141a-c)를 통해 간다. 기반 하드웨어에 의해 스위치(141a-c)에 대한 전달 보증과 관련된 어떠한 가정도 만들어지지 않았다. 왜냐하면, 이더넷과 같은 인기있는 하드웨어 기술은 신뢰할 수 없기 때문이다. 각 노드(100a-c) 또는 그 서브세트로의 데이터 전달이 선택적이거나 전혀 전달이 없는 것은 기본적인 하드웨어 장치에 의해 가능하다.
들어오는 데이터는 IP 어드레스 및/또는 포트에 기반하여, 스위치(141a-c)에 의해 규격 TCP/IP 스택(140a-c)이나 그룹 대 그룹 통신 스택(130a-c)에 스위칭된다. 노드(100)의 어플리케이션 프로세스(142)는 표준 TCP 스택(140)을 사용하여 통신한다. 어플리케이션 세그먼트(135x, 135y 136x, 136y)는 각각 그룹 통신 스택 (130a-c)과 통신하다. 버스(105)는 그룹(131)의 동작을 제어하고 조정하는 제어 신호를 캐리한다. 콘트롤 버스(105)를 통해 전달된 신호의 범위는 제 1 그룹(120)에 제한된다. 가상 버스(143)는 제 1 및 제 2 데이터 스트림(110, 111) 및 그룹(120)과 연결되는 버스(105)의 제어 신호로 구성된다. 이 버스는 피어 그룹 TCP 접속(130)에 의해 직접 탭핑되어 있다.
가상 버스(143)의 대안은 노드들 간의 점 대 점 통신이고 이는 나은 대역폭 사용의 이점을 갖는다. 그러나, 이것은 통신시스템 내의 각 노드가 다른 노드와 그들의 어드레스 및 역할을 계속 주시할 것을 필요로 한다. 일실시예에서 논리 버스 모델은 위치와 아이덴티티 투명성에 기인하여 콘트롤 메시징 보다 바람직하다.
도 1c는 본 발명의 일실시예에 따른 엔드포인트(130a)의 접속을 나타낸다. 일반적으로 스위치(141)은 데이터를 표준 TCP 스택 또는 그룹 대 그룹 통신 스택 인터넷 프로토콜("IP") 입력(171)으로 향하게 한다. 분할된 IP 패킷에 대해 170은 171로 전달하기 전에 재결합을 수행한다. 입력 패킷이 분할되지 않는 경우에는 간단한 기본적인 일관성 체크(consistency check) 후에 입력 컨텐츠 필터(171)로 직접 전달된다. 입력 컨텐츠 필터(171)는 어플리케이션 세그먼트(예를 들어, 135x, 135y, 또는 136x)에 전달될 데이터를 포함하고 있는지를 결정하기 위하여 입력 데이터 컨텐츠 및 또는 패킷 해더를 조사한다.
만일 통신 시스템이 패킷을 더이상 통과시키지 않기로 결정한다면, 더이상의 추가 동작 없이 패킷은 폐기되고 메모리가 비워진다. 그렇지 않다면, 입력 컨텐츠 필터(171)은 어플리케이션으로 통과한 패킷의 세그먼트를 표시한다. 패킷은 체크섬(Checksum) 계산과 다른 일관성 체크를 포함하는 유효성 검사를 완료하기 위해 IP 입력 프로세싱 계층(172)으로 전달된다. 어떠한 잘못된 패킷들은 더이상 처리되지 않고 폐기된다. 결과 패킷은 그룹대 그룹 TCP 계층(173)으로 전달된다. 그룹 대 그룹 TCP 계층(173)은 그룹 노드들(예를 들어, 120, 160)과 기능하고, 피어 그룹에 대한 확인응답 등의 TCP의 명세 요구에 부합하기 위해 데이터 수령을 제어한다. 그룹 대 그룹 TCP 계층(173)은 접속의 입력 TCP 상태를 유지하고 데이터를 데이터 경로(137)를 통해 소켓으로 전달한다. 데이터 경로(138)는 소켓 인터페이스에서 스택으로 가는 전송 데이터 경로를 나타낸다.
사용자 소켓은 출력 컨텐츠 필터(174)를 활성화하는 데이터를 내보낸다. 일실시예에서 출력 컨턴츠 필터(174)는 설치되지 않으며, 따라서 아무 동작도 수행하지 않는다. 장애 극복을 위한 필터는 동기적으로 다른 레플리카 세그먼트의 출력과 전송될 데이터를 비교하고 단일 출력 인스턴스를 전송한다. 피어그룹에 전송된 출력 인스턴스의 선택은 동일 출력, 다수 동의, 정정 결과 또는 성공적인 동작 출력과 같은 필터 내의 방침 세트에 의존한다. 전송 세그먼트 인스턴스의 실패시, 레플리카는 접속 중단없이 전송을 받아 지속한다. 피어 그룹에서 성공적인 출력 인스턴 스 수신시, 레플리카는 데이터를 폐기하고 메모리를 비운다. 출력 컨텐츠 필터(174)는 전송을 위해 데이터를 그룹 TCP 출력 계층(175)으로 전달한다. 그룹 TCP 출력 계층(175)은 데이터 전송을 제어하고 그룹 노드들과의 전송 상태를 유지한다. 그룹 TCP 출력 계층(175)은 TCP에 의해 정해진 순차적인 순서대로 피어 그룹에 데이터를 전송하기 위하여 자신의 그룹 노드와 함께 작업한다. 그룹 TCP 출력 계층(175)은 IP 출력 계층(176)에 데이터를 전송하기 위해 전달한다. IP 출력 계층(176)은 나중에 데이터에 대해 표준 IP 기능을 수행하고 데이터 전송을 위해 장치 드라이버(177)로 데이터를 전달한다.
출력 컨텐츠 필터(174)에 의한 출력 비교 결과가 노드들에 의해 생성된 출력이 다르다는 것을 나타내면, 서브세트 레플리카는 결함이 있다고 간주되어 접속을 통해 더 이상 서비스되지 않고 남겨진 엔드포인트 들은 접속의 중단 없이 서비스를 지속한다. 엔드포인트를 제외한 실시예에 있어, 이러한 제외는 엔드포인트의 다수가 다른 것을 제외한다는 결과에 대해 동의하는 스키마에 기초한다. 다른 방법으로 엔드포인트의 제외는 동작이 실패된 곳에서 발생할 수 있다. 엔드포인트의 배제는 필터로 프로그램할 수 있는 임의의 어플리케이션 특정 스키마일 수 있다. 데이터 전송의 엔드포인트의 실패시, 레플리카 엔드포인트는 접속 중단 없이 전송을 완료한다.
도 1d는 본 발명의 일실시예에 따른 컨텐츠 프로세스가 입출력 데이터를 검사하는 그룹 대 그룹 통신 스택의 접속 엔드포인트(130)을 나타낸다. 컨텐츠 필터링은 컨텐츠 프로세서의 기능이다. 컨텐츠 프로세서는 어플리케이션 메모리 데이터 가 반드시 존재해야 하는 장소, 데이터의 순서, 풀 요청 수신됨 등을 어플리케이션에 통지하는 시간 등을 결정한다. 네트워크 인터페이스 장치 드라이버(177)와 협력 작업할 때에, 데이터는 네트워크 인터페이스(193)과 어플리케이션 메모리(190) 간에 다이렉트 메모리 액세스 콘트롤러(196)에 의해 복사된다.
들어오는 새로운 요청 데이터를 검사하면서, 컨텐츠 프로세서는 메모리(192)를 어플리케이션 공간에 할당한다. 할당 사이즈는 어플리케이션에 특정한, 전형적으로 피어로부터 완전한 요청 데이터의 사이즈이다. 요청의 잔여 데이터는 완전한 요청을 위한 메모리가 할당되었다면 할당을 요구하지 않는다. 출력 데이터(193)은 어플리케이션 자체에 의해 할당된다. 게다가, 요청/응답 데이터(194, 195)의 세그먼트의 복사본도 있다. 이 스키마 어플리케이션 데이터는 관련된 메모리 복사본을 매개하지 않고 네트워크 인터페이스 입출력 버퍼와 어플리케이션 메모리 사이에서 직접 복사된다.
도 2를 보면, 제 1 그룹(120)은 노드들(100: 100a, 100b, 100c)로 구성된 서버의 세트이다. 제 2 그룹(160)은 클라이언트 노드들(150: 150x, 150y)의 세트로 구성될 수 있다. 각 그룹(120, 160) 내의 노드들(100, 150)은 접속 디바이스(180)를 통해 서로 연결되어 있다. 접속 디바이스(180)는 브로드캐스트/멀티캐스트 장치로 구성될 수 있다. 예를 들면, 이더넷 버스 또는 계층 2/3 스위치이다. 네트워크(189)는 기존의 네트워크일 수 있다. 예를 들면, 근거리 통신망(LAN) 또는 인터넷일 수 있고 이를 통해 두 노드 그룹이 연결되어 있다. 네트워크(189)는 양 피어 그룹이 접속 디바이스(180)을 통해 직접 연결되면 필요 없어진다.
일실시예에서, 도 2의 통신 시스템은 서버 노드(100a,b,c)에서 하나 이상의 네트워크 인터페이스 포트(185a, 185b, 185c)를 포함한다. 통신 링크(187a, 187b, 187c와 188a, 188b, 188c)는 노드(100)와 디바이스(180)를 연결한다. 접속 엔드포인트(130)를 통해 도달한 입력 데이터는 계층 2 나 계층 3 멀티캐스트 또는 브로드캐스트 능력을 사용하여 접속 디바이스(180)에 의해 (188a, 188b, 188c)로 복제된다. 도달하는 데이터는 포트(185a 185b, 185c)로 전달된다. 180 또는 관련된 하드웨어 포트 또는 링크에 의한 데이터 전달은 보증이 없다. 187a 187b, 187c를 통해 제 1 그룹(120)에 의해 전달된 데이터는 서로 독립적이고 따라서, 병렬로 동작한다. 187a, 187b, 187c를 통해 피어 그룹에 전달된 데이터는 120에 가시적인 필요가 없다. 접속(130)을 통해 데이터가 들어옴에 따라 논리 버스(105)를 통해 전달된 신호는 디바이스(180)에 의해 링크(188a, 188b, 188c)에 복제된다. 도 1b의 논리 버스(105)에 전달된 데이터는 서버 노드(100a, 100b, 100c)에 가시적이다.
신호
본 발명의 일실시예에서 신호는 그룹에 공통인 접속 식별 정보를 가질 수 있다. 더욱이, 신호는 소스와 타겟 식별자를 또한 가질 수 있다. 타겟 식별자는 하나 이상의 노드나 전체 그룹이 될 수 있다.
본 발명의 일실시예에서, 통신 시스템 내의 신호는 IACK 신호를 포함한다. 이것은 그룹 대신 피어로부터 온 입력 데이터에 확인 응답하는 입력 확인 응답 신호이다. IACK는 확인 응답된 시퀀스 번호, 피어그룹으로부터 기대되는 데이터의 잔 여 바이트, 윈도우 업데이트 시퀀스 번호, 최근의 가장 양호한 타임 스탬프 및 수신한 액티브 발송헤드가 피어 그룹 TCP ACK를 전달해야 하는지를 지시하는 PUSH 플래그를 포함한다. REQSH 신호는 요청을 포함하고 액티브 발송헤드로 지정된 최근의 발송헤드 할당을 요구할 수 있다. 타겟 어드레스는 전체 그룹일 수 있다.
GRANTSH 신호는 액티브 발송헤드 상태 정보, 버스 타임, REQSH가 확인 응답 된 노드 리스트, 및 공지의 가장 최근의 IACK 정보를 갖는 메시지를 포함한다. 이 신호의 타겟은 상태 정보를 업데이트한 후 액티브 발송헤드를 가정하는 것이다. IACKSEG 신호는 세그먼트 대신 발송된 입력 데이터 확인 응답을 포함한다. 그것은 IACK 신호와 같거나 비슷한 정보를 가질 수 있다. REQJOIN 신호는 접속을 통해 서비스를 결합하자고 요청하면서 어플리케이션 세그먼트로 전달된다. LEAVE 신호는 접속된 어플리케이션 세그먼트의 서비스 중단을 허용해 줄 것을 요청하면서 전달된다.
ACKLEAVE 신호는 접속된 어플리케이션의 서비스 중단 허용을 그랜트한다. RESET 신호는 접속을 리셋하기를 요청하는 경우에 전달된다. CLOSE 신호는 어플리케이션 세그먼트에 의한 접속의 출력 스트림의 종료를 요청할 때 전달된다. ACKCLOSE 신호는 CLOSE 요청의 수신에 확인 응답한다.
접속 구축과 종료
기존의 TCP 상태 다이어그램은 알려져 있다. 이러한 상태 다이어그램을 설명하는 순서도는 Richard Steven의 "TCP/IP Illustrated Volume I and Volume II"의 제목의 책에 나타나 있으며 기술되어 있다. 이 내용은 참조로 여기에 통합되어 있다. 부가적으로 TCP/IP 프로토콜과 사양은 RFC 793과 RFC 1323에서 논의되었고 관련된 부분은 참조로 여기에 통합되어 있다.
접속 구축과 종료 동안 노드는 버스 콘트롤러로 작동하기 위해서 선택된다. 버스 콘트롤러는 프로세스를 조절하고 제어하고 그룹 대신 피어 그룹과 통신한다. 디폴트에 의해 정적인 버스 콘트롤러가 선택되고, 반면에 어플리케이션 프로그램은 선택적으로 필요에 따라 버스 콘트롤러를 선택한다. 그룹 멤버 노드로의 버스를 제어하는데 기인한 부하를 분산시키기 위해 버스 콘트롤러 기능이 라운드 로빈 방식으로 노드에 지정될 수 있다. 다른 방안으로 버스 콘트롤러는 들어오는 시퀀스 번호나 소스 IP 어드레스/포트 어드레스의 조합에 대한 해시값에 기반하여 동적으로 선택될 수 있다. 가장 낮은 ID를 갖는 세그먼트가 버스 콘트롤러 역할로 가정되는 스키마는, 세그먼트의 레플리카가 가용일 때 버스 콘트롤러의 책임은 레플리카 중에 라운드 로빈 방식에 할당된다.
일반적으로 TCP에는 4가지 형태의 접속 동작이 있다. 각 형태는 상이한 상태 천이 세트를 따른다. 그룹이 피어 그룹과 접속을 시작하면, 이는 능동적 개시라 한다. 반면에 피어 그룹에 의해 시작된 접속 프로세스는 수동적 개시라 한다. 유사하게 그룹에 의해 접속 종료가 시작되면, 이는 능동적 종료라 하고, 피어 그룹에 의해 종료가 시작되면 이를 수동적 종료라 한다.
수동적 접속 구축
수동적 개시로 피어그룹으로부터 동기화("SYN") 요청이 도달할 때, 버스 콘트롤러는 접속 서비스와 결합하기 위해 어플리케이션 세그먼트를 요청하는 REQJOIN 신호를 내보낸다. 버스 콘트롤러는 받은 SYN 신호에 대해 ACK를 가진 SYN요청으로 피어 그룹에 응답한다. 피어 그룹이 그룹 대신 전송한 SYN 요청에 확인 응답하면, 어플리케이션 세그먼트를 구동하는 그룹 노드는 IACKSEG로 응답한다. 모든 요구된 그룹 노드들이 IACKSEG 신호로 접속 서비스를 결합하면, 접속은 구축된 것으로 간주되고 데이터 전송이 시작될 수 있다.
능동적 접속 구축
능동적 개시에 있어, 그룹으로부터 시작된 접속의 경우, 버스 콘트롤러는 그룹 노드들을 지정하여 REQJOIN 신호를 내보낸다. 다음으로, 그룹 대신 SYN 요청을 전송함으로써 피어 그룹과 접속 프로세스를 시작한다. 버스 콘트롤러 SYN에 대한 ACK를 갖는 피어 그룹으로부터의 SYN 요청의 수령시, 그룹 노드는 피어그룹으로부터 유효한 ACK의 수령을 나타내는 IACKSEG를 보낸다. 요구된 노드로부터 IACKSEQ를 받았을 때, 버스 콘트롤러는 피어 그룹으로부터의 SYN 요청에 대한 ACK를 내보내고 접속은 구축된 것으로 간주된다.
수동적 접속 종료
수동적인 종료에 있어, 피어 그룹으로부터의 FIN 세그먼트의 수령시, 노드는 FIN의 수령을 나타내는 IACKSEG 신호를 보낸다. 모든 요구된 세그먼트로부터 IACKSEG가 수신되면, 버스 콘트롤러는 수신(완료)된 FIN에 대한 ACK 로 피어 그룹에 응답한다. 노드가 데이터 전송을 마치면, 접속을 중지하기 바람을 나타내는 LEAVE 신호를 보낸다. FIN 수령 후에 모든 그룹 노드로부터 LEAVE 요청 신호가 도달하면, 버스 콘트롤러는 피어 그룹으로 FIN 요청을 내보낸다. 버스 콘트롤러는 ACKLEAVE 신호를 내보내고 이를 수신시 신호 노드의 타겟은 CLOSED 상태로 진입한다. 전송된 FIN 요청에 대한 ACK가 도달되면, 버스 콘트롤러는 CLOSED 상태로 진입한다.
능동적 접속 종료
능동적 종료에 있어, 어플리케이션 세그먼트가 데이터 전송을 종료하고 접속을 닫고자 할 때, 이들은 CLOSE 신호를 보낸다. 모든 그룹 노드로부터 CLOSE 요청을 수령하면, 버스 콘트롤러는 피어그룹에 FIN 요청을 내보낸다. 피어그룹으로부터 FIN 요청을 받으면, 노드는 LEAVE 요청을 내보낸다. 그룹 노드들로부터의 LEAVE 신호와 전송된 FIN에 대한 ACK가 수신되면, 버스 콘트롤러는 TIME_WAIT 상태로 진입한다.
접속을 통한 데이터 입력
도 3a에서와 같이, 데이터 패킷이 노드에 도달하면, 패킷이 그룹 어드레스로 타겟지어질 것인지가 체크 되어 진다(311). 만일 그렇고 패킷이 TCP 프래그먼트라면, TCP 세그먼트의 마지막 프래그먼트의 도달시 완전한 TCP 세그먼트를 만들기 위 한 프래그먼트 재결합 동작이 수행된다(314). 대부분의 경우, TCP 세그먼트는 분할되지 않는다. 따라서 이와 같은 동작은 일어나지 않는다.
TCP 세그먼트가 그룹에 타겟지워지지 않는다면, 표준 TCP/IP 스택이 이후의프로세싱을 위해 TCP 세그먼트로 인계된다(312).
도 3b에서와 같이 데이터 수령시 그룹의 수신헤드는 필터링을 수행하고(315) 노드상의 어플리케이션 세그먼트에 타겟지워지는 데이터가 존재하는지 검증한다(316). 그리고 어플리케이션에 무관한 데이터라면 폐기한다. 필터링 후 결과 데이터 패킷은 타임 스탬프 유효성, 체크섬 유효성, 다른 TCP/IP 파라미터의 유효성에 대해 체크된다(317). 모든 유효하지 않은 패킷은 곧바로 폐기된다. 수신헤드는 검사한 모든 유효한 패킷을 반영하는 상태로 업데이트한다. 필터 처리 후의 체크섬 및 다른 자세한 패킷의 검증을 수행함으로써, 폐기된 패킷의 계산상의 오버헤드를 피할 수 있다.
다음으로 수신된 데이터에 앞선 모든 데이터가 적절한 어플리케이션 세그먼트에 전달되었는지가 검증된다(318). 데이터는 이어 즉시 어플리케이션 세그먼트로 전달된다(320). 명세에 따라 필요하다면 TCP ACK 세그먼트는 피어그룹으로 전달된다. 그러나 만약 확인응답 계류 중에 있는 앞선 데이터가 존재한다면, 데이터는 확인응답을 기다리면서 큐잉된다(319).
만일 세그먼트 인스턴스가 데이터의 수령 중에 실패한다면, 남아있는 인스턴스는 수신과 확인응답 제어를 지속한다. 이는 어플리케이션이 노드의 장애시 중단없이 서비스를 지속하는 것을 가능하게 한다.
데이터 필터화
도 3c를 보면 수신헤드는 타겟 등을 판단하기 위해 후속의 데이터가 더 필요한지, 새로운 요청의 시작, 어플리케이션으로 전달되었는지, 요청이 무시되었는지 등 입력 데이터의 상태를 유지한다. 패킷은 하나 이상의 요청이나 부분적인 요청 데이터를 포함할 수 있으므로, 패킷이 처리될 잔여 데이터를 갖고 있는지 검증된다(330). 만일 남은 데이터가 하나도 없다면 필터화 프로세스는 완료된다.
필터링될 패킷에 남아 있는 데이터가 있을 때 현재 상태는 검증된다(331). 만일 현재 상태가 요청 데이터가 폐기되어야 한다고 나타내면, 패킷내의 요청 데이터의 최대한까지 폐기된 것처럼 스케쥴링되고(332) 잔여 데이터가 더 있는지를 검증한다(330). 비슷하게 요청 데이터가 수용되고 어플리케이션 세그먼트로 전달되어야 한다면, 패킷의 요청 데이터의 남은 부분은 전달을 위해 스케쥴링된다. 모든 전달된 데이터는 반드시 한번은 체크-섬 계산되어야 하고, 타임스탬프 및 패킷 헤더 검증되어야 하고(333) 유효하지 않은 패킷은 곧바로 폐기된다(336).
현재 상태가 새로운 요청의 시작을 나타낼 때 어플리케이션 특정 필터는 데이터 타겟을 결정하도록 유발되고(334) 현재 상태는 검증결과를 반영할 수 있게 업데이트된다. 충분한 데이터의 부족으로 필터화 코드가 요청 타겟을 결정할 수 없을 경우 순서와 상관없이 도착한 데이터를 홀딩하는 재결합 큐(queue)로부터 곧바로 따라오는 데이터와 결합된다. 여전히 충분한 데이터가 없다면 남은 데이터는 재결합 큐로 들어가서 충분한 데이터가 도착할 시기를 반복 체크 한다. 충분한 데이터 가 발견된다면 단계(330)가 데이터를 필터링하기 위해 반복된다.
데이터 입력 확인응답
다중 엔드포인트로의 원자적 데이터 전달이 요구된다면, 모든 엔드포인트들이 긍정적으로 데이터를 받을 때만 수신된 데이터에 대한 확인응답이 보내진다. 데이터를 받은 타겟 엔드포인트는 TCP 순서로의 데이터 수령을 나타내는 IACK 신호를 버스를 통해 보낸다. 모든 요구된 노드가 특정한 데이터를 받았는지를 검증한 후 TCP 명세에 맞다면 액티브 발송헤드는 TCP ACK 세그먼트를 피어그룹에 보낸다.
접속을 통한 데이터 출력
그룹의 다중 엔드포인트들이 TCP 순서로 데이터를 전송할 수 있다. 따라서 전송될 데이터의 세그먼트로 연속적인 시퀀스 번호를 할당하는 것이 필요하다. 엔드포인트로부터 뚜렷한 요청/응답이 섞이는 것을 피하기 위해 전송된 데이터의 일관성을 유지하는 것도 필요하다. 이를 위해 각각의 완전한 요청/응답 데이터는 전송 노드에 의해 레코드로서 취급된다.
도 4를 보면 어플리케이션 프로세스가 데이터를 쓸 때(385) 새로운 전송 레코드가 만들어진다(386). 피어에 다른 어떤 매개 데이터도 보내지 않으면서 하나 이상의 쓰기 요청 데이터가 보내져야 할 때 MORETOCOME 플래그가 마지막 쓰기의 도착때까지 세팅된다. 전송 노드가 액티브 발송헤드(387)가 아닐 경우, 앞선 요청이 확인응답되거나 계류중이 아닐 때 액티브 발송헤드 요청이 REQSH 신호와 함께 보내 진다(388). 노드를 향한 GRANTSH 신호와 함께 액티브 발송헤드 상태가 도착하면(389) 액티브 발송헤드는 GRANTSH로부터 최후의 정보를 업데이트한 후에 가정되고 액티브 발송헤드인지인지를 반복 체크한다(387).
액티브 발송헤드가 된 후 보낼 데이터를 가진 노드는 새로운 전송 시퀀스 번호를 일련의 순서에 따라 레코드에 할당하며 전송이 시작된다(390). 만일 전송된 쓰기 동작의 연속으로 더 이상의 데이터가 기대되지 않고, 전송 시퀀스 번호를 이용해 할당을 대기하는 레코드가 더 이상 없거나(392) 최대 전송 한계치를 초과했을 경우(393), 액티브 발송헤드는 발송헤드를 기다리는 다음 요청 노드로 그랜트된다.
발송헤드가 그랜트될 다음 노드는 REQSH 요청자, 최우선권을 가진 발송헤드 요청자, 라운드 로빈이나 어플리케이션 특정 스키마의 리스트로부터 시계방향 방식으로 수적으로 근접한 노드-id로 노드를 선택함으로써 결정된다. 그러나, 더 많은 전송 레코드가 시퀀스 번호의 할당을 기다린다면 단계(387)은 남은 데이터를 보내기 위해 반복될 것이다.
액티브 발송헤드 할당
도 5a에서는 액티브 발송헤드 할당을 위한 스키마가 설명되어 있다. 노드(100a)는 액티브 발송헤드 역할을 요구하는 REQSH(105r) 신호를 내보내고 액티브 발송헤드(100c)는 필요한 상태 정보를 가진 GRANTSH(105t) 신호로 역할을 요청자에게 보낸다. REQSH 신호는 노드(100a)에 의해 발송된다. 노드(100b)는 발송헤드에 반응하지 않고 REQSH를 무시한다. 요청이 있을 때 액티브 발송헤드인 노드(100c)는 그랜트될 발송헤드가 비어 있으므로 GRANTSH 신호로 100a 요청에 응답한다.
GRANTSH 신호의 수령 때 요청 노드(100a)는 액티브 발송헤드를 가정한다. GRANTSH 신호는 그룹에 의해 유지되면서 동작중인 요청자의 리스트를 포함한다. GRANTSH 신호(105t)검사시, 노드(100b)는 신호내에서 동작중인 요청자의 검사 리스트를 검증하여 액티브 발송헤드에 대한 자신의 요청이 확인 응답되었는지를 체크한다. 확인 응답되었을 때 REQSH 신호의 재전송은 턴오프된다.
노드가 액티브 발송헤드를 다른 노드에 그랜트할 때, 전송될 미결 데이터를 갖고 있다면, 추가적인 요청 신호를 피하기 위해 자신을 요청자의 목록에 추가한다. 모든 노드로 REQSH 같은 신호를 보내는 또 다른 방법은 액티브 발송헤드 노드와 같은 타겟으로 직접 보내는 것이다. 이러한 접근법의 이점은 대역폭 사용의 원활함이지만 위치 투명성이 부족하다.
도 5b를 보면 REQSH 신호가 액티브 발송헤드 노드에 도착할 때(551), 발송헤드를 그랜트할 수 없다면(553), 요청자 id가 요청자 리스트로 입력된다(554). 그러나 GRANTSH 신호는 발송헤드가 그랜트될 수 있다면 요청자를 향해 보내진다(555). GRANTSH는 미결의 요청자가 들어 있는 리스트로 모든 미결의 REQSH에 대해 입력확인응답 신호처럼 동작한다. 다른 노드에 그랜팅 하지 않고 REQSH 수령을 확인응답하기 위해 발송헤드는 스스로 그랜트한다. GRANTSH가 타겟 노드에 도착하면 요청자의 리스트는 요청자의 로컬 리스트에 추가된다. GRANT 신호는 재전송을 제외한 발송헤드의 각 인스턴스에 대한 매우 단순하게 증가하는 시퀀스 식별 번호를 할당받아 순서화된다.
그룹 내에서의 TCP 타임 스탬프와 라운드 트립 타임( Time stamp and round - trip -time: RTT ) 계산
대부분의 TCP 구현은 RFC 1323을 따른다. 이는 타임 스탬프를 이용해 라운드 트립 타임을 측정하는 방법을 상술한다. 라운드 트립 타임은 전형적으로 호스트의 리얼타임으로부터 확인응답된 데이터 서버의 타임 스탬프를 빼서 측정된다. 시퀀스 번호로 래핑되어 유효하지 않은 패킷을 확인하기 위해서 명세는 단순하게 증가하는 타임스탬프를 요구한다.
다른 하드웨어 타이머를 가진 다양한 형태의 여러 노드에 대한 명세에 맞추는 것이 필요하다. 이상적인 솔루션은 노드가 완벽하게 동기화된 시간을 갖도록 하는 것이나 이는 매우 어렵다. 일실시예에서 데이터를 보내는 노드에서의 시간과 마지막으로 데이터를 전송한 노드의 시간을 동기화 함으로써 단조적으로 증가하는 타임스탬프의 명세요구에 맞춰진다. 이러한 동기화는 데이터가 늘 이전의 TCP 데이터 세그먼트 타임스탬프보다 같거나 높은 타임스탬프 값으로 보내짐을 보증한다.
스키마의 구현이 여기서 이뤄진다. 리얼타임 (종종 로컬타임)을 유지하는 노드는 고정된 간격으로 그 값을 증가시키는 하드웨어 클럭을 따라 구현된다. 버스타임이라 불리는 그룹 범위의 리얼 타임 클럭은 노드에 의해 접속된 각 TCP 접속에 대해 구현되어야 한다. 어떤 노드에서의 버스타임은 아래와 같이 계산된다.
버스타임 = 로컬타임 - 베이스타임
베이스타임은 초기에 버스 콘트롤러에 의해 선택되고 계산된 임의의 값일 수 있다. 노드에 액티브 발송헤드가 그랜트될 때마다 수여자의 버스타임은 GRANTSH 신호와 함께 보내진다. GRANTSH 신호를 수신시, 액티브 발송헤드가 그랜트된 노드는 버스타임을 다음과 같이 조절한다.
버스타임이 수여자의 발송헤드와 함께 받은 버스타임보다 작다면 다음과 같다:
버스타임 = 수여자 버스타임(즉, GRANTSH 신호로부터의 버스타임)
노드의 버스타임이 GRANTSH 전달 딜레이 때문에 위의 공식과 완벽하게 맞지는 않더라도 단순하게 증가하는 타임스탬프 값의 요구에 부합한다. 버스타임의 입자성(graninlarity)을 보내진 타임스탬프 입자성보다 높게 선택하여, 노드에 의한 동시 재전송 동안 타임스탬프 충돌 때문에 발생하는 오류를 줄일 수 있다. 예를 들어 타임스탬프가 10 밀리 초의 입자성을 갖고 버스타임이 1 마이크로 초의 입자성을 가질 때, 에러계수는 1부터 1/10000 로 감소하게 된다. 정밀한 라운드 트립 계산을 위해, 전송시의 베이스타임은 발송헤드에 의해 전송 레코드로 들어간다. 신호의 최소 레이턴시를 계산하기 위해 고정된 시간 값이 GRANTSH 타겟 노드에서 수여자 버스타임에 더해진다. 타임스탬프로서 버스타임을 사용하여, 패킷의 라운드 트립 타임은 다음과 같이 계산된다:
라운드 트립 타임 = 버스타임 - 타임스탬프
그룹 내에서의 TCP 윈도우 업데이트
윈도우는 엔드포인트가 메모리 안으로 데이터를 수용할 수 있는 데이터량이 다. 정보를 갖기 위해 단지 두 엔드포인트만을 가진 기존의 TCP는 최적의 성능이 쉽게 수행되도록 하는데 동의했다. 많은 엔드포인트가 포함되면서, 각각이 다른 메모리 사이즈를 갖고 예측 불가능한 데이터 타겟이 최적의 사용과 성능을 이루는 것이 중요하다.
여기에서는 그룹 범위의 단일 가상 윈도우 사이즈가 그룹 내에서 효과적인 윈도우 운영을 위해 사용되는 스키마를 설명한다. 발송헤드는 그룹 대신 윈도우 정보로 피어 그룹을 업데이트할 책임이 있다. 그룹 노드에 초기에 가상의 윈도우 사이즈가 할당된다. 노드는 일단 전달된 어플리케이션에 의해 읽어 들인 데이터의 입력 시퀀스 번호를 전송하여 발송헤드로 윈도우를 업데이트한다. 액티브 발송헤드는 피어 그룹을 그룹 범위의 가상 윈도우 사이즈로부터 어플리케이션으로 전달될 미결의 데이터 양을 빼서 획득된 윈도우로 업데이트한다.
윈도우 업데이트는 윈도우 업데이트 신호의 수를 줄이기 위해 IACK 신호와 함께 피기배킹된다. 윈도우 업데이트 신호 및 TCP 세그먼트의 수를 더 줄이기 위해, 지정된 윈도우 사이즈가 가상의 윈도우에 덧붙여져서 유지된다. 이러한 윈도우의 총계에 달하는 데이터는 언제든지 그룹에 의해서 확인 응답된 미결 데이터일 수 있다. 노드가 지정된 윈도우보다 적거나 같은 사이즈의 데이터의 수령을 확인 응답하는 IACK를 내보낼 때와 많은 진행중인 데이터가 어플리케이션에 의해 읽혀질 때, 다수의 데이터가 어플리케이션에 의해 읽혀지듯이 IACK 시퀀스와 같은 업데이트된 윈도우가 사용된다. 윈도우 업데이트는 IACK와 함께 이뤄지기 때문에, 그렇지 않으면 요구되는 추가적인 윈도우 업데이트 신호를 피한다. 이러한 기술은 선택적으로 세팅 또는 리셋팅된다.
도 6을 보면 확인 응답되지 않은 입력 시퀀스가 610으로 표시되고, 피어 그룹으로 광고될 것으로 예상되는 최대 데이터 시퀀스 번호는 620으로 표시된다. 619는 윈도우 업데이트가 보내질 수 있는 정도의 최대로 지정된 윈도우 시퀀스를 나타낸다. 611, 612, 613, 614는 노드(100a, 100b, 100c)에 의해 받은 데이터의 윈도우 시퀀스를 보여준다. 615는 피어 그룹에 의해 보내질 수 있는 데이터양이다. 617과 618은 노드(100a와 100c)가 보낸 윈도우 업데이트를 보여주는데, 611과 612과 관련되어서 IACK와 함께 보내진다. 최대 광고된 윈도우는 621로 나타나 있으며 최대 지정 윈도우는 622로 보여진다.
그룹 TCP 를 이용한 랩 어라운드 ( wrapped - around ) 시퀀스에 대한 보호
10기가비트의 이더넷같은 고속도의 네트워크에서 TCP의 현재의 32비트 시퀀스 번호는 짧은 시간동안 랩 어라운드한다. IACK와 같이 랩어라운드 시퀀스 번호로 지연된 신호는 시퀀스 번호가 데이터 입력 확인에 사용될 때 실수로 유효한 것으로 간주 될 수 있다. 우리는 32비트 시퀀스 번호가 접속 초기부터 랩 어라운드되는 시간을 고려하는 64비트 TCP 값에 32비트 TCP 시퀀스 번호가 맵핑되는 스키마를 사용한다. 그룹 안에서 사용되는 64비트 시퀀스 값은 피어와 사용되는 32비트로 다시 맵핑된다.
32비트 시퀀스를 맵핑하기 위해 두 개의 32비트 값으로 64비트 시퀀스를 분리하고 여기서 하위 32비트가 피어와 원활하게 사용된 TCP 시퀀스를 나타내고 상위 의 32비트는 접속이 시작된 이후 시퀀스가 몇번이나 랩 어라운드 되는지 그 수를 센다. 64비트 값을 32비트 시퀀스 번호에 맵핑하기 위해서 하위 32비트가 사용된다. 또다른 스키마에서 오버헤드(overhead)가 같을지라도 IACK는 시퀀스화된다.
어플리케이션 세그먼트 인스턴스 및 복제
세그먼트의 많은 인스턴스들은 노드 사이에서 로드의 추가 분배를 가능케 한다. 레플리카 세그먼트 사이에서 로드는 필터와 함께 라운드-로빈, 최소 부하(least-loaded), 해시드(hashed), 친화도 기반 스키마를 사용하여 세그먼트에 요청을 전달하여 공유될 수 있다.
세그먼트 레플리카는 장애 극복을 가능하게 한다. 입력 동안 레플리카가 실패하는 경우, 남겨진 레플리카가 있다면 중단없이 서비스를 계속한다. 이는 일관성 있는 입력의 주시를 유지하는 레플리카에 의해 달성된다. 세그먼트 콘트롤러는 원자적인 입력 전달로 레플리카들 간의 일관성을 가능하게 한다. 새로운 세그먼트 콘트롤러는 실패 뒤에 선택될 필요가 있을 수 있다.
레플리카가 데이터를 전송하는 동안 실패할 경우, 남아있는 레플리카가 접속의 중단없이 서비스를 계속할 수 있다. 각 레플리카는 출력의 인스턴스에 동의하고 발송헤드 상태가 전송이 시작되기 전에 공유된다. 각 레플리카는 피어 그룹에 의해 확인 응답된 메모리와 데이터를 비운다.
각 어플리케이션 세그먼트는 남아있는 다수의 레플리카를 선택하는 것이 자유롭다. 세그먼트 콘트롤러로서 다이나믹하게 선택된 노드는 세그먼트 IACK를 형성 하기 위해 레플리카 IACK를 조정한다. 세그먼트 콘트롤러의 선택은 라운드 로빈, 최소부하, 해시 혹은 스태틱 노드에 근거할 수 있다. 접속 구축, 종료, 윈도우 관리 등 설명된 모든 작업들이 대응하는 스키마와 함께 이미 설명되었다. 세그먼트 레플리카가 특정한 입력 세그먼트의 수령에 동의할 때, 콘트롤러는 레플리카 대신 응답한다. 레플리카와 달리 세그먼트 인스턴스 사이에서 로드가 밸런싱될 때, 콘트롤러를 포함시킬 필요가 없다.
레플리카가 데이터를 수신할 때 레플리카는 입력 데이터의 수령을 나타내는 IACK를 보낸다. 레플리카로부터 IACK를 모니터링하는 세그먼트 콘트롤러가 발송된 순서로 특정한 입력을 수령한 모든 레플리카를 결정할 때, 그것은 세그먼트 대신 IACK를 보내고 클라이언트 ACK를 시작한다. 이 IACK는 데이터를 어플리케이션 소켓으로 보내거나 원자적으로 필요한 동작을 취하는 레플리카에 확인 응답으로 기능한다. 세그먼트 콘트롤러의 선정은 요청에 대해 라운드 로빈하거나 최하위 레플리카 ID를 갖는 것처럼 선택 레플리카에 정적이다.
노드 기반 그룹대 그룹 통신
도 7a는 일반적인 컴퓨터의 블록도이며 그 요소들은 발명요소를 구현하기에 적합하다. 그룹대 그룹 통신 스택이 시스템의 프로세서에 의해 수행된다.
메인 CPU 의 부하를 감소시키는 그룹대 그룹 통신
도 7b는 컴퓨터의 블록도이며 그 요소들은 특정한 요소를 처리할 때 메인 프 로세서를 오프로딩하면서 발명의 요소를 구현하기 위해 적합하다. 그룹대 그룹 통신 스택은 자체의 프로세서를 보유하고 어댑터카드로 오프로드된다.
집적회로에서의 그룹대 그룹 통신
도 7c는 컴퓨터의 블록도이며 그 요소들은 전용 하드웨어/가속기 집적 칩에 대해 발명의 특정한 요소를 처리할 때 메인 프로세서를 오프로딩하면서 발명의 요소를 구현하는데 적합하다. 대부분의 프로세싱에서 오프로드가 요구되는데 그렇지 않을 경우 메인 CPU에 의해 그룹대 그룹 통신 스택이 완전히 내지는 부분적으로 구현되어야 한다.
도 8은 본 발명의 다른 실시예이다. 이 실시예에서 하드웨어 디바이스는 단일 TCP 접속 엔드포인트를 다중 엔드포인트로 복제한다. 노드 그룹은 802로 표시된다. 접속(801)은 각각 입력 스트림(826)과 출력 스트림(825)를 갖는다. 여기에 있는 디바이스(820)는 노드(800a,b,c)의 외부에 있다. 각 서버 노드는 동일한 접속(801)의 접속 엔드포인트(801a,b,c)를 갖는다. 디바이스(820)은 단일 접속(801)을 노드(800)의 세 개의 엔드포인트(801a,b,c)로 복제한다. 디바이스(820)은 포트(819)가 피어 디바이스에 접속을 위해 링크되어있는 동안 네 개의 포트(816, 817, 818, 819)를 갖는다. 이 디바이스는 잠재적으로 고장날 수 있는 단일 점이며 여분의 네트워크 홉을 더한다.
도 9는 두 데이터 세그먼트(910, 911)이 두 노드(902, 904)로 반드시 전달되어야 하는 클라이언트 그룹과 서버 그룹간의 원자적인 데이터 전달과 확인응답 스 키마를 설명한다. 901은 클라이언트 그룹이고 902, 903, 904, 905 및 906은 서버 그룹 노드이다. 910과 911은 TCP를 설명하는데 데이터 세그먼트는 클라이언트 그룹(901)에 의해 전송된다. 비록 910과 911은 잠재적으로 모든 서버 그룹 노드에서 사용할 수 있어도 프로그램될 수 있는 인스턴스에서 입력 필터링 시스템에 의해 결정됨에 따라 오직 노드(902, 904)로만 전달된다. 레퍼런스 912는 서버그룹 발송헤드(903)로부터 클라이언트 그룹으로 송신된 TCP ACK 세그먼트를 설명한다. 데이터 세그먼트(910)이 도착할 때 TCP ACK 세그먼트는 송신되지 않으나, 두 번째 데이터 세그먼트가 도착하면 다른 패킷이 확인 응답되어야만 하는 TCP 명세에 따라, ACK 세그먼트가 서버 그룹에 의해 클라이언트에게 송신된다. 플렉스 콘트롤러(902)는 오직 요구되는 플렉스/레플리카(904)에서 같은 데이터 세그먼트의 확인 응답을 나타내는 PIACK (Plex IACK) 신호(913)의 수령시에만 원자적인 전달을 나타내는 IACK 신호(914)를 송신한다. 902는 PIAK를 보내지 않은데 이는 데이터의 원자적인 전달을 나타내는 IACK를 송신하는 것은 콘트롤러에게 책임이 있기 때문이다. IACK 신호(914)를 받을 때 발송헤드를 갖는 903은 TCP ACK 세그먼트(912)를 클라이언트 그룹에 송신한다. 다른 TCP 세그먼트가 도착할 때 클라이언트 ACK 세그먼트를 송신하는 것에 더하여, ACK 세그먼트는 모든 완전한 요청 입력의 끝에서 선택적으로 송신될 수도 있다. 또한 클라이언트 ACK 세그먼트는 도착한 세그먼트의 순서가 벗어난 것과 세그먼트 대기시간 초과 등과 같은 예외 조건이 감지되면 송신된다. 그래서 클라이언트와 서버 그룹은 싱크업되고 분실된 TCP 세그먼트를 즉각적으로 재전송한다. 서버 노드가 PIACK를 보내고 이에 대한 IACK를 수신하는 데 실패하면, 서버 노 드는 PIACK를 재전송하고 수신헤드는 노드의 입력 데이터의 최근 시퀀스를 나타내는 다른 IACK로 응답한다.
도 10은 입력 데이터가 버스에서처럼 공유되지만 출력 데이터는 스위칭되는 구현의 논리적 관점을 보여준다. 1000은 피어그룹으로부터의 입력 데이터 스트림이다. 1010은 이더넷과 같은 공유 매체 또는 멀티캐스트를 사용하여 입력만을 공유하는 논리 하프-버스이다. 1020, 1021 및 1022는 각각 노드(1030, 1031, 1032)에 대응하는 버스입력 엔드포인트를 나타낸다. 1040, 1041, 1042는 계층 2 또는 계층 3의 IP 스위칭 디바이스(1050)으로 피딩되는 출력 엔드포인트들이다. 1060은 입력(1000)에 대해 생성되는 노드들(1030, 1031, 1032)에 의해 생성된 집합된 출력을 나타낸다. 1000과 1060은 각각 단일 접속의 입력과 출력을 형성한다.
로드 쉐어링과 로드 밸런싱
도 11은 본 발명의 일실시예에 따른 대칭적 멀티 컴퓨터 시스템을 나타낸다. 서버 그룹(1112)는 다수의 노드(1100a,b,c,d,e,f)로 구성된다. TCP 접속(1109)의 입력 스트림(1110)은 그룹노드에 걸쳐있는 다중 엔드포인트(1110a,b,c,d,e,f)를 갖는다. 마찬가지로 같은 접속의 출력 스트림(1111)은 엔드포인트(1111a,b,c,d,e,f)로 구성된다.
이 어플리케이션은 각 어플리케이션 세그먼트(1113a,b, 1114a,b, 1115a,b)에 대해 두 개의 인스턴스를 갖는 전체그룹에 걸쳐 동작하는 세 개의 세그먼트(1113, 1114, 1115)로 구성된다. 통신 시스템을 프로그래밍함으로써 세그먼트는 관리해야 할 데이터와 수행해야 할 동작과 같은 기준에 기반한 특정작업과 함께 전달된다. 서비스에 대한 요청의 특정 서브세트를 어플리케이션의 특정 인스턴스에 전달하는 것과 같은 방법의 데이터 전달을 구성함으로써 어플리케이션의 세그먼트가 달성되고 많은 경우에 기존 어플리케이션의 코드 변경없이 달성되어진다. 어플리케이션은 다양한 방법으로 분할된다. 예를 들어 세그먼트가 처리할 수 있는 요청의 종류나 유형, 시퀀스 번호 등과 같은 접속 정보나 데이터 내용에 기반한 해싱 알고리즘에 기반하여 분할될 수 있다. 어플리케이션은 다른 세그먼트로 프로그래밍함으로써 세그먼트로 분리되는 것도 어느정도 가능성이 있다.
그룹 노드는 레플리카(1100a,b, 1100c,d와 1100e,f)와 같이 쌍을 이루며, 각 쌍은 각각 어플리케이션 세그먼트(1113, 1114, 1115)의 두 개의 인스턴스로 동작한다. 세그먼트(1100a) 장애시 쌍(1100b)는 중단없이 서비스를 지속한다. 인스턴스(1100a)의 장애가 전송중에 발생하면 다른 인스턴스(1100b)가 서비스의 중단없이 피어에게 응답의 나머지를 전달할 것이다. 마찬가지로 새로운 어플리케이션 세그먼트 인스턴스가 그룹에 부가되어 장애 직면시 서비스를 지속하도록 가용의 부가된 인스턴스로 인한 장애 극복을 증가시킨다. 이는 예를 들어 새로운 프로세스 구동 어플리케이션 세그먼트 인스턴스를 형성하고 이를 그룹에 부가하여 요청을 적절하게 분산시킴으로써 이루어질 수 있다.
동작의 한 모드에 있어, 그룹의 비어있지 않은 서브세트는 요청을 근본적으로 비지않은 서브세트로 분산해서 노드에 부하를 밸런싱시키는 라운드 로빈과 가중치 기반 우선 순위와 같은 특정한 순서에 따라 요청과 함께 전달된다.
동작의 한 모드에 있어, 하나 이상의 레플리카가 태스크와 함께 전달되고 태스크가 완성된 후에 인스턴스로부터의 결과는 다른 레플리카와 상관없이 접속을 통해 송신된다. 레플리카 동작의 다른 모드에서는 ,하나 이상의 레플리카가 같은 태스크를 갖고 전달될 것이다. 그러면 관련된 레플리카가 동작을 병렬로 수행하고 결과를 이끌어낸다. 그룹대 그룹 통신 시스템의 출력 스트림에서 설치된 출력 필터는 결과를 비교하고 결과의 단일 인스턴스는 피어그룹에 송신되어 그룹이 피어그룹에 대한 단일 엔티티로 보인다. 피어 그룹에 전달된 출력 인스턴스의 선택은 필터내 같은 출력, 다수의 동의, 정정 결과 혹은 성공적인 동작 출력 등과 같은 방침 세트에 의존한다. 방침의 선택은 어플리케이션에 의존한다. 세그먼트 인스턴스의 전송 실패때 레플리카가 인계해서 접속 중단없이 전송을 계속한다.
출력 컨텐츠 필터에 의한 출력 비교 결과가 노드에 의해 만들어진 출력과 다름을 나타낼 때 서브세트 레플리카는 오류라고 간주되어 접속을 통한 추가 서비스로부터 배제되고, 남아있는 엔드포인트들은 접속 중단없이 서비스를 계속한다. 엔드포인트가 제외되는 실시예에서, 이러한 제외는 엔드포인트 대부분이 다른 것이 못 들어오게 하는데 동의하는 스키마에 기초한다. 선택적으로 엔드포인트들의 제외는 동작이 실패했을 때 발생한다. 엔드포인트의 제외 역시 필터에 의해 프로그램될 수 있는 어플리케이션 특정 스키마로부터 있을 수 있다.
동작의 다른 모드에서, 레플리카는 메모리와 저장장치에서 수정된 데이터와 같은 상태 변화로 끝나는 동작과 함께 전달된다. 이런 방법으로 레플리카는 일관된 상태를 유지한다. 일관성에 영향을 주지 않는 읽기 동작과 같은 동작이 레플리카 사이에 일어날 때, 태스크는 레플리카의 오직 하나의 인스턴스로 전달된다. 이는 레플리카 사이의 로드 밸런싱을 가능하게 한다.
노드 추가와 제거
TCP 그룹 대 그룹 통신 시스템의 엔드포인트 접속에 있는 필터는 어플리케이션 세그먼트로의 데이터 전달의 미립자 제어를 가능하게 한다. 동적으로 필터를 구성함에 의해 특정한 태스크는 노드에 태스크 요청의 전달을 통해 외부적 제어를 가능하게 하면서 특정한 노드로 전달된다. 어플리케이션 세그먼트로의 요청의 흐름은 노드 사이에서 훌륭한 태스크 분배를 위한 스위치처럼 제어된다.
그룹에는 언제든지 노드가 더해질 수 있다. 새롭게 추가된 노드는 이미 존재하는 접속과 새로운 접속으로부터 부하를 공유할 수 있다. 이미 존재하는 접속에서, 노드는 서비스를 결합하고 그곳에 도착하는 태스크를 수령하기 시작한다. 노드 사이의 필요한 부하는 태스크의 이동을 통해 밸런싱된다.
노드 제거를 위해 노드의 부하 책임은 최소부하, 라운드 로빈 또는 어플리케이션 특정 스키마와 같은 스키마를 이용해서 선택된 다른 노드로 이동한다. 제거되면서, 새로운 태스크들을 수령하지 않고 작은 태스크들이 끝날 때까지 기다리는 동안 노드는 완벽하게 자유롭다. 긴 진행 태스크가 포함되어 있을 때는 시스템 레벨 프로세스 이동과 같은 태스크의 이동이 이용된다. 스택과 같은 어플리케이션 프로세스의 전체 상황이 프로세스 이동을 이용해서, 데이터 오픈 화일들이 또 다른 노드로 투명하게 이동한다. 노드들은 그룹으로 대표되는 가상의 엔티티의 어드레스로 접속을 형성하여 그룹내의 다른 노드들과 통신한다. 이는 그룹 노드들 간의 통신을 위한 모든 전술된 특징을 제공한다.
자동 공급
시스템은 변화하는 요구에 맞춰 풀로부터 자원을 그룹으로 자동적이고 동적으로 부가한다. 유사하게, 노드들은 동적이고 자동적으로 제거되고 공급된다. 시스템은 클라이언트에게 전달된 서비스의 질을 감시하고 자원의 추가와 제거를 통해 서비스의 특정 질을 유지한다. 동작은 시스템 외부에서 이뤄질 수 있고 피어 그룹에 잠재적으로 투명하다.
본 발명에 대해 당업자는 본 발명의 원리에 따라 단일 접속으로 그룹 대 그룹 통신을 위한 추가 다른 구조와 기능의 설계가 가능함을 이해할 것이다. 따라서 본 발명의 특정 실시예 및 어플리케이션이 예증되고 기술되었지만 본 발명이 여기에서 설명된 정확한 구조와 구성 성분에만 한정되어 있지 않음을 이해하게 될 것이다. 그리고 청구 범위의 발명의 범위와 정신을 벗어나지 않고 본 명세서의 방법 및 장치의 배열, 동작 및 상세한 설명으로 다양한 수정, 변경, 변화가 가능함이 당업자에게 명백할 것이다.

Claims (14)

  1. 데이터의 원자적인 전달을 위한 노드 사이의 통신 방법에 있어서,
    데이터를 전송하기 위해 노드를 결정하는 단계;
    데이터의 단일 인스턴스를 전송하는 단계; 및
    데이터 송신을 위해 전송 제어를 시리얼화하는 단계를 포함하는 것을 특징으로 하는 통신 방법.
  2. 네트워크에서 그룹 사이의 통신을 위한 장치에 있어서,
    a. 제1 고유하게 어드레스된 그룹 및 제2 고유하게 어드레스된 그룹으로서, 상기 제 1 그룹이 다수의 엔드포인트를 포함하고 각 그룹이 적어도 하나의 노드를 포함하는, 상기 제1 및 제2 그룹;
    b. 각 그룹 사이의 통신을 위해 인에이블된 단일 논리 접속을 갖는 통신 프로토콜;
    c. 각 그룹의 유한한(non-empty) 서브세트 사이의 통신을 효과적으로 하고자 상기 제1 고유하게 어드레스된 그룹의 노드로 데이터를 허용하기 위해 인에블되고 상기 제2 고유하게 어드레스된 그룹으로 데이터를 전송하기 위해 인에블된 다수의 엔드포인트를 포함하는 것을 특징으로 하는 통신 장치.
  3. 제2항에 있어서, 각 그룹 사이의 데이터 통신은 각 그룹의 매개 노드를 통과 하지 않는 것을 특징으로 하는 통신 장치.
  4. 제2항에 있어서, 엔드 포인트는 프로토콜 스택을 포함하는 것을 특징으로 하는 통신 장치.
  5. 제2항에 있어서, 노드는 프로세스 또는 디바이스로 구성된 그룹 중의 하나를 포함하는 것을 특징으로 하는 통신 장치.
  6. 제2항에 있어서, 각 그룹은 고유 어드레스에 의해 다른 그룹을 어드레스하기 위해 인에이블되는 것을 특징으로 하는 통신 장치.
  7. 제2항에 있어서, 통신 프로토콜은 전송 제어 프로토콜(Transmission Control Protocol: TCP)을 포함하는 것을 특징으로 하는 통신 장치.
  8. 네트워크에서 그룹 사이의 통신을 위한 장치에 있어서,
    a. 제1 고유하게 어드레스된 그룹 및 제2 고유하게 어드레스된 그룹으로서, 상기 제 1 그룹이 다수의 엔드포인트를 포함하고 각 그룹이 적어도 하나의 노드를 포함하는, 상기 제1 및 제2 그룹;
    b. 각 그룹 사이의 통신을 위해 인에이블된 단일 논리 접속을 갖는 통신 프로토콜;
    c. 각 그룹의 유한한(non-empty) 서브세트 사이의 통신을 효과적으로 하고자 상기 제1 고유하게 어드레스된 그룹의 노드로 데이터를 허용하기 위해 인에블되고 상기 제2 고유하게 어드레스된 그룹으로 데이터를 전송하기 위해 인에블된 다수의 엔드포인트를 포함하는 것을 특징으로 하는 통신 장치.
  9. 제8항에 있어서, 각 그룹 사이의 데이터 통신은 각 그룹의 매개 노드를 통과하지 않는 것을 특징으로 하는 통신 장치.
  10. 제8항에 있어서, 엔드 포인트는 프로토콜 스택을 포함하는 것을 특징으로 하는 통신 장치.특징으로 하는 통신 장치.
  11. 제8항에 있어서, 상기 프로토콜은 상기 그룹에 의해 송신된 순서로의 데이터 전송을 보장하는 것을 특징으로 하는 통신 장치.
  12. 제8항에 있어서, 상기 엔드 포인트는 노드에 상주하는 것을 특징으로 하는 통신 장치.
  13. 제8항에 있어서, 상기 엔드 포인트는 상기 노드의 외부에 상주하는 것을 특징으로 하는 통신 장치.
  14. 제8항에 있어서, 상기 두 그룹의 멤버십은 상기 접속의 지속 시간 동안 변화하는 것을 특징으로 하는 통신 장치.
KR1020067005585A 2003-09-22 2004-09-21 단일 접속과 장애 극복 대칭 다중 계산 시스템을 통한 그룹대 그룹 통신 방법 및 장치 Ceased KR20060090810A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US50509103P 2003-09-22 2003-09-22
US50509903P 2003-09-22 2003-09-22
US60/505,091 2003-09-22
US60/505,099 2003-09-22
US10/942,763 US8086747B2 (en) 2003-09-22 2004-09-15 Group-to-group communication over a single connection
US10/942,260 2004-09-15
US10/942,763 2004-09-15
US10/942,260 US7525902B2 (en) 2003-09-22 2004-09-15 Fault tolerant symmetric multi-computing system

Publications (1)

Publication Number Publication Date
KR20060090810A true KR20060090810A (ko) 2006-08-16

Family

ID=34397183

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067005585A Ceased KR20060090810A (ko) 2003-09-22 2004-09-21 단일 접속과 장애 극복 대칭 다중 계산 시스템을 통한 그룹대 그룹 통신 방법 및 장치

Country Status (6)

Country Link
EP (1) EP1668527A4 (ko)
JP (1) JP2007520093A (ko)
KR (1) KR20060090810A (ko)
AU (1) AU2004277204A1 (ko)
CA (1) CA2538084A1 (ko)
WO (1) WO2005031588A1 (ko)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2982728B2 (ja) * 1996-12-06 1999-11-29 日本電気株式会社 アプリケーション共有システム
JPH10336176A (ja) * 1997-06-04 1998-12-18 Nippon Telegr & Teleph Corp <Ntt> グループ通信方法及びシステム及びグループ通信プログラムを格納した記憶媒体
JPH1198137A (ja) * 1997-09-17 1999-04-09 Toshiba Corp 通信ネットワークの構築方法
JP3493309B2 (ja) * 1997-10-31 2004-02-03 富士通株式会社 マルチキャスト送信方法
JP2000155736A (ja) * 1998-11-24 2000-06-06 Nec Corp サービス要求の振り分け方法及びアドレス変換装置
US6801949B1 (en) * 1999-04-12 2004-10-05 Rainfinity, Inc. Distributed server cluster with graphical user interface
JP3692830B2 (ja) * 1999-05-14 2005-09-07 株式会社日立製作所 マルチキャスト通信システム
US6820133B1 (en) * 2000-02-07 2004-11-16 Netli, Inc. System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
JP2001326685A (ja) * 2000-05-18 2001-11-22 Nec Eng Ltd 同報送信システム及びその宛先データベース管理方式
US7139822B2 (en) * 2000-07-07 2006-11-21 International Business Machines Corporation Interception method and system for compensating disadvantageous characteristics of a communication protocol
US7143131B1 (en) * 2001-05-04 2006-11-28 Microsoft Corporation Transmission control protocol
US6829637B2 (en) * 2001-07-26 2004-12-07 International Business Machines Corporation Distributed shared memory for server clusters

Also Published As

Publication number Publication date
JP2007520093A (ja) 2007-07-19
AU2004277204A1 (en) 2005-04-07
EP1668527A4 (en) 2010-02-24
EP1668527A1 (en) 2006-06-14
WO2005031588A1 (en) 2005-04-07
CA2538084A1 (en) 2005-04-07

Similar Documents

Publication Publication Date Title
US8086747B2 (en) Group-to-group communication over a single connection
US7911939B2 (en) Fault tolerant symmetric multi-computing system
US12395429B2 (en) Medical device communication method
JP4577853B2 (ja) ネットワーク・プロトコル処理のオフロードにおいて接続確立をサポートする装置および方法
US9338019B2 (en) Scalable transport method for multicast replication
JP4886685B2 (ja) ネットワーク・プロトコル処理のオフロードにおいてメモリ管理をサポートする装置および方法
KR102047142B1 (ko) 원격 직접 메모리 액세스를 통한 임의 사이즈의 전송 기법
US6370583B1 (en) Method and apparatus for portraying a cluster of computer systems as having a single internet protocol image
US6871296B2 (en) Highly available TCP systems with fail over connections
US20040073683A1 (en) Method and apparatus for providing an integrated cluster alias address
US20060002424A1 (en) Multiple instances of the same type of processing module within a layered communication stack
US20120036272A1 (en) Method and System for Handling Connection Setup in a Network
US6934768B1 (en) Dynamic modification of fragmentation size cluster communication parameter in clustered computer system
CN108694092A (zh) 一种面向并行应用的容器通信方法和系统
AU2021320231A1 (en) Local and global quality of service shaper on ingress in a distributed system
US8150996B2 (en) Method and apparatus for handling flow control for a data transfer
KR20060090810A (ko) 단일 접속과 장애 극복 대칭 다중 계산 시스템을 통한 그룹대 그룹 통신 방법 및 장치

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20060321

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20090831

Comment text: Request for Examination of Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20110211

Patent event code: PE09021S01D

E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20110627

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20110211

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I