13.2. RoCE を使用したデータ転送
RoCE (RDMA over Converged Ethernet) は、イーサネットネットワークでリモートダイレクトメモリーアクセス (RDMA) を有効にするネットワークプロトコルです。RoCE には 2 つのバージョン (RoCE v1 および RoCE v2) があり、使用されるネットワークアダプターにより異なります。
- RoCE v1
RoCE v1
プロトコルは、同じイーサネットブロードキャストドメインの任意の 2 つのホスト間の通信を可能にするイーサネットタイプ0x8915
を持つイーサネットリンク層プロトコルです。RoCE v1 は、ConnectX-3 ネットワークアダプターを使用する場合の RDMA Connection Manager (RDMA_CM) のデフォルトバージョンです。- RoCE v2
RoCE v2
プロトコルは、UDP over IPv4 または UDP over IPv6 プロトコルのいずれかに存在します。UDP 宛先ポート番号4791
は RoCE v2 用に予約されています。Red Hat Enterprise Linux 7.5 以降、RoCE v2 は、ネットワークアダプター ConnectX-3 Pro、ConnectX-4、ConnectX-4 Lx、および ConnectX-5 を使用する場合は、RDMA_CM のデフォルトバージョンです。ハードウェアはRoCE v1
およびRoCE v2
の両方をサポートします。
RDMA Connection Manager (RDMA_CM) は、データを転送するために、クライアントとサーバーとの間の信頼できる接続を設定するために使用されます。RDMA_CM は、接続を確立するために RDMA トランスポートに依存しないインターフェイスを提供します。通信は、特定の RDMA デバイスで行われ、データ転送はメッセージベースとなります。
前提条件
RDMA_CM セッションには、以下のいずれかが必要です。
- クライアントおよびサーバーで、同じ RoCE モードをサポートします。
- クライアントは RoCE v1 をサポートし、サーバーは RoCE v2 をサポートします。
クライアントが接続のモードを決定するため、次のような状況が考えられます。
- 成功した接続:
- クライアントが、使用されるネットワークカードおよびドライバーに従って、RoCE v1 モードまたは RoCE v2 モードにある場合、対応するサーバーは同じバージョンを使用して接続を作成する必要があります。また、接続は、クライアントが RoCE v1 モードで、サーバーが RoCE v2 モードの場合に限り成功します。
- 失敗した接続:
- クライアントが RoCE v2 にあり、対応するサーバーが RoCE v1 の場合は、接続は確立されません。この場合は、対応するサーバーのドライバーまたはネットワークアダプターを更新します。「RoCE を使用したデータ転送」を参照してください。
クライアント | サーバー | デフォルト設定 |
---|---|---|
RoCE v1 | RoCE v1 | 接続 |
RoCE v1 | RoCE v2 | 接続 |
RoCE v2 | RoCE v2 | 接続 |
RoCE v2 | RoCE v1 | 接続なし |
クライアントの RoCE v2 と、サーバーの RoCE v1 は互換性がありません。この問題を解決するには、サーバーとクライアントで、RoCE v1 で通信することを強制します。これは、RoCE v2 がサポートするハードウェアが RoCE v1 を使用するように強制することを意味します。
手順13.1 ハードウェアがすでに Roce v2 で実行している場合にデフォルトの RoCE モードへの変更
/sys/kernel/config/rdma_cm
ディレクトリーに移動し、RoCE モードにします。~]# cd /sys/kernel/config/rdma_cm
- イーサネットネットワークデバイスを指定して ibstat コマンドを入力して、ステータスを表示します。たとえば、mlx5_0 の場合は以下のようになります。
~]$ ibstat mlx5_0 CA 'mlx5_0' CA type: MT4115 Number of ports: 1 Firmware version: 12.17.1010 Hardware version: 0 Node GUID: 0x248a0703004bf0a4 System image GUID: 0x248a0703004bf0a4 Port 1: State: Active Physical state: LinkUp Rate: 40 Base lid: 0 LMC: 0 SM lid: 0 Capability mask: 0x04010000 Port GUID: 0x268a07fffe4bf0a4 Link layer: Ethernet
- mlx5_0 デバイスにディレクトリーを作成します。
~]# mkdir mlx5_0
- ツリー形式で、
default_roce_mode
ファイルで RoCE モードを表示します。~]# cd mlx5_0
~]$ tree └── ports └── 1 ├── default_roce_mode └── default_roce_tos
~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v2
- デフォルトの RoCE モードを変更します。
~]# echo "RoCE v1" > /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode
- 変更を表示します。
~]$ cat /sys/kernel/config/rdma_cm/mlx5_0/ports/1/default_roce_mode RoCE v1