概要
DPDK Userspace Summit 2022の発表をざっと見てみた。
講演項目
- ethdev (ネットワークパケット系)
- パケット処理
- vhost-netの仮想化系 (vhost-userの仮想化 や、VDUSEのDPDK対応など)
-
rte_flow API
の処理高速化 (現時点では、NVIDIA/Mellanox限定だが、TemplateやConnection Trackingなど) - GPU-DPDKによる (NIC-GPU間の) パケット処理 (NVIDIA-GPU限定機能)
- P4-DPDKによる (プログラマブル) パケット処理の2022年に入った新機能
- PREEMPT_RT+Open vSwitch (OVS) によるリアルタイムパケット処理
- ブート時間短縮 (Intel限定) , メモリ管理改善
- テストフレームワーク系 (テストセット(DTS)や、rte_flowチェッカー)
- ツール系 (トレース、トラフィック生成ライブラリの提案、端末での監視ツール、Graphライブラリの遠隔タスク投入機能紹介)
- DPDKの活用 (IDSツールSuricataでのDPDK向けのパケットキャプチャ, Intel Media Transformer)
- パケット処理
- eventdev, cryptodev, dmadev (イベント処理、暗号処理、メモリコピーオフロードなど)
- イベント処理 Dynamic Load Balancing
- セキュリティ機能強化 (rte_security(MACsec)や非対称暗号機能説明)
- コピーオフロードフレームワーク (dmadev) の紹介
Virtualization of DPDK applications using virtio-vhost-user - Usama Arif, TikTok
vhostは、hypervisorでデータオフロードを行う機構である。このデータオフロード機構は、2種類あり (kernel driverの) vhost-netおよび (userspace) vhost-userがある。ここでは、ユーザ空間の機能であるvhost-userについて考察する。なぜ、このvhost-user機構の仮想化が必要な理由は、ホストカーネルの更新時間の短縮、VM内のセキュリティ強化の観点等からである。そして、仮想化はホスト側の対応(QemuとDPDK)が必要になる。これにより、ダウンタイムが、1秒程度から半分に改善された。
パッチ
メインラインには取り込まれていない。
Vhost-user Live Upgrade Optimization - ZhiHong Wang, ByteDance
大量のポートの接続を、切断・再接続すると時間がかかる。このため、デバイスメモリ領域および接続状態(vhost-user state migration)を、まとめて他のマシンに送ることによりダウンタイムを短縮した。
なお、パッチについては、投稿されていない。
Open DPDK to containers networking with VDUSE - Maxime Coquelin, Red Hat
vDPA device in userspace (VDUSE) は、ユーザー空間でのvirtio データプレーンである。vhost-userとは異なり、VDUSEデバイスは、カーネル空間のvDPA busと接続する。そして、VDUSEがコンテナネットワークで使えることを紹介する。最後に、DPDK vhostライブラリとの接続の開発状況を紹介する。
なお、パッチは開発中であり、メインラインには投稿されていない。しかし、プレゼン資料にある通り、githubで見ることはできる。また、LinuxカーネルでのVDUSEドライバは、5.15 (2021/11) からであり、かなり新しいカーネルを使う必要がある。
パッチ
パッチは開発中であり、メインラインには投稿されていない。しかし、プレゼン資料にある通り、githubで見ることはできる。また、LinuxカーネルでのVDUSEドライバは、5.15 (2021/11) からであり、かなり新しいカーネルを使う必要がある。
参考資料
- Introduction to vDPA kernel framework
- Introducing VDUSE: a software-defined datapath for virtio
- Programmer’s Guide
- Linux 5.15
- virtio Data Path Acceleration
A Refined Comprehensive DPDK Cryptodev Asymmetric Cryptodev Framework - Fan Zhang & Kai Ji, Intel
DPDK 22.07現在の状況について
Booting DPDK application quickly by device composition - Yahui Cao & Jingjing Wu, Intel
SR-IOV VF等では、起動時のデバイスプルーブで100ms単位で時間がかかっている。ここでは、Scalable IOV (S-IOV)を利用して、5倍程度起動時間を改善した。なお、XDPでは、デバイスプルーブが不要のため早く立ち上がる。ここでは、仮想化を行い起動時間を短縮する。
rte_security: support for inline MACsec - Akhil Goyal, Marvell Semiconductors
MAC層(Layer 2)のセキュリティプロトコルの実装の説明。説明時点(2022/09)では、マージ前であった。そして、22.11でマージされた。
パッチ(22.11で取り込み済み)
DPDK "dmadev" Interface - The design and use of the copy-offload APIs - Bruce Richardson, Intel
2022.11以前は、rawdevと呼ばれていたデバイスとホストとのコピーオフロード機能を、22.11よりdmadevとして、抽象化フレームワークを導入した。なお、(DPDK Usersummit発表資料)Option 2のモデルを利用しており、ethdevのモデルとは異なる。
なお、Intelとしては、Sapphire Rapidsから導入されたData Streaming Acceleratorに相当する。(ENQCMD命令相当)
文書
DPDK
Intel
DPDK Memory Allocation Optimization - Liang Ma, TikTok
-
評価
- 最悪値 mallocの繰り返しで、数10%の性能改善
- 最良値 malloc/freeの繰り返しで、10倍近く性能改善
-
質問
- (Q)tcmalloc等既存のライブラリがあるのに何でメモリ割り当ての新たなアルゴリズムを作ったの?
- (A)よく聞かれる。想定するメモリアクセスパターンが異なる。
パッチ
- 実運用等でのテスト等を考慮して最終的にパッチを出す予定
Template and Asynchronous API abstract - Ori Kam, NVIDIA
rte_flowは、DPDK17.02から導入されている。これにより、様々なフロー制御を行ってきた。しかし、
- 制御すべきフローの数等がけた違いに増えてきていること、
- 使うべきNICオフロード機能がパケット依存となり複雑化している。
という要件があり、Template APIを22.03よりサポートしている。これにより、非同期APIおよびマルチスレッドでの処理が可能になっている。
現時点(2023/01)では、NVIDIA/MellanoxのNIC限定の機能である。
パッチ (22.03で適用済み)
Accelerating Suricata with DPDK - Lukas Sismis, CESNET
OSSのIDSツールのSuricataでのDPDKによる処理高速化の話
- Accelerating Suricata with DPDK - Lukas Sismis, CESNET
-
Suricata
- dpdk: initial support with workers runmode # DPDKワーカ取り込みパッチ 2021/12取り込み
DTS Working Group Updates - Honnappa Nagarahalli, ARM
DPDK Test Suite (DTS)のWorking Groupの状況報告。
Heterogeneous Computing Solution - Alex Vesker, NVIDIA
rte_flow
のTemplate API
に加えて、Connection Tracking 機能をホスト側およびデバイス側に実装(ひと月程度)で実装して性能改善をした話。
現時点(2023/01)で、NVIDIA/MellanoxのNIC限定の機能である。
パッチ
- まだ出ていない。
DPDK in real-time GPU packet processing applications - Elena Agostini, NVIDIA
GPUとNICを直にデータを流して、パケット処理を行うGPU-DPDKの紹介である。DPDK 21.11から導入されている機能である。アプリケーションとして、NVIDIA Aerial(5G DU), NVIDIA Morphis(セキュリティ), FRB detection with NenuFAR(電波天文)を紹介している。
- DPDK in real-time GPU packet processing applications - Elena Agostini, NVIDIA
- NVIDIA/l2fwd-nv
- 22. General-Purpose Graphics Processing Unit Library
- General-Purpose Graphics Processing Unit Drivers
Real-time and low latency media transport stack based on DPDK - Ping Yu & Frank Du, Intel
マルチメディア(SMPTE ST2110)に関するIntel Media Transportの話。Linuxでのサポート状況及び、Windowsでの状況について説明している。なお、DPDKの概要説明は参考になるかもしれない。
パッチ
DPDK側のパッチは、22.11から揃っているらしい。
Graph: introduce remote dispatch for multi-core scaling - Zhirun Yan & Jingjing Wu, Intel
DPDKのデータプロセッシング用ライブラリgraph libのマルチコアでスケールするための遠隔タスク投入機能の提案(パッチの説明に近い)
パッチ(未取り込み)
Do not develop from scratch, simply write P4 and get DPDK - Cristian Dumitrescu, Intel
IPDKのデバイス(ネットワークスイッチ)の一つとして、P4言語を使ってプログラマブルにする方法がある。P4では、デバイスの一つとして、P4-DPDKを使える(DPDK 20.11より)。その方法の紹介と最新追加機能の紹介をしている。ここ1年の最新機能として、SmartNIC対応Portable NIC Architecture (PNA)に対応した等がある。
P4は、DPDKでPipelineモデルで実装している。
P4-DPDK一般
-
p4c/DPDK backend # P4-DPDKの使い方
-
-
Develop your CPU network stack in P4
- 発表資料が、この資料と類似している。
-
Develop your CPU network stack in P4
-
Pipelineの説明
IPDKの紹介
Using DPDK + OVS for deterministic low-latency communication - Felix Moessbauer & Henning Schild, Siemens AG
リアルタイムLinux (PREEMPT_RT)を用いたDPDK+OVSスイッチの構築と評価。80us以内の処理としては十分な性能を出している。
パッチ
以下のパッチは見た範囲では取り込まれていない。
DPDK and Latency : A tale of a Handmade Traffic Generator - Harry van Haaren, Intel
Traffic Generatorライブラリの提案とその紹介
パッチ
2022/1に投稿されているが、2023/1現在未取り込み
DPDK Terminal Stats Viewer - Conor Walsh, Intel
端末用のDPDK性能監視ツール。従来のように、垂れ流しではなく、topのように更新して表示する。
パッチ
2023/1/4時点では取り込まれていない。
What RTE Flow rules can your NIC offload? - David Vodák & Kamil Vojanec, Cesnet
RTE Flow Checkerの紹介。現時点では、OSSになっていない。将来的にDPDK Test Suite (DTS)に取り込まれるとよいという話が出ていた。
Design/Implementation/Usage of DPDK Trace subsystem - Jerin Jacob, Marvell
DPDK 22.05から導入されたTrace機能について概要とその使い方(CUI/GUI)の解説
- Design/Implementation/Usage of DPDK Trace subsystem - Jerin Jacob, Marvell
- (Programmers Guide) 6. Trace Library
Dynamic Load Balancing and Scaling IPSEC Workloads - Declan Doherty, Intel
IntelのSapphire Rapidsから組み込まれたDynamic Load Balancer (DLB)を使った事例の紹介です。
IPsec GWを例にして、Packet Processingがスケールして早くなると説明しています。
複数の処理が何層にも入り組んだ場合に便利に見えます。
- Dynamic Load Balancing and Scaling IPSEC Workloads - Declan Doherty, Intel
- 1. Event Device Supported Functionality Matrices
- 12. dpdk-test-eventdev Application
- 45. IPsec Security Gateway Sample Application
パッチ
すでに入っているパッチの紹介だと思う。