Skip to content
Ariel Góes de Castro edited this page May 31, 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 Jumper cabling with/without Vlan Tag Intern Recirculation + internal Tag
Latency [ms] Using an internal timer TM + Pipelines recirculation
Jitter [ms] Hash to determine recirculation times Lookup table with mathematical functions
Packet loss Hash to determine the probability to discard packets Random function to determine the probability to discard packets Realistic definition of packet loss
Re-ordering TNA TM features Targeted probabilistic packet (ID) recirculation within a flow
Bandwidth [bps] Rate limit TNA TM feature Port configuration and mapping

Demo

In this link, there is a brief demonstration on how P7 works presented on (2022 P4 Workshop) 2022-p4-workshophttps://www.youtube.com/watch?v=MszZV4cpR3s

Team

Fabricio E. Rodriguez Cesen ([email protected])
Marcos Felipe Schwarz
Francisco Germano Vogt ([email protected])
Ariel Góes De Castro ([email protected])
Christian Rodolfo Esteve Rothenberg

Clone this wiki locally