dev notes: Draft IPT algorithm: Early descriptor publish timing

Prompted by
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1429#note_2924494
This commit is contained in:
Ian Jackson 2023-07-25 15:10:45 +01:00
parent f050309c60
commit 360bf843ae
1 changed files with 13 additions and 3 deletions

View File

@ -51,7 +51,7 @@ lead to distinguishability ?
* Attempt to establish and verify them, in parallel
* Wait again the time it took to establish and verify the first one
* Wait a short time
and then publish a short-lifetime descriptor listing the ones
set up so far (this gets us some working descriptors right away)
@ -190,8 +190,7 @@ The idea of what to publish is calculated as follows:
* Unless we have at least one `Good` IPT: `Unknown`.
* Otherwise: if there are IPTs in `Establishing`,
and they have been in `Establishing` for less than
twice as long as the fastest-to-establish `Good` IPT:
and they have been in `Establishing` only a short time [1]:
`Unknown`; otherwise `Uncertain`.
The effect is that we delay publishing an initial descriptor
@ -210,6 +209,17 @@ in which case we reset it back to the minimum.
(Rationale: if IPTs are regularly misbehaving,
we should be cautious and limit our exposure to the damage.)
[1] NOTE: We wait a "short time" between establishing our first IPT,
and publishing an incomplete (<N) descriptor -
this is a compromise between
availability (publishing as soon as we have any working IPT)
and
exposure and hsdir load
(which would suggest publishing only when our IPT set is stable).
One possible strategy is to wait as long again
as the time it took to establish our first IPT.
Another is to somehow use our circuit timing estimator.
## Descriptor publication
The descriptor output from the IPT maintenance algorithm is