mirror of
https://github.com/nginx/nginx.git
synced 2024-12-12 02:09:04 +08:00
QUIC: send and process ack_delay for Initial and Handshake levels.
Previously, this only worked for Application level because before quic-transport-30, there were the following constraints: Because the receiver doesn't use the ACK Delay for Initial and Handshake packets, a sender SHOULD send a value of 0. When adjusting an RTT sample using peer-reported acknowledgement delays, an endpoint ... MUST ignore the ACK Delay field of the ACK frame for packets sent in the Initial and Handshake packet number space.
This commit is contained in:
parent
6f9efd423e
commit
4fd02c5839
@ -3024,14 +3024,9 @@ ngx_quic_send_ack(ngx_connection_t *c, ngx_quic_send_ctx_t *ctx)
|
||||
|
||||
qc = ngx_quic_get_connection(c);
|
||||
|
||||
if (ctx->level == ssl_encryption_application) {
|
||||
ack_delay = ngx_current_msec - ctx->largest_received;
|
||||
ack_delay *= 1000;
|
||||
ack_delay >>= qc->ctp.ack_delay_exponent;
|
||||
|
||||
} else {
|
||||
ack_delay = 0;
|
||||
}
|
||||
ack_delay = ngx_current_msec - ctx->largest_received;
|
||||
ack_delay *= 1000;
|
||||
ack_delay >>= qc->ctp.ack_delay_exponent;
|
||||
|
||||
frame = ngx_quic_alloc_frame(c);
|
||||
if (frame == NULL) {
|
||||
@ -3379,13 +3374,10 @@ ngx_quic_rtt_sample(ngx_connection_t *c, ngx_quic_ack_frame_t *ack,
|
||||
} else {
|
||||
qc->min_rtt = ngx_min(qc->min_rtt, latest_rtt);
|
||||
|
||||
ack_delay = ack->delay * (1 << qc->ctp.ack_delay_exponent) / 1000;
|
||||
|
||||
if (level == ssl_encryption_application) {
|
||||
ack_delay = ack->delay * (1 << qc->ctp.ack_delay_exponent) / 1000;
|
||||
if (c->ssl->handshaked) {
|
||||
ack_delay = ngx_min(ack_delay, qc->ctp.max_ack_delay);
|
||||
|
||||
} else {
|
||||
ack_delay = 0;
|
||||
}
|
||||
|
||||
adjusted_rtt = latest_rtt;
|
||||
|
Loading…
Reference in New Issue
Block a user