Windows Server 2016 で RDMA / RoCE を利用する - (1) RoCE は v2 へ
- SR-IOV (1) (2) (3) (4)
- RDMA - InfiniBand (1)
- RDMA - RoCE (1) (2)
- SMB Multichannel (1) (2) (3)
- Switch Embedded Teaming (0) (1) (2)
Windows Server 2016 には流行りのハイパーコンバージド (HCI) 機能
「Storage Spaces Direct(S2D)」が標準で備わっています。
VMware でいう vSAN みたいなもので、vSAN 同様に SSD が必須であったり 10G Ethernet が強く推奨されているのですが、S2D には vSAN には無いハードウェア連携技術として、HPC などで活用されている RDMA(リモート・ダイレクトメモリアクセス)の利用も 強く推奨 され、爆速な I/O を叩き出すといったことが可能とされています。
We strongly recommend 10+ GbE with remote-direct memory access (RDMA), either iWARP or RoCE.
https://technet.microsoft.com/ja-jp/windows-server-docs/storage/storage-spaces/storage-spaces-direct-overview
ということで、RDMA-enabled な S2D についてまとめてみます。
InfiniBand? iWarp? RoCE?
RDMA と聞いて思いつくのは InfiniBand かもしれません。
実際、Windows Server 2012 世代では SMB Direct として InfiniBand を活用しようとしていた節がありました。しかし、InfiniBand (IPoIB) による SMB Direct は、私が以前 こちら で書いたようなクリティカルな問題もあり、無理があったのは否めないところです。
実は、RDMA を実現できるプロトコルは InfiniBand だけではありません。iWarp や RoCE プロトコルでも利用できます。
ただ、WS12 世代の頃は InfiniBand 以外の情報はほとんどありませんでした。iWarp は仕方ないかもしれませんが、RoCE (RDMA over Converged Ethernet) は、InfiniBand よりも手軽な機器で利用できると言われて期待されていたものの、実際に手順が出てきたのは R2 のリリース後で、しかも「IPヘッダは持てない」と、これまた致命的な問題があり、そのまま陽の目を見ない感じがありました。
Windows Server 2016 S2D では「RoCE v2」が必要
このような R&D と現実とのギャップから、WS12 世代では RDMA-enabled を本番導入しているケースは、私の知る限りほとんど無かったのですが、2014 年に RoCE v2 となり、(意外と早く)IP ヘッダを持てるようになりました。
RoCEv2 IBTA 標準化完了(2014年9月16日) @kz_tomo
http://rdma.hatenablog.com/entry/2014/09/21/132500
この標準化には Microsoft も強く関わっていたそうで、Microsoft Azure の基盤で RoCE が利用されていることも 明らか*1 になっています。
Azure への実装からも分かるとおり、RDMA に強い思い入れのある Microsoft R&D チームは InfiniBand → RoCE 推し に変わります。技術的にそうせざるを得なかっただけかもしれませんが、結論として WS16 S2B では従来の InfiniBand の文字はなく、「RDMA v2 必須」となりました。
「標準化」は市場拡大に重要です。
仕様が確立されますので、先導を切っている Mellanox だけでなく、Broadcom(旧 Emulex)や Cavium(旧 QLogic・Broadcom)の CNA でも RoCE v2 がサポートされましたし、10G/40G だけでなくコストパフォーマンスに優れた 25G も登場しました。
今年の梅雨ごろには投入すると言われている Azure Stack も RoCE v2 が採用されています。
次回は WS16 で RoCE v2 を利用するための設定 をサマライズしていきたいと思います。
参考
*1:どのサービスかは不明