<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-ippm-capacity-metric-method-12" indexInclude="true" ipr="trust200902" number="9097" prepTime="2021-11-09T15:33:13" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-ippm-capacity-metric-method-12" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9097" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="IP Capacity Metrics/Methods">Metrics and Methods for One-Way IP Capacity</title>
    <seriesInfo name="RFC" value="9097" stream="IETF"/>
    <author fullname="Al Morton" initials="A." surname="Morton">
      <organization showOnFrontPage="true">AT&amp;T Labs</organization>
      <address>
        <postal>
          <street>200 Laurel Avenue South</street>
          <city>Middletown</city>
          <region>NJ</region>
          <code>07748</code>
          <country>United States of America</country>
        </postal>
        <phone>+1 732 420 1571</phone>
        <email>acm@research.att.com</email>
      </address>
    </author>
    <author fullname="Rüdiger Geib" initials="R." surname="Geib">
      <organization showOnFrontPage="true">Deutsche Telekom</organization>
      <address>
        <postal>
          <street>Heinrich Hertz Str. 3-7</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <phone>+49 6151 5812747</phone>
        <email>Ruediger.Geib@telekom.de</email>
      </address>
    </author>
    <author fullname="Len Ciavattone" initials="L." surname="Ciavattone">
      <organization showOnFrontPage="true">AT&amp;T Labs</organization>
      <address>
        <postal>
          <street>200 Laurel Avenue South</street>
          <city>Middletown</city>
          <region>NJ</region>
          <code>07748</code>
          <country>United States of America</country>
        </postal>
        <phone>+1 732 420 1239</phone>
        <email>lencia@att.com</email>
      </address>
    </author>
    <date month="11" year="2021"/>
    <keyword>IP Layer</keyword>
    <keyword>Performance</keyword>
    <keyword>Speed</keyword>
    <keyword>Access</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This memo revisits the problem of Network Capacity Metrics first
      examined in RFC 5136. This memo specifies a more practical Maximum
      IP-Layer Capacity Metric definition catering to measurement 
      and outlines the corresponding Methods of Measurement.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9097" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2021 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-scope-goals-and-applicabili">Scope, Goals, and Applicability</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-motivation">Motivation</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-general-parameters-and-defi">General Parameters and Definitions</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ip-layer-capacity-singleton">IP-Layer Capacity Singleton Metric Definitions</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-formal-name">Formal Name</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-parameters">Parameters</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-metric-definitions">Metric Definitions</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-related-round-trip-delay-an">Related Round-Trip Delay and One-Way Loss Definitions</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.5">
                <t indent="0" pn="section-toc.1-1.5.2.5.1"><xref derivedContent="5.5" format="counter" sectionFormat="of" target="section-5.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-discussion">Discussion</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.6">
                <t indent="0" pn="section-toc.1-1.5.2.6.1"><xref derivedContent="5.6" format="counter" sectionFormat="of" target="section-5.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reporting-the-metric">Reporting the Metric</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-maximum-ip-layer-capacity-m">Maximum IP-Layer Capacity Metric Definitions (Statistics)</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-formal-name-2">Formal Name</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-parameters-2">Parameters</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-metric-definitions-2">Metric Definitions</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.4">
                <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-related-round-trip-delay-and">Related Round-Trip Delay and One-Way Loss Definitions</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.5">
                <t indent="0" pn="section-toc.1-1.6.2.5.1"><xref derivedContent="6.5" format="counter" sectionFormat="of" target="section-6.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-discussion-2">Discussion</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.6">
                <t indent="0" pn="section-toc.1-1.6.2.6.1"><xref derivedContent="6.6" format="counter" sectionFormat="of" target="section-6.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reporting-the-metric-2">Reporting the Metric</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ip-layer-sender-bit-rate-si">IP-Layer Sender Bit Rate Singleton Metric Definitions</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-formal-name-3">Formal Name</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-parameters-3">Parameters</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.3">
                <t indent="0" pn="section-toc.1-1.7.2.3.1"><xref derivedContent="7.3" format="counter" sectionFormat="of" target="section-7.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-metric-definition">Metric Definition</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.4">
                <t indent="0" pn="section-toc.1-1.7.2.4.1"><xref derivedContent="7.4" format="counter" sectionFormat="of" target="section-7.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-discussion-3">Discussion</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.5">
                <t indent="0" pn="section-toc.1-1.7.2.5.1"><xref derivedContent="7.5" format="counter" sectionFormat="of" target="section-7.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reporting-the-metric-3">Reporting the Metric</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-method-of-measurement">Method of Measurement</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-load-rate-adjustment-algori">Load Rate Adjustment Algorithm</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-measurement-qualification-o">Measurement Qualification or Verification</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.3">
                <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent="8.3" format="counter" sectionFormat="of" target="section-8.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-measurement-considerations">Measurement Considerations</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-reporting-formats">Reporting Formats</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-configuration-and-reporting">Configuration and Reporting Data Formats</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.2">
                <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="12.2" format="counter" sectionFormat="of" target="section-12.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-load-rate-adjustment-pseudo">Load Rate Adjustment Pseudocode</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="Appendix B" format="default" sectionFormat="of" target="section-appendix.b"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-rfc-8085-udp-guidelines-che">RFC 8085 UDP Guidelines Check</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.14.2">
              <li pn="section-toc.1-1.14.2.1">
                <t indent="0" pn="section-toc.1-1.14.2.1.1"><xref derivedContent="B.1" format="counter" sectionFormat="of" target="section-appendix.b.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-assessment-of-mandatory-req">Assessment of Mandatory Requirements</xref></t>
              </li>
              <li pn="section-toc.1-1.14.2.2">
                <t indent="0" pn="section-toc.1-1.14.2.2.1"><xref derivedContent="B.2" format="counter" sectionFormat="of" target="section-appendix.b.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-assessment-of-recommendatio">Assessment of Recommendations</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.15">
            <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.16">
            <t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">The IETF's efforts to define Network Capacity and Bulk Transport Capacity (BTC) have
      been chartered and progressed for over twenty years. Over that time, the
      performance community has seen the development of Informative definitions in
      <xref target="RFC3148" format="default" sectionFormat="of" derivedContent="RFC3148"/> for the Framework for Bulk Transport Capacity, <xref target="RFC5136" format="default" sectionFormat="of" derivedContent="RFC5136"/> for Network Capacity and Maximum IP-Layer Capacity, and the Experimental metric definitions and methods in
"<xref target="RFC8337" format="title" sectionFormat="of" derivedContent="Model-Based Metrics for Bulk Transport Capacity"/>" <xref target="RFC8337" format="default" sectionFormat="of" derivedContent="RFC8337"/>.</t>
      <t indent="0" pn="section-1-2">This memo revisits the problem of Network Capacity Metrics examined
      first in <xref target="RFC3148" format="default" sectionFormat="of" derivedContent="RFC3148"/> and later in <xref target="RFC5136" format="default" sectionFormat="of" derivedContent="RFC5136"/>.
      Maximum IP-Layer Capacity and Bulk Transfer Capacity <xref target="RFC3148" format="default" sectionFormat="of" derivedContent="RFC3148"/> (goodput) are different metrics. Maximum IP-Layer Capacity is
      like the theoretical goal for goodput. There are many metrics in <xref target="RFC5136" format="default" sectionFormat="of" derivedContent="RFC5136"/>, such as Available Capacity. Measurements depend on
      the network path under test and the use case. Here, the main use case is
      to assess the Maximum Capacity of one or more networks where the
      subscriber receives specific performance assurances, sometimes referred
      to as Internet access, or where a limit of the technology used on a
      path is being tested. For example, when a user subscribes to a 1 Gbps
      service, then the user, the Service Provider, and possibly other parties
      want to assure that the specified performance level is delivered. When a test confirms
      the subscribed performance level, a tester can seek the location of
      a bottleneck elsewhere.</t>
      <t indent="0" pn="section-1-3">This memo recognizes the importance of a definition of a Maximum
      IP-Layer Capacity Metric at a time when Internet subscription speeds
      have increased dramatically -- a definition that is both practical and
      effective for the performance community's needs, including Internet
      users. The metric definitions are intended to use Active Methods of
      Measurement <xref target="RFC7799" format="default" sectionFormat="of" derivedContent="RFC7799"/>, and a Method of Measurement is
      included for each metric.</t>
      <t indent="0" pn="section-1-4">The most direct Active Measurement of IP-Layer Capacity would use IP
      packets, but in practice a transport header is needed to traverse
      address and port translators. UDP offers the most direct assessment
      possibility, and in the measurement study to investigate whether UDP is viable as a general Internet transport protocol <xref target="copycat" format="default" sectionFormat="of" derivedContent="copycat"/>, the authors found that a high percentage of paths tested
      support UDP transport. A number of liaison statements have been exchanged on this
      topic <xref target="LS-SG12-A" format="default" sectionFormat="of" derivedContent="LS-SG12-A"/> <xref target="LS-SG12-B" format="default" sectionFormat="of" derivedContent="LS-SG12-B"/>, discussing
      the laboratory and field tests that support the UDP-based approach to
      IP-Layer Capacity measurement.</t>
      <t indent="0" pn="section-1-5">This memo also recognizes the updates to the IP Performance
      Metrics (IPPM) Framework <xref target="RFC2330" format="default" sectionFormat="of" derivedContent="RFC2330"/> that have been published since 1998. In particular, it makes use of <xref target="RFC7312" format="default" sectionFormat="of" derivedContent="RFC7312"/> for the Advanced Stream and
      Sampling Framework and <xref target="RFC8468" format="default" sectionFormat="of" derivedContent="RFC8468"/> for its IPv4, IPv6, and
      IPv4-IPv6 Coexistence Updates.</t>
      <t indent="0" pn="section-1-6"><xref target="app-a-load-rate-adj-pseudocode" format="default" sectionFormat="of" derivedContent="Appendix A"/> describes the load rate adjustment algorithm, using
      pseudocode. <xref target="app-b-rfc8085-udp" format="default" sectionFormat="of" derivedContent="Appendix B"/> discusses the algorithm's compliance with <xref target="RFC8085" format="default" sectionFormat="of" derivedContent="RFC8085"/>.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-1">The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
       "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>",
       "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>",
       "<bcp14>SHOULD NOT</bcp14>",
       "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
       "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document
       are to be interpreted as described in BCP 14
       <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only
       when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="sec-2-scope" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-scope-goals-and-applicabili">Scope, Goals, and Applicability</name>
      <t indent="0" pn="section-2-1">The scope of this memo is to define Active Measurement metrics and
      corresponding methods to unambiguously determine Maximum IP-Layer
      Capacity and useful secondary metrics.</t>
      <t indent="0" pn="section-2-2">Another goal is to harmonize the specified Metric and Method across
      the industry, and this memo is the vehicle that captures IETF consensus,
      possibly resulting in changes to the specifications of other Standards
      Development Organizations (SDOs) (through each SDO's normal contribution
      process or through liaison exchange).</t>
      <t indent="0" pn="section-2-3">Secondary goals are to add considerations for test procedures and to
      provide interpretation of the Maximum IP-Layer Capacity results (to
      identify cases where more testing is warranted, possibly with alternate
      configurations). Fostering the development of protocol support for this
      Metric and Method of Measurement is also a goal of this memo (all active
      testing protocols currently defined by the IPPM WG are UDP based,
      meeting a key requirement of these methods). The supporting protocol
      development to measure this metric according to the specified method is
      a key future contribution to Internet measurement.</t>
      <t indent="0" pn="section-2-4">The load rate adjustment algorithm's scope is limited to helping
      determine the Maximum IP-Layer Capacity in the context of an infrequent,
      diagnostic, short-term measurement. It is <bcp14>RECOMMENDED</bcp14> to discontinue
      non-measurement traffic that shares a subscriber's dedicated resources
      while testing: measurements may not be accurate, and throughput of
      competing elastic traffic may be greatly reduced.</t>
      <t indent="0" pn="section-2-5">The primary application of the Metrics and Methods of Measurement
      described here is the same as what is described in <xref target="RFC7497" sectionFormat="of" section="2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7497#section-2" derivedContent="RFC7497"/>, where:</t>
      <blockquote pn="section-2-6">The access portion of the network is the focus of this problem
          statement. The user typically subscribes to a service with
          bidirectional [Internet] access partly described by rates in bits per
          second.</blockquote>
      <t indent="0" pn="section-2-7">In addition, the use of the load rate adjustment algorithm
      described in <xref target="load-rate-adj" format="default" sectionFormat="of" derivedContent="Section 8.1"/> has the following additional applicability
      limitations:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-8">
        <li pn="section-2-8.1">It <bcp14>MUST</bcp14> only be used in the application of diagnostic and operations
      measurements as described in this memo.</li>
        <li pn="section-2-8.2">It <bcp14>MUST</bcp14> only be used in circumstances consistent with
      <xref target="sec-cons" format="default" sectionFormat="of" derivedContent="Section 10"/> ("Security Considerations").</li>
        <li pn="section-2-8.3">If a network operator is certain of the IP-Layer Capacity to be
      validated, then testing <bcp14>MAY</bcp14> start with a fixed-rate test at the IP-Layer
      Capacity and avoid activating the load adjustment algorithm. However,
      the stimulus for a diagnostic test (such as a subscriber request)
      strongly implies that there is no certainty, and the load adjustment
      algorithm is <bcp14>RECOMMENDED</bcp14>.</li>
      </ul>
      <t indent="0" pn="section-2-9">Further, the Metrics and Methods of Measurement are intended for use
      where specific exact path information is unknown within a range of
      possible values:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-10">
        <li pn="section-2-10.1">The subscriber's exact Maximum IP-Layer Capacity is unknown (which
      is sometimes the case; service rates can be increased due to upgrades
      without a subscriber's request or increased to provide a surplus to compensate
      for possible underestimates of TCP-based testing).</li>
        <li pn="section-2-10.2">The size of the bottleneck buffer is unknown.</li>
      </ul>
      <t indent="0" pn="section-2-11">Finally, the measurement system's load rate adjustment algorithm
      <bcp14>SHALL NOT</bcp14> be provided with the exact capacity value to be validated a priori. This restriction fosters a fair result and removes an
      opportunity for nefarious operation enabled by knowledge of the correct answer.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-motivation">Motivation</name>
      <t indent="0" pn="section-3-1">As with any problem that has been worked on for many years in various
      SDOs without any special attempts at coordination, various solutions for
      Metrics and Methods have emerged.</t>
      <t indent="0" pn="section-3-2">There are five factors that have changed (or began to change) in the
      2013-2019 time frame, and the presence of any one of them on the path
      requires features in the measurement design to account for the
      changes:

</t>
      <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-3-3"><li pn="section-3-3.1" derivedCounter="1.">Internet access is no longer the bottleneck for many users (but
          subscribers expect network providers to honor contracted
          performance).</li>
        <li pn="section-3-3.2" derivedCounter="2.">Both transfer rate and latency are important to a user's
          satisfaction.</li>
        <li pn="section-3-3.3" derivedCounter="3.">UDP's role in transport is growing in areas where TCP once
          dominated.</li>
        <li pn="section-3-3.4" derivedCounter="4.">Content and applications are moving physically closer to
          users.</li>
        <li pn="section-3-3.5" derivedCounter="5.">There is less emphasis on ISP gateway measurements, possibly due
          to less traffic crossing ISP gateways in the future.</li>
      </ol>
    </section>
    <section anchor="gen-params-defs" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-general-parameters-and-defi">General Parameters and Definitions</name>
      <t indent="0" pn="section-4-1">This section lists the <bcp14>REQUIRED</bcp14> input factors to specify a Sender or
      Receiver metric.</t>
      <dl spacing="normal" indent="3" newline="false" pn="section-4-2">
        <dt pn="section-4-2.1">Src:</dt>
        <dd pn="section-4-2.2">One of the addresses of a host (such as a globally routable
          IP address).</dd>
        <dt pn="section-4-2.3">Dst:</dt>
        <dd pn="section-4-2.4">One of the addresses of a host (such as a globally routable
          IP address).</dd>
        <dt pn="section-4-2.5">MaxHops:</dt>
        <dd pn="section-4-2.6">The limit on the number of Hops a specific packet may
          visit as it traverses from the host at Src to the host at Dst
          (implemented in the TTL or Hop Limit).</dd>
        <dt pn="section-4-2.7">T0:</dt>
        <dd pn="section-4-2.8">The time at the start of a measurement interval, when packets
          are first transmitted from the Source.</dd>
        <dt pn="section-4-2.9">I:</dt>
        <dd pn="section-4-2.10">The nominal duration of a measurement interval at the
          Destination (default 10 sec).</dd>
        <dt pn="section-4-2.11">dt:</dt>
        <dd pn="section-4-2.12">The nominal duration of m equal sub-intervals in I at the
          Destination (default 1 sec).</dd>
        <dt pn="section-4-2.13">dtn:</dt>
        <dd pn="section-4-2.14">The beginning boundary of a specific sub-interval, n, one of
          m sub-intervals in I.</dd>
        <dt pn="section-4-2.15">FT:</dt>
        <dd pn="section-4-2.16">The feedback time interval between status feedback messages
          communicating measurement results, sent from the Receiver to control
          the Sender. The results are evaluated throughout the test to
          determine how to adjust the current offered load rate at the Sender
          (default 50 msec).</dd>
        <dt pn="section-4-2.17">Tmax:</dt>
        <dd pn="section-4-2.18">A maximum waiting time for test packets to arrive at the
          Destination, set sufficiently long to disambiguate packets with long
          delays from packets that are discarded (lost), such that the
          distribution of one-way delay is not truncated.</dd>
        <dt pn="section-4-2.19">F:</dt>
        <dd pn="section-4-2.20">The number of different flows synthesized by the method
          (default one flow).</dd>
        <dt pn="section-4-2.21">Flow:</dt>
        <dd pn="section-4-2.22">The stream of packets with the same n-tuple of designated
          header fields that (when held constant) result in identical
          treatment in a multipath decision (such as the decision taken in
          load balancing). Note: The IPv6 flow label <bcp14>SHOULD</bcp14> be included in the
          flow definition when routers have complied with the guidelines provided in <xref target="RFC6438" format="default" sectionFormat="of" derivedContent="RFC6438"/>.</dd>
        <dt pn="section-4-2.23">Type-P:</dt>
        <dd pn="section-4-2.24">The complete description of the test packets for which
          this assessment applies (including the flow-defining fields). Note
          that the UDP transport layer is one requirement for test packets
          specified below. Type-P is a concept parallel to "population of
          interest" as defined in Clause 6.1.1 of <xref target="Y.1540" format="default" sectionFormat="of" derivedContent="Y.1540"/>.</dd>
        <dt pn="section-4-2.25">Payload Content:</dt>
        <dd pn="section-4-2.26">An aspect of the Type-P Parameter that 
can help to improve measurement determinism. Specifying packet payload content
helps to ensure IPPM Framework-conforming Metrics and Methods. If
          there is payload compression in the path and tests intend to
          characterize a possible advantage due to compression, then payload
          content <bcp14>SHOULD</bcp14> be supplied by a pseudorandom sequence generator, by
          using part of a compressed file, or by other means. See
          <xref target="RFC7312" sectionFormat="of" section="3.1.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7312#section-3.1.2" derivedContent="RFC7312"/>.</dd>
        <dt pn="section-4-2.27">PM:</dt>
        <dd pn="section-4-2.28">A list of fundamental metrics, such as loss, delay, and
          reordering, and corresponding target performance threshold(s). At least
          one fundamental metric and target performance threshold <bcp14>MUST</bcp14> be
          supplied (such as one-way IP packet loss <xref target="RFC7680" format="default" sectionFormat="of" derivedContent="RFC7680"/>
          equal to zero).</dd>
      </dl>
      <t indent="0" pn="section-4-3">A non-Parameter that is required for several metrics is
      defined below:</t>
      <dl spacing="normal" indent="3" newline="false" pn="section-4-4">
        <dt pn="section-4-4.1">T:</dt>
        <dd pn="section-4-4.2">The host time of the <strong>first</strong> test packet's <strong>arrival</strong> as
          measured at the Destination Measurement Point, or MP(Dst). There may
          be other packets sent between Source and Destination hosts that are
          excluded, so this is the time of arrival of the first packet used
          for measurement of the metric.</dd>
      </dl>
      <t indent="0" pn="section-4-5">Note that timestamp format and resolution, sequence numbers,
      etc. will be established by the chosen test protocol standard or
      implementation.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-ip-layer-capacity-singleton">IP-Layer Capacity Singleton Metric Definitions</name>
      <t indent="0" pn="section-5-1">This section sets requirements for the Singleton metric that supports
      the Maximum IP-Layer Capacity Metric definitions in <xref target="max-ip-metric-defs" format="default" sectionFormat="of" derivedContent="Section 6"/>.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-formal-name">Formal Name</name>
        <t indent="0" pn="section-5.1-1">"Type-P-One-way-IP-Capacity" is the formal name; it is informally called "IP-Layer Capacity".</t>
        <t indent="0" pn="section-5.1-2">Note that Type-P depends on the chosen method.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-parameters">Parameters</name>
        <t indent="0" pn="section-5.2-1">This section lists the <bcp14>REQUIRED</bcp14> input factors to specify the
        metric, beyond those listed in <xref target="gen-params-defs" format="default" sectionFormat="of" derivedContent="Section 4"/>.</t>
        <t indent="0" pn="section-5.2-2">No additional Parameters are needed.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-metric-definitions">Metric Definitions</name>
        <t indent="0" pn="section-5.3-1">This section defines the <bcp14>REQUIRED</bcp14> aspects of the measurable
        IP-Layer Capacity Metric (unless otherwise indicated) for measurements
        between specified Source and Destination hosts:</t>
        <t indent="0" pn="section-5.3-2">Define the IP-Layer Capacity, C(T,dt,PM), to be the number of
        IP-Layer bits (including header and data fields) in packets that can
        be transmitted from the Src host and correctly received by the Dst
        host during one contiguous sub-interval, dt in length. The IP-Layer
        Capacity depends on the Src and Dst hosts, the host addresses, and the
        path between the hosts.</t>
        <t indent="0" pn="section-5.3-3">The number of these IP-Layer bits is designated n0[dtn,dtn+1] for a
        specific dt.</t>
        <t indent="0" pn="section-5.3-4">When the packet size is known and of fixed size, the packet count
        during a single sub-interval dt multiplied by the total bits in IP
        header and data fields is equal to n0[dtn,dtn+1].</t>
        <t indent="0" pn="section-5.3-5">Anticipating a Sample of Singletons, the number of sub-intervals
        with duration dt <bcp14>MUST</bcp14> be set to a natural number m, so that T+I = T +
        m*dt with dtn+1 - dtn = dt for 1 &lt;= n &lt;= m.</t>
        <t indent="0" pn="section-5.3-6">Parameter PM represents other performance metrics (see <xref target="sec5-4-rt-delay" format="default" sectionFormat="of" derivedContent="Section 5.4"/>
        below); their measurement results <bcp14>SHALL</bcp14> be collected during
        measurement of IP-Layer Capacity and associated with the corresponding
        dtn for further evaluation and reporting. Users <bcp14>SHALL</bcp14> specify the
        Parameter Tmax as required by each metric's reference definition.</t>
        <t indent="0" pn="section-5.3-7">Mathematically, this definition is represented as (for each n):</t>
        <figure align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-equation-for-ip-layer-capac">Equation for IP-Layer Capacity</name>
          <artwork align="center" name="" type="ascii-art" alt="" pn="section-5.3-8.1">
                 ( n0[dtn,dtn+1] )
 C(T,dt,PM) = -------------------------
                        dt
</artwork>
        </figure>
        <t indent="0" pn="section-5.3-9">and:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.3-10">
          <li pn="section-5.3-10.1">n0 is the total number of IP-Layer header and payload bits that
            can be transmitted in standard-formed packets <xref target="RFC8468" format="default" sectionFormat="of" derivedContent="RFC8468"/> from the Src host and correctly received by the
            Dst host during one contiguous sub-interval, dt in length, during
            the interval [T,T+I].</li>
          <li pn="section-5.3-10.2">C(T,dt,PM), the IP-Layer Capacity, corresponds to the value of
            n0 measured in any sub-interval beginning at dtn, divided by the
            length of the sub-interval, dt.</li>
          <li pn="section-5.3-10.3">PM represents other performance metrics (see <xref target="sec5-4-rt-delay" format="default" sectionFormat="of" derivedContent="Section 5.4"/>
            below); their measurement results <bcp14>SHALL</bcp14> be collected during
            measurement of IP-Layer Capacity and associated with the
            corresponding dtn for further evaluation and reporting.</li>
          <li pn="section-5.3-10.4">All sub-intervals <bcp14>MUST</bcp14> be of equal duration. Choosing dt as
            non-overlapping consecutive time intervals allows for a simple
            implementation.</li>
          <li pn="section-5.3-10.5">The bit rate of the physical interface of the measurement
            devices <bcp14>MUST</bcp14> be higher than the smallest of the links on the path
            whose C(T,I,PM) is to be measured (the bottleneck link).</li>
        </ul>
        <t indent="0" pn="section-5.3-11">Measurements according to this definition <bcp14>SHALL</bcp14> use the UDP
        transport layer. Standard-formed packets are specified in <xref target="RFC8468" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8468#section-5" derivedContent="RFC8468"/>. The measurement <bcp14>SHOULD</bcp14> use a randomized
        Source port or equivalent technique, and <bcp14>SHOULD</bcp14> send responses from
        the Source address matching the test packet Destination address.</t>
        <t indent="0" pn="section-5.3-12">Some effects of compression on measurement are discussed in
<xref target="RFC8468" sectionFormat="of" section="6" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8468#section-6" derivedContent="RFC8468"/>.</t>
      </section>
      <section anchor="sec5-4-rt-delay" numbered="true" toc="include" removeInRFC="false" pn="section-5.4">
        <name slugifiedName="name-related-round-trip-delay-an">Related Round-Trip Delay and One-Way Loss Definitions</name>
        <t indent="0" pn="section-5.4-1">RTD[dtn,dtn+1] is defined as a Sample of the Round-Trip Delay <xref target="RFC2681" format="default" sectionFormat="of" derivedContent="RFC2681"/> between the Src host and the Dst
        host during the interval [T,T+I] (that contains equal non-overlapping
        intervals of dt). The "reasonable period of time" mentioned in <xref target="RFC2681" format="default" sectionFormat="of" derivedContent="RFC2681"/> is the Parameter Tmax in this memo. The statistics
        used to summarize RTD[dtn,dtn+1] <bcp14>MAY</bcp14> include the minimum, maximum,
        median, mean, and the range = (maximum - minimum). Some of these statistics are needed for load adjustment purposes (<xref target="load-rate-adj" format="default" sectionFormat="of" derivedContent="Section 8.1"/>), measurement qualification (<xref target="meas-qual-verif" format="default" sectionFormat="of" derivedContent="Section 8.2"/>), and reporting (<xref target="rpt-formats" format="default" sectionFormat="of" derivedContent="Section 9"/>).
</t>
        <t indent="0" pn="section-5.4-2">OWL[dtn,dtn+1] is defined as a Sample of the One-Way Loss <xref target="RFC7680" format="default" sectionFormat="of" derivedContent="RFC7680"/> between the Src host and the Dst host
        during the interval [T,T+I] (that contains equal non-overlapping
        intervals of dt). The statistics used to summarize OWL[dtn,dtn+1] <bcp14>MAY</bcp14>
        include the count of lost packets and the ratio of lost packets.</t>
        <t indent="0" pn="section-5.4-3">Other metrics <bcp14>MAY</bcp14> be measured: one-way reordering, duplication, and
        delay variation.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.5">
        <name slugifiedName="name-discussion">Discussion</name>
        <t indent="0" pn="section-5.5-1">See the corresponding section for Maximum IP-Layer Capacity (<xref target="Maximum-IP-Layer-Capacity-Discussion" format="default" sectionFormat="of" derivedContent="Section 6.5"/>).
</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.6">
        <name slugifiedName="name-reporting-the-metric">Reporting the Metric</name>
        <t indent="0" pn="section-5.6-1">The IP-Layer Capacity <bcp14>SHOULD</bcp14> be reported with at least
        single-Megabit resolution, in units of Megabits per second (Mbps) (which,
        to avoid any confusion, is 1,000,000 bits per second).</t>
        <t indent="0" pn="section-5.6-2">The related One-Way Loss metric and Round-Trip Delay measurements
        for the same Singleton <bcp14>SHALL</bcp14> be reported, also with meaningful
        resolution for the values measured.</t>
        <t indent="0" pn="section-5.6-3">Individual Capacity measurements <bcp14>MAY</bcp14> be reported in a manner
        consistent with the Maximum IP-Layer Capacity; see <xref target="rpt-formats" format="default" sectionFormat="of" derivedContent="Section 9"/>.</t>
      </section>
    </section>
    <section anchor="max-ip-metric-defs" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-maximum-ip-layer-capacity-m">Maximum IP-Layer Capacity Metric Definitions (Statistics)</name>
      <t indent="0" pn="section-6-1">This section sets requirements for the following components to
      support the Maximum IP-Layer Capacity Metric.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-formal-name-2">Formal Name</name>
        <t indent="0" pn="section-6.1-1">"Type-P-One-way-Max-IP-Capacity" is the formal name; it is informally called "Maximum IP-Layer Capacity".</t>
        <t indent="0" pn="section-6.1-2">Note that Type-P depends on the chosen method.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-parameters-2">Parameters</name>
        <t indent="0" pn="section-6.2-1">This section lists the <bcp14>REQUIRED</bcp14> input factors to specify the
        metric, beyond those listed in <xref target="gen-params-defs" format="default" sectionFormat="of" derivedContent="Section 4"/>.</t>
        <t indent="0" pn="section-6.2-2">No additional Parameters or definitions are needed.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-metric-definitions-2">Metric Definitions</name>
        <t indent="0" pn="section-6.3-1">This section defines the <bcp14>REQUIRED</bcp14> aspects of the Maximum IP-Layer
        Capacity Metric (unless otherwise indicated) for measurements between
        specified Source and Destination hosts:</t>
        <t indent="0" pn="section-6.3-2">Define the Maximum IP-Layer Capacity, Maximum_C(T,I,PM), to be the
        maximum number of IP-Layer bits n0[dtn,dtn+1] divided by dt that can
        be transmitted in packets from the Src host and correctly received by
        the Dst host, over all dt-length intervals in [T,T+I] and meeting
        the PM criteria. An equivalent definition would be the maximum of a Sample of size m of Singletons
        C(T,I,PM) collected during the interval [T,T+I] and meeting the PM
        criteria.</t>
        <t indent="0" pn="section-6.3-3">The number of sub-intervals with duration dt <bcp14>MUST</bcp14> be set to a
        natural number m, so that T+I = T + m*dt with dtn+1 - dtn = dt for 1
        &lt;= n &lt;= m.</t>
        <t indent="0" pn="section-6.3-4">Parameter PM represents the other performance metrics (see
        <xref target="sec6-4-rt-delay" format="default" sectionFormat="of" derivedContent="Section 6.4"/> below) and their measurement results for the Maximum IP-Layer
        Capacity. At least one target performance threshold (PM criterion)
        <bcp14>MUST</bcp14> be defined. If more than one metric and target performance
        threshold is defined, then the sub-interval with the maximum number of
        bits transmitted <bcp14>MUST</bcp14> meet all the target performance thresholds.
        Users <bcp14>SHALL</bcp14> specify the Parameter Tmax as required by each metric's
        reference definition.</t>
        <t indent="0" pn="section-6.3-5">Mathematically, this definition can be represented as:</t>
        <figure align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-equation-for-maximum-capaci">Equation for Maximum Capacity</name>
          <artwork align="center" name="" type="ascii-art" alt="" pn="section-6.3-6.1">
                        max  ( n0[dtn,dtn+1] )
                        [T,T+I]
  Maximum_C(T,I,PM) = -------------------------
                                 dt

  where:

    T                                      T+I
    _________________________________________
    |   |   |   |   |   |   |   |   |   |   |
dtn=1   2   3   4   5   6   7   8   9  10  n+1
                                       n=m
</artwork>
        </figure>
        <t indent="0" pn="section-6.3-7">and:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.3-8">
          <li pn="section-6.3-8.1">n0 is the total number of IP-Layer header and payload bits that
            can be transmitted in standard-formed packets from the Src host
            and correctly received by the Dst host during one contiguous
            sub-interval, dt in length, during the interval [T,T+I].</li>
          <li pn="section-6.3-8.2">Maximum_C(T,I,PM), the Maximum IP-Layer Capacity, corresponds to
            the maximum value of n0 measured in any sub-interval beginning at
            dtn, divided by the constant length of all sub-intervals, dt.</li>
          <li pn="section-6.3-8.3">PM represents the other performance metrics (see <xref target="sec6-4-rt-delay" format="default" sectionFormat="of" derivedContent="Section 6.4"/>)
            and their measurement results for the Maximum IP-Layer Capacity.
            At least one target performance threshold (PM criterion) <bcp14>MUST</bcp14> be
            defined.</li>
          <li pn="section-6.3-8.4">All sub-intervals <bcp14>MUST</bcp14> be of equal duration. Choosing dt as
            non-overlapping consecutive time intervals allows for a simple
            implementation.</li>
          <li pn="section-6.3-8.5">The bit rate of the physical interface of the measurement
            systems <bcp14>MUST</bcp14> be higher than the smallest of the links on the path
            whose Maximum_C(T,I,PM) is to be measured (the bottleneck
            link).</li>
        </ul>
        <t indent="0" pn="section-6.3-9">In this definition, the m sub-intervals can be viewed as trials
        when the Src host varies the transmitted packet rate, searching for
        the maximum n0 that meets the PM criteria measured at the Dst host in
        a test of duration I. When the transmitted packet rate is held
        constant at the Src host, the m sub-intervals may also be viewed as
        trials to evaluate the stability of n0 and metric(s) in the PM list
        over all dt-length intervals in I.</t>
        <t indent="0" pn="section-6.3-10">Measurements according to these definitions <bcp14>SHALL</bcp14> use the UDP
        transport layer.</t>
      </section>
      <section anchor="sec6-4-rt-delay" numbered="true" toc="include" removeInRFC="false" pn="section-6.4">
        <name slugifiedName="name-related-round-trip-delay-and">Related Round-Trip Delay and One-Way Loss Definitions</name>
        <t indent="0" pn="section-6.4-1">RTD[dtn,dtn+1] and OWL[dtn,dtn+1] are defined in <xref target="sec5-4-rt-delay" format="default" sectionFormat="of" derivedContent="Section 5.4"/>. Here,
        the test intervals are increased to match the capacity Samples,
        RTD[T,I] and OWL[T,I].</t>
        <t indent="0" pn="section-6.4-2">The interval dtn,dtn+1 where Maximum_C(T,I,PM) occurs is the
        reporting sub-interval for RTD[dtn,dtn+1] and OWL[dtn,dtn+1] within RTD[T,I] and OWL[T,I].</t>
        <t indent="0" pn="section-6.4-3">Other metrics <bcp14>MAY</bcp14> be measured: one-way reordering, duplication, and
        delay variation.</t>
      </section>
      <section numbered="true" toc="include" anchor="Maximum-IP-Layer-Capacity-Discussion" removeInRFC="false" pn="section-6.5">
        <name slugifiedName="name-discussion-2">Discussion</name>
        <t indent="0" pn="section-6.5-1">If traffic conditioning (e.g., shaping, policing) applies along a
        path for which Maximum_C(T,I,PM) is to be determined, different values
        for dt <bcp14>SHOULD</bcp14> be picked and measurements executed during multiple
        intervals [T,T+I]. Each duration dt <bcp14>SHOULD</bcp14> be chosen so that it is an
        integer multiple of increasing values k times serialization delay of a
        Path MTU (PMTU) at the physical interface speed where traffic conditioning is
        expected. This should avoid taking configured burst tolerance
        Singletons as a valid Maximum_C(T,I,PM) result.</t>
        <t indent="0" pn="section-6.5-2">A Maximum_C(T,I,PM) without any indication of bottleneck
        congestion, be that increased latency, packet loss, or Explicit Congestion
        Notification (ECN) marks during a measurement interval, I, is likely an
        underestimate of Maximum_C(T,I,PM).</t>
      </section>
      <section anchor="sec6-6-rpt-the-metric" numbered="true" toc="include" removeInRFC="false" pn="section-6.6">
        <name slugifiedName="name-reporting-the-metric-2">Reporting the Metric</name>
        <t indent="0" pn="section-6.6-1">The IP-Layer Capacity <bcp14>SHOULD</bcp14> be reported with at least
        single-Megabit resolution, in units of Megabits per second (Mbps) (which,
        to avoid any confusion, is 1,000,000 bits per second).</t>
        <t indent="0" pn="section-6.6-2">The related One-Way Loss metric and Round-Trip Delay measurements
        for the same Singleton <bcp14>SHALL</bcp14> be reported, also with meaningful
        resolution for the values measured.</t>
        <t indent="0" pn="section-6.6-3">When there are demonstrated and repeatable Capacity modes in the
        Sample, the Maximum IP-Layer Capacity <bcp14>SHALL</bcp14> be reported for each
        mode, along with the relative time from the beginning of the stream
        that the mode was observed to be present. Bimodal Maximum IP-Layer
        Capacities have been observed with some services, sometimes called a
        "turbo mode" intending to deliver short transfers more quickly or
        reduce the initial buffering time for some video streams. Note that
        modes lasting less than duration dt will not be detected.</t>
        <t indent="0" pn="section-6.6-4">Some transmission technologies have multiple methods of operation
        that may be activated when channel conditions degrade or improve, and
        these transmission methods may determine the Maximum IP-Layer
        Capacity. Examples include line-of-sight microwave modulator
        constellations, or cellular modem technologies where the changes may
        be initiated by a user moving from one coverage area to another.
        Operation in the different transmission methods may be observed over
        time, but the modes of Maximum IP-Layer Capacity will not be activated
        deterministically as with the "turbo mode" described in the paragraph
        above.</t>
      </section>
    </section>
    <section anchor="ip-layer-sender-br" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-ip-layer-sender-bit-rate-si">IP-Layer Sender Bit Rate Singleton Metric Definitions</name>
      <t indent="0" pn="section-7-1">This section sets requirements for the following components to
      support the IP-Layer Sender Bit Rate Metric. This metric helps to check
      that the Sender actually generated the desired rates during a test, and
      measurement takes place at the interface between the Src host and the network path (or as
      close as practical within the Src host). It is not a metric for path
      performance.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.1">
        <name slugifiedName="name-formal-name-3">Formal Name</name>
        <t indent="0" pn="section-7.1-1">"Type-P-IP-Sender-Bit-Rate" is the formal name; it is informally called the "IP-Layer Sender Bit Rate".</t>
        <t indent="0" pn="section-7.1-2">Note that Type-P depends on the chosen method.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.2">
        <name slugifiedName="name-parameters-3">Parameters</name>
        <t indent="0" pn="section-7.2-1">This section lists the <bcp14>REQUIRED</bcp14> input factors to specify the
        metric, beyond those listed in <xref target="gen-params-defs" format="default" sectionFormat="of" derivedContent="Section 4"/>.</t>
        <dl spacing="normal" indent="3" newline="false" pn="section-7.2-2">
          <dt pn="section-7.2-2.1">S:</dt>
          <dd pn="section-7.2-2.2">The duration of the measurement interval at the Source.</dd>
          <dt pn="section-7.2-2.3">st:</dt>
          <dd pn="section-7.2-2.4">The nominal duration of N sub-intervals in S (default st =
            0.05 seconds).</dd>
          <dt pn="section-7.2-2.5">stn:</dt>
          <dd pn="section-7.2-2.6">The beginning boundary of a specific sub-interval, n, one
            of N sub-intervals in S.</dd>
        </dl>
        <t indent="0" pn="section-7.2-3">S <bcp14>SHALL</bcp14> be longer than I, primarily to account for on-demand
        activation of the path, or any preamble to testing required, and the
        delay of the path.</t>
        <t indent="0" pn="section-7.2-4">st <bcp14>SHOULD</bcp14> be much smaller than the sub-interval dt and on the same
        order as FT; otherwise, the rate measurement will include many rate
        adjustments and include more time smoothing, possibly smoothing the interval that contains the Maximum
        IP-Layer Capacity (and therefore losing relevance). The st Parameter does not have relevance when the
        Source is transmitting at a fixed rate throughout S.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.3">
        <name slugifiedName="name-metric-definition">Metric Definition</name>
        <t indent="0" pn="section-7.3-1">This section defines the <bcp14>REQUIRED</bcp14> aspects of the IP-Layer Sender
        Bit Rate Metric (unless otherwise indicated) for measurements at the
        specified Source on packets addressed for the intended Destination
        host and matching the required Type-P:</t>
        <t indent="0" pn="section-7.3-2">Define the IP-Layer Sender Bit Rate, B(S,st), to be the number of
        IP-Layer bits (including header and data fields) that are transmitted
        from the Source with address pair Src and Dst during one contiguous
        sub-interval, st, during the test interval S (where S <bcp14>SHALL</bcp14> be longer
        than I) and where the fixed-size packet count during that single
        sub-interval st also provides the number of IP-Layer bits in any
        interval, [stn,stn+1].</t>
        <t indent="0" pn="section-7.3-3">Measurements according to this definition <bcp14>SHALL</bcp14> use the UDP
        transport layer. Any feedback from the Dst host to the Src host received by the
        Src host during an interval [stn,stn+1] <bcp14>SHOULD NOT</bcp14> result in an
        adaptation of the Src host traffic conditioning during this interval
        (rate adjustment occurs on st interval boundaries).</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.4">
        <name slugifiedName="name-discussion-3">Discussion</name>
        <t indent="0" pn="section-7.4-1">Both the Sender and Receiver (or Source and Destination) bit rates <bcp14>SHOULD</bcp14> be assessed as part of an IP-Layer Capacity measurement.
        Otherwise, an unexpected sending rate limitation could produce an
        erroneous Maximum IP-Layer Capacity measurement.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-7.5">
        <name slugifiedName="name-reporting-the-metric-3">Reporting the Metric</name>
        <t indent="0" pn="section-7.5-1">The IP-Layer Sender Bit Rate <bcp14>SHALL</bcp14> be reported with meaningful
        resolution, in units of Megabits per second (which, to avoid any confusion,
        is 1,000,000 bits per second).</t>
        <t indent="0" pn="section-7.5-2">Individual IP-Layer Sender Bit Rate measurements are discussed
        further in <xref target="rpt-formats" format="default" sectionFormat="of" derivedContent="Section 9"/>.</t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-method-of-measurement">Method of Measurement</name>
      <t indent="0" pn="section-8-1">It is <bcp14>REQUIRED</bcp14> per the architecture of the method that two cooperating hosts operate in the roles of Src (test packet Sender) and Dst (Receiver)
      with a measured path and return path between them.</t>
      <t indent="0" pn="section-8-2">The duration of a test, Parameter I, <bcp14>MUST</bcp14> be constrained in a
      production network, since this is an active test method and it will
      likely cause congestion on the path from the Src host to the Dst host during a test.</t>
      <section anchor="load-rate-adj" numbered="true" toc="include" removeInRFC="false" pn="section-8.1">
        <name slugifiedName="name-load-rate-adjustment-algori">Load Rate Adjustment Algorithm</name>
        <t indent="0" pn="section-8.1-1">The algorithm described in this section <bcp14>MUST NOT</bcp14> be used as a
        general Congestion Control Algorithm (CCA). As stated in 
        <xref target="sec-2-scope" format="default" sectionFormat="of" derivedContent="Section 2"/> ("Scope, Goals, and Applicability"), the load rate adjustment algorithm's goal is to help
        determine the Maximum IP-Layer Capacity in the context of an
        infrequent, diagnostic, short-term measurement. There is a trade-off
        between test duration (also the test data volume) and algorithm
        aggressiveness (speed of ramp-up and ramp-down to the Maximum IP-Layer
        Capacity). The Parameter values chosen below strike a well-tested
        balance among these factors.</t>
        <t indent="0" pn="section-8.1-2">A table <bcp14>SHALL</bcp14> be pre-built (by the test administrator), defining all the
        offered load rates that will be supported (R1 through Rn, in ascending
        order, corresponding to indexed rows in the table). It is <bcp14>RECOMMENDED</bcp14>
        that rates begin with 0.5 Mbps at index zero, use 1 Mbps at index one,
        and then continue in 1 Mbps increments to 1 Gbps. Above 1 Gbps, and up
        to 10 Gbps, it is <bcp14>RECOMMENDED</bcp14> that 100 Mbps increments be used. Above
        10 Gbps, increments of 1 Gbps are <bcp14>RECOMMENDED</bcp14>. A higher initial
        IP-Layer Sender Bit Rate might be configured when the test operator is
        certain that the Maximum IP-Layer Capacity is well above the initial
        IP-Layer Sender Bit Rate and factors such as test duration and total
        test traffic play an important role. The sending rate table <bcp14>SHOULD</bcp14>
        bracket the Maximum Capacity where it will make measurements, including
        constrained rates less than 500 kbps if applicable.</t>
        <t indent="0" pn="section-8.1-3">Each rate is defined as datagrams of size ss, sent as a burst of
        count cc, each time interval tt (the default for tt is 100 microsec, a likely
        system tick interval). While it is advantageous to use datagrams of as
        large a size as possible, it may be prudent to use a slightly smaller
        maximum that allows for secondary protocol headers and/or tunneling
        without resulting in IP-Layer fragmentation. Selection of a new rate
        is indicated by a calculation on the current row, Rx. For example:</t>
        <dl newline="false" spacing="normal" indent="3" pn="section-8.1-4">
          <dt pn="section-8.1-4.1">"Rx+1":</dt>
          <dd pn="section-8.1-4.2">The Sender uses the next-higher rate in the table.</dd>
          <dt pn="section-8.1-4.3">"Rx-10":</dt>
          <dd pn="section-8.1-4.4">The Sender uses the rate 10 rows lower in the table.</dd>
        </dl>
        <t indent="0" pn="section-8.1-5">At the beginning of a test, the Sender begins sending at rate R1
        and the Receiver starts a feedback timer of duration FT (while
        awaiting inbound datagrams). As datagrams are received, they are
        checked for sequence number anomalies (loss, out-of-order,
        duplication, etc.) and the delay range is measured (one-way or
        round-trip). This information is accumulated until the feedback timer
        FT expires and a status feedback message is sent from the Receiver
        back to the Sender, to communicate this information. The accumulated
        statistics are then reset by the Receiver for the next feedback
        interval. As feedback messages are received back at the Sender, they
        are evaluated to determine how to adjust the current offered load rate
        (Rx).</t>
        <t indent="0" pn="section-8.1-6">If the feedback indicates that no sequence number anomalies were
        detected AND the delay range was below the lower threshold, the
        offered load rate is increased. If congestion has not been confirmed
        up to this point (see below for the method for declaring congestion), the
        offered load rate is increased by more than one rate setting (e.g., Rx+10).
        This allows the offered load to quickly reach a near-maximum rate.
        Conversely, if congestion has been previously confirmed, the offered
        load rate is only increased by one (Rx+1). However, if a rate
        threshold above a high sending rate (such as 1 Gbps) is
        exceeded, the offered load rate is only increased by one (Rx+1) 
        in any congestion state.</t>
        <t indent="0" pn="section-8.1-7">If the feedback indicates that sequence number anomalies were
        detected OR the delay range was above the upper threshold, the offered
        load rate is decreased. The <bcp14>RECOMMENDED</bcp14> threshold values are 10 for
        sequence number gaps and 30 msec for lower and 90 msec for upper delay
        thresholds, respectively. Also, if congestion is now confirmed for the
        first time by the current feedback message being processed, then the
        offered load rate is decreased by more than one rate setting (e.g., Rx-30).
        This one-time reduction is intended to compensate for the fast initial
        ramp-up. In all other cases, the offered load rate is only decreased
        by one (Rx-1).</t>
        <t indent="0" pn="section-8.1-8">If the feedback indicates that there were no sequence number
        anomalies AND the delay range was above the lower threshold but below
        the upper threshold, the offered load rate is not changed. This allows
        time for recent changes in the offered load rate to stabilize and for the
        feedback to represent current conditions more accurately.</t>
        <t indent="0" pn="section-8.1-9">Lastly, the method for inferring congestion is that there were
        sequence number anomalies AND/OR the delay range was above the upper
        threshold for three consecutive feedback intervals. The algorithm
        described above is also illustrated in Annex B of ITU-T Recommendation Y.1540, 2020
        version <xref target="Y.1540" format="default" sectionFormat="of" derivedContent="Y.1540"/> and is implemented in <xref target="app-a-load-rate-adj-pseudocode" format="default" sectionFormat="of" derivedContent="Appendix A"/> ("Load Rate Adjustment Pseudocode")
        in this memo.</t>
        <t indent="0" pn="section-8.1-10">The load rate adjustment algorithm <bcp14>MUST</bcp14> include timers that stop
        the test when received packet streams cease unexpectedly. The timeout
        thresholds are provided in <xref target="load-rate-adj-params" format="default" sectionFormat="of" derivedContent="Table 1"/>, along with values for all
        other Parameters and variables described in this section. Operations of
        non-obvious Parameters appear below:</t>
        <dl newline="true" spacing="normal" indent="3" pn="section-8.1-11">
          <dt pn="section-8.1-11.1">load packet timeout:</dt>
          <dd pn="section-8.1-11.2">The load packet
            timeout <bcp14>SHALL</bcp14> be reset to the configured value each time a load
            packet is received. If the timeout expires, the Receiver <bcp14>SHALL</bcp14> be
            closed and no further feedback sent.</dd>
          <dt pn="section-8.1-11.3">feedback message timeout:</dt>
          <dd pn="section-8.1-11.4">The feedback
            message timeout <bcp14>SHALL</bcp14> be reset to the configured value each time a
            feedback message is received. If the timeout expires, the Sender
            <bcp14>SHALL</bcp14> be closed and no further load packets sent.</dd>
        </dl>
        <table align="center" anchor="load-rate-adj-params" pn="table-1">
          <name slugifiedName="name-parameters-for-load-rate-ad">Parameters for Load Rate Adjustment Algorithm</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Parameter</th>
              <th align="left" colspan="1" rowspan="1">Default</th>
              <th align="left" colspan="1" rowspan="1">Tested Range or Values</th>
              <th align="left" colspan="1" rowspan="1">Expected Safe Range (not entirely tested, other
          values <bcp14>NOT RECOMMENDED</bcp14>)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">FT, feedback time interval</td>
              <td align="left" colspan="1" rowspan="1">50 msec</td>
              <td align="left" colspan="1" rowspan="1">20 msec, 50 msec, 100 msec</td>
              <td align="left" colspan="1" rowspan="1">20 msec &lt;= FT &lt;= 250 msec; larger values may slow the rate
          increase and fail to find the max</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Feedback message timeout (stop test)</td>
              <td align="left" colspan="1" rowspan="1">L*FT, L=20 (1 sec with FT=50 msec)</td>
              <td align="left" colspan="1" rowspan="1">L=100 with FT=50 msec (5 sec)</td>
              <td align="left" colspan="1" rowspan="1">0.5 sec &lt;= L*FT &lt;= 30 sec; upper limit for very unreliable
          test paths only</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Load packet timeout (stop test)</td>
              <td align="left" colspan="1" rowspan="1">1 sec</td>
              <td align="left" colspan="1" rowspan="1">5 sec</td>
              <td align="left" colspan="1" rowspan="1">0.250-30 sec; upper limit for very unreliable test paths
          only</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Table index 0</td>
              <td align="left" colspan="1" rowspan="1">0.5 Mbps</td>
              <td align="left" colspan="1" rowspan="1">0.5 Mbps</td>
              <td align="left" colspan="1" rowspan="1">When testing &lt;= 10 Gbps</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Table index 1</td>
              <td align="left" colspan="1" rowspan="1">1 Mbps</td>
              <td align="left" colspan="1" rowspan="1">1 Mbps</td>
              <td align="left" colspan="1" rowspan="1">When testing &lt;= 10 Gbps</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Table index (step) size</td>
              <td align="left" colspan="1" rowspan="1">1 Mbps</td>
              <td align="left" colspan="1" rowspan="1">1 Mbps &lt;= rate &lt;= 1 Gbps</td>
              <td align="left" colspan="1" rowspan="1">Same as tested</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Table index (step) size, rate &gt; 1 Gbps</td>
              <td align="left" colspan="1" rowspan="1">100 Mbps</td>
              <td align="left" colspan="1" rowspan="1">1 Gbps &lt;= rate &lt;= 10 Gbps</td>
              <td align="left" colspan="1" rowspan="1">Same as tested</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Table index (step) size, rate &gt; 10 Gbps</td>
              <td align="left" colspan="1" rowspan="1">1 Gbps</td>
              <td align="left" colspan="1" rowspan="1">Untested</td>
              <td align="left" colspan="1" rowspan="1">&gt;10 Gbps</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">ss, UDP payload size, bytes</td>
              <td align="left" colspan="1" rowspan="1">None</td>
              <td align="left" colspan="1" rowspan="1">&lt;=1222</td>
              <td align="left" colspan="1" rowspan="1">Recommend max at largest value that avoids fragmentation; using a payload size that is too small might result in unexpected Sender
          limitations</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">cc, burst count</td>
              <td align="left" colspan="1" rowspan="1">None</td>
              <td align="left" colspan="1" rowspan="1">1 &lt;= cc &lt;= 100</td>
              <td align="left" colspan="1" rowspan="1">Same as tested. Vary cc as needed to create the desired maximum
          sending rate. Sender buffer size may limit cc in the implementation</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">tt, burst interval</td>
              <td align="left" colspan="1" rowspan="1">100 microsec</td>
              <td align="left" colspan="1" rowspan="1">100 microsec, 1 msec</td>
              <td align="left" colspan="1" rowspan="1">Available range of "tick" values (HZ param)</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Low delay range threshold</td>
              <td align="left" colspan="1" rowspan="1">30 msec</td>
              <td align="left" colspan="1" rowspan="1">5 msec, 30 msec</td>
              <td align="left" colspan="1" rowspan="1">Same as tested</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">High delay range threshold</td>
              <td align="left" colspan="1" rowspan="1">90 msec</td>
              <td align="left" colspan="1" rowspan="1">10 msec, 90 msec</td>
              <td align="left" colspan="1" rowspan="1">Same as tested</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Sequence error threshold</td>
              <td align="left" colspan="1" rowspan="1">10</td>
              <td align="left" colspan="1" rowspan="1">0, 1, 5, 10, 100</td>
              <td align="left" colspan="1" rowspan="1">Same as tested</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Consecutive errored status report threshold</td>
              <td align="left" colspan="1" rowspan="1">3</td>
              <td align="left" colspan="1" rowspan="1">2, 3, 4, 5</td>
              <td align="left" colspan="1" rowspan="1">Use values &gt;1 to avoid misinterpreting transient loss</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Fast mode increase, in table index steps</td>
              <td align="left" colspan="1" rowspan="1">10</td>
              <td align="left" colspan="1" rowspan="1">10</td>
              <td align="left" colspan="1" rowspan="1">2 &lt;= steps &lt;= 30</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Fast mode decrease, in table index steps</td>
              <td align="left" colspan="1" rowspan="1">3 * Fast mode increase</td>
              <td align="left" colspan="1" rowspan="1">3 * Fast mode increase</td>
              <td align="left" colspan="1" rowspan="1">Same as tested</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-8.1-13">As a consequence of default parameterization, the Number of table
        steps in total for rates less than 10 Gbps is 1090 (excluding index 0).</t>
        <t indent="0" pn="section-8.1-14">A related Sender backoff response to network conditions occurs when
        one or more status feedback messages fail to arrive at the Sender.</t>
        <t indent="0" pn="section-8.1-15">If no status feedback messages arrive at the Sender for the
        interval greater than the Lost Status Backoff timeout:</t>
        <artwork name="" type="ascii-art" align="left" alt="" pn="section-8.1-16">           UDRT + (2+w)*FT = Lost Status Backoff timeout

   where:

   UDRT = upper delay range threshold (default 90 msec)
   FT   = feedback time interval (default 50 msec)
   w    = number of repeated timeouts (w=0 initially, w++ on each
          timeout, and reset to 0 when a message is received)
</artwork>
        <t indent="0" pn="section-8.1-17">Beginning when the last message (of any type) was successfully
        received at the Sender:</t>
        <t indent="0" pn="section-8.1-18">The offered load <bcp14>SHALL</bcp14> then be decreased, following the same
        process as when the feedback indicates the presence of one or more
        sequence number anomalies OR the delay range was above the upper
        threshold (as described above), with the same load rate adjustment
        algorithm variables in their current state. This means that lost status feedback messages OR sequence errors OR delay variation can result in rate reduction and congestion confirmation.</t>
        <t indent="0" pn="section-8.1-19">The <bcp14>RECOMMENDED</bcp14> initial value for w is 0, taking a Round-Trip Time
        (RTT) of less than FT into account. A test with an RTT longer than FT is a
        valid reason to increase the initial value of w appropriately.
        Variable w <bcp14>SHALL</bcp14> be incremented by one whenever the Lost Status Backoff
        timeout is exceeded. So, with FT = 50 msec and UDRT = 90 msec, a status
        feedback message loss would be declared at 190 msec following a
        successful message, again at 50 msec after that (240 msec total), and so
        on.</t>
        <t indent="0" pn="section-8.1-20">Also, if congestion is now confirmed for the first time by a Lost
        Status Backoff timeout, then the offered load rate is decreased by
        more than one rate setting (e.g., Rx-30). This one-time reduction is intended
        to compensate for the fast initial ramp-up. In all other cases, the
        offered load rate is only decreased by one (Rx-1).</t>
        <t indent="0" pn="section-8.1-21"><xref target="app-b-rfc8085-udp" format="default" sectionFormat="of" derivedContent="Appendix B"/> discusses compliance with the applicable mandatory
        requirements of <xref target="RFC8085" format="default" sectionFormat="of" derivedContent="RFC8085"/>, consistent with the goals of
        the IP-Layer Capacity Metric and Method, including the load rate
        adjustment algorithm described in this section.</t>
      </section>
      <section anchor="meas-qual-verif" numbered="true" toc="include" removeInRFC="false" pn="section-8.2">
        <name slugifiedName="name-measurement-qualification-o">Measurement Qualification or Verification</name>
        <t indent="0" pn="section-8.2-1">It is of course necessary to calibrate the equipment performing the
        IP-Layer Capacity measurement, to ensure that the expected capacity
        can be measured accurately and that equipment choices (processing
        speed, interface bandwidth, etc.) are suitably matched to the
        measurement range.</t>
        <t indent="0" pn="section-8.2-2">When assessing a maximum rate as the metric specifies, artificially
        high (optimistic) values might be measured until some buffer on the
        path is filled. Other causes include bursts of back-to-back packets
        with idle intervals delivered by a path, while the measurement
        interval (dt) is small and aligned with the bursts. The artificial
        values might result in an unsustainable Maximum Capacity observed
        when the Method of Measurement is searching for the maximum, and that
        would not do. This situation is different from the bimodal service
        rates (discussed in "<xref target="sec6-6-rpt-the-metric" format="title" sectionFormat="of" derivedContent="Reporting the Metric"/>", <xref target="sec6-6-rpt-the-metric" format="default" sectionFormat="of" derivedContent="Section 6.6"/>), which are characterized by a
        multi-second duration (much longer than the measured RTT) and
        repeatable behavior.</t>
        <t indent="0" pn="section-8.2-3">There are many ways that the Method of Measurement could handle
        this false-max issue. The default value for measurement of Singletons
        (dt = 1 second) has proven to be of practical value during tests of
        this method, allows the bimodal service rates to be characterized, and
        has an obvious alignment with the reporting units (Mbps).</t>
        <t indent="0" pn="section-8.2-4">Another approach comes from <xref target="RFC2544" sectionFormat="of" section="24" format="default" derivedLink="https://rfc-editor.org/rfc/rfc2544#section-24" derivedContent="RFC2544"/>
        and its discussion of trial duration, where relatively short trials
        conducted as part of the search are followed by longer trials to make
        the final determination. In the production network, measurements of
        Singletons and Samples (the terms for trials and tests of Lab
        Benchmarking) must be limited in duration because they may affect
        service. But there is sufficient value in repeating a Sample
        with a fixed sending rate determined by the previous search for the
        Maximum IP-Layer Capacity, to qualify the result in terms of the other
        performance metrics measured at the same time.</t>
        <t indent="0" pn="section-8.2-5">A Qualification measurement for the search result is a subsequent
        measurement, sending at a fixed 99.x percent of the Maximum IP-Layer
        Capacity for I, or an indefinite period. The same Maximum Capacity
        Metric is applied, and the Qualification for the result is a Sample
        without supra-threshold packet losses or a growing minimum delay trend in subsequent
        Singletons (or each dt of the measurement interval, I). Samples
        exhibiting supra-threshold packet losses or increasing queue occupation require a repeated
        search and/or test at a reduced fixed Sender rate for Qualification.</t>
        <t indent="0" pn="section-8.2-6">Here, as with any Active Capacity test, the test duration must be
        kept short. Ten-second tests for each direction of transmission are
        common today. The default measurement interval specified here is I =
        10 seconds. The combination of a fast and congestion-aware search
        method and user-network coordination makes a unique contribution to
        production testing. The Maximum IP Capacity Metric and Method for
        assessing performance is very different from the classic Throughput Metric and Methods provided in <xref target="RFC2544" format="default" sectionFormat="of" derivedContent="RFC2544"/>: it uses
        near-real-time load adjustments that are sensitive to loss and delay,
        similar to other congestion control algorithms used on the Internet
        every day, along with limited duration. On the other hand, Throughput measurements <xref target="RFC2544" format="default" sectionFormat="of" derivedContent="RFC2544"/> can produce sustained
        overload conditions for extended periods of time. Individual trials in
        a test governed by a binary search can last 60 seconds for each step,
        and the final confirmation trial may be even longer. This is very
        different from "normal" traffic levels, but overload conditions are
        not a concern in the isolated test environment. The concerns raised in
        <xref target="RFC6815" format="default" sectionFormat="of" derivedContent="RFC6815"/> were that the methods discussed in <xref target="RFC2544" format="default" sectionFormat="of" derivedContent="RFC2544"/> would be let loose on production networks, and instead the authors
        challenged the standards community to develop Metrics and Methods like
        those described in this memo.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-8.3">
        <name slugifiedName="name-measurement-considerations">Measurement Considerations</name>
        <t indent="0" pn="section-8.3-1">In general, the widespread measurements that this memo encourages
        will encounter widespread behaviors. The bimodal IP Capacity
        behaviors already discussed in <xref target="sec6-6-rpt-the-metric" format="default" sectionFormat="of" derivedContent="Section 6.6"/> are good examples.</t>
        <t indent="0" pn="section-8.3-2">In general, it is <bcp14>RECOMMENDED</bcp14> to locate test endpoints as close to
        the intended measured link(s) as practical (for reasons of scale, this is not always possible; there is a limit on the number of test
        endpoints coming from many perspectives -- for example, management and measurement traffic). The testing operator <bcp14>MUST</bcp14> set a value for the
        MaxHops Parameter, based on the expected path length. This Parameter
        can keep measurement traffic from straying too far beyond the intended
        path.</t>
        <t indent="0" pn="section-8.3-3">The measured path may be stateful based on many factors, and the
        Parameter "Time of day" when a test starts may not be enough
        information. Repeatable testing may require knowledge of the time from the
        beginning of a measured flow -- and how the flow is constructed,
        including how much traffic has already been sent on that flow when a
        state change is observed -- because the state change may be based on
        time, bytes sent, or both. Both load packets and status feedback
        messages <bcp14>MUST</bcp14> contain sequence numbers; this helps with measurements
        based on those packets.</t>
        <t indent="0" pn="section-8.3-4">Many different types of traffic shapers and on-demand
        communications access technologies may be encountered, as anticipated
        in <xref target="RFC7312" format="default" sectionFormat="of" derivedContent="RFC7312"/>, and play a key role in measurement
        results. Methods <bcp14>MUST</bcp14> be prepared to provide a short preamble
        transmission to activate on-demand communications access and to
        discard the preamble from subsequent test results.</t>
        <t indent="0" pn="section-8.3-5">The following conditions might be encountered during measurement, where
        packet losses may occur independently of the measurement sending
        rate:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-8.3-6"><li pn="section-8.3-6.1" derivedCounter="1.">Congestion of an interconnection or backbone interface may
            appear as packet losses distributed over time in the test stream,
            due to much-higher-rate interfaces in the backbone.</li>
          <li pn="section-8.3-6.2" derivedCounter="2.">Packet loss due to the use of Random Early Detection (RED) or other
            active queue management may or may not affect the measurement flow
            if competing background traffic (other flows) is simultaneously
            present.</li>
          <li pn="section-8.3-6.3" derivedCounter="3.">There may be only a small delay variation independent of the sending
            rate under these conditions as well.</li>
          <li pn="section-8.3-6.4" derivedCounter="4.">Persistent competing traffic on measurement paths that include
            shared transmission media may cause random packet losses in the
            test stream.</li>
        </ol>
        <t indent="0" pn="section-8.3-7">It is possible to mitigate these conditions using the
        flexibility of the load rate adjustment algorithm described in
        <xref target="load-rate-adj" format="default" sectionFormat="of" derivedContent="Section 8.1"/> above (tuning specific Parameters).</t>
        <t indent="0" pn="section-8.3-8">If the measurement flow burst duration happens to be on the order
        of or smaller than the burst size of a shaper or a policer in the
        path, then the line rate might be measured rather than the bandwidth
        limit imposed by the shaper or policer. If this condition is
        suspected, alternate configurations <bcp14>SHOULD</bcp14> be used.</t>
        <t indent="0" pn="section-8.3-9">In general, results depend on the sending stream's characteristics;
        the measurement community has known this for a long time and needs to
        keep it foremost in mind. Although the default is a single flow (F=1) for
        testing, the use of multiple flows may be advantageous for the following
        reasons:</t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-8.3-10"><li pn="section-8.3-10.1" derivedCounter="1.">The test hosts may be able to create a higher load than with a
            single flow, or parallel test hosts may be used to generate one flow
            each.</li>
          <li pn="section-8.3-10.2" derivedCounter="2.">Link aggregation may be present (flow-based load balancing), and multiple flows are needed to occupy each member of
            the aggregate.</li>
          <li pn="section-8.3-10.3" derivedCounter="3.">Internet access policies may limit the IP-Layer Capacity
            depending on the Type-P of the packets, possibly reserving capacity
            for various stream types.</li>
        </ol>
        <t indent="0" pn="section-8.3-11">Each flow would be controlled using its own implementation of
        the load rate adjustment (search) algorithm.</t>
        <t indent="0" pn="section-8.3-12">It is obviously counterproductive to run more than one independent
        and concurrent test (regardless of the number of flows in the test
        stream) attempting to measure the <strong>maximum</strong> capacity on a single path.
        The number of concurrent, independent tests of a path <bcp14>SHALL</bcp14> be limited
        to one.</t>
        <t indent="0" pn="section-8.3-13">Tests of a v4-v6 transition mechanism might well be the intended
        subject of a capacity test. As long as both IPv4 packets and IPv6 packets
        sent/received are standard-formed, this should be allowed (and
        the change in header size easily accounted for on a per-packet
        basis).</t>
        <t indent="0" pn="section-8.3-14">As testing continues, implementers should expect the methods to evolve. The ITU-T has published a supplement (Supplement 60) to the Y-series
        of ITU-T Recommendations, "Interpreting ITU-T Y.1540 maximum IP-layer
        capacity measurements" <xref target="Y.Sup60" format="default" sectionFormat="of" derivedContent="Y.Sup60"/>, which is the result
        of continued testing with the metric. Those results have improved
        the methods described here.</t>
      </section>
    </section>
    <section anchor="rpt-formats" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-reporting-formats">Reporting Formats</name>
      <t indent="0" pn="section-9-1">The Singleton IP-Layer Capacity results <bcp14>SHOULD</bcp14> be accompanied by the
      context under which they were measured.</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-2">
        <li pn="section-9-2.1">Timestamp (especially the time when the maximum was observed in
          dtn).</li>
        <li pn="section-9-2.2">Source and Destination (by IP or other meaningful ID).</li>
        <li pn="section-9-2.3">Other inner Parameters of the test case (<xref target="gen-params-defs" format="default" sectionFormat="of" derivedContent="Section 4"/>).</li>
        <li pn="section-9-2.4">Outer Parameters, such as "test conducted in motion" or other
          factors belonging to the context of the measurement.</li>
        <li pn="section-9-2.5">Result validity (indicating cases where the process was somehow
          interrupted or the attempt failed).</li>
        <li pn="section-9-2.6">A field where unusual circumstances could be documented, and
          another one for "ignore / mask out" purposes in further processing.</li>
      </ul>
      <t indent="0" pn="section-9-3">The Maximum IP-Layer Capacity results <bcp14>SHOULD</bcp14> be reported in tabular
  format. There <bcp14>SHOULD</bcp14> be a column that identifies the test Phase.
  There <bcp14>SHOULD</bcp14> be a column listing the number of flows used in that Phase.
  The remaining columns <bcp14>SHOULD</bcp14> report the following results for the aggregate 
  of all flows, including the Maximum IP-Layer Capacity, the Loss Ratio,
  the RTT minimum, RTT maximum, and other metrics tested having similar 
  relevance.</t>
      <t indent="0" pn="section-9-4">As mentioned in <xref target="sec6-6-rpt-the-metric" format="default" sectionFormat="of" derivedContent="Section 6.6"/>, bimodal (or multi-modal) maxima <bcp14>SHALL</bcp14>
      be reported for each mode separately.</t>
      <table align="center" pn="table-2">
        <name slugifiedName="name-maximum-ip-layer-capacity-r">Maximum IP-Layer Capacity Results</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Phase</th>
            <th align="left" colspan="1" rowspan="1">Number of Flows</th>
            <th align="left" colspan="1" rowspan="1">Maximum IP-Layer Capacity (Mbps)</th>
            <th align="left" colspan="1" rowspan="1">Loss Ratio</th>
            <th align="left" colspan="1" rowspan="1">RTT min (msec)</th>
            <th align="left" colspan="1" rowspan="1">RTT max (msec)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">Search</td>
            <td align="left" colspan="1" rowspan="1">1</td>
            <td align="left" colspan="1" rowspan="1">967.31</td>
            <td align="left" colspan="1" rowspan="1">0.0002</td>
            <td align="left" colspan="1" rowspan="1">30</td>
            <td align="left" colspan="1" rowspan="1">58</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Verify</td>
            <td align="left" colspan="1" rowspan="1">1</td>
            <td align="left" colspan="1" rowspan="1">966.00</td>
            <td align="left" colspan="1" rowspan="1">0.0000</td>
            <td align="left" colspan="1" rowspan="1">30</td>
            <td align="left" colspan="1" rowspan="1">38</td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-9-6">Static and configuration Parameters:</t>
      <t indent="0" pn="section-9-7">The sub-interval time, dt, <bcp14>MUST</bcp14> accompany a report of Maximum
      IP-Layer Capacity results, as well as the remaining Parameters from <xref target="gen-params-defs" format="default" sectionFormat="of" derivedContent="Section 4"/> ("General Parameters and Definitions").</t>
      <t indent="0" pn="section-9-8">The PM list metrics corresponding to the sub-interval where the
      Maximum Capacity occurred <bcp14>MUST</bcp14> accompany a report of Maximum IP-Layer
      Capacity results, for each test Phase.</t>
      <t indent="0" pn="section-9-9">The IP-Layer Sender Bit Rate results <bcp14>SHOULD</bcp14> be reported in tabular format. 
  There <bcp14>SHOULD</bcp14> be a column that identifies the test Phase. 
  There <bcp14>SHOULD</bcp14> be a column listing each individual (numbered) flow used
  in that Phase, or the aggregate of flows in that Phase. A corresponding column <bcp14>SHOULD</bcp14> identify the
  specific sending rate sub-interval, stn, for each flow and aggregate. A final column <bcp14>SHOULD</bcp14> report the 
  IP-Layer Sender Bit Rate results for each flow used, or the aggregate of all flows.</t>
      <table align="center" pn="table-3">
        <name slugifiedName="name-ip-layer-sender-bit-rate-re">IP-Layer Sender Bit Rate Results (Example with Two Flows and st = 0.05 (sec))</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Phase</th>
            <th align="left" colspan="1" rowspan="1">Flow Number or Aggregate</th>
            <th align="left" colspan="1" rowspan="1">stn (sec)</th>
            <th align="left" colspan="1" rowspan="1">Sender Bit Rate (Mbps)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">Search</td>
            <td align="left" colspan="1" rowspan="1">1</td>
            <td align="left" colspan="1" rowspan="1">0.00</td>
            <td align="left" colspan="1" rowspan="1">345</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Search</td>
            <td align="left" colspan="1" rowspan="1">2</td>
            <td align="left" colspan="1" rowspan="1">0.00</td>
            <td align="left" colspan="1" rowspan="1">289</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Search</td>
            <td align="left" colspan="1" rowspan="1">Agg</td>
            <td align="left" colspan="1" rowspan="1">0.00</td>
            <td align="left" colspan="1" rowspan="1">634</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Search</td>
            <td align="left" colspan="1" rowspan="1">1</td>
            <td align="left" colspan="1" rowspan="1">0.05</td>
            <td align="left" colspan="1" rowspan="1">499</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Search</td>
            <td align="left" colspan="1" rowspan="1">...</td>
            <td align="left" colspan="1" rowspan="1">0.05</td>
            <td align="left" colspan="1" rowspan="1">...</td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-9-11">Static and configuration Parameters:</t>
      <t indent="0" pn="section-9-12">The sub-interval duration, st, <bcp14>MUST</bcp14> accompany a report of Sender IP-Layer
      Bit Rate results.</t>
      <t indent="0" pn="section-9-13">Also, the values of the remaining Parameters from <xref target="gen-params-defs" format="default" sectionFormat="of" derivedContent="Section 4"/> ("General Parameters and Definitions") <bcp14>MUST</bcp14> be reported.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-9.1">
        <name slugifiedName="name-configuration-and-reporting">Configuration and Reporting Data Formats</name>
        <t indent="0" pn="section-9.1-1">As a part of the multi-Standards Development Organization (SDO)
        harmonization of this Metric and Method of Measurement, one of the
        areas where the Broadband Forum (BBF) contributed its expertise was in
        the definition of an information model and data model for
        configuration and reporting. These models are consistent with the
        metric Parameters and default values specified as lists in this memo.
        <xref target="TR-471" format="default" sectionFormat="of" derivedContent="TR-471"/> provides the information model that was used
        to prepare a full data model in related BBF work. The BBF has also
        carefully considered topics within its purview, such as the placement of
        measurement systems within the Internet access architecture. For
        example, timestamp resolution requirements that influence the choice
        of the test protocol are provided in Table 2 of <xref target="TR-471" format="default" sectionFormat="of" derivedContent="TR-471"/>.</t>
      </section>
    </section>
    <section anchor="sec-cons" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-10-1">Active Metrics and Active Measurements have a long history of security
      considerations. The security considerations that apply to any Active
      Measurement of live paths are relevant here. See <xref target="RFC4656" format="default" sectionFormat="of" derivedContent="RFC4656"/> and <xref target="RFC5357" format="default" sectionFormat="of" derivedContent="RFC5357"/>.</t>
      <t indent="0" pn="section-10-2">When considering the privacy of those involved in measurement or those
      whose traffic is measured, the sensitive information available to
      potential observers is greatly reduced when using active techniques
      that are within this scope of work. Passive observations of user
      traffic for measurement purposes raise many privacy issues. We refer the
      reader to the privacy considerations described in the Large-scale
      Measurement of Broadband Performance (LMAP) Framework <xref target="RFC7594" format="default" sectionFormat="of" derivedContent="RFC7594"/>, which covers active and passive techniques.</t>
      <t indent="0" pn="section-10-3">There are some new considerations for Capacity measurement as
      described in this memo.</t>
      <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-10-4"><li pn="section-10-4.1" derivedCounter="1.">Cooperating Source and Destination hosts and agreements to test
          the path between the hosts are <bcp14>REQUIRED</bcp14>. Hosts perform in either the
          Src role or the Dst role.</li>
        <li pn="section-10-4.2" derivedCounter="2.">It is <bcp14>REQUIRED</bcp14> to have a user client-initiated setup handshake
          between cooperating hosts that allows firewalls to control inbound
          unsolicited UDP traffic that goes to either a control port
          (expected and with authentication) or ephemeral ports that are only
          created as needed. Firewalls protecting each host can both continue
          to do their job normally.</li>
        <li pn="section-10-4.3" derivedCounter="3.">Client-server authentication and integrity protection for
          feedback messages conveying measurements are <bcp14>RECOMMENDED</bcp14>.</li>
        <li pn="section-10-4.4" derivedCounter="4.">Hosts <bcp14>MUST</bcp14> limit the number of simultaneous tests to avoid
          resource exhaustion and inaccurate results.</li>
        <li pn="section-10-4.5" derivedCounter="5.">Senders <bcp14>MUST</bcp14> be rate limited. This can be accomplished using a
          pre-built table defining all the offered load rates that will be
          supported (<xref target="load-rate-adj" format="default" sectionFormat="of" derivedContent="Section 8.1"/>). The recommended load control search
          algorithm results in "ramp-up" from the lowest rate in the
          table.</li>
        <li pn="section-10-4.6" derivedCounter="6.">Service subscribers with limited data volumes who conduct
          extensive capacity testing might experience the effects of Service
          Provider controls on their service. Testing with the Service
          Provider's measurement hosts <bcp14>SHOULD</bcp14> be limited in frequency and/or
          overall volume of test traffic (for example, the range of duration
          values, I, <bcp14>SHOULD</bcp14> be limited).</li>
      </ol>
      <t indent="0" pn="section-10-5">The exact specification of these features is left for future
      protocol development.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-11">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-11-1">This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references pn="section-12">
      <name slugifiedName="name-references">References</name>
      <references pn="section-12.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC2330" target="https://www.rfc-editor.org/info/rfc2330" quoteTitle="true" derivedAnchor="RFC2330">
          <front>
            <title>Framework for IP Performance Metrics</title>
            <author initials="V." surname="Paxson" fullname="V. Paxson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Almes" fullname="G. Almes">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Mahdavi" fullname="J. Mahdavi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Mathis" fullname="M. Mathis">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1998" month="May"/>
            <abstract>
              <t indent="0">The purpose of this memo is to define a general framework for particular metrics to be developed by the IETF's IP Performance Metrics effort. This memo provides information for the Internet community.  It does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2330"/>
          <seriesInfo name="DOI" value="10.17487/RFC2330"/>
        </reference>
        <reference anchor="RFC2681" target="https://www.rfc-editor.org/info/rfc2681" quoteTitle="true" derivedAnchor="RFC2681">
          <front>
            <title>A Round-trip Delay Metric for IPPM</title>
            <author initials="G." surname="Almes" fullname="G. Almes">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Kalidindi" fullname="S. Kalidindi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Zekauskas" fullname="M. Zekauskas">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1999" month="September"/>
            <abstract>
              <t indent="0">This memo defines a metric for round-trip delay of packets across Internet paths.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2681"/>
          <seriesInfo name="DOI" value="10.17487/RFC2681"/>
        </reference>
        <reference anchor="RFC4656" target="https://www.rfc-editor.org/info/rfc4656" quoteTitle="true" derivedAnchor="RFC4656">
          <front>
            <title>A One-way Active Measurement Protocol (OWAMP)</title>
            <author initials="S." surname="Shalunov" fullname="S. Shalunov">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Teitelbaum" fullname="B. Teitelbaum">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Karp" fullname="A. Karp">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Boote" fullname="J. Boote">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Zekauskas" fullname="M. Zekauskas">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="September"/>
            <abstract>
              <t indent="0">The One-Way Active Measurement Protocol (OWAMP) measures unidirectional characteristics such as one-way delay and one-way loss.  High-precision measurement of these one-way IP performance metrics became possible with wider availability of good time sources (such as GPS and CDMA).  OWAMP enables the interoperability of these measurements.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4656"/>
          <seriesInfo name="DOI" value="10.17487/RFC4656"/>
        </reference>
        <reference anchor="RFC4737" target="https://www.rfc-editor.org/info/rfc4737" quoteTitle="true" derivedAnchor="RFC4737">
          <front>
            <title>Packet Reordering Metrics</title>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Ciavattone" fullname="L. Ciavattone">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Ramachandran" fullname="G. Ramachandran">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Shalunov" fullname="S. Shalunov">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Perser" fullname="J. Perser">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="November"/>
            <abstract>
              <t indent="0">This memo defines metrics to evaluate whether a network has maintained packet order on a packet-by-packet basis.  It provides motivations for the new metrics and discusses the measurement issues, including the context information required for all metrics.  The memo first defines a reordered singleton, and then uses it as the basis for sample metrics to quantify the extent of reordering in several useful dimensions for network characterization or receiver design. Additional metrics quantify the frequency of reordering and the distance between separate occurrences.  We then define a metric oriented toward assessment of reordering effects on TCP.  Several examples of evaluation using the various sample metrics are included.  An appendix gives extended definitions for evaluating order with packet fragmentation.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4737"/>
          <seriesInfo name="DOI" value="10.17487/RFC4737"/>
        </reference>
        <reference anchor="RFC5357" target="https://www.rfc-editor.org/info/rfc5357" quoteTitle="true" derivedAnchor="RFC5357">
          <front>
            <title>A Two-Way Active Measurement Protocol (TWAMP)</title>
            <author initials="K." surname="Hedayat" fullname="K. Hedayat">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Krzanowski" fullname="R. Krzanowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Yum" fullname="K. Yum">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Babiarz" fullname="J. Babiarz">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="October"/>
            <abstract>
              <t indent="0">The One-way Active Measurement Protocol (OWAMP), specified in RFC 4656, provides a common protocol for measuring one-way metrics between network devices.  OWAMP can be used bi-directionally to measure one-way metrics in both directions between two network elements.  However, it does not accommodate round-trip or two-way measurements.  This memo specifies a Two-Way Active Measurement Protocol (TWAMP), based on the OWAMP, that adds two-way or round-trip measurement capabilities.  The TWAMP measurement architecture is usually comprised of two hosts with specific roles, and this allows for some protocol simplifications, making it an attractive alternative in some circumstances.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5357"/>
          <seriesInfo name="DOI" value="10.17487/RFC5357"/>
        </reference>
        <reference anchor="RFC6438" target="https://www.rfc-editor.org/info/rfc6438" quoteTitle="true" derivedAnchor="RFC6438">
          <front>
            <title>Using the IPv6 Flow Label for Equal Cost Multipath Routing and Link Aggregation in Tunnels</title>
            <author initials="B." surname="Carpenter" fullname="B. Carpenter">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Amante" fullname="S. Amante">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="November"/>
            <abstract>
              <t indent="0">The IPv6 flow label has certain restrictions on its use.  This document describes how those restrictions apply when using the flow label for load balancing by equal cost multipath routing and for link aggregation, particularly for IP-in-IPv6 tunneled traffic.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6438"/>
          <seriesInfo name="DOI" value="10.17487/RFC6438"/>
        </reference>
        <reference anchor="RFC7497" target="https://www.rfc-editor.org/info/rfc7497" quoteTitle="true" derivedAnchor="RFC7497">
          <front>
            <title>Rate Measurement Test Protocol Problem Statement and Requirements</title>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="April"/>
            <abstract>
              <t indent="0">This memo presents a problem statement for access rate measurement for test protocols to measure IP Performance Metrics (IPPM).  Key rate measurement test protocol aspects include the ability to control packet characteristics on the tested path, such as asymmetric rate and asymmetric packet size.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7497"/>
          <seriesInfo name="DOI" value="10.17487/RFC7497"/>
        </reference>
        <reference anchor="RFC7680" target="https://www.rfc-editor.org/info/rfc7680" quoteTitle="true" derivedAnchor="RFC7680">
          <front>
            <title>A One-Way Loss Metric for IP Performance Metrics (IPPM)</title>
            <author initials="G." surname="Almes" fullname="G. Almes">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Kalidindi" fullname="S. Kalidindi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Zekauskas" fullname="M. Zekauskas">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Morton" fullname="A. Morton" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="January"/>
            <abstract>
              <t indent="0">This memo defines a metric for one-way loss of packets across Internet paths.  It builds on notions introduced and discussed in the IP Performance Metrics (IPPM) Framework document, RFC 2330; the reader is assumed to be familiar with that document.  This memo makes RFC 2680 obsolete.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="82"/>
          <seriesInfo name="RFC" value="7680"/>
          <seriesInfo name="DOI" value="10.17487/RFC7680"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8468" target="https://www.rfc-editor.org/info/rfc8468" quoteTitle="true" derivedAnchor="RFC8468">
          <front>
            <title>IPv4, IPv6, and IPv4-IPv6 Coexistence: Updates for the IP Performance Metrics (IPPM) Framework</title>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Fabini" fullname="J. Fabini">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Elkins" fullname="N. Elkins">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Ackermann" fullname="M. Ackermann">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Hegde" fullname="V. Hegde">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="November"/>
            <abstract>
              <t indent="0">This memo updates the IP Performance Metrics (IPPM) framework defined by RFC 2330 with new considerations for measurement methodology and testing.  It updates the definition of standard-formed packets to include IPv6 packets, deprecates the definition of minimal IP packet, and augments distinguishing aspects, referred to as Type-P, for test packets in RFC 2330.  This memo identifies that IPv4-IPv6 coexistence can challenge measurements within the scope of the IPPM framework. Example use cases include, but are not limited to, IPv4-IPv6 translation, NAT, and protocol encapsulation.  IPv6 header compression and use of IPv6 over Low-Power Wireless Area Networks (6LoWPAN) are considered and excluded from the standard-formed packet evaluation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8468"/>
          <seriesInfo name="DOI" value="10.17487/RFC8468"/>
        </reference>
      </references>
      <references pn="section-12.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="copycat" target="https://irtf.org/anrw/2017/anrw17-final5.pdf" quoteTitle="true" derivedAnchor="copycat">
          <front>
            <title>copycat: Testing Differential Treatment of New Transport Protocols in the Wild</title>
            <author fullname="Korian Edeline" initials="K." surname="Edeline">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Benoit Donnet" initials="B." surname="Donnet">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="July" year="2017"/>
          </front>
          <refcontent>ANRW '17</refcontent>
          <seriesInfo name="DOI" value="10.1145/3106328.3106330"/>
        </reference>
        <reference anchor="LS-SG12-A" target="https://datatracker.ietf.org/liaison/1632/" quoteTitle="true" derivedAnchor="LS-SG12-A">
          <front>
            <title>Liaison statement: LS - Harmonization of IP Capacity and Latency Parameters: Revision of Draft Rec. Y.1540 on IP packet transfer performance parameters and New Annex A with Lab Evaluation Plan</title>
            <author/>
            <date month="March" year="2019"/>
          </front>
          <refcontent>From ITU-T SG 12</refcontent>
        </reference>
        <reference anchor="LS-SG12-B" target="https://datatracker.ietf.org/liaison/1645/" quoteTitle="true" derivedAnchor="LS-SG12-B">
          <front>
            <title>Liaison statement: LS on harmonization of IP Capacity and Latency Parameters: Consent of Draft Rec. Y.1540 on IP packet transfer performance parameters and New Annex A with Lab &amp; Field Evaluation Plans</title>
            <author/>
            <date month="May" year="2019"/>
          </front>
          <refcontent>From ITU-T-SG-12</refcontent>
        </reference>
        <reference anchor="RFC2544" target="https://www.rfc-editor.org/info/rfc2544" quoteTitle="true" derivedAnchor="RFC2544">
          <front>
            <title>Benchmarking Methodology for Network Interconnect Devices</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="McQuaid" fullname="J. McQuaid">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1999" month="March"/>
            <abstract>
              <t indent="0">This document is a republication of RFC 1944 correcting the values for the IP addresses which were assigned to be used as the default addresses for networking test equipment. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2544"/>
          <seriesInfo name="DOI" value="10.17487/RFC2544"/>
        </reference>
        <reference anchor="RFC3148" target="https://www.rfc-editor.org/info/rfc3148" quoteTitle="true" derivedAnchor="RFC3148">
          <front>
            <title>A Framework for Defining Empirical Bulk Transfer Capacity Metrics</title>
            <author initials="M." surname="Mathis" fullname="M. Mathis">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Allman" fullname="M. Allman">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2001" month="July"/>
            <abstract>
              <t indent="0">This document defines a framework for standardizing multiple BTC (Bulk Transport Capacity) metrics that parallel the permitted transport diversity.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3148"/>
          <seriesInfo name="DOI" value="10.17487/RFC3148"/>
        </reference>
        <reference anchor="RFC5136" target="https://www.rfc-editor.org/info/rfc5136" quoteTitle="true" derivedAnchor="RFC5136">
          <front>
            <title>Defining Network Capacity</title>
            <author initials="P." surname="Chimento" fullname="P. Chimento">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Ishac" fullname="J. Ishac">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="February"/>
            <abstract>
              <t indent="0">Measuring capacity is a task that sounds simple, but in reality can be quite complex.  In addition, the lack of a unified nomenclature on this subject makes it increasingly difficult to properly build, test, and use techniques and tools built around these constructs.  This document provides definitions for the terms 'Capacity' and 'Available Capacity' related to IP traffic traveling between a source and destination in an IP network.  By doing so, we hope to provide a common framework for the discussion and analysis of a diverse set of current and future estimation techniques.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5136"/>
          <seriesInfo name="DOI" value="10.17487/RFC5136"/>
        </reference>
        <reference anchor="RFC6815" target="https://www.rfc-editor.org/info/rfc6815" quoteTitle="true" derivedAnchor="RFC6815">
          <front>
            <title>Applicability Statement for RFC 2544: Use on Production Networks Considered Harmful</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Dubray" fullname="K. Dubray">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="McQuaid" fullname="J. McQuaid">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="November"/>
            <abstract>
              <t indent="0">The Benchmarking Methodology Working Group (BMWG) has been developing key performance metrics and laboratory test methods since 1990, and continues this work at present.  The methods described in RFC 2544 are intended to generate traffic that overloads network device resources in order to assess their capacity.  Overload of shared resources would likely be harmful to user traffic performance on a production network, and there are further negative consequences identified with production application of the methods.  This memo clarifies the scope of RFC 2544 and other IETF BMWG benchmarking work for isolated test environments only, and it encourages new standards activity for measurement methods applicable outside that scope. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6815"/>
          <seriesInfo name="DOI" value="10.17487/RFC6815"/>
        </reference>
        <reference anchor="RFC7312" target="https://www.rfc-editor.org/info/rfc7312" quoteTitle="true" derivedAnchor="RFC7312">
          <front>
            <title>Advanced Stream and Sampling Framework for IP Performance Metrics (IPPM)</title>
            <author initials="J." surname="Fabini" fullname="J. Fabini">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="August"/>
            <abstract>
              <t indent="0">To obtain repeatable results in modern networks, test descriptions need an expanded stream parameter framework that also augments aspects specified as Type-P for test packets.  This memo updates the IP Performance Metrics (IPPM) Framework, RFC 2330, with advanced considerations for measurement methodology and testing.  The existing framework mostly assumes deterministic connectivity, and that a single test stream will represent the characteristics of the path when it is aggregated with other flows.  Networks have evolved and test stream descriptions must evolve with them; otherwise, unexpected network features may dominate the measured performance.  This memo describes new stream parameters for both network characterization and support of application design using IPPM metrics.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7312"/>
          <seriesInfo name="DOI" value="10.17487/RFC7312"/>
        </reference>
        <reference anchor="RFC7594" target="https://www.rfc-editor.org/info/rfc7594" quoteTitle="true" derivedAnchor="RFC7594">
          <front>
            <title>A Framework for Large-Scale Measurement of Broadband Performance (LMAP)</title>
            <author initials="P." surname="Eardley" fullname="P. Eardley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Bagnulo" fullname="M. Bagnulo">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Burbridge" fullname="T. Burbridge">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Aitken" fullname="P. Aitken">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Akhter" fullname="A. Akhter">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="September"/>
            <abstract>
              <t indent="0">Measuring broadband service on a large scale requires a description of the logical architecture and standardisation of the key protocols that coordinate interactions between the components.  This document presents an overall framework for large-scale measurements.  It also defines terminology for LMAP (Large-Scale Measurement of Broadband Performance).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7594"/>
          <seriesInfo name="DOI" value="10.17487/RFC7594"/>
        </reference>
        <reference anchor="RFC7799" target="https://www.rfc-editor.org/info/rfc7799" quoteTitle="true" derivedAnchor="RFC7799">
          <front>
            <title>Active and Passive Metrics and Methods (with Hybrid Types In-Between)</title>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="May"/>
            <abstract>
              <t indent="0">This memo provides clear definitions for Active and Passive performance assessment.  The construction of Metrics and Methods can be described as either "Active" or "Passive".  Some methods may use a subset of both Active and Passive attributes, and we refer to these as "Hybrid Methods".  This memo also describes multiple dimensions to help evaluate new methods as they emerge.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7799"/>
          <seriesInfo name="DOI" value="10.17487/RFC7799"/>
        </reference>
        <reference anchor="RFC8085" target="https://www.rfc-editor.org/info/rfc8085" quoteTitle="true" derivedAnchor="RFC8085">
          <front>
            <title>UDP Usage Guidelines</title>
            <author initials="L." surname="Eggert" fullname="L. Eggert">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Fairhurst" fullname="G. Fairhurst">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Shepherd" fullname="G. Shepherd">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="March"/>
            <abstract>
              <t indent="0">The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms.  This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP.  Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t indent="0">Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic.  They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t indent="0">Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t indent="0">This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="145"/>
          <seriesInfo name="RFC" value="8085"/>
          <seriesInfo name="DOI" value="10.17487/RFC8085"/>
        </reference>
        <reference anchor="RFC8337" target="https://www.rfc-editor.org/info/rfc8337" quoteTitle="true" derivedAnchor="RFC8337">
          <front>
            <title>Model-Based Metrics for Bulk Transport Capacity</title>
            <author initials="M." surname="Mathis" fullname="M. Mathis">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Morton" fullname="A. Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="March"/>
            <abstract>
              <t indent="0">This document introduces a new class of Model-Based Metrics designed to assess if a complete Internet path can be expected to meet a predefined Target Transport Performance by applying a suite of IP diagnostic tests to successive subpaths.  The subpath-at-a-time tests can be robustly applied to critical infrastructure, such as network interconnections or even individual devices, to accurately detect if any part of the infrastructure will prevent paths traversing it from meeting the Target Transport Performance.</t>
              <t indent="0">Model-Based Metrics rely on mathematical models to specify a Targeted IP Diagnostic Suite, a set of IP diagnostic tests designed to assess whether common transport protocols can be expected to meet a predetermined Target Transport Performance over an Internet path.</t>
              <t indent="0">For Bulk Transport Capacity, the IP diagnostics are built using test streams and statistical criteria for evaluating the packet transfer that mimic TCP over the complete path.  The temporal structure of the test stream (e.g., bursts) mimics TCP or other transport protocols carrying bulk data over a long path.  However, they are constructed to be independent of the details of the subpath under test, end systems, or applications.  Likewise, the success criteria evaluates the packet transfer statistics of the subpath against criteria determined by protocol performance models applied to the Target Transport Performance of the complete path.  The success criteria also does not depend on the details of the subpath, end systems, or applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8337"/>
          <seriesInfo name="DOI" value="10.17487/RFC8337"/>
        </reference>
        <reference anchor="TR-471" target="https://www.broadband-forum.org/technical/download/TR-471.pdf" quoteTitle="true" derivedAnchor="TR-471">
          <front>
            <title>Maximum IP-Layer Capacity Metric, Related Metrics, and Measurements</title>
            <author fullname="Al Morton" initials="A." surname="Morton">
              <organization showOnFrontPage="true">AT&amp;T Labs</organization>
            </author>
            <date month="July" year="2020"/>
          </front>
          <refcontent>Broadband Forum TR-471</refcontent>
        </reference>
        <reference anchor="Y.1540" target="https://www.itu.int/rec/T-REC-Y.1540-201912-I/en" quoteTitle="true" derivedAnchor="Y.1540">
          <front>
            <title>Internet protocol data communication service - IP packet transfer and availability performance parameters</title>
            <author>
              <organization showOnFrontPage="true">ITU-T</organization>
            </author>
            <date month="December" year="2019"/>
          </front>
          <refcontent>ITU-T Recommendation Y.1540</refcontent>
        </reference>
        <reference anchor="Y.Sup60" target="https://www.itu.int/rec/T-REC-Y.Sup60/en" quoteTitle="true" derivedAnchor="Y.Sup60">
          <front>
            <title>Interpreting ITU-T Y.1540 maximum IP-layer capacity measurements</title>
            <author>
              <organization showOnFrontPage="true">ITU-T</organization>
            </author>
            <date month="October" year="2021"/>
          </front>
          <refcontent>ITU-T Recommendation Y.Sup60</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="app-a-load-rate-adj-pseudocode" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-load-rate-adjustment-pseudo">Load Rate Adjustment Pseudocode</name>
      <t indent="0" pn="section-appendix.a-1">This appendix provides a pseudocode implementation of the algorithm
      described in <xref target="load-rate-adj" format="default" sectionFormat="of" derivedContent="Section 8.1"/>.</t>
      <sourcecode name="pseudocode-for-algorithm" type="pseudocode" markers="false" pn="section-appendix.a-2">
Rx = 0              # The current sending rate (equivalent to a row
                    # of the table)

seqErr = 0          # Measured count that includes Loss or Reordering
                    # or Duplication impairments (all appear
                    # initially as errors in the packet sequence
                    # numbering)

seqErrThresh = 10   # Threshold on seqErr count that includes Loss or
                    # Reordering or Duplication impairments (all
                    # appear initially as errors in the packet
                    # sequence numbering)

delay = 0           # Measured Range of Round Trip Delay (RTD), msec

lowThresh = 30      # Low threshold on the Range of RTD, msec

upperThresh = 90    # Upper threshold on the Range of RTD, msec

hSpeedThresh = 1    # Threshold for transition between sending rate
                    # step sizes (such as 1 Mbps and 100 Mbps), Gbps

slowAdjCount = 0    # Measured Number of consecutive status reports
                    # indicating loss and/or delay variation above
                    # upperThresh

slowAdjThresh = 3   # Threshold on slowAdjCount used to infer
                    # congestion. Use values &gt; 1 to avoid
                    # misinterpreting transient loss.

highSpeedDelta = 10 # The number of rows to move in a single
                    # adjustment when initially increasing offered
                    # load (to ramp up quickly)

maxLoadRates = 2000 # Maximum table index (rows)

if ( seqErr &lt;= seqErrThresh &amp;&amp; delay &lt; lowThresh ) {
        if ( Rx &lt; hSpeedThresh &amp;&amp; slowAdjCount &lt; slowAdjThresh ) {
                        Rx += highSpeedDelta;
                        slowAdjCount = 0;
        } else {
                        if ( Rx &lt; maxLoadRates - 1 )
                                        Rx++;
        }
} else if ( seqErr &gt; seqErrThresh || delay &gt; upperThresh ) {
        slowAdjCount++;
        if ( Rx &lt; hSpeedThresh &amp;&amp; slowAdjCount == slowAdjThresh ) {
                        if ( Rx &gt; highSpeedDelta * 3 )
                                        Rx -= highSpeedDelta * 3;
                        else
                                        Rx = 0;
        } else {
                        if ( Rx &gt; 0 )
                                        Rx--;
        }
}
</sourcecode>
    </section>
    <section anchor="app-b-rfc8085-udp" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-rfc-8085-udp-guidelines-che">RFC 8085 UDP Guidelines Check</name>
      <t indent="0" pn="section-appendix.b-1"><xref target="RFC8085" sectionFormat="of" section="3.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1" derivedContent="RFC8085"/>
(BCP 145), which provides UDP usage guidelines, focuses
      primarily on congestion control. The guidelines appear in
      mandatory (<bcp14>MUST</bcp14>) and recommendation (<bcp14>SHOULD</bcp14>) categories.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-appendix.b.1">
        <name slugifiedName="name-assessment-of-mandatory-req">Assessment of Mandatory Requirements</name>
        <t indent="0" pn="section-appendix.b.1-1">The mandatory requirements in <xref target="RFC8085" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3" derivedContent="RFC8085"/>
        include the following:</t>
        <blockquote pn="section-appendix.b.1-2">Internet paths can have widely varying characteristics, ...
            Consequently, applications that may be used on the Internet <bcp14>MUST NOT</bcp14> make assumptions about specific path characteristics. They
            <bcp14>MUST</bcp14> instead use mechanisms that let them operate safely under
            very different path conditions. Typically, this requires
            conservatively probing the current conditions of the Internet path
            they communicate over to establish a transmission behavior that it
            can sustain and that is reasonably fair to other traffic sharing
            the path.</blockquote>
        <t indent="0" pn="section-appendix.b.1-3">The purpose of the load rate adjustment algorithm described in <xref target="load-rate-adj" format="default" sectionFormat="of" derivedContent="Section 8.1"/> is
        to probe the network and enable Maximum IP-Layer Capacity measurements
        with as few assumptions about the measured path as possible and
        within the range of applications described in <xref target="sec-2-scope" format="default" sectionFormat="of" derivedContent="Section 2"/>.
        There is tension between the goals of probing conservatism and
        minimization of both the traffic dedicated to testing (especially with
        Gigabit rate measurements) and the duration of the test (which is one contributing
        factor to the overall algorithm fairness).</t>
        <t indent="0" pn="section-appendix.b.1-4">The text of <xref target="RFC8085" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3" derivedContent="RFC8085"/>
 goes on to
        recommend alternatives to UDP to meet the mandatory requirements, but
        none are suitable for the scope and purpose of the Metrics and Methods
        in this memo.  In fact, ad hoc TCP-based methods fail to achieve the
        measurement accuracy repeatedly proven in comparison measurements with
        the running code <xref target="LS-SG12-A" format="default" sectionFormat="of" derivedContent="LS-SG12-A"/> <xref target="LS-SG12-B" format="default" sectionFormat="of" derivedContent="LS-SG12-B"/>
          <xref target="Y.Sup60" format="default" sectionFormat="of" derivedContent="Y.Sup60"/>. Also, the UDP aspect of these methods is
        present primarily to support modern Internet transmission where a
        transport protocol is required <xref target="copycat" format="default" sectionFormat="of" derivedContent="copycat"/>; the metric is
        based on the IP Layer, and UDP allows simple correlation to the
        IP Layer.</t>
        <t indent="0" pn="section-appendix.b.1-5"><xref target="RFC8085" sectionFormat="of" section="3.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.1" derivedContent="RFC8085"/> discusses protocol timer
        guidelines:</t>
        <blockquote pn="section-appendix.b.1-6">Latency samples <bcp14>MUST NOT</bcp14> be derived from ambiguous
            transactions. The canonical example is in a protocol that
            retransmits data, but subsequently cannot determine which copy is
            being acknowledged.</blockquote>
        <t indent="0" pn="section-appendix.b.1-7">Both load packets and status feedback messages <bcp14>MUST</bcp14> contain
        sequence numbers; this helps with measurements based on those
        packets, and there are no retransmissions needed.</t>
        <blockquote pn="section-appendix.b.1-8">When a latency estimate is used to arm a timer that provides
            loss detection -- with or without retransmission -- expiry of the
            timer <bcp14>MUST</bcp14> be interpreted as an indication of congestion in the
            network, causing the sending rate to be adapted to a safe
            conservative rate ...</blockquote>
        <t indent="0" pn="section-appendix.b.1-9">The methods described in this memo use timers for sending rate
        backoff when status feedback messages are lost (Lost Status Backoff
        timeout) and for stopping a test when connectivity is lost for a
        longer interval (feedback message or load packet timeouts).</t>
        <t indent="0" pn="section-appendix.b.1-10">This memo does not foresee any specific benefit of using Explicit Congestion
        Notification (ECN).</t>
        <t indent="0" pn="section-appendix.b.1-11"><xref target="RFC8085" sectionFormat="of" section="3.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.2" derivedContent="RFC8085"/> discusses message size
        guidelines:</t>
        <blockquote pn="section-appendix.b.1-12">To determine an appropriate UDP payload size, applications <bcp14>MUST</bcp14>
            subtract the size of the IP header (which includes any IPv4
            optional headers or IPv6 extension headers) as well as the length
            of the UDP header (8 bytes) from the PMTU size.</blockquote>
        <t indent="0" pn="section-appendix.b.1-13">The method uses a sending rate table with a maximum UDP payload
        size that anticipates significant header overhead and avoids
        fragmentation.</t>
        <t indent="0" pn="section-appendix.b.1-14"><xref target="RFC8085" sectionFormat="of" section="3.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.3" derivedContent="RFC8085"/> provides reliability
        guidelines:</t>
        <blockquote pn="section-appendix.b.1-15">Applications that do require reliable message delivery <bcp14>MUST</bcp14>
            implement an appropriate mechanism themselves.</blockquote>
        <t indent="0" pn="section-appendix.b.1-16">The IP-Layer Capacity Metrics and Methods do not require reliable
        delivery.</t>
        <blockquote pn="section-appendix.b.1-17">Applications that require ordered delivery <bcp14>MUST</bcp14> reestablish
            datagram ordering themselves.</blockquote>
        <t indent="0" pn="section-appendix.b.1-18">The IP-Layer Capacity Metrics and Methods do not need to
        reestablish packet order; it is preferable to measure packet reordering
        if it occurs <xref target="RFC4737" format="default" sectionFormat="of" derivedContent="RFC4737"/>.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-appendix.b.2">
        <name slugifiedName="name-assessment-of-recommendatio">Assessment of Recommendations</name>
        <t indent="0" pn="section-appendix.b.2-1">The load rate adjustment algorithm's goal is to determine the
        Maximum IP-Layer Capacity in the context of an infrequent, diagnostic,
        short-term measurement. This goal is a global exception to many <bcp14>SHOULD</bcp14>-level requirements as listed in <xref target="RFC8085" format="default" sectionFormat="of" derivedContent="RFC8085"/>, of which many are
        intended for long-lived flows that must coexist with other traffic in a
        more or less fair way. However, the algorithm (as specified in
        <xref target="load-rate-adj" format="default" sectionFormat="of" derivedContent="Section 8.1"/> and <xref target="app-a-load-rate-adj-pseudocode" format="default" sectionFormat="of" derivedContent="Appendix A"/> above) reacts to indications of congestion in
        clearly defined ways.</t>
        <t indent="0" pn="section-appendix.b.2-2">A specific recommendation is provided as an example. <xref target="RFC8085" sectionFormat="of" section="3.1.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.5" derivedContent="RFC8085"/> (regarding the implications of RTT and loss measurements on congestion control) says:</t>
        <blockquote pn="section-appendix.b.2-3">A congestion control [algorithm] designed for UDP <bcp14>SHOULD</bcp14> respond as quickly
            as possible when it experiences congestion, and it <bcp14>SHOULD</bcp14> take
            into account both the loss rate and the response time when
            choosing a new rate.</blockquote>
        <t indent="0" pn="section-appendix.b.2-4">The load rate adjustment algorithm responds to loss and RTT
        measurements with a clear and concise rate reduction when warranted,
        and the response makes use of direct measurements (more exact than can
        be inferred from TCP ACKs).</t>
        <t indent="0" pn="section-appendix.b.2-5"><xref target="RFC8085" sectionFormat="of" section="3.1.5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.5" derivedContent="RFC8085"/> goes on to specify the following:</t>
        <blockquote pn="section-appendix.b.2-6">The implemented congestion control scheme <bcp14>SHOULD</bcp14> result in
            bandwidth (capacity) use that is comparable to that of TCP within
            an order of magnitude, so that it does not starve other flows
            sharing a common bottleneck.</blockquote>
        <t indent="0" pn="section-appendix.b.2-7">This is a requirement for coexistent streams, and not for
        diagnostic and infrequent measurements using short durations. The rate
        oscillations during short tests allow other packets to pass and
        don't starve other flows.</t>
        <t indent="0" pn="section-appendix.b.2-8">Ironically, ad hoc TCP-based measurements of "Internet Speed" are
        also designed to work around this <bcp14>SHOULD</bcp14>-level requirement, by
        launching many flows (9, for example) to increase the outstanding data
        dedicated to testing.</t>
        <t indent="0" pn="section-appendix.b.2-9">The load rate adjustment algorithm cannot become a TCP-like
        congestion control, or it will have the same weaknesses of TCP when
        trying to make a Maximum IP-Layer Capacity measurement and will not
        achieve the goal. The results of the referenced testing <xref target="LS-SG12-A" format="default" sectionFormat="of" derivedContent="LS-SG12-A"/> <xref target="LS-SG12-B" format="default" sectionFormat="of" derivedContent="LS-SG12-B"/> <xref target="Y.Sup60" format="default" sectionFormat="of" derivedContent="Y.Sup60"/> supported this statement hundreds of times, with
        comparisons to multi-connection TCP-based measurements.</t>
        <t indent="0" pn="section-appendix.b.2-10">A brief review of requirements from <xref target="RFC8085" format="default" sectionFormat="of" derivedContent="RFC8085"/> follows (marked "Yes" when this memo is compliant, or "NA" (Not Applicable)):</t>
        <table anchor="recs-rfc8085" align="center" pn="table-4">
          <name slugifiedName="name-summary-of-key-guidelines-f">Summary of Key Guidelines from RFC 8085</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Yes?</th>
              <th align="left" colspan="1" rowspan="1">Recommendation in RFC 8085</th>
              <th align="left" colspan="1" rowspan="1">Section</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>MUST</bcp14> tolerate a wide range of Internet path conditions</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> use a full-featured transport (e.g., TCP)</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> control rate of transmission</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> perform congestion control over all traffic</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <th align="left" colspan="1" rowspan="1"/>
              <th align="left" colspan="1" rowspan="1">For bulk transfers,</th>
              <th align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.2" derivedContent="RFC8085"/></th>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> consider implementing TFRC</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">else, <bcp14>SHOULD</bcp14> in other ways use bandwidth similar to TCP</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <th align="left" colspan="1" rowspan="1"/>
              <th align="left" colspan="1" rowspan="1">For non-bulk transfers,</th>
              <th align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.3" derivedContent="RFC8085"/></th>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> measure RTT and transmit max. 1 datagram/RTT</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.1" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">else, <bcp14>SHOULD</bcp14> send at most 1 datagram every 3 seconds</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> back-off retransmission timers following loss</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> provide mechanisms to regulate the bursts of transmission</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.6" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.6" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>MAY</bcp14> implement ECN; a specific set of application mechanisms are <bcp14>REQUIRED</bcp14> if ECN is used</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.7" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.7" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">For DiffServ, <bcp14>SHOULD NOT</bcp14> rely on implementation of PHBs</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.8" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.8" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">For QoS-enabled paths, <bcp14>MAY</bcp14> choose not to use CC</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.9" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.9" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD NOT</bcp14> rely solely on QoS for their capacity</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.10" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.10" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">non-CC controlled flows <bcp14>SHOULD</bcp14> implement a transport circuit breaker</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>MAY</bcp14> implement a circuit breaker for other applications</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <th align="left" colspan="1" rowspan="1"/>
              <th align="left" colspan="1" rowspan="1">For tunnels carrying IP traffic,</th>
              <th align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.11" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.11" derivedContent="RFC8085"/></th>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD NOT</bcp14> perform congestion control</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>MUST</bcp14> correctly process the IP ECN field</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <th align="left" colspan="1" rowspan="1"/>
              <th align="left" colspan="1" rowspan="1">For non-IP tunnels or rate not determined by traffic,</th>
              <th align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.1.11" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.1.11" derivedContent="RFC8085"/></th>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> perform CC or use circuit breaker</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> restrict types of traffic transported by the tunnel</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD NOT</bcp14> send datagrams that exceed the PMTU, i.e.,</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.2" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> discover PMTU or send datagrams &lt; minimum PMTU</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">Specific application mechanisms are <bcp14>REQUIRED</bcp14> if PLPMTUD is used</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> handle datagram loss, duplication, reordering</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.3" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.3" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> be robust to delivery delays up to 2 minutes</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> enable IPv4 UDP checksum</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.4" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.4" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> enable IPv6 UDP checksum; specific application mechanisms are <bcp14>REQUIRED</bcp14> if a zero IPv6 UDP checksum is used</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.4.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.4.1" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> provide protection from off-path attacks</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="5.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-5.1" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1"/>
              <td align="left" colspan="1" rowspan="1">else, <bcp14>MAY</bcp14> use UDP-Lite with suitable checksum coverage</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.4.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.4.2" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD NOT</bcp14> always send middlebox keep-alive messages</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.5" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.5" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>MAY</bcp14> use keep-alives when needed (min. interval 15 sec)</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">Applications specified for use in limited use (or controlled environments) <bcp14>SHOULD</bcp14> identify equivalent mechanisms and describe their use case</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="3.6" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.6" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">Bulk-multicast apps <bcp14>SHOULD</bcp14> implement congestion control</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="4.1.1" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-4.1.1" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">Low volume multicast apps <bcp14>SHOULD</bcp14> implement congestion control</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="4.1.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-4.1.2" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">Multicast apps <bcp14>SHOULD</bcp14> use a safe PMTU</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="4.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-4.2" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> avoid using multiple ports</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="5.1.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-5.1.2" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>MUST</bcp14> check received IP source address</td>
              <td align="left" colspan="1" rowspan="1"/>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> validate payload in ICMP messages</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="5.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-5.2" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td colspan="3" align="left" rowspan="1"/>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">Yes</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> use a randomized Source port or equivalent technique, and, for client/server applications, <bcp14>SHOULD</bcp14> send responses from source address matching request</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="6" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-6" derivedContent="RFC8085"/></td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">NA</td>
              <td align="left" colspan="1" rowspan="1">
                <bcp14>SHOULD</bcp14> use standard IETF security protocols when needed</td>
              <td align="left" colspan="1" rowspan="1">
                <xref target="RFC8085" section="6" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-6" derivedContent="RFC8085"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section numbered="false" toc="include" removeInRFC="false" pn="section-appendix.c">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.c-1">Thanks to <contact fullname="Joachim Fabini"/>, <contact fullname="Matt Mathis"/>, <contact fullname="J. Ignacio Alvarez-Hamelin"/>,
      <contact fullname="Wolfgang Balzer"/>, <contact fullname="Frank Brockners"/>, <contact fullname="Greg Mirsky"/>, <contact fullname="Martin Duke"/>, <contact fullname="Murray Kucherawy"/>, and <contact fullname="Benjamin Kaduk"/> for their extensive comments on this memo
      and related topics. In a second round of reviews, we acknowledge <contact fullname="Magnus Westerlund"/>, <contact fullname="Lars Eggert"/>, and <contact fullname="Zaheduzzaman Sarker"/>.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.d">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Al Morton" initials="A." surname="Morton">
        <organization showOnFrontPage="true">AT&amp;T Labs</organization>
        <address>
          <postal>
            <street>200 Laurel Avenue South</street>
            <city>Middletown</city>
            <region>NJ</region>
            <code>07748</code>
            <country>United States of America</country>
          </postal>
          <phone>+1 732 420 1571</phone>
          <email>acm@research.att.com</email>
        </address>
      </author>
      <author fullname="Rüdiger Geib" initials="R." surname="Geib">
        <organization showOnFrontPage="true">Deutsche Telekom</organization>
        <address>
          <postal>
            <street>Heinrich Hertz Str. 3-7</street>
            <city>Darmstadt</city>
            <code>64295</code>
            <country>Germany</country>
          </postal>
          <phone>+49 6151 5812747</phone>
          <email>Ruediger.Geib@telekom.de</email>
        </address>
      </author>
      <author fullname="Len Ciavattone" initials="L." surname="Ciavattone">
        <organization showOnFrontPage="true">AT&amp;T Labs</organization>
        <address>
          <postal>
            <street>200 Laurel Avenue South</street>
            <city>Middletown</city>
            <region>NJ</region>
            <code>07748</code>
            <country>United States of America</country>
          </postal>
          <phone>+1 732 420 1239</phone>
          <email>lencia@att.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
