Hello everybody I am currently working on a project to implement the following use cases with high performance. The main workload should be offloaded to the hardware to achieve optimal performance.
## Environment Kernel: 6.8.12 DPDK: 24.11.1 NIC: Intel 810 / Intel E823 ## Use Case / Requirements - Ingress packet distribution to different software endpoints (queues) - Utilization of hardware timestamp offloading - A single packet in multiple queues - Implementation of filters in hardware ### Examples: 1) RX -> Queue-01 [TCP only] -> Queue-02 [UDP only] 2) RX -> Queue-01 [all packets] -> Queue-02 [TCP only] -> Queue-03 [src.mac == xx.xx…] 2) RX -> Queue-01 [all packets] -> Queue-02 [TCP only] -> Queue-03 [src.mac == xx.xx…] -> Queue-04 [vlanid == ##] 3) RX -> Queue-01 [all packets] -> Queue-02 [TCP && vlanid == ##] ## Ideas / Notes/ Issues - Filtering by desired parameters with rte-flow tested - Using the desired queue is also functional - Many combinations have been tested successfully - A packet in multiple queues - Issue: - DPDK does not allow multiple destinations in rte-flow - Thus, no throughput, packet duplication - Idea: - HW port mirroring to a virtual port and using this port for further operations - Code in the ice driver partially prepared ?! ## Questions 1) Is this approach feasible with E810/E823 hardware (regardless of current software implementations)? 2) If yes, would port mirroring be a suitable method, or is there a better approach for this use case? 2a) With the current implementation 2b) With potential adjustments/extensions 3) In the case of port mirroring: 3a) Is the hardware timestamp preserved? 3b) Can additional filters be applied on the VF? Best regards, Dominik