<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[

<!ENTITY rfc1242 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1242.xml'>
<!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
<!ENTITY rfc2285 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2285.xml'>
<!ENTITY rfc2544 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2544.xml'>
<!ENTITY rfc2889 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2889.xml'>
<!ENTITY rfc3643 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3643.xml'>
<!ENTITY rfc3918 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3918.xml'>
<!ENTITY rfc4689 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4689.xml'>
<!ENTITY rfc5180 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5180.xml'>

]>
<rfc ipr="trust200902" category="info" docName="draft-player-dcb-benchmarking-00.txt" >
  <?rfc symrefs="yes" ?>
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
  <?rfc toc="yes" ?>
  <?rfc symrefs="yes" ?>
  <?rfc sortrefs="yes" ?>
  <?rfc strict="yes" ?>
  <?rfc iprnotified="yes" ?>

  <front>
    <title abbrev="DCB Benchmarking">Benchmarking Methodology for Data Center Bridging Devices</title>
    <author initials="T. C." surname="Player" fullname="Timmons C. Player">
      <organization>Spirent Communications</organization>
      <address>
        <email>timmons.player@spirent.com</email>      
      </address>
    </author>
    <author initials="D." surname="Newman" fullname="David Newman">
      <organization>Network Test</organization>
      <address>
        <email>dnewman@networktest.com</email>
      </address>
    </author>
    <date year="2009" month="August"/>
    <workgroup>Individual Submission</workgroup>
    <keyword>RFC</keyword>
    <keyword>Request for Comments</keyword>
    <keyword>I-D</keyword>
    <keyword>Internet-Draft</keyword>
    <keyword>bmwg</keyword>
    <keyword>benchmarking</keyword>
    <keyword>CEE</keyword>
    <keyword>Converged Enhanced Ethernet</keyword>
    <keyword>DCB</keyword>
    <keyword>Data Cetner Bridging</keyword>
    <keyword>DCE</keyword>
    <keyword>Data Center Ethernet</keyword>
    <keyword>PFC</keyword>
    <keyword>priority flow control</keyword>
    <keyword>priority-based flow control</keyword>
    <abstract>
      <t>Existing benchmarking methodologies are based on the assumption that
      networking devices will drop network traffic at their performance limits.
      Data Center Bridging (DCB) devices, however, will attempt to throttle network
      endpoints before those limits are reached in order to minimize the
      probability of frame loss in the network.  Hence, existing methodologies
      based around frame loss are inappropriate for DCB devices. This document
      takes the basic benchmarking ideas based on loss and extends them to support 
      "lossless" Ethernet devices.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" title="Introduction">
      <t>This document is intended to provide a methodology for benchmarking Data
      Center Ethernet (DCB) switching devices that support Priority-based Flow Control (PFC) as defined in <xref target='802.1Qbb'/>.
      It extends the methodologies already defined in <xref target='RFC2544'/>
      and <xref target='RFC2889'/>.</t>

      <t>This RFC primarily deals with devices that use priority-based flow control (PFC), as
      defined in <xref target='802.1Qbb'/>, to actively manage the transmission rate of
      network endpoints in order to minimize forwarding delay and frame loss.</t>
    </section>
    <section title="Requirements">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD
      NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as
      described in <xref target="RFC2119"/>.</t>
    </section>
    <section title="General Considerations">
      <section title="Test Traffic">
        <t>The lock-step traffic pattern, as described in section 5.1.3 of
        <xref target="RFC2889"/>, is specifically NOT required for DCB testing for two reasons:
        <list style="numbers">
          <t>Such patterns are unrealistic for high speed Ethernet devices due to the transmission 
          clock variance allowed by the IEEE 802.3 Ethernet specification.</t>
          <t>Flow control mechanisms would quickly break such patterns when activated.</t>
        </list>
        </t>
      </section>
    </section>
    <section title="Terminology">
      <t>As the terminology used by <xref target="RFC4689"/> is specific to IP layer
      testing, a number of existing terms require clarification when used in the DCB
      benchmarking context.  Additionally, a number of new terms are also presented to
      clarify concepts not clearly defined within the scope of <xref target="RFC4689"/>.
      <list style='empty'>
        <t>Classification:  As stated in <xref target="RFC4689"/>, the selection of packets according to
        defined rules. In the context of DCB benchmarking, the Classification criterion is
        the value of the 802.1p priority code point field in the 802.1Q VLAN header of an
        Ethernet frame.</t>
        <t>Classification Group:  A collection of traffic streams that belong to a single
        Classification.  A Conformance Vector MAY be associated with a Classification Group.</t>
        <t>Classification Profile:  The set of all Classification Groups involved in
        a benchmarking test.</t>
        <t>Conformance Vector: A set of measurable stream result bounds, 
        e.g. latency, jitter, sequencing, etc.,
        that specify whether a frame is Conformant or Nonconformant.</t>
        <t>Congestion Management:  In the context of DCB benchmarking, Congestion Management
        occurs when the DUT/SUT transmits priority-based flow control (PFC) Pause frames.</t>
        <t>Forwarding Congestion:  In the context of DCB benchmarking, Forwarding Congestion
        is extended to include PFC pause frame transmissions from the DUT.</t>
        <t>Intended Load:  In this document, the Intended Load refers
        to the summation of the Intended Vectors for all Classification Groups.</t>
        <t>Offered Load:  In this document, the Offered Load refers
        to the summation of the Offered Vectors for all Classification Groups.</t>
        <t>Queue Congestion:  Queue congestion occurs when a DUT/SUT uses Congestion Management
        on a discrete set of code points.  The congestion managed code points correspond to
        the congested queue in the DUT/SUT.</t>
        <t>Queueput: The maximum Offered Load than can be transmitted into a DUT/SUT
        such that every transmitted frame matches a specific Classification rule, 
        the DUT/SUT does NOT use priority-based flow control mechanisms to manage the ingress traffic rate,
        and all ingress frames are forwarded to the correct egress port.  A DUT may have
        a different Queueput rate for each configured Classification.</t>
      </list>
      </t>
      
    </section>
    <section title="Test Setup">
      <t>This document extends the general test setup described in section 3 of <xref target="RFC2889"/>
      and section 6 of <xref target="RFC2544"/> to the benchmarking of Data Center Ethernet
      switching devices. <xref target="RFC2889"/> and <xref target="RFC2544"/> describe
      benchmarking methodologies for networking devices that intentionally drop frames at their
      performance limits.  In DCB networks, the DUT will transmit PFC Pause frames as a
      Congestion Management method
      to throttle network endpoints, thus minimizing the probability of
      frame loss in the network.</t>

      <section title="Test Traffic">

        <section title="Traffic Classification">
          <t>Since DCB devices are expected to support multiple traffic Classifications,
          it is RECOMMENDED to benchmark DCB devices with multiple Classification Groups.</t>
        </section>
        
        <section title="Traffic Generation">
          <t>When generating multiple traffic classifications from the same test port, traffic
          from each class MUST be interleaved in a round-robin fashion.</t>
        </section>

        <section title="Trial Duration">
          <t>The recommended trial duration is 300 seconds, however other durations MAY
          be used.  Additionally, a running trial MAY be aborted once the test tool can tell
          that the currently running trial has failed. Two examples would be if a frame does not conform to the Conformance Vector of that frame's Classification Group, or if the test tool detects loss on a lossless queue.</t>
        </section> 

        <section anchor="frame_formats" title="Frame Formats">
          <t>This testing document does not mandate the use of any particular frame format
          for testing.  Any frame that can be legally forwarded by the DUT/SUT MAY be used
          provided that the test instrument can make the following distinctions for each frame:
          <list style="numbers">
            <t>The test tool MUST be able to distinguish test frames from non-test frames.</t>
            <t>The test tool MUST be able to determine whether each test frame is forwarded to the
            correct egress port.</t>
            <t>The test tool MUST be able to determine whether each received frame conforms
            or does not conform to the Conformance Vector of the frame's Classification Group.</t> 
          </list>
          </t>
        </section>

        <section title="Frame Measurements">
          <t>Packet Conformance MUST be determined for each and every test frame. 
          The method specified
          for measuring Latency in <xref target="RFC2544"/>, e.g. measuring the latency of
          a single test frame in a traffic flow, is unsuitable for
          DCB benchmarking.</t>
          <section title="Forwarding Delay and Latency">
            <t>Multiple methods exist for measuring the time it takes a test frame to
            be forwarded by a DUT.  However, both of the methods discussed in 
            <xref target="RFC1242"/> are unsuitable for testing DCB devices, as many DCB
            devices alternate between both "store and forwarding" and "bit forwarding"
            behavior depending upon their queue congestion state.  Hence, the only recommended
            method for measuring the time it takes a DUT to forward a test frame is
            "Forwarding Delay" as described in <xref target="RFC4689"/>.</t>
          </section>
        </section>
        
        <section anchor='frame_sizes' title="Frame Sizes">
          <section title="Ethernet">
            <t>The recommended frame sizes for Ethernet testing are 64, 128,
            256, 512, 1024, 1280, 1518, 4096, 8192, and 9216 as per <xref target="RFC5180"/>.
            Note that this frame size includes the Ethernet CRC.  This frame size MUST
            include a VLAN header, since <xref target='802.1Qbb'/> requires the use of VLAN priority code points to distinguish different Classification Groups.</t>
            <section title="Fibre Channel over Ethernet">
              <t>FCoE test traffic introduces a number of frame size constraints that make the default
              frame sizes specified in <xref target="RFC5180"/> unusable:
              <list style="numbers">
                <t>FCoE frames contain an encapsulated Fibre Channel frame.  Due to the method of
                encapsulation used, all FCoE frames MUST be a multiple of 4 bytes.  See <xref target="RFC3643"/>.</t>
                <t>Test tools may need to include a test payload in addition to the encapsulated 
                Fibre Channel frame in order to meet the requirements
                specified in <xref target="frame_formats"/>.</t>
                <t>The maximum supported frame size for FCoE is 2176 bytes.</t>
              </list></t>
              <t>Due to these constraints, the recommended frame sizes for FCoE testing are
              128, 256, 512, 1024, 1280, 1520, 2176, and the smallest FCoE frame size
              supported by the test tool. This frame size MUST include a VLAN header, since <xref target='802.1Qbb'/> requires the use of VLAN priority code points to distinguish different Classification Groups.</t>
            </section>
          </section>
        </section>  
      </section>

    </section>

    <section title="Benchmarking Tests">
      <section title="Queueput">
        <section title="Objective">
          <t>To determine the Queueput for one or more Traffic Classifications
          for a DUT using priority-based flow control.</t>
        </section>
        <section title="Setup Parameters">
          <t>The following parameters MUST be defined.  Each variable is configured
          with the following considerations.
          <list style='empty'>
            <t>Each Classification Group MUST be listed.  For each classification group,
            the following parameters MUST be specified:
            <list style='empty'>
              <t>Codepoint - For DCB tests, the codepoint is the VLAN priority.</t>
              <t>Frame Size - The frame size includes both the CRC and VLAN header.  See <xref target='frame_sizes'/>x
              for recommended frame sizes.</t>
              <t>Burst Size - The burst size specifies the number of frames transmitted with the minimum
              legal IFG before pausing.  A burst size of 1 specifies a constant load.</t>
              <t>Intended Vector - The intended vector SHOULD specify the intended rate of test
              traffic specified as a percentage of port load.</t>
              <t>Conformance Vector - The conformance vector is optional, but must be defined
              if used.</t>
            </list>
            </t>
            <t>Priority-based flow control - PFC mechanisms MUST be enabled.</t>
            <t>Background Traffic - Background traffic MAY be present.</t>
          </list>
          </t>

        </section>
        <section title="Procedure">
          <t>A search algorithm is used to determine the Queueput for each
          Classification Group.  If Queue Congestion is detected for a Classification Group
          during a trial, then the Intended Vector for the Classification Group MUST be reduced
          for the subsequent trial.  If a
          Conformance Vector is specified for the test and nonconformant frames are received
          during a trial, then the Intended Vector SHOULD be reduced for the subsequent trial. 
          The algorithm MUST adjust the Intended Vector for each Classification Group.  The search
          algorithms for each Classification Group MAY be run in parallel.  The test continues until
          all Classification Groups in the test have converged on a discrete Queueput value.</t>
        </section>
        <section title="Measurements">
          <t>The Queueput for each Classification SHOULD be reported
          in either frames or bits per second.</t>
          <t>If a Conformance Vector is specified for a Classification Group, the percentage
          of conformant frames SHOULD be reported.</t>
          <t>The number of PFC pause frames for each code point in the Codepoint
          Set MUST be reported.</t>
        </section>
        <section title="Reporting Format">
          <t>TBD</t>
        </section>
      </section>
      <section title="Maximum Forwarding Rate">
        <section title="Objective">
          <t>To determine the maximum forwarding rate of one or more PFC queues on a PFC capable DUT.</t>
        </section>
        <section title="Setup Parameters">
          <t>Maximum Forwarding Rate is conceptually similar to the measurement in <xref target="RFC2285"/> but
          works on a per-Classification basis in a DCB context.
          The following parameters MUST be defined.  Each variable is configured
          with the following considerations.
          <list style='empty'>
            <t>Each Classification Group MUST be listed.  For each classification group,
            the following parameters MUST be specified:
            <list style='empty'>
              <t>Codepoint - For DCB tests, the codepoint is the VLAN priority.</t>
              <t>Frame Size - The frame size includes both the CRC and VLAN header.  See <xref target='frame_sizes'/>
              for recommended frame sizes.</t>
              <t>Burst Size - The burst size specifies the number of frames transmitted with the minimum
              legal IFG before pausing.  A burst size of 1 specifies a constant load.</t>
              <t>Intended Vector - The intended vector includes the intended rate of test
              traffic specified as a percentage of port load.</t>
              <t>Conformance Vector - The conformance vector includes all QoS bounds required
              for this traffic group.</t>
            </list>
            </t>
            <t>Priority-based flow control - priority-based flow control mechanisms MAY be enabled or disabled.</t>
            <t>Background Traffic - Background traffic MAY be present.</t>
          </list>
          </t>
        </section>
        <section title="Procedure">
          <t>The tester should iterate across all configured permutations of frame size, burst size, and
          Intended Vector for all Classification Groups.</t>
        </section>
        <section title="Measurements">
          <t>The forwarding rate of each Classification Group SHOULD be reported as the number
          of test frames per second or bits per second the DUT correctly forwards to the proper egress port.</t>
          <t>The maximum forwarding rate for each Classification Group MUST be reported
          as the highest recorded forwarding rate from the set of all iterations.</t>
          <t>Both the Intended and Offered Vector of each Classification Group MUST
          be reported.</t>
          <t>The number of PFC Pause frames received for each Classification MUST be reported.</t>
          <t>If a Conformance Vector is specified for a Classification Group, the percentage
          of conformant frames SHOULD be reported.</t>
        </section>
        <section title="Reporting Format">
          <t>TBD</t>
        </section>
      </section>
      <section title="Back-off">
        <section title="Objective">
          <t>To determine the delta between the maximum forwarding rate of a DUT and the
          point where the DUT ceases to use PFC to manage priority queues.</t>
        </section>
        <section title="Setup Parameters">
          <t>The following parameters MUST be defined.  Each variable is configured
          with the following considerations.
          <list style='empty'>
            <t>Each Classification Group MUST be listed.  For each classification group,
            the following parameters MUST be specified:
            <list style='empty'>
              <t>Codepoint - For DCB tests, the codepoint is the VLAN priority.</t>
              <t>Frame Size - The frame size includes both the CRC and VLAN header.  See <xref target='frame_sizes'/>
              for recommended frame sizes.</t>
              <t>Burst Size - The burst size specifies the number of frames transmitted with the minimum
              legal IFG before pausing.  A burst size of 1 specifies a constant load.</t>
              <t>Intended Vector - The intended vector includes the intended rate of test
              traffic specified as a percentage of port load.</t>
              <t>Conformance Vector - The conformance vector includes all QoS bounds required
              for this traffic group.</t>
            </list>
            </t>
            <t>Priority-based flow control - priority-based flow control mechanisms MUST be enabled.</t>
            <t>Backoff method - The recommended backoff method is to reduce the aggregate
            traffic load by a fixed amount while still maintaining a fixed load ratio between
            all Classification Groups.</t>
          </list>
          </t>
        </section>
        <section title="Procedure">
          <t>The initial trial SHOULD begin with an Intended Load equal or greater than the 
          Maximum Forwarding Rate of the DUT/SUT.  For each subsequent trial, the aggregate
          load is reduced until the DUT is observed to complete a trial without activating
          any Congestion Management methods.</t>
        </section>
        <section title="Measurements">
          <t>The Intended and Offered Vector for each Classification Group MUST be reported.</t>
          <t>The number of PFC Pause frames received for each Classification Group MUST be reported.</t>
          <t>If a Conformance Vector is specified for a Classification Group, the percentage
          of conformant frames SHOULD be reported.</t>          
        </section>
        <section title="Reporting Format">
          <t>TBD</t>
        </section>
      </section>
      <section title="Back-to-Back">
        <section title="Objective">
          <t>To determine the maximum burst size a DUT handle on one or more PFC queues.</t>
        </section>
        <section title="Setup Parameters">
          <t>The following parameters MUST be defined.  Each variable is configured
          with the following considerations
          <list style='empty'>
            <t>Each Classification Group MUST be listed.  For each classification group,
            the following parameters MUST be specified:
            <list style='empty'>
              <t>Codepoint - For DCB tests, the codepoint is the VLAN priority.</t>
              <t>Frame Size - The frame size includes both the CRC and VLAN header.  See <xref target='frame_sizes'/>
              for recommended frame sizes.</t>
              <t>Burst Size - The burst size specifies the number of frames transmitted with the minimum
              legal IFG before pausing.  A burst size of 1 specifies a constant load.</t>
              <t>Intended Vector - The intended vector includes the intended rate of test
              traffic specified as a percentage of port load.</t>
              <t>Conformance Vector - The conformance vector includes all QoS bounds required
              for this traffic group.</t>
            </list>
            </t>
            <t>Priority-based flow control - priority-based flow control mechanisms MAY be enabled or disabled.</t>
            <t>The sum of all Intended Vectors on a transmitting port SHOULD equal the
            Maximum Offered Load (MOL) of that port.</t>
          </list>
          </t>
        </section>
        <section title="Procedure">
          <t>A search algorithm is used to determine the maximum duration in seconds
          for which the configured Classification Profile can be forwarded by the DUT without
          active Congestion Management.  If Congestion Management is detected during
          an iteration, then the duration MUST be reduced for the next iteration.</t>
        </section>
        <section title="Measurements">
          <t>The Intended and Offered Vector for each Classification Group MUST be reported.</t>
          <t>The number of PFC Pause frames received for each Classification Group MUST be reported.</t>
          <t>If a Conformance Vector is specified for a Classification Group, the percentage
          of conformant frames SHOULD be reported.</t>
        </section>
        <section title="Reporting Format">
          <t>TBD</t>
        </section>
      </section>
    </section>
    <section anchor="Security Considerations" title="Security Considerations">
        <t>A broken PFC implementation could lead to hypothetical denial-of-service attacks where 
        a DUT ignores PFC pause frames and incorrectly forwards traffic as a result, or conversely 
        throttles traffic even though no congestion condition exists.   However, the test networks described in Benchmarking Methodology Working Group documents generally
   SHOULD NOT be reachable by anyone other than the tester(s). The security implications of 
        such incorrect PFC handling are beyond the scope of this performance-measurement document, which is intended for testing purposes in controlled lab conditions.</t>
    </section>
    <section title="IANA Considerations">
      <t>Testers SHOULD use network addresses assigned by IANA for the purpose of testing networks.</t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
		<reference anchor='802.1Qbb'> 
			<front> 
				<title>802.1Qbb - Priority-based Flow Control</title> 
				<author fullname='Institute of Electrical and Electronics Engineers, Inc.'>
				<organization abbrev='IEEE'>Institute of Electrical and Electronics Engineers, Inc.</organization>
				</author>
				<date year="2009"/>
			</front> 
		<format type='HTML' target='http://www.ieee802.org/1/pages/802.1bb.html' /> 
		</reference>
      &rfc1242;
      &rfc2119;
      &rfc2544;
      &rfc2285;
      &rfc2889;
      &rfc3643;
      &rfc3918;
      &rfc4689;
      &rfc5180;
</references>
    <section title="Acknowledgements">
    </section>
  </back>
</rfc>
