let clients know when there's a less congested gateway available
as part of the discussion on load balancing (see #6) we've come to the conclusion that we need some mechanism to signal to the clients when there are less congested gateways than the one they're connecting to (effectively raising the churn rate for a particular gateway).
We want to let clients switch to a less-congested gw at their earliest convenience. otherwise the whole load balancing infrastructure might end up not being effective under the current assumption, when clients keep reusing the same (and whole) statically-ordered set of remotes during all the reconnections.
a simple proposal to change this can be summarized as follows:
-
assuming we can geolocate the ip, let geoip (using whatever implementation, see #6) give the client a "best" set of gateways, according to different sorting capabilities (taking geographical closeness, but also current/past load, and maybe particular transport constrains into account). Pass, let's say, only 2 or 3 remotes to the openvpn invocation. -
keep refreshing the list of "best" gateways (and, optionally, the "health" status of all the gateways) in the background. -
upon a reconnect, pick the best 3 remotes from the updated health list. -
we should, in principle, discourage manual gw selection -
for manual selection, it would be useful to display a "traffic light-style" indicator of the gw health. -
ux: in situations where the current load is high (and there are close gws with less load), we could proactively trigger a dialog strongly suggesting the user to switch gateways.