|
Previous
|
Content
|
Next
|
|
|
2.0.- Anatomy of a DCCP
Connection |
|
 |
|
| Each DCCP connection runs between
two endpoints, which we often name DCCP A and DCCP B. Data may pass over the
connection in either or both directions. The DCCP connection between DCCP A
and DCCP B consists of four sets of packets, as follows: |
- Data packets from DCCP A to DCCP B.
- Acknowledgements from DCCP B to DCCP A.
- Data packets from DCCP B to DCCP A.
- Acknowledgements from DCCP A to DCCP B.
|
|
|
|
| Each numbered flow of packets
above represents a set. We have then 4 sets of packets in a DCCP connection.
LB. |
| We use the following terms to refer
to subsets and endpoints of a DCCP connection. |
- Subflows
A subflow consists of either data or acknowledgement
packets, sent in one direction. Each of the four sets of packets above
is a subflow. (Subflows may overlap to some extent, since
acknowledgements may be piggybacked on data packets.)
|
|
- Sequences
A sequence consists of all packets sent in one
direction, regardless of whether they are data or acknowledgements.
The sets 1+4 and 2+3, above, are sequences. Each packet on a sequence
has a different sequence number.
|
|
- Half-connections
A half-connection consists of the data packets sent in
one direction, plus the corresponding acknowledgements. The sets 1+2
and 3+4, above, are half-connections. Half-connections are named
after the direction of data flow, so the A-to-B half-connection
contains the data packets from A to B and the acknowledgements from B
to A.
|
|
- HC-Sender and HC-Receiver
| In the context of a single half-connection, the
HC-Sender is the endpoint sending data, while the HC-Receiver is the
endpoint sending acknowledgements. For example, in the A-to-B
half-connection, DCCP A is the HC-Sender and DCCP B is the
HC-Receiver. |
|
|
| Congestion Control |
| Each half-connection is
managed by a congestion control mechanism. The endpoints negotiate these
mechanisms at connection setup; the mechanisms for the two half-connections
need not be the same. |
| Conformant congestion control
mechanisms correspond to single-byte congestion control identifiers, or
CCIDs. The CCID for a half-connection describes how the HC-Sender limits
data packet rates; how it maintains necessary parameters, such as congestion
windows; how the HC-Receiver sends congestion feedback via acknowledgements;
and how it manages the acknowledgement rate. |
| Connection Initiation and
Termination |
| Every DCCP connection is actively
initiated by one DCCP, which connects to a DCCP socket in the passive
listening state. We refer to the active endpoint as "the client" and the
passive endpoint as "the server". Most of the DCCP specification is
indifferent to whether a DCCP is client or server. However, only the server
can request to close a connection. This means that the client cannot
force the server to maintain connection state after the connection is closed. |
| DCCP does not support TCP-style
simultaneous open. This means, a host MUST NOT respond to a DCCP request
unless the destination port specified in the request corresponds to a local
socket opened for listening. DCCP does not support half-open connections
either. That is, DCCP shuts down both half-connections as a unit. |
| Features |
| DCCP uses a generic mechanism to
negotiate connection properties, such as the CCIDs active on the two
half-connections. These properties are called features. A feature name, such
as "CCID", generally corresponds to two features, one per half-connection.
For instance, there are two CCIDs per connection. The endpoint in charge of
a particular feature is called its feature location. |
| The Change, Prefer, and Confirm
options negotiate feature values. Change is sent to a feature location,
asking it to change its value for the feature. The feature location may
respond with Prefer, which asks the other endpoint to Change again with
different values, or it may change the feature value and acknowledge the
request with Confirm. Retransmissions make feature negotiation reliable. |
| |
|
|
|
|
Previous
|
Content
|
Next
|