[E-Lang] Hash Chaining & Capabilities, Proposal #1b:
SimplifyingPluribus
Bill Frantz
frantz@communities.com
Thu, 09 Nov 2000 13:05:40 -0800
At 10:12 AM 11/9/00 -0800, Mark S. Miller wrote:
>Every inter-vat connection is implemented at the Data-Pluribus level by
>SSL-like bi-directional reliable-up-to-fail-stop secure byte streams on top
>of TCP. Because we can't rely on the TCP keep-alive-timeout mechanism (I
>don't remember why, but I think it's because the timeout functionality isn't
>available on all platforms), we implement our own keep-alive-timeout
>mechanism at the Data-Pluribus layer. Every so often, each side sends a
>keep alive token to the other. If the timeout period goes by without one
>side hearing from the other, it unilaterally decides that this connection is
>dead. Eventually, if the other side is still alive, this must result in the
>other side realizing the connection is dead as well. (Formally, the two
>sides must have "eventual common knowledge" of connection death.)
>
>(Bill, please correct or clarify any of my confusions.)
Gee, you drove me to actually reading code. :-)
Your description is basically correct. The DataPath object implements
TickNoticer. Every 20 seconds of no activity, it sends out a ping. If it
does not get a pong back in another 20 seconds it closes the connection.
(If the connection was basically OK, the other end will be notified of the
close. If not, its own ping logic will declare the connection to be down.