Arceliar
bd2d706745
fix bug from go vet while I'm at it
2018-12-07 20:36:30 -06:00
Arceliar
586781b49c
convert to go module
2018-12-07 19:56:04 -06:00
Neil Alexander
5149c6c349
Show build name and version at startup if available
2018-12-07 22:24:01 +00:00
Neil Alexander
3524c6eff6
Add build name and version to getSelf call on admin socket
2018-12-07 22:22:46 +00:00
Neil Alexander
8e784438c7
Imprint build name and version number if available
2018-12-07 22:20:11 +00:00
Arceliar
fe772dd38e
switch bugfixes
2018-12-05 18:22:39 -06:00
Arceliar
09228554cb
Merge pull request #223 from neilalexander/reusemulticast
...
Try to SO_REUSEPORT on multicast socket
2018-12-05 18:15:21 -06:00
Neil Alexander
ae48a1721e
Try to SO_REUSEADDR on Windows
2018-12-05 23:10:50 +00:00
Neil Alexander
eae8f9a666
Try to SO_REUSEPORT on UNIX platforms
2018-12-05 22:39:04 +00:00
Arceliar
3d4b49b693
reset the switch speed info for a peer whenever it changes coords, instead of only if they're a parent and change coords. Also, make sure packets in the sim preserve order when sending, to avoid races when testing
2018-12-03 19:21:23 -06:00
Arceliar
684632eb3d
Merge pull request #215 from Arceliar/switch
...
Latency-based parent selection for the switch
2018-12-02 17:26:26 -06:00
Neil Alexander
5a89a869be
Set queueTotalMaxSize before switch worker starts
2018-12-02 23:24:54 +00:00
Neil Alexander
b5f4637b5c
Enforce min 4MB switch queue total size
2018-12-02 23:20:11 +00:00
Neil Alexander
319457ae27
Update comment for MaxTotalQueueSize
2018-12-02 23:03:10 +00:00
Neil Alexander
86da073226
Add SwitchOptions and MaxTotalQueueSize
2018-12-02 22:49:27 +00:00
Arceliar
dcfe55dae8
store 'faster' relationships between all pairs of peers, to make fallback easier when a parent goes offline
2018-12-02 16:36:25 -06:00
Arceliar
38093219fd
dimensionless way to track how often nodes are faster than the current parent
2018-12-02 14:46:58 -06:00
Arceliar
b3e2b8e6a5
Update admin.go
...
Replace `nil` with `[]string{}` for `list`'s argument list.
2018-11-26 19:15:27 -06:00
Neil Alexander
099fee9cae
Rename destPubKey to box_pub_key in addRoute etc
2018-11-26 17:58:54 +00:00
Neil Alexander
315aadae06
Rename help to list
2018-11-26 17:51:30 +00:00
Neil Alexander
8239989c36
Send box_pub_key with getSessions, getDHT, getSwitchPeers and getPeers
2018-11-26 17:38:02 +00:00
Neil Alexander
5b10af7399
Rename key to box_pub_key in admin socket for consistency
2018-11-26 17:34:26 +00:00
Arceliar
d8d1e63c36
fix infinite loop from interaction between dht.isImportant and dht.insert
2018-11-25 20:33:33 -06:00
Arceliar
0ec6207e05
better response format and yggdrasilctl printing
2018-11-25 18:25:31 -06:00
Arceliar
a34ca40594
use a buffered channel to avoid races, and run gofmt
2018-11-25 17:59:36 -06:00
Arceliar
7954fa3c33
store one callback instead of many, needed to prevent search failures if there are multiple outstanding packets
2018-11-25 17:08:45 -06:00
Arceliar
9937a6102e
add callbacks to maintenance map cleanup
2018-11-25 16:29:47 -06:00
Arceliar
12e635f946
adjust dhtPing response so 'nodes' defaults to an empty list instead of null
2018-11-25 16:16:06 -06:00
Arceliar
d520a8a1d5
refactor dht code to call arbitrary callbacks instead of only searches.checkDHTRes, and add admin API fuction to dhtPing a node (with an optional target NodeID)
2018-11-25 16:10:32 -06:00
Arceliar
e17efb6e91
don't penalize dht timeouts a second time
2018-11-25 13:21:13 -06:00
Arceliar
9046dbde4f
remove sigManager, it seems safer to just burn the CPU than to store a map of strings of potentially arbitrary length
2018-11-25 13:06:54 -06:00
Arceliar
4e156bd4f7
better cleanup of maps
2018-11-25 12:25:38 -06:00
Arceliar
8d6beebac4
clean up old requests during dht maintenance
2018-11-24 20:04:14 -06:00
Neil Alexander
5a7c2b250c
Merge pull request #209 from Arceliar/switch-tune
...
Adjust switch parent selection behavior
2018-11-24 23:21:45 +00:00
Arceliar
6d0e40045a
cleanup/fixes from go vet
2018-11-22 21:41:16 -06:00
Arceliar
4870a2e149
removeSourceSubnet and removeRoute via the admin api
2018-11-22 21:30:56 -06:00
Arceliar
5953027411
switch from []byte to boxPubKey in ckr code, and start adding admin functions for existing code (yggdrasilctl.go still needs pretty printing support for the responses to the new get functions)
2018-11-21 00:10:20 -06:00
Arceliar
5fa23b1e38
move router.recvPacket calls into the main router goroutine, to make the ckr checks threadsafe
2018-11-20 22:04:18 -06:00
Arceliar
e9cff0506c
comment the switch a little better and limit how much uptime can affect which peer is used as a parent
2018-11-19 21:30:52 -06:00
Arceliar
ef6cece720
fix sim and tune dht to bootstrap a little faster
2018-11-16 19:32:12 -06:00
Neil Alexander
fc5a5830aa
Merge pull request #203 from Arceliar/chord
...
Chord
2018-11-14 20:13:42 +00:00
Arceliar
8cf8b0ec41
fix bug in recvPacket for packets coming from a subnet
2018-11-11 00:00:47 -06:00
Arceliar
1b1b776097
fix crash when starting in tun mode
2018-11-10 22:39:15 -06:00
Neil Alexander
6fab0e9507
Fix CKR (IPv4/IPv6) in TAP mode so frames sent to node MAC, base MAC/LL from node IPv6 address
2018-11-10 18:33:52 +00:00
Neil Alexander
adc32fe92f
Track further neighbor state, don't send more NDPs than needed
2018-11-10 17:32:03 +00:00
Neil Alexander
d50e1bc803
More complete NDP implementation for TAP mode, which tracks individual MAC addresses for neighbors
2018-11-10 15:46:10 +00:00
Arceliar
15d5b3f82c
comments and minor cleanup
2018-11-09 23:02:38 -06:00
Neil Alexander
685b565512
Check IP header lengths correctly per protocol
2018-11-07 10:29:08 +00:00
Neil Alexander
9542bfa902
Check the session perm pub key against the CKR key
2018-11-07 10:16:46 +00:00
Neil Alexander
fbfae473d4
Use full node ID for CKR routes instead of truncated node IDs from the address/subnet
2018-11-07 10:04:31 +00:00
Neil Alexander
39dab53ac7
Update comments in configuration and some godoc descriptions
2018-11-06 22:57:53 +00:00
Neil Alexander
a3a53f92c3
Reinstate length/bounds check in tun.go
2018-11-06 22:35:28 +00:00
Neil Alexander
0240375417
IPv4 CKR support in router
2018-11-06 20:49:19 +00:00
Neil Alexander
424faa1c51
Support IPv4 in ckr.go
2018-11-06 20:04:49 +00:00
Neil Alexander
cb7a5f17d9
Check destination address upon receive in router
2018-11-06 19:23:20 +00:00
Neil Alexander
2f75075da3
Fix Yggdrasil subnet routing
2018-11-06 14:28:57 +00:00
Neil Alexander
bc62af7f7d
Enable CKR properly from config
2018-11-06 12:32:16 +00:00
Neil Alexander
bc578f571c
Some output at startup
2018-11-06 11:56:32 +00:00
Neil Alexander
f0947223bb
Only validate CKR routes if CKR enabled
2018-11-06 11:11:57 +00:00
Neil Alexander
19e6aaf9f5
Remove sourceSubnet from router
2018-11-06 00:06:37 +00:00
Neil Alexander
e3d4aed44a
Configure IPv6Sources
2018-11-06 00:05:01 +00:00
Neil Alexander
8c2327a2bf
Add source addresses option and more intelligent source checking
2018-11-05 23:59:41 +00:00
Neil Alexander
cfdbc481a5
Modify source address check for CKR
2018-11-05 23:22:45 +00:00
Neil Alexander
7218b5a56c
Don't look up public keys for Yggdrasil native addresses
2018-11-05 23:12:26 +00:00
Neil Alexander
c7f2427de1
Check CKR routes when receiving packets in router
2018-11-05 22:58:58 +00:00
Neil Alexander
87b0f5fe24
Use CKR in router when sending packets
2018-11-05 22:39:30 +00:00
Neil Alexander
295e9c9a10
Cache crypto-key routes (until routing table changes)
2018-11-05 17:31:10 +00:00
Neil Alexander
ec751e8cc7
Don't allow Yggdrasil ranges as crypto-key routes
2018-11-05 17:03:58 +00:00
Neil Alexander
52206dc381
Add initial crypto-key routing handlers
2018-11-05 16:40:47 +00:00
Arceliar
a008b42f99
cleanup and some bugfixes, cache important dht nodes until something gets added/removed
2018-10-29 22:24:18 -05:00
Arceliar
671c7f2a47
don't update recv time for known nodes that ping us or known peers
2018-10-28 15:04:44 -05:00
Arceliar
c0531627bc
fix some chord dht bootstrapping bugs, no known cases where it now fails
2018-10-24 22:03:27 -05:00
Arceliar
253861ebd3
reverse dht ownership order from predecessor to successor, this plays nicer with the default 0 bits in unknown node IDs
2018-10-21 18:15:04 -05:00
Arceliar
5e3959f1d0
yet more debugging
2018-10-21 17:40:43 -05:00
Neil Alexander
20c4b7027a
Fix merge conflicts with endpoints branch
2018-10-21 23:24:29 +01:00
Neil Alexander
aab0502a4a
Remove friendlyname traces, preserve endpoints
2018-10-21 23:20:14 +01:00
Neil Alexander
a1b72c16d8
Some attempt at exchanging session metadata over the wire (broken)
2018-10-21 22:58:27 +01:00
Arceliar
f0bd40ff68
more testing
2018-10-21 15:10:18 -05:00
Arceliar
bcbd24120d
keep track of all keys we're supposed to care about in the dht, don't give special treatment to successors/predecessors
2018-10-21 14:57:04 -05:00
Arceliar
efe6cec11a
more debugging, trying to understand bootstrap issues
2018-10-21 12:28:21 -05:00
Neil Alexander
088d28a93b
Fix debug builds with friendly names
2018-10-21 18:04:02 +01:00
Neil Alexander
b809adf981
Add FriendlyName option, show friendly name and real endpoint in admin socket/yggdrasilctl
2018-10-21 17:57:48 +01:00
Arceliar
6c59ae862a
more debugging
2018-10-21 00:05:04 -05:00
Arceliar
95201669fe
reintroduce (better) dht throttling
2018-10-20 22:06:36 -05:00
Arceliar
8825494d59
remove maintenance searches and throttle logic, to focus on debugging in this simpler case first
2018-10-20 20:11:32 -05:00
Arceliar
3dbffae99f
add search for successor, via parent, to the dht maintenance cycle
2018-10-20 19:09:25 -05:00
Arceliar
d851d9afe7
add max pings before timing out a successor
2018-10-20 18:31:11 -05:00
Arceliar
63d6ab4251
more cleanup, comments, and dht reset() changes
2018-10-20 18:12:34 -05:00
Arceliar
f3ec8c5b37
fix admin dht function, more cleanup, and slowly throttle back dht traffic when idle
2018-10-20 17:58:54 -05:00
Arceliar
5a85d3515d
cleanup
2018-10-20 17:32:54 -05:00
Arceliar
02f0611dde
more debugging
2018-10-20 16:27:01 -05:00
Arceliar
1720dff476
add some debug output and get things to start working in the sim
2018-10-20 15:21:40 -05:00
Arceliar
03a88fe304
Try using a chord-like DHT instead of a kad-like one, work in progress, but it compiles at least
2018-10-20 14:48:07 -05:00
Neil Alexander
18428b0f93
Merge pull request #190 from neilalexander/sessionfirewall
...
Fix incorrect comment in config for SessionFirewall
2018-10-09 07:24:22 +01:00
Neil Alexander
eb42fd4973
Fix incorrect comment in config for SessionFirewall
2018-10-09 07:18:43 +01:00
Arceliar
ba8af20817
Merge pull request #187 from neilalexander/sessionfirewall
...
Add session firewall
2018-10-08 18:41:15 -05:00
Neil Alexander
1d00131416
Hopefully fix a concurrent map read-write when removing peers
2018-10-08 22:09:55 +01:00
Neil Alexander
1e6667567a
Update comments for session firewall in config
2018-10-08 19:57:14 +01:00
Neil Alexander
3ed63ede1e
Add AlwaysAllowOutbound to session firewall
2018-10-08 19:51:51 +01:00
Neil Alexander
3f237372c9
Only apply session firewall to pings for sessions we don't already have
2018-10-08 19:05:50 +01:00
Neil Alexander
2e2c58bfef
Add session firewall (extra security for controlling traffic flow to/from a given node)
2018-10-07 17:13:41 +01:00
Neil Alexander
81eea137d4
Merge branch 'develop' into getswitchqueues
2018-10-05 19:51:45 +01:00
Neil Alexander
605b6829db
Fix debug builds (broken by #182 )
2018-10-05 19:28:46 +01:00
Neil Alexander
8eed15b813
Fix merge conflict in tcp.go from d027a9ba75
2018-10-04 12:26:08 +01:00
Neil Alexander
b6ff6e96cd
Merge pull request #184 from yggdrasil-network/source-interface
...
Ignore peer in InterfacePeers when source interface not found
2018-09-28 15:16:34 +01:00
Neil Alexander
d027a9ba75
Don't peer when source interface not found
2018-09-28 14:59:10 +01:00
Neil Alexander
69cd736112
Show queue capacity in getSwitchQueues
2018-09-27 16:19:47 +01:00
Neil Alexander
0b1a6611fd
Identify switchport for queue based on coords in stream ID
2018-09-27 15:05:45 +01:00
Neil Alexander
8113b4cc22
Update comments
2018-09-27 14:20:52 +01:00
Neil Alexander
b530916044
Show information about individual active queues
2018-09-27 12:14:55 +01:00
Neil Alexander
2674e1cb8b
Merge remote-tracking branch 'origin/develop' into getswitchqueues
2018-09-27 11:03:59 +01:00
Neil Alexander
f57567ea56
Add getSwitchQueues
2018-09-27 10:53:19 +01:00
Arceliar
7e3426ba93
Merge pull request #182 from yggdrasil-network/source-interface
...
Support adding peers on specific interfaces
2018-09-26 07:48:55 -05:00
Neil Alexander
b7f2f8b55c
Ignore interfaces that are not up
2018-09-25 19:46:06 +01:00
Neil Alexander
6844b9df51
Update comments in default config
2018-09-25 18:17:00 +01:00
Neil Alexander
387ae9ea6c
Only replace call name with interface prefix when interface is set
2018-09-25 18:05:57 +01:00
Neil Alexander
3f8a4ab17d
Add bytes_sent and bytes_recvd to getSwitchPorts
2018-09-25 17:59:01 +01:00
Neil Alexander
b368421dbd
Fix addPeer to make interface= optional
2018-09-25 17:13:35 +01:00
Neil Alexander
1796000b05
Change to InterfacePeers instead of modifying the tcp:// URI format
2018-09-25 16:55:57 +01:00
Neil Alexander
aecc151baf
Add support for specifying TCP source interface, i.e. tcp://a.b.c.d:e/eth0, for multiple simultaneous peerings to the same node over different interfaces
2018-09-25 15:32:45 +01:00
Arceliar
25661ebcad
fix 0 port number on links to unknown nodes in the admin dot graph
2018-09-04 19:30:07 -05:00
Arceliar
e833cdfb98
fix debug builds and update whitepaper with old info from the .io site's about page
2018-08-18 13:24:02 -05:00
cathugger
b4db89ea9d
Avoid unnecessarily allocating coords slice if it's unchanged.
2018-07-30 13:44:46 +00:00
cathugger
67b8a7a53d
Ensure no memory allocations happen at hot path
2018-07-30 12:43:34 +00:00
Neil Alexander
c4e6894d6a
Copy sinfo.coords for safety
2018-07-30 13:34:32 +01:00
Neil Alexander
ebb4ec7c33
Clean up the flow a bit (partly because I am allergic to huge compounded if statements)
2018-07-30 11:46:44 +01:00
cathugger
68a482ed92
Simplify flowkey stuff further.
2018-07-30 02:15:57 +00:00
cathugger
36dcab9300
optimize wire_put_uint64; use protokey for flowlabel fallback.
2018-07-30 01:58:52 +00:00
cathugger
fec7100898
Clean up / clarify coords sending code.
2018-07-30 00:01:37 +00:00
cathugger
11b0a82c4a
Simpler flowlabel parsing; avoid using 0 flowlabel.
2018-07-29 22:09:16 +00:00
Arceliar
ddab8ecf33
Merge pull request #174 from cathugger/develop
...
Make TCP read timeouts configurable.
2018-07-29 10:39:43 -05:00
cathugger
d171552577
Make TCP read timeouts configurable.
...
This should be helpful on high-latency networks, like Tor or I2P.
Also gofmt.
2018-07-29 14:30:13 +00:00
Neil Alexander
38e8b036d2
Use addUint64 instead to not interfere with coordinate parsing
2018-07-22 18:33:53 +01:00
Neil Alexander
81fde1a805
Use flow label instead of TCP/UDP/SCTP source/destination ports
2018-07-22 18:16:03 +01:00
Neil Alexander
3f4295f8cd
Only split queues based on port number for TCP/UDP/SCTP, rely only on protocol number for other protos to prevent issues with IPIP, GRE, etc
2018-07-22 12:00:40 +01:00
Arceliar
9cbcaf39ac
Use coords for queue stream IDs in the switch, and append protocol/port information to coords when sending, to designate different streams
2018-07-21 18:59:29 -05:00
Arceliar
996a593fa2
Sort dotgraph links by integer value
2018-07-20 23:02:25 -05:00
Arceliar
549d6f9dd2
Merge pull request #163 from neilalexander/tapmtu
...
Cap MTU on Linux in TAP mode
2018-07-19 18:25:03 -05:00
Arceliar
9ff08c1b34
Merge pull request #165 from cathugger/master
...
rearrange tcp reading loop
2018-07-19 18:18:51 -05:00
cathugger
91a374d698
rearrange tcp reading loop
...
according to documentation of io.Reader interface,
"Callers should always process the n > 0 bytes returned before considering the error err. Doing so correctly handles I/O errors that happen after reading some bytes and also both of the allowed EOF behaviors."
2018-07-19 21:58:53 +00:00
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
Arceliar
8228242eed
misc dht and tree changes to stabilize coords and bootstrap the dht faster
2018-05-15 23:57:00 -05:00
Arceliar
96c55da987
Merge pull request #76 from neilalexander/hjson
...
Use HJSON for config instead of JSON
2018-05-13 15:09:28 -05:00
Neil Alexander
5299783e35
Add getTunTap to admin socket
2018-05-10 09:48:12 +01:00
Neil Alexander
e381808704
Add ability to select interface by friendly name on Windows
2018-05-09 16:42:24 +01:00
Neil Alexander
8ea3070a02
Small tweaks/clean up
2018-05-09 14:03:28 +01:00
Neil Alexander
45b106168e
Use HJSON instead of JSON
2018-05-09 13:54:31 +01:00
Arceliar
5dac273a3d
rename to 'AllowedBoxPubs' and similar
2018-05-07 17:05:54 -05:00
Arceliar
6ce16d8192
debug admin socket
2018-05-06 19:48:26 -05:00
Arceliar
94dd231e13
add (not working) admin functions for auth keys, needs debugging
2018-05-06 19:31:19 -05:00
Arceliar
0b391b6e3a
debugging and cleanup
2018-05-06 19:01:52 -05:00
Arceliar
80f893aac3
let the peer's linkLoop call close if the peer receives no announcements for too long
2018-05-06 17:17:12 -05:00
Arceliar
6026e0a014
Optional peer authentication, if non-empty then incoming TCP and all UDP peers must match one of these box keys
2018-05-06 16:32:34 -05:00
Arceliar
3a1b67da8c
Update admin.go
2018-05-05 20:20:38 -05:00
Arceliar
cdedd304af
make removePeers work for TCP connections and minor admin cleanup
2018-05-05 17:14:03 -05:00
Arceliar
8b9a91be57
possibly fix weird issue I was having with netns, still not sure I understand why it was a problem
2018-04-28 16:39:58 -05:00
Neil Alexander
bdf9e45082
Default to previous scheme when url.Parse returns an error
...
In response to:
```
panic: parse x.x.x.x:xxx: first path segment in URL cannot contain colon
goroutine 33 [running]:
yggdrasil.(*Core).DEBUG_addPeer(0x8e58000, 0x8e34080, 0x12)
/go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}}/src/yggdrasil/debug.go:317 +0x420
main.(*node).init.func1(0x8e48000, 0x8e58000)
/go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}}/yggdrasil.go:75 +0x70
created by main.(*node).init
/go/src/github.com/{{ORG_NAME}}/{{REPO_NAME}}/yggdrasil.go:69 +0x410
```
2018-04-27 09:53:31 +01:00
Jeff Becker
fe13fea1e5
remove hard coded tor config options
2018-04-26 10:26:10 -04:00
Jeff Becker
7756891510
support socks proxy in peer url and decouple explicit tor/i2p routing
2018-04-26 10:23:21 -04:00
Jeff Becker
769b058004
more docs
2018-04-25 10:11:11 -04:00
Jeff Becker
1be8bbed1c
more docs
2018-04-25 10:09:09 -04:00
Jeff Becker
de69860e9b
* only enable tor proxy dialer when tor is enabled
...
* add docstrings
2018-04-25 10:06:13 -04:00
Jeff Becker
c16e354a44
Merge remote-tracking branch 'origin/master' into tor-auto
2018-04-25 10:01:10 -04:00
Arceliar
8ef2e55de6
try sending pings before sending searches for an unresponsive session
2018-04-22 15:31:30 -05:00
Jeff Becker
5e23185ddc
use address only not port
2018-04-20 08:41:09 -04:00
Jeff Becker
3c4fee0492
tor auto config
2018-04-19 10:30:40 -04:00
Neil Alexander
48ced483d6
Merge pull request #64 from Arceliar/dht
...
Limit DHT pings to 1/min per node
2018-03-17 20:46:47 +00:00
Arceliar
fe5ef4e867
don't add things to the dht rumorMill if they've been pinged in the last minute (arbitrary time, needs investigating)
2018-03-17 15:28:22 -05:00
Arceliar
0459f88b92
add a udp close packet, and partial support for a removePeer admin call (sends close to UDP peers, but doesn't close TCP connections yet)
2018-03-16 18:24:28 -05:00
Neil Alexander
bf0413a0c4
Modify ICMPv6 source address for "Packet Too Big" messages to a routable address so that it correctly routes to nodes in an yggdrasil /64 subnet
2018-03-10 22:31:36 +00:00
Arceliar
b34345229a
remove any peers from the dht if a reset is triggered (from coord changes)
2018-03-10 15:16:39 -06:00
Arceliar
9ce0b7fbea
keep peers separate from other nodes in dht
2018-03-10 13:58:48 -06:00
Neil Alexander
1155816df8
Show both UDP and TCP listen addresses in stdout ( #51 )
2018-03-07 09:41:04 +00:00
Neil Alexander
166d25619d
Attempt to support NetBSD
...
This code actually consolidates a lot of the BSD code together, and even setting the interface MTU with SIOCSIFMTU seems to work fine.
What doesn't work though is setting the interface address using SIOCSIFADDR_IN6, which I attempted to plagiarise from the Darwin code.
As a fallback, ifconfig is used, which solves the problem enough to get it working.
2018-03-04 23:47:01 +00:00
Arceliar
cd0d1a1d26
get the fd instead of depending on water to do it
2018-03-04 13:57:34 -06:00
Arceliar
039c4a5a35
only try to build on openbsd and freebsd for now, darwin needs work too
2018-03-04 11:02:54 -06:00
Arceliar
478b80a07a
cleanup
2018-03-04 10:56:46 -06:00
Arceliar
e7726cfb00
deduplicate some bsd tuntap code, still untested
2018-03-04 10:55:32 -06:00
Neil Alexander
c30792245a
Add FreeBSD support in TAP mode
2018-03-04 16:24:50 +00:00
Neil Alexander
a92e6c2588
Merge pull request #29 from Arceliar/netlink
...
Linux: use netlink instead of ip
2018-03-04 10:47:34 +00:00
Arceliar
5ec6265a70
use netlink instead of ip commands to set address/mtu and bring up the tuntap device on linux
2018-03-03 16:41:36 -06:00
Arceliar
0460fdd301
panic if tun.write or tun.read returns an error and was launched from debug.go, since there's no way to recover in these scenarios
2018-03-03 13:56:26 -06:00
Arceliar
a367f2ca17
gofmt
2018-03-03 11:49:24 -06:00
Arceliar
0578a9f273
manual merge
2018-03-03 11:07:08 -06:00
Neil Alexander
4e5627f933
Update default interface MTU to use per-platform instead of global value
2018-03-03 12:43:39 +00:00
Neil Alexander
4917ea3dd2
Per-platform TUN defaults
2018-03-03 12:30:54 +00:00
Neil Alexander
bec898a326
Don't allow exceeding maximum MTU for a given platform
2018-03-03 11:47:14 +00:00
Neil Alexander
7c0102e43d
Be a little bit less verbose on OpenBSD
2018-03-01 15:31:49 +00:00
Neil Alexander
6640b33334
Fix using 'auto' as device name on OpenBSD - default to /dev/tap0
2018-03-01 15:19:20 +00:00
Neil Alexander
24be3f1d67
Turns out FreeBSD is a bit different so restrict this to OpenBSD for now
2018-03-01 15:11:12 +00:00
Neil Alexander
90393ae03b
Set interface flags properly on OpenBSD
2018-03-01 15:02:53 +00:00
Neil Alexander
9e4d169208
Set interface IP and MTU on BSD
2018-03-01 13:37:05 +00:00
Neil Alexander
f8dda26dba
Add BSD support (openbsd, freebsd, solaris)
2018-03-01 11:49:49 +00:00
Neil Alexander
ebc4eacee4
Allow sane defaults on setTunTap
2018-02-28 15:27:58 +00:00
Neil Alexander
fdd32b9571
Add setTunTap
2018-02-28 15:15:57 +00:00
Neil Alexander
2b48fd1fce
Add addPeer to admin socket
2018-02-28 13:43:06 +00:00
Arceliar
ddc4773b19
don't drop send/recv traffic going through the crypto workers, just block until they're free (TODO run further tests to make sure this doesn't cycle/deadlock)
2018-02-26 18:12:28 -06:00
Arceliar
63b55cda62
Mostly working PMTU discovery when going over UDP links
2018-02-25 20:24:36 -06:00
Arceliar
0470f6f1c1
cleanup
2018-02-23 13:04:52 -06:00
Arceliar
bb3ae8b39b
temporarily limit PMTU to 2048, as a workaround to some pathelogical behavior where a TCP stream carried over a UDP peer can throttle down to 0 in the presence of significant packet loss
2018-02-23 12:46:22 -06:00
Arceliar
d3dc7765f2
trying to debug UDP+large MTU issues
2018-02-20 17:31:12 -06:00