Commit Graph

297 Commits

Author SHA1 Message Date
666fb7ea2d eliminated duplicate paths (#1870) 2023-02-06 11:50:05 -08:00
3c9ea2b667 Add low-bandwidth mode 2022-12-05 13:21:05 -08:00
e1f60e3f83 Behavioral changes to multipath balance modes (See: #1745 and #1753) 2022-10-09 23:07:16 -07:00
76bce44280 Build fix. 2022-04-19 21:30:36 -04:00
8148c658cf Remove bonds for peers that have fully expired. Remove notion of bond health 2022-03-02 09:55:23 -08:00
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
5e13b42abc Rate gate ECHO per Path instead of per Peer 2022-02-21 14:37:39 -08:00
96aa1c30a6 Proactively seek, enumerate, and distribute external surface addresses 2022-02-17 15:39:17 -08:00
06ed114fb6 Release notes and GitHub issue #1512 2021-12-15 12:32:28 -05:00
e9375b50b0 Prevent path-amnesia 2021-12-13 11:54:23 -08:00
9e8de2a702 Compilation fix 2021-10-01 11:19:04 -07:00
165757176a Potential fix fro deadlock bug 2021-10-01 11:11:20 -07:00
ff8044f0c0 Improve multipath startup time 2021-09-10 13:26:29 -07:00
b6ed919fbc Call recordOutgoingPacket regardless of policy to generate sufficient entropy for bond layer 2021-09-07 13:44:02 -07:00
a4b98518e3 Nominate newly-learned paths to bond 2021-09-06 15:29:03 -07:00
e1af003e4f Consolidation of multipath logic. Better system separation 2021-09-01 21:37:49 -07:00
ac808d51d6 Crash fix 2021-02-03 18:56:07 -05:00
378bc73bf8 Clean up some peer path learning logic, use a cheaper data structure. 2021-02-03 14:30:03 -05:00
697c8c9882 Delete old code. 2021-02-02 16:17:53 -05:00
72d48da210 Fix duplicate paths and reduce thrashing issues. 2021-02-02 16:11:13 -05:00
b2b3271a96 Possible fix for path issues in 1.6.2 2021-02-02 14:55:47 -05:00
d64c5a92c6 Merge pull request #1233 from dosuperuser/improvement/optimizations
Minor C++ optimizations
2020-11-24 19:24:36 -05:00
53ba413d32 Dont use AES in HELLO. 2020-11-09 20:52:49 -05:00
7219ca0c0f AES works! Only with this or newer nodes. Uses salsa with older ones as usual. 2020-09-14 20:44:21 -04:00
e6b5f8aabd AES work... but disabled in this commit. 2020-09-10 15:43:40 -04:00
2ac49d99dd AES integrated on send side. 2020-08-21 14:23:31 -07:00
06730c7d1d BSL date bump 2020-08-20 12:51:39 -07:00
edd960566a Improve bond tracing, fix bond initialization bugs, remove vestigial debug code 2020-08-06 18:10:40 -07:00
a1b2ff772a Add new replacement condition in peer path redundancy logic to fix duplicate paths 2020-07-23 00:15:38 -07:00
ffebcd247f 2020/07/16, Minor optmizations 2020-07-16 18:31:56 +02:00
29e7fa5c4b Revert to ancient path redundancy check logic 2020-07-06 14:07:31 -07:00
a33a494d60 Adjust terminology 2020-06-17 14:54:13 -07:00
5f0ee4fc78 Fix invalid defaultBondingPolicy conditions, Add ZT_MultipathFlowRebalanceStrategy, Add basic hysteresis mechanism to flow re-assignment 2020-06-16 12:30:21 -07:00
a50e8e9878 Add Bonds, Slaves, and Flows 2020-05-12 01:35:48 -07:00
de9cfbe9b0 Merge dev into multipath 2020-05-12 00:08:52 -07:00
52a166a71f Relicense: GPLv3 -> ZeroTier BSL 1.1 2019-08-23 09:23:39 -07:00
afca5c2536 Partial implementation of ZT_MULTIPATH_BALANCE_RR_OPAQUE 2019-08-20 23:28:59 -07:00
5453cab22b Added flow-awareness check for policies, more work on ZT_MULTIPATH_ACTIVE_BACKUP 2019-08-20 18:50:38 -07:00
b0a91c0187 Partial implementation of ZT_MULTIPATH_ACTIVE_BACKUP 2019-08-20 16:19:20 -07:00
0634214f2c Added notion of Flows 2019-08-19 21:52:33 -07:00
b0e86d11c9 Minor. Name change for trace functions 2019-08-14 11:24:03 -07:00
2593c6efee Adjusted multipath constants 2019-08-13 14:34:11 -07:00
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
d8ce1f7914 Added ZT_DIRECT_PATH_PUSH_INTERVAL_MULTIPATH to decrease link aggregation time 2019-08-13 12:41:30 -07:00
3c7e25ed58 Added call to computeAggregateAllocation() in multipath mode=1 to give realtime allocation output 2019-08-12 17:04:27 -07:00
77ae929eb3 Merge master into multipath 2019-08-12 11:40:13 -07:00
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
2dc783214c Allocate outp on heap in Peer. 2019-06-17 14:38:27 -07:00
9c51ce9c40 Windows build fixes, fix double/float types to get rid of warnings. 2019-06-17 13:32:41 -07:00
47d29ddcaf Compiler warning cleanup 2019-06-13 10:28:09 -07:00