Commit Graph

292 Commits

Author SHA1 Message Date
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