(1)网络连接性能分析
首先对优化后的容器网络连接进行了性能测试,在NFV服务器上使用Docker容器进行不同长度的网络服务功能链的部署,并从发送端服务器发送不同大小的数据包到接收端服务器,对比在不同服务功能链长度的条件下,优化容器网络连接方式前后的性能差异。
由于单服务器内服务功能链长度一般在10以内,我们测试了功能链长度为3和长度为6条件下,优化容器网络连接前后的NFV服务器的包转发能力,其结果如图7-1和图7-2所示。
图7-1 个VNF构成功能链时性能
图7-2 六个VNF构成功能链时性能
可以看到在由3个VNF组成的服务功能链中,使用单个LinuxBridge进行转发数据包的性能差于使用共享内存设备的性能,其中当数据包较小时,优化后性能提升较小,大约在5%左右,当数据包较大时,由于优化后的容器网络可以减少数据包的频繁拷贝问题,优化效果显著,性能提升可以达到45%左右。(www.xing528.com)
在由6个VNF构成的服务功能链环境下,可以看到使用共享内存的优化效果更加显著,性能提升最高达到了179%,这是由于服务功能链的加长,导致了数据包拷贝次数增多,而使用共享内存的字符设备进行数据包转发,其数据包拷贝次数仍然是两次,不受服务功能链长度变化影响,该方案优化效果显著。
(2)网络吞吐性能分析
在网络吞吐性能上,采用iperf工具来进行测试,通过在发送端不断加大发送网络报文的速度,在接收端对比通过分别部署两种虚拟化方式的网络流量的速度,进而得出两种虚拟化方式中各自服务器的吞吐量。测试结果如图7-3所示。
图7-3 网络吞吐性能对比
从测试结果可以看到,Docker容器与KVM虚拟机在网络吞吐量上能力几乎均达到了发送端的最大速度。KVM在早期使用QEMU模拟网络功能,性能仅能达到物理宿主机的三分之一左右,在新增了virtio技术和vhost技术后,虚拟机所发出的网络I/O请求将不会再在虚拟机和宿主机之间进行切换,而是直接由QEMU的驱动程序进行拦截并和宿主机中的真实网络设备驱动进行通信,来完成虚拟机的I/O操作,这使得KVM虚拟机的网络吞吐能力大幅提升。
而Docker容器相当于一个运行在宿主机中的进程,其容器的隔离性使用LinuxNamespace功能来隔离容器的运行环境,使用cgroups功能来限制容器使用的资源,这使得Docker容器的网络吞吐性能也接近物理宿主机的吞吐性能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。