rfc3148.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 900 行 · 第 1/3 页

TXT
900
字号






Network Working Group                                          M. Mathis
Request for Comments: 3148              Pittsburgh Supercomputing Center
Category: Informational                                        M. Allman
                                                          BBN/NASA Glenn
                                                               July 2001


   A Framework for Defining Empirical Bulk Transfer Capacity Metrics

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2001).  All Rights Reserved.

Abstract

   This document defines a framework for standardizing multiple BTC
   (Bulk Transport Capacity) metrics that parallel the permitted
   transport diversity.

1   Introduction

   Bulk Transport Capacity (BTC) is a measure of a network's ability to
   transfer significant quantities of data with a single congestion-
   aware transport connection (e.g., TCP).  The intuitive definition of
   BTC is the expected long term average data rate (bits per second) of
   a single ideal TCP implementation over the path in question.
   However, there are many congestion control algorithms (and hence
   transport implementations) permitted by IETF standards.  This
   diversity in transport algorithms creates a difficulty for
   standardizing BTC metrics because the allowed diversity is sufficient
   to lead to situations where different implementations will yield
   non-comparable measures -- and potentially fail the formal tests for
   being a metric.

   Two approaches are used.  First, each BTC metric must be much more
   tightly specified than the typical IETF protocol.  Second, each BTC
   methodology is expected to collect some ancillary metrics which are
   potentially useful to support analytical models of BTC.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].  Although



Mathis, et al.               Informational                      [Page 1]

RFC 3148      Framework for Defining Empirical BTC Metrics     July 2001


   [RFC2119] was written with protocols in mind, the key words are used
   in this document for similar reasons.  They are used to ensure that
   each BTC methodology defined contains specific pieces of information.

   Bulk Transport Capacity (BTC) is a measure of a network's ability to
   transfer significant quantities of data with a single congestion-
   aware transport connection (e.g., TCP).  For many applications the
   BTC of the underlying network dominates the overall elapsed time for
   the application to run and thus dominates the performance as
   perceived by a user.  Examples of such applications include FTP, and
   the world wide web when delivering large images or documents.  The
   intuitive definition of BTC is the expected long term average data
   rate (bits per second) of a single ideal TCP implementation over the
   path in question.  The specific definition of the bulk transfer
   capacity that MUST be reported by a BTC tool is:

      BTC = data_sent / elapsed_time

   where "data_sent" represents the unique "data" bits transfered (i.e.,
   not including header bits or emulated header bits).  Also note that
   the amount of data sent should only include the unique number of bits
   transmitted (i.e., if a particular packet is retransmitted the data
   it contains should be counted only once).

   Central to the notion of bulk transport capacity is the idea that all
   transport protocols should have similar responses to congestion in
   the Internet.  Indeed the only form of equity significantly deployed
   in the Internet today is that the vast majority of all traffic is
   carried by TCP implementations sharing common congestion control
   algorithms largely due to a shared developmental heritage.

   [RFC2581] specifies the standard congestion control algorithms used
   by TCP implementations.  Even though this document is a (proposed)
   standard, it permits considerable latitude in implementation.  This
   latitude is by design, to encourage ongoing evolution in congestion
   control algorithms.

   This legal diversity in congestion control algorithms creates a
   difficulty for standardizing BTC metrics because the allowed
   diversity is sufficient to lead to situations where different
   implementations will yield non-comparable measures -- and potentially
   fail the formal tests for being a metric.

   There is also evidence that most TCP implementations exhibit non-
   linear performance over some portion of their operating region.  It
   is possible to construct simple simulation examples where incremental
   improvements to a path (such as raising the link data rate) results
   in lower overall TCP throughput (or BTC) [Mat98].



Mathis, et al.               Informational                      [Page 2]

RFC 3148      Framework for Defining Empirical BTC Metrics     July 2001


   We believe that such non-linearity reflects weakness in our current
   understanding of congestion control and is present to some extent in
   all TCP implementations and BTC metrics.  Note that such non-
   linearity (in either TCP or a BTC metric) is potentially problematic
   in the market because investment in capacity might actually reduce
   the perceived quality of the network.  Ongoing research in congestion
   dynamics has some hope of mitigating or modeling the these non-
   linearities.

   Related areas, including integrated services [RFC1633,RFC2216],
   differentiated services [RFC2475] and Internet traffic analysis
   [MSMO97,PFTK98,Pax97b,LM97] are all currently receiving significant
   attention from the research community.  It is likely that we will see
   new experimental congestion control algorithms in the near future.
   In addition, Explicit Congestion Notification (ECN) [RFC2481] is
   being tested for Internet deployment.  We do not yet know how any of
   these developments might affect BTC metrics, and thus the BTC
   framework and metrics may need to be revisited in the future.

   This document defines a framework for standardizing multiple BTC
   metrics that parallel the permitted transport diversity.  Two
   approaches are used.  First, each BTC metric must be much more
   tightly specified than the typical IETF transport protocol.  Second,
   each BTC methodology is expected to collect some ancillary metrics
   which are potentially useful to support analytical models of BTC.  If
   a BTC methodology does not collect these ancillary metrics, it should
   collect enough information such that these metrics can be derived
   (for instance a segment trace file).

   As an example, the models in [PFTK98, MSMO97, OKM96a, Lak94] all
   predict bulk transfer performance based on path properties such as
   loss rate and round trip time.  A BTC methodology that also provides
   ancillary measures of these properties is stronger because agreement
   with the analytical models can be used to corroborate the direct BTC
   measurement results.

   More importantly the ancillary metrics are expected to be useful for
   resolving disparity between different BTC methodologies.  For
   example, a path that predominantly experiences clustered packet
   losses is likely to exhibit vastly different measures from BTC
   metrics that mimic Tahoe, Reno, NewReno, and SACK TCP algorithms
   [FF96].  The differences in the BTC metrics over such a path might be
   diagnosed by an ancillary measure of loss clustering.








Mathis, et al.               Informational                      [Page 3]

RFC 3148      Framework for Defining Empirical BTC Metrics     July 2001


   There are some path properties which are best measured as ancillary
   metrics to a transport protocol.  Examples of such properties include
   bottleneck queue limits or the tendency to reorder packets.  These
   are difficult or impossible to measure at low rates and unsafe to
   measure at rates higher than the bulk transport capacity of the path.

   It is expected that at some point in the future there will exist an
   A-frame [RFC2330] which will unify all simple path metrics (e.g.,
   segment loss rates, round trip time) and BTC ancillary metrics (e.g.,
   queue size and packet reordering) with different versions of BTC
   metrics (e.g., that parallel Reno or SACK TCP).

2   Congestion Control Algorithms

   Nearly all TCP implementations in use today utilize the congestion
   control algorithms published in [Jac88] and further refined in
   [RFC2581].  In addition to using the basic notion of using an ACK
   clock, TCP (and therefore BTC) implements five standard congestion
   control algorithms: Congestion Avoidance, Retransmission timeouts,
   Slow-start, Fast Retransmit and Fast Recovery.  All BTC
   implementations MUST implement slow start and congestion avoidance,
   as specified in [RFC2581] (with extra details also specified, as
   outlined below).  All BTC methodologies SHOULD implement fast
   retransmit and fast recovery as outlined in [RFC2581].  Finally, all
   BTC methodologies MUST implement a retransmission timeout.

   The algorithms specified in [RFC2581] give implementers some choices
   in the details of the implementation.  The following is a list of
   details about the congestion control algorithms that are either
   underspecified in [RFC2581] or very important to define when
   constructing a BTC methodology.  These details MUST be specifically
   defined in each BTC methodology.

      *  [RFC2581] does not standardize a specific algorithm for
         increasing cwnd during congestion avoidance.  Several candidate
         algorithms are given in [RFC2581].  The algorithm used in a
         particular BTC methodology MUST be defined.

      *  [RFC2581] does not specify which cwnd increase algorithm (slow
         start or congestion avoidance) should be used when cwnd equals
         ssthresh.  This MUST be specified for each BTC methodology.

      *  [RFC2581] allows TCPs to use advanced loss recovery mechanism
         such as NewReno [RFC2582,FF96,Hoe96] and SACK-based algorithms
         [FF96,MM96a,MM96b].  If used in a BTC implementation, such an
         algorithm MUST be fully defined.





Mathis, et al.               Informational                      [Page 4]

RFC 3148      Framework for Defining Empirical BTC Metrics     July 2001


      *  The actual segment size, or method of choosing a segment size
         (e.g., path MTU discovery [RFC1191]) and the number of header
         bytes assumed to be prepended to each segment MUST be
         specified.  In addition, if the segment size is artificially
         limited to less than the path MTU this MUST be indicated.

      *  TCP includes a retransmission timeout (RTO) to trigger
         retransmissions of segments that have not been acknowledged
         within an appropriate amount of time and have not been
         retransmitted via some more advanced loss recovery algorithm.
         A BTC implementation MUST include a retransmission timer.
         Calculating the RTO is subject to a number of details that MUST
         be defined for each BTC metric.  In addition, a BTC metric MUST
         define when the clock is set and the granularity of the clock.

         [RFC2988] specifies the behavior of the retransmission timer.
         However, there are several details left to the implementer
         which MUST be specified for each BTC metric defined.

   Note that as new congestion control algorithms are placed on the
   standards track they may be incorporated into BTC metrics (e.g., the
   Limited Transmit algorithm [ABF00]).  However, any implementation
   decisions provided by the relevant RFCs SHOULD be fully specified in
   the particular BTC metric.

3   Ancillary Metrics

   The following ancillary metrics can provide additional information
   about the network and the behavior of the implemented congestion
   control algorithms in response to the behavior of the network path.
   It is RECOMMENDED that these metrics be built into each BTC
   methodology.  Alternatively, it is RECOMMENDED that the BTC
   implementation provide enough information such that the ancillary
   metrics can be derived via post-processing (e.g., by providing a
   segment trace of the connection).

3.1 Congestion Avoidance Capacity

   The "Congestion Avoidance Capacity" (CAC) metric is the data rate
   (bits per second) of a fully specified implementation of the
   Congestion Avoidance algorithm, subject to the restriction that the
   Retransmission Timeout and Slow-Start algorithms are not invoked.
   The CAC metric is defined to have no meaning across Retransmission
   Timeouts or Slow-Start periods (except the single segment Slow-Start
   that is permitted to follow recovery, as discussed in section 2).






Mathis, et al.               Informational                      [Page 5]

RFC 3148      Framework for Defining Empirical BTC Metrics     July 2001


   In principle a CAC metric would be an ideal BTC metric, as it
   captures what should be TCP's steady state behavior.  But, there is a
   rather substantial difficulty with using it as such.  The Self-
   Clocking of the Congestion Avoidance algorithm can be very fragile,
   depending on the specific details of the Fast Retransmit, Fast
   Recovery or advanced recovery algorithms chosen.  It has been found
   that timeouts and periods of slow start loss recovery are prevalent
   in traffic on the Internet [LK98,BPS+97] and therefore these should
   be captured by the BTC metric.

   When TCP loses Self-Clock it is re-established through a
   retransmission timeout and Slow-Start.  These algorithms nearly
   always require more time than Congestion Avoidance would have taken.
   It is easily observed that unless the network loses an entire window

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?