iSCSI/iSER(RDMA용 iSCSI 확장) 기술을 대체하는데 사용되는 NVMe over Fabrics이 RDMA를 다시 인기 있게 만들었다는 것은 의심의 여지가 없습니다. NVMe over Fabrics를 소개하기 전에 먼저 RDMA에 대해 알아 봅니다.

(공사 중)Remote Direct Memory Access(RDMA) 소개

1. DMA와 RDMA의 개념

1.1 DMA란?

직접 메모리 액세스(DMA)는 연결된 장치에서 컴퓨터 마더보드의 메모리로 데이터를 직접 보낼 수 있도록 제공되는 기능입니다. 메모리로 보내기, 데이터 처리에는 CPU의 참여가 필요하지 않습니다.

img

1.2 RDMA란 무엇입니까?

RDMA는 두 대 이상의 컴퓨터가 한 시스템의 주 메모리에서 다른 시스템의 주 메모리로 직접 직접 메모리 액세스를 통해 통신 하는 개념입니다. RDMA는 두 대 이상의 컴퓨터가 DMA를 통해 한 호스트의 메모리에서 다른 호스트의 메모리에 직접 액세스하는 개념입니다.

img

RDMA는 애플리케이션(스토리지 포함)이 다른 애플리케이션의 메모리 공간에서 직접 데이터를 전송할 수 있도록 하는 호스트 오프로드, 호스트 바이패스 기술입니다. 호스트가 아닌 RDMA 가능 이더넷 NIC(RNIC)는 안정적인 관리 소스와 대상 간의 연결 애플리케이션은 전용 큐 쌍(QP) 및 완료 큐(CQ)를 사용하여 RDMA NIC와 통신합니다.

  • 각 애플리케이션에는 많은 QP 및 CQ가 있을 수 있습니다.
  • 각 QP에는 SQ(Send Queue) 및 RQ(Receive Queue)가 있습니다.
  • 각 CQ는 여러 SQ 또는 RQ와 연결될 수 있습니다.

RDMA는 애플리케이션(스토리지 포함)이 메모리 공간 간에 직접 데이터 전송을 수행할 수 있도록 하는 호스트 오프로드, 호스트 바이패스 기술입니다. RDMA 엔진이 있는 이더넷 카드(RNIC)(호스트가 아님)는 소스와 대상 간의 안정적인 연결 관리를 담당합니다. 전용 QP 및 CQ는 RNIC를 사용하는 애플리케이션 간 통신에 사용됩니다.

  • 각 애플리케이션에는 많은 QP 및 CQ가 있을 수 있습니다.
  • 각 QP에는 SQ 및 RQ가 포함됩니다.
  • 각 CQ는 여러 SQ 또는 RQ와 연결될 수 있습니다.

img

2. RDMA의 장점

기존의 TCP/IP 기술은 많은 서버 리소스와 메모리 버스 대역폭을 차지하는 데이터 패킷 처리 중에 운영 체제 및 기타 소프트웨어 계층을 통과해야 하며 데이터는 시스템 메모리, 프로세서 캐시 및 네트워크 컨트롤러 사이를 오가며 이동합니다. 캐시 복사 및 이동은 서버의 CPU와 메모리에 큰 부담을 줍니다. 특히, 네트워크 대역폭, 프로세서 속도 및 메모리 대역폭 간의 심각한 “불일치”는 네트워크 지연 효과를 악화시킵니다.

RDMA는 새로운 직접 메모리 액세스 기술로, RDMA를 통해 컴퓨터는 프로세서에서 처리하지 않고 다른 컴퓨터의 메모리에 직접 액세스할 수 있습니다. RDMA는 운영 체제에 영향을 주지 않고 데이터를 한 시스템에서 원격 시스템의 메모리로 빠르게 이동합니다.

구현 측면에서 RDMA는 실제로 완전히 최적화된 스마트 네트워크 카드 및 소프트웨어 아키텍처를 갖춘 원격 메모리 직접 고속 액세스 기술입니다.하드웨어(즉, 네트워크 카드)에서 RDMA 프로토콜을 강화하고 이를 달성하기 위한 두 가지 접근 방식을 지원합니다. 고성능 원격 직접 데이터 액세스 목표. RDMA 사용의 이점은 다음과 같습니다.

  • Zero-copy - 애플리케이션은 네트워크 소프트웨어 스택을 사용하지 않고 직접 데이터 전송을 수행할 수 있습니다. 데이터는 버퍼로 직접 전송되거나 네트워크 계층으로 복사되지 않고 버퍼에서 직접 수신될 수 있습니다.
  • 커널 바이패스(Kernel bypass) - 응용 프로그램은 커널 모드와 사용자 모드 간의 컨텍스트 전환 없이 사용자 모드에서 직접 데이터 전송을 수행할 수 있습니다.
  • CPU 개입 없음(CPU 개입 없음) - 응용 프로그램은 원격 호스트의 CPU를 사용하지 않고 원격 호스트 메모리에 액세스할 수 있습니다. 원격 호스트의 프로세스(또는 CPU)가 관여하지 않고 원격 호스트 메모리를 읽을 수 있습니다. 원격 호스트의 CPU 캐시(캐시)는 액세스된 메모리의 내용으로 채워지지 않습니다.
  • 메시지 기반 트랜잭션 - 데이터는 스트림이 아닌 개별 메시지로 처리되므로 애플리케이션이 스트림을 개별 메시지/트랜잭션으로 분할할 필요가 없습니다.
  • 분산/수집 항목 지원 - RDMA는 기본적으로 분산/수집 항목을 지원합니다. 즉, 여러 메모리 버퍼에서 읽고 스트림으로 보내거나 스트림을 수신하고 여러 메모리 버퍼에 씁니다.

특정 원격 메모리 읽기 및 쓰기에서 읽기 및 쓰기 작업을 위해 RDMA 작업에서 사용하는 원격 가상 메모리 주소는 RDMA 메시지에 포함되며 원격 응용 프로그램이 수행해야 하는 작업은 해당 메모리 버퍼를 로컬 네트워크에 등록하는 것입니다. 카드. 원격 노드의 CPU는 연결 설정, 등록 호출 등을 제외한 전체 RDMA 데이터 전송 프로세스 동안 서비스를 제공하지 않으므로 부하를 주지 않습니다.

img

3. RDMA를 지원하는 네트워크 프로토콜

호스트 오프로드, 호스트 바이패스 기술인 RDMA는 대기 시간이 짧은 고대역폭의 직접 메모리 간 데이터 통신을 가능하게 합니다. RDMA를 지원하는 현재 네트워크 프로토콜은 다음과 같습니다.

  • InfiniBand( IB ): 처음부터 RDMA를 지원하는 차세대 네트워크 프로토콜입니다. 이것은 새로운 네트워킹 기술이므로 이 기술을 지원하는 네트워크 카드와 스위치가 필요합니다.
  • RoCE (RDMA over Converged Ethernet ): 이더넷을 통해 RDMA를 구현하는 네트워크 프로토콜인 RDMA over Ethernet. 이렇게 하면 표준 이더넷 인프라(스위치)에서 RDMA를 사용할 수 있지만 NIC는 RoCE를 지원하는 특수 NIC여야 합니다.
  • 인터넷 광역 RDMA 프로토콜( iWARP ): RDMA over TCP, RDMA over TCP를 허용하는 네트워크 프로토콜. 이를 통해 표준 이더넷 인프라(스위치)에서 RDMA를 사용할 수 있지만 NIC는 iWARP를 지원하는 NIC여야 합니다(CPU 오프로드가 사용되는 경우). 그렇지 않으면 모든 iWARP 스택을 소프트웨어로 구현할 수 있지만 대부분의 RDMA 성능 이점이 손실됩니다.

img

세 가지 주류 RDMA 기술 중에서 두 진영으로 나눌 수 있습니다. 하나는 IB 기술이고 다른 하나는 RDMA 지원 이더넷 기술(RoCE 및 iWARP)입니다. 그 중 IBTA가 지원하는 기술은 당연히 IB와 RoCE인데, 멜라녹스(이스라엘의 소규모 기업)가 이런 점에서 선구자다. 그리고 iWARP는 IEEE/IETF에서 지원하는 기술로 주로 Chelsio에서 추진하고 있습니다. RoCE와 iWARP 간의 논쟁은 Mellanox와 Chelsio에서 발표한 백서를 참조하십시오.

img

스토리지 분야에서는 SRP(SCSI RDMA Protocol), iSER(iSCSI Extensions for RDMA) 등 RDMA를 지원하는 기술이 오랫동안 존재해 왔다. 새로운 NVMe over Fabrics가 FC 네트워크를 사용하지 않는 경우 본질적으로 NVMe over RDMA입니다. 즉, InfiniBand를 통한 NVMe, RoCE를 통한 NVMe 및 iWARP를 통한 NVMe는 모두 RDMA를 통한 NVMe입니다.

img

4. 기본 용어

4.1 패브릭 이란?

로컬 영역 RDMA 네트워크는 일반적으로 패브릭이라고 합니다.

소위 Fabric은 RDMA를 지원하는 LAN(Local Area Network)입니다.

4.2 CA 란 무엇입니까 ?

채널 어댑터는 시스템을 패브릭에 연결하는 하드웨어 구성 요소입니다.

CA는 Channel Adapter(채널 어댑터)의 약자입니다. CA는 시스템을 패브릭에 연결하는 하드웨어 구성 요소입니다. IBTA에서 CA는 IB 서브넷의 끝 노드(End Node)입니다. 두 가지 유형으로 나뉘는데 하나는 HCA이고 다른 하나는 TCA이며 이들을 총칭하여 xCA라고 합니다. 그 중 HCA(Host Channel Adapter)는 “동사” 인터페이스를 지원하는 CA이고, TCA(Target Channel Adapter)는 HCA와 같은 많은 기능을 지원할 필요가 없는 “약한 CA”로 이해될 수 있다. IEEE/IETF에서는 CA의 개념을 RNIC(RDMA Network Interface Card)로 구체화하고 있으며, iWARP에서는 CA를 RNIC라고 부른다.

요컨대 IBTA 진영에서 CA는 HCA 또는 TCA이고 iWARP 진영에서는 CA가 RNIC입니다. 요컨대 HCA든 TCA든 RNIC든 모두 CA이며 기본 기능은 본질적으로 데이터 패킷을 생성하거나 소비하는 것입니다.

4.3 동사 란?

RDMA의 지속적인 발전에 OpenFabric Alliance라는 조직이 많은 기여를 했습니다. Verbs라는 단어는 번역하기 쉽지 않으며 대략 RDMA 하드웨어에 액세스하기 위한 “일련의 표준 작업”으로 이해할 수 있습니다. 각 Verb는 Function 으로 이해할 수 있습니다 .

img

4.4 OFA 란 무엇입니까?

img

5. 핵심 개념

5.1 메모리 등록(MR)

img

RDMA 사용의 전제는 “메모리에 참여”하는 것입니다. “참여”하는 방법? 쉽습니다. 가입하세요. RDMA 하드웨어에는 데이터 전송에 사용되는 메모리에 대한 특별한 요구 사항이 있기 때문입니다.

  • 데이터 전송 중에 애플리케이션은 데이터가 상주하는 메모리를 수정할 수 없습니다.
  • 운영 체제는 데이터가 있는 메모리에서 페이지 아웃 작업을 수행할 수 없습니다. 물리적 주소와 가상 주소 간의 매핑은 고정되어야 합니다.

DMA이든 RDMA이든 물리적 주소는 연속적이어야 하며 이는 DMA 엔진에 의해 결정됩니다. 메모리를 등록하는 방법은 무엇입니까?

  • 작동해야 하는 메모리 영역을 가리키는 두 개의 키(로컬 및 원격) 생성
  • 등록된 키는 데이터 전송 요청의 일부입니다.

5.2 대기열

RDMA는 SQ(Send Queue), RQ(Receive Queue), CQ(Completion Queue) 총 3개의 큐를 지원합니다. 그 중 SQ와 RQ는 보통 쌍으로 생성되는데 이를 QP(Queue Pairs)라고 합니다.

img

RDMA는 메시지 기반 전송 프로토콜이며 데이터 전송은 비동기식입니다. RDMA 작업은 실제로 매우 간단하며 다음과 같이 이해할 수 있습니다.

  1. 호스트는 WQ(작업 대기열)에 작업 요청(WR)을 제출합니다. 작업 대기열에는 전송 대기열(SQ)과 수신 대기열(CQ)이 포함됩니다. 작업 대기열의 각 요소를 WQE 또는 WR이라고 합니다.
  2. 호스트는 완료 대기열(CQ)에서 작업 완료(WC)를 얻습니다. 완료 대기열의 각 작업을 CQE라고 하며, 이는 WC입니다.
  3. RDMA 엔진이 있는 하드웨어는 대기열 요소 프로세서입니다. RDMA 하드웨어는 실행을 위해 작업 대기열(WQ)에서 작업 요청(WR)을 지속적으로 가져오고 실행 후 작업 완료(WC)를 완료 대기열(CQ)에 배치합니다. 생산자-소비자 관점에서 보면 다음과 같습니다.
  • 호스트는 WR을 생성하고 WR을 WQ에 넣습니다.
  • RDMA 하드웨어 소비 WR
  • RDMA 하드웨어는 WC를 생성하고 WC를 CQ에 넣습니다.
  • 호스트 소비 WC

img

참고: PCIe를 통한 NVMe 구현에서 SPDK는 SQ(제출 대기열 제출 대기열) 및 CQ(완료 대기열 완료) 대기열을 집합적으로 qpair(대기열 쌍)로 지칭합니다. QP(대기열 쌍)는 오랫동안 SQ(Send Queue Sending Queue) 및 RQ(Receive Queue Receive Queue)의 공식 약자였기 때문에 개인적으로 이 공식이 부적절하다고 생각합니다.

6. RDMA 데이터 전송

6.1 RDMA 전송 | RDMA 전송(/수신) 동작( Send/Recv )

img

TCP/IP의 send/recv와 유사하나 차이점은 RDMA는 바이트 스트림 기반의 전송 프로토콜이 아닌 메시지 기반의 데이터 전송 프로토콜이며 모든 데이터 패킷의 조립은 RDMA에서 완료된다는 것입니다. 하드웨어, 즉 OSI 모델의 하위 4계층(전송계층, 네트워크계층, 데이터링크계층, 물리계층)이 모두 RDMA 하드웨어에서 완성된다고 한다.

6.2 RDMA 읽기 | RDMA 읽기 작업( 풀 )

img

RDMA 읽기 작업은 본질적으로 원격 시스템의 메모리에 있는 데이터를 로컬 시스템의 메모리로 다시 가져오는 끌어오기 작업입니다.

6.3 RDMA 쓰기 | RDMA 쓰기 작업( 푸시 )

img

RDMA 쓰기 작업은 본질적으로 로컬 시스템의 메모리에 있는 데이터를 원격 시스템의 메모리로 푸시하는 푸시 작업입니다.

6.4 즉시 데이터로 RDMA 쓰기 | 즉시 데이터를 지원하는 RDMA 쓰기 작업

img

즉각적인 데이터를 지원하는 RDMA 쓰기 작업은 본질적으로 OOB(out-of-band) 데이터를 원격 시스템으로 푸시(push)하는 것으로, 이는 TCP의 대역 외 데이터와 유사합니다.