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