Devon Loehr will present his FPO "Lucid: A High-Level, Easy-To-Use Dataplane Programming Language" on Friday, December 1 in CS 302 at 1pm.
Zoom link: https://princeton.zoom.us/j/97653187562?pwd=TmFNVjl1TWJDMkk5bW5Eaitxb05qUT09
The members of his committee are as follows:
Readers: Aarti Gupta and Andrew Appel ; Examiners: David Walker (Adviser), Jennifer Rexford, and Amit Levy
Abstract:
The introduction of programmable switches and the P4 language for programming
them has made it possible for network operators to write ever-more sophisticated
network applications, and execute them at high speed. However, possible is not the
same as easy. The de facto standard dataplane programming language, P4, is akin
to an “assembly language” for programmable switches: it provides a powerful but
low-level interface to switch hardware. While this gives the programmer fine-grained
control, it makes it difficult to write and reason about programs with complicated
high-level behavior. Furthermore, modern hardware is heavily specialized for packet
processing. While this specialization allows blazing fast speeds, it also heavily restricts
the sorts of programs a programmable switch can run. Unfortunately, such restrictions
are poorly-represented in modern dataplane languages. Should a program violate one
or more of these restrictions, it will fail to compile, often with an arcane or unhelpful
error message.
This dissertation presents Lucid, a high-level, event-based language for
programmable switches. Lucid raises the level of abstraction for data-plane program-
ming in several ways. Control flow is represented by events, each of which has an
associated handler that is executed when the event is generated. Different threads
of control may be interleaved easily by writing them as handlers for separate events.
Lucid provides high-level representations of switch hardware restrictions, which are
enforced by syntactic checks, including a novel type system for detecting ordering
violations.
Lucid is compiled to P4 for the Intel Tofino, and we find that Lucid programs
typically contain around 10 times fewer lines of code than equivalent P4 programs.
Furthermore, the Lucid interpreter may be used to quickly evaluate different configurations of a Lucid program, in order to automatically optimize a single program for different networking environments.