一起来看看DPDK 21.02有哪些新功能和变化吧
温馨提示:英文函数名较长,为了获得更佳的阅读体验,手机上建议横屏阅读~
Note:
添加了在Linux或FreeBSD上构建DPDK的依赖:需要Python模块pyelftools(0.22版或更高版本),通常需要使用python3-pyelftools这个包。
如果没有可用的发布包,可以用以下方法安装:
pip3 install pyelftools
新功能
为 PMD 电源管理添加了新的 ethdev API。
添加了 rte_eth_get_monitor_addr(),与rte_power_monitor() 配合使用,以实现 PMD 的自动电源管理。
添加了以太网PMD电源管理helper API。
添加了新的helper API rte_power_ethdev_pmgmt_queue_enable(),让用户更容易使用以太网PMD电源管理。最初支持三种电源管理方案。
基于UMWAIT指令节省功耗(仅限x86)
基于rte_pause() (通用)或TPAUSE指令节省功耗(仅限x86)
通过librte_power 库进行频率缩放来节省功耗
在 rte_flow 中添加了 GENEVE TLV 选项。
添加了 GENEVE TLV 选项对匹配和原始报文封装/解封装的支持。
在流API中添加了对修改字段操作的支持。
为rte_flow添加了对“修改”操作的支持RTE_FLOW_ACTION_TYPE_MODIFY_FIELD,便于对任意标头字段(以及标记、元数据或标记值)执行各种操作。支持的操作有:用另一个字段的内容覆盖一个字段,用立即数进行加减。
更新了Broadcom bnxt驱动程序。
对Broadcom bnxt驱动程序进行了修复和改进,其中包括:
添加了对Stingray2设备的支持。
更新了Cisco enic驱动程序。
添加了64B完成队列条目(CQE)的支持。
更新了Hisilicon hns3驱动程序。
添加了对流量管理的支持。
更新了Intel i40e驱动程序。
在Windows上添加了对Intel i40e驱动的支持。
更新了Intel ice驱动程序。
Intel ice驱动程序作出了以下更新和改进,其中包括:
添加了对Double VLAN的支持,用于DCF switch QinQ过滤。
添加了对DCF中eCPRI隧道UDP动态端口分配的支持。
更新了Intel iavf驱动程序。
iavf PMD作出了以下更新和改进,其中包括:
添加了对eCPRI流的FDIR / RSS数据包转向的支持。
添加了对无输入集FDIR TCP / UDP模式的支持。
更新了Mellanox mlx5驱动程序。
Mellanox mlx5驱动程序作出了以下更新和改进,其中包括:
在Windows上加入了基本支持。
添加了 GTP PDU session container匹配和原始报文封装/解封装。
在示例子操作列表中添加了对RSS操作的支持。
在同一流中添加了对E-Switch镜像和跳转动作的支持。
添加了在 E-Switch 上根据镜像行为按正确顺序进行修改操作的支持。
对于大于 0 的入口或出口流组以及任何传输流组,将流优先级的数量扩大到 21844 (0 - 21843)。
添加了对Tx mbuf快速自由卸载的支持。
添加了对流修改字段操作的支持。
更新了 Pensando ionic 驱动程序。
Pensando ionic驱动程序作出了以下更新和改进,其中包括:
修复了与链路自动协商有关的错误。
修复了与端口启动/停止和队列启动/停止有关的错误。
添加了对探测支持的队列版本的支持。请注意,1.0之前的旧版本固件将不能继续用于PMD。
删除了未使用的代码。
减少了设备启动时间。
更新了Wangxun txgbe驱动程序。
Wangxun txgbe驱动程序作出了以下更新和改进,其中包括:
添加对通用流API的支持。
添加对流量管理器的支持。
添加对IPsec的支持。
更新了GSO支持。
添加了VXLAN IPv4 GSO对内层UDP / IPv4报文的支持。
为cryptodev库添加了enqueue 和 dequeue回调API。
Cryptodev库已通过enqueue 和 dequeue回调API进行了增强,使应用程序每次enqueue /dequeue操作都可以增加/删除用户回调。
更新了OCTEON TX2加密PMD。
更新了 OCTEON TX2 加密 PMD lookaside 协议的卸载,用于 ESN 和反重放IPsec。
更新了带有CN98xx支持的OCTEON TX2加密PMD。
在OCTEON TX2加密PMD lookaside协议卸载中,为IPsec添加了对aes-cbc sha1-hmac密码组合的支持。
在OCTEON TX2加密PMD lookaside协议卸载中,为IPsec添加了对aes-cbc sha256-128-hmac密码组合的支持。
添加了mlx5压缩PMD。
为Bluefield 2适配器添加了新的压缩 PMD驱动程序。
有关更多详细信息,请参见MLX5压缩驱动程序。
添加了python脚本,以运行加密性能测试并绘制结果。
添加了新的Python脚本,以自动化运行加密性能测试,并将图表结果输出到PDF文件。有关更多详细信息,请参见dpdk-test-crypto-perf应用程序指南。
在pmdinfogen中添加了对Windows的支持。
PMD信息字符串已添加到Windows以及其他操作系统中,但目前还不支持从 Windows DLL 中提取它们。使用Python重写了build-time工具pmdinfogen,因此对libelf的依赖已经被pyelftools替换。
添加了对头文件进行链接实时检查的支持。
添加了新的构建选项check_includes。启用该选项后,它将对DPDK公共头文件执行链接实时检查,以确保没有缺少依赖的头文件。此功能默认情况下处于禁用状态,主要供DPDK SDK开发者使用,目前已集成到链接脚本和自动CI中。
删除的项目
•内部头文件 rte_ethdev_driver.h, rte_ethdev_vdev.h 和 rte_ethdev_pci.h 不再作为 DPDK ninja install 动作的一部分进行安装,而是在源代码树中分别重命名为 ethdev_driver.h, ethdev_vdev.h 和 ethdev_pci.h ,以表明它们是非公共头文件。
•内部头文件rte_eventdev_pmd.h, rte_eventdev_pmd_vdev.h 和 rte_eventdev_pmd_pci.h 不再作为 DPDK ninja install 动作的一部分进行安装,而是在源代码树中分别重命名为 eventdev_pmd.h, eventdev_pmd_vdev.h 和 eventdev_pmd_pci.h ,以表明它们是非公共头文件。
• 删除了对BCM573xx and BCM5740x 系列的NetXtreme设备的支持。具体来说,已删除了对以下Broadcom PCI设备ID的支持,包括0x16c8, 0x16c9, 0x16ca, 0x16ce, 0x16cf, 0x16df, 0x16d0, 0x16d1, 0x16d2, 0x16d4, 0x16d5, 0x16e7, 0x16e8, 0x16e9。
• 删除了用于检查DPDK头文件的check-includes.sh 脚本,取而代之的是上述check_includes 链接选项。
API 变更
• config:删除了rte_config.h 中表明构建了哪些DPDK库和驱动程序的旧宏。新的宏由meson以标准化的格式生成:RTE_LIB_<NAME> 和 RTE_<CLASS>_<NAME>。其中NAME是大写的组件名称,例如 EAL, ETHDEV, VIRTIO,CLASS 是大写的驱动类型,例如 NET, CRYPTO
•cryptodev:更新了结构rte_cryptodev ,添加了enqueue和dequeue回调函数。
ABI 变更
ABI保持不变,不会破坏与20.11的兼容性。
实验函数rte_telemetry_init 已从公共API中删除,现在是仅供内部使用的函数。当telemetry库可用时,它会从rte_eal_init() 中自动调用,因此终端应用无需使用它。
经过测试的平台
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 8.3
CentOS Stream 8
Fedora 33
FreeBSD 12.1
OpenWRT 19.07.4
Red Hat Enterprise Linux Server release 8.3
Suse 15 SP2
Ubuntu 20.04
Ubuntu 20.10
NICs:
Intel® Ethernet Controller E810-C for SFP (4x25G)
Firmware version: 2.40
Device id (pf/vf): 8086:1593 / 8086:1889
Driver version: 1.4.5 (ice)
OS Default DDP: 1.3.21.0
COMMS DDP: 1.3.25.0
Wireless Edge DDP: 1.3.1.0
Intel® Ethernet Controller E810-C for QSFP (2x100G)
Firmware version: 2.40
Device id (pf/vf): 8086:1592 / 8086:1889
Driver version: 1.4.5 (ice)
OS Default DDP: 1.3.21.0
COMMS DDP: 1.3.25.0
Wireless Edge DDP: 1.3.1.0
Intel® 82599ES 10 Gigabit Ethernet Controller
Firmware version: 0x61bf0001
Device id (pf/vf): 8086:10fb / 8086:10ed
Driver version: 5.10.2 (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.10.2 (ixgbe)
Intel® Ethernet Converged Network Adapter X710-DA4 (4x10G)
Firmware version: 8.00 0x80008b82 1.2766.0
Device id (pf/vf): 8086:1572 / 8086:154c
Driver version: 2.14.13 (i40e)
Intel® Corporation Ethernet Connection X722 for 10GbE SFP+ (4x10G)
Firmware version: 5.00 0x800023c3 1.2766.0
Device id (pf/vf): 8086:37d0 / 8086:37cd
Driver version: 2.14.13 (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.14.13 (i40e)
Intel® Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
Firmware version: 8.00 0x80008c1a 1.2766.0
Device id (pf/vf): 8086:158b / 8086:154c
Driver version: 2.14.13 (i40e)
Intel® Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
Firmware version: 8.00 0x80008b82 1.2766.0
Device id (pf/vf): 8086:1583 / 8086:154c
Driver version: 2.14.13 (i40e)
Intel® Corporation I350 Gigabit Network Connection
Firmware version: 1.63, 0x80000cbc
Device id (pf/vf): 8086:1521 / 8086:1520
Driver version: 5.6.0-k (igb)
Intel® Corporation I210 Gigabit Network Connection
Firmware version: 3.25, 0x800006eb
Device id (pf): 8086:1533
Driver version: 5.6.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: 8.00 0x80008d10 1.2766.0
Device id (pf): 8086:15ff
Driver version: 2.14.13 (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.2-2.2.0.0 and above
MLNX_OFED 5.1-2.5.8.0
upstream kernel:
Linux 5.11.0-rc7 and above
rdma-core:
rdma-core-33.1-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.29.2002 and above
Mellanox® ConnectX®-4 Lx 50G MCX4131A-GCAT (1x50G)
Host interface: PCI Express 3.0 x8
Device ID: 15b3:1015
Firmware version: 14.29.2002 and above
Mellanox® ConnectX®-5 100G MCX516A-CCAT (2x100G)
Host interface: PCI Express 3.0 x16
Device ID: 15b3:1017
Firmware version: 16.29.2002 and above
Mellanox® ConnectX®-5 100G MCX556A-ECAT (2x100G)
Host interface: PCI Express 3.0 x16
Device ID: 15b3:1017
Firmware version: 16.29.2002 and above
Mellanox® ConnectX®-5 100G MCX556A-EDAT (2x100G)
Host interface: PCI Express 3.0 x16
Device ID: 15b3:1017
Firmware version: 16.29.2002 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.29.2002 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.29.2002 and above
Mellanox® ConnectX®-6 Lx EN 25G MCX631102AN-ADAT (2x25G)
Host interface: PCI Express 4.0 x8
Device ID: 15b3:101f
Firmware version: 26.29.2002 and above
Mellanox® BlueField® SmartNIC
Mellanox® BlueField® 2 SmartNIC MT41686 - MBF2H332A-AEEOT (2x25G)
Host interface: PCI Express 3.0 x16
Device ID: 15b3:a2d2
Firmware version: 24.29.2002 and above
Embedded software:
CentOS Linux release 7.6.1810 (AltArch)
MLNX_OFED 5.2-2.2.0 and above
DPDK application running on Arm cores
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
Intel® Xeon® CPU E3-1270 v3 @ 3.50GHz
Intel® Xeon® Gold 6134M CPU @ 3.20GHz
OS:
Red Hat Enterprise Linux Server release 8.1
Red Hat Enterprise Linux Server release 7.6
Centos 8.1
Centos 7.8
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.114.0 and above
Broadcom® NetXtreme-E® Series P425p (4x25G)
Host interface: PCI Express 3.0 x16
Firmware version: 218.0.124.0 and above
Broadcom® NetXtreme-E® Series P2100G (2x100G)
Host interface: PCI Express 3.0 x16
Firmware version: 218.0.124.0 and above
Broadcom® NetXtreme-E® Series P425p (4x25G)
Host interface: PCI Express 4.0 x16
Firmware version: 218.0.124.0 and above
Broadcom® NetXtreme-E® Series P2100G (2x100G)
Host interface: PCI Express 4.0 x16
Firmware version: 218.0.124.0 and above
Broadcom® NetXtreme-S® Series SmartNIC
Broadcom® NetXtreme-S® Series PS225-H16 SmartNIC (2x25G)
Host interface: PCI Express 3.0 x8
Firmware version: 218.1.143.0
Embedded software:
Broadcom Yocto Linux
Kernel version: 4.14.196
DPDK application running on 8 Arm Cortex-A72 cores
NXP ARMv8 SoCs (with integrated NICs)
SoC:
LX2xxx, LS2xxx, LS10xx
OS (based on NXP LSDK-20.04):
Kernel version: 4.19.90
Kernel version: 5.4.47
Ubuntu 18.04
转载须知
推荐阅读
点
点击“阅读原文”,查看21.02 release note