Actually, we did tests with Linux (both 2.4 and 2.6) and FreeBSD also, but with not as good results.
Linux IP stack eats much more CPU (and memory!) than it should. Basic problem is the network buffer implementation (or the lack of!). This is true for both 2.4 and 2.6. A redesign is needed of the IP stack to make it perform better.
FreeBSD have a lot of linear searches in their IP stack left, fixing that would most likely give the same result as for NetBSD. I may port over some of the NetBSD changes if I get some spare time.
NetBSD had already fixed (most of) those problems, some of them long ago, therefore it was simple to just use it.
Actually, the Linux IP stack buffer handling have a number of problem that the BSD stack do not suffer from. One is the inability to use a number of linked buffers in one packet (the "mbuf" style) so it allocates skbuff's (on a power-of-2-basis),
another is that it must always do (at least) one datacopy even on transmission.
This will result in that a machine with the Linux IP stack runs out of CPU much faster than with a BSD IP stack.
No, they use a much shorter distance (and much faster hardware :-)
Actually, we did tests with Linux (both 2.4 and 2.6) and FreeBSD also, but with not as good results. Linux IP stack eats much more CPU (and memory!) than it should. Basic problem is the network buffer implementation (or the lack of!). This is true for both 2.4 and 2.6. A redesign is needed of the IP stack to make it perform better. FreeBSD have a lot of linear searches in their IP stack left, fixing that would most likely give the same result as for NetBSD. I may port over some of the NetBSD changes if I get some spare time. NetBSD had already fixed (most of) those problems, some of them long ago, therefore it was simple to just use it.
Actually, the Linux IP stack buffer handling have a number of problem that the BSD stack do not suffer from. One is the inability to use a number of linked buffers in one packet (the "mbuf" style) so it allocates skbuff's (on a power-of-2-basis), another is that it must always do (at least) one datacopy even on transmission. This will result in that a machine with the Linux IP stack runs out of CPU much faster than with a BSD IP stack.