<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?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 category="info" docName="draft-ietf-bmwg-virtual-net-00"
     ipr="trust200902">
  <front>
    <title abbrev="Benchmarking VNFs and Related Inf.">Considerations for
    Benchmarking Virtual Network Functions and Their Infrastructure</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 day="31" month="May" year="2015"/>

    <abstract>
      <t>Benchmarking Methodology Working Group has traditionally conducted
      laboratory characterization of dedicated physical implementations of
      internetworking functions. This memo investigates additional
      considerations when network functions are virtualized and performed in
      commodity off-the-shelf hardware.</t>

      <t>Version NOTES:</t>

      <t>Addressed Barry Constantine's comments throughout the draft, see:</t>

      <t>http://www.ietf.org/mail-archive/web/bmwg/current/msg03167.html</t>

      <t>AND, comments from the extended discussion during IETF-92 BMWG
      session:</t>

      <t>1 &amp; 2: General Purpose HW and why we care to a greater degree
      about "what's in the black box" in this benchmarking context.</t>

      <t>3: System under Test description = platform and VNFs and...</t>

      <t>4.1 Scale and capacity benchmarks still needed.</t>

      <t>4.4 Compromise on appearance of capacity and the 3x3 Matrix</t>

      <t>new 4.5, Power consumption</t>
    </abstract>

    <note 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/>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>Benchmarking Methodology Working Group (BMWG) has traditionally
      conducted laboratory characterization of dedicated physical
      implementations of internetworking functions (or physical network
      functions, PNFs). The Black-box Benchmarks of Throughput, Latency,
      Forwarding Rates and others have served our industry for many years.
      <xref target="RFC1242"/> and <xref target="RFC2544"/> are the
      cornerstones of the work.</t>

      <t>An emerging set of service provider and vendor development goals is
      to reduce costs while increasing flexibility of network devices, and
      drastically accelerate their deployment. Network Function Virtualization
      (NFV) has the promise to achieve these goals, and therefore has garnered
      much attention. It now seems certain that some network functions will be
      virtualized following the success of cloud computing and virtual
      desktops supported by sufficient network path capacity, performance, and
      widespread deployment; many of the same techniques will help achieve
      NFV.</t>

      <t>In the context of Virtualized Network Functions (VNF), the supporting
      Infrastructure requires general-purpose computing systems, storage
      systems, networking systems, virtualization support systems (such as
      hypervisors), and management systems for the virtual and physical
      resources. There will be many potential suppliers of Infrastructure
      systems and significant flexibility in configuring the systems for best
      performance. There are also many potential suppliers of VNFs, adding to
      the combinations possible in this environment. The separation of
      hardware and software suppliers has a profound implication on
      benchmarking activities: much more of the internal configuration of the
      black-box device under test (DUT) must now be specified and reported
      with the results, to foster both repeatability and comparison testing at
      a later time.</t>

      <t>Consider the following User Story as further background and
      motivation:</t>

      <t>"I'm designing and building my NFV Infrastructure platform. The first
      steps were easy because I had a small number of categories of VNFs to
      support and the VNF vendor gave HW recommendations that I followed. Now
      I need to deploy more VNFs from new vendors, and there are different
      hardware recommendations. How well will the new VNFs perform on my
      existing hardware? Which among several new VNFs in a given category are
      most efficient in terms of capacity they deliver? And, when I operate
      multiple categories of VNFs (and PNFs) *concurrently* on a hardware
      platform such that they share resources, what are the new performance
      limits, and what are the software design choices I can make to optimize
      my chosen hardware platform? Conversely, what hardware platform upgrades
      should I pursue to increase the capacity of these concurrently operating
      VNFs?"</t>

      <t>See http://www.etsi.org/technologies-clusters/technologies/nfv for
      more background, for example, the white papers there may be a useful
      starting place. The Performance and Portability Best Practices <xref
      target="NFV.PER001"/> are particularly relevant to BMWG. There are
      documents available in the Open Area
      http://docbox.etsi.org/ISG/NFV/Open/Latest_Drafts/ including drafts
      describing Infrastructure aspects and service quality.</t>
    </section>

    <section title="Scope">
      <t>BMWG will consider the new topic of Virtual Network Functions and
      related Infrastructure to ensure that common issues are recognized from
      the start, using background materials from industry and SDOs (e.g.,
      IETF, ETSI NFV).</t>

      <t>This memo investigates additional methodological considerations
      necessary when benchmarking VNFs instantiated and hosted in
      general-purpose hardware, using bare-metal hypervisors or other
      isolation environments such as Linux containers. An essential
      consideration is benchmarking physical and virtual network functions in
      the same way when possible, thereby allowing direct comparison. Also,
      benchmarking combinations of physical and virtual devices and functions
      in a System Under Test.</t>

      <t>A clearly related goal: the benchmarks for the capacity of a
      general-purpose platform to host a plurality of VNF instances should be
      investigated. Existing networking technology benchmarks will also be
      considered for adaptation to NFV and closely associated
      technologies.</t>

      <t>A non-goal is any overlap with traditional computer benchmark
      development and their specific metrics (SPECmark suites such as
      SPECCPU).</t>

      <t>A colossal non-goal is any form of architecture development related
      to NFV and associated technologies in BMWG, consistent with all
      chartered work since BMWG began in 1989.</t>
    </section>

    <section title="Considerations for Hardware and Testing">
      <t>This section lists the new considerations which must be addressed to
      benchmark VNF(s) and their supporting infrastructure. The System Under
      Test (SUT) is composed of the hardware platform components, the VNFs
      installed, and many other supporting systems. It is critical to document
      all aspects of the SUT to foster repeatability.</t>

      <section title="Hardware Components">
        <t>New Hardware devices will become part of the test set-up.<list
            style="numbers">
            <t>High volume server platforms (general-purpose, possibly with
            virtual technology enhancements).</t>

            <t>Storage systems with large capacity, high speed, and high
            reliability.</t>

            <t>Network Interface ports specially designed for efficient
            service of many virtual NICs.</t>

            <t>High capacity Ethernet Switches.</t>
          </list>Labs conducting comparisons of different VNFs may be able to
        use the same hardware platform over many studies, until the steady
        march of innovations overtakes their capabilities (as happens with the
        lab's traffic generation and testing devices today).</t>
      </section>

      <section title="Configuration Parameters">
        <t>It will be necessary to configure and document the settings for the
        entire general-purpose platform to ensure repeatability and foster
        future comparisons, including:</t>

        <t><list style="symbols">
            <t>number of server blades (shelf occupation)</t>

            <t>CPUs</t>

            <t>caches</t>

            <t>storage system</t>

            <t>I/O</t>
          </list>as well as configurations that support the devices which host
        the VNF itself: <list style="symbols">
            <t>Hypervisor (or other forms of virtual function hosting)</t>

            <t>Virtual Machine (VM)</t>

            <t>Infrastructure Virtual Network (which interconnects Virtual
            Machines with physical network interfaces, or with each other
            through virtual switches, for example)</t>
          </list>and finally, the VNF itself, with items such as:<list
            style="symbols">
            <t>specific function being implemented in VNF</t>

            <t>reserved resources for each function (e.g., CPU pinning)</t>

            <t>number of VNFs (or sub-VNF components, each with its own VM) in
            the service function chain (see section 1.1 of <xref
            target="RFC7498"/> for a definition of service function chain)</t>

            <t>number of physical interfaces and links transited in the
            service function chain</t>
          </list></t>

        <t>In the physical device benchmarking context, most of the
        corresponding infrastructure configuration choices were determined by
        the vendor. Although the platform itself is now one of the
        configuration variables, it is important to maintain emphasis on the
        networking benchmarks and capture the platform variables as input
        factors.</t>
      </section>

      <section title="Testing Strategies">
        <t>The concept of characterizing performance at capacity limits may
        change. For example:</t>

        <t><list style="numbers">
            <t>It may be more representative of system capacity to
            characterize the case where Virtual Machines (VM, hosting the VNF)
            are operating at 50% Utilization, and therefore sharing the "real"
            processing power across many VMs.</t>

            <t>Another important case stems from the need for partitioning
            functions. A noisy neighbor (VM hosting a VNF in an infinite loop)
            would ideally be isolated and the performance of other VMs would
            continue according to their specifications.</t>

            <t>System errors will likely occur as transients, implying a
            distribution of performance characteristics with a long tail (like
            latency), leading to the need for longer-term tests of each set of
            configuration and test parameters.</t>

            <t>The desire for elasticity and flexibility among network
            functions will include tests where there is constant flux in the
            number of VM instances. Requests for and instantiation of new VMs,
            along with Releases for VMs hosting VNFs that are no longer needed
            would be an normal operational condition. In other words,
            benchmarking should include scenarios with production life cycle
            management of VMs and their VNFs and network connectivity
            in-progress, as well as static configurations.</t>

            <t>All physical things can fail, and benchmarking efforts can also
            examine recovery aided by the virtual architecture with different
            approaches to resiliency.</t>
          </list></t>
      </section>

      <section title="Attention to Shared Resources">
        <t>Since many components of the new NFV Infrastructure are virtual,
        test set-up design must have prior knowledge of
        inter-actions/dependencies within the various resource domains in the
        System Under Test (SUT). For example, a virtual machine performing the
        role of a traditional tester function such as generating and/or
        receiving traffic should avoid sharing any SUT resources with the
        Device Under Test DUT. Otherwise, the results will have unexpected
        dependencies not encountered in physical device benchmarking.</t>

        <t>Note: The term "tester" has traditionally referred to devices
        dedicated to testing in BMWG literature. In this new context, "tester"
        additionally refers to functions dedicated to testing, which may be
        either virtual or physical. "Tester" has never referred to the
        individuals performing the tests.</t>

        <t>The shared-resource aspect of test design remains one of the
        critical challenges to overcome in a reasonable way to produce useful
        results. The physical test device remains a solid foundation to
        compare against results using combinations of physical and virtual
        test functions, or results using only virtual testers when necessary
        to assess virtual interfaces and other virtual functions.</t>
      </section>
    </section>

    <section title="Benchmarking Considerations">
      <t>This section discusses considerations related to Benchmarks
      applicable to VNFs and their associated technologies.</t>

      <section title="Comparison with Physical Network Functions">
        <t>In order to compare the performance of VNFs and system
        implementations with their physical counterparts, identical benchmarks
        must be used. Since BMWG has already developed specifications for many
        network functions, there will be re-use of existing benchmarks through
        references, while allowing for the possibility of benchmark curation
        during development of new methodologies. Consideration should be given
        to quantifying the number of parallel VNFs required to achieve
        comparable scale/capacity with a given physical device, or whether
        some limit of scale was reached before the VNFs could achieve the
        comparable level. Again, implementation based-on different hypervisors
        or other virtual function hosting remain as critical factors in
        performance assessment.</t>
      </section>

      <section title="Continued Emphasis on Black-Box Benchmarks">
        <t>When the network functions under test are based on Open Source
        code, there may be a tendency to rely on internal measurements to some
        extent, especially when the externally-observable phenomena only
        support an inference of internal events (such as routing protocol
        convergence observed in the dataplane). Examples include CPU/Core
        utilization and Memory Comitted/used. However, external observations
        remain essential as the basis for Benchmarks. Internal observations
        with fixed specification and interpretation may be provided in
        parallel, to assist the development of operations procedures when the
        technology is deployed, for example. Internal metrics and measurements
        from Open Source implementations may be the only direct source of
        performance results in a desired dimension, but corroborating external
        observations are still required to assure the integrity of measurement
        discipline was maintained for all reported results.</t>

        <t>A related aspect of benchmark development is where the scope
        includes multiple approaches to a common function under the same
        benchmark. For example, there are many ways to arrange for activation
        of a network path between interface points and the activation times
        can be compared if the start-to-stop activation interval has a generic
        and unambiguous definition. Thus, generic benchmark definitions are
        preferred over technology/protocol specific definitions where
        possible.</t>
      </section>

      <section title="New Benchmarks and Related Metrics">
        <t>There will be new classes of benchmarks needed for network design
        and assistance when developing operational practices (possibly
        automated management and orchestration of deployment scale). Examples
        follow in the paragraphs below, many of which are prompted by the
        goals of increased elasticity and flexibility of the network
        functions, along with accelerated deployment times.</t>

        <t>Time to deploy VNFs: In cases where the general-purpose hardware is
        already deployed and ready for service, it is valuable to know the
        response time when a management system is tasked with "standing-up"
        100's of virtual machines and the VNFs they will host.</t>

        <t>Time to migrate VNFs: In cases where a rack or shelf of hardware
        must be removed from active service, it is valuable to know the
        response time when a management system is tasked with "migrating" some
        number of virtual machines and the VNFs they currently host to
        alternate hardware that will remain in-service.</t>

        <t>Time to create a virtual network in the general-purpose
        infrastructure: This is a somewhat simplified version of existing
        benchmarks for convergence time, in that the process is initiated by a
        request from (centralized or distributed) control, rather than
        inferred from network events (link failure). The successful response
        time would remain dependent on dataplane observations to confirm that
        the network is ready to perform.</t>

        <t>Also, it appears to be valuable to measure traditional packet
        transfer performance metrics during the assessment of traditional and
        new benchmarks, including metrics that may be used to support service
        engineering such as the Spatial Composition metrics found in <xref
        target="RFC6049"/>. Examples include Mean one-way delay in section 4.1
        of <xref target="RFC6049"/>, Packet Delay Variation (PDV) in <xref
        target="RFC5481"/>, and Packet Reordering <xref target="RFC4737"/>
        <xref target="RFC4689"/>.</t>
      </section>

      <section title="Assessment of Benchmark Coverage">
        <t>It can be useful to organize benchmarks according to their
        applicable life cycle stage and the performance criteria they intend
        to assess. The table below provides a way to organize benchmarks such
        that there is a clear indication of coverage for the intersection of
        life cycle stages and performance criteria.</t>

        <t><figure align="center">
            <artwork><![CDATA[|----------------------------------------------------------|
|               |             |            |               |
|               |   SPEED     |  ACCURACY  |  RELIABILITY  |
|               |             |            |               |
|----------------------------------------------------------|
|               |             |            |               |
|  Activation   |             |            |               |
|               |             |            |               |
|----------------------------------------------------------|
|               |             |            |               |
|  Operation    |             |            |               |
|               |             |            |               |
|----------------------------------------------------------|
|               |             |            |               |
| De-activation |             |            |               |
|               |             |            |               |
|----------------------------------------------------------|
]]></artwork>
          </figure></t>

        <t>For example, the "Time to deploy VNFs" benchmark described above
        would be placed in the intersection of Activation and Speed, making it
        clear that there are other potential performance criteria to
        benchmark, such as the "percentage of unsuccessful VM/VNF stand-ups"
        in a set of 100 attempts. This example emphasizes that the Activation
        and De-activation life cycle stages are key areas for NFV and related
        infrastructure, and encourage expansion beyond traditional benchmarks
        for normal operation. Thus, reviewing the benchmark coverage using
        this table (sometimes called the 3x3 matrix) can be a worthwhile
        exercise in BMWG.</t>

        <t>In one of the first applications of the 3x3 matrix on BMWG, we
        discovered that metrics on measured size, capacity, or scale do not
        easily match one of the three columns above. Following discussion,
        this was resolved in two ways:</t>

        <t><list style="symbols">
            <t>Add a column, Scaleability, for use when categorizing
            benchmarks.</t>

            <t>If using the matrix to report results in an organized way, keep
            size, capacity, and scale metrics separate from the 3x3 matrix and
            incorporate them in the report with other qualifications of the
            results.</t>
          </list>This approach encourages use of the 3x3 matrix to organize
        reports of results, where the capacity at which the various metrics
        were measured could be included in the title of the matrix (and
        results for multiple capacities would result in separate 3x3 matrices,
        if there were sufficient measurements/results to organize in that
        way).</t>

        <t>For example, results for each VM and VNF could appear in the 3x3
        matrix, organized to illustrate resource occupation (CPU Cores) in a
        particular physical computing system, as shown below.<figure
            align="center">
            <artwork><![CDATA[
              VNF#1
          .-----------.
          |__|__|__|__|
Core 1    |__|__|__|__|
          |__|__|__|__|
          |  |  |  |  |
          '-----------'
              VNF#2
          .-----------.
          |__|__|__|__|
Cores 2-5 |__|__|__|__|
          |__|__|__|__|
          |  |  |  |  |
          '-----------'
              VNF#3             VNF#4             VNF#5
          .-----------.    .-----------.     .-----------.
          |__|__|__|__|    |__|__|__|__|     |__|__|__|__|
Core 6    |__|__|__|__|    |__|__|__|__|     |__|__|__|__|
          |__|__|__|__|    |__|__|__|__|     |__|__|__|__|
          |  |  |  |  |    |  |  |  |  |     |  |  |  |  |
          '-----------'    '-----------'     '-----------'
               VNF#6
          .-----------.
          |__|__|__|__|
Core 7    |__|__|__|__|
          |__|__|__|__|
          |  |  |  |  |
          '-----------']]></artwork>
          </figure></t>

        <t>The combination of tables above could be built incrementally,
        beginning with VNF#1 and one Core, then adding VNFs according to their
        supporting core assignments. X-Y plots of critical benchmarks would
        also provide insight to the effect of increased HW utilization. All
        VNFs might be of the same type, or to match a production environment
        there could be VNFs of multiple types and categories. In this figure,
        VNFs #3-#5 are assumed to require small CPU resources, while VNF#2
        requires 4 cores to perform its function.</t>
      </section>

      <section title="Power Consumption">
        <t>Although there is incomplete work to benchmark physical network
        function power consumption in a meaningful way, the desire to measure
        the physical infrastructure supporting the virtual functions only adds
        to the need. Both maximum power consumption and dynamic power
        consumption (with varying load?) would be useful.</t>

        <t>&gt;&gt;&gt; ADD REC from Dallas meeting...</t>
      </section>
    </section>

    <section title="Security Considerations">
      <t>Benchmarking activities as described in this memo are limited to
      technology characterization of a Device Under Test/System Under Test
      (DUT/SUT) using controlled stimuli in a laboratory environment, with
      dedicated address space and the constraints specified in the sections
      above.</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 DUT/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 anchor="IANA" title="IANA Considerations">
      <t>No IANA Action is requested at this time.</t>
    </section>

    <section title="Acknowledgements">
      <t>The author acknowledges an encouraging conversation on this topic
      with Mukhtiar Shaikh and Ramki Krishnan in November 2013. Bhavani Parise
      and Ilya Varlashkin have provided useful suggestions to expand these
      considerations. Bhuvaneswaran Vengainathan has already tried the 3x3
      matrix with SDN controller draft, and contributed to many discussions.
      Scott Bradner quickly pointed out shared resource dependencies in an
      early vSwitch measurement proposal, and the topic was included here as a
      key consideration. Further development was encouraged by Barry
      Constantine's comments following the IETF-92 BMWG session: the session
      itself was an affirmation for this memo with many interested inputs from
      Scott, Ramki, Barry, Bhuvan, Jacob Rapp, and others.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc ?>

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

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

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

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

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

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

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

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

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

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

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

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

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

      <reference anchor="NFV.PER001">
        <front>
          <title>Network Function Virtualization: Performance and Portability
          Best Practices</title>

          <author fullname="ETSI NFV" initials="" surname="">
            <organization/>
          </author>

          <date month="June" year="2014"/>
        </front>

        <seriesInfo name="Group Specification"
                    value="ETSI GS NFV-PER 001 V1.1.1 (2014-06)"/>

        <format type="PDF"/>
      </reference>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.1242'?>

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

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

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

      <?rfc include='reference.RFC.6390'?>
    </references>
  </back>
</rfc>
