KR100464195B1 - 데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치 - Google Patents

데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치 Download PDF

Info

Publication number
KR100464195B1
KR100464195B1 KR10-2002-0001745A KR20020001745A KR100464195B1 KR 100464195 B1 KR100464195 B1 KR 100464195B1 KR 20020001745 A KR20020001745 A KR 20020001745A KR 100464195 B1 KR100464195 B1 KR 100464195B1
Authority
KR
South Korea
Prior art keywords
data
subsequence
request
data packet
amount
Prior art date
Application number
KR10-2002-0001745A
Other languages
English (en)
Other versions
KR20020060623A (ko
Inventor
프라지어길레스로거
피스터그레고리프랜시스
레시오레나토존
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20020060623A publication Critical patent/KR20020060623A/ko
Application granted granted Critical
Publication of KR100464195B1 publication Critical patent/KR100464195B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/266Stopping or restarting the source, e.g. X-on or X-off
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes

Abstract

본 발명은 데이터를 전송하기 위한 방법, 장치, 및 컴퓨터 구현 명령에 관한 것이다. 요청은 요청기에 의해 응답기에 송신된다. 요청은 요청기에서 사용가능한 일정량의 프로세싱 공간을 포함한다. 요청이 응답기로부터 수신될 때, 데이터는 요청을 사용해서 식별된다. 데이터는 요청기로 전송되기 위해 데이터 패킷의 다수의 서브시퀀스로 배치되고, 서브시퀀스 세트내의 각 패킷은 사용가능한 일정량의 공간보다 작거나 같은 양의 데이터를 보유한다. 그 후, 이러한 서브시퀀스는 한번에 하나씩 서브시퀀스를 요청기로 송신한다. 새로운 서브시퀀스는 요청기에서 사용가능한 일정량의 프로세싱 공간이 비어 있을 때마다 또 다른 서브시퀀스로부터 프로세스 데이터로 송신된다. 요청기는 사용가능한 일정량의 프로세싱 공간이 비어 있을 때마다, 요청에 응답해서 다수의 서브시퀀스로부터 서브시퀀스를 수신하고, 각각의 서브시퀀스 세트내의 데이터는 사용가능한 일정량의 프로세싱 공간내에 적합하다.

Description

데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는 방법 및 장치{METHOD AND APPARATUS FOR PROVIDING A RELIABLE PROTOCOL FOR TRANSFERRING DATA}
본 발명은 일반적으로 개선된 네트워크 데이터 프로세싱 시스템에 관한 것이고, 특히 네트워크 데이터 프로세싱 시스템을 관리하는 방법 및 장치에 관한 것이다. 보다 구체적으로는, 본 발명은 데이터 패킷의 세트를 사용하여 데이터를 전송하는 방법 및 장치를 제공한다.
시스템 에어리어 네트워크(System area network, SAN)에서, 하드웨어는 입출력 디바이스(I/O)에 사용될 수 있는 메시지 전달 메카니즘(message passing mechanism) 및 일반적인 컴퓨팅 노드들(IPC) 사이의 인터프로세스(interprocess) 통신을 제공한다. 디바이스 상에서 실행되는 프로세스들은 SAN 채널 어댑터(CA)를 통해 작업 대기열(work queues)을 송수신하기 위하여 송수신 메시지를 포스팅(posting)함으로써 SAN 메시지 전달 하드웨어를 액세스한다. 또한, 이러한 프로세스들은 "컨슈머(consumers)"로도 나타낸다. 송수신 작업 대기열(WQ)은 대기열 쌍(queue pair, QP)로서 컨슈머에 할당된다. 메시지들은 5개의 서로 다른 전송 타입; 신뢰성 있는 접속(Reliable Connected, RC), 신뢰성 있는 데이터그램(Reliable Datagram, RD), 신뢰성 없는 접속(Unreliable Connected, UC), 신뢰성 없는 데이터그램(Unreliable Datagram, UD), 및 원형 데이터그램(Raw Datagram, RawD)을 통해 송신(send)될 수 있다. 컨슈머는 SAN 송수신 작업 완료(work completion, WC)를 통해 완료 대기열(Completion queue, CQ)로부터 이러한 메시지들의 결과를 검색한다. 소스 채널 어댑터는 외부로 향하는 메시지를 세그멘트하고, 그들을 목적지로 송신한다. 목적지 채널 어댑터는 내부로 향하는 메시지들을 재결합하고 그들을 목적지의 컨슈머에 의해 지정된 메모리 공간에 배치한다. 2개의 채널 어댑터 타입, 호스트 채널 어댑터(HCA) 및 타겟 채널 어댑터(TCA)가 존재한다. 호스트 채널 어댑터는 SAN 구조(fabric)에 액세스하기 위해 범용 컴퓨팅 노드에 의해 사용된다. 컨슈머는 SAN 용어(SAN verbs)를 사용하여 호스트 채널 어댑터 기능들에 액세스한다. 용어들을 해석하고 직접 채널 어댑터에 액세스하는 소프트웨어는 채널 인터페이스(CI)로 알려져 있다.
특히 구성 배치동안에 네트워크 관리 연산들은 한정된 정보 전달 및 저장 용량을 가지는 상대적으로 간단한 루틴에 의해 종종 실행된다. 이 때문에, 신뢰성이 없는 데이터그램 메시지 타입이 사용되고, 데이터그램 길이는 고정된 작은 값으로 제한된다. 많은 관리 연산들은 단일 데이터그램 또는 요청/응답(request/response) 데이터그램의 쌍의 전달에 의해 수행될 수 있다. 이러한 간단한 연산에 에러가 발생할 경우, 전체 연산은 과도한 오버헤드를 유발하지 않고 반복될 수 있다. 다른 관리 연산들은 많은 양의 데이터의 전달을 필요로 하고, 이는 단일 데이터그램 내에 포함될 수 없다. 이러한 연산들은 관련된 데이터그램들을 상호 연관시키고, 손실된 데이터그램을 인식하고, 손실된 데이터그램을 복구하는 수단을 필요로 한다. 또한, 요청자(requester)가 데이터베이스로부터 데이터를 요청하는 네트워크 관리의 "겟(Get)" 연산시, 요청자는 얼마나 많은 데이터가 리턴될 지를 알지 못한다; 요청자가 리턴되는 데이터의 양에 대한 상한선을 설정하는 구성이 필요하고, 추가 데이터가 이용가능하다면 요청에 대해 보다 많은 데이터의 리턴을 지속할 필요가 있다. 결국, 많은 양의 데이터가 수신자에게 송신되는 네트워크 관리의 "셋(Set)" 연산시, 데이터의 수신자는 초기에 모든 데이터를 수신하도록 준비되지 않을 수 있다.
따라서, 송신되는 초기 데이터의 양을 제한하고, 데이터가 수신되도록 준비될 때 보다 많은 데이터를 요청하는 수단을 수신자에게 제공하는 개선된 방법 및 장치를 갖는 것이 유리하다.
본 발명은 요청에 응답하여 데이터를 전송하고 이전의 요청을 수신하지 않고 수신자에게 데이터를 전송하는 명령을 실행하는 방법, 장치 및 컴퓨터를 제공한다. 요청에 응답하여 데이터가 전송된 경우, 요청기가 응답기에 요청을 송신한다. 요청은 요청기에서의 사용가능한 프로세싱 공간의 양을 포함한다. 응답기로부터 요청이 수신된 경우, 요청을 사용하여 데이터가 식별된다. 데이터는 요청기로의 전송을 위해 복수의 데이터 패킷으로 배치되고, 패킷의 세트 내의 각각의 패킷은 고정된 데이터 양을 유지한다. 패킷은 패킷들의 서브시퀀스(subsequences)로 그룹화되고, 이들의 각각은 사용가능한 공간의 양 보다 작거나 같은 양의 데이터를 유지한다. 이러한 서브시퀀스들은 그 후 요청기에게 송신된다. 요청기에서의 사용가능한 프로세싱 공간이 다른 서브시퀀스로부터의 데이터를 처리하기 위해 비어 있을 때마다 새로운 서브시퀀스가 송신된다. 요청기는, 사용가능한 양의 프로세싱 공간이 비어 있을 때마다, 요청에 응답하여 데이터 패킷의 서브시퀀스를 수신하고, 데이터 패킷의 각각의 서브시퀀스 내의 데이터는 사용가능한 프로세싱 공간의 양에 적합하다.
이전의 요청 없이 수신자에게 데이터가 송신되는 경우, 먼저 송신자는 데이터 패킷의 서브시퀀스를 송신하는데, 이는 데이터의 디폴트(default) 양까지 데이터를 유지한다. 그 후, 송신자는 수신기에서의 프로세싱 공간의 양이 비어 있을 때마다 추가 데이터의 서브시퀀스들을 송신한다.
도 1은 본 발명의 바람직한 실시예에 따른 네트워크 글로벌 체인지 컴퓨팅 시스템(network global change computing system)의 도면.
도 2는 본 발명의 바람직한 실시예에 따른 호스트 프로세서 노드의 기능 블록도.
도 3은 본 발명의 바람직한 실시예에 따른 호스트 채널 어댑터의 도면.
도 4는 본 발명의 바람직한 실시예에 따른 작업 요청의 프로세싱을 도시하는 도면.
도 5는 본 발명의 바람직한 실시예에 따른 데이터 패킷을 도시하는 도면.
도 6은 본 발명의 바람직한 실시예에 따른 관리 데이터그램 데이터 패킷의 도면.
도 7은 본 발명의 바람직한 실시예에 따라 데이터를 요청하고 수신하는데 사용되는 프로세스의 플로우챠트.
도 8은 본 발명의 바람직한 실시예에 따라 데이터에 대한 요청을 처리하기 위해 사용되는 프로세스의 플로우챠트.
도 9는 본 발명의 바람직한 실시예에 따라 데이터에 대한 이전의 요청을 송신하지 않고 송신자로부터 데이터를 수신하는데 사용되는 프로세스의 플로우챠트.
도 10은 본 발명의 바람직한 실시예에 따라 데이터에 대한 이전의 요청을 수신하지 않고 데이터를 송신하는데 사용되는 프로세스의 플로우챠트.
<도면의 주요부분에 대한 부호의 설명>
102, 104: 호스트 프로세서 노드
106 : RAID 서브시스템
117 : 라우터
122, 124 : 채널 어댑터
224 : 메시지 및 제이터 서비스
302 - 310 : 대기열 쌍(QP)
410, 412 : 작업 요청
414 : 작업 완료
438 - 448 : 데이터 세그먼트
518 : 전송 헤더
606 : 프레그먼트 플래그
본 발명의 특징적인 신규한 구성은 첨부된 청구범위에 개시된다. 그러나, 본 발명 그 자체 뿐만 아니라, 바람직한 사용 모드, 추가 목적 및 이점들은 첨부되는 도면과 함께 읽을 경우 도시적인 실시예에 대한 다음의 상세한 설명을 참조로 하면 가장 잘 이해될 것이다.
도면, 특히 도 1을 참조로 하면, 본 발명의 바람직한 실시예에 따른 네트워크 글로벌 체인지 컴퓨팅 시스템의 도면이 도시되어 있다. 도 1에 도시된 분산형 컴퓨터 시스템(distributed computer system)은 시스템 에어리어 네트워크(SAN)(100)의 형태를 가지며 단지 예시적인 목적만을 위해 제공되고, 아래에 기술되는 본 발명의 실시예들은 수많은 다른 타입 및 구성을 갖는 컴퓨터 시스템에서 구현될 수 있다. 예를 들면, 본 발명을 구현하는 컴퓨터 시스템의 범위는 하나의 프로세서 및 수 개의 입출력(I/O) 어댑터를 갖는 작은 서버에서부터, 수백 또는 수천개의 프로세서 및 수천개의 I/O 어댑터를 갖는 대량의 병렬 슈퍼컴퓨터 시스템까지이다. 또한, 본 발명은 인터넷 또는 인트라넷에 의해 접속되는 원격 컴퓨터 시스템의 기반 구조에서 실현될 수 있다. SAN(100)은 분산형 컴퓨터 시스템 내의 높은 대역폭, 낮은 레이턴시 네트워크 인터커넥팅 노드(interconnecting node)들이다. 노드는 네트워크의 하나 이상의 링크에 부착되고 네트워크 내의 메시지들의 출처 및/또는 목적지를 형성하는 임의의 구성 성분이다. 도시된 예에서, SAN(100)은 호스트 프로세서 노드(102), 호스트 프로세서 노드(104), 리던던트 어레이 독립 디스크(redundant array independent disk, RAID) 서브시스템 노드(106), 및 I/O 새시 노드(chassis node, 108) 형태의 노드들을 포함한다. 도 1에 도시된 노드들은 단지 예시적인 목적을 위한 것이며, SAN(100)은 임의의 개수 및 임의의 타입의 독립 프로세서 노드, I/O 어댑터 노드 및 I/O 디바이스 노드들을 접속할 수 있다. 이러한 노드 중에서 어떤 노드일지라도 종단 노드로 기능할 수 있으며, 여기에서 이는 SAN(100)에서 메시지나 프레임을 발생하고 결국에는 소모(consume)하는 디바이스가 되도록 정의된다.
본 발명의 일 실시예에서, 분산 컴퓨터 시스템에서의 에러 프로세싱 메카니즘이 제공되며, 그 에러 프로세싱 메카니즘은 SAN(100) 등의 분산 컴퓨터 시스템에서 종단 노드 사이에서의 신뢰성 있는 접속(connection)과 신뢰성 있는 데이터그램 통신을 가능하게 한다.
여기에서 사용되는 메시지는 데이터 교환의 어플리케이션 정의 유닛(application-defined unit)으로, 상호 동작하는(cooperating) 프로세서 사이에서의 통신의 기본 유닛이다. 패킷은 네트워크 프로토콜 헤더 및/또는 트레일러(trailer)에 의해 밀폐된 데이터의 하나의 단위이다. 헤더는 일반적으로 SAN을 통해 프레임을 나타내기 위한 제어 및 라우팅 정보를 제공한다. 트레일러는 일반적으로 내용이 틀린 상태로 패킷이 배달되지 않는 것을 보증하기 위한 제어 및 CRC(cyclic redundancy check) 데이터를 포함한다. SAN(100)은 분산 컴퓨터 시스템내에서 프로세서 간 통신(IPC) 및 I/O를 모두 지원하는 통신 및 관리 기반 구조를 포함한다. 도 1에 도시된 SAN(100)은, 많은 디바이스가 동시에 데이터를 높은 대역 및 낮은 레이턴시로 안전한 원격 관리 환경에서 전달하도록 하는 교환 통신 구조(116)를 포함한다. 종단 노드는 다중 포트 상에서 통신할 수 있고, SAN 구조를 통해 다중 경로를 이용할 수 있다. 도 1에 도시된 SAN을 통한 다중 포트 및 경로가 에러 허용 오차(tolerance) 및 증가된 대역폭 데이터 전달을 위하여 사용 가능하다.
도 1의 SAN(100)은 스위치(112, 114, 146) 및 라우터(117)를 포함한다. 스위치는 소형 헤더 DLID(Destination Local Identifier) 필드를 사용하여 서브넷(subnet) 내에서 하나의 링크에서 다른 링크로의 패킷의 라우팅을 가능하게 하며, 다중 링크를 함께 접속하는 디바이스이다. 라우터는 대형 헤더 DGUID(Destination Globally Unique Identifier)를 사용하여 제1 서브넷에서의 링크에서 제2 서브넷에서의 링크로 프레임을 라우팅할 수 있으며 다중 서브넷을 함께 연결하는 디바이스이다.
일 실시예에서, 링크는 종단 노드, 스위치, 또는 라우터 등의 임의의 두개의 네트워크 구조 소자(fabric element) 사이의 전체 양방향 채널이다. 적절한 링크의 예로는, 이에 제한되는 것은 아니지만, 구리(copper) 케이블, 광 케이블, 배면 및 인쇄 회로 기판상의 인쇄 회로 구리 트레이스(traces)를 포함한다.
신뢰성 있는 서비스 형태로서, 호스트 프로세서 종단 노드 및 I/O 어댑터 종단 노드 등의 종단 노드는 요청 패킷을 발생하고 응답 패킷을 리턴한다. 스위치와 라우터는 패킷을 소스에서 목적지로 전달시킨다. 네트워크의 각 스테이지에서 업데이트된 가변(variant) CRC 트레일러 필드를 제외하고는, 스위치는 패킷을 수정없이 패스시킨다. 라우터는 가변 CRC 트레일러 필드를 업데이트하고 패킷이 라우트됨으로써 헤더에서 다른 필드를 수정한다.
도 1에 도시한 SAN(100)에서, 호스트 프로세서 노드(102, 104), 및 I/O 새시(108)는 SAN(100)와 인터페이스하기 위한 적어도 하나의 채널 어댑터(CA)를 포함한다. 일 실시예에서, 각 채널 어댑터는 SAN 구조(100) 상에서 전송되는 소스나 싱크(sink) 패킷에 충분히 세밀하게 채널 어댑터 인터페이스를 실행하는 종단 포인트(endpoint)이다. 호스트 프로세서 노드(102)는 호스트 채널 어댑터(118, 120)의 형태로 채널 어댑터를 포함한다. 호스트 프로세서 노드(104)는 호스트 채널 어댑터(122, 124)를 포함한다. 호스트 프로세서 노드(102)는 또한 버스 시스템(134)으로 상호 접속된 메모리(132) 및 중앙 프로세싱 유닛(126-130)을 포함한다. 이와 유사하게 호스트 프로세서 노드(104)는 버스 시스템(144)으로 상호 접속된 메모리(142)와 중앙 프로세싱 유닛(136-140)을 포함한다.
호스트 채널 어댑터(118, 120)는 스위치(112)와 접속되며, 호스트 채널 어댑터(122, 124)는 스위치(112, 114)와 접속된다. 일 실시예에서, 호스트 채널 어댑터는 하드웨어에서 실행된다. 이러한 실행에서, 호스트 채널 어댑터 하드웨어는 중앙 프로세싱 유닛과 I/O 어댑터 통신 오버헤드를 많이 덜어 준다. 호스트 채널 어댑터의 이러한 하드웨어 실행은 또한, 통신 프로토콜에 연관된 종래의 오버헤드없이 교환망을 통해 다중 동시 통신을 가능하게 한다. 일 실시예에서, 도 1의 호스트 채널 어댑터 및 SAN(100)은 오퍼레이팅 시스템 커널(kernel) 프로세서를 포함하지 않고 제로 프로세서-카피 데이터 전달을 분산 컴퓨터 시스템의 I/O 및 IPC(interprocessor communications) 컨슈머에게 제공하며, 신뢰성 있는 에러 허용 오차 통신을 제공하기 위한 하드웨어를 채용한다.
도 1에 나타난 바와 같이, 라우터(116)는 WAN(wide area network) 및/또는 LAN(local area network) 접속으로 다른 호스트나 다른 라우터와 결합한다.
도 1의 I/O 새시(108)는 I/O 스위치(146)와 다중 I/O 모듈(148-156)을 포함한다. 이들 예에서, I/O 모듈은 어댑터 카드의 형태를 갖는다. 도 1에 도시된 예시적인 어댑터 카드는 I/O 모듈(148)을 위한 SCSI 어댑터 카드, I/O 모듈(152)을 위한 파이버(fiber) 채널 허브 및 파이버 채널-조정 루프(FC-AL) 디바이스로의 어댑터 카드, I/O 모듈(150)을 위한 이더넷(Ethernet) 어댑터 카드, I/O 모듈(154)을 위한 그래픽 어댑터 카드, 및 I/O 모듈(156)을 위한 비디오 어댑터 카드를 포함한다. 공지의 어떠한 형태의 어댑터 카드도 채용될 수 있다. I/O 어댑터는 또한 어댑터 카드를 SAN 구조에 연결시키기 위한 I/O 어댑터 배면에서 스위치를 포함한다. 이들 모듈은 타겟 채널 어댑터(158-166)를 포함한다. 이러한 예에서, 도 1의 RAID 서브시스템 노드(106)는 프로세서(168), 메모리(170), 타겟 채널 어댑터(TCA)(172), 및 다중 리던던트 및/또는 스트라이프 저장 디스크 유닛(174)을 포함한다. 타겟 채널 어댑터(172)는 완전히 동작하는 호스트 채널 어댑터가 될 수 있다.
SAN(100)는 I/O에 대한 데이터 통신 및 프로세서 간 통신을 처리한다. SAN(100)은 I/O에서 요청되는 고대역 및 범위성(scalability)을 지원하고, 또한 프로세서 간 통신에서 요청되는 매우 낮은 레이턴시 및 낮은 CPU 오버헤드를 지원한다. 사용자 클라이언트는 오퍼레이팅 시스템 커널 프로세스를 바이패스할 수 있고, 효율적인 메시지 패스 프로토콜을 가능하게 하는 호스트 채널 어댑터 등의 네트워크 통신 하드웨어를 직접 액세스할 수 있다. SAN(100)은 현재 계산하는 모델에 적합하며, 새로운 형태의 I/O 및 컴퓨터 클러스터(cluster) 통신에 대한 빌딩 블록이다. 또한, 도 1의 SAN(100)은 I/O 어댑터 노드가 그 사이에서 통신하거나, 분산 컴퓨터 시스템의 소정의 또는 모든 프로세서 노드와 통신할 수 있게 한다. I/O 어댑터가 SAN(100)에 부착된 상태에서, 이에 따른 I/O 어댑터 노드는 실질적으로 SAN(100)의 소정의 호스트 프로세서 노드와 동일한 통신 능력을 갖는다.
다음으로 도 2에서, 본 발명의 바람직한 실시예에 따라 호스트 프로세서 노드의 기능적인 블록도가 도시된다. 호스트 프로세서 노드(200)는 도 1의 호스트 프로세서 노드(102)와 같은 호스트 프로세서 노드의 예이다.
이 예에서, 도 2에 도시된 호스트 프로세서 노드(200)는 호스트 프로세서 노드(200) 상에서 실행하는 프로세스인 컨슈머(202-208)의 세트를 포함한다. 호스트 프로세서 노드(200)는 또한 채널 어댑터(210, 212)를 포함한다. 채널 어댑터(210)는 포트(214, 216)를 포함하며, 채널 어댑터(212)는 포트(218, 220)를 포함한다. 각 포트는 링크와 접속한다. 포트들은 도 1의 SAN(100) 등의, 하나의 SAN 서브넷 또는 다중 SAN 서브넷에 연결 가능하다. 이러한 예에서, 채널 어댑터는 호스트 채널 어댑터의 형태를 갖는다. 컨슈머(202-208)는 용어(verb) 인터페이스(222)와 메시지 및 데이터 서비스(224)를 통해 메시지를 전달한다. 용어 인터페이스는 본질적으로는 호스트 채널 어댑터의 기능성의 개념적 기술(abstract description)이다. 오퍼레이팅 시스템은 용어 기능성의 일부 또는 전부를 그 프로그래밍 인터페이스를 통해 나타낼 수도 있다. 기본적으로 이러한 인터페이스는 호스트의 작용을 정의한다.
또한, 호스트 프로세서 노드(200)는, 용어 계층보다 더 높은 레벨의 인터페이스이며, 채널 어댑터(210, 212)를 통해 수신되는 메시지 및 데이터를 처리하는데 사용되는 메시지 및 데이터 서비스(224)를 포함한다. 메시지 및 데이터 서비스(224)는 메시지 및 다른 데이터를 처리하기 위하여 컨슈머(202-208)에 인터페이스를 제공한다.
이제 도 3을 참조하면, 본 발명의 바람직한 실시예에 따른 호스트 채널 어댑터의 블록도가 도시된다. 도 3에 도시된 호스트 채널 어댑터(300)는 메시지를 호스트 채널 어댑터 포트(312-316)로 전달하는데 사용되는 대기열 쌍(QPs)(302-310) 세트를 포함한다.
호스트 채널 어댑터 포트(312-316)로의 데이터 버퍼링은 가상 통로(virtual lanes)(VL)(318-334)를 통해 채널되며, 여기서 각각의 VL은 자신의 플로우 제어를 갖는다. 서브넷 관리자는 각 물리 포트, 즉 포트의 LID에 대하여 로컬 어드레스로 채널 어댑터를 형성한다. 서브넷 관리자 에이전트(SMA)(336)는 채널 어댑터를 형성하기 위한 목적으로 서브넷 관리자와 통신하는 엔티티(entity)이다. 메모리 변환 및 보호(memory translation and protection;MTP)(338)는 가상 어드레스를 물리 어드레스 및 유효 액세스 권한(validate access right)으로 변환하는 메카니즘이다. 다이렉트 메모리 액세스(DMA)(340)는 대기열 쌍(302-310)에 관하여 메모리(340)를 사용하는 다이렉트 메모리 액세스 동작을 제공한다.
도 3에 도시된 호스트 채널 어댑터(300) 등의 단일 채널 어댑터는 수 천개의 대기열 쌍을 지원할 수 있다. 이와는 반대로, I/O 어댑터 내의 타겟 채널 어댑터는 일반적으로 더 작은 수의 대기열 쌍을 제공한다.
각각의 대기열 쌍은 송신 작업 대기열(send work queue; SWQ) 및 수신 작업 대기열(receive work queue)로 구성된다. 송신 작업 대기열은 채널과 메모리 시맨틱(semantic) 메시지를 송신하기 위하여 사용된다. 수신 작업 대기열은 채널 시맨틱 메시지를 수신한다. 컨슈머는 작업 요청(work requests; WRs)을 작업 대기열 상에 위치시키기 위하여, 여기서 용어로 언급되는 오퍼레이팅-시스템 특정 프로그래밍 인터페이스를 호출한다.
도 4를 참조하여, 본 발명의 바람직한 실시예에 따라 작업 요청의 프로세싱을 나타내는 도면이 도시된다. 도 4에서, 수신 작업 대기열(400), 송신 작업 대기열(402), 및 완료 대기열(404)이 컨슈머(406)로부터의 및 컨슈머(406)에 대한 요청을 처리하기 위하여 제공된다. 컨슈머(406)로부터의 이들 요청은 결국 하드웨어(408)로 송신된다. 이 예에서, 컨슈머(406)는 작업 요청(410, 412)을 발생하고 작업 완료(414)를 수신한다. 도 4에 도시된 바와 같이, 작업 대기열에 위치한 작업 요청은 작업 대기열 요소(WQEs; work queue elements)로 언급된다. 송신 작업 대기열(402)은 SAN 구조 상에서 전송되는 데이터를 기술하는 작업 대기열 요소(WQEs)(422-428)를 포함한다. 수신 작업 대기열(400)은 SAN 구조로부터의 입력 채널 시맨틱 데이터를 위치시키는 것을 기술하는 작업 대기열 요소(WQEs)(416-420)를 포함한다. 작업 대기열 요소는 호스트 채널 어댑터 내의 하드웨어(408)에 의해 처리된다.
용어는 또한 완료 대기열(404)로부터의 완료된 작업을 검색하기 위한 메카니즘을 제공한다. 도 4에 도시한 바와 같이, 완료 대기열(404)은 완료 대기열 요소(CQEs)(430-436)를 포함한다. 완료 대기열 요소는 이전에 완료된 작업 대기열 요소에 관한 정보를 포함한다. 완료 대기열(404)은 다중 대기열 쌍에 대한 완료 공고(notification)의 단일 포인트를 생성하는데 사용된다. 완료 대기열 요소는 완료 대기열 상의 데이터 구조이다. 이 요소는 완료된 작업 대기열 요소를 나타낸다. 완료 대기열 요소는 완료되는 대기열 쌍과 특정 작업 대기열 요소를 결정하기 위해 충분한 정보를 포함한다. 완료 대기열 컨텍스트는, 개개의 완료 대기열을 관리하는데 필요한 포인터, 길이, 및 기타 정보를 포함하는 정보 블록이다.
다음은 도 4에 도시된 송신 작업 대기열(402)을 지원하는 예시적인 작업 요청이 설명된다. 송신 작업 요청은 원격 노드의 수신 작업 대기열 요소로 참조되는 데이터 세그먼트들에 로컬 데이터 세그먼트 세트를 푸시(push)하는 채널 시맨틱(semantic) 동작이다. 예를 들면, 작업 대기열 요소(428)는 데이터 세그먼트 4(438), 데이터 세그먼트 5(440), 및 데이터 세그먼트 6(442)에 대한 기준을 포함한다. 송신 작업 요청의 데이터 세그먼트들 각각은 가상 접촉(contiguous) 메모리 영역을 포함한다. 로컬 데이터 세그먼트들을 참조하는데 사용되는 가상 어드레스들은 로컬 대기열 쌍을 생성하는 프로세스의 어드레스 컨텍스트 내에 있다.
원격 다이렉트 메모리 액세스(RDMA) 판독 작업 요청은 원격 노드상의 가상 접촉 메모리 공간을 판독하기 위한 메모리 시맨틱 동작을 제공한다. 메모리 공간은 메모리 영역의 일부 또는 메모리 원도우의 일부일 수 있다. 메모리 영역은 가상 어드레스 및 길이로 규정되는 미리 등록된 가상 접촉 메모리 어드레스 세트를 참조한다. 메모리 윈도우는 미리 등록된 영역에 제한되는 가상 접촉 메모리 어드레스 세트를 참조한다.
RDMA 판독 작업 요청은 원격 종단 노드(remote endnode) 상의 가상 접촉 메모리 공간을 판독하여 그 데이터를 가상 접촉 로컬 메모리 공간에 기입한다. 송신 작업 요청과 마찬가지로, 로컬 데이터 세그먼트들을 참조하기 위해 RDMA 판독 작업 대기열 요소에 의해 이용되는 가상 어드레스들은 로컬 대기열 쌍을 생성하는 프로세스의 어드레스 컨텍스트 내에 있다. 예를 들면, 수신 작업 대기열(400) 내의 작업 대기열 요소(416)는 데이터 세그먼트 1(444), 데이터 세그먼트 2(446) 및 데이터 세그먼트 3(448)을 참조한다. 원격 가상 어드레스들은 RDMA 판독 작업 대기열 요소들의 타깃인 원격 대기열 쌍을 소유하는 프로세스의 어드레스 컨텍스트 내에 있다.
RDMA 기입 작업 대기열 요소는 원격 노드 상의 가상 접촉 메모리 공간을 기입하는 메모리 시맨틱 동작을 제공한다. RDMA 기입 작업 대기열 요소는 로컬 가상 접촉 메모리 공간의 스케터(scatter) 리스트 및 로컬 메모리 공간이 기입되는 원격 메모리 공간의 가상 어드레스를 포함한다.
RDMA FetchOp 작업 대기열 요소는 원격 워드상의 아토믹(atomic) 동작을 수행하기 위한 메모리 시맨틱 동작을 제공한다. RDMA FetchOp 작업 대기열 요소는 결합된 RDMA 판독, 변형, 및 RDMA 기입 동작이다. RDMA FetchOp 작업 대기열 요소는, 만일 동일하다면, Compare 및 Swap와 같은, 수개의 판독-변형-기입 동작들을 지원할 수 있다.
바인드(bind)(언바인드(unbind)) 원격 액세스 키(R_Key) 작업 대기열 요소는 메모리 윈도우를 메모리 영역에 관련 (비관련)시킴으로써 메모리 윈도우를 변형(파괴)하라는 커맨드를 호스트 채널 어댑터 하드웨어로 제공한다. R_Key는 각각의 RDMA 액세스의 일부이며 원격 프로세스가 버퍼에 대한 액세스를 허가하는 것을 확인하는데 사용된다.
일 실시예에서, 도 4에 도시된 수신 작업 대기열(400)은 수신 작업 대기열 요소로 참조되는 하나의 유형의 작업 대기열 요소만을 지원한다. 수신 작업 대기열 요소는 입력 송신 메시지들이 기입되는 로컬 메모리 공간을 나타내는 채널 시맨틱 동작을 제공한다. 수신 작업 대기열 요소는 수개의 가상 접촉 메모리 공간들을 나타내는 스케터 리스트를 포함한다. 입력 송신 메시지는 이들 메모리 공간들에 기입된다. 가상 어드레스들은 로컬 대기열 쌍을 생성하는 프로세스의 어드레스 컨텍스트 내에 있다.
프로세서 간 통신에 대하여, 사용자 모드 소프트웨어 프로세스는 메모리 내에 상주하는 버퍼로부터 직접 대기열 쌍들을 통해 데이터를 전송한다. 일 실시예에서, 대기열 쌍들을 통한 전송은 동작 시스템을 바이패스하고 수개의 호스트 명령 사이클을 소비한다. 대기열 쌍들은 시스템 커널 관련 동작이 없는 제로 프로세서-카피(zero processor-copy) 데이터 전송을 허락한다. 제로 프로세서-카피 데이터 전송은 고대역 및 저 레이턴시 통신의 유효 지원을 제공한다.
대기열 쌍이 생성될 때, 대기열 쌍은 선택된 유형의 수송 서비스를 제공하도록 설정된다. 일 실시예에서, 본 발명을 구현하는 분산 컴퓨터 시스템은 4개 유형의 수송 서비스들을 지원한다.
신뢰성 있게, 그리고 신뢰할 수 없게 접속된 서비스들은 로컬 대기열 쌍을 단지 하나의 원격 대기열 쌍과 연관시킨다. 접속된 서비스들은 SAN 구조를 통해 통신하는 각 프로세스에 대한 대기열 쌍을 생성하는 프로세스를 요청한다. 따라서, 만일 각각의 N 호스트 프로세서 노드들이 P 프로세스들을 포함하고, 각 노드 상의 모든 P 프로세스들이 다른 모든 노드들 상의 모든 프로세스들과 통신하기를 원한다면, 각 호스트 프로세서 노드는 P2×(N-1) 대기열 쌍들을 요청한다. 또한, 프로세스는 동일한 호스트 채널 어댑터에서 대기열 쌍을 다른 대기열 쌍에 접속할 수 있다.
신뢰성 있는 데이터그램 서비스는 로컬 단대단(end-end; EE) 컨텍스트를 단지 하나의 원격 단대단 컨텍스트와 연관시킨다. 신뢰성 있는 데이터그램 서비스는 하나의 대기열 쌍의 클라이언트 프로세스를 임의의 다른 원격 노드 상의 임의의 다른 대기열 쌍과 통신하는 것을 허용한다. 수신 작업 대기열에서, 신뢰성 있는 데이터그램 서비스는 임의의 다른 원격지 노드상의 임의의 송신 작업 대기열로부터의 메시지를 입력할 수 있게 한다. 신뢰성 있는 데이터그램 서비스는 비접속이므로,이 신뢰성 있는 데이터그램 서비스는 범위성(scalability)을 상당히 개선할 수 있다. 따라서, 고정된 수의 대기열 쌍을 갖는 종단 노드는 신뢰성 있는 접속 트랜스포트 서비스를 갖는 프로세스와 종단 노드보다 신뢰성 있는 데이터그램 서비스를 갖는 프로세스와 종단 노드와 보다 더 많이 통신할 수 있다. 예를 들면, N 호스트 프로세서 노드들 각각이 P 프로세스들을 포함하고, 각 노드 상의 모든 P 프로세스들이 다른 모든 노드들 상의 모든 프로세스들과 통신하기를 원한다면, 신뢰성 있는 접속 서비스는 각 노드에서 P2×(N-1) 대기열 쌍들을 요청한다. 비교에 의해서, 비접속의 신뢰성 있는 데이터그램 서비스는 완전히 동일한 통신에 대하여 각 노드에서의 P 대기열 쌍 +(N-1) EE 컨텍스트만을 요청한다.
신뢰성 없는 데이터그램 서비스는 접속되지 않는다. 신뢰성 없는 데이터그램 서비스는 관리 어플리케이션에 의해 새로운 스위치들, 라우터들, 및 종단노드들을 알아채어 제공된 분산 컴퓨터 시스템 내에 통합하는데 이용된다. 신뢰성 없는 데이터그램 서비스는 신뢰성 있는 접속 서비스와 신뢰성 있는 데이터그램 서비스의 신뢰성 보증을 제공하지 않는다. 따라서, 신뢰성 없는 데이터그램 서비스는 각각의 종단 노드에 기억되는 보다 작은 상태 정보들로 동작한다. 다음은 도 5를 참조하면, 본 발명의 바람직한 실시예에 따른 데이터 패킷을 도시한다. 메시지 데이터(500)는, 도 4에 도시된 데이터 세그먼트들과 유사한, 데이터 세그먼트 1(502), 데이터 세그먼트 2(504) 및 데이터 세그먼트 3(506)을 포함한다. 본 예에서, 이들 데이터 세그먼트들은 패킷(508)을 형성하고, 데이터 패킷(512) 내의 패킷페이로드(510) 내에 배치된다. 또한, 데이터 패킷(512)은 에러 체크를 위해 사용되는 CRC(514)를 포함한다. 추가로, 라우팅 헤더(516)와 트랜스포트 헤더(518)는 데이터 패킷(512) 내에 존재한다. 라우팅 헤더(516)는 데이터 패킷(512)을 위한 소스 및 목적지 포트들을 식별하는데 사용된다. 본 예에서, 트랜스포트 헤더(518)는 데이터 패킷(512)에 대한 목적지 대기열 쌍을 특정한다.
또한, 트랜스포트 헤더(518)는 데이터 패킷(512)에 대한 동작 코드, 패킷 시퀀스 번호 및 파티션(partition)과 같은 정보들을 제공한다. 동작 코드는 패킷이 메시지의 최초, 최종, 중간 또는 유일한 패킷인지의 여부를 식별한다. 동작 코드는 또한 그 동작이 송신 RDMA 기입, 판독 또는 아토믹인지를 특정화한다. 패킷 시퀀스 번호는 통신이 설정될 때 초기화되어 대기열 쌍이 새로운 패킷을 생성할 때마다 증가된다. 종단노드의 포트들은 파티션이라 불리는 하나 이상의 가능한 오버랩핑(overlapping) 세트들의 일부가 되도록 구성된다.
신뢰성 있는 트랜스포트 서비스가 채용되면, 요청 패킷이 그의 목적지 종단 노드에 도달될 때, 목적지 종단 노드는 요청 패킷 송신기가 요청 패킷이 목적지에서 유효하게 수령되었는지를 알 수 있도록 하기 위하여 이 통지(acknowledgment) 패킷들을 이용한다. 통지 패킷들은 하나 이상의 유효한 수령된 요청 패킷들의 통지를 알린다. 요청자는 소정의 통지를 수신하기 전에 다수의 미해결의 요청 패킷들을 가질 수 있다. 일실시예에서, 다수의 미해결의 메시지들의 개수는 QP가 생성될 때 결정된다.
본 발명은 데이터를 요청하는 요청기와 요청된 데이터를 요청기로 되돌려 보내는 응답기 사이에 데이터의 전송을 관리하기 위한 매카니즘을 제공한다. 본 발명은 또한, 송신기와 데이터 요청을 미리 송신하지 않은 수령자 사이의 데이터 전송을 관리하기 위해 제공된다. 이러한 매카니즘들은 관리 데이터그램(MAD)이라 불리우는 신뢰성 없는 데이터그램들을 이용하여 신뢰성 있는 데이터 전송을 제공하기 위해 데이터 패킷들 내의 필드들의 배치에 의해서 뿐만 아니라, 요청기와 응답기 또는 송신기와 수령자내의 프로세스들을 통해서 구현된다. 요청자가 데이터를 요청하는 매카니즘은 데이터에 대한 질의 또는 요청을 송신하는 요청기를 포함한다. 이 경우, 응답 사이즈, 데이터량은 알려져 있지 않다. 이 요청은 응답으로 복귀되는 데이터를 프로세싱하기 위해 요청기에서 이용가능한 양의 버퍼 공간을 포함한다. 응답기는 요청에 응답하는 데이터를 포함하는 데이터 패킷들을 송신함으로써 응답한다. 본 예에서, 데이터는 MAD 시퀀스 내에 포함된다. MAD의 시퀀스 내의 데이터 송신량은 요청기에서 이용가능한 버퍼 공간량보다 크지 않다. 일련의 MAD들은 단일 데이터 패킷 시퀀스 내의 모든 데이터를 송신한다기 보다 이러한 방식으로 송신된다. 이들 데이터 패킷 시퀀스는 모두 서브시퀀스로서 참조된다.
서브시퀀스가 송신된 후에, 응답기는 이전의 서브시퀀스의 정확한 수령 및 다음 서브시퀀스를 송신하기 전의 버퍼 공간의 유효성을 나타내는 응답을 기다린다. 에러가 발생하면, 전체 응답을 재송신하지 않고, 서브시퀀스가 재송신될 수 있다.
더욱이, 버퍼 공간량은 변화될 수 있고, 사용가능한 버퍼 공간량의 이러한 변화는 요청기로부터의 응답에 반영될 수 있다. 또한, 최종 데이터 패킷은 유효 버퍼 공간량 이상으로 데이터를 포함할 수 없다. 즉, 이들 데이터 패킷은 유효 데이터 공간량보다 적은 데이터를 포함한다. 이 경우, 현재의 패킷을 요청에 응답하는 데이터를 포함하여 송신되는 최종 데이터 패킷으로서 식별할 뿐만아니라, 데이터 패킷이 어떻게 채워지는지를 나타내기 위해 프래그먼트 플레그가 데이터 패킷 내에 설정될 수 있다.
다시 도 6을 참조하면, 본 발명의 바람직한 일 실시예에 따르는 MAD의 도면이 도시된다. MAD(600)는 도 5의 데이터 패킷 페이로드 필드(510)와 같은, 데이터 패킷의 패킷 페이로드 필드의 일례이다. 세그먼트 번호 필드(602), 페이로드 길이 필드(604), 프레그먼트 플래그 필드(606) 및 윈도우 파라미터 필드(608)는 요청기와 응답기 사이의 신뢰성 있는 데이터 전송을 제공하는데 사용되는 부가적인 필드들이다. 이들 예에서, 요청기는 도 1에 도시된 호스트 프로세서 노드(102)일 수 있고, 응답기는 도 1의 리던던트 어레이 독립 디스크(RAID) 서브시스템 노드일 수 있다.
세그먼트 번호 필드(602)는 요청 또는 응답 내의 패킷의 상대적인 위치를 식별한다. 예를 들면, 특정 패킷은 처리하고자 하는 일련의 패킷들 중의 제1 패킷일 수 있다. 선택적으로, 패킷은 최종 패킷 또는 다른 패킷들 내에 위치한 데이터에 대하여 그들 사이의 임의의 위치에 있는 패킷일 수 있다. 이 데이터가 다른 데이터 패킷들로부터의 데이터와 올바른 순서로 재구성(reassemble)될 수 있도록, 세그먼트 번호 필드(602)는 패킷내의 데이터의 상대적인 위치를 식별한다.
이들 예에서, 페이로드 길이 필드(604)는 멀티패킷 요청 및 멀티패킷 응답의최초 패킷 안에서 유효하다. 페이로드 길이 필드(604)는 전체 멀티패킷 요청 또는 응답의 예상되는 길이를 특정한다. 페이로드 길이 필드는 또한 얼마나 많은 데이터가 그 동작의 최종 패킷에 포함되어 있는지를 특정하기 위한 멀티패킷 전송 동작 또는 응답의 최종 패킷 안에서 유효하다. 실제 전송된 데이터의 양이 그 동작의 최초 패킷의 페이로드 길이 필드에 지시된 것으로 예상되는 데이터의 양과 동일하지 않은 경우에, 최종 패킷의 유효한 데이터 바이트들의 수를 특정하기 위하여 멀티패킷 동작의 최종 패킷 안에 페이로드 길이를 포함하는 것이 필요하다. 프래그먼트 플래그 필드(606)는 패킷이 (1)요청 또는 응답의 최초 또는 최종 패킷인지, (2)패킷들의 수령(receipt)을 통지하는 통지(acknowledgment) 패킷인지, (3)패킷들의 재전송을 요청하는 재전송-요청 패킷인지, 또는 (4)재설정되어야 하는 트랜잭션(transaction)에 대한 타이머들을 요청하는 패킷인지 여부를 특정한다.
윈도우 파라미터 필드(608)는 연속하는 서브시퀀스들에 대한 수령자(recipient)에 있어 유효한 버퍼 공간의 양을 특정한다. 윈도우 파라미터 필드는 요청 패킷 또는 통지 패킷에 대하여 유효하다.
도 7 및 도 8은 멀티패킷 요청을 포함하는 프로토콜내의 프로세스들을 도시하며, 데이터에 대한 요청의 응답에서 송신된다. 도 9 및 도 10은 이전의 요청을 수신한 바 없는 멀티패킷 메세지의 송신을 포함하는 프로토콜의 프로세스들을 도시한다.
다음으로 도 7을 보면, 데이터의 요청 및 수신을 위해 사용되는 프로세스의 흐름도가 본 발명의 양호한 실시예에 따라 도시되어 있다. 도 7에 도시된 프로세스는 요청기에서 수행될 수도 있다.
요청을 전송함으로써 이 프로세스는 시작한다(단계 700). 이 요청에서, 요청기는 서브시퀀스 안에서 송신될 수 있는 데이터 블럭을 처리하기 위해서 사용가능한 버퍼 공간 또는 다른 메모리 공간의 양을 특정하는 윈도우 필드를 포함한다. 다음으로, 타이머가 시작된다(단계 702). 일단 타이머가 시작되고, 서브시퀀스가 수신되면, 통지가 송신된다(단계704). 이 통지는 서브시퀀스의 수령을 통지한다. 전체 요청에 대한 최종 데이터 패킷이 수신되었는지 여부의 판정이 이루어진다(단계 706). 이런 식별은 도 6의 프래그먼트 플래그 필드(606)와 같은 프래그먼트 플래그 필드에 위치한 프래그먼트 플래그를 사용함으로써 이루어질 수 있다. 최종 데이터 패킷이 수신되면 그 프로세스는 종료한다.
단계 702를 다시 참조하면, 일단 타이머가 시작되고, 타임아웃 또는 에러가 발생하면, 재시도의 최대 수가 초과되었는지 여부의 판정이 이루어진다(단계 708). 허용된 재시도의 최대 수가 초과되지 않았으면, 그 프로세스가 단계 702로 돌아가면서 재전송 요청이 보내진다(단계 710). 타이머가 끝나면 타임아웃이 발생한다. 에러 체킹(checking) 후에 데이터 패킷이 부적절하게 수신되거나 에러들을 포함하고 있으면, 에러가 발생할 수 있다. 허용된 재시도의 최대 수가 초과되었으면, 그 동작에 할당된 리소스들은 해제되고(단계 712) 그 후에 이 프로세스는 종료한다.
일단 타이머가 시작하고, 킵 얼라이브(keep alive) 응답이 수신되면, 그 프로세스는 단계 702로 돌아간다. 이들 예에서, 요청기로 데이터를 전송하는데 부가적인 시간이 요청되는 경우, 킵 얼라이브 응답이 응답기로부터 수신된다.
다시 단계 706을 참조하면, 최종 데이터 패킷이 수신되지 않으면, 그 프로세스는 단계 702로 돌아간다.
다음으로 도 8을 보면, 데이터에 대한 요청을 처리하기 위해 사용되는 프로세스의 흐름도가 본 발명의 양호한 실시예에 따라 도시되어 있다. 도 8에 도시된 프로세스는 이 예들에서, 응답기에서 수행될 수 있다.
그 프로세스는 요청기로부터 요청을 수신함으로써 시작한다(단계 800). 다음으로, 데이터가 액세스된다(단계 802). 이 데이터는 그 요청에 대응하는 데이터이다. 액세스된 데이터의 양은 그 요청의 윈도우 필드 안에 특정된 길이와 동일하다. 그다음에, 데이터가 송신된다(단계 804). 단계 804에서 송신된 데이터는 윈도우 필드 안에 특정되어 요청기에 의해 사용가능한 만큼의 공간의 양에 달하는 데이터를 포함하는 서브시퀀스 내에서 송신된다. 또한, 그 데이터가 사용자에게 전송될 최종 데이터 패킷에 대한 것이면, 프래그먼트 플래그는 그 데이터 패킷이 최종 데이터 패킷이라는 것을 나타내도록 설정된다. 다음으로, 그 프로세스는 요청기로부터의 통지를 대기한다(단계 806). 통지가 수신되면, 최종 데이터 패킷이 송신되었는지 여부의 판정이 이루어진다(단계 808). 최종 데이터 패킷이 송신되었으면, 그 프로세스는 종료한다.
다시 단계 802를 참조하면, 데이터 액세스를 위해 더 많은 시간이 필요하면, 그 프로세스가 단계 802로 돌아가면서 킵 얼라이브가 전송된다(단계 810).
다시 단계 806을 참조하면, 통지를 대기하는 동안 재전송 요청이 수신되면, 그 프로세스는 단계 804로 돌아간다. 이 재전송 요청은 요청기에 의해 수신된 데이터의 에러에 대한 응답에서 수신될 수 있다. 통지를 대기하는 동안 타임아웃이 수신되면, 리소스들은 해제되고(단계 812) 이 프로세스는 종료된다.
다음으로 도 9를 보면, 이전의 요청이 송신되지 않은 경우, 송신기로부터 데이터를 수신하기 위해 사용되는 프로세스의 흐름도가 본 발명의 양호한 실시예에 따라 도시되어 있다.
최초 서브시퀀스를 수신함으로써 프로세스가 시작된다(단계 900). 이 최초 서브시퀀스는 데이터의 디폴트 양을 포함하며, 송신 동작을 위해서 송신되어야 하는 데이터의 전체 양을 특정하는 정보를 포함한다. 다음으로, 통지가 송신기에 송신된다(단계 902). 타이머가 시작된다(단계 904). 단계 904에서, 전체 서브시퀀스가 수신되면, 통지는 그 송신기로 다시 송신된다(단계 906). 전체 송신 동작에 대한 최종 데이터 패킷이 수신되었는지 여부의 판정이 이루어 진다(단계 908). 전체 송신 동작에 대한 최종 데이터 패킷이 수신되면, 그 프로세스는 종료한다. 이 데이터 패킷은 데이터 패킷들의 최종 서브시퀀스의 최종 데이터 패킷이다.
다시 단계 904를 참조하여, 킵 얼라이브가 수신되면, 그 프로세스는 단계 904로 돌아간다. 에러 또는 타임아웃이 발생하면, 재시도의 최대 수가 초과하였는지에 대한 판정이 이루어진다(단계 910). 만약 재시도의 최대 수가 초과되지 않았다면, 그 프로세스가 단계 904로 돌아가면서 재전송 요청이 송신기로 송신된다(단계 912). 단계 910에서, 재시도의 최대 수가 초과되었다면, 그 동작에 할당된 모든 리소스들은 해제되고(단계 914) 그 프로세스는 종료한다.
다시 단계 908을 참조하면, 최종 데이터 패킷이 수신되지 않았다면, 그 프로세스는 단계 904로 돌아간다.
다음으로 도 10을 보면, 이전 요청이 전송되지 않은 데이터를 수신하기 위해 사용되는 프로세스의 흐름도가 본 발명의 바람직한 실시예에 따라 도시되어 있다.
이 프로세스는 전송기가 최초 서브시퀀스를 전송함으로써 시작한다(단계 1000). 이 서브시퀀스는 데이터의 디폴트 양을 포함한다. 다음으로, 통지의 수령 시간을 측정하기 위하여 타이머가 시작된다(단계 1002). 통지가 수신되면, 부가적인 데이터가 액세스된다(단계 1004). 액세스된 데이터의 양은 통지 패킷의 윈도우 파라미터 필드 안에 특정된 값과 동일하다. 데이터가 설정 시간량 내에 액세스되면, 데이터가 송신되고(단계 1006), 그 프로세스는 통지의 수령을 대기한다(단계 1008). 서브시퀀스 내의 데이터의 양이 수령자로부터 수신된 최초 통지 패킷의 윈도우 파라미터 필드 안에서 나타내어진 바와 같이, 데이터는 수령자에서 사용가능한 메모리 또는 버퍼 공간 이하인 서브시퀀스 안에서 송신된다. 송신된 데이터에 대한 통지가 수신되면, 최종 패킷이 송신되었는지 여부의 판정이 이루어진다(단계 1010). 최종 패킷이 송신되었으면, 그 프로세스는 종료한다.
다시 단계 1002를 참조하면, 타임아웃이 발생하면, 재시도의 최대 수가 초과되었는지 여부의 판정이 이루어진다(단계 1012). 재시도의 최대 수가 초과되지 않았다면, 그 동작은 재시도되고(단계 1014), 그 다음에 이 프로세스는 단계 1000으로 돌아간다. 허용된 재시도의 최대 수가 초과되었다면, 그 프로세스는 종료하고 그 동작에 할당된 모든 리소스들은 해제된다.
다시 단계 1004를 참조하면, 데이터 액세스를 위해서 더 많은 시간이 필요하면, 그 프로세스가 단계 1004로 돌아가면서 킵 얼라이브 응답이 수령자로 송신된다(단계1016).
다시 단계 1008을 참조하면, 통지 또는 재전송-요청이 수신되기 전에 타임아웃이 발생하면, 그 동작은 종료하고 리소스들은 송신기에서 해제된다(단계1018). 재시도의 최대 수가 단계 1012에서 초과하였다면, 그 프로세스는 또한 단계 1018로 진행한다.
다시 단계 1010을 참조하면, 최종 데이터 패킷이 송신되지 않았다면, 그 프로세스는 단계 1004로 돌아간다.
따라서, 본 발명은 데이터 전송을 위한 방법, 장치, 및 컴퓨터 구현 명령들을 제공한다. 이 메커니즘은 MAD들을 사용하는 신용할 수 있는 전송을 제공한다. 데이터는 수령자가 데이터를 처리하는데 사용가능한 메모리 공간을 초과하지 않는 양만큼 전송된다. 그 데이터가 처리되었다는 통지가 수신되는 경우에 부가적인 데이터가 송신된다. 이런 식으로, 요청에 응답하는 데이터가 단일 MAD 보다는 멀티플 MAD들을 포함하는 서브시퀀스 안에서 송신된다.
본 발명이 충분히 기능하는 데이터 프로세싱 시스템의 상황에서 설명된 반면에, 본 발명이 속하는 기술분야에서 통상의 기술을 가진자들은 본 발명의 프로세스들이 명령들의 컴퓨터 판독가능한 매체의 형태 또는 다양한 형태로 분배될 수 있고, 본 발명이 그 분배를 수행하기 위해 실제 사용되는 매체를 포함하는 특정한 신호 타입에 관계없이 균등하게 적용된다는 것을 자명하게 알 수 있다. 컴퓨터 판독가능한 매체의 예들은 플로피 디스크, 하드 디스크 드라이브, 램, CD-ROM, DVD-ROM과 같은 판독가능형 매체, 및 디지털 및 아날로그 통신 링크들, 예를 들어 무선 주파수 및 광파 전송과 같은 전송 형태를 사용하는 유선 또는 무선 통신 링크들과 같은 전송형 매체를 포함한다. 컴퓨터 판독가능한 매체는 특정 데이터 프로세싱 시스템에서의 실제 사용을 위해 디코드되는 코드화된 포맷들의 형태를 취할 수 있다.
본 발명의 설명은 도시 및 설명을 위해 제공되었고, 본 발명에 대해 총망라하거나 제한하려는 것은 아니다. 당업자들에게는 다수의 수정과 변경이 가능하다는 것이 분명할 것이다. 실시예들은 본 발명의 원리, 실제의 응용을 가장 잘 설명하기 위하여, 또한 예상되는 특정 사용에 적합한 것으로서 다양한 변형들을 가진 다양한 실시예를 위해 당업자들이 본 발명을 이해할 수 있도록 선택되고 설명되었다.
본 발명은 요청에 응답하여 데이터를 전송하고 이전의 요청을 수신하지 않고 수신자에게 데이터를 전송하는 명령을 실행하는 방법, 장치 및 컴퓨터를 제공하며, 송신되는 초기 데이터의 양을 제한하고, 데이터가 수신되도록 준비될 경우 보다 많은 데이터를 요청하는 수단을 수신자에게 제공하는 개선된 방법 및 장치를 제공하는 효과를 가진다.

Claims (25)

  1. 데이터 프로세싱 시스템에서 데이터를 전송하기 위한 방법에 있어서,
    상기 데이터 프로세싱 시스템에서 사용가능한 일정량의 프로세싱 공간을 포함하는 요청을 송신하는 단계; 및
    사용가능한 일정량의 프로세싱 공간이 비어 있을 때마다, 상기 요청에 응답해서 데이터 패킷의 서브시퀀스 세트로부터 데이터 패킷의 서브시퀀스를 수신하는 단계
    를 포함하고,
    상기 데이터 패킷의 서브시퀀스 세트내의 각 서브시퀀스내의 데이터는 사용가능한 일정량의 프로세싱 공간내에 적합한 데이터 전송 방법.
  2. 제1항에 있어서, 상기 데이터 패킷은 관리 데이터그램인 데이터 전송 방법.
  3. 제1항에 있어서, 상기 데이터 패킷의 서브시퀀스 세트내의 데이터 패킷의 특정 서브시퀀스는 상기 사용가능한 일정량의 프로세싱 공간보다 작은 양의 데이터를 포함하는 데이터 전송 방법.
  4. 제1항에 있어서, 서브시퀀스내의 특정 데이터 패킷은 상기 특정 패킷이 데이터 전송 동작의 최초 데이터 패킷인지 최종 데이터 패킷인지를 나타내는 프래그먼트 플래그(fragment flag)를 포함하는 데이터 전송 방법.
  5. 제1항에 있어서, 특정 데이터 패킷은 상기 데이터 패킷의 서브시퀀스 세트내의 최종 데이터 패킷인 데이터 전송 방법.
  6. 제1항에 있어서, 상기 데이터 패킷의 서브시퀀스 세트내의 각 서브시퀀스는 서로 다른 양의 데이터를 포함하는 데이터 전송 방법.
  7. 제1항에 있어서, 상기 데이터 패킷은 세그먼트 번호를 포함하는 데이터 전송 방법.
  8. 제1항에 있어서,
    상기 데이터 패킷내의 데이터를 올바른 순서로 재구성(reassemble)하는 단계를 더 포함하는 데이터 전송 방법.
  9. 제8항에 있어서, 상기 데이터 패킷의 서브시퀀스 세트내의 각 데이터 패킷은 세그먼트 번호를 포함하고, 상기 데이터는 세그먼트 번호를 사용해서 재구성되는 데이터 전송 방법.
  10. 제1항에 있어서, 상기 사용가능한 일정량의 공간은 상기 데이터 프로세싱 시스템내의 버퍼인 데이터 전송 방법.
  11. 제1항에 있어서, 상기 사용가능한 일정량의 프로세싱 공간은 상기 데이터 프로세싱 시스템의 메모리내에 배치되는 버퍼인 데이터 전송 방법.
  12. 데이터 프로세싱 시스템에서 데이터를 전송하기 위한 방법에 있어서,
    요청기로부터, 사용가능한 일정량의 공간을 포함하는 요청을 수신하는 단계;
    상기 요청을 사용하여 데이터를 식별하는 단계;
    데이터 패킷의 다수의 서브시퀀스로 상기 데이터를 배치하는 단계 - 상기 서브시퀀스 세트 내의 각 서브시퀀스는 사용가능한 일정량의 공간보다 작거나 같은 양의 데이터를 보유함 - ;및
    상기 데이터 패킷의 다수의 서브시퀀스를 상기 요청기로 송신하는 단계
    를 포함하는 데이터 전송 방법.
  13. 제12항에 있어서, 상기 데이터 패킷의 다수의 서브시퀀스내의 최초 데이터 패킷 및 최종 데이터 패킷은 패이로드(payload) 길이를 포함하는 데이터 전송 방법.
  14. 제12항에 있어서, 상기 데이터 패킷의 다수의 서브시퀀스내의 데이터 패킷은 상기 데이터 패킷이 데이터 전송 동작을 위해 송신되는 최초 데이터 패킷인지 최종데이터 패킷인지를 나타내는 프래그먼트 플래그를 포함하는 데이터 전송 방법.
  15. 제12항에 있어서,
    상기 송신 단계는
    상기 데이터 패킷의 다수의 서브시퀀스내의 송신되지 않은 데이터 패킷의 서브시퀀스를 요청기로 송신하는 단계;
    상기 사용가능한 일정량의 공간이 상기 요청기에서 비어 있는 것을 나타내는 응답을 모니터링하는 단계; 및
    상기 다수의 데이터 패킷내에 존재하는 또 다른 송신되지 않은 데이터 패킷의 서브 시퀀스에 응답하여 상기 응답을 검출하고, 상기 송신 및 모니터링 단계를 반복하는 단계
    를 포함하는 데이터 전송 방법.
  16. 버스 시스템;
    상기 버스에 접속된 통신 유닛 - 데이터는 상기 통신 유닛을 사용해서 송신되고 수신됨 - ;
    버스 시스템에 접속된 메모리 - 명령의 세트는 상기 메모리내에 위치함 - ;및
    상기 버스 시스템에 접속된 프로세서 유닛 - 상기 프로세서 유닛은 명령 세트를 실행하여 상기 데이터 프로세싱 시스템에서 사용가능한 일정량의 프로세싱 공간을 포함하는 요청을 송신하고, 상기 사용가능한 일정량의 프로세싱 공간이 비어 있을 때마다, 상기 요청에 응답해서 데이터 패킷의 세트로부터 데이터 패킷의 서브시퀀스를 수신하고, 데이터 패킷의 각 서브시퀀스내의 데이터는 사용가능한 일정량의 프로세싱 공간내에 적합함 -
    을 포함하는 데이터 프로세싱 시스템.
  17. 제16항에 있어서, 상기 버스 시스템은 주(primary) 버스 및 부(secondary) 버스를 포함하는 데이터 프로세싱 시스템.
  18. 제16항에 있어서, 상기 프로세서 유닛은 단일 프로세서를 포함하는 데이터 프로세싱 시스템.
  19. 제16항에 있어서, 상기 프로세서 유닛은 다수의 프로세서를 포함하는 데이터 프로세싱 시스템.
  20. 제16항에 있어서, 상기 통신 유닛은 이더넷(Ethernet) 어댑터인 데이터 프로세싱 시스템.
  21. 버스 시스템;
    상기 버스에 접속된 통신 유닛 - 데이터는 상기 통신 유닛을 사용해서 송신되고 수신됨 - ;
    상기 버스 시스템에 접속된 메모리 - 명령의 세트는 상기 메모리내에 위치함 - ;및
    상기 버스 시스템에 접속된 프로세서 유닛 - 상기 프로세서 유닛은 명령의 세트를 실행하여 요청기로부터, 사용가능한 일정량의 공간을 포함하는 요청을 수신하고, 상기 요청을 사용하여 데이터를 식별하고, 데이터 패킷의 다수의 서브시퀀스로 상기 데이터를 배치하고, 상기 서브시퀀스 세트내의 각 서브시퀀스는 사용가능한 일정량의 공간보다 작거나 같은 양의 데이터를 보유하고, 상기 데이터 패킷의 다수의 서브시퀀스를 상기 요청기로 송신함 -
    을 포함하는 데이터 프로세싱 시스템.
  22. 데이터를 전송하기 위한 데이터 프로세싱 시스템에 있어서,
    상기 데이터 프로세싱 시스템에서 사용가능한 일정량의 프로세싱 공간을 포함하는 요청을 송신하기 위한 송신 수단; 및
    사용가능한 일정량의 프로세싱 공간이 비어 있을 때마다, 상기 요청에 응답해서 데이터 패킷의 서브시퀀스 세트로부터 데이터 패킷의 서브시퀀스를 수신하기 위한 수신 수단 - 상기 데이터 패킷의 각 서브시퀀스내의 데이터는 상기 사용가능한 일정량의 프로세싱 공간내에 적합함-
    을 포함하는 데이터 프로세싱 시스템.
  23. 데이터를 전송하기 위한 데이터 프로세싱 시스템에 있어서,
    요청기로부터, 사용가능한 일정량의 공간을 포함하는 요청을 수신하기 위한 수신 수단;
    상기 요청을 사용하여 데이터를 식별하기 위한 식별 수단;
    데이터 패킷의 다수의 서브시퀀스로 상기 데이터를 배치하기 위한 배치 수단 - 상기 데이터 패킷의 다수의 서브시퀀스내의 각 서브시퀀스는 사용가능한 일정량의 공간보다 작거나 같은 양의 데이터를 보유함 - ;및
    상기 데이터 패킷의 다수의 서브시퀀스를 상기 요청기로 송신하기 위한 송신 수단
    을 포함하는 데이터 프로세싱 시스템.
  24. 데이터 프로세싱 시스템에서 데이터를 전송하는데 사용하기 위한 컴퓨터 판독가능 매체내의 컴퓨터 프로그램 프로덕트(product)에 있어서,
    상기 데이터 프로세싱 시스템에서 사용가능한 일정량의 프로세싱 공간을 포함하는 요청을 송신하기 위한 제1 명령; 및
    상기 사용가능한 일정량의 프로세싱 공간이 비어 있을 때마다, 상기 요청에 응답해서 데이터 패킷의 서브시퀀스 세트로부터 데이터 패킷의 서브시퀀스를 수신하기 위한 제2 명령 - 상기 데이터 패킷의 각 서브시퀀스내의 데이터는 상기 사용가능한 일정량의 프로세싱 공간내에 적합함 -
    을 포함하는 컴퓨터 프로그램 프로덕트.
  25. 데이터 프로세싱 시스템에서 데이터를 전송하기 위한 컴퓨터 판독가능 매체내의 컴퓨터 프로그램 프로덕트에 있어서,
    요청기로부터 사용가능한 일정량의 공간을 포함하는 요청을 수신하기 위한 제1 명령;
    상기 요청을 사용해서 데이터를 식별하기 위한 제2 명령;
    데이터 패킷의 다수의 서브시퀀스로 상기 데이터를 배치하기 위한 제3 명령 - 상기 서브시퀀스 세트내의 각 서브시퀀스는 상기 사용가능한 일정량의 공간보다 작거나 같은 양의 데이터를 보유함 - ;및
    상기 데이터 패킷의 다수의 서브시퀀스를 상기 요청기로 송신하기 위한 제4 명령
    을 포함하는 컴퓨터 프로그램 프로덕트.
KR10-2002-0001745A 2001-01-11 2002-01-11 데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치 KR100464195B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/758,737 2001-01-11
US09/758,737 US6898638B2 (en) 2001-01-11 2001-01-11 Method and apparatus for grouping data for transfer according to recipient buffer size

Publications (2)

Publication Number Publication Date
KR20020060623A KR20020060623A (ko) 2002-07-18
KR100464195B1 true KR100464195B1 (ko) 2005-01-03

Family

ID=25052893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0001745A KR100464195B1 (ko) 2001-01-11 2002-01-11 데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치

Country Status (3)

Country Link
US (1) US6898638B2 (ko)
JP (1) JP2002305535A (ko)
KR (1) KR100464195B1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE323360T1 (de) * 2002-04-03 2006-04-15 Cit Alcatel Verfahren und vorrichtungen zur umordnung von paketen in einem netzwerkprozessor
US20040240388A1 (en) * 2003-05-28 2004-12-02 Lee Albion System and method for dynamic assignment of timers in a network transport engine
JP2005064982A (ja) * 2003-08-15 2005-03-10 Nippon Telegr & Teleph Corp <Ntt> 端末装置
US7698361B2 (en) * 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US7347794B2 (en) 2004-03-17 2008-03-25 Karsten Manufacturing Corporation Method of manufacturing a face plate for a golf club head
GB0408876D0 (en) * 2004-04-21 2004-05-26 Level 5 Networks Ltd User-level stack
US7895329B2 (en) * 2006-01-12 2011-02-22 Hewlett-Packard Development Company, L.P. Protocol flow control
US8645596B2 (en) 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
US7996548B2 (en) 2008-12-30 2011-08-09 Intel Corporation Message communication techniques
US8832216B2 (en) * 2011-08-31 2014-09-09 Oracle International Corporation Method and system for conditional remote direct memory access write
US10425371B2 (en) * 2013-03-15 2019-09-24 Trane International Inc. Method for fragmented messaging between network devices
US10498654B2 (en) 2015-12-28 2019-12-03 Amazon Technologies, Inc. Multi-path transport design
US10148570B2 (en) 2015-12-29 2018-12-04 Amazon Technologies, Inc. Connectionless reliable transport
US9985903B2 (en) 2015-12-29 2018-05-29 Amazon Technologies, Inc. Reliable, out-of-order receipt of packets
EP3731487B1 (en) * 2015-12-29 2022-07-06 Amazon Technologies, Inc. Networking technologies
US9985904B2 (en) 2015-12-29 2018-05-29 Amazon Technolgies, Inc. Reliable, out-of-order transmission of packets
JP6578992B2 (ja) * 2016-03-02 2019-09-25 富士通株式会社 制御回路、情報処理装置、および情報処理装置の制御方法
JP7032631B2 (ja) * 2017-07-04 2022-03-09 富士通株式会社 送受信システム、送受信システムの制御方法、及び送信装置
JP2022076620A (ja) * 2020-11-10 2022-05-20 キオクシア株式会社 メモリシステムおよび制御方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61292767A (ja) * 1985-06-20 1986-12-23 Nec Corp オンラインシステムにおける出力制御方式
KR880009498A (ko) * 1987-01-12 1988-09-15 야마모도 다꾸마 테이타 교환용 데이타 전송 버퍼회로
JPH02165252A (ja) * 1988-10-31 1990-06-26 Internatl Business Mach Corp <Ibm> マルチプロセッサ・コンピユータ・システムならびにその共有記憶スペース作成方法、共有記憶装置使用方法、共有記憶スペース割振り解除方法および共有記憶スペース破壊方法
JPH0644111A (ja) * 1991-06-03 1994-02-18 Digital Equip Corp <Dec> 要求されたサービス・クラスに基づいて記憶割り当てを行なうデータ記憶管理システムおよび方法
KR19990079650A (ko) * 1998-04-08 1999-11-05 김영환 두 프로세서 간 데이터 통신시 패킷을 사용한 가변길이 데이터처리방법
KR20010097361A (ko) * 2000-04-21 2001-11-08 한 동 원 멀티유저 컴퓨터 시스템 및 그 제어방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738821B1 (en) * 1999-01-26 2004-05-18 Adaptec, Inc. Ethernet storage protocol networks

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61292767A (ja) * 1985-06-20 1986-12-23 Nec Corp オンラインシステムにおける出力制御方式
KR880009498A (ko) * 1987-01-12 1988-09-15 야마모도 다꾸마 테이타 교환용 데이타 전송 버퍼회로
JPH02165252A (ja) * 1988-10-31 1990-06-26 Internatl Business Mach Corp <Ibm> マルチプロセッサ・コンピユータ・システムならびにその共有記憶スペース作成方法、共有記憶装置使用方法、共有記憶スペース割振り解除方法および共有記憶スペース破壊方法
JPH0644111A (ja) * 1991-06-03 1994-02-18 Digital Equip Corp <Dec> 要求されたサービス・クラスに基づいて記憶割り当てを行なうデータ記憶管理システムおよび方法
KR19990079650A (ko) * 1998-04-08 1999-11-05 김영환 두 프로세서 간 데이터 통신시 패킷을 사용한 가변길이 데이터처리방법
KR20010097361A (ko) * 2000-04-21 2001-11-08 한 동 원 멀티유저 컴퓨터 시스템 및 그 제어방법

Also Published As

Publication number Publication date
US20020091852A1 (en) 2002-07-11
KR20020060623A (ko) 2002-07-18
US6898638B2 (en) 2005-05-24
JP2002305535A (ja) 2002-10-18

Similar Documents

Publication Publication Date Title
KR100464195B1 (ko) 데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치
US7519650B2 (en) Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms
US6789143B2 (en) Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries
US6766467B1 (en) Method and apparatus for pausing a send queue without causing sympathy errors
US6725296B2 (en) Apparatus and method for managing work and completion queues using head and tail pointers
JP4012545B2 (ja) リモート・ダイレクト・メモリ・アクセス対応ネットワーク・インタフェース・コントローラのスイッチオーバーとスイッチバックのサポート
US20030061296A1 (en) Memory semantic storage I/O
US6748559B1 (en) Method and system for reliably defining and determining timeout values in unreliable datagrams
US7555002B2 (en) Infiniband general services queue pair virtualization for multiple logical ports on a single physical port
US6578122B2 (en) Using an access key to protect and point to regions in windows for infiniband
US7095750B2 (en) Apparatus and method for virtualizing a queue pair space to minimize time-wait impacts
US7133405B2 (en) IP datagram over multiple queue pairs
US6941350B1 (en) Method and apparatus for reliably choosing a master network manager during initialization of a network computing system
US7165110B2 (en) System and method for simultaneously establishing multiple connections
US7979548B2 (en) Hardware enforcement of logical partitioning of a channel adapter&#39;s resources in a system area network
US6978300B1 (en) Method and apparatus to perform fabric management
US7113995B1 (en) Method and apparatus for reporting unauthorized attempts to access nodes in a network computing system
US20020073257A1 (en) Transferring foreign protocols across a system area network
US20050018669A1 (en) Infiniband subnet management queue pair emulation for multiple logical ports on a single physical port
US7092401B2 (en) Apparatus and method for managing work and completion queues using head and tail pointers with end-to-end context error cache for reliable datagram
US20030018828A1 (en) Infiniband mixed semantic ethernet I/O path
JP2004531175A (ja) ローカル識別子を使ったエンド・ノード区分
US6990528B1 (en) System area network of end-to-end context via reliable datagram domains
US20020198927A1 (en) Apparatus and method for routing internet protocol frames over a system area network
US20030058875A1 (en) Infiniband work and completion queue management via head only circular buffers

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: 20101109

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee