基于DPDK的虚拟化系统高性能网络模块的研究与实现

2020-03-02 01:13宋卫平沈磊佘文魁
科技创新导报 2020年20期
关键词:云计算

宋卫平 沈磊 佘文魁

摘  要:为了提升虚拟化环境中网络模块的性能,本文在KVM虚拟化平台上对OpenvSwitch虚拟网络交换技术和基于DPDK的OpenvSwitch虚拟网络交换技术进行了分析,并在自研虚拟化软件中设计并实现了基于OVS-DPDK的网络虚拟化功能,用户可以通过交互式界面方便地配置和使用基于OVS-DPDK的高性能网卡,达到了业务系统对虚拟机高性能网络需求的目的,最后通过实验证实采用OVS-DPDK技术后虚拟机网络性能得到了极大提升。

关键词:KVM  DPDK  OpenvSwitch  云计算

中图分类号:TP393.01                        文献标识码:A                文章编号:1674-098X(2020)07(b)-0125-07

Abstract: In order to improve the performance of network modules in a virtualized environment, this article analyzes OpenvSwitch virtual network switching technology and DPDK-based OpenvSwitch virtual network switching technology on the KVM virtualization platform, and designs and implements it in self-developed virtualization software With the network virtualization function based on OVS-DPDK, users can easily configure and use the high-performance network card based on OVS-DPDK through the interactive interface to achieve the purpose of the business system's demand for high-performance network of virtual machines. Finally, the experiment confirmed the adoption After OVS-DPDK technology, virtual machine network performance has been greatly improved.

Key Words: KVM; DPDK; OpenvSwitch; Cloud computing

随着信息技术的飞速发展,各种业务应用都以云的方式来承载运行,云计算越来越受到重视,企业数据中心建设过程中虚拟化发挥着重大作用。随着网络流量剧烈增长,对虚拟化平台的网络性能要求越来越高,基础的虚拟网络性能已经不能满足业务系统的需求。于是Intel提出了一种数据报文转发处理技术DPDK,红帽团队结合OpenvSwitch把该技术应用到了虚拟机的网络中,简称OVS-DPDK技术,通过目前开源项目实验表明,OVS-DPDK确实能极大地提升虚拟机的网络性能。但是,由于开源项目在虚拟化模块上的差异性,导致该功能的兼容性很差,比如对Libvirt、Qemu、OpenvSwitch和DPDK的版本都有严格的要求,导致生产项目使用该技术非常复杂,而且达不到理论上的优势效果。因此,本文在虚拟化软件中设计并实现了基于OVS-DPDK的网络虚拟化功能。

1  网络虚拟化相关技术分析

为了更好的实现基于OVS-DPDK网络虚拟化功能,本节将简要的介绍一下OpenvSwitch和DPDK两种技术。

1.1 OpenvSwitch虚拟交换技术

在KVM虚拟化平台上[1],为了保证虚拟机之间,虚拟机和外部网络之间进行通信,是通过网络间的桥接技术来实现的,应用比较广泛的桥接技术是OpenvSwitch技术。

OpenvSwitch是一种支持OpenFlow协议的多层虚拟交换机软件,旨在通过编程扩展,实现大规模网络的自动化配置、管理、维护功能。

OpenvSwitch主要由三大模块构成:内核模块openvswitch.ko、用户空间守护进程ovs-vswitchd以及轻量级数据库服务器ovsdb-server。Open vSwitch软件架构如图1所示:

其中,ovs-vswitchd是用户空间的守护进程,通过OpenFlow协议与本地或远端 Controller 通信,负责解析协议、执行命令。ovsdb-server 是一个轻量级数据库服务器,用于保存OpenvSwitch相关的配置信息,如端口、网桥相关信息,通过JSON-RPC 协议与ovs-vswitchd通信。openvswitch.ko是一个支持流交换的linux内核模块,负责查找流表项,转发、修改数据包,以及实现隧道的封装、解封装等操作。

每条datapath也就是内核中的fastpath,都会关联多个端口,当端口上接收到数据包时,会交给datapath模块进行处理,datapath提取报文头部信息以及元数据信息,通过 hash 函数产生一个 key 值,通过 key 来查找该datapath所关联的流表,若找到流表项,则根据流表项所定义的规则进行操作,如转发、丢弃等,更新数据包计数器;若没有查找到相应流表项,则将数据包传递给用户空间ovs-vswitchd进行处理,更新 miss 计数器,转发流程进入慢速路径(slowpath)。ovs-vswitchd重新根据报文头部信息、元数据信息计算 key值,然后根据 key值查找ovs-vswitchd所關联的OpenFlow流表。若找到流表项,则将流表项下发给内核中的datapath,datapath按照流表项定义的规则处理该数据包,若没有找到流表项,则用OpenFlow协议封装报文发送给OpenFlow Controller,由 controller 决定如何处理该数据包。

虚拟化控制系统虽然完成对网络XML文件的组装,但实际上Centos7.1系统并不支持DPDK模式,因此需要对Libvirt、Qemu、OpenvSwitch及DPDK模块进行开发和移植。

2.2.2 在Centos7.1系统上完成对虚拟机DPDK网卡的支持

由于OVS-DPDK对OpenvSiwtch、Qemu的版本要求比较高,因此,本文采用在Centos7.1上升级OpenvSwitch和Qemu的方式,而对于Libvirt来说开源还不支持该模式,因此,需要在Libvirt上设计并实现虚拟机网卡对DPDK的支持。具体实现流程如图9所示。

(1)組合各个设备的XML信息,如果选择使用OVS-DPDK网卡,则需要按照给定的两种XML配置方式进行配置;

(2)调用virsh模块的cmdCreate()接口来接收用户输入,调用libvirt模块中的virDomainCreateXML接口进行各虚拟化平台分发;

(3)libvirt会依据当前的虚拟化平台调用到具体实现的qemu-driver模块中,在qemu-driver模块中调用qemuDomainCreateXML()接口进行具体实现。

(4)将传入的配置文件信息进行解析,将各设备信息组合成qemu可执行命令,将qemu可执行命令发送到kvm模块执行,此时,基于OVS-DPDK网卡的虚拟机启动完成。

3  测试结果分析

上一节在Centos7.1系统上实现了对虚拟机DPDK网卡的支持,本节将通过实验测试采用DPDK网卡的虚拟机与普通Virtio网卡虚拟机的性能区别,主要在网络的吞吐量和延迟两个方面进行比较。

下面将详细阐述实验过程。

3.1 实验平台配置

戴尔R720服务器构成实验的硬件平台,该服务器包含两个intel万兆以太网口,服务上安装Centos 7.1操作系统支持KVM虚拟化平台,在服务器上创建两台Centos 7.1虚拟机。虚拟机配置信息为4CPU、4G内存。服务器详细配置信息如表1所示,虚拟机详细配置信息如表2所示。

3.2 实验设计

实验环境一如图10所示,两台虚拟机Vm1和Vm2运行在同一台物理主机上,使用OVS的普通网桥方式将虚拟机之间的网络进行连接。

实验环境二如图11所示,两台虚拟机Vm1和Vm2运行在同一台物理主机上,使用OVS-DPDK的网桥方式将虚拟机之间的网络进行连接。

本节使用Iperf工具对以上两种环境的虚拟机网络性能进行测试,Iperf是一个网络性能测试工具,可以测试TCP、UDP模式下网络带宽、丢包及延迟。可以配合不同的参数进行网络特性的测试,主要参数使用说明如表3所示。

为了全面地验证虚拟机网卡使用OVS-DPDK后的性能,本节设计了如下两个测试场景。

(1)分别对使用OVS网络的虚拟机和OVS-DPDK网络的虚拟机进行网络吞吐量测试。

(2)分别对使用OVS网络的虚拟机和OVS-DPDK网络的虚拟机进行网络丢包率测试。

3.3 实验结果与分析

使用Iperf提供的命令分别对使用OVS网络的虚拟机和OVS-DPDK网络的虚拟机进行网络性能测试,两个场景测试结果如下所示:

场景一:通过Iperf命令对OVS网络的虚拟机和OVS-DPDK网络的虚拟机进行网络吞吐量测试,测试结果如图12所示。

图11中,横轴表示TCP窗口大小分别为1K、2K、4K、8K、64K、512K及1024K字节的包,纵轴表示网络吞吐量单位kbps,从图14中可以看出虚拟机采用OVS-DPDK技术后网卡吞吐量明显优于采用OVS技术。

场景二:通过Iperf命令,使用UDP方式对OVS网络的虚拟机和OVS-DPDK网络的虚拟机进行网络延时测试,测试结果如图13所示。

图12中,横轴表示缓冲大小分别为512K、1024K、10240K、102400K及1024000K,纵轴表示网络延迟情况,单位为毫秒,从图中可以看到虚拟机采用OVS-DPDK技术后网卡延迟明显优于采用OVS技术。

综上,实验表明虚拟机使用OVS-DPDK的虚拟化网卡技术后网卡性能提升明显。因此,通过对CentOS7.1系统引入OVS-DPDK技术及对虚拟化控制系统的改造,可以有效地提升虚拟机网络性能。另外,对于网络要求比较高的虚拟化环境来说,可以建议用户采用该方案,这样可以保证虚拟机的网络性能。

4  结语

本文重点研究了OVS-DPDK的网络虚拟化技术,并在现有虚拟化控制系统上设计并实现了该功能,另外基于CentOS7.1系统完成了基于OVS-DPDK网络虚拟化技术设计与实现。通过实验验证,得到以下结论:使用OVS-DPDK网络虚拟化技术后,能有效地提升虚拟机的网络性能。

参考文献

[1] 何佳伟,江舟.基于Intel DPDK的高性能网络安全审计方案设计[J].电子测试,2016(Z1):87-91.

[2] 余思阳,杨佑君,李长连.基于DPDK的DDoS攻击防御技术分析与实现[J].邮电设计技术,2020(1):70-74.

[3] 吴克河,王冬冬.基于PF_RING的高速网络数据捕获方法[J].计算机与数字工程,2019,47(3):598-604.

[4] 周末. DPDK结构下类Socket接口研究与设计[D].成都:电子科技大学,2016.

[5] 李凯. 基于DPDK的流量动态负载均衡技术研究[D].哈尔滨:哈尔滨工业大学,2017.

[6] 赵宁,谢淑翠.基于dpdk的高效数据包捕获技术分析与应用[J].计算机工程与科学,2016,38(11):2209-2215.

猜你喜欢
云计算
谈云计算与信息资源共享管理
基于MapReduce的故障诊断方法
实验云:理论教学与实验教学深度融合的助推器