26.3. IPoIB の設定


デフォルトでは、InfiniBand は通信にインターネットプロトコル (IP) を使用しません。ただし、IPoIB (IP over InfiniBand) は、InfiniBand Remote Direct Memory Access (RDMA) ネットワーク上に IP ネットワークエミュレーション層を提供します。これにより、変更を加えていない既存のアプリケーションが InfiniBand ネットワーク経由でデータを送信できるようになりますが、アプリケーションが RDMA をネイティブに使用する場合よりもパフォーマンスが低下します。

注記

RHEL 8 以降の Mellanox デバイス (ConnectX-4 以降) は、デフォルトで Enhanced IPoIB モードを使用します (データグラムのみ)。これらのデバイスでは、Connected モードはサポートされていません。

26.3.1. IPoIB の通信モード

IPoIB デバイスは、Datagram モードまたは Connected モードのいずれかで設定可能です。違いは、通信の反対側で IPoIB 層がマシンで開こうとするキューペアのタイプです。

  • Datagram モードでは、システムは信頼できない非接続のキューペアを開きます。

    このモードは、InfiniBand リンク層の Maximum Transmission Unit (MTU) を超えるパッケージには対応していません。IPoIB 層は、データ転送時に IP パケットに 4 バイトの IPoIB ヘッダーを追加します。その結果、IPoIB MTU は InfiniBand リンク層 MTU より 4 バイト少なくなります。一般的な InfiniBand リンク層 MTU は 2048 であるため、Datagram モードの一般的な IPoIB デバイス MTU は 2044 になります。

  • Connected モードでは、システムは信頼できる接続されたキューペアを開きます。

    このモードでは、InfiniBand のリンク層の MTU より大きなメッセージを許可します。ホストアダプターがパケットのセグメンテーションと再構築を処理します。その結果、Connected モードでは、Infiniband アダプターから送信されるメッセージのサイズに制限がありません。しかし、data フィールドと TCP/IP header フィールドにより、IP パケットには制限があります。このため、Connected モードの IPoIB MTU は 65520 バイトです。

    Connected モードではパフォーマンスが向上しますが、より多くのカーネルメモリーを消費します。

システムが Connected モードを使用するように設定されていても、InfiniBand スイッチとファブリックは Connected モードでマルチキャストトラフィックを渡すことができないため、システムは引き続き Datagram モードを使用してマルチキャストトラフィックを送信します。また、ホストが Connected モードを使用するように設定されていない場合、システムは Datagram モードにフォールバックします。

インターフェイス上で MTU までのマルチキャストデータを送信するアプリケーションを実行しながら、インターフェイスを Datagram モードに設定するか、データグラムサイズのパケットに収まるように、パケットの送信サイズに上限を設けるようにアプリケーションを設定します。

26.3.2. IPoIB ハードウェアアドレスについて

IPoIB デバイスには、以下の部分で構成される 20 バイトのハードウェアアドレスがあります。

  • 最初の 4 バイトはフラグとキューペアの番号です。
  • 次の 8 バイトはサブネットの接頭辞です。

    デフォルトのサブネットの接頭辞は 0xfe:80:00:00:00:00:00:00 です。デバイスがサブネットマネージャーに接続すると、デバイスはこの接頭辞を変更して、設定されたサブネットマネージャーと一致させます。

  • 最後の 8 バイトは、IPoIB デバイスに接続する InfiniBand ポートのグローバル一意識別子 (GUID) です。
注記

最初の 12 バイトは変更される可能性があるため、udev デバイスマネージャールールでは使用しないでください。

26.3.4. nmcli を使用した IPoIB 接続の設定

nmcli ユーティリティーを使用して、コマンドラインで IP over InfiniBand 接続を作成できます。

前提条件

  • InfiniBand デバイスがサーバーにインストールされている。
  • 対応するカーネルモジュールがロードされている。

手順

  1. InfiniBand 接続を作成して、Connected トランスポートモードで mlx5_ib0 インターフェイスを使用し、最大 MTU が 65520 バイトになるようにします。

    # nmcli connection add type infiniband con-name mlx5_ib0 ifname mlx5_ib0 transport-mode Connected mtu 65520
    Copy to Clipboard Toggle word wrap
  2. P_Key を設定します。次に例を示します。

    # nmcli connection modify mlx5_ib0 infiniband.p-key 0x8002
    Copy to Clipboard Toggle word wrap
  3. IPv4 を設定します。

    • DHCP を使用するには、次のように実行します。

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

      ipv4.method がすでに auto (デフォルト) に設定されている場合は、この手順をスキップしてください。

    • 静的 IPv4 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および検索ドメインを設定するには、次のように実行します。

      # nmcli connection modify mlx5_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 mlx5_ib0 ipv6.method auto
      Copy to Clipboard Toggle word wrap

      ipv6.method がすでに auto (デフォルト) に設定されている場合は、この手順をスキップしてください。

    • 静的 IPv6 アドレス、ネットワークマスク、デフォルトゲートウェイ、DNS サーバー、および検索ドメインを設定するには、次のように実行します。

      # nmcli connection modify mlx5_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 mlx5_ib0 <setting> <value>
    Copy to Clipboard Toggle word wrap

    値はスペースまたはセミコロンで引用符で囲みます。

  6. プロファイルをアクティブ化します。

    # nmcli connection up mlx5_ib0
    Copy to Clipboard Toggle word wrap

検証

  • ping ユーティリティーを使用して、ICMP パケットをリモートホストの InfiniBand アダプターに送信します。次に例を示します。

    # ping -c5 192.0.2.2
    Copy to Clipboard Toggle word wrap

26.3.5. network RHEL システムロールを使用した IPoIB 接続の設定

IP over InfiniBand (IPoIB) を使用すると、InfiniBand インターフェイス経由で IP パケットを送信できます。IPoIB を設定するには、NetworkManager 接続プロファイルを作成します。Ansible と network システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。

network RHEL システムロールを使用して IPoIB を設定できます。InfiniBand の親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • mlx5_ib0 という名前の InfiniBand デバイスが管理対象ノードにインストールされている。
  • 管理対象ノードが NetworkManager を使用してネットワークを設定している。

手順

  1. 次の内容を含む Playbook ファイル (例: ~/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 mlx5_ib0
              - name: mlx5_ib0
                interface_name: mlx5_ib0
                type: infiniband
    
              # IPoIB device mlx5_ib0.8002 on top of mlx5_ib0
              - name: mlx5_ib0.8002
                type: infiniband
                autoconnect: yes
                infiniband:
                  p_key: 0x8002
                  transport_mode: datagram
                parent: mlx5_ib0
                ip:
                  address:
                    - 192.0.2.1/24
                    - 2001:db8:1::1/64
                state: up
    Copy to Clipboard Toggle word wrap

    サンプル Playbook で指定されている設定は次のとおりです。

    type: <profile_type>
    作成するプロファイルのタイプを設定します。このサンプル Playbook では、2 つの接続プロファイルを作成します。1 つは InfiniBand 接続用、もう 1 つは IPoIB デバイス用です。
    parent: <parent_device>
    IPoIB 接続プロファイルの親デバイスを設定します。
    p_key: <value>
    InfiniBand パーティションキーを設定します。この変数を設定する場合は、IPoIB デバイスに interface_name を設定しないでください。
    transport_mode: <mode>
    IPoIB 接続の動作モードを設定します。この変数は、datagram (デフォルト) または connected に設定できます。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.network/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

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

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

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

検証

  1. mlx5_ib0.8002 デバイスの IP 設定を表示します。

    # ansible managed-node-01.example.com -m command -a 'ip address show mlx5_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. mlx5_ib0.8002 デバイスのパーティションキー (P_Key) を表示します。

    # ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx5_ib0.8002/pkey'
    managed-node-01.example.com | CHANGED | rc=0 >>
    0x8002
    Copy to Clipboard Toggle word wrap
  3. mlx5_ib0.8002 デバイスのモードを表示します。

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

26.3.6. nmstatectl を使用して IPoIB 接続を設定する

nmstatectl ユーティリティーを使用して、Nmstate API を介して IP over InfiniBand (IPoIB) 接続を設定できます。Nmstate API は、設定を行った後、結果が設定ファイルと一致することを確認します。何らかの障害が発生した場合には、nmstatectl は自動的に変更をロールバックし、システムが不正な状態のままにならないようにします。

前提条件

  • InfiniBand デバイスがサーバーにインストールされている。
  • InfiniBand デバイスのカーネルモジュールがロードされている。

手順

  1. 次の内容を含む YAML ファイル (例: ~/create-IPoIB-profile.yml) を作成します。

    interfaces:
    - name: mlx5_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: "mlx5_ib0"
        mode: datagram
        pkey: "0x8002"
    
    routes:
      config:
      - destination: 0.0.0.0/0
        next-hop-address: 192.0.2.254
        next-hop-interface: mlx5_ib0.8002
      - destination: ::/0
        next-hop-address: 2001:db8:1::fffe
        next-hop-interface: mlx5_ib0.8002
    Copy to Clipboard Toggle word wrap

    IPoIB 接続に以下が設定されました。

    • IPOIB デバイス名: mlx5_ib0.8002
    • 基本インターフェイス (親): mlx5_ib0
    • InfiniBand パーティションキー: 0x8002
    • トランスポートモード: datagram
    • 静的 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. mlx5_ib0.8002 デバイスの IP 設定を表示します。

    # ip address show mlx5_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. mlx5_ib0.8002 デバイスのパーティションキー (P_Key) を表示します。

    # cat /sys/class/net/mlx5_ib0.8002/pkey
    0x8002
    Copy to Clipboard Toggle word wrap
  3. mlx5_ib0.8002 デバイスのモードを表示します。

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

26.3.7. IPoIB の設定後に iperf3 を使用して RDMA ネットワークをテストする

次の例では、大きなバッファーサイズを使用して、60 秒のテストを実行し、最大スループットを測定します。iperf3 ユーティリティーを使用して 2 つのホスト間の帯域幅とレイテンシーを十分に使用します。

前提条件

  • 両方のホストで IPoIB を設定している。

手順

  1. iperf3 をシステム上のサーバーとして実行するには、時間の間隔を定義して、定期的な帯域幅の更新 -i を指定し、クライアント接続の応答を待機するサーバー -s としてリッスンします。

    # iperf3 -i 5 -s
    Copy to Clipboard Toggle word wrap
  2. iperf3 を別のシステムでクライアントとして実行するには、時間の間隔を定義して、定期的な帯域幅の更新 -i を指定し、-t 秒使用して IP アドレス 192.168.2.2 のリスニングサーバー -c に接続します。

    # 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
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat