summaryrefslogtreecommitdiff
path: root/node/IncomingPacket.cpp
AgeCommit message (Collapse)Author
2015-07-28Try another NAT traversal improvement.Adam Ierymenko
2015-07-23Add a rate limiting circuit breaker to the network controller to prevent ↵Adam Ierymenko
flooding attacks and race conditions.
2015-07-23Eliminate some poorly thought out optimizations from the netconf/controller ↵Adam Ierymenko
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.
2015-07-13Clean up some YAGNI issues with implementation of GitHub issue #180, and ↵Adam Ierymenko
make best path choice aware of path rank.
2015-07-13Merge branch 'adamierymenko-dev' of ↵Adam Ierymenko
http://git.int.zerotier.com/zerotier/zerotierone into adamierymenko-dev
2015-07-13Fixes to PUSH_DIRECT_PATHS.Adam Ierymenko
2015-07-13ZT_TRACE build fix.Adam Ierymenko
2015-07-07Implement ERROR_UNWATNED_MULTICASTAdam Ierymenko
2015-07-07More cleanup to direct path push, comment fixes, etc.Adam Ierymenko
2015-07-07A bunch of comments and cleanup, including some to yesterday's direct path ↵Adam Ierymenko
pushing changes. Move path viability check to one place, and stop trying to use link-local addresses since they are not reliable.
2015-07-07Revert some bad docs in Packet -- I think we will still use that. Also ↵Adam Ierymenko
rename addMembershipCertificate to more security-descriptive validateAndAddMembershipCertificate, give it a return value, and drop unused force parameter.
2015-07-06Remove debug printf().Adam Ierymenko
2015-07-06Add new .h file to VS build, and Windows side of local interface address ↵Adam Ierymenko
enumeration.
2015-07-06Almost everything for GitHub issue #180 except direct path map setup.Adam Ierymenko
2015-07-06Almost all of GitHub issue #180Adam Ierymenko
2015-07-06Documentation in Packet, more work on path push, and clean up ancient legacy ↵Adam Ierymenko
support code in Switch.
2015-06-19Root server terminology cleanup, and tighten up a security check by checking ↵Adam Ierymenko
full identity of peers instead of just address.
2015-06-17Almost certain fix for GitHub issue #184 on -devAdam Ierymenko
2015-05-06Renamed supernode to rootserverKees Bos
2015-06-01Fix to GitHub issue #140 -- network preferred relays. Also go ahead and ↵Adam Ierymenko
allow RENDEZVOUS from regular peers.
2015-05-21Completely factor out "desperation" from the core. I thought of a ↵Adam Ierymenko
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-04So we need to keep track of external surface per reporter, since some NATs ↵Adam Ierymenko
assign different external IPs for each external destination. Keeping just one known surface could create a race condition.
2015-04-30Add reported external address to OK(HELLO) TRACE to verify SN behavior.Adam Ierymenko
2015-04-30Learn external IP addresses on OK(HELLO) too.Adam Ierymenko
2015-04-24Windows now builds and runs selftest correctly, and fixed a Windows (and ↵Adam Ierymenko
possibly other platforms) issue in Phy<>.
2015-04-17Add some TRACE instrumentation to external surface address awareness.Adam Ierymenko
2015-04-15More cleanup, and fix for the extremely unlikely case of identity collision.Adam Ierymenko
2015-04-15Rename netconf to controller and NetworkConfigMaster to NetworkController ↵Adam Ierymenko
for consistency.
2015-04-15Disable a few noisy TRACEs, and limit how often we confirm new paths to ↵Adam Ierymenko
avoid flooding.
2015-04-09TRACE compile fixes, other fixes, and it basically works! It says HELLO.Adam Ierymenko
2015-04-08Add events for packet decode errors, etc., and re-implement TRACE as an event.Adam Ierymenko
2015-04-07Implemented empirical determination of external addressing, paritioned per ↵Adam Ierymenko
scope.
2015-04-07Some external surface awareness work, and IP scope classification.Adam Ierymenko
2015-04-06Add code to check external surface against reported surface from other ↵Adam Ierymenko
trusted peers, and also rename ExternalSurface to SelfAwareness because lulz.
2015-04-06Bring IncomingPacket into line with new changes.Adam Ierymenko
2015-04-01Tons more refactoring: simplify Network, move explicit management of Tap ↵Adam Ierymenko
out, redo COM serialization, etc.
2015-02-24RedisNetworkConfigMaster in its own folder. Also fix some hex/decimal Redis ↵Adam Ierymenko
database confusion.
2015-02-24Make NetworkConfigMaster a plugin to get Redis and other non-endpoint code ↵Adam Ierymenko
out of node/
2015-02-17Re-incorporation: ZeroTier Networks -> ZeroTier, Inc. [Delaware]Adam Ierymenko
2015-02-02Drop support for legacy P5 multicast, as there are fewer than 1% of these ↵Adam Ierymenko
remaining on the network.
2015-01-09Add confirmation step to new netconf, with the caveat that it will be ↵Adam Ierymenko
disabled for older netconf servers to avoid race. Also add some comments.
2015-01-08Build fixes.Adam Ierymenko
2015-01-08C++ network config master ready to test.Adam Ierymenko
2015-01-05Cleanup, add tristate to config code in Network, and happy new year!Adam Ierymenko
2015-01-05Strip out old Service code, add new service message type.Adam Ierymenko
2014-12-16locallyValidate() is expensive -- stop doing it on every HELLO since in most ↵Adam Ierymenko
cases we already know the identity and know it is valid
2014-11-26docsAdam Ierymenko
2014-11-25Add ZT_SUPPORT_LEGACY_MULTICAST ifdef to enable the legacy code to all be ↵Adam Ierymenko
toggled.
2014-11-21Send multicasts in random order.Adam Ierymenko
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.
2014-11-13Prevent "software laser" in legacy multicast support. Already hotpatched in ↵Adam Ierymenko
supernodes.