RFC 4445

A Proposed Media Delivery Index (MDI)

๐Ÿ“… published April 2006, from ietf

RFC 4445: A Proposed Media Delivery Index (MDI) ๐ŸŽ€

Okay bestie, let's get into it โœจ This one is Informational, so it's sharing knowledge with the Internet community. It is NOT a standard, and it's dated April 2006. It was written by J. Welch (IneoQuest Technologies) and J. Clark (Cisco Systems). It doesn't obsolete or update anything. Clean slate, no drama ๐Ÿ’…

Status of This Memo ๐ŸŒธ

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.

Copyright Notice ๐Ÿฆ‹

Copyright (C) The Internet Society (2006).

IESG Note ๐Ÿ™ˆ

Okay so this one is giving "please read carefully" energy ๐Ÿ˜ญ This RFC is not a candidate for any level of Internet Standard. There are IETF standards that are super relevant to this space, specifically RFCs 3393 and 3611, and there's ongoing IETF work in these areas too. The IETF also wants you to know that the decision to publish this RFC was NOT based on IETF review for stuff like security, congestion control, MIB fitness, or inappropriate interaction with deployed protocols. The RFC Editor picked publishing it at their discretion. So readers should be extra cautious about evaluating its value before implementing or deploying anything. See RFC 3932 for more info ๐Ÿซถ

Abstract ๐Ÿงš

This memo defines a Media Delivery Index (MDI) measurement that can be used as a diagnostic tool or a quality indicator for monitoring a network meant to deliver things like streaming media, MPEG video, Voice over IP, or other information that's sensitive to arrival time and packet loss. It gives you a read on traffic jitter, a measure of how far things drift from nominal flow rates, and a at-a-glance data loss measure for a particular flow. For example, the MDI can be used as a reference when characterizing and comparing networks that carry UDP streaming media ๐Ÿ’œ

The MDI measurement defined here is intended for information only. โœจ


1. Introduction ๐Ÿ’–

Okay so there's been a lot of progress over the last several years on Quality of Service (QoS) over packet-switched networks, which helps streaming media and other time-sensitive, packet-loss-sensitive apps get delivered better ๐ŸŒˆ See [i1], [i5], [i6], [i7]. QoS is basically required for lots of practical networks running video transport, because it guarantees bandwidth is available by putting upper limits on how many flows get admitted to a network, and it also bounds the packet jitter the network introduces. Those bounds are needed so a receiver's buffer can be sized to show video properly in real time without overflowing or underflowing ๐Ÿ˜ญ

Now, large-scale networks based on RSVP and Diffserv are going through trials [i3] and are being specified by major service providers for transporting streaming media like MPEG video [i4]. So there's a real need to diagnose issues easily, monitor how well networks using these QoS methods are actually working in real time, or figure out whether they're needed at all ๐Ÿ”ฅ Plus, there's a huge installed base of legacy networks with no QoS methods. A delivery system's transitional solution might be a mix of networks with and without these methods, which makes it harder to characterize how these networks behave dynamically ๐Ÿ’€

The purpose of this memo is to describe a set of measurements that can be used to derive a Media Delivery Index (MDI). The MDI shows the instantaneous and longer-term behavior of networks carrying streaming media such as MPEG video ๐Ÿฆ‹

This memo focuses on monitoring MPEG Transport Stream (TS) packets [i8] over UDP, but the general approach is expected to apply to other streaming media and protocols too ๐Ÿ“ It works for both constant and variable bit rate streams, though the variable bit rate case may be a bit trickier to calculate. This document uses the constant bit rate case as the example for describing the measurement. As long as the dynamic bit rate of the encoded stream can be determined (the "drain rate," described below in Section 3), the MDI gives you a measurement of network-induced cumulative jitter. Suggestions and direction for calculating MDI for variable bit rate encoded streams may be covered in a future document ๐Ÿ‘‘

Network packet delivery time variation, and various statistics to characterize it, are described in a generic approach in [i10]. That approach can be parameterized for different purposes, with the goal of a flexible, customizable definition that works for a wide range of applications and further experimentation ๐ŸŽ€ Other approaches to characterizing jitter are also captured, such as in [i12]. A wide-ranging report format [i11] has been described to convey information including jitter for use with the RTP Control Protocol (RTCP) [i12]. The MDI is instead meant to specifically address the need for a scalable, economical-to-compute metric that characterizes network impairments imposed on streaming media, independent of control plane, measurement transport protocol, or stream encapsulation protocol. It's a targeted metric for production networks carrying large numbers of streams, for monitoring the quality of flows or for other apps analyzing lots of streams susceptible to IP network device impairments. A good example is the booming deployment of Internet Protocol Television (IPTV) by cable and telecom service providers ๐Ÿ“บ As described below, MDI gives you a readily scalable per-stream measure focused on loss and the cumulative effects of jitter โœจ


2. Media Delivery Index Overview ๐Ÿงšโ€โ™€๏ธ

The MDI gives you a relative indicator of the buffer depths needed at the consumer node because of packet jitter, plus an indication of lost packets. By probing a streaming media service network at various nodes and under varying load conditions, you can quickly spot devices or locales that introduce significant jitter or packet loss into the packet stream ๐Ÿ” By monitoring a network continuously, deviations from nominal jitter or loss behavior can flag an impending or ongoing fault condition, like excessive load ๐Ÿšจ It's believed that the MDI provides the info needed to detect all network-induced impairments for streaming video or voice-over-IP apps. Other parameters may be needed to troubleshoot and correct the impairments ๐Ÿ’…

The MDI is updated at the end of selected time intervals spanning multiple packets that contain the streaming media (such as transport stream packets in the MPEG-2 case). The Maximums and Minimums of the MDI component values are captured over a measurement time. The measurement time can be anything from just long enough to catch an anticipated network anomaly during a troubleshooting session, to indefinitely long for long-term monitoring or logging ๐ŸŒธ The Maximums and Minimums may be obtained by sampling the measurement with adequate frequency ๐Ÿซถ


3. Media Delivery Index Components ๐ŸŒˆ

The MDI has two components: the Delay Factor (DF) and the Media Loss Rate (MLR) ๐Ÿ’œ

3.1. Delay Factor โœจ

okay bestie, the Delay Factor (DF) is the biggest gap you'll see between when media data arrives and when it drains ๐ŸŒŠ. We check it at the end of every media stream packet and keep the worst gap. The drain rate is assumed to be the nominal constant traffic rate for constant bit rate streams, or the piece-wise computed traffic rate for variable rate media stream packet data ๐Ÿ’….

When we say "drain rate," we mean the payload media rate. For example, a typical 3.75 Mb/s MPEG video Transport Stream (TS) has a drain rate of 3.75 Mb/s, which is the speed the payload gets consumed (aka displayed) at a decoding node ๐Ÿ“บ. If the number of bytes received equals the number transmitted at the sample time, the instantaneous flow rate balance is zero. BUT the minimum DF is still one line packet's worth of media data, because that's the least amount of data that has to be buffered ๐Ÿซถ.

The DF is the maximum observed value of the flow rate imbalance over a calculation interval. We take the buffered media data in bytes and convert it into how many milliseconds it would take to drain (or fill) at the nominal traffic rate, and that number is your DF ๐Ÿงฎ. It's recommended to display DF with a resolution of tenths of milliseconds, so you can actually see stream variations in monitoring and diagnostic apps for typical stream rates from 1 to 40 Mb/s โœจ. The DF value must be updated and displayed at the end of a selected time interval. That interval has to be long enough to sample a number of TS packets, so it changes depending on the nominal traffic rate. For typical stream rates of 1 Mb/s and up, an interval of 1 second is long enough, and it should be included for all implementations ๐ŸŽ€.

So what does DF actually tell you? It shows how long a data stream has to be buffered (aka delayed) at its nominal bit rate to avoid packet loss ๐Ÿ˜ญ. You can also read it as the network latency you have to add from buffering, which is needed to handle stream jitter and prevent loss. The max and min DF over the measurement period (across multiple intervals) can be displayed to show the worst case arrival time deviation, or jitter, relative to the nominal traffic rate ๐Ÿ‘‘. It's a dynamic flow rate balance indicator, with the max and min showing the worst excursions from balance. Iconic, honestly ๐Ÿ’œ.

DF also gives a hint about the minimum buffer size needed at the next downstream node ๐Ÿงš. As a stream goes along, the way DF changes shows packet bunching or packet gaps (jitter). Bigger DF values also mean more network latency is needed to deliver the stream, because the receive buffer has to be pre-filled before draining starts, which guarantees no underflow ๐ŸŒธ. The DF has two parts: a fixed part based on packet size, and a variable part based on the buffer utilization of the various switch elements that make up the switched network infrastructure [i2] ๐Ÿ”ฅ.

Now let's get into the math, bestie ๐Ÿค“. Picture a virtual buffer VB used to hold the received packets of a stream. When a packet P(i) arrives during a calculation interval, we compute two VB values, VB(i,pre) and VB(i,post):

VB(i,pre) = sum (Sj) - MR * Ti; where j=1..i-1
VB(i,post) = VB(i,pre) + Si

Here Sj is the media payload size of the jth packet, Ti is the relative time at which packet i arrives in the interval, and MR is the nominal media rate ๐ŸŽ€.

VB(i,pre) is the Virtual Buffer size just before P(i) arrives, and VB(i,post) is the Virtual Buffer size just after P(i) arrives ๐Ÿ’–.

The initial condition VB(0) = 0 is used at the start of each measurement interval ๐ŸŒˆ. A measurement interval runs from just after the arrival of the last packet in one nominal period (typically 1 second, as we said above) to just after the arrival of the last packet of the next nominal period โญ.

During a measurement interval, if k packets are received, there are 2*k+1 VB values used to derive VB(max) and VB(min) ๐Ÿง . Once you have VB(max) and VB(min) from those 2k+1 VB samples, the DF for the measurement interval is computed and displayed as:

DF = [VB(max) - VB(min)]/ MR

Like we said, a measurement interval of 1 second is typically used ๐Ÿ“. If no packets arrive during an interval, the last DF calculated during an interval where packets did arrive gets displayed again ๐Ÿ™ˆ. The arrival time of the last previous packet is always kept around to use when computing VB when the next packet shows up, even if that last packet's arrival spanned measurement intervals ๐Ÿซถ. For the first received measurement interval of a measurement period, no DF is calculated. The packet arrival times are still recorded, though, so they can be used for the VB calculations in the following interval ๐Ÿฆ‹.


3.2. Media Loss Rate ๐Ÿ’”

okay so the Media Loss Rate (MLR) is the count of lost or out-of-order flow packets over a selected time interval ๐Ÿ“‰. "Flow packets" just means packets carrying streaming application information ๐Ÿ’…. There can be zero or more streaming packets inside a single IP packet. For example, it's super common to carry seven 188 Byte MPEG Transport Stream packets in one IP packet ๐Ÿ“ฆ. So if you lose a single IP packet, that counts as 7 lost packets (unless those 7 included null packets, which don't count) ๐Ÿ˜ฌ.

Including out-of-order packets is a big deal, bestie ๐Ÿšจ. Lots of stream consumer-type devices don't try to reorder packets that show up out of order, so those packets are effectively lost from the viewer's point of view ๐Ÿ™ˆ.


3.3. Media Delivery Index ๐ŸŽ€โœจ

Here's where it all comes together ๐Ÿ’–. To present the Delay Factor and Media Loss Rate together, you get the MDI, written like this:

                                  DF:MLR
    Where:
                          DF is the Delay Factor
                        MLR is the Media Loss Rate

At a receiving node, if you know its nominal drain bit rate, the max DF tells you the buffer size needed to handle packet jitter ๐Ÿงƒ. Or, if you think in Leaky Bucket terms [i9], DF is the bucket size b, expressed as the time it takes to transmit the bucket's traffic b at the given nominal traffic rate r ๐Ÿชฃ๐Ÿ‘‘.


3.4. MDI Application Examples ๐Ÿฆ‹

Let's talk about where you'd actually use this, bestie ๐ŸŒ. Say you've got a well-characterized receive node that's separated from the data source by unknown or less well-characterized nodes, like intermediate switch nodes. The MDI measured at those intermediate data links gives you a relative indication of how the upstream traffic flows are behaving ๐Ÿ”. Comparing DF between one node and another in a data stream, for a given constant calculation interval, can point to local traffic congestion ๐Ÿšฆ. It can also reveal misconfigured QoS flow specification(s) that cause more filling of local measurement point device buffers, resulting flow rate deviations, and possible data loss ๐Ÿ˜ฑ.

Now for the jitter tea โ˜•. If DF is high, and/or the DF Max-Min captured over a significant measurement period of multiple intervals is high, jitter has been detected, BUT the longer-term average flow rate may still be nominal ๐Ÿง. That can happen when a transient flow upset from an unrelated traffic stream (one that's not your flow of interest) causes packet bunching ๐ŸŒ€. A high DF can cause downstream buffer overflow or underflow, or unacceptable latency, even when no data is lost ๐Ÿ’€.

Due to transient network failures or DF excursions, packets can be lost inside the network ๐Ÿฅฒ. The MLR part of the MDI shows that happening ๐Ÿ“Š.

Through automated or manual flow detection and identification, and then MDI calculations for real-time statistics on a flow, DF can show the dynamic deterioration or increasing burstiness of a flow โšก. That helps you anticipate a developing network operation problem, like transient oversubscription ๐Ÿ”ฎ. These statistics can be collected for flows inside network switches using the available switch CPU resources, because the computational requirements are minimal for small numbers of flows ๐Ÿงฎ. Stats for all flows on, say, a gigabit Ethernet network will likely need dedicated hardware facilities, though those can be modest, since buffer requirements and per-flow calculations are minimal ๐Ÿ› ๏ธ. Once switches are equipped with MDI measurements, flow impairment issues can be quickly identified, localized, and corrected ๐ŸŽฏ. Until switches have the right hardware resources, dedicated hardware tools can supply extra switch statistics by getting access to switch flows through mirror ports, link taps, or something similar, as a transition strategy ๐ŸŒ‰.

The MDI can also characterize a flow decoder's acceptable performance ๐Ÿ“บ. For example, an MPEG decoder could be characterized as tolerating a flow with a given maximum DF and MLR for acceptable display performance (meaning acceptable on-screen artifacts) ๐Ÿ–ผ๏ธ. Network conditions like Interior Gateway Protocol (IGP) reconvergence time could then be included in the flow tolerance DF too, which leads to a higher-quality user experience ๐Ÿ’…โœจ.


4. Summary ๐ŸŒธ

The MDI combines the Delay Factor, which shows the potential for impending data loss, with the Media Loss Rate, which is the indicator of lost data ๐Ÿ’œ. By monitoring DF and MLR, plus their min and max excursions over a measurement period, at multiple strategic locations in a network, you can detect and isolate traffic congestion or device impairments for a network carrying streaming media content ๐Ÿ”Ž๐Ÿซถ.


5. Security Considerations ๐Ÿ”

โš ๏ธ bestie, read this part carefully!

The measurements in this document do not directly affect the security of a network or a user ๐Ÿ›ก๏ธ. Actions taken in response to these measurements that may affect the available bandwidth of the network or the availability of a service are out of scope for this document ๐Ÿšซ.

Doing the measurements described here only requires looking at payload header information (like MPEG transport stream headers or RTP headers) to determine the nominal stream bit rate and sequence number information ๐Ÿ‘€. Content can be encrypted without affecting these measurements ๐Ÿ”’. So content privacy is not expected to be a concern ๐Ÿ’–.


6. Informative References ๐Ÿ“š

[i1]  Braden, R., Zhang, L., Berson, S., Herzog, S., and S. Jamin,
      "Resource ReSerVation Protocol (RSVP) -- Version 1 Functional
      Specification", RFC 2205, September 1997.

[i2]  Partridge, C., "A Proposed Flow Specification", RFC 1363,
      September 1992.

[i3]  R. Fellman, `Hurdles to Overcome for Broadcast Quality Video
      Delivery over IP` VidTranS 2002.

[i4]  CableLabs `PacketCable Dynamic Quality-of-Service
      Specification`, PKT-SP-DQOS-I06-030415, 2003.

[i5]  Shenker, S., Partridge, C., and R. Guerin, "Specification of
      Guaranteed Quality of Service", RFC 2212, September 1997.

[i6]  Wroclawski, J., "Specification of the Controlled-Load Network
      Element Service", RFC 2211, September 1997.

[i7]  Braden, R., Clark, D., and S. Shenker, "Integrated Services in
      the Internet Architecture: an Overview", RFC 1633, June 1994.

[i8]  ISO/IEC 13818-1 (MPEG-2 Systems)

[i9]  V. Raisanen, "Implementing Service Quality in IP Networks",
      John Wiley & Sons Ltd., 2003.

[i10] Demichelis, C. and P. Chimento, "IP Packet Delay Variation
      Metric for IP Performance Metrics (IPPM)", RFC 3393, November
      2002.

[i11] Friedman, T., Caceres, R., and A. Clark, "RTP Control Protocol
      Extended Reports (RTCP XR)", RFC 3611, November 2003.

[i12] Schulzrinne, H.,  Casner, S., Frederick, R., and V. Jacobson,
      "RTP: A Transport Protocol for Real-Time Applications", STD 64,
      RFC 3550, July 2003.

7. Acknowledgements โœจ

Okay bestie, huge shoutout time ๐Ÿ“ฃ๐Ÿซถ The authors wanted to thank Marc Todd and Jesse Beeson of IneoQuest Technologies, Inc., Bill Trubey and John Carlucci of Time Warner Cable, Nishith Sinha of Cox Communications, Ken Chiquoine of SeaChange International, Phil Proulx of Bell Canada, Dr Paul Stallard of TANDBERG Television, Gary Hughes of Broadbus Technologies, Brad Medford of SBC Laboratories, John Roy of Adelphia Communications, Cliff Mercer, PhD of Kasenna, Mathew Ho of Rogers Cable, and Irl Duling of Optinel Systems ๐Ÿ’œ. They reviewed and evaluated early versions of this document and the MDI implementations, and honestly that's so iconic of them ๐Ÿ™Œ

Authors' Addresses ๐ŸŽ€

Here's where you can find the authors, no cap ๐Ÿ’…

James Welch
IneoQuest Technologies, Inc
170 Forbes Blvd
Mansfield, Massachusetts 02048

Phone: 508 618 0312
EMail: Jim.Welch@ineoquest.com


James Clark
Cisco Systems, Inc
500 Northridge Road
Suite 800
Atlanta, Georgia 30350

Phone: 678 352 2726
EMail: jiclark@cisco.com

Copyright (C) The Internet Society (2006) ๐ŸŒธ

This document is subject to the rights, licenses and restrictions contained in BCP 78 and at www.rfc-editor.org/copyright.html, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐Ÿ’€

Intellectual Property ๐ŸŒˆ

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or the extent to which any license under such rights might or might not be available. It also doesn't represent that it has made any independent effort to identify any such rights. Info on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79 ๐Ÿ“š

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be found in the IETF on-line IPR repository at http://www.ietf.org/ipr โœจ

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org ๐Ÿ’Œ

Acknowledgement ๐Ÿซถ

Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA) ๐Ÿ’œ

๐Ÿ“ฆ where this page comes from