<?xml version="1.0" encoding="US-ASCII"?>

<!--used xml2rfc v2 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd">

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc number="6985" consensus="yes" submissionType="IETF" category="info"
     ipr="trust200902">

  <front>
    <title abbrev="IMIX Genome">IMIX Genome: Specification of Variable Packet
    Sizes for&nbsp;Additional&nbsp;Testing</title>

    <author fullname="Al Morton" initials="A." surname="Morton">
      <organization>AT&amp;T Labs</organization>

      <address>
        <postal>
          <street>200 Laurel Avenue South</street>

          <city>Middletown</city>

          <region>NJ</region>

          <code>07748</code>

          <country>USA</country>
        </postal>

        <phone>+1 732 420 1571</phone>

        <facsimile>+1 732 368 1192</facsimile>

        <email>acmorton@att.com</email>

        <uri>http://home.comcast.net/~acmacm/</uri>
      </address>
    </author>

    <date month="July" year="2013"/>

<keyword>Traffic, Pattern, Benchmarking</keyword>


<!-- [rfced] FYI, we have used xml2rfc v2 (available from 
http://xml.resource.org) to convert this document to text. -->

    <abstract>
      <t>Benchmarking methodologies have always relied on test conditions with
      constant packet sizes, with the goal of understanding what network
      device capability has been tested. Tests with a constant packet size
      reveal device capabilities but differ significantly from the conditions
      encountered in operational deployment, so additional tests are
      sometimes conducted with a mixture of packet sizes, or "IMIX"
      ("Internet Mix"). The mixture of sizes a networking device will
      encounter is highly variable and depends on many factors. An IMIX
      suited for one networking device and deployment will not be
      appropriate for another. However, the mix of sizes may be known,
      and the tester may be asked to augment the fixed-size tests.
      To address this need and the perpetual goal of specifying
      repeatable test conditions, this document defines a way to specify the
      exact repeating sequence of packet sizes from the usual set of fixed
      sizes and from other forms of mixed-size specification.</t>
    </abstract>


  </front>

  <middle>
 <section title="Introduction">
      <t>This memo defines a method to unambiguously specify the sequence of
      packet sizes used in a load test.</t>

      <t>Benchmarking methodologies <xref target="RFC2544"/> have always
      relied on test conditions with constant packet sizes, with the goal of
      understanding what network device capability has been tested. Tests with
      the smallest size stress the header processing capacity, and tests with
      the largest size stress the overall bit-processing capacity. Tests with
      sizes in between may determine the transition between these two
      capacities.</t>

      <t>Streams of constant packet size differ significantly from the
      conditions encountered in operational deployment, so additional
      tests are sometimes conducted with a mixture of packet sizes. The set of
      sizes used is often called an Internet Mix, or "IMIX" <xref
      target="Spirent"/> <xref target="IXIA"/> <xref target="Agilent"/>.</t>

      <t>The mixture of sizes a networking device will encounter is highly
      variable and depends on many factors. An IMIX suited for one networking
      device and deployment will not be appropriate for another. However, the
      mix of sizes may be known, and the tester may be asked to augment the
      fixed-size tests. The references above cite the original studies and
      their methodologies. Similar methods can be used to determine new size
      mixes present on a link or network. We note that the architecture for IP
      Flow Information Export <xref target="RFC5470"/> provides one method to
      gather packet-size information on private networks.</t>

      <t>To address this need and the perpetual goal of specifying repeatable
      test conditions, this memo proposes a way to specify the exact repeating
      sequence of packet sizes from the usual set of fixed sizes: the IMIX
      Genome. Other, less exact forms of size specification are also
      recommended for extremely complicated or customized size mixes. We apply
      the term "genome" to infer that the entire test packet-size sequence can
      be replicated if this information is known -- a parallel to the
      information needed for biological replication.</t>

      <t>This memo takes the position that it cannot be proven for all
      circumstances that the sequence of packet sizes does not affect the test
      result; thus, a standardized specification of sequence is valuable.</t>
    </section>

 <section title="Requirements Language">
      <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">RFC 2119</xref>.</t>
      <t/>
</section>

    <section title="Scope and Goals">
      <t>This memo defines a method to unambiguously specify the sequence of
      packet sizes that have been used in a load test, assuming that a
      relevant mix of sizes is known to the tester and the length of the
      repeating sequence is not very long (&lt;100 packets).</t>

      <t>The IMIX Genome will allow an exact sequence of packet sizes to be
      communicated as a single-line name, resolving the current ambiguity with
      results that simply refer to "IMIX". This aspect is critical
      because no ability has been demonstrated to extrapolate results from
      one IMIX to another IMIX -- and certainly no ability to extrapolate
      results to other circumstances -- even when the mix varies only
      slightly from another IMIX.</t>

      <t>While documentation of the exact sequence is ideal, the memo also
      covers the case where the sequence of sizes is very long or may be
      generated by a pseudorandom process.</t>

      <t>It is a colossal non-goal to standardize one or more versions of the
      IMIX. This topic has been discussed on many occasions on the
      BMWG mailing list <xref target="IMIXonList"/>. The goal is to enable
      customization with minimal constraints while fostering repeatable
      testing once the fixed-size testing is complete. Thus, the requirements
      presented in this specification, expressed in <xref target="RFC2119"/>
      terms, are intended for those performing/reporting laboratory tests to
      improve clarity and repeatability.</t>
    </section>

    <section title="Specification of the IMIX Genome" anchor="Specification_of_the_IMIX_Genome">
      <t>The IMIX Genome is specified in the following format:</t>

      <t>IMIX - 123456...x</t>

      <t>where each number is replaced by the letter corresponding to the size
      of the packet at that position in the sequence. The following table
      gives the letter encoding for the <xref target="RFC2544"/> standard
      sizes (64, 128, 256, 512, 1024, 1280, and 1518 bytes) and "jumbo" sizes
      (2112, 9000, and 16000 bytes). Note that the 4-octet Ethernet frame
      check sequence may fail to detect bit errors in the larger jumbo
      frames <xref target="Jumbo1"/> <xref target="Jumbo2"/>.</t>

      <texttable>
        <ttcol>Size (Bytes)</ttcol>

        <ttcol>Genome Code Letter</ttcol>

        <c>64</c>

        <c>a</c>

        <c>128</c>

        <c>b</c>

        <c>256</c>

        <c>c</c>

        <c>512</c>

        <c>d</c>

        <c>1024</c>

        <c>e</c>

        <c>1280</c>

        <c>f</c>

        <c>1518</c>

        <c>g</c>

        <c>2112</c>

        <c>h</c>

        <c>9000</c>

        <c>i</c>

        <c>16000</c>

        <c>j</c>

        <c>MTU</c>

        <c>z</c>
      </texttable>

      <t>For example, a five-packet sequence with sizes 64,64,64,1280,1518
      would be designated:</t>

      <t>IMIX - aaafg</t>

      <t>If z (MTU) is used, the tester MUST specify the length of the MTU in
      the report.</t>

      <t>While this approach allows some flexibility, there are also
      constraints.</t>

      <t><list style="symbols">
          <t>Packet sizes not defined by RFC 2544 would need to be approximated by those
          available in the table.</t>

          <t>The genome for very long sequences can become undecipherable by
          humans.</t>
        </list>Some questions testers must ask and answer when using the IMIX
      Genome are:</t>

      <t><list style="numbers">
          <t>Multiple source-destination address pairs: Is the IMIX sequence
          applicable to each pair, across multiple pairs in sets, or across
          all pairs?</t>

          <t>Multiple tester ports: Is the IMIX sequence applicable to each
          port, across multiple ports in sets, or across all ports?</t>
        </list>The chosen configuration would be expressed in the following
      general form:</t>

      <texttable>
        <ttcol>Source Address + Port AND/OR Blade</ttcol>

        <ttcol>Destination Address + Port AND/OR Blade</ttcol>

        <ttcol>Corresponding IMIX</ttcol>

        <c>x.x.x.x Blade2</c>

        <c>y.y.y.y Blade3</c>

        <c>IMIX - aaafg</c>
      </texttable>

      <t>where testers can specify the IMIX used between any two entities in
      the test architecture (and "Blade" is a component in a multi-component
      device chassis).</t>
    </section>

    <section title="Specification of a Custom IMIX" anchor="Specification_of_a_Custom_IMIX">
      <t>This section describes how to specify an IMIX with locally selected
      packet sizes.</t>

      <t/>

      <t>The custom IMIX is specified in the following format:</t>

      <t>CUSTOM IMIX - 123456...x</t>

      <t>where each number is replaced by the letter corresponding to the size
      of the packet at that position in the sequence. The tester MUST complete
      the following table, giving the letter encoding for each size used,
      where each set of three lower-case letters would be replaced by the
      integer size in octets.</t>

      <texttable>
        <ttcol>Size (Bytes)</ttcol>

        <ttcol>Custom Code Letter</ttcol>

        <c>aaa</c>

        <c>A</c>

        <c>bbb</c>

        <c>B</c>

        <c>ccc</c>

        <c>C</c>

        <c>ddd</c>

        <c>D</c>

        <c>eee</c>

        <c>E</c>

        <c>fff</c>

        <c>F</c>

        <c>ggg</c>

        <c>G</c>

        <c>etc.</c>

        <c>up to Z</c>
      </texttable>

      <t>For example, a five-packet sequence with sizes
      aaa=64,aaa=64,aaa=64,ggg=1020,ggg=1020 would be designated:</t>

      <t>CUSTOM IMIX - AAAGG</t>
    </section>

    <section title="Reporting Long or Pseudorandom Packet Sequences" anchor="Reporting_Packet_Sequences">
      <t>When the IMIX Genome cannot be used (when the sheer length of the
      sequence would make the genome unmanageable), five options are possible,
      as noted in the following subsections.</t>

    <section title="Run-Length Encoding" anchor="Run_Len">
      <t>When a sequence can be decomposed into a series of short repeating
      sequences, then a run-length encoding approach MAY be specified as shown
      in the table below (using the single lower-case letter Genome Codes from
    <xref target="Specification_of_the_IMIX_Genome"/>):</t>

      <texttable>
        <ttcol>Count of Repeating Sequences</ttcol>

        <ttcol>Packet-Size Sequence</ttcol>

        <c>20</c>

        <c>abcd</c>

        <c>5</c>

        <c>ggga</c>

        <c>10</c>

        <c>dcba</c>
      </texttable>

      <t>The run-length encoding approach is also applicable to the custom IMIX
      as described in <xref target="Specification_of_a_Custom_IMIX"/> (where
      the single upper-case letter Genome Codes would be used instead).</t>
    </section>

    <section title="Table of Proportions" anchor="Proportions">
      <t>When the sequence is designed to vary within some proportional
      constraints, a table simply giving the proportions of each size MAY be
      used instead.</t>

      <texttable>
        <ttcol>IP Length</ttcol>

        <ttcol>Percentage of Total</ttcol>

        <ttcol>Length(s) at Other Layers</ttcol>

        <c>64</c>

        <c>23</c>

        <c>82</c>

        <c>128</c>

        <c>67</c>

        <c>146</c>

        <c>1000</c>

        <c>10</c>

        <c>1018</c>
      </texttable>

      <t>Note that the table of proportions also allows non-standard packet
      sizes but trades the short genome specification and ability to specify
      the exact sequence for other flexibilities.</t>

      </section>

      <section title="Deterministic Algorithm" anchor="Deterministic_Algo">

      <t>If a deterministic packet-size generation method is used (such as
      a monotonic increase by 1 octet from start value to MTU), then the
      generation algorithm SHOULD be reported.</t>

      </section>

      <section title="Pseudorandom Length Algorithm" anchor="Pseudorandom_Len_Algo">

      <t>If a pseudorandom length generation capability is used, then the
      generation algorithm SHOULD be reported with the results along with the
      seed value used. We also recognize the opportunity to randomize
      inter-packet spacing from a test sender as well as the size, and both
      spacing and length pseudorandom generation algorithms and seeds SHOULD
      be reported when used.</t>

      </section>

      <section title="Pseudorandom Sequence Algorithm" anchor="Pseudorandom_Seq_Algo">

      <t>Finally, we note another possibility: a pseudorandom sequence
      generates an index to the table of packet lengths, and the generation
      algorithm SHOULD be reported with the results, along with the seed value
      if used.</t>

      </section>

    </section>

    <section title="Security Considerations">
      <t>Benchmarking activities as described in this memo are limited to
      technology characterization using controlled stimuli in a laboratory
      environment, with dedicated address space and other constraints
      <xref target="RFC2544"/>.</t>

      <t>The benchmarking network topology will be an independent test setup
      and MUST NOT be connected to devices that may forward the test traffic
      into a production network or misroute traffic to the test management
      network.</t>

      <t>Further, benchmarking is performed on a "black-box" basis, relying
      solely on measurements observable external to the Device Under Test (DUT)
      or System Under Test (SUT).</t>

      <t>Special capabilities SHOULD NOT exist in the DUT/SUT specifically for
      benchmarking purposes. Any implications for network security arising
      from the DUT/SUT SHOULD be identical in the lab and in production
      networks.</t>
    </section>

    <section title="Acknowledgements">
      <t>Thanks to Sarah Banks, Aamer Akhter, Steve Maxwell, and Scott Bradner
      for their reviews and comments. Ilya Varlashkin suggested the
      run&nbhy;length encoding approach
      in <xref target="Run_Len"/>.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2544'?>

      <?rfc include="reference.RFC.2119"?>

  
    </references>

    <references title="Informative References">
      <reference anchor="Spirent" target="http://gospirent.com/whitepaper/IMIX%20Test%20Methodolgy%20Journal.pdf">
        <front>
          <title>Test Methodology Journal: IMIX (Internet Mix) Journal</title>

          <author>
            <organization>Spirent</organization>
          </author>

          <date month="January" year="2006"/>
        </front>
      </reference>

      <?rfc include='reference.RFC.5470'?>

      <reference anchor="IXIA" target="http://www.ixiacom.com/library/test_plans/display?skey=testing_pppox">
        <front>
          <title>Testing PPPoX and L2TP Broadband Access Devices</title>
          <author>
            <organization>IXIA</organization>
          </author>
          <date year="2004"/>
        </front>
      </reference>

      <reference anchor="Agilent" target="http://www.ixiacom.com/pdfs/test_plans/agilent_journal_of_internet_test_methodologies.pdf">
        <front>
          <title>The Journal of Internet Test Methodologies</title>

          <author>
            <organization>Agilent</organization>
          </author>

          <date month="September" year="2007"/>
        </front>
      </reference>

      <reference anchor="IMIXonList" target="http://www.ietf.org/mail-archive/web/bmwg/current/msg00691.html">
        <front>
          <title>Discussion on IMIX</title>

          <author fullname="Several">
            <organization>IETF Benchmarking Methodology Working Group</organization>
          </author>

          <date month="October" year="2003"/>
        </front>
      </reference>

      <reference anchor="Jumbo1" target="http://sd.wareonearth.com/~phil/jumbo.html">
        <front>
          <title>Gigabit Ethernet Jumbo Frames, and why you should care</title>
          <author initials='P' surname='Dykstra' fullname='Phil Dykstra'>
            <organization></organization>
          </author>
          <date month="December" year="1999"/>
        </front>
<seriesInfo name="WareOnEarth" value="Communications, Inc."/>
      </reference>

      <reference anchor="Jumbo2" target="http://staff.psc.edu/mathis/MTU/arguments.html#crc">
        <front>
          <title>The Ethernet CRC limits packets to about 12 kBytes. (NOT)</title>
          <author initials='M' surname='Mathis' fullname='Matt Mathis'>
            <organization></organization>
          </author>
          <date month="April" year="2003"/>
        </front>
<seriesInfo name="Pittsburgh" value="Supercomputing Center"/>
      </reference>

    </references>
  </back>
</rfc>
