Safe, Modular Packet Pipeline Programming
summary
Introduces Lucid 2.0, a language and type system that guarantees programs are pipeline-safe on pipelined switches (P4/Intel Tofino targets), adding polymorphism, abstract hierarchical pipeline locations, compile-time vectors and bounded loops, and type inference. Proves soundness and encodes ordering-constraint checking as an SMT constraint encoding; loops are safely verified by unrolling three iterations. Demonstrations include reusable libraries and applications: Bloom filters, sketches, cuckoo hash tables, distributed firewalls, DNS reflection defenses, NATs, and a probabilistic traffic monitor; artifacts are available.
AI-written summary · about
chapters (13)
- 0:00Intro
- 0:37Switch Pipeline
- 2:31Lucid: A Language for Control in the Data Plane
- 7:02Polymorphic Function Types Function types may also refer to polymorphic locations (here, a and b)
- 7:53First Extension: Compound, Abstract Data Types
- 10:47Abstracting Records
- 12:25Hierarchical Locations
- 15:47Second Extension: Vectors and Bounded Loops
- 17:39Typechecking loops Tricky part catching errors across iterations of a loop
- 18:26Loop Unrolling Lemma
- 19:54Related Work
- 20:16Conclusion
- 23:50Pipeline Types: The Basics If we try to access a global after we've passed it in the pipeline, ERROR!
related talks
01h 08mThe Network is the Computer: A Programming Language Perspective
47mDeep Programmability: A New Lens on Networking
29mSwitchLog: A Logic Programming Language for Network Switches
14mEmpower Programmable Pipeline for Advanced Stateful Packet Processing
15mIsolation Mechanisms for High-Speed Packet-Processing Pipelines
18mP4Cub: A Little Language for Big Routers
19mHOL4P4: mechanized small-step semantics for P4
14mModular Switch Programming Under Resource Constraints
