<?xml version="1.0" encoding="US-ASCII"?>

<!--  USED xml2rfc v2 -->


<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc3611 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3611.xml">
<!ENTITY rfc4566 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4566.xml">
<!ENTITY rfc3550 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3550.xml">
<!ENTITY rfc5725 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5725.xml">
<!ENTITY rfc6776 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6776.xml">
<!ENTITY rfc6709 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6709.xml">
<!ENTITY rfc6792 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6792.xml">
<!ENTITY rfc6390 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6390.xml">
<!ENTITY rfc5109 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5109.xml">
<!ENTITY rfc4588 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4588.xml">
<!ENTITY rfc5234 PUBLIC ""
"http://xml.resource.org/public/rfc/bibxml/reference.RFC.5234.xml">
<!ENTITY rfc5481 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5481.xml">
<!ENTITY rfc6958 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6958.xml">
<!ENTITY rfc7002 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7002.xml">
<!ENTITY rfc7003 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7003.xml">
<!ENTITY rfc7004 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7004.xml">
<!ENTITY __reference.flexible-fec SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-payload-flexible-fec-scheme-01.xml">
]>


<rfc category="std" docName="draft-singh-xrblock-independent-burst-gap-discard-00" ipr="trust200902">

  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

  <?rfc toc="yes" ?>
  <?rfc symrefs="yes" ?>
  <?rfc sortrefs="yes"?>
  <?rfc rfcedstyle="yes"?>
  <?rfc compact="yes"?>
  <?rfc subcompact="no"?>

  <front>
    <title abbrev="RTCP XR Burst/Gap Discard">RTP Control Protocol (RTCP)
    Extended Report (XR) Block for Independent Reporting of Burst/Gap Discard Metric</title>

    <author fullname="Varun Singh" initials="V." surname="Singh" role="editor">
      <organization abbrev="callstats.io">Nemu Dialogue Systems Oy</organization>
      <address>
        <postal>
          <street>Runeberginkatu 4c A 4 </street>
          <city>Helsinki</city>
          <code>00100</code>
          <country>Finland</country>
        </postal>
        <email>varun@callstats.io</email>
        <uri>http://www.callstats.io/</uri>
      </address>
    </author>

    <author fullname="Colin Perkins" initials="C. S." surname="Clark">
      <organization abbrev="Telchemy">University of Glasgow</organization>

      <address>
        <postal>
          <street>School of Computing Science</street>
          <city>Glasgow</city>
          <code>G12 8QQ</code>
          <country>United Kingdom</country>
        </postal>
        <email>csp@csperkins.org</email>
      </address>
    </author>

    <date year="2015" />

    <area>Real-time Applications and Infrastructure Area</area>
    <workgroup>Audio/Video Transport Working Group</workgroup>
    <keyword>Real Time Control Protocol</keyword>

    <abstract>
      <t>This document defines an RTP Control Protocol (RTCP) Extended Report
      (XR) block that allows the reporting of burst and gap discard metrics
      independently of the burst and gap loss metrics for use in a range
      of RTP applications.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <section title="Burst-Gap Discard Metrics Block">
        <t>This document defines a new block type that extends the metrics defined
        in <xref target="RFC7003"></xref>, the metrics in this report block can be used
        in a range of RTP applications.
        The new block type reports the proportion of packets discarded by the jitter
        buffer at the receiver in a burst and number of packets discarded depends
        on the dejitter buffer algorithm implemented by the endpoint.</t>

        <t>The new report block defined in this document is different from
        the one defined in <xref target="RFC7003"></xref>. The metrics in
        <xref target="RFC7003"></xref> depends on the metrics in the
        burst&wj;gap loss metric defined in <xref target="RFC6958"></xref>.
        Consequently, an endpoint using <xref target="RFC7003"></xref> MUST
        report it along with <xref target="RFC6958"></xref> for it to be useful.
        The combined usage is useful when an endpoint observes correlated packet
        losses and discard. However, when the burst of packet losses and discards
        do not occur simultaneously, the application may prefer a concise report
        block that just reports the burst&wj;gap of discarded packets. The report
        block in this document provides the complete information and does not require
        additional report blocks. That is, this block reports: the total number of
        packets discarded, the total burst duration, and the total number of bursts,
        all of these metrics are missing in <xref target="RFC7003"></xref>.</t>

        <t>This block provides information on transient network issues. Burst/gap
        metrics are typically used in cumulative reports; however, they may also
        be used in interval reports (see the Interval Metric flag in
        Section 3.2). The variation in the number of packet discard in a burst
        affects the user experience. Based on the metrics reported in the block,
        the sending endpoint may change the packetisation interval, vary the bitrate, etc.
        The report may additionally be used for diagnostics <xref target="RFC6792"/>.
        The metric belongs to the class of transport-related end-system
        metrics defined in <xref target="RFC6792"></xref>.</t>

        <t>The definitions of "burst", "gap", "loss", and "discard" are consistent with
        the definitions in <xref target="RFC3611"></xref>. To accommodate the
        range of jitter buffer algorithms and packet discard logic that may be
        used by implementors, the method used to distinguish between bursts
        and gaps shall use an equivalent method to that defined in Section
        4.7.2 of <xref target="RFC3611"></xref>. Note that reporting the
        specific jitter buffer algorithms and/or packet discard logic is out
        of the scope of this document.</t>
      </section>

      <section title="RTCP and RTCP Extended Reports">
        <t>The use of RTCP for reporting is defined in <xref
        target="RFC3550"></xref>. <xref target="RFC3611"></xref> defined an
        extensible structure for reporting using an RTCP Extended Report (XR).
        This document defines a new Extended Report block for use with <xref
        target="RFC3550"></xref> and <xref target="RFC3611"></xref>.</t>
      </section>

      <section title="Performance Metrics Framework">
        <t>The Performance Metrics Framework <xref target="RFC6390"></xref>
        provides guidance on the definition and specification of performance
        metrics. The RTP Monitoring Framework <xref
        target="RFC6792"></xref> provides guidelines for reporting block format
        using RTCP XR. The metrics block described in this document is in
        accordance with the guidelines in <xref target="RFC6390"></xref> and
        <xref target="RFC6792"></xref>.</t>
      </section>

      <section title="Applicability">
        <t>These metrics are applicable to a range of RTP applications that
        contain de-jitter buffers <xref target="RFC5481"></xref> at the
        receiving end to smooth variation in packet-arrival time and don't
        use stream repair means, e.g., Forward Error Correction (FEC) <xref
        target="I-D.ietf-payload-flexible-fec-scheme"></xref> and/or retransmission <xref
        target="RFC4588"></xref>.</t>
      </section>
    </section>

    <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 <xref
        target="RFC2119">RFC 2119</xref>.</t>

        <t>In addition, the following terms are defined:</t>

        <t><list style="hanging">
            <t hangText="Received, Lost, and Discarded"><vspace
            blankLines="1" />A packet shall be regarded as "lost" if it fails to
            arrive within an implementation-specific time window. A packet
            that arrives within this time window but is too early to be
            played out, too late to be played out, or thrown away before
            playout due to packet duplication or redundancy shall be regarded
            as discarded. A packet shall not be regarded as discarded if it
            arrives within this time window but is dropped during decoding by
            some higher-layer decoder, e.g., due to a decoding error. A packet
            shall be classified as one of received (or OK), discarded, or lost.
            The metric "cumulative number of packets lost" defined in <xref
            target="RFC3550"></xref> reports a count of packets lost from the
            media stream (single synchronization source (SSRC) within a single RTP session).
            Similarly, the metric "number of packets discarded" defined in <xref
            target="RFC7002"></xref> reports a count of packets discarded from
            the media stream (single SSRC within a single RTP session) arriving
            at the receiver. Another metric, defined in <xref
            target="RFC5725"></xref>, is available to report on packets that
            are not recovered by any repair techniques that may be in use.
            Note that the term "discard" defined here builds on the "discard"
            definition in <xref target="RFC3611"></xref> but extends the concept
            to take into account packet duplication and reports different
            types of discard counts <xref target="RFC7002"></xref>. </t>

            <t hangText="Bursts and Gaps"><vspace blankLines="1" />The terms
            "burst" and "gap" are used in a manner consistent with that of RTCP XR
            <xref target="RFC3611"/>. RTCP XR views an RTP stream as being divided into
            bursts, which are periods during which the discard rate is high
            enough to cause noticeable quality degradation (generally over 5
            percent discard rate), and gaps, which are periods during which
            discarded packets are infrequent and hence quality is generally
            acceptable. </t>
          </list></t>

    </section>

    <section title="Burst/Gap Discard Metrics Block">
      <t>Metrics in this block report on burst/gap discard in the stream
      arriving at the RTP system. Measurements of these metrics are made at
      the receiving end of the RTP stream. Instances of this metrics block
      use the synchronization source (SSRC) to refer to the separate auxiliary
      Measurement Information Block <xref target="RFC6776"></xref>, which
      describes measurement periods in use (see <xref target="RFC6776"></xref>, Section 4.2).</t>

      <t>This metrics block relies on the measurement period in the
      Measurement Information Block indicating the span of the report. Senders
      MUST send this block in the same compound RTCP packet as the Measurement
      Information Block. Receivers MUST verify that the measurement period is
      received in the same compound RTCP packet as this metrics block. If not,
      this metrics block MUST be discarded.</t>

      <section title="Report Block Structure">
        <t>The structure of the Burst/Gap Discard Metrics Block is as follows.<figure
            title="Figure 1: Report Block Structure">
            <artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    BT=IBGD    | I |   resv    |      Block Length = 5         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        SSRC of Source                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Threshold   |         Sum of Burst Durations (ms)           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Packets Discarded in Bursts          |    Number of  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Bursts     |           Total Packets Expected in Bursts    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Discard Count                          |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
          </figure></t>
      </section>

      <section title="Definition of Fields in Burst/Gap Discard Metrics Block">
        <t><list style="hanging">
            <t hangText="Block Type (BT): 8 bits"><vspace blankLines="1" />A
            Burst/Gap Discard Metrics Block is identified by the constant
            IBGD.</t>

            <t>[Note to RFC Editor: Please replace IBGD with the IANA provided
            RTCP XR block type for this block.]</t>

            <t hangText="Interval Metric flag (I): 2 bits"><vspace
            blankLines="1" />This field is used to indicate whether the
            burst/gap discard metrics are Sampled, Interval, or Cumulative
            metrics <xref target="RFC6792"></xref>: <list>
                <t>I=10: Interval Duration - the reported value applies to the
                most recent measurement interval duration between successive
                metrics reports.</t>

                <t>I=11: Cumulative Duration - the reported value applies to
                the accumulation period characteristic of cumulative
                measurements.</t>

                <t>I=01: Sampled Value - the reported value is a sampled
                instantaneous value.</t>
              </list>In this document, burst/gap discard metrics can only be
            measured over definite intervals and cannot be sampled. Also, the
            value I=00 is reserved for future use. Senders MUST NOT use the
            values I=00 or I=01. If a block is received with I=00 or I=01, the
            receiver MUST discard the block. </t>

            <t hangText="Reserved (resv): 6 bits"><vspace
            blankLines="1" />These bits are reserved. They MUST be set to zero
            by senders and ignored by receivers (see <xref target="RFC6709"></xref>, Section 4.2).
            </t>

            <t hangText="Block Length: 16 bits"><vspace blankLines="1" /> The
            length of this report block in 32-bit words, minus one. For the
            Burst/Gap Discard Metrics Block, the block length is equal to 5.
            The block MUST be discarded if the block length is set to a
            different value.</t>

            <t hangText="SSRC of Source: 32 bits"><vspace blankLines="1" />As
            defined in Section 4.1 of <xref target="RFC3611"></xref>.</t>

            <t hangText="Threshold: 8 bits"><vspace blankLines="1" />The
            Threshold is equivalent to Gmin in <xref target="RFC3611"></xref>,
            i.e., the number of successive packets that must not be discarded
            prior to and following a discard packet in order for this
            discarded packet to be regarded as part of a gap. Note that the
            Threshold is set in accordance with the Gmin calculation defined in
            Section 4.7.2 of <xref target="RFC3611"></xref>.</t>

            <t hangText=" Sum of Burst Durations (ms): 24 bits"><vspace
            blankLines="1" /> The total duration of bursts of discarded packets
            in the period of the report (Interval or Cumulative).
            <vspace blankLines="1" />
            The measured value is an unsigned value.  If the measured value
            exceeds 0xFFFFFD, the value 0xFFFFFE MUST be reported to indicate
            an over-range measurement.  If the measurement is unavailable, the
            value 0xFFFFFF MUST be reported.
            </t>

            <t hangText="Packets Discarded in Bursts: 24 bits"><vspace
            blankLines="1" />The total number of packets discarded during
            discard bursts, as defined in Section 3.2 of <xref target="RFC7002"/>.</t>

            <t hangText="Number of Bursts: 16 bits"><vspace
            blankLines="1" /> The number of discard bursts in the period of the
            report (Interval or Cumulative).
            <vspace blankLines="1" />
            The measured value is an unsigned value.  If the measured value
            exceeds 0xFFFD, the value 0xFFFE MUST be reported to indicate an
            over-range measurement.  If the measurement is unavailable, the
            value 0xFFFF MUST be reported.
            </t>

            <t hangText="Total Packets Expected in Bursts: 24 bits"><vspace
            blankLines="1" />The total number of packets expected during
            discarded bursts (that is, the sum of received packets and lost
            packets). The metric is defined in <xref target="RFC7003"></xref>.
            </t>

            <t hangText="Discard Count: 32 bits"><vspace
            blankLines="1" />
            Number of packets discarded over the period (Interval or
            Cumulative) covered by this report, as defined in Section
            3.2 of <xref target="RFC7002"></xref>.</t>
          </list></t>
      </section>

      <section title="Derived Metrics Based on the Reported Metrics">
        <t>The metrics described here are intended to be used in conjunction
        with information from the Measurement Information Block <xref
        target="RFC6776"></xref>.</t>

        <t>These metrics provide the following information relevant to
        statistical parameters (depending on cumulative of interval measures),
        for example:
        <list style="symbols">
            <t>The average discarded burst size, which can be calculated
            by dividing the metric "Packets Discarded in Bursts" with the
            "Number of Bursts".</t>

            <t>The average burst duration, which can be calculated
            by dividing the metric "Sum of Burst Durations (ms)" with
            the "Number of bursts".</t>
          </list>
        </t>
      </section>
    </section>

    <section title="Considerations for Voice-over-IP Applications">
      <t>This metrics block is applicable to a broad range of RTP
      applications. Where the metric is used with a Voice-over-IP (VoIP)
      application and the stream repair means is not available, the following
      considerations apply.</t>

      <t>RTCP XR views a call as being divided into bursts, which are periods
      during which the discard rate is high enough to cause noticeable call
      quality degradation (generally over 5 percent discard rate) and gaps,
      which are periods during which discarded packets are infrequent and
      hence call quality is generally acceptable.</t>

      <t>If voice activity detection is used, the burst and gap duration shall
      be determined as if silence packets had been sent, i.e., a period of
      silence in excess of Gmin packets will terminate a burst condition.</t>

      <t>The recommended value for the threshold Gmin in <xref
      target="RFC3611"></xref> results in a burst being a period of time
      during which the call quality is degraded to a similar extent to a
      typical pulse code modulation (PCM) severely errored second.</t>
    </section>

    <section title="SDP Signaling">
      <t><xref target="RFC3611"/> defines the use of SDP (Session Description Protocol) <xref
      target="RFC4566"></xref> for signaling the use of XR blocks. XR blocks
      MAY be used without prior signaling.</t>

      <section title="SDP rtcp-xr Attribute Extension">
        <t>This section augments the SDP <xref target="RFC4566"></xref>
        attribute "rtcp-xr" defined in <xref target="RFC3611"></xref> by
        providing an additional value of "xr-format" to signal the use of the
        report block defined in this document. The ABNF <xref
target="RFC5234"/> syntax is as follows.<figure>
            <artwork>
xr-format =/ xr-ind-bgd-block

xr-ind-bgd-block = "ind-burst-gap-discard"
</artwork>
          </figure></t>
      </section>

      <section title="Offer/Answer Usage">
        <t>When SDP is used in Offer/Answer context, the SDP Offer/Answer
        usage defined in <xref target="RFC3611"></xref> for unilateral
        "rtcp-xr" attribute parameters applies. For detailed usage in
        Offer/Answer for unilateral parameters, refer to Section 5.2 of <xref
        target="RFC3611"></xref>.</t>
      </section>
    </section>

    <section title="IANA Considerations">
      <t>New block types for RTCP XR are subject to IANA registration. For
      general guidelines on IANA considerations for RTCP XR, refer to <xref
      target="RFC3611"></xref>.</t>

      <section title="New RTCP XR Block Type Value">
        <t>This document assigns the block type value IBGD in the IANA "RTP
        Control Protocol Extended Reports (RTCP XR) Block Type Registry" to
        the "Burst/Gap Discard Metrics Block".</t>
        <t>[Note to RFC Editor: Please replace IBGD with the IANA provided
      RTCP XR block type for this block.]</t>

      </section>

      <section title="New RTCP XR SDP Parameter">
        <t>This document also registers a new parameter "ind-burst-gap-discard" in
        the "RTP Control Protocol Extended Reports (RTCP XR) Session
        Description Protocol (SDP) Parameters Registry".</t>
      </section>

      <section title="Contact Information for Registrations">
        <t>

The contact information for the registrations is:

<figure><artwork>
   RAI Area Directors &lt;rai-ads@tools.ietf.org&gt;
</artwork></figure>
</t>
   </section>
    </section>

    <section title="Security Considerations">
      <t>It is believed that this RTCP XR block introduces no
      new security considerations beyond those described in <xref
      target="RFC3611"></xref>. This block does not provide per-packet
      statistics, so the risk to confidentiality documented in Section 7,
      paragraph 3 of <xref target="RFC3611"></xref> does not apply.</t>
    </section>

    <section title="Contributors">
      <t>Qin Wu, Rachel Adams, and Alan Clark wrote the initial draft of this document.</t>
    </section>

    <section title="Acknowledgments">
      <t>The authors acknowledge the reviews and feedback provided by various people.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">

&rfc2119;
&rfc3611;
&rfc4566;
&rfc3550;
&rfc5234;
&rfc5725;
&rfc6776;
    </references>

    <references title="Informative References">

&rfc6709;
&rfc6792;
&rfc6390;
&rfc4588;
&rfc5481;
&rfc6958;
&rfc7002;
&rfc7003;
&__reference.flexible-fec;

    </references>

    <section title="Metrics Represented Using the Template from RFC 6390">

      <t><list style="letters">
          <t>Threshold Metric

          <list style="symbols">
              <t>Defined in Appenix A.a of <xref target="RFC7003"/>.</t>
            </list></t>

           <t>Sum of burst durations (ms)
            <list style="symbols">
              <t>Metric Name: Sum of Burst Durations with Discarded RTP Packets.</t>

              <t>Metric Description: The total duration of bursts of discarded
              RTP packets in the period of the report.</t>

              <t>Method of Measurement or Calculation: See Section 3.1, Sum of
              Burst Durations definition.</t>

              <t>Units of Measurement: See Section 3.1, Sum of Burst Durations
              definition. </t>

              <t>Measurement Point(s) with Potential Measurement Domain: See
              Section 3, 1st paragraph. </t>

              <t>Measurement Timing: See Section 3, 2nd paragraph
              for measurement timing and Section 3.1 for Interval
              Metric flag.  </t>

              <t>Use and Applications: See Section 1.4.</t>

              <t>Reporting Model: See RFC 3611. </t>
            </list></t>

          <t>Packets Discarded in Bursts Metric
            <list style="symbols">
              <t>Defined in Appenix A.b of <xref target="RFC7003"/>.</t>
            </list></t>

          <t>Number of bursts
            <list style="symbols">
              <t>Metric Name: Number of discard bursts in RTP.</t>

              <t>Metric Description: The total number of bursts with discarded
              RTP packets in the period of the report. </t>

              <t>Method of Measurement or Calculation: See Section 3.1, Number
              of discard bursts definition.</t>

              <t>Units of Measurement: See Section 3.1 for the Number of bursts
              definition. </t>

              <t>Measurement Point(s) with Potential Measurement Domain: See
              Section 3, 1st paragraph. </t>

              <t>Measurement Timing: See Section 3, 2nd paragraph
              for measurement timing and Section 3.1 for Interval
              Metric flag.  </t>

              <t>Use and Applications: See Section 1.4.</t>

              <t>Reporting Model: See RFC 3611. </t>
            </list></t>

          <t>Total Packets Expected in Bursts Metric
            <list style="symbols">
              <t>Defined in Appenix A.c of <xref target="RFC7003"/>.</t>
            </list></t>

          <t>Discard Count
            <list style="symbols">
              <t>Defined in Appenix A.a of <xref target="RFC7002"/>.</t>
            </list></t>

        </list></t>
    </section>

  </back>
</rfc>
