Skip to content

Selltowitz/p4

Repository files navigation

P4

Description

This git repo focuses on P4_16 (Programming Protocol-Independent Packet Processors).

It is connected to a research program at the Hochschule für Technik und Wirtschaft Berlin (HTW Berlin) by Prof. Dr. Thomas Scheffler and my own Bachelor thesis "Aufbau einer Lernplattform zur Programmiersprache P4". An english translation can be found here: "Building a training platform for the programming language P4"
If you wanna cite any of those 2 here are the links to the ResearchGate uploads incl. DOI number:
German version

English version

I created 6 exercices on the P4-VM of the P4 Language Consortium using Mininet. 3 of those exercices have been successfully ported to real hardware (Edgecore Wedge 100BF-32X with Intel Tofino1). The main focus of those exercices is getting an "easier" start into the programming language and will be explained in the associated exercice folder or the thesis.

Under construction

Confidentiality checks for my bachelor thesis were approved at the end of May 2023, so I firstly wanted to upload my P4 code here. Mainly fixing READMEs for every exercice for now and doing my Masters in Information and Communication Engineering at HTW Berlin. Feel free to contact me :)

Papers

Out of the research program we did the following paper Using P4-INT on Tofino for measuring device performance characteristics in a network lab, which was presented at WueWoWas'23.

Relevant Documentation

The documentation for P4_16 and P4Runtime is available here

All excercises in the VM_Exercices folder use the v1model architecture, the documentation for which is available at:

  1. The BMv2 Simple Switch target document accessible here talks mainly about the v1model architecture.
  2. The include file v1model.p4 has extensive comments and can be accessed here.

The documentation for Tofino Native Architecture (TNA) is available here.

Thanks

Thanks to the people @

  • MTI Teleport Munich GmbH
  • HTW Berlin
  • AVM GmbH
  • BISDN
  • Barefootnetworks
  • P4 Language Consortium
  • OpenNetworkFoundation
  • IETF
  • Linux
  • Wikipedia
  • Family and Friends <3