Skip to content
Christian Esteve Rothenberg edited this page Jun 1, 2022 · 19 revisions

Welcome to the P7 wiki!

P7 is a network emulator for P4-enabled devices. With P7, it is possible to emulate network topologies using recirculations, port configurations, different match+action tables, and even DAC cables. What is more, we can connect physical servers to inject traffic to the topology.

The emulation of the network link characteristics includes simple metrics (e.g., Connectivity, Latency [ms], bandwidth [Mbps]) and advance (e.g., Packet loss [%], Jitter [ms], Re-ordering [%])

Installation

  • $ apt-get install git
  • $ git clone https://github.com/intrig-unicamp/p7.git
  • Edit main.py to set your customized topology

P7 Link characteristics and implementation approaches

Feature Description
Link Connectivity Dijkstra algorithm to calculate the routes
Internal Recirculation + Temporary P7 Tag
Latency [ms] Timestamp-based timer
Recirculation via internal pipe | external jumper DAC
Jitter [ms] Random number generator to vary the latency
Lookup table with mathematical functions
Packet loss [%] Random generator for packet discard probability
Realistic definition of packet loss
Re-ordering [%] TNA Traffic Management (TM) features
Per-packet probability based recirculation
Bandwidth [bps] Rate limit TNA TM feature
Port configuration and mapping
Background Traffic [bps] Tofino packet generation engine
Up to 100G per pipeline

Team

Fabricio E. Rodriguez Cesen (frodri@dca.fee.unicamp.br)
Marcos Felipe Schwarz
Francisco Germano Vogt (franciscogermanovogt@gmail.com)
Ariel Góes De Castro (arielgoesdecastro@gmail.com)
Christian Rodolfo Esteve Rothenberg - https://www.dca.fee.unicamp.br/~chesteve/