Adam Ierymenko
|
5f39d5b7ea
|
Further pare down Cluster messaging and rename some stuff.
|
2015-11-06 14:37:17 -08:00 |
|
Adam Ierymenko
|
9490b1f136
|
Try prioritizing cluster-send over direct send in cluster mode -- may improve cluster relaying reliability.
|
2015-11-06 13:38:56 -08:00 |
|
Adam Ierymenko
|
8ef4edebbf
|
Deferred decode for HELLO to prevent HELLOcalypse under high load of new peers.
|
2015-11-05 12:22:58 -08:00 |
|
Adam Ierymenko
|
c9e6e60c09
|
Handle ZeroTier-RFC4193 IPv6 address NDP queries inline by spoofing responses if the addressing scheme matches -- this allows multicast-free instant lookup of local IPv6 for better performance and reliability.
|
2015-11-03 10:46:41 -08:00 |
|
Adam Ierymenko
|
4e9d430476
|
Make root and relay selection somewhat more robust.
|
2015-11-02 16:03:28 -08:00 |
|
Adam Ierymenko
|
7fbe2f7adf
|
Tweak some more timings for better reliability.
|
2015-11-02 15:38:53 -08:00 |
|
Adam Ierymenko
|
16bc3e0398
|
Factor out RemotePath subclass of Path -- no longer needed, just cruft.
|
2015-10-27 15:00:16 -07:00 |
|
Adam Ierymenko
|
f692cec763
|
Change how cluster relays packets -- just PROXY_UNITE and then send packet via normal ZeroTier front plane -- more efficient and eliminates fragmentation issues.
|
2015-10-27 14:04:12 -07:00 |
|
Adam Ierymenko
|
de761c5a82
|
Fix test world def.
|
2015-10-26 15:47:32 -07:00 |
|
Adam Ierymenko
|
d6dee7bb5c
|
Clustered handling of relaying.
|
2015-10-20 17:22:53 -07:00 |
|
Adam Ierymenko
|
3adb183c5f
|
Fix bad COM attachment bug and eliminate an unnecessary redundant check.
|
2015-10-19 13:38:27 -07:00 |
|
Adam Ierymenko
|
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 |
|
Adam Ierymenko
|
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 |
|
Adam Ierymenko
|
367ffde00c
|
Plumb through localInterfaceId to track local interfaces corresponding with remote addresses.
|
2015-09-23 13:49:56 -07:00 |
|
Adam Ierymenko
|
85b90f122a
|
Final std::map<> from Switch, and add some smallish default values for hash size.
|
2015-09-04 15:35:43 -07:00 |
|
Adam Ierymenko
|
3dba016a93
|
Almost done... very few std::map<>s remaining in any spot that matters.
|
2015-09-04 15:21:22 -07:00 |
|
Adam Ierymenko
|
db0369e9b8
|
Remove way-overkill multimap from Switch.
|
2015-09-04 14:56:39 -07:00 |
|
Adam Ierymenko
|
0ab3e49be9
|
Starting in on Switch... kill map in defrag queue, which will probably improve performance pretty decently under high load with lots of peers.
|
2015-09-04 14:44:22 -07:00 |
|
Adam Ierymenko
|
eea8d58afa
|
docs,cleanup
|
2015-07-28 12:39:03 -07:00 |
|
Adam Ierymenko
|
21e6850722
|
Cancel NAT-t attempts if peer is no longer "alive"
|
2015-07-28 12:18:59 -07:00 |
|
Adam Ierymenko
|
4564dd95ff
|
Revert... no luck with any of that.
|
2015-07-28 12:00:50 -07:00 |
|
Adam Ierymenko
|
d2bfdfa6e7
|
Play with NAT-t tweaks some more.
|
2015-07-28 11:57:18 -07:00 |
|
Adam Ierymenko
|
17bfd4d55e
|
Add TRACE for NAT-t debugging.
|
2015-07-28 11:32:34 -07:00 |
|
Adam Ierymenko
|
b31071463c
|
Try another NAT traversal improvement.
|
2015-07-28 11:28:47 -07:00 |
|
Adam Ierymenko
|
821f1f366e
|
Fix to NAT escalation sequence.
|
2015-07-27 17:34:58 -07:00 |
|
Adam Ierymenko
|
e30ba3e138
|
Eliminate some aggressive port scanning NAT-t behavior that has proven ineffective.
|
2015-07-27 16:43:27 -07:00 |
|
Adam Ierymenko
|
fe20f0d7cd
|
Put back legacy code to listen for LAN announcements to support same network location with pre-1.0.4 clients.
|
2015-07-13 08:33:02 -07:00 |
|
Adam Ierymenko
|
3f567a07ca
|
Save a little bit of RAM by getting rid of overkill CMWC4096 non-crypto PRNG and replacing it with a simple non-crypto PRNG that just uses Salsa20.
|
2015-07-07 10:49:50 -07:00 |
|
Adam Ierymenko
|
41fc08b330
|
etherTypeName() is only used in Switch and only with ZT_TRACE
|
2015-07-07 10:06:05 -07:00 |
|
Adam Ierymenko
|
778c7e6e70
|
More cleanup to direct path push, comment fixes, etc.
|
2015-07-07 10:00:34 -07:00 |
|
Adam Ierymenko
|
cac55105c3
|
Fix a regression.
|
2015-07-06 16:40:23 -07:00 |
|
Adam Ierymenko
|
79e9a8bcc2
|
Almost everything for GitHub issue #180 except direct path map setup.
|
2015-07-06 15:28:48 -07:00 |
|
Adam Ierymenko
|
fad9dff2db
|
Almost all of GitHub issue #180
|
2015-07-06 15:05:04 -07:00 |
|
Adam Ierymenko
|
93bb934d4e
|
Some cleanup, docs, and Path -> Path > RemotePath refactor.
|
2015-07-06 14:08:13 -07:00 |
|
Adam Ierymenko
|
6bfbc43e3c
|
Include COM with EXT_FRAME in bridged case.
|
2015-07-06 12:46:27 -07:00 |
|
Adam Ierymenko
|
35b5dcf89d
|
Kill debug line.
|
2015-07-06 12:39:20 -07:00 |
|
Adam Ierymenko
|
e5f7c55c54
|
Documentation in Packet, more work on path push, and clean up ancient legacy support code in Switch.
|
2015-07-06 12:34:35 -07:00 |
|
Adam Ierymenko
|
57c7992c78
|
GitHub issue #191 - kill intra-network multicast rate limits (which were not well supported or easily configurable anyway) -- this is really left over from the old collaborative multicast propagation algorithm. New algorithm (in for a while) has been sender-side replication in which sender "pays" all bandwidth, which intrinsically limits multicast.
|
2015-06-26 12:36:45 -07:00 |
|
Adam Ierymenko
|
7bae95836c
|
Root server terminology cleanup, and tighten up a security check by checking full identity of peers instead of just address.
|
2015-06-19 10:23:25 -07:00 |
|
Kees Bos
|
a425bbc673
|
Renamed supernode to rootserver
|
2015-05-06 12:05:20 +02:00 |
|
Adam Ierymenko
|
5341e32729
|
Fix to GitHub issue #140 -- network preferred relays. Also go ahead and allow RENDEZVOUS from regular peers.
|
2015-06-01 19:05:27 -07:00 |
|
Adam Ierymenko
|
960ceb4791
|
Rest of GitHub issue #140 implementation.
|
2015-06-01 17:50:44 -07:00 |
|
Adam Ierymenko
|
d8783b14eb
|
Build fix.
|
2015-05-22 15:46:06 -07:00 |
|
Adam Ierymenko
|
6867922d9e
|
typo
|
2015-05-22 15:33:33 -07:00 |
|
Adam Ierymenko
|
196f27f1f0
|
Add delay to NAT-t escalation stuff to try to address GitHub issue #167
|
2015-05-22 13:11:55 -07:00 |
|
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.
|
2015-05-21 15:58:26 -07:00 |
|
Adam Ierymenko
|
a1005ca858
|
Do not unite() peers across different IP scopes as this would pretty much never work.
|
2015-04-26 16:03:16 -07:00 |
|
Adam Ierymenko
|
98bcc3d4b5
|
Disable a few noisy TRACEs, and limit how often we confirm new paths to avoid flooding.
|
2015-04-15 13:15:09 -07:00 |
|
Adam Ierymenko
|
1c9ca73065
|
Fix some deadlock issues, move awareness of broadcast subscription into core, other bug fixes.
|
2015-04-15 13:09:20 -07:00 |
|
Adam Ierymenko
|
5e331d6733
|
Restrict unite() to desperation==0 since NAT-t only works right now with direct links.
|
2015-04-10 10:13:50 -07:00 |
|
Adam Ierymenko
|
068d311ecc
|
TRACE compile fixes, other fixes, and it basically works! It says HELLO.
|
2015-04-09 20:54:00 -07:00 |
|
Adam Ierymenko
|
4d5a6a25d3
|
Add events for packet decode errors, etc., and re-implement TRACE as an event.
|
2015-04-08 16:49:21 -07:00 |
|
Adam Ierymenko
|
bf2ff964e1
|
Utils::now() removal and a bunch of compile fixes.
|
2015-04-08 15:26:45 -07:00 |
|
Adam Ierymenko
|
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 |
|
Adam Ierymenko
|
24608d5ca3
|
Always use HELLO to contact, and we now confirm newly learned paths via a two-way handshake to prevent half-connects.
|
2015-04-07 12:22:33 -07:00 |
|
Adam Ierymenko
|
197d272287
|
More NAT strategy cleanup.
|
2015-04-06 15:08:45 -07:00 |
|
Adam Ierymenko
|
be4683a96d
|
Get rid of random port strategy -- research does not support.
|
2015-04-06 15:03:08 -07:00 |
|
Adam Ierymenko
|
a95f1e1418
|
Eliminate redundant SharedPtr assignment.
|
2015-04-03 17:01:07 -07:00 |
|
Adam Ierymenko
|
6eb9289367
|
Bunch more cleanup, improvements to NAT traversal logic, finished updating Switch.
|
2015-04-03 16:52:53 -07:00 |
|
Adam Ierymenko
|
ee0f56355b
|
Send path simplification.
|
2015-04-03 13:14:37 -07:00 |
|
Adam Ierymenko
|
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 |
|
Adam Ierymenko
|
93012b0ee5
|
Re-incorporation: ZeroTier Networks -> ZeroTier, Inc. [Delaware]
|
2015-02-17 13:11:34 -08:00 |
|
Adam Ierymenko
|
4e95384ad6
|
Cleanup, add tristate to config code in Network, and happy new year!
|
2015-01-05 17:47:59 -08:00 |
|
Adam Ierymenko
|
0c85b4ef5f
|
Tweak to symmetric NAT buster to add one to the number of ports above the current one it attempts.
|
2014-11-20 13:42:18 -08:00 |
|
Adam Ierymenko
|
5bb854e504
|
Fix a nasty bug introduced in packet fragmentation a while back during refactoring, and a few other things related to multicast.
|
2014-10-28 17:25:34 -07:00 |
|
Adam Ierymenko
|
4941c8a1f3
|
New multicast bug fixes, TRACE improvements, and temporarily disable legacy multicast for debugging purposes.
|
2014-10-09 17:58:31 -07:00 |
|
Adam Ierymenko
|
d5e0f7e3e4
|
Reorg multicast packet, and a whole bunch of refactoring around the pushing of certificates of membership.
|
2014-10-09 12:42:25 -07:00 |
|
Adam Ierymenko
|
2c8321be1f
|
Pull logic to always send new multicasts to supernode since we need to do that differently, re-add support for active bridges, and remove some gratuitous use of std::set where not needed.
|
2014-10-04 13:15:02 -07:00 |
|
Adam Ierymenko
|
e7c81ef34e
|
Turns out that needed to be a list after all. Also clean up Multicaster::gather().
|
2014-10-03 22:03:19 -07:00 |
|
Adam Ierymenko
|
49dc47ff38
|
Make multicast gathering a bit smarter.
|
2014-10-02 11:35:37 -07:00 |
|
Adam Ierymenko
|
e1882b614b
|
Some cleanup, Multicaster now sends multicasts as it gets additional members.
|
2014-10-01 14:05:25 -07:00 |
|
Adam Ierymenko
|
ae082c3cb8
|
Yay... now everything compiles! Getting close to testing on this. Still have not added backward compatibility support for relaying of multicasts to 0.9.X clients yet but that will be easy. Will test with heterogenous 1.0.0 clients only first.
|
2014-10-01 12:41:48 -07:00 |
|
Adam Ierymenko
|
8607aa7c3c
|
Everything in for new multicast except IncomingPacket parsing...
|
2014-09-30 08:38:03 -07:00 |
|
Adam Ierymenko
|
81b12b6826
|
Rename the ubiquitous _r pointer to RuntimeEnvironment to RR just to be a little more consistent about using _ to denote private member variables.
|
2014-09-24 13:53:03 -07:00 |
|
Adam Ierymenko
|
431476e2e4
|
Some more multicast algo work...
|
2014-09-24 13:45:58 -07:00 |
|
Adam Ierymenko
|
557801a09e
|
Rename PacketDecoder to much more descriptive IncomingPacket
|
2014-09-24 09:04:09 -07:00 |
|
Adam Ierymenko
|
d9abd4d9be
|
Work on defining new direct broadcast multicast algorithm.
|
2014-09-18 18:28:14 -07:00 |
|
Adam Ierymenko
|
4e9280fc7a
|
Rip out dead "firewall opener" code, replace in pipeline with anti-symmetric-NAT tactics.
|
2014-09-05 16:23:24 -07:00 |
|
Adam Ierymenko
|
282114e96c
|
Makefile changes, and make Topology::getBestSupernode() return the "next" supernode if I am a supernode. Also some comment cleanup.
|
2014-08-19 10:09:21 -07:00 |
|
Adam Ierymenko
|
8a804b5257
|
(1) Disable firewall openers (its easy to re-enable), (2) Do some prep work for making supernode topology hot-updatable.
|
2014-08-05 14:05:50 -07:00 |
|
Adam Ierymenko
|
88bdb81791
|
Keep track of basic aliveness for peers regardless if direct or indirect connectivity and use this for multicast propagation. Also consolidate adding of active bridges via the same functor as regular multicast next hops.
|
2014-06-30 11:31:04 -07:00 |
|
Adam Ierymenko
|
458f6ae7c3
|
Only add active bridges to top of MC propagation list if they are alive. Otherwise a dead active bridge might kill multicast for us.
|
2014-06-26 18:13:48 -07:00 |
|
Adam Ierymenko
|
ae7143d693
|
Comments and cleanup.
|
2014-06-21 12:19:10 -07:00 |
|
Adam Ierymenko
|
aead1050fb
|
Bridging (GitHub issue #68) does indeed work! Just needed to fix a packet size thinko.
|
2014-06-21 12:29:33 -04:00 |
|
Adam Ierymenko
|
11e1f7a3fb
|
.
|
2014-06-21 12:01:26 -04:00 |
|
Adam Ierymenko
|
0b0d5fabac
|
Bridging #68 should work now!
|
2014-06-21 11:59:08 -04:00 |
|
Adam Ierymenko
|
35aa0921ee
|
.
|
2014-06-21 11:47:26 -04:00 |
|
Adam Ierymenko
|
2f8936181c
|
Debug code -- temporary.
|
2014-06-21 08:36:23 -07:00 |
|
Adam Ierymenko
|
5d467f0f45
|
Some TRACE improvements and comment revs.
|
2014-06-18 08:25:30 -07:00 |
|
Adam Ierymenko
|
2162a419e3
|
Some logging fixes.
|
2014-06-17 13:52:55 -07:00 |
|
Adam Ierymenko
|
6802da457e
|
Bridging pretty much ready to test! Got Switch all wired up. Also fix a latent probably-never-triggered bug in MULTICAST_FRAME handling. GitHub issue #68
|
2014-06-13 21:06:34 -07:00 |
|
Adam Ierymenko
|
5682f0b772
|
Some more bridging work... wiring up in Switch - GitHub issue #68
|
2014-06-13 17:49:33 -07:00 |
|
Adam Ierymenko
|
657f6ae342
|
Don't transmit broadcasts if enableBroadcast is false on a network.
|
2014-05-23 19:52:39 -04:00 |
|
Adam Ierymenko
|
beb7b5bbe5
|
GitHub Issue #69 - make MAC assignment schema differ between virtual networks.
|
2014-05-23 14:32:31 -07:00 |
|
Adam Ierymenko
|
aee742e767
|
More toward GitHub issue #56
|
2014-04-10 16:30:15 -07:00 |
|
Adam Ierymenko
|
c9294c1a78
|
Prevent recursive transit of ZeroTier packets, toward GitHub issue #56
|
2014-04-10 14:22:25 -07:00 |
|
Adam Ierymenko
|
b117ff5435
|
Probable fix for GitHub issue #63 - do not unite() if either path is TCP, since doing so can result in asymmetric failed NAT-t over UDP if one side has a firewall that permits outgoing UDP but not incoming.
|
2014-04-10 11:17:54 -07:00 |
|
Adam Ierymenko
|
316e8d1939
|
Build fix.
|
2014-03-31 22:30:08 -07:00 |
|
Adam Ierymenko
|
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 |
|
Adam Ierymenko
|
daaec84c6b
|
Add TCP channel support for supernode list, make Peer pick the first path if all paths are equally dead.
|
2014-03-26 15:35:15 -07:00 |
|