keepalives and proxies: a request and a proposal

Hi,

I have a question and a proposal about keepalives.

>From what I have seen, a client (C) connection to a server(S) sends

    Connection: Keep-Alive

to ask the server to keep the connection alive. When connecting to a
proxy(P), it sends instead

    Proxy-Connection: Keep-Alive

so that P can either understand it and transform it to

    Connection: Keep-Alive

when talking to S, or leave it untouched, in which case S can understand
that P cannot handle keepalives. This scheme does not cover the case of
a proxy talking to another proxy, e.g.

    C -------->  P1 ---->  P2  ------> S

Peeking at the list archives I have not seen a solution to the problem.
Has this already been discussed and/or solved ?

Otherwise, how about the following (which should also make the
distinction between "Connection:" and "Proxy-Connection:" redundant).

    A node (be it a client or a proxy) which likes the connection to
    stay up, will send

		Connection: Keep-Alive my-name

    my-name should be a unique identifier of the requesting node,
    e.g. the fully qualified hostname or the IP address.  The only
    requirement, it must be easily verifiable by other nodes (thus
    it cannot be the Ethernet address).

    A proxy receiving the ""Connection:" header as above can:

	* ignore it, or pass it unchanged to the next node;
	* replace "my-name" with its own name before sending it
	  to the next node (proxy or server);

    When the reply is sent up to the requesting node, each node in
    the chain which understands the "Connection:" header field will
    compare the name received as a parameter with the actual name
    of the previous node (e.g. derived by asking the peer's IP
    address of the connection). If they match, then the previous
    node wants the connection to stay up. If they don't, then the
    connection must be closed.

    This should work for arbitrarily long chains of nodes.

BTW, such an approach can be of general use whenever we want to
add backward-compatible options using proxies: compliant nodes just
replace the name field, non-compliant ones leave it untouched.

I would appreciate your comments on this solution.

	Thanks
	Lorenzo

<|--------------------------------------------------------------------------|>
 | Lorenzo Vicisano                     | http://www.iet.unipi.it/~vicisano |
 | Dip. di Ingegneria dell'Informazione | e-mail vicisano@iet.unipi.it      |
 | Universita' di Pisa                  | Phone  +39-50-568654              |
 | Via Diotisalvi, 2 56100 PISA, ITALY  | Fax    +39-50-568522              |
<|--------------------------------------------------------------------------|>

Received on Friday, 17 November 1995 11:55:04 UTC