VMware 社の新プロジェクト「Project Monterey」?
Table of contents
はじめに
VMworld 2020 のタイミングに合わせて、9/29 に VMware 社の各種ブログにて新しい製品やサービス、プロジェクトが発表されていました。いくつか見ていたのですが、それらの中でも以下の新しいプロジェクト「Project Monterey」が画期的な内容で個人的に興味をそそられました。知らない&分からない&そもそも初めて見る内容も多く、調べながら何とかブログ記事から読み取れた範囲の内容にはなりますが頑張って紹介してみたいと思います。
Not only is #ProjectMontery really cool but its also 1st validation of #ESXionARM as most SmartNICs have an @Arm processor. This tech will extend to VMware Cloud Foundation & reimagine vSphere “Cluster”https://t.co/ZfldM5IY71
— William Lam (@lamw) September 29, 2020
Congrats to @esxi_arm Team, they must be proud! 🥳
Project Monterey の概要
従来はハイパーバイザー(VMM)、vSAN、NSX などの機能はすべて単一のハードウェア上の単一の ESXi で動作していました。1つのハードウェア上で1つの OS やハイパーバイザーが実行されることは、ESXi に限らず Windows や Linux といった汎用的な OS でも同じですね。
これに対して Project Monterey では「ESXi を実行する x86 サーバに、SmartNIC 上で動作する ESXi を接続する」という形態を取ることで VMware Cloud Foundation (VCF) のアーキテクチャを拡張するというプロジェクトのようです。以下の図はブログ記事からの引用になりますが、従来の環境と Project Monterey の環境の違いを表しています。
この図を見ると、仮想マシンやアプリケーションの実行といったコンピューティング機能は x86 サーバ上で実行されており、vSAN, NSX, ホスト管理といったそれ以外の機能については SmartNIC 上の ESXi にオフロードされているという、興味深いアーキテクチャになっていることが分かります。
図を見るだけで明らかな変化が多数ありますが、鍵となるポイントは以下のようです。
- ESXi on SmartNIC: Arm ベース CPU が搭載された SmartNIC 上で ESXi が実行されます。言い換えれば ESXi が Arm ベース CPU をサポートするようになっています(!)。
- 単一物理サーバ上に ESXi が2インスタンス: x86 CPU 上と SmartNIC 上で、合計2インスタンスの ESXi が同時並行で実行されます。これら2つのインスタンスは別々に管理することも、単一の論理的なインスタンスとして扱うこともできるとのこと。前者は VCF 環境自体をサービスとして提供するクラウドプロバイダ向け、後者は一般的な VCF 環境向けのようです。
- ストレージ&ネットワークの移譲: これらの機能は SmartNIC 側にオフロードされます。これにより I/O 性能の向上、CPU 負荷の削減、アプリケーションへのより多くの CPU サイクル割り当てが見込めます。
- ESXi on SmartNIC によるホスト管理: ESXi on SmartNIC が x86 上の ESXi を管理します。これにより SmartNIC と x86 サーバで独立してライフサイクル管理やオペレーションが行えるようになるとのことです。
- セキュリティ的なエアギャップ: x86 CPU と SmartNIC で2つの ESXi が分離されるためセキュリティが強固になります。例えば x86 ESXi が侵害されても SmartNIC ESXi には手出しが出来ず、SmartNIC ESXi が担保するネットワークセキュリティなどは依然として保たれます。
- ベアメタル OS のサポート: SmartNIC ESXi が x86 上の OS を管理するため、VCF が ESXi 以外に Windows や Linux までをベアメタルとして管理できるようになります。更に SmartNIC で担保されるストレージやネットワークのサービスを VCF がベアメタル OS に提供できるようになります。
SmartNIC 上の ESXi がホスト管理のフロントエンドや I/O サービスを担うことで、オフロードによる I/O 性能の向上や CPU サイクル削減以外にも、ベアメタル上で直接実行できる OS を柔軟に選択できるようにする、ベアメタル OS から vSAN や NSX といったサービスを使えるようにするといった点は大きな違いですね1。
機能的には AWS の Nitro System で使われている Nitro Card が似ているしれません。パブリッククラウドにはあまり詳しくないですが、以下の AWS re:Invent 2018 の動画の 3:27~ を見ると、ネットワークやストレージの処理、EC2 の仮想マシン制御のための API エンドポイントが Nitro Card の各種コンポーネントに移譲されていることが分かります。
なお、ESXi を Arm ベース CPU 上で実行することは 2018 年頃から VMworld や公式ブログなどでデモが公開されていました。x86 と ARM64 ではアーキテクチャも全く違いますし、この頃は中の人の記事を見て「ESXi のフル機能があるなら、Intel CPU と比べて非力でも2ノード vSAN の監視ホストなら使えそうかな」といった程度の印象でしたが、まさか ESXi が NIC に乗った上でこのような使われ方をするとは思っていませんでした。
- ESXi on a Raspberry Pi
- ESXi on Arm at the Edge, on the SmartNIC and in the Cloud
- 4 Hypervisors + 1 Server = 0 Nesting
SmartNIC?
データプレーンに FPGA のようなプログラマブルなチップを利用して、ネットワーク/ストレージ/セキュリティ機能をプログラミングできる NIC が SmartNIC と呼ばれているようです。
搭載されるチップは SoC / FPGA / ASIC と様々で、開発方法やコストパフォーマンス、拡張性などが変わってくるようです。FPGA が比較的高価なハードウェアである等はよく聞きますし、この辺りは当たり前といえば当たり前なのかもしれません。
ブログ記事では SmartNIC について図と合わせて以下の3点が特徴として挙げられています。
- 汎用的な CPU を搭載: NIC に汎用的な CPU を持たせることにより、NIC 上で任意のコードやアプリケーションを直接実行できます。例えば、ネットワークやストレージのサービスを NIC 上で実行することで、I/O 性能の向上や CPU サイクルの削減が期待できます。
- Out-of-Band な管理: SmartNIC の CPU は x86 CPU とは独立して管理できるため、ライフサイクル管理を個別に行えます。また、VCF に ESXi on SmartNIC という管理用の新しい制御ポイントを導入することが出来ます。
- 仮想化されたデバイス機能: SmartNIC は PCI バス上の仮想的なデバイスとして見せることができ、OS やアプリケーションからはあたかも実際のハードウェアであるかのように見えます。仮想デバイスとして見せることで、プログラマブルなハードウェアの柔軟さをソフトウェアにより活かすことができます。
NVIDIA 社の「NVIDIA Mellanox BlueField-2 DPU」のページや [VIEW PRODUCT BRIEF] からリンクされている PDF 資料を見ると、NVIDIA 社の SmartNIC ではデータ処理に特化した DPU (Data Processing Unit) というプロセッサ (BlueField-2) がこれらの機能を担うようです。
※PDF 資料「NVIDIA MELLANOX BLUEFIELD-2 DATA PROCESSING UNIT (DPU)」より抜粋。
BlueField-2 is the second generation in the BlueField family of DPUs. It integrates an array of eight powerful 64-bit Armv8 A72 cores interconnected by a coherent mesh with a DDR4 memory controller and a dual-port Ethernet or InfiniBand network adapter.
BlueField-2 supports two ports of 10/25/50/100 Gb/s or one port of 200 Gb/s Ethernet or InfiniBand, one out-of-band management port for the Arm subsystem, and includes an integrated 16-lane PCIe Gen 3.0/4.0 switch, offering endpoint and root complex capabilities.
この辺りのハードウェア実装はベンダーによって異なると思われますが、いわゆるデータプレーンの処理をプログラマブルに実装できる点はどの SmartNIC にも共通するようでした。NSX の分散ファイアウォールや vSAN のストレージポリシーのように、自動化や柔軟な変更が活きる機能にプログラマブルなハードウェアも活きてくるかなと思います。
クラスタアーキテクチャの再考
SmartNIC ESXi をホスト管理のフロントエンドとすることにより API 経由で動的にクラスタを構成し、x86 CPU の割り当てはアプリケーションの要求に最適化できます。これらに加えて、SmartNIC がリモートデバイスも仮想デバイスとして見せることでハードウェア構成により柔軟性をもたせることが出来るようです。
例えば FPGA のようなハードウェアアクセラレータを各サーバに同じ数だけ構成した場合、現在や将来の使用量に対して最適なキャパシティプランニングにならない場合もあります。このため、FPGA を一部のホストにのみ搭載し、それらの FPGA をクラスタ内のすべてのホストに見せることで、クラスタ内の OS / アプリケーションがリモートで FPGA を使用する非対称なハードウェア構成も可能になります。
ハードウェアアクセラレータの割り当ては API 経由で実行、VCF with Tanzu の Kubernetes のマニフェスト内で定義でき、ESXi 以外にも Windows / Linux のようなベアメタル OS でも動作できるとのこと。これらによって既存の VCF のアーキテクチャから Rack-Scale Architecture へのシームレスな移行を想定しているようです。
ブログ記事にある、この「Rack-Scale Architecture」が何を指しているのかいまいちピンと来なかったのですが、色々と調べていたところ Intel の Rack Scale Design というアーキテクチャが近いようでした。ブログ記事を見て調べるまでは全く知らず、この Intel が提唱するシステムアーキテクチャは今回初めて知りました。
- Intel® Rack Scale Design (Intel® RSD) v2.5: Architecture Specification
- インテルが「Rack Scale Design」のリファレンスソフトウェアをオープンソースで公開。コンピュート、ストレージ、ネットワークをシステムレベルで操作
- Thinking About Intel Rack-Scale Architecture
ブログ記事の文脈やこれらの情報を鑑みると、恐らくコンピューティングとストレージ/ネットワークをラック単位でプールする、ラック単位でスケールする、要求に応じてラックからクラスタを API で動的に構成するといったアーキテクチャを「Rack-Scale Architecture」と表現しているのかなと思われます2。
ユースケース
これらの内容をまとめて、現状、以下のようなユースケースが想定されているようです。
- ネットワーク性能とセキュリティの向上: ネットワークとセキュリティの機能を SmartNIC にオフロードすることで、CPU オーバーヘッドを無くしてラインレート並の性能も得る、分散ファイアウォールによる L4-L7 セキュリティ機能を大きな性能影響なく利用することが可能になります。
- クラウドスケールなストレージと分離: 圧縮・暗号化・イレージャーコーディングといったストレージ機能の拡張を使用できるようになります。また、ストレージプロファイルにより I/O やキャパシティを定義し、要求に合わせてリモートストレージを使用できます。
- ベアメタルと構成/組み合わせのしやすさ: vSphere ベースのベアメタルクラウドと、ベアメタル OS 向けの VCF のネットワーク・ストレージの提供の両方をシンプルなオペレーションで得ることが出来ます。
上2つのユースケースはベアメタル OS での利用と組み合わせるとかなり強力ですね。
エコシステム周りのパートナー企業
Project Monterey における SmartNIC のパートナー企業として NVIDIA, Pensando, Intel が挙げられています3。それぞれの企業からも個別にアナウンスされていました。
- Networks on Steroids: VMware, NVIDIA Empower the Data Center with DPUs
- Pensando, VMware and Project Monterey – Everything You Need to Know
- Intel SmartNIC to Power VMware’s Next-Gen Infrastructure - IT Peer Network
また、Dell Technologies, HPE, Lenovo が Project Monterey を完全なソリューションとして提供するサーバー OEM のパートナー企業として挙げられています。Dell Technologies および HPE はそれぞれ以下のブログ記事でアナウンスされていました。なお、Lenovo は公式の記事などを探したのですが見つけられませんでした・・・
- Dell Technologies Teams with VMware on Project Monterey
- HPE, A Pioneer in Composability, Partners with VMware and Pensando on Project Monterey
おわりに
ブログ記事を見た感想としてまず「SmartNIC 一つでこれほどまでにシステムのアーキテクチャって変化できるんですね」と感じました。NVDIMM のようなストレージクラスメモリが出てきた時もそうですが、ハードウェアの進化に合わせてシステムのアーキテクチャを考えることって重要なんだなぁと改めて思います。
Project Monterey は VMworld 2020 で発表されたばかりのプロジェクトなので、実際に VCF の機能としてリリースされるのはまだ当分先じゃないかとは思っています。ただ、Project Pacific が発表されてから vSphere with Kubernetes としてリリース、Project Dimensionが発表された後に一形態として VMware Cloud on Dell EMC がリリースされるまでの期間を調べてみると両方とも2年未満だったので、新プロジェクト発表からリリースまでそれほど遠い未来でもないのではないかと予想しています。
公式からの今後の情報公開が楽しみですね!
-
この感じだと VCF だけでなく vCenter Server から SmartNIC ESXi を通してベアメタル OS を管理とかもあるかもしれません。それぞれの ESXi の CPU も管理も別なら DPM みたいな電源管理も別々に出来たりするのでしょうか。Project Monterey を見ていると色々な妄想がはかどります。 ↩︎
-
昨年の VMworld 2019 で VMware Cluster Memory という、RDMA を使って仮想マシンがネットワーク越しのメモリを使用する技術のデモが出ていました。Project Monterey は全体的にリソースを Disaggregate しようとする雰囲気が漂っているため、そのうちこの辺りも絡んでくるんじゃないかと気になっています。 ↩︎
-
Pensando はこの辺りの資料を見ると同じく ARM の SoC のよう。Intel は vSphere 6.7 Update 1 時点で Arria 10 GX FPGA がサポートされているのでこの辺りでしょうか。あとは NVIDIA による Mellanox 買収に加えて先日の Arm 買収でこの辺りの勢力図にも影響がありそうかと思っています。 ↩︎