diff options
Diffstat (limited to 'docs/peers.md')
| -rw-r--r-- | docs/peers.md | 12 |
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 |
