DUICUO

IPDK: プログラマブルインフラストラクチャ時代のオープンソース開発フレームワーク

DPU/IPUは堅牢なプログラマブル・インフラストラクチャを構築しており、その急成長市場は新たなオープンソース・プロジェクトであるOPI(Open Programmable Infrastructure)の設立を促しました。OPIは「Unlocking Your Programmable Future(プログラマブルな未来を解き放つ)」を提唱し、DPU/IPUなどのプログラマブル・ハードウェアを基盤とするソフトウェア開発フレームワークのための、コミュニティ主導のオープン・エコシステムの育成を目指しています。2022年3月には、初のOPI Event業界カンファレンスがオンラインで開催され、OPIのサブプロジェクトであるIPDK(Infrastructure Programmer Development Kit)がカンファレンスのハイライトの一つとなりました。

IPDKは、CPU、IPU、DPU、またはスイッチから構築されたインフラストラクチャを管理する、オープンソースでベンダーに依存しないドライバーとAPIフレームワークです。DPU/IPUは今後10年間で重要なプログラマブルハードウェアプラットフォームになると予想されていますが、IPDKはDPU/IPUの汎用ソフトウェアプラットフォームになり得るでしょうか?

DPU/IPU ソフトウェア エコシステム

DPU/IPUの人気が高まり続ける中、市場参入のプレーヤーはますます増えています。NVIDIA、Intel、AMDといった海外メーカーに加え、Alibaba、Tencent、Ruijie、Inspur、ChipSource、Nebula Connectといった国内メーカーも継続的な取り組みを行っています。

しかし、現在のDPU/IPUソフトウェアエコシステムは非常に複雑で、多数のフレームワーク、多様なインターフェース、そして高い開発難易度を伴います。エンドユーザーとベンダーにとって、ビジネスアプリケーション開発とインフラストラクチャ管理をサポートするには、統一されたオープンAPIが必要です。

IPDK

IPDKは、このニーズに対応するために開発されました。IPDKは、基盤となるハードウェアの違いによる影響をユーザーに与えず、関連するインターフェースタイプを定義するあらゆるデバイスをサポートし、上位層アプリケーションに一貫したアクセスインターフェースを提供します。IPDKは、インフラストラクチャ管理のすべての機能を抽象化・カプセル化し、「インターフェースサンドイッチ」を形成します(下図参照)。この「サンドイッチ」は、下部でSDKドライバやコンパイラバックエンドなどとインターフェースし、上部でRPCインターフェースセットを定義することで、さまざまなアプリケーションシナリオをサポートします。

IPDKはLinux上で動作し、SPDK、DPDK、P4などの成熟したオープンソースツールを使用することで、ネットワーク仮想化、ストレージ仮想化、ワークロードプロビジョニング、信頼のルート、オフロード機能をプラットフォーム内に実装します。IPDKは、パフォーマンスの向上、リソースの最適化、インフラストラクチャのセキュリティ確保のための汎用プラットフォームを提供します。さらに、IPDKはハードウェア圧縮および暗号化機能、そして基盤となるストレージアクセラレーションを抽象化できます。

IPDK標準インターフェース

IPDKには、インフラストラクチャ・アプリケーション・インターフェース(IPI)とターゲット抽象化インターフェース(TAI)という2つの主要なオープンインターフェースが含まれています。この概念は、SDNにおけるノースバウンド・インターフェースとサウスバウンド・インターフェースに似ています。

インフラストラクチャアプリケーションインターフェース

インフラストラクチャ アプリケーション インターフェイスは、次の 2 つの設計原則に基づいています。

  • 標準ベース:インフラストラクチャ アプリケーションで使用される既存の標準に基づいて開発および設計されます。
  • RPC ベース:アプリケーションは、ローカル、リモート、またはその両方の組み合わせで実行できます。

インフラストラクチャ アプリケーション インターフェイスは、DPU/IPU コンテナーのノースバウンド インターフェイスと見なすこともできます。これは、IPDK でサポートされている次のようなさまざまな RPC インターフェイスを表します。

  • P4Runtime:プログラマブルネットワーク用のデータプレーン
  • OpenConfig:物理ポート、仮想デバイス、QoS、IPsec などを構成するために使用されます。
  • Redfish / REST API:インフラストラクチャデバイスのライフサイクルとプラットフォーム管理に使用されます
  • SPDK ストレージ プロトコル:ソフトウェア定義ストレージ用の RPC インターフェイス。
  • マネージド Kubernetes: Kubernetes インフラストラクチャ コンポーネントを制御するために使用される RPC インターフェース。
  • Envoy xDS: Envoy を構成するために使用される RPC インターフェース。

次の図は、インフラストラクチャ アプリケーション インターフェースの実装例を示しています。

ターゲットデバイス抽象化インターフェース

ターゲット デバイス抽象化インターフェイス (TAI) は、インフラストラクチャ ハードウェア デバイス用に定義された抽象モデルであり、インフラストラクチャ アプリケーションはこれを使用してデバイス リソースを管理およびスケジュールできます。

ターゲット抽象インターフェースは、次の 3 つの設計原則に基づいています。

  • 標準ベース:プログラム可能なターゲットの既存の標準に基づいた開発と設計。
  • ドライバーとライブラリコンポーネントに基づく:インフラストラクチャ内のアプリケーションは、TAIのライブラリコンポーネントに接続してコントロールプレーンをプログラミングします。コンピューティングインスタンスとインフラストラクチャの両方のアプリケーションは、データパケットの移動やデータの保存などのデータプレーン操作にデバイスドライバーを使用します。
  • 機能ベース:開発と設計は機能インターフェースに基づいて行われるため、アプリケーションは展開前にターゲットを事前に照会してその機能を理解することができます。

ターゲット デバイスの抽象インターフェイスは、次の部分で構成されます。

  • 仮想デバイス:仮想デバイスは、PCI ホットプラグを使用してコンピューティング インスタンスと対話します。
  • ライフサイクル制御:コントロール プレーン インターフェイスは、運用インフラストラクチャ デバイスの更新、監視、リセット、および回復を管理するために使用されます。
  • アクセラレータ コントロール:インフラストラクチャ アプリケーションで使用される、アクセラレータのコントロール プレーン インターフェイス。

IPDKアプリケーションシナリオ

IPDK の主な適用シナリオは次のとおりです。

IaaS: 仮想マシン、コンテナ、ベアメタル全体で仮想ネットワーク、ストレージ、暗号化テクノロジを有効にします。

IaaS シナリオにおけるネットワーク仮想化

IaaS シナリオにおけるストレージ仮想化

IaaS シナリオにおけるホスト仮想化

PaaS: コンテナ ネットワーク、プロキシ サービスなどを有効にします。

PaaS シナリオにおける CSI と CNI

PaaS シナリオで IPU 上で実行される Calico

PaaS シナリオにおける IPU 上の Envoy

インライン アクセラレーション: ファイアウォール、IDS、ネットワーク テレメトリ、5G/ワイヤレス インフラストラクチャ、AI/ML などを有効にします。

IPDKとDOCA

前のテキストからわかるように、IPDK は DOCA と非常によく似ています。

DOCA(データセンター・インフラストラクチャ・オン・ア・チップ・アーキテクチャ)は、NVIDIAがBlueField DPU専用に開発した、高度にプログラミング可能なSDK開発プラットフォームツールです。開発者にシンプルな開発インターフェースを提供し、プログラマーはAPI、ライブラリ、サンプルコードを使用してアプリケーションを開発・高速化できるため、DPUのアプリケーション開発エコシステムが強化されます。NVIDIAの専門家は、データセンターサーバー分野においてDOCAとCUDAを比較しています。

DOCAと比較すると、IPDKはDPU/IPUなどのハードウェアを抽象化・カプセル化するパブリック開発キットであるという点で独特です。一貫した抽象化により、Intel IPU、Intel Xeonサーバー、他社製DPUなど、あらゆるハードウェアで実行できます。例えば、MarvellはOcteon DPU上でIPDKが動作するデモを実施しています。しかし、IPDKエコシステムはまだ初期段階にあるのに対し、DOCAは既に市場で一定のユーザーベースを確立しています。

見通し

業界の専門家は、将来的に IPDK プロジェクトを成功裏に開発するためには、以下の点を考慮する必要があると考えています。

  • 技術的な観点から、後続のIPDKインターフェースのカプセル化は包括的ですか?下位互換性は確保できますか?
  • プロジェクトの開発は需要によって推進される必要があります。将来、IPDK革命を真に刺激するキラーアプリケーションが登場するでしょうか?
  • 現在、競合するソフトウェアスタックが多数存在します。より多くのベンダーをIPDKに参加させるにはどうすればよいでしょうか?関係者全員の利益のバランスをどのように取ればよいでしょうか?

IPDKプロジェクトは非常に野心的なビジョンを掲げていますが、最終的にOpenStackやKubernetesのようなスターオープンソースプロジェクト、あるいはDPU/IPU向けの汎用ソフトウェアプラットフォームとなるには、多くの関係者の参加と共同の努力が必要です。IPDKプロジェクトが早期に成熟することを期待しています。