< draft-kohler-dcp-ccid0-00.txt   draft-kohler-dcp-ccid0-01.txt >
Internet Engineering Task Force Internet Engineering Task Force
INTERNET-DRAFT Eddie Kohler INTERNET-DRAFT Eddie Kohler
draft-kohler-dcp-ccid0-00.txt Sally Floyd draft-kohler-dcp-ccid0-01.txt Sally Floyd
ACIRI ACIRI
13 July 2001 21 November 2001
Expires: January 2002 Expires: May 2002
Profile for DCP Congestion Control ID 0: Profile for DCP Congestion Control ID 0:
Single-Window Congestion Control Single-Window Congestion Control
Status of this Document Status of this Document
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of [RFC 2026]. Internet-Drafts are all provisions of Section 10 of [RFC 2026]. Internet-Drafts are
working documents of the Internet Engineering Task Force (IETF), its working documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also areas, and its working groups. Note that other groups may also
skipping to change at page 2, line 12 skipping to change at page 2, line 12
initial window of data sent at the beginning of the initial window of data sent at the beginning of the
connection. connection.
Table of Contents Table of Contents
1. Introduction. . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction. . . . . . . . . . . . . . . . . . . . . . 3
1.1. Usage Scenario . . . . . . . . . . . . . . . . . . . 3 1.1. Usage Scenario . . . . . . . . . . . . . . . . . . . 3
1.2. Example Half-Connection. . . . . . . . . . . . . . . 4 1.2. Example Half-Connection. . . . . . . . . . . . . . . 4
2. Connection Establishment. . . . . . . . . . . . . . . . 4 2. Connection Establishment. . . . . . . . . . . . . . . . 4
3. Congestion Control on Data Packets. . . . . . . . . . . 4 3. Congestion Control on Data Packets. . . . . . . . . . . 4
4. Acknowledgements. . . . . . . . . . . . . . . . . . . . 4 4. Acknowledgements. . . . . . . . . . . . . . . . . . . . 5
4.1. Congestion Control on Acknowledgements . . . . . . . 4 4.1. Congestion Control on Acknowledgements . . . . . . . 5
4.2. Quiescence . . . . . . . . . . . . . . . . . . . . . 5 4.2. Quiescence . . . . . . . . . . . . . . . . . . . . . 5
4.3. Acknowledgements of Acknowledgements . . . . . . . . 5 4.3. Acknowledgements of Acknowledgements . . . . . . . . 5
5. Explicit Congestion Notification. . . . . . . . . . . . 5 5. Explicit Congestion Notification. . . . . . . . . . . . 5
6. Relevant Options and Features . . . . . . . . . . . . . 5 6. Relevant Options and Features . . . . . . . . . . . . . 6
7. Application Requirements. . . . . . . . . . . . . . . . 5 7. Application Requirements. . . . . . . . . . . . . . . . 6
8. Thanks. . . . . . . . . . . . . . . . . . . . . . . . . 5 8. Thanks. . . . . . . . . . . . . . . . . . . . . . . . . 6
9. References. . . . . . . . . . . . . . . . . . . . . . . 5 9. References. . . . . . . . . . . . . . . . . . . . . . . 6
10. Authors' Addresses . . . . . . . . . . . . . . . . . . 6 10. Authors' Addresses . . . . . . . . . . . . . . . . . . 6
1. Introduction 1. Introduction
This document contains the profile for Congestion Control Identifier This document contains the profile for Congestion Control Identifier
0, Single-Window Congestion Control, in the Datagram Control 0, Single-Window Congestion Control, in the Datagram Control
Protocol (DCP). Protocol (DCP).
DCP uses Congestion Control Identifiers, or CCIDs, to specify the DCP uses Congestion Control Identifiers, or CCIDs, to specify the
congestion control mechanism in use on a half-connection. (A half- congestion control mechanism in use on a half-connection. (A half-
connection might consist of data packets sent from DCP A to DCP B, connection might consist of data packets sent from DCP A to DCP B,
plus acknowledgements sent from DCP B to DCP A. DCP A is the HC- plus acknowledgements sent from DCP B to DCP A. DCP A is the HC-
Sender, and DCP B the HC-Receiver, for this half-connection. In this Sender, and DCP B the HC-Receiver, for this half-connection. In this
document, we abbreviate HC-Sender and HC-Receiver as "sender" and document, we abbreviate HC-Sender and HC-Receiver as "sender" and
"receiver", respectively.) "receiver", respectively.)
The Single-Window Congestion Control CCID implies that the sender The Single-Window Congestion Control CCID implies that the sender
will send no data packets, except for at most an initial window's will send no data packets, except for at most an initial window's
worth at the beginning of the connection. (This initial window is worth at the beginning of the connection. (This initial window is
calculated as for TCP; currently, it is 2 packets.) It is suitable calculated as for TCP; currently, it is two packets. [RFC 2581]) It
for senders who have almost no data to send -- for example, for is suitable for senders who have almost no data to send -- for
clients in a client-server streaming media connection, where the example, for clients in a client-server streaming media connection,
clients might make an application request to start off the where the clients might make an application request to start off the
connection, but then keep quiet forever. connection, but then keep quiet forever.
We note that this draft is rough and incomplete, and needs We note that this draft is incomplete, in that we have not yet
considerably more attention. In particular, we have not yet decided decided how to deal with losses within the initial window of
how to deal with losses within the initial window of packets. packets.
1.1. Usage Scenario 1.1. Usage Scenario
Single-Window Congestion Control was designed for the potentially Single-Window Congestion Control was designed for the potentially
common case of a client connecting to a data stream not requiring common case of a client connecting to a data stream not requiring
any application feedback -- for example, a streaming media any application feedback -- for example, a streaming media
connection. (Current popular streaming-media protocols include connection. (Current popular streaming-media protocols include
application feedback to report congestion. That's unnecessary in application feedback to report congestion. That's unnecessary in
DCP, which reports congestion events itself.) Using CCID 0 for the DCP, which reports congestion events itself.) Using CCID 0 for the
client's half-connection explicitly informs the server that the client's half-connection explicitly informs the server that the
client will never have data to send. This can simplify the server's client will never have data to send, other than the initial window.
implementation: for example, the server need not keep track of This can simplify the server's implementation: for example, the
detailed acknowledgement information for the client's packets. Some server need not keep track of detailed acknowledgement information
high-use services might choose to force their clients to use CCID 0, for the client's packets. Some high-use services might choose to
since then they would not have to deal with any client data. force their clients to use CCID 0, since then they would not have to
deal with any client data.
Note, however, that DCP was designed so that a quiescent half- Note, however, that DCP was designed so that a quiescent half-
connection causes absolutely no overhead. Any quiescent CCID behaves connection causes absolutely no overhead. Any quiescent CCID behaves
the same as CCID 0. The use of CCID 0 is entirely optional, and has the same as CCID 0. The use of CCID 0 is entirely optional, and has
almost no performance effect in terms of numbers of packets sent, or almost no performance effect in terms of numbers of packets sent, or
packet sizes sent, compared to sending the same (small) number of packet sizes sent, compared to sending the same (small) number of
packets with a different CCID. packets with a different CCID.
Compensating for losses within the initial window of data is a Compensating for losses within the initial window of data is a
question for further research. question for further research.
1.2. Example Half-Connection 1.2. Example Half-Connection
TBA. This example is of a half-connection using Single-Window Congestion
Control specified by CCID 0. The "sender" is the HC-Sender, and the
"receiver" is the HC-Receiver. In this example the sender has
negotiated the Use Ack Vector feature.
(1) The sender sends at most an initial window of DCP-Data packets,
where the initial window is the same as the initial congestion
window ``cwnd'' in TCP. Each DCP-Data packet uses a sequence
number.
Each DCP-Data packet may be sent as ECN-Capable with either the
ECT(0) or the ECT(1) codepoint set, as described in [ECN NONCE
DRAFT].
(2) The receiver acknowledges any DCP-Data packets with DCP-Ack or
DCP-DataAck packets containing an Ack Vector.
Since no packets are sent beyond the initial window, the
receiver is not required to return the ECN Nonce in the DCP-Ack
packet. The DCP-Ack packets from the receiver may be sent as
ECN-Capable with ECT(0).
(3) The sender sends no new DCP-Data packets after the initial
window of data.
2. Connection Establishment 2. Connection Establishment
No special options or features are strictly necessary to set up a No special options or features are strictly necessary to set up a
half-connection using CCID 0. Since half-connections begin in CCID half-connection using CCID 0. Since half-connections begin in CCID
0, it may not even be necessary to negotiate the CCID. However, if 0, it is not strictly necessary to negotiate the CCID. However, if
the sender plans to send any data in its allowed initial window, the the sender plans to send any data in its allowed initial window, the
sender SHOULD negotiate the Use Ack Vector feature. sender SHOULD negotiate the Use Ack Vector feature.
3. Congestion Control on Data Packets 3. Congestion Control on Data Packets
Since CCID 0 allows the sender to send at most one initial window's Since CCID 0 allows the sender to send at most one initial window's
worth of data, there is no need for any congestion control mechanism worth of data, there is no need for any congestion control mechanism
for data packets. The initial window is defined by TCP; currently, for data packets. The initial window is defined by TCP; currently,
its value is 2 packets. TCP senders may send an initial window's its value is two packets. TCP senders may send an initial window's
worth of data before receiving any congestion feedback. Therefore, worth of data before receiving any congestion feedback. Therefore,
CCID 0's behavior here is no worse than TCP. CCID 0's behavior here is no worse than TCP.
In a A-to-B half-connection using CCID 0, DCP A MUST drop every In a A-to-B half-connection using CCID 0, DCP A MUST drop every
packet the application tries to send beyond the initial window. packet the application tries to send beyond the initial window.
Furthermore, DCP B SHOULD reset the connection if DCP A sends more Furthermore, DCP B SHOULD reset the connection if DCP A sends more
than an initial window of data packets. than an initial window of data packets.
We have not yet determined how to handle loss events in CCID 0's We have not yet determined how to handle loss events in CCID 0's
allowed initial window of data. One solution might be to implement allowed initial window of data. One solution might be to implement
reliable transmission of this window in the kernel, using a simple reliable transmission of this window in DCP, using a simple
exponential backoff. exponential backoff.
4. Acknowledgements 4. Acknowledgements
Any half-connection using CCID 0 is quiescent for most of its Any half-connection using CCID 0 is quiescent for most of its
lifetime. During this period, no acknowledgements need be sent. lifetime. During this period, no acknowledgements need be sent.
During the initial window, DCP B SHOULD send acknowledgements to DCP During the initial window, DCP B SHOULD send acknowledgements to DCP
A using Ack Vector, if Use Ack Vector was negotiated. A using Ack Vector, if Use Ack Vector was negotiated.
4.1. Congestion Control on Acknowledgements 4.1. Congestion Control on Acknowledgements
skipping to change at page 5, line 11 skipping to change at page 5, line 34
Since there are at most an initial window's worth of Since there are at most an initial window's worth of
acknowledgements, there is no need for any congestion control on acknowledgements, there is no need for any congestion control on
acknowledgements. acknowledgements.
4.2. Quiescence 4.2. Quiescence
This section refers to quiescence in the DCP sense (see section 6.1 This section refers to quiescence in the DCP sense (see section 6.1
of [DCP]): How does a CCID 0 receiver determine that the of [DCP]): How does a CCID 0 receiver determine that the
corresponding sender is not sending any data? corresponding sender is not sending any data?
The receiver detects that the sender has gone quiescent after The receiver, DCP B, detects that the sender, DCP A, has gone
receiving three consecutive DCP-Ack packets from the sender (not quiescent after receiving three consecutive DCP-Ack packets from A
counting initial feature negotiation). If the other half-connection (not counting initial feature negotiation). If DCP B has any data to
has any data to send whatsoever, this should happen almost send whatsoever, this should happen almost immediately. CCID 0 half-
immediately. CCID 0 half-connections stay quiescent permanently: connections stay quiescent permanently: after going quiescent, they
after going quiescent, they never send data again. never send data again.
4.3. Acknowledgements of Acknowledgements 4.3. Acknowledgements of Acknowledgements
There is no need for the sender to acknowledge the receiver's There is no need for the sender to acknowledge the receiver's
acknowledgements. acknowledgements.
5. Explicit Congestion Notification 5. Explicit Congestion Notification
Senders using CCID 0 perform no worse than TCP, despite their lack Senders using CCID 0 perform no worse than TCP-like Congestion
of active congestion control, due to the extremely limited amount of Control, despite their lack of active congestion control, due to the
data they send. All DCP-Data and DCP-Ack packets for CCID 0 SHOULD extremely limited amount of data they send. All DCP-Data and DCP-Ack
set ECN-Capable Transport on their packets, regardless of the value packets for CCID 0 SHOULD set ECN-Capable Transport on their
of the ECN Capable feature. There should be at most 2*(initial packets, if the ECN Capable feature has been negotiated. There
window) such packets. should be at most 2*(initial window) such packets.
There is no need for the receiver to echo the ECN Nonce. It is not required for the receiver to echo the ECN Nonce. The ECN
Nonce information is not used by the sender for congestion control
for this connection, as the sender has no further data to send, but
the nonce could be of use for other purposes, e.g., in cases with
sharing of congestion control state between multiple connections.
6. Relevant Options and Features 6. Relevant Options and Features
CCID 0 optionally uses the Ack Vector option and the Use Ack Vector CCID 0 optionally uses the Ack Vector option and the Use Ack Vector
feature. feature.
7. Application Requirements 7. Application Requirements
Obviously, an application using CCID 0 cannot send more than an Obviously, an application using CCID 0 cannot send more than an
initial window's worth of data. initial window's worth of data.
skipping to change at page 6, line 8 skipping to change at page 6, line 35
CCID 0. CCID 0.
9. References 9. References
[DCP] Eddie Kohler, Mark Handley, Sally Floyd, and Jitendra Padhye. [DCP] Eddie Kohler, Mark Handley, Sally Floyd, and Jitendra Padhye.
Datagram Control Protocol (DCP). Work in progress. Datagram Control Protocol (DCP). Work in progress.
[RFC 2026] S. Bradner. The Internet Standards Process -- Revision 3. [RFC 2026] S. Bradner. The Internet Standards Process -- Revision 3.
RFC 2026. RFC 2026.
[RFC 2581] W. Stevens, M. Allman, and V. Paxson, "TCP Congestion
Control", RFC 2581, April 1999.
10. Authors' Addresses 10. Authors' Addresses
Eddie Kohler <kohler@aciri.org> Eddie Kohler <kohler@aciri.org>
Sally Floyd <floyd@aciri.org> Sally Floyd <floyd@aciri.org>
AT&T Center for Internet Research at ICSI (ACIRI), AT&T Center for Internet Research at ICSI (ACIRI),
ICSI, ICSI,
1947 Center Street, Suite 600 1947 Center Street, Suite 600
Berkeley, CA 94704. Berkeley, CA 94704.
 End of changes. 15 change blocks. 
38 lines changed or deleted 69 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/