Gauntlet: Finding Bugs in Compilers for Programmable Packet Processing

Gauntlet: Finding Bugs in Compilers for Programmable Packet Processing
复制标题

DOI:
--
复制
发表时间:
2020-06
期刊:
--
影响因子:
--
通讯作者:
Fabian Ruffy;Tao Wang;Anirudh Sivaraman
Fabian Ruffy;Tao Wang;Anirudh Sivaraman
中科院分区:
其他
文献类型:
--
作者:
Fabian Ruffy;Tao Wang;Anirudh Sivaraman

文献摘要

被引文献

相似文献

可编程数据包处理设备,如可编程交换机和网络接口卡正在成为主流。这些设备使用特定于域的语言(如P4)进行编程,使用编译器将数据包处理程序转换为针对不同目标的指令。随着带有可编程设备的网络的普及,这些编译器的可靠性至关重要。本文考虑在P4-16的上下文中发现包处理编译器中的错误的问题。我们引入特定领域的技术,以诱导异常终止的编译器(崩溃错误)和错误编译(语义错误)。我们将这些技术应用于(1)开源P4编译器(P4 C)基础设施,它作为不同P4后端的基础;(2)P4参考软件交换机的P4后端;以及(3)Barefoot Tofino交换机的P4后端。在3个平台上,经过4个月的bug发现,我们的工具Gauntlet检测到78个新的和不同的bug(47个崩溃和31个语义),我们与各自的编译器开发人员确认了这些bug。其中44个已修复(27个崩溃和17个语义);其余的已分配给开发人员。我们的bug查找工作还导致了6个P4规范的更改。我们在这个https URL上开源了Gauntlet。
Programmable packet-processing devices such as programmable switches and network interface cards are becoming mainstream. These devices are programmed in a domain-specific language such as P4, using a compiler to translate packet-processing programs into instructions for different targets. As networks with programmable devices become widespread, it is critical that these compilers are dependable. This paper considers the problem of finding bugs in compilers for packet processing in the context of P4-16. We introduce domain-specific techniques to induce both abnormal termination of the compiler (crash bugs) and miscompilation (semantic bugs). We apply these techniques to (1) the open-source P4 compiler (P4C) infrastructure, which serves as a base for different P4 back ends; (2) the P4 back end for the P4 reference software switch; and (3) the P4 back end for the Barefoot Tofino switch. Across the 3 platforms, over 4 months of bug finding, our tool Gauntlet detected 78 new and distinct bugs (47 crash and 31 semantic), which we confirmed with the respective compiler developers. 44 have been fixed (27 crash and 17 semantic); the remaining have been assigned to a developer. Our bug-finding efforts also led to 6 P4 specification changes. We have open sourced Gauntlet at this https URL.