datatracker.ietf.org
Sign in
Version 5.3.0, 2014-04-12
Report a bug

TCP Friendly Rate Control (TFRC): Protocol Specification
RFC 5348

Network Working Group                                           S. Floyd
Request for Comments: 5348                                          ICIR
Obsoletes: 3448                                               M. Handley
Updates: 4342                                  University College London
                                                               J. Padhye
                                                               Microsoft
                                                               J. Widmer
                                                                  DoCoMo
                                                          September 2008

        TCP Friendly Rate Control (TFRC): Protocol Specification

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.

Abstract

   This document specifies TCP Friendly Rate Control (TFRC).  TFRC is a
   congestion control mechanism for unicast flows operating in a best-
   effort Internet environment.  It is reasonably fair when competing
   for bandwidth with TCP flows, but has a much lower variation of
   throughput over time compared with TCP, making it more suitable for
   applications such as streaming media where a relatively smooth
   sending rate is of importance.

   This document obsoletes RFC 3448 and updates RFC 4342.

Table of Contents

1. Introduction ....................................................3
2. Conventions .....................................................4
3. Protocol Mechanism ..............................................4
   3.1. TCP Throughput Equation ....................................5
   3.2. Packet Contents ............................................7
        3.2.1. Data Packets ........................................7
        3.2.2. Feedback Packets ....................................8
4. Data Sender Protocol ............................................8
   4.1. Measuring the Segment Size .................................9
   4.2. Sender Initialization .....................................10
   4.3. Sender Behavior When a Feedback Packet Is Received ........10
   4.4. Expiration of Nofeedback Timer ............................15
   4.5. Reducing Oscillations .....................................17

Floyd, et al.               Standards Track                     [Page 1]
RFC 5348              TFRC: Protocol Specification        September 2008

   4.6. Scheduling of Packet Transmissions ........................18
5. Calculation of the Loss Event Rate (p) .........................19
   5.1. Detection of Lost or Marked Packets .......................19
   5.2. Translation from Loss History to Loss Events ..............20
   5.3. The Size of a Loss Interval ...............................22
   5.4. Average Loss Interval .....................................22
   5.5. History Discounting .......................................24
6. Data Receiver Protocol .........................................26
   6.1. Receiver Behavior When a Data Packet Is Received ..........27
   6.2. Expiration of Feedback Timer ..............................27
   6.3. Receiver Initialization ...................................28
        6.3.1. Initializing the Loss History after the
               First Loss Event ...................................29
7. Sender-Based Variants ..........................................30
8. Implementation Issues ..........................................31
   8.1. Computing the Throughput Equation .........................31
   8.2. Sender Behavior When a Feedback Packet Is Received ........32
        8.2.1. Determining If an Interval Was a
               Data-Limited Interval ..............................32
        8.2.2. Maintaining X_recv_set .............................34
   8.3. Sending Packets before Their Nominal Send Time ............34
   8.4. Calculation of the Average Loss Interval ..................36
   8.5. The Optional History Discounting Mechanism ................36
9. Changes from RFC 3448 ..........................................36
   9.1. Overview of Changes .......................................36
   9.2. Changes in Each Section ...................................37
10. Security Considerations .......................................39
   10.1. Security Considerations for TFRC in DCCP .................40
11. Acknowledgments ...............................................40
Appendix A. Terminology ...........................................41
Appendix B. The Initial Value of the Nofeedback Timer .............43
Appendix C. Response to Idle or Data-Limited Periods ..............44

[include full document text]