Review - DCCP

From: Ivan Hernandez <ivanxx_at_gmail.com>
Date: Sun, 8 Oct 2006 15:40:16 -0400

Review of the paper Designing DCCP: Congestion Control Without Reliability
by Ivan Hernández

The paper starts describing the characteristic of currently widely
used applications -- with long lasting flows -- that use UDP as their
transport protocol. These new applications must implement congestion
control mechanisms in order to keep the network operation healthy, and
thus also their operation. The paper proposes a new congestion control
framework called Datagram Congestion Control Protocol (DCCP). DCCP was
built as an alternative to UDP, because provides unreliable transport
-- and thus low latency -- and congestion control support.

The authors state the goals that must achieve DCCP transport
protocol. (1) Minimalism. DCCP must provide a small number of
features, but rich in implications; this minimalism will support the
use of a small header size. (2) Robustness against data injection,
connection closure, and DOS attacks. This goal is achieved using
explicit connection setup and (optional) large sequence numbers in
DCCP headers. (3) Support for different applications. In order to
achieve this goal, DCCP does not implement a fixed congestion control
mechanism, instead DCCP let the application select from a number of
congestion control mechanisms supported. (4) Self sufficiency. DCCP
has to be able to manage congestion without application aid. And (5)
Support timing-reliability tradeoffs. DCCP supports applications that
want fine-grained control over buffers and other tradeoffs between
timing and liability.

DCCP headers include sequence numbers that provide support to datagram
loss detection, every packet in a flow uses a new sequence
number. DCCP acknowledgments reports the latest packet received. DCCP
also provides a mechanism, called Ack vector, that provides cumulative
acknowledgments and congestion information. DCCP supports explicit
synchronization, that allows endpoints to synchronize after large
burst of loss. An interesting aspect in DCCP is the semantic of an
acknowledge, an acknowledgments is not a guaranty that the datagram is
going to be delivered to the application. DCCP supports two types of
sequence numbers for the datagram transmission: short (24 bits), that
are best suited for fast connections and small packets, and long (48
bits), that provides better security. Long packets are used for
connection initiation, synchronization and teardown. DCCP manages
efficiently unidirectional data flow -- DCCP spends little time, space
and bandwidth in the inactive direction -- thanks to the logical
division of a connection into two half-connections.

This is an interesting and good paper. All the ideas are discussed and
clearly explained. The paper is interesting because the authors try to
use all the experience gained with congestion control in TCP and also
they consider several current aspects to shape its framework. The
paper shows how unreliable characteristics of datagram communication
impacts in the design of DCCP. It is also interesting that the
congestion control is a pluggable module (CCIDs), this makes DCCP a
flexible and, to my believe, long lasting solution. The paper does not
shows many experimental results, nevertheless all its details (and its
experimental supports) are dereference in other papers, furthermore
the CCIDs used by DCCP are based on already proved technologies. The
partial checksum discussion, in spite of being short, was very
interesting, because it shows how the requirements of the application
are supported by lower layers, this is also good example of the ALF
principle.
Received on Sun Oct 08 2006 - 15:40:26 EDT

This archive was generated by hypermail 2.2.0 : Mon Oct 09 2006 - 20:23:55 EDT