Honour initial RTT estimate
PATCH 8/29 Honour initial RTT estimate
This is a small optimisation which improves the accuracy of TX RTT sampling when an initial RTT sample (e.g. from the intial Request/Response exchange) is available.
--- net/dccp/ccids/ccid3.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-)
net/dccp/ccids/ccid3.c +6 -7
@@ -469,28 +469,29 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb) else /* can not exceed 100% */ hctx->ccid3hctx_p = 1000000 / pinv; -skb_get_timestamp (skb, &now); -/* * Calculate new round trip sample as per [RFC 3448, 4.3] by * R_sample = (now - t_recvdata) - t_elapsed */ +skb_get_timestamp (skb, &now); r_sample =dccp_sample_rtt (sk, &now, &packet->dccphtx_tstamp);/* -* Update RTT estimate by -* If (No feedback recv) +* Update RTT estimate (honours RTT from SYN exchange): +* If (No RTT sample so far) * R = R_sample; * Else * R = q * R + (1 - q) * R_sample; * * q is a constant, RFC 3448 recomments 0.9 */ + hctx->ccid3hctx_rtt = hctx->ccid3hctx_rtt =0 ? r_sample + : (9 * hctx->ccid3hctx_rtt + r_sample) /10 ; +if (hctx->ccid3hctx_state =TFRC_SSTATE_NO_FBACK ) {/* * Larger Initial Windows [RFC 4342, sec. 5] */ - hctx->ccid3hctx_rtt = r_sample; hctx->ccid3hctx_x =rfc3390_initial_rate (sk); hctx->ccid3hctx_t_ld = now;
@@ -504,8 +505,6 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)ccid3_hc_tx_set_state (sk,TFRC_SSTATE_FBACK ); }else { - hctx->ccid3hctx_rtt = (9 * hctx->ccid3hctx_rtt + - r_sample) /10 ;/* Update sending rate (step 4 of [RFC 3448, 4.3]) */ if (hctx->ccid3hctx_p >0 )
Signature · 1 line
1.5.0.6
David Miller
maintainerFrom: Arnaldo Carvalho de Melo <[email protected]>
Date: Thu, 12 Apr 2007 18:15:05 -0300
Quoted 7 lines
This is a small optimisation which improves the accuracy of TX RTT sampling when an initial RTT sample (e.g. from the intial Request/Response exchange) is available.
Signed-off-by Gerrit Renker <[email protected]>Acked-by Ian McDonald <[email protected]>Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
Ok, even more...
I'm not pulling this stuff in, you guys have to work out a way to implement this without killing performance on the rest of the system.
Thanks.
Quoted 11 lines · David Miller
From: Arnaldo Carvalho de Melo <[email protected]>
Date: Thu, 12 Apr 2007 18:15:05 -0300Quoted 7 lines
This is a small optimisation which improves the accuracy of TX RTT sampling when an initial RTT sample (e.g. from the intial Request/Response exchange) is available.
Signed-off-by Gerrit Renker <[email protected]>Acked-by Ian McDonald <[email protected]>Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
Quoted 5 lines
Ok, even more...
I'm not pulling this stuff in, you guys have to work out a way to implement this without killing performance on the rest of the system.
I'm removing this one as well.
- Arnaldo
| > This is a small optimisation which improves the accuracy of TX | > RTT sampling when an initial RTT sample (e.g. from the intial | > Request/Response exchange) is available. <snip> | | Ok, even more... | | I'm not pulling this stuff in, you guys have to work out a way | to implement this without killing performance on the rest of | the system. |
I take it you are referring to the moved skb_get_timestamp in this patch?
As part of of reverting the RX/TX timestamp patches, this will go back to either dccp_gettimestamp() or do_gettimeofday() (will discuss with Arnaldo)
- as will be all other patches that depend on the RX/TX timestamps.
When that is removed, I'd say that this patch is useful since it increases the number of samples used to average the RTT.
I will post a summary of all changes to the list.