From ed123556cf1c10369959fa96e1262050db63f7ce Mon Sep 17 00:00:00 2001 From: eunhhu Date: Tue, 29 Sep 2026 07:34:08 +0100 Subject: Wait for late packets, undo what they cost, and grow as CUBIC A packet called lost stays known a while; acknowledged after all, it came late: what it carried counts as received, the reordering awaited grows (later packets acknowledged, and time past the RTT, as RACK), and an episode of congestion events whose losses all came late is undone. The window grows only when it was used (RFC 9002 7.8), and congestion avoidance is CUBIC (RFC 9438), as quinn's. In a path of 50 Mbit/s whose packets reorder by up to 5 ms, with no loss, a link carried 1.5 Mbit/s at an RTT of 20 ms and 10 at 100 ms; now 43.6 and 40.1, as without reordering (research/experiments/020-lossy-paths, virtual time). With 1% random loss: 4.9 to 6.1 at 20 ms, 1.0 to 1.3 at 100 ms. The transport's CPU a record is unchanged. --- link/link-protocol.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'link/link-protocol.h') diff --git a/link/link-protocol.h b/link/link-protocol.h index 3037926..3f71809 100644 --- a/link/link-protocol.h +++ b/link/link-protocol.h @@ -57,11 +57,13 @@ enum { PURE_LINK_DATAGRAM = 1200, PURE_LINK_NAME = 64, PURE_LINK_ADDRESS = 28 }; /* Counts for a host's report: packets and records sent, records sent again, * packets lost and acknowledged, packets received, deliveries handed over, - * the last number stored; a receiver's senders woken (their active state - * made), of them with a secret remembered (no X25519), let go when idle, - * and active now. */ + * the last number stored; packets called lost that came late, and + * congestion events undone for it; a receiver's senders woken (their + * active state made), of them with a secret remembered (no X25519), let go + * when idle, and active now. */ typedef struct { - uint64_t packets, records, resent, lost, acknowledged, received, deliveries, stored, woken, remembered, swept, active; + uint64_t packets, records, resent, lost, acknowledged, received, deliveries, stored, late, undone, woken, remembered, + swept, active; } PureLinkCounts; /* ---- The sending side: one output's saved sends to a receiver's input, as -- cgit v1.2.3