您的位置:首页 > 运维架构 > Linux

DPDK技术简介

2014-11-24 16:54 1711 查看
        近年来,随着市场和技术的发展,越来越多的网络基础架构开始向基于通用计算平台或模块化计算平台的架构方向融合,用以支持和提供多样的网络单元和丰富的功能,如应用处理、控制处理、包处理、信号处理等。除了节约成本和缩短产品上市时间之外,在机架式系统和不同尺寸的网络设备上,此架构还可以提供模块化架构的灵活性以及随需而定的系统组件独立升级能力。在传统的网络架构中,交换模块处理In-band和out-of-band系统模块之间的路由交换,处理器模块提供应用层和控制层功能,包处理模块用于数据平面,DSP模块提供定制化的信号层功能。通过使用Intel
DPDK(Intel Data Plane Development Kit,Intel 数据平面开发套件),基于Intel x86架构的处理器模块不仅可以实现传统的处理应用和控制功能,还可以实现智能和高效的包处理。

        相比原生 Linux(Native Linux),采用Intel DPDK技术后能够大幅提升IP转性能的主要原因在于Intel DPDK采用了如下描述的主要特征:

(1)轮询模式取代中断

        通常当数据包进入的时候,Native Linux会从网络接口控制器(NIC,Network Interface Controller)接收到中断,然后调度软中断,对所得的中断进行上下文切换,并唤醒系统调用,如read()和write()。相比之下,Intel  DPDK采用了优化的轮询模式驱动(PMD,Poll Mode Driver)代替默认的以太网驱动程序,从而可以不断地接收数据包,避免软件中断,上下文切换和唤醒系统调用,从而大大的节省重要的CPU资源,并且降低了延迟。

(2)HugePage取代传统页 

        相比Native Linux的4kB页,采用更大的页尺寸意味着可以节省页的查询时间,并减少转译查找缓存(TLB,Translation Lookaside Buffer)丢失的可能。Intel DPDK作为用户空间(User-space)应用运行时,在自己的内存空间中分配HugePage至存储帧缓冲区,环形和其他相关缓冲区,这些缓冲区是由其他应用程序控制,甚至是Linux内核。很多实例中采用1024@2MB的HugePage被保留用于运行IP转发应用。

(3)零拷贝缓冲区

        在传统的数据包处理过程中,原生Linux(Native Linux)解封包的报头,然后根据Socket ID将数据复制到用户空间(User Space)缓冲区。一旦用户空间(User Space)应用程序完成了数据的处理,一个write()系统调用将被唤醒并把数据送至内核,负责将数据从用户空间(User Space)拷贝至内核缓冲区,封装包的报头,最后借助相关的物理端口将数据发出去。显然,原生Linux(Native Linux)在内核缓冲区和用户空间(User Space)缓冲区之间进行拷贝动作,牺牲了很多的时间和资源。

        相比之下,Intel DPDK在自己保留的内存区域接收数据包,这个区域位于用户空间(User Space)缓冲区,之后根据配置规则将这些数据包分类到每一个Flow中。在处理完解封包之后,在相同的用户空间(User Space)缓冲区中使用正确的报头进行包封装,最后通过相关的物理端口发送这些数据。

(4)Run-to-Completion(RTC,运行到完成)和Core Affinity 

        在执行应用之前,Intel DPDK会进行初始化,分配所有的低级资源,如内存空间,PCI设备,定时器,控制台,这些资源将被保留且仅用于那些基于Intel DPDK的应用。初始化完成之后,每一个核(或线程,当BIOS设置中启用了Intel超线程技术时)将被启用来负责每一个执行单元,并根据实际应用的需求,运行相同的或不同的工作负载。

此外,Intel DPDK还提供了一种方法,即可以设置每个执行单元运行在每一个核心上,以维持更多的Core Affinity,从而避免缓存丢失。物理端口根据Affinity可以被绑定在不同的CPU线程上。

(5)无锁执行和缓存校准 
        Intel DPDK提供的库和API,被优化成无锁,以防止多线程应用程序死锁现象的发生。对于缓冲区、环形和其他数据结构,Intel DPDK也进行了优化,执行了缓存校准,以达到缓存行(Cache-Line)的效率最大化,同时最大限度减少缓存行(Cache-Line)的冲突。

        采用Intel DPDK技术后的IPv4转发性能,可以让用户在迁移包处理应用时(从基于NPU的硬件迁移到基于Intel x86的平台上),获得更好的成本和性能优势。同时可以采用统一的平台部署不同的服务,如应用处理,控制处理和包处理服务。但是,值得注意的是,Intel DPDK是一个数据层的开发工具包,并在用户空间运行,它不是一个用户可以直接建立应用程序的完整产品。需要特别指出的是,Intel DPDK不包含需要与控制层(包括内核和协议堆栈)进行交互的工具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  DPDK linux Intel