Reducing P4 Language’s Voluminosity using Higher-Level Constructs
METADATA ONLY
Loading...
Author / Producer
Date
2022-12
Publication Type
Conference Paper
ETH Bibliography
yes
Citations
Altmetric
METADATA ONLY
Data
Rights / License
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.
Permanent link
Publication status
published
External links
Editor
Book title
EuroP4 '22: Proceedings of the 5th International Workshop on P4 in Europe
Journal / series
Volume
Pages / Article No.
19 - 25
Publisher
Association for Computing Machinery
Event
18th International Conference on emerging Networking EXperiments and Technologies (CoNEXT 2022)
Edition / version
Methods
Software
Geographic location
Date collected
Date created
Subject
P4 language; programming languages; programmable networks
Organisational unit
09477 - Vanbever, Laurent / Vanbever, Laurent