P4/Stratum活用に向けたプログラマブルスイッチの実装・検討

2018年11月19日
NTTネットワークサービスシステム研究所
武井 勇樹
Copyright©2018 NTT corp. All Rights Reserved.

本日のアジェンダ••••••

背景
P4/Stratumの概要
NTTのユースケース
P4スイッチ/P4Runtimeの検討状況
今後の取り組み
まとめ

Copyright©2018 NTT corp. All Rights Reserved.

1

キャリアネットワークにおけるOSS活用の推進
NTTは、「プロダクトのオープン化」と「OSSへの要件インプット」の両面からコミュニティ活動を実施し、通信キャリアネットワークへの適用を検討している。
Users

productivity andefficiency

customersatisfaction
Achieve rapid service launches

OpenStackTelecom carrier network

KVM
OvS/DPDK

create business
opportunities

Recommended package
Collaboration
Business partner

disseminationdevelopment speed
and flexibility

Core developers

Investors, companies

Open community
CloudCollectivewisdom

Enterprise
OSS
Hardware

Network・・・
2Copyright©2018 NTT corp. All Rights Reserved.

2

将来ネットワークのイメージ• 将来のネットワークにおいては、サービスの変更・拡張に対して、経済的かつ柔軟に対応する
ため、プログラマビリティが要求されると考えられる。
• この実現に向けて、P4/Stratumを活用できないか検討している。
Public Cloud
Services

Public Cloud
Services

DPI

Broadband
access

Voice
services

video
services

Broadband
access

UTM

SBC

Mitig
ation

・・・

VNF infrastructure

CentralDatacenter

HW HW ・・ HW
SW SW ・・ SW

Transport Network

Transport Network
Mcast UTM
HW HW ・・ HW

Subscriber Edge

FTTH• トリプルプレイサービス• 加入者向けに最適化

Edge CloudIoT・・・VNF infrastructure

SW SW ・・ SW

Edge datacenter

FTTH• サービス変更/拡張にあわせ、ネットワーク機能を迅速に提供• 新しい事業を始めたい事業者に応じたカスタマイズが可能
Copyright©2018 NTT corp. All Rights Reserved.

3

P4/Stratumの概要

Copyright©2018 NTT corp. All Rights Reserved.

4

P4とは
NTT Confidential• P4：High-level Language for
Programming Protocol-independent Packet Processors の略• パケットを受け取ってから、その中身に応じて処理を行い送り出すまで(データプレーン)の動作を記述するためのプログラミング言語• 『特定のプロトコルに依存せず，パケット処理の独自仕様を実現できる』(Protocol-independent)• 『多様なハードウェアの仕様を意識せず，パケットの処理の内容を実装できる』(Target Independent)

https://p4.org/より引用
Copyright©2018 NTT Corp. All Rights Reserved.

5

【参考】 P4対応デバイス
NTT Confidential• CPU、FPGA、NPU、スイッチASICといった多様なデバイス種別に対応している。
• P4には現在２つの仕様バージョン(P414 / P416 )が存在し、どちらもメンテナンスが継続。
デバイス種別フレームワーク例

コミュニティ/ベンダ例

サポートP4バージョン

CPU

BMv2

P4.orgP4_14/16

SDNet

Xilinx

P4_16

NP4NetcopeP4_14

AgilioNetronome

P4_14/16

TofinoBarefoot

P4_14/16

Smart
NIC

FPGA

NPU
Switch-ASIC

Copyright©2018 NTT Corp. All Rights Reserved.

6

P４でパケット転送するまでの基本的な流れ• データプレンの振舞いを定義するプログラム（P4プログラム）を準備し、コンパイル（①②）• パケット転送に必要なテーブルエントリを設定し、パケットを転送（③）①データプレンの振舞いをプログラミング
・パケットヘッダの解析
・パケットマッチング/アクション処理など【コントロールプレン】

P4プログラム②対象となるターゲット
デバイス*に応じたファイ
ルを生成・適用

コントローラ

P4コンパイラ③テーブルエントリの設定

バイナリ
ファイル

【データプレン】

P4ファイル適用

パーサー

マッチ/
アクション

ingress

テーブル

キュー/
バッファ

マッチ/
アクション

egressOUTPUT

入力
パケット

INPUT

テーブル

*ターゲットデバイス：
CPU、FPGA、プログラマ
ブルASICなどP4プログラ
ムを適用する対象のこと
出力
パケット

P4でプログラミングする範囲

Copyright©2018 NTT corp. All Rights Reserved.

7

Stratumプロジェクトとは？
• ネットワークスイッチをソフトウェアで定義するオープンソースソフトウェア• Stratumは、 Google社・ONFらが主導するプロジェクト

https://stratumproject.org/ より引用

Copyright©2018 NTT corp. All Rights Reserved.

8

Stratum Community
https://www.opennetworki
ng.org/stratum/より

Copyright©2018 NTT corp. All Rights Reserved.

9Stratum概要• SDN集中制御を前提とした、ミニマルな機能実装を指向したスイッチOSである。
• 異なるベンダチップを搭載したスイッチであっても統一的な手段で制御するために
P4Runtime・gNMI・gNOIと呼ぶインタフェースを規定。
SDNコントローラ（ONOS等）
P4

gNMI

P4Runtime1) パイプライン設定
パーサの構造やマッチ・アクションの構成等を記述

2) パイプライン制御
検索テーブルやアクション種別を制御

3) デバイス設定
動作時の各種設定や監視・情報収集を実施

gNOI
4) デバイスオペレーション
ファイル更新やデバイステス
ト、再起動などを実施

P4プログラムを配置したスイッチ
OSに対して３つのIFを介して各種制御を実施

スイッチOS(Stratum）
テーブル

テーブル

テーブル

スイッチOS側の機能実装はミニマル
入力
パケット

Parse

Match/
Action

M/A
M/A

Send

抽象化レイヤ（チップ毎の特性を抽象化）
Fixed
ASIC

ProgrammableASIC

出力
パケット

（例えばBGPなどのルーティング機能等はP4runtime等を介したコントロー
ル側の機能として実装する想定）

Newer
ASIC
Copyright©2018 NTT corp. All Rights Reserved.

10

P4とP4 runtime
P4 : デバイスを抽象化し、スイッチがどのようにパケットを処理するか定義。
パイプラインの指定(どのフィールドが一致するか、どんなアクションを実行するか等)。
P4Runtime : 固定的な機能のスイッチであるか、プログラマブルであるかに関係なく、P4言語で動作が指定されている機能を制御するために使用するAPI。
【コントロールプレン】
P4プログラム

コントローラ

P4コンパイラP4ファイル適用

P4Runtime

バイナリ
ファイル

【データプレン】

入力
パケット

INPUT

テーブル

パーサー

マッチ/
アクション

ingress

テーブル

キュー/
バッファ

マッチ/
アクション

OUTPUT

P4

出力
パケット

egressCopyright©2018 NTT corp. All Rights Reserved.

11

P4処理の流れについて
NTT Confidential

コンパイラから2つのファイルが自動生成。
①P4infoファイル (ターゲット非依存) : コントロールプレーンから制御するためのテーブルIDなどの対応関係が格納。外部コントローラはこのファイルを参照しながらターゲットデバイスを制御。
②バイナリファイル (ターゲット依存) :対象ターゲットデバイスに応じたデータプレーンファイル。

P4プログラム

P4コンパイラ

コンパイラから2つのファイルが自動生成 【コントロールプレン】
・P4infoファイル (ターゲット非依存)
・バイナリファイル (ターゲット依存)
test.p4info

test.p4info

コントローラp4runtime.proto

各ドライバで各ターゲットの対応した情報に変換

バイナリ
test.bin
ファイルA
test.bintest.p4info

test.p4info

test.p4info

P4Runtime
control server

P4Runtime
control server

P4Runtime
control server

driver
Switch A

driver
Switch B

driver
Switch C

Copyright©2018 NTT Corp. All Rights Reserved.

12

NTT Confidential

NTTのユースケース

Copyright©2018 NTT Corp. All Rights Reserved.

13

ユースケース１ BNGのディスアグリゲーション• ネットワークの柔軟性・スケール性の向上のため、既存の大型ルータを汎用装置とVNF技術による実現を目指している。

データ転送機能

制御機能

VNF
Dedicated Edge
RouterStratum
CommonhardwareP4を用いて、負荷の大きい転送機能をスイッチ側に実装(オフロード)する
ことでサーバ側の負荷低減

データ転送機能Copyright©2018 NTT corp. All Rights Reserved.

14

ユースケース2 通信品質の可視化• 装置からパケット単位に情報取得ができ、通信品質を満たしているかを明確に可視化。
• パケット単位で情報を取得できるので、精緻な制御を実施可能なインフラを用意できる。

リアルタイム性に欠け、誰の通信がどの程度影響を受けているかわからない【 In-band Network Telemetry 】

パケット単位で、リアルタイムに各装置区間の遅延やロス情報を可視化

Copyright©2018 NTT corp. All Rights Reserved.

15

P4スイッチ/P4Runtimeの検討状況Copyright©2018 NTT corp. All Rights Reserved.

16

取り組みの全体像
P4/Stratumを用いたユースケース実現に向けて、現在下記の評価・検討を実施。
① Stratumの実装状況の確認② 【ユースケース 1】 P4によるハードウェアオフロードの実現性の確認 (PPPoEヘッダの変換)③ 【ユースケース 2】 P4によるINTの実現性の確認① Stratum② PPPoEヘッダの変換③ INT

コントローラONOS

Tofino CLI

ONOS

ターゲット

Stratum
Bmv2

Barefoot
スイッチ

Bmv2

Bmv2:ソフトウェアスイッチ

Bmv2:ソフトウェアスイッチ

Copyright©2018 NTT corp. All Rights Reserved.

17

① Stratumの実装状況の確認 (1/2)
Stratumは現在も開発中
P4サービスは、bmv2向けに実装が完了しており、Stratumメンバー向けに展開がされている
SDNコントローラ（ONOS等）
P41) パイプライン設定
パーサの構造やマッチ・アクションの構成等を記述

2) パイプライン制御
検索テーブルやアクション種別を制御

3) デバイス設定
動作時の各種設定や監視・情報収集を実施

gNOI
4) デバイスオペレーション

ファイル更新やデバイステス
開発中
ト、再起動などを実施

スイッチOS(Stratum）

ONOS + bmv2を使って動作を確認
入力
パケット

gNMI

P4Runtime

テーブル

Parse

テーブル

Match/Action

テーブル

M/A

Send

M/A

抽象化レイヤ（チップ毎の特性を抽象化）
Fixed
ASIC

Programmable
ASIC

Newer
ASIC

Copyright©2018 NTT corp. All Rights Reserved.

18

① Stratumの実装状況の確認 (2/2)
fabric.p4

fabric.p4

ONOS

ONOS

Stratum

Stratum

Stratum

Stratum

End-host

End-host

Switch#2
Switch#1fabric.p4

Switch#4
Switch#3

Mininetを使って、bmv2が4台のスイッチ
ファブリックを作成

Stratum

StratumStratum fabric.p4

End-host

End-host

Switch#2fabric.p4

Switch#1mininetfabric.p4

Stratum

Switch#4
Switch#3mininetP4ファイル(fabric.p4)
及びテーブル情報をP4Runtimeで投入
Copyright©2018 NTT corp. All Rights Reserved.

19

② P4によるPPPoEヘッダの変換の実装 (1/2)• PPPoEパケットをL2TPパケットに変換するオリジナルコードをP4_14で作成。
→ 非常に簡単に実装が可能 (400行程度)• Barefoot SDKを用いてスイッチ上に実装。
PPPoE.p4 (P4_14)/********** headers **********/
・・・
header_type pppoe_t {fields {ver: 4;
pktType : 4;code : 8;
sessionId: 16;
payloadLength : 16;}}・・・/********** parser **********/・・・/********** action **********/・・・/********** table **********/・・・/********** control *・・・

PPPoE.p4
400行程度(改行・コメント含)

テーブル情報コンパイラ(p4c-tofino)

Tofino CLI

Barefoot SDE

Barefoot SW
Copyright©2018 NTT corp. All Rights Reserved.

20

② P4によるPPPoEヘッダの変換の実装 (2/2)• 試験機より疑似パケットを印加し、実装した機能が動作するか確認。
• 下記のように、ハードウェアスイッチ上でパケットの変換動作が可能。

PPPoE
100G
IXIA

L2TP
100G
Barefoot SW

パケロスなしIXIA

PPPoEL2TP

Copyright©2018 NTT corp. All Rights Reserved.

21

③ P4によるINTの実現性の確認 (1/3)• INT(In-band Network Telemetry) とONOSを用いたINT実装を確認。
• ONOS wikiのINTチュートリアルを使用。
Inbandtalemetry.app

ONOS

付与対象のフローの設定付与するメタデータの設定• Switch ID• Ingress/Egress timestamp• Hop latency
・・・
Switch #2

Switch #1
パケット

Switch #1
パケット

Switch#2 BMv2

Switch#1 BMv2
End-host

Delay S1→S4t

Switch#2

Switch#4

Delay S1→S2t
Delay S4→S3

INT.p4t

Switch
#4 BMv2

Switch
#3 BMv2

mininetパケット

DelayS2→S3

End-hostt

Switch#1

Switch#3Switch #3
Switch #2
Switch #1
パケット…

INT Collector※ ONOS wikiのINTチュートリアル
https://wiki.onosproject.org/display/ONOS/%28INT%29+In+Band+Network+Telemetry+with+ONOS+and+P4
Copyright©2018 NTT corp. All Rights Reserved.

22

③ P4によるINTの実現性の確認 (2/3)
Switch#2

Switch#4

Switch#1

Switch#3End-host

End-host

Switch #3
Switch #2

キャプチャ

Switch #1

Copyright©2018 NTT corp. All Rights Reserved.

23

③ P4によるINTの実現性の確認 (3/3)
ONOSのINT設定画面

ONOS上のトポロジー図

取得情報の選択が可能

Grafana画面

Copyright©2018 NTT corp. All Rights Reserved.

24

P4検証を通して、わかったこと• Stratumの実装が進んできている。
• P4プログラミングは簡単。
• チュートリアルが整っている。
• 数百行程度のコーディングで任意の機能がスイッチで実現できる。

• スイッチの環境構築に苦労• 検証時、ライブラリ不足などでビルドが通らなかった。

• 現在は、デバイス依存箇所が存在• ポート番号、リソース量等のデバイス依存要素を考慮しなければいけない場合あり• 検証時、BarefootスイッチはP4_14にのみ対応 (現在はP4_16にも対応)

Copyright©2018 NTT corp. All Rights Reserved.

25

今後の取り組み

Copyright©2018 NTT corp. All Rights Reserved.

26

PoC @NTT NS Lab.
P4スイッチを用いたBNGのディスアグリゲーションのPoCを、NTTで実施予定(11月)① Disaggregate PPPoE/L2TP Function with P4 program② In-band-network telemetry with P4 program
PPPoE encap/decap
機能をスイッチにオフロード

In-band-Network Telemetryによって各ネットワーク情報を可視化
BRAS

INT Collector
Delay L1→S2

Delay L2→S1…

Deep insight

Leaf#1t

Leaf#1
Tofino chip

Leaf#2

Leaf#2

Delay S1→L1

Delay L2→S2

Tofino chipt

Spine#1
PPPoE.p4

ACCESS
NETWORK

Tofino chip

BorderLeaft

Spine#2t

Spine#1

Spine#2

Tofino chip

Border
Leaf

CORE
NETWORK
Copyright©2018 NTT corp. All Rights Reserved.

27

今後のスケジュール• P4/Stratum活用ユースケースの見極めを継続。
 ２つのユースケースについて、NTT R&D Forum (2018.11)でPoC予定
 2nd STEPとして、ONOS/Stratum適応について検討。2019.1頃にPoC予定
FY2018Apr.

FY2019
Jun.

Oct.

Jan.

Apr.

1st STEP
Evaluate P4 Use cases for BNG
 Disaggregate PPPoE Function
 In-band-network telemetry▲PoC(NTT R&D Forum2018)

2nd STEP
Apply P4/stratum for BNG
 1st STEP P4 use cases
 ONOS/Stratum integration▲PoC予定Copyright©2018 NTT corp. All Rights Reserved.

28

まとめ
• P4/Stratumの実装が徐々に進んでいる。
• P4/Stratumを活用のユースケースとして、2つのアプローチを検討。
① VNFのオフロード、②通信品質の可視化• P4を用いた機能実装は簡単である！

Copyright©2018 NTT corp. All Rights Reserved.

29