Add min intro set paths, slightly increase spread speed

This should ensure that we have enough shortly after startup for initial
path builds.

The spread speed here gets slightly increased to lifetime/5 (=4min)
instead of lifetime/4 (=5min) so that our "normal" number of paths is 5
with occassional momentary drops to 4, but should always keep us >= the
new minimum of 4.

Because the path spread happens over time, this shouldn't result in a
rebuild of several paths: we'll build 4 quickly, then another at +4m,
another at +8m, etc.  When the initial 4 expire, we'll be dropping from
9 to 5 established but that's still above the minimum (4) so we won't
need to reconnect to several at once, and the spread builds should keep
us at 5 all the time.
pull/1147/head
Jason Rhinelander 4 years ago
parent 5b075259e6
commit 823c17206f

@ -24,7 +24,11 @@ namespace llarp
default_lifetime / 2;
/// spacing frequency at which we try to build paths for introductions
static constexpr std::chrono::milliseconds intro_path_spread =
default_lifetime / 4;
default_lifetime / 5;
/// Minimum paths to keep around for intros; mainly used at startup (the
/// spread, above, should be able to maintain more than this number of paths
/// normally once things are going).
constexpr std::size_t min_intro_paths = 4;
/// after this many ms a path build times out
static constexpr auto build_timeout = 30s;

@ -1294,7 +1294,8 @@ namespace llarp
if(numBuilding > 0)
return false;
return ((now - lastBuild) > path::intro_path_spread);
return ((now - lastBuild) > path::intro_path_spread)
|| NumInStatus(path::ePathEstablished) < path::min_intro_paths;
}
std::shared_ptr< Logic >

Loading…
Cancel
Save