Ryan Doenges

dblp:271/5967 · DBLP profile ↗
← Back
5ranked-venue papers
2as first author
4since 2021 · last 2023
0000-0002-6899-4529ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3 · 2 first-author · 3 since 2021Theory of computation · 2 · 2 since 2021Computer networks · 1
YearPublicationVenuePosition
2023 P4Cub: A Little Language for Big Routers
abstract
P4Cub is a new intermediate representation (IR) for the P4 programming language. It has been designed with the goal of facilitating development of certified tools. To achieve this, P4Cub is organized around a small set of core constructs and avoids side effects in expressions, which avoids mutual recursion between the semantics of expressions and statements. Still, it retains the essential domain-specific features of P4 itself. P4Cub has a front-end based on Petr4, and has been fully mechanized in Coq including big-step and small-step semantics and a type system. As case studies, we have engineered several certified tools with P4Cub including proofs of type soundness, a verified compilation pass, and an automated verification tool.
Rudy Peterson, Eric Hayden Campbell, Natalie Isak, Calvin Shyu, Ryan Doenges, Parisa Ataei, Nate Foster
CPP6
2023 Foundational Verification of Stateful P4 Packet Processing
Qinshi Wang, Mengying Pan, Ryan Doenges, Lennart Beringer, Andrew W. Appel
ITP4
2022 Leapfrog: certified equivalence for protocol parsers
abstract
We present Leapfrog, a Coq-based framework for verifying equivalence of network protocol parsers. Our approach is based on an automata model of P4 parsers, and an algorithm for symbolically computing a compact representation of a bisimulation, using "leaps." Proofs are powered by a certified compilation chain from first-order entailments to low-level bitvector verification conditions, which are discharged using off-the-shelf SMT solvers. As a result, parser equivalence proofs in Leapfrog are fully automatic and push-button.
Ryan Doenges, Tobias Kappé, John Sarracino, Nate Foster, J. Gregory Morrisett
PLDI1
2021 Petr4: formal foundations for p4 data planes
abstract
P4 is a domain-specific language for programming and specifying packet-processing systems. It is based on an elegant design with high-level abstractions like parsers and match-action pipelines that can be compiled to efficient implementations in software or hardware. Unfortunately, like many industrial languages, P4 has developed without a formal foundation. The P4 Language Specification is a 160-page document with a mixture of informal prose, graphical diagrams, and pseudocode, leaving many aspects of the language semantics up to individual compilation targets. The P4 reference implementation is a complex system, running to over 40KLoC of C++ code, with support for only a few targets. Clearly neither of these artifacts is suitable for formal reasoning about P4 in general. This paper presents a new framework, called Petr4, that puts P4 on a solid foundation. Petr4 consists of a clean-slate definitional interpreter and a core calculus that models a fragment of P4. Petr4 is not tied to any particular target: the interpreter is parameterized over an interface that collects features delegated to targets in one place, while the core calculus overapproximates target-specific behaviors using non-determinism. We have validated the interpreter against a suite of over 750 tests from the P4 reference implementation, exercising our target interface with tests for different targets. We validated the core calculus with a proof of type-preserving termination. While developing Petr4, we reported dozens of bugs in the language specification and the reference implementation, many of which have been fixed.
Ryan Doenges, Mina Tahmasbi Arashloo, Santiago Bautista, Alexander Chang, Newton Ni, Samwise Parkinson, Rudy Peterson, Alaia Solko-Breslin, Amanda Xu, Nate Foster
Proc. ACM Program. Lang.1
2020 Composing Dataplane Programs with μP4
abstract
Dataplane languages like P4 enable flexible and efficient packet-processing using domain-specific primitives such as programmable parsers and match-action tables. Unfortunately, P4 programs tend to be monolithic and tightly coupled to the hardware architecture, which makes it hard to write programs in a portable and modular way---e.g., by composing reusable libraries of standard protocols.
Hardik Soni 0001, Myriana Rifai, Praveen Kumar 0003, Ryan Doenges, Nate Foster
SIGCOMM4