プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 海老澤健太郎 @ Ponto Networks, Inc. プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 1
Ponto Networks, Inc. Delaware C corp, established Dec 2015 PontOS Dataplane agnostic Network Operation System + Stack providing performance, programmability, openness, scalability and modularity leveraging multiple hardware accelerated dataplanes like programmable silicon powered WhiteBox switches, NPU/FPGA powered SmartNICs and more. Headquarters San Diego, California (USA) Development Tokyo (Japan) + San Jose (USA) Investors Ex-executives of Internet and Mobile industry プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 3
アジェンダ プログラマブル データプレーンとは? 現在 課題 と 未来 ネットワーク オペレーション スタックの実装例 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 5
データプレーン とは? イーサネットヘッダを解析 宛先アドレスを KEY に MAC テーブルを参照 学習済みポートへ転送 ヘッダ解析 (Parse) テーブル参照 (Match) 変更 転送 (Action) パケット処理パイプライン プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 6
最も柔軟な データプレーン とは? CPU どんな処理も実装できる ( プログラマブル ) プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 7
ハードウェア データプレーン (ASIC) を使う理由 ピーク性能 Gbps 単価 CPU 300Gbps 10,000 円 ASIC 6.5Tbps 461 円 数字は概算 ( 桁感の例 ) です CPU/ASIC 1 個搭載のサーバー / スイッチ価格を 300 万円として比較 CPU: XEON PLATINUM 8180 (PCIe 3 x 48 = 300Gbps) ASIC: Barefoot Tofino (100GbE x 65 port) を Layer 2/3 switch として利用 数字は概算 ( 桁感の例 ) です CPU/ASIC 1 個搭載のサーバー / スイッチ価格を 300 万円として比較 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 8
機能追加時に必要な開発体制とコスト CPU ASIC ピーク性能 300Gbps 6.5Tbps Gbps 単価 10,000 円 461 円 開発体制 数人 数十人 開発コスト ( 人件費除く ) 数百万円 数億円 ASIC 作り直し 数字は概算 ( 桁感の例 ) です CPU/ASIC 1 個搭載のサーバー / スイッチ価格を 300 万円として比較 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 9
ASIC のスケーラビリティ + CPU の開発コスト CPU ASIC プログラマブル ASIC ピーク性能 300Gbps 6.5Tbps 6.5Tbps Gbps 単価 10,000 円 461 円 461 円 開発体制 数人 数十人 数人 開発コスト ( 人件費除く ) 数百万円 数億円 数百万円 数字は概算 ( 桁感の例 ) です CPU/ASIC 1 個搭載のサーバー / スイッチ価格を 300 万円として比較 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 10
プログラマブル データプレーン の登場 イノベーションがスケールする時代に 試作 試行コストが小さくなる サーバーで起きたイノベーションをネットワークへコスト & 性能の良いプラットフォームでイノベーションが実現 個人で開発への参加が可能 オープンな活動の活性化より多くの人が新しい試みに参加できるように プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 11
プログラマブル データプレーンを用いた試行 ( 例 ) In-band Network Telemetry (INT) パケット自身に パケットがマッチしたルールや Queue の情報を含める事により SNMP 等ではモニタリングできなかった粒度でネットワークの状況を把握 遅延や特定アプリケーションの性能劣化原因を特定 トラフィックエンジニアリングへの利用 Tbps Class Load Balancer ラックあたり Tbps クラスのトラフィックに対応した Load Balancer を低コストで構築 トラフィック種別により振り分けに利用するフィールドを変更 Pre-processing & Content aware routing for Massive IoT 様々な Client からの細かいデータをサーバーが処理しやすいように前処理 データ種別に応じた計算 bit -> Byte データ展開 ペイロード中の ID に応じたサーバーへの振り分け ストレージへの直接保存 アプリケーション毎のペイロード データフォーマットの定義 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 12
プログラマブル データプレーンを用いたアプリケーション検討のワーキンググループ発足 (2017 年 11 月 ) https://p4.org/members/announcing-the-p4-applications-working-group/ プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 13
プログラマブル データプレーンの現在 ハードウェア データプレーンに関して プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 14
プログラマブル データプレーン で プログラム できること ヘッダフォーマットの定義パースグラフの構築 マッチフィールドの定義テーブルタイプの定義 (Exact / Masked) MAC address IPv4 address proto + TCP ports ( any header fields ) アクションの定義フィールド操作ロジック drop copy forward push / pop add(+) sub(-) multiple(*) bit shift (<<) (>>) ヘッダ解析 (Parse) テーブル参照 (Match) 変更 転送 (Action) プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 15
プログラマブル データプレーン ( ハードウェア ) の現在 メーカー 製品名称タイプ開発環境 Cavium XPliant ASIC XDK Barefoot Tofino ASIC P4 製品出荷実績多数 ( クラウド事業者 ) OEM:Arista, Brocade 大規模事業者を中心とした限定出荷検証 開発用筐体は一般入手可能 Netronome NFP NPU C-based SmartNIC 1 枚から広く入手可能 OEM 多数 ( 非公開 アプライアンス製品等 ) NetFPGA (Xilinx) FPGA SDNet NetFPGA は研究 教育目的が中心 Xilinx FPGA 搭載ボード (+SDNet) としても入手可能 代表的な製品のみ記載 他多数のメーカーもプログラマブル ASIC/NPU/FPGA リリースを予定している プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 16
https://www.amazon.co.jp/ Edgecore AS7512 で検索 Cavium Xpliant CNX88091 3.2Tbps プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 17
プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 18
( 最もハードルが高い ) ハードウェアは入手可能に プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 19
( 最もハードルが高い ) ハードウェアは入手可能に プログラマブル データプレーン 課題 と 未来 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 20
プログラマブル データプレーンの課題 (1) メーカー 製品名称タイプ開発環境 Cavium XPliant ASIC XDK Barefoot Tofino ASIC P4 Netronome NFP NPU C-based NetFPGA (Xilinx) FPGA SDNet 自由にプログラム からは やや遠い 言語もツールも異なる過去の学習が生かされない SDK 入手に別途契約が必要な場合も プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 21
P4: 汎用データプレーン プログラミング言語の登場 Programming Protocol-Independent Packet Processors P4 Source Code P4 Compiler Target (P4 対応 Dataplane) パケット処理パイプラインの定義パーサーやテーブル アクション など P4 を Target 上で実行可能な形式にコンパイル Target 毎に提供される P4 Dataplane runtime に従いパケットを処理 Hardware: ASIC, NPU, FPGA Software: CPU プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 22
ヘッダ定義パーサー定義テーブル定義 P4 プログラム ( 例 ) パイプライン定義 C 構造体のようにプロトコルヘッダを定義 パーサー テーブル パイプラインを簡単な構文で記述可能 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 23
P4 対応状況 メーカー 製品名称タイプ開発環境 P4 対応状況 ( 入手状況 ) Cavium XPliant ASIC XDK 対応予定 ( エンドースメント プレスリリース有り ) Barefoot Tofino ASIC P4 Netronome NFP NPU C-based NetFPGA (Xilinx) FPGA SDNet Netronome: https://www.netronome.com/products/datapath-programming-tools/ NetFPGA: https://github.com/netfpga/p4-netfpga-public/wiki Capilano SDE ( 製品購入者 + 契約 ) Agilio P4C SDK ( 製品購入者 ) P4 NetFPGA / P4-SDNet ( 登録必要 ) プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 24
https://github.com/p4lang P4 on Linux ( ソフトウェア リファレンス実装 ) P4 対応 Software Switch ( サンプル CLI 付き ) P4 チュートリアル & サンプル (P4 source code, Protocol agent...) P4 コンパイラ P4 ソフトウェア実装 ビルド 実行手順サンプル https://www.slideshare.net/kentaroebisawa/how-to-run-p4-bmv2 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 25
プログラマブル データプレーンの課題 (2) データプレーンをどうコントロールするか? プログラマブル データプレーン時代に必要な ネットワーク オペレーション スタック とは? プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 26
プログラマブル データプレーン時代の ネットワーク オペレーション スタック に何が求められるか? 1. 異なるデータプレーン ハードウェアへの対応 2. パケット処理パイプラインの管理 (Match/Action Table) 3. プロトコル エージェントの入れ替え 4. ユーザーアプリケーションの動作 シェルアクセス サーバー同様の開発ツールチェイン 5. アプリケーションのための API 都度コンパイルでなく grpc/rest 等 API で制御可能 User Applications Modular Protocol Agents Dataplane Abstraction API Config Manager Pipeline Profile Dataplane (ASIC, NPU, FPGA, CPU) CLI プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 27
Open Network OS の現状 Dataplane Abstraction Pipeline Profile Modular Protocol Agents User Apps APIs for Apps OpenSwitch SnapRoute + Dell 〇 〇〇 SONiC 〇 〇〇 ONL Open Network Linux ー ーーー プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 28
プログラマブル データプレーン時代のネットワーク オペレーション スタックの実装例 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 29
PontOS² コンセプト & アーキテクチャ External Apps Mngment System Operator Application Friendly API ネットワークプログラマビリティを実現するアプリケーション フレンドリーな開発環境 Management Plane User User Apps Apps SDK (Language API) REST API (WebAPI) Linux shell (CLI as an Application) オープンソースにより構成されたビルディング ブロック Flexible Data plane プロファイル選択により入れ替え可能なパケット処理エンジン Native Applications Native Native Applications Applications Modular Modular Routing Routing Agents Agents FEA (Forwarding Engine Abstraction) Flex ASIC (XPliant etc.) Data Plane Flexible Data Plane Linux Kernel Network Stack Config Broker (data store) Data Path Profile Manager P4 (SmartNIC, NPU, FPGA) プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 30
プログラマブル ASIC デモ GTP Parser & Match/Action + Stats on Cavium XPliant Computex Taipei 台湾 台北... 2017 年 6 月 Open Compute Project サンノゼ... 2017 年 3 月 RAN EPC SGi Internet Service Functions enodeb SGW PGW GW GTP-U Tunnel GTP-U Tunnel VLAN, etc. プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 31
GTP TEID match/action & statistics ( デモ構成図 ) GTP トラフィック生成用サーバー (VM) host1 host2 10.0.40.1/24 10.0.40.2/24 Mngmnt Port デモ GUI (Web ブラウザ ) 100GbE 100GbE REST API GTP Traffic (TEID=100/200/300/400) XPliant スイッチ (White Box) Parse GTP Header Match/Action based on GTP TEID stats via REST API Mngmnt Port = IP Interface プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 32
PontOS² Implementation ( 実装 ) Zebra 2.0 Open Source Network Stack Fresh rewrite of Zebra/Quagga Data Plane agnostic NetOS Stack PontOS² Seamless integration with multiple Proprietary Data Plane platforms Performance and quality control for service providers Management Plane User User Apps Apps Native Applications Native Native Applications Applications Modular Modular Routing Routing Agents Agents REST API (WebAPI) FEA (Forwarding Engine Abstraction) Flex ASIC (XPliant etc.) Data Plane External Apps Mngment System SDK (Language API) Flexible Data Plane Linux Kernel Network Stack Operator Linux shell (CLI as an Application) Config Broker (data store) Data Path Profile Manager P4 (SmartNIC, NPU, FPGA) プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 33
Zebra 2.0 on GitHub!! https://github.com/coreswitch/zebra https://github.com/coreswitch/openconfigd Zebra 2.0 Installation Install openconfigd $ go get github.com/coreswitch/openconfigd/openconfigd Install CLI $ go get github.com/coreswitch/openconfigd/cli_command $ cd $GOPATH/src/github.com/ coreswitch /openconfigd/cli $./configure; make $ sudo make install $ cd $GOPATH/src/github.com/coreswitch/openconfigd/bash_completion.d $ sudo cp cli /etc/bash_completion.d/ Install zebra $ go get github.com/coreswitch/zebra/rib/ribd プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 34
Written from scratch in Go openconfigd configuration system yang model CLI (Junos like) etcd for scalability zebra/ribd dataplane management (ex: FIB) zebra/fea multiple dataplane support link/port, bridge domain etc. New bgpd/ospfd multi-core support quaggad & zebra protocol for backward compatibility Zebra 2.0 Architecture openconfigd quagga quaggad bgpd / ospfd Tap interface vtysh grpc (yang model) zebra proto Linux dataplane netlink プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 35 CLI openconfigd grpc ribd grpc fea zebra grpc JSON grpc etcd bgpd/ospfd HW API (SAI, XDK etc.) Hardware dataplane
Zebra 2.0 アーキテクチャの特徴 オープンかつモジュラーなアーキテクチャ 例 :openconfigd 部分だけを利用して他製品に組み込み Lagopus Router https://github.com/lagopus/vsw 新しい技術のユースケース確認が身近に 例 :SRv6 対応 (2017 年 11 月 ) オープン & オープンソースのデータプレーン管理プラットフォーム プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 36
Zebra2.0 SRv6 on Linux dataplane https://github.com/coreswitch/zebra/blob/master/docs/srv6.md プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 37
Zebra2.0 + OpenConfigd + Quagga ospfd/bgpd On LXC Containers https://github.com/coreswitch/zebra/blob/master/docs/quagga-lxc.md プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 38
Basic routing/switching features (ACL, NAT etc.) New Protocol Support SRv6 Network Programming Forwarding Engine Abstraction ASIC support (via SAI) P4 dataplane (via SAI or P4-PI) New Protocol Agents BGP, OSPFv2, OSPFv3, IS-IS Zebra 2.0 (future roadmap) プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 39
プログラマブル データプレーンが必要とされる もう 1 つの理由 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 40
プログラマブル データプレーンが必要とされるもう 1 つの理由 ムーアの法則の終焉 待っていても性能は向上しない時代に いかに高価な CPU をオフロードするか? 出典 : https://www.karlrupp.net/2015/06/40-years-of-microprocessor-trend-data/ プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 41
プログラマブル データプレーンが必要とされるもう 1 つの理由 ムーアの法則の終焉 待っていても性能は向上しない時代に いかに高価な CPU をオフロードするか? ユースケース最適 なハードウェアの選択が必要に ( ASIC / NPU / FPGA ) 出典 : https://www.karlrupp.net/2015/06/40-years-of-microprocessor-trend-data/ プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 42
p4alu Arithmetic Logic Unit written in P4 https://www.slideshare.net/kentaroebisawa/p4alu-arithmetic-logic-unit-in-p4 Source Code on GitHub https://github.com/ebiken/p4sandbox/tree/master/p4alu Generic P4 information in Japanese ( 日本語 ) How to Run P4 Behavior Model v2 (JAPANESE) https://www.slideshare.net/kentaroebisawa/how-to-run-p4-bmv2 プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 43
p4alu: Arithmetic Logic Unit in P4 In-Network Computing という未来へ https://www.slideshare.net/kentaroebisawa/p4alu-arithmetic-logic-unit-in-p4 GPU => 機械学習 Ethernet ASIC =>??? プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 44
CuiShark by @slankdev https://github.com/slankdev/cuishark packets after going through p4alu op2 result op1 opcode プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 45
CuiShark by @slankdev https://github.com/slankdev/cuishark packets after going through p4alu op2 result op1 opcode プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 46
プログラマブル データプレーン時代に目指すもの データプレーンに自由を スケーラブルなデータプレーンを 個人 がプログラムできる時代に プログラマブル データプレーンの技術動向とネットワーク オペレーション スタックの実装例 Okinawa Open Days 2017 47