PPPoE and Receive Packet Steering (RPS)

Started by bunchofreeds, November 07, 2021, 11:24:16 PM

Previous topic - Next topic
Hi,

Is anyone able to confirm if Receive Packet Steering would allow a PPPoE connection to be distributed across multiple CPU's and therefore increase the performance of this type of connection in a multi CPU deployment?
https://forum.opnsense.org/index.php?topic=24409.msg121444#msg121444

This is a feature available in Linux but is not current in FreeBSD
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/performance_tuning_guide/network-rps

There is a FreeBSD version but it was created in 2011 during Googles Summer of Code I think
https://github.com/gokzy/freebsd-rps/wiki/Receive-Packet-Steering-on-FreeBSD

That's an interesting find, thanks! The patch doesn't look very complicated and might be compatible with newer FreeBSD versions, though looking at it:

* the use of M_FLOWID looks like when RSS is active RPS cannot be active
* the hash being used might not be the best fit nowadays
* only when ether_demux() is called by PPPoE code it can accelerate it

I'm not sure about that last part in particular.


Cheers,
Franco

November 08, 2021, 09:01:38 PM #2 Last Edit: November 08, 2021, 09:44:48 PM by bunchofreeds
Thanks for taking a look at this Franco,

Unfortunately I don't have any ability to progress this so was hoping that anyone with code skills could take a look. So thank you.

I think the plan for the FreeBSD patch was to replicate what exists in Linux, but I have no idea how successful it is or any idea how to test it out.

Also after some reading up on RSS, RPS and RFS it seems that a user would choose either RSS or RPS depending on what they are trying to achieve.
RSS is best for protocols that can be handled within NIC hardware. Whereas RPS is more flexible but consumes additional CPU cycles to load share across CPU's

https://www.alibabacloud.com/blog/597128
I found the above to be a good write up.

Also this
https://wiki.freebsd.org/DevSummit/201305/NetworkReceivePerformance/ComparingMutiqueueSupportLinuxvsFreeBSD

I found this post on freebsd-net mailing-list: https://freebsd.markmail.org/message/5kuryot256poxznv

I also wrote an email to the author of the post, askinf for more info about that.

Thanks for your links and findings about the topic.