aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport/traffic.rs
Commit message (Collapse)AuthorAgeFilesLines
* dashboard: a subscribed node's message written out, read from it when showntv3 days1-0/+10
| | | | | | | | | | A subscribed node's messages come without being written out (their stream leaves the text out: up to 8 KiB each, 500 at a time), so the figures box said only when, both ends, type and size of one. Now the node answers for one message by its number, `GET /admin/dashboard/messages/own/{seq}` (`{"text": …}`, `404` once it isn't kept), which pages of other origins may call as they do its streams (`cors::open`), and the page reads it when the message is shown, with its narrow token, and keeps it on the message. Where it can't be read, the box says why.
* dashboard: the transport each message went by, in the consoletv3 days1-11/+32
| | | | | | | | | | | | | | | The console said with whom a message went, not how: the message log was noted above the identity layer (`CountingTransport`), where a message is to or from a node, and the address it went to (the paths layer picks one, `Paths::send_first`) or came from is gone. Only the paths layer's own PINGs and PONGs, logged under their addresses, had one. Now the identity layer notes the node's messages (`MessageLog::set_addressed`), with the address each went to (`IdentityTransport::send_proven` returns it) or came from; `CountingTransport` leaves them to it, and still notes them where there is no identity layer (tests). A console line ends with the transport (the address's scheme, in its colour on the map, the address in the tooltip), and the figures box shows the address. A subscribed node's messages carry theirs too, and the map runs every message along its transport's line, not only the PINGs and PONGs.
* dashboard: messages as they cometv3 days1-0/+14
| | | | | | | | | | | | | | | | | | The node sent its messages to the page every 2 s (`messages` events, this node's and a subscribed node's), and this node's ran on the map from its counts, which come with the state: the map showed a message 2 to 4 s after it went, the messages of each 2 s spread evenly over the next. The message log now tells those waiting of each message logged (MessageLog::logged_after), and both streams send what was logged a tenth of a second after the first of it (MESSAGES_GATHERED): a busy node about ten events a second, a quiet one each message soon after it went. The page runs messages as their streams bring them, this node's from its own log too (with the addresses its PINGs went to), as far apart as they were sent; more than six on a link and way at once are shared out by kind over the moment, and after a gap only the last 2 s run. The counts still give the rates and what was delivered.
* swarm: no SIGNATUREStv3 days1-6/+0
| | | | | | | | | | | | | | Signatures sent on their own (SIGNATURES, every second, to each peer not sent them yet) flooded every link: a signature made after its change left, or one that came with changes, went to every neighbour, whether or not it got the change along with its signature elsewhere. With every change of a node signed as it leaves (1217) and signatures going where their changes go (1218), none is left for them to carry: the message, its task and its traffic counter go (wire version 46). Signatures waiting for their changes are offered as before when sync messages bring them, and the changes waiting for signatures judged again with the next batch.
* swarm: changes taken unjudged, dropped (REFUSALS)tv4 days1-0/+6
| | | | | | | | | A node refusing changes a peer brought tells it which broke a rule; the peer judges them itself, and if its rules refuse them too, drops them with all built on them (its document forked without them, a fresh actor), quarantining its own writes among them. Wire version 42. Auth plan M6 (rejoin on taint).
* signatures: on their own (SIGNATURES)tv4 days1-0/+6
| | | | | | | Signatures no sync message took go on their own within a second, to each peer not sent them yet (wire version bumped). Auth plan M5.
* dashboard: without LINKS; LINKS removedtv4 days1-10/+1
| | | | | | | | | The dashboard reads every member's links from the members themselves; LINKS and LINKS_REPLY, swarm::links and their wire tags go (wire version bumped). Nodes the browser can't reach are drawn from what the reachable ones measure. Auth plan M3.
* dashboard: subscribed nodes' messages in the consoletv4 days1-6/+22
| | | | | | | Each tick's messages of a subscribed node, listed in the console with this node's own, from its own stream. Auth plan M3 (live data from every reachable node).
* HyParView (slim)tv5 days1-0/+12
|
* plumtreetv5 days1-0/+7
|
* indirect probestv5 days1-0/+9
|
* soak with churn testtv6 days1-0/+6
|
* strangers messages smalltv6 days1-0/+4
|
* push changes experimenttv7 days1-1/+3
|
* deflate blob chunkstv7 days1-1/+1
|
* add per-node traffic countstv9 days1-0/+52
|
* probe when reachabletv10 days1-0/+4
|
* dashboard: always try showing ping/pong aliastv10 days1-0/+6
|
* ping & pong are tied by nonce onlytv10 days1-3/+10
|
* introduce per-transport sync reply timeouttv10 days1-0/+4
|
* bootstrap: replace pull by progress notifytv10 days1-0/+4
|
* dashboard: allow message inspectiontv10 days1-1/+159
|
* calculate peer clock drifttv12 days1-0/+4
|
* add links messagestv12 days1-0/+3
| | | | | | | | | Introduce two new wire messages, LINKS and LINKS_REPLY (swarm::links). A member answers with its links: for each peer, the transport, whether it’s relayed, the RTT, and whether it’s dormant. It answers members only, at most every 5 s. This bumps wire::VERSION to 7. Every build answers, with or without the feature, so every node needs this patch before the map shows anything beyond its own node.
* list libp2p relays in documenttv2026-10-281-0/+4
|
* add support for renaming IDs in the loggertv2026-10-281-0/+4
|
* get swarm RTT from pathstv2026-10-281-0/+4
|
* move keepalive and firewall to pathstv2026-10-281-2/+6
|
* measure pathstv2026-10-281-0/+3
|
* rename PING/PONG to STATUS/STATUS_REPLYtv2026-10-281-8/+8
|
* add transport statstv2026-10-271-0/+12
|
* build topology per transporttv2026-10-271-0/+4
|
* use libp2p mDNStv2026-10-271-0/+4
|
* add support for several transportstv2026-10-271-0/+4
|
* add identity layertv2026-10-271-3/+7
|
* introduce addressestv2026-10-271-0/+12
|
* talk about "transport" unless mycelium is meanttv2026-10-271-5/+5
|
* add Transport::delivery_limittv2026-10-271-0/+4
|
* turn all pub into pub(crate)tv2026-10-261-20/+20
|
* replace utoipa by static openapi.yamltv2026-10-261-4/+3
|
* send bounded peer liststv2026-10-261-0/+4
|
* unify lock logictv2026-10-261-3/+2
|
* add chunked download and use it during rejointv2026-10-241-0/+2
|
* add traffic countertv2026-10-241-0/+199
This introduces a new wrapper that counts messages and payload bytes per peer, split by kind (hello, helloReply, sync, ping, pong), each sent, received and refused. The traffic counter goes around the firewall, which means messages dropped outbound are still counted as sent, and messages dropped inbound don't count as received.