[E-Lang] remote comms: Timeouts and Connection Failure

Bill Frantz frantz@pwpconsult.com
Wed, 4 Apr 2001 13:33:17 -0700


At 9:37 PM -0700 4/2/01, Dean Tribble wrote:
>... TCP
>and Pluribus use connection keep-alives to determine that the connection is
>still up.  Because the use of time windows to establish common knowledge is
>only to make up for the inability to do so directly, it is always a
>bottom-up requirement.

Note that not all TCP implementations provide keep-alives to probe the
state of an idle connection.  That is why Pluribus does it.

>The knowledge of what time period to use for finessing common knowledge is
>*necessarily* dependent on the deployment environment.  For example, 10
>seconds could be a perfectly reasonable window for connect keep-alives on
>an Ethernet.  On the Internet, 10 seconds might be just long-enough to pass
>cursory testing and really hurt you when you deploy to customers (because
>Internet latency is often higher than that).  To a satellite it is of
>course a ludicrously short time-out.  But on that giant cluster-server with
>shared-memory streams, it is too *long* by orders-of-magnitude, and could
>result in substantially lower system performance and reliability.  And yet
>we want to use the same code across all of those environments (and indeed
>most big Web applications are in at least 3 of the 4).  Thus, the
>time-window information is meta-information about the comm environment, and
>should be used by the virtual connection abstraction (e.g., TCP) to
>synthesize connections on the data-gram layer.  The application code is in
>terms of this abstraction (or rather, the object-layer abstraction above
>it).  The deployment of the application is where the application rubber
>meets the time-dependent road (so BTW the Pluribus time-outs need to be
>configurable).

I fully agree about the need for configurability for the Pluribus timeouts.
However...

Can we configure the underlying TCP timeouts?  As soon as a message is
sent, even a Pluribus Ping, the TCP timeout starts running.  Current
Pluribus believes TCP when it says a connection is gone.

Do we need to configure timeouts on a connection by connection basis?  If
so, how do we specify which timeout to use for which connection?

Cheers - Bill


-------------------------------------------------------------------------
Bill Frantz       | Microsoft Outlook, the     | Periwinkle -- Consulting
(408)356-8506     | hacker's path to your      | 16345 Englewood Ave.
frantz@netcom.com | hard disk.                 | Los Gatos, CA 95032, USA