고성능 네트워킹 (RDMA, InfiniBand)
Source: Dev.to
Introduction
현대 컴퓨팅 환경, 특히 고성능 컴퓨팅(HPC), 인공지능(AI), 빅데이터 분석과 같은 분야에서는 극히 낮은 지연 시간과 높은 대역폭 데이터 전송 능력이 요구됩니다. 일반적인 통신에 효과적인 전통적인 네트워킹 프로토콜은 방대한 데이터 세트와 연산 집약적인 작업을 처리할 때 종종 한계를 보입니다. 원격 직접 메모리 접근(Remote Direct Memory Access, RDMA)과 인피니밴드(InfiniBand)와 같은 고성능 네트워킹 기술은 데이터 전송 시 운영체제 커널을 우회함으로써 지연 시간을 크게 줄이고 CPU 활용도를 향상시킵니다. 이 글에서는 RDMA와 InfiniBand의 개념을 살펴보고, 전제 조건, 장점·단점, 주요 특징 및 실제 적용에 대해 논의합니다.
What is RDMA?
원격 직접 메모리 접근(RDMA)은 한 컴퓨터에서 다른 컴퓨터로 운영체제의 CPU나 커널을 거치지 않고 직접 메모리에 접근할 수 있게 하는 네트워킹 기술입니다. 이 “제로‑카피” 방식은 데이터 전송이 서로 다른 머신의 애플리케이션 메모리 공간 사이에서 직접 이루어지기 때문에 지연 시간과 CPU 오버헤드를 크게 감소시킵니다. 본질적으로 한 머신의 프로세스가 대상 머신의 CPU 개입 없이 그 머신 메모리를 직접 읽거나 쓸 수 있게 합니다.
What is InfiniBand?
인피니밴드는 고대역폭·저지연 인터커넥트 기술로, 주로 HPC 환경에서 사용됩니다. RDMA를 활용해 뛰어난 성능을 달성하는 스위치 기반 네트워크 토폴로지를 위한 하드웨어·소프트웨어 사양입니다. 인피니밴드는 병렬 처리와 분산 컴퓨팅에 최적화된 고속 통신 패브릭을 제공합니다. RDMA가 데이터 전송 메커니즘이라면, 인피니밴드는 이를 기반으로 구축된 완전한 네트워킹 아키텍처이며, RDMA 데이터를 위한 전용 고속 고속도로라고 생각하면 됩니다.
Prerequisites for RDMA and InfiniBand
RDMA와 인피니밴드 솔루션을 구현하려면 신중한 계획과 특정 하드웨어·소프트웨어 구성이 필요합니다. 주요 전제 조건은 다음과 같습니다:
- RDMA‑Capable Network Interface Cards (RNICs) – 직접 메모리 접근 및 커널 우회를 처리하는 특수 네트워크 카드(예: Mellanox ConnectX 시리즈).
- InfiniBand Host Channel Adapters (HCAs) – RNIC에 해당하는 인피니밴드 장치로, 호스트 시스템과 인피니밴드 패브릭 사이의 인터페이스를 제공합니다.
- RDMA‑Aware Operating System – 최신 Linux 배포판(예: Red Hat, Ubuntu) 및 Windows Server는 기본 지원을 제공하지만, 특정 드라이버와 라이브러리가 필요할 수 있습니다.
- InfiniBand Subnet Manager – 토폴로지를 관리하고 IP 주소를 할당하며 인피니밴드 패브릭 내 라우팅을 담당하는 소프트웨어(예: OpenSM).
- RDMA Libraries and APIs – 애플리케이션은 Linux의
libibverbs나 Windows의 Winsock Direct와 같은 RDMA‑인식 라이브러리를 사용해야 합니다. - InfiniBand Switches – 인피니밴드 네트워크에서 고속 패킷 라우팅을 위해 설계된 특수 스위치.
Advantages of RDMA and InfiniBand
- Low Latency – OS 커널을 우회함으로써 지연 시간이 감소하고 노드 간 통신이 빨라집니다.
- High Bandwidth – 최신 인피니밴드 세대는 400 Gbps를 초과하여 대용량 데이터셋을 빠르게 이동시킵니다.
- CPU Offload – 직접 메모리 접근으로 CPU가 데이터 복사 작업에서 해방되어 연산 작업에 더 많은 처리 능력을 할당할 수 있습니다.
- Scalability – 스위치 기반 아키텍처는 확장을 용이하게 하여 증가하는 컴퓨팅 수요를 수용합니다.
- Improved Application Performance – 낮은 지연 시간, 높은 대역폭, CPU 오프로드가 결합되어 병렬·분산 애플리케이션 성능을 크게 향상시킵니다.
- Reduced Memory Footprint – 제로‑카피 전송은 메모리 사용량을 최소화하고 사용자 공간·커널 공간 복사에 따른 오버헤드를 없앱니다.
Disadvantages of RDMA and InfiniBand
- Higher Cost – RNIC, HCA, 인피니밴드 스위치는 일반 이더넷 장비보다 비용이 높습니다.
- Complexity – 배포와 관리에 전문 지식과 경험이 필요합니다.
- Compatibility Issues – 공급업체 간 하드웨어·소프트웨어 호환성을 확보하는 것이 어려울 수 있습니다.
- Security Considerations – 커널 우회는 무단 메모리 접근을 방지하기 위한 세심한 보안 설정이 요구됩니다.
- Limited Ecosystem (InfiniBand) – 인피니밴드 생태계는 이더넷에 비해 작아 도구와 애플리케이션 가용성이 제한될 수 있습니다.
Key Features of RDMA and InfiniBand
- Zero‑Copy Data Transfer – 커널 개입 없이 메모리 간 직접 이동.
- Kernel Bypass – 네트워크 통신에 수반되는 처리 오버헤드 감소.
- Hardware‑Accelerated Data Transfer – RNIC와 HCA가 제공하는 가속을 통한 고성능.
- Reliable Transport – 인피니밴드는 데이터 무결성과 전달을 보장합니다.
- Quality of Service (QoS) – 애플리케이션 요구에 따라 트래픽 우선순위를 지정할 수 있습니다.
- Congestion Control – 병목 현상을 방지하고 성능을 유지하는 정교한 메커니즘.
Code Snippet (Conceptual – using libibverbs in Linux)
The following snippet illustrates the basic idea of how RDMA works. It is highly simplified and not production‑ready.
#include <infiniband/verbs.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
struct ibv_device **dev_list;
int num_devices;
// Get the list of IB devices
dev_list = ibv_get_device_list(&num_devices);
if (!dev_list) {
perror("Failed to get IB device list");
return 1;
}
if (num_devices == 0) {
printf("No IB devices found\n");
ibv_free_device_list(dev_list);
return 0;
}
printf("Found %d IB devices\n", num_devices);
// For simplicity, use the first device
struct ibv_context *context = ibv_open_device(dev_list[0]);
if (!context) {
perror("Failed to open IB device");
ibv_free_device_list(dev_list);
return 1;
}
// ... (Further setup: protection domains, memory regions,
// completion queues, queue pairs, etc.)
// Example of RDMA Write (Highly Simplified)
// Assume 'remote_addr' and 'remote_rkey' are the address and key
// for the memory region on the remote machine.
// ibv_post_send(...); // Send the RDMA write request
ibv_close_device(context);
ibv_free_device_list(dev_list);
return 0;
}
Conclusion
RDMA와 인피니밴드는 고성능 네트워킹 솔루션을 구축하는 데 필수적인 기술입니다. 낮은 지연 시간, 높은 대역폭, CPU 오프로드 기능 덕분에 HPC, AI, 빅데이터 등 높은 요구 사항을 가진 애플리케이션에 최적화됩니다. 비용과 복잡성이 도전 과제로 남아 있지만, 지연 시간을 최소화하고 처리량을 극대화해야 하는 환경에서는 성능 이점이 투자를 정당화합니다. 데이터 양과 연산 요구가 계속 증가함에 따라 이러한 기술은 혁신적인 연구와 개발을 가능하게 하는 핵심 인프라가 될 것입니다. 애플리케이션 요구사항, 예산 제약, 기술 역량을 신중히 평가하여 적합성을 판단하고, 지속적인 R&D를 통해 네트워킹 성능의 한계를 계속해서 확장해 나가야 합니다.