Re: [RFC] Happy Eyeballs Algorithm

From: Henrik Nordström <henrik_at_henriknordstrom.net>
Date: Sat, 07 Jul 2012 12:44:09 +0200

lör 2012-07-07 klockan 21:26 +1200 skrev Amos Jeffries:
> What I'm thinking when reading this is that we could implement something
> like this easily using the FwdState destinations array and a timeout.
> While it is true that our destinations array is N-protocol rather than
> 2-protocol, the same failover principles apply between any address
> regardless of protocol family.

Actually the underlying problem does not only apply to ipv4/ipv6. It
applies in any multi-path situation.

> Right now we are still on the old serial sequence algorithm of 0-N timeouts

Which is bad.
:
> * start opening destination[0], create a timeout event of N ms
> * when the timeout occurs if the connection has not completed, bump
> the destination[0] entry off and try the next.
> * when a connection succeeds,
> - if serverConn is already set, push the new conn into idle pconn
> immediately and stop.
> - otherwise; set serverConn and *if* it is the destination[0] shift
> that list. continue with the request in any event.

Missing some minor things

* Integration with OK/BAD address status. If a selected address is known
good then wait significantly longer (seconds) for connections to
complete before trying next in parallell.

* Early killing of redundant connection attempts. After a connection
have succeeded we should quickly time out any other pending connection
attempts to other addresses for the same host name. But don't mark them
as bad. Only a full timeout period should make an address as bad.

* A filter to avoid doing this too often per hostname or IP. A
suggestion is to wait for previous attempt to complete/fail before
trying to open a new connection to an IP of unknown status.

> Possibly some modifications for the retries handling.

Which retries? Failed connection attempt or failed request?

Regards
Henrik
Received on Sat Jul 07 2012 - 10:44:20 MDT

This archive was generated by hypermail 2.2.0 : Sat Jul 07 2012 - 12:00:02 MDT