<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "http://xml.resource.org/authoring/rfc2629.dtd" [
<!ENTITY rfc3261 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml">
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc2544 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2544.xml">
<!ENTITY rfc3550 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3550.xml">
<!ENTITY rfc1242 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1242.xml">
<!ENTITY rfc2285 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2285.xml">
<!ENTITY rfc3711 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3711.xml">
<!ENTITY I-D.ietf-soc-overload-design SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-soc-overload-design.xml">
<!ENTITY I-D.ietf-soc-overload-control SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-soc-overload-control.xml">
<!ENTITY I-D.ietf-bmwg-sip-bench-meth SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bmwg-sip-bench-meth.xml">
]>
<?rfc toc="yes" ?>
<?rfc compact="yes" ?>
<?rfc sortrefs="no" ?>
<?rfc symrefs="yes" ?>
<rfc category="info" docName="draft-ietf-bmwg-sip-bench-term-07"
     ipr="trust200902">
  <front>
    <title abbrev="SIP Benchmarking Terminology">Terminology for Benchmarking
    Session Initiation Protocol (SIP) Networking Devices</title>

    <author fullname="Carol Davids" initials="C." surname="Davids">
      <organization>Illinois Institute of Technology</organization>

      <address>
        <postal>
          <street>201 East Loop Road</street>

          <city>Wheaton</city>

          <region>IL</region>

          <code>60187</code>

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

        <phone>+1 630 682 6024</phone>

        <email>davids@iit.edu</email>
      </address>
    </author>

    <author fullname="Vijay K. Gurbani" initials="V." surname="Gurbani">
      <organization>Bell Laboratories, Alcatel-Lucent</organization>

      <address>
        <postal>
          <street>1960 Lucent Lane</street>

          <street>Rm 9C-533</street>

          <city>Naperville</city>

          <region>IL</region>

          <code>60566</code>

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

        <phone>+1 630 224 0216</phone>

        <email>vkg@bell-labs.com</email>
      </address>
    </author>

    <author fullname="Scott Poretsky" initials="S." surname="Poretsky">
      <organization>Allot Communications</organization>

      <address>
        <postal>
          <street>300 TradeCenter, Suite 4680</street>

          <city>Woburn</city>

          <region>MA</region>

          <code>08101</code>

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

        <phone>+1 508 309 2179</phone>

        <email>sporetsky@allot.com</email>
      </address>
    </author>

    <date day="6" month="January" year="2013"/>

    <area>Operations and Management Area</area>

    <workgroup>Benchmarking Methodology Working Group</workgroup>

    <abstract>
      <t>This document provides a terminology for benchmarking the SIP
      performance of networking devices. The term performance in this context
      means the capacity of the device- or system-under-test to process SIP
      messages. Terms are included for test components, test setup parameters,
      and performance benchmark metrics for black-box benchmarking of SIP
      networking devices. The performance benchmark metrics are obtained for
      the SIP signaling plane only. The terms are intended for use in a
      companion methodology document for characterizing the performance of a
      SIP networking device under a variety of conditions. The intent of the
      two documents is to enable a comparison of the capacity of SIP
      networking devices. Test setup parameters and a methodology document are
      necessary because SIP allows a wide range of configuration and
      operational conditions that can influence performance benchmark
      measurements. A standard terminology and methodology will ensure that
      benchmarks have consistent definition and were obtained following the
      same procedures.</t>
    </abstract>
  </front>

  <middle>
    <section title="Terminology">
      <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 BCP 14, RFC2119 <xref
      target="RFC2119"/>. RFC 2119 defines the use of these key words to help
      make the intent of standards track documents as clear as possible. While
      this document uses these keywords, this document is not a standards
      track document. The term Throughput is defined in RFC2544 <xref
      target="RFC2544"/>.</t>

      <t>For the sake of clarity and continuity, this document adopts the
      template for definitions set out in Section 2 of RFC 1242 <xref
      target="RFC1242"/>.</t>

      <t>The terms Device Under Test (DUT) and System Under Test (SUT) are
      defined in the following BMWG documents: <list style="empty">
          <t/>

          <t>Device Under Test (DUT) (c.f., Section 3.1.1 RFC 2285 <xref
          target="RFC2285"/>).</t>

          <t>System Under Test (SUT) (c.f., Section 3.1.2, RFC 2285 <xref
          target="RFC2285"/>).</t>
        </list></t>

      <t>Many commonly used SIP terms in this document are defined in RFC 3261
      <xref target="RFC3261"/>. For convenience the most important of these
      are reproduced below. Use of these terms in this document is consistent
      with their corresponding definition in <xref target="RFC3261"/>. <list
          style="symbols">
          <t>Call Stateful: A proxy is call stateful if it retains state for a
          dialog from the initiating INVITE to the terminating BYE request. A
          call stateful proxy is always transaction stateful, but the converse
          is not necessarily true.</t>

          <t>Stateful Proxy: A logical entity that maintains the client and
          server transaction state machines defined by this specification
          during the processing of a request, also known as a transaction
          stateful proxy. The behavior of a stateful proxy is further defined
          in Section 16 of RFC 3261 <xref target="RFC3261"/> . A transaction
          stateful proxy is not the same as a call stateful proxy.</t>

          <t>Stateless Proxy: A logical entity that does not maintain the
          client or server transaction state machines defined in this
          specification when it processes requests. A stateless proxy forwards
          every request it receives downstream and every response it receives
          upstream.</t>

          <t>Back-to-back User Agent: A back-to-back user agent (B2BUA) is a
          logical entity that receives a request and processes it as a user
          agent server (UAS). In order to determine how the request should be
          answered, it acts as a user agent client (UAC) and generates
          requests. Unlike a proxy server, it maintains dialog state and must
          participate in all requests sent on the dialogs it has established.
          Since it is a concatenation of a UAC and a UAS, no explicit
          definitions are needed for its behavior.</t>

          <t>Loop: A request that arrives at a proxy, is forwarded, and later
          arrives back at the same proxy. When it arrives the second time, its
          Request-URI is identical to the first time, and other header fields
          that affect proxy operation are unchanged, so that the proxy will
          make the same processing decision on the request it made the first
          time. Looped requests are errors, and the procedures for detecting
          them and handling them are described by the SIP protocol<xref
          target="RFC3261"/> and also by RFC 5393</t>
        </list></t>
    </section>

    <section anchor="sec-intro" title="Introduction">
      <t>Service Providers and IT Organizations deliver Voice Over IP (VoIP)
      and Multimedia network services based on the IETF Session Initiation
      Protocol (SIP) <xref target="RFC3261"/>. SIP is a signaling protocol
      originally intended to be used to dynamically establish, disconnect and
      modify streams of media between end users. As it has evolved it has been
      adopted for use in a growing number of services and applications. Many
      of these result in the creation of a media session, but some do not.
      Examples of this latter group include text messaging and subscription
      services. The set of benchmarking terms provided in this document is
      intended for use with any SIP-enabled device performing SIP functions in
      the interior of the network, whether or not these result in the creation
      of media sessions. The performance of end-user devices is outside the
      scope of this document.</t>

      <t>A number of networking devices have been developed to support
      SIP-based VoIP services. These include SIP Servers, Session Border
      Controllers (SBC), Back-to-back User Agents (B2BUA), and SIP-Aware
      Stateful Firewalls. These devices contain a mix of voice and IP
      functions whose performance may be reported using metrics defined by the
      equipment manufacturer or vendor. The Service Provider or IT
      Organization seeking to compare the performance of such devices will not
      be able to do so using these vendor-specific metrics, whose conditions
      of test and algorithms for collection are often unspecified. SIP
      functional elements and the devices that include them can be configured
      many different ways and can be organized into various topologies. These
      configuration and topological choices impact the value of any chosen
      signaling benchmark. Unless these conditions-of-test are defined, a true
      comparison of performance metrics will not be possible. Some SIP-enabled
      network devices terminate or relay media as well as signaling. The
      processing of media by the device impacts the signaling performance. As
      a result, the conditions-of-test must include information as to whether
      or not the device under test processes media and if the device does
      process media, a description of the media handled and the manner in
      which it is handled. This document and its companion methodology
      document <xref target="I-D.ietf-bmwg-sip-bench-meth"/> provide a set of
      black-box benchmarks for describing and comparing the performance of
      devices that incorporate the SIP User Agent Client and Server functions
      and that operate in the network's core.</t>

      <t>The definition of SIP performance benchmarks necessarily includes
      definitions of Test Setup Parameters and a test methodology. These
      enable the Tester to perform benchmarking tests on different devices and
      to achieve comparable results. This document provides a common set of
      definitions for Test Components, Test Setup Parameters, and Benchmarks.
      All the benchmarks defined are black-box measurements of the SIP
      signaling plane. The Test Setup Parameters and Benchmarks defined in
      this document are intended for use with the companion Methodology
      document. Benchmarks of internal DUT characteristics (also known as
      white-box benchmarks) such as Session Attempt Arrival Rate, which is
      measured at the DUT, are described in <xref target="Appendix"/> to allow
      additional characterization of DUT behavior with different distribution
      models.</t>

      <section anchor="scope" title="Scope">
        <t>The scope of this work item is summarized as follows: <list
            style="symbols">
            <t>This terminology document describes SIP signaling performance
            benchmarks for black-box measurements of SIP networking devices.
            Stress and debug scenarios are not addressed in this work
            item.</t>

            <t>The DUT must be an RFC 3261 capable network equipment. This may
            be a Registrar, Redirect Server, Stateless Proxy or Stateful
            Proxy. A DUT MAY also include a B2BUA, SBC functionality. The DUT
            MAY be a multi-port SIP-to-switched network gateway implemented as
            a SIP UAC or UAS.</t>

            <t>The DUT MAY include an internal SIP Application Level Gateway
            (ALG), firewall, and/or a Network Address Translator (NAT). This
            is referred to as the "SIP Aware Stateful Firewall."</t>

            <t>The DUT or SUT MUST NOT be end user equipment, such as personal
            digital assistant, a computer-based client, or a user
            terminal.</t>

            <t>The Tester acts as multiple "Emulated Agents" (EA) that
            initiate (or respond to) SIP messages as session endpoints and
            source (or receive) associated media for established
            connections.</t>

            <t>SIP Signaling in presence of Media <list style="symbols">
                <t>The media performance is not benchmarked in this work
                item.</t>

                <t>It is RECOMMENDED that SIP signaling plane benchmarks be
                performed with media present, but this is optional.</t>

                <t>The SIP INVITE requests MUST include the SDP body.</t>

                <t>The type of DUT dictates whether the associated media
                streams traverse the DUT or SUT. Both scenarios are within the
                scope of this work item.</t>

                <t>SIP is frequently used to create media streams; the
                signaling plane and media plane are treated as orthogonal to
                each other in this document. While many devices support the
                creation of media streams, benchmarks that measure the
                performance of these streams are outside the scope of this
                document and its companion methodology document <xref
                target="I-D.ietf-bmwg-sip-bench-meth"/>. Tests may be
                performed with or without the creation of media streams. The
                presence or absence of media streams MUST be noted as a
                condition of the test as the performance of SIP devices may
                vary accordingly. Even if the media is used during
                benchmarking, only the SIP performance will be benchmarked,
                not the media performance or quality.</t>
              </list></t>

            <t>Both INVITE and non-INVITE scenarios (such as Instant Messages
            or IM) are addressed in this document. However, benchmarking SIP
            presence is not a part of this work item.</t>

            <t>Different transport mechanisms -- such as UDP, TCP, SCTP, or
            TLS -- may be used. The specific transport mechanism MUST be noted
            as a condition of the test as the performance of SIP devices may
            vary accordingly.</t>

            <t>Looping and forking options are also considered since they
            impact processing at SIP proxies.</t>

            <t>REGISTER and INVITE requests may be challenged or remain
            unchallenged for authentication purpose. Whether or not the
            REGISTER and INVITE requests are challenged is a condition of test
            which will be recorded along with other such parameters which may
            impact the SIP performance of the device or system under test.</t>

            <t>Re-INVITE requests are not considered in scope of this work
            item since the benchmarks for INVITEs are based on the dialog
            created by the INVITE and not on the transactions that take place
            within that dialog.</t>

            <t>Only session establishment is considered for the performance
            benchmarks. Session disconnect is not considered in the scope of
            this work item. This is because our goal is to determine the
            maximum capacity of the device or system under test, that is the
            number of simultaneous SIP sessions that the device or system can
            support. It is true that there are BYE requests being created
            during the test process. These transactions do contribute to the
            load on the device or system under test and thus are accounted for
            in the metric we derive. We do not seek a separate metric for the
            number of BYE transactions a device or system can support.</t>

            <t>SIP Overload <xref target="RFC6357"/> is within the scope of
            this work item. We test to failure and then can continue to
            observe and record the behavior of the system after failures are
            recorded. The cause of failure is not within the scope of this
            work. We note the failure and may continue to test until a
            different failure or condition is encountered. Considerations on
            how to handle overload are deferred to work progressing in the SOC
            working group <xref target="I-D.ietf-soc-overload-control"/>.
            Vendors are, of course, free to implement their specific overload
            control behavior as the expected test outcome if it is different
            from the IETF recommendations. However, such behavior MUST be
            documented and interpreted appropriately across multiple vendor
            implementations. This will make it more meaningful to compare the
            performance of different SIP overload implementations.</t>

            <t>IMS-specific scenarios are not considered, but test cases can
            be applied with 3GPP-specific SIP signaling and the P-CSCF as a
            DUT.</t>
          </list></t>
      </section>

      <!-- scope -->

      <section anchor="bench-models" title="Benchmarking Models">
        <t>This section shows ten models to be used when benchmarking SIP
        performance of a networking device. <xref target="topology-0"/> shows
        shows the configuration needed to benchmark the tester itself. This
        model will be used to establish the limitations of the test
        apparatus.</t>

        <figure anchor="topology-0"
                title="Baseline performance of the Emulated Agent without                 a DUT present">
          <artwork><![CDATA[

  +--------+      Signaling request       +--------+
  |        +----------------------------->|        |
  | Tester |                              | Tester |
  |   EA   |      Signaling response      |   EA   |
  |        |<-----------------------------+        |
  +--------+                              +--------+
     /|\                                       /|\
      |                  Media                  |
      +=========================================+
     
  ]]></artwork>
        </figure>

        <t><xref target="topology-1"/> shows the DUT playing the role of a
        user agent client (UAC), initiating requests and absorbing responses.
        This model can be used to baseline the performance of the DUT acting
        as an UAC without associated media.</t>

        <figure anchor="topology-1"
                title="Baseline performance for DUT                 acting as a user agent client without associated media">
          <artwork><![CDATA[

  +--------+      Signaling request       +--------+
  |        +----------------------------->|        |
  | DUT    |                              | Tester |
  |        |      Signaling response      |   EA   |
  |        |<-----------------------------+        |
  +--------+                              +--------+

  ]]></artwork>
        </figure>

        <t><xref target="topology-2"/> shows the DUT plays the role of a user
        agent server (UAS), absorbing the requests and sending responses. This
        model can be used as a baseline performance for the DUT acting as a
        UAS without associated media.</t>

        <figure anchor="topology-2"
                title="Baseline performance for                DUT acting as a user agent server without associated media">
          <artwork><![CDATA[

  +--------+      Signaling request       +--------+
  |        +----------------------------->|        |
  | Tester |                              |  DUT   |
  |   EA   |      Response                |        |
  |        |<-----------------------------+        |
  +--------+                              +--------+

  ]]></artwork>
        </figure>

        <t><xref target="topology-2a"/> shows the DUT plays the role of a user
        agent client (UAC), initiating requests and absorbing responses. This
        model can be used as a baseline performance for the DUT acting as a
        UAC with associated media.</t>

        <figure anchor="topology-2a"
                title="Baseline performance for DUT                 acting as a user agent client with associated media">
          <artwork><![CDATA[

  +--------+      Signaling request       +--------+
  |        +----------------------------->|        |
  | DUT    |                              | Tester |
  |        |      Signaling response      |  (EA)  |
  |        |<-----------------------------+        |
  |        |<============ Media =========>|        |
  +--------+                              +--------+

  ]]></artwork>
        </figure>

        <t><xref target="topology-2b"/> shows the DUT plays the role of a user
        agent server (UAS), absorbing the requests and sending responses. This
        model can be used as a baseline performance for the DUT acting as a
        UAS with associated media.</t>

        <figure anchor="topology-2b"
                title="Baseline performance for                DUT acting as a user agent server with associated media">
          <artwork><![CDATA[

  +--------+      Signaling request       +--------+
  |        +----------------------------->|        |
  | Tester |                              |  DUT   |
  |  (EA)  |      Response                |        |
  |        |<-----------------------------+        |
  |        |<============ Media =========>|        |
  +--------+                              +--------+

  ]]></artwork>
        </figure>

        <t><xref target="topology-3"/> shows that the Tester acts as the
        initiating and responding EA as the DUT/SUT forwards Session
        Attempts.</t>

        <figure anchor="topology-3"
                title="DUT/SUT performance benchmark for                 session establishment without media">
          <artwork><![CDATA[

   +--------+   Session   +--------+  Session    +--------+
   |        |   Attempt   |        |  Attempt    |        |
   |        |<------------+        |<------------+        |
   |        |             |        |             |        |
   |        |   Response  |        |  Response   |        |
   | Tester +------------>|  DUT   +------------>| Tester |
   |  (EA)  |             |        |             |  (EA)  |
   |        |             |        |             |        |
   +--------+             +--------+             +--------+

  ]]></artwork>
        </figure>

        <t><xref target="topology-4"/> is used when performing those same
        benchmarks with Associated Media traversing the DUT/SUT.</t>

        <figure anchor="topology-4"
                title="DUT/SUT performance benchmark for                 session establishment with media traversing the DUT">
          <artwork><![CDATA[

   +--------+   Session   +--------+  Session    +--------+
   |        |   Attempt   |        |  Attempt    |        |
   |        |<------------+        |<------------+        |
   |        |             |        |             |        |
   |        |   Response  |        |  Response   |        |
   | Tester +------------>|  DUT   +------------>| Tester |
   |  (EA)  |             |        |             |  (EA)  |
   |        |   Media     |        |   Media     |        |
   |        |<===========>|        |<===========>|        |
   +--------+             +--------+             +--------+

  ]]></artwork>
        </figure>

        <t><xref target="topology-5"/> is to be used when performing those
        same benchmarks with Associated Media, but the media does not traverse
        the DUT/SUT. Again, the benchmarking of the media is not within the
        scope of this work item. The SIP control signaling is benchmarked in
        the presence of Associated Media to determine if the SDP body of the
        signaling and the handling of media impacts the performance of the
        DUT/SUT.</t>

        <figure anchor="topology-5"
                title="DUT/SUT performance benchmark for                 session establishment with media external to the DUT">
          <artwork><![CDATA[

   +--------+   Session   +--------+  Session    +--------+
   |        |   Attempt   |        |  Attempt    |        |
   |        |<------------+        |<------------+        |
   |        |             |        |             |        |
   |        |   Response  |        |  Response   |        |
   | Tester +------------>|  DUT   +------------>| Tester |
   |  (EA)  |             |        |             |  (EA)  |
   |        |             |        |             |        |
   +--------+             +--------+             +--------+
       /|\                                           /|\
        |                    Media                    |
        +=============================================+

  ]]></artwork>
        </figure>

        <t><xref target="topology-6"/> is used when performing benchmarks that
        require one or more intermediaries to be in the signaling path. The
        intent is to gather benchmarking statistics with a series of DUTs in
        place. In this topology, the media is delivered end-to-end and does
        not traverse the DUT.</t>

        <figure anchor="topology-6"
                title="DUT/SUT performance benchmark for                 session establishment with multiple DUTs and                 end-to-end media">
          <artwork><![CDATA[
                               SUT
           ------------------^^^^^^^^-------------
          /                                       \
   +------+ Session  +---+ Session  +---+ Session  +------+
   |      | Attempt  |   | Attempt  |   | Attempt  |      |
   |      |<---------+   |<---------+   |<---------+      |
   |      |          |   |          |   |          |      |
   |      | Response |   | Response |   | Response |      |
   |Tester+--------->|DUT+--------->|DUT|--------->|Tester|
   | (EA) |          |   |          |   |          | (EA) |
   |      |          |   |          |   |          |      |
   +------+          +---+          +---+          +------+
       /|\                                           /|\
        |                    Media                    |
        +=============================================+

  ]]></artwork>
        </figure>

        <t><xref target="topology-7"/> is used when performing benchmarks that
        require one or more intermediaries to be in the signaling path. The
        intent is to gather benchmarking statistics with a series of DUTs in
        place. In this topology, the media is delivered hop-by-hop through
        each DUT.</t>

        <figure anchor="topology-7"
                title="DUT/SUT performance benchmark for                 session establishment with multiple DUTs and  hop-                 by-hop media">
          <artwork><![CDATA[
                               SUT
            -----------------^^^^^^^^-------------
           /                                      \
   +------+ Session  +---+ Session  +---+ Session  +------+
   |      | Attempt  |   | Attempt  |   | Attempt  |      |
   |      |<---------+   |<---------+   |<---------+      |
   |      |          |   |          |   |          |      |
   |      | Response |   | Response |   | Response |      |
   |Tester+--------->|DUT+--------->|DUT|--------->|Tester|
   | (EA) |          |   |          |   |          | (EA) |
   |      |          |   |          |   |          |      |
   |      |<========>|   |<========>|   |<========>|      |
   +------+ Media    +---+ Media    +---+ Media    +------+


  ]]></artwork>
        </figure>

        <t><xref target="basic-topology"/> illustrates the SIP signaling for
        an Established Session. The Tester acts as the EAs and initiates a
        Session Attempt with the DUT/SUT. When the Emulated Agent (EA)
        receives a 200 OK from the DUT/SUT that session is considered to be an
        Established Session. The illustration indicates three states of the
        session bring created by the EA &ndash; Attempting, Established, and
        Disconnecting. Sessions can be one of two type: Invite-Initiated
        Session (IS) or Non-Invite Initiated Session (NS). Failure for the
        DUT/SUT to successfully respond within the Establishment Threshold
        Time is considered a Session Attempt Failure. SIP Invite messages MUST
        include the SDP body to specify the Associated Media. Use of
        Associated Media, to be sourced from the EA, is optional. When
        Associated Media is used, it may traverse the DUT/SUT depending upon
        the type of DUT/SUT. The Associated Media is shown in <xref
        target="basic-topology"/> as "Media" connected to media ports M1 and
        M2 on the EA. After the EA sends a BYE, the session disconnects.
        Performance test cases for session disconnects are not considered in
        this work item (the BYE request is shown for completeness.)</t>

        <figure anchor="basic-topology"
                title="Invite-initiated Session States">
          <artwork><![CDATA[

         EA           DUT/SUT   M1       M2
         |               |       |       |
         |    INVITE     |       |       |
---------+-------------->|       |       |
         |               |       |       |
Attempting               |       |       |
         |    200 OK     |       |       |
---------+<--------------|       |       |
         |    ACK        |       |       |
         |-------------->|       |       |
         |               |       |       |
         |               |       |       |
         |               |       | Media |
Established              |       |<=====>|
         |               |       |       |
         |      BYE      |       |       |
--------+--------------> |       |       |
         |               |       |       |
Disconnecting            |       |       |
         |   200 OK      |       |       |
--------|<-------------- |       |       |
         |               |       |       |

]]></artwork>
        </figure>
      </section>

      <!-- bench-models -->
    </section>

    <!-- Introduction -->

    <section anchor="term-def" title="Term Definitions">
      <section anchor="protocol-components" title="Protocol Components">
        <section anchor="session" title="Session">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The combination of signaling and media messages and processes
              that support a SIP-based service.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>SIP messages are used to create and manage services for end
              users. Often, these services include the creation of media
              streams that are defined in the SDP body of a SIP message and
              carried in RTP protocol data units. However, SIP messages can
              also be used to create Instant Message services and subscription
              services, and such services are not associated with media
              streams. SIP reserves the term "session" to describe services
              that are analogous to telephone calls on a circuit switched
              network. SIP reserves the term "dialog" to refer to a
              signaling-only relationship between User Agent peers. SIP
              reserves the term "transaction" to refer to the brief
              communication between a client and a server that lasts only
              until the final response to the SIP request. None of these terms
              describes the entity whose performance we want to benchmark. For
              example, the MESSAGE request does not create a dialog and can be
              sent either within or outside of a dialog. It is not associated
              with media, but it resembles a phone call in its dependence on
              human rather than machine initiated responses. The SUBSCRIBE
              method does create a dialog between the originating end-user and
              the subscription service. It, too, is not associated with a
              media session.</t>

              <t>In light of the above observations we have extended the term
              "session" to include SIP-based services that are not initiated
              by INVITE requests and that do not have associated media. In
              this extended definition, a session always has a signaling
              component and may also have a media component. Thus, a session
              can be defined as signaling-only or a combination of signaling
              and media. We define the term "Associated Media", see <xref
              target="associated-media-stream"/>, to describe the situation in
              which media is associated with a SIP dialog. The terminology
              "Invite-initiated Session" (IS) <xref target="IS"/> and
              "Non-invite-Initiated Session" (NS) <xref target="NS"/> are used
              to distinguish between these two types of session. An
              Invite-initiated Session is a session as defined in SIP. The
              performance of a device or system that supports Invite-initiated
              Sessions that do not create media sessions, "Invite-initiated
              Sessions without Associated Media", can be measured and is of
              interest for comparison and as a limiting case. The REGISTER
              request can be considered to be a "Non-invite-initiated Session
              without Associated Media." A separate set of benchmarks is
              provided for REGISTER requests since most implementations of
              SIP-based services require this request and since a registrar
              may be a device under test.</t>

              <t/>

              <t>A Session in the context of this document, can be considered
              to be a vector with three components:</t>

              <t><list style="numbers">
                  <t>A component in the signaling plane (SIP messages),
                  sess.sig;</t>

                  <t>A media component in the media plane (RTP and SRTP
                  streams for example), sess.med (which may be null);</t>

                  <t>A control component in the media plane (RTCP messages for
                  example), sess.medc (which may be null).</t>
                </list></t>

              <t/>

              <t>An IS is expected to have non-null sess.sig and sess.med
              components. The use of control protocols in the media component
              is media dependent, thus the expected presence or absence of
              sess.medc is media dependent and test-case dependent. An NS is
              expected to have a non-null sess.sig component, but null
              sess.med and sess.medc components.</t>

              <t/>

              <t>Packets in the Signaling Plane and Media Plane will be
              handled by different processes within the DUT. They will take
              different paths within a SUT. These different processes and
              paths may produce variations in performance. The terminology and
              benchmarks defined in this document and the methodology for
              their use are designed to enable us to compare performance of
              the DUT/SUT with reference to the type of SIP-supported
              application it is handling.</t>

              <t/>

              <t>Note that one or more sessions can simultaneously exist
              between any participants. This can be the case, for example,
              when the EA sets up both an IM and a voice call through the
              DUT/SUT. These sessions are represented as an array
              session[x].</t>

              <t/>

              <t>Sessions will be represented as a vector array with three
              components, as follows:</t>

              <t>session-&gt;</t>

              <t>session[x].sig, the signaling component</t>

              <t>session[x].medc[y], the media control component (e.g.
              RTCP)</t>

              <t>session[x].med[y], an array of associated media streams (e.g.
              RTP, SRTP, RTSP, MSRP). This media component may consist of zero
              or more media streams.</t>

              <t><xref target="shadow"/> models the vectors of the
              session.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Media Plane</t>

              <t>Signaling Plane</t>

              <t>Associated Media</t>

              <t>Invite-initiated Session (IS)</t>

              <t>Non-invite-initiated Session (NS)</t>
            </list> <figure anchor="shadow" title="Session components">
              <artwork><![CDATA[


                 |\
                 |
                 |   \
         sess.sig|
                 |     \
                 |
                 |       \
                 |         o
                 |        /
                 |       / |
                 |      /
                 |     /   |
                 |    /
                 |   /     |
                 |  /
                 | /       |   sess.medc
                 |/_____________________
                /               /
               /           |
              /               /
  sess.med   /             |
            /_ _ _ _ _ _ _ _/
           /
          /
         /
        /


]]></artwork>
            </figure></t>

          <!-- vkg -->
        </section>

        <section anchor="signaling-plane" title="Signaling Plane">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The plane in which SIP messages <xref target="RFC3261"/> are
              exchanged between SIP Agents <xref target="RFC3261"/>.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>SIP messages are used to establish sessions in several ways:
              directly between two User Agents <xref target="RFC3261"/>,
              through a Proxy Server <xref target="RFC3261"/>, or through a
              series of Proxy Servers. The Session Description Protocol is
              included in the Signaling Plane. (SDP).</t>

              <t>The Signaling Plane for a single Session is represented by
              session.sig.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Media Plane</t>

              <t>EAs</t>
            </list></t>
        </section>

        <!-- signaling plane -->

        <section anchor="media-plane" title="Media Plane">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The data plane in which one or more media streams and their
              associated media control protocols are exchanged between User
              Agents after a media connection has been created by the exchange
              of signaling messages in the Signaling Plane.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>Media may also be known as the "bearer channel". The Media
              Plane MUST include the media control protocol, if one is used,
              and the media stream(s). Examples of media are audio and video.
              The media streams are described in the SDP of the Signaling
              Plane.</t>

              <t>The media for a single Session is represented by session.med.
              The media control protocol for a single media description is
              represented by session.medc.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Signaling Plane</t>
            </list></t>
        </section>

        <!-- Media Plane -->

        <section anchor="associated-media-stream" title="Associated Media">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Media that corresponds to an 'm' line in the SDP payload of
              the Signaling Plane.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>Any media protocol MAY be used.</t>

              <t>For any session's signaling component, session.sig, there may
              be zero, one, or multiple associated media streams. When there
              are multiple media streams, these are represented be a vector
              array session.med[y]. When there are multiple media streams
              there will be multiple media control protocol descriptions as
              well. They are represented by a vector array
              session.medc[y].</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>
            </list></t>
        </section>

        <!-- Associated Media stream -->

        <section anchor="sec-overload" title="Overload">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Overload is defined as the state where a SIP server does not
              have sufficient resources to process all incoming SIP messages
              <xref target="RFC6357"/>.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The distinction between an overload condition and other
              failure scenarios is outside the scope of black box testing and
              of this document. Under overload conditions, all or a percentage
              of Session Attempts will fail due to lack of resources. In black
              box testing the cause of the failure is not explored. The fact
              that a failure occurred for whatever reason, will trigger the
              tester to reduce the offered load, as described in the companion
              methodology document, <xref
              target="I-D.ietf-bmwg-sip-bench-meth"/>. SIP server resources
              may include CPU processing capacity, network bandwidth,
              input/output queues, or disk resources. Any combination of
              resources may be fully utilized when a SIP server (the DUT/SUT)
              is in the overload condition. For proxy-only type of devices, it
              is expected that the proxy will be driven into overload based on
              the delivery rate of signaling requests.</t>

              <t>For UA-type of network devices such as gateways, it is
              expected that the UA will be driven into overload based on the
              volume of media streams it is processing.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>The issue of overload in SIP networks is currently a topic of
              discussion in the SIPPING WG. The normal response to an overload
              stimulus -- sending a 503 response -- is considered inadequate
              and new response codes and behaviors may be specified in the
              future. From the perspective of this document, all these
              responses will be considered to be failures. There is thus no
              dependency between this document and the ongoing work on the
              treatment of overload failure.</t>
            </list></t>
        </section>

        <!-- sec-overload -->

        <section anchor="session-attempt" title="Session Attempt">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>A SIP request sent by the EA that has not received a final
              response.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The attempted session may be Invite Initiated or Non-invite
              Initiated. When counting the number of session attempts we
              include all INVITEs that are rejected for lack of authentication
              information. The EA needs to record the total number of session
              attempts including those attempts that are routinely rejected by
              a proxy that requires the UA to authenticate itself. The EA is
              provisioned to deliver a specific number of session attempts per
              second. But the EA must also count the actual number of session
              attempts per given tie interval.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Session</t>

              <t>Session Attempt Rate</t>

              <t>Invite-initiated Session</t>

              <t>Non-Invite initiated Session</t>
            </list></t>
        </section>

        <!-- session attempting state -->

        <section title="Established Session">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>A SIP session for which the EA acting as the UE/UA has
              received a 200 OK message.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>An Established Session MAY be Invite Initiated or Non-invite
              Initiated.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Invite-initiated Session</t>

              <t>Session Attempting State</t>

              <t>Session Disconnecting State</t>
            </list></t>
        </section>

        <!-- session established state -->

        <section anchor="IS" title="Invite-initiated Session (IS)">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>A Session that is created by an exchange of messages in the
              Signaling Plane, the first of which is a SIP INVITE request.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>When an IS becomes an Established Session its signaling
              component is identified by the SIP dialog parameter values,
              Call-ID, To-tag, and From-tag (RFC3261 <xref
              target="RFC3261"/>). An IS may have zero, one or multiple
              Associated Media descriptions in the SDP body. The inclusion of
              media is test case dependent. An IS is successfully established
              if the following two conditions are met: <list style="numbers">
                  <t>Sess.sig is established by the end of Establishment
                  Threshold Time (c.f. <xref target="ET"/>), and</t>

                  <t>If a media session is described in the SDP body of the
                  signaling message, then the media session is established by
                  the end of Establishment Threshold Time (c.f. <xref
                  target="ET"/>). An SBC or B2BUA may receive media from a
                  calling or called party before a signaling dialog is
                  established and certainly before a confirmed dialog is
                  established. The EA can be built in such a way that it does
                  not send early media or it needs to include a parameter that
                  indicates when it will send media. This parameter must be
                  included in the list of test setup parameters in Section 5.1
                  of <xref target="I-D.ietf-bmwg-sip-bench-meth"/></t>
                </list></t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Session</t>

              <t>Non-Invite initiated Session</t>

              <t>Associated Media</t>
            </list></t>
        </section>

        <!-- IS -->

        <section anchor="NS" title="Non-INVITE-initiated Session (NS)">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>A session that is created by an exchange of SIP messages in
              the Signaling Plane the first of which is not a SIP INVITE
              message.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>An NS is successfully established if the Session Attempt via
              a non- INVITE request results in the EA receiving a 2xx reply
              before the expiration of the Establishment Threshold timer
              (c.f., <xref target="ET"/>). An example of a NS is a session
              created by the SUBSCRIBE request.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Session</t>

              <t>Invite-initiated Session</t>
            </list></t>
        </section>

        <!-- NS -->

        <section anchor="IS-fail" title="Session Attempt Failure">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>A session attempt that does not result in an Established
              Session.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The session attempt failure may be indicated by the following
              observations at the EA: <list style="numbers">
                  <t>Receipt of a SIP 4xx, 5xx, or 6xx class response to a
                  Session Attempt.</t>

                  <t>The lack of any received SIP response to a Session
                  Attempt within the Establishment Threshold Time (c.f. <xref
                  target="ET"/>).</t>
                </list></t>

              <t/>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Session Attempt</t>
            </list></t>
        </section>

        <!-- IS-Fail -->

        <section anchor="Standing-Sessions" title="Standing Sessions Count">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The number of Sessions currently established on the DUT/SUT
              at any instant.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The number of Standing Sessions is influenced by the Session
              Duration and the Session Attempt Rate. Benchmarks MUST be
              reported with the maximum and average Standing Sessions for the
              DUT/SUT for the duration of the test. In order to determine the
              maximum and average Standing Sessions on the DUT/SUT for the
              duration of the test it is necessary to make periodic
              measurements of the number of Standing Sessions on the DUT/SUT.
              The recommended value for the measurement period is 1 second.
              Since we cannot directly poll the DUT/SUT, we take the number of
              standing sessions on the DUT/SUT to be the number of distinct
              calls as measured by the number of distinct Call-IDs that the EA
              is processing at the time of measurement. The EA must make that
              count available for viewing and recording.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>Number of sessions</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Session Duration</t>

              <t>Session Attempt Rate</t>

              <t>Session Attempt Rate</t>

              <t>Emulated Agent</t>
            </list></t>
        </section>

        <!-- standing sessions -->
      </section>

      <!-- protocol components -->

      <section anchor="test-components" title="Test Components">
        <section anchor="emulated-agent" title="Emulated Agent">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>A device in the test topology that initiates/responds to SIP
              messages as one or more session endpoints and, wherever
              applicable, sources/receives Associated Media for Established
              Sessions.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The EA functions in the Signaling and Media Planes. The
              Tester may act as multiple EAs.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Media Plane</t>

              <t>Signaling Plane</t>

              <t>Established Session</t>

              <t>Associated Media</t>
            </list></t>
        </section>

        <!-- emulated agent -->

        <section anchor="signaling-server" title="Signaling Server">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Device in the test topology that acts to create sessions
              between EAs. This device is either a DUT or a component of a
              SUT.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The DUT MUST be an RFC 3261 capable network equipment such as
              a Registrar, Redirect Server, User Agent Server, Stateless
              Proxy, or Stateful Proxy. A DUT MAY also include B2BUA or
              SBC.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>NA</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Signaling Plane</t>
            </list></t>
        </section>

        <!-- signaling server-->

        <section anchor="SIP-aware-stateful-firewall"
                 title="SIP-Aware Stateful Firewall">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Device in the test topology that provides protection against
              various types of security threats to which the Signaling and
              Media Planes of the EAs and Signaling Server are vulnerable.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>Threats may include Denial-of-Service, theft of service and
              misuse of service. The SIP-Aware Stateful Firewall MAY be an
              internal component or function of the Session Server. The
              SIP-Aware Stateful Firewall MAY be a standalone device. If it is
              a standalone device it MUST be paired with a Signaling Server.
              If it is a standalone device it MUST be benchmarked as part of a
              SUT. SIP-Aware Stateful Firewalls MAY include Network Address
              Translation (NAT) functionality. Ideally, the inclusion of the
              SIP-Aware Stateful Firewall in the SUT does not lower the
              measured values of the performance benchmarks.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>N/A</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>
            </list></t>
        </section>

        <!-- SIP-aware stateful firewall -->

        <section anchor="SIP-transport-protocol"
                 title="SIP Transport Protocol">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The protocol used for transport of the Signaling Plane
              messages.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>Performance benchmarks may vary for the same SIP networking
              device depending upon whether TCP, UDP, TLS, SCTP, or another
              transport layer protocol is used. For this reason it MAY be
              necessary to measure the SIP Performance Benchmarks using these
              various transport protocols. Performance Benchmarks MUST report
              the SIP Transport Protocol used to obtain the benchmark
              results.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>TCP,UDP, SCTP, TLS over TCP, TLS over UDP, or TLS over
              SCTP</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>
            </list></t>
        </section>

        <!-- SIP transport protocol -->
      </section>

      <!-- Test components -->

      <section anchor="test-setup-parameters" title="Test Setup Parameters">
        <section anchor="session-attempt-rate" title="Session Attempt Rate">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Configuration of the EA for the number of sessions per second
              that the EA attempts to establish using the services of the
              DUT/SUT.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The Session Attempt Rate is the number of sessions per second
              that the EA sends toward the DUT/SUT. Some of the sessions
              attempted may not result in a session being established. A
              session in this case may be either an IS or an NS.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>Session attempts per second</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Session</t>

              <t>Session Attempt</t>
            </list></t>
        </section>

        <!-- Session attempt rate -->

        <section anchor="is-media-rate" title="IS Media Attempt Rate">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Configuration on the EA for the rate, measured in sessions
              per second, at which the EA attempts to establish
              INVITE-initiated sessions with Associated Media, using the
              services of the DUT/SUT.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>An IS is not required to include a media description. The IS
              Media Attempt Rate defines the number of media sessions we are
              trying to create, not the number of media sessions that are
              actually created. Some attempts might not result in successful
              sessions established on the DUT.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>session attempts per second (saps)</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>IS</t>
            </list></t>
        </section>

        <!-- media session attempt rate -->

        <section anchor="ET" title="Establishment Threshold Time">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Configuration of the EA for representing the amount of time
              that an EA will wait before declaring a Session Attempt
              Failure.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>This time duration is test dependent.</t>

              <t>It is RECOMMENDED that the Establishment Threshold Time value
              be set to Timer B (for ISs) or Timer F (for NSs) as specified in
              RFC 3261, Table 4 <xref target="RFC3261"/>. Following the
              default value of T1 (500ms) specified in the table and a
              constant multiplier of 64 gives a value of 32 seconds for this
              timer (i.e., 500ms * 64 = 32s).</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>seconds</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>session establishment failure</t>
            </list></t>
        </section>

        <!-- Establishment Threshold -->

        <section anchor="SD" title="Session Duration">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Configuration of the EA that represents the amount of time
              that the SIP dialog is intended to exist between the two EAs
              associated with the test.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The time at which the BYE is sent will control the Session
              Duration</t>

              <t>Normally the Session Duration will be the same as the Media
              Session Hold Time. However, it is possible that the dialog
              established between the two EAs can support different media
              sessions at different points in time. Providing both parameters
              allows the testing agency to explore this possibility.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>seconds</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Media Session Hold Time</t>
            </list></t>
        </section>

        <!-- SD -->

        <section anchor="media-packet-size" title="Media Packet Size">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Configuration on the EA for a fixed size of packets used for
              media streams.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>For a single benchmark test, all sessions use the same size
              packet for media streams. The size of packets can cause
              variation in performance benchmark measurements.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>bytes</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>
            </list></t>
        </section>

        <!-- media packet size -->

        <section anchor="mol" title="Media Offered Load">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Configuration of the EA for the constant rate of Associated
              Media traffic offered by the EA to the DUT/SUT for one or more
              Established Sessions of type IS.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The Media Offered Load to be used for a test MUST be reported
              with three components: <list style="numbers">
                  <t>per Associated Media stream;</t>

                  <t>per IS;</t>

                  <t>aggregate.</t>
                </list> For a single benchmark test, all sessions use the same
              Media Offered Load per Media Stream. There may be multiple
              Associated Media streams per IS. The aggregate is the sum of all
              Associated Media for all IS.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>packets per second (pps)</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Established Session</t>

              <t>Invite Initiated Session</t>

              <t>Associated Media</t>
            </list></t>
        </section>

        <!-- Media Offered Load, per Media Stream -->

        <section anchor="media-session-hold-time"
                 title="Media Session Hold Time">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Parameter configured at the EA, that represents the amount of
              time that the Associated Media for an Established Session of
              type IS will last.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>The Associated Media streams may be bi-directional or uni-
              directional as indicated in the test methodology.</t>

              <t>Normally the Media Session Hold Time will be the same as the
              Session Duration. However, it is possible that the dialog
              established between the two EAs can support different media
              sessions at different points in time. Providing both parameters
              allows the testing agency to explore this possibility.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>seconds</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Associated Media</t>

              <t>Established Session</t>

              <t>Invite-initiated Session (IS)</t>
            </list></t>
        </section>

        <!-- Media-session hold time -->

        <section anchor="Loop" title="Loop Detection Option">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>An option that causes a Proxy to check for loops in the
              routing of a SIP request before forwarding the request.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>This is an optional process that a SIP proxy may employ; the
              process is described under Proxy Behavior in RFC 3261 <xref
              target="RFC3261"/> in Section 16.3 Request Validation and that
              section also contains suggestions as to how the option could be
              implemented. Any procedure to detect loops will use processor
              cycles and hence could impact the performance of a proxy.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>NA</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>
            </list></t>
        </section>

        <!-- Loop -->

        <section anchor="Forking" title="Forking Option">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>An option that enables a Proxy to fork requests to more than
              one destination.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>This is an process that a SIP proxy may employ to find the
              UAS. The option is described under Proxy Behavior in RFC 3261 in
              Section 16.1. A proxy that uses forking must maintain state
              information and this will use processor cycles and memory. Thus
              the use of this option could impact the performance of a proxy
              and different implementations could produce different
              impacts.</t>

              <t>SIP supports serial or parallel forking. When performing a
              test, the type of forking mode MUST be indicated.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>The number of endpoints that will receive the forked
              invitation. A value of 1 indicates that the request is destined
              to only one endpoint, a value of 2 indicates that the request is
              forked to two endpoints, and so on. This is an integer value
              ranging between 1 and N inclusive, where N is the maximum number
              of endpoints to which the invitation is sent.</t>

              <t>Type of forking used, namely parallel or serial.</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>
            </list></t>
        </section>

        <!-- Forking Option -->
      </section>

      <section anchor="benchmarks" title="Benchmarks">
        <section anchor="maximum-registration-rate" title="Registration Rate">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The maximum number of registrations that can be successfully
              completed by the DUT/SUT in a given time period without
              registration failures in that time period.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>This benchmark is obtained with zero failure in which 100% of
              the registrations attempted by the EA are successfully completed
              by the DUT/SUT. The registration rate provisioned on the
              Emulated Agent is raised and lowered as described in the
              algorithm in the companion methodology draft <xref
              target="I-D.ietf-bmwg-sip-bench-meth"/> until a traffic load
              consisting of registrations at the given attempt rate over the
              sustained period of time identified by T in the algorithm
              completes without failure.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>registrations per second (rps)</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>
            </list></t>
        </section>

        <!-- registration rate -->

        <section anchor="session-rate" title="Session Establishment Rate">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The maximum number of sessions that can be successfully
              completed by the DUT/SUT in a given time period without session
              establishment failures in that time period.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>This benchmark is obtained with zero failure in which 100% of
              the sessions attempted by the Emulated Agent are successfully
              completed by the DUT/SUT. The session attempt rate provisioned
              on the EA is raised and lowered as described in the algorithm in
              the accompanying methodology document, until a traffic load at
              the given attempt rate over the sustained period of time
              identified by T in the algorithm completes without any failed
              session attempts. Sessions may be IS or NS or a mix of both and
              will be defined in the particular test.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>sessions per second (sps)</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Invite-initiated Sessions</t>

              <t>Non-INVITE initiated Sessions</t>

              <t>Session Attempt Rate</t>
            </list></t>
        </section>

        <!-- session establishment rate -->

        <section anchor="session-capacity" title="Session Capacity">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The maximum value of Standing Sessions Count achieved by the
              DUT/SUT during a time period T in which the EA is sending
              session establishment messages at the Session Establishment
              Rate.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>Sessions may be IS or NS. If they are IS they can be with or
              without media. When benchmarking Session Capacity for sessions
              with media it is required that these sessions be permanently
              established (i.e., they remain active for the duration of the
              test.) This can be achieved by causing the EA not to send a BYE
              for the duration of the testing. In the signaling plane, this
              requirement means that the dialog lasts as long as the test
              lasts. When media is present, the Media Session Hold Time MUST
              be set to infinity so that sessions remain established for the
              duration of the test. If the DUT/SUT is dialog-stateful, then we
              expect its performance will be impacted by setting Media Session
              Hold Time to infinity, since the DUT/SUT will need to allocate
              resources to process and store the state information. The report
              of the Session Capacity must include the Session Establishment
              Rate at which it was measured.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>sessions</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Established Session</t>

              <t>Session Attempt Rate</t>

              <t>Session Attempt Failure</t>
            </list></t>
        </section>

        <!-- session capacity -->

        <section anchor="soc" title="Session Overload Capacity">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The maximum number of Established Sessions that can exist
              simultaneously on the DUT/SUT until it stops responding to
              Session Attempts.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>Session Overload Capacity is measured after the Session
              Capacity is measured. The Session Overload Capacity is greater
              than or equal to the Session Capacity. When benchmarking Session
              Overload Capacity, continue to offer Session Attempts to the
              DUT/SUT after the first Session Attempt Failure occurs and
              measure Established Sessions until no there is no SIP message
              response for the duration of the Establishment Threshold. Note
              that the Session Establishment Performance is expected to
              decrease after the first Session Attempt Failure occurs.</t>

              <t/>

              <t hangText="Units:"/>

              <t>Sessions</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Overload</t>

              <t>Session Capacity</t>

              <t>Session Attempt Failure</t>
            </list></t>
        </section>

        <!-- soc -->

        <section anchor="session-establishment-performance"
                 title="Session Establishment Performance">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The percent of Session Attempts that become Established
              Sessions over the duration of a benchmarking test.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>Session Establishment Performance is a benchmark to indicate
              session establishment success for the duration of a test. The
              duration for measuring this benchmark is to be specified in the
              Methodology. The Session Duration SHOULD be configured to
              infinity so that sessions remain established for the entire test
              duration.</t>

              <t>Session Establishment Performance is calculated as shown in
              the following equation: <figure>
                  <artwork><![CDATA[
       Session Establishment = Total Established Sessions
       Performance             --------------------------
                               Total Session Attempts
    ]]></artwork>
                </figure></t>

              <t>Session Establishment Performance may be monitored real-time
              during a benchmarking test. However, the reporting benchmark
              MUST be based on the total measurements for the test
              duration.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>Percent (%)</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Established Session</t>

              <t>Session Attempt</t>
            </list></t>
        </section>

        <!-- session establishment performance -->

        <section anchor="session-attempt-delay" title="Session Attempt Delay ">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>The average time measured at the EA for a Session Attempt to
              result in an Established Session.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>Time is measured from when the EA sends the first INVITE for
              the call-ID in the case of an IS. Time is measured from when the
              EA sends the first non-INVITE message in the case of an NS.
              Session Attempt Delay MUST be measured for every established
              session to calculate the average. Session Attempt Delay MUST be
              measured at the Session Establishment Rate.</t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>Seconds</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>

              <t>Session Establishment Rate</t>
            </list></t>
        </section>

        <!-- session attempt delay -->

        <section anchor="im-rate" title="IM Rate">
          <t><list style="hanging">
              <t hangText="Definition:"/>

              <t>Maximum number of IM messages completed by the DUT/SUT.</t>

              <t/>

              <t hangText="Discussion:"/>

              <t>For a UAS, the definition of success is the receipt of an IM
              request and the subsequent sending of a final response.</t>

              <t>For a UAC, the definition of success is the sending of an IM
              request and the receipt of a final response to it. For a proxy,
              the definition of success is as follows: <list style="letters">
                  <t>the number of IM requests it receives from the upstream
                  client MUST be equal to the number of IM requests it sent to
                  the downstream server; and</t>

                  <t>the number of IM responses it receives from the
                  downstream server MUST be equal to the number of IM requests
                  sent to the downstream server; and</t>

                  <t>the number of IM responses it sends to the upstream
                  client MUST be equal to the number of IM requests it
                  received from the upstream client.</t>
                </list></t>

              <t/>

              <t hangText="Measurement Units:"/>

              <t>IM messages per second</t>

              <t/>

              <t hangText="Issues:"/>

              <t>None.</t>

              <t/>

              <t hangText="See Also:"/>
            </list></t>
        </section>

        <!-- IM Rate -->
      </section>

      <!-- gets you up to 3.5 -->
    </section>

    <!-- gets you up to 4 -->

    <section anchor="iana" title="IANA Considerations">
      <t>This document requires no IANA considerations.</t>
    </section>

    <!-- gets you up to 5 -->

    <section anchor="security" title="Security Considerations">
      <t>Documents of this type do not directly affect the security of
      Internet or corporate networks as long as benchmarking is not performed
      on devices or systems connected to production networks. Security threats
      and how to counter these in SIP and the media layer is discussed in
      RFC3261 <xref target="RFC3261"/>, RFC 3550 <xref target="RFC3550"/>,
      RFC3711 <xref target="RFC3711"/> and various other drafts. This document
      attempts to formalize a set of common terminology for benchmarking SIP
      networks. Packets with unintended and/or unauthorized DSCP or IP
      precedence values may present security issues. Determining the security
      consequences of such packets is out of scope for this document.</t>
    </section>

    <!-- gets you up to 6 -->

    <section anchor="acks" title="Acknowledgments">
      <t>The authors would like to thank Keith Drage, Cullen Jennings, Daryl
      Malas, Al Morton, and Henning Schulzrinne for invaluable contributions
      to this document. Dale Worley provided an extensive review that lead to
      improvements in the documents.</t>
    </section>
  </middle>

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

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

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

      <?rfc ?>

      <?rfc include='reference.I-D.ietf-bmwg-sip-bench-meth'?>
    </references>

    <references title="Informational References">
      <?rfc include='reference.RFC.2285'?>

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

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

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

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

      <?rfc include='reference.I-D.ietf-soc-overload-control'?>
    </references>

    <section anchor="Appendix" title="White Box Benchmarking Terminology">
      <t>Session Attempt Arrival Rate</t>

      <t/>

      <list style="hanging">
        <t hangText="Definition:"/>

        <t>The number of Session Attempts received at the DUT/SUT over a
        specified time period.</t>

        <t/>

        <t hangText="Discussion:"/>

        <t>Sessions Attempts are indicated by the arrival of SIP INVITES OR
        SUBSCRIBE NOTIFY messages. Session Attempts Arrival Rate distribution
        can be any model selected by the user of this document. It is
        important when comparing benchmarks of different devices that same
        distribution model was used. Common distributions are expected to be
        Uniform and Poisson.</t>

        <t/>

        <t/>

        <t hangText="Measurement Units:"/>

        <t>Session attempts/sec</t>

        <t/>

        <t hangText="Issues:"/>

        <t>None.</t>

        <t/>

        <t hangText="See Also:"/>

        <t>Session Attempt</t>
      </list>
    </section>

    <!-- Appendix -->
  </back>
</rfc>
