This paper describes the Datagram Congestion Control Protocol (DCCP).  The 
purpose of this protocol seems to be to provide something with similar 
semantics to UDP (ie. datagram, no reliable delivery) but with a congestion 
control system compatible with the one used by TCP.  Although designing this 
protocol might seem easy (ie. just take the congestion control stuff out of 
TCP), it appears that it was not nearly so easy.  The problem is that many of 
the properties of TCP, such as bytestream semantics, reliable messaging, 
consice acknowledgements, connection setup, flow control, and congestion 
control are all intertwined.
A good chunk of the paper is spent describing sequence numbers and 
acknowledgements.  Although these might seem more relevant to reliable 
messaging, they are also necessary for congestion control in the absence of 
application-level loss notification.
Unlike TCP, DCCP acknowledgements indicate the last packet received, rather 
than the earliest not received.  This makes sense given the purpose of the 
acknowledgements is to allow the sender to gauge loss, where as in TCP the 
main purpose of acknowledgements is to implicitly tell the sender what must 
be retransmitted.  DCCP acknowledgements also merely indicate that a packet 
was received, not that the data was passed on to the application (which might 
happen if a packet gets dropped from the receive queue due to new data being 
received prior to the packet being delivered to the receiving application)
Received on Tue Oct 10 2006 - 02:40:45 EDT
This archive was generated by hypermail 2.2.0 : Tue Oct 10 2006 - 08:00:48 EDT