Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

データプレーンプログラミング “P4” の次の一歩

ebiken
October 31, 2019

データプレーンプログラミング “P4” の次の一歩

https://www.onic.jp/archives/2019/
Open NetworkIng Conference Japan 2019
2019年10月31日〜11月1日

ebiken

October 31, 2019
Tweet

More Decks by ebiken

Other Decks in Technology

Transcript

  1. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ P4とは? パーサー (ヘッダ解析) パケット処理パイプライン

    キュー(QoS) パケット書換 Process Logic Match Table Process Logic Match Table Process Logic Match Table Switch Dataplane データプレーンの挙動をプログラムできる言語 パーサー(ヘッダ解析) マッチテーブル (レイアウト・メモリ配分) アクション(処理内容)
  2. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ データプレーンをプログラマブルにする目的 新しいプロトコルのサポート(ex: VxLAN) 新しい領域への適応(ex:

    GTP, SFC) パケットへの情報の埋め込み 独自ヘッダの定義(ex: Telemetry, OAM) 新しいアプリケーション・機能の実装 ASIC改修には1.5~3年程度必要 スケーラビリティ向上(リソース適正配置) 汎用なACLマッチテーブル(数千ルール) ↓ 特定フィールドのExact Match(~数百万ルール) 1種類のハードウェアで 複数のユースケースに対応 ユースケースに合わせたリソースの配分
  3. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ 「ボトムアップ」 から 「トップダウン」 へ

    "How We Might Get Humans Out of the Way - Keynote by Nick McKeown", ONF Connect 2019 https://www.opennetworking.org/onf-connect-2019-resources/ https://www.opennetworking.org/wp-content/uploads/2019/09/Connect-2019-Nick-McKeown.pdf スイッチで実現したい機能 ⇒ ASICの機能 ASIC の機能 ⇒ スイッチが実現可能な機能
  4. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ コントロールプレーンの実装場所 dataplane (parser &

    match / action table) protocol daemons (ospf, is-is, bgp, mpls …) Controller & Application dataplane (parser & match / action table) Controller & Application プロトコルデーモンを介した制御 コントローラーからの直接制御
  5. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ コントロールプレーンの実装場所 dataplane (parser &

    match / action table) protocol daemons (ospf, is-is, bgp, mpls …) Controller & Application プロトコルデーモンを介した制御 良いところ • コントローラーとの接続が切れても動作 • 各ノードの自律的な動作が可能 • コントローラーがシンプルに 苦労するところ • 多機能&安定なプロトコル実装 • データプレーンとのインテグレーション(開発) • データプレーン変更へのプロトコル実装の追従 • データプレーン変更時のAPI変更
  6. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ コントロールプレーンの実装場所 dataplane (parser &

    match / action table) Controller & Application コントローラーからの直接制御 良いところ • ユースケースに応じたコントロールプレーンと データプレーン両方の変更が容易 • データプレーン変更時もAPIの変更は不要 (データのみ変更) 苦労するところ • コントローラーが複雑に(パス計算など) • コントローラーとの接続断時の冗長化
  7. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ Lumina Flow Manager Lumina

    SDN Controller https://noviflow.com/ WAN Edge & CORE (SD-CORE) • MPLS VPN ベースのサービスを短期間・低コストで実現 • MPLS forwarding • Segment Routing • Traffic Engineering • Streaming Telemetry • Service Automation(マルチドメイン) • Tofino (P4) ベースの White Box Switch • OpenDaylight (SDN Controller)
  8. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ • Programmable Spine /

    Leaf Switch を利用した "Software Defined Fabric" • サーバーの仮想スイッチと連携し ASIC へとオフロード • 低遅延や拡張性を実現 https://www.kaloom.com/
  9. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ "Using Programmable Chip and

    Open Source SW Toward Disaggregated Network Packet Broker and 5G UPF“, P4 Workshop, May 1st, 2019 • "Prism Controller" を用い P4 で作ったデータプレーンを管理 • モバイルプロトコル(GTP)にも対応 • Network Packet Broker (NPB), 5G UPF (with N4 interface) http://www.kulcloud.com/
  10. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ コントロールプレーンの実装場所 dataplane (parser &

    match / action table) Controller & Application コントローラーからの直接制御 コントローラーによる独自データプレーン 直接制御によるユースケースの拡大 「データプレーンの変化に追従可能」 な プロトコル実装の不在 (少なくても現時点では) コントローラーからのデータプレーン直接制御が より多くの恩恵をもたらたす
  11. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ 「ボトムアップ」 から 「トップダウン」 へ

    "How We Might Get Humans Out of the Way - Keynote by Nick McKeown", ONF Connect 2019 https://www.opennetworking.org/onf-connect-2019-resources/ https://www.opennetworking.org/wp-content/uploads/2019/09/Connect-2019-Nick-McKeown.pdf ASIC の機能 ⇒ スイッチが実現可能な機能 スイッチで実現したい機能 ⇒ ASICの機能
  12. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ 「ボトムアップ」 から 「トップダウン」 へ

    "How We Might Get Humans Out of the Way - Keynote by Nick McKeown", ONF Connect 2019 https://www.opennetworking.org/onf-connect-2019-resources/ https://www.opennetworking.org/wp-content/uploads/2019/09/Connect-2019-Nick-McKeown.pdf ASIC の機能 ⇒ スイッチが実現可能な機能 スイッチで実現したい機能 ⇒ ASICの機能 実現可能な ユースケースの数 トップダウンの力
  13. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ APIの標準化・コントロールプレーンとの連携 ONS 2018, "Tutorial:

    P4 and P4Runtime Technical Introduction and Use Cases for Service Providers" https://events.linuxfoundation.org/wp-content/uploads/2017/12/Tutorial-P4-and-P4Runtime-Technical-Introduction-and-Use-Cases-for-Service-Providers-Carmelo-Cascone-Open-Networking-Foundation.pdf https://p4.org/specs/
  14. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ P4Tuntime == gRPC +

    protobuf gRPC • RPCを実現するプロトコル • HTTP/2.0 や TLS をトランスポートに利用 • インターフェース定義言語(IDL)を用いて、サービス とメッセージを定義 • 各種プログラム言語のスタブコードを自動生成 • 同期&非同期通信に対応(言語依存) protobuf • gRPC デフォルトのIDLとして以下を定義 • サービスインターフェース • メッセージ・ペイロードの構造 • 構造化データ  シリアライズ化されたバイナリ IDL: Interface Definition Language
  15. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ ONS 2018, "Tutorial: P4

    and P4Runtime Technical Introduction and Use Cases for Service Providers" https://events.linuxfoundation.org/wp-content/uploads/2017/12/Tutorial-P4-and-P4Runtime-Technical-Introduction-and-Use-Cases-for-Service-Providers-Carmelo-Cascone-Open-Networking-Foundation.pdf method / message を規定 schema (data) を規定
  16. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ https://github.com/p4lang/p4runtime/blob/master/proto/p4/v1/p4runtime.proto P4Runtime "service" の

    "method" と "message" を定義 p4runtime.proto service P4Runtime { // Update one or more P4 entities on the target. rpc Write(WriteRequest) returns (WriteResponse) { } // Read one or more P4 entities from the target. rpc Read(ReadRequest) returns (stream ReadResponse) { } // Sets the P4 forwarding-pipeline config. rpc SetForwardingPipelineConfig(SetForwardingPipelineConfigRequest) returns (SetForwardingPipelineConfigResponse) { } // Gets the current P4 forwarding-pipeline config. rpc GetForwardingPipelineConfig(GetForwardingPipelineConfigRequest) returns (GetForwardingPipelineConfigResponse) { } // Represents the bidirectional stream between the controller and the // switch (initiated by the controller), and is managed for the following // purposes: // - connection initiation through master arbitration // - indicating switch session liveness: the session is live when switch // sends a positive master arbitration update to the controller, and is // considered dead when either the stream breaks or the switch sends a // negative update for master arbitration // - the controller sending/receiving packets to/from the switch // - streaming of notifications from the switch rpc StreamChannel(stream StreamMessageRequest) returns (stream StreamMessageResponse) { } }
  17. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ https://github.com/p4lang/p4runtime/blob/master/proto/p4/v1/p4runtime.proto P4Runtime "service" の

    "method" と "message" を定義 p4runtime.proto message WriteRequest { message WriteResponse { message ReadRequest { message ReadResponse { message Update { message Entity { message ExternEntry { message TableEntry { message FieldMatch { message TableAction { message Action { message ActionProfileActionSet { message ActionProfileAction { message ActionProfileMember { message ActionProfileGroup { message Index { message MeterEntry { message DirectMeterEntry { message MeterConfig { message CounterEntry { message DirectCounterEntry { message CounterData { message PacketReplicationEngineEntry { message Replica { message MulticastGroupEntry { message CloneSessionEntry { message ValueSetMember { message ValueSetEntry { message RegisterEntry { message DigestEntry { message StreamMessageRequest { message PacketOut { message DigestListAck { message StreamMessageResponse { message PacketIn { message DigestList { message PacketMetadata { message MasterArbitrationUpdate { message Role { message IdleTimeoutNotification { message StreamError { message PacketOutError { message DigestListAckError { message StreamOtherError { message Uint128 { message SetForwardingPipelineConfigRequest { message SetForwardingPipelineConfigResponse { message ForwardingPipelineConfig { message GetForwardingPipelineConfigRequest { message GetForwardingPipelineConfigResponse { message Error {
  18. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ ONS 2018, "Tutorial: P4

    and P4Runtime Technical Introduction and Use Cases for Service Providers" https://events.linuxfoundation.org/wp-content/uploads/2017/12/Tutorial-P4-and-P4Runtime-Technical-Introduction-and-Use-Cases-for-Service-Providers-Carmelo-Cascone-Open-Networking-Foundation.pdf
  19. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ 独自機能(*1) を、デファクト標準なAPIを使ってコントロールできる (*1)パケットフォーマット&パイプライン パイプラインのデータ構造

    (Table, Match Field, Action) P4Runtime ユーザーによる拡張可能 • API仕様では未定義(method/message と schema定義の分離) • P4から自動生成し読み込み OpenFlow ユーザーによる拡張は部分的に可能 • API仕様で定義済み • ベンダー独自フィールドの利用により Match Field の拡張が可能 SAI (Switch Abstraction Interface) ユーザーによる拡張は不可 • API仕様で定義済み • Layer 2/3 スイッチに特化したパイプライン
  20. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ P4 で記述できないスイッチ機能へのアクセス P4の記述と同期して動作する必要がある設定・統計の管理(Port ID,

    Stats etc.) P4Runtime provides a flexible mechanism for configuring the forwarding pipeline on a network switch. gNMI is a framework for network device management that uses gRPC as the transport mechanism. Open Sourced on 2019年9月10日 https://github.com/stratum/stratum
  21. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ 日本 P4 ユーザ会 2019

    https://p4users.org/2019/07/16/event2019/ “キャリアにおける P4 ユースケースの紹介” NTTネットワークサービスシステム研究所 武井 勇樹
  22. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ P4 on Fixed Function

    Switch ASIC 機械可読(API自動生成可能)なネットワーク挙動を記述する契約としてP4を利用 ONF Connect 2019 "P4 on FPM Switches with Stratum" https://www.opennetworking.org/wp-content/uploads/2019/09/3.30pm-Max-Pudelko-Stratum-FPM-Compiler.pdf SDKLT is used to program fixed-pipeline switches using the Tomahawk chip from Broadcom.
  23. NPU Switch ASIC FPGA CPU 処理性能(スループット) ターゲット(チップ・エミュレーター) Ethernet Switch 高性能

    データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ ターゲット(P4 Target) P4 で記述したプログラムが動作する環境(チップ・エミュレーター) xx Tbps Barefoot (Intel) xxx Gbps x Gbps Xilinx, Intel xx Gbps Netronome (BMv2, eBPF) SmartNIC 高性能 + 拡張性 Server VM/CT 拡張性・仮想環境 プラットフォーム種別
  24. NPU Switch ASIC FPGA CPU 処理性能(スループット) ターゲット(チップ・エミュレーター) コンパイラ データプレーンプログラミング "P4"

    の次の一歩 ~ コントロールプレーンとコミュニティと ~ ターゲット(P4 Target) P4 で記述したプログラムが動作する環境(チップ・エミュレーター) xx Tbps Barefoot (Intel) xxx Gbps x Gbps Xilinx, Intel P4 Studio P4-SDNet (Xilinx) Netcope NP4 xx Gbps Netronome Agilio P4C SDK p4lang/p4c (BMv2, eBPF)
  25. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ P4 on ODM Ethernet

    Switch (Tofino) https://barefootnetworks.com/partners/ 様々なハードウェア構成のスイッチ
  26. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ Tahoe 2624 24 ports

    of 100G/40G QSFP28 & 20 ports of 25G/10G SFP 28 Two Rear-Facing I/Os Supporting Powerful XEON-D Offload I/O Xilinx Virtex UltraScale FPGA I/O Tahoe 2860 32 ports of QSFP28 Control plane processor options x86 and Power PC Data plane processors options MIPS and Power PC 注:参考情報です。現在の仕様は 各メーカーにお問い合わせ下さい Edge-Core: https://www.edge-core.com/productsInfo.php?cls=1&cls2=180&cls3=181&id=335 | Interface Masters: https://interfacemasters.com/products/switch-appliances/ Wedge100BF-32X/65X 32/65 x QSFP28 ports CPU Modules Intel x86 Broadwell-DE Pentium D-1517 Memory (RAM) 4/8/16 GB SO-DIMM DDR4 Storage 32 GB M.2 SSD
  27. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ STORDIS BF2556X-1T STORDIS BF6064X-T

    注:参考情報です。現在の仕様は 各メーカーにお問い合わせ下さい STORDIS: https://www.stordis.com/products/stordis-bf6064x-t/
  28. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ P4 on Fixed Function

    Switch ASIC ONF Connect 2019, "Stratum Overview & Update" https://www.opennetworking.org/wp-content/uploads/2019/09/2.00pm-Brian-OConnor-Stratum.pdf
  29. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ P4 on SmartNIC (FPGA/NPU)

    NetFPGA-SUME Virtex-7 FPGA Development Board 注:参考情報です。現在の仕様は 各メーカーにお問い合わせ下さい
  30. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ P4 on CPU BMv2

    https://github.com/p4lang/behavioral-model Stratum Tutorials: Container of BMv2 + Stratum https://github.com/stratum/tutorial P4 to eBPF compiler https://github.com/p4lang/p4c/tree/master/backends/ebpf
  31. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ 講演企業 Barefoot Networks Net

    One Systems P4.org Arista Cisco Apresia & Edgecore Kaloom Software P4 Workshop 2018 in Tokyo 【データプレーンプログラミングの世界】 主催:P4.org、Barefoot Networks、ネットワンシステムズ株式会社(協賛) 2018年10月23日当日の風景|参加者100名以上
  32. データプレーンプログラミング "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ 日本 P4 ユーザ会 2019

    開催 システムインテグレーター コミュニティ リサーチ ユーザー(狭義の) テクノロジープロバイダー 2019年10月11日
  33. • ハンズオン(基本的なプログラム・動作方法) • 日本P4ユーザー会 カンファレンス(年1回?) • テーマ別のワークショップ? • 関西ミニカンファレンス?(企画&運営やる人募集中!) データプレーンプログラミング

    "P4" の次の一歩 ~ コントロールプレーンとコミュニティと ~ 今後の活動予定 「実施したい!」「参加したい!」 という企画を Slack でコメントお願いします!