Reducing P4 Language’s Voluminosity using Higher-Level Constructs


METADATA ONLY
Loading...

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

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 check_circle

Notes

Funding

Related publications and datasets