Dear OpenBSD Developers,
I am aware of the serious improvement in OpenBSD 7.2:
"Activated parallel IP forwarding, starting 4 softnet tasks but limiting
the usage to the number of CPUs."
I can confirm that the IPv4 packet forwarding performance of OpenBSD was
highly improved by this change.
Previously I benchmarked OpenBSD 7.1 IPv4 and IPv6 packet forwarding
using both SP and MP kernel on a 32-core server, and MP did not have
much advantage. All the details can be found in table 17 of the below
(open access) paper:
G. Lencse, K. Shima, K. Cho, "Benchmarking methodology for stateful
NAT64 gateways", /Computer Communications/, vol. 210, October 2023, pp.
256-272, DOI: https://doi.org/10.1016/j.comcom.2023.08.009
Later we developed a methodology to improve the testing conditions of
RFC 2544 / RFC 5180 which use a single IP address pair for router
testing. Although RFC 48114 recommended pseudorandom port numbers,
OpenBSD does not benefit from it, because its RSS implementation does
not have an interface to set the hash function so that also the port
numbers be used by the hash function.
To that end, our methodology recommends the usage of multiple and
pseudorandom IP addresses in router benchmarking:
https://datatracker.ietf.org/doc/html/draft-lencse-bmwg-multiple-ip-addresses
I did measurements with OpenBSD 7.3 using a 16-core server and I found a
more than 3-fold increase in the performance of IPv4 packet forwarding
when multiple IP addresses were used instead of a single IP address
pair. All the details can be found in table 9 of the below (open access)
paper:
G. Lencse, "Making Stateless and Stateful Network Performance
Measurements Unbiased", /Computer Communications/, vol. 225, September
2024, pp. 141-155 DOI: https://doi.org/10.1016/j.comcom.2024.05.018
That's a great improvement, many thanks to the developers!
Now I do some further tests to improve the methodology. Currently I
examine, how the throughput changes when using 1, 2, 4, 8, 16, 32, 64,
..., and 64k-3 number of IP addresses.
I have the previously used OpenBSD 7.3 server with all the necessary
settings and scripts which is properly suitable for my current tests.
However, if the IP packet forwarding performance of OpenBSD has been
significantly improved since version 7.3, then I would consider an upgrade.
This is why I ask the following question:
*Has the IP packet forwarding performance of OpenBSD been significantly
improved since version 7.3?*
BTW, may I have a few, perhaps rather naive questions?
In OpenBSD 7.2, why 4 softnet tasks were introduced? (Why not for
example, 8 or 16?)
Could a user change the value from 4 to e.g., 8 without recompiling the
kernel, just by somehow setting a parameter?
Thank you for your reply in advance!
And I would be happy if my measurements could contribute to the
performance improvement of OpenBSD. :-)
Best regards,
Gábor