KR20070072682A - 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드 - Google Patents

개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드 Download PDF

Info

Publication number
KR20070072682A
KR20070072682A KR1020060000104A KR20060000104A KR20070072682A KR 20070072682 A KR20070072682 A KR 20070072682A KR 1020060000104 A KR1020060000104 A KR 1020060000104A KR 20060000104 A KR20060000104 A KR 20060000104A KR 20070072682 A KR20070072682 A KR 20070072682A
Authority
KR
South Korea
Prior art keywords
iscsi
data
rdma
offload
scsi
Prior art date
Application number
KR1020060000104A
Other languages
English (en)
Other versions
KR100834431B1 (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 인터내셔널 비지네스 머신즈 코포레이션
Priority to KR1020060000104A priority Critical patent/KR100834431B1/ko
Publication of KR20070072682A publication Critical patent/KR20070072682A/ko
Application granted granted Critical
Publication of KR100834431B1 publication Critical patent/KR100834431B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bus Control (AREA)

Abstract

RDMA(Remote Direct Memory Access) 기능을 위해 사용되는 RNIC(Remote-direct-memory-access-enabled Network Interface Controller) 메커니즘으로 iSCSI(Internet Small Computer System Interface) 오프로드 개시자 기능(offload initiator function)을 구현하는 단계를 포함하는 방법 및 시스템이 제공된다.
통신 프로토콜, RDMA, RNIC, iSCSI,

Description

개시자에 의한 iSCSI 데이터 이동 기능의 RNIC 기반 오프로드{RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY INITIATOR}
도 1은 SCSI 기록 및 SCSI 판독 트랜잭션의 단순화된 플로우차트.
도 2는 시퀀싱 규칙 및 SCSI 명령을 보여주는 iSCSI 프로토콜의 단순화된 플로우차트.
도 3은 본 발명의 일 실시예에 따른 분산 컴퓨터 시스템을 나타낸 단순화된 블록도.
도 4는 본 발명의 일 실시예에 따른, iSCSI 오프로드 기능을 구현하는 RDMA 메커니즘을 나타낸 단순화된 블록도.
도 5는 RDMA, 판독 및 기록의 원격 메모리 액세스 동작의 단순화된 플로우차트.
도 6은 본 발명의 일 실시예에 따른, 로컬적으로도 원격적으로도 시스템 메모리에 액세스하는 것을 가능하게 해줄 수 있는 RDMA에서의 메모리 등록의 단순화된 플로우차트.
도 7 및 도 8은 각각 본 발명의 일 실시예에 따른, RNIC를 지원하는 RDMA에 의한 iSCSI 데이터 이동 동작의 오프로드를 나타낸 단순화된 블록도 및 플로우차트.
도 9는 본 발명의 일 실시예에 따른, RDMA-기반 iSCSI 오프로드를 사용하여 구현된 소프트웨어 구조를 나타낸 단순화된 블록도.
도 10은 본 발명의 일 실시예에 따른, 하드웨어/소프트웨어 상호작용없이 iSCSI 데이터 이동 PDU의 SCSI 버퍼로의 직접 데이터 배치의 단순화된 플로우차트.
도 11a 및 도 11b는 본 발명의 일 실시예에 따른, RNIC에 의한 데이터-인(Data-In) 및 요청된 데이터-아웃(Data-Out)을 처리하는 것 및 그 PDU에 의해 운반되는 iSCSI 페이로드의 등록된 SCSI 버퍼로의 직접 데이터 배치를 수행하는 것의 단순화된 플로우차트.
도 12는 본 발명의 일 실시예에 따른, 착신 R12T를 하드웨어를 처리하는 것 및 데이터-아웃(Data-Out) PDU를 생성하는 것의 단순화된 플로우차트.
<도면의 주요 부분에 대한 부호의 설명>
201: iSCSI 작업
202: SCSI 명령
301: 호스트 프로세서 노드
306: 컴퓨터 프로그램 제품
본 발명은 일반적으로 호스트 컴퓨터와 입/출력(I/O) 장치 간의 통신 프로토콜에 관한 것으로서, 보다 상세하게는 RDMA(Remote Direct Memory Access, 원격 직 접 메모리 액세스)에 의한 iSCSI(Internet Small Computer System Interface) 오프로드 구현(offload implementaion)에 관한 것이다.
RDMA는 고속 전송을 통한 데이터의 효율적인 이동을 위한 기술이다. RDMA는 한 컴퓨터가 메모리 보호 시맨틱스를 유지하면서도 메모리 버스 대역폭 및 CPU 프로세싱 오버헤드를 최소한으로 요구하면서 정보를 다른 컴퓨터의 메모리에 직접 배치할 수 있게 해준다. RNIC는 소비자에게 RDMA 서비스를 제공하는 네트워크 인터페이스 카드(Network Interface Card)이다. RNIC는 TCP(transport control protocol, 전송 제어 프로토콜)를 통해 RDMA에 대한 지원을 제공할 수 있다.
RNIC의 많은 중요한 특징 중 하나는 그것이 iSCSI 타겟(target) 또는 개시자(initiator) 어댑터로서 기능할 수 있다는 것이다. iSCSI는 용어 개시자 및 타겟을 다음과 같이 정의한다. 즉, "개시자"는 SCSI 명령 요청자(command requester)(예를 들어, 호스트)를 말하고, "타겟"은 SCSI 명령 응답자(command responder)(예를 들어, SCSI 드라이브 캐리어, 테이프 등의 I/O 장치)를 말한다. RNIC는 또한 iSER("iSCSI Extentions for RDMA(RDMA를 위한 iSCSI 확장)") 서비스를 제공한다. iSER는 iSCSI의 데이터 전송 모델의 확장으로서, iSCSI 프로토콜이 RDMA 프로토콜의 직접 데이터 배치 기술을 이용할 수 있게 해준다. iSER 데이터 전송 프로토콜은 RNIC를 갖는 iSCSI 구현이 iSCSI 기반 구조와의 호환성을 유지하면서도 TCP/IP 프로세싱 오버헤드를 제거함으로써 진정한 제로 복사(zero copy) 거동을 달성하는 데이터 전송을 가질 수 있게 해준다. iSER는 RDMA 와이어 프로토콜(wire protocol)을 사용하며, 원격측(타겟 또는 개시자)에 투명하지 않다. iSER는 또한 RDMA를 통한 iSCSI 구현을 약간 변경 또는 개조시킨다. 예를 들어, iSER는 데이터아웃(DataOut) 및 데이터인(DataIn) 등의 iSCSI PDU(Protocol Data Unit)를 제거하고 그 대신에 RDMA Read 및 RDMA Write 메시지를 사용한다. 기본적으로, iSER는 상위 계층에 iSCSI와 유사한 기능을 제공하지만, 데이터 이동의 프로토콜 및 와이어 프로토콜이 서로 다르다.
iSCSI 프로토콜은 SCSI 계층에 의해 제공되는 SCSI 명령을 실행하기 위해 iSCSI PDU를 교환한다. iSCSI 프로토콜은 로컬적으로 부착된 SCSI 저장 장치로부터 원격적으로 부착된 SCSI 저장 장치로의 매끄러운 전이를 가능하게 해준다. iSCSI 서비스는 iSCSI 기능의 부분적인 오프로드를 제공할 수 있고, 오프로드의 레벨은 구현 의존적일 수 있다. 요약하면, iSCSI는 정규의 TCP 연결을 사용하는 반면, iSER는 RDMA를 통해 iSCSI를 구현한다. iSER은 RDMA 연결을 사용하고 더 나은 복구 능력을 달성하고 지연시간 및 성능을 향상시키기 위해 다른 RDMA 기능을 이용한다. RNIC가 iSCSI 및 iSER 서비스 둘다를 지원하기 때문에, RNIC는 서로 다른 레벨의 iSCSI 구현을 지원하는 장치와의 SCSI 통신을 가능하게 해준다. 프로토콜 선택(iSCSI 대 iSER)은 iSCSI 로그인 단계에서 행해진다.
RDMA는 작업 요청(work request, WR)을 작업 큐(work queue) 상에 배치하기 위해 "verb"라고 하는 오퍼레이팅 시스템 프로그래밍 인터페이스를 사용한다. 작업 요청을 갖는 iSER을 구현하는 예는 IBM사에 양도된 Boyd 등의 미국 특허 출원 제20040049600호에 기술되어 있다. 이 출원에서, iSCSI 명령을 포함하는 작업 요청은 호스트로부터 네트워크 오프로드 엔진에 수신될 수 있고, 작업 요청을 수신한 것에 응답하여, 호스트와 연관된 메모리 영역은 변환 테이블(translation table)에 등록될 수 있다. RDMA에서와 같이, 작업 요청은 송신 큐(send queue)를 통해 수신될 수 있으며, 메모리 영역을 등록한 것에 응답하여, 완료 큐 요소(completion queue element)가 완료 큐 상에 배치될 수 있다.
본 발명의 목적은 본 명세서의 이하에서 보다 상세히 기술되는 바와 같이, RNIC에 의한 효율적인 iSCSI 오프로드 구현을 제공하고 또 RDMA를 위해 개발된 RNIC 메커니즘을 사용하여 이 오프로드 레벨을 달성하는 데 있다.
본 발명에 따르면, iSCSI 오프로드 기능은 RDMA 기능을 위해 사용되는 용이하게 이용가능한 RNIC 메커니즘으로 구현될 수 있다. 이것은 RDMA 기록 동작의 경우에서와 같이, 임의의 SCSI 버퍼 오프셋에 맞춰 임의의 순서로 사전 등록된 SCSI 버퍼에 데이터-인 및 데이터-아웃 페이로드를 원격 직접 데이터 배치(remote direct data placement)를 행하는 단계를 포함하지만, 이에 한정되는 것은 아니다. 착신 R2T("ready to transfer") PDU가 처리될 수 있고, 데이터-아웃 PDU는 RDMA 판독 요청의 경우에서와 동일한 메커니즘을 사용하여 생성될 수 있다. 제어 iSCSI PDU는 예를 들어 수신 큐 및 공유된 수신 큐를 사용하여 배치될 수 있다.
본 발명의 한 측면에 따르면, RDMA(Remote Direct Memory Access) 기능을 위해 사용되는 RNIC(Remote-direct-memory-access-enabled Network Interface Controller) 메커니즘으로 iSCSI(Internet Small Computer System Interface) 오프로드 개시자 기능(offload initiator function)을 구현하는 단계를 포함하는 방법 이 개시되어 있다.
본 발명의 제2 측면에 따르면, RDMA(Remote Direct Memory Access) 기능을 위해 사용되는 RNIC(Remote-direct-memory-access-enabled Network Interface Controller) 메커니즘으로 iSCSI(Internet Small Computer System Interface) 오프로드 개시자 기능(offload initiator function)을 구현하는 명령어를 포함하는 컴퓨터 프로그램 제품이 개시되어 있다.
본 발명의 제3 측면에 따르면, RDMA 서비스 유닛(Service Unit), 착신(inbound) 및 발신(outgoing) RDMA 메시지를 처리하고 또 상기 RDMA 서비스 유닛에 의해 제공되는 서비스를 사용하여 직접 배치 및 전달 동작을 수행하는 동작을 하는 RDMA 메시징 유닛(Messaging Unit), 및 iSCSI 오프로드 개시자 기능을 수행하고 또 착신 및 발신 iSCSI PDU를 처리하는 동작을 하는 iSCSI 메시징 유닛을 포함하며, 상기 iSCSI 메시징 유닛은 상기 RDMA 서비스 유닛에 의해 제공된 서비스를 사용하여 상기 PDU에 의해 운반되는 iSCSI 페이로드의 등록된 SCSI 버퍼로의 직접 배치 및 전달을 수행하도록 구성되어 있는 것인 시스템이 개시되어 있다.
본 발명은 첨부 도면과 관련하여 기술된 이하의 상세한 설명으로부터 보다 충분히 이해될 것이다.
본 발명을 보다 잘 이해하기 위해, 이제부터 iSCSI 데이터 이동 및 오프로드 기능에 대한 일반적인 설명이 (도 1 및 도 2를 참조하여) 제공된다. 그 후에, RDMA verb 및 메커니즘으로 분산 컴퓨터 시스템에서 iSCSI 데이터 이동 및 오프로 드 기능을 구현하는 것에 대해 (도 4 및 그 이후의 도면을 참조하여) 설명된다.
iSCSI 프로토콜은 SCSI 계층에 의해 제공되는 SCSI 명령을 실행하기 위해 iSCSI 프로토콜 데이터 단위(PDU)를 교환한다. iSCSI 프로토콜은 로컬적으로 부착된 SCSI 저장 장치로부터 원격적으로 부착된 SCSI 저장 장치로의 매끄러운 전이를 가능하게 해준다.
2가지 주요 그룹의 iSCSI PDU, 즉 iSCSI 제어 및 iSCSI 데이터 이동 PDU가 있다. iSCSI 제어는 그 중에서도 특히 SCSI 명령, SCSI 응답, 작업 관리 요청 등의 많은 유형의 제어 PDU를 정의한다. 데이터 이동 PDU는 R2T(ready to transfer), SCSI 데이터-아웃(요청된 및 요청되지 않은) 및 SCSI 데이터-인 PDU(이에 한정되는 것은 아님)를 포함하는 더 작은 그룹이다.
전술한 바와 같이, "개시자" 는 SCSI 명령 요청자(예를 들어, 호스트)를 말하고, "타겟"은 SCSI 명령 응답자(예를 들어, SCSI 드라이버 캐리어, 테이프 등의 I/O 장치)를 말한다. 모든 iSCSI 제어 및 데이터 이동 명령은 개시자에 의해 생성되고 타겟에 의해 처리되는 것과 타겟에 의해 생성되고 개시자에 의해 처리되는 것으로 분할될 수 있다.
이제 도 1을 참조하면, SCSI 기록 및 SCSI 판독 트랜잭션의 흐름이 각각 예시되어 있다.
SCSI 기록 흐름에서, 개시자는 SCSI 기록 명령[참조 번호(101)로 나타냄]을 타겟으로 전송한다. 이 명령은 다른 필드 중에서도 디스크(또는 타겟의 다른 부분)에 배치되어야만 하는 SCSI 버퍼를 식별하는 개시자 작업 태그(initiator task tag, ITT)를 전달한다. SCSI 기록 명령은 또한 직접 데이터(immediate data)를 전달할 수 있으며, 그의 최대 크기는 iSCSI 로직 단계에서 협상될 수 있다. 게다가, SCSI 기록 명령은 소위 요청되지 않은(unsolicited) 데이터-아웃 PDU가 뒤따라올 수 있다. 요청되지 않은 데이터-아웃 PDU는 TTT(target transfer tag, 타겟 전송 태그)에 의해 식별되며, 이 경우 TTT는 0xFFFFFFFF이어야만 한다. 요청되지 않은 데이터의 크기는 또한 iSCSI 로그인 단계에서 협상된다. 이들 2개의 데이터 전송 모드는 짧은 SCSI 기록 동작에 대한 지연시간을 감소시킬 수 있지만, 이것은 또한 큰 트랜잭션에서 초기 데이터량을 전송하는 데 사용될 수도 있다. 요청되지 않은(unsolicited) 또는 직접(immediate) 모드에서 전송될 수 있는 최대 데이터 크기는 타겟의 버퍼링 능력에 달려 있다.
타겟이 SCSI 기록 명령을 수신한 후에, 타겟은 하나 이상의 R2T[참조 번호(102)로 나타냄]로 응답한다. 각각의 R2T는 타겟이 SCSI 버퍼에서의 지정된 오프셋으로부터 지정된 양의 데이터를 수신할 준비가 되어있음을 나타낸다(꼭 순서대로일 필요는 없음). R2T는 2개의 태그, 즉 SCSI 명령으로부터의 ITT 및 데이터가 배치될 타겟 버퍼를 가리키는 TTT를 전달한다.
각각의 수신된 R2T에 있어서, 개시자는 하나 이상의 데이터-아웃 PDU를 전송할 수 있다[참조 번호(103)로 나타냄]. 데이터-아웃 PDU는 SCSI 버퍼로부터의 데이터를 전달한다[ITT로 나타냄]. 각각의 수신된 데이터-아웃은 데이터를 배치할 곳을 나타내는 TTT를 전달한다. 마지막 수신된 데이터-아웃은 또한 F-비트를 전달한다[참조 번호(104)로 나타냄]. 이 비트는 마지막 데이터-아웃이 수신되었음을 나타내며, 이것은 타겟에 R2T 교환이 완료되었음을 알려준다.
타겟이 모든 R2T가 완료되었음을 통지받았을 때, 타겟은 SCSI 응답 PDU를 전송한다[참조 번호(105)로 나타냄]. SCSI 응답은 ITT를 전달하고 SCSI 기록 동작이 성공적으로 완료되었음을 나타낸다.
SCSI 판독 흐름에서, 개시자는 SCSI 판독 명령을 타겟으로 전송한다[참조 번호(106)로 나타냄]. 이 명령은 다른 필드 중에서도 특히, 데이터를 읽어들일 SCSI 버퍼를 식별해주는 ITT를 전달한다.
타겟은 하나 이상의 데이터-인 PDU에 응답할 수 있다[참조 번호(107)로 나타냄]. 각각의 데이터-인은 SCSI 버퍼에 배치될 데이터를 전달한다. 데이터-인은 임의의 순서로 들어올 수 있으며, 임의의 크기를 가질 수 있다. 각각의 데이터-인은 데이터가 배치될 SCSI 버퍼 및 버퍼 오프셋을 식별해주는 ITT를 전달한다.
데이터-인 PDU의 스트림에 뒤이어 SCSI 응답이 온다[참조 번호(108)로 나타냄]. SCSI 응답은 SCSI 판독 동작이 성공적으로 완료되었는지를 나타내는 ITT를 전달한다.
유의할 점은 본 발명의 일 실시예에 따르면, 종래 기술과는 달리 RNIC가 데이터-아웃 및 데이터-인 및 R2T의 흐름을 처리한다는 것이다.
이제 도 2를 참조하면, iSCSI 프로토콜의 예가 도시되어 있다. iSCSI 프로토콜은 잘 정의된 시퀀싱 규칙을 갖는다. iSCSI 작업[참조 번호(210)로 나타냄]은 하나 이상의 SCSI 명령(202)을 포함한다. 임의의 주어진 시각에, iSCSI 작업(201)은 단일의 미처리된 명령(202)을 가질 수 있다. 각각의 작업(201)은 ITT(203)에 의해 식별된다. 단일의 iSCSI 연결은 다수의 미처리된 iSCSI 작업을 가질 수 있다. iSCSI 작업(201)의 PDU(204)는 연결 스트림 내에 인터리빙되어 있을 수 있다. 각각의 iSCSI PDU(204)는 몇개의 순서 번호를 전달할 수 있다. 데이터 이동 PDU와 관련된 순서 번호는 R2TSN(R2T 순서 번호), DataSN 및 ExpDataSN, 그리고 StatSN 및 ExpStatSN(이에 한정되는 것은 아님)을 포함한다.
DataSN은 데이터(데이터-아웃 및 데이터-인)를 전달하는 각각의 iSCSI PDU(204)에 의해 전달된다. 데이터-인의 경우, DataSN은 각각의 SCSI 판독 명령에 대해 0부터 시작할 수 있고, 타겟에 의해 각각의 전송된 데이터-인으로 증분될 수 있다. 데이터-인에 뒤따라오는 SCSI 응답 PDU는 각각의 개별적인 SCSI 명령에 대해 전송된 데이터-인의 개수를 나타내는 ExpDataSN을 전달한다. 양방향 SCSI 명령의 경우, DataSN은 데이터-인 및 R2T에 의해 공유되고, 여기서 R2T는 DataSN 대신에 R2TSN을 전달하지만, 이들은 iSCSI 헤더(BHS-Buffer Segment Handle Stack)(버퍼 세그먼트 핸들 스택) 내의 동일한 위치를 갖는 동일한 필드에 대한 서로 다른 이름이다.
데이터-아웃의 경우, DataSN은 각각의 R2T에 대해 0부터 시작할 수 있으며, 전송된 각각의 데이터-아웃으로 개시자에 의해 증분될 수 있다. R2TSN은 R2T에 의해 전달될 수 있다. R2TSN은 각각의 SCSI 기록 명령에 대해 0부터 시작할 수 있고, 전송된 각각의 R2T로 타겟에 의해 증분될 수 있다.
DataSN 및 R2TSN 둘다는 수신된 데이터 이동 PDU의 순서를 따르기 위해 사용될 수 있다. 유의할 점은 iSCSI가 수신된 데이터의 비순차적인 배치 및 R2T의 비 순차적인 실행을 허용한다는 것이다. 그렇지만, iSCSI는 개시자 및 타겟에 대해 이미 배치된 데이터의 배치 또는 이미 실행된 R2T의 실행을 방지하기 위한 구현을 요청한다.
StatSN 및 ExpStatSN은 타겟 응답 버퍼의 관리에서 사용될 수 있다. 타겟은 각각의 생성된 응답으로 StatSN을 증분시킬 수 있다. 응답 및 잠재적으로 그 명령에서 사용된 데이터는 개시자가 ExpStatSN을 사용하여 응답의 수신을 확인해줄 때까지 내부 타겟에 보유될 수 있다. ExpStatSN은 개시자로부터 타겟으로의 방향으로 흐르는 모든 iSCSI PDU에 의해 전달될 수 있다. 개시자는 타겟의 효율적인 구현이 가능하도록 ExpStatSN를 단조 증가하게 할 수 있다.
전술한 바와 같이, 본 발명의 비제한적 실시예에 따르면, iSCSI 오프로드 기능은 RDMA 기능을 위해 사용되는 RNIC 메커니즘으로 구현될 수 있다. 먼저, 분산 컴퓨터 시스템에서 사용하기 위한 RDMA에서의 작업 큐의 개념에 대한 일반적인 설명에 대해 이제부터 기술한다.
이제 도 3을 참조하면, 본 발명의 일 실시예에 따른 분산 컴퓨터 시스템(300)이 도시되어 있다. 분산 컴퓨터 시스템(300)은 제한이 아닌 예로서 인터넷 프로토콜 네트워크(IP net) 및 여러가지 다른 유형 및 구성의 많은 다른 컴퓨터 시스템을 포함할 수 있다. 예를 들어, 본 발명을 구현하는 컴퓨터 시스템은 하나의 프로세서 및 몇개의 입/출력(I/O) 장치를 갖는 소형 서버에서부터 다수의 프로세서 및 I/O 어댑터를 갖는 대규모 병렬 수퍼컴퓨터 시스템에 이를 수 있다. 게다가, 본 발명은 인터넷 또는 인트라넷에 의해 연결된 원격 컴퓨터 시스템들의 기반구조 에서 구현될 수 있다.
분산 컴퓨터 시스템(300)은 독립적인 프로세서 노드, 저장 노드, 및 특수 목적의 프로세싱 노드(이에 한정되는 것은 아님) 등의 임의의 개수 및 임의의 유형의 호스트 프로세서 노드(301)를 연결시킬 수 있다. 노드들 중 어느 것이라도 종단 노드(endnode)로서 기능할 수 있으며, 이 종단 노드는 본 명세서에서 분산 컴퓨터 시스템(300)에서 메시지 또는 프레임을 발신하거나 최종적으로 소비하는 장치인 것으로 정의된다. 각각의 호스트 프로세서 노드(301)는 그 호스트 프로세서 노드(301) 상에서 실행되는 프로세스인 소비자(consumer)(302)를 포함할 수 있다. 호스트 프로세서 노드(301)는 또한 하드웨어로 또는 하드웨어와 오프로드 마이크로프로세서(들)의 조합으로 구현될 수 있는 하나 이상의 IPSOE(IP Suite Offload Engine)를 포함할 수 있다. 오프로드 엔진(303)은 IPSOE 포트(305)로 메시지를 전달하는 데 사용되는 다수의 큐 쌍(304)을 지원할 수 있다. 각각의 큐 쌍(304)은 송신 작업 큐(send work queue, SWQ) 및 수신 작업 큐(receive work queue, RWQ)를 포함할 수 있다. 송신 작업 큐는 채널 및 메모리 시맨틱 메시지(channel and memory semantic message)를 전송하는 데 사용될 수 있다. 수신 작업 큐는 채널 시맨틱 메시지(channel semantic message)를 수신할 수 있다. 소비자는 작업 요청(WR)을 작업 큐에 배치하도록 구현하는 데 필요한 시맨틱스를 정의하는 "verb"를 사용할 수 있다. verb는 또한 완료 큐로부터 완료된 작업을 검색하는 메커니즘을 제공한다.
예를 들어, 소비자는 작업 큐 상에 작업 큐 요소(work queue element, WQE) 로서 배치되는 작업 요청을 생성할 수 있다. 따라서, 송신 작업 큐는 분산 컴퓨터 시스템(300)의 패브릭(fabric)을 통해 전송될 데이터에 대해 기술하는 WQE를 포함할 수 있다. 수신 작업 큐는 분산 컴퓨터 시스템(300)의 패브릭으로부터의 착신 채널 시맨틱 데이터를 어디에 배치할지에 대해 기술하는 WQE를 포함할 수 있다. 작업 큐 요소는 오프로드 엔진(303) 내의 소프트웨어 또는 하드웨어로 처리될 수 있다.
완료 큐는 이전에 완료된 작업 큐 요소에 관한 정보를 포함하는 완료 큐 요소(completion queue element, CQE)를 포함할 수 있다. 완료 큐는 다수의 큐 쌍에 대한 완료 통지의 시점 또는 시점들을 생성하는 데 사용될 수 있다. 완료 큐 요소는 완료된 특정의 작업 큐 요소 및 큐 쌍을 결정하는 데 충분한 정보를 포함하는 완료 큐에 관한 데이터 구조이다. 완료 큐 컨텍스트(completion queue context)는 길이 및 개별적인 완료 큐를 관리하는 데 필요한 다른 정보에 대한 포인터를 포함하는 정보의 블록이다.
RDMA 판독 작업 요청은 원격 노드 상의 거의 연속적인 메모리 공간을 판독하기 위한 메모리 시맨틱 동작을 제공한다. 메모리 공간은 메모리 영역의 일부분 또는 메모리 윈도우(memory window)의 일부분일 수 있다. 메모리 영역은 가상 주소 및 길이에 의해 정의된 이전에 등록된 일련의 거의 연속적인 메모리 주소를 말한다. 메모리 윈도우는 이전에 등록된 영역에 바인딩되어 있는 일련의 거의 연속적인 메모리 주소를 말한다. 이와 유사하게, RDMA 기록 작업 큐 요소는 원격 노드 상의 거의 연속적인 메모리 공간에 기록하기 위한 메모리 시맨틱 동작을 제공한다.
바인드(언바인드)[bind(unbind)] 원격 액세스 키(STag - Steering Tag) 작업 큐 요소는 오프로드 엔진 하드웨어에 메모리 윈도우를 메모리 영역과 연관(associate)(또는 분리(disassociate))시킴으로써 메모리 윈도우를 수정(또는 파괴)하기 위한 명령을 제공한다. STag는 각각의 RDMA 액세스의 일부이고 원격 프로세스가 버퍼에의 액세스를 허용하였음을 검증하는 데 사용된다.
유의할 점은 이하에서 도시되고 기술되는 방법 및 시스템이 본 명세서에 기술된 방법 및 시스템을 실시하기 위한 명령어를 포함할 수 있는 네트워크 인터페이스 카드, 하드 디스크, 광학 디스크, 메모리 장치, 및 기타 등등(이에 한정되는 것은 아님)의 컴퓨터 프로그램 제품(306)에 의해 실시될 수 있다는 것이다.
iSCSI 오프로드 기능을 구현하기 위한 어떤 관련된 RDMA 메커니즘에 대해 이제부터 도 4를 참조하여 설명한다.
RDMA에서, 호스트 A는 호스트 B의 관여가 전혀 없이 호스트 B의 메모리에 액세스할 수 있다. 호스트 A는 어디서 언제 호스트 B의 메모리에 액세스할지를 결정하고, 호스트 B는 호스트 A가 명시적인 통지를 제공하지 않는 한 이러한 액세스가 일어나는 것을 알지 못한다.
호스트 A가 호스트 B의 메모리에 액세스할 수 있기 전에, 호스트 B는 액세스될 메모리 영역을 등록해야만 한다. 각각의 등록된 메모리 영역은 STag를 받는다. STag는 보호 블록(Protection Block, PB)이라고 하는 보호 테이블(Protection Table) 내의 엔트리와 연관되어 있다. PB는 그의 경계, 액세스 권한, 기타 등등을 비롯하여 등록된 메모리 영역에 대해 상세히 기술한다. RDMA는 물리적으로 비연속 적인 메모리 영역을 허용한다. 이러한 영역은 페이지-리스트(또는 블록-리스트)로 표현된다. PB는 또한 메모리 영역 페이지-리스트(또는 블록-리스트)를 가리킨다.
RDMA는 등록된 메모리 영역에만 원격 액세스할 수 있다. 메모리 영역 STag는 메모리에 액세스할 때 그 메모리를 언급하기 위해 원격측에 의해 사용된다. 저장 응용에 있어서, RDMA는 제로-기반 액세스(zero-based access)로 메모리 영역에 액세스한다. 제로-기반 액세스에서, 태그형 직접 데이터 배치 프로토콜(Tagged Direct Data Placement Protocol, DDP) 세그먼트에 의해 전달되는 타겟 오프셋(target offset, TO)은 등록된 메모리 영역에서의 오프셋을 정의한다.
이제 도 5를 참조하여, RDMA의 원격 메모리 액세스 동작, 즉 판독 및 기록에 대해 설명한다. 원격 기록 동작은 원격 메모리에 배치되어야 하는 데이터를 전달하는 RDMA 기록 메시지 - 태그형(Tagged) DDP 메시지 - 를 사용하여 구현될 수 있다[참조 번호(501)로 나타냄].
원격 판독 동작은 2개의 RDMA 메시지 - RDMA 판독 요청 메시지 및 RDMA 판독 응답 메시지 - 를 사용하여 구현될 수 있다[참조 번호(502)로 나타냄]. RDMA 판독은 데이터를 페치해와야 할 장소 및 데이터를 배치하기 위한 장소 둘다를 지정하는 비태그형(Untagged) DDP 메시지이다. RDMA 판독 응답은 RDMA 판독 요청에 의해 요청된 데이터를 전달하는 태그형 DDP 메시지이다.
착신 태그형 DDP 세그먼트를 처리하는 프로세스(이는 RDMA 기록 및 RDMA 판독 응답 둘다에 사용됨)는 STag에 의해 언급되는 PB를 읽는 단계(503), 액세스 검증(504), 영역 페이지-리스트(변환 테이블)를 읽는 단계(505) 및 메모리에의 직접 기록 동작(506)을 포함할 수 있지만, 이에 한정되는 것은 아니다. 착신 RDMA 판독 요청은 RNIC에 의해 큐잉될 수 있다(507). 이 큐는 판독 응답 작업 큐(ReadResponse WorkQueue)라고 한다.
RNIC는 모든 선행하는 RDMA 요청이 완료된 후에 RDMA 판독 요청을 순서대로 처리할 수 있으며(508), 요청자로 다시 전송되는 RDMA 판독 응답 메시지를 생성할 수 있다(509).
RDMA 판독 요청을 처리하는 프로세스는 선택적인 RDMA 판독 요청의 판독 응답 작업 큐에 큐잉(queue) 및 디큐잉(dequeue)하는 단계(510), 데이터 소스 STag(이 STag는 데이터를 읽어와야 하는 메모리 영역을 언급함)에 의해 언급되는 PB를 읽는 단계(511), 액세스 검증(512), 영역 페이지-리스트(변환 테이블)를 읽는 단계(513), 및 메모리로부터의 직접 판독 동작 및 RDMA 판독 응답 세그먼트를 생성하는 단계(514)를 포함할 수 있지만, 이에 한정되는 것은 아니다.
RDMA는 시스템 메모리에 로컬적으로도 원격적으로도 액세스하는 것을 가능하게 해주는 ATP(Address Translation and Protection, 주소 변환 및 보호) 메커니즘을 정의한다. 이 메커니즘은, 도 6을 참조하여 이제부터 설명하는 바와 같이, 액세스해야 하는 메모리의 등록에 기초한다.
메모리 등록은 원격 메모리 액세스를 위해 요구되는 필수적인 동작이다. 2가지 방법, 즉 메모리 윈도우(Memory Window) 및 고속 메모리 등록(Fast Memory Registration)이 RDMA에서 사용될 수 있다.
메모리 윈도우 방법[참조 번호(600)]은 원격적으로 액세스될 메모리가 정적 (static)일 때 사용될 수 있고, 액세스될 메모리가 어느 것인가는 미리 알게 된다(601). 그 경우, 메모리 영역은 소위 고전적 메모리 등록 방식을 사용하여 등록되고, PB 및 TT(Translation Table, 변환 테이블)의 할당 및 갱신은 하드웨어의 도움을 받거나 받지 않고 드라이버에 의해 수행된다(602). 이것은 PB 및 TT 둘다가 각자의 정보로 갱신될 때에만 완료될 수 있는 동기적 동작이다. 메모리 윈도우는 등록된 메모리 영역의 전부(또는 일부)에의 원격 메모리 액세스를 허용(또는 금지)하는 데 사용된다(603). 이 프로세스는 윈도우 바인딩(Window Binding)이라고 하며, 소비자 요청 시에 RNIC에 의해 수행된다. 이는 메모리 등록보다 훨씬 더 빠르다. 그렇지만, 메모리 윈도우가 원격 액세스를 허용하는 유일한 방법이 아니다. 영역 자체의 STag도 또한 이 목적을 위해 사용될 수 있다. 따라서, 등록된 메모리에 액세스하기 위해 3가지 메커니즘, 즉 정적으로 등록된 영역을 사용하는 것, 이들 영역에 바인딩된 윈도우를 사용하는 것, 및/또는 고속의 등록된 영역을 사용하는 것이 사용될 수 있다.
원격 액세스를 위한 메모리를 미리 알고 있지 못한 경우(604), 사전 등록된 영역의 사용은 효율적이지 않다. 그 대신에 RDMA는 고속 메모리 등록 및 무효 방법(605)을 정의한다.
이 방법은 메모리 등록 프로세스를 2 부분, 즉 영역에 의해 소비될 RNIC 자원의 할당(606)(예를 들어, 페이지-리스트를 보유하기 위해 사용되는 PB 및 TT의 일부분), 및 영역별 정보를 보유하기 위해 PB 및 TT의 갱신(607)으로 분할한다. 첫번째 동작(606)은 소프트웨어에 의해 수행될 수 있고, 각각의 Stag에 대해 한번 씩 수행될 수 있다. 두번째 동작(607)은 소프트웨어에 의해 포스트될 수 있고 하드웨어에 의해 수행될 수 있으며, (등록될 각각의 새로운 영역/버퍼에 대해) 여러번 수행될 수 있다. 고속 메모리 등록 이외에, RDMA는 STag를 무효화하고 나중에 계속하여 그를 재사용하는 것을 가능하게 해주는 무효화(Invalidate) 동작을 정의한다(608).
고속 메모리 등록 및 무효화 동작 둘다는 비동기적 동작으로서 정의된다. 이들은 작업 요청으로서 RNIC 송신 큐로 포스트되며, 이들의 완료는 연관된 완료 큐를 통해 보고된다.
RDMA는 2가지 유형의 수신 큐(Receive Queue, RQ), 즉 공유(Shared) 및 비공유(Not Shared) 수신 큐(RQ)를 정의한다. 공유 RQ는 다수의 연결 간에 공유될 수 있으며, 이러한 큐로 포스트되는 수신 WR은 서로 다른 연결을 통해 수신되는 송신 메시지에 의해 소비될 수 있다. 비공유 RQ는 항상 하나의 연결과 연관되어 있으며, 이러한 RQ로 포스트되는 WR은 이 연결을 통해 수신된 송신에 의해 소비된다.
이제 도 7 및 도 8을 참조하여, 본 발명의 일 실시예에 따라, RNIC를 지원하는 RDMA에 의한 iSCSI 데이터 이동 동작의 오프로드에 대해 설명한다.
먼저 도 7을 참조한다. 본 발명의 비제한적인 실시예에 따르면, 종래의 RDMA 오프로드 기능은 2 부분, 즉 RDMA 서비스 유닛(700)과 RDMA 메시징 유닛(701)으로 분할될 수 있다. RDMA 메시징 유닛(701)은 착신 및 발신 RDMA 메시지를 처리할 수 있으며, 또 RDMA 서비스 유닛(700)에 의해 제공된 서비스를 사용하여 직접 배치 및 전달 동작을 수행할 수 있다. iSCSI 오프로드를 가능하게 해주기 위해, iSCSI 오프로드 기능은 iSCSI 메시징 유닛(702)에 의해 대체되어 그것으로 수행될 수 있다. iSCSI 메시징 유닛(702)은 착신 및 발신 iSCSI PDU를 처리하는 일을 맡을 수 있고 또 RDMA 서비스 유닛(700)에 의해 제공된 서비스를 사용하여 직접 배치 및 전달을 수행할 수 있다.
RDMA 서비스 유닛(700)에 의해 제공된 서비스 및 인터페이스는 iSCSI 및 RDMA 오프로드 기능 둘다에 대해 동일하다.
이제 도 8을 참조한다. 모든 iSCSI PDU는 하드웨어로 생성되는 데이터-아웃(802)을 제외하고는 소프트웨어로 생성된다[참조 번호(801)]. 생성된 iSCSI PDU는 송신 작업 요청으로서 송신 큐로 포스트될 수 있다(803). RNIC는 연관된 완료 큐를 통해 이들 WR의 완료(성공적인 전송 동작)를 보고한다(804).
소프트웨어는 버퍼를 수신 큐(예를 들어 수신 작업 요청을 가짐)로 포스트하는 일을 맡고 있다(805). 유의할 점은 좋지 않은 경쟁 상황을 회피하기 위해 수신 버퍼가 일반적으로 송신 버퍼 이전에 포스트될 수 있다는 것이다. 송신 및 수신 버퍼를 포스트하는 특정의 순서는 본 발명에 중요하지 않으며 구현자의 몫일 수 있다. 버퍼는 착신 제어 및 요청되지 않은 데이터-아웃 PDU에 대해 사용될 수 있다(806). RNIC는 2개의 RQ - 하나는 착신 iSCSI 제어 PDU를 위한 것이고 다른 하나는 요청되지 않은 착신 데이터-아웃을 위한 것임 - 를 지원하기 위해 확장될 수 있다(807). 소프트웨어는 공유 RQ를 사용하여 메모리 관리 및 iSCSI 제어 PDU에 사용되는 버퍼의 활용도를 개선할 수 있다(808).
제어 수신 또는 요청되지 않은 데이터-아웃 PDU는 완료 큐를 사용하여 보고 될 수 있다(809). iSCSI PDU 데이터에서 검출된 데이터 오염 또는 다른 에러는 RQ 내의 WQE를 소비하는 iSCSI PDU에 대한 완료 큐를 통해 또는 데이터 이동 iSCSI PDU에 대한 비동기적 이벤트 큐를 통해 보고될 수 있다(810). 이어서, RNIC는 그 다음 PDU를 처리할 수 있다(811).
본 발명의 비제한적인 실시예에 따르면, RDMA-기반 메커니즘을 사용하는 iSCSI 시맨틱스의 구현은 iSCSI 및 iSER-기반 솔루션에 대한 단일화된 소프트웨어 아키텍처로 실시될 수 있다.
이제 도 9를 참조하여, RDMA-기반 iSCSI 오프로드를 사용하여 구현된 소프트웨어 구조에 대해 기술한다. SCSI 계층(900)은 iSCSI 애플리케이션 프로토콜을 통해 iSCSI 드라이버(901)와 통신한다. 데이터무버 인터페이스(902)는 iSCSI 드라이버(901), iSER 데이터무버(903) 및 iSCSI 데이터무버(904)와 인터페이스한다. 데이터무버 인터페이스(902)가 이들 구성 요소와 인터페이스하는 방식은 RDMA 컨소시엄에 의해 정의된 표준 데이터무버 인터페이스에 따를 수 있다. 이러한 소프트웨어 구조의 한가지 비제한적인 이점은 iSCSI와 iSER 소프트웨어 스택 간의 소프트웨어 컴포넌트 및 인터페이스의 고도의 공유이다. 데이터무버 인터페이스는 iSCSI 드라이버의 데이터 이동 및 iSCSI 관리 기능의 분할을 가능하게 해준다. 간단히 말하면, 데이터무버 인터페이스는 SCSI 계층(900)이 예를 들어 개시자에 대한 SCSI 명령을 완료하기 위해 명령의 전송을 요청할 때, 또는 예를 들어 타겟에 대한 SCSI 명령의 일부를 완료하기 위해 iSCSI 데이터 시퀀스의 전송/수신을 요청할 때 모든 필요한 데이터 전송이 일어나도록 보장해준다.
iSCSI 및 iSER 데이터무버(903, 904)의 기능은 RNIC(906)에 의해 구현되는 RDMA-기반 서비스(905)로 오프로드될 수 있다. 본 발명의 일 실시예에 따르면, RDMA 메커니즘을 사용하여 iSCSI 기능을 오프로드하는 것은 iSCSI 타겟 및 iSCSI 개시자 기능 둘다를 오프로드하는 것을 포함한다. 오프로드 기능(타겟 및/또는 개시자) 각각은 다른 기능 또는 종단(end-point)과 분리하여 또 그와 독립적으로 구현될 수 있다. 환언하면, 개시자는 오프로드된 데이터 이동 동작을 가질 수 있으며, 여전히 어떤 변경 또는 개조를 필요로 하지 않고 타겟의 임의의 다른 iSCSI 구현과 통신할 수 있다. 오프로드된 iSCSI 타겟 기능에 대해서도 마찬가지이다. iSCSI 데이터 이동 기능을 오프로드하는 데 사용되는 모든 RDMA 메커니즘은 로컬이고 원격측에 대해 투명하다.
이제 도 10을 참조하여, 본 발명의 일 실시예에 따른, 하드웨어/소프트웨어 상호작용없이 iSCSI 데이터 이동 PDU의 SCSI 버퍼로의 직접 데이터 배치(direct data placement)에 대해 설명한다. 먼저, RNIC는 (예를 들어, 소프트웨어에 의해) SCSI 버퍼에 대한 설명을 제공받는다[참조 번호(1001)]. 각각의 SCSI 버퍼는 각각 ITT 또는 TTT에 의해 일의적으로 식별될 수 있다(1002). SCSI 버퍼는 하나 이상의 페이지 또는 블록으로 이루어져 있을 수 있으며, 페이지-리스트 또는 블록-리스트로 표현될 수 있다.
직접 데이터 배치를 수행하기 위해, RNIC는 2단계 분해(resolution) 프로세스를 수행할 수 있다. 첫번째 단계(1003)는 ITT(또는 TTT)가 주어지면 SCSI 버퍼를 식별하는 단계를 포함하고, 두번째 단계(1004)는 이 페이지/블록에 대한 판독/ 기록을 하기 위해 리스트에서 페이지/블록을 찾아내는 단계를 포함한다. 첫번째 및 두번째 단계 둘다는 RDMA에 의해 정의된 주소 변환 및 보호 메커니즘을 이용할 수 있고 또 iSCSI ITT 및 TTT 시맨틱스를 구현하기 위해 STag 및 RDMA 메모리 등록 시맨틱스를 사용할 수 있다. 예를 들어, RDMA 보호 메커니즘은 SCSI 버퍼를 찾아내기 위해 또 그 버퍼를 요청되지 않은 액세스로부터 보호하기 위해 사용될 수 있고(1005), 주소 변환 메커니즘은 페이지-리스트 또는 블록-리스트 내의 페이지/블록에의 효율적인 액세스를 가능하게 해줄 수 있다(1006). iSCSI 데이터 이동 PDU에 대해 RDMA-유사 원격 메모리 액세스를 수행하기 위해, 개시자 또는 타겟 소프트웨어는 (예를 들어, 레지스터 메모리 영역 시맨틱스를 사용하여) SCSI 버퍼를 등록할 수 있다(1007). 메모리 등록의 결과 보호 블록이 SCSI 버퍼와 연관된다. 이와 같이, 보호 블록은 SCSI 버퍼에 대해 기술하는 페이지-리스트 또는 블록-리스트를 보유하는 변환 테이블 엔트리를 가리킨다. 등록된 메모리 영역은 SCSI 버퍼에 액세스하기 위해 iSCSI 데이터 이동 PDU에서 버퍼 오프셋을 사용하는 것을 가능하게 해주는 제로-기반 유형의 메모리 영역일 수 있다.
iSCSI 제어 PDU에서 사용되는 ITT 및 TTT는 등록된 SCSI 버퍼를 언급하는 STag의 값을 가져올 수 있다(1008). 예를 들어, 개시자에 의해 생성된 SCSI 판독 명령은 등록된 SCSI 버퍼의 STag와 같은 ITT를 전달할 수 있다. 대응하는 데이터-인 및 SCSI 응답 PDU도 역시 이 STag를 전달할 수 있다. 따라서, STag는 개시자에 의한 원격 직접 데이터 배치(remote direct data placement)를 수행하기 위해 사용될 수 있다. SCSI 기록 명령의 경우, 타겟은 요청된 착신 데이터-아웃 PDU에 대해 할당된 그의 SCSI 버퍼를 등록할 수 있으며, R2T PDU에서 SCSI 버퍼의 STag와 같은 TTT를 사용할 수 있다(1009).
본 발명의 이 비제한적인 방법은 iSCSI 규격에 정의된 그 동작들의 유연성을 보존하면서 iSCSI 데이터 이동 동작의 효율적인 오프로드를 수행하기 위해 기존의 하드웨어 및 소프트웨어 메커니즘을 이용하는 것을 가능하게 해준다.
이제 도 11a 및 도 11b를 참조하여, 본 발명의 일 실시예에 따라, 도 10을 참조하여 기술된 RDMA 보호 및 주소 변환 방법을 사용하여 RNIC에 의해 데이터-인 및 요청된 데이터-아웃을 처리하는 것, 및 그 PDU에 의해 전달되는 iSCSI 페이로드의 등록된 SCSI 버퍼로의 직접 데이터 배치를 수행하는 것에 대해 설명한다. 게다가, RNIC는 데이터-인 및 데이터-아웃의 데이터 시퀀싱을 추적할 수 있고 또 iSCSI 규격에 의해 정의된 iSCSI 시퀀싱 규칙을 시행할 수 있으며 또 데이터 트랜잭션의 끝에서 PB의 무효화를 수행할 수 있다.
착신 데이터-인 및 요청된 데이터-아웃은 RNIC에 의해(각각 개시자 및 타겟에 의해) 아주 유사하게 처리될 수 있다. 이들 PDU 유형 둘다에 공통인 프로세싱에 대해 이제부터 설명한다.
RNIC는 먼저 iSCSI 데이터-인 및 요청된 데이터-아웃 PDU를 검출한다(1101). 이것은 BHS:Opcode 및 BHS:TTT 필드에 의해 달성될 수 있지만, 이에 한정되는 것은 아니다(TTT=h'FFFFFFFF'는 데이터-아웃 PDU가 요청되지 않은 것임을 나타내고, 이러한 PDU는 전술한 바와 같이 제어 iSCSI PDU로서 처리됨). RNIC는 데이터-인 PDU에 대한 BHS:TTT 필드 및 데이터-아웃 PDU에 대한 BHS:TTT를 STag(이는 드라이버가 SCSI 명령 또는 R2T를 개별적으로 생성할 때, 이전에 드라이버에 의해 사용되었음)로서 사용할 수 있다.
RNIC는 예를 들어 개별적인 등록된 SCSI 버퍼에 대해 기술하고 또 액세스 허용(access permission)을 검증하는 STag의 인덱스 필드를 사용하여 PB를 찾아낼 수 있다(1102). RNIC는 예를 들어 BHS:BufferOffset을 사용하여, 등록된 SCSI 레지스터 내에서 데이터가 액세스되는 위치를 알고 있을 수 있다(1103). 이어서, RNIC는 주소 변환 메커니즘을 사용하여 페이지/블록을 분해하고 등록된 SCSI 버퍼로의 직접 데이터 배치(또는 직접 데이터 판독)를 수행할 수 있다(1104).
소비자 소프트웨어(드라이버)는 RNIC에 의해 수행되는 직접 배치 동작을 알지 못한다. 'F-비트'가 세트된 요청된 데이터-아웃 PDU의 경우를 제외하고는 완료 통지가 없다.
직접 배치 동작 이외에(예를 들어, 그 이전에), RNIC는 착신 PDU의 시퀀스 검증을 수행할 수 있다(1105). 데이터-인 및 데이터-아웃 PDU 둘다는 DataSN을 전달한다. DataSN은 데이터-인의 경우에 각각의 SCSI 명령에 대해 또 데이터-아웃의 경우에 각각의 R2T에 대해 영으로 될 수 있다(1106). RNIC는 ExpDataSN을 보호 블록에 보관할 수 있다(1107). 이 필드는 PB 초기화 시에 영으로 초기화될 수 있다(고속 메모리 등록)(1108). 각각의 착신 데이터-인 또는 요청된 데이터-아웃 PDU에 있어서, 이 필드는 BHS:DataSN과 비교될 수 있다(1109).
a. DataSN = ExpDataSN인 경우, PDU는 수락되고 RNIC에 의해 처리되며, ExpDataSN이 증가된다(1110).
b. DataSN > ExpDataSN인 경우, 비동기적 이벤트 통지 메커니즘을 사용하는 등에 의해 소프트웨어에 에러가 보고된다(1111)(관련된 비동기적 에러 - 시퀀싱 에러). 이어서, PB 내의 ErrorBit가 세트될 수 있고, (STag를 사용하여) 이 PB를 언급하는 각각의 착신 PDU는 이 시점부터 시작하여 폐기되어진다. 이것은 iSCSI 드라이버가 iSCSI 명령 레벨에서(또는 각각 R2T 레벨에서) 복구할 필요가 있음을 의미한다.
c. 마지막 경우는 고스트(ghost) PDU의 수신이다(DataSN < ExpDataSN). 그 경우에, 수신된 PDU가 폐기되고, 어떤 에러도 소프트웨어에 보고되지 않는다(1112). 이것은 iSCSI 규격에 의해 정의된 바와 같이 복제된 iSCSI PDU를 처리하는 것을 가능하게 해준다.
SCSI 판독 명령의 경우에, 개시자는 하나 이상의 데이터-인 PDU 및 그에 뒤따르는 SCSI 응답을 수신한다(1113). SCSI 응답은 BHS:ExpDataSN을 전달할 수 있다. 이 필드는 SCSI 응답 이전의 데이터-인의 개수를 가리킨다. iSCSI 시퀀싱 규칙의 시행을 완료하기 위해, RNIC는 BHS:ExpDataSN을, 그 SCSI 응답에 의해 전달되는 STag(ITT)에 의해 언급되는 PB:ExpDataSN과 비교할 수 있다. 불일치의 경우에, 완료 에러가 보고되어, 시퀀싱 에러가 검출되었음을 나타낸다(1114).
'F-비트'가 세트되어 있는 요청된 데이터-아웃 PDU는 이 PDU가 대응하는 R2T에 의해 요청된 트랜잭션을 완료한다는 것을 나타낸다(1115). 그 경우, 완료 통지는 소비자 소프트웨어로 전달된다(1116). 예를 들어, RNIC는 수신 큐로부터의 하나의 WQE를 건너뛸 수 있고 또 각자의 완료 큐에 CQE를 부가하여 데이터-아웃 트랜 잭션의 완료를 나타낼 수 있다. 타겟 소프트웨어는 R2T 동작이 완료되었는지 여부 및 R2T가 전체 SCSI 기록 동작이 완료되었음을 확인해주는 SCSI 응답을 생성할 수 있는지를 알기 위해 이 통지를 필요로 할 수 있다. 유의할 점은 이 통지가 착신 데이터-인 및 요청된 데이터-아웃 PDU를 처리할 때 RNIC로부터 소프트웨어로의 유일한 통지일 수 있다는 것이다. 상기한 시퀀싱 검증은 모든 데이터-아웃이 성공적으로 수신되어 등록된 버퍼에 배치되었음을 보장해준다. (세트된 'F-비트'를 전달하는) 마지막 데이터-아웃 PDU를 손실한 경우는 소프트웨어에 의해 처리될 수 있다(타임아웃 메커니즘).
데이터-인 및 요청된 데이터-아웃 PDU를 프로세싱하는 것을 마무리하기 위해 RNIC에 의해 수행될 수 있는 마지막 동작은 보호 블록의 무효화이다(1117). 이것은 데이터-인 및 'F 비트'가 세트된 요청된 데이터-아웃 PDU에 대해 행해질 수 있다. 무효화는 PDU 헤더로부터 수집된 STag에 의해 언급되는 PB에 대해 수행될 수 있다. 무효화된 STag는 요청된 데이터-아웃에 대한 CQE를 사용하여 또는 SCSI 기록 명령을 완료하는 SCSI 응답의 헤더(ITT 필드)로 SCSI 드라이버에 전달될 수 있다. 이것은 iSCSI 드라이버가 그 다음 SCSI 명령에 대해 해제된(freed) STag를 재사용할 수 있게 해준다.
타겟에 의해 등록된 영역의 무효화(1118)도 역시 이와 유사하게 수행될 수 있다. 유의할 점은 무효화에 대한 대안적인 방법이 수신된 SCSI 응답에서 STag(ITT)에 의해 언급되는 PB의 무효화일 수 있다는 것이다.
이제 도 12를 참조하여, 본 발명의 일 실시예에 따라, 하드웨어로 착신 R2T 를 처리하는 것 및 데이터-아웃 PDU의 생성에 대해 설명한다.
SCSI 기록 명령의 결과 개시자는 타겟으로부터 다수의 R2T를 수신할 수 있다(1201). 각각의 R2T는 개시자가 지정된 양의 데이터를 등록된 SCSI 버퍼 내의 지정된 장소로부터 페치하고 또 이 데이터를 데이터-아웃 PDU를 사용하여 타겟으로 전송할 것을 필요로 할 수 있다(1202). R2T는 SCSI 명령으로 개시자에 의해 제공된 ITT를 전달한다(1203). 앞서 기술한 바와 같이, 등록된 SCSI 버퍼의 STag는 드라이버가 SCSI 명령을 생성할 때 ITT 대신에 드라이버에 의해 사용될 수 있다(1204).
R2T PDU는 BHS:Opcode 필드를 사용하여 식별될 수 있다. RNIC는 BHS:R2TSN 필드를 사용하여 R2T 시퀀싱의 검증을 수행할 수 있다(1205). RNIC는 PB에 ExpDataSN 필드를 보유한다. 단방향 명령의 경우 개시자가 R2T 또는 데이터-인이 들어오는 것을 볼 수 있기 때문에, 동일한 필드가 시퀀싱 검증을 위해 사용될 수 있다. 착신 R2T에 대한 시퀀스 검증은 상기한 데이터-인 및 데이터-아웃에 대해 사용되는 시퀀스 검증의 프로세스와 동일할 수 있다(1206).
RNIC는 착신 RDMA 판독 요청을 처리하는 경우와 동일한 메커니즘을 사용하여 시퀀스 검증을 통과한 R2T를 처리할 수 있다(1207). RNIC는 RNIC 전송 로직에 의해 전송될 필요가 있는 데이터-아웃에 대해 기술하는 WQE를 포스트하기 위해 별도의 판독 응답 작업 큐를 사용할 수 있다(1208)(RDMA 판독 요청의 경우에, RNIC는 RDMA 판독 응답에 대해 기술하는 WQE를 큐잉할 수 있다). 전송 로직은 송신 WQ와 판독 응답 WQ 간을 중재할 수 있고, 또 내부 중재 규칙에 따라 이들 각각으로부터 의 WQE를 처리할 수 있다(1209).
각각의 수신된 R2T의 결과 단일의 데이터-아웃 PDU가 얻어질 수 있다(1210). 생성된 데이터-아웃 PDU는 BHS:ITT에 의해 언급된 등록된 SCSI 버퍼로부터 데이터를 전달할 수 있다(드라이버는 STag를 SCSI 명령 생성 시에 그곳에 배치함). BHS:BufferOffset 및 BHS:DesireDataTransferLength는 SCSI 버퍼에서의 오프셋 및 데이터 트랜잭션의 크기를 식별할 수 있다.
RNIC가 F-비트가 세트된 R2T PDU에 대한 데이터-아웃을 전송할 때, RNIC는 원격측이 그 데이터-아웃 PDU의 성공적인 수신을 확인한 후에 STag(ITT)에 의해 언급된 보호 블록을 무효화할 수 있다. 이 SCSI 기록 명령을 위해 사용된 STag는 대응하는 SCSI 응답 PDU가 전달될 때 소프트웨어에 의해 재사용될 수 있다.
메모리 영역 무효화에 대한 대안의 방법은 수신된 SCSI 응답에서의 STag(ITT)에 의해 언급된 PB의 무효화일 수 있다.
본 발명에 대한 설명이 예시 및 설명을 위해 제공되었으며, 전부 망라하여 기술된 것도 아니고 또 본 발명을 개시된 형태로 한정하는 것도 아니다. 많은 수정 및 변형이 당업자에게는 자명할 것이다. 실시예는 본 발명의 원리, 실제 응용을 가장 잘 설명하고 또 당업자들이 고려된 특정 사용에 적합한 여러가지 수정을 갖는 여러가지 실시예에 대해 본 발명을 이해할 수 있도록 하기 위해 선택되고 기술되었다.

Claims (28)

  1. RDMA(Remote Direct Memory Access) 기능을 위해 사용되는 RNIC(Remote-direct-memory-access-enabled Network Interface Controller) 메커니즘을 사용하여 iSCSI(Internet Small Computer System Interface) 오프로드 개시자 기능(offload initiator function)을 구현하는 단계를 포함하는 방법.
  2. 제1항에 있어서, iSCSI 타겟 기능으로부터 분리하여 독립적으로 iSCSI 개시자 기능을 오프로드하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 상기 단계는, RDMA 기록 동작의 로직(logic)을 사용하여 임의의 SCSI 버퍼 오프셋에 따라 임의의 순서로 사전 등록된 SCSI 버퍼들에 데이터-아웃 페이로드를 원격 직접 데이터 배치(remote direct data placement)를 행하는 단계를 포함하는 것인 방법.
  4. 제3항에 있어서, Stag(steering tag)로서 사용되는 TTT(target task tag)에 의해 상기 사전 등록된 SCSI 버퍼들을 식별하는 단계를 포함하는 방법.
  5. 제1항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 상기 단계는, 수신 작업 요청(Receive Work Request)들을 갖는 RDMA 수신 큐(receive queue)들을 사용하여 제어 iSCSI PDU들을 배치하는 단계를 포함하는 것인 방법.
  6. 제5항에 있어서, 연관된 완료 큐(Completion Queue)를 통해 상기 수신 작업 요청들의 완료를 보고하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 상기 단계는,
    iSCSI 애플리케이션 프로토콜을 통해 iSCSI 드라이버와 통신하는 SCSI 계층을 제공하는 단계와,
    상기 iSCSI 드라이버와 인터페이스하고, iSER(iSCSI Extensions for RDMA) 데이터무버(datamover) 및 iSCSI 데이터무버와 인터페이스하는 데이터무버 인터페이스(datamover interface)를 제공하는 단계를 포함하는 것인 방법.
  8. 제7항에 있어서, 상기 데이터무버 인터페이스를 사용하여 상기 iSCSI 드라이버의 데이터 이동 기능 및 iSCSI 관리 기능을 분할하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 상기 단계는,
    생성된 iSCSI PDU들을 송신 작업 요청(Send Work Request)들로서 송신 큐(Send Queue)로 포스트하는 단계와, 상기 송신 작업 요청(Send Work Request)들의 완료를 연관된 완료 큐(Completion Queue)를 통해 보고하는 단계를 더 포함하는 것인 방법.
  10. 제1항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 상기 단계는,
    사전 등록된 SCSI 버퍼에 대한 직접 액세스를 실시하기 위해 RDMA ATP(Address Translation and Protection, 주소 변환 및 보호) 메커니즘을 구현하는 단계와,
    Stag로서 사용되는 TTT에 의해 상기 사전 등록된 SCSI 버퍼들을 식별하는 단계와,
    페이지 및 블록 중 적어도 하나의 위치를 알아내어 상기 페이지 및 블록 중 적어도 하나에 대해 판독 및 기록 동작 중 적어도 하나를 수행하는 단계를 포함하는 것인 방법.
  11. RDMA(Remote Direct Memory Access) 기능을 위해 사용되는 RNIC(Remote-direct-memory-access-enabled Network Interface Controller) 메커니즘을 사용하여 iSCSI(Internet Small Computer System Interface) 오프로드 개시자 기능(offload initiator function)을 구현하는 명령어들을 포함하는 컴퓨터 프로그램 제품.
  12. 제11항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 명령어들은 iSCSI 타겟 기능으로부터 분리하여 독립적으로 iSCSI 개시자 기능을 오프로드하는 명령어들을 더 포함하는 컴퓨터 프로그램 제품.
  13. 제11항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 명령어들은, RDMA 기록 동작의 로직을 사용하여 임의의 SCSI 버퍼 오프셋에 맞춰 임의의 순서로 사전 등록된 SCSI 버퍼들에 Data-Out 페이로드를 원격 직접 데이터 배치(remote direct data placement)를 행하는 명령어들을 포함하는 것인 컴퓨터 프로그램 제품.
  14. 제13항에 있어서, Stag(steering tag)로서 사용되는 TTT(target task tag)에 의해 상기 사전 등록된 SCSI 버퍼들을 식별하는 명령어들을 포함하는 컴퓨터 프로그램 제품.
  15. 제11항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 명령어들은,
    수신 작업 요청(Receive Work Request)들을 갖는 RDMA 수신 큐(receive queue)를 사용하여 제어 iSCSI PDU를 배치하는 명령어들을 포함하고,
    연관된 완료 큐(Completion Queue)를 통해 상기 수신 작업 요청들의 완료를 보고하는 명령어들을 포함하는 것인 컴퓨터 프로그램 제품.
  16. 제11항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 명령어들은,
    iSCSI 애플리케이션 프로토콜을 통해 iSCSI 드라이버와 통신하는 SCSI 계층을 제공하는 명령어와,
    상기 iSCSI 드라이버와 인터페이스하고 iSER(iSCSI Extensions for RDMA) 데이터무버 및 iSCSI 데이터무버와 인터페이스하는 데이터무버 인터페이스(datamover interface)를 제공하는 명령어들을 포함하는 것인 컴퓨터 프로그램 제품.
  17. 제16항에 있어서, 상기 데이터무버 인터페이스를 사용하여 상기 iSCSI 드라이버의 데이터 이동 기능 및 iSCSI 관리 기능을 분할하는 명령어들을 더 포함하는 컴퓨터 프로그램 제품.
  18. 제11항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 명령어들은,
    생성된 iSCSI PDU를 송신 작업 요청(Send Work Request)들로서 송신 큐(Send Queue)로 포스트하는 명령어들과, 상기 송신 작업 요청(Send Work Request)들의 완료를 연관된 완료 큐(Completion Queue)를 통해 보고하는 명령어들을 포함하는 것인 컴퓨터 프로그램 제품.
  19. 제11항에 있어서, 상기 iSCSI 오프로드 개시자 기능을 구현하는 명령어들은,
    사전 등록된 SCSI 버퍼에 대한 직접 액세스를 실시하기 위해 RDMA ATP(Address Translation and Protection, 주소 변환 및 보호) 메커니즘을 구현하는 명령어들과,
    Stag로서 사용되는 TTT에 의해 상기 사전 등록된 SCSI 버퍼들을 식별하는 명령어들과,
    페이지 및 블록 중 적어도 하나의 위치를 알아내어 상기 페이지 및 블록 중 적어도 하나에 대해 판독 및 기록 동작 중 적어도 하나를 수행하는 명령어들을 포함하는 것인 컴퓨터 프로그램 제품.
  20. RDMA 서비스 유닛(Service Unit),
    착신(inbound) 및 발신(outgoing) RDMA 메시지를 처리하고 또 상기 RDMA 서비스 유닛에 의해 제공되는 서비스를 사용하여 직접 배치 및 전달 동작을 수행하는 동작을 하는 RDMA 메시징 유닛(Messaging Unit)과,
    iSCSI 오프로드 개시자 기능을 수행하고 착신 및 발신 iSCSI PDU를 처리하는 동작을 하는 iSCSI 메시징 유닛을 포함하며,
    상기 iSCSI 메시징 유닛은 상기 RDMA 서비스 유닛에 의해 제공된 서비스를 사용하여 상기 PDU에 의해 운반되는 iSCSI 페이로드의 등록된 SCSI 버퍼로의 직접 배치 및 전달을 수행하도록 구성되어 있는 것인 시스템.
  21. 제20항에 있어서, 상기 iSCSI 오프로드 개시자 기능은 iSCSI 타겟 기능으로부터 분리하여 독립적으로 iSCSI 개시자 기능을 오프로드하는 단계를 포함하는 것인 시스템.
  22. 제20항에 있어서, 상기 iSCSI 오프로드 개시자 기능은, RDMA 기록 동작의 로직을 사용하여 임의의 SCSI 버퍼 오프셋에 맞춰 임의의 순서로 사전 등록된 SCSI 버퍼들에 Data-Out 페이로드를 원격 직접 데이터 배치(remote direct data placement)를 행하는 단계를 포함하는 것인 시스템.
  23. 제22항에 있어서, 상기 iSCSI 오프로드 개시자 기능은, Stag(steering tag)로서 사용되는 TTT(target task tag)에 의해 상기 사전 등록된 SCSI 버퍼들을 식별하는 단계를 포함하는 것인 시스템.
  24. 제20항에 있어서, 상기 iSCSI 오프로드 개시자 기능은, 수신 작업 요청(Receive Work Request)들을 갖는 RDMA 수신 큐(receive queue)를 사용하여 제어 iSCSI PDU를 배치하는 단계와,
    연관된 완료 큐(Completion Queue)를 통해 상기 수신 작업 요청들의 완료를 보고하는 단계를 포함하는 것인 시스템.
  25. 제20항에 있어서, 상기 iSCSI 오프로드 개시자 기능은,
    iSCSI 애플리케이션 프로토콜을 통해 iSCSI 드라이버와 통신하는 SCSI 계층과,
    상기 iSCSI 드라이버와 인터페이스하고 iSER(iSCSI Extensions for RDMA) 데이터무버 및 iSCSI 데이터무버와 인터페이스하는 데이터무버 인터페이스(datamover interface)를 포함하는 것인 시스템.
  26. 제25항에 있어서, 상기 데이터무버 인터페이스는 상기 iSCSI 드라이버의 데이터 이동 기능 및 iSCSI 관리 기능을 분할하도록 구성되어 있는 것인 시스템.
  27. 제20항에 있어서, 상기 iSCSI 오프로드 개시자 기능은,
    생성된 iSCSI PDU를 송신 작업 요청(Send Work Request)들로서 송신 큐(Send Queue)로 포스트하는 단계와, 상기 송신 작업 요청(Send Work Request)들의 완료를 연관된 완료 큐(Completion Queue)를 통해 보고하는 단계를 포함하는 것인 시스템.
  28. 제20항에 있어서, 상기 iSCSI 오프로드 개시자 기능은,
    사전 등록된 SCSI 버퍼에 대한 직접 액세스를 실시하기 위해 RDMA ATP(Address Translation and Protection, 주소 변환 및 보호) 메커니즘을 구현하는 단계와,
    Stag로서 사용되는 TTT에 의해 상기 사전 등록된 SCSI 버퍼들을 식별하는 단계와,
    페이지 및 블록 중 적어도 하나의 위치를 알아내어 상기 페이지 및 블록 중 적어도 하나에 대해 판독 및 기록 동작 중 적어도 하나를 수행하는 단계를 포함하는 것인 시스템.
KR1020060000104A 2006-01-02 2006-01-02 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드 KR100834431B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060000104A KR100834431B1 (ko) 2006-01-02 2006-01-02 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060000104A KR100834431B1 (ko) 2006-01-02 2006-01-02 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드

Publications (2)

Publication Number Publication Date
KR20070072682A true KR20070072682A (ko) 2007-07-05
KR100834431B1 KR100834431B1 (ko) 2008-06-04

Family

ID=38507484

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060000104A KR100834431B1 (ko) 2006-01-02 2006-01-02 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드

Country Status (1)

Country Link
KR (1) KR100834431B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8676851B1 (en) 2012-08-30 2014-03-18 Google Inc. Executing transactions in distributed storage systems
US8862561B1 (en) 2012-08-30 2014-10-14 Google Inc. Detecting read/write conflicts
US9037753B2 (en) 2013-08-29 2015-05-19 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US9229901B1 (en) 2012-06-08 2016-01-05 Google Inc. Single-sided distributed storage system
US9313274B2 (en) 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721806B2 (en) 2002-09-05 2004-04-13 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
US7565454B2 (en) 2003-07-18 2009-07-21 Microsoft Corporation State migration in multiple NIC RDMA enabled devices
US7543037B2 (en) 2003-12-02 2009-06-02 International Business Machines Corporation RDMA completion and retransmit system and method
US7177941B2 (en) 2003-12-11 2007-02-13 International Business Machines Corporation Increasing TCP re-transmission process speed

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9229901B1 (en) 2012-06-08 2016-01-05 Google Inc. Single-sided distributed storage system
US9916279B1 (en) 2012-06-08 2018-03-13 Google Llc Single-sided distributed storage system
US10810154B2 (en) 2012-06-08 2020-10-20 Google Llc Single-sided distributed storage system
US11321273B2 (en) 2012-06-08 2022-05-03 Google Llc Single-sided distributed storage system
US11645223B2 (en) 2012-06-08 2023-05-09 Google Llc Single-sided distributed storage system
US8676851B1 (en) 2012-08-30 2014-03-18 Google Inc. Executing transactions in distributed storage systems
US8862561B1 (en) 2012-08-30 2014-10-14 Google Inc. Detecting read/write conflicts
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US9037753B2 (en) 2013-08-29 2015-05-19 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access
US9043498B2 (en) 2013-08-29 2015-05-26 International Business Machines Corporation Automatic pinning and unpinning of virtual pages for remote direct memory access
US9313274B2 (en) 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems
US9729634B2 (en) 2013-09-05 2017-08-08 Google Inc. Isolating clients of distributed storage systems

Also Published As

Publication number Publication date
KR100834431B1 (ko) 2008-06-04

Similar Documents

Publication Publication Date Title
US20060165084A1 (en) RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET
US20060168091A1 (en) RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY INITIATOR
US7343527B2 (en) Recovery from iSCSI corruption with RDMA ATP mechanism
US20060168286A1 (en) iSCSI DATAMOVER INTERFACE AND FUNCTION SPLIT WITH RDMA ATP MECHANISM
US6917987B2 (en) Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US6948004B2 (en) Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US7760741B2 (en) Network acceleration architecture
US7502826B2 (en) Atomic operations
US7870306B2 (en) Shared memory message switch and cache
US20070008989A1 (en) Packet processing
US6831916B1 (en) Host-fabric adapter and method of connecting a host system to a channel-based switched fabric in a data network
US7181541B1 (en) Host-fabric adapter having hardware assist architecture and method of connecting a host system to a channel-based switched fabric in a data network
US20050235072A1 (en) Data storage controller
US20070041383A1 (en) Third party node initiated remote direct memory access
US20070226750A1 (en) Pipelined processing of RDMA-type network transactions
US9063928B2 (en) Processing data packets from a receive queue in a remote direct memory access device
EP1759317B1 (en) Method and system for supporting read operations for iscsi and iscsi chimney
KR100834431B1 (ko) 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드
US7761529B2 (en) Method, system, and program for managing memory requests by devices
US8798085B2 (en) Techniques to process network protocol units
TW200810461A (en) Network protocol stack isolation
US20060168092A1 (en) Scsi buffer memory management with rdma atp mechanism
US7383312B2 (en) Application and verb resource management
US20060168094A1 (en) DIRECT ACCESS OF SCSI BUFFER WITH RDMA ATP MECHANISM BY iSCSI TARGET AND/OR INITIATOR
US20090271802A1 (en) Application and verb resource management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee