P4Testgen: An Extensible Test Oracle For P4

  title={P4Testgen: An Extensible Test Oracle For P4},
  author={Fabian Ruffy and Jed Liu and Prathima Kotikalapudi and Vojtvech Havel and Rob Sherwood and Vlad Dubina and Volodymyr Peschanenko and Nate Foster and Anirudh Sivaraman},
We present P4Testgen, a test oracle for the P4-16 language that supports automatic test generation for any P4 target. Unlike prior tools, which were tailored to specific programs and targets, P4Testgen is designed to be general and extensible. It models the complete semantics of the entire packet-processing pipeline including the P4 language, architectures and externs, and target-specific extensions. Handling aspects of packet processing that lie outside of the official language specification… 

p4pktgen: Automated Test Case Generation for P4 Programs

With the rise of programmable network switches, network infrastructure is becoming more flexible and more capable than ever before. Programming languages such as P4 lower the barrier for changing the

Debugging P4 programs with vera

Vera is a tool that verifies P4 programs using symbolic execution and automatically uncovers a number of common bugs including parsing/deparsing errors, invalid memory accesses, loops and tunneling errors as well as verifying user-specified properties in a novel language the authors call NetCTL.

Petr4: formal foundations for p4 data planes

P4 is presented with a new framework, called Petr4, that puts P4 on a solid foundation, consisting of a clean-slate definitional interpreter and a core calculus that models a fragment of P4.

FP4: Line-rate Greybox Fuzz Testing for P4 Switches

The design and implementation of FP4 is presented, a fuzz-testing framework for P4 switches that achieves high expressiveness, coverage, and scalability, and can validate both safety and stateful properties, improves efficiency over existing random packet generation baselines, and reaches 100% coverage on a wide range of examples.

bf4: towards bug-free P4 programs

Recent verification work has made advances in finding bugs in P4 programs before deployment, but it requires that the programmer specifies table rules that are possible at runtime[32, 24, 27]. This

DBVal: Validating P4 Data Plane Runtime Behavior

The goal is to detect packet-processing errors induced by bugs that are not caught (or are difficult to catch) before the P4 program deployment, and it is shown that the techniques can be used to effectively detect bugs that is difficult, if not impossible, to catch with existing techniques for testing and verifying programmable data planes.

p4v: practical verification for programmable data planes

The design and implementation of p4v is presented, a practical tool for verifying data planes described using the P4 programming language that adds several key innovations including a novel mechanism for incorporating assumptions about the control plane and domain-specific optimizations which are needed to scale to large programs.

Towards Runtime Verification of Programmable Switches

The insight is that runtime verification can detect bugs, even those that are not detected at compile-time, with machine learning-guided fuzzing with the aim of enabling a more automated and real-time localization of bugs in P4 programs using software testing techniques like Tarantula.

KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs

A new symbolic execution tool, KLEE, capable of automatically generating tests that achieve high coverage on a diverse set of complex and environmentally-intensive programs, and significantly beat the coverage of the developers' own hand-written test suite is presented.

Gauntlet: Finding Bugs in Compilers for Programmable Packet Processing

This paper considers the problem of finding bugs in compilers for packet processing in the context of P4-16, and introduces domain-specific techniques to induce both abnormal termination of the compiler and miscompilation.