Commit Graph

294 Commits

Author SHA1 Message Date
Adam Ierymenko
76bce44280
Build fix. 2022-04-19 21:30:36 -04:00
Joseph Henry
8148c658cf
Remove bonds for peers that have fully expired. Remove notion of bond health 2022-03-02 09:55:23 -08:00
Joseph Henry
9933d83cf8
Merge pull request #1564 from zerotier/dev-whoami
Proactively seek, and distribute external surface addresses

This patch introduces a new "self-awareness" behavior which proactively queries peers for external surface addresses and distributes them via PUSH_DIRECT_PATHS. This has the effect of making ZT more responsive to interface changes.

Current behavior:

Previously, this type of information was only mediated via RENDEZVOUS and was only triggered when the client detected that it no longer had a single alive path to a peer. While PUSH_DIRECT_PATHS would correctly (and often) send local addresses, this was not the case for external addresses collected from response HELLOs. This would lead to situations where only one physical address would be distributed to peers. Additionally, if a new physical interface were to be made available to the client, the client would correctly bind to it but never seek information about its external mapping from a peer, and thus the new physical interface would remain unavailable for other peers to learn about until all paths on the previous interface have expired which can take a couple of minutes. In traditional usage of ZT this is not usually a problem, but it becomes a problem in the following scenarios:

    Network interfaces go up and down while ZT is running (e.g. switching to LTE or WiFi from a wired connection)
    Network interfaces are added or removed in multipath setups

Proposed behavior:

I propose that normal full HELLOs are sent not only on the first interface in use, but all interfaces. This causes planets to respond with a HELLO containing the surface address for each interface. We then collect each address using SelfAwareness::whoami() and distribute them via the normal PUSH_DIRECT_PATHS mechanism.
2022-02-25 11:30:45 -08:00
Joseph Henry
5e13b42abc
Rate gate ECHO per Path instead of per Peer 2022-02-21 14:37:39 -08:00
Joseph Henry
96aa1c30a6
Proactively seek, enumerate, and distribute external surface addresses 2022-02-17 15:39:17 -08:00
Adam Ierymenko
06ed114fb6
Release notes and GitHub issue #1512 2021-12-15 12:32:28 -05:00
Joseph Henry
e9375b50b0
Prevent path-amnesia 2021-12-13 11:54:23 -08:00
Joseph Henry
9e8de2a702
Compilation fix 2021-10-01 11:19:04 -07:00
Joseph Henry
165757176a
Potential fix fro deadlock bug 2021-10-01 11:11:20 -07:00
Joseph Henry
ff8044f0c0
Improve multipath startup time 2021-09-10 13:26:29 -07:00
Joseph Henry
b6ed919fbc
Call recordOutgoingPacket regardless of policy to generate sufficient entropy for bond layer 2021-09-07 13:44:02 -07:00
Joseph Henry
a4b98518e3
Nominate newly-learned paths to bond 2021-09-06 15:29:03 -07:00
Joseph Henry
e1af003e4f
Consolidation of multipath logic. Better system separation 2021-09-01 21:37:49 -07:00
Adam Ierymenko
ac808d51d6
Crash fix 2021-02-03 18:56:07 -05:00
Adam Ierymenko
378bc73bf8
Clean up some peer path learning logic, use a cheaper data structure. 2021-02-03 14:30:03 -05:00
Adam Ierymenko
697c8c9882
Delete old code. 2021-02-02 16:17:53 -05:00
Adam Ierymenko
72d48da210
Fix duplicate paths and reduce thrashing issues. 2021-02-02 16:11:13 -05:00
Adam Ierymenko
b2b3271a96
Possible fix for path issues in 1.6.2 2021-02-02 14:55:47 -05:00
Adam Ierymenko
d64c5a92c6
Merge pull request #1233 from dosuperuser/improvement/optimizations
Minor C++ optimizations
2020-11-24 19:24:36 -05:00
Adam Ierymenko
53ba413d32
Dont use AES in HELLO. 2020-11-09 20:52:49 -05:00
Adam Ierymenko
7219ca0c0f AES works! Only with this or newer nodes. Uses salsa with older ones as usual. 2020-09-14 20:44:21 -04:00
Adam Ierymenko
e6b5f8aabd AES work... but disabled in this commit. 2020-09-10 15:43:40 -04:00
Adam Ierymenko
2ac49d99dd AES integrated on send side. 2020-08-21 14:23:31 -07:00
Adam Ierymenko
06730c7d1d BSL date bump 2020-08-20 12:51:39 -07:00
Joseph Henry
edd960566a Improve bond tracing, fix bond initialization bugs, remove vestigial debug code 2020-08-06 18:10:40 -07:00
Joseph Henry
a1b2ff772a Add new replacement condition in peer path redundancy logic to fix duplicate paths 2020-07-23 00:15:38 -07:00
Suad Halilovic
ffebcd247f 2020/07/16, Minor optmizations 2020-07-16 18:31:56 +02:00
Joseph Henry
29e7fa5c4b Revert to ancient path redundancy check logic 2020-07-06 14:07:31 -07:00
Joseph Henry
a33a494d60 Adjust terminology 2020-06-17 14:54:13 -07:00
Joseph Henry
5f0ee4fc78 Fix invalid defaultBondingPolicy conditions, Add ZT_MultipathFlowRebalanceStrategy, Add basic hysteresis mechanism to flow re-assignment 2020-06-16 12:30:21 -07:00
Joseph Henry
a50e8e9878 Add Bonds, Slaves, and Flows 2020-05-12 01:35:48 -07:00
Joseph Henry
de9cfbe9b0 Merge dev into multipath 2020-05-12 00:08:52 -07:00
Adam Ierymenko
52a166a71f
Relicense: GPLv3 -> ZeroTier BSL 1.1 2019-08-23 09:23:39 -07:00
Joseph Henry
afca5c2536 Partial implementation of ZT_MULTIPATH_BALANCE_RR_OPAQUE 2019-08-20 23:28:59 -07:00
Joseph Henry
5453cab22b Added flow-awareness check for policies, more work on ZT_MULTIPATH_ACTIVE_BACKUP 2019-08-20 18:50:38 -07:00
Joseph Henry
b0a91c0187 Partial implementation of ZT_MULTIPATH_ACTIVE_BACKUP 2019-08-20 16:19:20 -07:00
Joseph Henry
0634214f2c Added notion of Flows 2019-08-19 21:52:33 -07:00
Joseph Henry
b0e86d11c9 Minor. Name change for trace functions 2019-08-14 11:24:03 -07:00
Joseph Henry
2593c6efee Adjusted multipath constants 2019-08-13 14:34:11 -07:00
Joseph Henry
36d368cb78 Check for (local multipath support only) during decision to decrease direct path push interval. This prevents the chicken-and-egg situation of not knowing if two peers can support multipath on both ends and thusly not sending eachother their direct paths quickly enough. 2019-08-13 13:26:41 -07:00
Joseph Henry
d8ce1f7914 Added ZT_DIRECT_PATH_PUSH_INTERVAL_MULTIPATH to decrease link aggregation time 2019-08-13 12:41:30 -07:00
Joseph Henry
3c7e25ed58 Added call to computeAggregateAllocation() in multipath mode=1 to give realtime allocation output 2019-08-12 17:04:27 -07:00
Joseph Henry
77ae929eb3 Merge master into multipath 2019-08-12 11:40:13 -07:00
Adam Ierymenko
a019c3dd5d Tighten up credential push just a bit for faster up-time with older nodes, should not have significant impact on bandwidth. Also some cleanup and push direct path timing fixes. 2019-06-25 13:42:20 -07:00
Adam Ierymenko
2dc783214c Allocate outp on heap in Peer. 2019-06-17 14:38:27 -07:00
Adam Ierymenko
9c51ce9c40 Windows build fixes, fix double/float types to get rid of warnings. 2019-06-17 13:32:41 -07:00
Grant Limberg
47d29ddcaf Compiler warning cleanup 2019-06-13 10:28:09 -07:00
Joseph Henry
94bd2918fa Merge branch 'dev' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into dev 2019-06-12 13:14:23 -07:00
Joseph Henry
c3bfcf560b Removed check for port number in multipath path replacement logic 2019-06-12 13:14:14 -07:00
Adam Ierymenko
5b2b088714 Cleanup, version bump. 2019-06-11 14:58:23 -07:00