Skip to contentSkip to conversation

Set packet size to 1460 as per ccid-4 draft

PATCH In review Leandro 3 participants 5 messages Nov 1, 2007 – Nov 13, 2007

lore
Share & tools
lore

Leandro

author
#0 lore raw

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,

#2 lore raw
In reply to Leandro

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.

#3 lore raw
In reply to Leandro
| |  	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.

#4 lore raw
In reply to Leandro

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.