5b6d27e659
Implement relay policy, and setting multicast limit to 0 now disables multicast on the network as would be expected.
2016-09-13 14:27:18 -07:00
8ef0e4bbaf
Get rid of HELLO rate gate on path since its basically worthless. There are 65535 ports per IP.
2016-09-13 10:46:36 -07:00
ab9afbc749
(1) Public networks now get COMs even though they do not gate with them since they will need them to push auth for multicast stuff, (2) added a bunch of rate limit circuit breakers for anti-DOS, (3) cleanup.
2016-09-09 11:36:10 -07:00
a7d988745b
Use ECHO instead of HELLO where possible.
2016-09-07 12:01:03 -07:00
48a374c82c
(1) fix crazy bug introduced in doRENDEZVOUS(), (2) reclaim Paths after paths[] condense, (3) fix an edge case around symmetric NAT and external IP change detection.
2016-09-06 14:05:58 -07:00
43780742b0
comments, docs
2016-09-06 11:10:04 -07:00
d7f2287ce9
More tweaks to path behavior.
2016-09-05 15:47:22 -07:00
4992ac2d9f
Cluster sub-optimal is in fact necessary...
2016-09-02 14:20:55 -07:00
e8f6b4b5d3
Rest of big Path canonicalization refactor.
2016-09-02 11:51:33 -07:00
a3bdae9735
Work in progress: Path canonicalization refactor.
2016-09-01 15:43:07 -07:00
584228b2b5
Dead code removal, and get rid of reliable() because we will no longer make that distinction.
2016-08-24 17:56:35 -07:00
2c995f1f91
IPv6 links are unfortunately not "reliable." Many IPv6 gateways, while not
...
implementing NAT, do implement stateful firewalling with absurdly short
timeouts (<60s). Keepalives are still required in IPv6.
Network engineers continue to mindlessly carry forward cruft and baggage
from IPv4 to IPv6.
2016-05-31 10:30:00 -07:00
2f18a92e20
Cleanup in numerous places, reduce network chattiness around MULTICAST_LIKE, and fix a "how was that working" latent bug causing some control traffic to take the scenic route.
2016-04-19 12:09:35 -07:00
4c455876f9
Revise peer path weighting to always prioritize cluster-optimal paths.
2016-04-19 09:22:51 -07:00
82348e1537
Temporarily blacklist he.net IPv6 tunnel addresses for paths: these usually have a very low MTU which causes packet loss and other issues.
2016-02-10 11:06:26 -08:00
63ec7e58d4
Make activity no longer a function of ping frequency, since this causes compatibility bugs when the latter was modified due to timer interactions with other versions.
2016-02-08 10:03:01 -08:00
4e4fd51117
boring doc stuff
2016-01-12 14:04:55 -08:00
05b2c0743f
Tighten up dead path detection. Should now auto-detect dead paths in less than 10 seconds at a very small cost in ECHO requests (or HELLOs for older peers). GitHib issue #272
2016-01-06 10:00:03 -08:00
d8143a5e18
Implement first pass on rapid dead path detection, and increment version to 1.1.3 (dev)
2016-01-05 16:41:54 -08:00
436c1fac1d
Selectively move over changes from "edge" to "dev" excluding netcon.
2015-12-21 16:15:39 -08:00
35c4e28f31
Mark geo-redirected paths as suboptimal and do not report that we have a peer if all we have is one of these. Also a few other small fixes.
2015-11-09 14:25:28 -08:00
9f0f0197fe
More dead code removal.
2015-10-29 09:44:25 -07:00
a994573a43
Eliminate some more dead code. We may do path trust, but not like that.
2015-10-29 09:42:15 -07:00
51fcc75354
Some cleanup, and use getPeerNoCache() exclusively in Cluster.
2015-10-27 17:36:47 -07:00
16bc3e0398
Factor out RemotePath subclass of Path -- no longer needed, just cruft.
2015-10-27 15:00:16 -07:00
0b2e5ed499
Fix some broken logic in Path::reliable()
2015-10-19 15:11:43 -07:00
5076c49210
Peer serialization and related changes.
2015-10-01 15:40:54 -07:00
a3db7d0728
Refactor: move network COMs out of Network and into Peer in prep for tightening up multicast lookup and other things.
2015-10-01 11:11:52 -07:00
11ff96ba1d
Consider IPv6 paths reliable (no constant keepalives needed)
2015-09-30 15:20:08 -07:00
f69454ec98
(1) Make ZT_ naming convention consistent (get rid of ZT1_), (2) Make local interface a full sockaddr_storage instead of an int identifier, which turns out to be better for multi-homing and other uses.
2015-09-24 16:21:36 -07:00
0e5aac6a11
Prefer IPv6 paths if available.
2015-09-23 16:16:36 -07:00
0b354803f3
Clean up some YAGNI issues with implementation of GitHub issue #180 , and make best path choice aware of path rank.
2015-07-13 10:03:04 -07:00
c863ff3f02
A bunch of comments and cleanup, including some to yesterday's direct path pushing changes. Move path viability check to one place, and stop trying to use link-local addresses since they are not reliable.
2015-07-07 08:54:48 -07:00
235f4762b7
Plumbing for local interface addresses -- GitHub issue #180
2015-07-06 15:51:04 -07:00
93bb934d4e
Some cleanup, docs, and Path -> Path > RemotePath refactor.
2015-07-06 14:08:13 -07:00
feddd946f9
For curiosity add Salsa20/8 to benchmarks.
2015-07-06 13:51:25 -07:00
d9006712f6
Completely factor out "desperation" from the core. I thought of a significantly simpler way to move all of this logic entirely into the containing service, liberating the core from any concern over the nature of its pipe to the outside world.
2015-05-21 15:58:26 -07:00
49f031ccb4
Tons of refactoring, change to desperation algorithm to use max of core or link, porting over core loop code from old Node.cpp to new CAPI version, etc.
2015-04-07 19:31:11 -07:00
52c3b7c34e
Implemented empirical determination of external addressing, paritioned per scope.
2015-04-07 11:56:10 -07:00
6eb9289367
Bunch more cleanup, improvements to NAT traversal logic, finished updating Switch.
2015-04-03 16:52:53 -07:00
ee0f56355b
Send path simplification.
2015-04-03 13:14:37 -07:00
a69e1876f1
The concept of link desperation (escalating to less desirable transports) simplifies a ton of stuff. Loads of spaghetti logic can die since we no longer have to make these decisions down in the core.
2015-04-02 17:54:56 -07:00
93012b0ee5
Re-incorporation: ZeroTier Networks -> ZeroTier, Inc. [Delaware]
2015-02-17 13:11:34 -08:00
4e95384ad6
Cleanup, add tristate to config code in Network, and happy new year!
2015-01-05 17:47:59 -08:00
0e47f13f14
Simplify locking semantics some more to address a deadlock.
2014-10-21 10:42:04 -07:00
4e9280fc7a
Rip out dead "firewall opener" code, replace in pipeline with anti-symmetric-NAT tactics.
2014-09-05 16:23:24 -07:00
158002d2d1
Tweak some timings and stuff.
2014-04-03 16:19:41 -07:00
6ab95e0391
Get : out of Path.toString() since this will conflict with : in IPv6 IPs.
2014-04-01 08:52:52 -07:00
f13493edb2
Oops... turns out we need to differentiate incoming from outgoing TCP and indeed learn incoming TCP paths. Otherwise the recipient of a TCP connection does not know to reply via TCP! Heh.
2014-03-31 22:23:55 -07:00
8e587ae481
Clean dead paths from peers.
2014-03-31 11:41:14 -07:00