rfc-8083

Multimedia Congestion Control: Circuit Breakers for Unicast RTP Sessions

C. Perkins, V. Singh
date2017-03 streamIETF areawit wgavtcore statusPROPOSED STANDARD pages25 canonicalhttps://www.rfc-editor.org/rfc/rfc8083 doi10.17487/RFC8083
The Real-time Transport Protocol (RTP) is widely used in telephony, video conferencing, and telepresence applications. Such applications are often run on best-effort UDP/IP networks. If congestion control is not implemented in these applications, then network congestion can lead to uncontrolled packet loss and a resulting deterioration of the user's multimedia experience. The congestion control algorithm acts as a safety measure by stopping RTP flows from using excessive resources and protecting the network from overload. At the time of this writing, however, while there are several proprietary solutions, there is no standard algorithm for congestion control of interactive RTP flows. This document does not propose a congestion control algorithm. It instead defines a minimal set of RTP circuit breakers: conditions under which an RTP sender needs to stop transmitting media data to protect the network from excessive congestion. It is expected that, in the absence of long-lived excessive congestion, RTP applications running on best-effort IP networks will be able to operate without triggering these circuit breakers. To avoid triggering the RTP circuit breaker, any Standards Track congestion control algorithms defined for RTP will need to operate within the envelope set by these RTP circuit breaker algorithms.

updates

Extracted elements (31)

design-rationale §4

RTT estimates and jitter from RTCP RR packets were explicitly rejected as standalone circuit breaker signals because RTCP under RTP/AVP timing is too infrequent and cannot distinguish routing-change delay from congestion queuing delay; only sustained packet loss provides a sufficiently strong signal.

rtp, congestion

design-rationale §4.3

The congestion circuit breaker threshold of 10 * X (ten times estimated TCP throughput) rather than 1 * X reflects the RTP/AVP profile's 'order of magnitude' fairness requirement; this accounts for the imprecision of using loss fraction as a proxy for loss event rate and the coarse RTCP reporting interval.

rtp, congestion

design-rationale §4.3

The minimum sending rate threshold (at least one RTP packet every max(Tdr, Tr) seconds) before the congestion circuit breaker applies is included to avoid spurious triggers when few packets are sent per RTCP interval and loss fraction samples suffer measurement artifacts.

rtp, congestion

design-rationale §4.3

The simplified TCP throughput equation is recommended over the full Padhye equation because measurement data shows the accuracy reduction is small and it is much simpler to calculate; the full equation MAY be used where its extra sensitivity to loss is desired (e.g., LTE networks).

rtp, congestion

interoperability-note §7

At the time of writing there is no consensus on how ECN feedback impacts the congestion circuit breaker (Section 4.3); ECN does not affect the RTCP timeout or media timeout circuit breakers since these are simple connectivity checks.

rtp, congestion, ecn

interoperability-note §4

Implementations that sometimes need to interwork with endpoints that do not support RTCP need to disable the RTP circuit breakers if they don't receive signaling confirmation that the remote endpoint implements RTCP (e.g., an SDP 'a=rtcp:' attribute in an answer).

rtp, realtime

interoperability-note §8

RTP media streams with different DSCP values SHOULD NOT be considered as a group when evaluating RTP circuit breaker conditions, since congestion may be experienced differently depending on DSCP marking.

rtp, congestion, diffserv

normative-requirement §8 MUST

An RTP sender participating in several RTP sessions MUST treat each RTP session independently with regard to the RTP circuit breaker.

rtp, congestion

normative-requirement §4.1 SHOULD

An RTP sender that has not received any RTCP SR or RTCP RR packets reporting on the SSRC it is using for a time period of at least three times its deterministic RTCP reporting interval Td SHOULD cease transmission.

rtp, congestion, realtime

normative-requirement §4.3 MUST

If the RTP/AVPF or RTP/SAVPF profile is used and T_rr_interval reduces regular RTCP report frequency, the value of Tdr in the CB_INTERVAL expression MUST be replaced by max(T_rr_interval, Tdr).

rtp, congestion

normative-requirement §4.1 SHOULD NOT

Implementations SHOULD NOT configure the RTCP bandwidth such that Td is larger than 5 seconds, and SHOULD NOT configure T_rr_interval to values larger than 4 seconds when using RTP/AVPF or RTP/SAVPF.

rtp, congestion, realtime

normative-requirement §4.5 MUST

Implementations that cannot determine whether a flow restart was user-initiated or automatic MUST rate limit attempts to restart a flow on the same 5-tuple as used by a flow that triggered the circuit breaker, such that the reaction lasts for at least the triggering interval.

rtp, congestion

normative-requirement §4 SHOULD NOT

Implementations without RTCP that claim to support RTP SHOULD NOT be used on networks that might be subject to congestion unless equivalent non-RTCP feedback mechanisms for congestion reporting and circuit breaker conditions are defined.

rtp, congestion

normative-requirement §5 MUST

Reduced-size RTCP reports sent under RTP/AVPF early feedback rules that do not contain an RTCP SR or RR packet MUST be ignored by the congestion circuit breaker but MUST be counted as received packets for the RTCP timeout circuit breaker.

rtp, congestion

normative-requirement §4.5 SHOULD NOT

RTP flows halted by the circuit breaker SHOULD NOT be restarted automatically unless the sender has received information that congestion has dissipated or can reasonably be expected to have dissipated.

rtp, congestion

normative-requirement §4.4 SHOULD

RTP senders SHOULD monitor reported packet loss and delay to estimate whether media is usable; if unusable for a significant time, the application SHOULD cease transmission. Receivers SHOULD similarly monitor quality and SHOULD terminate the session if unusable.

rtp, congestion, realtime

normative-requirement §4.2 MUST

When a sender receives an RTCP packet indicating that its media was not received, it MUST calculate a new value for MEDIA_TIMEOUT; if the new value is larger than the previous it replaces the old value, otherwise it keeps the original.

rtp, congestion, realtime

normative-requirement §4.3 MUST

When a sender transmitting at least one RTP packet every max(Tdr, Tr) seconds receives an RTCP SR or RR packet with a report block, it MUST record the fraction lost and time since the last report; if more than CB_INTERVAL reports have been received it MUST calculate average fraction lost and estimate TCP throughput X, triggering the congestion circuit breaker if the actual sending rate exceeds 10 * X.

rtp, congestion, realtime

normative-requirement §4.3 SHOULD

When generating round-robin RTCP reports (when sources exceed MTU), priority SHOULD be given to reports on sources with high packet loss rates to ensure senders are aware of congestion they are causing; this updates RFC 3550.

rtp, congestion

normative-requirement §4.2 MUST

When stopping sending an RTP stream, a sender MUST cancel the corresponding media timeout circuit breaker.

rtp, realtime

normative-requirement §4.3 MUST

When the congestion circuit breaker triggers, the sender SHOULD cease transmission; however the sender MAY first reduce its sending rate by a factor of approximately ten, but if the circuit breaker triggers again after the next CB_INTERVAL the sender MUST cease transmission.

rtp, congestion, realtime

protocol-element §4.3

CB_INTERVAL = ceil(3*min(max(10*G*Tf, 10*Tr, 3*Tdr), max(15, 3*Td))/(3*Tdr)) is the number of RTCP reporting intervals over which average fraction lost is calculated for the congestion circuit breaker; it ensures at least three RTCP reports, ten RTTs, and ten frame groups for congestion control to react.

rtp, congestion

protocol-element §3

t_RTO, the TCP retransmission timeout used in the full TCP throughput equation, MUST be approximated as t_RTO = 4 * Tr when used in the RTP congestion circuit breaker.

rtp, congestion

protocol-element §4.3

The Congestion circuit breaker (#3) compares the actual RTP sending rate against 10 * X, where X is an estimated TCP throughput using loss fraction p and RTT Tr; it triggers when the sending rate exceeds this threshold over CB_INTERVAL RTCP reporting intervals.

rtp, congestion

protocol-element §4.2

The Media Timeout circuit breaker (#2) triggers when MEDIA_TIMEOUT = ceil(k * max(Tf, Tr, Tdr) / Tdr) consecutive RTCP packets indicate non-increasing extended highest sequence number received; the recommended value of k is 5 reports.

rtp, congestion

protocol-element §4.4

The Media Usability circuit breaker (#4) triggers when packet loss and/or latency renders media unusable for a significant application-defined time period; both sender and receiver may independently trigger this breaker.

rtp, congestion, realtime

protocol-element §4.1

The RTCP Timeout circuit breaker (#1) triggers when no RTCP SR or RR packets are received for a period of at least 3 * Td, where Td is the deterministic RTCP reporting interval calculated without randomization and using Tmin=5 seconds.

rtp, congestion, realtime

protocol-element §4.3

The simplified TCP throughput equation X = s / (Tr * sqrt(2*b*p/3)) is recommended for the congestion circuit breaker, where s is average RTP packet size, Tr is RTT, b=1, and p is approximated by the average loss fraction. The full Padhye equation MAY be used for extra sensitivity.

rtp, congestion

security-consideration §9

If non-authenticated RTCP reports are used, an on-path attacker can trivially generate fake RTCP packets indicating high packet loss rates and cause the circuit breaker to trigger, disrupting an RTP session. This attack is harder for off-path attackers who must guess the RTP SSRC and sequence number. Authentication per RFC 7201 prevents this attack.

rtp, security, realtime

security-consideration §9

Timely circuit breaker operation depends on the RTCP reporting interval; a receiver configured with an overly long reporting interval (e.g., many minutes) can effectively disable the circuit breaker. Implementations MUST impose an upper limit on the RTCP reporting interval they are willing to negotiate.

rtp, security, congestion

state-machine §4.5

The circuit breaker state transitions are: (1) Sending — normal operation; (2) Circuit Breaker Triggered — sender SHOULD cease transmission on triggering conditions (RTCP timeout, media timeout, congestion, or media unusability); (3) Restarted — flow may resume only after congestion is confirmed dissipated, with rate limiting on restart attempts.

rtp, congestion