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

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

Windows Server 2016 で RDMA / RoCE を利用する - (1) RoCE は v2 へ

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


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:どのサービスかは不明