首页 > 编程知识 正文

dp准则,dpdk编程

时间:2023-05-06 18:37:31 阅读:151679 作者:4395

由于网络设备(路由器、交换机、媒体网关、SBC、PS网关等)需要瞬间进行大量消息收发,因此在以往的网络设备中,使用专用的NP (网络进程)处理器这些专用装置仅在需要通过集成硬件电路(或由编程形成的硬件电路)有效地传输消息且对消息进行深度处理时才需要CPU干扰。

但是,在公共云、NFV等APP应用场景中,基础设施多以CPU为运算核心,不具备专用的NP处理器,操作系统也以通用Linux为中心,进行网络数据包的收发处理

在虚拟化环境中,路径会变长

由于数据包处理任务中存在内核状态和用户状态的切换以及多次内存复制,导致系统消耗较大,以CPU为中心的系统中存在较大的处理瓶颈。 为了提高通用服务器(COTS )中的数据包处理性能,英特尔推出了向ia(Intelarchitecture )系统提供服务的DPDK技术。

DDK是数据平面开发工具包的缩写。 简单地说,dpdk APP应用在操作系统的User Space上运行并利用其自己提供的数据平面库来处理发送和接收分组,以绕过Linux内核状态协议栈提高消息处理效率

DPDK是lib库和工具包的集合。 最简单的体系结构说明如下图所示。

上面的蓝色部分是DPDK的主要组件。 更全面、更权威的DPDK体系结构请访问英特尔官方网站。 简单地说明一下。

流分类:通过PMD:Pool Mode Driver、轮询模式驱动、无中断以及数据帧进出APP缓冲区内存的零复制机制,提高数据帧的发送和接收效率为n组匹配和最长前缀匹配(LPM )优化的搜索算法循环队列(Ring Queue单个或多个分组生产者、单个分组消费者的出入队列提供无锁机制,系统开销通过分配内存和创建缓冲区、创建MBUF对象来封装实际数据帧,APP应用于EAL:Environment Abstract Layer、环境抽象(PMD初始化、CPU内核和无DPDK 让我们总结一下DPDK的核心思想:

用户状态模式的PMD驱动器有一个优点,它消除了中断,避免了内核和用户状态的内存复制,减少了系统开销,从而提高了I/O吞吐量能力。 一旦程序崩溃,内核也不会完蛋,会带来更强的HugePage,通过更大的内存页面(例如1G内存页面)将TLB(translationlookasidation ) 通过在Miss对消息传输性能影响较大的核心设备上创建多线程,并将每个线程绑定到独立的物理核心,减少线程调度开销。 另外,各线程对应独立的无锁队列,同样为了降低开销矢量命令、CPU流水线的效率化、内存等待开销的降低,下图简单地展示了DPDK的多队列和多线程机制

DPDK将网卡接收队列分配给某个CPU核心,该队列接收到的消息全部传递给该核心上的DPDK线程。 有两种方法可以将数据包发送到接收队列。

基于接收扩展机制(RSS ) UDP的4组srcIPdstIPsrcPortdstPort的散列流标识符机制(hash flow director mechanism,简称为RSS )分组的某些信息进行精确匹配指定的队列和分配给CPU核心的网络包(帧)可以配置为分配给网卡,DDK网卡驱动程序将其存储在高效的缓冲区中,并在MBUF缓存中创建MBUF对象来执行网络数据包的分析和处理基于MBUF,根据需要访问缓冲区中的实际网络数据包

以上是DPDK的基础知识,关于在APP中如何使用DPDK、以及系统如何针对消息收发进行优化,将在以后的学习和实践中进行记录。

晚安

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。