Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

13장. InfiniBand 및 RDMA 네트워크 구성

13.1. InfiniBand 및 RDMA 기술 이해

InfiniBand는 다음과 같은 두 가지 요소를 나타냅니다. 첫 번째는 InfiniBand 네트워크의 물리적 링크 계층 프로토콜입니다. 두 번째는 InfiniBand Verbs API라는 상위 수준 프로그래밍 API입니다. InfiniBand Verbs API는RDMA( Remote Direct Memory Access ) 기술의 구현입니다.
RDMA는 컴퓨터의 운영 체제를 포함하지 않고 한 컴퓨터의 메모리에서 다른 컴퓨터의 메모리로 직접 액세스할 수 있도록 합니다. 이 기술을 사용하면 CPU 사용률이 짧은 처리량이 높고 대기 시간이 짧은 네트워킹을 사용할 수 있습니다. 특히 대규모 병렬 컴퓨터 클러스터에서 유용합니다.
일반적인 IP 데이터 전송에서 시스템 A의 애플리케이션 X는 일부 데이터를 시스템 B의 애플리케이션 Y로 보냅니다. 전송의 일환으로, 시스템 B의 커널은 먼저 데이터를 수신하고 패킷 헤더를 디코딩하고, 애플리케이션 Y에 속하는지 확인하고, 애플리케이션 Y가 읽기 syscall을 커널에 수행할 때까지 기다린 다음, 커널의 자체 내부 메모리 공간의 데이터를 애플리케이션 Y가 제공하는 버퍼로 수동으로 복사해야 합니다. 이 프로세스는 대부분의 네트워크 트래픽이 최소 두 번(호스트 어댑터에서 DMA를 사용하여 데이터를 커널 제공 메모리 버퍼에 넣은 경우)을 통해 복사해야 하며, 커널이 데이터를 애플리케이션의 메모리 버퍼로 이동할 때에도 컴퓨터가 커널 컨텍스트와 애플리케이션 Y 컨텍스트 간에 전환하기 위해 다수의 컨텍스트 스위치를 실행해야 함을 의미합니다. 이러한 두 가지 모두 네트워크 트래픽이 매우 빠른 속도로 이동하고 다른 작업을 속도 저하시킬 수 있는 경우 시스템에 매우 높은 CPU 부하를 부과합니다.
RDMA 통신은 통신 프로세스의 커널 개입을 우회하기 때문에 일반 IP 통신과는 다르며, 프로세스에서는 네트워크 통신을 처리하는 데 일반적으로 필요한 CPU 오버헤드를 크게 줄입니다. RDMA 프로토콜을 통해 시스템의 호스트 어댑터는 패킷이 네트워크에서 들어오는 시기, 해당 패킷을 수신해야 하는 애플리케이션 및 애플리케이션의 메모리 공간에 들어야 하는 위치를 알 수 있습니다. 패킷을 커널로 전송하여 사용자 애플리케이션 메모리에 복사한 다음 추가 조작 없이도 패킷의 콘텐츠를 애플리케이션 버퍼에 직접 배치합니다. 그러나 대부분의 IP 네트워킹 애플리케이션이 빌드된 표준 Berkeley Sockets API를 사용하여 수행할 수 없으므로 RDMA 기술을 직접 사용할 수 있으려면 자체 API, InfiniBand Verbs API 및 애플리케이션을 이 API에 이식해야 합니다.
Red Hat Enterprise Linux 7은 InfiniBand 하드웨어와 InfiniBand Verbs API를 모두 지원합니다. 또한 InfiniBand Verbs API를 비InfiniBand 하드웨어에서 활용할 수 있는 두 가지 추가 지원 기술이 있습니다.
  • iWARP(Internet Wide Area RDMA Protocol)
    iWARP는 IP(인터넷 프로토콜) 네트워크를 통한 효율적인 데이터 전송을 위해 RDMA(Remote Direct Memory Access)를 구현하는 컴퓨터 네트워킹 프로토콜입니다.
  • RoCE(RDMA over Converged Ethernet) 프로토콜은 나중에 IBoE(InfiniBand over Ethernet)로 이름이 변경되었습니다.
    RoCE는 이더넷 네트워크를 통해 RDMA(Remote Direct Memory Access)를 허용하는 네트워크 프로토콜입니다.

사전 요구 사항

iWARP 및 RoCE 기술은 모두 기본 기술로 일반 IP 네트워크 링크 계층을 있으므로 대부분의 구성은 실제로 3장. IP 네트워킹 구성 다룹니다. 대부분의 경우 IP 네트워킹 기능이 올바르게 구성되면 RDMA 기능이 모두 자동이며 하드웨어에 적합한 드라이버가 설치되는 한 표시됩니다. 커널 드라이버는 각 커널에 항상 포함되어 있지만 시스템 설치 시 InfiniBand 패키지 그룹을 선택하지 않은 경우 사용자 공간 드라이버를 수동으로 설치해야 합니다.
Red Hat Enterprise Linux 7.4부터 모든 RDMA 사용자 공간 드라이버가 rdma-core 패키지에 병합됩니다. 지원되는 모든 iWARP, RoCE 또는 InfiniBand 사용자 공간 드라이버를 설치하려면 root 로 다음을 입력하십시오.
~]# yum install libibverbs
PFC(우선 순위 흐름 제어) 및 mlx4 기반 카드를 사용하는 경우 /etc/modprobe.d/mlx4.conf 를 편집하여 이더넷 스위치의 no-drop 서비스에 대해 패킷 우선 순위가 구성된 드라이버에 지시하여 카드가 연결되고 initramfs 를 다시 빌드하여 수정된 파일을 포함합니다. 최신 mlx5 기반 카드는 스위치로 PFC 설정을 자동 협상하며 드롭 되지 않은 우선 순위 또는 우선 순위를 알려주는 모듈 옵션이 필요하지 않습니다.
이더넷 모드에서 하나 또는 두 포트를 사용하도록 Mellanox 카드를 설정하려면 13.5.4절. “이더넷 운영을 위한 Mellanox 카드 구성” 을 참조하십시오.
이러한 드라이버 패키지가 설치된 경우(일반적으로 InfiniBand 설치를 위해 일반 RDMA 패키지 설치 시) 사용자는 대부분의 일반 RDMA 애플리케이션을 활용하여 어댑터에서 발생하는 RDMA 프로토콜 통신을 테스트하고 확인할 수 있어야 합니다. 그러나 Red Hat Enterprise Linux 7에 포함된 일부 프로그램은 iWARP 또는 RoCE/IBoE 장치를 적절하게 지원하지 않습니다. 특히 iWARP의 연결 설정 프로토콜은 실제 InfiniBand 링크 계층 연결과 다르기 때문입니다. 해당 프로그램이 librdmacm 연결 관리 라이브러리를 사용하는 경우 iWARP와 InfiniBand의 차이점을 자동으로 처리하고 프로그램이 작동해야 합니다. 애플리케이션에서 자체 연결 관리를 수행하려고 하면 특별히 iWARP를 지원하거나 작동하지 않는 것이 좋습니다.