Mercurial > hg > nginx
comparison src/event/quic/ngx_event_quic_ack.c @ 9122:a32905d6fc10
QUIC: fixed rttvar on subsequent RTT samples (ticket #2505).
Previously, computing rttvar used an updated smoothed_rtt value as per
RFC 9002, section 5.3, which appears to be specified in a wrong order.
A technical errata ID 7539 is reported.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Mon, 12 Jun 2023 23:38:56 +0400 |
parents | d59277dd3d8c |
children | a90f79792b5d |
comparison
equal
deleted
inserted
replaced
9121:262c01782566 | 9122:a32905d6fc10 |
---|---|
205 | 205 |
206 if (qc->min_rtt + ack_delay < latest_rtt) { | 206 if (qc->min_rtt + ack_delay < latest_rtt) { |
207 adjusted_rtt -= ack_delay; | 207 adjusted_rtt -= ack_delay; |
208 } | 208 } |
209 | 209 |
210 qc->avg_rtt += (adjusted_rtt >> 3) - (qc->avg_rtt >> 3); | |
211 rttvar_sample = ngx_abs((ngx_msec_int_t) (qc->avg_rtt - adjusted_rtt)); | 210 rttvar_sample = ngx_abs((ngx_msec_int_t) (qc->avg_rtt - adjusted_rtt)); |
212 qc->rttvar += (rttvar_sample >> 2) - (qc->rttvar >> 2); | 211 qc->rttvar += (rttvar_sample >> 2) - (qc->rttvar >> 2); |
212 qc->avg_rtt += (adjusted_rtt >> 3) - (qc->avg_rtt >> 3); | |
213 } | 213 } |
214 | 214 |
215 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, | 215 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, |
216 "quic rtt sample latest:%M min:%M avg:%M var:%M", | 216 "quic rtt sample latest:%M min:%M avg:%M var:%M", |
217 latest_rtt, qc->min_rtt, qc->avg_rtt, qc->rttvar); | 217 latest_rtt, qc->min_rtt, qc->avg_rtt, qc->rttvar); |