[go: up one dir, main page]

KR100834431B1 - RNC-based offload of iSCSI data transfer function by initiator - Google Patents

RNC-based offload of iSCSI data transfer function by initiator Download PDF

Info

Publication number
KR100834431B1
KR100834431B1 KR1020060000104A KR20060000104A KR100834431B1 KR 100834431 B1 KR100834431 B1 KR 100834431B1 KR 1020060000104 A KR1020060000104 A KR 1020060000104A KR 20060000104 A KR20060000104 A KR 20060000104A KR 100834431 B1 KR100834431 B1 KR 100834431B1
Authority
KR
South Korea
Prior art keywords
iscsi
offload
data
scsi
rdma
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.)
Expired - Fee Related
Application number
KR1020060000104A
Other languages
Korean (ko)
Other versions
KR20070072682A (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
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Priority to KR1020060000104A priority Critical patent/KR100834431B1/en
Publication of KR20070072682A publication Critical patent/KR20070072682A/en
Application granted granted Critical
Publication of KR100834431B1 publication Critical patent/KR100834431B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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)을 구현하는 단계를 포함하는 방법 및 시스템이 제공된다.The Remote-direct-memory-access-enabled Network Interface Controller (RNIC) mechanism used for the Remote Direct Memory Access (RDMA) function implements the Internet Small Computer System Interface (SCSI) offload initiator function. Methods and systems are provided that include steps.

통신 프로토콜, RDMA, RNIC, iSCSI, Communication protocol, RDMA, RNIC, iSCSI,

Description

개시자에 의한 iSCSI 데이터 이동 기능의 RNIC 기반 오프로드{RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY INITIATOR}RNIC-based OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY INITIATOR}

도 1은 SCSI 기록 및 SCSI 판독 트랜잭션의 단순화된 플로우차트.1 is a simplified flowchart of SCSI write and SCSI read transactions.

도 2는 시퀀싱 규칙 및 SCSI 명령을 보여주는 iSCSI 프로토콜의 단순화된 플로우차트.2 is a simplified flowchart of the iSCSI protocol showing sequencing rules and SCSI commands.

도 3은 본 발명의 일 실시예에 따른 분산 컴퓨터 시스템을 나타낸 단순화된 블록도.3 is a simplified block diagram illustrating a distributed computer system in accordance with an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따른, iSCSI 오프로드 기능을 구현하는 RDMA 메커니즘을 나타낸 단순화된 블록도.4 is a simplified block diagram illustrating an RDMA mechanism implementing iSCSI offload functionality in accordance with an embodiment of the present invention.

도 5는 RDMA, 판독 및 기록의 원격 메모리 액세스 동작의 단순화된 플로우차트.5 is a simplified flowchart of remote memory access operations of RDMA, read and write.

도 6은 본 발명의 일 실시예에 따른, 로컬적으로도 원격적으로도 시스템 메모리에 액세스하는 것을 가능하게 해줄 수 있는 RDMA에서의 메모리 등록의 단순화된 플로우차트.6 is a simplified flowchart of memory registration in RDMA that may enable accessing system memory both locally and remotely, in accordance with an embodiment of the present invention.

도 7 및 도 8은 각각 본 발명의 일 실시예에 따른, RNIC를 지원하는 RDMA에 의한 iSCSI 데이터 이동 동작의 오프로드를 나타낸 단순화된 블록도 및 플로우차트.7 and 8 are simplified block diagrams and flowcharts illustrating offloading of iSCSI data movement operations by RDMA supporting RNIC, respectively, in accordance with an embodiment of the present invention.

도 9는 본 발명의 일 실시예에 따른, RDMA-기반 iSCSI 오프로드를 사용하여 구현된 소프트웨어 구조를 나타낸 단순화된 블록도.9 is a simplified block diagram illustrating a software architecture implemented using RDMA-based iSCSI offload, in accordance with an embodiment of the present invention.

도 10은 본 발명의 일 실시예에 따른, 하드웨어/소프트웨어 상호작용없이 iSCSI 데이터 이동 PDU의 SCSI 버퍼로의 직접 데이터 배치의 단순화된 플로우차트.10 is a simplified flowchart of direct data placement of an iSCSI data movement PDU into a SCSI buffer without hardware / software interaction, in accordance with an embodiment of the present invention.

도 11a 및 도 11b는 본 발명의 일 실시예에 따른, RNIC에 의한 데이터-인(Data-In) 및 요청된 데이터-아웃(Data-Out)을 처리하는 것 및 그 PDU에 의해 운반되는 iSCSI 페이로드의 등록된 SCSI 버퍼로의 직접 데이터 배치를 수행하는 것의 단순화된 플로우차트.11A and 11B illustrate processing of Data-In and Requested Data-Out by an RNIC and an iSCSI pay carried by the PDU according to an embodiment of the present invention. Simplified flowchart of performing load data placement directly into the registered SCSI buffer.

도 12는 본 발명의 일 실시예에 따른, 착신 R12T를 하드웨어를 처리하는 것 및 데이터-아웃(Data-Out) PDU를 생성하는 것의 단순화된 플로우차트.12 is a simplified flowchart of processing incoming R12T hardware and generating a Data-Out PDU, in accordance with an embodiment of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

201: iSCSI 작업201: iSCSI operation

202: SCSI 명령202: SCSI command

301: 호스트 프로세서 노드301: host processor node

306: 컴퓨터 프로그램 제품306: Computer program product

본 발명은 일반적으로 호스트 컴퓨터와 입/출력(I/O) 장치 간의 통신 프로토콜에 관한 것으로서, 보다 상세하게는 RDMA(Remote Direct Memory Access, 원격 직 접 메모리 액세스)에 의한 iSCSI(Internet Small Computer System Interface) 오프로드 구현(offload implementaion)에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention generally relates to a communication protocol between a host computer and an input / output (I / O) device, and more particularly, to an Internet Small Computer System Interface (RSI) by RDMA (Remote Direct Memory Access). ) Offload implementaion.

RDMA는 고속 전송을 통한 데이터의 효율적인 이동을 위한 기술이다. RDMA는 한 컴퓨터가 메모리 보호 시맨틱스를 유지하면서도 메모리 버스 대역폭 및 CPU 프로세싱 오버헤드를 최소한으로 요구하면서 정보를 다른 컴퓨터의 메모리에 직접 배치할 수 있게 해준다. RNIC는 소비자에게 RDMA 서비스를 제공하는 네트워크 인터페이스 카드(Network Interface Card)이다. RNIC는 TCP(transport control protocol, 전송 제어 프로토콜)를 통해 RDMA에 대한 지원을 제공할 수 있다.RDMA is a technology for efficient movement of data through high speed transmission. RDMA allows one computer to place information directly into another computer's memory with minimal memory bus bandwidth and CPU processing overhead while maintaining memory protection semantics. RNIC is a network interface card that provides RDMA services to consumers. The RNIC may provide support for RDMA via a transport control protocol (TCP).

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와 유사한 기능을 제공하지만, 데이터 이동의 프로토콜 및 와이어 프로토콜이 서로 다르다.One of the many important features of an RNIC is that it can function as an iSCSI target or initiator adapter. iSCSI defines the term initiator and target as follows. That is, an "initiator" refers to a SCSI command requester (eg, a host), and a "target" refers to an I / O such as a SCSI command responder (eg, a SCSI drive carrier, tape, etc.). Device). RNIC also provides iSER ("iSCSI Extentions for RDMA") services. iSER is an extension of iSCSI's data transfer model, allowing the iSCSI protocol to take advantage of the direct data placement technology of the RDMA protocol. The iSER data transfer protocol allows iSCSI implementations with RNIC to have data transfers that achieve true zero copy behavior by eliminating TCP / IP processing overhead while maintaining compatibility with the iSCSI infrastructure. iSER uses the RDMA wire protocol and is not transparent to the remote side (target or initiator). iSER also makes minor changes or modifications to the iSCSI implementation over RDMA. For example, iSER eliminates iSCSI Protocol Data Units (PDUs) such as DataOut and DataIn and uses RDMA Read and RDMA Write messages instead. Basically, iSER provides iSCSI-like functionality to the upper layers, but differs in the protocol and wire protocol of data movement.

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 로그인 단계에서 행해진다.The iSCSI protocol exchanges iSCSI PDUs to execute the SCSI commands provided by the SCSI layer. The iSCSI protocol allows for a smooth transition from locally attached SCSI storage to remotely attached SCSI storage. The iSCSI service may provide partial offload of the iSCSI function, and the level of offload may be implementation dependent. In summary, iSCSI uses regular TCP connections, while iSER implements iSCSI over RDMA. iSER uses other RDMA features to use RDMA connections, achieve better recovery, and improve latency and performance. Because RNIC supports both iSCSI and iSER services, RNIC enables SCSI communication with devices that support different levels of iSCSI implementation. Protocol selection (iSCSI vs. iSER) is made at the iSCSI login stage.

RDMA는 작업 요청(work request, WR)을 작업 큐(work queue) 상에 배치하기 위해 "verb"라고 하는 오퍼레이팅 시스템 프로그래밍 인터페이스를 사용한다. 작업 요청을 갖는 iSER을 구현하는 예는 IBM사에 양도된 Boyd 등의 미국 특허 출원 제20040049600호에 기술되어 있다. 이 출원에서, iSCSI 명령을 포함하는 작업 요청은 호스트로부터 네트워크 오프로드 엔진에 수신될 수 있고, 작업 요청을 수신한 것에 응답하여, 호스트와 연관된 메모리 영역은 변환 테이블(translation table)에 등록될 수 있다. RDMA에서와 같이, 작업 요청은 송신 큐(send queue)를 통해 수신될 수 있으며, 메모리 영역을 등록한 것에 응답하여, 완료 큐 요소(completion queue element)가 완료 큐 상에 배치될 수 있다.RDMA uses an operating system programming interface called "verb" to place a work request (WR) on a work queue. An example of implementing an iSER with a work request is described in US Patent Application No. 20040049600 to Boyd et al. Assigned to IBM. In this application, a work request comprising an iSCSI command may be received from a host to a network offload engine, and in response to receiving the work request, a memory area associated with the host may be registered in a translation table. . As in RDMA, work requests may be received via send queues, and in response to registering the memory area, a completion queue element may be placed on the completion queue.

본 발명의 목적은 본 명세서의 이하에서 보다 상세히 기술되는 바와 같이, RNIC에 의한 효율적인 iSCSI 오프로드 구현을 제공하고 또 RDMA를 위해 개발된 RNIC 메커니즘을 사용하여 이 오프로드 레벨을 달성하는 데 있다.It is an object of the present invention to provide an efficient iSCSI offload implementation by RNIC as described in more detail herein below and to achieve this offload level using the RNIC mechanism developed for RDMA.

본 발명에 따르면, iSCSI 오프로드 기능은 RDMA 기능을 위해 사용되는 용이하게 이용가능한 RNIC 메커니즘으로 구현될 수 있다. 이것은 RDMA 기록 동작의 경우에서와 같이, 임의의 SCSI 버퍼 오프셋에 맞춰 임의의 순서로 사전 등록된 SCSI 버퍼에 데이터-인 및 데이터-아웃 페이로드를 원격 직접 데이터 배치(remote direct data placement)를 행하는 단계를 포함하지만, 이에 한정되는 것은 아니다. 착신 R2T("ready to transfer") PDU가 처리될 수 있고, 데이터-아웃 PDU는 RDMA 판독 요청의 경우에서와 동일한 메커니즘을 사용하여 생성될 수 있다. 제어 iSCSI PDU는 예를 들어 수신 큐 및 공유된 수신 큐를 사용하여 배치될 수 있다.According to the present invention, the iSCSI offload function may be implemented with an readily available RNIC mechanism used for the RDMA function. This involves remote direct data placement of the data-in and data-out payloads into the pre-registered SCSI buffers in any order, in accordance with any SCSI buffer offset, as in the case of an RDMA write operation. It includes, but is not limited to. Incoming R2T ("ready to transfer") PDUs may be processed, and data-out PDUs may be generated using the same mechanism as in the case of an RDMA read request. Controlling iSCSI PDUs can be deployed, for example, using receive queues and shared receive queues.

본 발명의 한 측면에 따르면, RDMA(Remote Direct Memory Access) 기능을 위해 사용되는 RNIC(Remote-direct-memory-access-enabled Network Interface Controller) 메커니즘으로 iSCSI(Internet Small Computer System Interface) 오프로드 개시자 기능(offload initiator function)을 구현하는 단계를 포함하는 방법 이 개시되어 있다.According to one aspect of the invention, an Internet Small Computer System Interface (SCSI) offload initiator function with a Remote-direct-memory-access-enabled Network Interface Controller (RNIC) mechanism used for Remote Direct Memory Access (RDMA) functionality. A method is disclosed that includes implementing an 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)을 구현하는 명령어를 포함하는 컴퓨터 프로그램 제품이 개시되어 있다.According to a second aspect of the present invention, an Internet Small Computer System Interface (SCSI) offload initiator with a Remote-direct-memory-access-enabled Network Interface Controller (RNIC) mechanism used for Remote Direct Memory Access (RDMA) functionality. A computer program product is disclosed that includes instructions for implementing an offload initiator function.

본 발명의 제3 측면에 따르면, RDMA 서비스 유닛(Service Unit), 착신(inbound) 및 발신(outgoing) RDMA 메시지를 처리하고 또 상기 RDMA 서비스 유닛에 의해 제공되는 서비스를 사용하여 직접 배치 및 전달 동작을 수행하는 동작을 하는 RDMA 메시징 유닛(Messaging Unit), 및 iSCSI 오프로드 개시자 기능을 수행하고 또 착신 및 발신 iSCSI PDU를 처리하는 동작을 하는 iSCSI 메시징 유닛을 포함하며, 상기 iSCSI 메시징 유닛은 상기 RDMA 서비스 유닛에 의해 제공된 서비스를 사용하여 상기 PDU에 의해 운반되는 iSCSI 페이로드의 등록된 SCSI 버퍼로의 직접 배치 및 전달을 수행하도록 구성되어 있는 것인 시스템이 개시되어 있다.According to a third aspect of the present invention, an RDMA Service Unit, an inbound and an outgoing RDMA message is processed, and a direct deployment and delivery operation is performed using a service provided by the RDMA Service Unit. An RDMA messaging unit operative to perform, and an iSCSI messaging unit operative to perform an iSCSI offload initiator function and to handle incoming and outgoing iSCSI PDUs, wherein the iSCSI messaging unit comprises the RDMA service; A system is disclosed that is configured to perform direct placement and delivery of an iSCSI payload carried by the PDU to a registered SCSI buffer using a service provided by a unit.

본 발명은 첨부 도면과 관련하여 기술된 이하의 상세한 설명으로부터 보다 충분히 이해될 것이다.The invention will be more fully understood from the following detailed description set forth in conjunction with the accompanying drawings.

본 발명을 보다 잘 이해하기 위해, 이제부터 iSCSI 데이터 이동 및 오프로드 기능에 대한 일반적인 설명이 (도 1 및 도 2를 참조하여) 제공된다. 그 후에, RDMA verb 및 메커니즘으로 분산 컴퓨터 시스템에서 iSCSI 데이터 이동 및 오프로 드 기능을 구현하는 것에 대해 (도 4 및 그 이후의 도면을 참조하여) 설명된다.In order to better understand the present invention, a general description of the iSCSI data movement and offload functionality is now provided (with reference to FIGS. 1 and 2). Subsequently, implementation of the iSCSI data movement and offload functionality in a distributed computer system with RDMA verbs and mechanisms is described (with reference to FIGS. 4 and subsequent figures).

iSCSI 프로토콜은 SCSI 계층에 의해 제공되는 SCSI 명령을 실행하기 위해 iSCSI 프로토콜 데이터 단위(PDU)를 교환한다. iSCSI 프로토콜은 로컬적으로 부착된 SCSI 저장 장치로부터 원격적으로 부착된 SCSI 저장 장치로의 매끄러운 전이를 가능하게 해준다.The iSCSI protocol exchanges iSCSI protocol data units (PDUs) to execute the SCSI commands provided by the SCSI layer. The iSCSI protocol allows for a smooth transition from locally attached SCSI storage to remotely attached SCSI storage.

2가지 주요 그룹의 iSCSI PDU, 즉 iSCSI 제어 및 iSCSI 데이터 이동 PDU가 있다. iSCSI 제어는 그 중에서도 특히 SCSI 명령, SCSI 응답, 작업 관리 요청 등의 많은 유형의 제어 PDU를 정의한다. 데이터 이동 PDU는 R2T(ready to transfer), SCSI 데이터-아웃(요청된 및 요청되지 않은) 및 SCSI 데이터-인 PDU(이에 한정되는 것은 아님)를 포함하는 더 작은 그룹이다.There are two main groups of iSCSI PDUs: iSCSI Control and iSCSI Data Movement PDUs. iSCSI control defines many types of control PDUs, especially SCSI commands, SCSI responses, and task management requests. Data transfer PDUs are smaller groups that include, but are not limited to, ready to transfer (R2T), SCSI data-out (requested and unsolicited), and SCSI data-in PDUs.

전술한 바와 같이, "개시자" 는 SCSI 명령 요청자(예를 들어, 호스트)를 말하고, "타겟"은 SCSI 명령 응답자(예를 들어, SCSI 드라이버 캐리어, 테이프 등의 I/O 장치)를 말한다. 모든 iSCSI 제어 및 데이터 이동 명령은 개시자에 의해 생성되고 타겟에 의해 처리되는 것과 타겟에 의해 생성되고 개시자에 의해 처리되는 것으로 분할될 수 있다.As mentioned above, "initiator" refers to a SCSI command requester (eg, a host) and "target" refers to a SCSI command responder (eg, an I / O device such as a SCSI driver carrier, tape, etc.). All iSCSI control and data movement commands can be divided into those generated by the initiator and processed by the target and those generated by the target and processed by the initiator.

이제 도 1을 참조하면, SCSI 기록 및 SCSI 판독 트랜잭션의 흐름이 각각 예시되어 있다.Referring now to FIG. 1, the flow of SCSI write and SCSI read transactions is illustrated respectively.

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) 모드에서 전송될 수 있는 최대 데이터 크기는 타겟의 버퍼링 능력에 달려 있다.In the SCSI write flow, the initiator sends a SCSI write command (denoted by reference numeral 101) to the target. This command passes an initiator task tag (ITT) that identifies the SCSI buffer that must be placed on disk (or other part of the target), among other fields. The SCSI write command can also carry immediate data, the maximum size of which can be negotiated at the iSCSI logic stage. In addition, the SCSI write command may be followed by a so-called unsolicited data-out PDU. Unsolicited data-out PDUs are identified by a target transfer tag (TTT), in which case the TTT must be 0xFFFFFFFF. The size of unsolicited data is also negotiated during the iSCSI login phase. These two data transfer modes can reduce latency for short SCSI write operations, but this can also be used to transfer the initial amount of data in large transactions. The maximum data size that can be transmitted in unsolicited or immediate mode depends on the buffering capability of the target.

타겟이 SCSI 기록 명령을 수신한 후에, 타겟은 하나 이상의 R2T[참조 번호(102)로 나타냄]로 응답한다. 각각의 R2T는 타겟이 SCSI 버퍼에서의 지정된 오프셋으로부터 지정된 양의 데이터를 수신할 준비가 되어있음을 나타낸다(꼭 순서대로일 필요는 없음). R2T는 2개의 태그, 즉 SCSI 명령으로부터의 ITT 및 데이터가 배치될 타겟 버퍼를 가리키는 TTT를 전달한다.After the target receives the SCSI write command, the target responds with one or more R2Ts (denoted by reference numeral 102). Each R2T indicates that the target is ready to receive the specified amount of data from the specified offset in the SCSI buffer (not necessarily in order). R2T carries two tags, an ITT from the SCSI command and a TTT pointing to the target buffer where the data is to be placed.

각각의 수신된 R2T에 있어서, 개시자는 하나 이상의 데이터-아웃 PDU를 전송할 수 있다[참조 번호(103)로 나타냄]. 데이터-아웃 PDU는 SCSI 버퍼로부터의 데이터를 전달한다[ITT로 나타냄]. 각각의 수신된 데이터-아웃은 데이터를 배치할 곳을 나타내는 TTT를 전달한다. 마지막 수신된 데이터-아웃은 또한 F-비트를 전달한다[참조 번호(104)로 나타냄]. 이 비트는 마지막 데이터-아웃이 수신되었음을 나타내며, 이것은 타겟에 R2T 교환이 완료되었음을 알려준다.For each received R2T, the initiator may send one or more data-out PDUs (denoted by reference numeral 103). The data-out PDU carries data from the SCSI buffer [indicated by ITT]. Each received data-out carries a TTT indicating where to place the data. The last received data-out also carries an F-bit (denoted by reference numeral 104). This bit indicates that the last data-out has been received, which indicates to the target that the R2T exchange is complete.

타겟이 모든 R2T가 완료되었음을 통지받았을 때, 타겟은 SCSI 응답 PDU를 전송한다[참조 번호(105)로 나타냄]. SCSI 응답은 ITT를 전달하고 SCSI 기록 동작이 성공적으로 완료되었음을 나타낸다.When the target is notified that all R2T is complete, the target sends a SCSI response PDU (denoted by reference numeral 105). The SCSI response conveys the ITT and indicates that the SCSI write operation has completed successfully.

SCSI 판독 흐름에서, 개시자는 SCSI 판독 명령을 타겟으로 전송한다[참조 번호(106)로 나타냄]. 이 명령은 다른 필드 중에서도 특히, 데이터를 읽어들일 SCSI 버퍼를 식별해주는 ITT를 전달한다.In the SCSI read flow, the initiator sends a SCSI read command to the target (denoted by reference numeral 106). This command passes an ITT that identifies the SCSI buffer from which to read data, among other fields.

타겟은 하나 이상의 데이터-인 PDU에 응답할 수 있다[참조 번호(107)로 나타냄]. 각각의 데이터-인은 SCSI 버퍼에 배치될 데이터를 전달한다. 데이터-인은 임의의 순서로 들어올 수 있으며, 임의의 크기를 가질 수 있다. 각각의 데이터-인은 데이터가 배치될 SCSI 버퍼 및 버퍼 오프셋을 식별해주는 ITT를 전달한다.The target may respond to one or more data-in PDUs (indicated by reference numeral 107). Each data-in carries data to be placed in a SCSI buffer. The data-ins may come in any order and may have any size. Each data-in carries an ITT that identifies the SCSI buffer and buffer offset where the data is to be placed.

데이터-인 PDU의 스트림에 뒤이어 SCSI 응답이 온다[참조 번호(108)로 나타냄]. SCSI 응답은 SCSI 판독 동작이 성공적으로 완료되었는지를 나타내는 ITT를 전달한다.A SCSI response follows the stream of data-in PDUs (indicated by reference numeral 108). The SCSI response conveys an ITT indicating whether the SCSI read operation completed successfully.

유의할 점은 본 발명의 일 실시예에 따르면, 종래 기술과는 달리 RNIC가 데이터-아웃 및 데이터-인 및 R2T의 흐름을 처리한다는 것이다.Note that, according to one embodiment of the present invention, unlike the prior art, the RNIC handles the flow of data-out and data-in and 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(이에 한정되는 것은 아님)을 포함한다.Referring now to FIG. 2, an example of an iSCSI protocol is shown. The iSCSI protocol has well defined sequencing rules. The iSCSI task (denoted by reference numeral 210) includes one or more SCSI commands 202. At any given time, the iSCSI task 201 may have a single raw instruction 202. Each job 201 is identified by ITT 203. A single iSCSI connection can have multiple raw iSCSI tasks. The PDU 204 of the iSCSI task 201 may be interleaved in the connection stream. Each iSCSI PDU 204 may carry several sequence numbers. Sequence numbers associated with data movement PDUs include, but are not limited to, R2TSN (R2T Sequence Number), DataSN and ExpDataSN, and StatSN and ExpStatSN.

DataSN은 데이터(데이터-아웃 및 데이터-인)를 전달하는 각각의 iSCSI PDU(204)에 의해 전달된다. 데이터-인의 경우, DataSN은 각각의 SCSI 판독 명령에 대해 0부터 시작할 수 있고, 타겟에 의해 각각의 전송된 데이터-인으로 증분될 수 있다. 데이터-인에 뒤따라오는 SCSI 응답 PDU는 각각의 개별적인 SCSI 명령에 대해 전송된 데이터-인의 개수를 나타내는 ExpDataSN을 전달한다. 양방향 SCSI 명령의 경우, DataSN은 데이터-인 및 R2T에 의해 공유되고, 여기서 R2T는 DataSN 대신에 R2TSN을 전달하지만, 이들은 iSCSI 헤더(BHS-Buffer Segment Handle Stack)(버퍼 세그먼트 핸들 스택) 내의 동일한 위치를 갖는 동일한 필드에 대한 서로 다른 이름이다.The DataSN is carried by each iSCSI PDU 204 carrying data (data-out and data-in). In the case of data-in, the DataSN may start at zero for each SCSI read command and may be incremented by each target with each transmitted data-in. The SCSI response PDU following the data-in carries an ExpDataSN indicating the number of data-ins transmitted for each individual SCSI command. For bidirectional SCSI commands, DataSN is shared by data-in and R2T, where R2T carries R2TSN instead of DataSN, but they share the same location within the BHS-Buffer Segment Handle Stack (buffer segment handle stack). Have different names for the same field.

데이터-아웃의 경우, DataSN은 각각의 R2T에 대해 0부터 시작할 수 있으며, 전송된 각각의 데이터-아웃으로 개시자에 의해 증분될 수 있다. R2TSN은 R2T에 의해 전달될 수 있다. R2TSN은 각각의 SCSI 기록 명령에 대해 0부터 시작할 수 있고, 전송된 각각의 R2T로 타겟에 의해 증분될 수 있다.For data-out, the DataSN can start at 0 for each R2T and be incremented by the initiator with each data-out sent. R2TSN may be carried by R2T. The R2TSN can start at zero for each SCSI write command and can be incremented by the target with each R2T sent.

DataSN 및 R2TSN 둘다는 수신된 데이터 이동 PDU의 순서를 따르기 위해 사용될 수 있다. 유의할 점은 iSCSI가 수신된 데이터의 비순차적인 배치 및 R2T의 비 순차적인 실행을 허용한다는 것이다. 그렇지만, iSCSI는 개시자 및 타겟에 대해 이미 배치된 데이터의 배치 또는 이미 실행된 R2T의 실행을 방지하기 위한 구현을 요청한다.Both DataSN and R2TSN can be used to follow the order of received data movement PDUs. Note that iSCSI allows out of order placement of received data and out of order execution of R2T. However, iSCSI requires an implementation to prevent the deployment of already deployed data or the execution of R2T already executed for the initiator and target.

StatSN 및 ExpStatSN은 타겟 응답 버퍼의 관리에서 사용될 수 있다. 타겟은 각각의 생성된 응답으로 StatSN을 증분시킬 수 있다. 응답 및 잠재적으로 그 명령에서 사용된 데이터는 개시자가 ExpStatSN을 사용하여 응답의 수신을 확인해줄 때까지 내부 타겟에 보유될 수 있다. ExpStatSN은 개시자로부터 타겟으로의 방향으로 흐르는 모든 iSCSI PDU에 의해 전달될 수 있다. 개시자는 타겟의 효율적인 구현이 가능하도록 ExpStatSN를 단조 증가하게 할 수 있다.StatSN and ExpStatSN can be used in the management of the target response buffer. The target may increment StatSN with each generated response. The response and potentially the data used in that command may be retained in the internal target until the initiator confirms receipt of the response using ExpStatSN. ExpStatSN may be delivered by all iSCSI PDUs flowing in the direction from the initiator to the target. The Initiator may monotonically increase ExpStatSN to allow efficient implementation of the target.

전술한 바와 같이, 본 발명의 비제한적 실시예에 따르면, iSCSI 오프로드 기능은 RDMA 기능을 위해 사용되는 RNIC 메커니즘으로 구현될 수 있다. 먼저, 분산 컴퓨터 시스템에서 사용하기 위한 RDMA에서의 작업 큐의 개념에 대한 일반적인 설명에 대해 이제부터 기술한다.As mentioned above, in accordance with a non-limiting embodiment of the present invention, the iSCSI offload function may be implemented with the RNIC mechanism used for the RDMA function. First, a general description of the concept of work queues in RDMA for use in distributed computer systems is now described.

이제 도 3을 참조하면, 본 발명의 일 실시예에 따른 분산 컴퓨터 시스템(300)이 도시되어 있다. 분산 컴퓨터 시스템(300)은 제한이 아닌 예로서 인터넷 프로토콜 네트워크(IP net) 및 여러가지 다른 유형 및 구성의 많은 다른 컴퓨터 시스템을 포함할 수 있다. 예를 들어, 본 발명을 구현하는 컴퓨터 시스템은 하나의 프로세서 및 몇개의 입/출력(I/O) 장치를 갖는 소형 서버에서부터 다수의 프로세서 및 I/O 어댑터를 갖는 대규모 병렬 수퍼컴퓨터 시스템에 이를 수 있다. 게다가, 본 발명은 인터넷 또는 인트라넷에 의해 연결된 원격 컴퓨터 시스템들의 기반구조 에서 구현될 수 있다.Referring now to FIG. 3, illustrated is a distributed computer system 300 in accordance with one embodiment of the present invention. Distributed computer system 300 may include, but is not limited to, an Internet Protocol network (IP net) and many other computer systems of various other types and configurations. For example, a computer system implementing the present invention can range from a small server with one processor and several input / output (I / O) devices to a massively parallel supercomputer system with multiple processors and I / O adapters. have. In addition, the present invention may be implemented in the infrastructure of remote computer systems connected by the Internet or an intranet.

분산 컴퓨터 시스템(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는 또한 완료 큐로부터 완료된 작업을 검색하는 메커니즘을 제공한다.The distributed computer system 300 may connect any number of host processor nodes 301 and any type, including but not limited to independent processor nodes, storage nodes, and special purpose processing nodes. Any of the nodes can function as an endnode, which is defined herein as a device that sends or finally consumes a message or frame in distributed computer system 300. Each host processor node 301 may include a consumer 302, which is a process running on that host processor node 301. The host processor node 301 may also include one or more IP Suite Offload Engines (IPSOEs) that may be implemented in hardware or in a combination of hardware and offload microprocessor (s). Offload engine 303 may support multiple queue pairs 304 used to deliver messages to IPSOE port 305. Each queue pair 304 may include a send work queue (SWQ) and a receive work queue (RWW). The transmit work queue can be used to send channel and memory semantic messages. The receive work queue may receive a channel semantic message. The consumer can use a "verb" that defines the semantics needed to implement to place a work request (WR) on the work queue. The verb also provides a mechanism to retrieve completed work from the completion queue.

예를 들어, 소비자는 작업 큐 상에 작업 큐 요소(work queue element, WQE) 로서 배치되는 작업 요청을 생성할 수 있다. 따라서, 송신 작업 큐는 분산 컴퓨터 시스템(300)의 패브릭(fabric)을 통해 전송될 데이터에 대해 기술하는 WQE를 포함할 수 있다. 수신 작업 큐는 분산 컴퓨터 시스템(300)의 패브릭으로부터의 착신 채널 시맨틱 데이터를 어디에 배치할지에 대해 기술하는 WQE를 포함할 수 있다. 작업 큐 요소는 오프로드 엔진(303) 내의 소프트웨어 또는 하드웨어로 처리될 수 있다.For example, a consumer can create a work request that is placed as a work queue element (WQE) on a work queue. Thus, the transmit work queue may include a WQE that describes data to be transmitted over the fabric of distributed computer system 300. The receive work queue may include a WQE that describes where to place incoming channel semantic data from the fabric of distributed computer system 300. The work queue element may be processed by software or hardware within the offload engine 303.

완료 큐는 이전에 완료된 작업 큐 요소에 관한 정보를 포함하는 완료 큐 요소(completion queue element, CQE)를 포함할 수 있다. 완료 큐는 다수의 큐 쌍에 대한 완료 통지의 시점 또는 시점들을 생성하는 데 사용될 수 있다. 완료 큐 요소는 완료된 특정의 작업 큐 요소 및 큐 쌍을 결정하는 데 충분한 정보를 포함하는 완료 큐에 관한 데이터 구조이다. 완료 큐 컨텍스트(completion queue context)는 길이 및 개별적인 완료 큐를 관리하는 데 필요한 다른 정보에 대한 포인터를 포함하는 정보의 블록이다.The completion queue may include a completion queue element (CQE) that contains information about previously completed work queue elements. Completion queues can be used to generate points in time or points of completion notification for multiple queue pairs. A completion queue element is a data structure for a completion queue that contains enough information to determine a particular work queue element and queue pair that has been completed. A completion queue context is a block of information that includes a length and a pointer to other information needed to manage an individual completion queue.

RDMA 판독 작업 요청은 원격 노드 상의 거의 연속적인 메모리 공간을 판독하기 위한 메모리 시맨틱 동작을 제공한다. 메모리 공간은 메모리 영역의 일부분 또는 메모리 윈도우(memory window)의 일부분일 수 있다. 메모리 영역은 가상 주소 및 길이에 의해 정의된 이전에 등록된 일련의 거의 연속적인 메모리 주소를 말한다. 메모리 윈도우는 이전에 등록된 영역에 바인딩되어 있는 일련의 거의 연속적인 메모리 주소를 말한다. 이와 유사하게, RDMA 기록 작업 큐 요소는 원격 노드 상의 거의 연속적인 메모리 공간에 기록하기 위한 메모리 시맨틱 동작을 제공한다.The RDMA read operation request provides a memory semantic operation for reading a nearly continuous memory space on the remote node. The memory space may be part of the memory area or part of a memory window. A memory region refers to a series of previously registered nearly consecutive memory addresses defined by virtual addresses and lengths. A memory window is a series of nearly contiguous memory addresses that are bound to previously registered regions. Similarly, the RDMA write work queue element provides a memory semantic operation for writing to nearly contiguous memory space on the remote node.

바인드(언바인드)[bind(unbind)] 원격 액세스 키(STag - Steering Tag) 작업 큐 요소는 오프로드 엔진 하드웨어에 메모리 윈도우를 메모리 영역과 연관(associate)(또는 분리(disassociate))시킴으로써 메모리 윈도우를 수정(또는 파괴)하기 위한 명령을 제공한다. STag는 각각의 RDMA 액세스의 일부이고 원격 프로세스가 버퍼에의 액세스를 허용하였음을 검증하는 데 사용된다.Bind (unbind) The remote access key (Stag-Steering Tag) job queue element associates (or disassociates) a memory window with the memory area by the offload engine hardware. Provide commands to modify (or destroy). The STag is part of each RDMA access and is used to verify that the remote process has allowed access to the buffer.

유의할 점은 이하에서 도시되고 기술되는 방법 및 시스템이 본 명세서에 기술된 방법 및 시스템을 실시하기 위한 명령어를 포함할 수 있는 네트워크 인터페이스 카드, 하드 디스크, 광학 디스크, 메모리 장치, 및 기타 등등(이에 한정되는 것은 아님)의 컴퓨터 프로그램 제품(306)에 의해 실시될 수 있다는 것이다.It should be noted that the methods and systems shown and described below may include instructions for implementing the methods and systems described herein, network interface cards, hard disks, optical disks, memory devices, and the like, but not limited thereto. May be implemented by a computer program product 306).

iSCSI 오프로드 기능을 구현하기 위한 어떤 관련된 RDMA 메커니즘에 대해 이제부터 도 4를 참조하여 설명한다.Some related RDMA mechanisms for implementing the iSCSI offload function are now described with reference to FIG. 4.

RDMA에서, 호스트 A는 호스트 B의 관여가 전혀 없이 호스트 B의 메모리에 액세스할 수 있다. 호스트 A는 어디서 언제 호스트 B의 메모리에 액세스할지를 결정하고, 호스트 B는 호스트 A가 명시적인 통지를 제공하지 않는 한 이러한 액세스가 일어나는 것을 알지 못한다.In RDMA, Host A can access Host B's memory without any involvement of Host B. Host A decides where and when to access Host B's memory, and Host B does not know that this access occurs unless Host A provides explicit notification.

호스트 A가 호스트 B의 메모리에 액세스할 수 있기 전에, 호스트 B는 액세스될 메모리 영역을 등록해야만 한다. 각각의 등록된 메모리 영역은 STag를 받는다. STag는 보호 블록(Protection Block, PB)이라고 하는 보호 테이블(Protection Table) 내의 엔트리와 연관되어 있다. PB는 그의 경계, 액세스 권한, 기타 등등을 비롯하여 등록된 메모리 영역에 대해 상세히 기술한다. RDMA는 물리적으로 비연속 적인 메모리 영역을 허용한다. 이러한 영역은 페이지-리스트(또는 블록-리스트)로 표현된다. PB는 또한 메모리 영역 페이지-리스트(또는 블록-리스트)를 가리킨다.Before Host A can access Host B's memory, Host B must register the memory area to be accessed. Each registered memory area receives a STag. The STag is associated with an entry in a Protection Table called a Protection Block (PB). The PB details the registered memory area, including its boundaries, access rights, and so forth. RDMA allows for physically discontinuous memory areas. This area is represented by a page-list (or block-list). PB also points to a memory area page-list (or block-list).

RDMA는 등록된 메모리 영역에만 원격 액세스할 수 있다. 메모리 영역 STag는 메모리에 액세스할 때 그 메모리를 언급하기 위해 원격측에 의해 사용된다. 저장 응용에 있어서, RDMA는 제로-기반 액세스(zero-based access)로 메모리 영역에 액세스한다. 제로-기반 액세스에서, 태그형 직접 데이터 배치 프로토콜(Tagged Direct Data Placement Protocol, DDP) 세그먼트에 의해 전달되는 타겟 오프셋(target offset, TO)은 등록된 메모리 영역에서의 오프셋을 정의한다.RDMA can only remotely access registered memory areas. The memory area STag is used by the remote side to refer to that memory when accessing it. In storage applications, RDMA accesses memory areas with zero-based access. In zero-based access, the target offset (TO) delivered by the tagged tagged data placement protocol (DDP) segment defines the offset in the registered memory area.

이제 도 5를 참조하여, RDMA의 원격 메모리 액세스 동작, 즉 판독 및 기록에 대해 설명한다. 원격 기록 동작은 원격 메모리에 배치되어야 하는 데이터를 전달하는 RDMA 기록 메시지 - 태그형(Tagged) DDP 메시지 - 를 사용하여 구현될 수 있다[참조 번호(501)로 나타냄].Referring now to FIG. 5, the remote memory access operation of RDMA, i.e., read and write, is described. The remote write operation can be implemented using an RDMA write message-a tagged DDP message-that carries data that must be placed in the remote memory (denoted by reference numeral 501).

원격 판독 동작은 2개의 RDMA 메시지 - RDMA 판독 요청 메시지 및 RDMA 판독 응답 메시지 - 를 사용하여 구현될 수 있다[참조 번호(502)로 나타냄]. RDMA 판독은 데이터를 페치해와야 할 장소 및 데이터를 배치하기 위한 장소 둘다를 지정하는 비태그형(Untagged) DDP 메시지이다. RDMA 판독 응답은 RDMA 판독 요청에 의해 요청된 데이터를 전달하는 태그형 DDP 메시지이다.The remote read operation can be implemented using two RDMA messages-an RDMA read request message and an RDMA read response message-indicated by reference numeral 502. RDMA reads are Untagged DDP messages that specify both where data should be fetched and where to place data. The RDMA read response is a tagged DDP message that carries the data requested by the RDMA read request.

착신 태그형 DDP 세그먼트를 처리하는 프로세스(이는 RDMA 기록 및 RDMA 판독 응답 둘다에 사용됨)는 STag에 의해 언급되는 PB를 읽는 단계(503), 액세스 검증(504), 영역 페이지-리스트(변환 테이블)를 읽는 단계(505) 및 메모리에의 직접 기록 동작(506)을 포함할 수 있지만, 이에 한정되는 것은 아니다. 착신 RDMA 판독 요청은 RNIC에 의해 큐잉될 수 있다(507). 이 큐는 판독 응답 작업 큐(ReadResponse WorkQueue)라고 한다.The process of processing the incoming tagged DDP segment (which is used for both RDMA write and RDMA read response) involves reading the PB referred to by the STag (503), access verification (504), area page-list (conversion table). A read operation 505 and a direct write operation 506 to memory. Incoming RDMA read requests may be queued by the RNIC (507). This queue is called the ReadResponse WorkQueue.

RNIC는 모든 선행하는 RDMA 요청이 완료된 후에 RDMA 판독 요청을 순서대로 처리할 수 있으며(508), 요청자로 다시 전송되는 RDMA 판독 응답 메시지를 생성할 수 있다(509).The RNIC may process the RDMA read request in order after all preceding RDMA requests have been completed (508) and may generate (509) an RDMA read response message sent back to the requestor.

RDMA 판독 요청을 처리하는 프로세스는 선택적인 RDMA 판독 요청의 판독 응답 작업 큐에 큐잉(queue) 및 디큐잉(dequeue)하는 단계(510), 데이터 소스 STag(이 STag는 데이터를 읽어와야 하는 메모리 영역을 언급함)에 의해 언급되는 PB를 읽는 단계(511), 액세스 검증(512), 영역 페이지-리스트(변환 테이블)를 읽는 단계(513), 및 메모리로부터의 직접 판독 동작 및 RDMA 판독 응답 세그먼트를 생성하는 단계(514)를 포함할 수 있지만, 이에 한정되는 것은 아니다.The process of processing an RDMA read request may include queuing and dequeuing an optional RDMA read request with a read response work queue (510), the data source STag (which is the area of memory where the data should be read). Read PB (511), access verification 512, read region page-list (conversion table) (513), and read directly from memory and generate RDMA read response segments Step 514 may be included, but is not limited thereto.

RDMA는 시스템 메모리에 로컬적으로도 원격적으로도 액세스하는 것을 가능하게 해주는 ATP(Address Translation and Protection, 주소 변환 및 보호) 메커니즘을 정의한다. 이 메커니즘은, 도 6을 참조하여 이제부터 설명하는 바와 같이, 액세스해야 하는 메모리의 등록에 기초한다.RDMA defines an Address Translation and Protection (ATP) mechanism that enables local and remote access to system memory. This mechanism is based on the registration of the memory to be accessed, as will now be described with reference to FIG. 6.

메모리 등록은 원격 메모리 액세스를 위해 요구되는 필수적인 동작이다. 2가지 방법, 즉 메모리 윈도우(Memory Window) 및 고속 메모리 등록(Fast Memory Registration)이 RDMA에서 사용될 수 있다.Memory registration is an essential operation required for remote memory access. Two methods can be used in RDMA: Memory Window and Fast Memory Registration.

메모리 윈도우 방법[참조 번호(600)]은 원격적으로 액세스될 메모리가 정적 (static)일 때 사용될 수 있고, 액세스될 메모리가 어느 것인가는 미리 알게 된다(601). 그 경우, 메모리 영역은 소위 고전적 메모리 등록 방식을 사용하여 등록되고, PB 및 TT(Translation Table, 변환 테이블)의 할당 및 갱신은 하드웨어의 도움을 받거나 받지 않고 드라이버에 의해 수행된다(602). 이것은 PB 및 TT 둘다가 각자의 정보로 갱신될 때에만 완료될 수 있는 동기적 동작이다. 메모리 윈도우는 등록된 메모리 영역의 전부(또는 일부)에의 원격 메모리 액세스를 허용(또는 금지)하는 데 사용된다(603). 이 프로세스는 윈도우 바인딩(Window Binding)이라고 하며, 소비자 요청 시에 RNIC에 의해 수행된다. 이는 메모리 등록보다 훨씬 더 빠르다. 그렇지만, 메모리 윈도우가 원격 액세스를 허용하는 유일한 방법이 아니다. 영역 자체의 STag도 또한 이 목적을 위해 사용될 수 있다. 따라서, 등록된 메모리에 액세스하기 위해 3가지 메커니즘, 즉 정적으로 등록된 영역을 사용하는 것, 이들 영역에 바인딩된 윈도우를 사용하는 것, 및/또는 고속의 등록된 영역을 사용하는 것이 사용될 수 있다.The memory window method (reference number 600) can be used when the memory to be accessed remotely is static and knows in advance which memory is to be accessed (601). In that case, the memory area is registered using a so-called classical memory registration scheme, and the allocation and updating of PB and TT (Translation Table) is performed by the driver with or without hardware assistance (602). This is a synchronous operation that can only be completed when both PB and TT are updated with their respective information. The memory window is used to allow (or inhibit) remote memory access to all (or a portion) of the registered memory area (603). This process is called window binding and is performed by the RNIC at the consumer request. This is much faster than memory registration. However, memory windows are not the only way to allow remote access. The STag of the area itself can also be used for this purpose. Thus, three mechanisms can be used to access registered memory: using statically registered regions, using windows bound to these regions, and / or using fast registered regions. .

원격 액세스를 위한 메모리를 미리 알고 있지 못한 경우(604), 사전 등록된 영역의 사용은 효율적이지 않다. 그 대신에 RDMA는 고속 메모리 등록 및 무효 방법(605)을 정의한다.If the memory for remote access is not known beforehand (604), use of a pre-registered area is not efficient. Instead, RDMA defines a fast memory registration and invalidation method 605.

이 방법은 메모리 등록 프로세스를 2 부분, 즉 영역에 의해 소비될 RNIC 자원의 할당(606)(예를 들어, 페이지-리스트를 보유하기 위해 사용되는 PB 및 TT의 일부분), 및 영역별 정보를 보유하기 위해 PB 및 TT의 갱신(607)으로 분할한다. 첫번째 동작(606)은 소프트웨어에 의해 수행될 수 있고, 각각의 STag에 대해 한번씩 수행될 수 있다. 두번째 동작(607)은 소프트웨어에 의해 포스트될 수 있고 하드웨어에 의해 수행될 수 있으며, (등록될 각각의 새로운 영역/버퍼에 대해) 여러번 수행될 수 있다. 고속 메모리 등록 이외에, RDMA는 STag를 무효화하고 나중에 계속하여 그를 재사용하는 것을 가능하게 해주는 무효화(Invalidate) 동작을 정의한다(608).This method keeps the memory registration process in two parts: the allocation 606 of RNIC resources to be consumed by the region (e.g., the portion of the PB and TT used to hold the page-list), and region-specific information. To update 607 of PB and TT. The first operation 606 may be performed by software and may be performed once for each STag. The second operation 607 may be posted by software and performed by hardware, and may be performed multiple times (for each new area / buffer to be registered). In addition to fast memory registration, RDMA defines an Invalidate operation that allows to invalidate the STag and continue to reuse it later (608).

고속 메모리 등록 및 무효화 동작 둘다는 비동기적 동작으로서 정의된다. 이들은 작업 요청으로서 RNIC 송신 큐로 포스트되며, 이들의 완료는 연관된 완료 큐를 통해 보고된다.Both fast memory registration and invalidation operations are defined as asynchronous operations. These are posted to the RNIC send queue as work requests, and their completion is reported through the associated completion queue.

RDMA는 2가지 유형의 수신 큐(Receive Queue, RQ), 즉 공유(Shared) 및 비공유(Not Shared) 수신 큐(RQ)를 정의한다. 공유 RQ는 다수의 연결 간에 공유될 수 있으며, 이러한 큐로 포스트되는 수신 WR은 서로 다른 연결을 통해 수신되는 송신 메시지에 의해 소비될 수 있다. 비공유 RQ는 항상 하나의 연결과 연관되어 있으며, 이러한 RQ로 포스트되는 WR은 이 연결을 통해 수신된 송신에 의해 소비된다.RDMA defines two types of receive queues (RQs): shared and not shared receive queues (RQs). The shared RQ can be shared between multiple connections, and the receive WR posted to this queue can be consumed by outgoing messages received over different connections. A nonshared RQ is always associated with one connection, and the WR posted to this RQ is consumed by transmissions received over this connection.

이제 도 7 및 도 8을 참조하여, 본 발명의 일 실시예에 따라, RNIC를 지원하는 RDMA에 의한 iSCSI 데이터 이동 동작의 오프로드에 대해 설명한다.Referring now to FIGS. 7 and 8, an offload of an iSCSI data movement operation by RDMA supporting RNIC will be described, in accordance with an embodiment of the present invention.

먼저 도 7을 참조한다. 본 발명의 비제한적인 실시예에 따르면, 종래의 RDMA 오프로드 기능은 2 부분, 즉 RDMA 서비스 유닛(700)과 RDMA 메시징 유닛(701)으로 분할될 수 있다. RDMA 메시징 유닛(701)은 착신 및 발신 RDMA 메시지를 처리할 수 있으며, 또 RDMA 서비스 유닛(700)에 의해 제공된 서비스를 사용하여 직접 배치 및 전달 동작을 수행할 수 있다. iSCSI 오프로드를 가능하게 해주기 위해, iSCSI 오프로드 기능은 iSCSI 메시징 유닛(702)에 의해 대체되어 그것으로 수행될 수 있다. iSCSI 메시징 유닛(702)은 착신 및 발신 iSCSI PDU를 처리하는 일을 맡을 수 있고 또 RDMA 서비스 유닛(700)에 의해 제공된 서비스를 사용하여 직접 배치 및 전달을 수행할 수 있다.First, reference is made to FIG. 7. According to a non-limiting embodiment of the present invention, the conventional RDMA offload function can be divided into two parts, the RDMA service unit 700 and the RDMA messaging unit 701. The RDMA messaging unit 701 may process incoming and outgoing RDMA messages and may perform direct deployment and forwarding operations using the services provided by the RDMA service unit 700. To enable iSCSI offload, the iSCSI offload function may be replaced by and performed by iSCSI messaging unit 702. The iSCSI messaging unit 702 may be responsible for handling incoming and outgoing iSCSI PDUs and may also perform direct deployment and delivery using the services provided by the RDMA service unit 700.

RDMA 서비스 유닛(700)에 의해 제공된 서비스 및 인터페이스는 iSCSI 및 RDMA 오프로드 기능 둘다에 대해 동일하다.The services and interfaces provided by RDMA service unit 700 are the same for both iSCSI and RDMA offload functionality.

이제 도 8을 참조한다. 모든 iSCSI PDU는 하드웨어로 생성되는 데이터-아웃(802)을 제외하고는 소프트웨어로 생성된다[참조 번호(801)]. 생성된 iSCSI PDU는 송신 작업 요청으로서 송신 큐로 포스트될 수 있다(803). RNIC는 연관된 완료 큐를 통해 이들 WR의 완료(성공적인 전송 동작)를 보고한다(804).Reference is now made to FIG. 8. All iSCSI PDUs are generated in software except data-out 802, which is generated in hardware (reference number 801). The generated iSCSI PDU may be posted to the transmit queue as a transmit work request (803). The RNIC reports 804 the completion (successful transmission operation) of these WRs through the associated completion queue.

소프트웨어는 버퍼를 수신 큐(예를 들어 수신 작업 요청을 가짐)로 포스트하는 일을 맡고 있다(805). 유의할 점은 좋지 않은 경쟁 상황을 회피하기 위해 수신 버퍼가 일반적으로 송신 버퍼 이전에 포스트될 수 있다는 것이다. 송신 및 수신 버퍼를 포스트하는 특정의 순서는 본 발명에 중요하지 않으며 구현자의 몫일 수 있다. 버퍼는 착신 제어 및 요청되지 않은 데이터-아웃 PDU에 대해 사용될 수 있다(806). RNIC는 2개의 RQ - 하나는 착신 iSCSI 제어 PDU를 위한 것이고 다른 하나는 요청되지 않은 착신 데이터-아웃을 위한 것임 - 를 지원하기 위해 확장될 수 있다(807). 소프트웨어는 공유 RQ를 사용하여 메모리 관리 및 iSCSI 제어 PDU에 사용되는 버퍼의 활용도를 개선할 수 있다(808).The software is responsible for posting the buffer to a receive queue (e.g., having a receive job request) (805). Note that the receive buffer can generally be posted before the send buffer to avoid bad race conditions. The particular order of posting the transmit and receive buffers is not critical to the invention and may be left to the implementer. The buffer may be used for incoming control and unsolicited data-out PDUs (806). The RNIC may be extended (807) to support two RQs, one for the incoming iSCSI control PDU and the other for unsolicited incoming data-out. Software may use shared RQ to improve the utilization of buffers used for memory management and iSCSI control PDUs (808).

제어 수신 또는 요청되지 않은 데이터-아웃 PDU는 완료 큐를 사용하여 보고 될 수 있다(809). iSCSI PDU 데이터에서 검출된 데이터 오염 또는 다른 에러는 RQ 내의 WQE를 소비하는 iSCSI PDU에 대한 완료 큐를 통해 또는 데이터 이동 iSCSI PDU에 대한 비동기적 이벤트 큐를 통해 보고될 수 있다(810). 이어서, RNIC는 그 다음 PDU를 처리할 수 있다(811).Control-received or unsolicited data-out PDUs may be reported using the completion queue (809). Data corruption or other errors detected in the iSCSI PDU data may be reported 810 via a completion queue for the iSCSI PDU consuming WQE in the RQ or through an asynchronous event queue for the data moving iSCSI PDU. The RNIC may then process 811 the PDU.

본 발명의 비제한적인 실시예에 따르면, RDMA-기반 메커니즘을 사용하는 iSCSI 시맨틱스의 구현은 iSCSI 및 iSER-기반 솔루션에 대한 단일화된 소프트웨어 아키텍처로 실시될 수 있다.According to a non-limiting embodiment of the present invention, implementation of iSCSI semantics using an RDMA-based mechanism can be implemented with a unified software architecture for iSCSI and iSER-based solutions.

이제 도 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 데이터 시퀀스의 전송/수신을 요청할 때 모든 필요한 데이터 전송이 일어나도록 보장해준다.Referring now to FIG. 9, a software architecture implemented using RDMA-based iSCSI offload is described. SCSI layer 900 communicates with iSCSI driver 901 via an iSCSI application protocol. The data mover interface 902 interfaces with the iSCSI driver 901, the iSER data mover 903, and the iSCSI data mover 904. The manner in which the data mover interface 902 interfaces with these components may be in accordance with the standard data mover interface defined by the RDMA consortium. One non-limiting advantage of this software architecture is the high sharing of software components and interfaces between the iSCSI and iSER software stacks. The data mover interface allows the iSCSI driver to split data movement and iSCSI management functions. In simple terms, the data mover interface is used when the SCSI layer 900 requests the transmission of a command, for example to complete a SCSI command to an initiator, or, for example, to complete a portion of a SCSI command to a target. This ensures that all necessary data transmissions occur when requesting the transmission / reception of a sequence.

iSCSI 및 iSER 데이터무버(903, 904)의 기능은 RNIC(906)에 의해 구현되는 RDMA-기반 서비스(905)로 오프로드될 수 있다. 본 발명의 일 실시예에 따르면, RDMA 메커니즘을 사용하여 iSCSI 기능을 오프로드하는 것은 iSCSI 타겟 및 iSCSI 개시자 기능 둘다를 오프로드하는 것을 포함한다. 오프로드 기능(타겟 및/또는 개시자) 각각은 다른 기능 또는 종단(end-point)과 분리하여 또 그와 독립적으로 구현될 수 있다. 환언하면, 개시자는 오프로드된 데이터 이동 동작을 가질 수 있으며, 여전히 어떤 변경 또는 개조를 필요로 하지 않고 타겟의 임의의 다른 iSCSI 구현과 통신할 수 있다. 오프로드된 iSCSI 타겟 기능에 대해서도 마찬가지이다. iSCSI 데이터 이동 기능을 오프로드하는 데 사용되는 모든 RDMA 메커니즘은 로컬이고 원격측에 대해 투명하다.The functionality of the iSCSI and iSER data movers 903 and 904 may be offloaded to the RDMA-based service 905 implemented by the RNIC 906. According to one embodiment of the invention, offloading the iSCSI function using the RDMA mechanism includes offloading both the iSCSI target and the iSCSI initiator function. Each offload function (target and / or initiator) may be implemented separately from and independent of other functions or end-points. In other words, the initiator may have an offloaded data movement operation and still communicate with any other iSCSI implementation of the target without requiring any changes or modifications. The same applies to the offloaded iSCSI target function. All RDMA mechanisms used to offload the iSCSI data movement feature are local and transparent to the remote side.

이제 도 10을 참조하여, 본 발명의 일 실시예에 따른, 하드웨어/소프트웨어 상호작용없이 iSCSI 데이터 이동 PDU의 SCSI 버퍼로의 직접 데이터 배치(direct data placement)에 대해 설명한다. 먼저, RNIC는 (예를 들어, 소프트웨어에 의해) SCSI 버퍼에 대한 설명을 제공받는다[참조 번호(1001)]. 각각의 SCSI 버퍼는 각각 ITT 또는 TTT에 의해 일의적으로 식별될 수 있다(1002). SCSI 버퍼는 하나 이상의 페이지 또는 블록으로 이루어져 있을 수 있으며, 페이지-리스트 또는 블록-리스트로 표현될 수 있다. Referring now to FIG. 10, direct data placement of an iSCSI data movement PDU to a SCSI buffer without hardware / software interaction is described, in accordance with an embodiment of the present invention. First, the RNIC is provided a description of the SCSI buffer (eg, by software) (reference number 1001). Each SCSI buffer may be uniquely identified by ITT or TTT, respectively (1002). The SCSI buffer may consist of one or more pages or blocks and may be represented as a page-list or a block-list.

직접 데이터 배치를 수행하기 위해, 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에서 버퍼 오프셋을 사용하는 것을 가능하게 해주는 제로-기반 유형의 메모리 영역일 수 있다.To perform direct data placement, the RNIC may perform a two stage resolution process. The first step 1003 involves identifying a SCSI buffer given an ITT (or TTT), and the second step 1004 finds a page / block in the list for reading / writing to this page / block. It includes. Both the first and second steps can use the address translation and protection mechanisms defined by RDMA and can use the STag and RDMA memory registration semantics to implement iSCSI ITT and TTT semantics. For example, an RDMA protection mechanism can be used to locate a SCSI buffer and to protect the buffer from unsolicited access (1005), and the address translation mechanism can be used to page / block within a page-list or block-list. Efficient access may be enabled (1006). In order to perform RDMA-like remote memory access to the iSCSI data movement PDU, the initiator or target software may register the SCSI buffer (eg, using register memory area semantics) (1007). As a result of memory registration, a protection block is associated with the SCSI buffer. As such, the protection block points to a translation table entry that holds a page-list or block-list describing a SCSI buffer. The registered memory area may be a zero-based type of memory area that enables the use of a buffer offset in an iSCSI data movement PDU to access a SCSI buffer.

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).The ITT and TTT used in the iSCSI control PDU may get the value of STag referring to the registered SCSI buffer (1008). For example, a SCSI read command generated by the initiator may carry an ITT such as a STag of a registered SCSI buffer. Corresponding data-in and SCSI response PDUs may also carry this STag. Thus, the STag can be used to perform remote direct data placement by the initiator. In the case of a SCSI write command, the target may register its SCSI buffer allocated for the requested incoming data-out PDU, and may use a TTT such as the STag of the SCSI buffer in the R2T PDU (1009).

본 발명의 이 비제한적인 방법은 iSCSI 규격에 정의된 그 동작들의 유연성을 보존하면서 iSCSI 데이터 이동 동작의 효율적인 오프로드를 수행하기 위해 기존의 하드웨어 및 소프트웨어 메커니즘을 이용하는 것을 가능하게 해준다.This non-limiting method of the present invention makes it possible to use existing hardware and software mechanisms to perform efficient offloading of iSCSI data movement operations while preserving the flexibility of those operations defined in the iSCSI specification.

이제 도 11a 및 도 11b를 참조하여, 본 발명의 일 실시예에 따라, 도 10을 참조하여 기술된 RDMA 보호 및 주소 변환 방법을 사용하여 RNIC에 의해 데이터-인 및 요청된 데이터-아웃을 처리하는 것, 및 그 PDU에 의해 전달되는 iSCSI 페이로드의 등록된 SCSI 버퍼로의 직접 데이터 배치를 수행하는 것에 대해 설명한다. 게다가, RNIC는 데이터-인 및 데이터-아웃의 데이터 시퀀싱을 추적할 수 있고 또 iSCSI 규격에 의해 정의된 iSCSI 시퀀싱 규칙을 시행할 수 있으며 또 데이터 트랜잭션의 끝에서 PB의 무효화를 수행할 수 있다.Referring now to FIGS. 11A and 11B, in accordance with an embodiment of the present invention, processing data-in and requested data-out by the RNIC using the RDMA protection and address translation method described with reference to FIG. 10. And performing direct data placement of the iSCSI payload carried by the PDU into the registered SCSI buffer. In addition, the RNIC can track data sequencing of data-in and data-out, enforce iSCSI sequencing rules defined by the iSCSI specification, and perform PB invalidation at the end of data transactions.

착신 데이터-인 및 요청된 데이터-아웃은 RNIC에 의해(각각 개시자 및 타겟에 의해) 아주 유사하게 처리될 수 있다. 이들 PDU 유형 둘다에 공통인 프로세싱에 대해 이제부터 설명한다.Incoming data-in and requested data-out can be handled very similarly by the RNIC (by initiator and target, respectively). Processing common to both of these PDU types will now be described.

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를 개별적으로 생성할 때, 이전에 드라이버에 의해 사용되었음)로서 사용할 수 있다.The RNIC first detects iSCSI data-in and requested data-out PDUs (1101). This can be accomplished by the BHS: Opcode and BHS: TTT fields, but is not limited to this (TTT = h'FFFFFFFF 'indicates that no data-out PDU is requested, and this PDU is a control iSCSI PDU as described above. Treated as). The RNIC can use the BHS: TTT field for data-in PDUs and BHS: TTT for data-out PDUs as STags (which were previously used by the driver when the driver individually created SCSI commands or R2Ts). have.

RNIC는 예를 들어 개별적인 등록된 SCSI 버퍼에 대해 기술하고 또 액세스 허용(access permission)을 검증하는 STag의 인덱스 필드를 사용하여 PB를 찾아낼 수 있다(1102). RNIC는 예를 들어 BHS:BufferOffset을 사용하여, 등록된 SCSI 레지스터 내에서 데이터가 액세스되는 위치를 알고 있을 수 있다(1103). 이어서, RNIC는 주소 변환 메커니즘을 사용하여 페이지/블록을 분해하고 등록된 SCSI 버퍼로의 직접 데이터 배치(또는 직접 데이터 판독)를 수행할 수 있다(1104).The RNIC may find the PB using, for example, an index field of the STag that describes the individual registered SCSI buffers and verifies access permissions (1102). The RNIC may know where the data is accessed within a registered SCSI register, for example using BHS: BufferOffset (1103). The RNIC may then use the address translation mechanism to break up the page / block and perform direct data placement (or direct data read) to the registered SCSI buffer (1104).

소비자 소프트웨어(드라이버)는 RNIC에 의해 수행되는 직접 배치 동작을 알지 못한다. 'F-비트'가 세트된 요청된 데이터-아웃 PDU의 경우를 제외하고는 완료 통지가 없다.Consumer software (drivers) do not know the direct deployment operations performed by the RNIC. There is no completion notification except in the case of the requested data-out PDU with the 'F-bit' set.

직접 배치 동작 이외에(예를 들어, 그 이전에), RNIC는 착신 PDU의 시퀀스 검증을 수행할 수 있다(1105). 데이터-인 및 데이터-아웃 PDU 둘다는 DataSN을 전달한다. DataSN은 데이터-인의 경우에 각각의 SCSI 명령에 대해 또 데이터-아웃의 경우에 각각의 R2T에 대해 영으로 될 수 있다(1106). RNIC는 ExpDataSN을 보호 블록에 보관할 수 있다(1107). 이 필드는 PB 초기화 시에 영으로 초기화될 수 있다(고속 메모리 등록)(1108). 각각의 착신 데이터-인 또는 요청된 데이터-아웃 PDU에 있어서, 이 필드는 BHS:DataSN과 비교될 수 있다(1109).In addition to (eg, prior to) a direct placement operation, the RNIC may perform sequence verification of the incoming PDU (1105). Both data-in and data-out PDUs carry a DataSN. The DataSN may be zero for each SCSI command in case of data-in and zero for each R2T in case of data-out (1106). The RNIC may keep the ExpDataSN in a protected block (1107). This field may be initialized to zero at PB initialization (fast memory registration) 1108. For each incoming data-in or requested data-out PDU, this field may be compared to BHS: DataSN (1109).

a. DataSN = ExpDataSN인 경우, PDU는 수락되고 RNIC에 의해 처리되며, ExpDataSN이 증가된다(1110).a. If DataSN = ExpDataSN, the PDU is accepted and processed by the RNIC, and the ExpDataSN is incremented (1110).

b. DataSN > ExpDataSN인 경우, 비동기적 이벤트 통지 메커니즘을 사용하는 등에 의해 소프트웨어에 에러가 보고된다(1111)(관련된 비동기적 에러 - 시퀀싱 에러). 이어서, PB 내의 ErrorBit가 세트될 수 있고, (STag를 사용하여) 이 PB를 언급하는 각각의 착신 PDU는 이 시점부터 시작하여 폐기되어진다. 이것은 iSCSI 드라이버가 iSCSI 명령 레벨에서(또는 각각 R2T 레벨에서) 복구할 필요가 있음을 의미한다.b. If DataSN> ExpDataSN, an error is reported 1111 (related asynchronous error-sequencing error) to the software, such as by using an asynchronous event notification mechanism. The ErrorBit in the PB can then be set, and each incoming PDU that refers to this PB (using a stag) is discarded starting from this point. This means that the iSCSI driver needs to recover at the iSCSI command level (or at the R2T level respectively).

c. 마지막 경우는 고스트(ghost) PDU의 수신이다(DataSN < ExpDataSN). 그 경우에, 수신된 PDU가 폐기되고, 어떤 에러도 소프트웨어에 보고되지 않는다(1112). 이것은 iSCSI 규격에 의해 정의된 바와 같이 복제된 iSCSI PDU를 처리하는 것을 가능하게 해준다.c. The last case is the reception of ghost PDUs (DataSN <ExpDataSN). In that case, the received PDU is discarded and no error is reported to software (1112). This makes it possible to handle replicated iSCSI PDUs as defined by the iSCSI specification.

SCSI 판독 명령의 경우에, 개시자는 하나 이상의 데이터-인 PDU 및 그에 뒤따르는 SCSI 응답을 수신한다(1113). SCSI 응답은 BHS:ExpDataSN을 전달할 수 있다. 이 필드는 SCSI 응답 이전의 데이터-인의 개수를 가리킨다. iSCSI 시퀀싱 규칙의 시행을 완료하기 위해, RNIC는 BHS:ExpDataSN을, 그 SCSI 응답에 의해 전달되는 STag(ITT)에 의해 언급되는 PB:ExpDataSN과 비교할 수 있다. 불일치의 경우에, 완료 에러가 보고되어, 시퀀싱 에러가 검출되었음을 나타낸다(1114).In the case of a SCSI read command, the initiator receives 1113 one or more data-in PDUs followed by a SCSI response. The SCSI response can carry BHS: ExpDataSN. This field indicates the number of data-ins before the SCSI response. To complete enforcement of the iSCSI sequencing rules, the RNIC may compare BHS: ExpDataSN with PB: ExpDataSN referred to by the STag (ITT) carried by its SCSI response. In the case of a mismatch, a completion error is reported, indicating that a sequencing error has been detected (1114).

'F-비트'가 세트되어 있는 요청된 데이터-아웃 PDU는 이 PDU가 대응하는 R2T에 의해 요청된 트랜잭션을 완료한다는 것을 나타낸다(1115). 그 경우, 완료 통지는 소비자 소프트웨어로 전달된다(1116). 예를 들어, RNIC는 수신 큐로부터의 하나의 WQE를 건너뛸 수 있고 또 각자의 완료 큐에 CQE를 부가하여 데이터-아웃 트랜 잭션의 완료를 나타낼 수 있다. 타겟 소프트웨어는 R2T 동작이 완료되었는지 여부 및 R2T가 전체 SCSI 기록 동작이 완료되었음을 확인해주는 SCSI 응답을 생성할 수 있는지를 알기 위해 이 통지를 필요로 할 수 있다. 유의할 점은 이 통지가 착신 데이터-인 및 요청된 데이터-아웃 PDU를 처리할 때 RNIC로부터 소프트웨어로의 유일한 통지일 수 있다는 것이다. 상기한 시퀀싱 검증은 모든 데이터-아웃이 성공적으로 수신되어 등록된 버퍼에 배치되었음을 보장해준다. (세트된 'F-비트'를 전달하는) 마지막 데이터-아웃 PDU를 손실한 경우는 소프트웨어에 의해 처리될 수 있다(타임아웃 메커니즘).The requested data-out PDU with the 'F-bits' set indicates that this PDU completes the transaction requested by the corresponding R2T (1115). In that case, the completion notification is sent to the consumer software (1116). For example, the RNIC may skip one WQE from the receive queue and add a CQE to its completion queue to indicate the completion of the data-out transaction. The target software may need this notification to know whether the R2T operation has completed and whether R2T can generate a SCSI response confirming that the entire SCSI write operation has completed. Note that this notification may be the only notification from the RNIC to the software when processing the incoming data-in and requested data-out PDUs. The sequencing verification described above ensures that all data-outs have been successfully received and placed in a registered buffer. The loss of the last data-out PDU (delivering the set 'F-bits') can be handled by software (timeout mechanism).

데이터-인 및 요청된 데이터-아웃 PDU를 프로세싱하는 것을 마무리하기 위해 RNIC에 의해 수행될 수 있는 마지막 동작은 보호 블록의 무효화이다(1117). 이것은 데이터-인 및 'F 비트'가 세트된 요청된 데이터-아웃 PDU에 대해 행해질 수 있다. 무효화는 PDU 헤더로부터 수집된 STag에 의해 언급되는 PB에 대해 수행될 수 있다. 무효화된 STag는 요청된 데이터-아웃에 대한 CQE를 사용하여 또는 SCSI 기록 명령을 완료하는 SCSI 응답의 헤더(ITT 필드)로 SCSI 드라이버에 전달될 수 있다. 이것은 iSCSI 드라이버가 그 다음 SCSI 명령에 대해 해제된(freed) STag를 재사용할 수 있게 해준다.The last operation that may be performed by the RNIC to finish processing the data-in and requested data-out PDUs is invalidation of the protection block (1117). This may be done for the requested data-out PDU with the data-in and 'F bits' set. Invalidation may be performed for the PB referred to by the STag collected from the PDU header. The invalidated STag can be passed to the SCSI driver using CQE for the requested data-out or as a header (ITT field) of the SCSI response to complete the SCSI write command. This allows the iSCSI driver to reuse the freed STag for the next SCSI command.

타겟에 의해 등록된 영역의 무효화(1118)도 역시 이와 유사하게 수행될 수 있다. 유의할 점은 무효화에 대한 대안적인 방법이 수신된 SCSI 응답에서 STag(ITT)에 의해 언급되는 PB의 무효화일 수 있다는 것이다.Invalidation 1118 of the area registered by the target may similarly be performed. Note that an alternative method of invalidation may be invalidation of the PB referred to by the STag (ITT) in the received SCSI response.

이제 도 12를 참조하여, 본 발명의 일 실시예에 따라, 하드웨어로 착신 R2T 를 처리하는 것 및 데이터-아웃 PDU의 생성에 대해 설명한다.Referring now to FIG. 12, the processing of an incoming R2T in hardware and the generation of a data-out PDU, in accordance with one embodiment of the present invention, are described.

SCSI 기록 명령의 결과 개시자는 타겟으로부터 다수의 R2T를 수신할 수 있다(1201). 각각의 R2T는 개시자가 지정된 양의 데이터를 등록된 SCSI 버퍼 내의 지정된 장소로부터 페치하고 또 이 데이터를 데이터-아웃 PDU를 사용하여 타겟으로 전송할 것을 필요로 할 수 있다(1202). R2T는 SCSI 명령으로 개시자에 의해 제공된 ITT를 전달한다(1203). 앞서 기술한 바와 같이, 등록된 SCSI 버퍼의 STag는 드라이버가 SCSI 명령을 생성할 때 ITT 대신에 드라이버에 의해 사용될 수 있다(1204).The result initiator of the SCSI write command may receive a number of R2Ts from the target (1201). Each R2T may require the initiator to fetch a specified amount of data from a designated location in a registered SCSI buffer and send this data to the target using a data-out PDU (1202). R2T passes the ITT provided by the initiator in a SCSI command (1203). As described above, the STag of the registered SCSI buffer can be used by the driver instead of the ITT (1204) when the driver generates a SCSI command.

R2T PDU는 BHS:Opcode 필드를 사용하여 식별될 수 있다. RNIC는 BHS:R2TSN 필드를 사용하여 R2T 시퀀싱의 검증을 수행할 수 있다(1205). RNIC는 PB에 ExpDataSN 필드를 보유한다. 단방향 명령의 경우 개시자가 R2T 또는 데이터-인이 들어오는 것을 볼 수 있기 때문에, 동일한 필드가 시퀀싱 검증을 위해 사용될 수 있다. 착신 R2T에 대한 시퀀스 검증은 상기한 데이터-인 및 데이터-아웃에 대해 사용되는 시퀀스 검증의 프로세스와 동일할 수 있다(1206).R2T PDUs may be identified using the BHS: Opcode field. The RNIC may perform verification of R2T sequencing using the BHS: R2TSN field (1205). The RNIC holds the ExpDataSN field in the PB. For unidirectional commands, the same field can be used for sequencing verification because the initiator can see the R2T or data-in coming in. The sequence verification for the incoming R2T may be the same as the process of sequence verification used for data-in and data-out described above (1206).

RNIC는 착신 RDMA 판독 요청을 처리하는 경우와 동일한 메커니즘을 사용하여 시퀀스 검증을 통과한 R2T를 처리할 수 있다(1207). RNIC는 RNIC 전송 로직에 의해 전송될 필요가 있는 데이터-아웃에 대해 기술하는 WQE를 포스트하기 위해 별도의 판독 응답 작업 큐를 사용할 수 있다(1208)(RDMA 판독 요청의 경우에, RNIC는 RDMA 판독 응답에 대해 기술하는 WQE를 큐잉할 수 있다). 전송 로직은 송신 WQ와 판독 응답 WQ 간을 중재할 수 있고, 또 내부 중재 규칙에 따라 이들 각각으로부터 의 WQE를 처리할 수 있다(1209).The RNIC may use the same mechanism as it handles the incoming RDMA read request to process the R2T that passed the sequence verification (1207). The RNIC may use a separate read response work queue to post a WQE that describes the data-outs that need to be sent by the RNIC transmit logic (1208) (in the case of an RDMA read request, the RNIC reads an RDMA read response). Queue the WQE that describes The transmission logic may arbitrate between the sending WQ and the read response WQ and may process WQE from each of them according to an internal arbitration rule (1209).

각각의 수신된 R2T의 결과 단일의 데이터-아웃 PDU가 얻어질 수 있다(1210). 생성된 데이터-아웃 PDU는 BHS:ITT에 의해 언급된 등록된 SCSI 버퍼로부터 데이터를 전달할 수 있다(드라이버는 STag를 SCSI 명령 생성 시에 그곳에 배치함). BHS:BufferOffset 및 BHS:DesireDataTransferLength는 SCSI 버퍼에서의 오프셋 및 데이터 트랜잭션의 크기를 식별할 수 있다.A single data-out PDU may be obtained 1210 as a result of each received R2T. The generated data-out PDU may carry data from the registered SCSI buffer referred to by BHS: ITT (the driver places the STag there upon SCSI command generation). BHS: BufferOffset and BHS: DesireDataTransferLength can identify the offset in the SCSI buffer and the size of the data transaction.

RNIC가 F-비트가 세트된 R2T PDU에 대한 데이터-아웃을 전송할 때, RNIC는 원격측이 그 데이터-아웃 PDU의 성공적인 수신을 확인한 후에 STag(ITT)에 의해 언급된 보호 블록을 무효화할 수 있다. 이 SCSI 기록 명령을 위해 사용된 STag는 대응하는 SCSI 응답 PDU가 전달될 때 소프트웨어에 의해 재사용될 수 있다.When the RNIC sends a data-out for an R2T PDU with the F-bit set, the RNIC may invalidate the protection block mentioned by the STag (ITT) after the remote side confirms successful receipt of that data-out PDU. . The STag used for this SCSI write command can be reused by software when the corresponding SCSI response PDU is delivered.

메모리 영역 무효화에 대한 대안의 방법은 수신된 SCSI 응답에서의 STag(ITT)에 의해 언급된 PB의 무효화일 수 있다.An alternative method for memory area invalidation may be invalidation of the PB mentioned by the STag (ITT) in the received SCSI response.

본 발명에 대한 설명이 예시 및 설명을 위해 제공되었으며, 전부 망라하여 기술된 것도 아니고 또 본 발명을 개시된 형태로 한정하는 것도 아니다. 많은 수정 및 변형이 당업자에게는 자명할 것이다. 실시예는 본 발명의 원리, 실제 응용을 가장 잘 설명하고 또 당업자들이 고려된 특정 사용에 적합한 여러가지 수정을 갖는 여러가지 실시예에 대해 본 발명을 이해할 수 있도록 하기 위해 선택되고 기술되었다.The description of the invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or to limit the invention to the disclosed form. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiments have been chosen and described in order to best explain the principles, practical applications of the invention and to enable those skilled in the art to understand the invention with respect to various embodiments having various modifications suitable for the particular use contemplated.

Claims (28)

RDMA(Remote Direct Memory Access) 기능을 위해 사용되는 RNIC(Remote-direct-memory-access-enabled Network Interface Controller) 메커니즘을 사용하여 iSCSI(Internet Small Computer System Interface) 오프로드(offload) 개시자 기능(offload initiator function)을 제공하는 단계와;Internet Small Computer System Interface (SCSI) offload initiator capability using the Remote-direct-memory-access-enabled Network Interface Controller (RNIC) mechanism used for the Remote Direct Memory Access (RDMA) feature. providing a function); 정규의 TCP 접속을 사용하고 TCP(transport control protocol) 계층을 직접 통하여 iSCSI를 맵핑하는데 상기 RDMA 기능을 적용하는 단계Applying the RDMA function to use a regular TCP connection and to map iSCSI directly through a transport control protocol (TCP) layer 를 포함하는 iSCSI 오프로드(offload)를 구현하는 방법.How to implement the iSCSI offload (offload) comprising a. 제1항에 있어서, The method of claim 1, iSCSI 타겟 기능으로부터 분리하여 독립적으로 iSCSI 개시자 기능을 오프로드하는 단계offloading the iSCSI initiator function independently from the iSCSI target function 를 더 포함하는 iSCSI 오프로드(offload)를 구현하는 방법.How to implement the iSCSI offload (offload) further comprising. 제1항에 있어서, The method of claim 1, 상기 iSCSI 오프로드 개시자 기능을 제공하는 상기 단계는, The step of providing the iSCSI offload initiator function, RDMA 기록 동작의 로직(logic)을 사용하여 임의의 SCSI 버퍼 오프셋에 따라 임의의 순서로 사전 등록된 SCSI 버퍼들에 데이터-아웃 페이로드를 원격 직접 데이터 배치(remote direct data placement)를 행하는 단계Remote direct data placement of data-out payloads in pre-registered SCSI buffers in any order according to any SCSI buffer offset using the logic of the RDMA write operation. 를 포함하는 것인, To include, iSCSI 오프로드(offload)를 구현하는 방법.How to implement iSCSI offload. 제3항에 있어서, The method of claim 3, STag(steering tag)로서 사용되는 TTT(target task tag)에 의해 상기 사전 등록된 SCSI 버퍼들을 식별하는 단계Identifying the pre-registered SCSI buffers by a target task tag (TTT) used as a steering tag (STag) 를 더 포함하는 iSCSI 오프로드(offload)를 구현하는 방법.How to implement the iSCSI offload (offload) further comprising. 제1항에 있어서, The method of claim 1, 상기 iSCSI 오프로드 개시자 기능을 제공하는 단계는, Providing the iSCSI offload initiator function, 수신 작업 요청(Receive Work Request)들을 갖는 RDMA 수신 큐(receive queue)들을 사용하여 제어 iSCSI PDU들을 배치하는 단계Deploying control iSCSI PDUs using RDMA receive queues with Receive Work Requests 를 포함하는 것인, To include, iSCSI 오프로드(offload)를 구현하는 방법.How to implement iSCSI offload. 제5항에 있어서, The method of claim 5, 연관된 완료 큐(Completion Queue)를 통해 상기 수신 작업 요청들의 완료를 보고하는 단계Reporting the completion of the incoming work requests through an associated completion queue 를 더 포함하는 iSCSI 오프로드(offload)를 구현하는 방법.How to implement the iSCSI offload (offload) further comprising. 제1항에 있어서, The method of claim 1, 상기 iSCSI 오프로드 개시자 기능을 제공하는 단계는,Providing the iSCSI offload initiator function, iSCSI 애플리케이션 프로토콜을 통해 iSCSI 드라이버와 통신하는 SCSI 계층을 제공하는 단계와,providing a SCSI layer to communicate with the iSCSI driver through the iSCSI application protocol, 상기 iSCSI 드라이버와 인터페이스하고, iSER(iSCSI Extensions for RDMA) 데이터무버(datamover) 및 iSCSI 데이터무버와 인터페이스하는 데이터무버 인터페이스(datamover interface)를 제공하는 단계Providing an iSER (iSCSI Extensions for RDMA) data mover and an data mover interface to interface with the iSCSI data mover; 를 포함하는 것인, To include, iSCSI 오프로드(offload)를 구현하는 방법.How to implement iSCSI offload. 제7항에 있어서, The method of claim 7, wherein 상기 데이터무버 인터페이스를 사용하여 상기 iSCSI 드라이버의 데이터 이동 기능 및 iSCSI 관리 기능을 분할하는 단계Dividing the data movement function and the iSCSI management function of the iSCSI driver by using the data mover interface 를 더 포함하는 iSCSI 오프로드(offload)를 구현하는 방법.How to implement the iSCSI offload (offload) further comprising. 삭제delete 삭제delete 제1항 내지 제8항 중 어느 한 항에 따른 각각의 단계를 실행시키기 위한 명령어들을 포함하는 프로그램을 기록한, iSCSI 오프로드를 구현하는 컴퓨터 판독 가능 기록 매체.A computer-readable recording medium implementing iSCSI offload, which records a program comprising instructions for executing each step according to any one of claims 1 to 8. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 제1항 내지 제8항 중 어느 한 항에 따른 각각의 단계를 실행시키기 위한 수단을 포함하는, iSCSI 오프로드를 구현하는 시스템.A system for implementing iSCSI offload, comprising means for executing each step according to any one of claims 1 to 8. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020060000104A 2006-01-02 2006-01-02 RNC-based offload of iSCSI data transfer function by initiator Expired - Fee Related KR100834431B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060000104A KR100834431B1 (en) 2006-01-02 2006-01-02 RNC-based offload of iSCSI data transfer function by initiator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060000104A KR100834431B1 (en) 2006-01-02 2006-01-02 RNC-based offload of iSCSI data transfer function by initiator

Publications (2)

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

Family

ID=38507484

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060000104A Expired - Fee Related KR100834431B1 (en) 2006-01-02 2006-01-02 RNC-based offload of iSCSI data transfer function by initiator

Country Status (1)

Country Link
KR (1) KR100834431B1 (en)

Families Citing this family (6)

* 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
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
US9313274B2 (en) 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005044353A (en) 2003-07-18 2005-02-17 Microsoft Corp State migration in multiple nic rdma enabled devices
WO2005057416A1 (en) 2003-12-02 2005-06-23 International Business Machines Corporation Rdma completion and retransmit system and method
WO2005060580A2 (en) 2003-12-11 2005-07-07 International Business Machines Corporation Increasing tcp re-transmission process speed
JP2005538588A (en) 2002-09-05 2005-12-15 インターナショナル・ビジネス・マシーンズ・コーポレーション Switchover and switchback support for network interface controllers with remote direct memory access

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005538588A (en) 2002-09-05 2005-12-15 インターナショナル・ビジネス・マシーンズ・コーポレーション Switchover and switchback support for network interface controllers with remote direct memory access
JP2005044353A (en) 2003-07-18 2005-02-17 Microsoft Corp State migration in multiple nic rdma enabled devices
WO2005057416A1 (en) 2003-12-02 2005-06-23 International Business Machines Corporation Rdma completion and retransmit system and method
WO2005060580A2 (en) 2003-12-11 2005-07-07 International Business Machines Corporation Increasing tcp re-transmission process speed

Also Published As

Publication number Publication date
KR20070072682A (en) 2007-07-05

Similar Documents

Publication Publication Date Title
CN100462947C (en) Method and system for implementing offload initiator functionality
US20060165084A1 (en) RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET
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
US7502826B2 (en) Atomic operations
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
US7760741B2 (en) Network acceleration architecture
US9063928B2 (en) Processing data packets from a receive queue in a remote direct memory access device
US7761529B2 (en) Method, system, and program for managing memory requests by devices
US20070008989A1 (en) Packet processing
US7343527B2 (en) Recovery from iSCSI corruption with RDMA ATP mechanism
EP1543658B1 (en) One shot rdma having a 2-bit state
US20060168286A1 (en) iSCSI DATAMOVER INTERFACE AND FUNCTION SPLIT WITH RDMA ATP MECHANISM
TW200810461A (en) Network protocol stack isolation
US20070162637A1 (en) Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions
US8798085B2 (en) Techniques to process network protocol units
US7454667B2 (en) Techniques to provide information validation and transfer
KR100834431B1 (en) RNC-based offload of iSCSI data transfer function by initiator
US7383312B2 (en) Application and verb resource management
US20060168092A1 (en) Scsi buffer memory management with rdma atp mechanism
US20060168094A1 (en) DIRECT ACCESS OF SCSI BUFFER WITH RDMA ATP MECHANISM BY iSCSI TARGET AND/OR INITIATOR
US20090271802A1 (en) Application and verb resource management
CN115933973B (en) Method for remotely updating data, RDMA system and storage medium

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20060102

A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20060705

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20060102

Comment text: Patent Application

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

Comment text: Notification of reason for refusal

Patent event date: 20070517

Patent event code: PE09021S01D

PG1501 Laying open of application
E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20080317

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20080527

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20080528

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee