aboutsummaryrefslogtreecommitdiffstats
path: root/docs/peers.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/peers.md')
-rw-r--r--docs/peers.md12
1 files changed, 10 insertions, 2 deletions
diff --git a/docs/peers.md b/docs/peers.md
index dd3186f..79f2abb 100644
--- a/docs/peers.md
+++ b/docs/peers.md
@@ -366,9 +366,17 @@ its neighbours by the graph it doesn't reach (`unreached`), once down for four k
intervals, and its neighbours it reaches that the graph doesn't link it to (`reached`:
a ring going round a member it doesn't reach, a member reaching out from behind NAT),
once up for one; each comes out again after the
-other hold. On a stable swarm the entry has none. A member that went away is recorded
+other hold; a link the other end records as unreached already isn't recorded again.
+On a stable swarm the entry has none. A member that went away is recorded
as unreached by its neighbours (they can't tell it from a link that broke), and taken
-out once they reach it again.
+out once they reach it again: so a node first asks up to three
+of the member's own neighbours it reaches whether they reach it (a PROBE, answered from
+what they know, contacting nobody: an active session that answers; a session that
+doesn't, held dormant or unanswered HELLOs; or can't tell): if some don't and none does, the member is away and nothing is recorded
+(asked again after another hold); otherwise, or with no answer within 10 s, the link
+is recorded. A node that reaches nobody at all is the one away, and
+records nothing. PROBEs are their own message, apart from the dashboard's
+LINKS, which a node may leave unanswered.
A writer's changes pass on along its tree ([`swarm/tree.rs`](../src/swarm/tree.rs)), the same on every node:
built on the graph the member list gives (as if every member reached every other), less