amzn / amzn-drivers

Official AWS drivers repository for Elastic Network Adapter (ENA) and Elastic Fabric Adapter (EFA)
446 stars 167 forks source link

Feature request: add support for n-tuple filtering #206

Open aneagoe opened 2 years ago

aneagoe commented 2 years ago

Hello,

We're looking for an easier way to use kernel bypass together with the ENA driver. For that, openonload would be a perfect fit. However, at the moment, it doesn't work due to ENA's lack of support for n-tuple filtering. How feasible would it be to add such a feature? For more background, please see https://github.com/Xilinx-CNS/onload/issues/28.

akiyano commented 2 years ago

Hi @aneagoe, Thanks for your request. n-tuple filtering is in our long term plans, but there isn't a concrete timeline yet.

nirvana-msu commented 1 year ago

There are other use-cases for n-tuple filtering support beside AF_XDP/kernel bypass with OpenOnload.

Accelerated RFS also requires it. This is what can let you achieve the best latency while still using kernel for handling TCP stack. It does it by routing packet directly to the correct NIC queue / correct CPU your application needs this packet on, rather than assigning queue randomly based on hash (which normally would mean an extra IPI call, even if you use regular RFS).

Btw, another requirement for aRFS is that NIC must support ndo_rx_flow_steer() net_device function. Is it documented anywhere for AWS EC2 ENA (or is there any way to check it from the running instance)? Specifically interested in this for c6g instances.

@davidarinzon / @akiyano I'm wondering if n-tuple filtering support could be prioritized for ENA driver?

Thanks.

davidarinzon commented 1 year ago

Hi @nirvana-msu Thank you for sharing this information and the additional use-cases. You're welcome to reach me out at darinzon@amazon.com for further discussion.

Regarding ndo_rx_flow_steer(), this option is not implemented by the driver at this point.

ShakesB33r commented 1 year ago

+1 to being able to benefit from both aRFS as well as openonload, would be nice to see the enhancements mentioned in this thread implemented.

FrothyB commented 8 months ago

Are there any plans to implement these features or should we assume that they will not be landing anytime soon?

davidarinzon commented 8 months ago

Hi @FrothyB

We are looking into the option of adding n-tuple support, but I can't provide a timeframe at this point. Stay tuned for ENA Linux driver releases and release notes.