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

Reply via email to