Neil Alexander
|
55b56e8686
|
Normalise startup output for TUN/TAP on Linux and Windows
|
2018-07-19 10:15:26 +01:00 |
|
Neil Alexander
|
df9cadd938
|
Cap MTU on Linux in TAP mode
|
2018-07-19 10:01:12 +01:00 |
|
Arceliar
|
1baafdd17d
|
Merge pull request #162 from cathugger/master
More verbose disconnect messages
|
2018-07-18 22:55:45 -05:00 |
|
cathugger
|
f4bb2aaaeb
|
More verbose disconnect messages
|
2018-07-19 01:03:24 +00:00 |
|
Neil Alexander
|
cff7ef026f
|
Make yggdrasilctl less case-sensitive
|
2018-07-09 19:30:41 +01:00 |
|
Neil Alexander
|
f21cbaef9c
|
Fix debug builds after changes in #155
|
2018-07-09 09:38:48 +01:00 |
|
Neil Alexander
|
d59bdfeb99
|
Fail to TCP when parsing AdminListen
|
2018-07-08 10:37:20 +01:00 |
|
Arceliar
|
bf90447cc4
|
update admin socket error message and run gofmt
|
2018-07-07 19:37:36 -05:00 |
|
Neil Alexander
|
b24c7ffa6b
|
Resolve merge conflict with platformdefaults
|
2018-07-07 20:08:23 +01:00 |
|
Neil Alexander
|
a5af69df8a
|
Use Close() for admin socket
|
2018-07-07 20:04:11 +01:00 |
|
Neil Alexander
|
2a931df07a
|
Try to clean up UNIX domain admin sockets if shutdown properly
|
2018-07-07 12:34:10 +01:00 |
|
Neil Alexander
|
14d48597da
|
Fix openbsd and netbsd
|
2018-07-07 12:18:03 +01:00 |
|
Neil Alexander
|
36c89da848
|
Stick with tcp://localhost:9001 as default for now
|
2018-07-07 12:16:55 +01:00 |
|
Neil Alexander
|
1692bd98fd
|
Centralise platform defaults into the 'defaults' package
|
2018-07-07 12:08:52 +01:00 |
|
Neil Alexander
|
cd6030ec8f
|
Add support for UNIX domain admin sockets and specifying URIs in AdminListen
|
2018-07-07 11:22:49 +01:00 |
|
Arceliar
|
ba4047b51a
|
correctly update buffer sizs when buffers overflow, and returned freed packets to the byte store
|
2018-07-06 17:27:04 -05:00 |
|
Arceliar
|
ad5dc9ea87
|
Drop 1 packet instead of a whole queue when overflowing
|
2018-07-06 00:55:00 -05:00 |
|
Arceliar
|
e6a47f705d
|
when dropping a queue, select one at random based on queue size in bytes
|
2018-07-06 00:11:36 -05:00 |
|
Arceliar
|
1a65c065d0
|
prioritize sending from small queues that have been blocked for a long time
|
2018-07-05 23:56:37 -05:00 |
|
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 |
|
Neil Alexander
|
5d87601118
|
Add getMulticastInterfaces and getSelf to yggdrasilctl
|
2018-05-23 22:13:52 +01:00 |
|
Neil Alexander
|
1fd53bcb7d
|
Update comments in configuration
|
2018-05-23 14:02:13 +01:00 |
|
Neil Alexander
|
ce854a76bd
|
Add -normaliseconf option and temporarily correct old config item names in running config
|
2018-05-23 12:04:27 +01:00 |
|
Neil Alexander
|
9d9083e373
|
Update configuration names, fix multicast interface selection
|
2018-05-23 11:28:20 +01:00 |
|
Neil Alexander
|
6f79184c9b
|
Move multicasting into yggdrasil package
|
2018-05-23 11:13:53 +01:00 |
|
Neil Alexander
|
388ae09fca
|
Rename some config items
|
2018-05-22 23:43:29 +01:00 |
|
Arceliar
|
b10ae51565
|
Merge pull request #85 from neilalexander/yggdrasilctl
Human-readable formatting in yggdrasilctl
|
2018-05-21 19:21:00 -05:00 |
|
Neil Alexander
|
04b3e84023
|
Show your IPv6 address and subnet when starting
|
2018-05-21 16:15:31 +01:00 |
|
Neil Alexander
|
9567446f50
|
Offload formatting to yggdrasilctl and keep precision in JSON
|
2018-05-21 15:21:23 +01:00 |
|
Neil Alexander
|
59688dcab3
|
Fix formatting of bytes_sent, bytes_recvd, last_seen, uptime
|
2018-05-21 15:05:01 +01:00 |
|
Neil Alexander
|
ca3e541d3b
|
Friendly formats for getDHT, getSessions, setTunTap etc
|
2018-05-21 14:14:57 +01:00 |
|
Neil Alexander
|
201701ae4a
|
Add some pretty printing to yggdrasilctl, small modifications to JSON formatting in admin socket
|
2018-05-21 13:54:51 +01:00 |
|
Neil Alexander
|
bd32f5890b
|
Run gofmt -s -w
|
2018-05-21 07:28:03 +01:00 |
|
Neil Alexander
|
79131bb959
|
Minor tweaks
|
2018-05-20 23:25:07 +01:00 |
|
Neil Alexander
|
aae570de2a
|
Optional parameters are now square instead of pointed brackets, avoid nils for help
|
2018-05-20 21:57:05 +01:00 |
|
Neil Alexander
|
c765e0566f
|
Convert rest of functions, fix setTunTap
|
2018-05-20 21:54:15 +01:00 |
|
Neil Alexander
|
c75566d5ac
|
Various fixes and error catching, add setTunTap
|
2018-05-20 21:44:30 +01:00 |
|
Neil Alexander
|
4ecc7ce860
|
Add getTunTap to JSON admin socket
|
2018-05-20 19:42:37 +01:00 |
|
Neil Alexander
|
c3ca5c64b1
|
Add some more functions to JSON admin socket
|
2018-05-20 19:23:43 +01:00 |
|
Neil Alexander
|
9713e73969
|
Fix dot
|
2018-05-20 17:25:13 +01:00 |
|
Neil Alexander
|
a6ef7166ea
|
Start JSON-ifying the admin socket
|
2018-05-20 17:21:14 +01:00 |
|
Arceliar
|
5c0636eb3d
|
add uptime and bytes sent/recvd to peer struct and getPeers
|
2018-05-18 20:41:02 -05:00 |
|
Neil Alexander
|
ca96bbf014
|
Accept exchanging an MTU of 0 to signify that TUN/TAP is disabled, don't send traffic to a node in that case
|
2018-05-18 18:56:33 +01:00 |
|
Neil Alexander
|
ec371af84f
|
Track TX/RX bytes over session and if MTU was adjusted, add to admin socket getSession
|
2018-05-18 17:59:29 +01:00 |
|
Arceliar
|
ec8fe338d5
|
more insertIfNew bugfixes, and add peerOnly to getDHT output (true if a node is in the bucket.peers slice instead of bucket.others--it means they're not regularly pinged, they're only there to make sure DHT lookups include them as a result, for bootstrapping reasons)
|
2018-05-17 21:43:26 -05:00 |
|
Arceliar
|
fe518f4e3f
|
bugfixes related to peer timeouts in the DHT, significantly improve DHT bootstrap speed
|
2018-05-17 21:20:31 -05:00 |
|
Arceliar
|
8d9887294c
|
add dht time since last ping to admin socket, some DHT code cleanup, bugfix to insertIfNew
|
2018-05-17 19:32:29 -05:00 |
|
Arceliar
|
d98640fd59
|
switch cleanup
|
2018-05-16 17:48:53 -05:00 |
|
Arceliar
|
6b51b44cbf
|
slightly better variable naming
|
2018-05-16 17:36:37 -05:00 |
|
Arceliar
|
800ccaa3d4
|
cleanup
|
2018-05-16 17:32:26 -05:00 |
|
Arceliar
|
fe712d24f8
|
don't allow buckets to overflow when the next bucket isn't full
|
2018-05-16 17:24:38 -05:00 |
|