Infrastructure protocols like Congestion Control (CC) seek to provide reliable performance across a wide range of Internet environments. Currently, protocol designers assess performance through hand-designed test cases or data sets captured from real environments. However, such approaches may inadvertently overlook critical facets of the algorithm's behavior when they encounter an unanticipated environment or workload. We seek to understand the unanticipated with \sys, a system that automatically generates adversarial network environments that cause a target protocol implementation to perform poorly. AdvNet employs machine learning-based optimization to generate environments, and incorporates a robust noise-handling mechanism to mitigate the variability inherent in real-world protocol performance. Although our approach is more general, this paper focuses specifically on transport protocols and their CC implementations. We showcase AdvNet's capability to create adversarial scenarios for 27 kernel-space implementations of both single-path and multi-path CC protocols, for several use cases with different performance goals. AdvNet identifies problematic network conditions that expose previously unnoticed Linux kernel bugs and uncovers hidden limitations in CC implementations, and provides insights about robustness. These results suggest that automated adversarial testing can be a valuable tool in protocol development, and that robustness is a useful new dimension for benchmarking CC protocols.
翻译:基础设施协议如拥塞控制(CC)旨在在广泛的互联网环境中提供可靠的性能。目前,协议设计者通过手工设计的测试用例或从真实环境中捕获的数据集来评估性能。然而,当这些方法遇到未曾预料的环境或工作负载时,可能会不经意间忽略算法行为的关键方面。我们通过 \sys 系统来理解这种意外情况,该系统能自动生成导致目标协议实现性能不佳的对抗性网络环境。AdvNet 采用基于机器学习的优化来生成环境,并融入稳健的噪声处理机制以缓解现实世界协议性能中固有的变异性。尽管我们的方法具有更广泛的适用性,但本文特别关注传输协议及其CC实现。我们展示了 AdvNet 为 27 个内核空间实现的单路径和多路径 CC 协议创建对抗场景的能力,这些场景针对多个具有不同性能目标的用例。AdvNet 识别出有问题的网络条件,揭示了先前未被注意的 Linux 内核错误,发现了 CC 实现中隐藏的局限性,并提供了关于鲁棒性的见解。这些结果表明,自动化对抗测试可以成为协议开发中的一种有价值工具,而鲁棒性是基准测试 CC 协议的一个有用的新维度。