Internet Engineering Task Force INTERNET-DRAFT Eddie Kohler draft-kohler-dcp-ccid0-01.txt Sally Floyd ACIRI 21 November 2001 Expires: May 2002 Profile for DCP Congestion Control ID 0: Single-Window Congestion Control Status of this Document This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of [RFC 2026]. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract This document contains the profile for Congestion Control Identifier 0, Single-Window Congestion Control, in the Datagram Control Protocol (DCP) [DCP]. DCP implements a congestion-controlled, unreliable flow of datagrams suitable for use by applications such as streaming media. The Single- Window Congestion Control CCID is used by senders that promise to send no data whatsoever, except possibly for a single initial window of data sent at the beginning of the connection. Kohler/Floyd [Page 1] INTERNET-DRAFT Expires: May 2002 November 2001 Table of Contents 1. Introduction. . . . . . . . . . . . . . . . . . . . . . 3 1.1. Usage Scenario . . . . . . . . . . . . . . . . . . . 3 1.2. Example Half-Connection. . . . . . . . . . . . . . . 4 2. Connection Establishment. . . . . . . . . . . . . . . . 4 3. Congestion Control on Data Packets. . . . . . . . . . . 4 4. Acknowledgements. . . . . . . . . . . . . . . . . . . . 5 4.1. Congestion Control on Acknowledgements . . . . . . . 5 4.2. Quiescence . . . . . . . . . . . . . . . . . . . . . 5 4.3. Acknowledgements of Acknowledgements . . . . . . . . 5 5. Explicit Congestion Notification. . . . . . . . . . . . 5 6. Relevant Options and Features . . . . . . . . . . . . . 6 7. Application Requirements. . . . . . . . . . . . . . . . 6 8. Thanks. . . . . . . . . . . . . . . . . . . . . . . . . 6 9. References. . . . . . . . . . . . . . . . . . . . . . . 6 10. Authors' Addresses . . . . . . . . . . . . . . . . . . 6 Kohler/Floyd [Page 2] INTERNET-DRAFT Expires: May 2002 November 2001 1. Introduction This document contains the profile for Congestion Control Identifier 0, Single-Window Congestion Control, in the Datagram Control Protocol (DCP). DCP uses Congestion Control Identifiers, or CCIDs, to specify the congestion control mechanism in use on a half-connection. (A half- 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- Sender, and DCP B the HC-Receiver, for this half-connection. In this document, we abbreviate HC-Sender and HC-Receiver as "sender" and "receiver", respectively.) The Single-Window Congestion Control CCID implies that the sender will send no data packets, except for at most an initial window's worth at the beginning of the connection. (This initial window is calculated as for TCP; currently, it is two packets. [RFC 2581]) It is suitable for senders who have almost no data to send -- for example, for clients in a client-server streaming media connection, where the clients might make an application request to start off the connection, but then keep quiet forever. We note that this draft is incomplete, in that we have not yet decided how to deal with losses within the initial window of packets. 1.1. Usage Scenario Single-Window Congestion Control was designed for the potentially common case of a client connecting to a data stream not requiring any application feedback -- for example, a streaming media connection. (Current popular streaming-media protocols include application feedback to report congestion. That's unnecessary in DCP, which reports congestion events itself.) Using CCID 0 for the client's half-connection explicitly informs the server that the client will never have data to send, other than the initial window. This can simplify the server's implementation: for example, the server need not keep track of detailed acknowledgement information for the client's packets. Some high-use services might choose to 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- connection causes absolutely no overhead. Any quiescent CCID behaves 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 packet sizes sent, compared to sending the same (small) number of Kohler/Floyd Section 1.1. [Page 3] INTERNET-DRAFT Expires: May 2002 November 2001 packets with a different CCID. Compensating for losses within the initial window of data is a question for further research. 1.2. Example Half-Connection 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 No special options or features are strictly necessary to set up a half-connection using CCID 0. Since half-connections begin in CCID 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 sender SHOULD negotiate the Use Ack Vector feature. 3. Congestion Control on Data Packets 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 for data packets. The initial window is defined by TCP; currently, its value is two packets. TCP senders may send an initial window's worth of data before receiving any congestion feedback. Therefore, CCID 0's behavior here is no worse than TCP. Kohler/Floyd Section 3. [Page 4] INTERNET-DRAFT Expires: May 2002 November 2001 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. Furthermore, DCP B SHOULD reset the connection if DCP A sends more than an initial window of data packets. 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 reliable transmission of this window in DCP, using a simple exponential backoff. 4. Acknowledgements Any half-connection using CCID 0 is quiescent for most of its lifetime. During this period, no acknowledgements need be sent. During the initial window, DCP B SHOULD send acknowledgements to DCP A using Ack Vector, if Use Ack Vector was negotiated. 4.1. Congestion Control on Acknowledgements Since there are at most an initial window's worth of acknowledgements, there is no need for any congestion control on acknowledgements. 4.2. Quiescence This section refers to quiescence in the DCP sense (see section 6.1 of [DCP]): How does a CCID 0 receiver determine that the corresponding sender is not sending any data? The receiver, DCP B, detects that the sender, DCP A, has gone quiescent after receiving three consecutive DCP-Ack packets from A (not counting initial feature negotiation). If DCP B has any data to send whatsoever, this should happen almost immediately. CCID 0 half- connections stay quiescent permanently: after going quiescent, they never send data again. 4.3. Acknowledgements of Acknowledgements There is no need for the sender to acknowledge the receiver's acknowledgements. 5. Explicit Congestion Notification Senders using CCID 0 perform no worse than TCP-like Congestion Control, despite their lack of active congestion control, due to the extremely limited amount of data they send. All DCP-Data and DCP-Ack packets for CCID 0 SHOULD set ECN-Capable Transport on their packets, if the ECN Capable feature has been negotiated. There Kohler/Floyd Section 5. [Page 5] INTERNET-DRAFT Expires: May 2002 November 2001 should be at most 2*(initial window) such packets. 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 CCID 0 optionally uses the Ack Vector option and the Use Ack Vector feature. 7. Application Requirements Obviously, an application using CCID 0 cannot send more than an initial window's worth of data. 8. Thanks We thank Mark Handley and Jitendra Padhye for their help in defining CCID 0. 9. References [DCP] Eddie Kohler, Mark Handley, Sally Floyd, and Jitendra Padhye. Datagram Control Protocol (DCP). Work in progress. [RFC 2026] S. Bradner. The Internet Standards Process -- Revision 3. RFC 2026. [RFC 2581] W. Stevens, M. Allman, and V. Paxson, "TCP Congestion Control", RFC 2581, April 1999. 10. Authors' Addresses Eddie Kohler Sally Floyd AT&T Center for Internet Research at ICSI (ACIRI), ICSI, 1947 Center Street, Suite 600 Berkeley, CA 94704. Kohler/Floyd Section 10. [Page 6]