论文部分内容阅读
随着网络技术的不断发展,各式各样的网络中间设备不断涌现,发挥着越来越重要的作用。传统的基于专有硬件的网络中间设备具有价格昂贵、难于编程、难于管理等缺陷,网络功能虚拟化(NFV,Network Function Virtalization)在通用硬件平台上构建基于软件的网络服务,能够明显地减少开发和运维成本,并可以根据需求的变化动态调整,能够有效地弥补这一些不足。但基于服务器实现网络中间设备存在严重的性能问题,I/O是影响性能的最重要因素之一。 本文研究基于Docker的服务器I/O性能优化,主要的工作和贡献包括: 1.现有虚拟化方案的实验对比分析。对Docker原生网络进行改造,使其适用于NFV场景,对全虚拟化KVM和操作系统级容器虚拟化Docker的网络I/O性能进行定量的对比实验,结果表明Docker的虚拟化网络I/O性能要明显地优于KVM;进一步分析了基于Docker的NFV网络I/O路径的性能瓶颈,即虚拟交换机和veth-peer虚拟网卡,并通过定量测量加以验证。 2.基于Docker的NFV服务器南北向网络I/O优化。提出一种基于DPDK-SRIOV的NFV虚拟化网络架构,对整体架构和数据包路径进行了详细的解析,通过SRIOV实现基于硬件的物理网卡的虚拟化与共享,通过DPDK实现高性能的用户空间网络I/O。实验结果表明,相较于Docker原生虚拟化,在64字节小包和单条流的情况下,该架构的南北向网络I/O性能提升了约40倍。 3.基于Docker的NFV服务器东西向服务链网络I/O优化。设计和实现了一种基于共享内存的容器间通信机制,使用共享内存通道代替Docker原生网络复杂的容器间通信路径。采用客户——服务器模型,在宿主机端运行管理进程,统一为通信双方容器建立、分配和销毁共享内存通道。通过Docker的Volume机制和虚拟PCI设备解决宿主机分配的共享内存对象在容器内部不可见的问题,实现了一种高性能的无锁循环队列RingBuffer来管理共享内存,降低传统的加锁开销。实验结果表明,相较于Docker原生虚拟化,在64字节小包和单条流的情况下,东西向服务链网络I/O性能提升了约24倍,相较于直接使用DPDK-SRIOV的方案也有了较为明显的提升。