packetdrill: Scriptable Network Stack Testing, from Sockets to Packets
Venue
Proceedings of the USENIX Annual Technical Conference (USENIX ATC 2013), USENIX, 2560 Ninth Street, Suite 215, Berkeley, CA, 94710 USA, pp. 213-218
Publication Year
2013
Authors
Neal Cardwell, Yuchung Cheng, Lawrence Brakmo, Matt Mathis, Barath Raghavan, Nandita Dukkipati, Hsiao-keng Jerry Chu, Andreas Terzis, Tom Herbert
BibTeX
Abstract
Testing today’s increasingly complex network protocol implementations can be a
painstaking process. To help meet this challenge, we developed packetdrill, a
portable, open-source scripting tool that enables testing the correctness and
performance of entire TCP/UDP/IP network stack implementations, from the system
call layer to the hardware network interface, for both IPv4 and IPv6. We describe
the design and implementation of the tool, and our experiences using it to execute
657 test cases. The tool was instrumental in our development of three new features
for Linux TCP—Early Retransmit, Fast Open, and Loss Probes—and allowed us to find
and fix 10 bugs in Linux. Our team uses packetdrill in all phases of the
development process for the kernel used in one of the world’s largest Linux
installations.
