Commit Graph

321 Commits

Author SHA1 Message Date
Jeff Becker
5cdb1afa0d
increase timer timeout interval because 1 seconds RTT can happen but 2 seconds is pretty bad 2021-06-09 20:15:22 -04:00
Jeff Becker
486cdc0949
correctly do latency test FEC
before this it would cause a posative feedback loop causing paths to fail for "no real reason"
2021-06-09 08:32:51 -04:00
Jeff Becker
719dd38cf5
more shit 2021-06-08 14:36:33 -04:00
Jeff Becker
046e02ebe7
fixes for loopback testnet 2021-06-08 14:36:33 -04:00
Jeff Becker
ea3276333a
on path timeout look up each router, if the lookup fails then we remove it from nodedb and close any connections to it so that bad first hops are rotated off of. 2021-06-08 14:36:33 -04:00
Jeff Becker
6a3dc67e9b
nuke from orbit style router profiling for path build timeouts.
* when a path build times out, shitlist every router in the path except the first hop, this way eventually we get the nodedb pruned to only the routers that are currently actually alive, any ones we nuke that we need later we can always do lookups for.
2021-06-08 14:36:33 -04:00
Jeff Becker
1f9b8e5972
nuke invalid routers when we get a path build fail back to not resuse them in the future 2021-06-08 14:36:32 -04:00
Jeff Becker
aa1c1bad0b
record reason for path fail and the full hops 2021-06-08 14:36:32 -04:00
Jeff Becker
e4ed53224c
use weak_ptr on a path to reference its parent pathset instead of a bare pointer so crashes dont happen 2021-06-08 14:36:32 -04:00
Jeff Becker
2a76a3d081
treat ignored paths like established paths when dealing with expiration 2021-06-08 14:36:32 -04:00
Jeff Becker
23aa35b825
log when we ignore a path 2021-06-08 14:36:32 -04:00
Jeff Becker
a86152e03c
decay path build limiter per path builder every tick 2021-06-08 14:36:31 -04:00
Jeff Becker
23a82c493f
* don't include failed at when we are the pivot router as that case never happens.
* mark paths as ingored instead of expired when we stop a path builder
* only remove path builder when we have no established paths
2021-06-08 14:36:30 -04:00
Jeff Becker
503db46eca
path and intro selection fixups:
* include stricter router profiling checks in path::Builder hop slection algorithm
* make intro selection function nicer by returning a std::optional instead of a bool with an "out" variable
2021-06-08 14:36:30 -04:00
Jeff Becker
174e1b247b
fix latency tests.
* do FEC for latency tests so if we fail one test it doesn't kill the entire path
* ignore FEC'd responses on latency tests
* track latency history and report the mean latency instead of just the last sample
2021-06-08 14:36:30 -04:00
Jeff Becker
b1d30f9803
updates to lokinetmon
* add introset inspector mode
* add required parts for introset insecptor mode to rpc introspection
2021-06-08 14:36:29 -04:00
Jeff Becker
3c2334112c
when we stop a path builder we want to expire all of their paths so they go away 2021-05-12 12:48:24 -04:00
Jeff
d53945b011
Merge pull request #1621 from majestrate/path-ptr-leak-2021-05-02
try fixing std::shared_ptr leak with paths
2021-05-06 16:15:27 -04:00
Jeff
34eb254959
Merge pull request #1626 from majestrate/edge-limiter-2021-05-05
limit path builds across all builders
2021-05-06 16:14:59 -04:00
Jeff Becker
b1afe0f596
always do path tests
this reverts some stupid bullshit that broke 0.9.0
2021-05-05 18:24:15 -04:00
Jeff Becker
ec62228149
limit path builds across all builders 2021-05-05 08:21:39 -04:00
Jeff Becker
d563e3b340
if a path's latency is zero dont use it because it's not actually a zero latency path it's probably about to be failed or timed out
increase default path alignment timeout
2021-05-03 09:22:06 -04:00
Jeff Becker
397d8b01fc
try fixing std::shared_ptr leak with paths 2021-05-02 17:52:29 -04:00
Jeff Becker
f69ccb73a8
limit path reanimation
* wait for a limited time for dead paths to reanimate and then remove them after that forever
2021-05-01 08:54:46 -04:00
Jeff Becker
6b115913bc
lokinetmon updates
* add country flags to lokinetmon
* expose hop ip addresses via rpc introspection for geoip in lokinetmon
2021-05-01 08:44:37 -04:00
Thomas Winget
cecbddc912 Fixes subtle memory leak, adds comments
Fixes a subtle memory leak that was a result of outbound messages which
were in the shared queue (not yet sorted into a per-path queue) when a
path was removed, resulting in a ghost path queue (and thus round-robin
order entry as well).

Adds much needed documentation to the outbound message handler class.
2021-04-29 20:10:55 -04:00
Jeff Becker
545021aa3d
temp commit 2021-04-19 07:02:46 -04:00
Jeff Becker
bb7b46c43d
fixes for testnet 2021-04-19 07:02:45 -04:00
Jeff Becker
07eaeb681a
try fixing deadlock 2021-04-19 07:02:45 -04:00
Jeff Becker
8b2ede5fc5
use rxid 2021-04-19 07:02:45 -04:00
Jeff Becker
1677ed40f6
dont persist sessions if we failed to build 2021-04-19 07:02:44 -04:00
Jeff Becker
2e8f47a7fa
various cleanups 2021-04-19 07:02:44 -04:00
Jeff Becker
0046de3e7a
service node logic change: simplify transit hop behavior to send protocol frames directly from a path transfer message 2021-04-19 06:59:07 -04:00
Jeff Becker
5b05d22bad
refactors
* add path sequence numbers on routing messages
* reduce log level in debug mode
* wire up loopback style sending to ourself
2021-04-19 06:59:06 -04:00
Jeff Becker
59c9e997f2
build paths faster and limit path builds at edge router instead of via a time counter for all edges 2021-04-19 06:59:05 -04:00
Jeff Becker
708e408c30
various fixups and cleanups
* wire up last of the quic stuff
* clean up udp packet generation code
* pass EndpointBase not quic tunnel for quic stuff
* add {n,h}uint16_t::FromString
* add nuint_t::FromString
* make AlignedBuffer::IsZero non constant time call for speed
2021-04-19 06:58:37 -04:00
Jeff Becker
59891d5d5f
wire up snode traffic to quic 2021-04-19 06:58:36 -04:00
Jeff Becker
9d483a12db
* add protocol type to snode traffic
* make path::PathSet::SendPacketToRemote know about protocol type
2021-04-19 06:58:35 -04:00
Jeff Becker
7a1ffc2df4
* lessen replay filter window
* dont have transit hops use a replay filter
* formatting
2021-04-12 13:14:59 -04:00
Jason Rhinelander
181953b4a6 Replace ::Hash nested structs with std::hash specializations 2021-03-10 11:19:52 -04:00
Thomas Winget
7caa87862e standardize include format and pragma once
All #ifndef guards on headers have been removed, I think,
in favor of #pragma once

Headers are now included as `#include "filename"` if the included file
resides in the same directory as the file including it, or any
subdirectory therein.  Otherwise they are included as
`#include <project/top/dir/relative/path/filename>`

The above does not include system/os headers.
2021-03-09 19:01:41 -05:00
Jason Rhinelander
91d6698a9d Reformat with clang-format-11 2021-03-05 13:36:31 -04:00
Jason Rhinelander
c00de1e4ec Add wakeup call into transit_hop UpstreamHandler 2021-03-04 16:51:18 -04:00
Jason Rhinelander
89b582bf60 Modernize [[maybe_unused]] attribute 2021-03-04 16:51:18 -04:00
Jason Rhinelander
f9dc308f75 Tick event loop on data queuing 2021-03-04 16:51:18 -04:00
Jason Rhinelander
c4559d158e Make format 2021-03-04 16:51:18 -04:00
Jason Rhinelander
ccc7b5c9e9 Merge Logic functions into EventLoop
loop->call(...) is similar to the old logic->Call(...), but is smart
about the current thread: if called from within the event loop it simply
runs the argument directly, otherwise it queues it.

Similarly most of the other event loop calls are also now thread-aware:
for example, `call_later(...)` can queue the job directly when called if
in the event loop rather than having to double-queue through the even
loop (once to call, then inside the call to initiate the time).
2021-03-04 16:51:18 -04:00
Jeff Becker
ec0f45eeb7
plug memory leak in outbound message queue.
sometimes we use rxid in our pathid so we need to clear those queues too.
if we don't it'll leak from never clearing those queues.
2021-03-04 15:29:09 -05:00
Jeff Becker
3425069b41
feedback from jason
* use emplace in PeerSectionConfig::Acceptable use insert everywhere else
* use const l-value references
* fix typos and spelling mistakes
2021-03-02 07:20:29 -05:00
Jeff Becker
9457da27d9
add option to enforce unique netblocks per path. 2021-03-02 07:20:28 -05:00