文章转载自DPDK与SPDK开源社区公众号
新功能
添加了非 EAL 线程注册 API
添加了新的API,将非EAL线程注册为lcores。应用程序使用它之后,DPDK就能识别其线程,性能方面不会再受到以前非EAL的限制。
更新了rte_*mb APIs,以使用ARMv8的DMB指令
ARMv8内存模型已得到增强,需要其他多拷贝原子性。这样就可以用DMB指令代替DSB来实现IO屏障。用于ARMv8平台的rte_ * mb API已更改为使用DMB指令。
在mempool ring驱动程序中添加了对RTS和HTS模式的支持
添加了选择新ring同步模式的功能:通过mempool ops API实现 relaxed tail sync (ring_mt_rts) 和head/tail sync (ring_mt_hts)
添加了对 vfio-pci 新 VF token接口的支持
从Linux 5.7开始,vfio-pci支持绑定SR-IOV PF和被创建的VF,它用共享的VF token(UUID)来表示PF和VF之间的协作。DPDK PCI驱动程序已更新,可以通过附加VF token参数来访问PF和VF设备。
添加了 RegEx 库,这是一个通用的 RegEx 服务库。
添加了RegEx库,该库提供了一个API,用于将正则表达式搜索操作卸载到硬件或软件加速器设备。
添加了Mellanox RegEx PMD,可以卸载RegEx搜索。
添加了vhost异步数据路径API
添加了4个新的API以启用vhost异步数据路径,其中包括:
- 异步设备通道注册/注销API
- 异步数据包入队/完成API(仅在split ring中实现)
添加了vDPA设备API来查询virtio队列统计信息。
添加了新的vDPA API,以查询virtio队列统计信息,获取其名称并进行重置。
更新了Mellanox mlx5 vDPA驱动程序
更新的Mellanox mlx5 vDPA驱动程序具有以下新功能,包括:
- 添加了对virtio队列统计信息的支持。
- 添加了对MTU更新的支持。
在rte_flow中添加了eCPRI协议支持。
添加了ECPRI项以支持5G网络的eCPRI数据包卸载。
引入了基于时间戳的发送数据包调度
添加了新的mbuf动态字段和标志,提供可以同步数据包传输的时间戳。添加了设备Tx卸载标志,表示PMD支持发送调度。
更新了PCAP驱动程序
PCAP驱动程序作出了以下更新和改进,其中包括:
- 支持软件 Tx 纳秒级的时间戳精度
更新了博通bnxt驱动程序
博通 bnxt驱动程序作出了以下更新和改进,其中包括:
- 添加了对VF representors的支持。
- 添加了对多种设备的支持。
- 添加了对新资源管理器API的支持。
- 添加了对VXLAN encap/decap的支持。
- 添加了对COUNT操作的rte_flow_query的支持。
- 添加了对rx_burst_mode_get和tx_burst_mode_get的支持。
- 添加了对ARM CPU的矢量模式支持。
- 添加了对VLAN推送和弹出操作的支持。
- 添加了对NAT操作项的支持。
- 添加了TruFlow哈希API,以实现跨TruFlow核心功能的常见哈希使用。
更新了Cisco enic 驱动程序
添加了对VLAN推送和弹出流操作的支持。
更新了海思 hns3 驱动程序
- 添加了对200G 速率的支持。
- 添加了对铜介质类型的支持。
- 添加了保持CRC的支持。
- 添加了对LRO的支持。
- 添加了通过PF驱动程序设置VF PVID的功能。
更新了英特尔ice驱动程序
英特尔ice驱动程序作出了以下更新和改进,其中包括:
- 添加了对DCF数据路径配置的支持。
- 添加了用于switch filter的更多PPPoE数据包类型。
- 添加了对IPv6 32位、48位和64位前缀的RSS支持。
- 添加了对GTPU,L2TP,ESP,AH,PFCP和PPPoE的RSS支持。
- 添加了GTPU外层IPv4和IPv6对FDIR filter的支持。
更新了英特尔iavf驱动程序
Iavf PMD作出了以下更新和改进,其中包括:
- 添加了GTPU外层IPv4和IPv6对FDIR filter的支持。
- 添加了对GTPU的IPv6 RSS支持。
更新了英特尔i40e驱动程序
i40e PMD作出了以下更新和改进,其中包括:
- 支持仅具有SRC端口或DST端口的IPv4/6_TCP/UDP/SCTP的cloud filter
- 在私有API中重新实现了get_fdir_info 和get_fdir_stat
- 在私有API中重新实现了set_gre_key_len
- 添加了对流查询RSS的支持。
更新了英特尔ixgbe驱动程序
英特尔ixgbe驱动程序作出了以下更新和改进,其中包括:
- 在私有API中重新实现了get_fdir_info 和get_fdir_stat
更新了Marvell octeontx2 ethdev PMD
Marvell octeontx2驱动程序更新了对cn98xx的支持。
更新了Mellanox mlx5网络驱动程序和公共层。
Mellanox mlx5驱动程序作出了以下更新和改进,其中包括:
- 添加了mlx5 PCI层,可以在多个PMD之间共享PCI设备。
- 添加了对eCPRI协议卸载的支持。
- 添加了devargs选项 reclaim_mem_mode, sys_mem_en, lacp_by_user 和 decap_en
更新了NXP dpaa ethdev PMD
NXP dpaa ethdev作出了以下更新和改进,其中包括:
- 添加了对链接状态和中断的支持。
- 添加了支持使用非 EAL pthread 使用数据路径 的API。
更新了NXP dpaa2 ethdev PMD
NXP dpaa2 ethdev作出了以下更新和改进,其中包括:
- 添加了使用非 EAL pthread 的数据路径 API 的支持。
- 添加了对动态流管理的支持。
在rte_security中添加了DOCSIS 协议。
在rte_security API中添加了支持对于DOCSIS协议的组合加密和CRC操作。
更新了AESNI MB加密PMD。
在rte_security API,添加了对DOCSIS的Lookaside协议卸载的支持。
更新了QuickAssist Technology(QAT)加密PMD。
- 通过 rte_security API,在QAT 加密PMD中添加了对DOCSIS的Lookaside协议卸载的支持。
- 在QAT 加密 PMD中添加了Chacha20-Poly1305 AEAD 算法。
- 改进了QAT加密和压缩PMD中的多进程处理。
- 添加了对Intel GEN2 QuickAssist设备200xx的支持(PF设备ID为0x18ee,VF设备ID为0x18ef)。
更新了OCTEON TX2 加密PMD
- 在OCTEON TX2加密PMD中,添加了Chacha20-Poly1305 AEAD算法支持。
- 更新了OCTEON TX2加密PMD,以支持IPsec的rte_security 后备协议卸载。
添加了对BPF_ABS / BPF_IND加载指令的支持。
添加了对两个BPF非通用指令的支持:(BPF_ABS | <size> | BPF_LD) 和 (BPF_IND | <size> | BPF_LD) 。它们可以用于安全地访问数据包数据。目前,仅限在X86中实现这些指令的JIT支持。
添加了新的testpmd转发模式。
在testpmd中添加了新的5tswap转发模式。5tswap将第2、3、4层中的源和目标交换。L3中支持ipv4和ipv6,L4支持UDP和TCP。
添加了流量性能测试应用程序。
添加了新的应用程序以测试rte_flow 性能,包括:
- 测量rte_flow 插入率。
- 测量rte_flow 删除率。
- 转储rte_flow 内存消耗。
- 测量每秒转发的数据包。
在l2fwd示例中添加了–portmap命令行参数。
添加了新的命令行选项 --portmap=&34; , 以传递转发端口详细信息。有关此参数用法的更多详细信息,参见L2 Forwarding Sample Application (in Real and Virtualized Environments)
更新了ipsec-secgw示例应用程序。
添加了基于rte_flow 的规则,该规则允许硬件解析并引导入口数据包到特定的NIC队列。有关更多详细信息,参见 IPsec Security Gateway Sample Application。
删除的项目
删除了基于RTE_KDRV_NONE 的PCI设备驱动探测。
API变更
将rte_page_sizes 枚举替换为RTE_PGSIZE_xxx 定义。
vhost: rte_vhost_host_notifier_ctrl 的 API 更改为每个队列而不是每个设备,参数列表中增加了一个 qid 参数。
ABI变更
ABI保持不变,与DPDK 19.11兼容。
· 已知问题 ·
mlx5 PMD在带有OFED 5.1-0.6.6.0的Power 9上不起作用
考虑使用较新的OFED版本,或者以前的OFED 5.0-2.1.8.0,或者上游rdma-core库v29及更高版本。
经过测试的平台
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
- CentOS 8.2
- Fedora 32
- FreeBSD 12.1
- OpenWRT 19.07
- Red Hat Enterprise Linux Server release 8.2
- 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.7.1 (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.7.1 (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.12.6 (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.12.6 (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.12.6 (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.12.6 (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.12.6 (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.4.0-k (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.12.6(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-2670 0 @ 2.60GHz
- Intel® Xeon® CPU E5-2650 v4 @ 2.20GHz
- Intel® Xeon® CPU E5-2640 @ 2.50GHz
- Intel® Xeon® CPU E5-2650 0 @ 2.00GHz
- Intel® Xeon® CPU E5-2620 v4 @ 2.10GHz
OS:
- Red Hat Enterprise Linux release 8.2 (Ootpa)
- Red Hat Enterprise Linux Server release 7.8 (Maipo)
- Red Hat Enterprise Linux Server release 7.6 (Maipo)
- 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 20.04
- Ubuntu 18.04
- Ubuntu 16.04
- SUSE Enterprise Linux 15 SP2
- SUSE Enterprise Linux 12 SP4
OFED:
- MLNX_OFED 5.0-2.1.8.0
- MLNX_OFED 5.1-0.6.6.0 and above
upstream kernel:
- Linux 5.8.0-rc6 and above
rdma-core:
- rdma-core-30.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.28.1002 and above
- Mellanox® ConnectX®-4 Lx 50G MCX4131A-GCAT (1x50G)
- Host interface: PCI Express 3.0 x8
- Device ID: 15b3:1015
- Firmware version: 14.28.1002 and above
- Mellanox® ConnectX®-5 100G MCX516A-CCAT (2x100G)
- Host interface: PCI Express 3.0 x16
- Device ID: 15b3:1017
- Firmware version: 16.28.1002 and above
- Mellanox® ConnectX®-5 100G MCX556A-ECAT (2x100G)
- Host interface: PCI Express 3.0 x16
- Device ID: 15b3:1017
- Firmware version: 16.28.1002 and above
- Mellanox® ConnectX®-5 100G MCX556A-EDAT (2x100G)
- Host interface: PCI Express 3.0 x16
- Device ID: 15b3:1017
- Firmware version: 16.28.1002 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.28.1002 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.28.1002 and above
Mellanox® BlueField® SmartNIC
o Mellanox® BlueField® 2 SmartNIC MT41686 - MBF2H332A-AEEOT (2x25G)
- Host interface: PCI Express 3.0 x16
- Device ID: 15b3:a2d2
- Firmware version: 24.28.1002
o Embedded software:
- CentOS Linux release 7.6.1810 (AltArch)
- MLNX_OFED 5.1-0.6.2
- DPDK application running on Arm cores
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.28.1002
- Mellanox® ConnectX®-6 Dx 100G MCX623106AN-CDAT (2x100G)
- Host interface: PCI Express 4.0 x16
- Device ID: 15b3:101d
- Firmware version: 22.28.1002
OFED:
- MLNX_OFED 5.0-2.1.8.0
Intel® platforms with Broadcom® NICs combinations
CPU:
- Intel® Xeon® Gold 6154 CPU @ 3.00GHz
- Intel® Xeon® CPU E5-2667 v3 @ 3.20GHz
- Intel® Xeon® CPU E5-2650 v2 @ 2.60GHz
- Intel® Xeon® Gold 6142 CPU @ 2.60GHz
- ntel® 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.4
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
Broadcom® NetXtreme-S® Series SmartNIC
o Broadcom® NetXtreme-S® Series PS225-H16 SmartNIC (2x25G)
- Host interface: PCI Express 3.0 x8
- Firmware version: 217.0.59.0
o Embedded software:
- Broadcom Yocto Linux
- Kernel version: 4.14.174
- DPDK application running on 8 Arm Cortex-A72 cores