Software-defined networks (SDN) enable flexible and effective communication systems that are managed by centralized software controllers. However, such a controller can undermine the underlying communication network of an SDN-based system and thus must be carefully tested. When an SDN-based system fails, in order to address such a failure, engineers need to precisely understand the conditions under which it occurs. In this article, we introduce a machine learning-guided fuzzing method, named FuzzSDN, aiming at both (1) generating effective test data leading to failures in SDN-based systems and (2) learning accurate failure-inducing models that characterize conditions under which such system fails. To our knowledge, FuzzSDN is the first attempt to simultaneously address these two objectives for SDNs. We evaluate FuzzSDN by applying it to systems controlled by two open-source SDN controllers. Further, we compare FuzzSDN with two state-of-the-art methods for fuzzing SDNs and two baselines for learning failure-inducing models. Our results show that (1) compared to the state-of-the-art methods, FuzzSDN generates at least 12 times more failures, within the same time budget, with a controller that is fairly robust to fuzzing and (2) our failure-inducing models have, on average, a precision of 98% and a recall of 86%, significantly outperforming the baselines.
翻译:软件定义网络(SDN)通过集中式软件控制器实现灵活高效的通信系统管理。然而,此类控制器可能损害SDN系统的底层通信网络,因此必须经过严格测试。当SDN系统发生故障时,工程师需要精准理解故障发生的条件以解决问题。本文提出一种基于机器学习引导的模糊测试方法——FuzzSDN,旨在实现两大目标:(1)生成能有效触发SDN系统故障的测试数据;(2)学习精确刻画故障发生条件的失败诱导模型。据我们所知,FuzzSDN是首个同时针对这两项目标的SDN测试方案。我们通过两个开源SDN控制器控制的系统对FuzzSDN进行评估,并与两种最新SDN模糊测试方法及两种失败诱导模型基线方法进行对比。实验结果表明:(1)在相同的测试时限内,针对抗模糊测试性能较强的控制器,FuzzSDN能生成至少12倍于现有方法的故障样本;(2)所学习的失败诱导模型平均精确率达98%、召回率达86%,显著优于基线方法。