Commit Graph

5608 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
84705aafc7
Merge pull request #1569 from zerotier/dev-echo-rate-gate
Rate gate ECHO per Path instead of per Peer

In multipath scenarios user traffic is used to judge the aliveness of a path. If the user traffic is too infrequent to establish aliveness for a given time window (say 500 ms), the bonding layer will send extra ECHOs at a maximum rate of failoverInterval / 3 (or ~ 166 ms) per path. This patch relaxes the rate-limiting of ECHOs significantly in order to prevent a non-multipath node from dropping ECHOs causing multipath nodes to erroneously judge paths to that node to be dead.
Details

This patch decreases the rate limiting from 1000 ms per peer by a factor of 6 to ~166 ms and rate limits ECHOs per Path instead of per Peer. This allows rate limiting to scale with the number of established paths to a peer.

As a result, if all 64 path slots are used a total of 64 x 6 = 384 ECHOs per second will be allowed in the most aggressive case where failoverInterval is set to 500 ms.
2022-02-25 11:23:42 -08:00
Joseph Henry
618202d426
Increase min failover to 500 ms and probe period to 1/3rd of failover 2022-02-25 10:52:39 -08:00
Adam Ierymenko
8b9a7d2c8f
1.8.5 release notes 2022-02-22 13:15:39 -05:00
Joseph Henry
d1335dca11
Change ECHO rate-limit divsor from 16 to 20 2022-02-21 16:22:33 -08:00
Joseph Henry
5e13b42abc
Rate gate ECHO per Path instead of per Peer 2022-02-21 14:37:39 -08:00
Adam Ierymenko
b4b5a70a03 Windows build update. 2022-02-21 13:53:55 -05:00
Joseph Henry
96aa1c30a6
Proactively seek, enumerate, and distribute external surface addresses 2022-02-17 15:39:17 -08:00
Joseph Henry
1b0c183913
Force non-leaf peers into local active-backup bond when multipath is enabled 2022-02-17 15:16:33 -08:00
Joseph Henry
5d4a9a4aa1 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-02-17 09:48:15 -08:00
Grant Limberg
31c12aebb5
more fun with linux ethernet taps
older kernels: must set MTU before IFF_UP.
newer kernels: must set MTU *after* IFF_UP
2022-02-17 09:26:53 -08:00
Joseph Henry
40269c2a97
Comment out debug traces 2022-02-16 20:39:18 -08:00
Adam Ierymenko
ed74ed6ed2
CentOS/RHEL 6 SELinux permissions. 2022-02-16 12:56:17 -05:00
Adam Ierymenko
26e684eb0e
Add OpenSSL requirements to Linux package manifests. 2022-02-15 14:39:23 -05:00
Adam Ierymenko
fc66f79988 1.8.5 Windows 2022-02-15 13:09:54 -05:00
Adam Ierymenko
3c85a7f074
Rev roots. 2022-02-15 09:13:58 -05:00
Adam Ierymenko
62d2a00e74
Merge pull request #1093 from keur/unit_after_network
systemd: fix zerotier hanging on shutdown
2022-02-11 18:03:18 -05:00
Adam Ierymenko
bb2b109707
Merge pull request #1559 from zerotier/oldlinux
potential fix for 2.6.x kernels
2022-02-11 17:59:53 -05:00
Joseph Henry
c5008031b9
Increase ifname size to accomodate Windows (issue #1560) 2022-02-11 10:08:56 -08:00
Joseph Henry
1d15d4e8d3
Add ZT_DEBUG to DEFS when specified 2022-02-09 14:32:10 -08:00
Joseph Henry
da898d5a19 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-02-08 15:47:43 -08:00
Joseph Henry
f9c84c8c52
Remove stray debug trace 2022-02-08 15:32:25 -08:00
Grant Limberg
5d63ed6739
fix function call 2022-02-07 17:14:43 -08:00
Grant Limberg
fdf4ebd43c
potential fix for 2.6.x kernels
detect if the kernel is super old.  if so, do not execute the post IF_UP commands on the interface
2022-02-07 17:10:54 -08:00
Grant Limberg
dc9fdb7da8
Merge branch 'notify' into dev 2022-02-07 13:59:22 -08:00
Grant Limberg
2652c71c9e
remove tag one more time 2022-02-07 11:54:50 -08:00
Grant Limberg
806d1fff42
Merge branch 'notify' into dev 2022-02-07 11:46:23 -08:00
Grant Limberg
c065e88e1e
notify tags are back 2022-02-07 11:39:47 -08:00
Grant Limberg
4641a44029
does order matter? 2022-02-07 11:36:52 -08:00
Grant Limberg
f544f75c36
notify all again 2022-02-07 11:32:19 -08:00
Grant Limberg
720168f0a0
only notify on failure for now 2022-02-07 11:27:03 -08:00
Grant Limberg
6dfecca91e
poke 2022-02-07 11:23:38 -08:00
Grant Limberg
10b38b5b0a
poke 2022-02-07 11:14:46 -08:00
Sean OMeara
dbc5d5c453
Update .drone.yml
OCD made me do it
2022-02-07 19:54:56 +01:00
Grant Limberg
a3e0ba16f5
poke 2022-02-07 10:43:56 -08:00
Grant Limberg
3c906102e1
update notify image 2022-02-07 10:26:29 -08:00
Joseph Henry
566ac113e4 Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev 2022-02-07 10:10:24 -08:00
Grant Limberg
5abc8bd2af
specify tag 2022-02-07 10:09:01 -08:00
Joseph Henry
926b2e168e
Add external listening addr/port pairs to status output (ticket #1555) 2022-02-07 10:08:02 -08:00
Grant Limberg
e475e8151d
set pull: always on notify image 2022-02-07 09:56:31 -08:00
Grant Limberg
440f10e353
max retires 3 2022-02-04 13:48:48 -08:00
Grant Limberg
30256c7106
set max retries 2022-02-04 13:44:00 -08:00
Grant Limberg
21946f38d0
oops 2022-02-04 13:35:44 -08:00
Grant Limberg
549673664d
custom image 2022-02-04 13:34:28 -08:00
Sean OMeara
b45d0c5a36 tweaking 2022-02-04 22:08:56 +01:00
Sean OMeara
4df05c2890 running s390x on xeons 2022-02-04 22:08:14 +01:00
Sean OMeara
d886089091 running s390x on xeons 2022-02-04 22:05:29 +01:00
Grant Limberg
51158dde93
make it run on failure and succes 2022-02-04 12:58:12 -08:00
Grant Limberg
09fff7f1cb
lets try this 2022-02-04 12:50:19 -08:00
Sean OMeara
91f435f32f trying s390 on a gravaton 2022-02-04 21:42:00 +01:00