review

From: Fareha <fareha_at_eecg.toronto.edu>
Date: Tue, 10 Oct 2006 08:00:35 -0400

The paper discusses the design of the Datagram Congestion Control
Protocol (DCCP) for implementing

congestion control in high-bandwidth UDP applications such as streaming
media and telephony. At

each step it compares their approach to that in TCP. The authors discuss
their 5 goals:
1. Minimalism in both functionality (DCCP should not provide
functionality that can be layered

above it) and mechanism (DCCP's core protocol features should be few in
number but rich in

implcation.
2. Robustness against data injection, connection closure and DoS
attacks, i.e. attacks where the

connection sequence numbers can't be guessed correctly. In order to
provide robustness and

transparency, they introduced explicit connection setup and teardown.
3. Framework for modern congestion control: DCCP should support many
applications and provide a

framework for implementing congestion control, not a single fixed algorithm.
4. Self-sufficiency: DCCP should provide aaplications with a simple API
and no application

intervention should be needed for congetsion management.
5. Support timing-reliability tradeoffs: API for sending DCCp packets
should support some buffering

and DCCP should support applications that want fine-grained control over
buffers and other

tradeoffs between timing and reliability.
The paper described DCCP as a very simple overview of their unicast,
connection-oriented protocol

with bi-directional data flow. Connections start and end with a three
way handshake, datagrams

begin with 16-byte generic datagram headers.
The authors then discuss various design issues and decisions starting
with sequence numbers. Since

DCCP must be able to detect loss without application support, its
headers must include sequence

numbers, which measure datagrams (and not bytes like TCP). Every packet,
including acknowledgements

occupies sequence space and uses a new sequence number. Furthermore,
since cumulative acks are not

used in unreliable protocols where data is never retransmited, DCCP
acknos report the latest packet

received (and not the next expected one). They chose a variable length
sequence number. 48-bit

provides better security bit can be a large overhead for small packets
such as 8-byte codecs, and

hence 24-bit sequence numbers are also allowed, and these can be
extended on the fly. A 48-bit

sequence number also provides ribustness against attack (although 24-bit
does not provide this)
DCCP provides explicit synchorization (consisting of a Syn and SyncAck
packet) when the connection

is interrupted by network failure (which may result in the endpoints
having different sequence

numbers).
Furthermore, since DCCP acknowledgements contain unbounded state
(AckVector can report every packet

received from the beginning of the connection), the sender must
acknowledge that is getting ACKS so

that the receiver can discard the corresponding ack info. Also, an ack
only acknowledges that a

packet has reached the receiver, not that it was delivered to the
application.
The paper then discusses connection management. They talk about
asymmetric connection, where one

side of the connection is sending only acks and no data. DCCP uses
half-connections so that if one

-way becomes silent, acks do not need to be sent back and hence state
does not need to be

maintained for that.
Since there are several per-endpoint properties whose value both
endpoints must agree on

(features), it is necessary to negotiate these at connection set up and
this is done through change

options to open feature negotiation and confirm options sent in response
with the values.
The paper then talks about mobility and multihoming as well as DoS
attacks against servers (which

are reduced by pushing state to the client).
DCCP supports 2 congestion control algorithms:
1. a modified version of TCP which also provides congestion control for
acks.
2. TFRC
Received on Tue Oct 10 2006 - 08:00:46 EDT

This archive was generated by hypermail 2.2.0 : Tue Oct 10 2006 - 08:03:57 EDT