SlideShare a Scribd company logo
How to Run
P4 Behavior Model v2
~ An P4 Software Switch Reference Implementation ~
Twitter: @ebiken
How to Run P4 Behavior Model v2 | 2017/08/06 1
• data plane 記述言語である “P4” 対応のハードウェア実装(ASIC, SmartNIC etc.)が増え
つつあるが、数十万~数百万円と、P4とは何かをまず試してみるにはコスト的に敷居が
高い。
• また、各ハードウェア実装(以降ターゲット)によってサポートされるP4機能が異なるため、
P4言語そのものを試すには制約が少ないソフトウェア実装が好ましい。
• そのため、P4を初めて試す際や、P4を用いたアプリケーションのPOC等を実施する際に
は、P4コミュニティで実装がすすめられているリファレンス実装である “P4 BMv2
(Behavior Model version 2)” を用いると有効である。
• 本文書では、P4 BMv2 を用いてP4のコンパイルおよびP4スイッチを動作させるための手
順を紹介する。
About this document
How to Run P4 Behavior Model v2 | 2017/08/06 2
• 既存パケット処理専用ASICの課題(P4のモチベーション)
• パケット処理を高速(Tbps)かつ安価に実施する場合、専用ASICが利用される。
• 新しいプロトコル・処理方法に対応したASICの開発には2~3年必要。
• 標準化完了~対応製品利用可能まで5年程度必要。
• ネットワーク製品の進化がユーザーニーズに追い付かなくなっていた。
How to Run P4 Behavior Model v2 | 2017/08/06 3
P4について
Reference:
• “The P4 Language Specification”
• Version 1.0.3 | November 2, 2016
• プログラム可能なパケット処理専用ASICの開発
• パケット処理(Dataplane)の基本動作(Parse/Match/Action)を
プログラム可能なASICとプログラム言語(P4)を設計。
• P4 : Programming Protocol-Independent Packet Processors
• 仕様提唱企業:Barefoot Networks
• P4は「データプレーン定義言語」であるため、様々なターゲット
プラットフォームへコンパイル可能
• P4対応 Ethernet Switch (ASIC)
• SmartNIC (NPU, FPGA)
• Software (CPU)
• Ethernet Switch は通常 “parser”, “match/action”, “de-parser” で構成され
るが、match/actionのパイプラインがいくつあるか (Input only, In/Out
etc.)、利用可能なaction、メタデータやレジストリなどの違いがある。
• de-parser => 送信前にパケットヘッダを組み立てるコンポーネント
• P4 BMv2 ではこれらのアーキテクチャの変更が可能となっている。
• アーキテクチャは C++11 でプログラムする。
• サンプルとして以下3つのアーキテクチャが付属している。
• l2_switch | simple_router | simple_switch
• P4言語を試すときは、上記付属アーキテクチャから1つを選んで使用。
How to Run P4 Behavior Model v2 | 2017/08/06 4
Switch Architecture
• P4仕様には現在2つのバージョンが存在する。
• それぞれ2014年、2016年にリリースされた仕様となるが、どちらとも現在(2017年7月)も
メンテナンスが継続されており、定期的に修正版がリリースされている。バージョン番号
はそれぞれ独立して version x.y.z の形式でアサインされているため、"P4_14 Version
1.0.4", "P4_16 Version 1.0.0" のように P4_14 / P4_16 を明確に記載する必要がある。
• P4バージョンと仕様書の場所
• https://p4lang.github.io/p4-spec/
• P4_14:2014年リリースの仕様
• P4_16:2016年リリースの仕様
本文書では、サポートされるハードウェア実装の多い “P4_14” を用いる。
How to Run P4 Behavior Model v2 | 2017/08/06 5
P4のバージョンと入手先
• P4はパケット処理のデータプレーンを定義するプログラム言語であり、実際のパ
ケット処理には以下モジュールが必要となる。
How to Run P4 Behavior Model v2 | 2017/08/06 6
P4 動作に必要なモジュール
P4 Source Code パケット処理データプレーンの定義。パーサーやテーブル、アクションなどの定義
P4 Compiler P4をTarget上で実行可能な形式(Dataplane runtime)にコンパイルする。Target毎に提供される。
Target
P4 Dataplane runtime を読み込み、定義された通りにパケット処理を実施する
ASIC(Barefoot), SmartNIC/NPU(Netronome), FPGA(Xilinx, Intel/Altera), Software(BMv2, eBPF) etc.
Notes
• Target実装毎にサポート状況はそれぞれ異なるため注意が
必要である。例えば Netronome SmartNIC (NFP) は現在
(2017年8月)P4_14のみをサポートしている。
• P4_16の仕様書では、P4対応Dataplaneだけでなく Control-
plane を含めて Target と呼んでいる。
• また、P4は「どのようにパケットを解析するか」「どのような
テーブルを持つか」「どのようなアクションが可能か」の定義
であり、スイッチ・ルーターと同様に「アドレス」「テーブルエ
ントリ(ルール)」などの設定を投入するコントロールプレー
ン(Network OS 等)が必要である。
P4 Source Code
Dataplane
runtime
P4 Compiler
P4 対応 Dataplane
Control-plane
(protocol agents)
Target
API definition
参照:P4_16 v1.0.0 Figure 2. Programming a target with P4.
• P4 source code はスイッチのパイプライン(パーサー、テーブル構成やアクション)を定義
しているのに対し、それらを設定(エントリを投入・変更・削除)するAPIが存在する。
• BMv2 API (現状)
• BMv2 APIとして “Thrift API” が用意されている
• BMv2用のCLIが付属しており、Thrift API経由でBMv2を操作する
• https://github.com/p4lang/behavioral-model/blob/master/tools/runtime_CLI.py
• BMv2 API (将来プラン)
• Target に依存しない gRPC / protobuf を利用した API が検討されている
• Target に依存しないため、その上で開発したCLIなどはBMv2以外の実装(Switch ASIC, SmartNIC
など)でも利用可能になる予定である
• https://github.com/p4lang/PI
• https://github.com/p4lang/PI/blob/master/proto/p4/p4runtime.proto
How to Run P4 Behavior Model v2 | 2017/08/06 7
CLI / API (Configuration Interface)
(各モジュールの説明は以降のスライドに記載)
• P4コミュニティのレポジトリは以下GitHubに保存されている。
• https://github.com/p4lang/
• P4 Compiler
• p4c: https://github.com/p4lang/p4c
• Target
• bmv2 : https://github.com/p4lang/behavioral-model.git
• P4 Source Code
• samples : https://github.com/p4lang/tutorials
How to Run P4 Behavior Model v2 | 2017/08/06 8
各モジュールの入手場所
How to Run P4 Behavior Model v2 | 2017/08/06 9
各モジュールの入手場所 (P4 Compiler)
p4c-bm
• https://github.com/p4lang/p4c-bm
• P4_14 対応のオフィシャルコンパイラ
.
p4c
• https://github.com/p4lang/p4c
• P4_16, P4_14 対応のコンパイラ
• (p4c-bmより新しい)
• p4c ... 標準コンパイラ
• p4c-ebpf ... eBPFへコンパイル可能なC
をP4から出力する
• .p4 ファイルを入力とし .json (dataplane runtime) を出力する
• p4c-bm, p4c の2種類存在
新しいプロジェクトでは
p4c を利用していくことを推奨
• P4 Software Switch (Behavior Model)
• bmv2 : https://github.com/p4lang/behavioral-model.git
• BMv2には以下3つのTarget実装のサンプルが付属する。
• https://github.com/p4lang/behavioral-model/tree/master/targets
• simple_router : 最も簡単な実装。
• l2_switch : Multicast 対応のためのレプリケーションエンジンを含む
• simple_switch : 標準 P4 target
• (参考)
• 古いBM(メンテ停止済み)も p4lang レポに存在しているが、古いチュートリアル実行等
以外では利用しないことを推奨
• https://github.com/p4lang/p4c-behavioral
How to Run P4 Behavior Model v2 | 2017/08/06 10
各モジュールの入手場所 (Target)
• P4 Source Code
• チュートリアル等で利用されたサンプルを入手可能
• https://github.com/p4lang/tutorials
• 各ターゲットの下にも存在する
How to Run P4 Behavior Model v2 | 2017/08/06 11
各モジュールの入手場所 (P4 Source Code)
• Protocol Agent
• 例えば Layer 2 switch (MAC Learning) を動作させるためには、未学習のパ
ケットを解釈し、MAC Table にエントリを追加する Agent (CPUで動作) が必要
• P4 Source Code と同じ場所にサンプルが存在する。
• https://github.com/p4lang/behavioral-
model/tree/master/targets/l2_switch/learn_client
• CLI
• runtime_CLI (python) が各 Target の下、および以下場所に存在
• https://github.com/p4lang/behavioral-model/blob/master/tools/runtime_CLI.py
• (各 Target 下の runtime_CLI と同じ実装)
How to Run P4 Behavior Model v2 | 2017/08/06 12
各モジュールの入手場所 (その他)
Install/Build 手順
Ubuntu 16.04 を用いて確認した Install/Build 手順
How to Run P4 Behavior Model v2 | 2017/08/06 13
• README.md に記載されている手順にて実施:
• https://github.com/p4lang/p4c/blob/master/README.md
作業内容
1. apt をアップデート
2. 依存パッケージをインストール
3. GitHub から p4c repository をクローン
4. ビルド
5. compiler と P4 shared headers をインストール (optional)
• p4c: /usr/local/bin
• P4 headers: /usr/local/share/p4c
How to Run P4 Behavior Model v2 | 2017/08/06 14
p4c (compiler)
How to Run P4 Behavior Model v2 | 2017/08/06 15
p4c (compiler) 作業ログ
1. apt をアップデート
$ sudo apt update
$ sudo apt upgrade
2. 依存パッケージをインストール
$ sudo apt-get install g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev
libboost-dev libboost-iostreams-dev pkg-config python python-scapy python-ipaddr tcpdump
> For documentation building:
> $ sudo apt-get install -y doxygen graphviz texlive-full
> Google Protocol Buffers. Install newest tag in the 3.0 series.
$ sudo apt-get install autoconf automake libtool curl make g++ unzip
$ git clone https://github.com/google/protobuf.git
$ cd protobuf/
> under ~/protobuf$
$ git checkout v3.0.2
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.
> If required: $ sudo apt autoremove
3. GitHub から p4c repository をクローン
> Clone p4c repository from GitHub
$ mkdir p4lang
$ cd p4lang
~/p4lang$ git clone --recursive https://github.com/p4lang/p4c.git
4. ビルド
> build p4c
$ ./bootstrap.sh
$ cd build
$ make -j4
$ make check -j4
5. compiler と P4 shared headers をインストール (optional)
> Install
$ sudo make install
• README.md に記載されている手順にて実施:
• https://github.com/p4lang/behavioral-model/blob/master/README.md
1. GitHub から bmv2 (behavioral-model) repository をクローン
2. 依存パッケージをインストール
• packages: thrift / nanomsg / nnpy
• Ubuntu の場合、`install_deps.sh` script を利用して一括インストール可能
3. ビルド
4. テスト実行
How to Run P4 Behavior Model v2 | 2017/08/06 16
bmv2 (behavior model)
How to Run P4 Behavior Model v2 | 2017/08/06 17
bmv2 (behavior model)
1. GitHub から bmv2 (behavioral-model) repository をクローン
$ git clone https://github.com/p4lang/behavioral-model.git bmv2
$ cd bmv2
2. 依存パッケージをインストール
> under ~/bmv2$
$ ./install_deps.sh script
3. ビルド
> Build
$ ./autogen.sh
$ ./configure
$ make -j2
$ sudo make install # if you need to install bmv2
4. テスト実行
> Run test
$ make check
サンプル(Layer 2 switch の実行)
How to Run P4 Behavior Model v2 | 2017/08/06 18
• P4 Program のコンパイル、Agentの利用、設定の投入、等、P4 Applicationを動作させる
ために必要な基本的な手順すべてが含まれるため、サンプルとして ”Target: l2_switch”
を用いた Layer 2 (mac learning) switch の動作手順を記載します。
How to Run P4 Behavior Model v2 | 2017/08/06 19
Layer 2 switch using P4 BMv2
host1 host2
l2_switch (BMv2)
veth0: 172.20.0.1/24
vtap1vtap0
veth1: 172.20.0.1/24
learn_client runtime_CLI
Notes
• Two veth/vtap pair are created.
• host1/host2 are network
namespace (netns) to emulate
hosts connected to switch.
• learn_client runs outside of
l2_switch (BMv2) and receives
packets from l2_switch / update
table entries dynamically.
• runtime_CLI are used to set initial
table entries on l2_switch, and
check table entries on runtime.
1. veth/vtap pair, netns hosts の作成
2. l2_switch の起動
3. learn_client の起動
4. CLI の起動・設定の投入
5. host 間で ping による疎通確認
6. Table Entry の確認
How to Run P4 Behavior Model v2 | 2017/08/06 20
Layer 2 switch using P4 BMv2 (steps)
How to Run P4 Behavior Model v2 | 2017/08/06 21
Layer 2 switch using P4 BMv2 (作業ログ)
1. veth/vtap pair, netns hosts の作成
# Create netns hosts
ip netns add host0
ip netns add host1
# Create veth
ip link add veth0 type veth peer name vtap0
ip link add veth1 type veth peer name vtap1
# Connect veth between host0 and host1
ip link set veth0 netns host0
ip link set veth1 netns host1
ip link set dev vtap0 up
ip link set dev vtap1 up
# Link up loopback and veth
ip netns exec host0 ip link set veth0 up
ip netns exec host0 ifconfig lo up
ip netns exec host1 ip link set veth1 up
ip netns exec host1 ifconfig lo up
# Set IP address
ip netns exec host0 ip addr add 172.20.0.1/24 dev veth0
ip netns exec host1 ip addr add 172.20.0.2/24 dev veth1
ip link set dev vtap0 up
ip link set dev vtap1 up
2. l2_switch の起動
$ cd bmv2/targets/l2_switch
~/bmv2/targets/l2_switch$ sudo ./l2_switch l2_switch.json -i 0@vtap0 -i 1@vtap1 --nanolog ¥
ipc:///tmp/bm-0-log.ipc --log-console -L debug --notifications-addr ¥
ipc:///tmp/bmv2-0-notifications.ipc
3. learn_client の起動
~/bmv2/targets/l2_switch/learn_client$ sudo ./learn_client
4. CLI の起動・設定の投入
~/bmv2/targets/l2_switch$ ./runtime_CLI
table_set_default smac mac_learn
table_set_default dmac broadcast
mc_mgrp_create 1
mc_node_create 0 1
mc_node_create 1 2
mc_node_associate 1 0
mc_node_associate 1 1
How to Run P4 Behavior Model v2 | 2017/08/06 22
Layer 2 switch using P4 BMv2 (作業ログ)
5. host 間で ping による疎通確認
# ip netns exec host0 ping 172.20.0.2
# ip netns exec host1 ping 172.20.0.1
6. Table Entry の確認
RuntimeCmd: table_dump smac
==========
TABLE ENTRIES
**********
Dumping entry 0x0
Match key:
* ethernet.srcAddr : EXACT 32e7c817d3c5
Action entry: _nop -
**********
Dumping entry 0x1
Match key:
* ethernet.srcAddr : EXACT fe698f981f3b
Action entry: _nop -
==========
Dumping default entry
Action entry: mac_learn -
==========
RuntimeCmd: table_dump dmac
==========
TABLE ENTRIES
**********
Dumping entry 0x0
Match key:
* ethernet.dstAddr : EXACT 32e7c817d3c5
Action entry: forward - 00
**********
Dumping entry 0x1
Match key:
* ethernet.dstAddr : EXACT fe698f981f3b
Action entry: forward - 01
==========
Dumping default entry
Action entry: broadcast -
==========

More Related Content

What's hot

"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越
Kentaro Ebisawa
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
Motonori Shindo
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
Takaaki Hoyo
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
Sho Shimizu
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
Kentaro Ebisawa
 
GoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスGoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティス
Toshiki Tsuboi
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
Takuya ASADA
 
AS45679 on FreeBSD
AS45679 on FreeBSDAS45679 on FreeBSD
AS45679 on FreeBSD
Tomocha Potter
 
TCAMのしくみ
TCAMのしくみTCAMのしくみ
TCAMのしくみ
ogatay
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
npsg
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
Akihiro Kuwano
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造
Taiji Tsuchiya
 
SRv6 study
SRv6 studySRv6 study
SRv6 study
Hiro Mura
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
Tetsuya Hasegawa
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
一路 川染
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
 

What's hot (20)

"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
GoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスGoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティス
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
AS45679 on FreeBSD
AS45679 on FreeBSDAS45679 on FreeBSD
AS45679 on FreeBSD
 
TCAMのしくみ
TCAMのしくみTCAMのしくみ
TCAMのしくみ
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造
 
SRv6 study
SRv6 studySRv6 study
SRv6 study
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 

Similar to How to run P4 BMv2

OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
Takashi Sogabe
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
Yohei Fushii
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
 
qmake入門
qmake入門qmake入門
qmake入門
hermit4 Ishida
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
Kentaro Ebisawa
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Takashi Kanai
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
Satoshi Ohkubo
 
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
JUNICHI YOSHISE
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
 
ABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組みABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組み
Yusuke Goto
 
200527 ur
200527 ur200527 ur
200527 ur
NoriakiAndo
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
Etsuji Nakai
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
Kentaro Ebisawa
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
Yuhki Hanada
 

Similar to How to run P4 BMv2 (20)

OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
qmake入門
qmake入門qmake入門
qmake入門
 
Niigata.pm #1
Niigata.pm #1Niigata.pm #1
Niigata.pm #1
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
 
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container ClusterオーケストレーションKubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
Kubernetes、Flannel、CNIでWindows Container Clusterオーケストレーション
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
 
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
Recap: Modern CI/CD with Tekton and Prow Automated via Jenkins X - Kubernetes...
 
Pdp11 on-fpga
Pdp11 on-fpgaPdp11 on-fpga
Pdp11 on-fpga
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
 
ABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組みABEMA を次のフェーズへ進化させる技術への取り組み
ABEMA を次のフェーズへ進化させる技術への取り組み
 
200527 ur
200527 ur200527 ur
200527 ur
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
 

More from Kentaro Ebisawa

P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)
Kentaro Ebisawa
 
Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介
Kentaro Ebisawa
 
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
Kentaro Ebisawa
 
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ APIMPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
Kentaro Ebisawa
 
Yang Tools Quick Memo
Yang Tools Quick MemoYang Tools Quick Memo
Yang Tools Quick Memo
Kentaro Ebisawa
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019
Kentaro Ebisawa
 
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRHComparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
Kentaro Ebisawa
 
Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4
Kentaro Ebisawa
 
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationIETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
Kentaro Ebisawa
 
p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0
Kentaro Ebisawa
 
SRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and ImplementationSRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and Implementation
Kentaro Ebisawa
 
JANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsJANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source Implementations
Kentaro Ebisawa
 
Using GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlUsing GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnl
Kentaro Ebisawa
 
GTPing, How To
GTPing, How ToGTPing, How To
GTPing, How To
Kentaro Ebisawa
 
SRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-typeSRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-type
Kentaro Ebisawa
 
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Kentaro Ebisawa
 
Zebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud EraZebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud Era
Kentaro Ebisawa
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4
Kentaro Ebisawa
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd Introduction
Kentaro Ebisawa
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
Kentaro Ebisawa
 

More from Kentaro Ebisawa (20)

P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)P4 Updates (2020) (Japanese)
P4 Updates (2020) (Japanese)
 
Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介Barefoot Faster™ 日本語紹介
Barefoot Faster™ 日本語紹介
 
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来IETF106 Hackathon 報告 & P4 based Switch の課題と未来
IETF106 Hackathon 報告 & P4 based Switch の課題と未来
 
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ APIMPLS Japan 2019 : Data & Control Plane を繋ぐ API
MPLS Japan 2019 : Data & Control Plane を繋ぐ API
 
Yang Tools Quick Memo
Yang Tools Quick MemoYang Tools Quick Memo
Yang Tools Quick Memo
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019
 
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRHComparison of SRv6 Extensions uSID, SRv6+, C-SRH
Comparison of SRv6 Extensions uSID, SRv6+, C-SRH
 
Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4Interop2019 Toyota Netcope P4
Interop2019 Toyota Netcope P4
 
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U TranslationIETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
IETF 104 Hackathon VPP Prototyping Stateless SRv6/GTP-U Translation
 
p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0p4srv6 (P4-16) design document rev1.0
p4srv6 (P4-16) design document rev1.0
 
SRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and ImplementationSRv6 Mobile User Plane : Initial POC and Implementation
SRv6 Mobile User Plane : Initial POC and Implementation
 
JANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source ImplementationsJANOG43 Forefront of SRv6, Open Source Implementations
JANOG43 Forefront of SRv6, Open Source Implementations
 
Using GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnlUsing GTP on Linux with libgtpnl
Using GTP on Linux with libgtpnl
 
GTPing, How To
GTPing, How ToGTPing, How To
GTPing, How To
 
SRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-typeSRv6 Mobile User Plane P4 proto-type
SRv6 Mobile User Plane P4 proto-type
 
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
Zebra SRv6 CLI on Linux Dataplane (ENOG#49)
 
Zebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud EraZebra 2.0 in Hybrid Cloud Era
Zebra 2.0 in Hybrid Cloud Era
 
p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4p4alu: Arithmetic Logic Unit in P4
p4alu: Arithmetic Logic Unit in P4
 
zebra & openconfigd Introduction
zebra & openconfigd Introductionzebra & openconfigd Introduction
zebra & openconfigd Introduction
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 

Recently uploaded

「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
shogotaguchi
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
Tatsuya Ishikawa
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
TsuyoshiSaito7
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
Takuya Minagawa
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
TsuyoshiSaito7
 
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
Tetsuya Nihonmatsu
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
Hironori Washizaki
 

Recently uploaded (11)

「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
 
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
 
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
 

How to run P4 BMv2

  • 1. How to Run P4 Behavior Model v2 ~ An P4 Software Switch Reference Implementation ~ Twitter: @ebiken How to Run P4 Behavior Model v2 | 2017/08/06 1
  • 2. • data plane 記述言語である “P4” 対応のハードウェア実装(ASIC, SmartNIC etc.)が増え つつあるが、数十万~数百万円と、P4とは何かをまず試してみるにはコスト的に敷居が 高い。 • また、各ハードウェア実装(以降ターゲット)によってサポートされるP4機能が異なるため、 P4言語そのものを試すには制約が少ないソフトウェア実装が好ましい。 • そのため、P4を初めて試す際や、P4を用いたアプリケーションのPOC等を実施する際に は、P4コミュニティで実装がすすめられているリファレンス実装である “P4 BMv2 (Behavior Model version 2)” を用いると有効である。 • 本文書では、P4 BMv2 を用いてP4のコンパイルおよびP4スイッチを動作させるための手 順を紹介する。 About this document How to Run P4 Behavior Model v2 | 2017/08/06 2
  • 3. • 既存パケット処理専用ASICの課題(P4のモチベーション) • パケット処理を高速(Tbps)かつ安価に実施する場合、専用ASICが利用される。 • 新しいプロトコル・処理方法に対応したASICの開発には2~3年必要。 • 標準化完了~対応製品利用可能まで5年程度必要。 • ネットワーク製品の進化がユーザーニーズに追い付かなくなっていた。 How to Run P4 Behavior Model v2 | 2017/08/06 3 P4について Reference: • “The P4 Language Specification” • Version 1.0.3 | November 2, 2016 • プログラム可能なパケット処理専用ASICの開発 • パケット処理(Dataplane)の基本動作(Parse/Match/Action)を プログラム可能なASICとプログラム言語(P4)を設計。 • P4 : Programming Protocol-Independent Packet Processors • 仕様提唱企業:Barefoot Networks • P4は「データプレーン定義言語」であるため、様々なターゲット プラットフォームへコンパイル可能 • P4対応 Ethernet Switch (ASIC) • SmartNIC (NPU, FPGA) • Software (CPU)
  • 4. • Ethernet Switch は通常 “parser”, “match/action”, “de-parser” で構成され るが、match/actionのパイプラインがいくつあるか (Input only, In/Out etc.)、利用可能なaction、メタデータやレジストリなどの違いがある。 • de-parser => 送信前にパケットヘッダを組み立てるコンポーネント • P4 BMv2 ではこれらのアーキテクチャの変更が可能となっている。 • アーキテクチャは C++11 でプログラムする。 • サンプルとして以下3つのアーキテクチャが付属している。 • l2_switch | simple_router | simple_switch • P4言語を試すときは、上記付属アーキテクチャから1つを選んで使用。 How to Run P4 Behavior Model v2 | 2017/08/06 4 Switch Architecture
  • 5. • P4仕様には現在2つのバージョンが存在する。 • それぞれ2014年、2016年にリリースされた仕様となるが、どちらとも現在(2017年7月)も メンテナンスが継続されており、定期的に修正版がリリースされている。バージョン番号 はそれぞれ独立して version x.y.z の形式でアサインされているため、"P4_14 Version 1.0.4", "P4_16 Version 1.0.0" のように P4_14 / P4_16 を明確に記載する必要がある。 • P4バージョンと仕様書の場所 • https://p4lang.github.io/p4-spec/ • P4_14:2014年リリースの仕様 • P4_16:2016年リリースの仕様 本文書では、サポートされるハードウェア実装の多い “P4_14” を用いる。 How to Run P4 Behavior Model v2 | 2017/08/06 5 P4のバージョンと入手先
  • 6. • P4はパケット処理のデータプレーンを定義するプログラム言語であり、実際のパ ケット処理には以下モジュールが必要となる。 How to Run P4 Behavior Model v2 | 2017/08/06 6 P4 動作に必要なモジュール P4 Source Code パケット処理データプレーンの定義。パーサーやテーブル、アクションなどの定義 P4 Compiler P4をTarget上で実行可能な形式(Dataplane runtime)にコンパイルする。Target毎に提供される。 Target P4 Dataplane runtime を読み込み、定義された通りにパケット処理を実施する ASIC(Barefoot), SmartNIC/NPU(Netronome), FPGA(Xilinx, Intel/Altera), Software(BMv2, eBPF) etc. Notes • Target実装毎にサポート状況はそれぞれ異なるため注意が 必要である。例えば Netronome SmartNIC (NFP) は現在 (2017年8月)P4_14のみをサポートしている。 • P4_16の仕様書では、P4対応Dataplaneだけでなく Control- plane を含めて Target と呼んでいる。 • また、P4は「どのようにパケットを解析するか」「どのような テーブルを持つか」「どのようなアクションが可能か」の定義 であり、スイッチ・ルーターと同様に「アドレス」「テーブルエ ントリ(ルール)」などの設定を投入するコントロールプレー ン(Network OS 等)が必要である。 P4 Source Code Dataplane runtime P4 Compiler P4 対応 Dataplane Control-plane (protocol agents) Target API definition 参照:P4_16 v1.0.0 Figure 2. Programming a target with P4.
  • 7. • P4 source code はスイッチのパイプライン(パーサー、テーブル構成やアクション)を定義 しているのに対し、それらを設定(エントリを投入・変更・削除)するAPIが存在する。 • BMv2 API (現状) • BMv2 APIとして “Thrift API” が用意されている • BMv2用のCLIが付属しており、Thrift API経由でBMv2を操作する • https://github.com/p4lang/behavioral-model/blob/master/tools/runtime_CLI.py • BMv2 API (将来プラン) • Target に依存しない gRPC / protobuf を利用した API が検討されている • Target に依存しないため、その上で開発したCLIなどはBMv2以外の実装(Switch ASIC, SmartNIC など)でも利用可能になる予定である • https://github.com/p4lang/PI • https://github.com/p4lang/PI/blob/master/proto/p4/p4runtime.proto How to Run P4 Behavior Model v2 | 2017/08/06 7 CLI / API (Configuration Interface)
  • 8. (各モジュールの説明は以降のスライドに記載) • P4コミュニティのレポジトリは以下GitHubに保存されている。 • https://github.com/p4lang/ • P4 Compiler • p4c: https://github.com/p4lang/p4c • Target • bmv2 : https://github.com/p4lang/behavioral-model.git • P4 Source Code • samples : https://github.com/p4lang/tutorials How to Run P4 Behavior Model v2 | 2017/08/06 8 各モジュールの入手場所
  • 9. How to Run P4 Behavior Model v2 | 2017/08/06 9 各モジュールの入手場所 (P4 Compiler) p4c-bm • https://github.com/p4lang/p4c-bm • P4_14 対応のオフィシャルコンパイラ . p4c • https://github.com/p4lang/p4c • P4_16, P4_14 対応のコンパイラ • (p4c-bmより新しい) • p4c ... 標準コンパイラ • p4c-ebpf ... eBPFへコンパイル可能なC をP4から出力する • .p4 ファイルを入力とし .json (dataplane runtime) を出力する • p4c-bm, p4c の2種類存在 新しいプロジェクトでは p4c を利用していくことを推奨
  • 10. • P4 Software Switch (Behavior Model) • bmv2 : https://github.com/p4lang/behavioral-model.git • BMv2には以下3つのTarget実装のサンプルが付属する。 • https://github.com/p4lang/behavioral-model/tree/master/targets • simple_router : 最も簡単な実装。 • l2_switch : Multicast 対応のためのレプリケーションエンジンを含む • simple_switch : 標準 P4 target • (参考) • 古いBM(メンテ停止済み)も p4lang レポに存在しているが、古いチュートリアル実行等 以外では利用しないことを推奨 • https://github.com/p4lang/p4c-behavioral How to Run P4 Behavior Model v2 | 2017/08/06 10 各モジュールの入手場所 (Target)
  • 11. • P4 Source Code • チュートリアル等で利用されたサンプルを入手可能 • https://github.com/p4lang/tutorials • 各ターゲットの下にも存在する How to Run P4 Behavior Model v2 | 2017/08/06 11 各モジュールの入手場所 (P4 Source Code)
  • 12. • Protocol Agent • 例えば Layer 2 switch (MAC Learning) を動作させるためには、未学習のパ ケットを解釈し、MAC Table にエントリを追加する Agent (CPUで動作) が必要 • P4 Source Code と同じ場所にサンプルが存在する。 • https://github.com/p4lang/behavioral- model/tree/master/targets/l2_switch/learn_client • CLI • runtime_CLI (python) が各 Target の下、および以下場所に存在 • https://github.com/p4lang/behavioral-model/blob/master/tools/runtime_CLI.py • (各 Target 下の runtime_CLI と同じ実装) How to Run P4 Behavior Model v2 | 2017/08/06 12 各モジュールの入手場所 (その他)
  • 13. Install/Build 手順 Ubuntu 16.04 を用いて確認した Install/Build 手順 How to Run P4 Behavior Model v2 | 2017/08/06 13
  • 14. • README.md に記載されている手順にて実施: • https://github.com/p4lang/p4c/blob/master/README.md 作業内容 1. apt をアップデート 2. 依存パッケージをインストール 3. GitHub から p4c repository をクローン 4. ビルド 5. compiler と P4 shared headers をインストール (optional) • p4c: /usr/local/bin • P4 headers: /usr/local/share/p4c How to Run P4 Behavior Model v2 | 2017/08/06 14 p4c (compiler)
  • 15. How to Run P4 Behavior Model v2 | 2017/08/06 15 p4c (compiler) 作業ログ 1. apt をアップデート $ sudo apt update $ sudo apt upgrade 2. 依存パッケージをインストール $ sudo apt-get install g++ git automake libtool libgc-dev bison flex libfl-dev libgmp-dev libboost-dev libboost-iostreams-dev pkg-config python python-scapy python-ipaddr tcpdump > For documentation building: > $ sudo apt-get install -y doxygen graphviz texlive-full > Google Protocol Buffers. Install newest tag in the 3.0 series. $ sudo apt-get install autoconf automake libtool curl make g++ unzip $ git clone https://github.com/google/protobuf.git $ cd protobuf/ > under ~/protobuf$ $ git checkout v3.0.2 $ ./autogen.sh $ ./configure $ make $ make check $ sudo make install $ sudo ldconfig # refresh shared library cache. > If required: $ sudo apt autoremove 3. GitHub から p4c repository をクローン > Clone p4c repository from GitHub $ mkdir p4lang $ cd p4lang ~/p4lang$ git clone --recursive https://github.com/p4lang/p4c.git 4. ビルド > build p4c $ ./bootstrap.sh $ cd build $ make -j4 $ make check -j4 5. compiler と P4 shared headers をインストール (optional) > Install $ sudo make install
  • 16. • README.md に記載されている手順にて実施: • https://github.com/p4lang/behavioral-model/blob/master/README.md 1. GitHub から bmv2 (behavioral-model) repository をクローン 2. 依存パッケージをインストール • packages: thrift / nanomsg / nnpy • Ubuntu の場合、`install_deps.sh` script を利用して一括インストール可能 3. ビルド 4. テスト実行 How to Run P4 Behavior Model v2 | 2017/08/06 16 bmv2 (behavior model)
  • 17. How to Run P4 Behavior Model v2 | 2017/08/06 17 bmv2 (behavior model) 1. GitHub から bmv2 (behavioral-model) repository をクローン $ git clone https://github.com/p4lang/behavioral-model.git bmv2 $ cd bmv2 2. 依存パッケージをインストール > under ~/bmv2$ $ ./install_deps.sh script 3. ビルド > Build $ ./autogen.sh $ ./configure $ make -j2 $ sudo make install # if you need to install bmv2 4. テスト実行 > Run test $ make check
  • 18. サンプル(Layer 2 switch の実行) How to Run P4 Behavior Model v2 | 2017/08/06 18
  • 19. • P4 Program のコンパイル、Agentの利用、設定の投入、等、P4 Applicationを動作させる ために必要な基本的な手順すべてが含まれるため、サンプルとして ”Target: l2_switch” を用いた Layer 2 (mac learning) switch の動作手順を記載します。 How to Run P4 Behavior Model v2 | 2017/08/06 19 Layer 2 switch using P4 BMv2 host1 host2 l2_switch (BMv2) veth0: 172.20.0.1/24 vtap1vtap0 veth1: 172.20.0.1/24 learn_client runtime_CLI Notes • Two veth/vtap pair are created. • host1/host2 are network namespace (netns) to emulate hosts connected to switch. • learn_client runs outside of l2_switch (BMv2) and receives packets from l2_switch / update table entries dynamically. • runtime_CLI are used to set initial table entries on l2_switch, and check table entries on runtime.
  • 20. 1. veth/vtap pair, netns hosts の作成 2. l2_switch の起動 3. learn_client の起動 4. CLI の起動・設定の投入 5. host 間で ping による疎通確認 6. Table Entry の確認 How to Run P4 Behavior Model v2 | 2017/08/06 20 Layer 2 switch using P4 BMv2 (steps)
  • 21. How to Run P4 Behavior Model v2 | 2017/08/06 21 Layer 2 switch using P4 BMv2 (作業ログ) 1. veth/vtap pair, netns hosts の作成 # Create netns hosts ip netns add host0 ip netns add host1 # Create veth ip link add veth0 type veth peer name vtap0 ip link add veth1 type veth peer name vtap1 # Connect veth between host0 and host1 ip link set veth0 netns host0 ip link set veth1 netns host1 ip link set dev vtap0 up ip link set dev vtap1 up # Link up loopback and veth ip netns exec host0 ip link set veth0 up ip netns exec host0 ifconfig lo up ip netns exec host1 ip link set veth1 up ip netns exec host1 ifconfig lo up # Set IP address ip netns exec host0 ip addr add 172.20.0.1/24 dev veth0 ip netns exec host1 ip addr add 172.20.0.2/24 dev veth1 ip link set dev vtap0 up ip link set dev vtap1 up 2. l2_switch の起動 $ cd bmv2/targets/l2_switch ~/bmv2/targets/l2_switch$ sudo ./l2_switch l2_switch.json -i 0@vtap0 -i 1@vtap1 --nanolog ¥ ipc:///tmp/bm-0-log.ipc --log-console -L debug --notifications-addr ¥ ipc:///tmp/bmv2-0-notifications.ipc 3. learn_client の起動 ~/bmv2/targets/l2_switch/learn_client$ sudo ./learn_client 4. CLI の起動・設定の投入 ~/bmv2/targets/l2_switch$ ./runtime_CLI table_set_default smac mac_learn table_set_default dmac broadcast mc_mgrp_create 1 mc_node_create 0 1 mc_node_create 1 2 mc_node_associate 1 0 mc_node_associate 1 1
  • 22. How to Run P4 Behavior Model v2 | 2017/08/06 22 Layer 2 switch using P4 BMv2 (作業ログ) 5. host 間で ping による疎通確認 # ip netns exec host0 ping 172.20.0.2 # ip netns exec host1 ping 172.20.0.1 6. Table Entry の確認 RuntimeCmd: table_dump smac ========== TABLE ENTRIES ********** Dumping entry 0x0 Match key: * ethernet.srcAddr : EXACT 32e7c817d3c5 Action entry: _nop - ********** Dumping entry 0x1 Match key: * ethernet.srcAddr : EXACT fe698f981f3b Action entry: _nop - ========== Dumping default entry Action entry: mac_learn - ========== RuntimeCmd: table_dump dmac ========== TABLE ENTRIES ********** Dumping entry 0x0 Match key: * ethernet.dstAddr : EXACT 32e7c817d3c5 Action entry: forward - 00 ********** Dumping entry 0x1 Match key: * ethernet.dstAddr : EXACT fe698f981f3b Action entry: forward - 01 ========== Dumping default entry Action entry: broadcast - ==========