一起来看看新版本有哪些新功能和变化吧
· 新功能 ·
增加了Trace Library and Tracepoints
增加了基于trace库的 “common trace format” (CTF)的实现。它允许用户在应用程序/库中增加跟踪点,获取运行时的跟踪/调试信息以进行控制,并获得对快速路径性能影响最小的fast APIs。通常trace 的开销约为20 cycles,用于监测的开销为1 cycle。在EAL, ethdev, cryptodev, eventdev 和 mempool 库中增加了具有重要作用的跟踪点。
为RCU 延迟队列增加了APIs。
增加了用于创建和删除延迟队列的APIs。提供APIs使已删除的资源enqueue,并在稍后回收该资源。这些APIs有助于应用程序更容易使用无锁数据结构。
为rte_ring增加了新的API。
为rte_ring引入了新的同步模式。
为rte_ring引入了新的可选择的MT同步模式:Relaxed Tail Sync (RTS) 模式和Head/Tail Sync (HTS) 模式。选中这些模式后,rte_ring在过度负载的系统上的平均enqueue/dequeue时间有了明显改进。
为rte_ring增加了peek style API。对于RTE_RING_SYNC_ST, RTE_RING_SYNC_MT_HTS 模式下生产者/消费者的ring,可以将enqueue/dequeue操作分为两个阶段(enqueue/dequeue开始和enqueue/dequeue结束)。这能让用户检查ring中目标的同时不必删除它们(又称MT safe peek)。
增加了流生命周期的支持。
增加了对流生命周期的支持,用于监测和报告过期的流,包括:
增加了新操作:
RTE_FLOW_ACTION_TYPE_AGE 用于设置每个流的运行时间和应用流的上下文。
增加了新事件:RTE_ETH_EVENT_FLOW_AGED 用于驱动程序报告存在刚刚过期的流。
增加了新的查询:rte_flow_get_aged_flows 用于从端口获取过期流的上下文。
ethdev:增加一个200Gbps的链路速度数值。
增加一个链路速度为200Gbps的ethdev数值。
更新了Amazon ena驱动程序。
ena PMD作出了以下更新和改进,其中包括:
增加了对大型LLQ(低延迟队列)包头的支持。
增加了Tx drops作为驱动程序新扩展的统计信息。
增加了对加速LLQ模式的支持。
处理Rx路径上长度为0的描述符。
更新了博通bnxt驱动程序。
博通 bnxt驱动程序作出了以下更新和改进,其中包括:
增加了对基于主机的流表管理的支持。
在扩展统计中增加了流计数器。
在扩展统计中增加了PCI功能的统计。
更新了海思hns3驱动程序。
海思 hns3驱动程序作出了以下更新和改进,其中包括:
增加了对TSO的支持。
增加了VF配置混杂模式和全组播模式的功能。
为英特尔 Foxville I225设备增加了新的驱动程序。
为英特尔Foxville I225设备增加了新的igc网卡驱动程序。有关此新驱动程序的更多详细信息,请参见IGC Poll Mode网卡指南。
更新了英特尔i40e驱动程序。
i40e PMD作出了以下更新和改进,其中包括:
支持在ipv4-other,ipv4-udp和ipv4-tcp网络报文中使用Mac地址作为FDIR输入子集的功能。
增加了仅通过源IP地址、源端口、目的IP地址、目的端口进行RSS的功能
增加了在rte flow中配置哈希的功能。
更新了英特尔iavf驱动程序。
英特尔iavf驱动程序作出了以下更新和改进,其中包括:
增加了对generic filter的支持。
增加了具有FDIR功能的更高级的iavf驱动程序。
为VF增加了更高级的RSS配置方法。
更新了英特尔ice驱动程序。
英特尔 ice驱动程序作出了以下更新和改进,其中包括:
增加了对DCF(Device Config Function)功能的支持。
增加了英特尔DCF对 switch filter的支持。
更新了Marvell OCTEON TX2 ethdev驱动程序。
Marvell OCTEON TX2 ethdev驱动程序更新了对流量管理器的支持,其中包括:
使用DWRR和SP进行分层调度。
单速率-两种颜色,双速率-三种颜色。
更新了Mellanox mlx5 驱动程序。
Mellanox mlx5驱动程序作出了以下更新和改进,其中包括:
增加了对IPv4生存时间和IPv6跳数限制进行匹配的支持。
增加了对创建Relaxed Ordering 内存区间的支持。
增加了对配置Hairpin队列数据缓冲区大小的支持。
在多数据包RQ模式下增加了对巨帧(9K MTU)的支持。
删除了流规则缓存,以节省内存并与ethdev API兼容。
优化了流的内存消耗。
增加了对基于硬件计数器的流生命周期的支持。
增加了对包含通配符VLAN项(无VID值)的流模板的支持。
更新了对匹配GTP包头信息的支持,增加了匹配GTP标志位的功能。
在Cryptodev API中增加了Chacha20-Poly1305算法。
在Cryptodev中增加了对Chacha20-Poly1305 AEAD算法的支持。
更新了AESNI MB加密PMD。
增加了对intel-ipsec-mb 0.54版本的支持。
更新了AESNI MB PMD中的AES-256 DOCSIS算法。
增加了对同步加密burst API的支持。
更新了AESNI GCM加密PMD。
增加了对intel-ipsec-mb 0.54版本的支持。
更新了ZUC加密PMD。
增加了对intel-ipsec-mb 0.54版本的支持。
更新了PMD以支持多缓冲区ZUC-EIA3,使用intel-ipsec-mb 0.54版本时,性能有了显著提升。
更新了SNOW3G加密PMD。
增加了对intel-ipsec-mb 0.54版本的支持。
更新了KASUMI加密PMD。
增加了对intel-ipsec-mb 0.54版本的支持。
更新了QuickAssist Technology(QAT)加密PMD。
在GEN2 QAT PMD中增加了混合加密算法。
在具有特定固件版本的GEN2 QAT硬件上运行QAT PMD时,新增混合算法以同时处理加密的摘要哈希密码(生成)和密码哈希(验证)请求。(在DPDK 20.02版本中增加了对GEN3的支持)
QAT PMD增加了对简单的 SHA-1、224、256、384、512算法的支持。
QAT PMD增加了对简单的SHA-1,SHA-224,SHA-256,SHA-384和SHA-512 哈希算法的支持。
QAT PMD增加了对AES-GCM / GMAC J0的支持。
在Intel QuickAssist Technology PMD中增加了对AES-GCM / GMAC J0的支持。用户可以通过在适当的xform中传递长度为零的IV来使用此功能。有关更多信息,请参阅rte_crypto_sym.h文件。
更新了QAT PMD以符合AES-256 DOCSIS规范。
QAT PMD增加了对AES-256 DOCSIS算法的支持。
更新了QuickAssist Technology(QAT)压缩PMD。
当QAT内部缓冲区太小,无法进行Huffman动态压缩操作时,新增一种特殊的缓冲区处理方法。该方法拆分多个较小的动态压缩请求(可以在QAT上执行),然后将其结果合并并复制到输出缓冲区中,而不是陷入到固定的压缩处理。如果有校验的需求,则无法执行此操作-在这种情况下,会返回到固定的压缩处理。
更新了turbo_sw bbdev PMD。
增加了不符合单独mbuf段的大型代码块。
增加了英特尔FPGA_5GNR_FEC bbdev PMD。
为Intel® FPGA PAC(可编程加速卡)N3000增加了新的fpga_5gnr_fec bbdev驱动程序。有关此新驱动程序的更多详细信息,参见Intel(R) FPGA 5GNR FEC Poll Mode Driver BBDEV指南。
更新了DSW事件驱动设备。
DSW PMD作出了以下更新和改进,其中包括:
改进了流迁移机制,实现更快更准确的负载平衡。
改进了在多核系统上的行为。
减少了低负载情况下的延迟。
扩展了DSW迁移和与负载相关的统计信息。
更新了ipsec-secgw示例应用程序。
ipsec-secgw示例应用程序做出了以下更新:
更新了应用程序以增加事件驱动的数据包处理。工作者线程将接收事件,并在处理后将其提交回事件驱动的设备。利用这种基于事件驱动的设备功能可以实现多核扩展和硬件辅助调度。这种事件驱动模式当前仅支持inline IPsec的卸载。
更新了应用程序以支持AES-192-CBC,AES-192-GCM,AES-256-GCM算法的密钥大小。
利用网卡的负载分发功能(Flow Director)为应用程序增加了IPsec inbound方向负载分发的功能。
更新了Telemetry库。
与原始版本相比,更新后的Telemetry得到了显着改进,更易于访问和扩展:
它使DPDK库和应用程序能够提供各自特定的telemetry信息,而不仅限于通过metrics库收集的信息。
Telemetry可在默认情况下启用,不再依赖于外部Jansson库。
简化socket处理,使客户端更容易连接和检索信息。
增加了rte_graph库。
Graph架构将数据处理功能抽象为节点,并将它们连接在一起,以创建复杂的graph来构建可重用/模块化的数据处理功能。graph库提供APIs来支持在graph上进行创建、查找、转储和销毁的基本操作,以及对节点的操作(例如克隆、边缘更新和边缘收缩等)。该API还允许创建统计信息集群,以监控每个graph和每个节点的统计信息。
增加了rte_node库。
增加了rte_node库,该库由rte_graph库使用的节点组成。每个节点根据应用程序配置执行特定的数据包处理功能。
增加了以下节点:
空节点:定义了节点通用结构的skeleton节点。
以太网设备节点:由以太网Rx / Tx节点以及以太网控制APIs组成。
IPv4查找节点:由IPv4提取和LPM查找节点组成。路由表可以由应用程序通过rte_node_ip4_route_add 函数进行配置。
IPv4重写节点:包含IPv4和以太网报文头的重写功能,可以通过rte_node_ip4_rewrite_add 函数进行配置。
数据包丢弃节点:将各自mempool中接受到的数据包释放。
增加了新的l3fwd-graph示例应用程序。
增加了示例应用程序l3fwd-graph。演示了图库和节点库在数据包处理中的用法。除了演示库的用法,此应用程序还可用于模块化的l3fwd-graph 方法和现有l3fwd(无任何节点的静态代码)的性能比较。
更新了testpmd应用程序。
增加了新的cmdline选项--rx-mq-mode ,可用于测试Rx 方向多队列模式下的PMD行为。
增加了对GCC 10的支持。
增加了用GCC 10.1进行链接的功能。
· API 变更 ·
mempool:当没有足够的空间来存储对象时,rte_mempool_populate_iova() 和 rte_mempool_populate_virt() 的API更改为返回0而不是-EINVAL 。
· ABI 变更 ·
保持不变, DPDK 20.02与DPDK 19.11兼容。
· 经过测试的平台 ·
Intel® platforms with Broadcom® NICs combinations
CPU:
Intel® Xeon® Gold 6154 CPU @ 3.00GHz
Intel® Xeon® CPU E5-2650 v2 @ 2.60GHz
Intel® Xeon® CPU E5-2667 v3 @ 3.20GHz
Intel® Xeon® Gold 6142 CPU @ 2.60GHz
Intel® Xeon® Silver 4110 CPU @ 2.10GHz
OS:
Red Hat Enterprise Linux Server release 8.1
Red Hat Enterprise Linux Server release 7.6
Red Hat Enterprise Linux Server release 7.5
Ubuntu 16.04
Centos 8.1
Centos 7.7
upstream kernel:
Linux 5.3
NICs:
Broadcom® NetXtreme-E® Series P225p (2x25G)
Host interface: PCI Express 3.0 x8
Firmware version: 214.4.81.0 and above
Broadcom® NetXtreme-E® Series P425p (4x25G)
Host interface: PCI Express 3.0 x16
Firmware version: 216.4.259.0 and above
Broadcom® NetXtreme-E® Series P2100G (2x100G)
Host interface: PCI Express 3.0 x16
Firmware version: 216.1.259.0 and above
Broadcom® NetXtreme-E® Series P425p (4x25G)
Host interface: PCI Express 4.0 x16
Firmware version: 216.1.259.0 and above
Broadcom® NetXtreme-E® Series P2100G (2x100G)
Host interface: PCI Express 4.0 x16
Firmware version: 216.1.259.0 and above
Intel® platforms with Intel® NICs combinations
CPU:
Intel® Atom™ CPU C3758 @ 2.20GHz
Intel® Atom™ CPU C3858 @ 2.00GHz
Intel® Atom™ CPU C3958 @ 2.00GHz
Intel® Xeon® CPU D-1541 @ 2.10GHz
Intel® Xeon® CPU D-1553N @ 2.30GHz
Intel® Xeon® CPU E5-2680 0 @ 2.70GHz
Intel® Xeon® CPU E5-2680 v2 @ 2.80GHz
Intel® Xeon® CPU E5-2699 v3 @ 2.30GHz
Intel® Xeon® CPU E5-2699 v4 @ 2.20GHz
Intel® Xeon® Gold 5218N CPU @ 2.30GHz
Intel® Xeon® Gold 6139 CPU @ 2.30GHz
Intel® Xeon® Gold 6252N CPU @ 2.30GHz
Intel® Xeon® Platinum 8180 CPU @ 2.50GHz
Intel® Xeon® Platinum 8280M CPU @ 2.70GHz
OS:
CentOS 7.7
CentOS 8.0
Fedora 32
FreeBSD 12.1
OpenWRT 19.07
Red Hat Enterprise Linux Server release 8.0
Red Hat Enterprise Linux Server release 7.7
Suse15 SP1
Ubuntu 16.04
Ubuntu 18.04
Ubuntu 20.04
NICs:
Intel® 82599ES 10 Gigabit Ethernet Controller
Firmware version: 0x61bf0001
Device id (pf/vf): 8086:10fb / 8086:10ed
Driver version: 5.6.5 (ixgbe)
Intel® Corporation Ethernet Connection X552/X557-AT 10GBASE-T
Firmware version: 0x800003e7
Device id (pf/vf): 8086:15ad / 8086:15a8
Driver version: 5.1.0-k (ixgbe)
Intel® Corporation Ethernet Controller 10G X550T
Firmware version: 0x80000482
Device id (pf): 8086:1563
Driver version: 5.6.5 (ixgbe)
Intel® Ethernet Converged Network Adapter X710-DA4 (4x10G)
Firmware version: 7.20 0x800079e8 1.2585.0
Device id (pf/vf): 8086:1572 / 8086:154c
Driver version: 2.11.29 (i40e)
Intel® Corporation Ethernet Connection X722 for 10GbE SFP+ (4x10G)
Firmware version: 4.11 0x80001def 1.1999.0
Device id (pf/vf): 8086:37d0 / 8086:37cd
Driver version: 2.11.29 (i40e)
Intel® Corporation Ethernet Connection X722 for 10GBASE-T (2x10G)
Firmware version: 4.10 0x80001a7a
Device id (pf/vf): 8086:37d2 / 8086:37cd
Driver version: 2.11.29 (i40e)
Intel® Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
Firmware version: 7.30 0x800080a2 1.2658.0
Device id (pf/vf): 8086:158b / 8086:154c
Driver version: 2.11.27_rc13 (i40e)
Intel® Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
Firmware version: 7.30 0x800080ab 1.2658.0
Device id (pf/vf): 8086:1583 / 8086:154c
Driver version: 2.11.27_rc13 (i40e)
Intel® Corporation I350 Gigabit Network Connection
Firmware version: 1.63, 0x80000cbc
Device id (pf/vf): 8086:1521 / 8086:1520
Driver version: 5.4.0-k (igb)
Intel® Corporation I210 Gigabit Network Connection
Firmware version: 3.25, 0x800006eb
Device id (pf): 8086:1533
Driver version: 5.6.5(igb)
Intel® Ethernet Controller 10-Gigabit X540-AT2
Firmware version: 0x800005f9
Device id (pf): 8086:1528
Driver version: 5.1.0-k(ixgbe)
Intel® Ethernet Converged Network Adapter X710-T2L
Firmware version: 7.30 0x80008061 1.2585.0
Device id (pf): 8086:15ff
Driver version: 2.11.27_rc13(i40e)
Intel® platforms with Mellanox® NICs combinations
CPU:
Intel® Xeon® Gold 6154 CPU @ 3.00GHz
Intel® Xeon® CPU E5-2697A v4 @ 2.60GHz
Intel® Xeon® CPU E5-2697 v3 @ 2.60GHz
Intel® Xeon® CPU E5-2680 v2 @ 2.80GHz
Intel® Xeon® CPU E5-2650 v4 @ 2.20GHz
Intel® Xeon® CPU E5-2640 @ 2.50GHz
Intel® Xeon® CPU E5-2620 v4 @ 2.10GHz
OS:
Red Hat Enterprise Linux Server release 7.5 (Maipo)
Red Hat Enterprise Linux Server release 7.4 (Maipo)
Red Hat Enterprise Linux Server release 7.3 (Maipo)
Red Hat Enterprise Linux Server release 7.2 (Maipo)
Ubuntu 18.04
Ubuntu 16.04
OFED:
MLNX_OFED 4.7-3.2.9.0
MLNX_OFED 5.0-2.1.8.0 and above
upstream kernel:
Linux 5.7.0-rc5 and above
rdma-core:
rdma-core-29.0-1 and above
NICs:
Mellanox® ConnectX®-3 Pro 40G MCX354A-FCC_Ax (2x40G)
Host interface: PCI Express 3.0 x8
Device ID: 15b3:1007
Firmware version: 2.42.5000
Mellanox® ConnectX®-3 Pro 40G MCX354A-FCCT (2x40G)
Host interface: PCI Express 3.0 x8
Device ID: 15b3:1007
Firmware version: 2.42.5000
Mellanox® ConnectX®-4 Lx 25G MCX4121A-ACAT (2x25G)
Host interface: PCI Express 3.0 x8
Device ID: 15b3:1015
Firmware version: 14.27.2008 and above
Mellanox® ConnectX®-4 Lx 50G MCX4131A-GCAT (1x50G)
Host interface: PCI Express 3.0 x8
Device ID: 15b3:1015
Firmware version: 14.27.2008 and above
Mellanox® ConnectX®-5 100G MCX516A-CCAT (2x100G)
Host interface: PCI Express 3.0 x16
Device ID: 15b3:1017
Firmware version: 16.27.2008 and above
Mellanox® ConnectX®-5 100G MCX556A-ECAT (2x100G)
Host interface: PCI Express 3.0 x16
Device ID: 15b3:1017
Firmware version: 16.27.2008 and above
Mellanox® ConnectX®-5 100G MCX556A-EDAT (2x100G)
Host interface: PCI Express 3.0 x16
Device ID: 15b3:1017
Firmware version: 16.27.2008 and above
Mellanox® ConnectX®-5 Ex EN 100G MCX516A-CDAT (2x100G)
Host interface: PCI Express 4.0 x16
Device ID: 15b3:1019
Firmware version: 16.27.2008 and above
Mellanox® ConnectX®-6 Dx EN 100G MCX623106AN-CDAT (2x100G)
Host interface: PCI Express 4.0 x16
Device ID: 15b3:101d
Firmware version: 22.27.2008 and above
IBM Power 9 platforms with Mellanox® NICs combinations
CPU:
POWER9 2.2 (pvr 004e 1202) 2300MHz
OS:
Red Hat Enterprise Linux Server release 7.6
NICs:
Mellanox® ConnectX®-5 100G MCX556A-ECAT (2x100G)
Host interface: PCI Express 4.0 x16
Device ID: 15b3:1017
Firmware version: 16.27.2008
Mellanox® ConnectX®-6 Dx 100G MCX623106AN-CDAT (2x100G)
Host interface: PCI Express 4.0 x16
Device ID: 15b3:101d
Firmware version: 22.27.2008
OFED:
MLNX_OFED 5.0-2.1.8.0
ARMv8 SoC combinations from Marvell (with integrated NICs)
SoC:
CN83xx, CN96xx, CN93xx
OS (Based on Marvell OCTEON TX SDK-10.3.2.0-PR12):
Arch Linux
Buildroot 2018.11
Ubuntu 16.04.1 LTS
Ubuntu 16.10
Ubuntu 18.04.1
Ubuntu 19.04
转载须知
DPDK与SPDK开源社区公众号文章转载声明
推荐阅读
AF_XDP PMD in DPDK
DPDK Release 20.02
我知道你在看哟