Skip to content

Accelerated Bottleneck Bandwidth Adaptation (ABBA) for CUBIC and Cuback - #689

Open
kazuho wants to merge 28 commits into
masterfrom
kazuho/rlt-proto1
Open

Accelerated Bottleneck Bandwidth Adaptation (ABBA) for CUBIC and Cuback#689
kazuho wants to merge 28 commits into
masterfrom
kazuho/rlt-proto1

Conversation

@kazuho

@kazuho kazuho commented Sep 5, 2026

Copy link
Copy Markdown
Member

Problem

Radio paths violate an assumption CUBIC depends on: that available bandwidth is roughly stable. Radio quality varies, and handover between stations or satellites moves capacity in steps. When capacity drops the queue overflows; when it recovers the flow is left well under the pipe, and CUBIC's cubic-curve recovery is too slow to climb back before the next disturbance.

What's needed is to increase CWND faster whenever the flow is demonstrably below the pipe.

The same condition — an empty queue while the flow is not the constraint — is what random loss also produces, so the mechanism additionally mitigates underutilization on lossy paths. On a lossy Corporate_WiFi profile CUBIC holds 46.7% of link goodput at 5% loss-per-RTT and 34.3% at 10%.

Approach

ABBA combines two ideas.

1. Increase rapidly while RTT sits at the floor. When the latest RTT is at its minimum and being driven down, the bottleneck queue is empty and the flow is not the constraint. ABBA adds a second growth term alongside the CUBIC/Cuback curve and takes the larger of the two, at max(2ms / rtt_threshold, 2.5%) per RTT — about 2 ms of additional queue per round. RTT feedback lags a round, so this self-limits near 4.5 ms of standing queue and stops. The threshold adapts: (minRTT + previous_period_min) / 2, floored at minRTT + 2ms, capped at current_period_min + 2ms.

2. Gate on confirmed queue existence. Acceleration requires prior evidence that this path has a queue to refill: full_rtt — the smoothed RTT captured when the first recovery exits — must exceed minRTT + 10ms and sit more than 5% above the latest RTT.

The gate is not only a safety guard. Because full_rtt is a live estimate of what a full queue looks like, it also drives the second recovery mechanism: if smoothed RTT stays below (minRTT + full_rtt) / 2 for twice the time a non-losing CUBIC flow would need to rebuild the queue, the path characteristics may have changed. The controller retains CWND, discards the CA trajectory, and re-enters slow start to re-learn full_rtt.

That second path is what carries the design under frequent loss, where the flow never rebuilds a queue on its own and the RTT gate alone has nothing to work with. It is directly visible in the policy comparison: LTE CUBIC standalone at 10% loss/RTT reaches 90.6% with recalibration enabled and 80.6% without.

ECN-CE counts as a high-queue observation, including marks received inside a recovery period.

Safety: increase-side only

ABBA never suppresses, defers, or scales a congestion response. Every loss and every CE mark produces the same multiplicative decrease as stock CUBIC/Cuback. beta is derived solely from the controller type and whether the signal was ECN; nothing on the reduction path is conditioned on ABBA state or policy.

This is deliberately not a random-loss classifier. A classifier decides a loss was non-congestive and withholds the reduction, which stakes correctness on the classification being right — and it is wrong precisely when real congestion resembles random loss. ABBA declines that trade: it buys recovery entirely on the increase side and pays full price on every signal. The consequence is that a misfiring RTT gate on some path nobody simulated costs one round of over-growth followed by a normal decrease, rather than a missed congestion response. The bound holds by construction, not by calibration.

The same invariant covers the capacity drop described above: the reduction path is untouched, so the resulting queue overflow produces the standard response, with ABBA contributing at most its ~4.5 ms of extra queue at the moment of the drop.

Recalibration re-enters slow start from a large CWND, which needs its own argument. It is gated on the absence of queue pressure from any source: last_high_queue_at is refreshed whenever smoothed RTT reaches the midpoint between minRTT and full_rtt, and whenever a CE mark arrives, so the timer matures only after sustained evidence that neither the flow itself nor any competitor is queueing at the bottleneck. The wait is measured in CUBIC's own units — high_rtt_interval is how long a flow at this window scale takes to climb back from a reduction and refill the queue — and recalibration needs twice that to pass untouched. CUBIC would have filled the pipe twice over; nothing did.

Design criteria and results

Simulator, 18 network profiles × {tail-drop, CoDel}. Loss probability is set so a full pipe sees at least one loss per RTT with the stated probability. Standalone: 7×100 s runs measuring the last 50 s. Competition: 7×160 s per flow order measuring the last 80 s. Self-competition: 5×320 s, final 40 s window. Full tables are in the commit messages of 2766165 (0x2) and 2a2cde1 (0x1).

On par with stock when the network is stable and lossless. Clean-path competition against stock sits at parity on every profile; the widest deviations are Corporate_WiFi 58.1/44.1 and WiFi@Office 53.3/45.3, both inside the stock-vs-stock baseline spread. On the shallow synthetic queues the gate correctly keeps acceleration off entirely: queue5ms 49.6/49.6, queue2.5ms 51.0/50.8.

Recovers quickly under random loss (standalone goodput, stock → ABBA, tail-drop):

Profile CUBIC 5% CUBIC 10% Cuback 5% Cuback 10%
Corporate_WiFi 46.7 → 97.5 34.3 → 97.1 55.1 → 97.6 34.4 → 97.3
WiFi@Office 72.5 → 97.7 51.6 → 97.7 72.4 → 97.7 50.0 → 97.7
5G 60.6 → 95.0 39.9 → 90.7 64.7 → 96.7 43.3 → 93.5
Home_WiFi 51.7 → 93.8 36.5 → 88.4 51.9 → 95.6 35.9 → 91.0
LTE 89.0 → 95.1 62.9 → 90.6 89.6 → 97.3 67.6 → 94.4
LEO 80.1 → 95.8 53.4 → 91.3 75.3 → 97.5 56.9 → 94.7

Stays below a competing stock flow that is not experiencing loss. This was a design criterion, and it is met with margin: a lossy ABBA flow against a clean stock flow takes 17–49% across all profiles — never parity. Ten clean CUBIC flows against one ABBA flow on DSL (15 repetitions, mean of flow-order medians): the ABBA flow takes 10.21% with no loss and 9.62% at 5% loss/RTT, against a 10% fair share.

Self-converges. When loss is rare the gates stay shut and behavior reduces to stock, which converges; acceleration is additionally self-limiting, since a flow that opens its gate builds queue and closes it again. When loss is frequent, recalibration is the convergence driver — both flows re-probe symmetrically. Self-competition at 5% loss gives medians near 50% with 85–98% utilization across all profiles.

Policy flags

quicly_context_t::accel_adaptation replaces the earlier boolean. Default is 0 (off).

Flag Value Behavior
QUICLY_CC_ACCEL_ADAPTATION_INCREASE_ALWAYS 0x1 Bypasses the full_rtt guard; adaptive RTT gate still applies
QUICLY_CC_ACCEL_ADAPTATION_RECALIBRATE 0x2 Observes full_rtt, enables recalibration, and (unless 0x1) uses full_rtt as the increase guard
QUICLY_CC_ACCEL_ADAPTATION_ON = 0x2 Recommended setting; what simulator -T selects

full_rtt and high-queue observations are maintained regardless of policy; the flags govern only how they are consumed. 0x1 drops both roles of the gate at once — it is weaker standalone under heavy loss (LTE CUBIC 80.6% vs 90.6% at 10%/RTT, for the reason above) and on the synthetic queue5ms/queue2.5ms profiles takes 63–77% share against stock. Those profiles are stress cases rather than representative access-network queues, but they show what the gate is buying.

Open items

  • All results are from the simulator, which is not a real network. Its bottleneck rate is fixed, so the bandwidth-step case that motivates the design is argued from mechanism rather than demonstrated; beyond that it does not model correlated radio loss, ACK aggregation, or real cross traffic. Real-network validation is pending.
  • 0x3 has unit coverage but no benchmark run.
  • -T takes no argument, so 0x1/0x3 aren't selectable from the simulator; the 0x1 figures come from a separate always-increase build.
  • Competition between lossy ABBA flows at different RTTs is untested. The increase rate targets an absolute queue depth (2 ms per round), so in wall-clock terms a short-RTT flow builds queue faster than a long-RTT one; whether this compounds CUBIC's existing RTT bias is an open question. Flows not experiencing non-congestive loss are unaffected, the gates keeping them on the stock trajectory.
  • If the path's idle RTT rises during a connection, ABBA as implemented becomes less effective: the increase gate cannot rise above (rtt->minimum + min_rtt_previous_period) / 2, and rtt->minimum only ever moves down.
  • All competition data is against stock CUBIC/Cuback. Behavior against BBR — a realistic peer on these paths, and one that deliberately drains the queue — is untested.

Closes #687.

Use the TLS context random_bytes callback for simulator packet loss.

The previous rand() % 65536 comparison quantized the configured probability
to multiples of 1/65536. This substantially inflated the very small
per-packet probabilities used to model a fixed probability of loss per RTT on
high-BDP paths; in some cases distinct 5% and 10%-per-RTT configurations
became the same effective probability.

A 32-bit sample reduces the probability step to 2^-32. Drawing it through the
TLS context also varies loss placement between benchmark repetitions, avoiding
dependence on the process-global deterministic rand() sequence.
Add an opt-in random_loss_tolerance policy for modern CUBIC.

Calibration slow start records a scalar queue-overflow RTT. A later CA packet
loss still applies the normal 0.7 reduction, but ACKs may recover toward the
pre-loss CWND while the latest RTT is within 2 ms of minRTT and the calibrated
overflow RTT is more than 10 ms above minRTT. Growth uses half the relative
distance to the recovery target with a 2.5% floor, while the ordinary CUBIC
trajectory continues in parallel.

If smoothed RTT remains below half the calibrated queue depth for twice the
time in which a non-losing CUBIC competitor could have reached congestion,
return to calibration slow start without resetting CWND. ECN and shallow
queues retain ordinary CUBIC behavior. Add focused tests for accelerated
recovery, guards, recalibration, and undo.

Standalone tail-drop throughput
--------------------------------

Each value below is median goodput as a percentage of available bandwidth
over seven 100-second runs, measuring the latter 50 seconds. Per-packet loss
was chosen so that all packets in one full pipe (bandwidth times base RTT plus
configured queue) have a 5% or 10% aggregate probability of at least one
random loss.

| Profile          | Stock 5% | NewCC 5% | Stock 10% | NewCC 10% |
|------------------|---------:|---------:|----------:|----------:|
| DSL              |    92.05 |    97.52 |     70.18 |     92.91 |
| Home WiFi        |    52.87 |    76.35 |     37.76 |     52.42 |
| Public           |    98.03 |    98.02 |     96.31 |     97.07 |
| Corporate WiFi   |    48.38 |    82.97 |     34.57 |     55.22 |
| LTE              |    82.69 |    93.30 |     61.35 |     73.92 |
| 5G               |    59.40 |    83.76 |     41.56 |     58.97 |
| LEO              |    79.40 |    94.31 |     56.96 |     72.86 |
| GEO              |    98.01 |    98.01 |     94.82 |     96.41 |
| DoCoMo@Office    |    88.75 |    97.58 |     71.56 |     97.00 |
| au@Office        |    95.90 |    97.55 |     56.63 |     96.08 |
| WiFi@Office      |    71.67 |    96.50 |     52.88 |     83.84 |
| DoCoMo@mall      |    98.02 |    98.03 |     94.41 |     97.79 |
| congested        |    97.95 |    97.93 |     97.91 |     97.81 |
| bdp20            |    97.62 |    97.78 |     96.96 |     96.16 |
| bdp40            |    97.51 |    97.76 |     95.68 |     96.04 |
| queue 10 ms      |    74.61 |    74.10 |     52.59 |     52.17 |
| queue 5 ms       |    67.76 |    68.97 |     51.52 |     51.54 |
| queue 2.5 ms     |    65.51 |    66.28 |     48.38 |     47.99 |

The 5% results show the intended gain on lossy paths with enough queue for the
RTT gates to operate. Public, the low-bandwidth profiles, and shallow queues
are neutral. At the 10% stress point NewCC usually remains ahead of stock, but
Home WiFi, Corporate WiFi, LTE, 5G, and LEO still fail to approach full
utilization. Individual 10% runs also occasionally collapse despite high
medians: NewCC ranged from 59.4% to 98.0% on GEO, 57.6% to 97.3% on
DoCoMo@Office, and 80.1% to 97.5% on au@Office.

Clean tail-drop competition
---------------------------

These are three 160-second runs per flow ordering, measuring the latter 80
seconds. Both flows have zero random loss. Stock/stock reports the second
flow's median share. The next two columns report NewCC's median share when it
is created second or first; the final column is its mean share across all six
runs.

| Profile          | Stock/stock second | Stock -> NewCC | NewCC -> stock | NewCC mean |
|------------------|-------------------:|---------------:|---------------:|-----------:|
| DSL              |              49.40 |          45.89 |          52.32 |      48.65 |
| Home WiFi        |              48.29 |          49.94 |          51.41 |      49.54 |
| Public           |              49.58 |          46.85 |          49.10 |      48.57 |
| Corporate WiFi   |              54.68 |          51.35 |          34.46 |      46.61 |
| LTE              |              47.11 |          47.71 |          52.59 |      49.36 |
| 5G               |              50.87 |          48.78 |          50.42 |      49.97 |
| LEO              |              52.58 |          51.55 |          47.02 |      48.01 |
| GEO              |              49.99 |          49.91 |          50.07 |      49.99 |
| DoCoMo@Office    |              49.07 |          49.65 |          49.66 |      49.68 |
| au@Office        |              51.54 |          49.12 |          49.55 |      49.34 |
| WiFi@Office      |              54.00 |          58.48 |          50.17 |      53.59 |
| DoCoMo@mall      |              49.55 |          49.60 |          50.18 |      49.89 |
| congested        |              48.01 |          49.14 |          50.93 |      49.96 |
| bdp20            |              49.57 |          49.35 |          49.81 |      50.31 |
| bdp40            |              51.89 |          49.11 |          50.25 |      49.36 |
| queue 10 ms      |              47.16 |          50.98 |          53.28 |      51.12 |
| queue 5 ms       |              48.98 |          48.66 |          50.28 |      48.69 |
| queue 2.5 ms     |              51.25 |          49.28 |          50.13 |      49.88 |

The clean-path safety result is that NewCC does not systematically take more
bandwidth than stock CUBIC. Corporate WiFi and WiFi@Office have substantial
flow-order effects, also visible in the stock/stock baseline.

NewCC against NewCC at the 5% setting
-------------------------------------

Two NewCC flows were given the same per-packet loss probability for five
independent 320-second runs. The table compares standalone NewCC goodput above
with the second flow's share in the final 40-second window. Combined
utilization is the median for that window; deviation is the mean absolute
distance from a 50% share. Because loss continues independently, stable
convergence should be judged from the range and window-to-window behavior,
not merely from the median share.

| Profile          | Standalone | Flow 2 median | Flow 2 range | Combined util. | Final deviation |
|------------------|-----------:|--------------:|-------------:|---------------:|----------------:|
| DSL              |      97.52 |         50.02 |  47.95-52.74 |          98.02 |            1.72 |
| Home WiFi        |      76.35 |         54.25 |  46.52-61.19 |          97.43 |            5.57 |
| Corporate WiFi   |      82.97 |         46.38 |  45.20-51.56 |          97.67 |            3.14 |
| LTE              |      93.30 |         45.47 |  37.65-63.11 |          98.03 |            7.02 |
| 5G               |      83.76 |         52.50 |  46.82-56.35 |          97.64 |            3.25 |
| LEO              |      94.31 |         51.22 |  39.65-60.75 |          98.03 |            6.87 |
| GEO              |      98.01 |         52.01 |  42.78-73.39 |          97.96 |            8.02 |
| DoCoMo@Office    |      97.58 |         54.71 |  27.86-66.91 |          97.73 |           14.08 |
| au@Office        |      97.55 |         36.08 |  29.29-56.65 |          97.73 |           13.58 |
| WiFi@Office      |      96.50 |         50.06 |  45.94-54.68 |          97.72 |            2.21 |
| DoCoMo@mall      |      98.03 |         50.14 |  33.94-73.04 |          98.03 |           10.56 |
| queue 10 ms      |      74.10 |         48.51 |  44.40-50.93 |          96.79 |            2.56 |

NewCC/NewCC shares remain narrow on DSL, Corporate WiFi, 5G, WiFi@Office,
and the shallow queue. They do not reliably converge on the deeper high-BDP
profiles even when standalone NewCC saturates them: the 40-second share error
does not consistently decrease over the eight windows on GEO,
DoCoMo@Office, au@Office, or DoCoMo@mall. The prototype preserves aggregate
utilization there but does not solve self-fairness.

Non-lossy stock CUBIC against 5%-loss NewCC
-------------------------------------------

These are seven 160-second runs per flow ordering, measuring the latter 80
seconds. The NewCC flow uses the same per-packet probability as the standalone
5%-per-filled-path-RTT benchmark, while the stock CUBIC flow has no random
loss. Throughput and combined utilization are percentages of bottleneck
bandwidth. The parenthesized values are the full range of NewCC's share across
the seven repetitions.

| Profile          | Stock -> NewCC: S / N | N share (range)       | NewCC -> stock: N / S | N share (range)       | Util. S->N / N->S |
|------------------|-----------------------:|----------------------:|-----------------------:|----------------------:|------------------:|
| DSL              |          63.75 / 34.27 | 34.96 (30.03-41.61)  |          36.60 / 61.44 | 37.33 (30.26-40.02)  |     98.03 / 98.04 |
| Home WiFi        |          69.13 / 28.81 | 29.41 (28.53-34.61)  |          29.18 / 68.77 | 29.79 (29.08-35.11)  |     97.94 / 97.94 |
| Public           |          67.23 / 30.80 | 31.42 (25.66-36.12)  |          26.63 / 71.41 | 27.16 (24.58-33.47)  |     98.04 / 98.03 |
| Corporate WiFi   |          80.75 / 16.99 | 17.38 (15.00-19.05)  |          16.92 / 80.82 | 17.31 (14.71-19.65)  |     97.74 / 97.74 |
| LTE              |          68.53 / 29.51 | 30.10 (22.29-36.86)  |          27.23 / 70.81 | 27.77 (23.17-32.14)  |     98.04 / 98.04 |
| 5G               |          74.99 / 22.92 | 23.41 (14.84-25.47)  |          22.08 / 75.84 | 22.55 (18.25-24.24)  |     97.91 / 97.90 |
| LEO              |          72.92 / 25.12 | 25.62 (19.39-34.12)  |          26.94 / 71.09 | 27.48 (15.22-32.89)  |     98.04 / 98.04 |
| GEO              |          60.43 / 37.57 | 38.34 (32.49-44.30)  |          37.78 / 60.22 | 38.55 (35.86-50.04)  |     98.00 / 98.00 |
| DoCoMo@Office    |          76.16 / 21.66 | 22.14 (18.53-29.04)  |          27.81 / 70.03 | 28.42 (17.37-37.27)  |     97.83 / 97.85 |
| au@Office        |          78.11 / 19.62 | 20.08 (9.23-26.72)   |          19.10 / 78.83 | 19.50 (17.30-25.31)  |     97.73 / 97.73 |
| WiFi@Office      |          76.98 / 20.75 | 21.23 (19.98-23.49)  |          19.66 / 78.07 | 20.12 (18.97-23.48)  |     97.73 / 97.73 |
| DoCoMo@mall      |          68.83 / 29.20 | 29.78 (27.23-31.40)  |          30.28 / 67.75 | 30.89 (21.53-42.16)  |     98.03 / 98.03 |
| congested        |          54.24 / 43.36 | 44.43 (43.27-48.95)  |          42.10 / 56.40 | 42.74 (39.27-50.08)  |     97.96 / 97.99 |
| bdp20            |          50.28 / 47.69 | 48.67 (46.81-50.13)  |          47.67 / 50.25 | 48.69 (46.36-51.29)  |     97.85 / 97.91 |
| bdp40            |          51.11 / 46.87 | 47.83 (47.09-51.95)  |          46.30 / 51.67 | 47.26 (44.04-51.03)  |     97.96 / 97.96 |
| queue 10 ms      |          59.13 / 37.97 | 39.03 (37.42-42.62)  |          40.61 / 57.09 | 41.56 (38.72-42.72)  |     97.20 / 97.67 |
| queue 5 ms       |          55.14 / 37.56 | 40.52 (37.81-43.53)  |          37.78 / 55.09 | 40.81 (39.25-41.34)  |     92.77 / 92.77 |
| queue 2.5 ms     |          52.26 / 36.77 | 41.30 (39.78-44.03)  |          36.57 / 52.35 | 41.13 (39.46-42.96)  |     88.90 / 88.93 |

The non-lossy stock flow receives more bandwidth on every profile; NewCC does
not become over-aggressive when only its path has random loss. Aggregate
utilization remains about 98% except on the extremely shallow queues, because
the non-lossy flow consumes the bandwidth relinquished by NewCC. On the
high-rate profiles NewCC often receives only 17-31% of the bottleneck.

Repeating this matrix with stock CUBIC for the lossy flow shows only a marginal
competitive improvement from NewCC. Across the 36 profile-and-order median
shares, 32 change by no more than three percentage points; the full change
ranges from -3.57 to +6.16 points, and the mean change is +0.46 points. The
sign varies by profile and order, and the randomized distributions generally
overlap. NewCC's clear benefit is therefore standalone utilization on lossy
paths, not competition against a non-lossy CUBIC flow.
Keep CUBIC's ordinary loss response independent of random loss tolerance.
In particular, use the normal first-loss BDP estimate when calibration slow
start ends, rather than retaining the overshot slow-start CWND as Wmax.

After the ordinary packet-loss reduction, set the accelerated recovery target
to reduced_cwnd / beta^2. In congestion avoidance, where reduced_cwnd is
beta * CWNDpre, this is CWNDpre / beta. Apply the same rule to the loss that
ends calibration slow start, so that obtaining qoRTT also opens accelerated
recovery. The live CWND itself remains governed by the existing slow-start or
congestion-avoidance reduction.

Update the focused tests to cover normal slow-start reduction, the target
derived from reduced CWND, and a subsequent CA recovery.

Standalone tail-drop throughput
--------------------------------

Each value below is median goodput as a percentage of available bandwidth
over seven 100-second runs, measuring the latter 50 seconds. Per-packet loss
was chosen so that all packets in one full pipe (bandwidth times base RTT plus
configured queue) have a 5% or 10% aggregate probability of at least one
random loss.

| Profile          | Stock 5% | NewCC 5% | Stock 10% | NewCC 10% |
|------------------|---------:|---------:|----------:|----------:|
| DSL              |    93.68 |    97.72 |     73.91 |     96.41 |
| Home WiFi        |    52.27 |    96.45 |     37.27 |     95.15 |
| Public           |    98.03 |    98.03 |     93.33 |     97.87 |
| Corporate WiFi   |    51.79 |    97.72 |     34.16 |     97.65 |
| LTE              |    84.87 |    97.14 |     64.01 |     96.12 |
| 5G               |    53.45 |    97.19 |     42.99 |     96.20 |
| LEO              |    84.20 |    97.27 |     59.65 |     96.26 |
| GEO              |    96.51 |    98.00 |     84.25 |     95.77 |
| DoCoMo@Office    |    88.54 |    97.73 |     73.17 |     97.30 |
| au@Office        |    75.46 |    97.68 |     55.90 |     97.55 |
| WiFi@Office      |    73.06 |    97.72 |     51.85 |     97.71 |
| DoCoMo@mall      |    98.03 |    98.04 |     94.37 |     97.87 |
| congested        |    97.93 |    97.85 |     97.93 |     97.87 |
| bdp20            |    97.64 |    97.62 |     96.06 |     96.58 |
| bdp40            |    96.98 |    97.76 |     95.88 |     96.31 |
| queue 10 ms      |    71.85 |    73.33 |     52.40 |     54.66 |
| queue 5 ms       |    67.80 |    65.09 |     52.75 |     48.46 |
| queue 2.5 ms     |    66.63 |    64.97 |     49.38 |     47.74 |

The corrected target removes the previous systematic underutilization on the
deep-queue high-rate profiles. At 5% loss, NewCC reaches roughly 96.5--98%
on those paths; at 10%, it generally remains at 95--98%. Shallow queues do
not enable the RTT-gated mechanism and remain neutral or slightly worse.

Clean tail-drop competition
---------------------------

These are seven 160-second runs per flow ordering, measuring the latter 80
seconds. Both flows have zero random loss. Stock/stock reports the second
flow's median share. The next two columns report NewCC's median share when it
is created second or first; the final column is its mean share across all
fourteen runs.

| Profile          | Stock/stock second | Stock -> NewCC | NewCC -> stock | NewCC mean |
|------------------|-------------------:|---------------:|---------------:|-----------:|
| DSL              |              50.11 |          46.90 |          50.44 |      49.76 |
| Home WiFi        |              48.52 |          52.21 |          50.56 |      51.42 |
| Public           |              49.97 |          49.64 |          51.56 |      50.53 |
| Corporate WiFi   |              58.58 |          56.78 |          45.46 |      51.49 |
| LTE              |              51.24 |          49.55 |          51.64 |      50.14 |
| 5G               |              49.81 |          50.70 |          50.17 |      51.41 |
| LEO              |              54.69 |          52.65 |          51.26 |      50.58 |
| GEO              |              49.98 |          50.01 |          50.00 |      49.73 |
| DoCoMo@Office    |              50.01 |          50.09 |          49.04 |      49.94 |
| au@Office        |              51.48 |          51.50 |          48.45 |      49.78 |
| WiFi@Office      |              53.35 |          54.99 |          47.27 |      50.76 |
| DoCoMo@mall      |              49.66 |          49.72 |          50.32 |      50.04 |
| congested        |              49.18 |          48.63 |          50.93 |      50.13 |
| bdp20            |              50.50 |          49.32 |          49.55 |      49.52 |
| bdp40            |              48.47 |          49.74 |          49.88 |      49.33 |
| queue 10 ms      |              50.39 |          49.02 |          50.08 |      50.01 |
| queue 5 ms       |              50.48 |          48.99 |          50.78 |      50.16 |
| queue 2.5 ms     |              50.68 |          51.05 |          49.55 |      50.15 |

NewCC does not take a systematic advantage over a clean CUBIC flow that can
sustain the bottleneck. Corporate WiFi and WiFi@Office retain flow-order
effects also present in the stock/stock control.

NewCC against NewCC at the 5% setting
-------------------------------------

Two NewCC flows were given the same per-packet loss probability for five
independent 320-second runs. The table compares standalone NewCC goodput above
with the second flow's share in the final 40-second window. Combined
utilization is the median for that window; deviation is the mean absolute
distance from a 50% share.

| Profile          | Standalone | Flow 2 median | Flow 2 range | Combined util. | Final deviation |
|------------------|-----------:|--------------:|-------------:|---------------:|----------------:|
| DSL              |      97.72 |         51.10 |  45.60-64.53 |          98.02 |            4.65 |
| Home WiFi        |      96.45 |         55.18 |  53.38-59.99 |          97.61 |            5.99 |
| Corporate WiFi   |      97.72 |         48.76 |  35.97-54.57 |          97.72 |            5.76 |
| LTE              |      97.14 |         45.75 |  39.49-47.58 |          98.03 |            6.20 |
| 5G               |      97.19 |         57.73 |  48.11-59.57 |          97.72 |            5.88 |
| LEO              |      97.27 |         49.48 |  43.64-55.68 |          98.03 |            3.30 |
| GEO              |      98.00 |         60.53 |  43.95-62.36 |          98.00 |           10.00 |
| DoCoMo@Office    |      97.73 |         59.15 |  29.75-69.30 |          97.73 |           13.25 |
| au@Office        |      97.68 |         62.57 |  53.94-81.29 |          97.73 |           13.44 |
| WiFi@Office      |      97.72 |         50.18 |  47.98-55.39 |          97.72 |            1.90 |
| DoCoMo@mall      |      98.04 |         45.26 |  43.55-60.93 |          98.03 |            6.25 |
| queue 10 ms      |      73.33 |         47.43 |  42.93-53.01 |          97.48 |            3.41 |

Aggregate utilization stays near 98%, but the prototype does not consistently
converge against itself on GEO, DoCoMo@Office, au@Office, or DoCoMo@mall.

Non-lossy stock CUBIC against 5%-loss NewCC
-------------------------------------------

These are seven 160-second runs per flow ordering, measuring the latter 80
seconds. NewCC uses the same per-packet probability as the standalone 5%
benchmark, while stock CUBIC has no random loss. Throughput and combined
utilization are percentages of bottleneck bandwidth. Parenthesized values are
the full range of NewCC's share across the seven repetitions.

| Profile          | Stock -> NewCC: S / N | N share (range)      | NewCC -> stock: N / S | N share (range)      | Util. S->N / N->S |
|------------------|-----------------------:|---------------------:|-----------------------:|---------------------:|------------------:|
| DSL              |          64.69 / 33.35 | 34.02 (31.62-42.28) |          33.59 / 64.45 | 34.26 (33.54-38.14) |     98.03 / 98.03 |
| Home WiFi        |          69.55 / 28.40 | 29.00 (26.48-32.57) |          30.63 / 67.31 | 31.28 (25.73-36.28) |     97.95 / 97.94 |
| Public           |          67.40 / 30.63 | 31.25 (24.27-37.80) |          31.50 / 66.54 | 32.13 (24.64-36.08) |     98.04 / 98.04 |
| Corporate WiFi   |          80.63 / 17.10 | 17.50 (16.27-19.99) |          19.48 / 78.26 | 19.93 (15.72-21.38) |     97.74 / 97.74 |
| LTE              |          68.87 / 29.16 | 29.75 (24.46-31.16) |          31.30 / 66.74 | 31.93 (27.10-36.65) |     98.04 / 98.04 |
| 5G               |          76.11 / 21.78 | 22.25 (14.77-26.11) |          25.12 / 72.80 | 25.66 (16.85-27.28) |     97.89 / 97.92 |
| LEO              |          75.03 / 23.01 | 23.47 (19.52-25.28) |          27.03 / 71.00 | 27.57 (22.21-31.43) |     98.04 / 98.04 |
| GEO              |          55.07 / 42.93 | 43.81 (28.67-50.00) |          41.30 / 57.89 | 41.64 (36.40-48.43) |     98.01 / 98.00 |
| DoCoMo@Office    |          72.30 / 25.53 | 26.09 (20.13-27.35) |          27.53 / 70.29 | 28.14 (22.72-34.08) |     97.83 / 97.84 |
| au@Office        |          80.38 / 17.35 | 17.75 (13.45-25.42) |          17.78 / 79.94 | 18.20 (15.73-32.01) |     97.73 / 97.73 |
| WiFi@Office      |          76.53 / 21.19 | 21.69 (19.98-25.50) |          19.78 / 77.95 | 20.24 (18.81-23.08) |     97.73 / 97.73 |
| DoCoMo@mall      |          69.12 / 28.91 | 29.49 (21.67-35.00) |          26.98 / 71.05 | 27.52 (25.30-30.31) |     98.03 / 98.03 |
| congested        |          56.87 / 40.67 | 41.70 (37.46-47.94) |          44.31 / 54.29 | 44.94 (39.64-52.79) |     97.99 / 98.00 |
| bdp20            |          49.93 / 47.94 | 48.98 (47.01-50.65) |          46.07 / 51.80 | 47.07 (45.51-49.47) |     97.87 / 97.83 |
| bdp40            |          52.85 / 45.10 | 46.04 (42.91-49.54) |          44.95 / 53.00 | 45.89 (43.12-50.88) |     97.98 / 97.98 |
| queue 10 ms      |          57.45 / 39.85 | 40.95 (38.80-42.83) |          42.66 / 55.06 | 43.66 (39.20-46.43) |     97.27 / 97.73 |
| queue 5 ms       |          55.68 / 37.46 | 40.22 (39.23-42.34) |          37.68 / 55.13 | 40.60 (38.60-43.40) |     92.86 / 92.81 |
| queue 2.5 ms     |          51.49 / 37.38 | 42.25 (39.18-43.15) |          36.55 / 52.92 | 40.85 (38.71-43.27) |     88.87 / 88.82 |

The lossy NewCC flow remains less aggressive than the clean stock flow on
every profile. A contemporaneous lossy-stock control overlaps these shares
and changes in both directions by profile and order. The correction therefore
improves standalone loss tolerance without creating a systematic competitive
advantage.

The results satisfy the prototype's stated minimum bar: retain CUBIC's
external fairness when a clean competitor can sustain the bottleneck, while
substantially improving standalone throughput on lossy paths. Convergence
between NewCC flows remains the principal limitation.
Move the accelerated-increase state and machinery out of CUBIC's private
state so it can be used by both modern CUBIC and Cuback. Keep qoRTT,
the current target CWND, and path-change observations in a shared accel
object, including the snapshot used to undo a recovery.

CUBIC continues to choose the greater of its ordinary trajectory and the
accelerated CWND. Cuback expresses the same choice through its ACK clock:
for each ACK interval, use the smaller of Cuback's ordinary bytes-per-MTU
interval and the accelerated interval. This avoids evaluating Cuback's
cubic trajectory on every ACK. Recalibration uses the policy's own K,
but otherwise shares the path observation logic.

Add grouped CUBIC and Cuback tests for accelerated increase, its guards,
undo, and recalibration.

Standalone tail-drop throughput
-------------------------------

Each value is median goodput as a percentage of available bandwidth over
seven 100-second runs, measuring the latter 50 seconds. Per-packet random
loss was selected so that a full pipe has a 5% or 10% aggregate probability
of at least one random loss. CUBIC is included to check that the refactor
preserves the preceding implementation.

| Profile          | CUBIC stock/RLT 5% | CUBIC stock/RLT 10% | Cuback stock/RLT 5% | Cuback stock/RLT 10% |
|------------------|-------------------:|--------------------:|--------------------:|---------------------:|
| DSL              |      91.40 / 97.72 |       74.41 / 96.80 |       91.13 / 97.93 |        77.84 / 97.57 |
| Home WiFi        |      48.02 / 96.67 |       37.51 / 94.86 |       54.15 / 97.17 |        34.01 / 95.52 |
| Public           |      98.03 / 98.03 |       96.14 / 97.84 |       98.03 / 98.02 |        93.32 / 97.86 |
| Corporate WiFi   |      48.68 / 97.71 |       33.38 / 97.67 |       49.04 / 97.69 |        35.45 / 97.66 |
| LTE              |      90.12 / 97.26 |       59.19 / 96.35 |       84.66 / 97.71 |        57.57 / 97.08 |
| 5G               |      63.92 / 97.11 |       44.53 / 96.10 |       64.70 / 97.52 |        46.09 / 96.67 |
| LEO              |      81.51 / 97.30 |       58.74 / 96.36 |       77.34 / 97.82 |        56.24 / 97.19 |
| GEO              |      98.02 / 97.82 |       83.85 / 97.47 |       96.72 / 97.83 |        75.03 / 97.69 |
| DoCoMo@Office    |      86.72 / 97.76 |       68.46 / 97.40 |       90.00 / 97.79 |        72.85 / 97.72 |
| au@Office        |      87.96 / 97.70 |       51.37 / 97.44 |       88.53 / 97.69 |        70.76 / 97.69 |
| WiFi@Office      |      73.16 / 97.72 |       51.93 / 97.71 |       72.94 / 97.72 |        53.01 / 97.71 |
| DoCoMo@mall      |      98.03 / 98.03 |       88.54 / 97.71 |       98.03 / 98.03 |        93.58 / 97.98 |
| congested        |      97.93 / 97.99 |       97.87 / 97.81 |       97.93 / 97.93 |        97.87 / 97.87 |
| bdp20            |      97.66 / 97.70 |       97.24 / 96.64 |       97.46 / 97.64 |        95.63 / 96.28 |
| bdp40            |      97.73 / 97.50 |       94.33 / 96.76 |       97.55 / 97.76 |        94.33 / 96.98 |
| queue 10 ms      |      73.06 / 73.36 |       57.43 / 54.81 |       71.54 / 73.18 |        55.48 / 55.27 |
| queue 5 ms       |      67.24 / 65.11 |       49.82 / 51.47 |       66.26 / 67.64 |        48.71 / 48.50 |
| queue 2.5 ms     |      65.01 / 64.61 |       47.39 / 47.11 |       64.53 / 63.96 |        47.84 / 48.45 |

CUBIC reproduces the prior result within the variance expected from random
loss placement. Cuback obtains the same design win: RLT sustains about
95.5--98% on every deep, high-rate profile at both loss settings, whereas
stock Cuback can fall to 34--54%. Shallow queues remain neutral because the
RTT gate generally prevents acceleration.

Cuback competition
------------------

These are seven 160-second runs per ordering, measuring the latter 80
seconds. The first two columns use zero random loss on both flows. The final
two give RLT the 5%-per-full-pipe loss rate while stock remains lossless.
Each value is RLT's median percentage of total throughput. S->R means RLT
was created second; R->S means it was created first.

| Profile          | Clean S->R | Clean R->S | Lossy S->R | Lossy R->S |
|------------------|-----------:|-----------:|-----------:|-----------:|
| DSL              |      51.88 |      51.00 |      34.02 |      36.11 |
| Home WiFi        |      51.54 |      50.82 |      31.71 |      29.52 |
| Public           |      49.99 |      50.01 |      28.39 |      34.09 |
| Corporate WiFi   |      52.29 |      51.13 |      18.58 |      16.07 |
| LTE              |      51.10 |      49.45 |      26.34 |      27.64 |
| 5G               |      47.87 |      50.18 |      21.21 |      19.83 |
| LEO              |      50.82 |      46.03 |      24.95 |      25.75 |
| GEO              |      49.89 |      50.16 |      37.38 |      36.38 |
| DoCoMo@Office    |      50.04 |      50.18 |      21.33 |      21.40 |
| au@Office        |      52.17 |      50.15 |      15.83 |      17.17 |
| WiFi@Office      |      52.75 |      47.87 |      21.75 |      20.66 |
| DoCoMo@mall      |      49.66 |      50.19 |      26.23 |      33.42 |
| congested        |      49.94 |      50.64 |      46.58 |      45.38 |
| bdp20            |      49.95 |      49.57 |      49.05 |      48.48 |
| bdp40            |      50.54 |      49.82 |      46.74 |      46.05 |
| queue 10 ms      |      50.54 |      62.77 |      39.36 |      55.00 |
| queue 5 ms       |      49.90 |      50.02 |      40.50 |      39.62 |
| queue 2.5 ms     |      49.36 |      49.76 |      41.85 |      41.42 |

On the deep profiles, clean Cuback+RLT remains neutral against stock and a
lossy RLT flow remains less aggressive than a lossless stock flow. Combined
utilization remains about 98%, apart from the already-underutilized shallow
queues.

The queue-10ms result is a real ACK-clock/order limitation. A focused
21-run clean test produced:

| Controller | Stock/stock second | RLT second | RLT first |
|------------|-------------------:|-----------:|----------:|
| CUBIC      |              49.92 |      50.80 |     53.04 |
| Cuback     |              49.60 |      49.47 |     64.50 |

Cuback therefore has no meaningful standalone degradation at this boundary,
but its RLT flow can retain a substantial first-flow advantage. This is
primarily specific to expressing acceleration through the ACK clock; it is
not hidden by combining the two orderings.

Cuback self-competition at the 5% setting
------------------------------------------

Two Cuback+RLT flows used the same loss probability for five independent
320-second runs. Shares cover the final 40-second window.

| Profile          | Flow 2 median | Flow 2 range | Combined util. |
|------------------|--------------:|-------------:|---------------:|
| DSL              |         56.49 |  44.95-59.41 |          98.02 |
| Home WiFi        |         53.89 |  48.86-59.37 |          97.67 |
| Corporate WiFi   |         50.81 |  44.56-53.38 |          97.72 |
| LTE              |         56.40 |  45.96-67.55 |          98.03 |
| 5G               |         54.67 |  36.18-56.98 |          97.72 |
| LEO              |         45.40 |  39.30-63.19 |          98.03 |
| GEO              |         60.69 |  43.35-71.35 |          97.98 |
| DoCoMo@Office    |         58.35 |  39.96-67.68 |          97.73 |
| au@Office        |         40.28 |  13.59-69.42 |          97.73 |
| WiFi@Office      |         46.68 |  43.06-50.44 |          97.72 |
| DoCoMo@mall      |         54.38 |  34.48-63.31 |          98.03 |
| queue 10 ms      |         39.01 |  30.96-50.79 |          97.43 |

As with CUBIC, aggregate utilization stays high but the prototype does not
consistently converge against itself. Cuback additionally exposes the
queue-10ms order sensitivity described above.
Store the first accelerated-increase target separately from its upper cap.
After a loss, target_cwnd is the reduced CWND divided by the ordinary loss
beta. Accelerated increase halves the remaining distance to that target per
RTT, then continues at the 2.5% minimum rate until target_cwnd / beta.

Previously target_cwnd held the upper cap and was also used to calculate the
increase rate. After a CA reduction to beta * CWNDpre, that produced roughly
52% growth per RTT at beta=0.7. The corrected calculation initially grows by
roughly 21%, placing CWND halfway between beta * CWNDpre and CWNDpre.

The 2.5%-per-RTT minimum is intended to limit the queue built while delayed
RTT feedback closes the acceleration gate. Allowing for roughly two flights
of growth, the intended overshoot is no more than 5% above minRTT: on a
100ms path that is 5ms, matching CoDel's default target.

Use the ordinary loss beta when setting the target after both slow start and
CA. This retains the existing slow-start cap without requiring another state
field. CUBIC and Cuback share the corrected rate calculation; CUBIC derives
the cap when selecting the accelerated CWND, while Cuback stops shortening
its ACK interval at the same derived cap.

Add tests for half-distance recovery, minimum-rate growth above the target,
the derived cap, and Cuback's interval selection. build/default/test.t passes
all 31 top-level groups.

Standalone tail-drop throughput
-------------------------------

Each value is median goodput as a percentage of available bandwidth over
seven 100-second runs, measuring the latter 50 seconds. Per-packet loss gives
a full pipe a 5% or 10% aggregate probability of at least one random loss.
Each cell is stock / old RLT / corrected RLT; old RLT is the cap-as-target
implementation.

| Profile        | CUBIC 5% S/O/N | CUBIC 10% S/O/N | Cuback 5% S/O/N | Cuback 10% S/O/N |
|----------------|----------------:|-----------------:|-----------------:|------------------:|
| DSL            | 91.91/97.72/97.29 | 73.44/96.80/94.19 | 93.57/97.93/97.69 | 73.44/97.57/96.81 |
| Home WiFi      | 52.59/96.67/93.38 | 35.51/94.86/87.15 | 53.79/97.17/96.01 | 33.58/95.52/91.68 |
| Public         | 98.03/98.03/98.03 | 96.19/97.84/96.84 | 98.03/98.02/98.03 | 95.29/97.86/97.91 |
| Corporate WiFi | 48.92/97.71/97.08 | 35.40/97.67/96.13 | 49.98/97.69/97.35 | 34.52/97.66/96.60 |
| LTE            | 79.07/97.26/95.93 | 56.01/96.35/90.69 | 89.58/97.71/97.11 | 65.26/97.08/95.37 |
| 5G             | 58.07/97.11/95.76 | 39.11/96.10/91.48 | 60.70/97.52/96.70 | 42.17/96.67/95.03 |
| LEO            | 77.63/97.30/96.10 | 58.80/96.36/93.50 | 75.10/97.82/97.22 | 58.81/97.19/95.67 |
| GEO            | 97.93/97.82/97.83 | 81.33/97.47/95.00 | 98.01/97.83/98.02 | 93.72/97.69/93.06 |
| DoCoMo@Office  | 94.87/97.76/97.65 | 70.51/97.40/96.87 | 89.23/97.79/97.78 | 72.17/97.72/97.52 |
| au@Office      | 80.34/97.70/97.59 | 60.29/97.44/97.27 | 82.82/97.69/97.64 | 49.91/97.69/97.46 |
| WiFi@Office    | 70.59/97.72/97.69 | 52.55/97.71/97.54 | 71.82/97.72/97.71 | 51.89/97.71/97.64 |
| DoCoMo@mall    | 98.03/98.03/98.03 | 91.95/97.71/97.63 | 98.03/98.03/98.03 | 87.63/97.98/97.94 |
| congested      | 97.93/97.99/97.91 | 97.83/97.81/97.87 | 97.93/97.93/97.89 | 97.87/97.87/97.87 |
| bdp20          | 97.64/97.70/97.32 | 96.76/96.64/96.20 | 97.28/97.64/97.30 | 95.44/96.28/96.26 |
| bdp40          | 97.94/97.50/97.55 | 96.31/96.76/95.27 | 97.87/97.76/97.75 | 94.37/96.98/96.61 |
| queue 10 ms    | 73.28/73.36/72.86 | 55.18/54.81/54.91 | 75.31/73.18/75.39 | 53.33/55.27/55.25 |
| queue 5 ms     | 69.02/65.11/68.41 | 51.39/51.47/49.34 | 67.50/67.64/67.80 | 48.05/48.50/54.53 |
| queue 2.5 ms   | 67.56/64.61/65.43 | 49.42/47.11/49.02 | 64.28/63.96/66.01 | 48.20/48.45/49.54 |

The correction removes measurable aggressiveness but retains the primary
tail-drop benefit. At 5% loss, corrected RLT generally sustains about
93--98% on deep profiles. At 10%, CUBIC declines to 87--94% on Home WiFi,
LTE, 5G, and LEO; Cuback retains 92--96% there. Both remain substantially
above stock. Shallow queues remain neutral.

Clean tail-drop competition
---------------------------

These are seven 160-second runs per ordering, measuring the latter 80
seconds. Both flows have zero random loss. Stock/stock reports the second
flow's median share; the other columns report RLT's median share.

| Profile        | Stock/stock second | Stock -> RLT | RLT -> stock |
|----------------|-------------------:|------------:|------------:|
| DSL            |              48.23 |       54.51 |       51.16 |
| Home WiFi      |              50.92 |       47.94 |       50.25 |
| Public         |              50.29 |       49.22 |       49.57 |
| Corporate WiFi |              54.91 |       46.93 |       44.83 |
| LTE            |              49.36 |       50.14 |       52.08 |
| 5G             |              50.86 |       50.88 |       51.35 |
| LEO            |              48.70 |       48.67 |       49.53 |
| GEO            |              50.01 |       49.99 |       50.02 |
| DoCoMo@Office  |              49.98 |       49.15 |       49.87 |
| au@Office      |              51.48 |       51.55 |       50.23 |
| WiFi@Office    |              50.89 |       54.47 |       50.80 |
| DoCoMo@mall    |              49.72 |       49.66 |       50.29 |
| congested      |              49.47 |       51.43 |       52.26 |
| bdp20          |              50.42 |       49.52 |       50.48 |
| bdp40          |              50.81 |       47.83 |       51.04 |
| queue 10 ms    |              50.75 |       50.55 |       50.57 |
| queue 5 ms     |              49.11 |       50.98 |       51.99 |
| queue 2.5 ms   |              50.19 |       48.68 |       49.76 |

Mean RLT share across both orders ranges from 46.72% to 52.02%; the clean
path prerequisite remains satisfied.

RLT against RLT at the 5% setting
----------------------------------

Two RLT flows use the same per-packet loss probability for five independent
320-second runs. Shares cover the final 40-second window. Combined
utilization is the median for that window; final deviation is the mean
absolute distance from a 50% share.

| Profile        | Flow 2 median | Flow 2 range | Combined util. | Final deviation |
|----------------|--------------:|-------------:|---------------:|----------------:|
| DSL            |         49.03 |  43.86-56.38 |          98.02 |            3.41 |
| Home WiFi      |         50.52 |  49.10-52.36 |          97.42 |            1.15 |
| Public         |         48.18 |  31.93-62.64 |          98.03 |            8.20 |
| Corporate WiFi |         50.82 |  47.30-55.07 |          97.68 |            2.35 |
| LTE            |         43.30 |  38.15-58.97 |          98.03 |            7.88 |
| 5G             |         51.30 |  27.93-59.42 |          97.69 |            9.65 |
| LEO            |         50.70 |  47.82-55.64 |          98.03 |            2.55 |
| GEO            |         53.63 |  34.65-62.12 |          98.01 |            9.79 |
| DoCoMo@Office  |         40.03 |  35.41-63.01 |          97.73 |           12.39 |
| au@Office      |         54.71 |  37.55-56.45 |          97.73 |            6.29 |
| WiFi@Office    |         49.30 |  48.67-52.07 |          97.72 |            1.27 |
| DoCoMo@mall    |         49.15 |  42.79-58.62 |          98.03 |            5.60 |
| congested      |         47.46 |  40.61-50.42 |          97.89 |            3.67 |
| bdp20          |         48.76 |  47.78-50.24 |          97.61 |            1.40 |
| bdp40          |         50.97 |  47.80-54.51 |          97.91 |            2.69 |
| queue 10 ms    |         45.87 |  44.92-56.09 |          96.84 |            4.67 |
| queue 5 ms     |         49.00 |  41.93-49.70 |          89.86 |            2.21 |
| queue 2.5 ms   |         48.73 |  45.28-53.05 |          86.48 |            2.31 |

Aggregate utilization remains high except on the already-underutilized
shallow queues. The wide run-to-run ranges on Public, LTE, 5G, GEO, and
DoCoMo@Office show that this correction does not solve self-convergence.

Non-lossy stock against 5%-loss RLT
-----------------------------------

Each value is RLT's median share of total throughput over seven 160-second
runs. RLT remains below the clean stock flow in both orders on every profile.

| Profile        | Stock -> RLT | RLT -> stock |
|----------------|------------:|------------:|
| DSL            |       31.99 |       37.39 |
| Home WiFi      |       29.23 |       29.64 |
| Public         |       34.30 |       30.09 |
| Corporate WiFi |       18.13 |       19.15 |
| LTE            |       28.50 |       28.73 |
| 5G             |       18.14 |       21.51 |
| LEO            |       26.29 |       24.66 |
| GEO            |       42.31 |       37.94 |
| DoCoMo@Office  |       23.20 |       23.57 |
| au@Office      |       24.14 |       22.08 |
| WiFi@Office    |       20.91 |       21.32 |
| DoCoMo@mall    |       30.46 |       34.67 |
| congested      |       46.08 |       45.34 |
| bdp20          |       48.92 |       48.64 |
| bdp40          |       46.24 |       48.01 |
| queue 10 ms    |       39.36 |       40.19 |
| queue 5 ms     |       39.71 |       41.60 |
| queue 2.5 ms   |       40.40 |       41.42 |

Cuback competition
------------------

These are seven 160-second runs per ordering. The first two columns use zero
random loss on both flows. The final two give RLT the 5%-per-full-pipe loss
rate while stock remains lossless. Each value is RLT's median share.

| Profile        | Clean S->R | Clean R->S | Lossy S->R | Lossy R->S |
|----------------|-----------:|-----------:|-----------:|-----------:|
| DSL            |      49.80 |      50.61 |      33.99 |      34.82 |
| Home WiFi      |      51.90 |      49.95 |      29.73 |      29.28 |
| Public         |      49.97 |      50.05 |      32.21 |      33.16 |
| Corporate WiFi |      46.17 |      44.73 |      18.11 |      17.71 |
| LTE            |      48.94 |      48.98 |      29.92 |      31.25 |
| 5G             |      49.76 |      48.16 |      19.47 |      21.56 |
| LEO            |      50.86 |      48.28 |      25.10 |      28.55 |
| GEO            |      49.94 |      50.00 |      42.72 |      39.32 |
| DoCoMo@Office  |      49.96 |      47.68 |      22.35 |      23.56 |
| au@Office      |      52.18 |      50.18 |      19.39 |      15.65 |
| WiFi@Office    |      52.42 |      46.03 |      21.27 |      20.57 |
| DoCoMo@mall    |      49.89 |      50.19 |      30.88 |      25.53 |
| congested      |      49.95 |      49.76 |      46.58 |      42.08 |
| bdp20          |      49.47 |      49.80 |      48.35 |      49.47 |
| bdp40          |      49.13 |      50.17 |      45.42 |      46.49 |
| queue 10 ms    |      49.69 |      55.84 |      40.40 |      50.19 |
| queue 5 ms     |      49.82 |      49.65 |      39.85 |      40.30 |
| queue 2.5 ms   |      49.21 |      49.24 |      42.78 |      41.07 |

On deep profiles, clean Cuback+RLT remains neutral and lossy RLT remains
less aggressive than lossless stock. Queue 10ms retains an order effect.

Focused queue-10ms order distribution
--------------------------------------

Twenty-one runs per ordering confirm that the Cuback result is not hidden by
combining orders. RLT second and RLT first name the flow's creation order.

| Controller | Stock/stock second | RLT second | RLT first | RLT P10-P90 |
|------------|-------------------:|-----------:|----------:|------------:|
| CUBIC      |              49.50 |      50.40 |     51.48 | 46.61-52.98 |
| Cuback     |              49.61 |      50.23 |     57.12 | 48.03-59.14 |

Cuback therefore has a substantial first-flow advantage at this boundary,
specific to expressing acceleration through its ACK clock.

Cuback RLT against RLT at the 5% setting
----------------------------------------

Two Cuback+RLT flows use the same loss probability for five independent
320-second runs. Shares cover the final 40-second window.

| Profile        | Flow 2 median | Flow 2 range | Combined util. | Final deviation |
|----------------|--------------:|-------------:|---------------:|----------------:|
| DSL            |         51.43 |  39.17-55.71 |          98.02 |            4.03 |
| Home WiFi      |         54.57 |  47.54-55.60 |          97.64 |            3.82 |
| Public         |         42.46 |  39.42-50.28 |          98.02 |            5.41 |
| Corporate WiFi |         49.20 |  46.82-52.95 |          97.72 |            1.90 |
| LTE            |         52.67 |  45.13-60.52 |          98.03 |            5.98 |
| 5G             |         51.72 |  40.43-68.79 |          97.72 |            8.24 |
| LEO            |         53.38 |  48.86-63.65 |          98.03 |            5.25 |
| GEO            |         44.45 |  34.53-74.79 |          97.99 |           14.72 |
| DoCoMo@Office  |         46.24 |  32.04-67.44 |          97.73 |           13.60 |
| au@Office      |         56.67 |  32.17-64.92 |          97.73 |           11.60 |
| WiFi@Office    |         51.07 |  48.76-51.64 |          97.72 |            1.13 |
| DoCoMo@mall    |         46.78 |  41.60-69.94 |          98.03 |            7.50 |
| congested      |         55.37 |  37.69-59.10 |          98.36 |            8.43 |
| bdp20          |         48.15 |  46.03-50.54 |          97.73 |            2.19 |
| bdp40          |         48.77 |  45.52-54.58 |          97.89 |            2.86 |
| queue 10 ms    |         40.95 |  38.44-46.80 |          97.16 |            8.63 |
| queue 5 ms     |         50.87 |  47.25-55.11 |          89.88 |            2.19 |
| queue 2.5 ms   |         47.89 |  47.12-50.72 |          85.67 |            1.70 |

Aggregate utilization remains high except on already-underutilized shallow
queues, but Cuback RLT does not consistently converge against itself.

CoDel observations
------------------

The complete non-GEO CoDel matrices were also repeated. Clean competition
remains neutral: mean RLT shares range from 48.21% to 50.73%, and a 5%-loss
RLT flow remains below clean stock in both orders on every profile.

Standalone effectiveness is mixed. At 5% loss, corrected RLT reaches 96.38%
on DSL, 92.89% on Home WiFi, 97.06% on Corporate WiFi, and 97.68% on
WiFi@Office, but only 76.22% on LTE, 56.00% on 5G, and 69.60% on LEO. The
old formula reached 80.19%, 70.73%, and 74.00% on those three paths. At 10%,
corrected RLT reaches 58.45%, 40.39%, and 60.02%, respectively. The approach
therefore remains substantially more effective with tail drop than with AQM.

Stock CoDel with its 5ms target and 100ms interval was measured separately
on GEO and is not treated as a counterexample: clean stock alone reaches only
47.84% of the link. Corrected RLT reaches 46.64% at 5% loss and 43.61% at
10%; two-flow combined utilization ranges from roughly 53% to 66%.

At 5% loss, two RLT flows retain high combined utilization on meaningful
tail-drop and CoDel profiles, but final shares remain broad on several
mobile and high-BDP paths. This correction does not solve self-convergence.
Record the minimum RTT observed during each congestion-avoidance period. When
accelerating after a subsequent loss, permit RTT up to the greater of minRTT
plus 2ms and the midpoint between minRTT and the preceding CA period's
minimum RTT.

The intent is to support real paths whose idle RTT has persistent jitter,
particularly mobile networks. A fixed minRTT+2ms gate can disable acceleration
even when the connection is not building a queue. The previous CA period is a
local reference for the currently reachable RTT floor; admitting only half of
its excess over the connection-wide minimum remains conservative.

The simulator profiles have stable propagation delay. They therefore test that
the adaptive gate does not regress stable paths; they do not demonstrate the
intended mobile-jitter benefit. That benefit needs production evaluation.

Share the two RTT-floor fields between CUBIC and Cuback, roll the current
period's observation on each new loss episode, and test both policies at the
adaptive boundary. build/default/test.t passes all 31 top-level groups.

Method
------

The per-packet random-loss probability is chosen so that a full pipe has a 5%
or 10% chance of at least one random loss per RTT. Standalone tests are seven
100-second runs measuring the latter 50 seconds. Competition tests are seven
160-second runs per flow order measuring the latter 80 seconds. Self-
competition uses five 320-second runs and reports the final 40-second window.
All values below are percentages. S->R means stock is created first and RLT
second; R->S is the reverse. The unchanged tail-drop stock standalone values
are the baseline from the preceding full evaluation; all adaptive-RLT and
competition values were measured after this change.

1. Tail-drop standalone goodput
--------------------------------

Each cell is stock/RLT median goodput as a percentage of available bandwidth.

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---:|---:|---:|---:|
| DSL | 91.91/97.24 | 73.44/94.75 | 93.57/97.84 | 73.44/96.69 |
| Home WiFi | 52.59/93.61 | 35.51/87.65 | 53.79/96.07 | 33.58/91.04 |
| Public | 98.03/98.03 | 96.19/97.36 | 98.03/98.03 | 95.29/97.63 |
| Corporate WiFi | 48.92/97.10 | 35.40/96.18 | 49.98/97.38 | 34.52/96.51 |
| LTE | 79.07/95.90 | 56.01/90.27 | 89.58/97.34 | 65.26/94.88 |
| 5G | 58.07/95.49 | 39.11/92.35 | 60.70/97.22 | 42.17/94.65 |
| LEO | 77.63/95.33 | 58.80/92.12 | 75.10/97.39 | 58.81/95.52 |
| GEO | 97.93/98.01 | 81.33/97.02 | 98.01/96.97 | 93.72/94.37 |
| DoCoMo@Office | 94.87/97.70 | 70.51/97.08 | 89.23/97.78 | 72.17/97.42 |
| au@Office | 80.34/97.49 | 60.29/97.21 | 82.82/97.64 | 49.91/97.45 |
| WiFi@Office | 70.59/97.70 | 52.55/97.55 | 71.82/97.70 | 51.89/97.63 |
| DoCoMo@mall | 98.03/98.03 | 91.95/97.50 | 98.03/98.04 | 87.63/97.74 |
| congested | 97.93/97.95 | 97.83/97.87 | 97.93/97.93 | 97.87/97.71 |
| bdp20 | 97.64/97.58 | 96.76/96.56 | 97.28/97.46 | 95.44/96.24 |
| bdp40 | 97.94/97.87 | 96.31/95.36 | 97.87/97.95 | 94.37/96.91 |
| queue 10ms | 73.28/69.93 | 55.18/53.22 | 75.31/74.89 | 53.33/54.26 |
| queue 5ms | 69.02/67.82 | 51.39/51.07 | 67.50/68.94 | 48.05/50.95 |
| queue 2.5ms | 67.56/62.87 | 49.42/50.26 | 64.28/61.40 | 48.20/49.58 |

2. Clean tail-drop competition
--------------------------------

S/S is the stock/stock second flow's median share. The other columns are
RLT's median share in each order.

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 49.67 | 49.10 | 51.34 | 49.56 | 48.49 | 49.85 |
| Home WiFi | 47.05 | 47.70 | 52.68 | 51.70 | 54.19 | 53.05 |
| Public | 49.48 | 49.86 | 50.29 | 49.79 | 49.91 | 50.46 |
| Corporate WiFi | 55.75 | 54.33 | 46.61 | 50.03 | 53.50 | 45.07 |
| LTE | 50.24 | 49.55 | 50.02 | 48.60 | 50.42 | 49.07 |
| 5G | 49.79 | 49.34 | 51.19 | 49.00 | 52.70 | 49.87 |
| LEO | 51.24 | 46.36 | 48.93 | 50.39 | 50.51 | 52.60 |
| GEO | 50.01 | 49.96 | 50.01 | 49.87 | 50.02 | 49.99 |
| DoCoMo@Office | 49.98 | 50.04 | 50.95 | 49.93 | 49.99 | 50.01 |
| au@Office | 49.90 | 51.45 | 48.51 | 52.17 | 52.18 | 47.87 |
| WiFi@Office | 54.19 | 50.50 | 45.81 | 54.94 | 52.17 | 44.35 |
| DoCoMo@mall | 49.79 | 49.74 | 50.26 | 49.74 | 49.71 | 50.14 |
| congested | 49.24 | 49.19 | 51.52 | 51.18 | 50.28 | 51.70 |
| bdp20 | 49.74 | 49.21 | 49.65 | 50.62 | 48.41 | 50.22 |
| bdp40 | 49.98 | 49.53 | 48.33 | 48.96 | 50.11 | 51.38 |
| queue 10ms | 49.06 | 50.67 | 50.52 | 50.47 | 51.54 | 56.68 |
| queue 5ms | 49.08 | 49.02 | 49.94 | 51.32 | 50.27 | 50.79 |
| queue 2.5ms | 49.89 | 49.87 | 50.46 | 49.19 | 52.31 | 48.84 |

Twenty-one focused queue-10ms runs give CUBIC RLT shares of 50.46% when
second and 50.98% when first (P10-P90 48.15-53.63). Cuback gives 50.41%
when second and 57.96% when first (P10-P90 48.55-59.33); the adaptive gate
does not remove Cuback's existing creation-order effect at this boundary.

3. Clean stock against 5%-loss RLT, tail drop
------------------------------------------------

Each value is the lossy RLT flow's median share.

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| DSL | 34.07 | 35.61 | 34.47 | 32.59 |
| Home WiFi | 30.63 | 31.06 | 30.41 | 32.85 |
| Public | 32.35 | 31.59 | 32.22 | 30.99 |
| Corporate WiFi | 16.05 | 17.20 | 17.68 | 17.23 |
| LTE | 29.43 | 30.00 | 22.69 | 27.88 |
| 5G | 23.10 | 19.28 | 21.48 | 22.19 |
| LEO | 23.44 | 22.85 | 25.28 | 23.86 |
| GEO | 41.71 | 38.66 | 34.78 | 37.40 |
| DoCoMo@Office | 24.05 | 23.86 | 18.82 | 26.17 |
| au@Office | 19.48 | 17.22 | 15.59 | 17.54 |
| WiFi@Office | 20.66 | 20.76 | 20.56 | 19.66 |
| DoCoMo@mall | 32.79 | 32.78 | 24.59 | 29.82 |
| congested | 43.64 | 46.01 | 44.96 | 44.04 |
| bdp20 | 49.69 | 48.31 | 49.10 | 49.05 |
| bdp40 | 44.69 | 46.99 | 46.42 | 47.19 |
| queue 10ms | 40.02 | 40.88 | 39.48 | 48.27 |
| queue 5ms | 39.56 | 40.24 | 40.22 | 39.66 |
| queue 2.5ms | 40.99 | 41.51 | 41.61 | 41.08 |

The lossy RLT flow remains below the clean stock flow in every profile and
both orders.

4. Tail-drop RLT self-competition at 5% loss
------------------------------------------------

Each entry gives the second flow's median share, the complete five-run range,
and median combined utilization.

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 47.98 | 44.33-49.52 | 98.02 | 52.01 | 44.74-55.04 | 98.02 |
| Home WiFi | 50.19 | 46.72-55.17 | 97.32 | 53.71 | 51.78-59.40 | 97.59 |
| Public | 45.71 | 40.90-61.50 | 98.02 | 46.23 | 39.24-49.04 | 98.03 |
| Corporate WiFi | 50.91 | 46.47-51.21 | 97.69 | 50.24 | 45.92-52.40 | 97.71 |
| LTE | 55.47 | 39.77-61.09 | 98.03 | 52.79 | 44.87-54.59 | 98.03 |
| 5G | 50.46 | 34.43-69.29 | 97.70 | 45.83 | 34.00-55.56 | 97.71 |
| LEO | 54.70 | 38.93-58.84 | 98.03 | 50.21 | 35.13-60.20 | 98.03 |
| GEO | 53.14 | 32.72-63.21 | 98.00 | 46.17 | 35.04-61.93 | 97.88 |
| DoCoMo@Office | 44.71 | 30.52-57.73 | 97.73 | 39.74 | 39.49-49.42 | 97.72 |
| au@Office | 58.03 | 25.68-67.29 | 97.73 | 51.05 | 26.91-66.94 | 97.73 |
| WiFi@Office | 51.21 | 49.52-52.42 | 97.72 | 46.59 | 44.16-50.86 | 97.72 |
| DoCoMo@mall | 45.23 | 35.61-49.68 | 98.03 | 47.47 | 41.28-61.96 | 98.03 |
| congested | 52.90 | 46.68-59.27 | 97.86 | 50.71 | 42.46-64.52 | 97.76 |
| bdp20 | 48.31 | 44.21-51.75 | 97.78 | 49.34 | 47.07-54.91 | 97.68 |
| bdp40 | 48.91 | 46.63-52.53 | 97.67 | 48.53 | 42.46-52.56 | 97.88 |
| queue 10ms | 50.64 | 46.37-54.45 | 96.99 | 42.34 | 39.79-52.76 | 97.30 |
| queue 5ms | 51.94 | 46.43-52.20 | 90.41 | 51.29 | 50.09-52.26 | 90.08 |
| queue 2.5ms | 50.95 | 48.20-51.82 | 86.90 | 49.26 | 46.90-56.32 | 86.01 |

The adaptive gate does not solve the existing self-convergence limitation.

5. CoDel standalone goodput
-----------------------------

GEO is excluded here and evaluated separately with an RTT-appropriate CoDel
interval. Each cell is stock/RLT median goodput.

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---:|---:|---:|---:|
| DSL | 85.40/96.64 | 73.84/94.97 | 85.54/96.87 | 73.58/95.10 |
| Home WiFi | 50.85/93.52 | 34.21/88.17 | 54.55/95.39 | 34.99/91.18 |
| Public | 93.44/95.04 | 88.41/89.51 | 92.70/93.76 | 86.58/89.28 |
| Corporate WiFi | 54.12/97.09 | 34.75/96.04 | 50.70/97.32 | 34.65/96.72 |
| LTE | 80.10/77.25 | 54.85/60.70 | 76.65/81.21 | 54.56/63.72 |
| 5G | 59.62/61.38 | 40.60/43.50 | 60.67/69.32 | 39.12/38.41 |
| LEO | 71.97/77.47 | 57.11/56.99 | 73.56/72.88 | 54.56/56.63 |
| DoCoMo@Office | 83.72/85.61 | 68.48/68.03 | 84.18/82.57 | 67.65/68.05 |
| au@Office | 71.27/79.08 | 57.42/56.31 | 67.10/77.75 | 57.10/54.60 |
| WiFi@Office | 72.26/97.69 | 53.50/97.60 | 71.33/97.71 | 52.24/97.60 |
| DoCoMo@mall | 92.26/92.86 | 83.22/83.84 | 93.47/92.66 | 84.39/85.51 |
| congested | 95.38/95.62 | 92.43/94.62 | 95.74/94.40 | 92.65/91.52 |
| bdp20 | 96.14/96.18 | 94.47/93.55 | 97.03/96.66 | 93.47/93.75 |
| bdp40 | 94.65/94.88 | 89.46/90.80 | 94.59/93.81 | 88.15/88.38 |
| queue 10ms | 70.49/72.70 | 52.86/55.49 | 73.79/72.89 | 51.62/53.43 |
| queue 5ms | 70.71/67.53 | 50.70/50.00 | 68.96/69.58 | 51.06/49.70 |
| queue 2.5ms | 62.42/66.07 | 48.32/47.58 | 65.14/65.54 | 49.97/46.94 |

6. CoDel competition
----------------------

GEO is excluded from these tables. The clean table has the same meaning as
experiment 2.

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 52.86 | 48.95 | 51.15 | 49.91 | 49.15 | 48.52 |
| Home WiFi | 50.60 | 50.30 | 50.87 | 50.17 | 49.07 | 49.60 |
| Public | 50.00 | 50.51 | 49.32 | 49.44 | 49.86 | 49.93 |
| Corporate WiFi | 48.02 | 48.99 | 50.50 | 49.47 | 49.69 | 50.62 |
| LTE | 50.21 | 51.58 | 50.24 | 49.03 | 50.81 | 48.83 |
| 5G | 51.85 | 49.81 | 49.58 | 52.10 | 50.13 | 50.72 |
| LEO | 50.05 | 49.52 | 50.47 | 49.96 | 49.54 | 49.92 |
| DoCoMo@Office | 52.64 | 50.36 | 38.62 | 52.17 | 54.03 | 49.18 |
| au@Office | 48.48 | 43.45 | 43.86 | 43.69 | 43.44 | 41.13 |
| WiFi@Office | 49.07 | 49.93 | 50.46 | 49.97 | 48.66 | 51.91 |
| DoCoMo@mall | 50.62 | 49.33 | 49.06 | 50.29 | 50.55 | 49.87 |
| congested | 50.20 | 49.82 | 49.94 | 48.70 | 49.36 | 50.91 |
| bdp20 | 49.94 | 50.10 | 50.18 | 50.05 | 50.07 | 49.65 |
| bdp40 | 50.15 | 49.30 | 50.23 | 49.50 | 49.80 | 49.85 |
| queue 10ms | 50.16 | 50.30 | 49.48 | 51.51 | 49.72 | 50.75 |
| queue 5ms | 50.93 | 49.63 | 49.30 | 50.75 | 50.50 | 50.56 |
| queue 2.5ms | 50.69 | 50.09 | 49.46 | 52.02 | 50.03 | 49.82 |

With 5% loss on RLT and no random loss on stock, the following values are
the lossy RLT flow's median share.

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| DSL | 45.20 | 43.94 | 46.20 | 44.61 |
| Home WiFi | 38.51 | 37.71 | 43.89 | 40.66 |
| Public | 48.51 | 47.77 | 48.44 | 48.91 |
| Corporate WiFi | 30.38 | 33.82 | 32.79 | 35.02 |
| LTE | 45.36 | 46.00 | 46.28 | 46.17 |
| 5G | 41.70 | 41.98 | 46.73 | 39.01 |
| LEO | 42.13 | 44.59 | 44.42 | 45.25 |
| DoCoMo@Office | 43.05 | 38.04 | 39.44 | 38.36 |
| au@Office | 32.41 | 35.60 | 38.81 | 35.62 |
| WiFi@Office | 31.42 | 29.81 | 31.01 | 30.18 |
| DoCoMo@mall | 48.22 | 48.24 | 47.43 | 48.17 |
| congested | 49.74 | 48.21 | 49.62 | 48.10 |
| bdp20 | 49.35 | 48.83 | 48.94 | 48.01 |
| bdp40 | 48.50 | 48.96 | 48.78 | 49.29 |
| queue 10ms | 42.28 | 41.92 | 40.86 | 43.56 |
| queue 5ms | 40.08 | 40.75 | 40.20 | 40.44 |
| queue 2.5ms | 41.61 | 41.67 | 40.25 | 41.83 |

The lossy RLT flow remains below clean stock in every non-GEO profile and
both orders.

Two 5%-loss RLT flows give the following final-window results.

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 49.66 | 47.37-52.33 | 97.92 | 50.62 | 45.54-52.61 | 97.94 |
| Home WiFi | 49.86 | 46.25-59.68 | 97.18 | 50.39 | 50.30-60.51 | 97.49 |
| Public | 48.74 | 45.34-53.56 | 97.94 | 51.15 | 46.48-52.08 | 97.91 |
| Corporate WiFi | 52.24 | 48.81-53.70 | 97.69 | 49.22 | 43.90-51.29 | 97.72 |
| LTE | 52.64 | 50.89-54.69 | 96.57 | 49.87 | 45.35-52.61 | 97.09 |
| 5G | 54.21 | 47.56-59.54 | 96.65 | 56.10 | 46.12-61.42 | 97.27 |
| LEO | 50.94 | 42.95-54.48 | 97.69 | 47.68 | 42.21-58.70 | 97.28 |
| DoCoMo@Office | 47.72 | 42.95-62.09 | 97.47 | 45.48 | 39.74-56.34 | 97.16 |
| au@Office | 51.01 | 45.19-63.75 | 97.03 | 50.77 | 42.56-65.99 | 97.44 |
| WiFi@Office | 50.31 | 49.41-52.21 | 97.72 | 49.08 | 46.92-51.74 | 97.72 |
| DoCoMo@mall | 49.23 | 46.86-49.73 | 97.84 | 49.73 | 46.77-52.47 | 97.86 |
| congested | 49.27 | 47.40-53.06 | 96.68 | 49.54 | 44.92-52.24 | 96.18 |
| bdp20 | 50.84 | 47.94-52.40 | 97.29 | 50.48 | 47.78-53.16 | 97.16 |
| bdp40 | 50.87 | 49.36-53.56 | 97.04 | 49.80 | 48.80-50.91 | 96.46 |
| queue 10ms | 50.64 | 43.57-52.89 | 97.10 | 46.92 | 44.36-50.23 | 97.52 |
| queue 5ms | 49.88 | 48.34-54.86 | 90.33 | 53.53 | 47.05-56.18 | 89.70 |
| queue 2.5ms | 51.11 | 46.74-54.35 | 86.38 | 49.54 | 48.73-51.78 | 86.34 |

RTT-adjusted GEO CoDel
-----------------------

GEO uses a 600ms RTT, 600ms queue, and CoDel target=5ms, interval=600ms.
Standalone values are medians over seven 1000-second runs.

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---:|---:|---:|
| CUBIC | 85.84 | 79.17 | 87.13 |
| Cuback | 85.28 | 75.93 | 85.22 |

The complete competition results are:

| Controller | Case | Flow 1 median | Flow 2 median | Util median | Flow 2 share median | Share range |
|---|---|---:|---:|---:|---:|---:|
| CUBIC | stock/stock | 40.31 | 49.59 | 89.90 | 55.16 | 41.44-66.13 |
| CUBIC | stock/RLT | 38.41 | 52.91 | 91.14 | 57.94 | 53.09-69.66 |
| CUBIC | RLT/stock | 52.27 | 38.76 | 91.08 | 42.58 | 30.09-45.30 |
| CUBIC | clean/lossy-RLT | 42.63 | 48.13 | 90.78 | 53.03 | 41.36-57.77 |
| CUBIC | lossy-RLT/clean | 50.93 | 38.96 | 90.26 | 43.30 | 40.12-60.12 |
| CUBIC | lossy-RLT/lossy-RLT | 46.50 | 45.55 | 90.95 | 49.48 | 36.92-62.87 |
| Cuback | stock/stock | 43.39 | 46.91 | 89.94 | 52.04 | 38.49-55.76 |
| Cuback | stock/RLT | 23.69 | 66.27 | 89.99 | 73.67 | 69.25-74.99 |
| Cuback | RLT/stock | 65.36 | 24.46 | 90.09 | 27.23 | 22.80-35.54 |
| Cuback | clean/lossy-RLT | 27.84 | 61.40 | 89.24 | 68.80 | 65.13-71.44 |
| Cuback | lossy-RLT/clean | 61.43 | 28.44 | 89.87 | 31.65 | 30.11-36.33 |
| Cuback | lossy-RLT/lossy-RLT | 49.93 | 40.75 | 90.69 | 44.80 | 42.55-49.59 |

The RTT-adjusted interval repairs stock CoDel's control timing, but a 5ms
target is still effectively queue-less relative to a 600ms idle BDP. RLT is
over-aggressive in this deliberately stringent GEO configuration, especially
with Cuback. This expected boundary does not represent the stable-path safety
result for paths with enough queue for acceleration; it is outside that
queue-depth regime.
Replace the single latest-RTT sample formerly retained as qoRTT with full_rtt,
the smoothed RTT immediately before the ACK that exits calibration recovery.
This incorporates the recovery's RTT samples and avoids making the path model
depend on one potentially spiky sample adjacent to the congestion signal.

QUIC updates the RTT estimator before invoking congestion control. Recover the
preceding smoothed value from the 1/8 EWMA as (8 * smoothed - latest) / 7, and
protect that contract with a test that performs consecutive RTT updates. A new
loss beyond recovery_end can also close the preceding recovery without an
intervening ACK; in that case, retain the current smoothed RTT.

Calibration now treats packet loss and ECN identically: either signal clears
full_rtt, and recovery exit supplies the observation. This fixes the important
behavioral gap in which ECN-CE, represented by a zero-byte congestion report,
could not initialize the former qoRTT sample.

The full evaluation shows the intended split:

* Non-ECN tail-drop behavior is stable. Across the 72 standalone RLT medians
  shared with the preceding evaluation, the mean change is +0.11 percentage
  points, median absolute change is 0.17 points, and P90 absolute change is
  1.69 points. Individual randomized-loss runs remain noisy.
* CoDel paths now benefit from CE-based calibration. At 5% loss per RTT, CUBIC
  RLT rises from 77.25/61.38/77.47% to 94.88/95.70/95.50% on LTE/5G/LEO;
  Cuback rises from 81.21/69.32/72.88% to 94.80/95.97/96.25%.
* Clean competition remains centered near an equal share, and a 5%-loss RLT
  flow does not dominate a clean stock flow on any ordinary-profile median.
* The existing self-convergence limitation remains visible on some mobile and
  office profiles. RTT-adjusted GEO CoDel also remains order-sensitive,
  especially for Cuback; its 5ms target is effectively queue-less relative to
  the 600ms idle RTT and remains outside the queue-depth regime assumed by the
  acceleration.

build/default/test.t passes all 31 top-level groups.

Method
------

The per-packet random-loss probability is chosen so that a full pipe has a 5%
or 10% chance of at least one random loss per RTT. Standalone tests are seven
100-second runs measuring the latter 50 seconds. Competition tests are seven
160-second runs per flow order measuring the latter 80 seconds. Self-
competition uses five 320-second runs and reports the final 40-second window.
All values below are percentages. S->R means stock is created first and RLT
second; R->S is the reverse. Loss placement varies between repetitions through
the TLS-context random callback.

1. Tail-drop standalone goodput
--------------------------------

Each cell is stock/RLT median goodput as a percentage of available bandwidth.

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---:|---:|---:|---:|
| DSL | 91.02/97.29 | 72.98/95.18 | 93.51/97.88 | 72.75/96.34 |
| Home WiFi | 53.84/93.80 | 36.05/86.01 | 55.44/95.96 | 36.39/92.07 |
| Public | 98.03/98.03 | 95.19/96.86 | 97.86/98.03 | 94.69/97.80 |
| Corporate WiFi | 49.04/97.10 | 35.69/96.15 | 51.19/97.38 | 36.33/96.63 |
| LTE | 87.55/96.22 | 60.82/89.69 | 83.28/97.16 | 59.96/95.37 |
| 5G | 58.26/95.46 | 39.49/92.00 | 64.66/96.82 | 39.15/93.56 |
| LEO | 82.07/96.18 | 56.48/92.35 | 69.31/97.26 | 57.51/95.74 |
| GEO | 98.02/97.99 | 87.27/90.13 | 96.40/98.00 | 86.40/96.71 |
| DoCoMo@Office | 96.93/97.62 | 71.19/97.15 | 94.63/97.78 | 72.68/97.40 |
| au@Office | 73.61/97.57 | 60.59/97.11 | 89.14/97.66 | 58.24/97.39 |
| WiFi@Office | 72.68/97.70 | 51.37/97.55 | 72.31/97.71 | 51.67/97.61 |
| DoCoMo@mall | 98.03/98.03 | 94.09/97.61 | 98.03/98.03 | 94.13/97.93 |
| congested | 97.95/97.75 | 97.79/97.91 | 97.95/97.95 | 97.67/97.81 |
| bdp20 | 97.60/97.54 | 96.80/96.74 | 97.10/97.52 | 96.78/96.96 |
| bdp40 | 97.70/97.77 | 93.36/96.91 | 96.71/97.79 | 94.27/96.81 |
| queue 10ms | 72.80/74.54 | 55.41/56.37 | 73.33/73.20 | 53.62/54.96 |
| queue 5ms | 68.49/69.07 | 51.92/50.87 | 68.26/66.05 | 52.47/52.39 |
| queue 2.5ms | 64.64/64.16 | 50.47/48.31 | 63.15/65.80 | 49.63/49.63 |

2. Clean tail-drop competition
--------------------------------

S/S is the stock/stock second flow's median share. The other columns are
RLT's median share in each order.

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 47.64 | 47.99 | 51.38 | 52.14 | 50.33 | 51.17 |
| Home WiFi | 51.98 | 50.07 | 52.69 | 49.39 | 56.30 | 52.13 |
| Public | 49.86 | 52.39 | 50.29 | 49.73 | 50.01 | 50.40 |
| Corporate WiFi | 51.86 | 50.68 | 49.60 | 44.83 | 54.32 | 41.67 |
| LTE | 51.34 | 50.70 | 48.69 | 48.50 | 54.38 | 48.62 |
| 5G | 51.58 | 50.74 | 48.55 | 52.23 | 52.97 | 47.76 |
| LEO | 52.44 | 46.84 | 51.70 | 49.47 | 52.01 | 48.12 |
| GEO | 49.99 | 50.00 | 50.03 | 50.00 | 49.96 | 50.12 |
| DoCoMo@Office | 49.95 | 50.09 | 50.99 | 50.02 | 50.00 | 49.97 |
| au@Office | 51.51 | 51.56 | 50.08 | 49.80 | 52.09 | 50.05 |
| WiFi@Office | 55.22 | 53.69 | 46.42 | 53.29 | 55.44 | 46.03 |
| DoCoMo@mall | 49.73 | 49.73 | 50.25 | 50.01 | 49.77 | 50.15 |
| congested | 50.19 | 52.10 | 51.44 | 49.73 | 50.40 | 50.33 |
| bdp20 | 49.84 | 50.17 | 50.50 | 49.07 | 50.30 | 49.51 |
| bdp40 | 50.19 | 49.09 | 49.25 | 50.01 | 51.55 | 49.91 |
| queue 10ms | 50.26 | 50.51 | 48.71 | 50.38 | 49.66 | 51.35 |
| queue 5ms | 49.67 | 50.30 | 48.02 | 48.50 | 50.00 | 49.67 |
| queue 2.5ms | 48.33 | 50.82 | 50.52 | 49.92 | 48.92 | 49.88 |

3. Clean stock against 5%-loss RLT, tail drop
------------------------------------------------

Each value is the lossy RLT flow's median share.

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| DSL | 34.01 | 34.09 | 33.83 | 36.95 |
| Home WiFi | 28.16 | 31.24 | 32.38 | 31.23 |
| Public | 33.17 | 30.31 | 28.06 | 29.75 |
| Corporate WiFi | 18.41 | 16.85 | 17.45 | 16.74 |
| LTE | 29.68 | 34.84 | 25.49 | 26.95 |
| 5G | 20.89 | 20.75 | 22.41 | 20.88 |
| LEO | 23.42 | 27.15 | 24.94 | 24.30 |
| GEO | 44.47 | 42.48 | 40.60 | 38.08 |
| DoCoMo@Office | 17.28 | 24.42 | 22.69 | 17.01 |
| au@Office | 17.26 | 15.70 | 18.17 | 21.20 |
| WiFi@Office | 21.70 | 21.15 | 20.39 | 21.03 |
| DoCoMo@mall | 24.34 | 30.22 | 29.74 | 29.39 |
| congested | 45.25 | 45.05 | 42.40 | 42.89 |
| bdp20 | 48.33 | 48.03 | 48.63 | 47.76 |
| bdp40 | 49.30 | 47.18 | 46.39 | 47.15 |
| queue 10ms | 40.27 | 41.00 | 40.64 | 39.67 |
| queue 5ms | 41.14 | 40.31 | 40.09 | 40.49 |
| queue 2.5ms | 41.12 | 40.67 | 40.56 | 42.63 |

The lossy RLT flow remains below the clean stock flow in every profile and
both orders.

4. Tail-drop RLT self-competition at 5% loss
------------------------------------------------

Each entry gives the second flow's median share, the complete five-run range,
and median combined utilization.

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 49.92 | 46.55-58.23 | 98.02 | 50.90 | 49.38-59.49 | 98.02 |
| Home WiFi | 52.19 | 48.27-59.24 | 97.39 | 55.34 | 50.34-57.44 | 97.61 |
| Public | 52.54 | 40.11-53.85 | 98.02 | 48.67 | 41.43-61.04 | 98.02 |
| Corporate WiFi | 51.32 | 47.56-53.55 | 97.70 | 46.87 | 42.32-51.10 | 97.72 |
| LTE | 53.17 | 44.93-58.69 | 98.03 | 50.27 | 45.83-59.18 | 98.03 |
| 5G | 52.82 | 31.46-54.65 | 97.71 | 53.59 | 37.37-60.56 | 97.71 |
| LEO | 51.36 | 44.92-54.50 | 98.03 | 53.16 | 51.54-61.97 | 98.03 |
| GEO | 48.34 | 33.61-69.01 | 97.91 | 38.96 | 33.64-62.17 | 98.01 |
| DoCoMo@Office | 46.59 | 39.05-59.15 | 97.73 | 55.49 | 39.27-62.50 | 97.72 |
| au@Office | 50.85 | 34.92-63.27 | 97.73 | 47.86 | 30.00-51.15 | 97.73 |
| WiFi@Office | 50.81 | 49.55-51.93 | 97.72 | 50.60 | 47.53-51.86 | 97.72 |
| DoCoMo@mall | 37.52 | 33.24-66.14 | 98.03 | 45.86 | 37.35-46.72 | 98.03 |
| congested | 53.60 | 48.33-58.38 | 97.91 | 47.65 | 36.92-54.64 | 97.86 |
| bdp20 | 49.67 | 46.92-52.71 | 97.63 | 49.37 | 48.49-51.90 | 97.88 |
| bdp40 | 53.01 | 48.06-54.46 | 97.93 | 51.04 | 47.73-52.00 | 97.89 |
| queue 10ms | 48.29 | 48.12-50.70 | 94.97 | 50.53 | 46.59-51.59 | 95.69 |
| queue 5ms | 51.51 | 47.42-52.27 | 90.60 | 51.37 | 47.38-55.06 | 90.37 |
| queue 2.5ms | 48.74 | 46.97-51.62 | 86.09 | 50.14 | 46.71-51.43 | 87.28 |

The existing self-convergence limitation remains visible in the broad ranges.

5. CoDel standalone goodput
-----------------------------

GEO is excluded here and evaluated separately with an RTT-appropriate CoDel
interval. Each cell is stock/RLT median goodput.

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---:|---:|---:|---:|
| DSL | 86.45/96.64 | 73.21/94.90 | 85.67/96.89 | 69.42/94.90 |
| Home WiFi | 52.57/93.50 | 36.93/87.78 | 49.59/95.53 | 39.80/91.68 |
| Public | 94.33/96.85 | 88.73/95.79 | 93.28/96.65 | 86.52/95.86 |
| Corporate WiFi | 48.67/97.03 | 36.35/96.11 | 49.30/97.41 | 34.87/96.75 |
| LTE | 81.83/94.88 | 59.37/89.10 | 78.80/94.80 | 60.47/92.19 |
| 5G | 60.44/95.70 | 43.43/91.84 | 54.10/95.97 | 39.51/94.48 |
| LEO | 75.63/95.50 | 56.13/93.04 | 72.01/96.25 | 57.08/93.94 |
| DoCoMo@Office | 88.23/97.44 | 65.31/96.97 | 80.61/97.46 | 66.28/96.99 |
| au@Office | 76.10/97.48 | 56.23/97.15 | 84.20/97.59 | 61.26/97.39 |
| WiFi@Office | 74.17/97.70 | 52.81/97.58 | 73.74/97.70 | 52.06/97.64 |
| DoCoMo@mall | 91.67/97.20 | 83.39/96.90 | 92.14/97.15 | 86.09/96.71 |
| congested | 95.90/96.34 | 93.61/93.47 | 95.44/96.26 | 90.88/94.38 |
| bdp20 | 96.60/96.62 | 94.25/95.38 | 96.32/96.52 | 94.72/94.88 |
| bdp40 | 94.54/93.80 | 89.62/89.33 | 94.27/94.83 | 90.71/92.69 |
| queue 10ms | 74.83/74.63 | 53.34/55.23 | 74.52/74.01 | 54.13/53.61 |
| queue 5ms | 67.51/68.51 | 49.54/51.50 | 68.05/65.71 | 50.52/50.32 |
| queue 2.5ms | 64.51/65.76 | 48.76/45.46 | 66.01/64.11 | 49.85/49.03 |

6. CoDel competition
----------------------

GEO is excluded from these tables. The clean table has the same meaning as
experiment 2.

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 51.68 | 51.25 | 51.32 | 50.60 | 48.82 | 51.17 |
| Home WiFi | 49.88 | 49.91 | 49.49 | 50.02 | 50.43 | 50.63 |
| Public | 49.29 | 49.26 | 50.13 | 49.94 | 50.49 | 50.03 |
| Corporate WiFi | 49.91 | 51.07 | 49.98 | 48.90 | 49.86 | 50.77 |
| LTE | 49.80 | 50.60 | 50.83 | 51.26 | 49.97 | 47.48 |
| 5G | 49.44 | 49.25 | 49.89 | 48.65 | 49.13 | 50.25 |
| LEO | 49.52 | 49.37 | 50.53 | 50.03 | 50.56 | 49.89 |
| DoCoMo@Office | 50.81 | 60.23 | 48.59 | 52.17 | 60.55 | 43.57 |
| au@Office | 53.63 | 51.11 | 53.96 | 45.74 | 45.15 | 50.66 |
| WiFi@Office | 47.99 | 49.29 | 51.29 | 49.03 | 48.80 | 51.27 |
| DoCoMo@mall | 50.23 | 49.36 | 49.75 | 51.24 | 50.25 | 50.98 |
| congested | 48.83 | 49.37 | 50.28 | 49.12 | 50.57 | 49.88 |
| bdp20 | 49.66 | 49.77 | 49.70 | 50.32 | 49.81 | 50.81 |
| bdp40 | 50.29 | 50.01 | 49.55 | 49.59 | 49.23 | 50.25 |
| queue 10ms | 48.90 | 50.88 | 51.52 | 48.92 | 52.05 | 48.51 |
| queue 5ms | 50.63 | 49.56 | 49.27 | 49.82 | 50.43 | 50.22 |
| queue 2.5ms | 51.08 | 50.44 | 51.04 | 51.58 | 50.02 | 48.68 |

With 5% loss on RLT and no random loss on stock, the following values are the
lossy RLT flow's median share.

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| DSL | 45.72 | 44.61 | 47.16 | 47.19 |
| Home WiFi | 38.47 | 38.98 | 45.45 | 42.19 |
| Public | 48.54 | 47.32 | 49.74 | 48.83 |
| Corporate WiFi | 31.71 | 32.74 | 33.28 | 34.26 |
| LTE | 45.83 | 46.93 | 47.91 | 47.90 |
| 5G | 43.40 | 43.10 | 48.19 | 44.47 |
| LEO | 45.86 | 44.29 | 48.38 | 47.71 |
| DoCoMo@Office | 44.99 | 37.33 | 45.64 | 44.54 |
| au@Office | 39.48 | 38.92 | 43.15 | 39.51 |
| WiFi@Office | 29.14 | 29.88 | 30.60 | 30.55 |
| DoCoMo@mall | 47.67 | 49.00 | 49.48 | 49.97 |
| congested | 49.25 | 50.00 | 49.98 | 48.56 |
| bdp20 | 48.65 | 49.59 | 48.85 | 47.90 |
| bdp40 | 48.21 | 48.03 | 49.03 | 48.19 |
| queue 10ms | 42.02 | 41.49 | 41.32 | 41.49 |
| queue 5ms | 40.71 | 39.87 | 39.64 | 40.65 |
| queue 2.5ms | 42.08 | 41.61 | 42.19 | 40.80 |

The lossy RLT flow remains at or below equal share in every non-GEO profile
and both orders.

Two 5%-loss RLT flows give the following final-window results.

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 50.22 | 46.55-53.25 | 97.91 | 50.90 | 49.64-52.28 | 97.94 |
| Home WiFi | 52.49 | 47.11-58.99 | 97.36 | 52.89 | 46.53-55.02 | 97.54 |
| Public | 49.67 | 47.96-54.01 | 97.96 | 48.56 | 47.33-53.17 | 97.94 |
| Corporate WiFi | 50.50 | 47.21-54.93 | 97.69 | 47.47 | 45.65-48.52 | 97.72 |
| LTE | 51.02 | 47.87-54.90 | 97.52 | 50.83 | 46.45-54.01 | 97.59 |
| 5G | 52.01 | 45.31-60.12 | 97.28 | 51.56 | 49.53-63.07 | 97.28 |
| LEO | 49.37 | 44.01-54.58 | 97.78 | 49.16 | 45.69-51.84 | 97.74 |
| DoCoMo@Office | 51.54 | 47.67-56.82 | 97.65 | 64.70 | 56.11-65.41 | 97.68 |
| au@Office | 42.34 | 39.89-61.98 | 97.70 | 38.45 | 37.34-50.17 | 97.72 |
| WiFi@Office | 48.72 | 47.17-51.06 | 97.72 | 50.97 | 44.05-53.47 | 97.72 |
| DoCoMo@mall | 49.99 | 48.40-51.01 | 97.99 | 49.20 | 47.97-50.10 | 97.96 |
| congested | 51.14 | 48.94-53.41 | 96.81 | 49.28 | 44.33-50.46 | 96.13 |
| bdp20 | 50.49 | 47.98-52.61 | 97.09 | 49.54 | 48.64-53.78 | 97.06 |
| bdp40 | 49.82 | 48.99-53.92 | 97.00 | 49.97 | 47.28-52.12 | 96.63 |
| queue 10ms | 49.33 | 48.71-51.56 | 96.75 | 49.94 | 43.97-52.71 | 97.34 |
| queue 5ms | 50.18 | 49.02-53.91 | 90.13 | 49.48 | 45.98-50.74 | 90.44 |
| queue 2.5ms | 49.89 | 48.24-51.72 | 86.46 | 50.36 | 43.84-52.14 | 85.36 |

RTT-adjusted GEO CoDel
-----------------------

GEO uses a 600ms RTT, 600ms queue, and CoDel target=5ms, interval=600ms.
Standalone values are medians over seven 1000-second runs.

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---:|---:|---:|
| CUBIC | 85.84 | 77.78 | 88.00 |
| Cuback | 85.29 | 77.16 | 85.26 |

The complete competition results are:

| Controller | Case | Flow 1 median | Flow 2 median | Util median | Flow 2 share median | Share range |
|---|---|---:|---:|---:|---:|---:|
| CUBIC | stock/stock | 46.55 | 43.03 | 90.30 | 47.87 | 37.74-53.98 |
| CUBIC | stock/RLT | 32.81 | 58.34 | 91.15 | 64.00 | 44.16-69.58 |
| CUBIC | RLT/stock | 53.88 | 37.25 | 90.72 | 40.88 | 31.83-60.95 |
| CUBIC | clean/lossy-RLT | 43.31 | 46.85 | 90.56 | 51.96 | 46.74-66.64 |
| CUBIC | lossy-RLT/clean | 46.80 | 42.90 | 90.55 | 47.82 | 39.17-52.32 |
| CUBIC | lossy-RLT/lossy-RLT | 40.48 | 50.29 | 90.74 | 55.40 | 53.86-60.55 |
| Cuback | stock/stock | 46.09 | 42.96 | 89.84 | 48.24 | 40.73-57.21 |
| Cuback | stock/RLT | 25.91 | 64.19 | 90.23 | 71.24 | 59.22-73.88 |
| Cuback | RLT/stock | 65.80 | 24.51 | 90.13 | 27.14 | 24.06-32.97 |
| Cuback | clean/lossy-RLT | 28.25 | 61.40 | 89.65 | 68.48 | 61.99-72.34 |
| Cuback | lossy-RLT/clean | 57.61 | 31.27 | 89.40 | 35.18 | 26.46-53.22 |
| Cuback | lossy-RLT/lossy-RLT | 39.41 | 51.20 | 90.62 | 56.51 | 43.41-62.32 |

The RTT-adjusted interval repairs stock CoDel's control timing, but a 5ms
target is still effectively queue-less relative to a 600ms idle BDP. RLT is
over-aggressive in this deliberately stringent GEO configuration, especially
with Cuback. This expected boundary is not used as evidence against the stable-
path result for paths with enough queue for acceleration.
Accelerated increase is intended to recover capacity after a random loss while
the observed RTT remains safely below the full-queue RTT learned from a real
congestion episode. The CWND-distance calculation alone can consume too much
of that RTT margin before delayed ACK feedback reflects the added queue.

Stop acceleration once latest_rtt is within five percent of full_rtt. Before
that point, cap the per-RTT increase to half of the remaining relative RTT
headroom:

    (full_rtt / latest_rtt - 1) / 2

The subtraction converts the total RTT ratio into available growth. For
example, full_rtt=120ms and latest_rtt=100ms leave 20% headroom, so the cap is
10% per RTT. Retain the existing CWND-based acceleration and 2.5% floor below
this cap.

Add focused coverage for both the half-headroom calculation and the
five-percent cutoff.

build/default/test.t passes all 31 top-level groups.

Method
------

The per-packet random-loss probability is chosen so that a full pipe has a 5%
or 10% chance of at least one random loss per RTT. Standalone tests are seven
100-second runs measuring the latter 50 seconds. Competition tests are seven
160-second runs per flow order measuring the latter 80 seconds. Self-
competition uses five 320-second runs and reports the final 40-second window.
All values below are percentages. S->R means stock is created first and RLT
second; R->S is the reverse. Loss placement varies between repetitions through
the TLS-context random callback.

1. Tail-drop standalone goodput
-------------------------------

Each cell is stock/RLT median goodput as a percentage of available bandwidth.

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---:|---:|---:|---:|
| DSL | 93.21/97.60 | 77.98/95.10 | 91.17/97.87 | 75.53/96.35 |
| Home WiFi | 53.09/93.94 | 36.62/86.56 | 54.23/96.00 | 37.20/91.28 |
| Public | 98.03/98.03 | 93.53/97.55 | 98.03/98.03 | 94.40/97.90 |
| Corporate WiFi | 50.39/97.05 | 34.47/96.05 | 50.83/97.31 | 34.41/96.69 |
| LTE | 86.99/96.16 | 62.33/89.55 | 85.74/97.70 | 64.08/94.71 |
| 5G | 55.37/95.65 | 42.76/92.03 | 61.75/96.96 | 41.99/95.05 |
| LEO | 82.17/95.53 | 55.54/92.26 | 78.43/97.44 | 56.90/95.09 |
| GEO | 98.02/97.90 | 92.03/97.42 | 97.71/98.02 | 91.63/97.37 |
| DoCoMo@Office | 88.82/97.55 | 73.68/96.87 | 93.19/97.76 | 68.69/97.44 |
| au@Office | 81.24/97.57 | 52.74/97.25 | 90.90/97.69 | 52.82/97.44 |
| WiFi@Office | 71.77/97.71 | 52.59/97.60 | 69.55/97.71 | 51.11/97.66 |
| DoCoMo@mall | 98.03/98.02 | 91.21/97.41 | 98.03/98.03 | 94.01/97.84 |
| congested | 97.93/97.91 | 97.87/97.81 | 97.91/97.97 | 97.81/97.89 |
| bdp20 | 97.68/97.36 | 96.04/96.56 | 97.06/97.26 | 96.06/96.60 |
| bdp40 | 97.61/97.62 | 94.64/96.04 | 97.54/97.78 | 91.85/96.22 |
| queue 10ms | 74.51/72.61 | 52.49/56.14 | 73.32/69.41 | 51.27/54.73 |
| queue 5ms | 65.97/65.68 | 52.63/52.12 | 71.42/66.96 | 50.27/49.00 |
| queue 2.5ms | 66.48/64.88 | 48.73/49.83 | 65.02/66.12 | 48.96/47.20 |

2. Clean tail-drop competition
------------------------------

S/S is the stock/stock second flow's median share. The other columns are RLT's
median share in each order.

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 51.36 | 51.59 | 50.39 | 49.91 | 51.49 | 53.12 |
| Home WiFi | 51.45 | 54.03 | 51.67 | 49.81 | 50.80 | 53.37 |
| Public | 49.26 | 49.80 | 51.27 | 52.19 | 49.84 | 50.45 |
| Corporate WiFi | 53.45 | 47.42 | 48.89 | 52.74 | 53.87 | 50.90 |
| LTE | 49.91 | 52.77 | 50.72 | 51.34 | 50.48 | 50.23 |
| 5G | 48.54 | 49.67 | 52.86 | 49.08 | 47.16 | 51.18 |
| LEO | 50.36 | 49.77 | 47.67 | 49.37 | 52.59 | 48.98 |
| GEO | 49.99 | 49.99 | 50.02 | 49.89 | 49.94 | 50.07 |
| DoCoMo@Office | 49.96 | 49.99 | 49.95 | 49.88 | 50.98 | 51.07 |
| au@Office | 51.38 | 51.59 | 48.47 | 52.12 | 52.12 | 50.13 |
| WiFi@Office | 53.18 | 53.69 | 44.86 | 56.41 | 54.96 | 49.64 |
| DoCoMo@mall | 49.74 | 49.78 | 50.30 | 49.88 | 49.81 | 50.18 |
| congested | 49.27 | 51.08 | 51.11 | 50.64 | 52.82 | 51.43 |
| bdp20 | 49.70 | 50.60 | 50.05 | 48.83 | 50.05 | 50.05 |
| bdp40 | 50.27 | 50.00 | 50.91 | 46.69 | 51.53 | 49.13 |
| queue 10ms | 50.43 | 50.49 | 49.78 | 49.02 | 49.10 | 47.58 |
| queue 5ms | 48.36 | 49.81 | 50.81 | 48.17 | 49.44 | 49.53 |
| queue 2.5ms | 48.90 | 50.90 | 50.90 | 50.46 | 49.99 | 50.88 |

3. Clean stock against 5%-loss RLT, tail drop
---------------------------------------------

Each value is the lossy RLT flow's median share.

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| DSL | 34.00 | 37.38 | 32.95 | 33.57 |
| Home WiFi | 28.62 | 29.34 | 32.14 | 29.40 |
| Public | 25.97 | 34.09 | 31.90 | 31.48 |
| Corporate WiFi | 17.68 | 17.48 | 17.65 | 17.88 |
| LTE | 29.22 | 28.91 | 28.98 | 32.94 |
| 5G | 20.08 | 21.50 | 20.24 | 20.01 |
| LEO | 25.38 | 26.28 | 25.19 | 26.37 |
| GEO | 45.50 | 44.89 | 34.46 | 39.66 |
| DoCoMo@Office | 25.92 | 29.69 | 18.88 | 23.23 |
| au@Office | 20.84 | 20.98 | 18.68 | 22.16 |
| WiFi@Office | 21.27 | 19.51 | 21.49 | 19.60 |
| DoCoMo@mall | 26.12 | 31.45 | 24.07 | 34.11 |
| congested | 42.05 | 48.80 | 44.44 | 42.54 |
| bdp20 | 49.20 | 48.47 | 49.20 | 49.58 |
| bdp40 | 47.53 | 46.23 | 45.32 | 45.08 |
| queue 10ms | 39.39 | 41.14 | 40.59 | 40.64 |
| queue 5ms | 40.12 | 39.26 | 40.07 | 40.21 |
| queue 2.5ms | 40.84 | 41.03 | 41.91 | 41.11 |

The lossy RLT flow remains below equal share throughout.

4. Tail-drop RLT self-competition at 5% loss
--------------------------------------------

Each entry gives the second flow's median share, complete five-run range, and
median combined utilization.

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 53.19 | 44.29-54.96 | 98.02 | 48.32 | 45.20-55.20 | 98.02 |
| Home WiFi | 50.04 | 44.40-60.06 | 97.53 | 45.15 | 42.78-56.78 | 97.62 |
| Public | 46.89 | 37.09-66.96 | 98.03 | 41.32 | 38.70-65.50 | 98.02 |
| Corporate WiFi | 48.29 | 45.86-55.88 | 97.67 | 46.88 | 43.10-51.12 | 97.72 |
| LTE | 52.81 | 38.24-61.12 | 98.03 | 49.80 | 46.74-50.42 | 98.03 |
| 5G | 48.45 | 33.25-54.15 | 97.66 | 50.19 | 43.45-59.38 | 97.72 |
| LEO | 50.96 | 40.69-65.03 | 98.03 | 45.30 | 42.20-60.10 | 98.03 |
| GEO | 61.95 | 44.43-76.67 | 97.97 | 53.21 | 39.28-79.38 | 97.98 |
| DoCoMo@Office | 44.54 | 33.84-55.06 | 97.73 | 52.36 | 22.10-57.56 | 97.72 |
| au@Office | 41.10 | 40.02-62.87 | 97.73 | 52.23 | 40.23-62.04 | 97.73 |
| WiFi@Office | 47.88 | 43.42-49.66 | 97.72 | 49.67 | 45.50-50.36 | 97.72 |
| DoCoMo@mall | 45.34 | 38.04-54.66 | 98.03 | 56.44 | 34.64-66.39 | 98.03 |
| congested | 53.87 | 43.21-60.88 | 97.89 | 57.12 | 47.28-61.28 | 97.89 |
| bdp20 | 50.60 | 48.60-52.10 | 97.76 | 48.17 | 44.69-50.54 | 97.58 |
| bdp40 | 51.95 | 47.33-53.36 | 97.85 | 49.23 | 43.84-56.10 | 97.86 |
| queue 10ms | 48.41 | 45.70-50.35 | 96.19 | 51.20 | 48.28-53.92 | 95.46 |
| queue 5ms | 48.95 | 46.40-51.43 | 90.32 | 50.09 | 48.59-51.63 | 88.80 |
| queue 2.5ms | 49.69 | 48.66-52.67 | 86.51 | 50.37 | 46.63-54.08 | 85.93 |

The existing broad self-convergence distribution remains on several
large-delay profiles.

5. CoDel standalone goodput
---------------------------

GEO is excluded here and evaluated separately with an RTT-appropriate CoDel
interval. Each cell is stock/RLT median goodput.

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---:|---:|---:|---:|
| DSL | 87.64/96.49 | 72.40/94.62 | 85.85/96.79 | 72.70/95.11 |
| Home WiFi | 48.31/93.74 | 36.68/87.33 | 51.86/95.21 | 37.51/92.00 |
| Public | 94.32/96.89 | 89.45/95.65 | 94.25/96.80 | 88.17/95.62 |
| Corporate WiFi | 51.98/97.13 | 34.04/96.28 | 47.51/97.37 | 35.36/96.62 |
| LTE | 72.86/95.38 | 61.06/90.47 | 75.61/94.67 | 59.77/92.42 |
| 5G | 62.18/95.82 | 40.37/92.86 | 59.84/96.12 | 35.98/93.39 |
| LEO | 73.31/95.02 | 55.31/91.64 | 72.66/95.82 | 62.90/93.91 |
| DoCoMo@Office | 85.67/97.40 | 66.27/96.92 | 81.85/97.40 | 61.84/96.98 |
| au@Office | 80.56/97.49 | 57.61/97.23 | 75.58/97.57 | 58.11/97.37 |
| WiFi@Office | 74.75/97.70 | 52.87/97.61 | 72.24/97.71 | 51.64/97.64 |
| DoCoMo@mall | 90.95/97.31 | 83.73/96.68 | 90.31/97.17 | 85.67/96.68 |
| congested | 95.62/96.48 | 92.87/93.51 | 95.02/96.30 | 90.54/95.02 |
| bdp20 | 96.24/97.07 | 94.13/95.24 | 96.48/96.81 | 93.67/94.29 |
| bdp40 | 94.15/93.87 | 90.34/92.78 | 92.86/95.67 | 89.16/91.74 |
| queue 10ms | 73.84/71.67 | 54.76/53.02 | 71.80/73.14 | 54.36/54.33 |
| queue 5ms | 69.90/68.60 | 50.58/49.29 | 65.66/63.96 | 50.82/48.99 |
| queue 2.5ms | 64.01/65.82 | 47.08/49.77 | 66.58/66.59 | 47.50/47.36 |

6. CoDel competition
--------------------

GEO is excluded from these tables. The clean table has the same meaning as
experiment 2.

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 50.02 | 50.60 | 49.96 | 49.20 | 49.57 | 49.63 |
| Home WiFi | 49.64 | 49.97 | 51.02 | 50.68 | 49.96 | 49.73 |
| Public | 50.90 | 50.51 | 49.89 | 50.15 | 50.07 | 48.81 |
| Corporate WiFi | 48.32 | 50.69 | 51.31 | 49.32 | 49.06 | 50.28 |
| LTE | 49.10 | 50.07 | 50.58 | 50.62 | 49.76 | 49.30 |
| 5G | 50.89 | 49.67 | 49.77 | 50.58 | 50.05 | 50.80 |
| LEO | 50.06 | 51.09 | 49.44 | 49.68 | 51.41 | 50.05 |
| DoCoMo@Office | 58.21 | 54.32 | 45.52 | 61.71 | 59.61 | 40.01 |
| au@Office | 48.66 | 49.22 | 51.54 | 49.30 | 50.74 | 50.81 |
| WiFi@Office | 49.65 | 51.11 | 49.97 | 50.38 | 49.73 | 50.64 |
| DoCoMo@mall | 50.65 | 49.73 | 48.89 | 51.02 | 49.04 | 49.44 |
| congested | 50.76 | 51.46 | 49.18 | 49.92 | 49.82 | 49.41 |
| bdp20 | 50.77 | 50.06 | 49.98 | 50.39 | 50.42 | 50.33 |
| bdp40 | 50.71 | 50.56 | 49.98 | 49.61 | 50.16 | 49.90 |
| queue 10ms | 49.47 | 50.68 | 49.58 | 51.98 | 50.53 | 48.87 |
| queue 5ms | 49.72 | 50.54 | 50.07 | 48.69 | 48.44 | 50.82 |
| queue 2.5ms | 49.55 | 49.97 | 49.08 | 49.14 | 50.53 | 51.76 |

With 5% loss on RLT and no random loss on stock, the following values are the
lossy RLT flow's median share.

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| DSL | 46.73 | 45.34 | 47.54 | 46.11 |
| Home WiFi | 39.00 | 38.27 | 44.18 | 40.96 |
| Public | 50.05 | 48.40 | 49.36 | 48.78 |
| Corporate WiFi | 30.08 | 33.19 | 31.65 | 33.33 |
| LTE | 46.77 | 46.77 | 49.04 | 48.55 |
| 5G | 42.30 | 42.34 | 47.15 | 45.14 |
| LEO | 45.10 | 45.53 | 47.91 | 47.03 |
| DoCoMo@Office | 45.59 | 38.47 | 55.07 | 38.61 |
| au@Office | 39.50 | 36.97 | 46.46 | 38.43 |
| WiFi@Office | 30.22 | 30.33 | 30.44 | 30.72 |
| DoCoMo@mall | 48.20 | 48.27 | 50.15 | 49.49 |
| congested | 49.32 | 49.33 | 49.34 | 48.38 |
| bdp20 | 48.18 | 48.77 | 48.94 | 49.14 |
| bdp40 | 48.74 | 48.99 | 49.23 | 47.86 |
| queue 10ms | 41.73 | 41.25 | 40.80 | 42.04 |
| queue 5ms | 40.87 | 42.17 | 39.85 | 41.72 |
| queue 2.5ms | 41.16 | 42.32 | 40.83 | 40.77 |

The 50.05% Public result is numerical noise. Cuback DoCoMo@Office remains
strongly order-dependent: 55.07% in one direction and 38.61% in the reverse,
matching that profile's stock/stock order bias.

Two 5%-loss RLT flows give the following final-window results.

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---:|---:|---:|---:|---:|---:|
| DSL | 48.37 | 46.14-50.48 | 97.95 | 52.35 | 48.56-54.43 | 97.95 |
| Home WiFi | 50.76 | 48.66-51.88 | 97.21 | 50.60 | 40.05-55.47 | 97.48 |
| Public | 47.97 | 47.74-51.80 | 97.98 | 51.76 | 49.15-53.21 | 97.92 |
| Corporate WiFi | 47.92 | 45.34-50.34 | 97.70 | 50.51 | 48.76-52.61 | 97.72 |
| LTE | 50.81 | 47.89-54.31 | 97.45 | 49.76 | 49.65-51.58 | 97.40 |
| 5G | 50.79 | 45.65-55.30 | 97.45 | 50.22 | 46.38-58.69 | 97.46 |
| LEO | 51.80 | 45.00-55.06 | 97.64 | 49.65 | 47.10-54.56 | 97.78 |
| DoCoMo@Office | 56.67 | 42.34-67.79 | 97.68 | 63.60 | 38.30-64.81 | 97.69 |
| au@Office | 47.14 | 41.26-48.59 | 97.71 | 44.83 | 40.73-50.55 | 97.71 |
| WiFi@Office | 49.92 | 46.99-51.64 | 97.72 | 51.27 | 47.21-53.18 | 97.72 |
| DoCoMo@mall | 48.86 | 47.65-50.91 | 97.98 | 49.00 | 47.10-51.33 | 97.98 |
| congested | 49.71 | 47.84-53.01 | 96.74 | 49.56 | 46.99-52.14 | 96.36 |
| bdp20 | 51.86 | 45.80-52.46 | 96.99 | 50.18 | 46.36-51.84 | 97.24 |
| bdp40 | 49.18 | 49.03-50.74 | 96.85 | 49.55 | 48.09-52.35 | 96.80 |
| queue 10ms | 50.93 | 47.60-51.06 | 96.58 | 50.03 | 44.06-50.65 | 96.86 |
| queue 5ms | 48.93 | 48.05-53.43 | 90.37 | 52.24 | 46.59-55.61 | 90.36 |
| queue 2.5ms | 49.22 | 48.87-52.92 | 85.68 | 48.53 | 46.82-50.02 | 85.41 |

7. RTT-adjusted GEO CoDel
-------------------------

GEO uses a 600ms RTT, 600ms queue, and CoDel target=5ms, interval=600ms.
Standalone values are medians over seven 1000-second runs.

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---:|---:|---:|
| CUBIC | 85.84 | 77.37 | 87.18 |
| Cuback | 85.28 | 76.15 | 85.30 |

The complete competition results are:

| Controller | Case | Flow 1 median | Flow 2 median | Util median | Flow 2 share median | Share range |
|---|---|---:|---:|---:|---:|---:|
| CUBIC | stock/stock | 43.09 | 47.01 | 90.28 | 52.18 | 44.33-65.16 |
| CUBIC | stock/RLT | 34.62 | 56.39 | 91.07 | 62.16 | 45.24-66.99 |
| CUBIC | RLT/stock | 49.45 | 41.75 | 90.90 | 45.77 | 35.15-61.40 |
| CUBIC | clean/lossy-RLT | 47.37 | 43.19 | 90.42 | 47.58 | 36.68-62.80 |
| CUBIC | lossy-RLT/clean | 46.03 | 44.46 | 90.41 | 49.17 | 34.20-56.79 |
| CUBIC | lossy-RLT/lossy-RLT | 42.25 | 48.48 | 90.57 | 53.60 | 32.60-54.21 |
| Cuback | stock/stock | 45.42 | 45.25 | 89.99 | 49.91 | 35.77-64.42 |
| Cuback | stock/RLT | 23.76 | 65.94 | 90.07 | 73.51 | 64.23-76.46 |
| Cuback | RLT/stock | 63.12 | 27.41 | 90.43 | 30.28 | 23.13-35.63 |
| Cuback | clean/lossy-RLT | 27.84 | 61.12 | 89.09 | 68.70 | 67.01-71.12 |
| Cuback | lossy-RLT/clean | 59.68 | 29.53 | 89.67 | 33.10 | 28.46-42.23 |
| Cuback | lossy-RLT/lossy-RLT | 41.17 | 49.49 | 90.38 | 54.59 | 35.66-57.30 |

The cap preserves near-full standalone throughput on lossy ordinary profiles.
Clean competition remains centered near parity, and lossy RLT generally yields
to clean stock. It does not resolve the known self-convergence and
RTT-adjusted GEO order-sensitivity limitations.
…erate after ECN

This is primarily a refactor of accelerated increase, with two notable
behavioral changes: the recalibration interval is retained across congestion
events, and ECN can open accelerated increase after its ordinary congestion
response.

First, retain the recalibration interval across congestion events. Replace the
observation window and its maximum RTT with the latest time at which smoothed
RTT reached halfway between min_rtt and full_rtt. Recalculate the expected
high-RTT duration after each congestion event, using the shorter of the cubic
and Reno-friendly return times, and recalibrate after twice that duration
without another high-RTT observation. This prevents frequent losses from
restarting the interval indefinitely.

Second, allow ECN to open accelerated increase after its ordinary congestion
response. Every congestion event establishes the guard as reduced_cwnd divided
by QUICLY_BETA_LOSS. This target is only an acceleration guard; ECN continues
to reduce the live CWND using QUICLY_BETA_ECN. Acceleration remains subject to
the RTT gates.

Contain the resulting state transitions in the acceleration machinery so that
the shared Pico callbacks only decide when to invoke them. Pass acceleration
state, RTT, and CWND directly to the calculation helpers, and let the
recalibration predicate tell the caller when to return the policy to
calibration slow start.

Track minimum RTT over periods between congestion events, initialize full_rtt
and the high-RTT timestamp when calibration recovery ends, and use the loss
episode count to identify undo of the initial startup recovery.

build/default/test.t passes all 31 top-level groups.

Benchmark method
----------------

The per-packet random-loss probability is chosen so that a full pipe has a 5%
or 10% chance of at least one random loss per RTT. Standalone tests are seven
100-second runs measuring the latter 50 seconds. Competition tests are seven
160-second runs per flow order measuring the latter 80 seconds. Self-
competition uses five 320-second runs and reports the final 40-second window.
All values are percentages. S->R means stock is created first and RLT second;
R->S is the reverse. Loss placement varies between repetitions through the
TLS-context random callback.

The complete results follow. Compared with the preceding evaluation, mean RLT
share changes by -0.83 percentage points in clean tail-drop competition and
-0.16 points when the RLT flow has 5% loss. Under CoDel, the corresponding
changes are +3.81 and +4.84 points. ECN-triggered acceleration therefore has a
material competitive effect under CoDel; these measurements are recorded here
without claiming that the fairness prerequisite remains satisfied.

1. Tail-drop standalone goodput
-------------------------------

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 93.02/97.34 | 75.74/95.79 | 90.47/97.80 | 74.25/96.89 |
| Home_WiFi | 51.22/94.21 | 36.87/89.11 | 52.48/96.00 | 36.74/91.87 |
| Public | 98.03/98.02 | 96.35/97.85 | 98.03/98.02 | 95.89/97.97 |
| Corporate_WiFi | 53.70/97.05 | 33.24/96.30 | 52.21/97.40 | 36.06/96.73 |
| LTE | 85.77/97.79 | 62.06/94.18 | 85.81/97.95 | 64.64/96.19 |
| 5G | 65.73/96.24 | 38.34/93.85 | 60.13/97.39 | 40.17/95.40 |
| LEO | 76.15/96.92 | 52.97/94.65 | 82.35/97.83 | 52.27/95.98 |
| GEO | 97.97/98.00 | 89.36/96.85 | 98.01/98.02 | 88.24/96.63 |
| DoCoMo@Office | 95.00/97.76 | 68.72/97.48 | 92.06/97.79 | 69.05/97.57 |
| au@Office | 84.57/97.71 | 58.63/97.45 | 83.41/97.68 | 49.26/97.54 |
| WiFi@Office | 72.68/97.69 | 53.07/97.59 | 71.95/97.71 | 52.48/97.62 |
| DoCoMo@mall | 98.03/98.02 | 91.86/97.97 | 98.03/98.02 | 95.14/97.89 |
| congested | 97.93/97.93 | 97.91/97.83 | 97.89/97.89 | 97.85/97.77 |
| bdp20 | 97.62/97.52 | 95.60/96.84 | 97.56/97.68 | 96.20/96.12 |
| bdp40 | 97.89/97.66 | 95.40/96.13 | 96.88/97.81 | 94.15/96.92 |
| queue10ms | 74.59/78.54 | 55.08/60.30 | 73.01/77.30 | 53.84/59.68 |
| queue5ms | 69.44/67.52 | 49.87/55.57 | 66.15/64.82 | 50.23/52.76 |
| queue2.5ms | 64.68/59.27 | 46.59/46.86 | 63.64/57.35 | 47.88/46.78 |

2. Clean tail-drop competition
------------------------------

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 49.07 | 52.17 | 49.70 | 48.21 | 49.82 | 51.03 |
| Home_WiFi | 49.58 | 52.20 | 46.96 | 52.26 | 51.17 | 48.26 |
| Public | 49.85 | 50.11 | 50.20 | 49.95 | 50.06 | 50.49 |
| Corporate_WiFi | 50.84 | 47.05 | 42.73 | 55.96 | 53.76 | 44.25 |
| LTE | 49.96 | 49.04 | 50.19 | 49.20 | 47.06 | 50.34 |
| 5G | 47.91 | 50.76 | 50.58 | 47.74 | 50.45 | 49.10 |
| LEO | 53.45 | 48.71 | 48.96 | 52.70 | 51.43 | 46.70 |
| GEO | 50.00 | 49.98 | 50.02 | 49.89 | 50.04 | 50.21 |
| DoCoMo@Office | 50.09 | 50.93 | 49.95 | 49.97 | 49.97 | 49.94 |
| au@Office | 49.74 | 49.92 | 48.50 | 52.18 | 52.12 | 47.83 |
| WiFi@Office | 53.46 | 56.19 | 42.16 | 54.35 | 51.78 | 45.30 |
| DoCoMo@mall | 49.70 | 49.73 | 50.23 | 49.85 | 49.89 | 50.23 |
| congested | 50.78 | 51.45 | 50.81 | 50.36 | 49.71 | 48.56 |
| bdp20 | 50.52 | 50.37 | 50.52 | 49.49 | 49.82 | 50.84 |
| bdp40 | 48.30 | 49.62 | 49.09 | 50.73 | 50.27 | 50.43 |
| queue10ms | 50.54 | 50.49 | 50.30 | 47.36 | 49.08 | 49.79 |
| queue5ms | 49.44 | 49.19 | 49.26 | 50.55 | 49.84 | 50.27 |
| queue2.5ms | 50.10 | 50.37 | 50.50 | 49.45 | 49.92 | 50.16 |

3. Clean stock against 5%-loss RLT, tail drop
------------------------------------------------

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 35.30 | 34.10 | 35.96 | 35.23 |
| Home_WiFi | 29.38 | 30.14 | 30.55 | 28.85 |
| Public | 29.57 | 29.31 | 29.51 | 30.69 |
| Corporate_WiFi | 18.47 | 17.71 | 16.77 | 17.26 |
| LTE | 32.70 | 28.72 | 32.05 | 26.94 |
| 5G | 19.26 | 19.62 | 19.00 | 18.69 |
| LEO | 23.90 | 27.02 | 24.40 | 27.91 |
| GEO | 34.50 | 42.58 | 36.32 | 41.10 |
| DoCoMo@Office | 25.82 | 23.02 | 22.64 | 21.47 |
| au@Office | 23.32 | 16.11 | 21.50 | 16.89 |
| WiFi@Office | 21.72 | 20.29 | 21.18 | 21.07 |
| DoCoMo@mall | 27.02 | 27.71 | 29.39 | 29.70 |
| congested | 43.44 | 46.78 | 43.80 | 45.07 |
| bdp20 | 49.46 | 49.06 | 48.65 | 50.49 |
| bdp40 | 47.50 | 46.92 | 45.96 | 45.90 |
| queue10ms | 39.22 | 39.87 | 40.12 | 44.53 |
| queue5ms | 42.08 | 41.12 | 40.97 | 41.34 |
| queue2.5ms | 40.56 | 42.27 | 42.22 | 42.49 |

4. Tail-drop RLT self-competition at 5% loss
------------------------------------------------

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 53.14 | 49.84-59.11 | 98.02 | 49.07 | 43.90-50.46 | 98.02 |
| Home_WiFi | 52.95 | 50.76-57.54 | 97.42 | 49.03 | 43.61-59.86 | 97.59 |
| Public | 44.90 | 34.19-59.35 | 98.03 | 50.09 | 47.76-62.03 | 98.02 |
| Corporate_WiFi | 49.97 | 47.06-54.85 | 97.70 | 51.29 | 49.49-56.08 | 97.72 |
| LTE | 43.40 | 31.92-59.63 | 98.03 | 41.30 | 36.44-55.89 | 98.03 |
| 5G | 56.61 | 44.90-67.57 | 97.68 | 43.78 | 36.06-52.30 | 97.72 |
| LEO | 51.69 | 30.87-55.47 | 98.03 | 46.10 | 34.20-57.22 | 98.03 |
| GEO | 45.38 | 37.43-46.65 | 97.94 | 55.75 | 46.28-71.78 | 97.99 |
| DoCoMo@Office | 38.51 | 36.47-49.43 | 97.72 | 47.77 | 27.43-56.06 | 97.72 |
| au@Office | 56.77 | 38.56-69.63 | 97.73 | 38.94 | 25.36-47.00 | 97.73 |
| WiFi@Office | 51.30 | 47.62-59.40 | 97.72 | 50.51 | 41.83-52.78 | 97.72 |
| DoCoMo@mall | 59.33 | 36.97-68.11 | 98.03 | 43.26 | 39.79-55.40 | 98.03 |
| congested | 52.18 | 44.54-61.66 | 97.84 | 47.64 | 36.14-54.73 | 97.83 |
| bdp20 | 48.95 | 48.21-52.48 | 97.61 | 50.62 | 48.60-52.95 | 97.66 |
| bdp40 | 50.22 | 47.77-51.69 | 97.86 | 52.60 | 51.87-54.23 | 97.84 |
| queue10ms | 48.29 | 46.53-51.19 | 96.60 | 43.21 | 38.86-45.40 | 97.31 |
| queue5ms | 50.36 | 49.52-51.15 | 89.35 | 49.17 | 48.78-53.82 | 89.22 |
| queue2.5ms | 48.59 | 44.26-52.07 | 85.50 | 48.96 | 46.75-49.76 | 85.97 |

5. CoDel standalone goodput
---------------------------

GEO is excluded here and evaluated below with an RTT-adjusted CoDel interval.

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 86.32/96.78 | 68.77/95.23 | 88.58/97.23 | 72.69/95.76 |
| Home_WiFi | 51.72/93.98 | 35.40/87.55 | 49.69/95.59 | 36.66/91.81 |
| Public | 93.68/97.33 | 87.52/95.75 | 94.02/97.34 | 87.78/96.57 |
| Corporate_WiFi | 51.86/97.00 | 34.09/96.22 | 49.84/97.39 | 34.42/96.83 |
| LTE | 81.33/95.75 | 59.25/90.32 | 78.88/94.37 | 63.34/93.15 |
| 5G | 57.68/95.86 | 39.32/92.83 | 54.43/96.61 | 37.64/95.22 |
| LEO | 75.13/96.07 | 52.95/92.89 | 76.04/96.68 | 57.23/95.13 |
| DoCoMo@Office | 87.40/97.47 | 67.99/97.04 | 81.28/97.63 | 70.32/97.20 |
| au@Office | 74.71/97.57 | 56.05/97.31 | 76.47/97.61 | 55.42/97.36 |
| WiFi@Office | 72.93/97.70 | 51.26/97.59 | 72.28/97.71 | 52.00/97.65 |
| DoCoMo@mall | 91.42/97.62 | 82.04/97.31 | 93.01/97.81 | 84.59/97.55 |
| congested | 95.16/96.08 | 93.47/95.08 | 94.98/95.56 | 93.37/95.92 |
| bdp20 | 97.17/96.89 | 94.82/94.69 | 95.92/96.76 | 93.51/95.22 |
| bdp40 | 95.01/95.63 | 88.58/91.80 | 92.91/95.69 | 90.63/91.76 |
| queue10ms | 72.71/77.08 | 54.84/60.99 | 73.10/78.81 | 54.61/63.65 |
| queue5ms | 66.00/67.72 | 48.70/53.70 | 67.09/65.94 | 50.37/54.42 |
| queue2.5ms | 63.99/57.67 | 49.07/48.85 | 66.29/56.53 | 47.70/45.99 |

6. CoDel competition
--------------------

GEO is excluded from the first three tables.

Clean competition:

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 50.58 | 51.43 | 53.38 | 52.30 | 54.44 | 53.13 |
| Home_WiFi | 50.49 | 53.00 | 50.22 | 49.81 | 54.43 | 53.13 |
| Public | 49.58 | 53.88 | 53.08 | 48.93 | 52.53 | 52.33 |
| Corporate_WiFi | 49.21 | 53.17 | 53.66 | 48.95 | 52.74 | 52.94 |
| LTE | 49.72 | 64.72 | 53.29 | 48.69 | 66.58 | 59.50 |
| 5G | 50.26 | 59.12 | 55.17 | 47.18 | 64.20 | 56.79 |
| LEO | 50.65 | 55.12 | 52.24 | 50.40 | 54.62 | 52.44 |
| DoCoMo@Office | 49.36 | 64.96 | 61.14 | 53.18 | 64.30 | 58.38 |
| au@Office | 50.47 | 61.47 | 62.28 | 48.60 | 62.52 | 60.40 |
| WiFi@Office | 49.80 | 47.98 | 48.83 | 49.47 | 49.56 | 50.23 |
| DoCoMo@mall | 51.02 | 54.37 | 53.95 | 50.52 | 56.00 | 55.21 |
| congested | 51.12 | 50.60 | 50.74 | 48.81 | 50.38 | 50.05 |
| bdp20 | 49.61 | 49.48 | 50.03 | 49.77 | 50.87 | 49.96 |
| bdp40 | 50.31 | 50.86 | 49.50 | 49.50 | 50.68 | 53.01 |
| queue10ms | 51.13 | 48.85 | 50.56 | 49.16 | 50.90 | 51.90 |
| queue5ms | 49.53 | 47.56 | 51.33 | 49.35 | 49.48 | 52.42 |
| queue2.5ms | 49.47 | 49.32 | 52.00 | 49.83 | 51.12 | 50.13 |

Clean stock against 5%-loss RLT:

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 45.85 | 48.89 | 48.09 | 49.34 |
| Home_WiFi | 47.84 | 45.79 | 51.57 | 47.52 |
| Public | 51.24 | 49.24 | 53.05 | 52.26 |
| Corporate_WiFi | 40.30 | 42.63 | 41.28 | 40.97 |
| LTE | 58.89 | 54.02 | 64.96 | 57.88 |
| 5G | 54.13 | 50.41 | 61.55 | 53.49 |
| LEO | 51.56 | 49.40 | 55.61 | 54.88 |
| DoCoMo@Office | 54.97 | 54.47 | 64.96 | 55.29 |
| au@Office | 52.34 | 49.55 | 59.00 | 57.87 |
| WiFi@Office | 29.43 | 30.17 | 30.80 | 30.31 |
| DoCoMo@mall | 52.49 | 53.55 | 54.11 | 53.83 |
| congested | 49.01 | 49.10 | 49.66 | 50.88 |
| bdp20 | 48.21 | 49.24 | 47.67 | 47.96 |
| bdp40 | 48.92 | 48.90 | 49.21 | 51.65 |
| queue10ms | 41.71 | 41.90 | 42.64 | 40.75 |
| queue5ms | 39.83 | 41.66 | 40.45 | 41.12 |
| queue2.5ms | 43.42 | 40.84 | 41.65 | 42.16 |

RLT self-competition at 5% loss:

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 49.86 | 47.28-55.07 | 97.91 | 46.57 | 39.67-55.12 | 97.94 |
| Home_WiFi | 51.15 | 47.74-63.18 | 97.13 | 48.36 | 38.25-51.73 | 97.38 |
| Public | 51.38 | 46.72-55.72 | 97.97 | 52.60 | 46.29-53.69 | 97.94 |
| Corporate_WiFi | 51.09 | 46.91-52.26 | 97.69 | 49.59 | 37.15-52.70 | 97.72 |
| LTE | 61.41 | 45.84-70.22 | 97.56 | 52.95 | 35.18-64.88 | 97.60 |
| 5G | 54.81 | 49.49-56.60 | 97.45 | 52.26 | 48.72-61.86 | 97.46 |
| LEO | 48.75 | 44.63-58.78 | 97.76 | 53.25 | 40.82-64.35 | 97.69 |
| DoCoMo@Office | 46.57 | 35.37-65.89 | 97.69 | 47.92 | 33.26-58.92 | 97.67 |
| au@Office | 47.86 | 44.77-58.27 | 97.71 | 50.06 | 31.03-53.18 | 97.71 |
| WiFi@Office | 48.64 | 40.18-56.49 | 97.72 | 52.20 | 50.24-62.53 | 97.72 |
| DoCoMo@mall | 49.71 | 44.13-57.50 | 97.98 | 53.62 | 44.79-55.76 | 97.94 |
| congested | 49.27 | 47.14-55.45 | 96.76 | 48.29 | 45.63-52.51 | 96.26 |
| bdp20 | 50.23 | 49.52-51.04 | 97.36 | 47.66 | 46.92-50.26 | 97.24 |
| bdp40 | 49.73 | 49.23-50.91 | 97.01 | 51.89 | 49.10-52.28 | 96.81 |
| queue10ms | 47.61 | 46.38-51.88 | 97.18 | 43.81 | 42.16-48.39 | 97.52 |
| queue5ms | 48.00 | 47.11-51.25 | 89.57 | 49.74 | 49.54-56.08 | 89.05 |
| queue2.5ms | 48.77 | 45.44-50.97 | 84.70 | 52.57 | 44.17-53.34 | 85.38 |

RTT-adjusted GEO CoDel standalone goodput:

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---|---|---|
| CUBIC | 85.84 | 79.53 | 87.74 |
| Cuback | 85.28 | 74.91 | 86.09 |

RTT-adjusted GEO CoDel competition:

| Controller | Case | Flow 1 | Flow 2 | Util | Flow 2 share | Share range |
|---|---|---|---|---|---|---|
| CUBIC | stock_stock | 44.91 | 45.40 | 90.29 | 50.27 | 33.94-59.30 |
| CUBIC | stock_rlt | 20.70 | 69.33 | 90.03 | 77.00 | 70.70-80.15 |
| CUBIC | rlt_stock | 68.61 | 21.44 | 89.98 | 23.81 | 19.40-34.82 |
| CUBIC | clean_lossy | 27.98 | 61.34 | 89.49 | 68.68 | 51.78-76.47 |
| CUBIC | lossy_clean | 64.96 | 24.37 | 89.39 | 27.28 | 22.01-29.21 |
| CUBIC | self | 45.77 | 44.42 | 90.19 | 49.25 | 46.28-79.06 |
| Cuback | stock_stock | 48.59 | 41.53 | 89.98 | 46.08 | 39.67-55.87 |
| Cuback | stock_rlt | 20.94 | 69.53 | 90.11 | 76.86 | 73.62-79.11 |
| Cuback | rlt_stock | 69.48 | 20.87 | 90.30 | 23.10 | 19.95-26.98 |
| Cuback | clean_lossy | 23.45 | 66.08 | 88.98 | 73.64 | 69.95-77.44 |
| Cuback | lossy_clean | 65.63 | 23.48 | 89.07 | 26.09 | 22.62-44.56 |
| Cuback | self | 45.35 | 44.92 | 90.27 | 49.76 | 34.54-76.36 |
Fix over-aggressive accelerated increase, remove the gate derived from the
pre-loss CWND, and adopt a tighter RTT-based threshold.

The previous increase rate used half of the relative distance to full_rtt as
its RTT constraint. full_rtt is the RTT observed with a full queue, so this
ratio becomes very large after the queue drains and does not bound the initial
increase. In practice, the pre-loss-CWND target and its derived cap became the
effective guard. That historical window is not a sound limit after bottleneck
bandwidth changes and can prevent ABBA from adapting beyond the old operating
point.

Remove the CWND target and cap. Permit accelerated increase only while all of
the following RTT conditions hold:

- full_rtt is more than 10ms above min_rtt;
- latest RTT is at least 5% below full_rtt;
- latest RTT is below an adaptive threshold. Start with the midpoint between
  min_rtt and the preceding congestion-avoidance period's minimum, keep the
  threshold at least min_rtt+2ms, and cap it at the current period's minimum
  plus 2ms once that observation exists.

The midpoint makes sure RTT is being driven down relative to the preceding
period. The current-period cap stops pushing once there is evidence that the
queue is non-empty. Until the current-period minimum exists, min_rtt+2ms is the
proxy.

Increase by max(2ms / RTT-threshold, 2.5%) per acknowledged flight. RTT
feedback arrives one round late; below 100ms this permits no more than about
2.5ms of additional queue after crossing the threshold. When the threshold is
2ms above the potentially empty-queue RTT, acceleration therefore stops after
building at most about 4.5ms of queue.

Derive the recalibration interval's pre-reduction window from the reduced
epoch CWND and the ordinary loss beta now that the explicit target no longer
exists. Update the tests to verify that CUBIC selects the greater of its
ordinary and accelerated trajectories, that ECN acceleration has a preceding
CA-period observation, and that Cuback uses the shared epoch-based
recalibration interval.

build/default/test.t passes all 31 top-level groups.

Benchmark method
----------------

The per-packet random-loss probability is selected so that a full pipe has a
5% or 10% probability of at least one random loss per RTT. Standalone tests are
seven 100-second runs measuring the latter 50 seconds. Competition tests are
seven 160-second runs per flow order measuring the latter 80 seconds.
Self-competition uses five 320-second runs and reports the final 40-second
window. Loss placement varies between repetitions through the TLS-context
random callback. All values are percentages. S->R means stock is created first
and RLT second; R->S is the reverse.

Compared with the preceding committed implementation, the clearest intended
change is under CoDel on LTE. In clean competition, mean RLT share falls from
59.01% to 53.94% for CUBIC and from 63.04% to 56.38% for Cuback. With 5% loss
on RLT, mean share falls from 56.46% to 51.02% for CUBIC and from 61.42% to
55.45% for Cuback. The corresponding 5G reductions are smaller.

The tighter gate and bounded rate trade some standalone performance for that
reduction in aggressiveness. At 10% loss per RTT, CoDel LTE RLT goodput changes
from 90.32% to 84.26% for CUBIC and from 93.15% to 87.12% for Cuback; CoDel 5G
changes from 92.83% to 90.02% and from 95.22% to 93.03%, respectively. RLT
still substantially outperforms stock on these lossy standalone paths.

Clean tail-drop competition remains centered near parity, and a 5%-loss RLT
flow remains below its clean stock competitor in every tail-drop profile and
both flow orders. Self-competition retains high aggregate utilization but does
not resolve the existing wide share distributions. CoDel DoCoMo@Office and
au@Office remain aggressive, and RTT-adjusted GEO remains strongly
order-sensitive; those are limitations of the current approach.

Complete results
----------------
## Tail-drop standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 91.00/97.19 | 78.40/94.44 | 93.73/97.74 | 73.21/96.21 |
| Home_WiFi | 57.81/93.97 | 33.34/88.42 | 50.42/95.87 | 35.98/91.38 |
| Public | 97.90/98.01 | 96.64/97.27 | 98.03/98.01 | 91.62/97.86 |
| Corporate_WiFi | 48.41/97.47 | 34.77/97.07 | 51.87/97.61 | 35.68/97.30 |
| LTE | 83.82/96.46 | 64.02/90.71 | 84.55/96.22 | 60.93/91.63 |
| 5G | 62.62/95.36 | 40.45/89.70 | 69.84/96.47 | 38.97/94.18 |
| LEO | 80.59/95.48 | 49.58/91.11 | 85.75/97.32 | 54.98/95.24 |
| GEO | 98.01/97.99 | 82.36/95.35 | 98.00/97.99 | 90.72/93.48 |
| DoCoMo@Office | 91.88/97.78 | 69.00/97.26 | 93.51/97.80 | 68.40/97.57 |
| au@Office | 82.64/97.70 | 56.00/97.44 | 92.57/97.67 | 58.31/97.55 |
| WiFi@Office | 72.56/97.72 | 51.62/97.09 | 72.65/97.72 | 51.60/97.71 |
| DoCoMo@mall | 98.03/98.02 | 90.74/97.88 | 98.03/98.02 | 91.59/98.00 |
| congested | 97.89/97.91 | 97.65/97.87 | 97.93/97.95 | 97.83/97.85 |
| bdp20 | 97.44/97.30 | 96.08/95.91 | 97.38/97.16 | 96.16/96.80 |
| bdp40 | 97.68/97.71 | 95.30/95.07 | 97.30/97.41 | 94.51/95.79 |
| queue10ms | 76.51/76.49 | 54.06/66.14 | 74.25/75.80 | 56.99/64.37 |
| queue5ms | 68.74/65.76 | 49.00/53.83 | 66.40/64.26 | 50.37/51.66 |
| queue2.5ms | 63.67/56.92 | 50.20/47.63 | 66.59/58.86 | 46.36/45.96 |

## Clean tail-drop competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 51.52 | 45.08 | 51.16 | 50.28 | 49.27 | 50.54 |
| Home_WiFi | 51.04 | 50.25 | 52.49 | 48.98 | 51.61 | 52.55 |
| Public | 49.91 | 49.67 | 50.17 | 48.35 | 50.18 | 50.61 |
| Corporate_WiFi | 50.87 | 52.40 | 45.42 | 47.40 | 51.82 | 42.58 |
| LTE | 49.53 | 50.54 | 49.77 | 50.89 | 51.77 | 50.05 |
| 5G | 50.36 | 51.53 | 51.53 | 47.27 | 49.91 | 52.04 |
| LEO | 52.44 | 48.82 | 50.02 | 49.36 | 50.56 | 51.56 |
| GEO | 49.99 | 50.14 | 50.00 | 50.01 | 49.92 | 50.16 |
| DoCoMo@Office | 49.92 | 49.94 | 49.17 | 50.09 | 49.99 | 49.92 |
| au@Office | 51.57 | 51.53 | 52.11 | 52.16 | 49.90 | 50.25 |
| WiFi@Office | 52.78 | 54.58 | 46.78 | 54.38 | 55.81 | 47.89 |
| DoCoMo@mall | 49.79 | 49.82 | 50.17 | 49.84 | 49.84 | 50.16 |
| congested | 50.85 | 49.69 | 48.90 | 50.77 | 48.90 | 49.15 |
| bdp20 | 49.94 | 51.08 | 50.27 | 50.24 | 51.40 | 50.42 |
| bdp40 | 47.69 | 49.26 | 49.84 | 49.52 | 47.89 | 50.76 |
| queue10ms | 50.73 | 50.82 | 51.14 | 49.92 | 49.29 | 49.95 |
| queue5ms | 50.75 | 51.12 | 52.02 | 50.16 | 50.27 | 50.14 |
| queue2.5ms | 49.24 | 51.12 | 49.24 | 51.97 | 49.53 | 50.97 |

## Clean stock against 5%-loss RLT, tail drop: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 35.51 | 34.73 | 32.09 | 37.12 |
| Home_WiFi | 31.36 | 28.64 | 28.75 | 31.29 |
| Public | 35.21 | 30.34 | 26.80 | 30.75 |
| Corporate_WiFi | 17.92 | 17.88 | 16.44 | 17.60 |
| LTE | 31.75 | 25.84 | 24.40 | 28.81 |
| 5G | 19.98 | 21.51 | 20.48 | 20.31 |
| LEO | 21.88 | 24.62 | 23.63 | 23.39 |
| GEO | 34.95 | 37.35 | 34.77 | 36.16 |
| DoCoMo@Office | 24.84 | 25.05 | 17.75 | 20.46 |
| au@Office | 19.18 | 19.74 | 20.06 | 15.54 |
| WiFi@Office | 21.11 | 21.64 | 22.22 | 20.61 |
| DoCoMo@mall | 32.57 | 30.49 | 32.42 | 24.84 |
| congested | 43.07 | 41.81 | 42.79 | 45.61 |
| bdp20 | 48.54 | 48.59 | 49.42 | 49.61 |
| bdp40 | 47.08 | 47.53 | 46.41 | 46.05 |
| queue10ms | 39.68 | 41.14 | 39.28 | 41.89 |
| queue5ms | 41.77 | 41.29 | 43.05 | 40.77 |
| queue2.5ms | 42.72 | 40.90 | 40.99 | 42.12 |

## Tail-drop RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 47.76 | 45.56-51.47 | 98.02 | 50.74 | 41.55-54.97 | 98.01 |
| Home_WiFi | 52.88 | 44.61-61.88 | 97.23 | 51.42 | 44.86-58.73 | 97.59 |
| Public | 47.64 | 37.17-55.29 | 98.03 | 45.83 | 38.45-71.23 | 98.03 |
| Corporate_WiFi | 52.77 | 41.87-54.78 | 97.72 | 51.67 | 36.89-70.83 | 97.72 |
| LTE | 48.91 | 42.97-71.05 | 98.03 | 54.40 | 44.77-70.30 | 98.03 |
| 5G | 48.27 | 35.73-69.16 | 97.72 | 51.50 | 42.24-56.79 | 97.70 |
| LEO | 51.18 | 37.82-60.69 | 98.03 | 51.35 | 45.54-61.97 | 98.02 |
| GEO | 42.64 | 35.24-63.60 | 97.84 | 53.68 | 38.13-68.63 | 97.99 |
| DoCoMo@Office | 55.51 | 36.86-62.60 | 97.72 | 47.12 | 33.26-55.98 | 97.73 |
| au@Office | 29.69 | 27.85-72.15 | 97.73 | 41.04 | 27.10-56.91 | 97.73 |
| WiFi@Office | 51.43 | 46.90-52.83 | 97.72 | 49.44 | 38.16-61.85 | 97.72 |
| DoCoMo@mall | 52.64 | 42.76-65.34 | 98.03 | 46.96 | 39.74-58.74 | 98.03 |
| congested | 50.60 | 46.99-54.82 | 97.91 | 47.11 | 37.92-51.08 | 97.86 |
| bdp20 | 50.18 | 46.44-51.22 | 97.56 | 50.12 | 47.76-50.72 | 97.76 |
| bdp40 | 48.01 | 40.64-48.56 | 97.88 | 50.83 | 45.35-58.90 | 97.93 |
| queue10ms | 48.12 | 46.65-50.46 | 96.44 | 44.56 | 36.95-45.68 | 97.04 |
| queue5ms | 50.97 | 46.23-53.89 | 89.54 | 49.71 | 44.82-53.41 | 89.74 |
| queue2.5ms | 51.48 | 45.74-54.75 | 86.29 | 49.07 | 47.06-51.12 | 85.43 |

## CoDel standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 86.78/96.59 | 71.52/94.14 | 85.82/97.04 | 72.08/95.27 |
| Home_WiFi | 48.84/93.60 | 36.07/88.65 | 51.40/95.18 | 34.45/91.22 |
| Public | 93.62/95.84 | 88.08/92.89 | 92.61/96.74 | 87.68/94.68 |
| Corporate_WiFi | 49.64/97.44 | 35.13/97.13 | 50.54/97.58 | 36.78/97.33 |
| LTE | 76.77/92.41 | 57.45/84.26 | 77.75/93.96 | 60.01/87.12 |
| 5G | 59.45/94.57 | 36.92/90.02 | 56.43/96.00 | 38.77/93.03 |
| LEO | 70.53/93.58 | 49.19/89.50 | 73.62/95.28 | 59.12/93.30 |
| DoCoMo@Office | 79.52/97.44 | 70.11/96.97 | 85.83/97.51 | 69.88/97.11 |
| au@Office | 83.91/97.55 | 61.42/97.25 | 75.49/97.58 | 56.02/97.39 |
| WiFi@Office | 74.13/97.72 | 53.12/97.71 | 71.56/97.72 | 53.17/97.71 |
| DoCoMo@mall | 91.03/97.10 | 86.33/96.49 | 93.43/97.09 | 86.76/96.37 |
| congested | 96.81/95.46 | 92.45/93.05 | 95.52/96.52 | 93.43/92.73 |
| bdp20 | 96.85/96.28 | 94.68/94.13 | 95.76/96.12 | 93.73/93.97 |
| bdp40 | 93.76/95.50 | 89.04/90.75 | 95.01/93.64 | 88.00/90.30 |
| queue10ms | 75.15/77.03 | 52.14/62.91 | 71.32/75.07 | 52.89/64.67 |
| queue5ms | 68.58/63.79 | 51.06/51.29 | 67.12/66.49 | 50.50/51.39 |
| queue2.5ms | 64.64/57.88 | 49.70/44.82 | 64.41/61.75 | 50.21/46.97 |

## Clean CoDel competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 48.95 | 54.65 | 50.69 | 50.81 | 54.08 | 54.73 |
| Home_WiFi | 50.27 | 53.61 | 53.44 | 49.56 | 52.23 | 52.57 |
| Public | 49.92 | 51.52 | 53.60 | 51.08 | 50.88 | 51.51 |
| Corporate_WiFi | 49.34 | 52.09 | 54.49 | 49.21 | 52.09 | 52.73 |
| LTE | 50.30 | 54.18 | 53.70 | 50.07 | 59.49 | 53.27 |
| 5G | 49.24 | 56.58 | 56.41 | 50.07 | 57.64 | 57.73 |
| LEO | 50.83 | 54.92 | 52.36 | 48.02 | 55.04 | 54.10 |
| DoCoMo@Office | 54.42 | 64.23 | 64.37 | 62.54 | 61.79 | 62.47 |
| au@Office | 44.30 | 63.81 | 58.80 | 39.76 | 60.86 | 63.08 |
| WiFi@Office | 48.94 | 48.65 | 50.97 | 49.53 | 49.06 | 51.01 |
| DoCoMo@mall | 49.18 | 55.42 | 55.47 | 50.11 | 53.89 | 55.21 |
| congested | 50.87 | 49.73 | 50.17 | 50.58 | 50.34 | 50.38 |
| bdp20 | 50.24 | 50.26 | 49.94 | 48.98 | 50.50 | 49.49 |
| bdp40 | 49.32 | 50.33 | 50.26 | 49.41 | 48.97 | 49.82 |
| queue10ms | 51.04 | 50.62 | 48.04 | 50.84 | 49.94 | 50.37 |
| queue5ms | 49.58 | 50.06 | 50.74 | 49.85 | 49.11 | 50.14 |
| queue2.5ms | 49.88 | 50.11 | 49.82 | 50.93 | 50.92 | 49.39 |

## Clean stock against 5%-loss RLT, CoDel: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 45.98 | 45.90 | 53.56 | 46.89 |
| Home_WiFi | 45.96 | 44.81 | 46.17 | 40.60 |
| Public | 50.09 | 49.57 | 48.99 | 48.89 |
| Corporate_WiFi | 33.67 | 39.63 | 42.15 | 44.33 |
| LTE | 51.83 | 50.21 | 57.83 | 53.06 |
| 5G | 52.19 | 51.48 | 55.25 | 53.41 |
| LEO | 51.89 | 51.39 | 51.05 | 46.13 |
| DoCoMo@Office | 56.32 | 53.28 | 64.50 | 57.46 |
| au@Office | 54.31 | 54.94 | 56.30 | 59.07 |
| WiFi@Office | 30.51 | 29.64 | 31.11 | 30.34 |
| DoCoMo@mall | 52.08 | 51.98 | 53.67 | 54.35 |
| congested | 48.48 | 49.01 | 48.28 | 50.05 |
| bdp20 | 47.70 | 48.61 | 48.31 | 48.68 |
| bdp40 | 49.39 | 48.13 | 47.61 | 48.09 |
| queue10ms | 40.65 | 40.96 | 41.36 | 40.96 |
| queue5ms | 41.84 | 40.75 | 41.67 | 41.30 |
| queue2.5ms | 40.61 | 41.93 | 41.84 | 41.47 |

## CoDel RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 47.89 | 46.93-55.72 | 97.73 | 47.87 | 42.73-54.61 | 97.83 |
| Home_WiFi | 57.49 | 50.38-66.18 | 97.27 | 49.92 | 32.05-58.88 | 97.36 |
| Public | 51.16 | 45.49-52.94 | 97.95 | 49.57 | 47.30-52.71 | 97.88 |
| Corporate_WiFi | 50.63 | 48.61-63.34 | 97.71 | 45.84 | 31.05-50.91 | 97.71 |
| LTE | 54.15 | 49.40-64.23 | 97.27 | 58.83 | 43.65-67.27 | 97.32 |
| 5G | 47.89 | 42.44-55.80 | 97.32 | 50.68 | 37.97-64.65 | 97.27 |
| LEO | 49.44 | 47.04-51.52 | 97.47 | 51.26 | 44.53-55.36 | 97.67 |
| DoCoMo@Office | 49.31 | 39.09-53.26 | 97.64 | 50.84 | 45.24-62.39 | 97.67 |
| au@Office | 43.84 | 35.94-56.46 | 97.72 | 64.13 | 51.22-70.17 | 97.71 |
| WiFi@Office | 56.02 | 46.54-62.36 | 97.72 | 47.88 | 42.16-62.63 | 97.72 |
| DoCoMo@mall | 50.10 | 44.31-57.39 | 97.94 | 51.85 | 45.05-55.37 | 97.89 |
| congested | 49.61 | 47.88-49.91 | 96.61 | 51.03 | 46.57-51.93 | 96.13 |
| bdp20 | 50.34 | 48.71-51.86 | 97.29 | 49.66 | 48.57-50.16 | 97.06 |
| bdp40 | 49.13 | 47.00-50.27 | 97.02 | 48.81 | 46.78-50.67 | 96.77 |
| queue10ms | 49.01 | 46.82-52.44 | 96.82 | 45.05 | 41.92-46.76 | 97.52 |
| queue5ms | 49.20 | 47.53-52.90 | 87.72 | 51.15 | 50.66-53.67 | 89.53 |
| queue2.5ms | 50.32 | 48.00-51.46 | 85.10 | 49.46 | 48.01-53.97 | 85.56 |

## RTT-adjusted GEO CoDel standalone goodput (%)

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---|---|---|
| CUBIC | 85.85 | 78.96 | 84.65 |
| Cuback | 85.28 | 73.06 | 83.21 |

## RTT-adjusted GEO CoDel competition (%)

| Controller | Case | Flow 1 | Flow 2 | Util | Flow 2 share | Share range |
|---|---|---|---|---|---|---|
| CUBIC | stock_stock | 44.24 | 46.22 | 90.46 | 51.09 | 40.25-60.44 |
| CUBIC | stock_rlt | 22.43 | 67.45 | 90.03 | 75.05 | 47.33-76.99 |
| CUBIC | rlt_stock | 65.64 | 24.82 | 90.31 | 27.44 | 25.18-33.78 |
| CUBIC | clean_lossy | 26.43 | 61.94 | 88.73 | 70.09 | 32.24-72.79 |
| CUBIC | lossy_clean | 62.05 | 26.18 | 88.74 | 29.72 | 28.41-40.34 |
| CUBIC | self | 45.72 | 43.90 | 89.02 | 48.99 | 48.36-56.57 |
| Cuback | stock_stock | 44.67 | 45.33 | 89.85 | 50.37 | 33.48-62.59 |
| Cuback | stock_rlt | 26.25 | 63.59 | 89.45 | 70.82 | 64.88-76.15 |
| Cuback | rlt_stock | 65.72 | 23.95 | 89.26 | 26.71 | 23.34-39.86 |
| Cuback | clean_lossy | 29.40 | 58.55 | 88.25 | 66.58 | 55.17-71.00 |
| Cuback | lossy_clean | 59.49 | 29.62 | 88.36 | 33.37 | 26.75-55.05 |
| Cuback | self | 43.35 | 45.38 | 88.60 | 51.22 | 26.56-72.42 |
Treat ECN-CE as direct evidence that the bottleneck queue remains high.

Recalibration previously refreshed its reference time only when smoothed RTT
reached halfway between minimum RTT and full_rtt. On an AQM path, CE can keep
reporting congestion while RTT remains below that threshold. The timer could
therefore expire and restart calibration slow start even though the path was
still explicitly reporting queue pressure.

Rename last_high_rtt_at to last_high_queue_at to reflect the broader signal,
and refresh it on every CE report. Do so before the recovery-window early
return so that CE received during an existing recovery also postpones
recalibration. Extend the ECN test to cover both the initial CE and a second
CE inside recovery.

build/default/test.t passes all 31 top-level groups.

Benchmark method
----------------

Only the CoDel experiments were rerun because this change affects ECN
handling. The per-packet random-loss probability is selected so that a full
pipe has a 5% or 10% probability of at least one random loss per RTT.
Standalone tests are seven 100-second runs measuring the latter 50 seconds.
Competition tests are seven 160-second runs per flow order measuring the
latter 80 seconds. Self-competition uses five 320-second runs and reports the
final 40-second window. Loss placement varies between repetitions through the
TLS-context random callback. All values are percentages. S->R means stock is
created first and RLT second; R->S is the reverse.

Compared with the preceding implementation, standalone RLT median goodput is
effectively unchanged: averaged across profiles and the two loss rates it
moves by +0.33 percentage points for CUBIC and -0.11 for Cuback.

The competitive behavior changes materially. In clean CoDel competition,
average RLT share falls by 3.78 points for CUBIC and 3.35 for Cuback. Against
a clean stock flow, the 5%-loss RLT flow's average share falls by 3.85 points
for CUBIC and 4.30 for Cuback. LTE and 5G show the intended movement toward
parity:

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| LTE | 54.18->50.27 | 53.70->50.31 | 59.49->52.97 | 53.27->50.44 |
| 5G | 56.58->49.22 | 56.41->50.50 | 57.64->51.22 | 57.73->48.27 |

Ordinary clean competition is now centered near parity across the CoDel
profiles. DoCoMo@Office retains an order-dependent distribution that is also
visible in stock/stock runs. Self-competition keeps high aggregate
utilization, while the RTT-adjusted GEO case retains its existing order
sensitivity.

Complete ECN results
--------------------
## CoDel standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 88.06/96.27 | 73.59/93.71 | 86.53/96.83 | 72.74/94.74 |
| Home_WiFi | 51.32/93.82 | 36.55/87.51 | 50.88/94.88 | 35.12/91.50 |
| Public | 94.36/96.68 | 89.65/93.03 | 93.14/96.79 | 88.15/95.04 |
| Corporate_WiFi | 50.51/97.50 | 35.81/97.18 | 49.93/97.56 | 35.67/97.36 |
| LTE | 79.92/90.57 | 60.58/84.05 | 73.12/92.63 | 57.20/87.32 |
| 5G | 57.12/94.02 | 41.55/89.96 | 57.98/95.37 | 39.66/92.10 |
| LEO | 75.75/94.45 | 63.02/91.00 | 76.84/95.60 | 57.21/92.10 |
| DoCoMo@Office | 87.38/97.38 | 69.51/96.84 | 85.15/97.38 | 64.50/97.00 |
| au@Office | 79.62/97.47 | 61.65/97.31 | 74.36/97.60 | 58.45/97.40 |
| WiFi@Office | 73.16/97.72 | 52.40/97.70 | 71.83/97.72 | 51.76/97.71 |
| DoCoMo@mall | 91.98/97.35 | 86.41/96.42 | 93.03/97.15 | 83.08/96.47 |
| congested | 96.40/95.36 | 93.79/94.84 | 94.66/94.92 | 92.85/92.49 |
| bdp20 | 96.46/96.20 | 94.70/94.25 | 95.30/95.66 | 93.73/93.71 |
| bdp40 | 93.36/94.20 | 90.26/89.92 | 92.71/94.31 | 89.82/90.23 |
| queue10ms | 73.61/79.76 | 53.06/65.41 | 76.42/77.06 | 52.03/63.67 |
| queue5ms | 66.12/66.80 | 50.54/52.65 | 69.13/66.73 | 50.99/53.88 |
| queue2.5ms | 63.30/58.18 | 48.79/47.37 | 62.13/61.18 | 47.94/45.99 |

## Clean CoDel competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 50.97 | 48.90 | 49.69 | 49.70 | 50.33 | 49.05 |
| Home_WiFi | 49.53 | 51.11 | 50.02 | 50.37 | 49.76 | 50.67 |
| Public | 49.34 | 49.58 | 49.06 | 50.18 | 50.10 | 50.66 |
| Corporate_WiFi | 49.40 | 50.48 | 50.32 | 49.70 | 50.01 | 50.48 |
| LTE | 49.22 | 50.27 | 50.31 | 49.95 | 52.97 | 50.44 |
| 5G | 50.25 | 49.22 | 50.50 | 48.56 | 51.22 | 48.27 |
| LEO | 50.22 | 48.61 | 50.26 | 50.55 | 50.21 | 50.64 |
| DoCoMo@Office | 53.58 | 51.50 | 41.09 | 52.90 | 56.46 | 42.04 |
| au@Office | 44.96 | 49.01 | 48.85 | 47.71 | 48.88 | 47.99 |
| WiFi@Office | 50.13 | 49.18 | 51.06 | 50.05 | 49.08 | 49.99 |
| DoCoMo@mall | 49.52 | 50.03 | 49.75 | 50.65 | 50.07 | 50.62 |
| congested | 50.16 | 50.05 | 49.80 | 50.13 | 49.69 | 50.48 |
| bdp20 | 50.44 | 50.61 | 49.15 | 49.85 | 49.73 | 49.18 |
| bdp40 | 49.31 | 49.47 | 49.19 | 49.95 | 50.13 | 50.27 |
| queue10ms | 50.79 | 49.85 | 50.61 | 51.07 | 50.50 | 51.30 |
| queue5ms | 50.64 | 49.30 | 49.79 | 50.29 | 50.52 | 50.93 |
| queue2.5ms | 50.48 | 48.81 | 50.30 | 48.48 | 48.43 | 49.90 |

## Clean stock against 5%-loss RLT, CoDel: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 44.28 | 44.49 | 46.34 | 45.22 |
| Home_WiFi | 41.32 | 38.38 | 42.04 | 41.93 |
| Public | 48.30 | 48.46 | 48.68 | 47.92 |
| Corporate_WiFi | 32.77 | 34.04 | 33.96 | 36.61 |
| LTE | 47.38 | 45.64 | 50.26 | 47.09 |
| 5G | 42.23 | 44.60 | 46.95 | 45.34 |
| LEO | 43.39 | 45.21 | 46.99 | 46.24 |
| DoCoMo@Office | 40.82 | 38.16 | 50.16 | 36.48 |
| au@Office | 36.94 | 38.14 | 36.66 | 41.84 |
| WiFi@Office | 30.26 | 31.07 | 29.54 | 30.57 |
| DoCoMo@mall | 48.91 | 48.78 | 49.01 | 49.70 |
| congested | 49.15 | 50.07 | 48.63 | 49.13 |
| bdp20 | 48.71 | 49.05 | 48.16 | 48.28 |
| bdp40 | 48.44 | 47.88 | 48.31 | 48.53 |
| queue10ms | 41.72 | 41.97 | 40.75 | 43.14 |
| queue5ms | 41.52 | 41.13 | 40.95 | 41.03 |
| queue2.5ms | 40.45 | 41.11 | 41.00 | 41.21 |

## CoDel RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 49.38 | 45.95-52.38 | 97.86 | 51.17 | 48.31-53.65 | 97.93 |
| Home_WiFi | 51.50 | 49.27-54.23 | 97.39 | 53.65 | 45.14-62.47 | 97.47 |
| Public | 49.59 | 46.02-51.49 | 97.93 | 51.98 | 50.55-53.84 | 97.87 |
| Corporate_WiFi | 48.55 | 46.56-49.33 | 97.71 | 52.17 | 45.99-52.77 | 97.72 |
| LTE | 51.09 | 43.40-56.30 | 97.35 | 49.25 | 46.53-51.80 | 97.44 |
| 5G | 51.97 | 42.85-54.55 | 97.32 | 51.52 | 50.16-53.78 | 97.30 |
| LEO | 50.00 | 43.29-58.21 | 97.66 | 53.06 | 50.07-55.07 | 97.76 |
| DoCoMo@Office | 60.95 | 42.27-65.12 | 97.65 | 52.18 | 40.44-61.45 | 97.64 |
| au@Office | 47.60 | 44.90-65.40 | 97.72 | 58.90 | 42.48-62.76 | 97.71 |
| WiFi@Office | 50.62 | 48.92-52.71 | 97.72 | 49.70 | 37.52-51.68 | 97.72 |
| DoCoMo@mall | 49.75 | 46.70-56.15 | 97.95 | 51.08 | 47.35-53.86 | 97.92 |
| congested | 49.55 | 48.40-53.23 | 96.56 | 54.00 | 50.20-54.94 | 95.96 |
| bdp20 | 50.94 | 48.00-55.33 | 97.16 | 50.75 | 49.87-53.64 | 97.16 |
| bdp40 | 49.98 | 44.43-52.37 | 97.00 | 49.47 | 46.79-53.99 | 96.72 |
| queue10ms | 50.04 | 46.24-51.06 | 97.18 | 46.37 | 44.91-53.76 | 97.51 |
| queue5ms | 49.71 | 46.80-50.60 | 89.59 | 48.47 | 46.02-52.92 | 89.00 |
| queue2.5ms | 49.65 | 47.39-51.97 | 85.12 | 49.36 | 45.87-50.45 | 85.12 |

## RTT-adjusted GEO CoDel standalone goodput (%)

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---|---|---|
| CUBIC | 85.84 | 76.53 | 82.93 |
| Cuback | 85.28 | 76.00 | 81.60 |

## RTT-adjusted GEO CoDel competition (%)

| Controller | Case | Flow 1 | Flow 2 | Util | Flow 2 share | Share range |
|---|---|---|---|---|---|---|
| CUBIC | stock_stock | 39.09 | 50.53 | 90.26 | 56.38 | 37.34-61.99 |
| CUBIC | stock_rlt | 24.32 | 65.40 | 90.06 | 72.96 | 51.92-77.74 |
| CUBIC | rlt_stock | 66.92 | 22.78 | 90.18 | 25.39 | 22.80-31.76 |
| CUBIC | clean_lossy | 26.83 | 61.14 | 88.05 | 69.50 | 52.41-71.64 |
| CUBIC | lossy_clean | 62.23 | 26.84 | 89.01 | 30.13 | 26.24-58.66 |
| CUBIC | self | 44.81 | 44.56 | 89.15 | 49.99 | 42.68-52.43 |
| Cuback | stock_stock | 52.80 | 37.18 | 89.84 | 41.40 | 33.19-43.46 |
| Cuback | stock_rlt | 24.52 | 64.79 | 89.16 | 72.54 | 52.77-75.48 |
| Cuback | rlt_stock | 63.56 | 25.90 | 89.40 | 28.95 | 28.00-37.36 |
| Cuback | clean_lossy | 27.56 | 60.70 | 87.95 | 68.83 | 44.79-69.56 |
| Cuback | lossy_clean | 60.78 | 28.35 | 88.99 | 31.81 | 27.73-65.28 |
| Cuback | self | 47.57 | 41.08 | 88.65 | 46.34 | 41.28-47.42 |
Apply startup BDP estimation whenever the controller is in slow start,
rather than only during the first loss episode. ABBA recalibration reenters
slow start after earlier congestion episodes, so the episode-count predicate
left the BDP estimate at the current CWND. Using ssthresh == UINT32_MAX selects
the ordinary slow-start fallback of CWND / 2 during recalibration. The Jump
Start and Rapid Start branches remain unchanged and apply to initial startup.

When a late ACK undoes a loss response, restore the prior acceleration state
but retain last_high_queue_at. The timestamp records an observation that the
queue was high, not a reaction to the loss being undone; reverting it could
trigger recalibration too early.

Also remove Cuback's no-op CC-limited callback and make the remaining callback
explicitly CUBIC-specific. Extend the recalibration tests to verify that undo
retains the high-queue observation for both CUBIC and Cuback.

build/default/test.t passes all 31 top-level groups.

Benchmark method
----------------

The complete tail-drop and CoDel suite was rerun. The per-packet random-loss
probability is selected so that a full pipe has a 5% or 10% probability of at
least one random loss per RTT. Standalone tests are seven 100-second runs
measuring the latter 50 seconds. Competition tests are seven 160-second runs
per flow order measuring the latter 80 seconds. Self-competition uses five
320-second runs and reports the final 40-second window. Loss placement varies
between repetitions through the TLS-context random callback. All values are
percentages. S->R means stock is created first and RLT second; R->S is the
reverse.

The results remain within the suite's run-to-run variation. Every standalone
RLT median shift has overlapping old and new seven-run ranges. Averaged across
profiles and loss rates, standalone RLT goodput changes by +0.13 points for
tail-drop CUBIC, +0.24 for tail-drop Cuback, -0.06 for CoDel CUBIC, and +0.27
for CoDel Cuback. Average clean-competition RLT share changes by -0.22, +0.07,
+0.58, and +0.32 points respectively. Average 5%-loss RLT share against a
clean stock flow changes by +0.22, +0.62, -0.15, and +0.49 points.

The established characteristics are preserved: RLT substantially improves
standalone lossy-path goodput, stays below a clean stock competitor on every
tail-drop profile and flow order, and retains high aggregate utilization in
self-competition while leaving the existing wide share distributions. The
RTT-adjusted GEO CoDel case also retains its existing order sensitivity.

Complete results
----------------
## Tail-drop standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 94.09/97.24 | 73.02/94.98 | 93.12/97.62 | 73.03/96.42 |
| Home_WiFi | 51.73/93.76 | 36.52/88.36 | 51.89/95.59 | 35.91/91.03 |
| Public | 97.67/98.02 | 95.77/97.42 | 98.02/98.01 | 93.99/97.93 |
| Corporate_WiFi | 46.72/97.46 | 34.27/97.14 | 55.12/97.60 | 34.42/97.34 |
| LTE | 88.95/95.10 | 62.87/90.56 | 89.58/97.26 | 67.59/94.37 |
| 5G | 60.56/95.01 | 39.88/90.72 | 64.70/96.74 | 43.27/93.48 |
| LEO | 80.05/95.82 | 53.37/91.30 | 75.31/97.48 | 56.94/94.67 |
| GEO | 97.58/98.02 | 93.77/96.25 | 96.21/98.05 | 79.59/96.33 |
| DoCoMo@Office | 93.45/97.78 | 73.93/97.22 | 92.82/97.80 | 63.32/97.57 |
| au@Office | 84.73/97.71 | 57.15/97.46 | 82.00/97.70 | 59.15/97.58 |
| WiFi@Office | 72.46/97.72 | 51.62/97.71 | 72.37/97.72 | 50.03/97.70 |
| DoCoMo@mall | 98.03/98.02 | 90.10/97.96 | 98.04/98.02 | 90.22/97.98 |
| congested | 97.93/97.95 | 97.77/97.85 | 97.89/97.93 | 97.83/97.87 |
| bdp20 | 97.56/97.70 | 96.46/96.94 | 97.56/97.44 | 95.92/96.32 |
| bdp40 | 97.40/97.20 | 94.73/96.00 | 97.67/97.71 | 95.03/95.03 |
| queue10ms | 72.53/77.84 | 56.65/60.74 | 70.44/77.66 | 52.81/61.78 |
| queue5ms | 67.24/66.16 | 51.91/52.20 | 66.11/64.45 | 51.69/53.67 |
| queue2.5ms | 63.56/62.92 | 48.01/48.06 | 64.58/59.82 | 48.73/47.42 |

## Clean tail-drop competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 52.48 | 48.19 | 52.27 | 53.06 | 46.90 | 52.28 |
| Home_WiFi | 51.35 | 51.26 | 52.44 | 49.86 | 51.26 | 54.31 |
| Public | 50.48 | 49.48 | 50.82 | 52.37 | 49.30 | 53.30 |
| Corporate_WiFi | 51.34 | 58.14 | 44.12 | 48.51 | 52.54 | 45.06 |
| LTE | 51.91 | 47.38 | 49.53 | 49.17 | 49.87 | 48.29 |
| 5G | 51.62 | 49.37 | 48.91 | 52.95 | 48.80 | 50.56 |
| LEO | 48.98 | 48.04 | 49.17 | 48.82 | 52.88 | 53.16 |
| GEO | 49.98 | 50.01 | 50.01 | 50.03 | 49.87 | 50.02 |
| DoCoMo@Office | 49.88 | 49.04 | 50.06 | 49.87 | 49.84 | 50.04 |
| au@Office | 49.73 | 51.34 | 48.56 | 52.14 | 49.81 | 47.84 |
| WiFi@Office | 53.71 | 53.29 | 45.29 | 55.18 | 55.25 | 45.19 |
| DoCoMo@mall | 49.69 | 49.69 | 50.29 | 49.83 | 49.89 | 50.16 |
| congested | 49.09 | 49.99 | 50.55 | 49.97 | 50.98 | 49.05 |
| bdp20 | 50.27 | 50.26 | 49.85 | 49.67 | 50.08 | 50.62 |
| bdp40 | 51.06 | 49.97 | 49.57 | 49.53 | 49.98 | 51.38 |
| queue10ms | 48.81 | 51.40 | 50.50 | 50.04 | 48.38 | 51.20 |
| queue5ms | 50.62 | 49.61 | 49.56 | 51.72 | 50.51 | 51.39 |
| queue2.5ms | 51.01 | 50.95 | 50.79 | 51.26 | 49.35 | 50.64 |

## Clean stock against 5%-loss RLT, tail drop: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 33.04 | 35.93 | 33.00 | 34.10 |
| Home_WiFi | 29.97 | 30.15 | 29.86 | 30.85 |
| Public | 28.05 | 34.20 | 29.66 | 28.40 |
| Corporate_WiFi | 17.56 | 17.18 | 17.68 | 18.07 |
| LTE | 24.26 | 30.66 | 32.51 | 27.43 |
| 5G | 20.74 | 23.44 | 18.98 | 19.96 |
| LEO | 28.28 | 25.52 | 24.36 | 22.75 |
| GEO | 40.34 | 38.88 | 35.74 | 44.10 |
| DoCoMo@Office | 25.03 | 27.18 | 26.84 | 22.61 |
| au@Office | 18.17 | 21.95 | 17.02 | 19.20 |
| WiFi@Office | 21.60 | 19.78 | 20.84 | 20.99 |
| DoCoMo@mall | 29.07 | 31.49 | 24.55 | 27.68 |
| congested | 42.99 | 44.23 | 45.05 | 44.39 |
| bdp20 | 49.17 | 47.92 | 48.12 | 48.21 |
| bdp40 | 46.23 | 46.66 | 48.90 | 47.01 |
| queue10ms | 40.74 | 40.30 | 41.60 | 41.81 |
| queue5ms | 41.70 | 41.55 | 40.33 | 41.42 |
| queue2.5ms | 39.58 | 42.72 | 41.85 | 41.07 |

## Tail-drop RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 48.44 | 42.66-57.91 | 98.02 | 50.00 | 47.66-56.43 | 98.02 |
| Home_WiFi | 53.23 | 46.94-60.20 | 97.49 | 52.29 | 49.74-56.85 | 97.57 |
| Public | 58.12 | 34.70-63.20 | 98.03 | 50.08 | 41.63-56.62 | 98.03 |
| Corporate_WiFi | 42.44 | 32.74-47.78 | 97.71 | 51.26 | 32.81-55.20 | 97.72 |
| LTE | 48.86 | 39.49-56.05 | 98.03 | 55.01 | 46.99-64.41 | 98.03 |
| 5G | 46.83 | 39.45-50.69 | 97.66 | 49.56 | 37.61-62.71 | 97.72 |
| LEO | 46.98 | 44.42-60.70 | 98.03 | 50.12 | 43.37-54.24 | 98.03 |
| GEO | 53.53 | 44.59-61.71 | 98.01 | 41.24 | 38.04-73.07 | 97.95 |
| DoCoMo@Office | 61.55 | 39.54-67.62 | 97.73 | 48.30 | 37.07-57.05 | 97.72 |
| au@Office | 53.88 | 47.02-63.47 | 97.73 | 44.24 | 33.00-67.08 | 97.72 |
| WiFi@Office | 48.74 | 41.10-58.51 | 97.72 | 51.21 | 45.23-55.11 | 97.72 |
| DoCoMo@mall | 44.69 | 43.16-64.81 | 98.03 | 45.86 | 39.43-55.79 | 98.03 |
| congested | 51.09 | 45.97-56.56 | 97.81 | 45.33 | 33.96-50.10 | 97.86 |
| bdp20 | 49.96 | 46.94-51.38 | 97.61 | 50.50 | 46.31-53.63 | 97.71 |
| bdp40 | 46.67 | 43.16-55.74 | 97.86 | 51.80 | 47.59-52.78 | 97.85 |
| queue10ms | 49.32 | 47.45-51.07 | 96.75 | 41.70 | 39.03-46.74 | 96.94 |
| queue5ms | 49.89 | 47.43-50.80 | 89.47 | 52.45 | 50.06-54.63 | 88.82 |
| queue2.5ms | 48.86 | 46.48-51.01 | 85.56 | 47.95 | 46.18-52.38 | 84.62 |

## CoDel standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 86.67/96.05 | 73.48/94.52 | 88.21/96.56 | 74.27/95.11 |
| Home_WiFi | 55.95/93.90 | 35.61/87.01 | 54.33/95.09 | 35.54/90.31 |
| Public | 92.51/96.06 | 89.52/93.81 | 93.64/96.26 | 88.10/95.03 |
| Corporate_WiFi | 51.82/97.48 | 35.67/97.11 | 48.74/97.59 | 35.33/97.33 |
| LTE | 77.17/92.39 | 54.07/82.39 | 79.16/93.75 | 62.15/88.79 |
| 5G | 59.80/94.83 | 39.70/89.14 | 56.83/95.40 | 41.51/91.68 |
| LEO | 78.93/93.86 | 56.04/89.31 | 72.20/95.33 | 54.03/92.52 |
| DoCoMo@Office | 88.54/97.40 | 65.08/96.81 | 84.69/97.38 | 68.82/97.21 |
| au@Office | 81.15/97.57 | 56.26/97.18 | 77.55/97.56 | 53.06/97.39 |
| WiFi@Office | 75.06/97.72 | 52.26/97.71 | 72.83/97.72 | 50.89/97.71 |
| DoCoMo@mall | 93.02/97.23 | 85.59/96.17 | 92.10/97.05 | 86.38/96.30 |
| congested | 95.34/95.70 | 92.43/92.73 | 94.72/95.14 | 91.70/92.23 |
| bdp20 | 96.42/96.34 | 93.75/93.73 | 96.22/96.38 | 94.64/93.85 |
| bdp40 | 93.67/94.42 | 89.41/90.71 | 94.66/93.94 | 91.43/89.29 |
| queue10ms | 73.85/79.16 | 55.68/63.23 | 75.10/78.23 | 55.97/65.52 |
| queue5ms | 69.75/68.00 | 52.10/56.08 | 66.62/67.17 | 50.63/54.28 |
| queue2.5ms | 63.77/55.39 | 48.35/49.51 | 64.72/64.72 | 47.90/47.31 |

## Clean CoDel competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 50.51 | 48.43 | 50.01 | 50.65 | 51.25 | 50.45 |
| Home_WiFi | 50.73 | 50.39 | 50.86 | 50.11 | 50.97 | 50.47 |
| Public | 50.67 | 50.40 | 50.24 | 50.20 | 50.08 | 50.13 |
| Corporate_WiFi | 49.25 | 50.29 | 49.67 | 51.13 | 50.07 | 50.49 |
| LTE | 49.32 | 49.55 | 50.41 | 51.12 | 51.00 | 50.61 |
| 5G | 50.19 | 48.48 | 49.63 | 50.29 | 51.09 | 51.22 |
| LEO | 49.68 | 48.90 | 49.88 | 48.62 | 49.68 | 49.89 |
| DoCoMo@Office | 59.10 | 56.73 | 52.40 | 55.72 | 60.26 | 49.91 |
| au@Office | 51.23 | 43.88 | 52.38 | 49.73 | 44.22 | 48.23 |
| WiFi@Office | 50.12 | 49.43 | 50.54 | 49.32 | 49.26 | 50.23 |
| DoCoMo@mall | 50.18 | 50.03 | 50.02 | 51.32 | 50.81 | 49.26 |
| congested | 50.06 | 50.49 | 50.56 | 48.88 | 49.66 | 49.12 |
| bdp20 | 49.50 | 49.79 | 50.37 | 49.40 | 50.65 | 50.15 |
| bdp40 | 49.85 | 50.03 | 49.75 | 49.99 | 49.80 | 50.46 |
| queue10ms | 49.73 | 51.39 | 48.98 | 48.75 | 50.89 | 50.41 |
| queue5ms | 49.49 | 50.64 | 49.54 | 50.72 | 49.95 | 50.54 |
| queue2.5ms | 48.82 | 51.46 | 49.85 | 50.69 | 50.23 | 50.43 |

## Clean stock against 5%-loss RLT, CoDel: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 45.96 | 44.37 | 46.38 | 45.35 |
| Home_WiFi | 40.27 | 41.23 | 42.93 | 42.12 |
| Public | 48.09 | 48.34 | 48.87 | 48.50 |
| Corporate_WiFi | 33.06 | 36.52 | 34.85 | 37.61 |
| LTE | 46.37 | 46.35 | 49.75 | 48.24 |
| 5G | 42.86 | 42.60 | 47.85 | 44.24 |
| LEO | 44.69 | 42.16 | 47.05 | 47.39 |
| DoCoMo@Office | 36.00 | 34.19 | 47.94 | 43.03 |
| au@Office | 36.55 | 39.06 | 36.21 | 47.92 |
| WiFi@Office | 30.49 | 31.16 | 30.32 | 31.22 |
| DoCoMo@mall | 48.80 | 47.52 | 48.22 | 48.06 |
| congested | 48.55 | 49.34 | 49.70 | 49.18 |
| bdp20 | 48.45 | 48.49 | 48.54 | 48.40 |
| bdp40 | 48.36 | 49.76 | 49.10 | 48.45 |
| queue10ms | 41.22 | 40.92 | 40.85 | 40.79 |
| queue5ms | 41.49 | 42.12 | 40.78 | 41.40 |
| queue2.5ms | 41.92 | 42.38 | 41.55 | 42.37 |

## CoDel RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 50.54 | 48.30-53.29 | 97.92 | 51.25 | 48.43-55.07 | 97.94 |
| Home_WiFi | 59.09 | 49.28-67.23 | 97.18 | 51.60 | 49.80-60.63 | 97.47 |
| Public | 48.90 | 47.03-51.20 | 97.94 | 49.28 | 48.21-50.14 | 97.94 |
| Corporate_WiFi | 51.60 | 41.11-55.43 | 97.71 | 49.45 | 47.66-54.24 | 97.72 |
| LTE | 52.27 | 50.27-59.63 | 97.29 | 51.80 | 47.15-55.58 | 97.54 |
| 5G | 53.18 | 50.85-57.21 | 97.21 | 54.88 | 49.63-60.05 | 97.42 |
| LEO | 52.84 | 48.45-56.65 | 97.71 | 51.24 | 45.95-60.04 | 97.67 |
| DoCoMo@Office | 57.89 | 45.16-63.95 | 97.65 | 54.61 | 49.82-63.65 | 97.67 |
| au@Office | 52.10 | 48.61-60.29 | 97.71 | 47.21 | 39.60-51.05 | 97.72 |
| WiFi@Office | 52.35 | 46.05-58.80 | 97.72 | 54.07 | 48.28-63.18 | 97.72 |
| DoCoMo@mall | 49.20 | 48.02-52.48 | 97.94 | 50.35 | 48.62-54.54 | 97.97 |
| congested | 49.38 | 47.95-50.77 | 96.56 | 50.70 | 47.50-52.18 | 96.26 |
| bdp20 | 51.63 | 49.60-52.13 | 97.16 | 50.67 | 48.95-51.87 | 97.21 |
| bdp40 | 48.97 | 47.87-52.05 | 96.79 | 48.97 | 47.13-52.73 | 96.60 |
| queue10ms | 49.02 | 42.92-52.38 | 97.43 | 46.49 | 41.90-49.75 | 97.59 |
| queue5ms | 50.91 | 48.86-52.34 | 90.15 | 50.09 | 48.90-54.26 | 90.27 |
| queue2.5ms | 49.18 | 41.91-53.67 | 86.45 | 45.94 | 44.53-49.99 | 84.34 |

## RTT-adjusted GEO CoDel standalone goodput (%)

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---|---|---|
| CUBIC | 85.84 | 79.67 | 83.03 |
| Cuback | 85.29 | 75.51 | 83.91 |

## RTT-adjusted GEO CoDel competition (%)

| Controller | Case | Flow 1 | Flow 2 | Util | Flow 2 share | Share range |
|---|---|---|---|---|---|---|
| CUBIC | stock_stock | 46.87 | 43.16 | 90.18 | 47.94 | 37.36-59.10 |
| CUBIC | stock_rlt | 22.20 | 67.31 | 89.95 | 75.20 | 58.90-77.37 |
| CUBIC | rlt_stock | 65.80 | 23.86 | 90.25 | 26.48 | 25.94-29.25 |
| CUBIC | clean_lossy | 26.78 | 61.98 | 89.35 | 69.83 | 32.34-74.21 |
| CUBIC | lossy_clean | 62.91 | 25.52 | 88.43 | 28.86 | 25.84-62.09 |
| CUBIC | self | 42.88 | 46.97 | 89.57 | 52.28 | 47.10-56.21 |
| Cuback | stock_stock | 40.64 | 49.18 | 89.82 | 54.76 | 40.16-62.52 |
| Cuback | stock_rlt | 25.31 | 64.26 | 89.57 | 71.74 | 62.51-74.62 |
| Cuback | rlt_stock | 65.15 | 24.39 | 89.49 | 27.24 | 24.33-28.49 |
| Cuback | clean_lossy | 26.05 | 62.14 | 88.36 | 70.47 | 64.57-73.09 |
| Cuback | lossy_clean | 60.31 | 28.14 | 88.19 | 31.81 | 26.79-34.56 |
| Cuback | self | 41.89 | 47.54 | 88.54 | 53.15 | 44.23-64.35 |
Replace the random_loss_tolerance boolean with the two-bit
accel_adaptation flag field. INCREASE_ALWAYS (0x1) bypasses the full_rtt
guard while retaining the adaptive low-RTT gate. RECALIBRATE (0x2) enables
full_rtt observation and path recalibration and, unless INCREASE_ALWAYS is
also set, uses full_rtt as an increase guard. Define ON as an alias for
RECALIBRATE, preserving the behavior selected by the existing simulator -T
option. The flags are independent and can be combined as 0x3.

Keep full_rtt and high-queue observations independent of policy selection;
the flags govern how those observations are consumed. Pass the complete flag
set to increase-rate and recalibration helpers so each tests the bit relevant
to its behavior.

Rename the context, congestion-controller, initialization, and test interfaces
to accel_adaptation. Extend the tests to cover INCREASE_ALWAYS without a usable
full_rtt observation, verify that it cannot recalibrate by itself, and verify
that combining both flags observes full_rtt while continuing to bypass its
increase guard.

build/default/test.t passes all 31 top-level groups.

Benchmark method
----------------

The 0x1 results below reuse the complete always-increase experiment, whose
behavior matches INCREASE_ALWAYS: the adaptive RTT gate remains active while
the full_rtt guard and recalibration are inactive. The per-packet random-loss
probability is selected so that a full pipe has a 5% or 10% probability of at
least one random loss per RTT. Standalone tests are seven 100-second runs
measuring the latter 50 seconds. Competition tests are seven 160-second runs
per flow order measuring the latter 80 seconds. Self-competition uses five
320-second runs and reports the final 40-second window. Loss placement varies
between repetitions through the TLS-context random callback. All values are
percentages. S->R means stock is created first and accelerated adaptation
second; R->S is the reverse. The RLT label is retained from the benchmark
tooling used to collect these results.

The named network profiles show the intended tradeoff. Without recalibration,
accelerated adaptation substantially improves standalone lossy-path goodput
and generally remains near the stock baseline in clean competition. The LTE
CUBIC standalone result is lower than the recalibrating mode, most visibly at
10% loss per RTT (90.56% with 0x2 versus 80.55% with 0x1), showing where
recalibration helps regain bandwidth under frequent loss.

The queue5ms and queue2.5ms profiles are synthetic stress cases rather than
representative access-network queues. This is especially true of their CoDel
variants: a physical queue limited to 5ms or 2.5ms does not model CoDel's deep
buffer, 5ms target, and 100ms default interval. The large competitive shares
on those profiles nevertheless document the safety role of the full_rtt guard.

The combined 0x3 mode has not been benchmarked. The self-competition tables
place 5% random loss on both accelerated flows; clean accelerated-versus-
accelerated self-convergence without recalibration has not been tested.

On the separate ten-flow DSL experiment, nine clean stock flows compete with
one accelerated flow. Results are the mean of the two flow-order medians over
15 repetitions:

| Policy | Accelerated-flow loss | 0x2 share | 0x1 share | 0x2 bandwidth | 0x1 bandwidth |
|---|---:|---:|---:|---:|---:|
| CUBIC | none | 10.21% | 9.92% | 3.00 Mb/s | 2.92 Mb/s |
| CUBIC | 5%/RTT | 9.62% | 9.71% | 2.83 Mb/s | 2.86 Mb/s |
| Cuback | none | 9.95% | 9.99% | 2.93 Mb/s | 2.94 Mb/s |
| Cuback | 5%/RTT | 9.79% | 9.61% | 2.88 Mb/s | 2.83 Mb/s |

Complete 0x1 results
--------------------

## Tail-drop standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 92.86/96.55 | 73.71/94.19 | 93.50/97.58 | 71.95/96.05 |
| Home_WiFi | 54.77/93.57 | 36.85/87.76 | 54.96/95.87 | 34.86/90.86 |
| Public | 98.03/98.03 | 94.02/97.40 | 98.00/98.00 | 95.01/97.35 |
| Corporate_WiFi | 48.36/97.43 | 34.76/97.16 | 50.30/97.60 | 35.52/97.33 |
| LTE | 83.47/92.56 | 63.78/80.55 | 84.50/96.04 | 62.72/92.96 |
| 5G | 72.08/93.81 | 40.90/88.72 | 60.55/96.17 | 41.47/92.14 |
| LEO | 78.04/94.44 | 58.67/90.22 | 71.03/97.12 | 52.34/94.09 |
| GEO | 97.16/98.00 | 83.87/93.45 | 97.74/98.01 | 91.24/95.62 |
| DoCoMo@Office | 95.68/97.41 | 72.94/96.88 | 91.85/97.76 | 67.23/97.30 |
| au@Office | 86.46/97.57 | 58.94/97.34 | 93.88/97.67 | 50.86/97.45 |
| WiFi@Office | 72.68/97.72 | 51.08/97.71 | 73.06/97.72 | 51.70/97.71 |
| DoCoMo@mall | 98.03/98.03 | 96.18/97.55 | 98.03/98.03 | 91.44/97.76 |
| congested | 97.97/97.95 | 97.81/97.85 | 97.93/97.95 | 97.35/97.71 |
| bdp20 | 97.34/97.66 | 97.00/97.00 | 97.22/97.44 | 95.66/96.02 |
| bdp40 | 97.69/97.05 | 94.58/95.23 | 97.46/96.84 | 96.57/94.75 |
| queue10ms | 73.81/94.32 | 54.56/89.15 | 71.21/95.38 | 55.43/90.27 |
| queue5ms | 65.60/93.42 | 50.25/86.93 | 68.45/88.96 | 52.39/83.07 |
| queue2.5ms | 65.65/83.91 | 47.32/78.24 | 64.50/83.19 | 46.58/77.39 |

## Clean tail-drop competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 48.85 | 48.62 | 47.42 | 48.14 | 47.36 | 47.91 |
| Home_WiFi | 49.74 | 45.80 | 48.63 | 53.54 | 50.85 | 48.43 |
| Public | 49.82 | 49.43 | 49.53 | 49.75 | 49.27 | 50.09 |
| Corporate_WiFi | 54.29 | 53.67 | 44.76 | 58.32 | 49.17 | 42.99 |
| LTE | 48.06 | 52.22 | 49.30 | 49.90 | 50.68 | 50.56 |
| 5G | 50.98 | 48.37 | 48.69 | 47.29 | 52.56 | 49.71 |
| LEO | 48.30 | 45.78 | 52.70 | 47.90 | 52.78 | 45.24 |
| GEO | 49.99 | 49.99 | 50.00 | 49.89 | 49.97 | 50.00 |
| DoCoMo@Office | 49.13 | 50.07 | 49.94 | 50.06 | 49.92 | 48.96 |
| au@Office | 51.51 | 49.79 | 50.31 | 49.83 | 49.89 | 47.88 |
| WiFi@Office | 55.77 | 55.34 | 47.50 | 53.87 | 53.75 | 44.41 |
| DoCoMo@mall | 49.72 | 49.68 | 50.38 | 49.86 | 49.83 | 50.20 |
| congested | 49.76 | 49.72 | 48.30 | 49.57 | 50.34 | 49.62 |
| bdp20 | 49.85 | 49.32 | 49.73 | 50.15 | 49.93 | 49.83 |
| bdp40 | 50.51 | 50.71 | 50.11 | 48.45 | 51.75 | 49.59 |
| queue10ms | 50.27 | 50.61 | 51.39 | 48.97 | 59.69 | 55.41 |
| queue5ms | 48.47 | 63.34 | 54.97 | 50.85 | 75.93 | 70.77 |
| queue2.5ms | 50.73 | 73.12 | 74.50 | 50.60 | 75.31 | 76.81 |

## Clean stock against 5%-loss RLT, tail drop: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 34.48 | 35.06 | 31.18 | 34.22 |
| Home_WiFi | 28.78 | 28.17 | 30.32 | 28.17 |
| Public | 34.14 | 29.66 | 28.47 | 30.08 |
| Corporate_WiFi | 17.43 | 16.91 | 17.68 | 17.51 |
| LTE | 32.77 | 30.21 | 27.26 | 30.86 |
| 5G | 16.98 | 21.82 | 18.92 | 23.40 |
| LEO | 25.58 | 23.98 | 27.04 | 26.31 |
| GEO | 38.33 | 45.66 | 37.53 | 39.39 |
| DoCoMo@Office | 25.33 | 24.75 | 24.44 | 23.90 |
| au@Office | 20.33 | 19.51 | 20.07 | 21.10 |
| WiFi@Office | 21.20 | 20.65 | 20.98 | 20.35 |
| DoCoMo@mall | 29.89 | 29.50 | 25.50 | 28.09 |
| congested | 43.18 | 45.06 | 42.13 | 41.35 |
| bdp20 | 49.42 | 47.88 | 48.66 | 48.98 |
| bdp40 | 44.97 | 47.97 | 45.78 | 45.19 |
| queue10ms | 40.80 | 42.72 | 52.06 | 46.44 |
| queue5ms | 51.25 | 44.89 | 70.64 | 62.59 |
| queue2.5ms | 68.36 | 67.24 | 70.45 | 70.46 |

## Tail-drop RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 54.12 | 45.13-55.59 | 98.02 | 49.70 | 37.67-54.85 | 98.02 |
| Home_WiFi | 52.17 | 48.90-57.40 | 97.42 | 54.85 | 50.85-58.45 | 97.60 |
| Public | 58.39 | 29.62-61.76 | 98.03 | 59.56 | 47.34-60.16 | 98.03 |
| Corporate_WiFi | 51.40 | 46.74-56.21 | 97.72 | 49.23 | 45.61-52.01 | 97.72 |
| LTE | 51.43 | 40.35-54.90 | 98.03 | 60.66 | 36.06-68.49 | 98.03 |
| 5G | 56.84 | 51.49-59.11 | 97.55 | 49.02 | 41.02-60.56 | 97.72 |
| LEO | 52.54 | 45.68-61.35 | 98.03 | 45.71 | 44.01-59.59 | 98.03 |
| GEO | 51.02 | 44.30-60.66 | 98.01 | 51.00 | 28.57-66.08 | 98.01 |
| DoCoMo@Office | 42.82 | 34.87-58.68 | 97.73 | 50.82 | 38.31-63.48 | 97.73 |
| au@Office | 45.87 | 29.39-51.84 | 97.73 | 60.12 | 39.32-69.23 | 97.73 |
| WiFi@Office | 46.61 | 45.17-52.19 | 97.72 | 50.69 | 49.71-53.60 | 97.72 |
| DoCoMo@mall | 50.65 | 37.26-58.79 | 98.03 | 63.37 | 46.58-75.13 | 98.03 |
| congested | 47.02 | 31.99-51.06 | 97.91 | 51.04 | 42.22-55.60 | 97.93 |
| bdp20 | 48.16 | 47.24-48.75 | 98.03 | 48.68 | 47.99-52.23 | 97.66 |
| bdp40 | 50.44 | 47.20-54.93 | 97.90 | 50.44 | 46.34-53.16 | 97.80 |
| queue10ms | 51.55 | 50.11-54.38 | 97.33 | 52.80 | 47.53-59.40 | 97.33 |
| queue5ms | 59.46 | 57.22-61.21 | 95.60 | 61.43 | 57.20-66.90 | 92.86 |
| queue2.5ms | 46.75 | 45.42-51.93 | 87.87 | 49.35 | 46.84-52.58 | 87.40 |

## CoDel standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 86.02/96.51 | 70.53/93.97 | 86.04/96.89 | 72.74/94.68 |
| Home_WiFi | 52.12/93.26 | 36.41/89.48 | 57.87/94.86 | 36.60/91.10 |
| Public | 95.20/96.25 | 87.38/93.72 | 94.35/96.71 | 89.45/95.02 |
| Corporate_WiFi | 51.24/97.45 | 32.81/97.11 | 50.40/97.57 | 36.56/97.34 |
| LTE | 72.32/92.49 | 53.05/85.37 | 78.19/93.54 | 58.52/87.46 |
| 5G | 58.37/94.84 | 43.09/89.17 | 52.91/95.84 | 37.55/92.25 |
| LEO | 71.53/93.55 | 54.59/89.98 | 75.92/95.35 | 56.71/93.47 |
| DoCoMo@Office | 83.91/97.25 | 64.35/96.80 | 85.28/97.44 | 68.26/96.94 |
| au@Office | 78.77/97.50 | 50.49/97.21 | 80.63/97.57 | 58.15/97.34 |
| WiFi@Office | 73.09/97.72 | 52.16/97.71 | 72.86/97.72 | 53.41/97.71 |
| DoCoMo@mall | 92.66/97.13 | 84.41/96.63 | 92.14/97.07 | 85.68/96.36 |
| congested | 95.18/95.42 | 92.47/94.09 | 96.50/95.86 | 91.79/93.55 |
| bdp20 | 96.20/96.70 | 94.86/94.19 | 96.04/95.94 | 93.81/93.87 |
| bdp40 | 93.90/94.90 | 89.17/91.30 | 93.93/95.16 | 91.01/90.70 |
| queue10ms | 70.82/94.17 | 54.27/88.45 | 70.69/95.41 | 52.95/90.58 |
| queue5ms | 67.34/93.26 | 49.49/87.64 | 66.26/88.21 | 51.69/84.98 |
| queue2.5ms | 63.94/83.94 | 48.92/79.02 | 65.23/83.41 | 50.16/77.86 |

## Clean CoDel competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 49.29 | 50.54 | 50.37 | 50.93 | 49.66 | 49.99 |
| Home_WiFi | 49.46 | 49.59 | 50.23 | 49.86 | 49.96 | 49.91 |
| Public | 51.15 | 50.07 | 50.45 | 49.86 | 49.42 | 49.46 |
| Corporate_WiFi | 50.06 | 49.83 | 51.86 | 49.42 | 49.03 | 49.87 |
| LTE | 50.59 | 51.73 | 50.37 | 49.92 | 51.33 | 50.38 |
| 5G | 50.48 | 51.17 | 50.02 | 50.20 | 50.59 | 51.37 |
| LEO | 48.43 | 49.53 | 48.50 | 50.18 | 51.07 | 48.90 |
| DoCoMo@Office | 54.93 | 55.08 | 45.33 | 55.22 | 55.44 | 43.64 |
| au@Office | 47.46 | 51.52 | 46.65 | 52.68 | 44.20 | 53.85 |
| WiFi@Office | 48.64 | 50.04 | 50.27 | 49.06 | 50.41 | 50.02 |
| DoCoMo@mall | 49.54 | 49.59 | 50.35 | 50.50 | 50.30 | 49.80 |
| congested | 50.16 | 49.86 | 49.97 | 48.49 | 50.05 | 49.90 |
| bdp20 | 51.35 | 49.75 | 49.81 | 50.28 | 50.25 | 50.01 |
| bdp40 | 49.57 | 49.77 | 49.70 | 50.92 | 50.34 | 49.86 |
| queue10ms | 51.39 | 49.70 | 49.59 | 49.71 | 50.82 | 51.21 |
| queue5ms | 49.25 | 65.01 | 54.95 | 49.99 | 75.45 | 69.75 |
| queue2.5ms | 50.49 | 72.37 | 73.69 | 49.71 | 75.18 | 76.22 |

## Clean stock against 5%-loss RLT, CoDel: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 45.46 | 44.23 | 45.07 | 46.38 |
| Home_WiFi | 38.63 | 38.57 | 42.95 | 40.92 |
| Public | 48.74 | 48.04 | 48.63 | 49.65 |
| Corporate_WiFi | 32.38 | 34.37 | 32.80 | 34.09 |
| LTE | 45.19 | 45.51 | 48.35 | 49.12 |
| 5G | 44.04 | 43.23 | 48.44 | 44.62 |
| LEO | 44.52 | 44.17 | 47.03 | 47.08 |
| DoCoMo@Office | 41.00 | 35.76 | 51.66 | 40.51 |
| au@Office | 36.46 | 35.69 | 43.03 | 35.50 |
| WiFi@Office | 30.04 | 29.95 | 30.53 | 30.23 |
| DoCoMo@mall | 49.12 | 49.91 | 49.57 | 49.64 |
| congested | 50.31 | 49.57 | 48.91 | 49.18 |
| bdp20 | 49.07 | 48.54 | 49.21 | 48.49 |
| bdp40 | 48.07 | 48.00 | 49.05 | 48.10 |
| queue10ms | 42.26 | 41.46 | 44.14 | 41.48 |
| queue5ms | 50.26 | 44.85 | 72.43 | 62.43 |
| queue2.5ms | 69.37 | 68.36 | 70.69 | 71.12 |

## CoDel RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 49.06 | 47.65-51.11 | 97.92 | 49.62 | 45.75-53.61 | 97.95 |
| Home_WiFi | 57.05 | 52.46-58.72 | 97.28 | 53.76 | 48.46-55.50 | 97.49 |
| Public | 50.27 | 49.39-52.04 | 97.98 | 49.08 | 48.61-53.58 | 97.94 |
| Corporate_WiFi | 52.02 | 45.95-55.40 | 97.72 | 52.24 | 43.39-56.09 | 97.72 |
| LTE | 54.73 | 49.26-55.74 | 97.51 | 51.86 | 43.86-52.66 | 97.53 |
| 5G | 52.17 | 47.68-54.93 | 97.17 | 54.96 | 51.54-59.79 | 97.39 |
| LEO | 51.07 | 46.51-55.39 | 97.65 | 49.25 | 47.94-55.00 | 97.77 |
| DoCoMo@Office | 57.46 | 45.31-68.55 | 97.63 | 53.36 | 48.99-65.19 | 97.66 |
| au@Office | 48.72 | 45.28-58.19 | 97.71 | 44.58 | 37.95-58.72 | 97.71 |
| WiFi@Office | 50.70 | 46.95-51.08 | 97.72 | 49.66 | 48.69-52.92 | 97.72 |
| DoCoMo@mall | 52.23 | 49.50-55.61 | 97.95 | 52.30 | 51.22-56.08 | 97.91 |
| congested | 48.27 | 46.77-53.30 | 96.73 | 52.18 | 49.16-54.92 | 95.88 |
| bdp20 | 52.71 | 51.05-53.98 | 97.24 | 49.33 | 47.70-51.23 | 97.14 |
| bdp40 | 49.55 | 44.55-51.62 | 96.89 | 50.16 | 48.38-51.74 | 96.56 |
| queue10ms | 50.28 | 47.87-54.02 | 97.65 | 49.32 | 48.20-52.42 | 97.64 |
| queue5ms | 63.63 | 61.64-64.00 | 95.74 | 59.96 | 51.59-62.02 | 93.25 |
| queue2.5ms | 49.97 | 45.12-52.92 | 87.80 | 49.77 | 41.29-52.14 | 87.45 |

## RTT-adjusted GEO CoDel standalone goodput (%)

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---|---|---|
| CUBIC | 85.84 | 74.30 | 81.01 |
| Cuback | 85.28 | 77.39 | 80.80 |

## RTT-adjusted GEO CoDel competition (%)

| Controller | Case | Flow 1 | Flow 2 | Util | Flow 2 share | Share range |
|---|---|---|---|---|---|---|
| CUBIC | stock_stock | 44.18 | 46.09 | 90.36 | 51.05 | 39.19-55.73 |
| CUBIC | stock_rlt | 43.84 | 46.25 | 90.13 | 51.34 | 32.53-57.66 |
| CUBIC | rlt_stock | 46.73 | 43.50 | 90.62 | 48.21 | 33.09-53.40 |
| CUBIC | clean_lossy | 48.04 | 41.89 | 89.99 | 46.58 | 38.46-55.01 |
| CUBIC | lossy_clean | 36.46 | 54.25 | 89.87 | 59.81 | 39.67-63.87 |
| CUBIC | self | 42.78 | 47.39 | 88.90 | 52.56 | 47.62-59.96 |
| Cuback | stock_stock | 42.92 | 47.49 | 90.19 | 52.53 | 37.07-67.29 |
| Cuback | stock_rlt | 32.19 | 57.19 | 89.40 | 63.99 | 49.75-69.14 |
| Cuback | rlt_stock | 52.60 | 36.95 | 89.80 | 41.26 | 32.20-48.87 |
| Cuback | clean_lossy | 40.63 | 47.71 | 88.40 | 54.01 | 46.35-56.58 |
| Cuback | lossy_clean | 46.38 | 42.11 | 88.82 | 47.59 | 42.27-59.83 |
| Cuback | self | 47.08 | 41.55 | 88.75 | 46.88 | 44.47-50.75 |
@kazuho

kazuho commented Sep 5, 2026

Copy link
Copy Markdown
Member Author
  • If the path's idle RTT rises during a connection, ABBA as implemented becomes less effective: the increase gate cannot rise above (rtt->minimum + min_rtt_previous_period) / 2, and rtt->minimum only ever moves down.

FWIW, as to this point, I think tracking the EMEA of per-epoch minimum and using its (smoothed - variance / 2) + 2ms as a gate could make sense, though I'm not sure how much that'd be an improvement for HTTP when most connections are short-lived. I'm inclined to test this as-is in prod first, and then try the EMEA variant using the same traffic to confirm that EMEA is no more aggressive.

Accelerated increase must yield when congestion persists. Previously its RTT-
derived rate could exceed the growth needed to reverse the preceding congestion
reduction in one RTT. This could let the ABBA contribution recover the entire
reduction before delayed RTT feedback closed the acceleration gate.

Cap the ABBA increase rate at half the rate that would reverse the reduction:

    (1 / beta - 1) / 2

Select beta from the congestion signal that opened the recovery: 0.7 for loss
and 0.85 for ECN. After one reduced flight is acknowledged, ABBA can therefore
raise the loss-reduced CWND to at most 85% of its pre-loss value, or the ECN-
reduced CWND to at most 92.5%. The ordinary CUBIC or Cuback trajectory remains
available independently; the cap bounds only accelerated adaptation's
contribution.

Pass the signal type through the shared CUBIC and Cuback acceleration helpers.
Extend the tests to verify both caps and their net effect after the corresponding
reduction.

build/default/test.t passes all 31 top-level groups.

Benchmark method
----------------

Only profiles that can exercise the new cap were rerun. The RTT threshold is at
least minRTT + 2ms, so the 21.43% loss cap can bind only below a 9.33ms
threshold; among the tail-drop profiles this selects WiFi@Office. The 8.82% ECN
cap can bind below a 22.67ms threshold, selecting Corporate_WiFi, au@Office,
and WiFi@Office under CoDel. Other profiles cannot reach either cap and were
not rerun.

The per-packet random-loss probability is selected so that a full pipe has a
5% or 10% probability of at least one random loss per RTT. Standalone tests are
seven 100-second runs measuring the latter 50 seconds. Competition tests are
seven 160-second runs per flow order measuring the latter 80 seconds. Self-
competition uses five 320-second runs and reports the final 40-second window.
Loss placement varies between repetitions through the TLS-context random
callback. All values are percentages. S->R means stock is created first and
ABBA second; R->S is the reverse. The RLT label is retained from the benchmark
tooling used to collect these results.

Median standalone ABBA goodput remains between 97.1% and 97.7% on every
affected CoDel row and near 97.7% on WiFi@Office tail drop. Clean competition
remains centered around the corresponding stock/stock result, subject to the
existing order variance. Against a clean stock flow, a 5%-loss ABBA flow yields
to roughly 20%-21% share under WiFi@Office tail drop and 30%-44% under CoDel.
Self-competition keeps about 97.7% aggregate utilization.

CUBIC has rare low standalone repetitions on the 4ms WiFi profile. Under tail
drop, its 5% ABBA samples include 84.66% and 94.57% among five 97.71% samples;
at 10%, one sample is 51.99% and six are at least 97.69%. Under CoDel at 5%,
one sample is 78.84% and six are at least 97.71%. The medians remain near full
utilization, but these outliers document a remaining recovery limitation rather
than being hidden by the aggregate.

Affected tail-drop results
--------------------------

## Standalone goodput

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---:|---:|---:|---:|
| WiFi@Office | 73.96/97.71 | 52.80/97.69 | 72.42/97.70 | 51.30/97.69 |

## Clean competition: second/ABBA share

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|---:|---:|
| WiFi@Office | 54.74 | 54.54 | 45.53 | 56.73 | 56.51 | 44.85 |

## Clean stock against 5%-loss ABBA: ABBA share

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| WiFi@Office | 20.67 | 20.94 | 20.51 | 21.51 |

## ABBA self-competition at 5% loss

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---:|---:|---:|---:|---:|---:|
| WiFi@Office | 51.04 | 38.44-57.45 | 97.72 | 48.54 | 45.32-62.09 | 97.72 |

Affected CoDel results
----------------------

## Standalone goodput

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---:|---:|---:|---:|
| Corporate_WiFi | 50.09/97.48 | 36.36/97.14 | 50.31/97.60 | 35.35/97.33 |
| au@Office | 83.44/97.45 | 55.72/97.30 | 76.79/97.55 | 58.44/97.36 |
| WiFi@Office | 74.22/97.71 | 52.72/97.69 | 71.67/97.72 | 52.17/97.69 |

## Clean competition: second/ABBA share

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|---:|---:|
| Corporate_WiFi | 49.26 | 49.71 | 50.27 | 49.44 | 49.46 | 49.44 |
| au@Office | 43.19 | 45.81 | 51.31 | 46.67 | 44.94 | 56.15 |
| WiFi@Office | 50.37 | 50.19 | 49.61 | 50.09 | 49.77 | 50.84 |

## Clean stock against 5%-loss ABBA: ABBA share

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---:|---:|---:|---:|
| Corporate_WiFi | 32.35 | 34.96 | 34.65 | 35.68 |
| au@Office | 39.08 | 38.67 | 41.86 | 43.91 |
| WiFi@Office | 30.35 | 30.68 | 30.68 | 30.29 |

## ABBA self-competition at 5% loss

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---:|---:|---:|---:|---:|---:|
| Corporate_WiFi | 49.03 | 36.14-61.18 | 97.71 | 52.07 | 33.35-65.72 | 97.71 |
| au@Office | 46.92 | 42.28-53.38 | 97.71 | 54.10 | 36.74-61.80 | 97.71 |
| WiFi@Office | 51.92 | 48.29-60.23 | 97.72 | 44.38 | 37.84-47.20 | 97.72 |
ABBA's adaptive RTT gate currently uses the minimum RTT of the immediately
preceding congestion-avoidance period. A single jittery period can therefore
move the gate abruptly. Add an opt-in gate that instead estimates the floor
from the minima of all completed periods:

    E = smoothed_period_min - period_min_variance / 2
    threshold = min(current_period_min + 2ms,
                    max(minRTT + 2ms, E))

Exclude the current period from the estimator and add only its minimum when the
next congestion event closes it. This prevents RTT produced by accelerated
increase from feeding directly into its own gate. With weights of 1/8 for the
smoothed value and 1/4 for variance, an accelerated period whose minimum is
below E strictly lowers E. Below minRTT + 2ms, eligible samples can move E
upward only toward that fixed bound. The weights are therefore part of the
no-ratcheting property rather than arbitrary estimator parameters.

Select this behavior with
QUICLY_CC_ACCEL_ADAPTATION_SMOOTHED_GATE (0x4). Keep
QUICLY_CC_ACCEL_ADAPTATION_ON equal to RECALIBRATE (0x2), preserving the
preceding-period gate as the default. The measured mode below is therefore
selected as 0x6. Store the mutually exclusive preceding-period value and
completed-period estimator in a union. The larger estimator increases the ABBA
state from 32 to 40 bytes even though the union avoids storing both histories.

Reuse quicly_rtt_t for the completed-period estimator. Factor its update so
ABBA can choose the initial 5ms variance while retaining the ordinary fixed
weights of 1/8 and 1/4. Extend the tests to cover the parameterized first
sample, estimator evolution, both gate policies, and preservation of the
default threshold.

build/default/test.t passes all 31 top-level groups.

Benchmark method
----------------

These measurements were collected while the smoothed gate was unconditional;
that implementation is equivalent to the new 0x6 mode. The simulator's stable
RTT profiles do not demonstrate the intended benefit on real paths with a
varying idle RTT. The purpose of this suite is to check safety under stable
conditions.

The per-packet random-loss probability is selected so that a full pipe has a 5%
or 10% probability of at least one random loss per RTT. Standalone tests are
seven 100-second runs measuring the latter 50 seconds. Competition tests are
seven 160-second runs per flow order measuring the latter 80 seconds. Self-
competition uses five 320-second runs and reports the final 40-second window.
Loss placement varies between repetitions through the TLS-context random
callback. The RTT-adjusted GEO CoDel tests instead use a 5ms target, 600ms
interval, 1000-second runs, and the latter 500 seconds. All values are
percentages. S/R means stock/ABBA; S->R means stock is created first and ABBA
second; R->S is the reverse. The RLT label is retained from the benchmark
tooling used to collect these results.

Across the non-GEO profiles, the aggregate changes from the default gate are
small:

| Scenario | CUBIC | Cuback |
|---|---:|---:|
| Tail standalone ABBA goodput | +0.16pp | +0.08pp |
| CoDel standalone ABBA goodput | +0.39pp | -0.38pp |
| Clean tail ABBA share | -0.05pp | +0.16pp |
| Clean CoDel ABBA share | +0.12pp | -0.07pp |
| Lossy ABBA tail share | +0.07pp | +0.07pp |
| Lossy ABBA CoDel share | +0.36pp | +0.18pp |
| Tail self-competition utilization | -0.03pp | +0.10pp |
| CoDel self-competition utilization | -0.16pp | -0.03pp |

RTT-adjusted GEO CoDel is the material exception. CUBIC ABBA's share against a
clean stock flow rises from about 51% in either order to 72%-73%; Cuback rises
from about 59%-64% to 68%-72%. Lossy standalone ABBA goodput improves from
81.01% to 84.56% for CUBIC and from 80.80% to 82.74% for Cuback, but the
competition result is a safety limitation and is why the smoothed gate is not
the default.

Complete smoothed-gate results
------------------------------

## Tail-drop standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 91.05/97.25 | 73.49/95.07 | 92.46/97.74 | 72.13/96.49 |
| Home_WiFi | 51.12/93.92 | 35.93/88.08 | 51.70/95.45 | 36.24/90.09 |
| Public | 98.02/98.02 | 95.71/97.51 | 98.03/98.00 | 94.28/97.97 |
| Corporate_WiFi | 50.85/97.48 | 37.24/97.11 | 51.97/97.58 | 34.36/97.36 |
| LTE | 79.60/96.43 | 57.03/91.86 | 83.43/97.64 | 64.61/94.01 |
| 5G | 55.38/96.75 | 40.07/91.70 | 61.79/96.97 | 39.34/94.39 |
| LEO | 75.14/96.74 | 58.71/92.99 | 81.49/97.42 | 64.09/94.81 |
| GEO | 98.01/97.29 | 77.67/93.35 | 98.00/98.02 | 87.39/92.90 |
| DoCoMo@Office | 94.94/97.78 | 74.51/97.40 | 95.34/97.79 | 58.25/97.65 |
| au@Office | 88.79/97.72 | 62.30/97.39 | 76.78/97.70 | 55.81/97.60 |
| WiFi@Office | 73.16/97.71 | 51.87/97.70 | 73.96/97.71 | 53.39/97.70 |
| DoCoMo@mall | 98.03/98.03 | 96.26/97.87 | 98.03/98.03 | 94.57/98.01 |
| congested | 97.91/97.95 | 97.89/97.89 | 97.93/97.95 | 97.85/97.77 |
| bdp20 | 97.44/97.62 | 96.72/96.26 | 97.44/97.48 | 96.46/96.20 |
| bdp40 | 97.49/97.62 | 94.71/96.49 | 97.42/96.93 | 94.28/96.03 |
| queue10ms | 78.14/77.47 | 52.99/64.94 | 74.37/75.65 | 54.47/64.27 |
| queue5ms | 67.71/67.57 | 49.02/52.75 | 67.87/66.51 | 49.30/55.40 |
| queue2.5ms | 63.47/58.24 | 49.32/47.87 | 63.13/60.45 | 49.06/48.38 |

## Clean tail-drop competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 47.57 | 51.72 | 50.28 | 51.59 | 50.92 | 50.66 |
| Home_WiFi | 52.44 | 50.08 | 47.64 | 46.57 | 50.19 | 52.35 |
| Public | 50.23 | 47.17 | 50.86 | 49.74 | 50.44 | 49.90 |
| Corporate_WiFi | 53.43 | 53.27 | 48.17 | 53.67 | 56.81 | 45.20 |
| LTE | 47.84 | 50.20 | 49.55 | 47.39 | 50.52 | 50.71 |
| 5G | 47.03 | 49.38 | 46.92 | 51.37 | 53.04 | 50.11 |
| LEO | 48.18 | 52.08 | 50.09 | 51.97 | 50.79 | 49.95 |
| GEO | 49.97 | 50.12 | 50.03 | 49.95 | 49.98 | 50.18 |
| DoCoMo@Office | 50.11 | 51.82 | 49.14 | 48.85 | 51.10 | 50.06 |
| au@Office | 49.89 | 51.46 | 48.48 | 52.17 | 52.16 | 49.92 |
| WiFi@Office | 53.33 | 55.55 | 46.77 | 54.57 | 55.85 | 47.11 |
| DoCoMo@mall | 49.77 | 49.78 | 50.26 | 49.83 | 49.79 | 50.11 |
| congested | 49.15 | 51.26 | 48.43 | 48.19 | 49.33 | 49.85 |
| bdp20 | 48.43 | 48.21 | 51.06 | 48.47 | 49.45 | 50.08 |
| bdp40 | 50.96 | 50.07 | 49.38 | 52.02 | 49.40 | 51.88 |
| queue10ms | 50.91 | 50.21 | 50.58 | 50.79 | 49.37 | 49.85 |
| queue5ms | 50.23 | 48.93 | 50.76 | 50.52 | 49.35 | 49.64 |
| queue2.5ms | 52.23 | 49.73 | 49.91 | 51.42 | 50.71 | 49.99 |

## Clean stock against 5%-loss RLT, tail drop: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 31.93 | 34.87 | 32.56 | 34.26 |
| Home_WiFi | 29.61 | 30.37 | 31.37 | 31.27 |
| Public | 32.51 | 29.73 | 34.36 | 25.97 |
| Corporate_WiFi | 18.36 | 17.46 | 18.25 | 18.85 |
| LTE | 30.03 | 29.92 | 25.45 | 27.77 |
| 5G | 23.06 | 19.35 | 21.73 | 23.07 |
| LEO | 24.39 | 24.41 | 22.38 | 22.65 |
| GEO | 37.67 | 34.85 | 38.02 | 38.17 |
| DoCoMo@Office | 22.58 | 26.68 | 21.67 | 18.77 |
| au@Office | 23.72 | 21.25 | 18.48 | 17.17 |
| WiFi@Office | 22.73 | 21.11 | 24.77 | 22.41 |
| DoCoMo@mall | 29.74 | 33.57 | 28.18 | 33.20 |
| congested | 44.31 | 45.25 | 45.34 | 44.99 |
| bdp20 | 50.49 | 48.75 | 48.53 | 47.92 |
| bdp40 | 47.13 | 46.28 | 46.19 | 45.84 |
| queue10ms | 39.46 | 40.90 | 39.80 | 41.40 |
| queue5ms | 42.00 | 41.72 | 42.82 | 41.92 |
| queue2.5ms | 40.46 | 42.28 | 40.95 | 43.07 |

## Tail-drop RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 47.45 | 44.30-53.01 | 98.02 | 54.82 | 48.63-57.40 | 98.02 |
| Home_WiFi | 53.32 | 41.47-58.54 | 97.29 | 51.47 | 48.54-55.83 | 97.62 |
| Public | 46.83 | 29.72-54.76 | 98.02 | 41.06 | 35.52-59.95 | 98.03 |
| Corporate_WiFi | 45.23 | 44.77-47.69 | 97.71 | 51.17 | 46.61-58.06 | 97.72 |
| LTE | 47.98 | 47.76-55.81 | 98.03 | 46.10 | 36.68-55.36 | 98.03 |
| 5G | 48.70 | 37.75-58.54 | 97.71 | 48.42 | 38.56-51.06 | 97.72 |
| LEO | 52.24 | 46.46-54.86 | 98.03 | 48.12 | 34.46-68.20 | 98.03 |
| GEO | 51.73 | 26.05-60.14 | 98.00 | 43.78 | 27.72-52.72 | 98.01 |
| DoCoMo@Office | 53.72 | 32.01-63.74 | 97.73 | 43.54 | 38.64-65.29 | 97.73 |
| au@Office | 43.52 | 30.52-72.97 | 97.73 | 46.50 | 39.38-61.73 | 97.72 |
| WiFi@Office | 50.37 | 39.24-61.74 | 97.72 | 50.97 | 42.68-60.58 | 97.72 |
| DoCoMo@mall | 52.57 | 37.57-72.81 | 98.03 | 57.21 | 32.46-62.56 | 98.03 |
| congested | 44.45 | 43.69-58.82 | 97.94 | 49.26 | 32.45-55.36 | 97.91 |
| bdp20 | 50.51 | 50.08-52.68 | 97.73 | 51.81 | 47.30-53.89 | 97.53 |
| bdp40 | 48.51 | 45.90-56.15 | 97.92 | 47.13 | 46.01-52.23 | 97.90 |
| queue10ms | 50.74 | 48.51-52.86 | 96.79 | 41.62 | 40.64-45.78 | 97.17 |
| queue5ms | 52.32 | 49.83-53.44 | 88.84 | 50.12 | 46.87-53.57 | 89.42 |
| queue2.5ms | 50.43 | 45.37-53.04 | 85.39 | 50.44 | 44.78-50.81 | 85.65 |

## CoDel standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 88.11/96.20 | 73.34/94.20 | 87.85/96.61 | 70.06/94.91 |
| Home_WiFi | 50.29/93.48 | 35.48/88.80 | 53.88/95.15 | 35.80/91.26 |
| Public | 93.51/96.40 | 87.77/93.89 | 93.50/96.58 | 87.96/95.00 |
| Corporate_WiFi | 51.28/97.46 | 34.99/97.14 | 51.43/97.58 | 35.06/97.37 |
| LTE | 73.54/92.83 | 63.73/85.56 | 77.80/93.39 | 60.28/86.90 |
| 5G | 63.31/95.73 | 40.00/90.15 | 55.70/95.66 | 39.54/92.45 |
| LEO | 77.35/94.15 | 55.20/91.66 | 71.73/95.35 | 52.80/92.71 |
| DoCoMo@Office | 86.59/97.46 | 65.22/96.72 | 84.82/97.37 | 65.04/96.98 |
| au@Office | 81.62/97.56 | 61.10/97.34 | 73.84/97.56 | 61.17/97.42 |
| WiFi@Office | 71.61/97.71 | 52.16/97.70 | 73.39/97.71 | 52.29/97.70 |
| DoCoMo@mall | 91.22/96.87 | 88.71/96.53 | 89.83/96.78 | 83.64/96.22 |
| congested | 95.44/95.82 | 94.19/95.10 | 95.26/94.56 | 90.68/91.95 |
| bdp20 | 96.97/96.32 | 94.66/93.91 | 96.14/96.34 | 94.33/94.01 |
| bdp40 | 94.97/94.28 | 90.13/90.58 | 94.38/93.56 | 87.89/90.02 |
| queue10ms | 70.07/78.05 | 55.87/61.05 | 76.11/77.02 | 51.28/62.71 |
| queue5ms | 67.05/67.10 | 50.38/53.75 | 67.83/66.42 | 50.28/54.19 |
| queue2.5ms | 64.31/63.01 | 49.41/49.55 | 66.54/56.88 | 47.06/47.78 |

## Clean CoDel competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 49.49 | 47.37 | 48.76 | 51.37 | 53.88 | 51.89 |
| Home_WiFi | 50.52 | 49.97 | 50.63 | 50.43 | 50.87 | 50.34 |
| Public | 49.46 | 50.18 | 49.61 | 49.96 | 50.47 | 49.81 |
| Corporate_WiFi | 49.83 | 50.15 | 51.35 | 50.13 | 49.95 | 50.27 |
| LTE | 49.04 | 51.41 | 49.31 | 49.07 | 52.43 | 49.17 |
| 5G | 50.10 | 51.24 | 49.83 | 49.24 | 51.08 | 50.12 |
| LEO | 48.25 | 49.06 | 50.75 | 49.40 | 49.74 | 50.07 |
| DoCoMo@Office | 58.44 | 56.88 | 49.57 | 50.51 | 59.39 | 43.03 |
| au@Office | 51.09 | 53.91 | 50.53 | 50.58 | 51.66 | 49.08 |
| WiFi@Office | 49.01 | 49.91 | 50.54 | 49.57 | 50.04 | 50.31 |
| DoCoMo@mall | 50.33 | 50.75 | 50.69 | 49.37 | 50.68 | 50.86 |
| congested | 51.12 | 50.56 | 49.34 | 50.12 | 50.96 | 48.99 |
| bdp20 | 50.53 | 49.96 | 50.35 | 50.08 | 50.17 | 49.97 |
| bdp40 | 50.22 | 50.10 | 50.21 | 49.73 | 50.47 | 49.64 |
| queue10ms | 49.65 | 50.08 | 49.53 | 50.11 | 49.24 | 50.45 |
| queue5ms | 48.53 | 49.45 | 49.82 | 48.90 | 49.76 | 51.47 |
| queue2.5ms | 51.10 | 50.75 | 47.83 | 50.35 | 50.82 | 50.40 |

## Clean stock against 5%-loss RLT, CoDel: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 45.37 | 45.38 | 47.19 | 47.85 |
| Home_WiFi | 41.96 | 40.31 | 43.22 | 41.95 |
| Public | 48.85 | 49.08 | 48.99 | 48.98 |
| Corporate_WiFi | 34.84 | 37.35 | 36.68 | 38.45 |
| LTE | 44.74 | 45.85 | 49.08 | 46.63 |
| 5G | 41.71 | 41.72 | 48.54 | 44.89 |
| LEO | 45.06 | 45.33 | 47.48 | 47.93 |
| DoCoMo@Office | 39.80 | 37.91 | 43.05 | 40.75 |
| au@Office | 37.62 | 36.94 | 37.41 | 42.35 |
| WiFi@Office | 32.04 | 30.93 | 34.04 | 33.88 |
| DoCoMo@mall | 48.85 | 49.67 | 49.69 | 49.51 |
| congested | 48.21 | 48.68 | 48.71 | 47.90 |
| bdp20 | 48.55 | 48.79 | 49.86 | 48.04 |
| bdp40 | 48.80 | 47.44 | 47.69 | 47.85 |
| queue10ms | 42.78 | 41.06 | 41.87 | 42.43 |
| queue5ms | 40.58 | 42.24 | 42.14 | 41.23 |
| queue2.5ms | 41.06 | 41.68 | 41.13 | 42.79 |

## CoDel RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 50.30 | 48.17-51.16 | 97.90 | 49.04 | 47.30-53.86 | 97.94 |
| Home_WiFi | 57.50 | 37.57-57.54 | 97.25 | 54.36 | 50.01-56.38 | 97.49 |
| Public | 49.46 | 47.81-51.81 | 97.96 | 48.87 | 46.38-52.11 | 97.96 |
| Corporate_WiFi | 49.83 | 46.90-51.92 | 97.71 | 50.70 | 34.87-55.44 | 97.72 |
| LTE | 51.80 | 49.98-54.89 | 97.23 | 52.32 | 51.39-55.87 | 97.34 |
| 5G | 58.69 | 51.40-63.80 | 97.31 | 50.03 | 46.66-57.14 | 97.37 |
| LEO | 48.81 | 44.63-55.63 | 97.73 | 51.36 | 49.10-53.23 | 97.76 |
| DoCoMo@Office | 43.11 | 39.06-59.81 | 97.67 | 51.63 | 42.55-61.90 | 97.67 |
| au@Office | 51.66 | 45.92-52.09 | 97.71 | 41.04 | 35.72-61.19 | 97.72 |
| WiFi@Office | 47.21 | 40.01-58.77 | 97.72 | 54.56 | 51.30-60.29 | 97.72 |
| DoCoMo@mall | 49.75 | 46.15-53.58 | 97.95 | 51.58 | 47.52-53.48 | 97.95 |
| congested | 48.21 | 47.23-50.61 | 96.56 | 48.11 | 44.39-51.91 | 96.01 |
| bdp20 | 48.34 | 46.59-50.47 | 97.14 | 47.23 | 46.94-50.28 | 97.24 |
| bdp40 | 51.15 | 48.93-52.84 | 96.96 | 50.03 | 48.00-50.91 | 96.75 |
| queue10ms | 50.15 | 46.67-50.26 | 97.39 | 44.94 | 43.27-51.51 | 97.32 |
| queue5ms | 49.00 | 45.54-53.20 | 89.71 | 51.70 | 48.75-54.74 | 89.19 |
| queue2.5ms | 51.58 | 44.09-51.83 | 83.94 | 49.69 | 45.11-54.13 | 85.45 |

## RTT-adjusted GEO CoDel standalone goodput (%)

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---|---|---|
| CUBIC | 85.84 | 77.87 | 84.56 |
| Cuback | 85.29 | 78.45 | 82.74 |

## RTT-adjusted GEO CoDel competition (%)

| Controller | Case | Flow 1 | Flow 2 | Util | Flow 2 share | Share range |
|---|---|---|---|---|---|---|
| CUBIC | stock_stock | 40.68 | 49.06 | 90.32 | 54.67 | 33.12-62.30 |
| CUBIC | stock_rlt | 24.26 | 65.93 | 90.18 | 73.10 | 55.31-75.39 |
| CUBIC | rlt_stock | 64.81 | 24.98 | 89.79 | 27.82 | 24.92-32.74 |
| CUBIC | clean_lossy | 26.77 | 62.26 | 89.21 | 70.26 | 53.14-72.94 |
| CUBIC | lossy_clean | 61.93 | 27.13 | 88.80 | 30.35 | 28.30-36.43 |
| CUBIC | self | 45.73 | 43.65 | 89.13 | 48.84 | 29.24-70.12 |
| Cuback | stock_stock | 44.93 | 44.68 | 90.07 | 49.74 | 38.46-57.87 |
| Cuback | stock_rlt | 25.40 | 64.20 | 89.39 | 71.65 | 60.48-75.52 |
| Cuback | rlt_stock | 60.26 | 28.98 | 89.47 | 32.47 | 25.47-47.93 |
| Cuback | clean_lossy | 28.71 | 60.04 | 88.88 | 67.65 | 46.43-70.32 |
| Cuback | lossy_clean | 62.31 | 25.96 | 88.51 | 29.41 | 27.26-54.74 |
| Cuback | self | 44.05 | 44.14 | 88.19 | 50.05 | 46.97-71.28 |
minRTT is the minimum over the connection lifetime and can cease to describe
the idle RTT of a path whose characteristics change. The smoothed-gate option
already tracks the minima of completed congestion-avoidance periods, but only
used that history for the drain gate. The full-queue viability and
recalibration gates continued to use lifetime minRTT, and high queue was
defined as halfway between minRTT and fullRTT.

Adopt the bottom-RTT construction from the ABBA draft:

    bottom = max(period_min_smoothed - period_min_variance, minRTT)
    bottom = min(bottom, current_period_min), when the latter exists

When QUICLY_CC_ACCEL_ADAPTATION_SMOOTHED_GATE is clear, bottom remains minRTT,
preserving the default floor selection. Use the selected bottom consistently
to:

* require fullRTT to exceed bottom by more than 10ms before accelerating;
* call out a high queue when smoothed RTT reaches bottom + 10ms; and
* scale the expected high-queue interval used to decide on recalibration.

The drain gate remains deliberately distinct. It uses one half of the period-
minimum variance and the current-period minimum so acceleration can recover
from jitter while continuing to drive the observed floor down.

Defining high queue as bottom + 10ms replaces the midpoint of bottom and
fullRTT. The midpoint can be very high when calibration slow start fills a deep
buffer, allowing recalibration even though a substantial queue remains. A
fixed distance from the estimated bottom instead asks whether the path has
stayed close enough to its recent idle RTT for long enough that the former
full-queue observation may no longer describe it.

Extend the tests to cover lifetime-minimum and smoothed bottom selection,
bounding by the current-period minimum, the fullRTT gate, and high-queue
observations under both modes.

build/default/test.t passes all 31 top-level groups.

Benchmark method
----------------

The full suite was run in both the default 0x2 mode and the I-D 0x6 mode
(RECALIBRATE | SMOOTHED_GATE). The simulator's stable RTT profiles do not
demonstrate the intended benefit on mobile paths with a varying idle RTT; they
check that enabling the I-D estimator remains safe under stable conditions.

The per-packet random-loss probability is selected so that a full pipe has a 5%
or 10% probability of at least one random loss per RTT. Standalone tests are
seven 100-second runs measuring the latter 50 seconds. Competition tests are
seven 160-second runs per flow order measuring the latter 80 seconds. Self-
competition uses five 320-second runs and reports the final 40-second window.
Loss placement varies between repetitions through the TLS-context random
callback. The RTT-adjusted GEO CoDel tests instead use a 5ms target, 600ms
interval, 1000-second runs, and the latter 500 seconds. All values are
percentages. S/R means stock/ABBA; S->R means stock is created first and ABBA
second; R->S is the reverse. The RLT label is retained from the benchmark
tooling used to collect these results.

Across the complete set, 0x6 has no systematic effect relative to 0x2 on these
stable paths:

| Scenario | Median 0x6 - 0x2 | Values within 2pp |
|---|---:|---:|
| Tail standalone ABBA goodput | +0.02pp | 68/72 |
| CoDel standalone ABBA goodput | +0.01pp | 62/68 |
| Clean tail ABBA share | +0.02pp | 48/72 |
| Clean CoDel ABBA share | +0.31pp | 58/68 |
| Lossy ABBA tail share | +0.22pp | 37/72 |
| Lossy ABBA CoDel share | -0.06pp | 53/68 |
| Tail self-competition utilization | 0.00pp | 35/36 |
| CoDel self-competition utilization | 0.00pp | 34/34 |

The competition-share distributions contain the existing profile and flow-
order variance, while utilization is stable. The only standalone ABBA changes
greater than 5pp are in tail-drop 10%-loss runs: LTE CUBIC improves by 6.76pp,
GEO CUBIC falls by 6.46pp, and GEO Cuback falls by 12.28pp. No CoDel standalone
ABBA result changes by more than 5pp.

Compared with the preceding midpoint high-queue gate, the RTT-adjusted GEO
CoDel safety result improves materially. Under 0x6, CUBIC ABBA receives 51.77%
when created second and 47.02% when created first, rather than about 73% and
72%. Cuback receives 63.09% and 62.88%, rather than about 72% and 68%. The
corresponding lossy standalone goodput is 80.25% for CUBIC and 80.63% for
Cuback. The more conservative gate also lowers utilization on the synthetic
5ms and 2.5ms tail-drop queues.

Complete default 0x2 results
----------------------------

## Tail-drop standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 93.49/97.10 | 74.68/95.05 | 91.60/97.68 | 74.93/96.36 |
| Home_WiFi | 51.34/93.58 | 36.85/87.87 | 48.66/95.60 | 37.29/91.67 |
| Public | 97.89/98.03 | 96.05/95.31 | 98.03/98.01 | 94.94/97.36 |
| Corporate_WiFi | 53.22/97.49 | 33.42/97.13 | 47.80/97.60 | 33.64/97.38 |
| LTE | 83.13/96.28 | 61.72/87.63 | 80.92/96.80 | 65.74/91.48 |
| 5G | 60.14/93.96 | 41.34/92.17 | 56.34/96.38 | 44.98/94.06 |
| LEO | 80.83/95.20 | 60.59/91.22 | 77.26/97.05 | 61.91/94.10 |
| GEO | 98.01/96.01 | 92.45/91.67 | 95.54/97.84 | 80.71/97.18 |
| DoCoMo@Office | 89.23/97.68 | 65.32/97.22 | 95.30/97.80 | 74.25/97.37 |
| au@Office | 90.29/97.65 | 58.53/97.45 | 93.61/97.67 | 61.93/97.51 |
| WiFi@Office | 73.49/97.72 | 53.13/97.69 | 72.94/97.71 | 51.46/97.70 |
| DoCoMo@mall | 98.03/98.03 | 93.06/97.48 | 97.97/98.03 | 89.34/97.63 |
| congested | 97.93/97.91 | 97.85/97.81 | 97.89/97.87 | 97.47/97.83 |
| bdp20 | 97.14/97.68 | 96.38/96.20 | 97.64/97.52 | 96.14/96.16 |
| bdp40 | 97.74/97.80 | 92.50/95.48 | 97.34/97.62 | 94.74/94.52 |
| queue10ms | 73.36/76.55 | 54.33/65.12 | 74.72/78.24 | 55.35/66.16 |
| queue5ms | 68.50/63.52 | 50.60/54.38 | 68.50/65.63 | 52.80/54.37 |
| queue2.5ms | 68.11/56.13 | 51.17/46.91 | 65.03/54.41 | 49.36/46.07 |

## Clean tail-drop competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 48.98 | 51.59 | 48.37 | 49.44 | 50.71 | 46.64 |
| Home_WiFi | 49.39 | 47.39 | 49.48 | 49.60 | 51.96 | 52.11 |
| Public | 49.74 | 49.79 | 50.33 | 50.07 | 50.07 | 50.69 |
| Corporate_WiFi | 51.81 | 47.78 | 43.05 | 57.22 | 54.15 | 41.45 |
| LTE | 48.20 | 47.04 | 48.16 | 50.63 | 49.15 | 49.74 |
| 5G | 52.54 | 45.58 | 48.92 | 49.13 | 47.54 | 51.54 |
| LEO | 50.56 | 48.92 | 53.01 | 50.73 | 47.66 | 49.01 |
| GEO | 50.13 | 49.98 | 50.03 | 50.03 | 49.90 | 50.12 |
| DoCoMo@Office | 50.03 | 49.96 | 50.06 | 50.10 | 50.51 | 50.02 |
| au@Office | 51.41 | 49.81 | 50.24 | 52.05 | 49.83 | 47.86 |
| WiFi@Office | 52.02 | 54.47 | 46.68 | 54.73 | 54.80 | 45.55 |
| DoCoMo@mall | 49.74 | 49.71 | 50.32 | 49.86 | 49.79 | 50.19 |
| congested | 51.10 | 49.17 | 52.64 | 51.79 | 50.97 | 50.37 |
| bdp20 | 49.94 | 51.95 | 50.13 | 49.28 | 49.86 | 49.04 |
| bdp40 | 50.55 | 50.48 | 49.20 | 49.96 | 52.99 | 49.06 |
| queue10ms | 51.44 | 59.20 | 50.95 | 49.91 | 60.77 | 49.41 |
| queue5ms | 50.05 | 59.20 | 58.67 | 49.29 | 59.29 | 59.70 |
| queue2.5ms | 49.85 | 53.89 | 54.63 | 48.53 | 53.12 | 53.53 |

## Clean stock against 5%-loss RLT, tail drop: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 34.94 | 35.24 | 30.27 | 33.65 |
| Home_WiFi | 31.13 | 28.83 | 31.99 | 29.51 |
| Public | 29.00 | 26.47 | 29.36 | 28.66 |
| Corporate_WiFi | 17.36 | 16.56 | 17.12 | 16.37 |
| LTE | 29.02 | 27.33 | 29.20 | 30.19 |
| 5G | 22.05 | 22.43 | 19.60 | 22.34 |
| LEO | 25.62 | 26.80 | 24.20 | 22.23 |
| GEO | 36.68 | 42.70 | 41.30 | 38.97 |
| DoCoMo@Office | 20.80 | 26.71 | 22.67 | 24.41 |
| au@Office | 20.24 | 21.41 | 18.20 | 21.67 |
| WiFi@Office | 24.66 | 23.76 | 24.80 | 24.51 |
| DoCoMo@mall | 30.65 | 31.13 | 29.17 | 29.53 |
| congested | 44.36 | 47.18 | 41.98 | 40.65 |
| bdp20 | 49.28 | 50.23 | 48.52 | 48.25 |
| bdp40 | 48.25 | 46.10 | 47.12 | 44.77 |
| queue10ms | 53.68 | 40.96 | 52.68 | 45.41 |
| queue5ms | 52.57 | 51.83 | 53.66 | 53.58 |
| queue2.5ms | 48.81 | 49.01 | 48.74 | 48.60 |

## Tail-drop RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 49.34 | 42.23-56.28 | 98.02 | 48.11 | 45.20-54.47 | 98.02 |
| Home_WiFi | 51.31 | 49.56-52.98 | 97.44 | 55.44 | 54.57-57.13 | 97.62 |
| Public | 52.69 | 37.48-58.39 | 98.02 | 51.11 | 29.91-57.64 | 98.02 |
| Corporate_WiFi | 47.43 | 45.56-54.28 | 97.72 | 50.79 | 39.57-57.50 | 97.72 |
| LTE | 43.28 | 39.71-46.70 | 98.02 | 51.18 | 43.17-55.27 | 98.02 |
| 5G | 53.44 | 41.01-60.60 | 97.59 | 50.55 | 47.28-50.91 | 97.67 |
| LEO | 53.42 | 40.12-68.15 | 98.03 | 49.93 | 38.78-52.56 | 98.03 |
| GEO | 47.47 | 36.79-62.52 | 98.01 | 61.44 | 50.98-63.80 | 97.99 |
| DoCoMo@Office | 54.72 | 49.20-79.87 | 97.72 | 49.08 | 44.18-54.03 | 97.72 |
| au@Office | 47.15 | 24.40-62.21 | 97.73 | 45.26 | 28.73-53.38 | 97.73 |
| WiFi@Office | 49.26 | 48.10-53.79 | 97.72 | 51.19 | 50.94-55.00 | 97.72 |
| DoCoMo@mall | 57.34 | 41.81-62.45 | 98.03 | 45.15 | 38.18-58.13 | 98.03 |
| congested | 51.48 | 45.81-61.36 | 97.76 | 49.91 | 46.90-51.28 | 97.89 |
| bdp20 | 52.12 | 49.34-55.99 | 97.73 | 49.24 | 46.68-50.00 | 97.63 |
| bdp40 | 52.07 | 49.73-53.01 | 97.90 | 51.31 | 45.47-52.05 | 97.76 |
| queue10ms | 53.39 | 49.77-54.22 | 95.64 | 50.63 | 48.14-54.41 | 96.02 |
| queue5ms | 50.77 | 48.57-51.50 | 83.05 | 49.29 | 48.74-52.62 | 83.08 |
| queue2.5ms | 50.55 | 47.39-51.08 | 73.61 | 50.06 | 47.75-52.15 | 74.44 |

## CoDel standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 89.37/96.25 | 72.41/94.21 | 86.28/96.86 | 70.61/95.05 |
| Home_WiFi | 54.50/93.42 | 36.69/88.53 | 50.04/95.05 | 33.55/90.91 |
| Public | 93.81/95.76 | 87.72/92.95 | 94.28/96.77 | 87.21/95.15 |
| Corporate_WiFi | 51.49/97.45 | 34.48/97.09 | 49.41/97.59 | 33.34/97.35 |
| LTE | 77.08/91.52 | 57.29/83.30 | 80.29/94.34 | 57.22/89.18 |
| 5G | 55.51/94.86 | 42.38/89.81 | 56.64/95.08 | 41.21/91.42 |
| LEO | 77.16/94.56 | 60.54/88.84 | 73.60/95.48 | 54.64/92.64 |
| DoCoMo@Office | 80.60/97.34 | 72.05/96.94 | 88.57/97.58 | 66.72/97.09 |
| au@Office | 80.63/97.47 | 58.28/97.30 | 75.69/97.57 | 47.67/97.36 |
| WiFi@Office | 71.96/97.72 | 50.36/97.69 | 72.83/97.72 | 52.90/97.70 |
| DoCoMo@mall | 91.97/97.22 | 84.67/96.03 | 91.55/97.05 | 83.84/96.08 |
| congested | 95.52/95.52 | 93.33/91.36 | 95.66/95.08 | 93.05/91.79 |
| bdp20 | 96.68/96.62 | 94.05/93.55 | 96.08/96.36 | 94.53/93.63 |
| bdp40 | 94.53/93.84 | 89.48/91.13 | 93.98/94.86 | 91.21/88.97 |
| queue10ms | 75.23/76.46 | 55.08/66.60 | 71.12/74.63 | 53.20/63.23 |
| queue5ms | 70.60/64.69 | 49.66/55.46 | 68.08/64.90 | 50.05/55.50 |
| queue2.5ms | 66.09/55.69 | 47.92/46.57 | 67.46/58.02 | 49.61/47.95 |

## Clean CoDel competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 48.45 | 49.28 | 50.94 | 49.68 | 48.65 | 49.28 |
| Home_WiFi | 50.05 | 50.76 | 49.42 | 49.68 | 50.48 | 50.30 |
| Public | 50.45 | 50.00 | 50.25 | 49.62 | 49.64 | 50.16 |
| Corporate_WiFi | 50.48 | 49.67 | 49.92 | 50.18 | 50.67 | 50.12 |
| LTE | 49.84 | 50.26 | 50.56 | 49.78 | 51.07 | 50.04 |
| 5G | 49.44 | 49.84 | 49.44 | 50.47 | 51.77 | 48.62 |
| LEO | 50.07 | 49.64 | 49.12 | 51.35 | 50.69 | 50.46 |
| DoCoMo@Office | 59.83 | 62.80 | 43.46 | 48.90 | 60.34 | 42.28 |
| au@Office | 46.58 | 40.17 | 46.51 | 47.58 | 53.45 | 47.16 |
| WiFi@Office | 49.51 | 49.72 | 50.81 | 49.56 | 49.83 | 50.12 |
| DoCoMo@mall | 49.41 | 50.79 | 48.98 | 51.16 | 51.14 | 49.87 |
| congested | 49.41 | 49.15 | 50.34 | 49.40 | 50.37 | 50.14 |
| bdp20 | 49.96 | 49.45 | 49.03 | 49.68 | 49.74 | 49.09 |
| bdp40 | 51.21 | 49.76 | 49.32 | 50.08 | 49.43 | 49.85 |
| queue10ms | 49.52 | 49.81 | 49.27 | 50.69 | 50.77 | 48.94 |
| queue5ms | 50.64 | 57.99 | 58.18 | 49.19 | 57.48 | 58.73 |
| queue2.5ms | 51.35 | 53.68 | 53.54 | 50.28 | 54.22 | 53.53 |

## Clean stock against 5%-loss RLT, CoDel: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 47.40 | 45.63 | 47.05 | 44.02 |
| Home_WiFi | 40.96 | 40.58 | 43.72 | 41.81 |
| Public | 49.40 | 48.56 | 49.51 | 48.19 |
| Corporate_WiFi | 34.15 | 33.77 | 34.42 | 37.10 |
| LTE | 46.66 | 45.45 | 50.51 | 46.65 |
| 5G | 43.47 | 41.99 | 49.11 | 46.79 |
| LEO | 45.21 | 42.35 | 48.27 | 47.63 |
| DoCoMo@Office | 39.30 | 35.43 | 49.74 | 39.42 |
| au@Office | 35.33 | 33.71 | 40.87 | 36.61 |
| WiFi@Office | 32.11 | 33.55 | 32.05 | 31.75 |
| DoCoMo@mall | 49.30 | 49.45 | 49.46 | 49.15 |
| congested | 48.79 | 50.29 | 49.65 | 49.32 |
| bdp20 | 47.82 | 49.11 | 48.24 | 48.07 |
| bdp40 | 48.69 | 48.17 | 49.19 | 48.27 |
| queue10ms | 42.04 | 41.85 | 42.71 | 44.35 |
| queue5ms | 52.58 | 52.59 | 52.56 | 53.17 |
| queue2.5ms | 49.87 | 48.75 | 48.30 | 48.24 |

## CoDel RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 50.76 | 44.71-51.28 | 97.94 | 49.79 | 49.03-55.58 | 97.95 |
| Home_WiFi | 51.49 | 50.07-55.47 | 97.35 | 54.32 | 49.07-56.07 | 97.49 |
| Public | 49.27 | 45.50-50.84 | 97.91 | 49.38 | 47.47-52.38 | 97.92 |
| Corporate_WiFi | 47.42 | 45.43-50.77 | 97.71 | 50.38 | 49.20-52.07 | 97.72 |
| LTE | 54.02 | 47.62-58.09 | 97.45 | 52.82 | 51.16-57.31 | 97.41 |
| 5G | 52.39 | 47.40-56.02 | 97.22 | 51.26 | 45.93-57.36 | 97.29 |
| LEO | 49.99 | 46.94-53.42 | 97.77 | 51.72 | 49.16-54.33 | 97.69 |
| DoCoMo@Office | 59.93 | 42.96-65.29 | 97.67 | 57.03 | 46.74-66.25 | 97.64 |
| au@Office | 50.94 | 38.90-56.90 | 97.71 | 51.23 | 41.66-58.53 | 97.71 |
| WiFi@Office | 50.29 | 49.15-52.59 | 97.72 | 49.98 | 44.67-50.69 | 97.72 |
| DoCoMo@mall | 49.58 | 47.28-51.96 | 97.84 | 51.33 | 50.29-54.40 | 97.98 |
| congested | 50.61 | 46.62-51.77 | 96.63 | 50.43 | 47.84-53.23 | 95.78 |
| bdp20 | 50.03 | 46.37-50.91 | 97.29 | 47.37 | 46.84-51.35 | 97.29 |
| bdp40 | 50.34 | 49.49-51.87 | 96.97 | 49.22 | 43.90-50.27 | 96.84 |
| queue10ms | 49.48 | 48.56-50.54 | 97.20 | 46.11 | 43.87-50.73 | 97.28 |
| queue5ms | 48.96 | 48.55-52.45 | 83.43 | 50.03 | 46.94-51.49 | 84.77 |
| queue2.5ms | 49.58 | 49.00-52.62 | 75.57 | 50.15 | 48.90-51.07 | 75.84 |

## RTT-adjusted GEO CoDel standalone goodput (%)

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---|---|---|
| CUBIC | 85.84 | 78.70 | 80.19 |
| Cuback | 85.29 | 77.78 | 80.25 |

## RTT-adjusted GEO CoDel competition (%)

| Controller | Case | Flow 1 | Flow 2 | Util | Flow 2 share | Share range |
|---|---|---|---|---|---|---|
| CUBIC | stock_stock | 46.37 | 43.32 | 90.06 | 48.30 | 34.98-64.13 |
| CUBIC | stock_rlt | 49.34 | 41.39 | 90.73 | 45.62 | 35.46-54.94 |
| CUBIC | rlt_stock | 42.83 | 47.29 | 90.52 | 52.48 | 40.83-63.59 |
| CUBIC | clean_lossy | 56.19 | 33.64 | 89.88 | 37.45 | 33.94-53.53 |
| CUBIC | lossy_clean | 35.91 | 53.77 | 89.76 | 59.96 | 35.67-62.94 |
| CUBIC | self | 42.27 | 46.89 | 88.67 | 52.88 | 48.35-56.52 |
| Cuback | stock_stock | 47.25 | 43.34 | 90.26 | 47.85 | 39.03-68.14 |
| Cuback | stock_rlt | 36.66 | 52.66 | 89.54 | 58.96 | 51.03-68.75 |
| Cuback | rlt_stock | 57.70 | 31.56 | 89.50 | 35.36 | 31.08-39.95 |
| Cuback | clean_lossy | 39.66 | 48.42 | 88.68 | 55.40 | 48.61-59.84 |
| Cuback | lossy_clean | 48.48 | 40.07 | 88.55 | 45.25 | 37.07-57.18 |
| Cuback | self | 46.51 | 42.92 | 88.85 | 47.99 | 46.24-59.01 |

Complete I-D 0x6 results
-------------------------

## Tail-drop standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 93.54/97.20 | 73.26/94.61 | 93.30/97.81 | 73.79/96.30 |
| Home_WiFi | 53.61/93.78 | 37.02/88.26 | 54.95/95.16 | 34.95/91.40 |
| Public | 98.03/98.03 | 94.88/97.19 | 97.98/98.03 | 96.19/97.75 |
| Corporate_WiFi | 48.31/97.48 | 36.18/97.26 | 49.63/97.59 | 36.19/97.35 |
| LTE | 83.11/96.49 | 62.11/94.39 | 88.74/97.15 | 64.19/92.03 |
| 5G | 54.84/95.90 | 40.01/92.30 | 62.79/96.39 | 41.45/93.65 |
| LEO | 79.70/96.60 | 54.00/92.71 | 76.85/97.28 | 55.52/94.68 |
| GEO | 97.88/94.68 | 89.63/85.21 | 98.01/97.57 | 86.66/84.90 |
| DoCoMo@Office | 93.69/97.77 | 72.01/97.23 | 95.34/97.78 | 71.24/97.42 |
| au@Office | 81.45/97.63 | 54.39/97.46 | 94.67/97.69 | 51.51/97.57 |
| WiFi@Office | 73.21/97.72 | 52.12/97.70 | 71.00/97.72 | 51.97/97.70 |
| DoCoMo@mall | 98.03/98.03 | 94.55/97.45 | 98.03/98.03 | 92.78/97.83 |
| congested | 97.89/97.97 | 97.83/97.79 | 97.95/98.01 | 97.55/97.83 |
| bdp20 | 97.56/97.52 | 96.56/96.64 | 97.42/97.28 | 95.80/96.28 |
| bdp40 | 97.80/97.59 | 95.74/94.24 | 97.40/97.50 | 95.43/94.61 |
| queue10ms | 73.08/80.02 | 54.25/66.33 | 74.52/78.01 | 50.18/66.29 |
| queue5ms | 66.53/65.17 | 50.18/55.29 | 67.96/64.88 | 49.90/56.13 |
| queue2.5ms | 62.67/55.18 | 49.62/47.91 | 65.52/56.20 | 49.55/46.41 |

## Clean tail-drop competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 49.74 | 53.00 | 51.40 | 50.84 | 50.67 | 53.38 |
| Home_WiFi | 47.40 | 49.17 | 49.88 | 49.18 | 48.37 | 49.73 |
| Public | 49.63 | 49.57 | 49.86 | 49.95 | 49.97 | 50.28 |
| Corporate_WiFi | 54.71 | 52.72 | 48.96 | 58.46 | 49.59 | 42.51 |
| LTE | 49.70 | 50.39 | 49.95 | 48.96 | 49.99 | 53.45 |
| 5G | 53.14 | 49.79 | 50.29 | 50.17 | 47.41 | 49.24 |
| LEO | 48.90 | 53.44 | 50.46 | 49.53 | 49.33 | 49.46 |
| GEO | 49.98 | 49.98 | 50.05 | 50.01 | 49.89 | 49.96 |
| DoCoMo@Office | 50.03 | 49.91 | 49.87 | 49.96 | 49.91 | 50.09 |
| au@Office | 51.47 | 49.91 | 46.86 | 49.98 | 52.18 | 47.86 |
| WiFi@Office | 55.66 | 64.52 | 62.82 | 52.86 | 63.71 | 59.89 |
| DoCoMo@mall | 49.79 | 49.60 | 50.24 | 49.76 | 49.82 | 50.24 |
| congested | 51.56 | 50.00 | 49.06 | 49.43 | 45.58 | 49.07 |
| bdp20 | 50.52 | 50.49 | 48.54 | 49.56 | 51.01 | 50.19 |
| bdp40 | 50.28 | 48.79 | 48.94 | 52.79 | 49.99 | 50.44 |
| queue10ms | 51.35 | 59.10 | 59.71 | 49.86 | 59.45 | 59.18 |
| queue5ms | 49.13 | 58.75 | 59.33 | 48.44 | 57.99 | 58.80 |
| queue2.5ms | 48.55 | 53.53 | 53.64 | 50.75 | 53.24 | 54.42 |

## Clean stock against 5%-loss RLT, tail drop: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 35.34 | 32.99 | 36.73 | 36.33 |
| Home_WiFi | 31.14 | 31.64 | 30.83 | 30.49 |
| Public | 33.08 | 31.62 | 32.50 | 28.18 |
| Corporate_WiFi | 28.25 | 28.25 | 26.53 | 26.86 |
| LTE | 31.47 | 27.39 | 28.09 | 28.15 |
| 5G | 20.65 | 16.93 | 19.33 | 19.33 |
| LEO | 24.05 | 24.02 | 24.99 | 24.60 |
| GEO | 42.00 | 33.98 | 38.08 | 40.25 |
| DoCoMo@Office | 21.98 | 22.29 | 20.30 | 21.81 |
| au@Office | 21.15 | 17.63 | 17.42 | 15.18 |
| WiFi@Office | 33.08 | 32.91 | 33.83 | 33.61 |
| DoCoMo@mall | 25.23 | 28.92 | 23.08 | 30.57 |
| congested | 43.96 | 47.52 | 41.55 | 45.71 |
| bdp20 | 48.29 | 49.35 | 48.74 | 48.62 |
| bdp40 | 46.97 | 46.78 | 46.78 | 46.14 |
| queue10ms | 53.23 | 51.86 | 52.76 | 53.01 |
| queue5ms | 52.17 | 53.38 | 52.81 | 53.28 |
| queue2.5ms | 48.70 | 49.37 | 48.97 | 49.41 |

## Tail-drop RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 55.53 | 48.63-58.68 | 98.02 | 47.05 | 45.27-54.50 | 98.02 |
| Home_WiFi | 48.11 | 45.86-58.51 | 97.40 | 51.41 | 48.74-52.77 | 97.55 |
| Public | 45.23 | 36.00-53.77 | 98.03 | 46.36 | 32.55-55.53 | 98.03 |
| Corporate_WiFi | 45.95 | 43.20-47.68 | 97.71 | 48.73 | 47.62-59.79 | 97.72 |
| LTE | 52.68 | 45.05-54.54 | 98.03 | 47.13 | 44.31-50.16 | 98.03 |
| 5G | 52.92 | 42.53-63.27 | 97.51 | 48.47 | 43.57-65.56 | 97.71 |
| LEO | 49.20 | 32.43-60.47 | 98.03 | 52.61 | 42.44-58.57 | 98.03 |
| GEO | 46.52 | 32.91-54.07 | 98.00 | 47.30 | 20.36-68.73 | 97.97 |
| DoCoMo@Office | 55.17 | 38.90-69.60 | 97.72 | 41.23 | 36.08-61.40 | 97.73 |
| au@Office | 63.54 | 43.66-67.50 | 97.73 | 51.62 | 40.62-78.28 | 97.73 |
| WiFi@Office | 46.75 | 45.32-49.87 | 97.72 | 50.85 | 50.14-53.89 | 97.72 |
| DoCoMo@mall | 50.63 | 45.99-61.02 | 98.03 | 54.21 | 46.46-68.83 | 98.03 |
| congested | 56.74 | 45.10-60.66 | 97.84 | 54.36 | 46.91-57.45 | 97.79 |
| bdp20 | 49.56 | 45.39-52.29 | 97.81 | 49.22 | 45.88-51.81 | 97.81 |
| bdp40 | 51.28 | 49.54-53.62 | 97.86 | 50.21 | 42.84-52.82 | 97.91 |
| queue10ms | 49.62 | 47.52-54.82 | 95.17 | 51.04 | 49.89-51.90 | 94.92 |
| queue5ms | 49.34 | 47.34-51.71 | 83.58 | 49.05 | 48.64-51.69 | 82.53 |
| queue2.5ms | 51.72 | 50.14-52.31 | 75.68 | 48.64 | 47.50-50.46 | 72.90 |

## CoDel standalone goodput (%)

| Profile | CUBIC 5% S/R | CUBIC 10% S/R | Cuback 5% S/R | Cuback 10% S/R |
|---|---|---|---|---|
| DSL | 85.71/96.29 | 72.92/94.12 | 87.14/96.73 | 75.61/94.93 |
| Home_WiFi | 47.86/93.50 | 37.29/86.93 | 50.45/95.16 | 36.16/91.51 |
| Public | 94.25/95.58 | 89.55/94.36 | 92.38/97.04 | 87.44/95.82 |
| Corporate_WiFi | 52.09/97.45 | 33.56/97.16 | 53.59/97.60 | 36.74/97.34 |
| LTE | 81.45/92.22 | 63.27/87.76 | 73.90/92.16 | 62.75/88.60 |
| 5G | 62.19/95.56 | 44.14/89.42 | 53.50/95.20 | 43.00/92.07 |
| LEO | 74.25/94.56 | 53.82/91.04 | 75.13/95.85 | 56.10/91.76 |
| DoCoMo@Office | 80.13/97.35 | 72.34/96.94 | 86.72/97.55 | 68.32/97.01 |
| au@Office | 78.49/97.56 | 55.42/97.36 | 70.56/97.57 | 51.04/97.35 |
| WiFi@Office | 69.95/97.71 | 51.56/97.70 | 72.46/97.71 | 51.28/97.70 |
| DoCoMo@mall | 91.48/97.05 | 83.87/96.15 | 91.34/97.07 | 83.27/96.36 |
| congested | 94.88/95.02 | 90.96/93.35 | 94.50/94.82 | 92.43/92.55 |
| bdp20 | 96.28/96.42 | 94.23/94.33 | 96.32/96.18 | 94.37/93.59 |
| bdp40 | 93.96/94.55 | 88.12/91.61 | 94.44/94.97 | 88.72/89.96 |
| queue10ms | 74.92/76.44 | 56.50/65.31 | 73.22/77.71 | 55.69/64.46 |
| queue5ms | 70.78/64.82 | 51.72/55.75 | 66.80/64.46 | 49.84/53.47 |
| queue2.5ms | 65.93/55.66 | 48.64/47.37 | 64.58/54.86 | 48.89/47.35 |

## Clean CoDel competition: second/RLT share (%)

| Profile | CUBIC S/S | CUBIC S->R | CUBIC R->S | Cuback S/S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|---|---|
| DSL | 49.98 | 48.24 | 49.44 | 49.57 | 51.11 | 53.79 |
| Home_WiFi | 49.98 | 49.14 | 50.23 | 50.38 | 49.49 | 49.25 |
| Public | 52.00 | 49.66 | 48.94 | 49.73 | 51.21 | 50.88 |
| Corporate_WiFi | 48.87 | 48.21 | 50.60 | 49.09 | 50.32 | 49.89 |
| LTE | 51.19 | 49.61 | 50.03 | 50.46 | 51.76 | 50.65 |
| 5G | 49.87 | 50.35 | 50.98 | 50.58 | 50.31 | 48.72 |
| LEO | 51.44 | 49.33 | 50.49 | 48.29 | 49.14 | 50.22 |
| DoCoMo@Office | 59.76 | 51.85 | 40.96 | 52.14 | 53.04 | 52.25 |
| au@Office | 54.23 | 45.86 | 47.19 | 45.67 | 53.78 | 59.50 |
| WiFi@Office | 49.22 | 49.64 | 50.30 | 49.79 | 49.63 | 50.43 |
| DoCoMo@mall | 49.43 | 49.96 | 50.08 | 50.99 | 50.56 | 51.11 |
| congested | 49.94 | 51.32 | 49.57 | 50.08 | 49.59 | 50.79 |
| bdp20 | 50.85 | 49.97 | 49.52 | 50.76 | 50.33 | 49.70 |
| bdp40 | 50.05 | 50.18 | 49.45 | 49.08 | 49.26 | 49.63 |
| queue10ms | 49.71 | 49.93 | 50.54 | 52.79 | 50.87 | 51.18 |
| queue5ms | 49.67 | 58.43 | 58.88 | 49.14 | 59.00 | 59.96 |
| queue2.5ms | 49.49 | 53.79 | 54.03 | 50.96 | 53.90 | 53.92 |

## Clean stock against 5%-loss RLT, CoDel: RLT share (%)

| Profile | CUBIC S->R | CUBIC R->S | Cuback S->R | Cuback R->S |
|---|---|---|---|---|
| DSL | 45.90 | 45.85 | 46.10 | 46.02 |
| Home_WiFi | 40.80 | 40.50 | 43.71 | 41.63 |
| Public | 47.48 | 47.94 | 50.48 | 48.90 |
| Corporate_WiFi | 34.97 | 37.39 | 39.38 | 39.39 |
| LTE | 44.84 | 46.08 | 50.45 | 47.65 |
| 5G | 42.79 | 44.43 | 49.01 | 44.44 |
| LEO | 43.75 | 44.73 | 47.83 | 47.48 |
| DoCoMo@Office | 48.82 | 33.37 | 46.10 | 41.60 |
| au@Office | 38.48 | 37.03 | 38.76 | 42.30 |
| WiFi@Office | 33.45 | 33.35 | 33.20 | 33.00 |
| DoCoMo@mall | 47.96 | 48.80 | 49.92 | 49.60 |
| congested | 48.72 | 50.06 | 48.54 | 49.10 |
| bdp20 | 48.18 | 48.52 | 48.90 | 48.89 |
| bdp40 | 48.36 | 47.94 | 48.61 | 47.84 |
| queue10ms | 42.83 | 42.39 | 42.72 | 42.11 |
| queue5ms | 52.23 | 52.17 | 52.03 | 53.72 |
| queue2.5ms | 49.35 | 49.46 | 49.19 | 49.16 |

## CoDel RLT self-competition at 5% loss (%)

| Profile | CUBIC median | CUBIC range | CUBIC util | Cuback median | Cuback range | Cuback util |
|---|---|---|---|---|---|---|
| DSL | 52.33 | 50.99-52.92 | 97.91 | 48.90 | 45.80-49.84 | 97.94 |
| Home_WiFi | 51.21 | 49.93-58.51 | 97.23 | 52.70 | 50.43-54.43 | 97.52 |
| Public | 49.98 | 47.79-52.33 | 97.94 | 47.28 | 46.65-51.16 | 97.97 |
| Corporate_WiFi | 49.96 | 44.57-55.76 | 97.71 | 49.70 | 44.95-52.02 | 97.72 |
| LTE | 53.18 | 50.71-55.25 | 97.16 | 52.83 | 47.06-55.09 | 97.23 |
| 5G | 52.37 | 46.64-56.59 | 97.39 | 52.62 | 52.04-59.36 | 97.40 |
| LEO | 53.15 | 46.84-55.35 | 97.68 | 50.49 | 47.69-53.70 | 97.71 |
| DoCoMo@Office | 50.35 | 36.01-62.63 | 97.66 | 53.51 | 46.36-55.56 | 97.66 |
| au@Office | 42.61 | 38.49-45.34 | 97.72 | 46.22 | 41.71-61.31 | 97.71 |
| WiFi@Office | 50.65 | 47.06-52.38 | 97.72 | 50.12 | 50.06-55.61 | 97.72 |
| DoCoMo@mall | 49.69 | 48.63-51.69 | 97.97 | 49.00 | 47.17-51.62 | 97.95 |
| congested | 48.91 | 48.16-50.79 | 96.86 | 51.77 | 48.30-55.50 | 96.46 |
| bdp20 | 50.71 | 48.88-52.14 | 97.26 | 50.32 | 48.30-51.46 | 97.26 |
| bdp40 | 50.71 | 49.40-53.04 | 96.94 | 48.73 | 47.89-52.26 | 96.67 |
| queue10ms | 48.43 | 45.57-51.12 | 95.76 | 50.38 | 46.90-54.58 | 96.11 |
| queue5ms | 50.80 | 49.02-53.32 | 84.05 | 49.53 | 48.99-51.50 | 82.99 |
| queue2.5ms | 49.11 | 48.67-51.14 | 75.05 | 49.61 | 46.83-53.29 | 74.24 |

## RTT-adjusted GEO CoDel standalone goodput (%)

| Controller | Clean stock | Lossy stock | Lossy RLT |
|---|---|---|---|
| CUBIC | 85.84 | 78.20 | 80.25 |
| Cuback | 85.28 | 77.38 | 80.63 |

## RTT-adjusted GEO CoDel competition (%)

| Controller | Case | Flow 1 | Flow 2 | Util | Flow 2 share | Share range |
|---|---|---|---|---|---|---|
| CUBIC | stock_stock | 44.78 | 45.54 | 90.32 | 50.42 | 37.69-67.57 |
| CUBIC | stock_rlt | 43.81 | 47.02 | 90.30 | 51.77 | 43.78-67.16 |
| CUBIC | rlt_stock | 42.70 | 48.10 | 90.60 | 52.98 | 45.59-55.09 |
| CUBIC | clean_lossy | 48.47 | 41.60 | 90.07 | 46.19 | 33.28-53.02 |
| CUBIC | lossy_clean | 36.78 | 53.31 | 90.09 | 59.18 | 45.33-66.01 |
| CUBIC | self | 40.90 | 48.31 | 89.01 | 54.15 | 40.94-59.06 |
| Cuback | stock_stock | 43.29 | 47.36 | 89.89 | 52.24 | 41.65-58.86 |
| Cuback | stock_rlt | 32.88 | 56.21 | 89.58 | 63.09 | 52.77-66.38 |
| Cuback | rlt_stock | 56.61 | 33.42 | 89.39 | 37.12 | 29.27-43.42 |
| Cuback | clean_lossy | 42.75 | 46.81 | 88.69 | 52.27 | 36.72-62.21 |
| Cuback | lossy_clean | 48.50 | 39.76 | 88.27 | 45.05 | 35.26-58.94 |
| Cuback | self | 40.98 | 48.04 | 88.56 | 53.96 | 45.70-57.33 |
Add cumulative counters for congestion-avoidance CWND growth, the portion
selected by accelerated increase, accelerated periods, ECN-terminated
accelerated periods, and recalibrations. Export the retained full RTT and
current and past period-minimum estimates alongside those counters.

Track whether Cuback's active bytes-per-MTU interval was selected by ABBA so
that growth is attributed when the interval completes. Preserve this pending
attribution and the active-period bit across late-ACK undo, while leaving the
cumulative observations intact.

Use a small local EWMA for the optional smoothed period-minimum gate instead
of embedding a general QUIC RTT estimator. The exported variance uses a large
positive sentinel when smoothing is disabled, and the recalibration counter
uses UINT64_MAX when recalibration is unavailable.

Extend the CUBIC and Cuback tests to cover growth attribution, period and ECN
counts, recalibration counts, estimator updates, and disabled-mode sentinels.
ABBA now maintains its period-minimum EWMA locally and no longer needs to customize the initial variance of quicly_rtt_t. Remove the unused wrapper and its dedicated test, restoring the ordinary RTT estimator API and implementation to the shape on master.
Recalibration is useful only when accelerated increase indicates that the bottleneck might be underutilized. Track the CWND growth selected by ABBA during each congestion-avoidance period and require it to reach one quarter of CWND times the latest reduction fraction before returning to calibration slow start. Use the loss or ECN beta corresponding to the congestion event that opened the period.

Replace the former accel_in_current_period bit with the byte counter. Continue to use its zero-to-nonzero transition for num_accel_periods, reset it at period boundaries, and preserve it through late-ACK undo as part of the accelerated-adaptation snapshot.

Evaluate the high-queue observation before the new suppression predicate so that an insufficient-gain period does not hide evidence that the queue remains occupied.

Extend the congestion-control tests to cover accumulation, loss and ECN thresholds, period reset, ECN accounting, and restoration by late-ACK undo.

build/default/test.t passes all 31 top-level groups.
Recalibration slow start deliberately probes beyond the CWND at which ABBA
decided that the path might have changed. A congestion signal ending that
probe is expected to be synchronous with competing flows. Retain the CWND at
which recalibration began and establish the next congestion-avoidance epoch as
if this flow had received the signal there: reduce the retained CWND by the
ordinary loss or ECN beta and use it as Wmax. This avoids retaining the probe
peak while competing flows reduce their established share. The policy state
reset performed on entering recalibration continues to suppress Fast
Convergence.

Establish the expected high-RTT interval before evaluating the queue and gain
guards. When fullRTT clears the high-queue threshold, continue to require ABBA
to recover one quarter of the latest reduction before recalibrating. When
fullRTT does not clear that threshold, accelerated increase cannot provide the
same evidence in the default modes, so permit time-based recalibration but wait
eight expected intervals rather than two. The longer interval treats the
absence of high RTT as weaker evidence of underutilization.

Extend the CUBIC and Cuback tests to cover retained-CWND reduction, Wmax,
suppressed Fast Convergence, Cuback's bandwidth estimate, late-ACK undo, high-
RTT interval initialization, the accelerated-gain guard, and the longer
low-fullRTT interval.

build/default/test.t passes all 31 top-level groups.

Focused benchmark
-----------------

The previously worst clean tail-drop cases use one stock and one ABBA flow,
80ms RTT, a 400-packet BDP, 5ms or 10ms queues, 50 expected congestion periods,
and ten repetitions. The saved pre-change results are from 31f8be8 (HEAD^^),
whereas HEAD^ already controls recalibration using the accelerated-gain guard.
The lower pre-change utilization shows that recalibration is firing and its
slow-start probes are producing synchronous congestion losses, making this the
appropriate baseline for evaluating the changed recalibration response. Share
is the second flow's share for stock/stock and ABBA's share for stock/ABBA.
Throughput and utilization are percentages of link capacity. Order indicates
whether the ABBA flow was created first or last.

| Mode | CC | Queue | Order | Share stock/pre/new | Util stock/pre/new | New stock/ABBA throughput |
|---|---|---:|---|---:|---:|---:|
| 0x2 | Cuback | 5ms | first | 49.37/63.63/50.49 | 91.01/83.34/89.03 | 43.64/45.08 |
| 0x2 | Cuback | 5ms | last | 49.74/61.96/50.46 | 90.72/82.30/87.89 | 44.11/44.64 |
| 0x6 | Cuback | 5ms | first | 49.37/64.48/50.51 | 91.01/83.20/88.34 | 43.48/44.38 |
| 0x6 | Cuback | 5ms | last | 49.74/62.11/48.74 | 90.72/83.22/87.61 | 44.85/42.60 |
| 0x2 | CUBIC | 5ms | first | 51.23/66.61/50.91 | 91.68/84.41/89.25 | 43.56/45.18 |
| 0x2 | CUBIC | 5ms | last | 47.57/62.97/48.75 | 91.91/83.04/88.69 | 45.27/43.22 |
| 0x6 | CUBIC | 5ms | first | 51.23/66.09/50.66 | 91.68/84.52/89.26 | 44.26/45.34 |
| 0x6 | CUBIC | 5ms | last | 47.57/64.12/47.14 | 91.91/83.29/89.00 | 47.01/42.06 |
| 0x2 | Cuback | 10ms | first | 49.56/67.69/50.40 | 95.32/91.88/93.69 | 46.42/47.16 |
| 0x2 | Cuback | 10ms | last | 50.57/67.41/51.59 | 95.19/92.05/93.77 | 45.07/48.21 |
| 0x6 | Cuback | 10ms | first | 49.56/69.93/49.87 | 95.32/92.06/93.32 | 46.60/46.35 |
| 0x6 | Cuback | 10ms | last | 50.57/67.15/52.27 | 95.19/91.84/93.64 | 44.83/49.10 |
| 0x2 | CUBIC | 10ms | first | 50.07/69.13/50.35 | 95.52/92.51/93.72 | 46.48/47.15 |
| 0x2 | CUBIC | 10ms | last | 49.74/68.09/49.76 | 95.58/92.67/93.85 | 47.47/47.02 |
| 0x6 | CUBIC | 10ms | first | 50.07/70.01/51.52 | 95.52/92.58/94.30 | 45.71/48.58 |
| 0x6 | CUBIC | 10ms | last | 49.74/68.39/50.69 | 95.58/92.65/94.24 | 46.68/48.01 |

With the old recalibration response, ABBA receives 61.96--70.01% of delivered
bandwidth while total utilization falls to 82.30--92.67%, compared with
90.72--95.58% for stock/stock. The table therefore shows the allocation after
recalibration-induced synchronous loss: changing that response brings ABBA's
share to 47.14--52.27%, closely tracking the 47.57--51.23% stock/stock share.

In a controlled comparison retaining the new congestion response, extending
only the low-fullRTT timeout from two to eight expected intervals reduces
recalibrations during the measured half from 22--28 to 5--7 and raises
utilization from 78.95--90.93% to 87.61--94.30%.
Random loss is evaluated for every packet crossing the impairment node.
Calling the TLS context's OpenSSL random callback for every sample adds
substantial overhead to large simulator sweeps.

Seed an AES-128-CTR context once from OpenSSL and use it to refill a static
1KB buffer, serving the simulator's small random-byte requests from that
buffer. Keep this generator local to simulated impairments; the QUIC TLS
context continues to use its normal random callback.

Use the same full-width samples for ACK-scheduler decisions. This removes the
separate rand() state and the scheduler's 1/65536 probability quantization
while retaining nondeterministic loss and stall placement between simulator
runs.

The simulator builds successfully, and a smoke run exercising random packet
loss and probabilistic ACK scheduling completes successfully.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adding random-loss resilience to loss-based congestion controllers

1 participant