docs: implement release-readiness audit findings #127
No files matched your search
@@ -185,6 +185,8 @@ Useful measurement fields include:
|
||||
|
||||
Adjusted RTT can be negative when server processing exceeds the measured raw RTT. One-way delay estimates can be negative because of clock skew between the client and server.
|
||||
|
||||
On Linux, `sd_us` and `rd_us` (and the underlying one-way delay samples) prefer kernel-captured send/receive timestamps over userspace timing where the platform and socket support them, reducing the effect of scheduling and queuing delay on these measurements. This is a best-effort fallback: unsupported or implausible kernel timestamps fall back to userspace timing. RTT always uses userspace timing and is unaffected.
|
||||
|
||||
Default table output prints a final summary after completed finite runs and interrupted continuous runs when the run policy permits it. CSV, TSV, and JSON Lines output do not print this summary.
|
||||
|
||||
A peer closing a finite CLI or TUI run is accepted as a terminal outcome. In
|
||||
|
||||
@@ -351,7 +351,13 @@ pub struct OneWayDelaySample {
|
||||
/// Client-to-server delay.
|
||||
|
|
||||
///
|
||||
/// This is computed from the client send wall time and the server receive
|
||||
/// wall time when both are available.
|
||||
/// wall time when both are available. The client send endpoint is the
|
||||
/// correlated Linux kernel TX timestamp for this send when one is
|
||||
/// available and plausible for this send, and the userspace post-send wall
|
||||
/// time otherwise. The server receive endpoint is the server's kernel
|
||||
/// receive timestamp when one is available and plausible, and its
|
||||
/// userspace receive wall time otherwise. RTT is unaffected and remains a
|
||||
/// userspace monotonic measurement.
|
||||
pub client_to_server: Option<SignedDuration>,
|
||||
/// Server-to-client delay.
|
||||
///
|
||||
|
||||
@@ -32,11 +32,11 @@
|
||||
//! instant, is served normally with no timestamp. Nothing about which datagrams
|
||||
//! reach [`ServerCore`](crate::ServerCore) depends on it.
|
||||
//!
|
||||
//! **Nothing consumes it yet.** It is captured here so a follow-up change can
|
||||
//! decide how a kernel-observed arrival time enters the protocol core; today
|
||||
//! the core still samples its own receive instant and no protocol timing is
|
||||
//! affected. It is a software wall-clock reading only — not a NIC hardware
|
||||
//! timestamp, not monotonic, and not a transmit timestamp.
|
||||
//! [`ServerCore`](crate::ServerCore) prefers it over its own receive sample
|
||||
//! when reporting a request's receive instant, falling back to that sample
|
||||
//! when no plausible kernel reading is available; see
|
||||
//! `preferred_receive_wall_ns`. It is a software wall-clock reading only —
|
||||
//! not a NIC hardware timestamp, not monotonic, and not a transmit timestamp.
|
||||
|
||||
use std::{io, net::SocketAddr, time::SystemTime};
|
||||
|
||||
|
||||
Reference in new issue
Block a user
When the peer is the Linux
irtt-serverand negotiates wall-clock receive-and-send timestamps, the preferred kernel receive timestamp also becomesrecv_wall;compute_server_processingsubtracts it fromsend_wall, and that processing interval changesRttSample::adjustedand thereforeeffective. OnlyrawRTT remains an unaffected userspace-monotonic measurement, so qualify this sentence—and the matching README claim—to avoid misleading users interpreting adjusted/effective RTT results.Useful? React with 👍 / 👎.
Fixed: qualified this to raw RTT only.
adjusted_rtt_us/effective_rtt_usare derived from server-reported processing time, which shares the same server receive endpoint this field documents as kernel-preferred, so I updated both theclient_to_serverrustdoc and the matching README sentence (commitc9269ca) to say raw RTT is unaffected while adjusted/effective can still shift.🤖 Addressed by Claude Code
When
irtt-clientis used with an arbitrary IRTT-compatible peer, it only receives a wall-clock value from the wire and cannot know whether that peer obtained it from the kernel, userspace, or another clock source. This rustdoc therefore overpromises that the server endpoint prefers a plausible kernel timestamp; that behavior is specific to the Linux Tokio runtime in this repository. Qualify this claim—and the matching broad README statement—so consumers do not misinterpret measurements from other servers.Useful? React with 👍 / 👎.
Fixed: scoped the kernel-preference claim to this crate's own
irtt-serveron Linux. Against any other IRTT-compatible peer, the client has no way to know what clock source produced the reported wall-clock endpoint, so it's now stated as used as-is in that case, in both this rustdoc and the matching README sentence (commitcab1fd1).🤖 Addressed by Claude Code
When an application pairs this client with the public
irtt_server::ServerCore::handle_datagramAPI on Linux, the peer is still this crate'sirtt-server, but no kernel receive timestamp is used:crates/irtt-server/src/core.rs:161-165states that this path samples every instant itself, while only the crate-private Tokio runtime entry point supplies transport metadata. Qualify this claim, and the matching README sentence, to the TokioServer/server applet rather than the whole server crate. Fresh evidence is the inspected publicServerCorepath, which always callsprocess(..., None)atcore.rs:173-178.Useful? React with 👍 / 👎.
Fixed: scoped this to the Tokio server runtime specifically.
ServerCore::handle_datagramis a public API that always passeskernel_rx_timestamp = None; only the crate-private entry point the Tokio runtime (theirtt-serverapplet) uses actually supplies one. Both the rustdoc and README now say so explicitly (commit1754b77).🤖 Addressed by Claude Code