From 0c096a524531c180798f0712bb7100f0b7557f76 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 2 Nov 2026 23:07:14 +0100 Subject: swarm: relay links messages --- docs/dashboard.md | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'docs/dashboard.md') diff --git a/docs/dashboard.md b/docs/dashboard.md index a93e4d4..c614aab 100644 --- a/docs/dashboard.md +++ b/docs/dashboard.md @@ -323,14 +323,33 @@ older than 90 s is left out. A member keeps 64 subscribers at most. With `links: and the members are only asked every 30 s, for every page open on this node, until asked otherwise or the node restarts. +A member this node can't reach (on none of its transports: one on Tor alone, from a +node on libp2p alone) is asked through a peer that can: an active member it reaches +that, by the member list, shares a transport with the member, else one on a transport +this node isn't on (the lowest pair score of several). The LINKS names the members to +ask (`of`): the peer asks them on this node's behalf, itself or again through a peer +of its own (three nodes at most), for as long as this node asked, and passes their +links on in its replies (`relayed`, each with its age), several together: it holds +what arrives a while. The asker's window (250 ms, at most 5 s) is for the whole way: +each hop holds its share of what is left, the window divided among it and the hops +that may follow (at least 10 ms), and passes the rest on, so links reach the asker +within the window however long the chain. Such a subscription isn't ended by a message: every hop's runs +out unless renewed, so it ends within 90 s of the page closing or the node going away. +A hop renews its own as soon as it is renewed, for the same time, so the hops run in +step, each a message's delay behind the one before (it never runs out first), and a +renewal keeps its nonce, so what is on its way under the last one still counts. A +renewal lost on the way leaves the hops behind it to run out at the old time: with 90 s +renewed every 30 s, one lost costs nothing. + The links a member reports: its neighbours and the peers it holds dormant (a neighbour that goes dormant is one no more, but stays listed until it is heard from again), by which transport, whether only through a relay, the round trip (as the paths layer measures it), whether it holds the peer dormant or the path is down, the peer's other transports with a path up (each with its fastest path's round trip, and whether it goes only through a relay), and the peer's clock against the member's ([`measurements.md`](measurements.md), -Per peer, `clock`). A member answers a LINKS from members only, at most every 5 s, and -every build answers, with or without the feature (`swarm::links`). +Per peer, `clock`). A member answers a LINKS from members only, at most every 5 s (one +asking it to relay, each time), and every build answers, with or without the feature +(`swarm::links`). **Clocks.** The clocks in the links chain every member's clock to this node's, along the narrowest bounds, and the map takes each against their median: a member more than -- cgit v1.3.1