ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

SmartNIC入門

 こんにちは。ソリューション技術部の今田です。私が所属する次世代インフラ基盤チームでは、仮想化基盤技術、データ分析基盤技術、インフラ自動化の3つの技術を軸に推進しています。今回は仮想化基盤に関する技術であるSmartNICについて掲載したいと思います。

SmartNICとは

 最近では柔軟なサーバ運用を実現する技術として仮想化技術が普及してきました。サーバの仮想化で課題となるのがパフォーマンスです。 仮想サーバが物理サーバに比べて十分なパフォーマンスが発揮できない原因として、物理サーバ構成には存在しない仮想化レイヤをハードウェアと仮想サーバの間に追加していることで処理のオーバーヘッドが発生することが挙げられます。この仮想化レイヤを経由することでIPパケット処理など負荷のかかる処理が物理サーバ構成に比べて処理能力が低下してしまいます。
 SmartNICは、処理能力が落ちる原因となるIPパケット処理など負荷のかかる処理をオフロードしてCPUの負荷を軽減することができるNICです。SmartNICを利用することで仮想サーバ環境のアクセラレーションによる処理能力向上が実現できます。 f:id:imadafv:20180827165222p:plain

SmartNICが必要とされる背景

 SmartNICが必要とされる経緯として、NFVについて軽く触れたいと思います。
 通信事業者のネットワークで利用されるネットワーク機器には億単位の高価な専用機器が使われていますが、サーバ仮想化技術が進歩するにつれてその機能を汎用機器で構成される仮想化環境で動作させるNFV(Network Function Virtualization)と呼ばれる考え方が注目されてきました。NFVは仮想化された基盤で必要に応じて仮想サーバ上でネットワーク機器の機能を動作させるようにするというものです。しかし仮想化環境でネットワーク機器の機能を動作させるとデータプレーンの処理に不向きなCPUでは、本来アプリケーションを動かすためのリソースまで使用してしまいリソースが圧迫されます。その結果CPUの処理能力が低下してしまうという課題が出てきました。

SmartNIC以外のアクセラレーション技術

 SmartNICが登場する以前にも、この性能課題に対して解決方法が幾つかありました。SmartNICの話に入る前に、SmartNIC以外のアクセラレーション技術を説明します。従来では物理ネットワーク機器からNFVへ移行するにあたり処理能力についての課題を解決する大きく分けて2つの方法がありました。Intel Open Network Platformと、SR-IOV(Single Root I/O Virtualization)を利用した解決法です。しかしこの2つの解決手段にはNFV導入のメリットを一部損なってしまう問題点も存在していました。
 Intel Open Network Platformを利用した場合では主にDPDK(Data Plane Development Kit)をアクセラレーション手段として活用するものの、その処理はデータ転送に最適化されていないサーバと標準NICに依存します。これがボトルネックとなって実現可能なスループット性能が低く、なおかつ多数のCPUコア/リソースを必要とするためサーバ台数の増加を招くことになるのです。
 SR-IOVを利用した場合ではスループット性能とCPU使用効率は向上しますが、柔軟性が失われ複雑性が増大します。仮想スイッチを完全にバイパスしてバーチャルファンクションとSR-IOVを有効にしたNIC間で直接通信を行うことで性能要件を満たすことが可能ではあるものの、バーチャルファンクションを他のサーバに移行することは大変困難です。これはデータセンタレベルでサーバリソースを最適化して有効活用できる、という仮想化における重要なメリットを大きく妨げてしまいます。
 この従来のNFV移行への課題を解決してNFVの恩恵を享受することができるのがSmartNICです。 f:id:imadafv:20180829131307p:plain

SmartNICがかかえる課題

  • まだ新しい技術のため情報が少ない

 製品が販売され一部のニュースサイトで取り上げられてはいるものの、まだ世に出てからの時間が短い技術です。そのため導入実績が少なく詳細な情報が広まっていないのが現状です。その一方で明日には今まで無かった新しい情報が発表される可能性もあるため継続した技術調査が必要になります。

  • 開発手法がメーカーごとに異なる

 FPGAやNPU、ASICといったSmartNICに搭載するチップごとに開発手法が異なります。導入したいSmartNICが最近注目されているプログラミング言語P4に対応していれば製品毎に依存しない開発が可能となります。これはP4が製品毎の違いを吸収してデータプレーンを直接記述できる高位言語であるからです。P4対応製品であれば開発効率が高く、導入までの期間が短縮出来るのは大きなメリットとなります。

まとめ

 NFVというネットワーク機器の仮想化という考え方の登場により増加したCPU負荷を軽減するためにSmartNICが開発されました。SmartNICについて現時点では標準規格が無いため、オフロードする処理への適性は搭載されるチップによって異なります。開発手法については製品ごとに企業が提供する開発ツールと、製品に搭載されたチップに応じたプログラミング知識が必要となります。ただしP4プログラミングに対応した製品であればSmartNICのハードウェアに依存しない開発が可能となるため、開発における難易度が大きく下がります。
 今後SmartNICの開発が進めば新しい通信プロトコルへの移行もNW機器を交換することなく、SmartNICの回路を変更して対応することが期待できます。

f:id:imadafv:20180827160917p:plain