@online{Shukla_arXiv2004.10887,
TITLE = {Towards Runtime Verification of Programmable Switches},
AUTHOR = {Shukla, Apoorv and Hudemann, Kevin and V{\'a}gi, Zsolt and H{\"u}gerich, Lily and Smaragdakis, Georgios and Schmid, Stefan and Hecker, Artur and Feldmann, Anja},
LANGUAGE = {eng},
URL = {http://arxiv.org/abs/2004.10887},
EPRINT = {2004.10887},
EPRINTTYPE = {arXiv},
YEAR = {2020},
ABSTRACT = {Is it possible to patch software bugs in P4 programs without human<br>involvement? We show that this is partially possible in many cases due to<br>advances in software testing and the structure of P4 programs. Our insight is<br>that runtime verification can detect bugs, even those that are not detected at<br>compile-time, with machine learning-guided fuzzing. This enables a more<br>automated and real-time localization of bugs in P4 programs using software<br>testing techniques like Tarantula. Once the bug in a P4 program is localized,<br>the faulty code can be patched due to the programmable nature of P4. In<br>addition, platform-dependent bugs can be detected. From P4_14 to P4_16 (latest<br>version), our observation is that as the programmable blocks increase, the<br>patchability of P4 programs increases accordingly. To this end, we design,<br>develop, and evaluate P6 that (a) detects, (b) localizes, and (c) patches bugs<br>in P4 programs with minimal human interaction. P6 tests P4 switch<br>non-intrusively, i.e., requires no modification to the P4 program for detecting<br>and localizing bugs. We used a P6 prototype to detect and patch seven existing<br>bugs in eight publicly available P4 application programs deployed on two<br>different switch platforms: behavioral model (bmv2) and Tofino. Our evaluation<br>shows that P6 significantly outperforms bug detection baselines while<br>generating fewer packets and patches bugs in P4 programs such as switch.p4<br>without triggering any regressions.<br>},
}
