Arceliar
|
a8b323acdd
|
have an actor manage the crypto worker pool instead of each session trying to use it directly, this should result in a fairer round-robin behavior in cases where crypto congestion is the bottleneck
|
2019-08-27 20:01:37 -05:00 |
|
Arceliar
|
3845f81357
|
update to latest phony, adjust interface use accordingly
|
2019-08-27 19:43:54 -05:00 |
|
Arceliar
|
4d9c6342a7
|
more link updates
|
2019-08-26 18:37:38 -05:00 |
|
Arceliar
|
c97dd4ad28
|
fix dial bug
|
2019-08-26 00:38:14 -05:00 |
|
Arceliar
|
ab59129557
|
have the writer clean things up. note that their still seem to be bugs in the main linkInterface actor's state machine--links sometimes just die, presumably because they're dropped from the switch and never replaced
|
2019-08-25 23:24:18 -05:00 |
|
Arceliar
|
bd3eaefb72
|
more link migration
|
2019-08-25 22:55:17 -05:00 |
|
Arceliar
|
b5b179904b
|
ugly work-in-progress to migrate link to the actor model
|
2019-08-25 22:19:20 -05:00 |
|
Arceliar
|
dffd70119d
|
remove session shutdown goroutine, just send a message instead
|
2019-08-25 19:13:47 -05:00 |
|
Arceliar
|
502f2937a9
|
a couple race fixes and use timer.AfterFunc instead of sleeping goroutines or ticker in a few places
|
2019-08-25 17:00:02 -05:00 |
|
Arceliar
|
a3d4d8125b
|
make the main library reconfiguration more actor-friendly
|
2019-08-25 12:10:59 -05:00 |
|
Arceliar
|
aa30c6cc98
|
upgrade phony dependency and switch to its new interface
|
2019-08-25 10:36:09 -05:00 |
|
Arceliar
|
5312b21665
|
Merge branch 'develop' of https://github.com/yggdrasil-network/yggdrasil-go into actors
|
2019-08-24 18:30:15 -05:00 |
|
Arceliar
|
f62bc842ae
|
fix memory leak in session nonce map
|
2019-08-24 18:23:54 -05:00 |
|
Arceliar
|
48bbdac9b3
|
add a helper actor to the link reader to make it play nicer with backpressure
|
2019-08-24 16:27:12 -05:00 |
|
Arceliar
|
99be6b037d
|
stop synchronizing message reads for now, not 100% safe but I don't have any better ideas
|
2019-08-24 16:13:34 -05:00 |
|
Arceliar
|
209d2ffea5
|
correctly call peer.sendPacketsFrom in the switch
|
2019-08-24 16:04:05 -05:00 |
|
Arceliar
|
8c7e9ec7c0
|
fix debug builds
|
2019-08-24 15:32:19 -05:00 |
|
Arceliar
|
c573170886
|
remove switch doworker loop, start a dummy loop to respond to (unused) reconfiguration instead
|
2019-08-24 15:27:56 -05:00 |
|
Arceliar
|
998c76fd8c
|
more switch migration
|
2019-08-24 15:22:46 -05:00 |
|
Arceliar
|
555b4c18d4
|
a little switch cleanup
|
2019-08-24 15:05:18 -05:00 |
|
Arceliar
|
498bc395e2
|
start migrating switch to the actor model
|
2019-08-24 14:56:33 -05:00 |
|
Arceliar
|
b337228aa4
|
minor fixes to peer stuff
|
2019-08-24 14:24:42 -05:00 |
|
Arceliar
|
0539dee900
|
warning about possible deadlock in legacy channel send, need to migrate the link code to fix it
|
2019-08-24 13:25:38 -05:00 |
|
Arceliar
|
034fece33f
|
more peer migration
|
2019-08-24 13:15:29 -05:00 |
|
Arceliar
|
ecd23ce9fc
|
safer linkloop
|
2019-08-24 12:59:20 -05:00 |
|
Arceliar
|
88161009e9
|
more peer migration
|
2019-08-24 12:55:49 -05:00 |
|
Arceliar
|
775fb535dc
|
start converting the peer struct into an actor
|
2019-08-24 12:46:24 -05:00 |
|
Arceliar
|
b582c444f8
|
minor cleanup
|
2019-08-24 01:57:08 -05:00 |
|
Arceliar
|
1e346aaad0
|
have the conn actor receive messages from the session actor and either pass them to a callback or buffer them in a channel for Read to use if no callback was set
|
2019-08-24 01:52:21 -05:00 |
|
Arceliar
|
9948e3d659
|
add Conn.WriteFrom to allow actor-based sending
|
2019-08-24 00:44:02 -05:00 |
|
Arceliar
|
da9f7151e3
|
more conn migration
|
2019-08-24 00:17:37 -05:00 |
|
Arceliar
|
6ecbc439f0
|
start migrating Conn to be an actor
|
2019-08-23 23:36:00 -05:00 |
|
Arceliar
|
cac3444d9a
|
fix debug builds
|
2019-08-23 22:40:13 -05:00 |
|
Arceliar
|
cf9880464b
|
explicitly consider the session finished case, and make a note that we could fix the packet drop situation by making the Conn into an actor too
|
2019-08-23 22:36:59 -05:00 |
|
Arceliar
|
e3603c0462
|
clean up unused session code
|
2019-08-23 22:25:40 -05:00 |
|
Arceliar
|
533da351f9
|
fix actor EnqueueFrom stack overflow (use nil now to send from self) and replace session send/recv workers with actor functions
|
2019-08-23 22:23:01 -05:00 |
|
Arceliar
|
436c84ca33
|
refactor sessions to store a pointer to router instead of core
|
2019-08-23 20:53:00 -05:00 |
|
Arceliar
|
5bb85cf07b
|
refactor searches to store a pointer to router instead of core
|
2019-08-23 20:42:38 -05:00 |
|
Arceliar
|
e7024a00e7
|
have dht store a pointer to router instead of core
|
2019-08-23 20:35:54 -05:00 |
|
Arceliar
|
ebd806f27a
|
move router member initialization into router.init
|
2019-08-23 20:29:16 -05:00 |
|
Arceliar
|
9835c63818
|
refactor things the router owns (dht, sessions, searches) into that struct, to make the ownership more explicit
|
2019-08-23 20:26:15 -05:00 |
|
Arceliar
|
bbcbbaf3b1
|
start migrating sessionInfo to be an actor
|
2019-08-23 20:05:18 -05:00 |
|
Arceliar
|
8e89816099
|
more router migration: rename functions that should only be called internally by the actor
|
2019-08-23 18:59:34 -05:00 |
|
Arceliar
|
232e6d3cb3
|
more router migration
|
2019-08-23 18:55:41 -05:00 |
|
Arceliar
|
9d7e7288c6
|
start migrating the router to an actor
|
2019-08-23 18:47:15 -05:00 |
|
Arceliar
|
226dd6170d
|
hopefully prevent a deadlock
|
2019-08-20 18:49:53 -05:00 |
|
Arceliar
|
834a6a6f1a
|
don't allocate a new child cancellation in Conn read/write calls if no deadline is set
|
2019-08-19 18:06:05 -05:00 |
|
Arceliar
|
8af1a7086c
|
when a link becomes idle and packet are buffered that the link could send, send at least 65535 bytes worth instead of 1 packet, this reduces syscall overhead when small packets are sent through the network
|
2019-08-18 12:29:07 -05:00 |
|
Arceliar
|
62337bcd64
|
allow links to send multiple packets at once, currently we still only bother to send 1 at a time from the switch level
|
2019-08-18 12:17:54 -05:00 |
|
Arceliar
|
fd5f3ca764
|
fix heap pop order
|
2019-08-16 23:07:40 -05:00 |
|
Arceliar
|
03b8af9f1a
|
keep track of recent nonces with a heap and a map instead of a fixed-size bitmask
|
2019-08-16 18:37:16 -05:00 |
|
Neil Alexander
|
5b054766a2
|
Update comments in handleIn, add switch_getFlowLabelFromCoords helper (in case it is useful if we try to consider flowlabels in multi-link scenarios)
|
2019-08-15 10:54:04 +01:00 |
|
Arceliar
|
1a2b7a8b60
|
test a change to how switch hops are selected when multiple links are idle
|
2019-08-14 17:57:36 -05:00 |
|
Neil Alexander
|
33cd10c463
|
Merge branch 'issues/488' of github.com:slex/yggdrasil-go into issues/488
|
2019-08-14 19:58:45 +01:00 |
|
Neil Alexander
|
d9fabad8bc
|
Merge pull request #502 from Arceliar/linkleak
Try to fix leaks in #501
|
2019-08-14 07:17:39 +01:00 |
|
Arceliar
|
46c5df1c23
|
when we abandon a link because we already have a connection to that peer, only wait for the connection to close if it's an *outgoing* link, otherwise incomming connection attempts can cause us to leak links
|
2019-08-13 18:49:49 -05:00 |
|
Arceliar
|
b2cb1d965c
|
avoid leaking sessions when no listener exists, or blocking if it's busy
|
2019-08-12 18:22:30 -05:00 |
|
Arceliar
|
277da1fe60
|
make sure searches don't end if try to continue (in parallel) with nowhere left to send, but we just sent a search and are still waiting for a response
|
2019-08-11 13:11:14 -05:00 |
|
Arceliar
|
7a28eb787e
|
try to fix a few edge cases with searches that could lead them to ending without the callback being run or without cleaning up the old search info
|
2019-08-11 13:00:19 -05:00 |
|
Slex
|
589ad638ea
|
Implement feature from https://github.com/yggdrasil-network/yggdrasil-go/issues/488
|
2019-08-11 00:31:22 +03:00 |
|
Arceliar
|
5e81a0c421
|
Use a separate buffer per session for incoming packets, so 1 session that floods won't block other sessions
|
2019-08-07 18:08:31 -05:00 |
|
Arceliar
|
9ab08446ff
|
make sure the sessionInfo.recvWorker doesn't block if sinfo.recv somehow fills
|
2019-08-07 17:40:50 -05:00 |
|
Neil Alexander
|
c99ed9fb60
|
Merge pull request #491 from Arceliar/flowkey
Fix the old flowkey stuff so congestion control actually works...
|
2019-08-07 10:33:17 +01:00 |
|
Arceliar
|
d795ab1b65
|
minor allocation fix
|
2019-08-06 20:51:38 -05:00 |
|
Arceliar
|
790524bd1c
|
copy/paste old flowkey logic into a util function, add a struct of key and packet, make WriteNoCopy accept this instead of a slice
|
2019-08-06 19:25:55 -05:00 |
|
Arceliar
|
679866d5ff
|
have createSession fill the sessionInfo.cancel field, have Conn use Conn.session.cancel instead of storing its own cancellation, this should prevent any of these things from being both nil and reachable at the same time
|
2019-08-05 19:11:28 -05:00 |
|
Arceliar
|
84a4f54217
|
temporary fix to nil pointer, better to make sure it's never nil
|
2019-08-05 18:49:15 -05:00 |
|
Neil Alexander
|
bd3b42022b
|
Merge pull request #480 from Arceliar/speedup
Speedup
|
2019-08-05 10:24:54 +01:00 |
|
Neil Alexander
|
3a2ae9d902
|
Update API to represent coords as []uint64
|
2019-08-05 10:17:19 +01:00 |
|
Neil Alexander
|
37533f157d
|
Make some API changes (currently broken)
|
2019-08-05 00:30:12 +01:00 |
|
Arceliar
|
979c3d4c07
|
move some potentially blocking operations out of session pool workers, minor cleanup
|
2019-08-04 16:29:58 -05:00 |
|
Arceliar
|
c55d7b4705
|
have the switch queue drop packts to ourself when the total size of all packets is at least queueTotalMaxSize, instead of an arbitrary unconfigurable packet count
|
2019-08-04 16:16:49 -05:00 |
|
Arceliar
|
5d5486049b
|
add Conn.ReadNoCopy and Conn.WriteNoCopy that transfer ownership of a slice instead of copying, have Read and Write use the NoCopy versions under the hood and just manage copying as needed
|
2019-08-04 15:53:34 -05:00 |
|
Arceliar
|
07f14f92ed
|
disable crypto and switch buffer changes from testing
|
2019-08-04 15:25:14 -05:00 |
|
Arceliar
|
0ba8c6a34f
|
have the stream code use bufio instead of copying manually to an input buffer, slightly reduces total uses of memmove
|
2019-08-04 15:21:04 -05:00 |
|
Arceliar
|
f52955ee0f
|
WARNING: CRYPTO DISABLED while speeding up stream writeMsg
|
2019-08-04 14:18:59 -05:00 |
|
Arceliar
|
1e6a6d2160
|
use session.cancel in the router to make blocking safe, reduce size of fromRouter buffer so the drops in the switch are closer to the intended front-drop behavior
|
2019-08-04 02:21:41 -05:00 |
|
Arceliar
|
6da5802ae5
|
don't block forever in Write if the session is cancelled, cleanup Conn.Read slightly
|
2019-08-04 02:08:47 -05:00 |
|
Arceliar
|
cbbb61b019
|
fix another drain on the bytestore
|
2019-08-04 00:00:41 -05:00 |
|
Arceliar
|
00e9c3dbd9
|
do session crypto work using the worker pool
|
2019-08-03 23:27:52 -05:00 |
|
Arceliar
|
befd1b43a0
|
refactor session worker code slightly
|
2019-08-03 23:14:51 -05:00 |
|
Arceliar
|
b9987b4fdc
|
reduce time spent with a mutex held in sessionInfo.recvWorker
|
2019-08-03 22:47:10 -05:00 |
|
Arceliar
|
099bd3ae1e
|
reduce part of sendWorker that needs to keep a mutex
|
2019-08-03 22:35:10 -05:00 |
|
Arceliar
|
72ed541bf3
|
a little cleanup to Conn functions
|
2019-08-03 22:07:38 -05:00 |
|
Arceliar
|
5dfc71e1ee
|
put bytes back when done
|
2019-08-03 22:00:47 -05:00 |
|
Arceliar
|
df0090e32a
|
Add per-session read/write workers, work in progress, they still unfortunately need to take a mutex for safety
|
2019-08-03 21:46:18 -05:00 |
|
Neil Alexander
|
853054eb62
|
Merge pull request #475 from Arceliar/misc
Misc
|
2019-07-29 20:24:49 +01:00 |
|
Neil Alexander
|
7c4c1558ff
|
Merge pull request #474 from neilalexander/gomobile
Various API changes and simplifications to fix mobile builds
|
2019-07-28 19:34:06 +01:00 |
|
Neil Alexander
|
c9554f82be
|
Formatting tweaks in api.go
|
2019-07-28 11:35:16 +01:00 |
|
Neil Alexander
|
24f4754f2b
|
Export NodeInfoPayload type, rename some API functions
|
2019-07-28 11:30:24 +01:00 |
|
Arceliar
|
b66bea813b
|
rename a couple of things and move a PutBytes so it happens sooner
|
2019-07-27 18:23:55 -05:00 |
|
Arceliar
|
9e118884d4
|
remove some commented code
|
2019-07-27 18:12:06 -05:00 |
|
Arceliar
|
e0a3055c2f
|
get rid of session workers, new util.PutBytes/GetBytes logic
|
2019-07-27 18:10:32 -05:00 |
|
Neil Alexander
|
377f88512b
|
Remove commented out router function
|
2019-07-27 15:57:19 +01:00 |
|
Neil Alexander
|
de1005e4fa
|
Various API changes and simplifications to fix mobile builds
|
2019-07-27 15:00:09 +01:00 |
|
Arceliar
|
e5bb9bcb8d
|
change how searches are initialized so we actually send a dhtReq to ourself and get a response, in case we're the destination
|
2019-07-26 17:44:40 -05:00 |
|
Neil Alexander
|
34ac5c9197
|
Send PPROF output text to stderr instead of stdout so that it doesn't break -genconf
|
2019-07-20 21:56:53 +01:00 |
|
Arceliar
|
cf3ebe04a7
|
have Conn use Cancellation instead of manually setting up timers
|
2019-07-17 21:37:45 -05:00 |
|
Arceliar
|
5301207480
|
fix possible unsafe memory use in Conn.Read
|
2019-07-17 18:25:38 -05:00 |
|
Neil Alexander
|
307b24d8cb
|
Fix Conn.Read/Conn.Write behavior after Conn.Close, get rid of second TUN/TAP conn reader goroutine, no longer use deadlines
|
2019-07-17 21:42:17 +01:00 |
|