This is a repostory to store all P4 programms under our survey.
We collect P4 programs from different sources, including the tutorial of P4 community, Github public repositories, and publications with open-source
- SIGCOMM 18 Tutorial
- Basic Forwarding: basic_forward.p4
- Basic Tunneling: basic_tunnel.p4
- Explicit Congestion Notification: ecn.p4
- Multi-Hop Route Inspection: mri.p4
- Source Routing: source_routing.p4
- Calculator: calc.p4
- Load Balancing: load_balance.p4
- P4D2 17
- L3 Forwarding: ip_forward.p4
- ARP/ICMP Responder: arp.p4
- SIGCOMM 17 Tutorial
- HULA Load Balancer: hula.p4
- Header bit inversion: scrambler.p4
- SIGCOMM 16 Tutorial
- Heavy Hitter Detection: heavy_hitter_1.p4 and heavy_hitter_2.p4
- ECMP: ecmp_1.p4 and ecmp_2.p4
- Flowlet Switching: f__lowlet.p4__
- Very Simple Switch: vss.p4
- Multicase Replication with NAT: mc_nat.p4
- Axon Source Routing: axon.p4
- Dapper (asked the authors if they would like to share and if not try to built from the code snippets in the paper): dapper.p4
- NetPaxos:
- DC.p4
- switch.p4 - a data plane description of an L2/L3 switch
- TimeStamp Aware Switching: ts_switching.p4
- HashPipe - identifying the flows that contribute to majority of packets between two points on a given network: hashpipe.p4
- P4 Linear Road: linearroad.p4
- NetCache - Key-Value store in the data plane to handle queries on hot items and balance load across storage nodes: netcache.p4
- SketchLearn - Network measurement framework that resolves resource conflicts by learning their statistical properties to eliminate conflicting traffic components: sketchlearn.p4
- Beamer - stateless datacenter load balancer and do not store per-connection state: beamer.p4
- NDP Router: a datacenter router/switch prototype for near-optimal completion times for short transfers: ndp_router.p4
- Sonata: sonata.p4
- Robust Header Compression: rohc.p4
- Data plane virtualization with HyperV: hyperv.p4
- P4 Fuzzer: master thesis work
- Speedlight
We analyze the surveyed programs in terms of the LoC, the usage of register, counter and meters, whether translated to P4-16.
Name | LoC | Registers | Counters | Meters | Translated | Notation |
---|---|---|---|---|---|---|
basic_forward.p4 | 121 | x | x | x | x | |
basic_tunnel.p4 | 153 | x | x | x | x | |
ecn.p4 | 134 | x | x | x | x | |
mri.p4 | 202 | x | x | x | x | |
source_routing.p4 | 120 | x | x | x | x | |
calc.p4 | 139 | x | x | x | x | |
load_balance.p4 | 178 | x | x | x | x | |
ip_forward.p4 | 122 | x | x | x | x | |
arp.p4 | 228 | x | x | x | x | |
hula.p4 | 289 | ✅ | x | x | x | |
scrambler.p4 | 134 | x | x | x | x | |
heavy_hitter_1.p4 | 182 | x | ✅ | x | x | |
heavy_hitter_2.p4 | 178 | ✅ | x | x | x | |
ecmp_1.p4 | 161 | x | x | x | x | |
ecmp_2.p4 | 157 | x | x | x | x | |
flowlet.p4 | 203 | ✅ | x | x | x | |
vss.p4 | 130 | x | x | x | x | |
mc_nat.p4 | 131 | x | x | x | ✅ | |
axon.p4 | 103 | x | x | x | x | |
dapper.p4 | 535 | ✅ | x | x | ✅ | combined |
netpaxos_combined.p4 | 210 | ✅ | x | x | ✅ | manually generated from acceptor and coordinator |
DC.p4 | x | x | x | barefoot, not v1model, multiple files | ||
switch.p4 | x | x | x | barefoot, not v1model, multiple files, some includes missing | ||
ts_switching-16.p4 | 133 | x | ✅ | x | ✅ | |
hashpipe.h4 | 229 | ✅ | x | x | ✅ | |
linearroad.p4 | 789 | ✅ | x | x | ✅ | |
netcache.p4 | 1427 | ✅ | x | x | ✅ | v1model?, multiple files |
sketchlearn.p4 | 646 | ✅ | x | x | ✅ | small modification |
beamer.p4 | 310 | x | x | x | ✅ | small modification |
ndp_router.p4 | 223 | ✅ | x | x | ✅ | NetFPGA version also provided |
rohc.p4 | 231 | x | x | x | x | |
netchain.p4 | 366 | ✅ | x | x | ✅ |
- LoC calculation excludes lines of comment and blank lines.
- Programms written in P4_14 are translated into P4_16 by P4C.
References of the publications sorted by the year of publication.
- Life in the Fast Lane: A Line-Rate Linear Road
- SketchLearn: Relieving User Burdens in Approximate Measurement with Automated Statistical Inference
- Stateless Datacenter Load-balancing with Beamer
- Extern Objects in P4: an ROHC Compression Case Study
- Synchronized Network Snapshots
- NetChain: Scale-Free Sub-RTT Coordination
- Dapper: Data Plane Performance Diagnosis of TCP
- Heavy-Hitter Detection Entirely in the Data Plane
- NetCache: Balancing Key-Value Stores with Fast In-Network Caching
- Re-architecting datacenter networks and stacks for low latency and high performance
- HyperV: High-Performance Virtualization of the Programmable Data Plane
- Dapper: Data Plane Performance Diagnosis of TCP