Data Plane Programmability
現状と展望
MPLS Japan 2018年11月19日「Network Programmability」セッション
株式会社トヨタＩＴ開発センター
海老澤 健太郎

https://www.linkedin.com/in/ebiken/

In Network Computing
コネクティッドカー向け
次世代ネットワークの研究（データ収集＆解析基盤）

データセンター（データ解析基盤）携帯網

プロトタイピング

固定網
Edge
Computing

5G/4G

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

WiFi

2

ネットワーク プログラマビリティ ？？

データプレーン プログラマビリティ ？？

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

3

Orchestrator

Application

Controller

Control Plane / Configuration
Data Plane
Network Device

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

4

Orchestrator

Application

Controllerネットワーク
プログラマビリティ
自動化（非CLIな設定管理）
Software Defined (SDN)

Control Plane / Configuration
Data Plane
Network Device

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

5Orchestrator

Application

ネットワークプログラマビリティ
自動化（非CLIな設定管理）
Software Defined (SDN)

Controller

データプレーン
プログラマビリティ

Control Plane / Configuration
Data Plane

パケット処理Network Device

本日は Switch ASIC を中心に
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

6データープレーンをプログラムする
ヘッダ フォーマットの定義 マッチフィールドの定義
アクションの定義
パースグラフの構築
テーブルタイプの定義 フィールド操作ロジック（Exact / Masked）
MAC address

IPv4 address

ヘッダ解析（Parse）

dropcopyforward
push / pop

proto + TCP ports

add(+) sub(-) multiple(*)( any header fields )bit shift (<<) (>>)

テーブル参照（Match）

変更・転送（Action）

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

7データープレーンをプログラムする
ヘッダ フォーマットの定義 マッチフィールドの定義
アクションの定義
パースグラフの構築
テーブルタイプの定義 フィールド操作ロジック（Exact / Masked）
MAC address

drop

copy
IPv4 address
パケット処理「パイプライン」

ヘッダ解析（Parse）

forwardpush / pop

proto + TCP ports

add(+) sub(-) multiple(*)( any header fields )bit shift (<<) (>>)

テーブル参照（Match）

変更・転送（Action）

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

8データプレーン プログラマビリティで可能になる事
機能追加サイクルの短縮

新機能のプロトタイピング

リソース配分最適化によるスケーラビリティの向上

ユーザー固有のカスタマイズ

パケット転送以外の処理
In Network Computing の実現

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/199

データプレーンプログラマビリティを用いたプロトタイプ実装例

スイッチ統計情報用ヘッダを定義し挿入
https://www.barefootnetworks.com/use-cases/ad-telemetry/
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1910

データプレーンプログラマビリティを用いたプロトタイプ実装例

P4-14 によるSRv6プロトタイプ
https://github.com/ebiken/p4srv6
Barefoot社協力のもと P4-16版も準備中（100GbE x32port のスイッチでテスト可能）

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1911

データプレーン プログラマビリティ
現状と展望Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

12データプレーン プログラマビリティ 「３つの視点」
データプレーンプログラミングは普及するのか？
どこまで自作するのか？できるのか？
サポートしてくれる人はいるのか？

プログラマブルな Switch ASIC はこの先、生き残り進化していくのか？
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

13データプレーン プログラマビリティ 「３つの視点」
データプレーンプログラミングは普及するのか？
どこまで自作するのか？できるのか？
サポートしてくれる人はいるのか？

プログラマブルな Switch ASIC はこの先、生き残り進化していくのか？
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

14

プログラミングの普及に必要な事は？
誰もが利用できるプログラミング言語

多用な動作環境

身近に利用者がいる

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1915

これまでのプログラム言語・開発環境
ベンダー

タイプ

開発環境：言語

Cisco

ASIC？

非公開

Juniper

ASIC？

非公開CaviumASIC

XDK（CLOSED）

Netronome

NPU

Network Flow C Compiler：Embedded C

XilinxFPGA

Vivado：Verilog, System C（高位合成）

プラットフォーム毎に異なる言語や開発環境

過去の学習・Code資産が生かされない
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

16

P4：オープンなドメイン特化型プログラム言語“Programming Protocol-Independent Packet Processors”
P4 Source Code

パケット処理パイプラインの定義
パーサーやテーブル、アクション、など

P4 Compiler

P4をTarget上で実行可能な形式にコンパイル
Target毎に提供される

Target (P4対応Dataplane)

P4 Dataplane runtime に従いパケットを処理
Hardware: ASIC, NPU, FPGA | Software: CPUhttps://p4.org/

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1917

P4に対応した動作環境
ベンダータイプ

ASICや開発環境名

Barefoot

ASIC

Tofino（ASIC） P4 Studio（開発環境）

Mellanox

ASIC

Spectrum（ASIC）

Netronome

NPU

Agilio P4C SDK（開発環境）

XilinxFPGA

SDNet（開発環境）

NetcopeFPGA

P4 Cloud （開発環境）

eBPF

CPU

p4c-ebpf (Open Source)

BMv2

CPU

p4c (Open Source)(Software Switch)

Online P4 to FPGA synthesis

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

18

P4 Workshop 2018 in Tokyo

P4 Workshop 2018 in Tokyo【データプレーンプログラミングの世界】
主催：P4.org、Barefoot Networks、ネットワンシステムズ株式会社(協賛)
講演企業
Barefoot Networks
Net One Systems
P4.orgArista
Cisco
Apresia & Edgecore
Kaloom Software

10月23日当日の風景｜参加者100名以上

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1919

データプレーン プログラマビリティ 「３つの視点」
データプレーンプログラミングは普及するのか？
どこまで自作するのか？できるのか？
サポートしてくれる人はいるのか？

プログラマブルな Switch ASIC はこの先、生き残り進化していくのか？
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1920

ネットワーク機器に必要な機能
API

CLI

(NetConf etc.)

Protocol Agents(OSPF, BGP, VLAN, SRv6, MPLS etc.)

Forwarding Plane
Abstraction

ConfigBroker(Data Store)(FIB/Port => Match Action Rule)P4 Data Plane(ASIC / NPU / FPGA)

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

21

動かすまでに 「最低限」 必要な作業⑦ 開発 or 移植④ カスタマイズAPI

CLI(NetConf etc.)

Protocol Agents(OSPF, BGP, VLAN, SRv6, MPLS etc.)

⑤ 結合
② 開発

⑥ 開発 or 移植

Forwarding Plane
Abstraction

ConfigBroker③ 開発(Data Store)(FIB/Port => Match Action Rule)① 開発

P4 Data Plane(ASIC / NPU / FPGA)

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

22

動かすまでに 「最低限」 必要な作業⑦ 開発 or 移植④ カスタマイズ⑤ 結合② 開発

APICLI(NetConf etc.)

Protocol Agents
データプレーンをプログラムしているのか(OSPF, BGP, VLAN, SRv6, MPLS etc.)
ConfigネットワークOSを開発しているのか？？
Forwarding Plane
Abstraction

Broker⑥ 開発 or 移植③ 開発(Data Store)(FIB/Port => Match Action Rule)① 開発

P4 Data Plane(ASIC / NPU / FPGA)

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

23

データープレーン プログラミングの範囲（開発・保守支援の有無含め）ユーザーの状況に合った カスタマイズ委託
選択肢がある事が重要

狭い

パイプラインの特定部分のみ開発（NOS提供有り）
開発範囲

パイプライン全て開発（NOS提供有り）
パイプライン全て開発（NOS提供無し）｜自前保守広い
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

24

商用ベンダーのP4対応状況

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

25

ベンダーの状況｜Cisco

Reference: P4 Workshop 2018 in Tokyo“Cisco Nexus 3400 Series P4-Programmable Switches | P4 Benefits,Deployment Models and Use Cases” Slide 5
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

26

ベンダーの状況｜Cisco

Reference: P4 Workshop 2018 in Tokyo“Cisco Nexus 3400 Series P4-Programmable Switches | P4 Benefits,Deployment Models and Use Cases” Slide 7
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

27

ベンダーの状況｜Cisco

統合された開発環境

パイプラインの１部割当

daPIPE
Data Plane Incremental Programming Environment
Reference: P4 Workshop 2018 in Tokyo“Cisco Nexus 3400 Series P4-Programmable Switches | P4 Benefits,
Deployment Models and Use Cases” Slide 8
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1928

ベンダーの状況｜Arista

Reference: P4 Workshop 2018 in Tokyo“Arista 7170 Introduction and Demonstration” Slide 5
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1929

ベンダーの状況｜Arista

Reference: P4 Workshop 2018 in Tokyo“Arista 7170 Introduction and Demonstration” Slide 23
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1930

ベンダーの状況｜Arista

Reference: P4 Workshop 2018 in Tokyo“Arista 7170 Introduction and Demonstration” Slide 24
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1931

ベンダーの状況｜Arista

新しいプロファイルもrpmコマンドでインストール可能

詳細はArista 7170ホワイトペーパー参照

通常のプロファイルと同様に設定変更により即座に反映

https://www.arista.com/assets/data/pdf/Whitepapers/7170_White_Paper.pdf

Reference: P4 Workshop 2018 in Tokyo“Arista 7170 Introduction and Demonstration” Slide 35,36
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1932

ベンダーの状況｜Mellanox

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

33

ベンダーの状況｜Mellanox

製品としての提供時期はMellanox営業SEにお問い合わせください
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1934

ベンダーの状況｜Juniper
Data/Control Plane 間のインターフェース（Contract）を記述するために P4 を利用“P4 as the language that describes the contract
between the control plane and the data plane”

ASICに依存しない抽象化レイヤを用意
P4Agent を分離する形で既存NOSと統合“The architecture applies uniformly to devices across different ASIC families”“The P4 Agent is sufficiently decoupled from the on-box operating system”

抽象化レイヤ（AFT/AFI）

BLOG: Juniper Advancing Disaggregation Through P4 Runtime Integration (Feb 20, 2018)https://forums.juniper.net/t5/Engineering-Simplicity/Juniper-Advancing-Disaggregation-Through-P4-Runtime-Integration/ba-p/319195

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1935

ベンダーの状況｜Juniper

Juniper P4Runtime 実装 on GitHub
注：VMX tarball (jnprP4vmx.tgz) を Juniper から入手する必要あり

https://github.com/Juniper/JP4AgentDocker 実行環境

Virtual Control Plane（いわゆる JUNOS）

Virtual Forwarding Plane

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1936

ベンダーの状況｜APRESIA Systems

技術支援を提供

Reference: P4 Workshop 2018 in Tokyo“Wedge 100 BF Switch Introduction and SRv6 Demonstration |APRESIA Systems & Edgecore” Slide 6
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1937

ベンダーの状況｜APRESIA Systems

Reference: P4 Workshop 2018 in Tokyo“Wedge 100 BF Switch Introduction and SRv6 Demonstration |APRESIA Systems & Edgecore” Slide 8
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1938

ベンダーの状況｜APRESIA Systems

Reference: P4 Workshop 2018 in Tokyo“Wedge 100 BF Switch Introduction and SRv6 Demonstration |APRESIA Systems & Edgecore” Slide 16
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

39

オープンソースのP4状況
コミュニティ開発の可能性

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1940

オープンソースのP4状況

P4.orghttps://github.com/p4lang

P4 対応 Software Switch （サンプルCLI付き）
P4 チュートリアル＆サンプル（P4 source code, Protocol agent ...）
P4 コンパイラ

P4 ソフトウェア実装｜ビルド・実行手順サンプル
https://www.slideshare.net/kentaroebisawa/how-to-run-p4-bmv2
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1941

オープンソースのP4状況

STRATUMhttps://www.opennetworking.org/stratum/

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1942

オープンソースのP4状況

STRATUMhttps://www.opennetworking.org/stratum/

詳細は次のセッションで...
P4/Stratum活用に向けたプログラマブルスイッチの実装・検討
武井 勇樹(NTT)

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1943

データプレーン プログラマビリティ 「３つの視点」
データプレーンプログラミングは普及するのか？
どこまで自作するのか？できるのか？
サポートしてくれる人はいるのか？

プログラマブルな Switch ASIC はこの先、生き残り進化していくのか？
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1944

プログラマブルなSwitch ASIC は生き残るのか？

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

45

プログラマブルな Switch ASIC は生き残るのか？
開発コスト（膨大） ＜ ASIC単価 × 出荷数
ASIC単価 ＝ 開発コスト（膨大） ÷ 出荷数
生き残るためには「数」が重要

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1946

「数」 を増やすために必要な事
ユーザー企業による利用・投資ネットワーク機器ベンダーに採用

https://www.crunchbase.com/organization/barefoot-networks

CiscoArista
ODM
BareMetal Switch

https://www.barefootnetworks.com/products/getting-started/
https://www.sdxcentral.com/articles/news/barefoot-scores-tofino-deals-with-alibaba-baidu-and-tencent/2017/05/

Barefoot Tofino ASIC の状況
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

47

プログラマビリティはASICの基本機能に“Programmable” を売りにしていない
Broadcomもプログラマビリティをサポート（Juniper / Mellanox だけでなく）Time To Market の重要性
先行者の圧力（Cavium XPliant / Barefoot Tofino etc.）

https://www.broadcom.com/blog/new-trident-3-switch-delivers-smarter-programmability-for-enterprise-and-service-provider-datacenters

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1948

プログラマブルなSwitch ASIC 進化の可能性

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1949

ドメイン特化型アーキテクチャの必要性“A New Golden Age for Computer Architecture:
Domain-Specific Hardware/Software Co-Design,
Enhanced Security, Open Instruction Sets, and Agile Chip Development,”
Hennessy and David Patterson Deliver Turing Lecture at ISCA 2018https://www.acm.org/hennessy-patterson-turing-lecture

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1950

Switch ASIC 進化の可能性

Reference: https://www.barefootnetworks.com/technology/
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1951

「パケット転送」以外のユースケースへの適用
Key-value store
NetCache : Balancing Key-Value Stores with Fast
In-Network Caching Key-value stores power
online services.
Jin, Xin; Li, Xiaozhou; Zhang, Haoyu; Soule, Robert; Lee, Jeongkeun; Foster, Nate; Kim, Changhoon; Stoica, I.
(2017). Sosp, (Figure 1), 121?136. https://doi.org/10.1145/3132747.3132764

Map Reduce

コンセンサス（合意）Paxos Made Switch-y.
Dang, H. T., Canini, M., Pedone, F., & Soule, R. (2016).
ACM SIGCOMM Computer Communication Review, 46(1), 18~24. https://doi.org/10.1145/2935634.2935638

Eris: Coordination-Free Consistent Transactions
Using In-Network Concurrency Control.
Li, J., Michael, E., K Ports, D. R., & K, D. R. (2017).
Sosp. https://doi.org/10.1145/3132747.3132751

NetPaxos: Consensus at Network Speed.

Network Map Reduce.
Song, H., Gong, J., & Chen, H. (2016).
Retrieved from http://arxiv.org/abs/1609.02982

Dang, H. T., Sciascia, D., Canini, M., Pedone, F., & Soule, R. (2015).
Proceedings of the 1st ACM Sigcomm Symposium on SDN Research (SOSR), 5:1--5:7.
https://doi.org/10.1145/2774993.2774999

DAIET ... Data Aggregation In nETwork

NetChain: Scale-Free Sub-RTT Coordination.

https://sands.kaust.edu.sa/daiet/
Poster: Amedeo Sapio, Ibrahim Abdelaziz, Marco Canini and Panos Kalnis.
“DAIET: A System for Data Aggregation Inside the Network.”
In ACM Symposium on Cloud Computing 2017, Santa Clara, California, USA.

Nsdi, 35~49. Retrieved from http://dl.acm.org/citation.cfm?doid=3132747.3132761

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1952

CANデータ物理量変換（試作）Programmable Switch
Match: 車種＋フィールドID
Action: 値の変換
...
...
...
車両情報Match: 車種＋フィールドID
Action: 値の変換

変換後の車両情報

BYTEアライメントではないデータの超高速ストリーム処理
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1953

IRTF Computing in the Network (COIN)

https://trac.ietf.org/trac/irtf/attachment/wiki/coin/coin_ietf103_chair_slides%20-%20Finalv3.pptx

性能の向上と新たなネットワーク化されたアプリケーションを実現可能にすべくネットワーク内コンピューティングの研究を育成・促進する

Initial Meeting: IETF 103 Bangkok （2018年11月9日）
Wiki: https://trac.ietf.org/trac/irtf/wiki/coin
Mailing List: https://www.irtf.org/mailman/listinfo/coin
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1954

IRTF Computing in the Network (COIN)

アーキテクチャの違いによる制約
チューリング完全（ではない）
メモリサイズの制約
演算処理の制約（例：浮動小数点）
パケット毎に適用可能な処理（Action）制約
複数パケットにまたがる処理の難しさ
プログラミングモデルやアーキテクチャによる制約を意識した適用場所（アプリケーション）の研究が必要
Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1955

IRTF Computing in the Network (COIN)

今後の予定
チャーターの議論（メーリングリストなどを通じて）
Interim Meeting の実施（未定：2019年1月頃？）

Research Group としての承認取得
Meeting at IETF104 Plague （RG承認された場合）

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1956

まとめ

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/1957

Data Plane Programmability 現状と展望
現在

近未来

将来

商用利用が可能な環境の整備が進むプログラマビリティは
ASIC の標準機能にパケット転送以外の分野への適用もオープンなプログラム言語の普及
商用ベンダーのサポート
商用NOSへ部分的適用も可能に

ASIC仕様としてプログラマブルな部分が増加傾向

アカデミアでの研究は盛んに
Switch ASIC の進化
GPGPUと同じ道をたどれるか？

Data Plane Programmability 現状と展望 | MPLS Japan 2018 | 2018/11/19

58