论文部分内容阅读
随着网络与人们生活的联系日益紧密,网络服务的质量越发引起运营商和普通用户的关注。网络测试是发现网络潜在故障、检查网络安全性、验证网络性能的有效手段。网络流量生成系统能够自动化的生成测试流量,对网络进行复杂的功能和性能测试。为了降低开发和维护成本,包括网络流量生成系统在内的网络应用被部署在通用x86平台上,该方案具有简单、无锁、灵活的优点;但是部署在通用x86平台上的网络流量生成系统,由于受限于通用OS的I/O机制,无法高速的生成测试流量,从而完成多样化的性能测试。因此,需要研究通用x86平台的高速I/O机制,进而设计网络流量生成系统的高速混合业务流量生成方法。 实现高速测试流量生成的前提是在通用x86平台上高效的进行数据包I/O,现有操作系统的标准I/O机制存在中断处理、内存拷贝、缓存分配的系统开销,为了避免数据包I/O开销,需要设计高速的I/O框架绕开系统的标准I/O机制。学术界提出的高速I/O框架存在随机丢包、机制复杂、耦合度高、线程不安全等问题;工业界的商用产品虽然性能较好,但是源代码不开放,价格昂贵。因此,有必要设计通用x86平台下的简单、低耦合、高性能、安全的数据包I/O引擎。本文的最终目的是实现通用x86平台下高速混合业务流量的生成,高效的数据包I/O引擎能够在一定程度上提升流量生成的性能;但是,由于网络流量生成是计算密集型的网络应用,具有复杂的处理逻辑,需要设计完整的方法减少从物理网卡到上层负载处理过程中的I/O开销。 本论文的主要研究成果包括: 1.设计并实现了一种通用x86平台的高速I/O引擎DPDK Wrapper。DPDKWrapper是一种适用于通用x86平台的简单、低耦合、高性能、安全的数据包I/O引擎:将底层机制和操作流程进行封装,实现处理流程的简化;提供与Linux标准接口一致的API,实现高速I/O引擎与用户应用程序之间的低耦合;通过资源与参数的优化配置,实现高性能数据处理;通过唯一线程控制底层资源与增加安全的软件队列,实现多线程安全。实验结果表明DPDKWrapper可实现通用x86平台上14.881 Mpps的线速发包速度,14.2 Mpps的近线速收包速度。基于DPDK Wrapper,设计并实现了基于x86平台的RFC2544测试系统,对于千兆交换机的测试达到了与专业设备TestCenter一致的测试能力。 2.提出了一种高速混合业务流量生成方法PacketUsher,开发实现了网络流量生成系统。PacketUsher以DPDK Wrapper作为底层I/O引擎,采用零拷贝/批处理、并行化等多种措施优化整个网络流量生成系统的I/O流程,从而可产生高速的混合业务流量。具体来讲:针对数据包从物理网卡到内存收发队列的过程,利用DPDK Wrapper减少系统中断,避免操作系统上下文切换;针对数据包从内存收发队列到应用程序的过程,利用零拷贝和批处理减少数据包拷贝次数以及单个数据包的均摊I/O开销;针对应用程序处理数据包速度过慢,从而导致内存收发队列丢包的问题,利用并行化和流水线技术提升数据包处理速度。基于PacketUsher,设计并实现了真实的网络流量生成系统,测试结果表明该系统每秒可生成148,000条测试流量,远高于现有解决方案。