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.
This commit is contained in:
Jason Rhinelander 2020-03-01 12:33:45 -04:00
parent 5b075259e6
commit 823c17206f
2 changed files with 7 additions and 2 deletions

View File

@ -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;

View File

@ -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 >