<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3261 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml">
<!ENTITY RFC3550 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3550.xml">
<!ENTITY RFC5101 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5101.xml">
<!ENTITY RFC5102 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5102.xml">
<!ENTITY I-D.trammell-ipfix-sip-msg SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-trammell-ipfix-sip-msg-02">
<!ENTITY I-D.akhter-ipfix-perfmon SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-akhter-ipfix-perfmon-00">
<!ENTITY I-D.wu-xrblock-rtcp-xr-quality-monitoring SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-wu-xrblock-rtcp-xr-quality-monitoring-06">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<rfc category="info" docName="draft-scholz-ipfix-rtp-audio-quality-00" ipr="pre5378Trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="RTP Streams in IPFIX">RTP Stream Quality Information Export using IPFIX</title>

    <author fullname="Hendrik Scholz" initials="H.S."
            surname="Scholz">
      <organization>VOIPFUTURE GmbH</organization>

      <address>
        <postal>
          <street>Wendenstrasse 4</street>
          <city>Hamburg</city>
		  <!-- <region>Hamburg</region> -->
          <code>20097</code>
          <country>Germany</country>
        </postal>
        <phone>+49 40 688 900 100</phone>
        <email>hscholz@voipfuture.com</email>
		<uri>http://www.voipfuture.com/</uri>
      </address>
    </author>

    <date year="2012" />

    <area>Ops</area>

    <workgroup>Network Working Group</workgroup>
    <keyword>IPFIX, VoIP, RTP, QoS, QoE, fixed time slice</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
	<t>This draft defines a set of Information Elements and
	matching Templates to convey RTP media stream quality information in
	IPFIX packets. The Information Elements describe the
	RTP quality using the R-factor and Mean Opinion score (MOS)
	for the entire duration of a monitored stream or for a smaller
	time slice thereof.</t>
    </abstract>
  </front>

  <middle>
	<section title="Introduction">
	<t>IPFIX <xref target="RFC5101"/> and <xref target="RFC5102"/> define a framework
	allowing to export arbitrary data from so called IPFIX exporters. One type
	of IPFIX exporter may be co-located with Session Initiation Protocol (SIP) <xref target="RFC3261"/> based VoIP entities or passively observe SIP
	based VoIP calls. The signaling messages can be exported
	using <xref target="I-D.trammell-ipfix-sip-msg"/> and Real Time Protocol (RTP)
	<xref target="RFC3550"/> media streams are covered in <xref target="I-D.akhter-ipfix-perfmon"/>.
	Media quality is out of the scope of both these documents.
	This document defines a set of
	additional IPFIX Information Elements (IEs) to describe RTP audio stream quality.
	</t>
		<section title="Use Cases">
		<!-- FIXME: refer to ipfix-perfmon ? -->
		<t>RTP stream flow information contained in IPFIX flow records can
			be used for various tasks such as Quality of Service (QoS) 
			monitoring, Service Level Agreement (SLA) validation and
			general troubleshooting of VoIP networks.
		</t>
			<section title="Quality of Service (QoS) Monitoring">
			<t>Aggregated to higher-level metrics the in-depth information
				provided by the RTP (and optionally SIP) flow records allow
				service providers to gauge the overall quality of their network
				in terms of the quality of experience (QoE).
				On this level an individual call is less important
				but the overall quality (e.g. amount of minutes meeting certain
				quality standards) can be used to get a quick overview
				on the network and service performance.
			</t>
			</section>
			<section title="Service Level Agreement (SLA)">
			<t>SLAs are typically used as part of contracts between two
				network operators. The requirements on the reliability of
				the data may be higher compared to QoS Monitoring as the failure to
				meet contractually agreed quality standards often has a direct commercial impact.
			</t>
			</section>
			<section title="Troubleshooting">
			<t>An active network component (SIP proxy, B2BUA, media server) may not have the
			capabilities to store session related information for a long time to facilitate
			troubleshooting capabilities (e.g. due to missing hard-disk). Such a system or a
			group of systems may run the metering process and export the data to a collector
			for processing or troubleshooting purposes.
			</t>
			</section>
		</section>
	</section>
	<section title="Conventions">
      <t><!-- The text in this section has been copied from the official boilerplate, 
                  and should not be modified.-->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 RFC 2119 <xref target="RFC2119"></xref>.
	</t>
	</section>
	<section title="MOS measurement">
	<t>A multitude of Mean Opinion Score (MOS) assessment algorithms have
		been defined of which only one or few may be available to an IPFIX
		Metering Process. The quality (i.e. accuracy) of these algorithms
		varies and has to be noted when transporting MOS values.
	</t>
	<t>An IPFIX Metering Process may use these Information Elements to
		convey information on the duration of the stream in which the
		quality fell into the respective category as well as the measurement
		algorithm used to obtain the information.
	</t>
		<section title="rtpMOSCAlg">
		<t>The values carried in this IE are taken from the "RTCP XR QoE metric block - Calculation
		Algorithm" sub-registry of the "RTP Control Protocol Extended Reports (RTCP XR) Block Type Registry"
		as defined in <xref target="I-D.wu-xrblock-rtcp-xr-quality-monitoring"/>.
		</t>
		<t>Even when an algorithm other than G.107 is used the rtpMOSClassN Information Elements
		use the R-Factor based classes as defined in the G.107 documentation.
		</t>
		<t>
		<list hangIndent="1" style="hanging">
			<t hangText="Description:">The calculation algorithm (CAlg) used by the Metering Process to calculate the MOS value.
				<list hangIndent="1" style="hanging">
					<t hangText="0:">undefined: The algorithm is not known/specified.</t>
					<t hangText="1:">ITU-T P.564</t>
					<t hangText="2:">G.107</t>
					<t hangText="3:">G.107 / ETSI TS 101 329-5 Annex E</t>
					<t hangText="4:">ITU-T P.NAMS</t>
					<t hangText="5:">ITU-T P.NBAMS</t>
					<t hangText="6:">RTCP - Real Time Control Protocol (not fefined in registry!)</t>
				</list>
			</t>
			<t hangText="Data Type:">unsigned8</t>
			<t hangText="Data Type Semantics:">identifier</t>
			<t hangText="PEN (provisional):">tbd</t>
			<t hangText="ElementId (provisional):">tbd</t>
		</list>
		</t>
		<t>The MOS values calculated are separated into MOS classes based on the ITU-T G.107 classes.
		</t>
		</section>
		<section title="rtpMOSClass1">
		<t>
			<list hangIndent="1" style="hanging">
				<t hangText="Description:">Number of seconds the monitored stream had a MOS quality lower than 3.10</t>
				<t hangText="Data Type:">float32</t>
				<t hangText="Data Type Semantics:">deltaCounter</t>
				<t hangText="PEN (provisional):">tbd</t>
				<t hangText="ElementId (provisional):">tbd</t>
			</list>
		</t>
		</section>
		<section title="rtpMOSClass2">
		<t>
			<list hangIndent="1" style="hanging">
				<t hangText="Description:">Number of seconds the monitored stream had a MOS quality larger than or equal 3.10 and lower than 3.60</t>
				<t hangText="Data Type:">float32</t>
				<t hangText="Data Type Semantics:">deltaCounter</t>
				<t hangText="PEN (provisional):">tbd</t>
				<t hangText="ElementId (provisional):">tbd</t>
			</list>
		</t>
		</section>
		<section title="rtpMOSClass3">
		<t>
			<list hangIndent="1" style="hanging">
				<t hangText="Description:">Number of seconds the monitored stream had a MOS quality larger than or equal 3.60 and lower than 4.03</t>
				<t hangText="Data Type:">float32</t>
				<t hangText="Data Type Semantics:">deltaCounter</t>
				<t hangText="PEN (provisional):">tbd</t>
				<t hangText="ElementId (provisional):">tbd</t>
			</list>
		</t>
		</section>
		<section title="rtpMOSClass4">
		<t>
			<list hangIndent="1" style="hanging">
				<t hangText="Description:">Number of seconds the monitored stream had a MOS quality larger than or equal 4.03 and lower than 4.34</t>
				<t hangText="Data Type:">float32</t>
				<t hangText="Data Type Semantics:">deltaCounter</t>
				<t hangText="PEN (provisional):">tbd</t>
				<t hangText="ElementId (provisional):">tbd</t>
			</list>
		</t>
		</section>
		<section title="rtpMOSClass5">
		<t>
			<list hangIndent="1" style="hanging">
				<t hangText="Description:">Number of seconds the monitored stream had a MOS quality larger than or equal 4.34</t>
				<t hangText="Data Type:">float32</t>
				<t hangText="Data Type Semantics:">deltaCounter</t>
				<t hangText="PEN (provisional):">tbd</t>
				<t hangText="ElementId (provisional):">tbd</t>
			</list>
		</t>
		</section>
		<section title="rtpMinMOS">
		<t>
		<list hangIndent="1" style="hanging">
			<t hangText="Description:">Minimum MOS value measured in the monitoring interval.</t>
			<t hangText="Data Type:">float32</t>
			<t hangText="Data Type Semantics:">quantity</t>
			<t hangText="PEN (provisional):">tbd</t>
			<t hangText="ElementId (provisional):">tbd</t>
		</list>
		</t>
		</section>
		<section title="rtpAvgMOS">
		<t>
		<list hangIndent="1" style="hanging">
			<t hangText="Description:">Average MOS value measured in the monitoring interval.</t>
			<t hangText="Data Type:">float32</t>
			<t hangText="Data Type Semantics:">quantity</t>
			<t hangText="PEN (provisional):">tbd</t>
			<t hangText="ElementId (provisional):">tbd</t>
		</list>
		</t>
		</section>
		<section title="rtpMaxMOS">
		<t>
		<list hangIndent="1" style="hanging">
			<t hangText="Description:">Maximum MOS value measured in the monitoring interval.</t>
			<t hangText="Data Type:">float32</t>
			<t hangText="Data Type Semantics:">quantity</t>
			<t hangText="PEN (provisional):">tbd</t>
			<t hangText="ElementId (provisional):">tbd</t>
		</list>
		</t>
		</section>
		<section title="rtpMinRFactor">
		<t>
		<list hangIndent="1" style="hanging">
			<t hangText="Description:">Minimum R-Factor measured in the monitoring interval.</t>
			<t hangText="Data Type:">float32</t>
			<t hangText="Data Type Semantics:">quantity</t>
			<t hangText="PEN (provisional):">tbd</t>
			<t hangText="ElementId (provisional):">tbd</t>
		</list>
		</t>
		</section>
		<section title="rtpAvgRFactor">
		<t>
		<list hangIndent="1" style="hanging">
			<t hangText="Description:">Average R-Factor measured in the monitoring interval.</t>
			<t hangText="Data Type:">float32</t>
			<t hangText="Data Type Semantics:">quantity</t>
			<t hangText="PEN (provisional):">tbd</t>
			<t hangText="ElementId (provisional):">tbd</t>
		</list>
		</t>
		</section>
		<section title="rtpMaxRFactor">
		<t>
		<list hangIndent="1" style="hanging">
			<t hangText="Description:">Maximum R-Factor measured in the monitoring interval.</t>
			<t hangText="Data Type:">float32</t>
			<t hangText="Data Type Semantics:">quantity</t>
			<t hangText="PEN (provisional):">tbd</t>
			<t hangText="ElementId (provisional):">tbd</t>
		</list>
		</t>
		</section>
	</section>
	<section title="Recommended Templates">
	<t>The defined RTP stream IPFIX templates must support both IPv4
		and IPv6 transport. They need to carry either flow information
		regarding the entire duration of an RTP stream or specific
		to a shorter observation interval.
	</t>
	<t>The template incorporates IEs from <xref target="I-D.akhter-ipfix-perfmon"/> to describe the RTP stream.
	</t>
	<t>In order to correlate the RTP quality information with signaling
		information (e.g. subscriber IDs) a correlation ID may be added to
		the template. Note that this ID has yet to be defined and is outside
		the scope of this document.
	</t>
		<section title="Entire stream">
		<t>tbd</t>
		</section>
		<section title="Time slice">
		<t>tbd, based on previous template. Split a single RTP stream in three
			flow records as example including (empty) 'RTP stream ended' flow record.</t>
		</section>
	</section>
	<section title="Examples">
		<t>tbd</t>
	</section>

    <section anchor="Acknowledgements" title="Acknowledgements">
		<t>tbd</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
		<t>tbd</t>
	</section>

    <section anchor="Security" title="Security Considerations">
		<t>tbd</t>
    </section>

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <references title="Normative References">
		&I-D.wu-xrblock-rtcp-xr-quality-monitoring;
		&RFC2119;
		&RFC5101;
		&RFC5102;
    </references>

    <references title="Informative References">
		&I-D.trammell-ipfix-sip-msg;
		&I-D.akhter-ipfix-perfmon;
		&RFC3261;
		&RFC3550;
    </references>

  </back>
</rfc>
