Files
ferrix/docs
Rayhaan JaufeerallyandClaude Fable 5.1 d7d7d39bb9
ci / docs (push) Canceled after 0s
ci / check (push) Canceled after 0s
ci / interop (push) Canceled after 0s
ci / fuzz (push) Canceled after 0s
metrics: export each session's TCP connection figures
The kernel's view of a session's TCP connection, which the status page
shows on request since the last change, could not be looked at after
the fact: a feed that crawled overnight left no record of whether the
peer's window or our own side held it up.

This change samples it at every scrape of `/metricz`: for each
established session, one `NETLINK_SOCK_DIAG` round trip, and twenty
gauges labelled by peer, `bgp_peer_tcp_*`: smoothed, least and variance
of the round-trip time; the congestion window and segment size; the
peer's receive window and ours; the send queue, the part of it not yet
sent, the receive queue and the segments in flight; retransmitted and
lost segments; the busy time and the time held up by the peer's window
and by our send buffer, cumulative, so that their rates give the share
of time a session is held up; octets sent and received; and the
delivery and pacing rates. A session the kernel has no connection for
loses its series, as does one that ends.

`SessionHandle::metric_label` is the one place a peer's metric label is
made (its name, or its address), used by the advertiser's gauge and here.

Documentation: the metrics reference lists them; the monitoring guide
gives the query for the share of time a session is held up by the
neighbor's receive window, which is the question the overnight feed
raised.

Testing: a daemon in the Linux VM with one session shows the series and
drops them when the session ends; the lab's basics phase checks the
scrape for the FRR session's round-trip time; the workspace tests pass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 12:12:53 +02:00
..

Documentation sources

This directory holds the sources of the Ferrix documentation site, built with Zola:

zola --root docs serve     # http://127.0.0.1:1111, rebuilt on every change
zola --root docs build     # into docs/public

The pages under content/ are Markdown with Zola additions, which a code forge does not render:

  • The block between +++ lines at the top of each page is its front matter: the title, description and position in the navigation.
  • {{ example(name="...") }} and {{ file(name="...") }} insert a file from examples/, whole, at that point. Open the file to read it.
  • Links of the form @/docs/... are internal links that Zola resolves and checks at build time. On the forge they do not work; the target is the path after @/, under content/.

To read the documentation as intended, build the site, or read it where it is published (base_url in config.toml).

STYLE.md is the writing guide. CI builds the site on every push and fails on a link to a page or an anchor that does not exist; zola --root docs check also checks external links.