DPDK Release 17.05

DPDK17.05作为目前为止规模最大的一次功能发布,在mbuf重构,事件驱动编程模型,软件eventdev驱动,Cavium OCTEON TX eventdev驱动程序,Cavium LiquidIO驱动程序,NXP DPAA2 驱动Atomic Rules Arkville驱动,Wind River AVP驱动和DOCSIS BPI +加密等方面取得了一系列新的进展,并提供了很多新的功能。如果您对DPDK17.05中具体功能感兴趣,欢迎在后台留言,我们将参考您的建议, 在未来对热点功能进行更多技术讨论。

17.05新功能

重构了mbuf结构

mubf结构重构如下:
1. 对齐字段以便于在一个操作中写入data_off、refcnt和nb_segs。
2. 端口和段数使用2个字节。
3. 移动序列号至第二个缓存行。
4. 增加时间戳字段。
5. 在释放mbuf时为refcnt、next和nb_segs设置默认值。

添加了mbuf raw free API

移动rte_mbuf_raw_free() 和 rte_pktmbuf_prefree_seg()函数至公共的API。

增加根据需求释放TX mbuf API

添加了新函数rte_eth_tx_done_cleanup(),允许应用请求驱动程序释放Tx ring中不再使用的mbufs,而不管tx_rs_thresh是否已被越界。

添加了设备移除中断

添加了新ethdev事件RTE_ETH_DEV_INTR_RMV来表示设备的突然移除。此事件由PCI驱动程序通知并进行相应的启用。

添加了EAL动态日志框架

添加了新的APIs来动态注册指定的日志类型,并独立控制每种类型的级别。

添加了描述符状态ethdev API

添加了一个新的API来获取描述符的状态。
对于Rx来说,除了区分由驱动程序持有并且没有返回至硬件的描述符,它类似于rx_descriptor_done API。对于Tx来说,这是一个新的API。

增加LPM IPv6的next hop数量为2^21

IPv6的next_hop字段从8位扩展至21位。

添加了VFIO 热插拔支持

除了现有的UIO支持外,还添加了对VFIO的热插拔支持。

为vfio-pci设备的pci探测添加了PowerPC支持

基于vfio-pci设备的pci探测启用了sPAPR IOMMU。

保持一致的PMD批处理行为

取消fm10k/i40e/ixgbe Tx burst size和vhost Rx/Tx burst size的限制以支持对PMD的“Rx / Tx pkts最优化”的相同策略。

更新了ixgbe基本的驱动程序

更新了ixgbe基本的驱动程序,包括以下变化:
1. 为KR增加链接块检查。
2. 即使SFP不存在,也可完成HW初始化。
3. 增加VF xcast混杂模式。

为i40e及其向量PMD添加了PowerPC支持

在PowerPC中默认启用i40e PMD及其向量PMD。

在i40e中添加了VF最大带宽设置

在i40e中为VF启用设置最大带宽的功能。

在i40e中添加了VF TC最小和最大带宽设置

在i40e中为VF上的TC启用设置最小和最大分配带宽的功能。

在i40e上添加了TC严格优先级模式设置

i40e HW支持TC的2个Tx调度模式:轮询调度模式和严格优先级模式。默认使用轮询调度模式。现在可以改变TC的Tx调度模式。 这是物理端口上的全局设置。

添加了i40e个性化定制设备支持

为i40e固件添加了个性化定制设备处理。

为i40e添加了QinQ源引导的云过滤器

在i40e PMD上添加了一个QinQ云过滤器,可以使用双VLAN标签为VM引导流量。请注意,该功能在向量模式中不支持。

更新了mlx5 PMD

更新了mlx5驱动,包括以下变化:
1. 根据ether类型添加了用于分类的通用流API支持。
2. 根据Vtc流、Protocol和Hop限制扩展了用于分类IPv6流的通用流API支持。
3. 添加了用于FLAG操作的通用流API支持。
4. 添加了用于RSS操作的通用流API支持。
5. 为非隧道和VXLAN包添加了TSO的支持。
6. 为VXLAN包添加了硬件Tx checksum offloads的支持。
7. 添加了User space Rx中断模式的支持。
8. 改善了ConnectX-5单核和最大性能。

更新了mlx4 PMD

更新了mlx4驱动,包括以下变化:
1. 添加了通用流API基础流条目和操作的支持。
2. 添加了设备删除事件的支持。

更新了sfc_efx驱动

1. 使用ingress流量的QUEUE操作为 Ethernet、 VLAN、 IPv4、 IPv6、 UDP和TCP pattern items添加了通用流API支持。
2. 添加了虚拟功能(VFs)的支持。

添加了LiquidIO Network PMD

为Cavium LiquidIO II服务器适配器VFs添加了轮询模式驱动支持。

添加了Atomic Rules Arkville PMD

为Atomic Rules设备的Arkville系列添加了一个新的轮询模式驱动。net/ark PMD支持在Arkville 核FPGA实例上的line-rate无关、多队列数据转移。

添加了NXP DPAA2 – FSLMC bus支持

为NXP DPAA2设备添加了新的bus“fslmc”驱动。详细信息请参见Network Interface Controller Drivers文档。

添加了NXP DPAA2 Network PMD支持

为NXP DPAA2设备添加了新的 “dpaa2”网络驱动。详细信息请参见Network Interface Controller Drivers文档。

添加了Wind River Systems AVP PMD支持

为AVP设备类型添加了新的网络驱动。这些设备是特定于Wind River Systems虚拟化平台的。

添加了vmxnet3 version 3支持

添加了vmxnet3 version 3支持,包括一些性能增强,如可配置的Tx data ring,Receive Data Ring和注册内存区域的能力。

更新了TAP驱动

TAP PMD更新如下:
1. 支持MTU修改。
2. 支持Rx的包类型。
3. 支持Rx和Tx的分段包。
4. 在无包可用时加速TAP上的Rx。
5. 支持从另一个网络设备捕捉流量。
6. 当基础接口状态变更时动态改变链接状态。
7. 使用ingress流量的DROP、QUEUE和PASSTHRU操作为 Ethernet、 VLAN、 IPv4、 IPv6、 UDP和TCP pattern items添加了通用流API支持。

为Virtio和Vhost添加了MTU功能支持

在Vhost和Virtio中实施了新的Virtio MTU功能:
1. 添加rte_vhost_get_mtu() API至Vhost库。
2. 启用Vhost PMD的 MTU获取功能。
3. 在Virtio PMD中从host获取最大MTU值。

为virtio – user 添加了中断模式支持

为virtio – user作为虚拟设备实施了Rxq中断模式和LSC支持。支持案例:
1. virtio-user的Rxq中断 + vhost-user 作为后端。
2. virtio-user的Rxq中断 + vhost-kernel 作为后端。
3. virtio-user的LSC中断 + vhost-user 作为后端。

添加了事件驱动编程模式库(rte_eventdev)

此API引入了一种事件驱动编程模式。
在轮询模式中,Icores poll ethdev端口和相关联的Rx队列直接查找包。相比之下在事件驱动模式中,Icores基于程序员指定原则调用调度程序为其选择包。Eventdev库为事件驱动编程模式提供支持,为应用程序提供了自动多核扩展、动态负载平衡、管线化、包进入顺序维护和同步服务来简化应用程序的包处理。
通过引入事件驱动编程模式,DPDK可支持包处理的轮询和事件驱动编程两种模式,应用程序可选择任一模式(或组合两种模式)和其需求进行最佳匹配。

添加了Software Eventdev PMD

添加了Software Eventdev PMD支持。Software Eventdev是一个基于软件的实施了eventdev API的调度程序设备。该PMD允许应用程序使用eventdev库来配置流水线,并在CPU核上运行调度负载。

添加了Cavium OCTEONTX Eventdev PMD

为OCTEONTX设备添加了新的octeontx ssovf eventdev驱动。详细信息请参见Event Device Drivers文档。

添加了information metrics library

添加了一个允许由生产者增加和更新的信息度量库,通常其他库是由消费者进行后续检索,如应用程序。它试图提供一种独立于其他库如ethdev的报告机制。

添加了bit – rate calculation library

添加了一个用于计算设备bit – rate的库。计算的bitrates使用度量库进行汇报。

添加了latency stats library

添加了一个测量包延迟的库。采集的统计数据是jitter和延迟。延迟的最小值、平均值和最大值均需进行测量。

添加了NXP DPAA2 SEC crypto PMD

为NXP DPAA2设备添加了一个新的“dpaa2_sec”基于硬件的crypto PMD。详细信息请参见“Crypto Device Drivers”文档。

更新了Cryptodev Scheduler PMD

1. 添加了基于包大小的分布模式,可以在两个从盘之间基于它们的数据长度分配入队的crypto操作。
2. 添加了失效转移调度模式,可以将crypto操作先加入主从盘的队列,然后其它未计入队列的所有操作加入第二从盘的队列。
3. 添加了模式指定选项支持,因此每个调度模式都可以使用该新的API进行单独配置。

更新了QAT PMD

更新了QAT PMD,可额外支持如下算法:
1. AES DOCSIS BPI 算法
2. DES DOCSIS BPI 算法
3. ZUC EEA3/EIA3 算法

更新了AESNI MB PMD

更新了AESNI MB PMD,还可支持AES DOCSIS BPI算法。

更新了OpenSSL PMD

更新了OpenSSL PMD,还可支持DES DOCSIS BPI算法。

已解决问题

L2fwd-keepalive:修复unclean shutdowns

L2fwd-keepalive添加了clean shutdown,可以使用进程间通信方式(IPC)释放过期资源。

待解决问题

virtio-user + vhost-kernel无法使用LSC中断

由于我们还未找到监测这一事件的方法,设置backend、tap device、up/down时检测不到LSC中断。

原文:DPDK开源社区

发表评论

电子邮件地址不会被公开。 必填项已用*标注