All of lore.kernel.org
 help / color / mirror / Atom feed
* initial CCID2 implementation for linux
@ 2005-12-06 19:01 Andrea Bittau
  2005-12-06 19:29 ` Ian McDonald
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Andrea Bittau @ 2005-12-06 19:01 UTC (permalink / raw)
  To: dccp

http://darkircop.org/acme-ccid2-20051206.diff

it's a diff from today's:
git/acme/net-2.6.16.git

To use it, you need to compile support for ack vectors and:
setsockopt DCCP_SOCKOPT_CCID_RX and DCCP_SOCKOPT_CCID_TX to 2.


CCID2 status:

* Standard TCP congestion control:
  - AIMD of cwnd, slow start etc.

* RTO timeouts:
  - Maintains RTT estimate and calculates RTO from that.
  - Doesn't support timestamp option.

* Ack ratios [reverse path congestion control]:
  - Supported by "infrastructure"
  - Missing feature negotiation, so no ack ratio change.

* ECN:
  - Correctly adjusts cwnd when packets are reported ECN marked.
  - Doesn't deal with ECN nonces.
  - No ECN support for reverse path congestion [receiving ECN marked ACK].

* No support for determining that flows go silent [ack an ack stuff].


I need to make the code solid and linux friendly.  Then I will split the patch
so hopefully arnaldo will agree to commit it.  It currently includes, and will
be split to:

* connect() race condition:
  Connect, send and disconnect real fast.  I don't remember details but,
  The socket will be transiting from SS_CONNECTING to SS_CONNECTED.  However,
  connect will return -1 because DCCP will have moved to CLOSE by the time
  connect() checks status.

* disconnect doesn't cleanup state:
  server sends close req.  Client doesn't reply with close "fast enough".
  Server will never destroy socket.  I still gotta think about this more though.

* support for ack vector records

* support for switching ccids

* support for ccid2


Any feedback is appreciated.  Specifically, if this code looks "promising" [i.e.
eventually commitable], it would be nice if someone can indicate the major
problems with it. [coding style, way of doing things, bugs, etc]

I'll now work on making the code more solid and splitting the patches.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: initial CCID2 implementation for linux
  2005-12-06 19:01 initial CCID2 implementation for linux Andrea Bittau
@ 2005-12-06 19:29 ` Ian McDonald
  2005-12-06 19:46 ` Andrea Bittau
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ian McDonald @ 2005-12-06 19:29 UTC (permalink / raw)
  To: dccp

On 12/7/05, Andrea Bittau <a.bittau@cs.ucl.ac.uk> wrote:
> http://darkircop.org/acme-ccid2-20051206.diff

Can't access that host - appears to be no DNS record.
>
> it's a diff from today's:
> git/acme/net-2.6.16.git
>
> To use it, you need to compile support for ack vectors and:
> setsockopt DCCP_SOCKOPT_CCID_RX and DCCP_SOCKOPT_CCID_TX to 2.

If you play around with Kconfig files you should be able to get ack
vectors automatically turned on when selecting this.

> Any feedback is appreciated.  Specifically, if this code looks "promising" [i.e.
> eventually commitable], it would be nice if someone can indicate the major
> problems with it. [coding style, way of doing things, bugs, etc]
>
It sounds great!! I will look at it when I can get to the website and
time permits (just returned from honeymoon!)

Ian
--
Ian McDonald
http://wand.net.nz/~iam4
WAND Network Research Group
University of Waikato
New Zealand

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: initial CCID2 implementation for linux
  2005-12-06 19:01 initial CCID2 implementation for linux Andrea Bittau
  2005-12-06 19:29 ` Ian McDonald
@ 2005-12-06 19:46 ` Andrea Bittau
  2005-12-06 20:01 ` Ian McDonald
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Andrea Bittau @ 2005-12-06 19:46 UTC (permalink / raw)
  To: dccp

On Wed, Dec 07, 2005 at 08:29:27AM +1300, Ian McDonald wrote:
> Can't access that host - appears to be no DNS record.

weird.
http://128.16.66.93/acme-ccid2-20051206.diff

> If you play around with Kconfig files you should be able to get ack
> vectors automatically turned on when selecting this.

will do

> time permits (just returned from honeymoon!)

Well you have no excuses now... vacation is over ;D  !!

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: initial CCID2 implementation for linux
  2005-12-06 19:01 initial CCID2 implementation for linux Andrea Bittau
  2005-12-06 19:29 ` Ian McDonald
  2005-12-06 19:46 ` Andrea Bittau
@ 2005-12-06 20:01 ` Ian McDonald
  2005-12-08  7:12 ` Eddie Kohler
  2005-12-08 21:40 ` Arnaldo Carvalho de Melo
  4 siblings, 0 replies; 6+ messages in thread
From: Ian McDonald @ 2005-12-06 20:01 UTC (permalink / raw)
  To: dccp

On 12/7/05, Andrea Bittau <a.bittau@cs.ucl.ac.uk> wrote:
> On Wed, Dec 07, 2005 at 08:29:27AM +1300, Ian McDonald wrote:
> > Can't access that host - appears to be no DNS record.
>
> weird.
> http://128.16.66.93/acme-ccid2-20051206.diff

Cool - can access and starting to look at.

In whole looks good. Will look at more properly later and try to
compile but few initial comments just on code style.

#define DCCP_CCID_TCP			2
#define DCCP_CCID_TFRC			3

I think these should be DCCP_CCID2 and DCCP_CCID3 as there are other
TFRC CCIDs proposed for example. Or maybe DCCP_CCID2_TCP and
DCCP_CCID3_TFRC??

Some issues in ccid2_hc_tx_exit and cci2_hc_rx_init where you have a
space/tab combo at start of some lines.

This code:
static __init int ccid2_module_init(void)
{
	int rc = -ENOBUFS;

	rc = ccid_register(&ccid2);
	if (rc != 0)
		return rc;
	
	return rc;
}

could be:
static __init int ccid2_module_init(void)
{
	return ccid_register(&ccid2);
}

For your new files you need to add your copyright and also GPL
license. You should also add your copyright to files that you modify a
lot.

Ian
--
Ian McDonald
http://wand.net.nz/~iam4
WAND Network Research Group
University of Waikato
New Zealand

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: initial CCID2 implementation for linux
  2005-12-06 19:01 initial CCID2 implementation for linux Andrea Bittau
                   ` (2 preceding siblings ...)
  2005-12-06 20:01 ` Ian McDonald
@ 2005-12-08  7:12 ` Eddie Kohler
  2005-12-08 21:40 ` Arnaldo Carvalho de Melo
  4 siblings, 0 replies; 6+ messages in thread
From: Eddie Kohler @ 2005-12-08  7:12 UTC (permalink / raw)
  To: dccp

Hi, just a note:

The official names of CCID2 and CCID3 are "TCP-Like Congestion Control" and 
"TFRC Congestion Control".  So DCCP_CCID_TCPLIKE and DCCP_CCID_TFRC are 
perfectly reasonable.  Any TFRC variant that's not CCID3 will likely get a 
different name.

Eddie


Ian McDonald wrote:
> On 12/7/05, Andrea Bittau <a.bittau@cs.ucl.ac.uk> wrote:
> 
>>On Wed, Dec 07, 2005 at 08:29:27AM +1300, Ian McDonald wrote:
>>
>>>Can't access that host - appears to be no DNS record.
>>
>>weird.
>>http://128.16.66.93/acme-ccid2-20051206.diff
> 
> 
> Cool - can access and starting to look at.
> 
> In whole looks good. Will look at more properly later and try to
> compile but few initial comments just on code style.
> 
> #define DCCP_CCID_TCP			2
> #define DCCP_CCID_TFRC			3
> 
> I think these should be DCCP_CCID2 and DCCP_CCID3 as there are other
> TFRC CCIDs proposed for example. Or maybe DCCP_CCID2_TCP and
> DCCP_CCID3_TFRC??
> 
> Some issues in ccid2_hc_tx_exit and cci2_hc_rx_init where you have a
> space/tab combo at start of some lines.
> 
> This code:
> static __init int ccid2_module_init(void)
> {
> 	int rc = -ENOBUFS;
> 
> 	rc = ccid_register(&ccid2);
> 	if (rc != 0)
> 		return rc;
> 	
> 	return rc;
> }
> 
> could be:
> static __init int ccid2_module_init(void)
> {
> 	return ccid_register(&ccid2);
> }
> 
> For your new files you need to add your copyright and also GPL
> license. You should also add your copyright to files that you modify a
> lot.
> 
> Ian
> --
> Ian McDonald
> http://wand.net.nz/~iam4
> WAND Network Research Group
> University of Waikato
> New Zealand
> -
> To unsubscribe from this list: send the line "unsubscribe dccp" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: initial CCID2 implementation for linux
  2005-12-06 19:01 initial CCID2 implementation for linux Andrea Bittau
                   ` (3 preceding siblings ...)
  2005-12-08  7:12 ` Eddie Kohler
@ 2005-12-08 21:40 ` Arnaldo Carvalho de Melo
  4 siblings, 0 replies; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2005-12-08 21:40 UTC (permalink / raw)
  To: dccp

On 12/6/05, Andrea Bittau <a.bittau@cs.ucl.ac.uk> wrote:
> http://darkircop.org/acme-ccid2-20051206.diff
>
> it's a diff from today's:
> git/acme/net-2.6.16.git
>
> To use it, you need to compile support for ack vectors and:
> setsockopt DCCP_SOCKOPT_CCID_RX and DCCP_SOCKOPT_CCID_TX to 2.
>
>
> CCID2 status:
>
> * Standard TCP congestion control:
>   - AIMD of cwnd, slow start etc.
>
> * RTO timeouts:
>   - Maintains RTT estimate and calculates RTO from that.
>   - Doesn't support timestamp option.
>
> * Ack ratios [reverse path congestion control]:
>   - Supported by "infrastructure"
>   - Missing feature negotiation, so no ack ratio change.
>
> * ECN:
>   - Correctly adjusts cwnd when packets are reported ECN marked.
>   - Doesn't deal with ECN nonces.
>   - No ECN support for reverse path congestion [receiving ECN marked ACK].
>
> * No support for determining that flows go silent [ack an ack stuff].
>
>
> I need to make the code solid and linux friendly.  Then I will split the patch
> so hopefully arnaldo will agree to commit it.  It currently includes, and will
> be split to:

I'm more than willing to merge your stuff :-)

>
> * connect() race condition:
>   Connect, send and disconnect real fast.  I don't remember details but,
>   The socket will be transiting from SS_CONNECTING to SS_CONNECTED.  However,
>   connect will return -1 because DCCP will have moved to CLOSE by the time
>   connect() checks status.
>
> * disconnect doesn't cleanup state:
>   server sends close req.  Client doesn't reply with close "fast enough".
>   Server will never destroy socket.  I still gotta think about this more though.
>
> * support for ack vector records
>
> * support for switching ccids
>
> * support for ccid2
>
>
> Any feedback is appreciated.  Specifically, if this code looks "promising" [i.e.
> eventually commitable], it would be nice if someone can indicate the major

It looks promising, yes :-)

> problems with it. [coding style, way of doing things, bugs, etc]
>
> I'll now work on making the code more solid and splitting the patches.

I look forward, I've been away from kernel development due to "Real
Work" and "Real Life" "getting in the way", but I'm adjusting my work
schedule to allow me to dedicate time to at least merge and comment on
these patches that are flowing in recently, excellent news indeed,
keep it up!

- Arnaldo

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-12-08 21:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-12-06 19:01 initial CCID2 implementation for linux Andrea Bittau
2005-12-06 19:29 ` Ian McDonald
2005-12-06 19:46 ` Andrea Bittau
2005-12-06 20:01 ` Ian McDonald
2005-12-08  7:12 ` Eddie Kohler
2005-12-08 21:40 ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.