Re: Proposal: merged system calls

Alan Cox (alan@lxorguk.ukuu.org.uk)
Mon, 27 May 1996 18:48:40 +0100 (BST)


> While there are bugs in the now current linux code, there are some big
> names that trashed mbufs. Van Jacobson has a BSD based stack that
> he's heavily hacked to *NOT* use mbufs, but a scheme that escapes me
> at the moment. He also did the hyperoptimizations of the checksum
> calculations for the m68k (I believe).

Van came up with a whole load of very clever pieces of code and design. He
is the source of the copy/checksum ideas, the man who really put the boot into
mbufs (and even more so streams) and the person who did the very elegant header
prediction code. Much of the 1.2->2.0 improvements are down to his work. Some
of the stuff post 2.0 that people are hacking on is also very much down to
him.

> Why do people like them? mbufs are good enough to get decent
> performance on most available hardware and they are in a stack that is
> relatively solid. The linux crowd knows well the pitfalls of trying

Mbufs are a great tradeoff on a machine with low memory. If I was writing
tcp/ip stacks for 2Mb BSD VAX 11/750's I'd have gone the same way. On PC
class machines they are a very performance poor way to do things as its better
to throw a few more bytes at the problem.

> to reinvent the TCP wheel :-).

It has to be said that there are two big problems with re-inventing the TCP
wheel.

1. Lack of good standards. Half of the current optimisations and
TCP algorithms are UNDOCUMENTED (thankfully Richard Stevens
has now documented most of them). The BSD socket standard is
undocumented in all its weirder areas, and changes every
release.

2. There are so many broken terminal servers and PC stacks out
there that assume BSD behaviour (like acks being updated
on retransmitted frames), that you spend a long time hunting
them out.

Alan