关于作者
作者简介:
张帅,Wechat:yorkszhang
网站:www.flowlet.net
DPDK和SR-IOV目前主要用于提升IDC(数据中心)中的网络数据包处理速度。然而,在NFV(网络功能虚拟化)场景下,DPDK与SR-IOV各自的应用场景和优缺点是什么呢?本文将从以下几个方面来探讨这个问题:
1、什么是DPDK?
2、什么是SR-IOV?
3、DPDK与SR-IOV有何不同?
4、DPDK与SR-IOV各自适合的应用场景是怎样的?
1、什么是DPDK?
DPDK(Data Plane Development Kit)是由6Wind和Intel开发的高性能数据平面开发工具包。为了更好地理解DPDK,我们先来看看Linux内核是如何处理网络数据包的。
图1 左:Linux kernel 右:DPDK
在默认情况下,Linux使用内核来处理网络数据包。随着IDC(数据中心)中NIC速率从40G逐步提升到目前主流的100G,未来将进一步升级到400G,Linux内核已不再适合处理高速网络。
内核的缺点:
1、中断处理:当大量网络数据包到达时,会频繁触发中断请求,导致高性能开销和上下文切换延迟。
2、内存拷贝:网络数据包到达时,网卡通过DMA等方式拷贝到内核缓冲区,内核协议栈再从内核空间拷贝到用户态空间,这个过程在Linux内核协议栈中占用了数据包处理流程的57.1%。
3、局部性失效:当前主流处理器包含多个CPU核心,这意味着一个数据包的处理可能跨多个CPU核心。例如,一个数据包可能在cpu0中断,内核态处理在cpu1,用户态处理在cpu2,这种跨核心处理容易导致CPU缓存失效,引发局部性失效。
DPDK的优点:
从前面的分析可以看出,目前网络IO实现方式中,内核是性能瓶颈的根源。为了解决性能问题,需要绕过内核,直接在用户态收发数据包。
1、内核绕过:通过UIO(Userspace I/O)旁路数据包,实现用户态数据包收发,减少上下文切换和内存拷贝。
2、使用多核编程代替多线程编程:设置CPU的亲和性,将线程和CPU核进行一对一绑定,减少彼此之间的调度切换。
3、使用大页内存代替普通内存:减少cache-miss。
4、采用无锁技术:解决资源竞争问题。
2、带有OVS的DPDK
什么是OVS?
OVS(Open vSwitch)是一款高质量的开源虚拟交换机,运行在hypervisor中,为虚拟机提供虚拟网络。
图2 NVF中OVS所处位置
OVS是实施VNF(Virtual Network Function)的一部分,位于hypervisor中,如图2所示,流量可以从一个VNF通过OVS传递到另一个VNF中。
OVS的转发平面是内核的一部分,无论OVS有多好,它都面临着与前面讨论的Linux网络协议栈相同的问题。
OVS+DPDK
图3 左:Kernel+OVS 右:DPDK+OVS
如图3所示:基于DPDK的转发路径替换标准的OVS内核转发路径,在主机上创建一个用户空间vSwitch,它完全运行在用户空间中,从而提高了OVS交换机的性能。
3、SR-IOV
在讲述SR-IOV之前,我们先讲述一下PCI直通技术。
什么是PCI直通?
PCI直通:不使用hypervisor也可以向虚拟机提供完整的网卡。虚拟机认为自己与网卡直接相连。如图4所示,有两个NIC卡和两个VNF,每个都独占访问其中一个NIC卡。
图4 网卡直通
PCI直通的缺点:由于下面的两个网卡被VNF1和VNF3独占,并且没有第三个专用网卡分配给VNF2使用。
什么是SR-IOV?
SR-IOV(Single Root I/O Virtualization)规范:定义了一种用于虚拟化PCIe设备的机制。这种机制可以将单个PCIe以太网控制器虚拟化为多个PCIe设备。
图5 SR-IOV
通过创建PCIe设备的VF,每个VF可以分配给单个VM/VNF,从而消除由于网卡不够的问题。
4、DPDK vs SR-IOV
数据中心中存在东西向流量与南北向流量。
图6
在同一服务器内的东西向流量中,DPDK的性能优于SR-IOV。这很容易理解:如果流量是在服务器内部路由/交换的,而不是到NIC,SR-IOV没有任何优势。相反,SR-IOV会成为一个瓶颈(流量路径会变长,网卡资源会被占用)。
图7
图7为Intel官方给出东西向流量场景下DPDK与SR-IOV的性能测试数据。
在南北向流量(也包括从一个服务器到另一个服务器的东西向流量)场景中,SR-IOV的性能优于DPDK。
图8
图9
图9为Intel官方给出南北向流量场景下DPDK与SR-IOV的性能测试数据。
end
| 温馨提示 |
欢迎分享、收藏、点赞、转发。
以上就是NFV中:DPDK与SR-IOV应用场景及性能对比的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号