303 Commits

Author SHA1 Message Date
Arceliar
7da4967f5e Limit maximum queue size to 4 MB 2018-07-05 23:39:41 -05:00
Arceliar
a7c8be4d69 base backpressure decisions on queue size in bytes, instead of packet counts 2018-07-05 23:07:01 -05:00
Arceliar
b63b534fa7 drop packets that have been queued for longer than some timeout (currently 25ms) instead of using fixed length queues 2018-06-25 18:12:18 -05:00
Arceliar
7695a3fcbf try using a simpler FIFO order for each backpressure buffer, since there are other mechanisms to penalize the flooding node, leads to better TCP throughput without affecting traffic between other nodes (does affect traffic in the same session, but there's hypothetically workarounds to that) 2018-06-24 20:20:07 -05:00
Arceliar
4ad2446557 cleanup 2018-06-24 18:21:00 -05:00
Arceliar
03949dcf3f fix my terrible bug, I have no idea why the old one even worked 2018-06-24 18:05:00 -05:00
Arceliar
9c028e1d0d switch to a separate queue per stream of traffic, FIXME for some reason this makes distance calculations more expensive in handleIdle? 2018-06-24 17:39:43 -05:00
Arceliar
189628b381 cleanup 2018-06-23 23:55:27 -05:00
Arceliar
0ad801bcfe more work on backpressure, but still needs more testing 2018-06-23 23:33:03 -05:00
Arceliar
4b83efa218 more backpressure work, still needs testing 2018-06-23 21:51:32 -05:00
Arceliar
52a0027aea switch refactoring, setup for a better approximation of local backpressure 2018-06-23 20:59:26 -05:00
Arceliar
988f4ad265 add a dedicated switch worker and start using it for lookups 2018-06-23 19:08:32 -05:00
Arceliar
2ae213c255 I'll try sorting, that's a good trick 2018-06-23 01:10:18 -05:00
Arceliar
cceecf4b1a larger out queue size, make sure linkOut packets always get sent first 2018-06-22 23:46:42 -05:00
Arceliar
0021f3463f slightly better way for the tcp sender goroutine(s) to block waiting for work 2018-06-22 20:39:57 -05:00
Neil Alexander
f68f779bee
Change box_pub_key to key in admin API 2018-06-22 22:26:17 +01:00
Arceliar
5dfa01a0e8 periodically clean up timed-out sessions and old signatures, instead of trying to do it when creating new sessions or adding new signatures 2018-06-21 20:31:30 -05:00
Arceliar
254be42614 gofmt 2018-06-21 10:39:43 -05:00
Arceliar
19014a198e randomize the delay after tcp disconnects, to prevent synchronization issues 2018-06-21 10:38:31 -05:00
Arceliar
f599a1a2c1 start the pprof based on an env variable in debug builds, otherwise remove the flag/release.go stuff 2018-06-21 10:32:16 -05:00
Arceliar
496dc94f02 possibly mitigate livelock bug where lossy links lead to constant connect/disconnect cycles due to disagreement about which of the two duplicate autoconnection attempts to use 2018-06-16 15:31:25 -05:00
Arceliar
7fe038f87e prevent parent nodes from forcing coord oscillation, have dht.handleRes clean up the old request info immediately 2018-06-14 12:32:18 -05:00
Neil Alexander
6c556da05e
Merge pull request #125 from Arceliar/cleanup
Cleanup
2018-06-14 15:26:34 +01:00
Arceliar
d9c9787611 avoid the proxy.SOCK5 connection attempt unless we're actually going to use the dialer 2018-06-14 09:21:35 -05:00
Arceliar
e8eaabf0c8 comment 2018-06-14 09:12:58 -05:00
Arceliar
57837057b7 tcp/socks cleanup 2018-06-14 09:11:34 -05:00
Arceliar
f7a7f601a0 cleanup old ugly session MTU code that only mattered with lossy UDP fragments 2018-06-14 08:38:43 -05:00
Arceliar
93ffc0b876 macos 2018-06-14 08:00:57 -05:00
Arceliar
e7fca66655 fix address/prefix code, platform specific parts still need testing 2018-06-14 07:58:07 -05:00
Arceliar
330175889e switch address range from fd00::/8 to the deprecated 0200::/7 range 2018-06-14 07:08:48 -05:00
Arceliar
cd514799da recover if p.doSend is closed due to a race between peers.doSendSwitchMsgs and peers.removePeer 2018-06-13 00:24:12 -05:00
Arceliar
b006748da4 code cleanup 2018-06-12 17:50:08 -05:00
Arceliar
9ce428af66
Merge pull request #112 from neilalexander/documentation
Adds more comments to ICMPv6 and TUN/TAP.
2018-06-12 17:11:24 -05:00
Neil Alexander
8e2c2aa977
Document ICMPv6 and TUN/TAP 2018-06-12 22:45:53 +01:00
Arceliar
24228bd381 disable unused configuration Net field and clean up comments to remove mention of UDP where no longer applicable 2018-06-12 14:00:04 -05:00
Arceliar
359af66d0d exponential dht throttle backoff, and make it based on when packets were sent as part of bootstrapping/maintenance, not when arbitrary packets were received 2018-06-12 03:16:10 -05:00
Arceliar
56802d569e minor documentation updates, code comments, and a couple of bugfixes that I noticed when going through the code to comment it 2018-06-10 18:03:28 -05:00
Arceliar
038a51fd13 it helps to add new files 2018-06-09 18:44:59 -05:00
Arceliar
72cca4ea43 version check/warning adjustments 2018-06-09 18:38:30 -05:00
Arceliar
076350f963 remove old tcp key exchange code 2018-06-09 17:49:02 -05:00
Arceliar
8733099516 add version metadata to key exchange at the start of connections 2018-06-09 17:46:19 -05:00
Arceliar
f5c850f098 better way to do wire signed ints (no negative zero, remove conditionals) 2018-06-09 16:36:13 -05:00
Arceliar
e5eb6de1f6 add inner crypto to linkProtoTraffic, using ephemeral keys, to prevent replay attacks from spoofing peer connections 2018-06-08 18:42:56 -05:00
Arceliar
1dcc60f054 check root before accepting that a message is good and unblocking a new peer 2018-06-08 17:33:16 -05:00
Arceliar
f30d040366 Merge branch 'master' of https://github.com/yggdrasil-network/yggdrasil-go into develop 2018-06-08 16:17:24 -05:00
Arceliar
495891d9e8 remove testing panics 2018-06-07 22:32:01 -05:00
Arceliar
e29f700dd6 enable multicast on interfaces that come up after startup 2018-06-07 22:07:19 -05:00
Arceliar
ea1d21f7e5 don't change dhtInfo.pings when sending a search, to prevent multiple different searches from evicting a node 2018-06-07 21:28:08 -05:00
Arceliar
bced15b138 remove TTL from traffic packets 2018-06-07 20:29:22 -05:00
Arceliar
84c13fac90 don't use TTL 2018-06-07 20:18:13 -05:00
Arceliar
fe12e1509a add a throttle to nodes in the dht. the throttle is gradually increased each time the node is pinged. it determines the minimum amount of time to wait between using the node in a bootstrapping search 2018-06-07 17:55:43 -05:00
Arceliar
ec1c173ca5 it helps to check that messages decoded correctly 2018-06-07 16:53:39 -05:00
Arceliar
bcfeb22915 more tcp debugging 2018-06-07 16:49:51 -05:00
Arceliar
63feed8dc3 adjust tcp timeout and add shadow queues to track dropped packets 2018-06-07 15:04:17 -05:00
Arceliar
c1f8baf9b5 update dht.reset() to possibly play better with coord changes 2018-06-07 14:39:43 -05:00
Arceliar
d468882147 cleanup 2018-06-07 14:24:02 -05:00
Arceliar
f8ba80e7d8 remove old switchMessage and clean up related code 2018-06-07 14:13:31 -05:00
Arceliar
00e4da28c7 use/store switchMsg in the switch instead of going through the old switchMessage 2018-06-07 13:56:11 -05:00
Arceliar
3dab94be9f keep dht peers alive 2018-06-07 10:58:24 -05:00
Arceliar
deb755e3e9 remove peer.linkIn channel and related logic 2018-06-07 00:49:06 -05:00
Arceliar
ecf37cae8a make the switch react to peer coord changes immediately, and send out updates immediately 2018-06-07 00:16:47 -05:00
Arceliar
85afe187ff remove peer timeout logic from the switch, so switch peer entrires are only removed when the peer struct is removed 2018-06-06 23:23:16 -05:00
Arceliar
3b783fbf97 move periodic switch maintenance into the router instead of its own goroutine 2018-06-06 23:10:33 -05:00
Arceliar
5dc0cb5544 move wire_encode_locator logic into getBytesForSig, since that's the only place it's used 2018-06-06 23:00:17 -05:00
Arceliar
1e7d34492d fix signature checks and add some TODO reminder comments 2018-06-06 22:39:22 -05:00
Arceliar
5fb33da3a2 remove old switch anc/hop/res code 2018-06-06 21:18:21 -05:00
Arceliar
6811759fc9 add new switchMsg struct to replace old anc/hop/res approach 2018-06-06 21:11:10 -05:00
Arceliar
690d29435d adjust link packet logic so they bypass the lifo stack and are delivered first 2018-06-06 17:44:10 -05:00
Arceliar
bbae9ff8e8
Merge pull request #92 from Arceliar/backpressure
Use backpressure instead of estimated bandwidth
2018-06-06 16:58:48 -05:00
Arceliar
fad6f6b50e remove udp.go 2018-06-06 16:57:36 -05:00
Arceliar
da928af361 fix sim and run gofmt 2018-06-06 16:49:23 -05:00
Arceliar
240841eb38 remove unused recursive search packets 2018-06-06 16:46:15 -05:00
Arceliar
1b89892610 remove UDP, to be replaced with a better implementation later 2018-06-06 16:40:35 -05:00
Neil Alexander
6d9d01dae1 Fix IfName='none' 2018-06-02 23:29:06 +01:00
Arceliar
b9ea5350c6 update search.go comments to describe the iterative approach 2018-06-02 16:45:45 -05:00
Arceliar
3e1ac81854 allow searches to start with nodes further from the destination than ourself 2018-06-02 16:39:34 -05:00
Arceliar
45abfafbba value instead of pointer types for search dest/mask 2018-06-02 16:33:58 -05:00
Arceliar
34939d4b18 update for wire format changes 2018-06-02 16:30:05 -05:00
Neil Alexander
bbdcee1015 Export fields of sessionPing, dhtReq, dhtRes 2018-06-02 22:19:42 +01:00
Neil Alexander
49af65296d Export fields of wire structs 2018-06-02 21:21:05 +01:00
Arceliar
28e6c738e2
Merge branch 'master' into iterdht 2018-06-02 15:00:24 -05:00
Arceliar
09baad48e3 retry failed iterative searches, possibly becoming parallel if things are just slow, and keep track of / skip nodes that were already visited in the search 2018-06-02 14:57:06 -05:00
Neil Alexander
bc37d4fb76 Improve formatting of dot: dashed grey for unknown nodes, sans-serif text 2018-06-02 14:24:06 +01:00
Arceliar
ed6c9c2a54 deduplicate dht responses when adding them to the search, limit the search toVisit size 2018-06-02 00:29:36 -05:00
Arceliar
10a72444e3 get itersearch to run in the sim 2018-06-02 00:16:47 -05:00
Arceliar
ecf7e490d7 start of iterative dht searches 2018-06-01 23:34:21 -05:00
Neil Alexander
ec80a81ed5 Mark extrapolated nodes with dashed outline 2018-06-01 23:33:02 +01:00
Neil Alexander
e4082f218f Add text to dot graph explaining how a node is known 2018-06-01 23:23:24 +01:00
Neil Alexander
a2df5107f0
Change colour scheme: green for self, yellow for peer, blue for open session, white for DHT 2018-06-01 14:20:47 +01:00
Arceliar
ca15bbea57 try color coding dot output 2018-05-31 20:28:09 -05:00
Neil Alexander
ccf71af6b7
Move Init from core.go to debug.go as function is only for simulator 2018-05-27 23:37:57 +01:00
Neil Alexander
460a22c063
Clean up some exported constants 2018-05-27 23:31:34 +01:00
Neil Alexander
a9e61d0d37
Add support for building "release" builds that don't contain pprof which are substantially smaller. To build a "debug" build, use "-tags debug" with "go build" 2018-05-27 23:22:50 +01:00
Neil Alexander
35173e2388
Fix starting TUN read/write 2018-05-27 22:35:30 +01:00
Neil Alexander
4c115de633
De-debug 2018-05-27 22:13:37 +01:00
Arceliar
38e7704161 use backpressure instead of estimated bandwidth, sorted by uptime to break ties 2018-05-27 13:37:35 -05:00
Arceliar
02ba9dc97c fix npe, these don't need to be pointers 2018-05-27 13:22:21 -05:00
Arceliar
7b12493417 panic if tcp startup fails, since otherwise a nil pointer occurs in multicast. make udp do the same thing. 2018-05-27 12:56:33 -05:00
Neil Alexander
a0f547cc1b
Fix being able to enable/disable multicast 2018-05-26 21:50:47 +01:00
Neil Alexander
bc899c395a
Fix accidental truncation of addresses ending in 8 on macOS and BSD 2018-05-26 21:47:54 +01:00