Adam Ierymenko
367ffde00c
Plumb through localInterfaceId to track local interfaces corresponding with remote addresses.
11 years ago
Adam Ierymenko
0d386f1c31
Add a bit of useful testing instrumentation to SqliteNetworkController.
11 years ago
Adam Ierymenko
b31071463c
Try another NAT traversal improvement.
11 years ago
Adam Ierymenko
b3516c599b
Add a rate limiting circuit breaker to the network controller to prevent flooding attacks and race conditions.
11 years ago
Adam Ierymenko
3ba54c7e35
Eliminate some poorly thought out optimizations from the netconf/controller interaction,
...
and go ahead and bump version to 1.0.4.
For a while in 1.0.3 -dev I was trying to optimize out repeated network controller
requests by using a ratcheting mechanism. If the client received a network config
that was indeed different from the one it had, it would respond by instantlly
requesting it again.
Not sure what I was thinking. It's fundamentally unsafe to respond to a message
with another message of the same type -- it risks a race condition. In this case
that's exactly what could happen.
It just isn't worth the added complexity to avoid a tiny, tiny amount of network
overhead, so I've taken this whole path out.
A few extra bytes every two minutes isn't worth fretting about, but as I recall
the reason for this optimization was to save CPU on the controller. This can be
achieved by just caching responses in memory *there* and serving those same
responses back out if they haven't changed.
I think I developed that 'ratcheting' stuff before I went full time on this. It's
hard to develop stuff like this without hours of sustained focus.
11 years ago
Adam Ierymenko
0b354803f3
Clean up some YAGNI issues with implementation of GitHub issue #180 , and make best path choice aware of path rank.
11 years ago
Adam Ierymenko
4bf3bcbd55
Fixes to PUSH_DIRECT_PATHS.
11 years ago
Adam Ierymenko
3f0eca72f7
ZT_TRACE build fix.
11 years ago
Adam Ierymenko
412389ec75
Implement ERROR_UNWATNED_MULTICAST
11 years ago
Adam Ierymenko
778c7e6e70
More cleanup to direct path push, comment fixes, etc.
11 years ago
Adam Ierymenko
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.
11 years ago
Adam Ierymenko
f398952a6c
Revert some bad docs in Packet -- I think we will still use that. Also rename addMembershipCertificate to more security-descriptive validateAndAddMembershipCertificate, give it a return value, and drop unused force parameter.
11 years ago
Adam Ierymenko
6da9d2d36f
Remove debug printf().
11 years ago
Adam Ierymenko
f881cdd767
Add new .h file to VS build, and Windows side of local interface address enumeration.
11 years ago
Adam Ierymenko
79e9a8bcc2
Almost everything for GitHub issue #180 except direct path map setup.
11 years ago
Adam Ierymenko
fad9dff2db
Almost all of GitHub issue #180
11 years ago
Adam Ierymenko
e5f7c55c54
Documentation in Packet, more work on path push, and clean up ancient legacy support code in Switch.
11 years ago
Adam Ierymenko
7bae95836c
Root server terminology cleanup, and tighten up a security check by checking full identity of peers instead of just address.
11 years ago
Adam Ierymenko
87bb0086de
Almost certain fix for GitHub issue #184 on -dev
11 years ago
Adam Ierymenko
5341e32729
Fix to GitHub issue #140 -- network preferred relays. Also go ahead and allow RENDEZVOUS from regular peers.
11 years ago
Adam Ierymenko
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.
11 years ago
Kees Bos
a425bbc673
Renamed supernode to rootserver
11 years ago
Adam Ierymenko
b4b067bf12
So we need to keep track of external surface per reporter, since some NATs assign different external IPs for each external destination. Keeping just one known surface could create a race condition.
11 years ago
Adam Ierymenko
d3820049b8
Add reported external address to OK(HELLO) TRACE to verify SN behavior.
11 years ago
Adam Ierymenko
9eb7698f0e
Learn external IP addresses on OK(HELLO) too.
11 years ago
Adam Ierymenko
f5848972f9
Windows now builds and runs selftest correctly, and fixed a Windows (and possibly other platforms) issue in Phy<>.
11 years ago
Adam Ierymenko
417f56de2f
Add some TRACE instrumentation to external surface address awareness.
11 years ago
Adam Ierymenko
ea1859541c
More cleanup, and fix for the extremely unlikely case of identity collision.
11 years ago
Adam Ierymenko
6369c264e2
Rename netconf to controller and NetworkConfigMaster to NetworkController for consistency.
11 years ago
Adam Ierymenko
98bcc3d4b5
Disable a few noisy TRACEs, and limit how often we confirm new paths to avoid flooding.
11 years ago
Adam Ierymenko
068d311ecc
TRACE compile fixes, other fixes, and it basically works! It says HELLO.
11 years ago
Adam Ierymenko
4d5a6a25d3
Add events for packet decode errors, etc., and re-implement TRACE as an event.
11 years ago
Adam Ierymenko
52c3b7c34e
Implemented empirical determination of external addressing, paritioned per scope.
11 years ago
Adam Ierymenko
817824b88b
Some external surface awareness work, and IP scope classification.
11 years ago
Adam Ierymenko
a2821e9000
Add code to check external surface against reported surface from other trusted peers, and also rename ExternalSurface to SelfAwareness because lulz.
11 years ago
Adam Ierymenko
f4fd2d4971
Bring IncomingPacket into line with new changes.
11 years ago
Adam Ierymenko
1f28ce3980
Tons more refactoring: simplify Network, move explicit management of Tap out, redo COM serialization, etc.
11 years ago
Adam Ierymenko
b6fba5934a
RedisNetworkConfigMaster in its own folder. Also fix some hex/decimal Redis database confusion.
11 years ago
Adam Ierymenko
ff255a34de
Make NetworkConfigMaster a plugin to get Redis and other non-endpoint code out of node/
11 years ago
Adam Ierymenko
93012b0ee5
Re-incorporation: ZeroTier Networks -> ZeroTier, Inc. [Delaware]
11 years ago
Adam Ierymenko
b1bf3f68c3
Drop support for legacy P5 multicast, as there are fewer than 1% of these remaining on the network.
11 years ago
Adam Ierymenko
0b84c10ccc
Add confirmation step to new netconf, with the caveat that it will be disabled for older netconf servers to avoid race. Also add some comments.
11 years ago
Adam Ierymenko
afea153a0b
Build fixes.
11 years ago
Adam Ierymenko
64ba596e0b
C++ network config master ready to test.
11 years ago
Adam Ierymenko
4e95384ad6
Cleanup, add tristate to config code in Network, and happy new year!
11 years ago
Adam Ierymenko
56cfe1d603
Strip out old Service code, add new service message type.
11 years ago
Adam Ierymenko
ff539c22f9
locallyValidate() is expensive -- stop doing it on every HELLO since in most cases we already know the identity and know it is valid
11 years ago
Adam Ierymenko
8c64046a53
docs
11 years ago
Adam Ierymenko
15d3e383e6
Add ZT_SUPPORT_LEGACY_MULTICAST ifdef to enable the legacy code to all be toggled.
11 years ago
Adam Ierymenko
7619b0ecbd
Send multicasts in random order.
...
This should not affect most users, but on large networks it should cause service
announcements to work a lot better. This is the result of a prolonged discussion
with a user about the visibility of game servers on a large network. The old
multicast algorithm was de-facto randomized due to its distributed nature, while
the new algorithm is more deterministic. This will restore some randomization
beyond limit-overflow conditions.
It won't affect small networks at all.
11 years ago