Skip to content

Princeton-Cabernet/p4-projects

Repository files navigation

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