I finally managed to translate and upload the english version of my german Bachelors Thesis “Building up a training platform for the programming language P4” (original title: “Aufbau einer Lernplattform zur Programmiersprache P4”).
The main goal was making it easier for people to get into P4. I worked some years as an sys-admin, so I had a good background concerning switched networks, but yet had tough times at the beginning working with P4.
The thesis gives a summary of the following things:
little history
goals + prospects (including a self-designed header for cloning)
functional principle (bmv2 + tna, control blocks, mirroring, data types)
6 exercices on the P4-VM with Mininet + BMv2
3 exercices on TNA/Tofino/Edge-Core Wedge 100BF-32X
Hope it will help at least some of you or your colleagues. Feel free to contact me regarding changes or your opionion about it.
With this post I’m referring to my older post German Bachelor thesis for easier getting-into-P4.
Great job – this is an extremely useful guide for anyone who want to start working with P4 both on BMv2 and on Tofino. I am glad you have been able to take time and translate it into English. In fact, I already recommended it to some people.
As an improvement suggestion, I noticed that you often use the terms “BMv2” and “v1model” interchangeably. This might be confusing to people, as BMv2 can implement a variety of P4_16 architectures, although v1model is definitely the one most widely used and better supported ones on BMv2.
thanks for your reply. I’m so happy that some people are already forwarding and recommending my thesis
Thanks for the hint with BMv2 and v1model. I will have a look at the thesis again regarding those and will upload a new version once I got enough time
Maybe I/we should do a little book “Getting started with P4” based on the thesi sometime
Writing a book is a great idea as long as it describes P4 on a specific platform (or just a few selected ones), similar to how you do it in your thesis. Selecting a proper platform (target + architecture) might be challenging today though, because:
Most practical, high-speed platforms are proprietary and closed.
Most platforms are also not quite mature yet, meaning that those that are still in active development do change often
Perhaps, you can start with an online publication that can be easily updated? You can always DM me here for more detailed discussions.