Expand description
Reusable client/session/event layer for IRTT-compatible probes.
irtt-client opens IRTT-compatible sessions, sends echo probes, receives
replies, classifies loss/late/duplicate packets, and emits ClientEvent
values for callers to consume directly or aggregate with irtt-stats.
With the tokio feature enabled, AsyncClient provides the same low-level
lifecycle for callers that own a Tokio runtime and drive readiness directly.
Timing values intentionally preserve signed measurement semantics. When
server timing is available, RttSample::effective is adjusted for server
processing and can be negative if the reported server processing time exceeds
the raw client-observed RTT. Directional OneWayDelaySample values are
also signed when the required wall-clock timestamps are available; negative
values usually indicate client/server clock skew.
Client is the runtime-free low-level blocking adapter and requires no
Tokio dependency at all; it is what a caller without a runtime, or that
wants full control over its own event loop, should start from. With the
tokio feature, AsyncClient provides the corresponding low-level Tokio
adapter for a caller that owns a runtime and drives socket readiness
itself. managed sits above both: ManagedClientTask /
ManagedClientHandle (tokio feature) run and control one or more
targets under a Tokio runtime, and BlockingManagedClient (tokio
feature) wraps that in a synchronous owner backed by its own dedicated
current-thread runtime for callers that want managed multi-target
behavior without touching Tokio themselves.
See examples/ in the repository for a runnable example of each tier.
Modules§
Structs§
- Async
Client - Low-level Tokio IRTT client for one connected UDP target.
- Client
- Low-level synchronous IRTT client.
- Client
Auth Config - Authentication settings used by client sessions.
- Client
Config - Configuration for opening and running an IRTT client session.
- Client
Timestamp - Client-side timestamp captured in both wall-clock and monotonic time.
- Negotiated
Params - Protocol parameters accepted for a session.
- OneWay
Delay Sample - Directional one-way delay samples computed from wall-clock timestamps.
- Packet
Meta - Receive-side packet metadata observed outside the IRTT wire protocol.
- Received
Stats Sample - Server-reported receive counters decoded from an echo reply.
- Recv
Budget - Bound for a single receive-drain operation.
- RttSample
- Round-trip timing for one echo reply.
- Server
Timing - Server-reported timing fields decoded from an echo reply.
- Signed
Duration - Signed nanosecond-backed duration used for derived timing values.
- Socket
Config - Local UDP socket options used by
ClientConfig.
Enums§
- Client
Error - Failure reported while configuring, opening, running, receiving, closing, or joining an IRTT client session.
- Client
Event - Event emitted by an IRTT client session.
- Negotiation
Policy - How strictly to handle server-side negotiation restrictions.
- Negotiation
Restriction - A server-side restriction applied during session parameter negotiation.
- Open
Outcome - Result of the IRTT open exchange.
- RunMode
- Mode requested during the IRTT open exchange.
- Warning
Kind - Category for a non-fatal
ClientEvent::Warning.
Constants§
- MAX_
DSCP_ CODEPOINT - Largest valid DSCP codepoint accepted by client configuration.
- MAX_
SERVER_ FILL_ BYTES - Protocol compatibility bound for a requested
server_fillvalue, in UTF-8 bytes. - MAX_TTL
- Largest IPv4 TTL or IPv6 hop-limit value accepted by client configuration.
- MAX_
UDP_ PAYLOAD_ LENGTH - Largest UDP payload length accepted by client configuration, in bytes.