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
Adam Ierymenko
cacdb445c7
Bump protocol version to 10
2019-05-14 13:54:27 -07:00