はじめに
はじめまして。ラクスの某インフラ担当者です。 今回は個人的に今後キーになりそうなネットワークの高速化技術について触れたいと思います。 具体的な実装方法やコマンドの話ではありませんので、「へぇ」という感じで読んでいただければ幸いです。
ネットワーク高速化の必要性
現代のインフラ界隈は仮想化技術を使うことが当たり前になってきています。
仮想化といえば一昔前は大型のホストサーバを用意してESXiなどを入れた単純なハイパーバイザー型の仮想化が主流でしたが、 近年はより複雑な仮想化/集約が行われるようになりました。 HCI(Hyper Converged Infrastructure)による複数のコンピュートリソース/ストレージの集約だったり SDN(Software Defined Network)によるネットワーク仮想化だったり、 所謂プライベートクラウドを構築するような事例も世の中にはたくさん増えてきています。 さらにはコンテナ、kubernetesといったものも注目を集め始めており(ぱっと見はシンプルそうに見えますが)非常に高度な構造の仮想化が主流になろうとしています。
そんなこんなで、集約をしてサーバリソースを有効活用しよう!なんてキラキラした話が空中を飛び交っているわけですが、 ここで無視することが出来ないのがネットワークです。 VMが集約されればトラフィックは当然集中しますし、HCIで複数ノードを集約した場合にはたくさんの通信がノード間を行き来します。 ネットワークもその集約化に追随できなくてはなりません。
また、AIやらディープラーニングやらでGPUを使って高速に並列処理を回して処理するようなシステムも 近年話題になる事が多いですが、大掛かりで大規模な処理が増えればトラフィックへの影響も膨大なものとなるでしょう。 GPUで高速処理してるのにネットワークが遅く、結局GPUが遊んでいるなんてあっては元も子もないので、 今後のIT業界においてはネットワークの高速化、広帯域化は必須と言えると思います。
そこで今回は、このネットワーク周りの処理の高速化について調べてみようと思います。
RDMA(Remote Direct Memory Access)
ネットワークの高速化技術の一つにRDMA(Remote Direct Memory Access)というものがあります。
RDMA概要
RDMAは元々はInfinibandの世界で実装されている技術になります。
Infinibandって何?と思った方もいらっしゃるかと思いますが、Infinibandというのはみんなが慣れ親しんでいるであろうイーサネットとはまた別の世界線の話で、 スーパーコンピュータの世界で使われているような超高速ネットワークになります。
RDMAの仕組みは簡単に言うと、データ転送の一連の処理は通常、アプリ⇒メモリ⇒OSにコピー⇒ネットワークカードといったようなコピー処理が必要になってくるが、 そのコピーが遅いしCPUも使うし大変だから、各サーバーのメモリ間をダイレクトに接続して転送しちゃえば良いんじゃ?といった塩梅。 間のメモリからOSに落としていく処理を回避するためCPUリソースもほとんど使わないし処理も高速というハナシ。ゼロ・コピーなどと呼ばれることもあるようです。
そして、この技術をInfinibandだけじゃなく、広く使われているイーサネットの世界にもどうにか持ち込めないか?というニーズも世の中に当然出てくるわけで、 そこで生み出されたのがRoCE(RDMA over Converged Ethernet)で、世に出てきたのは2010年頃のようです。(読み方は「ロッキー」と読むのが主流のようです)
どうやってそんなことやるの?と思われるでしょうが、これを実現するにはまずRDMAに対応する専用のネットワークカードが必要になってきます。 この対応ネットワークカードで業界をけん引する有名な製品にMellanox制のConnectXシリーズがあります。 正確に言うと、Mellanoxは2020年にNVIDIAに買収されていますので、現在はNVIDIAの製品ブランドとなります。 あれ、聞いたことあるぞ?というゲーマーさんもいらっしゃると思いますが、はい、あのグラボで有名なNVIDIAさんです。
このRDMAに対応したネットワークカードを使い、かつ、kernelもそれに対応している必要があります。 近年の新しいkernelであればおおよそ対応している(?)と思われますので、ご興味があれば今使用されているOSが対応しているのか確認いただければと思いますが、 さらに加えて、ロスレスなネットワークを前提としてQoSなどを設定、高速化NWで効率よく転送するためにMTUを変更する、 帯域がネックにならないように可能ならば25Gbpsや40Gbpsといった広帯域を確保したい、 経路のスイッチもRDMA対応している必要などもあり、実は導入難易度は結構高いです。
また、RoCEと通常のイーサネットネットワークを混在させた場合の互換性もありません。 そのため、既存のシステムを変更していくというよりは、 RDMAに対応したシステム全体を別で構築したのちに移行するなどの対応が必要となってくるでしょう。
そこのハードルの高さこそありますが、新規システムを1から構築したい場合などはぜひ検討してみていただきたいものになります。
実際に検証してみた
ということで、実は弊社ではRDMAを使った高速ネットワークを実際に導入/検証してみました。 正確にはイーサネットでの導入になりますのでRDMAというかRoCEになり、さらにそのバージョン2にあたるRoCEv2が実装プロトコルになります。
HCIのシステムおよびVMware製品を使用して高速なvSAN(※)のシステムを組んでVMware社様と一緒に共同でベンチマークテストなどを実施しました。 ※vSAN 7.0 Update 2からRoCEv2に対応しています。また、vSANで組む場合はキャッシュディスクはNVMeにする必要があります。
正確なベンチマーク結果などは現時点での公表が難しいのですが、従来のTCP/IPのイーサネットよりも10~20%はIOPS(※)が上がることが分かりました。 (※read、writeの比率を変えつつ限界まで負荷をかけレイテンシが上がってきた際のIOPS。)
ただ、ちょっとややこしいのですが、vSANの通信となると例えばストレージポリシーに従って二重書き込みや三重書き込みをするケース、 あとはキャッシュディスクからキャパシティディスクへデータを落とす処理なども存在するため単純にRoCEv2単体の性能を見る検証という話ではありません。
この件についての詳細はここでは長くなるため割愛しますが、 あくまでvSANなどネットワーク通信がたくさん発生するような場所でRDMAは有効に働く可能性があり、 ぜひ今後導入する場合は検討しておきたい事項の一つになる、という塩梅でとらえていただければ、、と思います。
恐らく、、より細かい数値は別の機会に皆様にお伝えできるはず、、(現在情報を色々まとめています。) なので少々お待ちください!
DPUについて
似たような話でインフラ界隈で最近高速化の技術としてDPU(データ プロセッシング ユニット)というものが話題に上がるようになりました。 DPUはCPU、GPU、に並んで第3の刺客といった具合の存在で、簡単に言うとNICにプロセッサを載せてネットワーク処理やストレージ管理、セキュリティ処理などをオフロードさせる仕組みのことを言います。
簡単に図示すると以下のような形です。
より一層CPUが本来やりたかったアプリケーションの処理に専念することができます。
DPUで有名なのは、ここにもNVIDIAさんの名がありますが、CPU界隈の猛者のIntelやAMDも当然ながら覇権を争っています。 CPUとDPUで親和性があった方が良いのかまだ未検証なので詳細は分かりませんが、ARMベースなのかx86ベースなのか サーバのCPUアーキテクチャに何を採用しているのか?というのがDPUの選択にも関わってくるかもしれません。
ちなみに、VMwareでもvSphere 8.0からDPUが対応されるようになり、RDMAと併用することでより一層の高速化を実現することが可能になってるようです。 (まあ併用というかDPU搭載のsmartNICは標準機能として今後RDMAも普通に対応していくんだと思います)
VMwareの詳しい記事はこちら docs.vmware.com
今後もし仮想基盤の新規導入を検討する場合は、ぜひ検討に入れたい内容になります。
というわけで
本当に雑多で申し訳ないのですが、ネットワーク高速化で今後キーになりそうな技術の簡単なご紹介をしました。 DPUについてもどうにか機会を見つけて検証してみたいと思っております。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/
カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.com
ラクスDevelopers登録フォーム
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/
イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!
◆TECH PLAY
techplay.jp
◆connpass
rakus.connpass.com