NFV关键技术:DPDK技术栈在网络云中的最佳实践

DPDK(Data Plane Development Kit)是Intel为解决高速网络数据包处理提出的用户态驱动技术,旨在减少内核开销,提升转发性能。DPDK通过全用户态驱动、大页内存、缓存管理等技术,实现了高效的网络包处理,广泛应用在SDN/NFV领域。在NFV网络云中,有效利用cache和大页内存,可以进一步优化性能,减少TLB不命中,提高系统效率。
摘要由CSDN通过智能技术生成
本文篇幅有限,很难用短短几语就勾勒出DPDK的完整轮廓,概括来说,DPDK是一个技术栈,主要用于Intel架构的服务器领域,其主要目的就是提升x86标准服务器的转发性能。因此,本文只重点介绍DPDK平台部分技术在电信云中的最佳实践。

NFV网络云为什么需要DPDK?

在IA上,网络数据包处理远早于DPDK而存在。从商业版的Windows到开源的Linux操作系统,所有跨主机通信几乎都会涉及网络协议栈以及底层网卡驱动对于数据包的处理。然而,低速网络数据转发与高速网络数据转发的处理对系统的要求完全不一样。以Linux为例,传统网络设备驱动包处理的动作可以概括如下:

  1. 数据包到达网卡设备。
  2. 网卡设备依据配置进行DMA操作。
  3. 网卡发送中断,唤醒处理器。
  4. 驱动软件填充读写缓冲区数据结构。
  5. 数据报文达到内核协议栈,进行高层处理。
  6. 如果最终应用在用户态,数据从内核搬移到用户态。
  7. 如果最终应用在内核态,在内核继续进行。

随着网络接口带宽从千兆向万兆迈进,原先每个报文就会触发一个中断,中断带来的开销变得突出,大量数据到来会触发频繁的中断开销,导致系统无法承受。

在网络包高性能转发技术领域,有两个著名的技术框架NAPI和Netmap。NAPI策略用于高吞吐的场景,其策略是系统被中断唤醒后,尽量使用轮询的方式一次处理多个数据包,直到网络再次空闲重新转入中断等待,其目的就是解决数据包在转发过程过程中频繁中断引入的大量系统开销。Netmap就是采用共享数据包池的方式,减少内核到用户空间的包复制,从而解决大多数场景下需要把包从内核的缓冲区复制到用户缓冲区引入大量系统开销问题。

NAPI与Netmap两方面的努力其实已经明显改善了传统Linux系统上的包处理能力,但是,Linux作为分时操作系统,要将CPU的执行时间合理地调度给需要运行的任务。相对于公平分时,不可避免的就是适时调度。早些年CPU核数比较少,为了每个任务都得到响应处理,进行充分分时,用效率换响应,是一个理想的策略。现今CPU核数越来越多,性能越来越强,为了追求极端的高性能高效率,分时就不一定总是上佳的策略。以Netmap为例,即便其减少了内核到用户空间的内存复制,但内核驱动的收发包处理和用户态线程依旧由操作系统调度执行,除去任务切换本身的开销,由切换导致的后续cache替换(不同任务内存热点不同),对性能也会产生负面的影响。为此,Intel针对IA架构的这些问题,就提出了DPDK技术栈的架构,其根本目的就是尽量采用用户态驱动能力来替代内核态驱动,从而减少内核态的开销,提升转发性能。

鸟瞰DPDK

什么是DPDK?在《DPDK深入浅出》一书中,有以下一段描述:

针对不同的对象,其定义并不相同。对于普通用户来说,它可能是一个性能出色的包数据处理加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。当下火热的网络功能虚拟化,则将DPDK放在一个重要的基石位置。

DPDK最初的动机很简单,就是为了证明IA多核处理器能够支撑高性能数据包处理。随着早期目标的达成和更多通用处理器体系的加入,DPDK逐渐成为通用多核处理器高性能数据包处理的业界标杆。

目前,DPDK技术主要应用于计算领域的硬件加速器、通信领域的网络处理器和IT领域的多核处理器。随着软件(例如,DPDK)在I/O性能提升上的不断创新,将多核处理器的竞争力提升到一个前所未有的高度。在SDN/NFV领域,DPDK技术得到了空前应用,产生了不少最佳实践案例。

各类处理器

DPDK提出的目的就是为IA上的高速包处理。下图所示的DPDK主要模块分解展示了以基础软件库的形式,为上层应用的开发提供一个高性能的基础I/O开发包。主要利用了有助于包处理的软硬件特性,如大页、缓存行对齐、线程绑定、预取、NUMA、IA最新指令的利用、Intel DDIO、内存交叉访问等。

DPDK主要模块

  • 核心库Core Libs,提供系统抽象、大页内存、缓存池、定时器及无锁环等基础组件。
  • PMD库,提供全用户态的驱动,以便通过轮询和线程绑定得到极高的网络吞吐,支持各种本地和虚拟的网卡。
  • Classify库,支持精确匹配(Exact Match)、最长匹配(LPM)和通配符匹配(ACL),提供常用包处理的查表操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值