Verification of P4 Programs in Feasible Time Using Assertions
Verification of P4 Programs in Feasible Time Using Assertions
复制标题
使用断言在可行时间内验证 P4 程序
DOI:
10.1145/3281411.3281421
复制
发表时间:
2018
期刊:
影响因子:
--
通讯作者:
Barcellos, Marinho
中科院分区:
文献类型:
--
作者:
Neves, Miguel;Freire, Lucas;Schaeffer-Filho, Alberto;Barcellos, Marinho
Recent trends in software-defined networking have extended network programmability to the data plane. Unfortunately, the chance of introducing bugs increases significantly. Verification can help prevent bugs by assuring that the program does not violate its requirements. Although research on the verification of P4 programs is very active, we still need tools to make easier for programmers to express properties and to rapidly verify complex invariants. In this paper, we leverage assertions and symbolic execution to propose a more general P4 verification approach. Developers annotate P4 programs with assertions expressing general network correctness properties; the result is transformed into C models and all possible paths symbolically executed. We implement a prototype, and use it to show the feasibility of the verification approach. Because symbolic execution does not scale well, we investigate a set of techniques to speed up the process for the specific case of P4 programs. We use the prototype implemented to show the gains provided by three speed up techniques (use of constraints, program slicing, parallelization), and experiment with different compiler optimization choices. We show our tool can uncover a broad range of bugs, and can do it in less than a minute considering various P4 applications.