W dniu 20.10.2025 o 19:48, Ravi Pokala pisze:
Hi folks,
I remember watching support for Receive-Side Scaling going into the source tree
years ago. AFAIK, it is a fairly mature feature at this point.
I was surprised to see that it is not included in any KERNCONF, or even in
NOTES so it is part of LINT. Is there a particular reason why it's not at least
in NOTES?
Thanks,
Ravi (rpokala@)
When I first tried to learn about RSS implementation a few years ago, it
seemed like a mystery - almost a "holy grail". But as I investigated
further, step by step, I realized that hardly anyone is actually using
it. The code still exists here and there, but it’s rarely built. People
seem either cautious or unconvinced about any real advantages of these
code samples hidden under #ifdefs. At times, RSS feels like a kind of
"snake oil" among kernel options.
That said, the code is still buildable. One genuinely beneficial feature
for me is the change in ECMP routing - the way hashing, tuples, etc, are
calculated differs depending on whether "options RSS" is enabled. When
RSS is used, the paths are just more predictable for UDP. I have not
really read or studied the code, but rather looked how packets are
forwarded. ECMP routing with FreeBSD is quite a new feature, introduced
by melifaro@ with netlink(4). People rarely use FreeBSD as a router
nowadays, so the feedback is limited and very narrow.
Another, perhaps more subjective, observation is that when a BGP session
is established and the router is pulling the full-view routing table -
or when it’s stressed by a high packet-per-second load in a congested
network - performance seems better with both "options RSS" and
net.isr.dispatch="deferred" enabled. In these cases, routing feels
faster, packet latency is lower, and the improvement is noticeable, for
example, in the audio quality of VoIP calls, I had not taken any
measures though.
Good luck with adding "options RSS" to one of the standard kernel configs!
Cheers!
Marek