P4 Joins Google Summer of Code 2024

We are excited to announce our participation in Google Summer of Code (GSoC) 2024! GSoC is a global program that connects anyone interested in open-source contributions with open-source project maintainers. 

We are mentoring a variety of GSoC projects this year. Topics range from improving our documentation and tooling for the P4 language, new BMv2 features, and better integration with Kubernetes. Of course, if you would like to propose your own project related to P4, we are more than happy to mentor it, too.

Contributor applications will open on Monday, March 18, 2024 at 18:00 UTC with a deadline of Tuesday, April 2, 2024 18:00 UTC to submit an application (including project proposal). Further information can be found on our GSoC page or Github repository.  We look forward to receiving your applications!


A brief overview of this year’s projects, offered by mentors of the P4 community:

Developing a documentation website for the P4C

This project involves building a central website to improve the documentation for the P4 compiler (P4C). Currently, the documentation is spread across various markdown files and slides, which can be confusing for new contributors. The goal of this project is to create a well-organized and easy-to-navigate documentation site using existing tools.

Integrating the p4-constraints frontend into P4C

p4-constraints extends the P4 language with support for constraint annotations. These constraints can be enforced at runtime using the p4-constraints library. Currently, this library is separate from P4C. We would like to integrate the p4-constraints frontend directly into P4C.

P4 formatter

The P4 language currently does not have a standardized and open code formatter. This project centers around integrating a P4 code formatter into P4C, the official P4 compiler. The work involves addressing limitations in the current AST/IR to handle comments and formatting options.

BMv2 packet trace support

BMv2, the reference P4 switch simulator, writes logs to track packet processing, but there is no programmatic way to access this information. We want to implement a mechanism in BMv2 to record and provide packet traces in a structured format for easier analysis and automation.

BMv2 PNA support

The Portable Network Architecture (PNA) is an emerging standard for network interface cards (NICs). BMv2 currently supports other P4 targets but lacks PNA support. This project involves implementing a core subset of PNA functionalities in BMv2, making it a viable PNA simulator for development and testing.

P4-enabled container migration in Kubernetes clusters

Kubernetes is a container orchestration platform. While it offers container checkpointing, challenges arise when migrating containers using network protocols like TCP/IP due to changing IP addresses. This project aims to design and implement a P4-based solution for migrating established TCP connections during container migration within Kubernetes clusters.


A big thank you to the P4 TST, P4 GSoC planning team and mentors who have made this participation possible:

  • Bili Dong
  • Steffen Smolka
  • Ali Kheradmand
  • Davide Scano
  • Debobroto Das
  • Fabian Ruffy
  • Hari Thantry
  • Jonathan Dilorenzo
  • Radostin Stoyanov
  • Swati Goswami
  • Victor Rios


Share the Post: