Best TCP/IP Stack Implementation?
paultantk asks: "This mailing list suggests that the FreeBSD TCP/IP stack is sub-par. It was the best in the 90's, but not anymore. So the question is, which operating system now holds the title for the best TCP/IP stack implementation?"
That's easy. Windows.
mmm..mmmmm..mmmmMMHAHAHAHAHAHAHHAHAHAHAHAHAHA!!!
Damn...couldn't keep a straight face. ^_^
Seriously, though, if FreeBSD is no longer king of the mountain, my vote would have to go with NetBSD (it's always been the BSDs, hasn't it?), although the term "best" is rather open-ended, and subject to serious variations of interpretation. Perhaps before we set about answering this question, we ought to decide just what we mean by "best".
____
~ |rip/\/\aster /\/\onkey
- "my OS is better than yours, so therefore my stack is better".
- "I've got this obscure stack for my old/obsolete/obscure machine, so it r0x!"
- Linux, of course!
- OS X, of course!
etc..I'd be interested in seeing WHY a stack is better, and this means real data or stories like performance numbers or efficiency observations, etc.
On the other hand, machines built since 1998 have been fast enough and stacks have probably been optimized enough that we don't even notice anymore. For example, it was huge when Solaris 2.5.1 was replaced by Solaris 2.6; the stack was reworked because of "we're the dot in dot.com" web serving duties in 1997. However, those days people were still running SPARCstation 5/10/20's for their webs (read: 40MHz CPUs) and it made a difference. Today, your 500MHz+ CPUs don't really hiccup that much from stack inefficiencies. Sure, slashdot the darn box and you'll see some numbers, but the sites that are regularly hosting that kind of traffic are probably running heavier-duty machines.
My rant, anyway :-)
Never hit your grandmother with a shovel, for it leaves a bad impression on her mind...
Solaris 10's new stack is supposed to be the new top dog of the TCP/IP world.
09f911029d74e35bd84156c5635688c0
http://www.sun.com/software/solaris/get.jsp
For details on the network stack improvements, start here:
http://www.sun.com/bigadmin/content/networkperf/
No, seriously. Vista apparently has a completely rewritten network stack that's supposed to build on the work done with Windows Server 2003 (offloading work to network hardware, primarily) and was designed for IPv6 from the ground up.
But maybe the fact that NetBSD twice made the Internet2 land speed record holds for something, handling ~6GBit/s from host to host on a production network. See link to more data.
There are also a number of products which use the NetBSD stack: Sony PSP (other link), Avocent KVM-over-IP switches, QNX uses NetBSD's IP stack, there are several switches sold by IBM and HP that use NetBSD, many network access points and smaller routers, etc.
See the BSDrouter homepage for more data.
Dunno if that makes the stack good, but at least it seems to get used.
- Hubert
Without a doubt, DragonFlyBSD has the best TCP/IP stack. It already has all the RFC improvements that Andre wants to add. It has a correct working SACK implementation. DragonFlyBSD is a more stable faster version of FreeBSD. Why would anyone want to pay money to do what's already in DragonFlyBSD? I would encourage any FreeBSD user to just upgrade to DragonFlyBSD.
In a talk at NZNOG earlier this year a guy from WAND in New Zealand produced some fascinating numbers comparing the various TCP/IP stacks:
5% Random Loss
Goodput(kb/s) OS
213.98 Linux 2.6.10
207.42 Linux 2.4.27
176.20 FreeBSD 5.3
162.81 FreeBSD 5.2.1
137.31 Windows XP SP2
117.98 OpenBSD
Page 13 of http://www.nznog.org/slides/wand.pdf Page 14 also has a nice graph.
Your downstream bandwidth is limited by your upstream bandwidth in corner cases - TCP/IP rate limiting works based on the time between ACKs. If your P2P program is using up all of your upstream bandwidth, then you may find that everything else is failing. Try throttling your P2P app to 80% or so of your available bandwidth, and see if that makes a difference. Also, consider using OpenBSD's ALTQ framework (now ported to FreeBSD and NetBSD) to prioritise ACKs.
I am TheRaven on Soylent News