Set packet size to 1460 as per ccid-4 draft
PATCH 4/25 Set packet size to 1460 as per ccid-4 draft
[CCID-4] Set packet size to 1460 as per ccid-4 draft
Index: leandro.new/net/dccp/ccids/ccid4.c =================================--- leandro.new.orig/net/dccp/ccids/ccid4.c +++ leandro.new/net/dccp/ccids/ccid4.c
@@ -472,9 +472,9 @@ static void ccid4_hc_tx_packet_recv(stru
goto done_computing_x;
}
}
- /* perform step (4) of draft rfc3448bis, section 4.3 */
+ /* Update sending rate (step 4 of [RFC 3448, 4.3]) */
if (hctx->ccid4hctx_p > 0)
- hctx->ccid4hctx_x_calc = tfrc_calc_x(hctx->ccid4hctx_s,
+ hctx->ccid4hctx_x_calc = tfrc_calc_x(NOM_PACKET_SIZE,
hctx->ccid4hctx_rtt, hctx->ccid4hctx_p);
ccid4_hc_tx_update_x(sk, &now);
@@ -775,7 +775,7 @@ static u32 ccid4_first_li(struct sock *s
}
}
- fval = scaled_div(hcrx->ccid4hcrx_s, hcrx->ccid4hcrx_rtt);
+ fval = scaled_div(NOM_PACKET_SIZE, hcrx->ccid4hcrx_rtt);
fval = scaled_div32(fval, x_recv);
p = tfrc_calc_x_reverse_lookup(fval);
Index: leandro.new/net/dccp/ccids/ccid4.h =================================--- leandro.new.orig/net/dccp/ccids/ccid4.h +++ leandro.new/net/dccp/ccids/ccid4.h
@@ -65,6 +65,9 @@
/* Parameter t_mbi from [RFC 3448, 4.3]: backoff interval in seconds */
#define TFRC_T_MBI 64
+/* The nominal packet size to be used into TFRC equation as per CCID-4 draft*/
+#define NOM_PACKET_SIZE 1460
+
enum ccid4_options {
TFRC_OPT_LOSS_EVENT_RATE = 192,
TFRC_OPT_LOSS_INTERVALS = 193,
Quoted 5 lines · Leandro
[CCID-4] Set packet size to 1460 as per ccid-4 draft
Signed-off-by Leandro Melo de Sales <[email protected]>Signed-off-by Tommi Saviranta <[email protected]>
Quoting Leandro:
| [CCID-4] Set packet size to 1460 as per ccid-4 draft | | Signed-off-by: Leandro Melo de Sales <[email protected]> | Signed-off-by: Tommi Saviranta <[email protected]> | | Index: leandro.new/net/dccp/ccids/ccid4.c | =================================| --- leandro.new.orig/net/dccp/ccids/ccid4.c | +++ leandro.new/net/dccp/ccids/ccid4.c | @@ -472,9 +472,9 @@ static void ccid4_hc_tx_packet_recv(stru | goto done_computing_x; | } | } | - /* perform step (4) of draft rfc3448bis, section 4.3 */ | + /* Update sending rate (step 4 of [RFC 3448, 4.3]) */ | if (hctx->ccid4hctx_p > 0) | - hctx->ccid4hctx_x_calc = tfrc_calc_x(hctx->ccid4hctx_s, | + hctx->ccid4hctx_x_calc = tfrc_calc_x(NOM_PACKET_SIZE, | hctx->ccid4hctx_rtt, | hctx->ccid4hctx_p); | ccid4_hc_tx_update_x(sk, &now); | @@ -775,7 +775,7 @@ static u32 ccid4_first_li(struct sock *s | } | } | | - fval = scaled_div(hcrx->ccid4hcrx_s, hcrx->ccid4hcrx_rtt); | + fval = scaled_div(NOM_PACKET_SIZE, hcrx->ccid4hcrx_rtt); | fval = scaled_div32(fval, x_recv); | p = tfrc_calc_x_reverse_lookup(fval); | | Index: leandro.new/net/dccp/ccids/ccid4.h | =================================| --- leandro.new.orig/net/dccp/ccids/ccid4.h | +++ leandro.new/net/dccp/ccids/ccid4.h | @@ -65,6 +65,9 @@ | /* Parameter t_mbi from [RFC 3448, 4.3]: backoff interval in seconds */ | #define TFRC_T_MBI 64 | | +/* The nominal packet size to be used into TFRC equation as per CCID-4 draft*/ | +#define NOM_PACKET_SIZE 1460 | + | enum ccid4_options { | TFRC_OPT_LOSS_EVENT_RATE = 192, | TFRC_OPT_LOSS_INTERVALS = 193, | -
The above code is CCID3 with the difference that s = 1460. To better share the code between CCID3/4, I think it would be simpler to initialise s' with this value, and to dispense with the update_s' routine that CCID3 uses.
Like, for example in ccid4_hc_tx_init:
{
/* ... */
hctx->ccid4hctx_s = NOM_PACKET_SIZE;
}Then one could consider sharing tx_packet_recv code.
| | if (hctx->ccid4hctx_p > 0)
| | - hctx->ccid4hctx_x_calc = tfrc_calc_x(hctx->ccid4hctx_s,
| | + hctx->ccid4hctx_x_calc = tfrc_calc_x(NOM_PACKET_SIZE,
| | hctx->ccid4hctx_rtt,
| | hctx->ccid4hctx_p);
<snip>
| The above code is CCID3 with the difference that s = 1460. To better
| share the code between CCID3/4, I think it would be simpler to
| initialise `s' with this value, and to dispense with the `update_s'
| routine that CCID3 uses.
|
| Like, for example in ccid4_hc_tx_init:
| {
| /* ... */
| hctx->ccid4hctx_s = NOM_PACKET_SIZE;
|
| }
|
| Then one could consider sharing tx_packet_recv code.Nope. The above is nonsense, I've just realised the way `s' is used, so the comment does not really apply, please forget that.
Using the moving-average as in CCID3, as you do, is probably a good idea, since when the packet size is varied in response to congestion the spikes will be smoothed out be the earlier averages.
2007/11/9, Gerrit Renker <[email protected]>:
Quoted 22 lines
| | if (hctx->ccid4hctx_p > 0) | | - hctx->ccid4hctx_x_calc = tfrc_calc_x(hctx->ccid4hctx_s, | | + hctx->ccid4hctx_x_calc = tfrc_calc_x(NOM_PACKET_SIZE, | | hctx->ccid4hctx_rtt, | | hctx->ccid4hctx_p); <snip> | The above code is CCID3 with the difference that s = 1460. To better | share the code between CCID3/4, I think it would be simpler to | initialise `s' with this value, and to dispense with the `update_s' | routine that CCID3 uses. | | Like, for example in ccid4_hc_tx_init: | { | /* ... */ | hctx->ccid4hctx_s = NOM_PACKET_SIZE; | | } | | Then one could consider sharing tx_packet_recv code.Nope. The above is nonsense, I've just realised the way `s' is used, so the comment does not really apply, please forget that.
Quoted 8 lines
Using the moving-average as in CCID3, as you do, is probably a good idea, since when the packet size is varied in response to congestion the spikes will be smoothed out be the earlier averages. -
To unsubscribe from this list: send the line "unsubscribe dccp" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Ok.
Leandro.