Open source P4 implementations
This repository is used to host the open-source P4 implementations of some of our research projects.
Projects
- AES: AES encryption on BMV2 model
- AES-tofino: AES encryption on Tofino switch
- ConQuest-tofino: ConQuest queue analysis on Tofino switch
- ONTAS: Traffic anonymization on BMV2 / Tofino
- PRECISION-tofino: The PRECISION heavy-hitter algorithm on Tofino switch
- RTT-tofino: TCP Round-Trip Time measurement on Tofino switch
- SipHash-tofino: Secure keyed hash function on Tofino switch
- SmartCookie: Split-Proxy SYN flooding defense on Tofino switch + eBPF
- Meta4-tofino: Analyzing Internet Traffic by Domain Name on Tofino switch
Please refer to individual project sub-folders for open-source licenses.
Related repositories
Below is a non-exhaustive list of other repositories hosting open-sourced P4 programs.
(Please add to this list -- pull requests welcomed!)
Tofino P4-16
- BeauCoup: Run multiple distinct-counting queries on Tofino
- MicroP4: Modularized data-plane programming
- ACC-Turbo: Online packet clustering on Tofino for DDoS mitigation
- IMap: A fast and scalable in-network scanner on Tofino
Tofino P4-14
- ATP: Provide in-network aggregation service to accelerate deep learning training in multi-tenant settings
- ATP-SwitchML: Provide in-network aggregation service to accelerate deep learning training
- Cheetah: Use Tofino to accelerate Spark queries
- Chipmunk: Use program synthesis to generate P4 code
- NetLock: Using P4 switch for lock management
- Mantis: Generates reactive P4 program and C++ agent
- SP-PIFO: Enabling programmable scheduling in Tofino
BMV2
- NetCache: Using P4 switch as cache for key-value store
- NetChain: Using P4 switch for coordination service
- NetHCF: Employing programmable switches for spoofed IP traffic filtering
- PINT: Probabilistic In-band Network Telemetry
- PRECISION-bmv2: The PRECISION heavy-hitter algorithm on BMV2 switch
- QPipe: Quantile sketch in data plane
- Speedlight: Synchronized Network Snapshots
- Tutorial: The official P4 tutorial has many example P4 programs (under the solution folders)
- P4-Guide: More example P4 programs
- SP-PIFO: Enabling programmable scheduling in P4 switches