Gauntlet: Finding Bugs in Compilers for Programmable Packet Processing

被引:0
|
作者
Ruffy, Fabian [1 ]
Wang, Tao [1 ]
Sivaraman, Anirudh [1 ]
机构
[1] NYU, New York, NY 10003 USA
关键词
VALIDATION;
D O I
暂无
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Programmable packet-processing devices such as programmable switches and network interface cards are becoming mainstream. These devices are configured 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 be 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 opensource P4 compiler (P4C) infrastructure, which serves as a common 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 8 months of bug finding, our tool Gauntlet detected 96 new and distinct bugs (62 crash and 34 semantic), which we confirmed with the respective compiler developers. 54 have been fixed (31 crash and 23 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 p4gauntlet.github. i and it now runs within P4C's continuous integration pipeline.
引用
收藏
页码:683 / 699
页数:17
相关论文
共 50 条
  • [1] Finding and Understanding Bugs in C Compilers
    Yang, Xuejun
    Chen, Yang
    Eide, Eric
    Regehr, John
    PLDI 11: PROCEEDINGS OF THE 2011 ACM CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, 2011, : 283 - 294
  • [2] Finding and Understanding Bugs in C Compilers
    Yang, Xuejun
    Chen, Yang
    Eide, Eric
    Regehr, John
    ACM SIGPLAN NOTICES, 2011, 46 (06) : 283 - 294
  • [3] Firebolt: Finding Bugs in Programmable Data Plane Generators
    Cao, Jiamin
    Zhou, Yu
    Sun, Chen
    He, Lin
    Xi, Zhaowei
    Liu, Ying
    PROCEEDINGS OF THE 2022 USENIX ANNUAL TECHNICAL CONFERENCE, 2022, : 819 - 834
  • [4] A programmable state machine architecture for packet processing
    Lai, WY
    Lea, CT
    IEEE MICRO, 2003, 23 (04) : 32 - 42
  • [5] Systematic characterization of programmable packet processing pipelines
    Attig, Michael
    Brebner, Gordon
    FCCM 2006: 14TH ANNUAL IEEE SYMPOSIUM ON FIELD-PROGRAMMABLE CUSTOM COMPUTING MACHINES, PROCEEDINGS, 2006, : 195 - 204
  • [6] An Empirical Study of Bugs in WebAssembly Compilers
    Romano, Alan
    Liu, Xinyue
    Kwon, Yonghwi
    Wang, Weihang
    2021 36TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING ASE 2021, 2021, : 42 - 54
  • [7] Understanding and Detecting Performance Bugs in Markdown Compilers
    Li, Penghui
    Liu, Yinxi
    Meng, Wei
    2021 36TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING ASE 2021, 2021, : 892 - 904
  • [8] FINDING THE BUGS
    VERITY, JW
    DATAMATION, 1982, 28 (12): : 87 - 87
  • [9] CONVERTING ALGEBRAIC COMPILERS TO DATA PROCESSING COMPILERS
    ETCHISON, WM
    COMMUNICATIONS OF THE ACM, 1960, 3 (07) : 396 - 396
  • [10] SP4: Scalable Programmable Packet Processing Platform
    Gill, Harjot
    Lin, Dong
    Sarna, Lohit
    Mead, Robert
    Lee, Kenton C. T.
    Loo, Boon Thau
    ACM SIGCOMM COMPUTER COMMUNICATION REVIEW, 2012, 42 (04) : 75 - 76