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 等拷贝到内核缓冲区