DPDK 中文编程指南
https://dpdk-docs.readthedocs.io/en/latest/linux_gsg/index.html
https://dpdk-docs.readthedocs.io/en/latest/prog_guide/index.html
编程指南
- 1. 简介
- 1.1. 文档地图
- 1.2. 相关刊物
- 2. 概述
- 2.1. 开发环境
- 2.2. 环境适配层EAL
- 2.3. 核心组件
- 2.3.1. 环形缓冲区管理(librte_ring)
- 2.3.2. 内存池管理(librte_mempool)
- 2.3.3. 网络报文缓冲区管理(librte_mbuf)
- 2.3.4. 定时器管理(librte_timer)
- 2.4. 以太网轮询驱动架构
- 2.5. 报文转发算法支持
- 2.6. 网络协议库(librte_net)
- 3. 环境适配层EAL
- 3.1. Linux环境下的EAL
- 3.1.1. 初始化和运行
- 3.1.2. 多进程支持
- 3.1.3. 内存映射和内存分配
- 3.1.4. Xen Dom0非大页运行支持
- 3.1.5. PCI 访问
- 3.1.6. 逻辑核及共享变量
- 3.1.7. 日志
- 3.1.8. CPU 特性识别
- 3.1.9. 用户空间中断事件
- 3.1.10. 黑名单
- 3.1.11. Misc功能
- 3.2. 内存段和内存区间
- 3.3. 多线程
- 3.3.1. EAL pthread and lcore Affinity
- 3.3.2. 非EAL的线程支持
- 3.3.3. 公共线程API
- 3.3.4. 已知问题
- 3.3.5. cgroup控制
- 3.4. 内存申请
- 3.4.1. Cookies
- 3.4.2. 对齐和NUMA约束
- 3.4.3. 用例
- 3.4.4. 内部实现
- 3.1. Linux环境下的EAL
- 4. Ring 库
- 4.1. FreeBSD* 中 Ring 的实现参考
- 4.2. Linux* 中的无锁环形缓冲区
- 4.3. 附加功能
- 4.3.1. Name
- 4.4. 使用场景
- 4.5. Ring Buffer解析
- 4.5.1. 单生产者入队
- 4.5.2. 单消费者出队
- 4.5.3. 多生产者入队
- 4.5.4. 32-bit取模索引
- 4.6. 参考文档
- 5. Mempool 库
- 5.1. Cookies
- 5.2. Stats
- 5.3. 内存对齐约束
- 5.4. 本地缓存
- 5.5. Mempool 句柄
- 5.6. 用例
- 6. Mbuf 库
- 6.1. Packet Buffer 设计
- 6.2. 存储在Mempool中的Buffer
- 6.3. 构造函数
- 6.4. 申请及释放 mbufs
- 6.5. 操作 mbufs
- 6.6. 元数据信息
- 6.7. 直接及间接 Buffers
- 6.8. 调试
- 6.9. 用例
- 7. 轮询模式驱动
- 7.1. 要求及假设条件
- 7.2. 设计原则
- 7.3. 逻辑核、内存及网卡队列的联系
- 7.4. 设备标识及配置
- 7.4.1. 设备标识
- 7.4.2. 设备配置
- 7.4.3. 即时配置
- 7.4.4. 传输队列配置
- 7.4.5. 释放 Tx 缓存
- 7.4.6. 硬件卸载
- 7.5. PMD API
- 7.5.1. 概要
- 7.5.2. 通用报文表示
- 7.5.3. 以太网设备 API
- 7.5.4. 扩展的统计 API
- 8. 通用流 API (rte_flow)
- 8.1. 概述
- 8.2. 流规则
- 8.2.1. 描述
- 8.2.2. 属性
- 8.2.3. 模式条目
- 8.2.4. 匹配模式
- 8.2.5. Meta item types
- 8.2.6. Data matching item types
- 8.2.7. Actions
- 8.2.8. Action types
- 8.2.9. Negative types
- 8.2.10. Planned types
- 8.3. Rules management
- 8.3.1. Validation
- 8.3.2. Creation
- 8.3.3. Destruction
- 8.3.4. Flush
- 8.3.5. Query
- 8.4. Verbose error reporting
- 8.5. Caveats
- 8.6. PMD interface
- 8.7. Device compatibility
- 8.7.1. Global bit-masks
- 8.7.2. Unsupported layer types
- 8.7.3.
ANY
pattern item - 8.7.4. Unsupported actions
- 8.7.5. Flow rules priority
- 8.8. Future evolutions
- 8.9. API migration
- 8.9.1.
MACVLAN
toETH
→VF
,PF
- 8.9.2.
ETHERTYPE
toETH
→QUEUE
,DROP
- 8.9.3.
FLEXIBLE
toRAW
→QUEUE
- 8.9.4.
SYN
toTCP
→QUEUE
- 8.9.5.
NTUPLE
toIPV4
,TCP
,UDP
→QUEUE
- 8.9.6.
TUNNEL
toETH
,IPV4
,IPV6
,VXLAN
(or other) →QUEUE
- 8.9.7.
FDIR
to most item types →QUEUE
,DROP
,PASSTHRU
- 8.9.8.
HASH
- 8.9.9.
L2_TUNNEL
toVOID
→VXLAN
(or others)
- 8.9.1.
- 9. Cryptography Device Library
- 9.1. Design Principles
- 9.2. Device Management
- 9.2.1. Device Creation
- 9.2.2. Device Identification
- 9.2.3. Device Configuration
- 9.2.4. Configuration of Queue Pairs
- 9.2.5. Logical Cores, Memory and Queues Pair Relationships
- 9.3. Device Features and Capabilities
- 9.3.1. Device Features
- 9.3.2. Device Operation Capabilities
- 9.3.3. Capabilities Discovery
- 9.4. Operation Processing
- 9.4.1. Enqueue / Dequeue Burst APIs
- 9.4.2. Operation Representation
- 9.4.3. Operation Management and Allocation
- 9.5. Symmetric Cryptography Support
- 9.5.1. Session and Session Management
- 9.5.2. Transforms and Transform Chaining
- 9.5.3. Symmetric Operations
- 9.6. Asymmetric Cryptography
- 9.6.1. Crypto Device API
- 10. 链路绑定PMD
- 10.1. 链路绑定模式概述
- 10.2. 实现细节
- 10.2.1. 链路状态改变中断与轮询
- 10.2.2. 要求与限制
- 10.2.3. 配置
- 10.3. 使用链路绑定设备
- 10.3.1. 程序中使用轮询模式驱动
- 10.3.2. 在EAL命令行中使用链路绑定设备
- 11. 定时器库
- 11.1. 实现细节
- 11.2. 用例
- 11.3. 参考
- 12. 哈希库
- 12.1. 哈希API概述
- 12.2. 多进程支持
- 12.3. 实现细节
- 12.4. 哈希表中的条目分发
- 12.5. 用例:流分类
- 12.6. 参考
- 13. Elastic Flow Distributor Library
- 13.1. Introduction
- 13.2. Flow Based Distribution
- 13.2.1. Computation Based Schemes
- 13.2.2. Flow-Table Based Schemes
- 13.2.3. EFD Based Scheme
- 13.3. Example of EFD Library Usage
- 13.4. Library API Overview
- 13.4.1. EFD Table Create
- 13.4.2. EFD Insert and Update
- 13.4.3. EFD Lookup
- 13.4.4. EFD Delete
- 13.5. Library Internals
- 13.5.1. Insert Function Internals
- 13.5.2. Lookup Function Internals
- 13.5.3. Group Rebalancing Function Internals
- 13.6. References
- 14. LPM库
- 14.1. LPM API概述
- 14.2. 实现细节
- 14.2.1. 添加
- 14.2.2. 查询
- 14.2.3. 规则数目的限制
- 14.2.4. 用例:IPv4转发
- 14.2.5. References
- 15. LPM6库
- 15.1. LPM6 API概述
- 15.1.1. 实现细节
- 15.1.2. 添加
- 15.1.3. 查询
- 15.1.4. 规则数目限制
- 15.2. 用例:IPv6转发
- 15.1. LPM6 API概述
- 16. 报文分发库
- 16.1. 分发逻辑核操作
- 16.2. Worker Operation
- 17. 排序器库
- 17.1. 操作
- 17.2. 实现细节
- 17.3. 用例:报文分发
- 18. IP分片及重组库
- 18.1. 报文分片
- 18.2. 报文重组
- 18.2.1. IP分片表
- 18.2.2. 报文重组
- 18.2.3. 调试日志及统计收集
- 19. Librte_pdump库
- 19.1. 操作
- 19.2. 实现细节
- 19.3. 用例:抓包
- 20. 多进程支持
- 20.1. 内存共享
- 20.2. 部署模式
- 20.2.1. 对称/对等进程
- 20.2.2. 非对称/非对等进程
- 20.2.3. 运行多个独立的DPDK应用程序
- 20.2.4. 运行多个独立的DPDK应用程序组
- 20.3. 多进程限制
- 21. 内核网络接口卡接口
- 21.1. DPDK KNI内核模块
- 21.2. KNI创建及删除
- 21.3. DPDK缓冲区流
- 21.4. 用例: Ingress
- 21.5. 用例: Egress
- 21.6. 以太网工具
- 21.7. 链路状态及MTU改变
- 22. DPDK功能的线程安全
- 22.1. 快速路径API
- 22.2. 非性能敏感API
- 22.3. 库初始化
- 22.4. 中断线程
- 23. QoS框架
- 23.1. 支持QoS的数据包水线
- 23.2. 分层调度
- 23.2.1. 概述
- 23.2.2. 调度层次
- 23.2.3. 编程接口
- 23.2.4. 实现
- 23.2.5. Worst Case Scenarios for Performance
- 23.3. Dropper
- 23.3.1. Configuration
- 23.3.2. Enqueue Operation
- 23.3.3. Queue Empty Operation
- 23.3.4. Source Files Location
- 23.3.5. Integration with the DPDK QoS Scheduler
- 23.3.6. Integration with the DPDK QoS Scheduler Sample Application
- 23.3.7. Application Programming Interface (API)
- 23.4. Traffic Metering
- 23.4.1. Functional Overview
- 23.4.2. Implementation Overview
- 24. 电源管理
- 24.1. CPU频率缩放
- 24.2. 通过C-States调节Core负载
- 24.3. 电源管理库API概述
- 24.4. 示例
- 24.5. 参考
- 25. 报文分类及访问控制
- 25.1. 概述
- 25.1.1. 规则定义
- 25.1.2. RT 内存大小限制
- 25.1.3. Classification 方法
- 25.2. API用法
- 25.2.1. 多类别报文分类
- 25.1. 概述
- 26. 报文框架
- 26.1. 设计目标
- 26.2. 概述
- 26.3. 端口库设计
- 26.3.1. 端口类型
- 26.3.2. 端口操作
- 26.4. 表库设计
- 26.4.1. 表类型
- 26.4.2. 表操作接口
- 26.4.3. 哈希表设计
- 26.5. 流水线库设计
- 26.5.1. 端口和表的连接
- 26.5.2. 端口动作
- 26.5.3. 表动作
- 26.6. 多核处理
- 26.6.1. 共享的数据结构
- 26.7. 加速器
- 27. Vhost 库
- 27.1. Vhost API 概述
- 27.2. Vhost-user 实现
- 27.3. 支持Vhost的vSwitch
- 28. Metrics 库
- 28.1. 初始化库
- 28.2. 注册metrics
- 28.3. 更新 metric 值
- 28.4. 查询 metrics
- 28.5. Bit-rate 统计库
- 28.5.1. 初始化
- 28.5.2. 控制采样速率
- 28.6. 延迟统计库
- 28.6.1. 初始化
- 28.6.2. 触发统计值更新
- 28.6.3. 关闭库
- 29. 端口热插拔框架
- 29.1. 概述
- 29.2. 端口热插拔API概述
- 29.3. 引用
- 29.4. 限制
- 30. 源码组织
- 30.1. Makefiles 和 Config
- 30.2. 库
- 30.3. 驱动
- 30.4. 应用程序
- 31. 开发套件构建系统
- 31.1. 编译DPDK二进制文件
- 31.1.1. 建立目录概念
- 31.2. 构建外部应用程序
- 31.3. Makefile 描述
- 31.3.1. DPDK Makefiles 的通用规则
- 31.3.2. Makefile 类型
- 31.3.3. 内部生成的构建工具
- 31.3.4. 构建系统提供的有用变量
- 31.3.5. 只能在Makefile中设置/覆盖的变量
- 31.3.6. 只能在命令行上由用户设置/覆盖的变量
- 31.3.7. 可以在Makefile或命令行中由用户设置/覆盖的变量
- 31.1. 编译DPDK二进制文件
- 32. DPDK 根目录 Makefile 理解
- 32.1. 配置 Targets
- 32.2. 构建 Targets
- 32.3. 安装 Targets
- 32.4. 测试 Targets
- 32.5. 文档 Targets
- 32.6. 其他 Targets
- 32.7. 其他有用的命令行变量
- 32.8. 在需要构建的目录中执行Make
- 32.9. 编译为调试 Target
- 33. 扩展 DPDK
- 33.1. 示例:添加新的库 libfoo
- 33.1.1. 示例:在测试用例中使用新库 libfoo
- 33.1. 示例:添加新的库 libfoo
- 34. 构建你自己的应用程序
- 34.1. 在DPDK中编译一个示例程序
- 34.2. 在DPDK外构建自己的应用程序
- 34.3. 定制 Makefiles
- 34.3.1. 应用程序 Makefile
- 34.3.2. 库 Makefile
- 34.3.3. 定制 Makefile 动作
- 35. 外部应用程序/库的 Makefile
- 35.1. 前提
- 35.2. 构建 Targets
- 35.3. Help Targets
- 35.4. 其他有用的命令行变量
- 35.5. 从其他目录中编译
- 36. 性能优化指南
- 36.1. 介绍
- 37. 编写高效代码
- 37.1. 内存
- 37.1.1. 内存拷贝:不要在数据面程序中使用libc
- 37.1.2. 内存申请
- 37.1.3. 内存区域的并发访问
- 37.1.4. NUMA
- 37.1.5. 跨存储器通道分配
- 37.2. lcore之间的通信
- 37.3. PMD 驱动
- 37.3.1. 低报文延迟
- 37.4. 锁和原子操作
- 37.5. 编码考虑
- 37.5.1. 内联函数
- 37.5.2. 分支预测
- 37.6. 设置目标CPU类型
- 37.1. 内存
- 38. 配置你的应用程序
- 38.1. X86
- 38.2. ARM64
- 38.2.1. 使用 Linux perf
- 38.2.2. 高分辨率的cycle计数器
- 39. 术语
DPDK 中文编程指南相关推荐
- libuv 中文编程指南(零)前言
最近看了一些有关 libuv 的东西,另外复习了一些与同步.异步.阻塞.非阻塞,异步IO(aio)的东西, 算是技术积累吧,等有时间了整理出一个完整的文档出来,希望在今后的编程中用到. 不多说了,本文 ...
- libuv 中文编程指南
最近看了一些有关 libuv 的东西,另外复习了一些与同步.异步.阻塞.非阻塞,异步IO(aio)的东西, 算是技术积累吧,等有时间了整理出一个完整的文档出来,希望在今后的编程中用到. 不多说了,本文 ...
- libuv 中文编程指南(四)网络
网络 libuv 的网络接口与 BSD 套接字接口存在很大的不同, 某些事情在 libuv 下变得更简单了, 并且所有接口都是都是非阻塞的, 但是原则上还是一致的. 另外 libuv 也提供了一些工具 ...
- python界面编程pdf_Python Qt GUI快速编程——PyQt编程指南 中文pdf完整版[99MB]
内容介绍热点排行相关文章下载地址↓ Python Qt GUI快速编程--PyQt编程指南主要讲述如何利用Python和Qt开发GUI应用程序的原理.方法和关键技术.本书共分四个部分:第一部分主要讲述 ...
- POCO库中文编程参考指南(11)如何使用Reactor框架?
1 Reactor 框架概述 POCO 中的 Reactor 框架是基于 Reactor 设计模式进行设计的.其中由 Handler 将某 Socket 产生的事件,发送到指定的对象的方法上,作为回调 ...
- python面向对象编程指南([美stevenflott_Python面向对象编程指南 ([美]StevenFLott洛特) 中文_IT教程网...
资源截图:Python面向对象编程指南 ([美]StevenFLott洛特) 中文 第1部分 用特殊方法实现Python风格的类 . 1 第1章 __init__()方法 5 第2章 与Python无 ...
- Haskell编程指南 | Lynda教程 中文字幕
Haskell编程指南 | Lynda教程 中文字幕 Learning Haskell Programming 课程ID: 604926 时长: 4.2小时 所属类别:Haskell Haskell是 ...
- python面向对象编程实例pdf_Python面向对象编程指南 ([美]StevenFLott洛特) 中文pdf扫描版[52MB]...
Python是一种面向对象.解释型的程序设计语言,它已经被成功应用于科学计算.数据分析以及游戏开发等诸多领域. Python面向对象编程指南深入介绍Python语言的面向对象特性,全书分3个部分共18 ...
- Spark编程指南(Python版)
Spark编程指南 译者说在前面:最近在学习Spark相关的知识,在网上没有找到比较详细的中文教程,只找到了官网的教程.出于自己学习同时也造福其他初学者的目的,把这篇指南翻译成了中文,笔者水平有限,文 ...
- 《javascript面向对象编程指南》读书笔记
<javascript面向对象编程指南>读书笔记 <javascript面向对象编程指南>读书笔记 第一章 面向对象的JavaScript 第二章 基本数据类型与流程控制 变量 ...
最新文章
- 【通俗理解线性代数】 -- 内积与相关
- 奇瑞汽车鸿蒙系统,华为鸿蒙OS系统汽车来了!国产汽车巨头奇瑞全球首发:开启崛起之路...
- 对光照、阴影和反光具有鲁棒性的变化检测算法及实现
- hdmi 屏幕旋转 树莓派_计算机实验室之树莓派:课程 9 屏幕04
- openwrt开发环境搭建
- 【实施工程师】vim命令
- 使用 create-react-app 构建 react应用程序
- 用小程序·云开发打造功能全面的博客小程序丨实战
- class-dump获取iOS私有api
- 博士生是大学的廉价劳动力吗
- 还不懂Redis?看完这个故事就明白了!
- Kewail-邮件短信接口的基础教程
- tcpdump 命令祥解
- 如何使用IIS重写模块将HTTP重定向到HTTPS
- linux抓肉鸡入侵详细教程,Linux XOR.DDoS入侵排查步骤 | 聂扬帆博客
- 停车场管理(C语言版)
- h5 上 删除 交互_iH5高级教程:H5交互进阶,擦一擦效果
- C# 中DataGridView 表头设置
- linux在root安装软件,避免使用root安装软件
- Java文字小游戏 The Matrix SalaryMan 1.0v 解读