P4とかXDPとかよく知らないので自分なりにまとめようとしたもの

P4とかXDPとかよくわからないので、(ゆるく)情報収集したものをまとめたページ
(多分)たまに更新します。

## 1. P4

### 1.1. Webサイト

* [P4 Language Consotium](https://p4.org)
* [P4 Guide](https://github.com/jafingerhut/p4-guide) Andy Fingerhutさんが作ったP4ガイド、色々詳しい
* [Getting Started with P4](https://p4.org/p4/getting-started-with-p4.html) Bruno Rijsmanさんの入門記事
* 関連プロジェクト
  * [p4lang/p4c](https://github.com/p4lang/p4c)
  * [p4c-xdp](https://github.com/vmware/p4c-xdp)
  * [t4p4s](https://github.com/P4ELTE/t4p4s) Retargetable compiler for the P4 language

* [日本P4ユーザ会](https://p4users.org)
  * [Slack](https://p4users-jp.slack.com)
  * [p4関連情報のリンク集](https://p4users.org/2020/01/28/p4関連情報のリンク集/)
* [P4 Language Consortium](https://www.youtube.com/channel/UCOQAFkDKucJWr-KafdJsdIQ)
* [Performance Evaluation of GTP-U and SRv6 Stateless Translation](http://dl.ifip.org/db/conf/cnsm/cnsm2019/1570585037.pdf)


### 1.2. プレゼン資料等

* 2017/8/6 [How to Run P4 Behavior Model v2](https://www.slideshare.net/kentaroebisawa/how-to-run-p4-bmv2) 海老澤さん
* 2017/10/20 [ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
](https://www.slideshare.net/kentaroebisawa/onic2017) 海老澤さん
* 2018/7/12 [P4を使ってみて分かったこと ~ 現実的になってきたデータプレーンのプログラマビリティ ~](https://www.janog.gr.jp/meeting/janog42/application/files/1315/3085/9570/P4.pdf) ARISTA Systems 熊谷渉さん JANOG42
* 2018/11/19 [P4/Stratum活用に向けたプログラマブルスイッチの実装・検討](https://mpls.jp/2018/presentations/MPLS-JAPAN2018-takei.pdf) NTTネットワークサービス研究所 武井勇樹さん MPLS Japan 2018
* 2019/10/11 [日本 P4 ユーザ会 2019](https://p4users.org/2019/07/16/event2019/) 
  * 参加記
      * [日本 P4 ユーザ会 2019 参加記（まとめや感想など）](https://negli0.github.io/posts/p4-user-jp/)
  * プログラム
      * P4の現状と展望・そして我々にできること
      * キャリアにおける P4 ユースケースの紹介
      * P4 テストベッドについて
      * Programmable スイッチによる GTP/SRv6 の Stateless 変換の性能評価
      * インテル FPGA PAC N3000 を P4 でプログラミングする NETCOPE P4 コンパイラの使用事例
      * CiscoにおけるP4の活用と展望
      * Arista 7170紹介とデモンストレーション
      * Cloud-Grade Routing Stack for P4/Stratum
      * 進化するデータプレンプログラマビリティ対応ハードウェアと実現されるユースケース
      * In-band Network Telemetry とその可能性
* 2019/10/23 Intel_P4_User Group_パケット打ち返し検証結果 マクニカ清水さん
* 2020/01/29 [NPLによるデータプレーンプログラミング](https://speakerdeck.com/imasaruoki/nplniyorudetapurenpuroguramingu?slide=53) IIJ 沖さん発表、リンク先はP4との比較


### 1.3. ブログなど

* 2018/12/13 [P4はじめました](https://qiita.com/tkamata/items/4f26e83fdb7f00982009)
* 2018/12/14 [P4 & XDP（VxLANの中身でフィルタリングしてみる）](https://qiita.com/hibitomo/items/3ed846beb2e504f0ffb6)
* 2019/4/26 [P4と進むネットワークの向こう側](https://www.netone.co.jp/report/column/column1/20190426.html) ネットワン匠コラム
* 2019/10/14 [Getting Started with P4](https://p4.org/p4/getting-started-with-p4.html)
* 2019/12/11 [ONE Silicon, ONE Experience, MULTIPLE Roles
](https://blogs.cisco.com/sp/one-silicon-one-experience-multiple-roles) Ciscoが新しいASICでP4をサポートするらしいという話(らしい)
* APRESIA SYSTEMS Technical Blog
  * 2019/10/07 [Stratum on BMv2をGNS3上で動かしてみた](https://www.apresiatac.jp/blog/201910071861/) P4Runtime等をベースにした、Network OS「Stratum」を動かした話
  * 2020/01/18 [Stratum on BMv2をGNS3上で動かしてみた(第二弾)](https://www.apresiatac.jp/blog/202001181884/)
  * 2020/01/27 [Stratum on BMv2をGNS3上で動かしてみた(第三弾)](https://www.apresiatac.jp/blog/202001271939/)
  * 2020/02/03 [Stratum on BMv2をGNS3上で動かしてみた(第四弾)](https://www.apresiatac.jp/blog/202002031969/)
* 13ryuse4 さん
    * 2020/06/15 [P4 で記述した簡易 L2 Switch にタグ VLAN（802.1Q）を対応させて VLAN 毎のトラヒックカウンタを実装する（準備編）](https://qiita.com/13ryuse4/items/cb83abd80712616e0799)
    * 2020/06/15 [P4 で記述した簡易 L2 Switch にタグ VLAN（802.1Q）を対応させて VLAN 毎のトラヒックカウンタを実装する（実装編）
](https://qiita.com/13ryuse4/items/6f95ada4d248372603c2)

### 1.4 ビデオ

* [Introduction to P4_16. Part 1](https://youtu.be/GslseT4hY1w)
* [Introduction to P4_16. Part 2](https://youtu.be/yqxpypXIOtQ)
* [P4 mapping to Barefoot Tofino](https://youtu.be/DptVDfxjoSk)

## 2. NPL

### 2.1. Webサイト

* [NPL](https://nplang.org) Broadcom作っているP4 Likeデータプレーンプログラム言語
* [NPL - Network Programming Language Specification v1.3](https://secureservercdn.net/45.40.155.175/7p0.e38.myftpupload.com/wp-content/uploads/2019/06/NPL-spec-version-1.3-2.pdf)

### 2.2. プレゼン資料等

### 2.3. ブログなど

* 2019/6/27 [Broadcom's new Trident 4 and Jericho 2 switch devices offer programmability at scale](https://www.broadcom.com/blog/trident4-and-jericho2-offer-programmability-at-scale)
* 2020/01/29 [NPLによるデータプレーンプログラミング](https://speakerdeck.com/imasaruoki/nplniyorudetapurenpuroguramingu) IIJ 沖さん

## 3. XDP/DPDK/eBPFとか

### 3.1. (主にプロジェクトの)Webサイト

### 3.2 プレゼン資料等

* 2017/11/14 [10分でわかる Cilium と XDP / BPF](https://www.slideshare.net/uzy_exe/201711ciliumforcontainersxdpandbpf-82043164)
* 2018/11/28 [eXpress Data Path (XDP) の概要とLINEにおける利活用](https://speakerdeck.com/yunazuno/brief-summary-of-xdp-and-use-case-at-line)
* 2019/07/06 [転びながらもネットワーク処理をソフトウェアで自作していく話](https://speakerdeck.com/mabuchin/zhuan-binagaramonetutowakuchu-li-wo-sohutoueadezi-zuo-siteikuhua) 馬渕 俊哉さん(raibo)
* 2020/06/26 [モバイルネットワークのデータプレーンをXDPで作る話](https://speakerdeck.com/higebu/xdp-based-mobile-network-data-plane) 日下部さん(BBSakura Networks)

### 3.3. ブログなど


* 2016/10/11 [Linuxカーネルの新機能 XDP (eXpress Data Path) を触ってみる](http://yunazuno.hatenablog.com/entry/2016/10/11/090245)
* 2017/05/09 [eBPF tail call 使い方メモ](http://yunazuno.hatenablog.com/entry/2017/05/09/102154)
* 2017/05/10 [Facebookはレイヤ4ロードバランサをIPVS(LVS)からXDPベースのものに乗り換えつつある](http://yunazuno.hatenablog.com/entry/2017/05/10/090410)
* 2017/06/12 [Generic XDPを使えばXDP動作環境がお手軽に構築できるようになった](http://yunazuno.hatenablog.com/entry/2017/06/12/094101)
* 2018/05/01 [BPF、eBPF、XDPそしてBpfilter...](https://okuranagaimo.blogspot.com/2018/05/bpfebpfxdpbpfilter.html)
* 2019/12/05 [今日から始めるXDPと取り巻く環境について](http://takeio.hatenablog.com/entry/2019/12/05/212945)
* 2018/11/07 [TCPパケットがGeneric XDPで処理されない件について](https://www.higebu.com/blog/2018/11/07/tcp-packet-is-not-processed-by-generic-xdp/#.XfBtmS3AP1I)
* 2018/12/14 [P4 & XDP（VxLANの中身でフィルタリングしてみる）](https://qiita.com/hibitomo/items/3ed846beb2e504f0ffb6)
* Berkeley Packet Filter（BPF）入門 atmark IT
  * 2018/11/22 [パケットフィルターでトレーシング？　Linuxで活用が進む「Berkeley Packet Filter（BPF）」とは何か (1/3)](https://www.atmarkit.co.jp/ait/articles/1811/21/news010.html)
  * 2018/12/10 [BPFのアーキテクチャ、命令セット、cBPFとeBPFの違い (1/2)](https://www.atmarkit.co.jp/ait/articles/1812/10/news016.html)
  * 2018/12/26 [BPFプログラムの作成方法、BPFの検証器、JITコンパイル機能 (1/3)](https://www.atmarkit.co.jp/ait/articles/1812/26/news010.html)
  * 2019/10/07 [LinuxのBPFで何ができるのか？　BPFの「プログラムタイプ」とは (1/2)](https://www.atmarkit.co.jp/ait/articles/1910/07/news008.html)
  * 2019/11/05 [BPFによるパケットトレース――C言語によるBPFプログラムの作り方、使い方 (1/2)](https://www.atmarkit.co.jp/ait/articles/1911/05/news010.html)
* 2019/01/19 [BPF_PROG_TEST_RUNでXDPプログラムの挙動をテストする](http://yunazuno.hatenablog.com/entry/2019/01/19/180710)
* 2019/01/20 [XDP のプログラムをビルドする方法 ](https://www.higebu.com/blog/2019/01/20/how-to-build-xdp-program/)
* 2019/05/06 [XDP の meta data が VLAN のパケットのときに失われるバグを修正して Linux Kernel に貢献した](https://www.higebu.com/blog/2019/05/06/fix-missing-xdp-meta-data-in-skb-with-vlan-packet/)
* 2019/05/20 [Netdev 0x13 から見た Linux ネットワークの最新動向](https://medium.com/nttlabs/netdev-0x13-から見た-linux-ネットワークの最新動向-6aff2965f5c6)

### 3.4 tips的ななにか

* 2020/1/16 今からXDPやるならLinuxのバージョンは5.3以上でやらないと無駄に苦労する。現在のstableは5.4なので、5.4でやるのが良い。[higebuさんtwitter](https://twitter.com/higebu/status/1217675419450634240?s=20)
* 2020/1/16 Linux 5.2からeBPF/XDPのプログラムサイズ制限が1Mになってた [higebuさんtwitter](https://twitter.com/higebu/status/1217672328005337088?s=20)

## 4. 用語集的ななにか

* [BMv2](https://github.com/p4lang/behavioral-model) BEHAVIORAL MODEL version2. P4のリファレンス実装シミュレータスイッチ(みたい)
* [gNMI](https://github.com/openconfig/gnmi) gRPC Network Management Interface
* [gNOI](https://github.com/openconfig/gnoi) gRPC Network Operations Interface
* [GNS3](https://www.gns3.com) Graphical Network Simulator-3 ネットワークシミュレータの一つ
* [mininet](http://mininet.org) An Instant Virtual Network on your Laptop ネットワークシミュレータの一つ
* [ONF](https://www.opennetworking.org) Open Networking Foundationという組織
* [Stratum](https://www.opennetworking.org/stratum/) ONFとGoogleで作っている次世代型の SDN インターフェースと呼ばれている「P4Runtime」「gNMI」「gNOI」(いずれも gRPC で通信)をベースにした新たな Network OS [GitHub](https://github.com/stratum/stratum)
* [Thrift](https://github.com/apache/thrift) 「スケーラブルな言語間サービス開発」のためにFacebookにて開発された遠隔手続き呼出し (RPC) フレームワーク(出典[Wikipedia](https://ja.wikipedia.org/wiki/Apache_Thrift))