RDMA

호두·2026년 2월 22일

기본 개념

RDMA(원격 직접 메모리 접근, Remote Direct Memory Access)

  • CPU 개입을 최소화하고 NIC(호스트 채널 어댑터, HCA)가 직접 원격 호스트의 메모리에 읽기/쓰기를 수행하는 기술.
  • 지연(latency)이 매우 낮고 처리량(throughput)이 높아 대규모 분산 연산·스토리지·데이터베이스·MPI 등에 자주 쓰임.
  • RDMA를 구현하기 위해서는 RDMA를 지원하는 네트워크 카드, 예를 들어 멜라녹스 Connect X 계열 등의 어댑터가 필요.
  • infiniband에서는 물리적 링크 계층 프로토콜 + InfiniBand Verbs API 라는 상위 수준 프로그래밍 API를 통해 RDMA 기술을 구현.

HCA(Host Channel Adapter)

NIC의 개념에 대응되는 infiniband 개념은 CA(Channel Adapter)이다. CA 중에 서버쪽에 꽂는 카드가 HCA, 스토리지 제품에 꽂는 제품을 TCA(Target Channel Adapter)이라고 함.
NIC에 고유한 식별자인 48bit MAC address가 존재하듯, HCA에는 64bit의 GUID(Global Unique Identifier)이 존재. -> 하지만 infiniband의 실제 통신은 GUID로 수행되지 않고 네트워크 성능을 위해 16 bit인 LID가 사용됨.
infiniband는 기본적으로 로컬 네트워크(서브넷)으로 구성되며, HCA가 서브넷에 추가될 때 subnet manager(SM)으로부터 HCA를 식별할 수 있는 LID(GUID와 1:1 대응)를 부여 받음. 서브넷을 넘어선 접근 시에는 GID를 사용함.
결국은, 서버(호스트)가 InfiniBand 네트워크에 연결하기 위해 사용하는 네트워크 카드.
Ethernet NIC의 InfiniBand 버전이라고 생각하면 됨.

LID(Local Identifier)

InfiniBand 스위치가 각 포트에 부여하는 LAN의 MAC 주소 같은 지역 주소
InfiniBand 서브넷(subnet) 내부에서만 유효한 주소
IP와 달리 계층 구조가 없음 (Flat addressing)
스위치가 부팅 시 자동으로 배정
IP 주소처럼 ping은 못하지만, RDMA 연결 시 LID 사용 가능

GID(Global Identifier)

글로벌 IB 네트워크에서 사용되는 IPv6 기반 주소
RoCE (RDMA over Converged Ethernet) 사용
IB + IP 혼합 환경
Multi-subnet 환경
IPv6 기반 라우팅 필요
Kubernetes + SR-IOV + RDMA 구성
GPU Operator / Network Operator 설정 시에도 GID 필요할 때 많음
iblinkinfo 나 ibnetdiscover 명령어를 통해 인피니밴드를 사용하면 따로 ip가 없어도 HCA를 통해 각 노드 간 통신이 됨을 확인할 수 있다. (특수한 네트워크 카드, 특수한 스위치가 필요)

rdma 관련 성능 테스트

전송: ib_send_bw 및 ib_send_lat
RDMA 읽기 : ib_read_bw 및 ib_read_lat
RDMA 쓰기: ib_write_bw 및 ib_write_lat
RDMA 원자 : ib_atomic_bw 및 ib_atomic_lat

메모리 리젼

infiniband가 kernel network stack을 오프로딩하고 애플리케이션 메모리 영역에 직접 메모리를 넣어주기 위해서는 애플리케이션 메모리 영역에 대한 조회/수정이 가능해야 함.
따라서, infiniband application에서는 HCA가 애플리케이션 메모리에 접근하기 위한 메모리 리전을 OS에 등록하는 과정을 수행한다.
이 때, 메모리 리전은 swap이 일어나지 않게 pinned memory로 생성되며, HCA는 물리 메모리와 가상 메모리 변환 테이블을 전달받게 되어 RDMA를 수행할 수 있게 된다.

infiniband는 일반적으로 GibE(Gigabit Ethernet)에 비해 하드웨어 성능도 좋지만 일반적으로 application에서 정보를 송/수신하기 위해 사용되던 kernel network stack을 offload하는 RDMA(Remote Direct Memory Access)기술로 인해 고성능 네트워크를 제공할 수 있다.

애플리케이션에서 메모리에 존재하는 다른 데이터를 다른 노드로 전송하기 위해서는 일반적으로 네트워크 커널을 거치게 된다.

데이터가 전송되는 플로우를 보면 application data in memory -> kernel space data copy -> OSI 4~2 encapsulation in kernel -> NIC space data copy by DMA 과정을 거치게 된다.

하지만 RDMA의 경우 애플리케이션 메모리에 존재하는 데이터를 HCA(Host Channel Adapter)를 통해 곧바로 다른 노드의 애플리케이션 메모리로 데이터를 전송하게 된다.

결국은 HCA에서 데이터 전송 시 network kernel stack을 오프로딩 함으로써 성능이 좋아진다.

이더넷 환경에서의 infiniband

지금까지 일반적인 애플리케이션은 커널의 ethernet 환경에 맞게 설계됨.

이러한 애플리케이션에 infiniband를 적용하기 위해서는 코드 레벨 변경이 필요한데, 이는 굉장히 부담스러운 작업임 -> infiniband장비로 kernel ethernet을 서빙하기 위해 커널 네트워크 스택에서 IB packet 처리를 위한 IPoIB driver를 제공.

RDMA는 노드 간 cpu 개입 없이 바로 메모리에 접근하기 위한 기능이고, 이 기능은 infiniband또는 RoCE를 통해 구현 가능.

IPoIB는 InfiniBand망 위에서 Ethernet처럼 행동하도록 에뮬레이션 하기 위한 커널 드라이버.

애플리케이션(ssh, curl)은 평소처럼 TCP/IP 패킷을 만들고

-> 커널은 IPoIB 드라이버를 통해 TCP/IP 패킷 앞뒤에 infiniband 통신에 필요한 LID,GID를 붙여서 encapsulation을 수행.

-> IPoIB를 통해 캡슐화된 패킷은 HCA로 전달.

-> 수신 측 IPoIB에서 디캡슐레이션 하여 내부의 TCP/IP로 변환 후 OS에 전달.

구분일반 네트워크 (Ethernet)고성능 네트워크 (InfiniBand)
케이블랜선 (UTP Cable, RJ45)인피니밴드 케이블 (DAC/AOC, QSFP 단자)
카드랜카드 (NIC, Network Interface Card)HCA (Host Channel Adapter)
역할패킷 전달 (CPU가 많이 관여)RDMA 처리 (CPU 없이 메모리 직접 전송)

RDMA는 노드 간 통신 시 사용되는 기술.

pci passthrough는 한 호스트 내에서 PCI에 장착된 장치들 예를 들어 NIC, GPU 등을 가상화된 영역 예를 들어 vm이 될 수도 있고 컨테이너가 될 수도 있고 에서 직접 접근해서 사용하기 위한 기술.

그리고 RDMA를 사용하기 위해서는 자체적으로 처리는 불가능하고 infiniband나 RoCE와 같은 환경이 필수.

GPU에서 노드 내 GPU카드간 통신은 nvlink를 통해 가속하고 GPU 노드간 통신은 RDMA를 통해 가속화함.

profile
Whatever you're not changing, you're choosing

0개의 댓글