DPDK简介

DPDK(Data Plane Development Kit)数据平面开发工具包,是一个开源软件项目。DPDK通过维护一系列能够加速多核CPU数据包处理的库,提供数据处理框架。DPDK通过绕过内核进行数据处理,表现出了比内核中断处理更高的效率。

DPDK项目架构

  • EAL

    EAL(Environment Abstraction Layer),EAL层负责访问低级资源包括硬件和内存空间。EAL屏蔽了内核具体细节,提供一个通用的接口访问库和操作系统。

  • Memory Management

    内存管理包括巨页支持、内存池、缓冲区管理。

  • Poll Mode Drivers

    为各种网络接口提供优化驱动,绕过内核网络栈减少延迟增加吞吐量。

  • Ring Buffers

    利用高效的队列机制提供高速进程间通信。

  • API for Packet Processing

    提供一系列包操纵库和函数的集合包括头解析,包分类和包转发。

  • Crypto and Security

    提供加密图像操作和安全通信的库和驱动

  • Eventdev and Timers

    提供事件驱动和时间管理功能

    从这幅图我们可以看出,其实DPDK作用是截获网卡,此时内核的网络模块会无法发现截获的网卡,从而绕过内核网络处理,利用用户协议栈进行解析,解析完毕之后直接通过KNI模块发给POSIX API进一步处理。

DPDK静态库

  • librte_eal

    提供访问硬件资源如内存、定时器和日志的基础API。

  • librte_mempool

    提供高效包处理内存池管理库。

  • librte_ring

    提供实现无锁FIFO先进先出队列以及DPDK组件间的高速通信相关的库。

  • librte_mbuf

    提供包缓冲区处理包括接收和传输相关的库。

  • librte_ethdev

    提供配置和查询以太网设备API包括接收和发送包。

  • librte_net

    提供网络协议处理相关的库。

  • librte_ip_frag

    提供IP分片和重组相关的库,支持IPV4、IPV6。

  • librte_kni

    提供DPDK应用和Linux内核网络栈间的通信,主要用于已有linux网络服务交互和调试。

DPDK简介的更多相关文章

  1. DPDK应用示例指南简介(汇总)

    DPDK应用示例指南简介 <DPDK示例>系列文章主要是学习.记录.翻译DPDK官方示例文档.为了更好地理解和学习DPDK, 特通过对源码中的经典示例进行整理,供大家学习.交流和讨论. A ...

  2. DPDK 网卡RSS(receive side scaling)简介

    网卡RSS(receive side scaling)简介 RSS是一种网卡驱动技术,能让多核系统中跨多个处理器的网络收包处理能力高效能分配.注意:由于同一个核的处理器超线程共享同一个执行引擎,这个效 ...

  3. dpdk中文文档

    Linux平台上DPDK入门指南 1. 简介 1.1. 文档地图 2. 系统要求 2.1. X86 上预先设置 BIOS 2.2. 编译DPDK 2.3. 运行DPDK应用程序 3. 使用源码编译DP ...

  4. DPDK flow_classify 源码阅读

    代码部分 /* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2017 Intel Corporation */ #include < ...

  5. dpdk中log的使用方法

    1 log简介    dpdk中通过log系统记录相关的日志信息,每一条日志除日志内容外,还有两个附加信息,log级别和log类型.开发人员可根据级别和类型对日志信息进行过滤,只记录必要的日志.1.1 ...

  6. Linux平台上DPDK入门指南

    1. 简介 本文档包含DPDK软件安装和配置的相关说明.旨在帮助用户快速启动和运行软件.文档主要描述了在Linux环境下编译和 运行DPDK应用程序,但是文档并不深入DPDK的具体实现细节. 1.1. ...

  7. tsnr--基于vpp+dpdk的高性能防火墙

    tsnr--基于vpp+dpdk的高性能防火墙 2019年01月31日 12:06:00 网络安全研发随想 阅读数:508   版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...

  8. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  9. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  10. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

随机推荐

  1. 【论文阅读】自动驾驶光流任务 DeFlow: Decoder of Scene Flow Network in Autonomous Driving

    再一次轮到讲自己的paper!耶,宣传一下自己的工作,顺便完成中文博客的解读 方便大家讨论. Title Picture Reference and pictures paper: https://a ...

  2. 超大容量 | 瑞芯微RK3588J工业核心板新增16GB DDR + 128GB eMMC配置!

    作为瑞芯微的金牌合作伙伴,创龙科技在2023年9月即推出搭载瑞芯微旗舰级处理器RK3588J的全国产工业核心板--SOM-TL3588. SOM-TL3588工业核心板是基于瑞芯微RK3588J/RK ...

  3. 【韦东山】嵌入式全系统:单片机-linux-Android对硬件操作的不同侧重点

    我是韦东山,一直从事嵌入式Linux培训,最近打算连载一系列文章. 正在录制全新的嵌入式Linux视频,使用新路线,不再从裸机/uboot开始,效率更高. 对应文档也会写成书<<嵌入式Li ...

  4. 在SelfHost项目中获取客户端IP地址

    在SelfHost项目中,获取客户端的IP地址比OwinSelfHost项目要复杂一些,可以通过以下方法获得: base.Request.Properties["System.Service ...

  5. SpringBoot定义异步任务类需要获取结果

    注意点: 要把异步任务封装到类里面,不能直接写到Controller 增加Future<String>返回结果AsyncResult<String>("task执行完 ...

  6. CF-957(D-E)

    CF-957 赛时A去写全排列--前三题我的写法都挺丑的,后面改进了再更-- Problem - D - Codeforces 虽然是很简单很经典的线性dp,但也是我第一次自己把这种题写出来ヾ(≧▽≦ ...

  7. 【原创软件】第2期:CAD文字快速批量替换工具CFR(CAD_FastReplace_V4)

    01 背景 由于工作需要,开发了一套CAD文字快速批量替换软件CFR.主要目的是:实现dwg文件一次性完成单对/多对词组快速批量替换. 02 主要功能特色 (1)无需打开CAD,快速实现文字批量替换. ...

  8. 奇思妙想,动手 DIY 你的浏览器主页

    实战开发和上线一个极客范儿的浏览器主页,原来如此简单! 大家好我是鱼皮,前段时间上线了一个程序员必备的浏览器主页,得到了很多同学的好评. 地址:https://home.code-nav.cn/ 其实 ...

  9. Session的默认保存路径

    在php.ini里的配置session.save_path是注释掉的,那么Seesion保存的路径在不同类型操作系统保存在什么位置? Linux:/tmp 或 /var/lib/php/session ...

  10. python selenium 判断元素是否存在,实现:找到元素,执行对应的代码;找不到元素,继续执行其他代码

    selenium因为找不到元素会抛出异常,导致执行结束 可以考虑使用driver.find_elements(),找不到元素时就会返回空列表,使用if-else语句,判断列表是否为空,非空,则正常找到 ...