[dpdk-dev] DPDK 20.11 NVIDIA Mellanox Roadmap

Gal Cohen (ProdM) galco at nvidia.com
Thu Aug 20 17:49:07 CEST 2020


Below is NVIDIA Mellanox's roadmap for DPDK20.11, which we are currently working on:



rte_flow API updates:

==================

[1] Support flow-based traffic sampling and mirroring:

Packets of a given classification, can be cloned at a given sampling rate and forwarded to a vport or queue.

Mirroring is provided through setting of sampling rate to 100% of the traffic.

Motivation: Enable monitoring and statistics on classified traffic for business or lawful interception.

Examples: Monitor hairpin traffic that does not reach the application; Mirror traffic for lawful interception use case;



[2] Add rte_flow API for matching on frag/non-frag packets on both IPv4 and IPv6

Support for Ipv4/6, TCP/UDP/ICMP fragmented and non-fragmented packet.

Supported modes: No Fragment, First Fragment, Next Fragment.

Motivation: Allow DPDK applications that are using frag modes (e.g. OVS-DPDK) to define it through DPDK rte_flow API.



[3] Add support for extension header in Geneve tunneling

Support matching on Geneve options header - TLV and data.



[4] Support Hairpin between different ports in NIC mode

Extend current support from "hairpin in the same port" to "hairpin with a different ports on the same NIC".

Motivation: Provide better utilization of network resources (physical ports) and allow flexible alignment with security, network isolation and balancing practices.





rte_flow new APIs:

===============

[5] Extend the DPDK flow action API to enable support of a shared rte_flow_action context

A modification of a single rte_flow_action context replaces the current approach which requires multiple modifications of (identical) flow actions.



Motivation: When multiple flow rules such as RSS have the same action, this action is cloned and used on each of the flows. Prior to the proposed change, any update to the RSS action (e.g. adding/removing queue) required reconfiguration of all the flows. This re-configuration is non-efficient, and the newly proposed APIs provide means to influence all the relevant flows through a single change in the shared action context that is being used by all the relevant flows.



[6] Allow synced rte_flow rule-management (create/destroy)

Add capability to enforce synchronous rule insertion to simplify DPDK software rule-management. functions in scope: rte_flow_create/destroy.



[7] Add Connection Tracking (CT) abstraction layer for CT offloading

Implementation logic is vendor-specific and thus shall be implemented in the PMD by each vendor.

Motivation: Allow DPDK application (e.g. OVS-DPDK) to offload the Connection Tracking logic to the NIC.



[8] Add v-tunnel abstraction layer for tunnel offloading

Implementation logic is vendor-specific and thus shall be implemented in the PMD by each vendor.

Motivation: Allow DPDK application (e.g. OVS-DPDK) to do tunnel offloading.





ethdev API update:

===============

[9] Support buffer split to multiple destinations

Provide means to split the buffer in the receive queue and send it to multiple destinations to be handled by CPU, GPU and potentially others.

Motivation: Accelerate packet handling by sending the data directly to its processor.





mlx5 PMD updates:

================

[*] mlx5 PMD will support the rte_flow update changes listed above.



Enhanced functionality:

[10] Provide visibility on Rx queue status

Extend current function (rx_descriptor_status(), rx_descriptor_count (implementation to support vectorized and mprq modes)

Motivation: Provides DPDK software with additional monitoring capabilities of the Rx queue status.



Performance improvement

[11] Add mlx5 PMD use of vectorized instructions when using Striding RQ (MPRQ)

Motivation: Performance improvement and CPU cycles reduction



[12] Added native DPDK support for multi-threaded rte_flow API

Motivation: Allow rules insertions and deletions from multiple threads with native sync/lock and inherent improved insertion rate.



[13] Improve performance for aging mechanism, reduce memory consumption for flow and CPU cycles for logic

Motivation: Improve performance by reducing latency of counters reading when such is not required



[14] Improved PCIe performance with flow-tags



[15] Improved PCIe performance with mixed protocols (TCP/UDP)



New DPDK PMD for compression/decompression support:

===============================================

[16] Implement look aside compression/decompression to support existing rte_compress API

Implementation for compress/decompress/dma actions



testpmd updates:

===============

[*] testpmd updated to support the changes listed above.



Best regards,
Gal Cohen


More information about the dev mailing list