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

Reply via email to