1. 新增了armv8 machine target
新增的armv8 machine target包括:
BlueField (Mellanox)
OcteonTX2 (Marvell)
ThunderX2 (Marvell)
2. 增加了Windows支持
Windows可支持搭建Hello World示例应用。
3. 添加了栈库
新增了栈库、配置用的API和有界指针堆栈。API可提供多线程的安全进、退栈操作,每次操作可在一个或多个指针上进行。
该库支持两种堆栈的实现:标准的(基于锁的)和无锁的。
但无锁的实现现在仅限于x86-64的平台。
4. 添加了无锁堆栈 Mempool Handler
新增的无锁堆栈handler使用的是新增的栈库。
5. 添加了RCU库
加入的RCU库支持基于静止状态的内存回收方式。
该库可帮助识别读者线程的静止状态,让写者得以释放和锁无关数据结构相关的内存。
6. 更新了KNI模块和PMD
更新了KNI内核模块,可根据给定的初始MTU大小设置max_mtu,在没有设置的情况下,最大的MTU为1500。
更新了KNI PMD驱动,可基于给定的mb-pool设置mbuf_size和MTU,如果mb-pool包含一个合适的buffer大小,设置之后就可以传递巨型帧。
7. 添加了AF_XDP PMD
为AF_XDP增加了一个Linux特定的 PMD驱动。此PMD可创建一个AX_XDP socket,并将其绑定到特定的netdev队列。DPDK应用会绕过内核网络堆栈,通过该socket接收和发送原始数据包,以实现高性能的包处理。
8. 添加了一个net PMD NFB
为Netcope NFB卡新增了nfbnet驱动。详情请查看NFB轮询模式驱动库NIC指南。
9. 添加了IPN3KE net PMD
为Intel® FPGA PAC (Programmable Acceleration Card)新增了网络驱动ipn3ke,详情请查看IPN3KE轮询模式驱动库NIC指南。
10. 更新了Solarflare network PMD
更新的Solarflare驱动sfc_efx包含以下变化:
增加了对次级进程中Rx 描述符状态和相关API的支持
增加了对次级进程中Tx 描述符状态和相关API 的支持
增加了对次级过程中RSS RETA以及hash配置读取API的支持
增加了对次级进程中Rx包类型列表的支持
Added Tx prepare to do Txoffloads checks.
增加了对封装了的VXLAN和GENEVE的TSO的支持
11. 更新了Mellanox mlx4驱动
更新的Mellanox mlx4驱动包含以下的新功能和改进:
增加了固件版本读取
支持次级进程
支持每进程设备寄存器;不再需要保留相同的VA空间
支持组播地址列表接口
12. 更新了Mellanox mlx5驱动
更新的Mellanox mlx5驱动包含以下的新功能和改进:
增加了固件版本读取
支持representor的新命名方案
支持新PCI设备DMA map/unmap API
支持多端口InfiniBand设备
内核控制excessive memory pinning
次级进程支持DMA内存寄存器
支持每进程设备寄存器;不再需要保留相同的VA空间
支持对E-Switch和网卡的跳跃动作
支持网卡steering中的多rte_flow组
重新设计的流程引擎支持大范围部署,包括:
支持数百万卸载流规则
快速的流插入和删除,可快至每秒1M流更新
13. 将avf重新命名为iavf
将Intel以太网自适应虚拟化功能驱动avf重新命名为iavf,其中包含了目录名、库名、文件名、编译文件、文档、宏、函数、结构体类型和代码中其他的字符串。
14. 更新了enic 驱动
更新的enic驱动包含以下新功能和改进:
修复了几个与MARK、 SCTP 、VLAN、 VXLAN和内部包匹配相关的flow(director)问题
增加了对RAW限制性的支持
增加了对RSS限制性的支持
增加了对PASSTHRU限制性的支持
15. 更新了ixgbe驱动
更新的ixbge驱动可为VF支持混杂模式。
16. 更新了ice驱动
更新的ice驱动包含以下新功能和改进:
支持Rx和Tx路径中SSE和AVX2指令
支持包下载
支持安全模式
支持UPD/TCP/SCTP+IPV4/IPV6包的RSS功能
17. 更新了i40e驱动
i40e中PF的新功能包括:
支持VXLAN-GPE包
支持VXLAN-GPE分类
18. 更新了ENETC驱动
更新的ENETC驱动包含以下新功能和改进:
支持物理寻址模式
支持SXGMII接口
支持基础统计
支持混杂模式和全组播模式
支持MTU更新
支持巨型帧
添加了队列的启动/停止
支持CRC卸载
支持Rx校验卸载验证
19. 更新了atlantic PMD
添加了MACSEC硬件卸载实验性的API
20. 更新了IntelQuickAssistTechnology (QAT) compression PMD
更新了IntelQuickAssist Technology (QAT) compressionPMD,可简化并让对含有超过16个segment的Scatter Gather Lists(SGLs)的处理更稳健。
21. 更新了QuickAssist Technology (QAT)对称加密PMD
支持128和256 bit AES keys的AES-XTS。
22. 为非对称加密添加了Intel QuickAssist Technology PMD
新增了一个QAT 加密 PMD,可提供不对称的加密算法。在此次的版本中添加了模块化的求幂和模块化的乘法逆算法。
23. 更新了AESNI-MB PMD
支持外部变换操作。
24. 更新了IPsec库
更新的IPsec库支持AES-CTR和3DES-CBC 密码算法。同时也添加了相关的ipsec-secgw测试脚本。
25. 更新了testpmd应用
提高了在ARM平台上testpmd应用的性能。在转发模式macswap下,现使用NEON intrinsic交换分区来节省CPU周期。
26. 更新了电源管理库
支持Intel Speed Select Technology - Base Frequency (SST-BF)。rte_power_get_capabilities结构体类型现在在其被返回的掩码中有一个比特,可表示它是否是一个高频核。
27. 更新了distributor示例应用
支持Intel SST-BF功能,如果可获取高频核,distributor核可以固定过去。
▌ API变化
1.eal:函数rte_service_attr_get()的参数attr_value的类型已经从uint32_t *变为uint64_t *.
2.meter:用19.02版本增加的新定义rte_color代替meter库中的enum rte_meter_color。在很多像是rte_mtr.h和rte_tm.h的地方已经进行了这样包含rte_color值的替换,来合并多种颜色定义。
3.vfio:rte_vfio_container_dma_map和rte_vfio_container_dma_unmap函数扩增了一个选项,可选择要求映射或非映射到默认的vfio容器fd。
4.power: rte_power_set_env和rte_power_unset_env函数已经修改为线程安全。
5.timer:已引入可创建多个timer列表实体的函数。另外,现在它们在共享内存中被分配。新函数在timer被启动、停止和管理的时候可允许挑选特定的timer列表。
▌ ABI变化
1.ethdev:在rte_eth_dev_info中增加的字段。rte_eth_dev_info结构体中已加入了两个额外的字段min_mtu和max_mtu,每个都是uint16_t类型。这些字段值的设置由于PMD驱动支持设备的不同而不同。
2.crytodev:在18.08版本中引入了一个新的结构体rte_crypto_asym_op,包含在rte_crypto_op中。由于rte_crypto_asym_op结构体是缓存对齐方式定义的,导致rte_crypto_op结构体布局和对齐方式不可预测的变化。移除对rte_crypto_asym_op的缓存行对齐,可恢复预期的rte_crypto_op布局和对齐。
3.timer: rte_timer_subsystem_init成功或失败返回以表示能否分配内存。
▌ 已知问题
1. 在x86平台上,因为binutils 2.31,不支持AVX512。因为binutils 2.31中的一个缺陷,不支持AVX512。
DPDK 缺陷:
https://bugs.dpdk.org/show_bug.cgi?id=249
GCC 缺陷:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90028
2. 无软件AES-XTS实现
现有的cryptodev 软件 PMD不支持AES-XTS算法实现,所以此功能只能在有兼容性硬件和有关联的PMD的支持下使用。
查看完整版DPDK 19.05 Release Notes
http://doc.dpdk.org/guides/rel_notes/release_19_05.html