Re: Moskowitz on MARCA from 1995

Joe Touch (touch@ISI.EDU)
Mon, 22 Nov 1999 15:47:06 -0800 (PST)

> From Mon Nov 22 15:22:23 1999
> Delivery-Date: Mon, 22 Nov 1999 15:22:23 -0800
> Return-Path:
> From: Eugene Leitl <>
> Date: Mon, 22 Nov 1999 16:18:05 -0800 (PST)
> To: Joe Touch <touch@ISI.EDU>
> Cc:,,,
> <>
> Subject: Re: Moskowitz on MARCA from 1995
> Joe Touch writes:
> > Supercomputer jocks want it - it reduces the thrashing between
> > send and receive processing, and reduces the ACK processing overheads
> Supercomputer jocks want primarily userland libraries like M-VIA and
> GAMMA, which can run rings around any TCP/IP cruft both latency and
> bandwidth-wise:
> The whole idea of using long-haul protocols for ultrashort distance,
> essentially lossless networks sucks equine priapic instruments.

That depends. Much of what people _think_ is cruft is due
to ignorance of TCP or IP. Adding 40 bytes of header (IP)
clearly isn't the root cause of poor performance. Copy-on-send
semantics of sockets is, e.g.; there is nothing about TCP/IP
that requires the latter.

If there isn't a loss, an efficient TCP implementation doesn't
anything different than these custom protocols do. The difference
is that the assumption of a lossless network has led some people
to use custom protocols that simply don't check. It isn't
the same - what you get with TCP is the knowledge that the
transfer has occured, not the assumption.

Finally, there are lots of things about TCP that aren't
required in local or private nets. I.e., I hear SC jocks
complain about the requirement that TCP send an ACK every
two packets, or a too-small initial window size. The TCP
spec allows implementations that are local (i.e., don't
interact with the Big-I Internet) to pick local values
of initialization, retransmit, MTU, packets per ACK,
and MSL timeouts.

Some of these jocks would also like to do real work,
not write protocols, or reinvent capabilities of existing
protocols (flow-control, error recovery, etc).

Especially those who work outside their own box (using
outside networks to talk to other components/databases).

But agreed, there is custom work going on there too.