UCL March 2006 Datagram Congestion Control Protocol (DCCP) Datagram Congestion Control Protocol...

download UCL March 2006 Datagram Congestion Control Protocol (DCCP) Datagram Congestion Control Protocol (DCCP) is a transport protocol that implements bidirectional, unicast connections of

of 129

  • date post

    24-Feb-2018
  • Category

    Documents

  • view

    213
  • download

    0

Embed Size (px)

Transcript of UCL March 2006 Datagram Congestion Control Protocol (DCCP) Datagram Congestion Control Protocol...

  • Network Working Group E. KohlerRequest for Comments: 4340 UCLACategory: Standards Track M. Handley UCL S. Floyd ICIR March 2006

    Datagram Congestion Control Protocol (DCCP)

    Status of This Memo

    This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

    Copyright Notice

    Copyright (C) The Internet Society (2006).

    Abstract

    The Datagram Congestion Control Protocol (DCCP) is a transport protocol that provides bidirectional unicast connections of congestion-controlled unreliable datagrams. DCCP is suitable for applications that transfer fairly large amounts of data and that can benefit from control over the tradeoff between timeliness and reliability.

    Table of Contents

    1. Introduction ....................................................5 2. Design Rationale ................................................6 3. Conventions and Terminology .....................................7 3.1. Numbers and Fields .........................................7 3.2. Parts of a Connection ......................................8 3.3. Features ...................................................9 3.4. Round-Trip Times ...........................................9 3.5. Security Limitation ........................................9 3.6. Robustness Principle ......................................10 4. Overview .......................................................10 4.1. Packet Types ..............................................10 4.2. Packet Sequencing .........................................11 4.3. States ....................................................12 4.4. Congestion Control Mechanisms .............................14

    Kohler, et al. Standards Track [Page 1]

  • RFC 4340 Datagram Congestion Control Protocol (DCCP) March 2006

    4.5. Feature Negotiation Options ...............................15 4.6. Differences from TCP ......................................16 4.7. Example Connection ........................................17 5. Packet Formats .................................................18 5.1. Generic Header ............................................19 5.2. DCCP-Request Packets ......................................22 5.3. DCCP-Response Packets .....................................23 5.4. DCCP-Data, DCCP-Ack, and DCCP-DataAck Packets .............23 5.5. DCCP-CloseReq and DCCP-Close Packets ......................25 5.6. DCCP-Reset Packets ........................................25 5.7. DCCP-Sync and DCCP-SyncAck Packets ........................28 5.8. Options ...................................................29 5.8.1. Padding Option .....................................31 5.8.2. Mandatory Option ...................................31 6. Feature Negotiation ............................................32 6.1. Change Options ............................................32 6.2. Confirm Options ...........................................33 6.3. Reconciliation Rules ......................................33 6.3.1. Server-Priority ....................................34 6.3.2. Non-Negotiable .....................................34 6.4. Feature Numbers ...........................................35 6.5. Feature Negotiation Examples ..............................36 6.6. Option Exchange ...........................................37 6.6.1. Normal Exchange ....................................38 6.6.2. Processing Received Options ........................38 6.6.3. Loss and Retransmission ............................40 6.6.4. Reordering .........................................41 6.6.5. Preference Changes .................................42 6.6.6. Simultaneous Negotiation ...........................42 6.6.7. Unknown Features ...................................43 6.6.8. Invalid Options ....................................43 6.6.9. Mandatory Feature Negotiation ......................44 7. Sequence Numbers ...............................................44 7.1. Variables .................................................45 7.2. Initial Sequence Numbers ..................................45 7.3. Quiet Time ................................................46 7.4. Acknowledgement Numbers ...................................47 7.5. Validity and Synchronization ..............................47 7.5.1. Sequence and Acknowledgement Number Windows ........48 7.5.2. Sequence Window Feature ............................49 7.5.3. Sequence-Validity Rules ............................49 7.5.4. Handling Sequence-Invalid Packets ..................51 7.5.5. Sequence Number Attacks ............................52 7.5.6. Sequence Number Handling Examples ..................54 7.6. Short Sequence Numbers ....................................55 7.6.1. Allow Short Sequence Numbers Feature ...............55 7.6.2. When to Avoid Short Sequence Numbers ...............56 7.7. NDP Count and Detecting Application Loss ..................56

    Kohler, et al. Standards Track [Page 2]

  • RFC 4340 Datagram Congestion Control Protocol (DCCP) March 2006

    7.7.1. NDP Count Usage Notes ..............................57 7.7.2. Send NDP Count Feature .............................57 8. Event Processing ...............................................58 8.1. Connection Establishment ..................................58 8.1.1. Client Request .....................................58 8.1.2. Service Codes ......................................59 8.1.3. Server Response ....................................61 8.1.4. Init Cookie Option .................................62 8.1.5. Handshake Completion ...............................63 8.2. Data Transfer .............................................63 8.3. Termination ...............................................64 8.3.1. Abnormal Termination ...............................66 8.4. DCCP State Diagram ........................................66 8.5. Pseudocode ................................................67 9. Checksums ......................................................72 9.1. Header Checksum Field .....................................73 9.2. Header Checksum Coverage Field ............................73 9.2.1. Minimum Checksum Coverage Feature ..................74 9.3. Data Checksum Option ......................................75 9.3.1. Check Data Checksum Feature ........................76 9.3.2. Checksum Usage Notes ...............................76 10. Congestion Control ............................................76 10.1. TCP-like Congestion Control ..............................77 10.2. TFRC Congestion Control ..................................78 10.3. CCID-Specific Options, Features, and Reset Codes .........78 10.4. CCID Profile Requirements ................................80 10.5. Congestion State .........................................81 11. Acknowledgements ..............................................81 11.1. Acks of Acks and Unidirectional Connections ..............82 11.2. Ack Piggybacking .........................................83 11.3. Ack Ratio Feature ........................................84 11.4. Ack Vector Options .......................................85 11.4.1. Ack Vector Consistency ............................88 11.4.2. Ack Vector Coverage ...............................89 11.5. Send Ack Vector Feature ..................................90 11.6. Slow Receiver Option .....................................90 11.7. Data Dropped Option ......................................91 11.7.1. Data Dropped and Normal Congestion Response .......94 11.7.2. Particular Drop Codes .............................95 12. Explicit Congestion Notification ..............................96 12.1. ECN Incapable Feature ....................................96 12.2. ECN Nonces ...............................................97 12.3. Aggression Penalties .....................................98 13. Timing Options ................................................99 13.1. Timestamp Option .........................................99 13.2. Elapsed Time Option ......................................99 13.3. Timestamp Echo Option ...................................100 14. Maximum Packet Size ..........................................101

    Kohler, et al. Standards Track [Page 3]

  • RFC 4340 Datagram Congestion Control Protocol (DCCP) March 2006

    14.1. Measuring PMTU ..........................................102 14.2. Sender Behavior .........................