Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / D...

ebiken
October 25, 2024

サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜

日本P4ユーザ会 2024 @ 品川 マクニカ
https://p4users.org/p4usersjp2024/
・データセンターネットワークの動向
 (サーバーサイド・アクセラレータが必要となる背景)
・サーバーサイド・アクセラレータの分類と製品例
・サーバーサイド・アクセラレータのユースケース
・NVIDIA Blue Field 3 (BF3) & DOCA
・DOCA & DOCA Flow 概要
・パケット処理パイプラインのプログラミング

ebiken

October 25, 2024
Tweet

More Decks by ebiken

Other Decks in Technology

Transcript

  1. サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜 サーバーサイドのデータプレーンプログラミング 〜

    NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 0 日本P4ユーザ会@品川 海老澤 健太郎|プリンシパル エンジニア| Arrcus, Inc.
  2. Table of Contents • 自己紹介 • データセンターネットワークの動向 • サーバーサイド・アクセラレータの分類と製品例 •

    サーバーサイド・アクセラレータのユースケース NVIDIA Blue Field 3 (BF3) & DOCA • DOCA & DOCA Flow 概要 • パケット処理パイプラインのプログラミング サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 1
  3. サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 |

    海老澤 健太郎 Arrcus, Inc 2 Research & Support Engineer Netmarks Mar 1998 ~ Jun 2001 Regional manager, Global Support Center Network Appliance Jul 2001 ~ Dec 2006 Director of Service Development Operation SGI Japan Feb 2007 ~ Sep 2008 • Product Intro and Support for Operators • Data Center Operation (energy efficiency) • Technical Team Management Network (Enterprise / Telecom / ISP) ATM, VPN(IPsec), xDSL, MPLS Content Delivery Network & Storage Web/Streaming Cache & LB, NFS/SAN Data Center & SaaS (MEX/SGI) Energy Efficiency, DesktopVPN (SaaS) ~10 years Senior Product Manager Sable Networks Apr 2008 ~ Nov 2010 Solution Architect Parallels Dec 2010 ~ Mar 2014 VP of Technology Riava Jul 2014 ~ Sep 2015 Principal Engineer Lumina Networks Nov 2018 ~ Aug 2020 Co-Founder, CTO Ponto Networks Dec 2015 ~ Jun 2018 Network Automation SDN Controller, Orchestrator OpenFlow, FPGA, WhiteBox NOS Switch Design & Development Flow Router, IPv6/v4 Translation (nat64) Service Automation & Container Operation/Business Support System • Product Design and Development • Management and Board member of Startup Companies • Support Japan Market Entry • Technical Consulting / Support • Open-Source Community 10~20 years Lagopus OF Switch Kentaro Ebisawa(海老澤 健太郎) https://www.linkedin.com/in/ebiken/ Principal Researcher TOYOTA Motor Corp. Nov 2016 ~ Dec 2023 Network Infra for Connected Cars Research Professor NTT Ltd. Dec 2020 ~ Nov 2023 Operator Network Technology TOYOTA InfoTechnology (Nov 2016 ~ Mar 2019) Merged to TOYOTA Mortor Corp on Mar 2019 ~25 years Principal Engineer | Arrcus, Inc. Jan 2024 ~ current Virtualization of Data Plane
  4. • 創業:2016年 • 本社:北米 カリフォルニア(サンノゼ) • 社員数:約140名(2024年10月) • Founder and

    CTO: Keyur Patel • Ex-Cisco, Distinguished Engineer • Co-Chair IETF BGP & Sidrops WG • Chairman and CEO: Shekar Ayyar • Ex-VMware EVP & GM (14 years) 事業内容・特徴 • ホワイトボックススイッチを初め、様々なプラットフォーム上 でネットワーク機能を提供する “ネットワークOS” を開発 • 創業者CTO Keyur Patelを筆頭に、長年IETFで Working Group Chair などを務めているメンバーが多数在籍 • ユーザ企業と共同での研究開発、製品実装、IETFでの標準化 、などを通じて新しい技術を生み出している Arrcus, Inc. 概要 (アーカス) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 3 本社:サンノゼ空港近く(SFOから35分)
  5. 【事例】 SRv6 モバイルユーザープレーン(MUP)による簡素化・ネットワークスライシング サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA

    〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 4 • アンカー UPF オフロード、MEC サイトでは I-UPF は不要 • サービス固有のスライス • SLA 制限付きスライス (レイテンシー、測定された遅延、可用性、その他のパラメータ) DN SMF gNB UPF AMF gNB N11 N3 SRv6 N4 MUP-C MUP-PE MUP-PE MUP-PE gNB デフォルト スライス N4 N3 N3 MEC でのサービスに向かう ⾚と⻘のスライス アクセス トランスポート 5G コア SRv6 モバイルユーザープレーン MUP-C コントローラー MUP-PE プロバイダエッジルーター AMF – Access Mobility Function SMF – Session Mobility Function UPF – User Plane Function I-UPF – Intermediate UPF RFC9433 “Segment Routing over IPv6 for the Mobile User Plane”
  6. AI/ML から5G・コア・DC・マルチクラウドまで、幅広く対応 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜|

    日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 5 PEルーター アグリゲーション スイッチ アグリゲーション ルーター セルサイト ルーター データセンター VDR (Virtualized Distributed Router ) アグリゲーション コア アクセス マルチクラウド 1 N IP/MPLS IP/MPLS IP/MPLS Internet 5G Core 5G DCI MCN (Multi-Cloud Networking) 企業 DC データセンター 共通のネットワークOS 「ArcOS」は、ローエンドスイッチからハイエンドルーターまでをサポート
  7. 幅広いスイッチ・プラットフォームの選択肢 (1G - 800G) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field /

    DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 6 最⾼クラスのプラットフォームを迅速にサポート 1G/10G/25G 10G/25G/40G 100G/400G 40G/100G Ufispace S9300-32D 32x400G Trident 4_X11 100G/ 400G Edgecore AS9716-32D 32x400G Tomahawk 3 Celestica Seastone 2 32x100G Trident 3_X7 Quanta IX7 32x100G Trident 3_X7 Quanta IX8 3.2T 48x25G 8x100G Trident 3_X7 Quanta IXA 80x100G Jericho 2 Edgecore AS7712-32X 32x100G Tomahawk Quanta IX8A 2.0T 48x25G 8x100G Trident 3_X5 UfiSpace S9705-48D 48x400G Ramon Celestica Questone 2A 48x10/25G 8x100G Trident 3_X5 Edgecore AS7726-32X 32x100G Trident 3_X7 Edgecore AS4630-54TE 48x1G 4x25G Trident 3_X3 Quanta IXAE 40x100G Jericho 2 UfiSpace S9600-72XC 64x25G 8x100G Qumran 2c UfiSpace S9810-32XC 32x100G Tofino UfiSpace S8901-54XC 48 x 25G + 6 x 100G Trident3_X5 Edgecore AS4630-54PE 48x1G POE 4x25G Trident 3_X3 UfiSpace S9710-76D 36x400G + 40x400G 2xJericho 2c+ Edgecore AS7326-56X 48x25G 8x100G Trident 3_X7 UfiSpace S9600-32X 32x100G Qumran 2c UfiSpace S9700-53DX 40x100G + 13x400G Jericho 2 Edgecore AS4625-54TE 48x1G 6x10G Trident 3_X2 Celestica Questone 2 48x25G 8x100G Trident 3_X7 UfiSpace S9600-30DX 24x100G + 6x400G Jericho 2 UfiSpace S9700-23D 10x400G + 13x400G Jericho 2 Celestica Silverstone 32x400G Tomahawk 3 Roadmap Ufispace S9301-32DB 24x200G + 8x400G Trident 4_X9 UfiSpace S9510-28DC 24x1/10/25G + 2x40/100G + 2x200/400G Qumran 2a UfiSpace S9600-64X 64x100G Q2c Edgecore AS7535-28XB 24 x 1G/10G/25G, 2 x 100G, 2 x 400G Qumran 2a Edgecore AS7946-30XB 4 x 25G, 22 x 100G, 4 x 400G Q2c Edgecore AS9736-64D 64 x 400G Tomahawk 4 Edgecore AS9726-32DB 32 x 400G Trident 4 800G UfiSpace S6301-56ST 48x1G 8x10G Trident 3_X2 UfiSpace S9610-46DX 40x100G, 6x400G 1xQ2c+ UfiSpace S9620-32E 32 x 800G Q3d UfiSpace S9720-56ED 36x400G/18x800G + 20x800G Jericho 3 UfiSpace S9725-64E 64x800G Ramon 3 UfiSpace 18 × 800GbE, 36 × 400GbE, or 72 × 200GbE + 20x800G Jericho3AI UfiSpace S9610-36D 36x400G 2xJericho 2c+ Edgecore AS7926-40XKFB 40x100G + 13x400G Jericho 2 Nvidia SN5600 64 x 800G Spectrum 4 Nvidia SN4600 64x200G Spectrum 3 UfiSpace S9321-64E 64 x 800G Tomahawk 5 Edgecore AS9736-64D 64 x 800G Tomahawk 5
  8. 最新のアクセラレータハードウェアのサポート サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 7 Nvidia BlueField-3 (DPU, SuperNIC) • IPSec • Layer3 routing with IP (GRE) • SRv6 Mobile User Plane (MUP) Intel NetSec Accelerator • IPSec • Security & Firewall applications • GRE Tunnels (DPU・SmartNIC)
  9. 取組分野 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 8 • 生成AI基盤向けネットワーク技術の研究&製品開発 • ロスレスイーサネット機能の(PFC, ECN) • GPUファブリックの負荷分散(Dynamic Load Balancing) • サーバーサイド・ネットワーク技術の研究&製品開発 • SmartNIC(NVIDIA BF3)を活用したネットワーク処理のオフロード • SmartNIC ネットワーク処理の高度化による、エッジ分散処理の効率化
  10. パケット処理 => スイッチ(ルーター) + サーバー サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field

    / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 10 アプリケーション socket IP Ethernet Driver Network Interface Card TCP / UDP パケット送受信 プロトコル処理 メモリコピー スイッチ (ルーター) スイッチ (ルーター) ① パケット転送処理 ② OSネットワークスタック ① パケット転送処理 ② OSネットワークスタック
  11. クラウド&生成AI需要による高速インターフェースの普及 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 12 購買力のあるクラウド事業者や生成AIユースケースが高速インターフェース(400G, 800G)の普及を加速 https://www.fibermall.com/blog/800g-optical-transceiver-market-analysis.htm
  12. スイッチASIC広帯域化による遅延の削減 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 13 リリース毎にスイッチASICの帯域が倍増 ファブリック階層の削減 => 遅延の削減 YouTube: “Broadcom AI Interconnect and Tomahawk AI Fabrics” https://www.youtube.com/watch?v=fFojfZpxyIM 800GbE x 16port x 4 switch
  13. 光回路スイッチ(OCS)による柔軟な帯域割当や低遅延の実現 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 14 SDNを用いた動的な物理パスの最適化 Google: “進化する Jupiter: Google データセンターのネットワークの変遷を振り返って” 2022年9月2日 https://cloud.google.com/blog/ja/topics/systems/the-evolution-of-googles-jupiter-data-center-network?hl=ja
  14. パケット転送処理(通信帯域・遅延)がボトルネックになることが減少 背景 • 半導体(CPU)トレンドの変化による、アプリケーション構成の変化 • CPU周波数の頭打ち => マルチコア・マルチスレッドへの変化 • アプリケーション構成の変化により、ネットワーク機能の場所も変化

    • アプリケーションが占めるCPU利用率の低下 • (将来)計算リソースの分散配置 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 15 サーバーサイド・ネットワーク処理の高速化が必要
  15. CPU周波数の頭打ち => マルチコア・マルチスレッドへの変化 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA

    〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 16 https://github.com/karlrupp/microprocessor-trend-data 周波数の頭打ち コア数の増加 Moore’s Law Amdahl’s Law Dennard Scaling Principles 半導体(CPU)トレンドの変化による、アプリケーション構成の変化 スケールアップから スケールアウトへ
  16. アプリケーション構成の変化により、ネットワーク機能の場所も変化 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 17 North-South Traffic 中心 アプライアンスがゲートウェイとして ネットワーク機能を提供 East-West Traffic 中心 サーバーに近い場所での ネットワーク機能提供が必要に Firewall Load Balancer Server Server Server Server Internet Server Server Server Internet micro-service 半導体(CPU)トレンドの変化による、アプリケーション構成の変化
  17. ネットワークの高速化による アプリケーションが占めるCPU利用率の低下 • 2015 Google: Profiling a warehouse-scale computer •

    https://dl.acm.org/doi/10.1145/2749469.2750392 • They found that the diversity of workloads would benefit from flexible architectures, and identify a “datacenter tax” in the lower layers of the software stack that comprises nearly 30% of cycles across jobs and that are prime candidates for hardware specialization and acceleration. • 2020 Facebook: Accelerometer: Understanding Acceleration Opportunities for Data Center Overheads at Hyperscale • https://dl.acm.org/doi/10.1145/3373376.3378450 • Another study by Facebook published in 2020 found that microservices spend as few as 18% of CPU cycles executing core application logic. The remaining cycles were spent in common operations not core to the application logic, including I/O processing, logging, and compression. Facebook believed that accelerating standard building blocks can significantly improve data center performance and they built a model to project possible hardware speedup in microservices. サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 18 半導体(CPU)トレンドの変化による、アプリケーション構成の変化
  18. サーバーサイドでの “ネットワーク機能のアクセラレーション” が必要に サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA

    〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 19 Multi-core CPU ネットワーク基盤機能 仮想スイッチ、暗号化、ロー ドバランス、監視 アプリケーション① アプリケーション② アプリケーション③ Multi-core CPU アプリケーション① アプリケーション② アプリケーション③ SmartNIC ネットワーク基盤機能 仮想スイッチ、暗号化、ロー ドバランス、監視 アプリケーション④ アプリケーション⑤ アプリケーションのCPU利用率向上 &セキュリティの向上(アイソレーション) SmartNIC (IPU, DPU) アクセラレータの利用
  19. サーバーサイド・アクセラレーション 実現方式の分類 • ソフトウェア (Software Based) • 主に Kernel Network

    Stack で実行される処理の軽減やバイパス • Linux Kernel と親和性あり • eBPF, XDP, AF_XDP (eXpress Data Path, Address Family XDP) • vDPA (virtio data path acceleration) • (コンテナなどアプリケーション基盤や、オブザーバビリティでの利用が多い) • Linux Kernel と親和性無し • DPDK (VPP, IPDK, OVS-DPDK) • (VPP等、NFVワークロードでの利用が多い) • ハードウェア (Hardware Based) • パケット処理に(CPUより)適した、ドメイン特化型のハードウェアを利用 • ASIC, NPU, FPGA, SoC(Many-coreプロセッサ+暗号化・圧縮・特定演算用チップ) • NIC型のフォームファクタに搭載され、IPU/DPUとも呼ばれる(SmartNIC) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 20 注:IPU/DPU/SoC/ASIC/NPU etc. は厳密な定義がなく、ベンダにより呼称が異なる 専用ハードウェア不要だが、 アプリケーションで利用可能 なリソースが制限される パケット処理に適した専用ハード ウェアで処理することにより、 高速化と同時に、アプリケーション のリソースを確保可能
  20. サーバーサイド・アクセラレーション 実現方式の分類 • ソフトウェア (Software Based) • 主に Kernel Network

    Stack で実行される処理の軽減やバイパス • Linux Kernel と親和性あり • eBPF, XDP, AF_XDP (eXpress Data Path, Address Family XDP) • vDPA (virtio data path acceleration) • (コンテナなどアプリケーション基盤や、オブザーバビリティでの利用が多い) • Linux Kernel と親和性無し • DPDK (VPP, IPDK, OVS-DPDK) • (VPP等、NFVワークロードでの利用が多い) • ハードウェア (Hardware Based) • パケット処理に(CPUより)適した、ドメイン特化型のハードウェアを利用 • ASIC, NPU, FPGA, SoC(Many-coreプロセッサ+暗号化・圧縮・特定演算用チップ) • NIC型のフォームファクタに搭載され、IPU/DPUとも呼ばれる(SmartNIC) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 21 注:IPU/DPU/SoC/ASIC/NPU etc. は厳密な定義がなく、ベンダにより呼称が異なる 専用ハードウェア不要だが、 アプリケーションで利用可能 なリソースが制限される パケット処理に適した専用ハード ウェアで処理することにより、 高速化と同時に、アプリケーション のリソースを確保可能
  21. アクセラレータ(SmartNIC)の分類 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 23 IPU/DPU (ASIC/NPU) FPGA ハードウェア構成 Many Core CPU + NIC Chip パケット処理アクセラレータ 暗号化や機能特化アクセラレータ FPGA (CPU) (NIC Chip) プログラマビリティ 比較的高い (ユースケースに依存) 高い プログラムの しやすさ 比較的容易 (SDKやライブラリを利用) 難しい (HDLの経験が必要) 製品(例) Intel IPU E2100 AMD Pensando DPU NVIDIA BlueField DPU Marvell OCTEON DPU Intel IPU F2000X-PL Intel IPU C5000X-PL AMD Alveo U45N 他にも多数のベンダが提供 [*] 価格は調達量や方法により大きく変化するため都度確認が必要 FPGA: Intel (Altera), AMD (Xilinx) P4 Programmable?
  22. DPUの内部構造(例:NVIDIA BlueField Networking Platforms) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field /

    DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 24 https://www.nvidia.com/en-us/networking/products/data-processing-unit/
  23. Intel Infrastructure Processing Unit (IPU) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field

    / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 25 https://www.intel.com/content/www/us/en/products/details/network-io/ipu.html ※ Intel は専用ASICとFPGAどちらも “IPU” と呼称 P4 Programmable
  24. AMD Pensando ~ DPU and SmartNIC サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue

    Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 26 Pollara 400 Adapters Salina DPU https://www.amd.com/en/products/accelerators/pensando.html P4 Programmable
  25. AMD Alveo™ Adaptable Accelerator Cards サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field

    / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 27 https://www.amd.com/en/products/accelerators/alveo.html
  26. Marvell OCTEON Data Processing Units (DPU) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue

    Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 28 https://www.marvell.com/products/data-processing-units.html Marvell OCTEON TX2 (CN92XX, CN96XX and CN98XX) Marvell OCTEON 10 DPU Platform
  27. サーバーサイド・アクセラレーションのユースケース • CPUのオフロード&セキュリティ向上(主にデータセンター) • サーバーサイドで必要な ネットワーク機能 • クラウド基盤の高速化(オフロード)&セキュリティ向上 • ストレージアクセスの高速化

    (Target Offload + NVMEoF Initiator) • 任意のパケットフォーマットでの高速暗号化(IPsec) や 分散ファイヤーウォール • ネットワーク製品(機能)の高速化・効率化(主に通信事業者) • ネットワーク仮想アプライアンス(NVA) • VPN/NAT/Cloud GW • ORAN, UPF (モバイル) • 高速化&電力効率向上(MEC対応) • 生成AI基盤 • トランスポート・プロトコルのオフロード • 輻輳制御(Congestion Control)やリオーダリング対応 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 30
  28. クラウド基盤の高速化&セキュリティ向上 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 31 "Keynote 7 - P4 HAL for Network Virtualization" Parveen Patel, Google Cloud, 2023 P4 Workshop @SanJose • ネットワーク処理のオフロード • ホストCPUからネットワーク処理負荷をオフロード • より多くのCPUリソースをユーザーに提供可能 • 暗号化など、CPU負荷の⾼い処理を専⽤回路で実⾏ • セキュリティの向上 • ユーザーアプリケーションとインフラの物理的な分離 • DDoS 等の攻撃をCPUの⼿前で検知・フィルタ
  29. ハイパーバイザーのネットワーク処理をSmartNICにオフロード サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 32 ネットワーク 仮想化レイヤ ハードウェア を交換可能に Google Cloud ... "Keynote 7 - P4 HAL for Network Virtualization", Parveen Patel, 2023 P4 Workshop @SanJose
  30. ネットワーク仮想アプライアンス の高速化 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜|

    日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 33 NSDI23: Disaggregating Stateful Network Functions https://www.usenix.org/conference/nsdi23/presentation/bansal Microsoft Azure: 高速接続と NVA (プレビュー) https://learn.microsoft.com/ja-jp/azure/networking/nva-accelerated-connections メリット • 1 秒あたりの接続数 (CPS) の増加 • 一貫性のあるアクティブな接続 • 高トラフィック ネットワークの最適化されたVMの CPU容量や安定性の向上 • ジッターの削減 • CPU 使用率の削減 Microsoft Azure + AMD Pensando DPU
  31. 任意のパケットフォーマットでの高速暗号化(IPsec) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 34 • 低遅延+高スループット • 任意の粒度の暗号化鍵 • 任意のレイヤでの暗号化 (Overlay vs Underlay) • IPsec コントロールプレーン非依存 P4 Workshop 2023 "Keynote 4 - AMD Pensando DPUs and Projects", AMD Pensando, Krishna Doddapaneni
  32. 生成AI向けトランスポート層アクセラレータ サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 35 Tesla Transport Protocol over Ethernet (TTPoE) TCPをシンプル化しハードウェアで実行 RDMAなど生成AI向けワークロード処理を(ロスレスではなく)通常のイーサネットで実現 E. Quinnell, "Tesla Transport Protocol Over Ethernet (TTPoE): A New Lossy, Exa-Scale Fabric for the Dojo AI Supercomputer," in 2024 IEEE Hot Chips 36 Symposium (HCS), Stanford, CA, USA, 2024 pp. 1-23 | doi: 10.1109/HCS61935.2024.10664947
  33. サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 |

    海老澤 健太郎 Arrcus, Inc 36 Tesla Transport Protocol over Ethernet (TTPoE) E. Quinnell, "Tesla Transport Protocol Over Ethernet (TTPoE): A New Lossy, Exa-Scale Fabric for the Dojo AI Supercomputer," in 2024 IEEE Hot Chips 36 Symposium (HCS), Stanford, CA, USA, 2024 pp. 1-23 | doi: 10.1109/HCS61935.2024.10664947 TCPをシンプル化しハードウェアで実行 RDMAなど生成AI向けワークロード処理を(ロスレスではなく)通常のイーサネットで実現
  34. サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 |

    海老澤 健太郎 Arrcus, Inc 37 E. Quinnell, "Tesla Transport Protocol Over Ethernet (TTPoE): A New Lossy, Exa-Scale Fabric for the Dojo AI Supercomputer," in 2024 IEEE Hot Chips 36 Symposium (HCS), Stanford, CA, USA, 2024 pp. 1-23 | doi: 10.1109/HCS61935.2024.10664947
  35. UEC (Ultra Ethernet Consortium) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field /

    DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 38 生成AIワークロード(RoCEv2)の課題を解決するプロトコルや技術の 「デファクトスタンダード」 を 「マルチベンダ」 で開発 https://ultraethernet.org/
  36. UEC取組分野(ワーキンググループ) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 39 • Ultra Ethernet Transport (UET) : 新しいトランスポート・プロトコルの策定 • In Network Collectives:ネットワークノードで集合通信のオフロード • イーサネット(物理・リンクレイヤ)の改善、運用管理、性能向上 https://ultraethernet.org/working-groups/
  37. NVIDIA Blue Field 3 (BF3) & DOCA DOCA & DOCA

    Flow 概要 パケット処理パイプラインのプログラミング サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 40
  38. DOCA & DOCA Flow 概要 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field

    / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 41
  39. サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 |

    海老澤 健太郎 Arrcus, Inc 42 DOCA • DPU向けソフトウェア開発キット(SDK) • ライブラリ、ドライバ、サービス機能 • DPU上の ARM Core (OS: Ubuntu) で動作 • アプリも ARM Core で動作(ホストで動作も可能) Data Center-on-a-Chip Architecture https://docs.nvidia.com/doca/sdk/nvidia+doca+overview/index.html
  40. DOCA Flow : パケット処理パイプライン プログラミング ライブラリ サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue

    Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 43 DOCA Flow Architecture • マッチアクションテーブルを定義 => Flow PIPE (P4 table) • Flow PIPE を組み合わせパケット処理をプログラミング (P4 control) • データプレーンで処理できないパケットはCPUに転送して処理可能 (SW Exception Handling) DOCA Flow の図や解説は、他に明示されていない場合は以下から引用 ”NVIDIA Docs Hub NVIDIA Networking BlueField DPUs / SuperNICs & DOCA DOCA Documentation v2.8.0 DOCA Flow” https://docs.nvidia.com/doca/sdk/doca+flow/index.html
  41. Flow PIPE の構成 (P4 Table) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field

    / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 44 1. Match:マッチフィールド 2. Monitor (MON):ミラー、メーター 、カウンター 3. Modify (MOD):フィールドの変更 4. Forward (FWD) :次の PIPE や転送先を指定 “DOCA Documentation v2.8.0 > DOCA Flow: Create Pipe and Pipe Entry” https://docs.nvidia.com/doca/sdk/doca+flow/index.html#src-2815015295_id-.DOCAFlowv2.8.0-CreatePipeandPipeEntry
  42. DOCA Flow: ユースケースに応じて動作モードを選択可能(PIPEの接続パターンが異なる) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA

    〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 45 VNF Mode Switch Mode P4で言うアーキテクチャの違い( BMv2, PSA, PNA etc. )
  43. DOCA Flow:パケット処理パイプラインのプログラミング手順 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜|

    日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 47 PIPEパラメータの定義 • マッチフィールドの定義 • アクションの定義 PIPEの作成 PIPEエントリーの追加 PIPEエントリーの追加 table • key • actions control P4の場合 p4runtime ビルドタイム ランタイム DOCAライブラリ (C言語API)を利用 複数個のPIPEを作成し パイプラインを構成
  44. DOCAライブラリ(C言語API) doca_flow.h 入手方法 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA

    〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 48 NVIDIA Docs Hub > NVIDIA Networking > BlueField DPUs / SuperNICs & DOCA > DOCA Documentation v2.8.0 > NVIDIA DOCA Installation Guide for Linux https://docs.nvidia.com/doca/sdk/nvidia+doca+installation+guide+for+linux/index.html# src-2924758623_id-.NVIDIADOCAInstallationGuideforLinuxv2.8.0-InstallationFiles 1. doca-host_*.deb パッケージをダウンロード
  45. doca_flow.h 入手方法 (インストールしない場合) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA

    〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 49 1. doca-host_*.deb パッケージをダウンロード doca$ wget https://developer.nvidia.com/downloads/networking/secure/doca-sdk/DOCA_2.8/doca-host_2.8.0-204000-24.07-ubuntu2204_amd64.deb 2. doca-host_*.deb を展開 doca$ mkdir tmp doca$ dpkg -x doca-host_2.8.0-204000-24.07-ubuntu2204_amd64.deb tmp/ 3. libdoca-sdk-flow-dev_*.deb パッケージを展開 doca$ dpkg -c doca-host_2.8.0-204000-24.07-ubuntu2204_amd64.deb | grep flow -rw-r--r-- root/root 433310 2024-08-12 02:21 ./usr/share/doca-host-2.8.0-204000-24.07-ubuntu2204/repo/pool/doca-sdk-flow_2.8.0082-1_amd64.deb -rw-r--r-- root/root 638942 2024-08-12 02:21 ./usr/share/doca-host-2.8.0-204000-24.07-ubuntu2204/repo/pool/libdoca-sdk-flow-dev_2.8.0082-1_amd64.deb -rw-r--r-- root/root 805038 2024-08-12 02:21 ./usr/share/doca-host-2.8.0-204000-24.07-ubuntu2204/repo/pool/libdoca-sdk-flow-trace_2.8.0082-1_amd64.deb doca$ cd tmp doca/tmp$ mkdir libdoca-sdk-flow-dev_2.8.0082-1_amd64 doca/tmp$ dpkg -x ./usr/share/doca-host-2.8.0-204000-24.07-ubuntu2204/repo/pool/libdoca-sdk-flow-dev_2.8.0082-1_amd64.deb \ libdoca-sdk-flow-dev_2.8.0082-1_amd64/ 3. doca_flow.h を見つける(find) doca/tmp$ cd libdoca-sdk-flow-dev_2.8.0082-1_amd64/ doca/tmp/libdoca-sdk-flow-dev_2.8.0082-1_amd64$ find . -name doca_flow.h ./opt/mellanox/doca/include/doca_flow.h
  46. Flow PIPEの作成:マッチフィールドの定義 (P4の Table key) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field

    / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 50 マッチやアクションのフィールド定義は、値+マスクで設定 Match Type 意味 設定例 (Explicit Match) Ignore 評価しない // ignore this field match_mask.inner.ip4.dst_ip = 0; Constant 全てのエントリで同じ値にマッチ // match with 1.2.0.0/24 match.inner.ip4.dst_ip = BE_IPV4_ADDR(1, 2, 0, 0); match_mask.inner.ip4.dst_ip = BE_IPV4_ADDR(255, 255, 0, 0); Changeable エントリ毎にマッチする値を設定 match.inner.ip4.dst_ip = 0xffff; match_mask.inner.ip4.dst_ip = 0xffff;
  47. doca_flow_match 構造体 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜|

    日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 51 struct doca_flow_match { uint32_t flags; /**< match items which are no value */ struct doca_flow_meta meta; /**< Programmable meta data. */ struct doca_flow_parser_meta parser_meta; /**< Read-only meta data. */ struct doca_flow_header_format outer; /**< outer layer header format */ struct doca_flow_tun tun; /**< tunnel info */ struct doca_flow_header_format inner; /**< inner layer header format */ }; struct doca_flow_header_format { struct doca_flow_header_eth eth; /**< ether head */ uint16_t l2_valid_headers; /**< indicate which headers are valid */ struct doca_flow_header_eth_vlan eth_vlan[DOCA_FLOW_VLAN_MAX]; /**< vlan header array*/ enum doca_flow_l3_type l3_type; /**< layer 3 protocol type */ union { struct doca_flow_header_ip4 ip4; /**< ipv4 head */ struct doca_flow_header_ip6 ip6; /**< ipv6 head */ }; enum doca_flow_l4_type_ext l4_type_ext; /**< l4 layer extend type */ union { struct doca_flow_header_icmp icmp; /**< icmp header */ struct doca_flow_header_udp udp; /**< udp header */ struct doca_flow_header_tcp tcp; /**< tcp header */ struct doca_flow_header_l4_port transport; /**< transport layer source and destination port */ }; };
  48. 利用可能なアクション & doca_flow_actions 構造体 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field /

    DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 52 struct doca_flow_actions { uint8_t action_idx; /**< index according to place provided on creation */ uint32_t flags; /**< action flags */ enum doca_flow_resource_type decap_type; /**< type of decap */ union { struct doca_flow_resource_decap_cfg decap_cfg; /**< config for non_shared decap */ uint32_t shared_decap_id; /**< action for shared decap */ }; bool pop; /**< when true, pop header */ struct doca_flow_meta meta; /**< modify meta data, pipe action as mask */ struct doca_flow_parser_meta parser_meta; /**< copy from read-only meta data, pipe action as mask */ struct doca_flow_header_format outer; /**< modify outer headers */ struct doca_flow_tun tun; /**< modify tunnel headers*/ enum doca_flow_resource_type encap_type; /**< type of encap */ union { struct doca_flow_resource_encap_cfg encap_cfg; /**< config for non_shared encap */ uint32_t shared_encap_id; /**< action for shared encap */ }; bool has_push; /**< when true, push header */ struct doca_flow_push_action push; /**< push header data information */ struct doca_flow_nat64_action nat64; /**< nat64 action */ bool has_crypto_encap; /**< when true, do crypto reformat header/trailer */ struct doca_flow_crypto_encap_action crypto_encap; /**< header/trailer reformat data information */ struct doca_flow_crypto_action crypto; /**< crypto action information */ }; 利用可能なアクション • ヘッダやメタデータの変更 • ヘッダの decap/encap • nat64、暗号化、等 Action 適用順序 1. Crypto (decryption) 2. Decapsulation 3. Pop 4. Meta 5. Outer 6. Tun 7. Push 8. Encapsulation 9. Crypto (encryption)
  49. アクション設定の例 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川

    | 海老澤 健太郎 Arrcus, Inc 53 struct doca_flow_actions meta_action; struct doca_flow_actions nat_action; struct doca_flow_actions meta_action_mask; struct doca_flow_actions nat_action_mask; struct doca_flow_actions *actions_list[] = {&meta_action, &nat_action}; struct doca_flow_actions *actions_mask_list[] = {&meta_action_mask, &nat_action_mask}; nat_action.action_idx = 1; nat_action.outer.l3_type = DOCA_FLOW_L3_TYPE_IP4; nat_action.outer.ip4.src_ip = UINT32_MAX; nat_action.outer.ip4.dst_ip = UINT32_MAX; nat_action.outer.l4_type_ext = DOCA_FLOW_L4_TYPE_EXT_TCP; nat_action.outer.transport.src_port = UINT16_MAX; nat_action.outer.transport.dst_port = UINT16_MAX; nat_action_mask.action_idx = 1; nat_action_mask.outer.l3_type = DOCA_FLOW_L3_TYPE_IP4; nat_action_mask.outer.ip4.src_ip = UINT32_MAX; nat_action_mask.outer.ip4.dst_ip = UINT32_MAX; nat_action_mask.outer.l4_type_ext = DOCA_FLOW_L4_TYPE_EXT_TCP; nat_action_mask.outer.transport.src_port = UINT16_MAX; nat_action_mask.outer.transport.dst_port = UINT16_MAX; meta_action.action_idx = 0; meta_action.meta.pkt_meta = UINT32_MAX; meta_action.meta.u32[0] = UINT32_MAX; meta_action_mask.action_idx = 0; meta_action_mask.meta.pkt_meta = 0xffff; meta_action_mask.meta.u32[0] = 0xffff; value = 0xffff, mask = 0xffff エントリ毎にセットする値を指定可能 詳細は “Summary of Action Types” を参照 https://docs.nvidia.com/doca/sdk/doca+flow/index.html#src-2815015295_id- .DOCAFlowv2.8.0-SummaryofActionTypesSummaryofActionTypes P4の例 action set_src_port(bit<16> port) { hdr.tcp.src_port = port; }
  50. Summary of Action Types サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field /

    DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 54 https://docs.nvidia.com/doca/sdk/doca+flow/index.html#src-2815015295_id-.DOCAFlowv2.8.0-SummaryofActionTypesSummaryofActionTypes
  51. FWD (Forward) :次の PIPE や転送先を指定 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field

    / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 55 Pipe Forwarding • Send to wire • Send to software (representor) • Jump to next pipe • Drop packets https://docs.nvidia.com/doca/sdk/doca+flow/index.html#src-2815015295_id-.DOCAFlowv2.8.0-SettingPipeForwarding struct doca_flow_fwd *fwd = \ malloc(sizeof(struct doca_flow_fwd)); memset(fwd, 0, sizeof(struct doca_flow_fwd)); fwd->type = DOCA_FLOW_FWD_PORT; fwd->port_id = port_id; fwd->type = DOCA_FLOW_FWD_RSS; fwd->rss_queues = queues; fwd->rss_flags = DOCA_FLOW_RSS_IP | DOCA_FLOW_RSS_UDP; fwd->num_of_queues = 4; Send to wire Send to software (representor / RSS Queue) enum doca_flow_fwd_type { DOCA_FLOW_FWD_NONE = 0, DOCA_FLOW_FWD_RSS, DOCA_FLOW_FWD_PORT, DOCA_FLOW_FWD_PIPE, DOCA_FLOW_FWD_DROP, DOCA_FLOW_FWD_TARGET, DOCA_FLOW_FWD_ORDERED_LIST_PIPE, DOCA_FLOW_FWD_CHANGEABLE, }; PIPE全体、エントリ毎、どちらでも設定可能
  52. 5 Tuple マッチのパイプライン(例) サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA

    〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 56 match.parser_meta.outer_l4_type = DOCA_FLOW_L4_META_TCP; match.parser_meta.outer_l3_type = DOCA_FLOW_L3_META_IPV4; match.outer.l4_type_ext = DOCA_FLOW_L4_TYPE_EXT_TCP; match.outer.l3_type = DOCA_FLOW_L3_TYPE_IP4; /* Source, destination IP addresses and source, destination TCP ports are defined per entry */ match.outer.ip4.dst_ip = 0xffffffff; match.outer.tcp.l4_port.src_port = 0xffff; match.outer.tcp.l4_port.dst_port = 0xffff; fwd.type = DOCA_FLOW_FWD_PORT; /* Port ID to forward to is defined per entry */ fwd.port_id = 0xffff; monitor.counter_type = DOCA_FLOW_RESOURCE_TYPE_NON_SHARED; result = doca_flow_pipe_cfg_create(&pipe_cfg, sw_port); if (result != DOCA_SUCCESS) { DOCA_LOG_ERR("Failed to create doca_flow_pipe_cfg: %s", doca_error_get_descr(result)); return result; } result = doca_flow_pipe_cfg_set_match(pipe_cfg, &match, NULL); if (result != DOCA_SUCCESS) { DOCA_LOG_ERR("Failed to set doca_flow_pipe_cfg match: %s", doca_error_get_descr(result)); goto destroy_pipe_cfg; } result = doca_flow_pipe_cfg_set_monitor(pipe_cfg, &monitor); if (result != DOCA_SUCCESS) { DOCA_LOG_ERR("Failed to set doca_flow_pipe_cfg monitor: %s", doca_error_get_descr(result)); goto destroy_pipe_cfg; } result = doca_flow_pipe_create(pipe_cfg, &fwd, NULL, pipe); samples/doca_flow/flow_switch_to_wire/flow_switch_to_wire_sample.c マッチフィールドの設定 (エントリ毎に 5 Tuple を指定) 転送先の設定(エントリ毎に指定) カウンタの設定
  53. まとめ • サーバーサイド・アクセラレーションの必要性 • スイッチASICの進化 • パケット処理のボトルネックがサーバーサイドへ移動 • データプレーンプログラミングのコンセプトは共通 •

    マッチアクションテーブルを組み合わせたパイプライン • 制約はマッチフィールドやテーブルサイズ • サーバーサイドのデータプレーンプログラミングの楽しさ • “ネットワークエンジニア” と “アプリケーションエンジニア” の中間 サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜| 日本P4ユーザ会2024@品川 | 海老澤 健太郎 Arrcus, Inc 57