近期,DPDK团队正式发布了21.11版本,本次发布包括1875次提交,由204位作者共同完成,具体包括2413次文件修改,259559次插入(+),87876次删除(-)。
21.11版本应至少支持两年,用于系统集成和部署。
下面是本次发布的详细内容,包含函数较多,手机上建议横屏阅读~
新功能
启用了新的devargs解析器。
启用devargs语法:bus=X, paramX=x/class=Y, paramY=y/driver=Z, paramZ=z。
添加了devargs语法的bus-level解析。
解析回调保持与旧版语法的兼容性。
更新了EAL对Linux的hugetlbfs挂载处理。
修改了EAL,允许--huge-dir选项在hugetlbfs挂载点中指定一个子目录。
添加了dmadev库。
添加了DMA设备框架,用于管理和提供DMA硬件和软件设备。
添加了通用API,支持许多不同的DMA操作。
添加了多进程支持。
更新了网络设备控制回调的默认KNI行为。
更新了KNI网络设备控制回调,默认持有rtnl内核锁运行。添加了新的 enable_bifurcated KNI 内核模块参数,可以在rtnl锁释放的情况下运行回调。
添加了HiSilicon DMA驱动程序。
HiSilicon DMA驱动程序为鲲鹏的DMA设备提供设备驱动。这个设备驱动可以通过通用的dmadev API被使用。
添加了IDXD dmadev驱动程序实现。
IDXD dmadev驱动程序为Intel DSA设备提供设备驱动。这个设备驱动可以通过通用的dmadev API被使用。
添加了IOAT dmadev驱动程序实现。
英特尔I/O加速技术(IOAT)dmadev驱动程序为英特尔IOAT设备提供了设备驱动程序,如Ice Lake、Skylake和Broadwell上的Crystal Beach DMA(CBDMA)。这个设备驱动可以通过通用的dmadev API被使用。
添加了Marvell CNXK DMA驱动程序。
为Marvell OCTEONTX2和OCTEONTX3系列SoC的DPI DMA硬件加速器添加了dmadev驱动。
添加了NXP DPAA DMA驱动程序。
为NXP DPAA平台添加了新的dmadev驱动程序。
为获取一个设备的所有MAC地址添加支持。
添加了 rte_eth_macaddrs_get,允许用户检索特定以太网端口的所有以太网地址。
引入了GPU设备类。
引入了具有初始功能的GPU设备类:
设备信息。
内存管理。
通信标志和列表。
添加了以CUDA库实现的NVIDIA GPU驱动程序。
在新的GPU设备接口下添加了用CUDA库实现的NVIDIA GPU驱动程序。
在RSS流中添加了IPv4/L4校验这个新的RSS卸载类型。
添加了ETH_RSS_IPV4_CHKSUM和ETH_RSS_L4_CHKSUM宏。IPv4和TCP/UDP/SCTP头部的校验字段现在可以用作RSS的输入集。
在流API中添加了L2TPv2和PPP协议支持。
为L2TPv2和PPP协议添加了流模式项目和头部格式。
添加了流flex项目。
可配置的流flex项目能够引入任意一种用户指定的网络协议头部,相应地配置硬件,并以所需模式和掩码在头部执行匹配。
添加了ethdev支持,可控制Rx元数据从HW到PMD的传递。
添加了新的API rte_eth_rx_metadata_negotiate()。定义了Rx 元数据的下面部分:
RTE_ETH_RX_METADATA_USER_FLAG
RTE_ETH_RX_METADATA_USER_MARK
RTE_ETH_RX_METADATA_TUNNEL_ID
添加了API来获取代理端口,管理“转移”流。
添加了新的API rte_flow_pick_transfer_proxy。
添加了对ethdev共享Rx队列的支持。
为交换信息添加了新的设备能力标志和Rx域字段。
在Rx队列配置添加了共享组和共享队列ID。
添加了testpmd支持和专用转发引擎。
更新了af_packet ethdev驱动程序。
默认的VLAN 剥离行为已经更改。除非启用DEV_RX_OFFLOAD_VLAN_STRIP卸载,否则不会剥离VLAN标签。
添加了API以获取ethdev的设备配置。
添加了ethdev API,帮助用户获取设备配置。
更新了AF_XDP PMD。
进程间共享的状态不足会造成进程崩溃,因此禁用了二级进程支持。下一个版本会修复/重新启用该功能。
更新了Amazon ENA PMD。
更新了Amazon ENA PMD。新版驱动程序(v2.5.0)对bug做了修复和改进,主要包括:
支持tx_free_thresh 和 rx_free_thresh 配置参数。
为队列辅助结构体提供NUMA感知分配。
添加看门狗定时器功能来检查缺失的Tx completions。
更新了Broadcom bnxt PMD。
为Thor添加了流卸载支持。
为TruFlow和AFM SRAM添加了分区支持。
实现了对隧道卸载的支持。
将HWRM API更新至1.10.2.68版本。
为目标IP和端口组合添加了NAT支持。
为套接字重定向添加支持。
为输入流的通配符匹配添加支持。
为GRE隧道流的内部IP头添加支持。
更新了对流规则中RSS动作的支持。
删除了统计数据积累的devargs选项。
更新了Cisco enic驱动程序。
为匹配的GTP、GTP-C和GTP-U头添加rte_flow支持。
更新了英特尔e1000模拟驱动程序。
在Windows添加了Intel e1000支持。
更新了Intel iavf驱动程序。
在Windows添加了Intel iavf支持。
在RSS流中添加了IPv4和L4(TCP/UDP/SCTP)校验哈希支持。
基于内部IP地址和TCP/UDP端口,添加了PPPoL2TPv2oUDP RSS哈希。
添加了英特尔iavf inline加密支持。
更新了Intel ice驱动程序。
在Flow Director中添加了协议无关的流卸载支持。
在RSS哈希中添加了协议无关的流卸载支持。
通过devargs添加了1PPS输出支持。
在RSS流中添加了IPv4和L4(TCP/UDP/SCTP)校验哈希支持。
添加了DEV_RX_OFFLOAD_TIMESTAMP支持。
在scalar路径下添加了timesync API支持。
添加了DCF重置API的支持。
更新了Intel ixgbe驱动程序
在Windows添加了Intel ixgbe支持。
更新了Marvell cnxk ethdev驱动程序。
为双VLAN插入和剥离动作添加rte_flow支持。
添加了 rte_tm 支持。
为CN9K事件模式、CN10K轮询模式和事件模式添加了Inline IPsec的支持。
为CN10K平台添加了对入口meter的支持。
更新了Mellanox mlx5驱动程序。
更新了Mellanox mlx5驱动程序,新功能和改进包括:
添加了隐式mempool注册,避免数据路径出现hiccup问题(选择退出)。
对Rx队列的延迟丢弃添加支持。
为Windows的PMD添加了网卡卸载(TSO、VLAN strip、CRC keep)。
添加了套接字bonding 模式支持。
添加了NXP ENETFEC PMD(实验性)。
为NXP IMX8MMEVK平台添加了新的ENETFEC驱动程序。想了解这个新驱动的更多细节,