Arceliar
a1856258a9
Merge pull request #704 from Arceliar/queues
...
Faster queue logic
2020-05-30 18:39:33 -05:00
Arceliar
35e7542889
Merge pull request #706 from Arceliar/buffers
...
More buffer fine-tuning
2020-05-30 18:39:24 -05:00
Arceliar
c83b070c69
remove old switch lookup functions
2020-05-30 13:12:49 -05:00
Arceliar
0f28862e99
remove unused sequence number from switch
2020-05-30 10:48:59 -05:00
Arceliar
5e170e22e1
more switch fixes
2020-05-30 10:47:54 -05:00
Arceliar
3dc2242712
fix handling of keepAliveTimer and blocked state in link.go
2020-05-30 10:32:15 -05:00
Arceliar
8775075c18
debugging
2020-05-27 19:35:19 -05:00
Arceliar
905c28f7b2
fix some issues with the rewritten switch lookup tables
2020-05-27 19:31:17 -05:00
Arceliar
1df305d31c
simplify how blocking is detected and packets are dequeued
2020-05-27 18:53:14 -05:00
Arceliar
09f9f4e8e4
use heap.Fix instead of heap.Remove + heap.Push when updating queues, this is theoretically faster
2020-05-25 20:09:57 -05:00
Arceliar
674d8b58b6
get things compiling again
2020-05-25 19:27:17 -05:00
Arceliar
152e9057a0
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future
2020-05-25 19:25:05 -05:00
Arceliar
85eec5ba8e
tcp ygg-over-ygg debug logging
2020-05-25 19:13:37 -05:00
Arceliar
8345ae1fa3
don't allow ygg tcp connections to/from a local ygg address
2020-05-25 19:08:04 -05:00
Arceliar
dbc3b9b4c4
Merge pull request #701 from Arceliar/buffers
...
More buffer fine-tuning
2020-05-25 16:30:43 -05:00
Arceliar
366a8ba3dd
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future
2020-05-25 16:28:12 -05:00
Neil Alexander
45810fa184
Merge pull request #703 from Arceliar/dht
...
Store less in the DHT
2020-05-25 22:18:00 +01:00
Arceliar
1f65ffb310
work-in-progress heap-based queue structure
2020-05-25 16:07:56 -05:00
Arceliar
761ae531cb
work-in-progress faster queue logic
2020-05-25 15:19:32 -05:00
Arceliar
eefabb5f9f
disregard nodes if they're unimportant, even if they're already in the DHT
2020-05-25 12:44:06 -05:00
Arceliar
40bfd207f5
don't store every node we hear from in the DHT, only ones we already know about or that are important
2020-05-25 12:23:38 -05:00
Arceliar
f9bc0b7aee
use a more elaborate precomputed lookup table from the switch
2020-05-25 11:49:25 -05:00
Arceliar
38dcbb1e2f
cleaner way to handle seq/idle checks for the peer
2020-05-24 17:49:48 -05:00
Arceliar
4382368b08
make sure the peer isn't idle before entering drop mode
2020-05-24 17:43:35 -05:00
Arceliar
9574308545
have the peer delay setting a max buffer size, in case things have unblocked in the mean time
2020-05-24 17:35:49 -05:00
Arceliar
7778a47a8f
fix darwin compile problem
2020-05-24 15:46:18 -05:00
Arceliar
98816f34b2
don't spam calls to net.Interfaces and net.Interface.Addrs (hopefully)
2020-05-24 15:24:39 -05:00
Arceliar
1e471e3712
back to master's version of multicast, lets try rewriting it again
2020-05-24 14:43:38 -05:00
Arceliar
c2d6e9e8f1
close listener when a multicast interface is removed
2020-05-24 14:09:06 -05:00
Arceliar
77ded84ea5
simplify routerInterface
2020-05-23 12:21:23 -05:00
Arceliar
f2b9e95895
simplify routerInterface
2020-05-23 12:21:01 -05:00
Arceliar
07206b5d46
resolve merge conflicts
2020-05-23 11:33:37 -05:00
Arceliar
169b8747d4
Merge pull request #696 from Arceliar/bugfix
...
Bugfix
2020-05-23 11:24:03 -05:00
Arceliar
7063ddcc73
slightly cleaner fix to conn String deadlock issue
2020-05-23 11:16:03 -05:00
Arceliar
bc48e4bb80
fix deadlock in conn (unsafe use of phony.Block)
2020-05-23 11:11:11 -05:00
Arceliar
59896f17fd
more cleanup
2020-05-23 10:28:57 -05:00
Arceliar
ef1e506a0c
work-in-progress on more cleanup
2020-05-23 10:23:55 -05:00
Arceliar
59c5644a52
some peer/link cleanup
2020-05-23 10:08:23 -05:00
Arceliar
cf2edc99d1
correctly set peer.max
2020-05-17 13:32:58 -05:00
Arceliar
d43b93f60a
safer check for the queues if we're blocked on a send, should work even if we're blocked on a link packet send
2020-05-17 13:23:15 -05:00
Arceliar
ff3c8cb687
less aggresive queue size reduction
2020-05-17 12:58:57 -05:00
Arceliar
d96ae156a1
slight change to peer function names/args
2020-05-17 12:27:43 -05:00
Arceliar
7720e169f2
when we detect we're blocked, only drop packets often enough to make sure the existing queue's size is non-increasing, and always drop the worst packet from a random flow with odds based on the total size of packets queued for that flow
2020-05-17 12:09:40 -05:00
Arceliar
6e92af1cd2
re-enable a minimum queue size of ~1 big packet
2020-05-17 08:49:40 -05:00
Arceliar
0dcc555eab
cleaner startup/shutdown of the link writer's worker
2020-05-17 08:34:22 -05:00
Arceliar
15ac2595aa
use a dedicated per-stream writer goroutine, send messages to it over a 1-buffered channel, this eliminates most of the false positive blocking that causes drops
2020-05-17 08:22:02 -05:00
Arceliar
527d443916
move where the queue size check before dropping would occur
2020-05-17 07:21:09 -05:00
Arceliar
62b9fab5f8
more work-in-progress, debugging why things are dropping so often
2020-05-16 18:56:04 -05:00
Arceliar
b17a035a05
workarounds to dropping being too aggressive
2020-05-16 17:40:11 -05:00
Arceliar
b132560f65
it helps to actually run the notifyQueued stuff...
2020-05-16 17:24:26 -05:00
Arceliar
052de98f12
work-in-progress on buffering overhaul
2020-05-16 17:07:47 -05:00
Arceliar
dc128121e5
update switch blockPeer/unblockPeer logic and dht reset when coords change
2020-05-16 09:25:57 -05:00
Neil Alexander
f70b2ebcea
Fix bad check
2020-05-09 12:49:02 +01:00
Neil Alexander
2a2ad76479
Use maps instead of slices
2020-05-09 12:38:20 +01:00
Arceliar
433e392bdf
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future
2020-05-09 06:13:52 -05:00
Neil Alexander
a59fd2a489
Merge branch 'develop' into neilalexander/pinning
2020-05-09 12:12:24 +01:00
Arceliar
7779d86c5b
maybe fix multicast deadlock on darwin
2020-05-09 05:56:36 -05:00
Neil Alexander
13a2d99fdc
Set SOCKS peer addr to resolved address
2020-05-09 11:26:09 +01:00
Neil Alexander
8b180e941a
Add SOCKS proxy auth ( closes #423 )
2020-05-09 11:24:32 +01:00
Neil Alexander
58345ac198
Track proxy addr and real peer addr in SOCKS mode
2020-05-09 10:53:58 +01:00
Neil Alexander
fbf59184ee
Use query string instead, allow specifying multiple keys (might be useful for DNS RR)
2020-05-09 00:43:19 +01:00
Neil Alexander
e849b3e119
Initial support for pinning public keys in peering strings
2020-05-08 23:23:48 +01:00
Arceliar
107d9f0e8b
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into future
2020-05-03 05:20:30 -05:00
Arceliar
95f4ec52a4
save only the link-local addresses for multicast
2020-05-03 05:06:59 -05:00
Arceliar
de79401bb2
only call (net.Interface).Addrs() once per minute per interface
2020-05-03 02:50:04 -05:00
Arceliar
02e1cb180d
possibly reduce multicast cpu usage even more
2020-05-02 17:23:20 -05:00
Neil Alexander
127b7e311c
Clean up a bit
2020-05-02 22:37:12 +01:00
Neil Alexander
0c7cf65d27
Move some logging back to debug
2020-05-02 22:33:25 +01:00
Neil Alexander
a115d18595
Refactor the multicast code a bit
2020-05-02 22:26:41 +01:00
Arceliar
20ef591013
fix some crashes with races during peer setup
2020-05-02 11:16:11 -05:00
Arceliar
15162ee952
fix a panic from a doubly closed channel in the simlink
2020-05-02 10:51:26 -05:00
Arceliar
12d448f6d5
Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into sim
2020-05-02 10:40:00 -05:00
Arceliar
22526d89ec
Merge branch 'future' of https://github.com/yggdrasil-network/yggdrasil-go into sim
2020-05-02 10:09:03 -05:00
Arceliar
72afa05029
test dial/listen in the sim
2020-05-02 10:01:09 -05:00
Arceliar
6d89570860
eliminate most sync.Pool use, gives a safer but slightly slower interface
2020-05-02 06:44:51 -05:00
Arceliar
9c818c6278
work-in-progress on a new sim
2020-04-26 07:33:03 -05:00
Arceliar
9d0969db2b
prevent a hypothetical block on link message sending
2020-04-05 14:57:05 -05:00
Arceliar
09efdfef9a
fix bug in switch actor's cleanRoot, strict nonce handling at the session level, and add separate queues per stream to the packetqueue code
2020-04-03 19:26:48 -05:00
Arceliar
03a19997b8
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into buffers
2020-04-03 00:33:01 -05:00
Arceliar
945930aa2c
WIP have peer actors queue packets, temporarily a single simple FIFO queue with head drop
2020-04-03 00:32:26 -05:00
Arceliar
7a314afb31
check if an error was returned by Core._init and return it if so
2020-03-31 18:14:20 -05:00
Arceliar
9834f222db
more work in progress actorizing the remaining parts of the switch
2020-03-29 19:01:50 -05:00
Arceliar
15b850be6e
fix deadlock when running updateTable in the switch
2020-03-29 01:38:32 -05:00
Arceliar
d47797088f
fix shutdown deadlock
2020-03-29 00:48:41 -05:00
Arceliar
e926a3be6d
work in progress actorizing core.peers and replacing switch worker with per-peer switch-generated lookupTable
2020-03-29 00:23:38 -05:00
Arceliar
16309d2862
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into buffers
2020-03-28 21:10:34 -05:00
Arceliar
1ac3a18aab
Fix a typo in search.go's comments
2020-03-23 18:03:31 -05:00
Arceliar
a09a83530f
update search description in comments
2020-03-22 18:42:42 -05:00
Arceliar
b651e57203
allow searches to continue as long as the next hop is closer than the Nth closest node found so far where N is currently 16 instead of 1 (makes searches more reliable), and cache all intermediate search steps in the dht
2020-03-19 21:11:17 -05:00
Arceliar
4809879995
refactor switch code so calling lookupTable.lookup does most of the important work
2020-03-10 01:03:07 -05:00
Arceliar
cfd8641925
fix conflicts with memleak bugfix
2020-03-10 00:03:26 -05:00
Arceliar
8075a60900
possibly fix memory leak (if this works, i don't yet understand how the leak was happening originally)
2020-03-08 19:32:14 -05:00
Arceliar
f308e81bf3
in the switch, keep a separate set of queues per peer instead of a global queue
2020-02-18 20:13:39 -06:00
Neil Alexander
471fcd7fdf
Update doc.go dial example
2020-02-16 23:57:05 +00:00
Neil Alexander
6c731c4efc
Fix comment on LocalAddr
2020-02-16 23:45:11 +00:00
Neil Alexander
429189d11d
Use 'curve25519' instead of 'pubkey'
2020-02-16 23:44:20 +00:00
Neil Alexander
6b0b704645
Update comments
2020-02-16 23:30:47 +00:00
Neil Alexander
d16505e417
Update CKR
2020-02-16 23:26:18 +00:00
Neil Alexander
63936c11b5
Update tuntap module, return pointers
2020-02-16 23:21:58 +00:00
Neil Alexander
c107f891d2
Implement pubkeys in API functions
2020-02-16 23:12:39 +00:00
Arceliar
657777881b
actually schedule the search cleanup code to run
2020-02-08 20:33:35 -06:00
Arceliar
8e05c6c6a7
better search cleanup, but needs more testing to make sure it really works
2020-02-08 20:26:37 -06:00
Arceliar
d0e6846173
work in progress to make searches use parallel threads per response, so one malicious node doesn't block progress from honest ones
2020-02-08 20:15:48 -06:00
Arceliar
d7d0c2629c
don't deduplicate search responses, but limit the max number of nodes handled per response
2020-02-08 17:04:00 -06:00
Arceliar
cd9613fddc
add some additional debug timing info and logging to dials, and fix an unnecessary delay in search startup
2020-02-07 22:34:54 -06:00
Arceliar
3faa0b2854
deduplicate the list of nodes to visit in a search (keeping newest rumors)
2020-02-06 20:47:53 -06:00
Arceliar
7c2cb9a02d
more search fixes/updates
2020-02-06 20:21:17 -06:00
Arceliar
cd856426e5
search timing changes
2020-02-06 18:37:58 -06:00
Arceliar
70659bfb91
sort search response results before sending requests
2020-02-06 17:38:42 -06:00
Arceliar
7e64f54c1f
log some info about searches and reduce search traffic (especially when things dead-end)
2020-02-01 13:58:08 -06:00
Neil Alexander
c48c4ddc80
Merge pull request #641 from Arceliar/misc
...
Misc tuning
2020-01-10 11:35:51 +00:00
Neil Alexander
2fc6f9a71d
Merge pull request #643 from adamruzicka/mtu
...
Unify MTU datatypes across the codebase
2020-01-07 22:39:38 +00:00
Neil Alexander
ef4d5553b6
Merge pull request #636 from cathugger/develop
...
util: fix possible OOB in IPv4 flowkey calc, use switch there
2020-01-07 22:38:31 +00:00
Arceliar
c3b1a6af65
some nodeinfo actor fixes and adjust search timeout
2020-01-06 18:37:43 -06:00
Neil Alexander
8c12fc4fdb
Merge branch 'develop' into misc
2020-01-05 23:04:51 +00:00
Neil Alexander
9304873047
Convert nodeinfo to actor
2020-01-05 22:15:52 +00:00
Adam Ruzicka
8358fe5c5c
Unify MTU datatypes across the codebase
...
The codebase uses int and unit16 to represent MTU randomly. This change
unifies it to a MTU type from types package, which is currently uint16.
2020-01-05 18:01:22 +00:00
Arceliar
8513f8f4dc
constant space searches that should play nicer if searching for an unreachable destination
2020-01-04 16:08:48 -06:00
Arceliar
201dbec63d
always keep the 2 closest nodes in each direction around the dht ring, possibly helps things recover faster after joins/leaves
2019-12-25 19:01:20 -06:00
Arceliar
9fac5355eb
make searches more parallel
2019-12-25 18:55:29 -06:00
cathugger
ff5de89762
util: fix possible OOB in IPv4 flowkey calc, use switch there
...
ihl may grow upto 15*4=60 so extract and check it before using it as offset in flowkey calculation.
also replace IFs with switches for protocol matching as it's less redundant and nicer to document.
2019-12-11 15:24:43 +02:00
Anatolii Kurotych
4159ccb893
Fix return value in Multicast.Stop()
2019-11-30 16:05:44 +02:00
Arceliar
729d2ca2ba
Update crypto.go
2019-11-29 17:14:27 -06:00
Dimitris Apostolou
73f50af3b7
Fix typos
2019-11-29 11:45:02 +02:00
Arceliar
c2a8b4bb57
get rid of an allocation in tunWriter's _write
2019-11-28 12:00:00 -06:00
Neil Alexander
ad8d30ce74
Revert "Force packets through the switch to be buffered (seems to help the reordering problem on Windows)"
...
This reverts commit 837e7da792
.
2019-11-26 09:44:35 +00:00
Neil Alexander
328dd6c054
Merge branch 'develop' into goodbyewater
2019-11-26 09:20:15 +00:00
Arceliar
98339cdc3f
possible fix if monotonic time resolution is related to packet reordering
2019-11-25 17:40:58 -06:00
Neil Alexander
837e7da792
Force packets through the switch to be buffered (seems to help the reordering problem on Windows)
2019-11-25 20:13:41 +00:00
Arceliar
3e07995518
it helps to actually set the flag...
2019-11-24 18:53:58 -06:00
Arceliar
27cc57dbbc
attempt to prevent incorrect idle notification in switch, needs testing
2019-11-24 18:24:17 -06:00
Arceliar
2e95a3131c
comment out pointless error that prints on some platforms and not others
2019-11-24 15:37:37 -06:00
Arceliar
2982b53555
make offset generic over TUN_OFFSET_BYTES so we can make this platform dependent
2019-11-24 15:09:28 -06:00
Arceliar
f6f9b3ef76
include offset in expected bytes written
2019-11-24 15:01:20 -06:00
Arceliar
6560aac1e9
fix error spam on shutdown
2019-11-24 13:42:56 -06:00
Neil Alexander
746fac6594
Fix go.mod/go.sum again and update DoAsSystem call
2019-11-23 13:56:48 +00:00
Neil Alexander
d0a307db97
Use Wireguard's DoAsSystem, fix build tags and go.mod/go.sum
2019-11-23 13:46:05 +00:00
Neil Alexander
0529910b01
Reuse GUID so Windows no longer keeps creating new networks each time Yggdrasil starts
2019-11-23 13:34:27 +00:00
Neil Alexander
baebaabc43
Fix typo
2019-11-22 20:16:24 +00:00
Neil Alexander
3a0870a448
Fix IfName 'auto' behaviour on Windows
2019-11-22 20:11:39 +00:00
Neil Alexander
f95ebeb821
Remove references to TAP
2019-11-22 20:08:19 +00:00
Neil Alexander
7d00206f4b
Update platform defaults, handling of 'auto' on Linux/Darwin
2019-11-22 20:07:08 +00:00
Neil Alexander
b27ada9191
Fix bad Name() calls
2019-11-22 18:39:27 +00:00
Neil Alexander
235b64345e
Configure addresses and MTUs, fix bugs
2019-11-22 18:34:43 +00:00
Neil Alexander
f5517acc81
Drop Water, use Wireguard tun library, drop TAP support
2019-11-22 16:43:50 +00:00
Arceliar
248a08b2f1
send a message to the sessions to update mtu instead of trying to update it directly
2019-11-21 19:23:44 -06:00
Neil Alexander
7c18c6806d
Further updates, notify sessions about updated MTU from API call
2019-11-21 09:54:36 +00:00
Neil Alexander
d1c445dc41
Thread safety for MTU API functions
2019-11-21 09:28:36 +00:00
Neil Alexander
e90be6f569
Add API functions for manipulating maximum session MTU, fix TUN/TAP to use that
2019-11-21 00:02:39 +00:00
Neil Alexander
d06c40ad19
Use existing constant
2019-11-20 22:40:48 +00:00