<?xml version="1.0" encoding="UTF-8"?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc tocindent="no"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" []>

<rfc category="info" ipr="trust200902" docName="draft-rosa-bmwg-vnfbench-00">
  <front>
    <title abbrev="VNFBench">VNF Benchmarking Methodology</title>

	<author fullname="Raphael Vicente Rosa" initials="R. V." surname="Rosa" role="editor">
    <organization abbrev="Unicamp">University of Campinas</organization>
    <address>
		<postal>
			<street>Av. Albert Einstein 300</street>
			<city>Campinas</city>
			<region>Sao Paulo</region>
			<code>13083-852</code>
			<country>Brazil</country>
		</postal>
	<email>raphaelvrosa@gmail.com</email>
	<uri>http://www.intrig.dca.fee.unicamp.br/</uri>
	</address>
    </author>

    <author fullname="Robert Szabo" initials="R." surname="Szabo">
    <organization abbrev="Ericsson">Ericsson Research, Hungary</organization>
    <address>
		<postal>
			<street>Irinyi Jozsef u. 4-20</street>
			<city>Budapest</city>
			<region></region>
			<code>1117</code>
			<country>Hungary</country>
		</postal>
	<email>robert.szabo@ericsson.com</email>
	<uri>http://www.ericsson.com/</uri>
	</address>
    </author>

    <date year="2016" />
    <area>IETF</area>
    <workgroup>BMWG</workgroup>
    <keyword>Internet-Draft</keyword>
	
	<abstract>
	<t>This document describes VNF benchmarking methodologies.</t>
    </abstract>
  </front>


<middle>
<section title="Introduction" anchor="intro">
  <t>New paradigms of network services envisioned by NFV bring VNFs as
    software based entities, which can be deployed in virtualized
    environments <xref target='ETS14a' />.  In order to be
    managed/orchestrated or compared with physical network functions,
    VNF Descriptors can specify performance profiles containing
    metrics (e.g., throughput) associated with allocated resources
    (e.g., vCPU).  This document describes benchmarking methodologies
    to obtain VNF profiles (resource - performance figures).</t>
    
  <!-- <t>Forth, common terms are defined based on ETSI NFV
    terminology. Considerations regarding the applicability of the
    methodologies presented in this document are defined in the scope
    session. Testing methodologies are then described, considering each
    particularity of VNFs benchmarking tests.</t> -->
</section>

<section title="Terminology" anchor="terms">
  <t>The reader is assumed to be familiar with the terminology as
  defined in the European Telecommunications Standards Institute
  (ETSI) NFV document <xref target="ETS14b" />.  Some of these terms,
  and others commonly used in this document, are defined below.</t>

  <t><list style="hanging">
  <t hangText="NFV:">Network Function Virtualization - The
    principle of separating network functions from the
    hardware they run on by using virtual hardware
    abstraction.</t>

  <t hangText="NFVI PoP:">NFV Infrastructure Point of
    Presence - Any combination of virtualized compute,
    storage and network resources.</t>

  <t hangText="NFVI:">NFV Infrastructure - Collection of
    NFVI PoPs under one orchestrator.</t>

  <t hangText="VIM:">Virtualized Infrastructure Manager - functional
    block that is responsible for controlling and managing the
    NFVI compute, storage and network resources, usually within
    one operator's Infrastructure Domain (e.g. NFVI-PoP).</t>

  <t hangText="NFVO:">NFV Orchestrator - functional
    block that manages the Network Service (NS) life-cycle
    and coordinates the management of NS life-cycle,
    VNF life-cycle (supported by the VNFM) and NFVI 
    resources (supported by the VIM) to ensure an optimized
    allocation of the necessary resources and connectivity </t>

  <t hangText="VNF:">Virtualized Network Function - a
    software-based network function.</t>

  <t hangText="VNFD:">Virtualised Network Function Descriptor -
    configuration template that describes a VNF in terms of its 
    deployment and operational behaviour, and is used in the
    process of VNF on-boarding and managing the life cycle of a 
    VNF instance.</t>

  <t hangText="VNF-FG:">Virtualized Network Function
    Forwarding Graph - an ordered list of VNFs creating a
    service chain.</t>

  <t hangText="MANO:">Management and Orchestration - In the
    ETSI NFV framework <xref target="ETS14a"/>, this is the
    global entity responsible for management and
    orchestration of NFV life-cycle.</t>

  <t hangText="Network Service:"> composition of Network Functions and defined
    by its functional and behavioural specification.</t>   
  </list></t>

<t>Additional terminology not defined by ETSI NFV ISG.</t>
<t><list  style="hanging">
  <t hangText="VNF-BP:">VNF Benchmarking Profile - the specification
  how to measure a VNF Profile. VNF-BP may be specific to a VNF or
  applicable to several VNF types. The specification includes
  structural and functional instructions, and variable parameters
  (metrics) at different abstractions (e.g., vCPU, memory, throughput,
  latency; session, transaction, tenants, etc.).</t>

  <t hangText="VNF Profile:">is a mapping between virtualized
  resources (e.g., vCPU, memory) and VNF performance (e.g.,
  throughput, latency between in/out ports) at a given NFVI PoP. An
  orchestration function can use the VNF Profile to select a host
  (NFVI PoP) for a VNF and to allocate necessary resources to deliver
  the required performance characteristics. </t>

  <t hangText="Customer:"> A user/subscriber/consumer of ETSI's
  Network Service.</t>

  <t hangText="Agents:"> Network Functions performing benchmarking
  tasks (e.g., synthetic traffic sources and sinks; measurement and
  observation functions, etc.).</t>

  <t hangText="SUT:"> System Under Test comprises the VNF under
  test.</t>
</list></t>
</section>

<section title="Scope" anchor="scope">
  <t>This document assumes VNFs as black boxes when defining VNF
  performance benchmarking methodologies.  White box benchmarking of
  VNFs are left for further studies and may be added later.</t>
  
</section>

<section title="Assumptions">
  <t>We assume a VNF benchmarking set-up as shown in <xref
  target="fig_01"/>.  Customers can request Network Services (NS) from
  an NFVO with associated service level specifications (e.g.,
  throughput and delay). The NFVO, in turn, must select hosts and
  software resource allocations for the VNFs and build the necessary
  network overlay to meet the requirements.  Therefore, the NFVO must
  know VNF Profiles per target hosts to perform location and resource
  assignments.</t>

  <t>In a highly dynamic environment, where both the VNF instances
  (e.g., revised VM image) and the NFVI resources (e.g., hw upgrades)
  are changing, the NFVO should be able to create VNF Profiles
  on-demand.</t>

  <t>We assume, that based on VNF Benchmarking Profile definitions
  NFVOs can run benchmarking evaluations to learn VNF Profiles per
  target hosts. </t>

  <t>In a virtualization environment, however, not only the SUT but
  all the other benchmarking agents may be software defined (physical
  or virtualized network functions).</t>

  <t><xref target="fig_01"/> shows an example, where the NFVO can use
  PoPa and PoPb to set-up benchmarking functions to test VNFs hosted
  in PoP 1, 2, 3 domains corresponding to VIM 1, 2 and 3. The NFVO
  uses the VNF Benchmarking Profiles to deploy agents according to the
  SUT VNF. The VNF Benchmarking Profile is defined by the VNF
  Developer.  The results of the VNF benchmarking is stored in a VNF
  Profile.</t>

  <figure anchor="fig_01" align="center"
   title="VNF Testing Scenario">
  <artwork align="center"><![CDATA[
                                    ,----.
                            ,----. ( VNF2 )
 {VNF1: {10Mbps,200ms}{    ( VNF1 ) `----'
   {{2CPU,  8GB}@PoP1}      `----'
   {{8CPU, 16GB}@PoP2}      +---------+        +--------------+
   {{4CPU,  4GB}@PoP3}}}    |Customers|        |VNF Developers|
   {20Mbps,300ms}...}       +-----+---+        +------.-------+
   {VNF2:{10Mbps,200ms}{          |                   |
    {{8CPU, 16GB}@PoP1}           |                   |
     ...}}                  +-----+-------+    ,------+--------.
     ,---------------.      |             |<->(VNF Benchmarking )
    (   VNF-Profiles  )<--->| NFVO / VNFM |    \   Profiles    /
     `---------------'      |             |     `-------------'
                            +-+----+----+-+
                ____....----'/     |     \---..__
      ...----'''            V      V      V      ```--...__
 +----+-+            +------+ +------+ +------+         +-+----+
 | VIMa |            | VIM1 | | VIM2 | | VIM3 |         | VIMb |
 +-----++            +-+----+ +-+----+ +-+----+         +-----++
       |               |        |        |     NFVI           |
+------+--+    *-------+--------+--------+--------*    +------+--+
|PoPa     |    |       |        |        |        |    |PoPb     |
|+------+ |SAP | +-----+-+  +---+---+  +-+-----+  | SAP| +------+|
||Agents|=|>O--+-| PoP 1 |--| PoP 2 |--| PoP 3 |--+--O>|=|Agents||
|+------+ |    | +-------+  +-------+  +-------+  |    | +------+|
|         |    |  PoP1       PoP2       PoP3      |    |         |
|         |    |  Container  Enhanced   Baremetal |    |         |
|         |    |  OS         Hypervisor           |    |         |
+---------+    *----------------------------------*    +---------+
  ]]></artwork>
  </figure>
 

</section>


<section title="VNF Benchmarking Considerations" anchor="considerations">
  <t>VNF benchmarking considerations are defined in <xref
  target="Mor15"/>.  Additionally, VNF pre-deployment testing
  considerations are well explored in <xref target="ETS14c"/>.</t>

  <t>This document list further considerations:</t>
  <t><list style="hanging">
  	<t hangText="Black-Box SUT with Black-Box Benchmarking Agents:"> In virtualization environments neither the VNF instance nor the underlying virtualization environment nor the agents specifics may be known by the entity managing abstract resources. This implies black box testing with black box functional components, which are configured by opaque configuration parameters defined by the VNF developers or alike for the benchmarking entity (e.g., NFVO). </t>
  </list></t>
</section>

<section title="Methodology" anchor="methodology">
  <t>Following the ETSI's model (<xref target="ETS14c"/>), we distinguish three methods for VNF
  evaluation:<list style="hanging">
  <t hangText="Benchmarking:">Where resource {cpu, memory, storage}
  parameters are provided and the corresponding {latency, throughput}
  performance parameters are obtained.  Note, such request might
  create multiple reports, for example, with minimal latency or
  maximum throughput results.</t>

  <t hangText="Verification:">Both resources {cpu, memory, storage}
  and performance {latency, throughput} parameters are provided and
  agents verifies if the given association is correct or not.</t>

  <t hangText="Dimensioning:">Where performance parameters {latency,
  throughput} are provided and the corresponding {cpu, memory,
  storage} resource parameters obtained. Note, multiple deployment
  interactions may be required, or if possible, underlying allocated
  resources need to be dynamically altered.</t>
  </list></t>

  <t>Note: Verification and Dimensioning can be reduced to
  Benchmarking. Therefore, we detail Benchmarking in what follows.</t>

  <section title="Benchmarking" anchor="benchmarking">
    <t>All benchmarking methodologies described in this section
    consider the definition of VNF-BPs for each testing procedure.
    Information about Benchmarking Methodology for Network
    Interconnect Devices, defined in <xref target="rfc2544"/>, is
    considered in all subsections below.  Besides, the tests are
    defined based on notions introduced and discussed in the IP
    Performance Metrics (IPPM) Framework document <xref
    target="rfc2330"/>.
    </t>

    <section title="Throughput" anchor="throughput">
      <t><list style="hanging">
      <t hangText="Objective:"> Provide, for a particular set of
      resources allocated, the throughput among two or more VNF ports,
      expressed in VNF-BP.</t>
      <t hangText="Prerequisite:"> VNF (SUT) must be deployed and
      stable and its allocated resources collected. 
      VNF must be reachable by agents.  The frame size to
      be used for agents must be defined in the VNF-BP.</t>
      <t hangText="Procedure:"> 
        <list style="numbers">
          <t>Establish connectivity between agents and VNF ports.</t>
          <t>Agents initiate source of traffic, specifically designed
          for VNF test, increasing rate periodically.</t>
          <t>Throughput is measured when traffic rate is achieved
          without frame losses.</t>
        </list>
      </t>
      <t hangText="Reporting Format:"> report must contain VNF allocated
      resources and throughput measured (aka
      throughput in <xref target="rfc2544"/>).</t>
      </list></t>
    </section>

    <section title="Latency" anchor="latency">
      <t><list style="hanging">
      <t hangText="Objective:"> Provide, for a particular set of
      resources allocated, the latency among two or more VNF ports,
      expressed in VNF-BP.</t>
      <t hangText="Prerequisite:"> VNF (SUT) must be deployed and
      stable and its allocated resources collected. 
      VNF must be reachable by agents.  The frame size and
      respective throughput to be used for agents must be defined in
      the VNF-BP.</t>
      <t hangText="Procedure:"> 
        <list style="numbers">
          <t>Establish connectivity between agents and VNF ports.</t>
          <t>Agents initiate source of traffic, throughput and frame size specifically designed for VNF test.</t>
          <t>Latency is measured when throughput is achieved for the period of time specified in VNF-BP.</t>
        </list>
      </t>
      <t hangText="Reporting Format:"> report must contain VNF allocated
      resources, throughput used for
      stimulus and latency measurement (aka latency in <xref
      target="rfc2544"/>).</t>
      </list></t>
    </section>

    <section title="Frame Loss Rate" anchor="loss">
      <t><list style="hanging">
      <t hangText="Objective:"> Provide, for a particular set of
      resources allocated, the frame loss rate among two or more VNF
      ports, expressed in VNF-BP.</t>
      <t hangText="Prerequisite:"> VNF (SUT) must be deployed and
      stable, its allocated resources collected specifying any
      particular feature of the underlying VNF virtualized
      environment, provided by NFVO/VIM or independently
      extracted. VNF must be reachable by agents.  Rate of source
      traffic and frame type used for agents stimulus must be defined
      in VNF-BP.</t>
      <t hangText="Procedure:"> 
        <list style="numbers">
          <t>Establish connectivity between agents and VNF ports.</t>
          <t>Agents initiate source of traffic, specifically designed for VNF test,
            achieving rate of source traffic defined in VNF-BP.</t>
          <t>Frame loss rate is measured when pre-defined traffic rate
          is achieved for period of time established in
          VNF-BP.</t>
        </list>
      </t>
      <t hangText="Reporting Format:"> report must contain VNF allocated
      resources, rate of source traffic used
      as stimulus and frame loss rate measurement (aka frame loss rate
      in <xref target="rfc2544"/>).</t>
      </list></t>
    </section>
  </section>
</section>

<section anchor="summary" title="Summary">
  <t>This document describes black-box benchmarking methodologies for black-box VNFs in virtualization environments (e.g., ETSI NFV framework) to create VNF Profiles containing the association of resources and performance metrics of a given VNF at a given host (e.g., NFVI PoP).</t> 
  
  <t>The authors see the following next steps:</t>
  <t><list style="hanging">
    <t hangText="VNF Scaling:"> Two scaling options: single instance with more resources or multiple instances. Questions: What is the maximum performance of a single instance VNF at a given host with increasing resources? How many independent VNF instances (or components) can be run with maximum performance at a given host? On the other hand, what is the performance of the smallest resource footprint VNF allocation?</t>

    <t hangText="VNF instantiation time:"> this metric concerns at least three components: VNF bootstraping (SUT), execution environment and the orchestration process.  </t>
  </list></t>
</section>

<section anchor="IANA" title="IANA Considerations">
  <t>This memo includes no request to IANA.</t>
</section>

<section anchor="Security" title="Security Considerations">
	<t>TBD</t>
</section>

<section title="Acknowledgement" anchor="acknowledgement">
	  <t>The authors would like to thank the support of Ericsson Research,
	  Brazil.</t>
	  <t>This work is partially supported by FP7 UNIFY, a research project
	    partially funded by the European Community under the Seventh
	    Framework Program (grant agreement no. 619609).  The views
	    expressed here are those of the authors only.  The European
	    Commission is not liable for any use that may be made of the
	    information in this document.</t>
</section>

</middle>

<back>

  <references title="Informative References">

    <reference anchor="ETS14a" target="http://www.etsi.org/deliver/etsi\_gs/NFV/001\_099/002/01.02.01-\_60/gs\_NFV002v010201p.pdf">
      <front>
        <title>Architectural Framework - ETSI GS NFV 002 V1.2.1 </title>
          <author>
            <organization>ETSI</organization>
          </author>
          <date month="Dec" year="2014" />
      </front>
    </reference>

    <reference anchor="ETS14b" target="http://www.etsi.org/deliver/etsi_gs/NFV/001_099-/003/01.02.01_60/gs_NFV003v010201p.pdf">
      <front>
        <title>Terminology for Main Concepts in NFV - ETSI GS NFV 003 V1.2.1 </title>
          <author>
            <organization>ETSI</organization>
          </author>
          <date month="Dec" year="2014" />
      </front>
    </reference>

    <reference anchor="ETS14c" target="http://docbox.etsi.org/ISG/NFV/Open/DRAFTS/TST001_-_Pre-deployment_Validation/NFV-TST001v0015.zip">
      <front>
        <title>NFV Pre-deployment Testing - ETSI GS NFV TST001 V0.0.15 </title>
          <author>
            <organization>ETSI</organization>
          </author>
          <date month="February" year="2016" />
      </front>
    </reference>

    <reference anchor="Mor15" target="http://tools.ietf.org/html/draft-morton-bmwg-virtual-net-03">
	    <front>
	      <title>Considerations for Benchmarking Virtual Network Functions and Their Infrastructure</title>
	      <author><organization>A. Morton</organization></author>
	      <date month="February" year="2015" />
	    </front>
  	</reference>

    <reference anchor="rfc2544" target="https://tools.ietf.org/html/rfc2544">
      <front>
        <title>Benchmarking Methodology for Network Interconnect Devices</title>
        <author><organization>S. Bradner and J. McQuaid</organization></author>
        <date month="March" year="1999" />
      </front>
    </reference>

    <reference anchor="rfc2330" target="https://tools.ietf.org/html/rfc2330">
      <front>
        <title>Framework for IP Performance Metrics</title>
        <author><organization>V. Paxson, G. Almes, J. Mahdavi, M. Mathis</organization></author>
        <date month="May" year="1998" />
      </front>
    </reference>


</references>

</back>
</rfc>
