Reducing P4 Language’s Voluminosity using Higher-Level Constructs

EuroP4 '22: Proceedings of the 5th International Workshop on P4 in Europe

Abstract

Over the last years, P4 has positioned itself as the primary language for data-plane programming. Despite its constant evolution, the P4 language still “suffers” from one significant limitation: the voluminosity of its code. P4 applications easily reach thousands of lines of code, becoming hard to develop, debug, and maintain. The reason is twofold: P4 requires many characters to express individual concepts (verbosity), and it relies on code repetition (lack of parametrization). Today, P4 users overcome this limitation by relying on templating tools, hand-crafted scripts, and complicated macros. Unfortunately, these methods are not optimal: they make the development process difficult and do not generalize well beyond one codebase. In this work, we propose reducing the voluminosity of P4 code by introducing higher-level language constructs. We present O4, an extended version of P4, that includes three such constructs: arrays (which group same-type entities together), loops (which reduce simple repetitions), and factories (which enable code parametrization).

We evaluate O4 on several state-of-the-art programs and show how, with respect to P4: (i) it reduces code volumes by up to 80%, (ii) it decreases code verbosity by 44% on average, and (iii) it cuts duplicated code by 60%. We contribute a compiler implementation that provides said benefits with just a 3.5% increase in compilation time.

Research Area: Network Programmability

People

Dr. Albert Gran Alcoz
PhD student
2019—2024
Coralie Busse-Grawitz
Researcher
2020—2024

BibTex

@inproceedings{alcoz2022reducing,
  author    = {Gran Alcoz, Albert and Busse-Grawitz, Coralie and Marty, Eric and Vanbever, Laurent},
  title     = {{Reducing P4 Language's Voluminosity using Higher-Level Constructs}},
  booktitle = {EuroP4 '22: Proceedings of the 5th International Workshop on P4 in Europe},
  address   = {Rome, Italy},
  year      = 2022,
  month     = dec,
  publisher = {Association for Computing Machinery},
  doi       = {10.1145/3565475.3569078},
  url       = {https://doi.org/10.1145/3565475.3569078}
}

Research Collection: 20.500.11850/589735

Slide Sources: https://gitlab.ethz.ch/projects/40921