目录
1、Release Notes
2、Getting Started Guide for Linux/FreeBSD/Windows
3、Programmer’s Guide
4、API Reference
5、Sample Applications User Guide
6、DPDK Tools User Guides
7、Testpmd Application User Guide
8、Network Interface Controller Drivers
9、其它设备驱动程序
前面的文章《DPDK相关学习资料汇总》已经讲过DPDK相关的学习资料,但是DPDK开源社区很活跃,版本更新迭代很快,所以相对来说,最全最新的资料肯定是dpdk官方文档了。
今天我们来看一下DPDK官方具体提供了哪些文档。
Release Notes是版本发行说明的意思,DPDK每个版本都会有一个版本发布说明,包含以下内容:
通过浏览每个版本的Release Notes,可以快速知道指定版本的新特性以及相较于之前版本的变化,对于DPDK版本选型很有用。
DPDK 各版本Release Notes链接:http://doc.dpdk.org/guides/rel_notes/
Linux/FreeBSD/Windows的入门指南,介绍如何安装和配置DPDK,以及如何运行DPDK的应用。主要针对三个操作系统,分别是Linux、FreeBSD和Windows。
学习DPDK,动手实践很重要,所以先要把DPDK的环境安装起来,可以参考这个入门指南,也可以看我之前的文章《DPDK的源码编译安装》
Getting Started Guide for Linux链接:http://doc.dpdk.org/guides/linux_gsg/
程序员编程指南,适用于需要基于DPDK进行编程的程序员。包含三个部分内容:
DPDK开发中,需要用到什么功能,就看相应的功能说明。
Programmer’s Guide链接:http://doc.dpdk.org/guides/prog_guide/
函数API接口文档,提供关于DPDK函数、数据结构和其他编程构造的详细信息。
相关模块的对外API接口以及参数说明,都统一在这里列出来了。
API Reference链接:http://doc.dpdk.org/api/
示例应用程序用户指南,描述了一组示例应用程序。每一章都描述了一个示例应用程序,它展示了特定的功能,并提供了关于如何编译、运行和使用示例应用程序的说明。
1、dpdk-ethtool:一个类似ethtool的API的实现,并提供了一个控制台环境,允许使用它来查询和更改以太网卡参数
2、dpdk-helloworld:最简单的DPDK应用程序的一个示例。应用程序只是在每个启用的lcore上打印一条“helloworld”消息。
3、dpdk-skeleton: 转发应用程序的一个简单框架示例。演示DPDK转发应用程序的基本组件。更详细的实现,可以看L2和L3转发示例应用程序。
4、dpdk-rxtx_callbacks:RX/TX回调样例应用程序是一个数据包转发应用程序,它演示了在接收和传输的数据包上使用用户定义的回调。应用程序使用回调执行简单的延迟检查,以确定数据包在应用程序中花费的时间。
5、dpdk-flow_classify:演示了使用流分类库API的DPDK转发应用程序。
6、dpdk-flow_filtering: 创建rte流规则的一个简单示例。
7、dpdk-ip_fragmentation:使用IPv4和IPv6分片进行L3转发
8、dpdk-ipv4_multicast: 应用程序执行三层组播进行分组处理的一个简单示例。
9、dpdk-ip_reassembly:应用程序对分片的IPv4和IPv6报文进行三层转发和重组
10、dpdk-l2fwd-keepalive:演示如何检测“失败的”DPDK内核,并将此故障通知给故障管理实体。其目的是确保核心的故障不会导致管理实体无法检测到的故障。
11、dpdk-dma: 使用DMAdev API创建包复制应用程序的示例
12、dpdk-l2fwd-crypto: 带加密的L2转发(l2fwd-crypto)示例应用程序,使用Cryptodev库进行包处理
13、dpdk-l2fwd-jobstats:利用虚拟化环境中的SR-IOV特性的L2层转发程序(包含 job stats library)
14、dpdk-l2fwd: 利用虚拟化环境中的SR-IOV特性的L2层转发程序
15、dpdk-l2fwd-event:演示轮询和事件模式数据包I/O机制的L2层转发程序
16、dpdk-l2fwd-cat:演示通过扩展命令行选项和libpqos库链接来使用缓存分配技术CAT
17、dpdk-l3fwd:演示轮询和事件模式数据包I/O机制的L3转发程序
18、dpdk-l3fwd-graph:使用Graph框架和为Graph框架编写的节点进行L3转发
19、dpdk-l3fwd_power: 使用电源管理算法,通过电源管理库控制英特尔处理器的P-states and C-states进行功率感知报文处理
20、dpdk-link_status_interrupt:演示DPDK应用程序如何捕获和使用网络端口的网络链路状态变化
21、dpdk-server:使用efd库作为流级负载平衡器
22、dpdk-service_cores: 演示DPDK的服务核心功能。服务核心基础设施是DPDK EAL的一部分,并允许任何DPDK组件注册服务
23、dpdk-simple_mp: 演示DPDK的primary和secondary多进程
24、dpdk-qos_meter:演示使用DPDK提供QoS标记和计量
25、dpdk-qos_sched:演示如何使用DPDK提供QoS调度
26、dpdk-timer:演示在DPDK应用程序中如何使用计时器
27、dpdk-packet_ordering:展示了重新排序流的影响。它旨在强调具有不同配置的库的性能
28、dpdk-vmdq_dcb:通过VMDQ和DCB进行L2转发,将进入的流量划分为队列。通过Intel®82599和X710/XL710以太网控制器的VMDQ和DCB功能在硬件上实现流量分割
29、dpdk-vmdq:应用程序使用VMDq进行L2转发,将进入的流量划分为队列。通过Intel®82599和X710/XL710以太网控制器的VMDq功能在硬件上执行流量分割
30、dpdk-vhost:演示数据平面开发工具包(DPDK)与Linux* KVM管理程序的集成
31、dpdk-vhost_blk:实现了一个简单的块设备,用作Qemu vhost-user-blk设备的后端
32、dpdk-vhost_crypto:实现了一个简单的Crypto设备,它用作Qemu vhost-user-crypto设备的后端
33、dpdk-vdpa:通过使用vdpa后端创建vhost-user套接字34、dpdk-ip_pipeline :DPDK pipeline模式处理报文的示例
35、dpdk-test-pipeline:演示单表 pipeline模式处理报文DPDK 的性能
36、dpdk-pipeline:展示了与P4语言一致的软件交换机(SWX)管道的特性37、dpdk-eventdev_pipeline:使用软件PMD使用eventdev API。它展示了应用程序如何配置管道并分配一组工作内核来执行所需的处理。
38、dpdk-distributor :将数据包分发到核心的一个简单示例
39、dpdk-vm_power_manager:展示了DPDK应用程序如何使用仅限VM本地信息(vCPU/lcore等)向主机驻留VM电源管理器指示其处理需求的示例
40、dpdk-ptpclient:它使用DPDK IEEE1588 API与PTP主时钟通信,以同步网卡上的时间,也可以同步Linux系统上的时间
41、dpdk-fips_validation:用于解析和执行NIST加密算法验证程序(CAVP)和自动加密验证协议(ACVP)测试向量的对称加密计算
42、dpdk-ipsec-secgw:使用DPDK加密开发框架的“真实世界”应用程序
43、dpdk-bbdev:对基带工作负载进行数据包处理的一个简单示例
44、dpdk-ntb:展示了如何使用ntb rawdev驱动程序
每一个示例程序都对一个特定的功能进行了代码示例演示,我们自己在开发使用其中一个功能的时候,都可以基于对应的示例程序进行扩展。
Sample Applications User Guide链接:https://doc.dpdk.org/guides/sample_app_ug/index.html
DPDK工具用户指南,详细讲解了DPDK工具的参数和使用方法。包含工具:
1、dpdk-hugepages:设置和查看大页内存
2、dpdk-devbind:绑定和解绑网卡驱动程序
3、dpdk-proc-info:作为DPDK的辅助进程运行,能够检索端口统计信息、重置端口统计信息、打印DPDK内存信息和显示端口调试信息
4、dpdk-pmdinfo: 以JSON格式转储PMDs硬件支持信息
5、dpdk-dumpcap:支持条件过滤的抓包工具,它作为辅助DPDK进程运行,捕获进出DPDK主进程的数据包。dpdk-dumpcap可以以Pcapng报文格式写入文件
6、dpdk-pdump:抓包工具,不支持条件过滤抓包
7、dpdk-test-flow_perf:提供了测试特定rte_flow规则的插入率的能力,通过对网卡施加压力,并计算插入和删除率
8、dpdk-test-security-perf:用于测试rte_security会话的创建/销毁率
9、test-bbdev.py :测量bbdev框架中可用的pmd的性能参数
10、dpdk-test-crypto-perf:测量加密树中可用的pmd的性能参数
11、dpdk-test-compress-perf:测量压缩树中可用pmd的性能参数
12、dpdk-test-eventdev:验证DPDK事件开发设备的功能和测量性能参数
13、dpdk-test-regex:对RegEx pmd进行功能测试和性能测量。
14、dpdk-test-mldev:测试各种mldev用例
15、DPDK Test Suite:一个Python测试框架,其中的测试套件用于测试DPDK的功能和性能
这些工具对于配置或者查询DPDK的配置以及定位问题都比较有用,比如配置和查看大页内存,抓包等等。
DPDK Tools User Guides链接:https://doc.dpdk.org/guides/tools/index.html
Testpmd应用程序用户指南,展示了如何构建和运行testpmd应用程序,以及如何从命令行和运行时环境配置该应用程序。
testpmd应用程序可用于在数据包转发模式下测试DPDK,也可用于访问NIC硬件特性,如Flow Director。它还可以作为如何使用DPDK SDK构建功能更全面的应用程序的示例。由于Testpmd应用涉及的功能参数非常多,所以把Testpmd单独拿出来讲。
Testpmd Application User Guide链接:https://doc.dpdk.org/guides/testpmd_app_ug/index.html
网络接口控制器驱动程序,讲解各种网卡驱动程序的功能特性以及在相应示例程序中的使用方法。比如常见的ixgbe、igb、i40e等驱动。
想了解更多DPDK相关的网络开发技术,请关注我(有问题的朋友加我wx,拉你进群)