Michael O'Keefe wrote:
You don't want to use TCP for this because almost all of TCP overhead
is set up for *unreliable, shared* transport as opposed to a cable
which is *reliable, dedicated* transport.
I'm not sure about that.
TCP helps enourmously over dedicated, reliable transport becoz the app
on the other end cannot read the data as fast as it is pumped in (so the
buffers fill up), so TCP backs off transmission
With an unreliable protocol (UDP), the buffers overflow and packets get
dropped, regardless of the transport reliability
I think you are confusing some things.
The context here is not TCP vs UDP. It's TCP vs. ATA or possibly
ethernet vs. direct cable.
TCP is set up to work over an unreliable, shared resource which is
typically ethernet. Ethernet has no guaranteed endpoints, delivery
guarantees, time bounds, etc. TCP has to cope with all of that (which
it does quite well) and expends lots of overhead to do so.
ATA, on the other hand, is set up to work over a reliable, dedicated
resource which is typically a cable. This is point to point, extremely
reliable, and can prenegotiate the characteristics of the channel
(buffer size, processing time, etc.) which then typically do not change
for a long time. As such, it can use far less overhead to cope with
exceptional conditions since they occur *far* less often.
As a simple example, ATA can actually *ask* what the remote buffer size
is and get a definitive answer. This means that congestion control *is
simply not required*. TCP can never do that, it must make adjustments
based upon dynamic feedback. ATA can *assume* that large chunks of
bytes always move correctly and in order; TCP cannot.
There are many other examples.
-a
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list