Re: hangs/multiple servers

Kevin Hoadley (K.Hoadley@directory.rl.ac.uk)
Mon, 23 Nov 1992 09:41:58 +0000 (GMT)


Date: Mon, 23 Nov 1992 09:41:58 +0000 (GMT)
From: Kevin Hoadley <K.Hoadley@directory.rl.ac.uk>
Subject: Re: hangs/multiple servers
To: timbl@ch.cern.ch
Cc: K.Hoadley%UK.ac.RL.DIRECTORY@ac.uk, www-talk@ch.cern.ch
In-Reply-To: Tim Berners-Lee's message of Fri, 20 Nov 92 18:29:06 +0100: <9211201729.AA00822@www3.cern.ch>
Message-Id: <Ximap.722512657.5851.khoadley@danton>

Tim Berners-Lee said:
>But it seems feasable.  Maybe we can try it out with some non top-level
>domain
>and when it works register a www.net or maybe just a .www.  :-)

Trying it out is no problem; there are plenty of friendly DNS admins around
(including me ...). In the longer term it would have to be www.net rather
than just .www.
 
>Now, as you point out, we need some mirroring software.  (Ed, you know
>of any?)

Mirroring is a difficult problem, eg should the secondaries poll the
primary to pick up new copies, or should the primary push changes out
to the secondaries ? Should you tranfser entire copies of a server's data
(needed when bringing up a new secondary) or should you just transfer
deltas ? 

For mirroring to work well it needs to be part of the protocol. Maybe
something for HTTP3 .... ?
 
>Rather than just retry another IP address on error on the first, which would
>be slow because of the long tcp timeout, a better method would be, the first
>time a client encounters a given server with >1 IP address, to ping 
>all of them
>wait for any reply packet and take the winner, then connect to that. Solves
>the traffic reduction and the reliability in one swell foop.

One way to do this is to create a number of sockets, one per address,
mark them all as non-blocking, connect() to each of the addresses and 
then select(), ie. send out parallel connection requests and take the first
(even if all connections get established before we process the select(),
that is only three packets per connection).

This method solves the problem of finding the nearest server, and also
the problem of asynch connects mentioned earlier re: midas: just set a
suitable timeout on the select call.

Kevin