InfiniBand 및 RDMA 네트워크 구성


Red Hat Enterprise Linux 9

고속 네트워크 프로토콜 및 RDMA 하드웨어 구성 및 관리

Red Hat Customer Content Services

초록

다양한 프로토콜을 사용하여 엔터프라이즈 수준에서 RDMA(Remote Directory Memory Access) 네트워크 및 InfiniBand 하드웨어를 구성하고 관리할 수 있습니다. 여기에는 RoCE(RoCE) 소프트웨어 구현, iWARP와 같은 IP 네트워크 프로토콜, RDMA 지원 하드웨어에 대한 기본 지원의 NFSoRDMA(Network File System over RDMA) 프로토콜이 포함됩니다. 대기 시간이 짧고 처리량이 높은 연결의 경우, InfiniBand(IPoIB)를 통해 IP를 구성할 수 있습니다.

Red Hat 문서에 관한 피드백 제공

문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.

Jira를 통해 피드백 제출 (등록 필요)

  1. Jira 웹 사이트에 로그인합니다.
  2. 상단 탐색 모음에서 생성 을 클릭합니다.
  3. Summary (요약) 필드에 설명 제목을 입력합니다.
  4. Description (설명) 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
  5. 대화 상자 하단에서 생성 을 클릭합니다.

1장. InfiniBand 및 RDMA 소개

InfiniBand는 다음 두 가지 사항을 나타냅니다.

  • InfiniBand 네트워크의 물리적 링크 계층 프로토콜
  • InfiniBand Verbs API - 원격 직접 메모리 액세스(RDMA) 기술 구현

RDMA는 운영 체제, 캐시 또는 스토리지를 포함하지 않고 두 컴퓨터의 기본 메모리 간의 액세스를 제공합니다. RDMA를 사용하면 처리량이 높고 대기 시간이 짧고 CPU 사용률이 낮은 데이터 전송입니다.

일반적인 IP 데이터 전송에서는 한 시스템의 애플리케이션이 다른 머신의 애플리케이션에 데이터를 보내면 수신 끝에서 다음 작업이 수행됩니다.

  1. 커널은 데이터를 수신해야 합니다.
  2. 커널은 데이터가 애플리케이션에 속하는지 확인해야 합니다.
  3. 커널이 애플리케이션을 활성화합니다.
  4. 커널은 애플리케이션이 커널에 대한 시스템 호출을 수행할 때까지 기다립니다.
  5. 애플리케이션은 커널의 내부 메모리 공간에서 애플리케이션에서 제공하는 버퍼로 데이터를 복사합니다.

이 프로세스는 호스트 어댑터가 직접 메모리 액세스(DMA)를 사용하거나 두 번 이상 사용하는 경우 대부분의 네트워크 트래픽이 시스템의 기본 메모리에 복사됩니다. 또한 컴퓨터는 일부 컨텍스트 스위치를 실행하여 커널과 애플리케이션 간에 전환합니다. 이러한 컨텍스트 스위치는 다른 작업이 느려지는 동안 트래픽 속도가 높은 CPU 부하를 증가시킬 수 있습니다.

기존 IP 통신과 달리 RDMA 통신은 통신 프로세스의 커널 개입을 우회합니다. 이렇게 하면 CPU 오버헤드가 줄어듭니다. 패킷이 네트워크에 진입하면 RDMA 프로토콜을 통해 호스트 어댑터에서 수신해야 하는 애플리케이션과 해당 애플리케이션의 메모리 공간에 저장할 위치를 결정할 수 있습니다. 호스트 어댑터는 커널에 처리할 패킷을 보내고 사용자 애플리케이션의 메모리에 복사하는 대신 패킷 콘텐츠를 애플리케이션 버퍼에 직접 배치합니다. 이 프로세스에는 별도의 API, InfiniBand Verbs API가 필요하며 애플리케이션은 RDMA를 사용하려면 InfiniBand Verbs API를 구현해야 합니다.

Red Hat Enterprise Linux는 InfiniBand 하드웨어와 InfiniBand Verbs API를 모두 지원합니다. 또한 InfiniBand 비 하드웨어에서 InfiniBand Verbs API를 사용하도록 다음 기술을 지원합니다.

  • iWARP: IP 네트워크를 통해 RDMA를 구현하는 네트워크 프로토콜
  • RDMA over Converged Ethernet (RoCE)은 IBoE (InfiniBand over Ethernet)라고도합니다. 이더넷 네트워크를 통해 RDMA를 구현하는 네트워크 프로토콜

2장. 코어 RDMA 하위 시스템 구성

rdma 서비스 구성은 InfiniBand, iWARP 및 RoCE와 같은 네트워크 프로토콜 및 통신 표준을 관리합니다.

절차

  • rdma-coreopensm 패키지를 설치합니다.

    # dnf install rdma-core opensm
    Copy to Clipboard Toggle word wrap
    1. opensm 서비스를 활성화합니다.

      # systemctl enable opensm
      Copy to Clipboard Toggle word wrap
    2. opensm 서비스를 시작합니다.

      # systemctl start opensm
      Copy to Clipboard Toggle word wrap

검증

  1. libibverbs-utilsinfiniband-diags 패키지를 설치합니다.

    # dnf install libibverbs-utils infiniband-diags
    Copy to Clipboard Toggle word wrap
  2. 사용 가능한 InfiniBand 장치를 나열합니다.

    # ibv_devices
    
        device                 node GUID
        ------              ----------------
        mlx4_0              0002c903003178f0
        mlx4_1              f4521403007bcba0
    Copy to Clipboard Toggle word wrap
  3. mlx4_1 장치의 정보를 표시합니다.

    # ibv_devinfo -d mlx4_1
    
    hca_id: mlx4_1
         transport:                  InfiniBand (0)
         fw_ver:                     2.30.8000
         node_guid:                  f452:1403:007b:cba0
         sys_image_guid:             f452:1403:007b:cba3
         vendor_id:                  0x02c9
         vendor_part_id:             4099
         hw_ver:                     0x0
         board_id:                   MT_1090120019
         phys_port_cnt:              2
              port:   1
                    state:              PORT_ACTIVE (4)
                    max_mtu:            4096 (5)
                    active_mtu:         2048 (4)
                    sm_lid:             2
                    port_lid:           2
                    port_lmc:           0x01
                    link_layer:         InfiniBand
    
              port:   2
                    state:              PORT_ACTIVE (4)
                    max_mtu:            4096 (5)
                    active_mtu:         4096 (5)
                    sm_lid:             0
                    port_lid:           0
                    port_lmc:           0x00
                    link_layer:         Ethernet
    Copy to Clipboard Toggle word wrap
  4. mlx4_1 장치의 상태를 표시합니다.

    # ibstat mlx4_1
    
    CA 'mlx4_1'
         CA type: MT4099
         Number of ports: 2
         Firmware version: 2.30.8000
         Hardware version: 0
         Node GUID: 0xf4521403007bcba0
         System image GUID: 0xf4521403007bcba3
         Port 1:
               State: Active
               Physical state: LinkUp
               Rate: 56
               Base lid: 2
               LMC: 1
               SM lid: 2
               Capability mask: 0x0251486a
               Port GUID: 0xf4521403007bcba1
               Link layer: InfiniBand
         Port 2:
               State: Active
               Physical state: LinkUp
               Rate: 40
               Base lid: 0
               LMC: 0
               SM lid: 0
               Capability mask: 0x04010000
               Port GUID: 0xf65214fffe7bcba2
               Link layer: Ethernet
    Copy to Clipboard Toggle word wrap
  5. ibping 유틸리티는 InfiniBand 주소를 ping하고 매개 변수를 구성하여 클라이언트/서버로 실행됩니다.

    1. Start server mode -S on port number -P with -C InfiniBand channel adapter (CA) name on the host:

      # ibping -S -C mlx4_1 -P 1
      Copy to Clipboard Toggle word wrap
    2. 클라이언트 모드를 시작하려면 호스트에서 - C InfiniBand 채널 어댑터(CA) 이름을 사용하여 포트 번호 -P 에서 - LID(Local Identifier)를 사용하여 일부 패킷을 보냅니다.

      # ibping -c 50 -C mlx4_0 -P 1 -L 2
      Copy to Clipboard Toggle word wrap

3장. IPoIB 구성

기본적으로 InfiniBand는 통신에 인터넷 프로토콜(IP)을 사용하지 않습니다. 그러나 IP over InfiniBand(IPoIB)는 InfiniBand RDMA(Remote Direct Memory Access) 네트워크 위에 IP 네트워크 에뮬레이션 계층을 제공합니다. 이를 통해 수정되지 않은 기존 애플리케이션은 InfiniBand 네트워크를 통해 데이터를 전송할 수 있지만 애플리케이션이 RDMA를 기본적으로 사용하는 경우보다 성능이 낮습니다.

참고

Mellanox 장치는, ConnectX-4 이상에서 시작하여 RHEL 8에서는 기본적으로 향상된 IPoIB 모드를 사용합니다(데이터그램만 해당). 이러한 장치에서는 연결된 모드가 지원되지 않습니다.

3.1. IPoIB 통신 모드

IPoIB 장치는 Datagram 또는 Connected 모드에서 구성할 수 있습니다. 차이점은 통신의 다른 끝에서 IPoIB 계층이 머신으로 열려고 하는 대기열 쌍의 유형입니다.

  • Datagram 모드에서는 시스템이 신뢰할 수 없고 연결이 끊긴 큐 쌍을 엽니다.

    이 모드는 InfiniBand 링크 계층의 MTU(최대 전송 단위)보다 큰 패키지를 지원하지 않습니다. 데이터를 전송하는 동안, IPoIB 계층은 IP 패킷 상단에 4 바이트 IPoIB 헤더를 추가합니다. 결과적으로 IPoIB MTU는 InfiniBand 링크 계층 MTU보다 4바이트 미만입니다. 2048 는 일반적인 InfiniBand 링크 계층 MTU이므로 Datagram 모드의 공통 IPoIB 장치 MTU는 2044 입니다.

  • 연결 모드에서는 시스템이 신뢰할 수 있고 연결된 큐 쌍을 엽니다.

    이 모드에서는 InfiniBand 링크 MTU보다 큰 메시지를 사용할 수 있습니다. 호스트 어댑터는 패킷 분할 및 재사양을 처리합니다. 결과적으로 연결 모드에서 Infiniband 어댑터에서 보낸 메시지에 크기 제한이 없습니다. 그러나 데이터 필드 및 TCP/IP 헤더 필드로 인해 IP 패킷이 제한됩니다. 이러한 이유로 연결된 모드의 IPoIB MTU는 65520 바이트입니다.

    연결된 모드는 성능이 높지만 커널 메모리를 더 많이 사용합니다.

시스템은 연결 모드를 사용하도록 구성되어 있지만 InfiniBand 스위치 및 패브릭은 연결된 모드에서 멀티 캐스트 트래픽을 전달할 수 없기 때문에 시스템은 Datagram 모드를 사용하여 멀티캐스트 트래픽을 계속 보냅니다. 또한 호스트가 Connected 모드를 사용하도록 구성되지 않은 경우 시스템이 데이터그램 모드로 전환됩니다.

인터페이스의 MTU로 멀티 캐스트 데이터를 전송하는 애플리케이션을 실행하는 동안 데이터그램 모드에서 인터페이스를 구성하거나 데이터그램 크기의 패킷에 맞는 패킷의 전송 크기를 제한하도록 애플리케이션을 구성합니다.

3.2. IPoIB 하드웨어 주소 이해

IPoIB 장치에는 다음 부분으로 구성된 20 바이트 하드웨어 주소가 있습니다.

  • 처음 4바이트는 플래그 및 큐 쌍 번호입니다.
  • 다음 8바이트는 서브넷 접두사입니다.

    기본 서브넷 접두사는 0xfe:80:00:00:00:00입니다. 장치가 서브넷 관리자에 연결한 후 장치는 이 접두사를 구성된 서브넷 관리자와 일치하도록 변경합니다.

  • 마지막 8바이트는 IPoIB 장치에 연결되는 InfiniBand 포트의 GUID(Globally Unique Identifier)입니다.
참고

처음 12바이트가 변경될 수 있으므로 udev 장치 관리자 규칙에서 사용하지 마십시오.

3.4. nmcli를 사용하여 IPoIB 연결 구성

nmcli 유틸리티를 사용하여 명령줄에서 InfiniBand 연결을 통해 IP를 만들 수 있습니다.

사전 요구 사항

  • InfiniBand 장치가 서버에 설치됨
  • 해당 커널 모듈이 로드됩니다.

절차

  1. 연결된 전송 모드에서 mlx4_ib0 인터페이스와 65520 바이트의 최대 MTU를 사용하려면 InfiniBand 연결을 만듭니다.

    # nmcli connection add type infiniband con-name mlx4_ib0 ifname mlx4_ib0 transport-mode Connected mtu 65520
    Copy to Clipboard Toggle word wrap
  2. P_Key 를 설정합니다. 예를 들면 다음과 같습니다.

    # nmcli connection modify mlx4_ib0 infiniband.p-key 0x8002
    Copy to Clipboard Toggle word wrap
  3. IPv4 설정을 구성합니다.

    • DHCP를 사용하려면 다음을 입력합니다.

      # nmcli connection modify mlx4_ib0 ipv4.method auto
      Copy to Clipboard Toggle word wrap

      ipv4.method 가 이미 auto (기본값)로 설정된 경우 이 단계를 건너뜁니다.

    • 정적 IPv4 주소, 네트워크 마스크, 기본 게이트웨이, DNS 서버 및 검색 도메인을 설정하려면 다음을 입력합니다.

      # nmcli connection modify mlx4_ib0 ipv4.method manual ipv4.addresses 192.0.2.1/24 ipv4.gateway 192.0.2.254 ipv4.dns 192.0.2.200 ipv4.dns-search example.com
      Copy to Clipboard Toggle word wrap
  4. IPv6 설정을 구성합니다.

    • SLAAC(상태 비저장 주소 자동 구성)를 사용하려면 다음을 입력합니다.

      # nmcli connection modify mlx4_ib0 ipv6.method auto
      Copy to Clipboard Toggle word wrap

      ipv6.method 가 이미 auto (기본값)로 설정된 경우 이 단계를 건너뜁니다.

    • 정적 IPv6 주소, 네트워크 마스크, 기본 게이트웨이, DNS 서버 및 검색 도메인을 설정하려면 다음을 입력합니다.

      # nmcli connection modify mlx4_ib0 ipv6.method manual ipv6.addresses 2001:db8:1::fffe/64 ipv6.gateway 2001:db8:1::fffe ipv6.dns 2001:db8:1::ffbb ipv6.dns-search example.com
      Copy to Clipboard Toggle word wrap
  5. 프로필의 다른 설정을 사용자 지정하려면 다음 명령을 사용합니다.

    # nmcli connection modify mlx4_ib0 <setting> <value>
    Copy to Clipboard Toggle word wrap

    값을 따옴표로 묶거나 spaces로 묶습니다.

  6. 프로필을 활성화합니다.

    # nmcli connection up mlx4_ib0
    Copy to Clipboard Toggle word wrap

검증

  • ping 유틸리티를 사용하여 원격 호스트의 InfiniBand 어댑터에 ICMP 패킷을 보냅니다. 예를 들면 다음과 같습니다.

    # ping -c5 192.0.2.2
    Copy to Clipboard Toggle word wrap

3.5. 네트워크 RHEL 시스템 역할을 사용하여 IPoIB 연결 구성

IP는 InfiniBand (IPoIB)를 통해 InfiniBand 인터페이스를 통해 IP 패킷을 보낼 수 있습니다. IPoIB를 구성하려면 NetworkManager 연결 프로필을 만듭니다. Ansible 및 네트워크 시스템 역할을 사용하면 이 프로세스를 자동화하고 플레이북에 정의된 호스트에서 연결 프로필을 원격으로 구성할 수 있습니다.

네트워크 RHEL 시스템 역할을 사용하여 IPoIB를 구성할 수 있으며, InfiniBand의 상위 장치에 대한 연결 프로파일이 없으면 역할도 생성할 수 있습니다.

사전 요구 사항

  • 컨트롤 노드 및 관리형 노드를 준비했습니다.
  • 관리 노드에서 플레이북을 실행할 수 있는 사용자로 제어 노드에 로그인되어 있습니다.
  • 관리형 노드에 연결하는 데 사용하는 계정에는 sudo 권한이 있습니다.
  • mlx4_ib0 이라는 InfiniBand 장치가 관리 노드에 설치됩니다.
  • 관리형 노드는 NetworkManager를 사용하여 네트워크를 구성합니다.

절차

  1. 다음 콘텐츠를 사용하여 플레이북 파일(예: ~/playbook.yml )을 생성합니다.

    ---
    - name: Configure the network
      hosts: managed-node-01.example.com
      tasks:
        - name: IPoIB connection profile with static IP address settings
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.network
          vars:
            network_connections:
              # InfiniBand connection mlx4_ib0
              - name: mlx4_ib0
                interface_name: mlx4_ib0
                type: infiniband
    
              # IPoIB device mlx4_ib0.8002 on top of mlx4_ib0
              - name: mlx4_ib0.8002
                type: infiniband
                autoconnect: yes
                infiniband:
                  p_key: 0x8002
                  transport_mode: datagram
                parent: mlx4_ib0
                ip:
                  address:
                    - 192.0.2.1/24
                    - 2001:db8:1::1/64
                state: up
    Copy to Clipboard Toggle word wrap

    예제 플레이북에 지정된 설정은 다음과 같습니다.

    type: <profile_type>
    생성할 프로필 유형을 설정합니다. 예제 플레이북은 두 개의 연결 프로필을 생성합니다. 하나는 InfiniBand 연결용이고 하나는 IPoIB 장치용입니다.
    parent: <parent_device>
    IPoIB 연결 프로필의 상위 장치를 설정합니다.
    p_key: <value>
    InfiniBand 파티션 키를 설정합니다. 이 변수를 설정하는 경우 IPoIB 장치에 interface_name 을 설정하지 마십시오.
    transport_mode: < mode>
    IPoIB 연결 작업 모드를 설정합니다. 이 변수를 데이터그램 (기본값) 또는 연결된 로 설정할 수 있습니다.

    플레이북에 사용되는 모든 변수에 대한 자세한 내용은 제어 노드의 /usr/share/ansible/roles/rhel-system-roles.network/README.md 파일을 참조하십시오.

  2. 플레이북 구문을 확인합니다.

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    이 명령은 구문만 검증하고 잘못되었지만 유효한 구성으로부터 보호하지 않습니다.

  3. 플레이북을 실행합니다.

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

검증

  1. mlx4_ib0.8002 장치의 IP 설정을 표시합니다.

    # ansible managed-node-01.example.com -m command -a 'ip address show mlx4_ib0.8002'
    managed-node-01.example.com | CHANGED | rc=0 >>
    ...
    inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute ib0.8002
       valid_lft forever preferred_lft forever
    inet6 2001:db8:1::1/64 scope link tentative noprefixroute
       valid_lft forever preferred_lft forever
    Copy to Clipboard Toggle word wrap
  2. mlx4_ib0.8002 장치의 파티션 키(P_Key)를 표시합니다.

    # ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/pkey'
    managed-node-01.example.com | CHANGED | rc=0 >>
    0x8002
    Copy to Clipboard Toggle word wrap
  3. mlx4_ib0.8002 장치의 모드를 표시합니다.

    # ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/mode'
    managed-node-01.example.com | CHANGED | rc=0 >>
    datagram
    Copy to Clipboard Toggle word wrap

3.6. nmstatectl을 사용하여 IPoIB 연결 구성

nmstatectl 유틸리티를 사용하여 Nmstate API를 통해 InfiniBand(IPoIB) 연결을 통해 IP를 구성할 수 있습니다. Nmstate API는 구성을 설정한 후 결과가 구성 파일과 일치하는지 확인합니다. 문제가 발생하면 nmstatectl 이 변경 사항을 자동으로 롤백하여 시스템을 잘못된 상태로 두지 않습니다.

사전 요구 사항

  • InfiniBand 장치가 서버에 설치됩니다.
  • InfiniBand 장치의 커널 모듈이 로드됩니다.

절차

  1. 다음 콘텐츠를 사용하여 YAML 파일(예: ~/create-IPoIB-profile.yml )을 생성합니다.

    interfaces:
    - name: mlx4_ib0.8002
      type: infiniband
      state: up
      ipv4:
        enabled: true
        address:
        - ip: 192.0.2.1
          prefix-length: 24
        dhcp: false
      ipv6:
        enabled: true
        address:
        - ip: 2001:db8:1::1
          prefix-length: 64
        autoconf: false
        dhcp: false
      infiniband:
        base-iface: "mlx4_ib0"
        mode: datagram
        pkey: "0x8002"
    
    routes:
      config:
      - destination: 0.0.0.0/0
        next-hop-address: 192.0.2.254
        next-hop-interface: mlx4_ib0.8002
      - destination: ::/0
        next-hop-address: 2001:db8:1::fffe
        next-hop-interface: mlx4_ib0.8002
    Copy to Clipboard Toggle word wrap

    이제 IPoIB 연결이 다음 설정을 갖습니다.

    • IPOIB 장치 이름: mlx4_ib0.8002
    • 기본 인터페이스(parent): mlx4_ib0
    • InfiniBand 파티션 키: 0x8002
    • 전송 모드: 데이터그램
    • 정적 IPv4 주소: 192.0.2.1/24 서브넷 마스크
    • 정적 IPv6 주소: 2001:db8:1::1/64 서브넷 마스크
    • IPv4 기본 게이트웨이: 192.0.2.254
    • IPv6 기본 게이트웨이: 2001:db8:1::fffe
  2. 시스템에 설정을 적용합니다.

    # nmstatectl apply ~/create-IPoIB-profile.yml
    Copy to Clipboard Toggle word wrap

검증

  1. mlx4_ib0.8002 장치의 IP 설정을 표시합니다.

    # ip address show mlx4_ib0.8002
    ...
    inet 192.0.2.1/24 brd 192.0.2.255 scope global noprefixroute ib0.8002
       valid_lft forever preferred_lft forever
    inet6 2001:db8:1::1/64 scope link tentative noprefixroute
       valid_lft forever preferred_lft forever
    Copy to Clipboard Toggle word wrap
  2. mlx4_ib0.8002 장치의 파티션 키(P_Key)를 표시합니다.

    # cat /sys/class/net/mlx4_ib0.8002/pkey
    0x8002
    Copy to Clipboard Toggle word wrap
  3. mlx4_ib0.8002 장치의 모드를 표시합니다.

    # cat /sys/class/net/mlx4_ib0.8002/mode
    datagram
    Copy to Clipboard Toggle word wrap

3.7. nm-connection-editor를 사용하여 IPoIB 연결 구성

nmcli-connection-editor 애플리케이션은 관리 콘솔을 사용하여 NetworkManager에서 저장한 네트워크 연결을 구성하고 관리합니다.

사전 요구 사항

  • InfiniBand 장치가 서버에 설치됩니다.
  • 해당 커널 모듈이 로드됩니다.
  • nm-connection-editor 패키지가 설치됩니다.

절차

  1. 명령을 입력합니다.

    $ nm-connection-editor
    Copy to Clipboard Toggle word wrap
  2. + 버튼을 클릭하여 새 연결을 추가합니다.
  3. InfiniBand 연결 유형을 선택하고 생성을 클릭합니다.
  4. InfiniBand 탭에서 다음을 수행합니다.

    1. 원하는 경우 연결 이름을 변경합니다.
    2. 전송 모드를 선택합니다.
    3. 장치를 선택합니다.
    4. 필요한 경우 MTU를 설정합니다.
  5. IPv4 Settings 탭에서 IPv4 설정을 구성합니다. 예를 들어 정적 IPv4 주소, 네트워크 마스크, 기본 게이트웨이 및 DNS 서버를 설정합니다. infiniband IPv4 settings nm connection editor
  6. IPv6 Settings 탭에서 IPv6 설정을 구성합니다. 예를 들어 정적 IPv6 주소, 네트워크 마스크, 기본 게이트웨이 및 DNS 서버를 설정합니다. infiniband IPv6 settings nm connection editor
  7. 저장을 클릭하여 팀 연결을 저장합니다.
  8. nm-connection-editor 를 닫습니다.
  9. P_Key 인터페이스를 설정할 수 있습니다. nm-connection-editor 에서 이 설정을 사용할 수 없으므로 명령줄에서 이 매개변수를 설정해야 합니다.

    예를 들어, 0x8002mlx4_ib0 연결의 P_Key 인터페이스로 설정하려면 다음을 수행합니다.

    # nmcli connection modify mlx4_ib0 infiniband.p-key 0x8002
    Copy to Clipboard Toggle word wrap

3.8. IPoIB가 구성된 후 iperf3를 사용하여 RDMA 네트워크 테스트

다음 예에서 대용량 버퍼 크기는 최대 처리량을 측정하고 iperf3 유틸리티를 사용하여 두 호스트 간의 대역폭과 대기 시간을 완전히 사용하는 60초 테스트를 수행하는 데 사용됩니다.

사전 요구 사항

  • 두 호스트 모두에 IPoIB를 구성했습니다.

절차

  1. 시스템에서 iperf3 을 서버로 실행하려면 주기적인 대역폭 업데이트를 제공하기 위한 시간 간격을 정의하여 서버로 수신 대기합니다. 클라이언트 연결의 응답을 기다리는 것입니다.

    # iperf3 -i 5 -s
    Copy to Clipboard Toggle word wrap
  2. 다른 시스템에서 iperf3 를 클라이언트로 실행하려면 주기적인 대역폭 업데이트를 제공하는 시간 간격을 정의하여 수신 대기 서버 -c 의 IP 주소 192.168.2.2 에 초 단위로 연결합니다.

    # iperf3 -i 5 -t 60 -c 192.168.2.2
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 사용합니다.

    1. 서버 역할을 하는 시스템에 테스트 결과를 표시합니다.

      # iperf3 -i 10 -s
      -----------------------------------------------------------
      Server listening on 5201
      -----------------------------------------------------------
      Accepted connection from 192.168.2.3, port 22216
      [5] local 192.168.2.2 port 5201 connected to 192.168.2.3 port 22218
      [ID] Interval           Transfer     Bandwidth
      [5]   0.00-10.00  sec  17.5 GBytes  15.0 Gbits/sec
      [5]  10.00-20.00  sec  17.6 GBytes  15.2 Gbits/sec
      [5]  20.00-30.00  sec  18.4 GBytes  15.8 Gbits/sec
      [5]  30.00-40.00  sec  18.0 GBytes  15.5 Gbits/sec
      [5]  40.00-50.00  sec  17.5 GBytes  15.1 Gbits/sec
      [5]  50.00-60.00  sec  18.1 GBytes  15.5 Gbits/sec
      [5]  60.00-60.04  sec  82.2 MBytes  17.3 Gbits/sec
      - - - - - - - - - - - - - - - - - - - - - - - - -
      [ID] Interval           Transfer     Bandwidth
      [5]   0.00-60.04  sec  0.00 Bytes    0.00 bits/sec  sender
      [5]   0.00-60.04  sec   107 GBytes  15.3 Gbits/sec  receiver
      Copy to Clipboard Toggle word wrap
    2. 클라이언트 역할을 하는 시스템에 테스트 결과를 표시합니다.

      # iperf3 -i 1 -t 60 -c 192.168.2.2
      
      Connecting to host 192.168.2.2, port 5201
      [4] local 192.168.2.3 port 22218 connected to 192.168.2.2 port 5201
      [ID] Interval           Transfer     Bandwidth       Retr  Cwnd
      [4]   0.00-10.00  sec  17.6 GBytes  15.1 Gbits/sec    0   6.01 MBytes
      [4]  10.00-20.00  sec  17.6 GBytes  15.1 Gbits/sec    0   6.01 MBytes
      [4]  20.00-30.00  sec  18.4 GBytes  15.8 Gbits/sec    0   6.01 MBytes
      [4]  30.00-40.00  sec  18.0 GBytes  15.5 Gbits/sec    0   6.01 MBytes
      [4]  40.00-50.00  sec  17.5 GBytes  15.1 Gbits/sec    0   6.01 MBytes
      [4]  50.00-60.00  sec  18.1 GBytes  15.5 Gbits/sec    0   6.01 MBytes
      - - - - - - - - - - - - - - - - - - - - - - - - -
      [ID] Interval           Transfer     Bandwidth       Retr
      [4]   0.00-60.00  sec   107 GBytes  15.4 Gbits/sec    0   sender
      [4]   0.00-60.00  sec   107 GBytes  15.4 Gbits/sec        receiver
      Copy to Clipboard Toggle word wrap

4장. RoCE 구성

RoCE(Remote Direct Memory Access) over Converged Ethernet(RoCE)은 이더넷 네트워크를 통해 RDMA를 사용하는 네트워크 프로토콜입니다. 구성을 위해 RoCE에는 특정 하드웨어가 필요하며 일부 하드웨어 공급업체는 Mellanox, Broadcom 및 QLogic입니다.

4.1. RoCE 프로토콜 버전 개요

다음은 다양한 RoCE 버전입니다.

RoCE v1
RoCE 버전 1 프로토콜은 Ethertype 0x8915 가 있는 이더넷 링크 계층 프로토콜로, 동일한 이더넷 브로드캐스트 도메인에 있는 두 호스트 간의 통신을 가능하게 합니다.
RoCE v2
RoCE 버전 2 프로토콜은 UDP over IPv4 또는 UDP over IPv6 프로토콜에 존재합니다. RoCE v2의 경우 UDP 대상 포트 번호는 4791 입니다.

RDMA_CM은 데이터를 전송하기 위한 클라이언트와 서버 간의 안정적인 연결을 설정합니다. RDMA_CM은 연결을 설정하기 위한 RDMA 전송 중립 인터페이스를 제공합니다. 통신은 특정 RDMA 장치 및 메시지 기반 데이터 전송을 사용합니다.

중요

클라이언트에서 RoCE v2와 같은 다른 버전을 사용하고 서버에서 RoCE v1을 사용하는 것은 지원되지 않습니다. 이러한 경우 RoCE v1에서 통신하도록 서버와 클라이언트를 구성합니다.

RoCE v1은 데이터 링크 계층(Layer 2)에서 작동하며 동일한 네트워크에 있는 두 시스템의 통신만 지원합니다. 기본적으로 RoCE v2를 사용할 수 있습니다. 네트워크 계층(Layer 3)에서 작동합니다. RoCE v2는 여러 이더넷 연결을 제공하는 패킷 라우팅을 지원합니다.

4.2. 기본 RoCE 버전 임시 변경

클라이언트에서 RoCE v2 프로토콜과 서버에서 RoCE v1 사용은 지원되지 않습니다. 서버의 하드웨어가 RoCE v1만 지원하는 경우 RoCE v1이 서버와 통신할 수 있도록 클라이언트를 구성합니다. 예를 들어 RoCE v1만 지원하는 Mellanox ConnectX-5 InfiniBand 장치에 mlx5_0 드라이버를 사용하는 클라이언트를 구성할 수 있습니다.

참고

여기에서 설명된 변경 사항은 호스트를 재부팅할 때까지 적용됩니다.

사전 요구 사항

  • 클라이언트는 RoCE v2 프로토콜이 포함된 InfiniBand 장치를 사용합니다.
  • 서버는 RoCE v1만 지원하는 InfiniBand 장치를 사용합니다.

절차

  1. /sys/kernel/config/rdma_cm/mlx5_0/ 디렉터리를 만듭니다.

    # mkdir /sys/kernel/config/rdma_cm/mlx5_0/
    Copy to Clipboard Toggle word wrap
  2. 기본 RoCE 모드를 표시합니다.

    # cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
    
    RoCE v2
    Copy to Clipboard Toggle word wrap
  3. 기본 RoCE 모드를 버전 1로 변경합니다.

    # echo "IB/RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
    Copy to Clipboard Toggle word wrap

4.3. soft-RoCE 구성

soft-RoCE는 이더넷을 통한 원격 직접 메모리 액세스(RDMA)의 소프트웨어 구현이며 RXE라고도 합니다. RoCE 호스트 채널 어댑터(HCA)가 없는 호스트에서 Soft-RoCE를 사용합니다.

중요

Soft-RoCE 기능은 더 이상 사용되지 않으며 RHEL 10에서 제거됩니다.

soft-RoCE는 기술 프리뷰로만 제공됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않을 수 있으며, 기능적으로 완전하지 않을 수 있으며 Red Hat은 프로덕션에 이러한 기능을 사용하지 않는 것이 좋습니다. 이러한 프리뷰를 통해 향후 제품 기능에 조기 액세스할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 Red Hat 고객 포털의 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

  • 이더넷 어댑터가 설치됨

절차

  1. iproute,libibverbs -utils, infiniband-diags 패키지를 설치합니다.

    # dnf install iproute libibverbs libibverbs-utils infiniband-diags
    Copy to Clipboard Toggle word wrap
  2. RDMA 링크를 표시합니다.

    # rdma link show
    Copy to Clipboard Toggle word wrap
  3. enp0s1 인터페이스를 사용하는 rxe 0 이라는 새 rxe 장치를 추가합니다.

    # rdma link add rxe0 type rxe netdev enp1s0
    Copy to Clipboard Toggle word wrap

검증

  1. 모든 RDMA 링크의 상태를 표시합니다.

    # rdma link show
    
    link rxe0/1 state ACTIVE physical_state LINK_UP netdev enp1s0
    Copy to Clipboard Toggle word wrap
  2. 사용 가능한 RDMA 장치를 나열합니다.

    # ibv_devices
    
        device          	   node GUID
        ------          	----------------
        rxe0            	505400fffed5e0fb
    Copy to Clipboard Toggle word wrap
  3. ibstat 유틸리티를 사용하여 자세한 상태를 표시할 수 있습니다.

    # ibstat rxe0
    
    CA 'rxe0'
    	CA type:
    	Number of ports: 1
    	Firmware version:
    	Hardware version:
    	Node GUID: 0x505400fffed5e0fb
    	System image GUID: 0x0000000000000000
    	Port 1:
    		State: Active
    		Physical state: LinkUp
    		Rate: 100
    		Base lid: 0
    		LMC: 0
    		SM lid: 0
    		Capability mask: 0x00890000
    		Port GUID: 0x505400fffed5e0fb
    		Link layer: Ethernet
    Copy to Clipboard Toggle word wrap

5장. 사용자가 시스템에서 고정할 수 있는 메모리 양 증가

RDMA(Remote Direct Memory Access) 작업을 수행하려면 실제 메모리 고정이 필요합니다. 결과적으로 커널은 스왑 공간에 메모리를 쓸 수 없습니다. 사용자가 메모리를 너무 많이 고정하면 시스템은 메모리가 부족해질 수 있으며 커널은 프로세스를 종료하여 더 많은 메모리를 확보합니다. 따라서 메모리 고정은 권한 있는 작업입니다.

루트가 아닌 사용자가 대규모 RDMA 애플리케이션을 실행해야 하는 경우 항상 고정된 기본 메모리의 페이지를 유지하기 위해 메모리 양을 늘려야 합니다.

절차

  • root 사용자로 다음 콘텐츠를 사용하여 /etc/security/limits.conf 파일을 생성합니다.

    @rdma soft memlock unlimited
    @rdma hard memlock unlimited
    Copy to Clipboard Toggle word wrap

검증

  1. /etc/security/limits.conf 파일을 편집한 후 rdma 그룹의 멤버로 로그인합니다.

    Red Hat Enterprise Linux는 사용자가 로그인할 때 업데이트된 ulimit 설정을 적용합니다.

  2. ulimit -l 명령을 사용하여 제한을 표시합니다.

    $ ulimit -l
    unlimited
    Copy to Clipboard Toggle word wrap

    명령이 무제한 을 반환하는 경우 사용자는 무제한 메모리를 고정할 수 있습니다.

6장. NFS 서버에서 RDMA를 통해 NFS 활성화

RDMA(Remote Direct Memory Access)는 클라이언트 시스템이 스토리지 서버의 메모리에서 자체 메모리로 직접 데이터를 전송할 수 있는 프로토콜입니다. 이렇게 하면 스토리지 처리량이 향상되고 서버와 클라이언트 간의 데이터 전송 대기 시간이 단축되고 두 종료 모두에서 CPU 부하가 줄어듭니다. NFS 서버와 클라이언트가 모두 RDMA를 통해 연결된 경우 클라이언트는 NFSoRDMA를 사용하여 내보낸 디렉터리를 마운트할 수 있습니다.

사전 요구 사항

  • NFS 서비스가 실행 중이고 구성됨
  • RoCE(InfiniBand 또는 RDMA over Converged Ethernet) 장치가 서버에 설치되어 있습니다.
  • IP over InfiniBand (IPoIB)는 서버에 구성되고 InfiniBand 장치에 IP 주소가 할당됩니다.

절차

  1. rdma-core 패키지를 설치합니다.

    # dnf install rdma-core
    Copy to Clipboard Toggle word wrap
  2. 패키지가 이미 설치된 경우 /etc/rdma/modules/rdma.conf 파일의 xprtrdmasvcrdma 모듈이 주석 해제되었는지 확인합니다.

    # NFS over RDMA client support
    xprtrdma
    # NFS over RDMA server support
    svcrdma
    Copy to Clipboard Toggle word wrap
  3. 선택 사항: 기본적으로 RDMA를 통한 NFS에서는 포트 20049를 사용합니다. 다른 포트를 사용하려면 /etc/nfs.conf 파일의 [nfsd] 섹션에서 rdma-port 설정을 설정합니다.

    rdma-port=<port>
    Copy to Clipboard Toggle word wrap
  4. firewalld 에서 NFSoRDMA 포트를 엽니다.

    # firewall-cmd --permanent --add-port={20049/tcp,20049/udp}
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap

    20049 이외의 다른 포트를 설정하면 포트 번호를 조정합니다.

  5. nfs-server 서비스를 다시 시작합니다.

    # systemctl restart nfs-server
    Copy to Clipboard Toggle word wrap

검증

  1. InfiniBand 하드웨어가 있는 클라이언트에서 다음 단계를 수행합니다.

    1. 다음 패키지를 설치합니다.

      # dnf install nfs-utils rdma-core
      Copy to Clipboard Toggle word wrap
    2. RDMA를 통해 내보낸 NFS 공유를 마운트합니다.

      # mount -o rdma server.example.com:/nfs/projects/ /mnt/
      Copy to Clipboard Toggle word wrap

      기본값(20049) 이외의 포트 번호를 설정하면 port = <port_number> 를 명령에 전달합니다.

      # mount -o rdma,port=<port_number> server.example.com:/nfs/projects/ /mnt/
      Copy to Clipboard Toggle word wrap
    3. rdma 옵션을 사용하여 공유가 마운트되었는지 확인합니다.

      # mount | grep "/mnt"
      server.example.com:/nfs/projects/ on /mnt type nfs (...,proto=rdma,...)
      Copy to Clipboard Toggle word wrap

7장. soft-iWARP 구성

RDMA(Remote Direct Memory Access)는 성능 향상 및 도움이 되는 프로그래밍 인터페이스를 위해 iWARP와 같은 이더넷을 통해 여러 라이브러리와 프로토콜을 사용합니다.

중요

Soft-iWARP 기능은 더 이상 사용되지 않으며 RHEL 10에서 제거됩니다.

soft-iWARP는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. Red Hat은 프로덕션 환경에서 사용하는 것을 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 https://access.redhat.com/support/offerings/techpreview 을 참조하십시오.

7.1. iWARP 및 soft-iWARP에 대한 개요

RDMA(Remote Direct Memory Access)는 TCP를 통해 통합 및 대기 시간이 짧은 데이터 전송을 위해 이더넷을 통해 iWARP를 사용합니다. 표준 이더넷 스위치와 TCP/IP 스택을 사용하여 iWARP는 IP 서브넷을 통해 트래픽을 라우팅하여 기존 인프라를 효율적으로 활용합니다. Red Hat Enterprise Linux에서 여러 공급자는 하드웨어 네트워크 인터페이스 카드에 대해 iWARP를 구현합니다. 예를 들어 cxgb4,irdma,qedr 등입니다.

soft-iWARP(siw)는 Linux용 소프트웨어 기반 iWARP 커널 드라이버 및 사용자 라이브러리입니다. 네트워크 인터페이스 카드에 연결된 경우 RDMA 하드웨어에 프로그래밍 인터페이스를 제공하는 소프트웨어 기반 RDMA 장치입니다. RDMA 환경을 쉽게 테스트하고 검증할 수 있습니다.

7.2. soft-iWARP 구성

소프트-iWARP(siw)는 Linux TCP/IP 네트워크 스택을 통해 iWARP Remote Direct Memory Access(RDMA) 전송을 구현합니다. 표준 이더넷 어댑터가 있는 시스템이 iWARP 어댑터 또는 iWARP 드라이버를 실행하는 다른 시스템과 상호 운용하거나 iWARP를 지원하는 하드웨어를 사용하여 호스트를 실행할 수 있습니다.

중요

Soft-iWARP 기능은 더 이상 사용되지 않으며 RHEL 10에서 제거됩니다.

soft-iWARP 기능은 기술 프리뷰로만 제공됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않을 수 있으며, 기능적으로 완전하지 않을 수 있으며 Red Hat은 프로덕션에 이러한 기능을 사용하지 않는 것이 좋습니다. 이러한 프리뷰를 통해 향후 제품 기능에 조기 액세스할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 Red Hat 고객 포털의 기술 프리뷰 기능 지원 범위를 참조하십시오.

soft-iWARP를 구성하려면 스크립트에서 이 절차를 사용하여 시스템이 부팅될 때 자동으로 실행될 수 있습니다.

사전 요구 사항

  • 이더넷 어댑터가 설치됨

절차

  1. iproute,libibverbs -utils, infiniband-diags 패키지를 설치합니다.

    # dnf install iproute libibverbs libibverbs-utils infiniband-diags
    Copy to Clipboard Toggle word wrap
  2. RDMA 링크를 표시합니다.

    # rdma link show
    Copy to Clipboard Toggle word wrap
  3. siw 커널 모듈을 로드합니다.

    # modprobe siw
    Copy to Clipboard Toggle word wrap
  4. enp0s1 인터페이스를 사용하는 siw 0 이라는 새 siw 장치를 추가합니다.

    # rdma link add siw0 type siw netdev enp0s1
    Copy to Clipboard Toggle word wrap

검증

  1. 모든 RDMA 링크의 상태를 표시합니다.

    # rdma link show
    
    link siw0/1 state ACTIVE physical_state LINK_UP netdev enp0s1
    Copy to Clipboard Toggle word wrap
  2. 사용 가능한 RDMA 장치를 나열합니다.

    # ibv_devices
    
     device                 node GUID
     ------              ----------------
     siw0                0250b6fffea19d61
    Copy to Clipboard Toggle word wrap
  3. ibv_devinfo 유틸리티를 사용하여 자세한 상태를 표시할 수 있습니다.

    # ibv_devinfo siw0
    
        hca_id:               siw0
        transport:            iWARP (1)
        fw_ver:               0.0.0
        node_guid:            0250:b6ff:fea1:9d61
        sys_image_guid:       0250:b6ff:fea1:9d61
        vendor_id:            0x626d74
        vendor_part_id:       1
        hw_ver:               0x0
        phys_port_cnt:          1
            port:               1
                state:          PORT_ACTIVE (4)
                max_mtu:        1024 (3)
                active_mtu:     1024 (3)
                sm_lid:         0
                port_lid:       0
                port_lmc:       0x00
                link_layer:     Ethernet
    Copy to Clipboard Toggle word wrap

8장. InfiniBand 서브넷 관리자

모든 InfiniBand 네트워크에는 네트워크가 작동하려면 서브넷 관리자가 실행되고 있어야 합니다. 이는 스위치 관련 없이 두 시스템이 직접 연결된 경우에도 마찬가지입니다.

서브넷 관리자가 두 개 이상 있을 수 있습니다. 이 경우 마스터 역할을 하고 다른 서브넷 관리자는 마스터 서브넷 관리자가 실패할 경우 이를 수행하는 슬레이브 역할을 합니다.

Red Hat Enterprise Linux는 InfiniBand 서브넷 관리자의 구현인 OpenSM 을 제공합니다. 그러나 OpenSM 의 기능은 제한되어 있으며 활성 업스트림 개발이 없습니다. 일반적으로 InfiniBand 스위치에 내장된 서브넷 관리자는 더 많은 기능을 제공하고 최신 InfiniBand 하드웨어를 지원합니다. 자세한 내용은 OpenSM InfiniBand 서브넷 관리자 설치 및 구성 을 참조하십시오.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat