-
-
Notifications
You must be signed in to change notification settings - Fork 159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for peers with multiple addresses #201
Comments
Can't this be accomplished by setting host routes with varying priority? You're talking about underlay addresses, correct? |
Right now, VpnCloud just tries all addresses and does not prioritize or compare them. I have to check the code but it might be that when multiple addresses work, the slowest one wins out (as it is the last one to connect). |
@dswd how about periodical "reconfiguration" based on randomization of the list along with some latency/troughput measure over the last few seconds/minutes? That way it wouldn't require use interaction/prioritization and should actually converge to an above-average solution. |
I didn't realize you weren't connecting multiple tunnels to the same host. If you allow multiple tunnels and route the same vpn ip across them it would equal cost multi path route round Robin between them by default. A feature to periodically auto adjust the metric based on latency would be nice to have, but even without that all priorities should be able to be adjusted per host in the local routing table |
It is empirically established that the address with the lowest highest octet is selected from several available ip addresses of one host. |
In this case, this is not a solution. The most important thing is not taken into account - the price of the channel. Possible solution: an analog of the cost interface in OSPF |
Yep. I'd emphasize that EIGRP (and OSPF) works only because it periodically frequently recomputes the price (thanks to CDP etc.). |
This is just an analogy. VpnCloud sends keep-alive packets as often as you wish. And if the channel fails, it successfully switches to another available neighbor address. |
@biolim the current mechanism doesn't compute any price - it's binary "either or". But I'd prefer if it measured & estimated latency and bandwidth and also acted upon after reaching some threshold. So e.g. if some link became slower, another link should be tried. This would require monitoring several links in parallell, but IMHO it's worth it. |
VpnCloud does not measure latency or bandwidth. Measuring latency would be relatively easy since there are already keepalive messages. Measuring bandwidth without interfering with existing traffic is pretty hard and I would rather not try to implement that. I checked the code again:
So how can we improve this without introducing too much complexity?
However I am hesitant to add prioritization to addresses since connections are not unidirectional. That means that both nodes use the same connection and therefore they need to negotiate the parameters of that connection. It is not clear what should happen if the nodes disagree about the priorities. My proposed solution would prefer the fastest path (based on latency) for a connection without having to actively measure and compare latency. |
If multiple tunnels connect and the hosts each have different preferences as to which tunnel they send traffic then you would have asymmetric connections - traffic being sent down a different path than received. This is a problem for a firewall, but is easily resolved adjusting route weights. |
I would like to manage the priority of connecting to a peer at multiple addresses.
--config example.net:
`listen: 3210
peers:
multi_ip_peer:
-192.168.0.3:3210:1 #high priotiry
-172.16.0.3:3210:2 #low priotiry
`
or specify a priority source ip
listen:
`
The text was updated successfully, but these errors were encountered: