NW高速化技術比較(後編) ~高速化技術とクラウド 第5回~
近年のネットワーク利用状況と高速化技術について解説
DPDK入門
- 2023年03月27日公開
NTTテクノクロスの山下です。前回ブログに引き続き、代表的なネットワーク高速化技術の仕組みの違いや特徴についてお伝えします。
今回お伝えしたいこと
前回は近年のデータトラフィックの増加傾向や、それによる影響、ソフトウェアで大量のパケットを処理する際のボトルネックについて解説しました。後編では、これらのボトルネックに対する対処案を4つご紹介します。
対策案
個々の技術の紹介に入る前に、4つの技術の概要・メリット・デメリットについて、個人的な認識をまとめます。
表1.各ボトルネックの対策方法
ボトルネック |
対策案 |
概要 |
メリット |
デメリット |
|
カーネル処理のオーバヘッド |
① |
DPDK |
パケット処理のおいてカーネルをバイパスして処理高速化 |
・Intel/NVIDIA(Mellanox)を中心にサポートが増えている |
・DPDK対応NICの調達が必要 |
② |
XDP |
カーネルで必要なパケットを処理することにより高速化 |
・アプリケーションはソケットベースのプログラムを利用したままでパケット処理の高速化が可能 |
・XDP対応NICの調達が必要 |
|
NIC処理速度に対するメモリバスの処理速度ネック |
③ |
SmartNICによるオフロード |
L3以上の処理をNICで実施することによりホストCPUのパケット処理負荷を軽減 |
・ホストでの処理前にNICで処理をしてしまうのでホスト側パケット処理を軽減可能 |
・SmartNICの調達が必要 |
④ |
GPUオフロード |
GPUにパケット処理をさせることによりホストCPUの処理負荷を軽減 |
・CPUに比べて並列・大量処理が得意なGPUにオフロードすることによりCPUの処理軽減が可能 |
・GPUの調達が必要 |
対策案① DPDK(Data Plane Development Kit)
DPDKアプリケーションでパケット処理を実現する場合、下図のようにNICに対して常にポーリングでパケット受信を監視する形をとり、パケット自体もNICのキューから直接ユーザ空間(Hugepage)に移すため、カーネル処理のオーバーヘッドなくすぐにパケット処理を実施することができます。
図6. DPDK適用による効果
対策案② XDP(eXpress Data Path)
XDPは、カーネルにマイクロコードを埋め込む技術であるeBPF(Extended Berkeley Packet Filter)を利用します。カーネルのソースコードを変更したり、モジュールを追加したりすることなく、プログラムを実行することができるLinux 4.xより導入された機能です。例えばカーネル内で特定の特徴をもつパケットのドロップ処理やNIC折り返し処理を実施してしまうことにより、処理時間(遅延)の短縮や、ユーザー空間でのパケット処理を軽減することが可能です。
図7. XDP適用による効果
対策案③ SmartNICによるオフロード
SmartNICについては国際標準などで決められた定義はありません。処理する回路構成(ASIC,FPGA,SoC)や提供する機能もベンダにより様々です。共通的な特徴を一つあげるとすると、通常の(Smartではない)NICがレイヤー2(L2:以下の図ではデータリンク層)までを主に処理するのと比べ、より高いレイヤーの処理が可能であるということです。
例えばIPレイヤでのセキュリティプロトコルであるIPsecをSmartNICで実施させれば、ホスト側処理は軽減が可能です。
図8. SmartNICの概念
対策案④ GPUオフロード
GPUオフロードの肝は、データサイズが相対的に小さいパケットヘッダのみCPUで処理し、パケットペイロードはGPUで処理することです。このことによりCPU処理のボトルネックを回避して、システム全体としては性能を向上させることができます。
図9. GPUオフロード概念図
対策案まとめ
今回紹介した対策案の関係性を図示します。対策案はそれぞれ単独でも適用可能ですが、組み合わせて利用することも可能です。どのレイヤで何をさせるかや、パケット処理のパターンによりどの技術を適用するかは、いちいち異なるため一概に、この対処案が常によいというようなことがいえないのが実情です。
図10. 対策案の関係図
最後に
2回に渡り、代表的なNW高速化技術についてまとめました。DPDKについては「DPDK入門」として詳細をブログ公開しておりますのでご興味をお持ちの方はご訪問ください。
[著者プロフィール]
フューチャーネットワーク事業部 第一ビジネスユニット
山下 英之(YAMASHITA HIDEYUKI)