| < draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-06.txt | draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-07.txt > | |||
|---|---|---|---|---|
| XR Block Working Group V. Singh | XR Block Working Group V. Singh | |||
| Internet-Draft callstats.io | Internet-Draft callstats.io | |||
| Intended status: Standards Track R. Huang | Intended status: Informational R. Huang | |||
| Expires: January 21, 2018 R. Even | Expires: June 14, 2018 R. Even | |||
| Huawei | Huawei | |||
| D. Romascanu | D. Romascanu | |||
| Individual | ||||
| L. Deng | L. Deng | |||
| China Mobile | China Mobile | |||
| July 20, 2017 | December 11, 2017 | |||
| Considerations for Selecting RTCP Extended Report (XR) Metrics for the | Considerations for Selecting RTCP Extended Report (XR) Metrics for the | |||
| WebRTC Statistics API | WebRTC Statistics API | |||
| draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-06 | draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-07 | |||
| Abstract | Abstract | |||
| This document describes monitoring features related to media streams | This document describes monitoring features related to media streams | |||
| in Web real-time communication (WebRTC). It provides a list of RTCP | in Web real-time communication (WebRTC). It provides a list of RTCP | |||
| Sender Report, Receiver Report and Extended Report metrics, which may | Sender Report, Receiver Report and Extended Report metrics, which may | |||
| need to be supported by RTP implementations in some diverse | need to be supported by RTP implementations in some diverse | |||
| environments. It lists a set of identifiers for the WebRTC's | environments. It lists a set of identifiers for the WebRTC's | |||
| statistics API. These identifiers are a set of RTCP SR, RR, and XR | statistics API. These identifiers are a set of RTCP SR, RR, and XR | |||
| metrics related to the transport of multimedia flows. | metrics related to the transport of multimedia flows. | |||
| skipping to change at page 2, line 49 ¶ | skipping to change at page 3, line 4 ¶ | |||
| 6.6. Cumulative Number of Packets Repaired . . . . . . . . . . 11 | 6.6. Cumulative Number of Packets Repaired . . . . . . . . . . 11 | |||
| 6.7. Burst Packet Loss and Burst Discards . . . . . . . . . . 11 | 6.7. Burst Packet Loss and Burst Discards . . . . . . . . . . 11 | |||
| 6.8. Burst/Gap Rates . . . . . . . . . . . . . . . . . . . . . 12 | 6.8. Burst/Gap Rates . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 6.9. Frame Impairment Metrics . . . . . . . . . . . . . . . . 12 | 6.9. Frame Impairment Metrics . . . . . . . . . . . . . . . . 12 | |||
| 7. Adding new metrics to WebRTC Statistics API . . . . . . . . . 13 | 7. Adding new metrics to WebRTC Statistics API . . . . . . . . . 13 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 15 | 10.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
| Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 16 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 16 | |||
| A.1. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-05 | A.1. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-05 | |||
| and -06 . . . . . . . . . . . . . . . . . . . . . . . . . 16 | and -06 . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| A.2. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-04 . 16 | A.2. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-04 . 16 | |||
| A.3. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-02, | A.3. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-02, | |||
| -03 . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 | -03 . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| A.4. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-01 . 16 | A.4. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-01 . 16 | |||
| A.5. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-00 . 16 | A.5. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-00 . 16 | |||
| A.6. changes in draft-huang-xrblock-rtcweb-rtcp-xr-metrics-04 16 | A.6. changes in draft-huang-xrblock-rtcweb-rtcp-xr-metrics-04 16 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 1. Introduction | 1. Introduction | |||
| Web real-time communication (WebRTC) deployments are emerging and | Web real-time communication (WebRTC) deployments are emerging and | |||
| applications need to be able to estimate the service quality. If | applications need to be able to estimate the service quality. If | |||
| sufficient information (metrics or statistics) are provided to the | sufficient information (metrics or statistics) is provided to the | |||
| applications, it can attempt to improve the media quality. [RFC7478] | application, it can attempt to improve the media quality. [RFC7478] | |||
| specifies a requirement for statistics: | specifies a requirement for statistics: | |||
| F38 The browser must be able to collect statistics, related to the | F38 The browser must be able to collect statistics, related to the | |||
| transport of audio and video between peers, needed to estimate | transport of audio and video between peers, needed to estimate | |||
| quality of experience. | quality of experience. | |||
| The WebRTC Stats API [W3C.WD-webrtc-stats-20161214] currently lists | The WebRTC Stats API [W3C.WD-webrtc-stats-20161214] currently lists | |||
| metrics reported in the RTCP Sender and Receiver Report (SR/RR) | metrics reported in the RTCP Sender and Receiver Report (SR/RR) | |||
| [RFC3550] to fulfill this requirement. However, the basic metrics | [RFC3550] to fulfill this requirement. However, the basic metrics | |||
| from RTCP SR/RR are not sufficient for precise quality monitoring, or | from RTCP SR/RR are not sufficient for precise quality monitoring, or | |||
| diagnosing potential issues. | diagnosing potential issues. | |||
| In this document, we provide rationale for choosing additional RTP | In this document, we provide rationale for choosing additional RTP | |||
| metrics for the WebRTC getStats() API [W3C.WD-webrtc-20161124]. The | metrics for the WebRTC getStats() API [W3C.WD-webrtc-20161124]. All | |||
| document also creates a registry containing identifiers from the | identifiers proposed in this document are recommended to be | |||
| metrics reported in the RTCP Sender, Receiver, and Extended Reports. | implemented by an WebRTC endpoint. An endpoint may choose not to | |||
| All identifiers proposed in this document are RECOMMENDED to be | expose an identifier if it does not implement the corresponding RTCP | |||
| implemented by an endpoint. An endpoint MAY choose not to expose an | Report. | |||
| identifier if it does not implement the corresponding RTCP Report. | ||||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| ReportGroup: It is a set of metrics identified by a common | ReportGroup: It is a set of metrics identified by a common | |||
| Synchronization source (SSRC). | Synchronization source (SSRC). | |||
| 3. RTP Statistics in WebRTC Implementations | 3. RTP Statistics in WebRTC Implementations | |||
| The RTCP Sender Reports (SRs) and Receiver Reports (RRs) [RFC3550] | The RTCP Sender Reports (SRs) and Receiver Reports (RRs) [RFC3550] | |||
| exposes the basic metrics for the local and remote media streams. | exposes the basic metrics for the local and remote media streams. | |||
| However, these metrics provides only partial or limited information, | However, these metrics provides only partial or limited information, | |||
| which may not be sufficient for diagnosing problems or quality | which may not be sufficient for diagnosing problems or quality | |||
| monitoring. For example, it may be useful to distinguish between | monitoring. For example, it may be useful to distinguish between | |||
| packets lost and packets discarded due to late arrival, even though | packets lost and packets discarded due to late arrival, even though | |||
| they have the same impact on the multimedia quality, it helps in | they have the same impact on the multimedia quality, it helps in | |||
| identifying and diagnosing issues. | identifying and diagnosing issues. RTP Control Protocol Extended | |||
| Reports (XRs) [RFC3611] and other extensions discussed in the XRBLOCK | ||||
| RTP Control Protocol Extended Reports (XRs) [RFC3611] and other | working group provide more detailed statistics, which complement the | |||
| extensions discussed in the XRBLOCK working group provide more | basic metrics reported in the RTCP SR and RRs. | |||
| detailed statistics, which complement the basic metrics reported in | ||||
| the RTCP SR and RRs. Section 5 discusses the use of XR metrics that | ||||
| may be useful for monitoring the performance of WebRTC applications. | ||||
| Section 6 proposes a set of candidate metrics. | ||||
| The WebRTC application extracts the statistic from the browser by | The WebRTC application extracts the statistic from the browser by | |||
| querying the getStats() API [W3C.WD-webrtc-20161124], but the browser | querying the getStats() API [W3C.WD-webrtc-20161124], but the browser | |||
| currently only reports the local variables i.e., the statistics | currently only reports the local variables i.e., the statistics | |||
| related to the outgoing RTP media streams and the incoming RTP media | related to the outgoing RTP media streams and the incoming RTP media | |||
| streams. Without the support of RTCP XRs or some other signaling | streams. Without the support of RTCP XRs or some other signaling | |||
| mechanism, the WebRTC application cannot expose the remote endpoints' | mechanism, the WebRTC application cannot expose the remote endpoints' | |||
| statistics. At the moment [I-D.ietf-rtcweb-rtp-usage] does not | statistics. [I-D.ietf-rtcweb-rtp-usage] does not mandate the use of | |||
| mandate the use of any RTCP XRs and since their usage is optional. | any RTCP XRs and since their usage is optional. If the use of RTCP | |||
| If the use of RTCP XRs is successfully negotiated between endpoints | XRs is successfully negotiated between endpoints (via SDP), | |||
| (via SDP), thereafter the application has access to both local and | thereafter the application has access to both local and remote | |||
| remote statistics. Alternatively, once the WebRTC application gets | statistics. Alternatively, once the WebRTC application gets the | |||
| the local information, they can report it to an application server or | local information, they can report it to an application server or a | |||
| a third-party monitoring system, which provides quality estimations | third-party monitoring system, which provides quality estimations or | |||
| or diagnosis services for application developers. The exchange of | diagnosis services for application developers. The exchange of | |||
| statistics between endpoints or between a monitoring server and an | statistics between endpoints or between a monitoring server and an | |||
| endpoint is outside the scope of this document. | endpoint is outside the scope of this document. | |||
| 4. Considerations for Impact of Measurement Interval | 4. Considerations for Impact of Measurement Interval | |||
| RTCP extensions like RTCP XR usually share the same timing interval | RTCP extensions like RTCP XR usually share the same timing interval | |||
| with the RTCP SR/RR, i.e., they are sent as compound packets, | with the RTCP SR/RR, i.e., they are sent as compound packets, | |||
| together with the RTCP SR/RR. Alternatively, if the RTCP XR uses a | together with the RTCP SR/RR. Alternatively, if the RTCP XR uses a | |||
| different measurement interval, all XRs using the same measurement | different measurement interval, all XRs using the same measurement | |||
| interval are compounded together and the measurement interval is | interval are compounded together and the measurement interval is | |||
| indicated in a specific measurement information block defined in | indicated in a specific measurement information block defined in | |||
| [RFC6776]. | [RFC6776]. | |||
| When using WebRTC getStats() APIs (see section 7 of | When using WebRTC getStats() APIs (see section 7 of [W3C.WD-webrtc- | |||
| [W3C.WD-webrtc-20161124]), the applications can query this | 20161124]), the applications can query this information at arbitrary | |||
| information at arbitrary intervals. For the statistics reported by | intervals. For the statistics reported by the remote endpoint, e.g., | |||
| the remote endpoint, e.g., those conveyed in an RTCP SR/RR/XR, these | those conveyed in an RTCP SR/RR/XR, these will not change until the | |||
| will not change until the next RTCP report is received. However, | next RTCP report is received. However, statistics generated by the | |||
| statistics generated by the local endpoint have no such restrictions | local endpoint have no such restrictions as long as the endpoint is | |||
| as long as the endpoint is sending and receiving media. For example, | sending and receiving media. For example, an application may choose | |||
| an application may choose to poll the stack for statistics every 1 | to poll the stack for statistics every 1 second, in this case the | |||
| second, in this case the underlying stack local will return the | underlying stack local will return the current snapshot of the local | |||
| current snapshot of the local statistics (for incoming and outgoing | statistics (for incoming and outgoing media streams). However it may | |||
| media streams). However it may return the same remote statistics as | return the same remote statistics as before for the remote | |||
| before for the remote statistics, as no new RTCP reports may have | statistics, as no new RTCP reports may have been received in the past | |||
| been received in the past 1 second. This can occur when the polling | 1 second. This can occur when the polling interval is shorter than | |||
| interval is shorter than the average RTCP reporting interval. | the average RTCP reporting interval. | |||
| 5. Candidate Metrics | 5. Candidate Metrics | |||
| Since following metrics are all defined in RTCP XR which is not | Since following metrics are all defined in RTCP XR which is not | |||
| mandated in WebRTC, all of them are local. However, if RTCP XR is | mandated in WebRTC, all of them are local. However, if RTCP XR is | |||
| supported by negotiation between two browsers, following metrics can | supported by negotiation between two browsers, following metrics can | |||
| also be generated remotely and be sent to local by RTCP XR packets. | also be generated remotely and be sent to local by RTCP XR packets. | |||
| Following metrics are classified into 3 categories: network impact | Following metrics are classified into 3 categories: network impact | |||
| metrics, application impact metrics and recovery metrics. Network | metrics, application impact metrics and recovery metrics. Network | |||
| impact metrics are the statistics recording the information only for | impact metrics are the statistics recording the information only for | |||
| network transmission. They are useful for network problem diagnosis. | network transmission. They are useful for network problem diagnosis. | |||
| Application impact metrics mainly collect the information in the | Application impact metrics mainly collect the information from the | |||
| viewpoint of application, e.g., bit rate, frames rate or jitter | viewpoint of application, e.g., bit rate, frames rate or jitter | |||
| buffers. Recovery metrics reflect how well the repair mechanisms | buffers. Recovery metrics reflect how well the repair mechanisms | |||
| perform, e.g. loss concealment, retransmission or FEC. All of the 3 | perform, e.g. loss concealment, retransmission or Forward Error | |||
| types of metrics are useful for quality estimations of services in | Correction (FEC). All of the 3 types of metrics are useful for | |||
| WebRTC implementations. WebRTC application can use these metrics to | quality estimations of services in WebRTC implementations. WebRTC | |||
| calculate the Mean Opinion Score (MoS) values or Media Delivery Index | application can use these metrics to calculate the Mean Opinion Score | |||
| (MDI) for their services. | (MoS) values or Media Delivery Index (MDI) for their services. | |||
| 5.1. Network Impact Metrics | 5.1. Network Impact Metrics | |||
| 5.1.1. Loss and Discard Packet Count Metric | 5.1.1. Loss and Discard Packet Count Metric | |||
| In multimedia transport, packets which are received abnormally are | In multimedia transport, packets which are received abnormally are | |||
| classified into 3 types: lost, discarded and duplicate packets. | classified into 3 types: lost, discarded and duplicate packets. | |||
| Packet loss may be caused by network device breakdown, bit-error | Packet loss may be caused by network device breakdown, bit-error | |||
| corruption or network congestion (packets dropped by an intermediate | corruption or network congestion (packets dropped by an intermediate | |||
| router queue). Duplicate packets may be a result of network delays, | router queue). Duplicate packets may be a result of network delays | |||
| which causes the sender to retransmit the original packets. | that causes the sender to retransmit the original packets. Discarded | |||
| Discarded packets are packets that have been delayed long enough | packets are packets that have been delayed long enough (perhaps they | |||
| (perhaps they missed the playout time) and are considered useless by | missed the playout time) and are considered useless by the receiver. | |||
| the receiver. Lost and discarded packets cause problems for | Lost and discarded packets cause problems for multimedia services, as | |||
| multimedia services, as missing data and long delays can cause | missing data and long delays can cause degradation in service | |||
| degradation in service quality, e.g., missing large blocks of | quality, e.g., missing large blocks of contiguous packets (lost or | |||
| contiguous packets (lost or discarded) may cause choppy audio, and | discarded) may cause choppy audio, and long network transmission | |||
| long network transmission delay time may cause audio or video | delay time may cause audio or video buffering. The RTCP SR/RR | |||
| buffering. The RTCP SR/RR defines a metric for counting the total | defines a metric for counting the total number of RTP data packets | |||
| number of RTP data packets that have been lost since the beginning of | that have been lost since the beginning of reception. But this | |||
| reception. But this statistic does not distinguish lost packets from | statistic does not distinguish lost packets from discarded and | |||
| discarded and duplicate packets. Packets that arrive late will be | duplicate packets. Packets that arrive late will be discarded and | |||
| discarded and are not reported as lost, and duplicate packets will be | are not reported as lost, and duplicate packets will be regarded as a | |||
| regarded as a normally received packet. Hence, the loss metric can | normally received packet. Hence, the loss metric can be misleading | |||
| be misleading if many duplicate packets are received or packets are | if many duplicate packets are received or packets are discarded, | |||
| discarded, which causes the quality of the media transport to appear | which causes the quality of the media transport to appear okay from | |||
| okay from the statistic point of view, but meanwhile the users may | the statistic point of view, but meanwhile the users may actually be | |||
| actually be experiencing bad service quality. So in such cases, it | experiencing bad service quality. So in such cases, it is better to | |||
| is better to use more accurate metrics in addition to those defined | use more accurate metrics in addition to those defined in RTCP SR/RR. | |||
| in RTCP SR/RR. | ||||
| The lost packets and duplicated packets metrics defined in Statistics | The lost packets and duplicated packets metrics defined in Statistics | |||
| Summary Report Block of [RFC3611] extend the information of loss | Summary Report Block of [RFC3611] extend the information of loss | |||
| carried in standard RTCP SR/RR. They explicitly give an account of | carried in standard RTCP SR/RR. They explicitly give an account of | |||
| lost and duplicated packets. Lost packets counts are useful for | lost and duplicated packets. Lost packets counts are useful for | |||
| network problem diagnosis. It is better to use the loss packets | network problem diagnosis. It is better to use the loss packets | |||
| metrics of [RFC3611] to indicate the packet lost count instead of the | metrics of [RFC3611] to indicate the packet lost count instead of the | |||
| cumulative number of packets lost metric of [RFC3550]. Duplicated | cumulative number of packets lost metric of [RFC3550]. Duplicated | |||
| packets are usually rare and have little effect on QoS evaluation. | packets are usually rare and have little effect on QoS evaluation. So | |||
| So it may not be suitable for use in WebRTC. | it may not be suitable for use in WebRTC. | |||
| Using loss metrics without considering discard metrics may result in | Using loss metrics without considering discard metrics may result in | |||
| inaccurate quality evaluation, as packet discard due to jitter is | inaccurate quality evaluation, as packet discard due to jitter is | |||
| often more prevalent than packet loss in modern IP networks. The | often more prevalent than packet loss in modern IP networks. The | |||
| discarded metric specified in [RFC7002] counts the number of packets | discarded metric specified in [RFC7002] counts the number of packets | |||
| discarded due to the jitter. It augments the loss statistics metrics | discarded due to the jitter. It augments the loss statistics metrics | |||
| specified in standard RTCP SR/RR. For those RTCWEB services with | specified in standard RTCP SR/RR. For those RTCWEB services with | |||
| jitter buffer requiring precise quality evaluation and accurate | jitter buffers requiring precise quality evaluation and accurate | |||
| troubleshooting, this metric is useful as a complement to the metrics | troubleshooting, this metric is useful as a complement to the metrics | |||
| of RTCP SR/RR. | of RTCP SR/RR. | |||
| 5.1.2. Burst/Gap Pattern Metrics for Loss and Discard | 5.1.2. Burst/Gap Pattern Metrics for Loss and Discard | |||
| RTCP SR/RR defines coarse metrics regarding loss statistics, the | RTCP SR/RR defines coarse metrics regarding loss statistics: the | |||
| metrics are all about per call statistics and are not detailed enough | metrics are all about per call statistics and are not detailed enough | |||
| to capture some transitory nature of the impairments like bursty | to capture the transitory nature of some impairments like bursty | |||
| packet loss. Even if the average packet loss rate is low, the lost | packet loss. Even if the average packet loss rate is low, the lost | |||
| packets may occur during short dense periods, resulting in short | packets may occur during short dense periods, resulting in short | |||
| periods of degraded quality. Distributed burst provides a higher | periods of degraded quality. Bursts cause lower quality experience | |||
| subjective quality than a non-burst distribution for low packet loss | than the non-bursts for low packet loss rates, whereas for high | |||
| rates whereas for high packet loss rates the converse is true. So | packet loss rates the converse is true. So capturing burst gap | |||
| capturing burst gap information is very helpful for quality | information is very helpful for quality evaluation and locating | |||
| evaluation and locating impairments. If the WebRTC application needs | impairments. If the WebRTC application needs to evaluate the | |||
| to evaluate the services quality, burst gap metrics provides more | services quality, burst gap metrics provides more accurate | |||
| accurate information than RTCP SR/RR. | information than RTCP SR/RR. | |||
| [RFC3611] introduces burst gap metrics in VoIP report block. These | [RFC3611] introduces burst gap metrics in VoIP report block. These | |||
| metrics record the density and duration of burst and gap periods, | metrics record the density and duration of burst and gap periods, | |||
| which are helpful in isolating network problems since bursts | which are helpful in isolating network problems since bursts | |||
| correspond to periods of time during which the packet loss/discard | correspond to periods of time during which the packet loss/discard | |||
| rate is high enough to produce noticeable degradation in audio or | rate is high enough to produce noticeable degradation in audio or | |||
| video quality. Burst gap related metrics are also introduced in | video quality. Burst gap related metrics are also introduced in | |||
| [RFC7003] and [RFC6958] which define two new report blocks for usage | [RFC7003] and [RFC6958] which define two new report blocks for usage | |||
| in a range of RTP applications beyond those described in [RFC3611]. | in a range of RTP applications beyond those described in [RFC3611]. | |||
| These metrics distinguish discarded packets from loss packets that | These metrics distinguish discarded packets from loss packets that | |||
| occur in the bursts period and provides more information for | occur in the bursts period and provides more information for | |||
| diagnosing network problems. Additionally, the block reports the | diagnosing network problems. Additionally, the block reports the | |||
| frequency of burst events which is useful information for evaluating | frequency of burst events which is useful information for evaluating | |||
| the quality of experience. Hence, if WebRTC application need to do | the quality of experience. Hence, if WebRTC applications need to do | |||
| quality evaluation and observe when and why quality degrades, these | quality evaluation and observe when and why quality degrades, these | |||
| metrics should be considered. | metrics should be considered. | |||
| 5.1.3. Run Length Encoded Metrics for Loss, Discard | 5.1.3. Run Length Encoded Metrics for Loss, Discard | |||
| Run-length encoding uses a bit vector to encode information about the | Run-length encoding uses a bit vector to encode information about the | |||
| packet. Each bit in the vector represents a packet and depending on | packet. Each bit in the vector represents a packet and depending on | |||
| the signaled metric it defines if the packet was lost, duplicated, | the signaled metric it defines if the packet was lost, duplicated, | |||
| discarded, or repaired. An endpoint typically uses the run length | discarded, or repaired. An endpoint typically uses the run length | |||
| encoding to accurately communicate the status of each packet in the | encoding to accurately communicate the status of each packet in the | |||
| skipping to change at page 7, line 37 ¶ | skipping to change at page 7, line 35 ¶ | |||
| If losses occur after discards, an endpoint may be able to correlate | If losses occur after discards, an endpoint may be able to correlate | |||
| the two run length vectors to identify congestion-related losses, | the two run length vectors to identify congestion-related losses, | |||
| i.e., a router queue became overloaded causing delays and then | i.e., a router queue became overloaded causing delays and then | |||
| overflowed. If the losses are independent, it may indicate bit-error | overflowed. If the losses are independent, it may indicate bit-error | |||
| corruption. For the WebRTC Stats API [W3C.WD-webrtc-stats-20161214], | corruption. For the WebRTC Stats API [W3C.WD-webrtc-stats-20161214], | |||
| these types of metrics are not recommended for use due to the large | these types of metrics are not recommended for use due to the large | |||
| amount of data and the computation involved. | amount of data and the computation involved. | |||
| 5.2. Application Impact Metrics | 5.2. Application Impact Metrics | |||
| 5.2.1. Discard Octets Metric | 5.2.1. Discarded Octets Metric | |||
| The metric reports the cumulative size of the packets discarded in | The metric reports the cumulative size of the packets discarded in | |||
| the interval, it is complementary to number of discarded packets. An | the interval, it is complementary to number of discarded packets. An | |||
| application measures sent octets and received octets to calculate | application measures sent octets and received octets to calculate | |||
| sending rate and receiving rate, respectively. The application can | sending rate and receiving rate, respectively. The application can | |||
| calculate the actual bit rate in a particular interval by subtracting | calculate the actual bit rate in a particular interval by subtracting | |||
| the discarded octets from the received octets. | the discarded octets from the received octets. | |||
| For WebRTC, discarded octets supplements the sent and received octets | For WebRTC, discarded octets supplements the sent and received octets | |||
| and provides an accurate method for calculating the actual bit rate | and provides an accurate method for calculating the actual bit rate | |||
| which is an important parameter to reflect the quality of the media. | which is an important parameter to reflect the quality of the media. | |||
| The discarded bytes metric is defined in [RFC7243]. | The discarded bytes metric is defined in [RFC7243]. | |||
| 5.2.2. Frame Impairment Summary Metrics | 5.2.2. Frame Impairment Summary Metrics | |||
| RTP has different framing mechanisms for different payload types. | RTP has different framing mechanisms for different payload types. For | |||
| For audio streams, a single RTP packet may contain one or multiple | audio streams, a single RTP packet may contain one or multiple audio | |||
| audio frames, each of which has a fixed length. On the other hand, | frames, each of which has a fixed length. On the other hand, in | |||
| in video streams, a single video frame may be transmitted in multiple | video streams, a single video frame may be transmitted in multiple | |||
| RTP packets. The size of each packet is limited by the Maximum | RTP packets. The size of each packet is limited by the Maximum | |||
| Transmission Unit (MTU) of the underlying network. However, | Transmission Unit (MTU) of the underlying network. However, | |||
| statistics from standard SR/RR only collect information from | statistics from standard SR/RR only collect information from | |||
| transport layer, which may not fully reflect the quality observed by | transport layer, which may not fully reflect the quality observed by | |||
| the application. Video is typically encoded using two frame types | the application. Video is typically encoded using two frame types | |||
| i.e., key frames and derived frames. Key frames are normally just | i.e., key frames and derived frames. Key frames are normally just | |||
| spatially compressed, i.e., without prediction from other pictures. | spatially compressed, i.e., without prediction from other pictures. | |||
| The derived frames are temporally compressed, i.e., depend on the key | The derived frames are temporally compressed, i.e., depend on the key | |||
| frame for decoding. Hence, key frames are much larger in size than | frame for decoding. Hence, key frames are much larger in size than | |||
| derived frames. The loss of these key frames results in a | derived frames. The loss of these key frames results in a | |||
| skipping to change at page 9, line 24 ¶ | skipping to change at page 9, line 24 ¶ | |||
| the original streams. But they do help to greatly reduce the impact | the original streams. But they do help to greatly reduce the impact | |||
| of packet loss and enhance the quality of transmission. Web | of packet loss and enhance the quality of transmission. Web | |||
| applications could support certain repair mechanism after negotiation | applications could support certain repair mechanism after negotiation | |||
| between both sides of browsers when needed. For these web | between both sides of browsers when needed. For these web | |||
| applications using repair mechanisms, providing some statistic | applications using repair mechanisms, providing some statistic | |||
| information for the performance of their repair mechanisms could help | information for the performance of their repair mechanisms could help | |||
| to have a more accurate quality evaluation. | to have a more accurate quality evaluation. | |||
| The un-repaired packets count and repaired loss count defined in | The un-repaired packets count and repaired loss count defined in | |||
| [RFC7509] provide the recovery information of the error-resilience | [RFC7509] provide the recovery information of the error-resilience | |||
| mechanisms to the monitoring application or the sending endpoint. | mechanisms to the monitoring application or the sending endpoint. The | |||
| The endpoint can use these metrics to ascertain the ratio of repaired | endpoint can use these metrics to ascertain the ratio of repaired | |||
| packets to lost packets. Including this kind of metrics helps the | packets to lost packets. Including this kind of metrics helps the | |||
| application evaluate the effectiveness of the applied repair | application evaluate the effectiveness of the applied repair | |||
| mechanisms. | mechanisms. | |||
| 5.3.2. Run Length Encoded Metric for Post-repair | 5.3.2. Run Length Encoded Metric for Post-repair | |||
| [RFC5725] defines run-length encoding for post-repair packets. When | [RFC5725] defines run-length encoding for post-repair packets. When | |||
| using error-resilience mechanisms, the endpoint can correlate the | using error-resilience mechanisms, the endpoint can correlate the | |||
| loss run length with this metric to ascertain where the losses and | loss run length with this metric to ascertain where the losses and | |||
| repairs occurred in the interval. This provides more accurate | repairs occurred in the interval. This provides more accurate | |||
| skipping to change at page 10, line 10 ¶ | skipping to change at page 10, line 10 ¶ | |||
| mechanisms, the endpoint can correlate the loss and post-repair run | mechanisms, the endpoint can correlate the loss and post-repair run | |||
| lengths to ascertain where the losses and repairs occurred in the | lengths to ascertain where the losses and repairs occurred in the | |||
| interval. For example, consecutive losses are likely not to be | interval. For example, consecutive losses are likely not to be | |||
| repaired by a simple FEC scheme. | repaired by a simple FEC scheme. | |||
| 6. Identifiers from Sender, Receiver, and Extended Report Blocks | 6. Identifiers from Sender, Receiver, and Extended Report Blocks | |||
| This document describes a list of metrics and corresponding | This document describes a list of metrics and corresponding | |||
| identifiers relevant to RTP media in WebRTC. These group of | identifiers relevant to RTP media in WebRTC. These group of | |||
| identifiers are defined on a ReportGroup corresponding to an | identifiers are defined on a ReportGroup corresponding to an | |||
| Synchronization source (SSRC). In practice the application MUST be | Synchronization source (SSRC). In practice the application need to | |||
| able to query the statistic identifiers on both an incoming (remote) | be able to query the statistic identifiers on both an incoming | |||
| and outgoing (local) media stream. Since sending and receiving SR | (remote) and outgoing (local) media stream. Since sending and | |||
| and RR are mandatory, the metrics defined in the SR and RR report | receiving SR and RR are mandatory, the metrics defined in the SR and | |||
| blocks are always available. For XR metrics, it depends on two | RR report blocks are always available. For XR metrics, it depends on | |||
| factors: 1) if it measured at the endpoint, 2) if it reported by the | two factors: 1) if it measured at the endpoint, 2) if it reported by | |||
| endpoint in an XR report. If a metric is only measured by the | the endpoint in an XR report. If a metric is only measured by the | |||
| endpoint and not reported, the metrics will only be available for the | endpoint and not reported, the metrics will only be available for the | |||
| incoming (remote) media stream. Alternatively, if the corresponding | incoming (remote) media stream. Alternatively, if the corresponding | |||
| metric is also reported in an XR report, it will be available for | metric is also reported in an XR report, it will be available for | |||
| both the incoming (remote) and outgoing (local) media stream. | both the incoming (remote) and outgoing (local) media stream. | |||
| For a remote statistic, the timestamp represents the timestamp from | For a remote statistic, the timestamp represents the timestamp from | |||
| an incoming SR/RR/XR packet. Conversely, for a local statistic, it | an incoming SR/RR/XR packet. Conversely, for a local statistic, it | |||
| refers to the current timestamp generated by the local clock | refers to the current timestamp generated by the local clock | |||
| (typically the POSIX timestamp, i.e., milliseconds since Jan 1, | (typically the POSIX timestamp, i.e., milliseconds since Jan 1, | |||
| 1970). | 1970). | |||
| skipping to change at page 13, line 17 ¶ | skipping to change at page 13, line 17 ¶ | |||
| Name: framesSent | Name: framesSent | |||
| Definition: The cumulative number of frames sent. | Definition: The cumulative number of frames sent. | |||
| Name: framesReceived | Name: framesReceived | |||
| Definition: The cumulative number of partial or full frames received. | Definition: The cumulative number of partial or full frames received. | |||
| 7. Adding new metrics to WebRTC Statistics API | 7. Adding new metrics to WebRTC Statistics API | |||
| The metrics defined in this draft have already been added to the W3C | During the progress of this work, the metrics defined in this draft | |||
| WebRTC specification. The current working process to add new metrics | have already been added to the W3C WebRTC specification. The working | |||
| is, create an issue or pull request on the repository of the W3C | process to add new metrics for future is to create an issue or pull | |||
| WebRTC specification (https://github.com/w3c/webrtc-stats). | request on the repository of the W3C WebRTC specification | |||
| (https://github.com/w3c/webrtc-stats). | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| The monitoring activities are implemented between two browsers or | This document focuses on listing the RTCP XR metrics defined in the | |||
| between a browser and a server. Therefore encryption procedures, | corresponding RTCP reporting extensions and do not give rise to any | |||
| such as the ones suggested for a Secure RTCP (SRTCP), need to be | new security vulnerabilities beyond those described in [RFC3611] and | |||
| used. Currently, the monitoring in RTCWEB introduces no new security | [RFC3792]. | |||
| considerations beyond those described in [I-D.ietf-rtcweb-rtp-usage], | ||||
| [I-D.ietf-rtcweb-security]. | The overall security considerations for RTP used in WebRTC | |||
| applicaitons is described in [I-D.ietf-rtcweb-rtp-usage] and [I- | ||||
| D.ietf-rtcweb-security], which are also apply to this memo. | ||||
| 9. Acknowledgements | 9. Acknowledgements | |||
| The authors would like to thank Bernard Aboba, Harald Alvestrand, Al | The authors would like to thank Bernard Aboba, Harald Alvestrand, Al | |||
| Morton, Colin Perkins, and Shida Schubert for their valuable comments | Morton, Colin Perkins, and Shida Schubert for their valuable comments | |||
| and suggestions on earlier version of this document. | and suggestions on earlier version of this document. | |||
| 10. References | 10. References | |||
| 10.1. Normative References | 10.1. Normative References | |||
| skipping to change at page 16, line 45 ¶ | skipping to change at page 16, line 45 ¶ | |||
| A.5. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-00 | A.5. changes in draft-ietf-xrblock-rtcweb-rtcp-xr-metrics-00 | |||
| o Submitted as WG Draft. | o Submitted as WG Draft. | |||
| A.6. changes in draft-huang-xrblock-rtcweb-rtcp-xr-metrics-04 | A.6. changes in draft-huang-xrblock-rtcweb-rtcp-xr-metrics-04 | |||
| o Addressed comments from the London IETF meeting: | o Addressed comments from the London IETF meeting: | |||
| o Removed ECN metrics. | o Removed ECN metrics. | |||
| o Merged draft-singh-xrblock-webrtc-additional-stats-01 | ||||
| Authors' Addresses | Authors' Addresses | |||
| Varun Singh | Varun Singh | |||
| CALLSTATS I/O Oy | CALLSTATS I/O Oy | |||
| Annankatu 31-33 C 42 | Annankatu 31-33 C 42 | |||
| Helsinki 00100 | Helsinki 00100 | |||
| Finland | Finland | |||
| Email: varun@callstats.io | Email: varun@callstats.io | |||
| URI: https://www.callstats.io/about | URI: https://www.callstats.io/about | |||
| skipping to change at page 17, line 27 ¶ | skipping to change at page 17, line 27 ¶ | |||
| China | China | |||
| Email: rachel.huang@huawei.com | Email: rachel.huang@huawei.com | |||
| Roni Even | Roni Even | |||
| Huawei | Huawei | |||
| 14 David Hamelech | 14 David Hamelech | |||
| Tel Aviv 64953 | Tel Aviv 64953 | |||
| Israel | Israel | |||
| Email: roni.even@mail01.huawei.com | Email: roni.even@huawei.com | |||
| Dan Romascanu | Dan Romascanu | |||
| Email: dromasca@gmail.com | Email: dromasca@gmail.com | |||
| Lingli Deng | Lingli Deng | |||
| China Mobile | China Mobile | |||
| Email: denglingli@chinamobile.com | Email: denglingli@chinamobile.com | |||
| End of changes. 27 change blocks. | ||||
| 110 lines changed or deleted | 106 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||