[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