仮想化でプリセールスしてるSEの一日

VMware から Azure まで、インフラや仮想化の最新情報をベンダー色をできるだけ抑えて綴っていきます

Windows Server 2016 で RDMA / RoCE を利用する - (2) RoCE v2 の設定

f:id:ogawad:20190203195637p:plain:right


それでは、Windows Server 2016 の Storage Spaces Direct (S2D) でも「強く推奨」とされている RDMA について設定方法をまとめていきたいと思います。


WS16 で RDMA を利用するにあたっては iWARP と RoCE の2つの方法がありますが、前回のとおり Azure や Azure Stack でも採用されている RoCE v2 をベースに説明していきます。下記の投稿も参考になりますので併せてご活用ください。


また、一部の設定は NIC やスイッチのメーカーに依存します。すべてのメーカーの設定を網羅することはできませんのであらかじめご了承ください。

ToR スイッチの設定

RoCE を使うには、少なくとも ToR スイッチは RoCE v2 に対応していなければなりません。お使いの ToR スイッチのマニュアルを参考に、RoCE v2 の通信を許可してください。下記は Mellanox スイッチの例です。

物理 NIC / CNA の設定

次に、物理 NIC*1 の設定です。
こういったケースでは、POST 画面から NIC BIOS 画面に入り、パラメーター調整していくのですが、私の知る限り RoCE の設定を NIC BIOS でやらせる製品は見たことがありません。
(最終的には購入した製品のマニュアルをご覧になった方が確実ですが)多くは下記のようなドライバパラメーターで設定すると思います。



この図は Broadcom CNA(旧 Emulex OneConnect の方)の設定画面です。
「Roce mode」というパラメーターがあります。

  • 「1」を選択した場合: RoCE v1 で動作
  • 「2」を選択した場合: RoCE v2 で動作

となっていますので、「2」を選択する必要があります。


Hyper-V ホストの設定

続けて、Hyper-V ホスト上で RDMA を有効にしましょう。


基本的には WS12 系と手順は変わりませんが、S2D で利用する場合は「Set-NetOffloadGlobalSetting」コマンドレットを利用して NetworkDirect パラメータを有効にする必要があります。

Set-NetOffloadGlobalSetting -NetworkDirect Enabled

S2D ストレージアクセス専用の物理 NIC を用意できない場合

Azure Stack もそうですが、S2D 専用の物理 NIC を用意できない場合は、以前手順を紹介した Switch Embedded Teaming (SET) モードの仮想スイッチを利用します。
RDMA に対応した SET 仮想スイッチにするために、内部的に用意した S2D セグメントに対して「Enable-NetAdapterRDMA」コマンドレットを実行します。

Enable-NetAdapterRDMA "NICアダプタ名>","NICアダプタ名>"

仮想マシンから直接 RDMA を利用できる??

私はまだ試したことは無いですが、
Hyper-V仮想マシンは RDMA を喋らせることができるみたいです。


確かに、仮想 NIC のドライバパラメータに「NetworkDirect (RDMA)」というのがありますね。


RDMA 通信の確認方法

基本的には必要な作業はこれくらいです。
ちゃんと RDMA で動いていることの確認方法についてはパフォーマンスモニタを見るのが手っ取り早いと言われています。

*1:RoCE に対応した NIC の多くは、CNA (Converged Network Adapter) と呼ばれています