26.3. IPoIB の設定
IP over InfiniBand (IPoIB) は、InfiniBand Remote Direct Memory Access (RDMA) ネットワーク上に IP ネットワークのエミュレーション層を提供します。変更されていないアプリケーションでも、IPoIB を使用して InfiniBand ネットワーク経由でデータを送信できます。
アプリケーションがネイティブに RDMA を使用する場合よりも IPoIB のパフォーマンスが低くなることに注意してください。
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/IPheaderフィールドにより、IP パケットには制限があります。このため、Connectedモードの IPoIB MTU は65520バイトです。Connectedモードではパフォーマンスが向上しますが、より多くのカーネルメモリーを消費します。
システムが Connected モードを使用するように設定されていても、InfiniBand スイッチとファブリックは Connected モードでマルチキャストトラフィックを渡すことができないため、システムは引き続き Datagram モードを使用してマルチキャストトラフィックを送信します。また、ホストが Connected モードを使用するように設定されていない場合、システムは Datagram モードにフォールバックします。
インターフェイス上で MTU までのマルチキャストデータを送信するアプリケーションを実行しながら、インターフェイスを Datagram モードに設定するか、データグラムサイズのパケットに収まるように、パケットの送信サイズに上限を設けるようにアプリケーションを設定します。
26.3.2. IPoIB ハードウェアアドレスについて リンクのコピーリンクがクリップボードにコピーされました!
InfiniBand ハードウェアアドレスは、しばしばグローバル一意識別子 (GUID) とも呼ばれ、ホストチャネルアダプター (HCA) などの各 InfiniBand デバイスに割り当てられる一意の識別子です。このアドレスは、ルーティング、デバイス識別、ネットワーク管理に不可欠です。
IPoIB デバイスには、以下の部分で構成される 20 バイトのハードウェアアドレスがあります。
- 最初の 4 バイトはフラグとキューペアの番号です。
次の 8 バイトはサブネットの接頭辞です。
デフォルトのサブネットの接頭辞は
0xfe:80:00:00:00:00:00:00です。デバイスがサブネットマネージャーに接続すると、デバイスはこの接頭辞を変更して、設定されたサブネットマネージャーと一致させます。- 最後の 8 バイトは、IPoIB デバイスに接続する InfiniBand ポートのグローバル一意識別子 (GUID) です。
最初の 12 バイトは変更される可能性があるため、udev デバイスマネージャールールでは使用しないでください。
26.3.3. systemd リンクファイルを使用した IPoIB デバイスの名前の変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、カーネルは Internet Protocol over InfiniBand (IPoIB) デバイスに、ib0、ib1 などの名前を付けます。競合を回避するには、systemd リンクファイルを作成して、mlx5_ib0 など、永続的でわかりやすい名前を作成します。
前提条件
- InfiniBand デバイスがインストールされている。
手順
デバイス
ib0のハードウェアアドレスを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow MAC アドレス
00:00:10:71:fe:80:00:00:00:00:00:00:94:6d:ae:03:00:41:80:02を持つインターフェイスにmlx5_ib0という名前を付けるには、次の内容の/etc/systemd/network/70-custom-ifnames.linkファイルを作成します。[Match] MACAddress=00:00:10:71:fe:80:00:00:00:00:00:00:94:6d:ae:03:00:41:80:02 [Link] Name=_mlx5_ib0
[Match] MACAddress=00:00:10:71:fe:80:00:00:00:00:00:00:94:6d:ae:03:00:41:80:02 [Link] Name=_mlx5_ib0Copy to Clipboard Copied! Toggle word wrap Toggle overflow このリンクファイルによって MAC アドレスが照合され、ネットワークインターフェイスの名前が
Nameパラメーターに設定された名前に変更されます。
検証
ホストを再起動します。
reboot
# rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow リンクファイルで指定した MAC アドレスを持つデバイスが
mlx5_ib0に割り当てられていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
26.3.4. nmcli を使用した IPoIB 接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
nmcli ユーティリティーを使用して、コマンドラインで IP over InfiniBand 接続を作成できます。
前提条件
- InfiniBand デバイスがサーバーにインストールされている。
- 対応するカーネルモジュールがロードされている。
手順
InfiniBand 接続を作成して、
Connectedトランスポートモードでmlx5_ib0インターフェイスを使用し、最大 MTU が65520バイトになるようにします。nmcli connection add type infiniband con-name mlx5_ib0 ifname mlx5_ib0 transport-mode Connected mtu 65520
# nmcli connection add type infiniband con-name mlx5_ib0 ifname mlx5_ib0 transport-mode Connected mtu 65520Copy to Clipboard Copied! Toggle word wrap Toggle overflow P_Keyを設定します。次に例を示します。nmcli connection modify mlx5_ib0 infiniband.p-key 0x8002
# nmcli connection modify mlx5_ib0 infiniband.p-key 0x8002Copy to Clipboard Copied! Toggle word wrap Toggle overflow IPv4 を設定します。
DHCP を使用するには、次のように実行します。
nmcli connection modify mlx5_ib0 ipv4.method auto
# nmcli connection modify mlx5_ib0 ipv4.method autoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
IPv6 設定を行います。
ステートレスアドレス自動設定 (SLAAC) を使用するには、次のように実行します。
nmcli connection modify mlx5_ib0 ipv6.method auto
# nmcli connection modify mlx5_ib0 ipv6.method autoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
プロファイルの他の設定をカスタマイズするには、次のコマンドを使用します。
nmcli connection modify mlx5_ib0 <setting> <value>
# nmcli connection modify mlx5_ib0 <setting> <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 値はスペースまたはセミコロンで引用符で囲みます。
プロファイルをアクティブ化します。
nmcli connection up mlx5_ib0
# nmcli connection up mlx5_ib0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
pingユーティリティーを使用して、ICMP パケットをリモートホストの InfiniBand アダプターに送信します。次に例を示します。ping -c5 192.0.2.2
# ping -c5 192.0.2.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow
26.3.5. network RHEL システムロールを使用した IPoIB 接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
IP over InfiniBand (IPoIB) を設定するには、NetworkManager 接続プロファイルを作成します。network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義したホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して IPoIB を設定できます。InfiniBand の親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
mlx5_ib0という名前の InfiniBand デバイスが管理対象ノードにインストールされている。 - 管理対象ノードが NetworkManager を使用してネットワークを設定している。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル 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ファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
mlx5_ib0.8002デバイスの IP 設定を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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 >> 0x8002Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
# 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 >> datagramCopy to Clipboard Copied! Toggle word wrap Toggle overflow
26.3.6. nmstatectl を使用して IPoIB 接続を設定する リンクのコピーリンクがクリップボードにコピーされました!
宣言型の Nmstate API を使用して、IP over InfiniBand (IPoIB) を設定できます。Nmstate を使用すると、結果が必ず設定ファイルと一致したものになります。一致しない場合は、変更がロールバックされます。
前提条件
- InfiniBand デバイスがサーバーにインストールされている。
- InfiniBand デバイスのカーネルモジュールがロードされている。
手順
次の内容を含む YAML ファイル (例:
~/create-IPoIB-profile.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
-
IPOIB デバイス名:
設定をシステムに適用します。
nmstatectl apply ~/create-IPoIB-profile.yml
# nmstatectl apply ~/create-IPoIB-profile.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
mlx5_ib0.8002デバイスの IP 設定を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mlx5_ib0.8002デバイスのパーティションキー (P_Key) を表示します。cat /sys/class/net/mlx5_ib0.8002/pkey 0x8002
# cat /sys/class/net/mlx5_ib0.8002/pkey 0x8002Copy to Clipboard Copied! Toggle word wrap Toggle overflow mlx5_ib0.8002デバイスのモードを表示します。cat /sys/class/net/mlx5_ib0.8002/mode datagram
# cat /sys/class/net/mlx5_ib0.8002/mode datagramCopy to Clipboard Copied! Toggle word wrap Toggle overflow
26.3.7. IPoIB の設定後に iperf3 を使用して RDMA ネットワークをテストする リンクのコピーリンクがクリップボードにコピーされました!
iperf3 ユーティリティーは、2 台のノード間の RDMA と IP のパフォーマンスを測定します。
次の例では、大きなバッファーサイズを使用して、60 秒のテストを実行し、最大スループットを測定します。iperf3 ユーティリティーを使用して 2 つのホスト間の帯域幅とレイテンシーを十分に使用します。
前提条件
- 両方のホストで IPoIB を設定している。
手順
iperf3をシステム上のサーバーとして実行するには、時間の間隔を定義して、定期的な帯域幅の更新-iを指定し、クライアント接続の応答を待機するサーバー-sとしてリッスンします。iperf3 -i 5 -s
# iperf3 -i 5 -sCopy to Clipboard Copied! Toggle word wrap Toggle overflow iperf3を別のシステムでクライアントとして実行するには、時間の間隔を定義して、定期的な帯域幅の更新-iを指定し、-t秒使用して IP アドレス192.168.2.2のリスニングサーバー-cに接続します。iperf3 -i 5 -t 60 -c 192.168.2.2
# iperf3 -i 5 -t 60 -c 192.168.2.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを使用します。
サーバーとして動作するシステムでテスト結果を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントとして動作するシステムでテスト結果を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow