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