draft-ietf-rmcat-cc-requirements-04.txt | draft-ietf-rmcat-cc-requirements-05.txt | |||
---|---|---|---|---|
Network Working Group R. Jesup | Network Working Group R. Jesup | |||
Internet-Draft Mozilla | Internet-Draft Mozilla | |||
Intended status: Informational April 19, 2014 | Intended status: Informational July 4, 2014 | |||
Expires: October 21, 2014 | Expires: January 5, 2015 | |||
Congestion Control Requirements For RMCAT | Congestion Control Requirements For RMCAT | |||
draft-ietf-rmcat-cc-requirements-04 | draft-ietf-rmcat-cc-requirements-05 | |||
Abstract | Abstract | |||
Congestion control is needed for all data transported across the | Congestion control is needed for all data transported across the | |||
Internet, in order to promote fair usage and prevent congestion | Internet, in order to promote fair usage and prevent congestion | |||
collapse. The requirements for interactive, point-to-point real time | collapse. The requirements for interactive, point-to-point real time | |||
multimedia, which needs low-delay, semi-reliable data delivery, are | multimedia, which needs low-delay, semi-reliable data delivery, are | |||
different from the requirements for bulk transfer like FTP or bursty | different from the requirements for bulk transfer like FTP or bursty | |||
transfers like Web pages. Due to an increasing amount of RTP-based | transfers like Web pages. Due to an increasing amount of RTP-based | |||
real-time media traffic on the Internet (e.g. with the introduction | real-time media traffic on the Internet (e.g. with the introduction | |||
of WebRTC[I-D.ietf-rtcweb-overview]), it is especially important to | of WebRTC[I-D.ietf-rtcweb-overview]), it is especially important to | |||
ensure that this kind of traffic is congestion controlled. | ensure that this kind of traffic is congestion controlled. | |||
This document attempts to describe a set of requirements that can be | This document describes a set of requirements that can be used to | |||
used to evaluate other congestion control mechanisms in order to | evaluate other congestion control mechanisms in order to figure out | |||
figure out their fitness for this purpose, and in particular to | their fitness for this purpose, and in particular to provide a set of | |||
provide a set of possible requirements for proposals coming out of | possible requirements for realtime media congestion avoidance | |||
the RMCAT Working Group. | technique. | |||
Requirements Language | Requirements Language | |||
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 RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
The terms are presented in many cases using lowercase for | ||||
readability. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on October 21, 2014. | ||||
This Internet-Draft will expire on January 5, 2015. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 | |||
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
6.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
6.2. Informative References . . . . . . . . . . . . . . . . . 8 | 6.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
1. Introduction | 1. Introduction | |||
Most of today's TCP congestion control schemes were developed with a | Most of today's TCP congestion control schemes were developed with a | |||
focus on an use of the Internet for reliable bulk transfer of non- | focus on an use of the Internet for reliable bulk transfer of non- | |||
time-critical data, such as transfer of large files. They have also | time-critical data, such as transfer of large files. They have also | |||
been used successfully to govern the reliable transfer of smaller | been used successfully to govern the reliable transfer of smaller | |||
chunks of data in as short a time as possible, such as when fetching | chunks of data in as short a time as possible, such as when fetching | |||
Web pages. | Web pages. | |||
skipping to change at page 3, line 48 | skipping to change at page 4, line 5 | |||
A. It should provide this as-low-as-possible-delay transit even | A. It should provide this as-low-as-possible-delay transit even | |||
when faced with intermediate bottlenecks and competing | when faced with intermediate bottlenecks and competing | |||
flows. Competing flows may limit what's possible to | flows. Competing flows may limit what's possible to | |||
achieve. | achieve. | |||
B. It should handle routing changes which may alter or remove | B. It should handle routing changes which may alter or remove | |||
bottlenecks or change the bandwidth available, and react | bottlenecks or change the bandwidth available, and react | |||
quickly, especially if there is a reduction in available | quickly, especially if there is a reduction in available | |||
bandwidth or increase in bottleneck delay. | bandwidth or increase in bottleneck delay. | |||
C. It should handle interface changes (WiFi to 3G data, etc) | C. It should handle interface changes (WLAN to 3G data, etc) | |||
which may radically change the bandwidth available or | which may radically change the bandwidth available or | |||
bottlenecks, and react quickly, especially if there is a | bottlenecks, and react quickly, especially if there is a | |||
reduction in available bandwidth or increase in bottleneck | reduction in available bandwidth or increase in bottleneck | |||
delay. It is assumed that an interface change can generate | delay. It is assumed that an interface change can generate | |||
a notification to the algorithm. | a notification to the algorithm. | |||
D. The offered load may be less than the available bandwidth at | D. The offered load may be less than the available bandwidth at | |||
any given moment, and may vary dramatically over time, | any given moment, and may vary dramatically over time, | |||
including dropping to no load and then resuming a high load, | including dropping to no load and then resuming a high load, | |||
such as in a mute operation. The reaction time between a | such as in a mute operation. The reaction time between a | |||
skipping to change at page 4, line 27 | skipping to change at page 4, line 32 | |||
bottleneck router or link, but also clear quickly, and | bottleneck router or link, but also clear quickly, and | |||
should recover quickly when the burst ends. This is | should recover quickly when the burst ends. This is | |||
inherently at odds with the need to react quickly-enough to | inherently at odds with the need to react quickly-enough to | |||
avoid queue buildup. | avoid queue buildup. | |||
F. Similarly periodic bursty flows such as MPEG DASH | F. Similarly periodic bursty flows such as MPEG DASH | |||
[MPEG_DASH] or proprietary media streaming algorithms may | [MPEG_DASH] or proprietary media streaming algorithms may | |||
compete in bursts with the algorithm, and may not be | compete in bursts with the algorithm, and may not be | |||
adaptive within a burst. They are often layered on top of | adaptive within a burst. They are often layered on top of | |||
TCP. The algorithm must avoid too much delay buildup during | TCP. The algorithm must avoid too much delay buildup during | |||
those bursts, and quickly recover. Note that this traffic | those bursts, and quickly recover. Note that this competing | |||
may on an access link, or may cause a shift in the location | traffic may on a shared access link, or the traffic burst | |||
of the bottleneck for the duration of the burst. | may cause a shift in the location of the bottleneck for the | |||
duration of the burst. | ||||
2. The algorithm must be fair to other flows, both realtime flows | 2. The algorithm must be fair to other flows, both realtime flows | |||
(such as other instances of itself), and TCP flows, both long- | (such as other instances of itself), and TCP flows, both long- | |||
lived and bursts such as the traffic generated by a typical web | lived and bursts such as the traffic generated by a typical web | |||
browsing session. Note that 'fair' is a rather hard-to-define | browsing session. Note that 'fair' is a rather hard-to-define | |||
term. It should be self-fair with itself, giving roughly equal | term. It should be fair with itself, giving roughly equal | |||
bandwidth to multiple flows with similar RTTs, and if possible | bandwidth to multiple flows with similar RTTs, and if possible | |||
to multiple flows with different RTTs. | to multiple flows with different RTTs. | |||
A. Existing flows at a bottleneck must also be fair to new | A. Existing flows at a bottleneck must also be fair to new | |||
flows to that bottleneck, and must allow new flows to ramp | flows to that bottleneck, and must allow new flows to ramp | |||
up to a useful share of the bottleneck bandwidth quickly. | up to a useful share of the bottleneck bandwidth quickly. | |||
Note that relative RTTs may affect the rate new flows can | Note that relative RTTs may affect the rate new flows can | |||
ramp up to a reasonable share. | ramp up to a reasonable share. | |||
3. The algorithm should not starve competing TCP flows, and should | 3. The algorithm should not starve competing TCP flows, and should | |||
as best as possible avoid starvation by TCP flows. | as best as possible avoid starvation by TCP flows. | |||
A. An algorithm may be more successful at avoiding starvation | A. An algorithm may be more successful at avoiding starvation | |||
from short-lived TCP long-lived/saturating TCP flows. | from short-lived TCP than long-lived/saturating TCP flows. | |||
B. In order to avoid starvation other goals may need to be | B. In order to avoid starvation other goals may need to be | |||
compromised (such as delay). | compromised (such as delay). | |||
4. The algorithm should quickly adapt to initial network conditions | 4. The algorithm should quickly adapt to initial network conditions | |||
at the start of a flow. This should occur both if the initial | at the start of a flow. This should occur both if the initial | |||
bandwidth is above or below the bottleneck bandwidth. | bandwidth is above or below the bottleneck bandwidth. | |||
A. The startup adaptation may be faster than adaptation later | A. The startup adaptation may be faster than adaptation later | |||
in a flow. It should allow for both slow-start operation | in a flow. It should allow for both slow-start operation | |||
skipping to change at page 5, line 33 | skipping to change at page 5, line 36 | |||
B. Alternative methods to help startup like probing during | B. Alternative methods to help startup like probing during | |||
setup with dummy data may be useful in some applications; in | setup with dummy data may be useful in some applications; in | |||
some cases there will be a considerable gap in time between | some cases there will be a considerable gap in time between | |||
flow creation and the initial flow of data. | flow creation and the initial flow of data. | |||
C. A flow may need to change adaptation rates due to network | C. A flow may need to change adaptation rates due to network | |||
conditions or changes in the provided flows (such as un- | conditions or changes in the provided flows (such as un- | |||
muting or sending data after a gap). | muting or sending data after a gap). | |||
5. It should be stable if the RTP streams are halted or | 5. It should be stable if the RTP streams are halted or | |||
discontinuous (VAD/DTX). | discontinuous (Voice Activity Detection/Discontinuous | |||
Transmission). | ||||
A. After a resumption of RTP data it may adapt more quickly | A. After a resumption of RTP data it may adapt more quickly | |||
(similar to the start of a flow), and previous bandwidth | (similar to the start of a flow), and previous bandwidth | |||
estimates may need to be aged or thrown away. | estimates may need to be aged or thrown away. | |||
6. The algorithm should where possible merge information across | 6. The algorithm should where possible merge information across | |||
multiple RTP streams between the same endpoints, whether or not | multiple RTP streams between the same endpoints, whether or not | |||
they're multiplexed on the same ports, in order to allow | they're multiplexed on the same ports, in order to allow | |||
congestion control of the set of streams together instead of as | congestion control of the set of streams together instead of as | |||
multiple independent streams. This allows better overall | multiple independent streams. This allows better overall | |||
skipping to change at page 6, line 46 | skipping to change at page 6, line 48 | |||
they should be utilized if possible. | they should be utilized if possible. | |||
8. Since the assumption here is a set of RTP streams, the | 8. Since the assumption here is a set of RTP streams, the | |||
backchannel typically should be done via RTCP; one alternative | backchannel typically should be done via RTCP; one alternative | |||
would be to include it instead in a reverse RTP channel using | would be to include it instead in a reverse RTP channel using | |||
header extensions. | header extensions. | |||
A. In order to react sufficiently quickly when using RTCP for a | A. In order to react sufficiently quickly when using RTCP for a | |||
backchannel, an RTP profile such as RTP/AVPF [RFC4585] or | backchannel, an RTP profile such as RTP/AVPF [RFC4585] or | |||
RTP/SAVPF [RFC5124] that allows sufficiently frequent | RTP/SAVPF [RFC5124] that allows sufficiently frequent | |||
feedback MUST be used. | feedback must be used. | |||
B. Note that in some cases, backchannel messages may be delayed | B. Note that in some cases, backchannel messages may be delayed | |||
until the RTCP channel can be allocated enough bandwidth, | until the RTCP channel can be allocated enough bandwidth, | |||
even under AVPF rules. This may also imply negotiating a | even under AVPF rules. This may also imply negotiating a | |||
higher maximum percentage for RTCP data or allowing RMCAT | higher maximum percentage for RTCP data or allowing RMCAT | |||
solutions to violate or modify the rules specified for AVPF. | solutions to violate or modify the rules specified for AVPF. | |||
C. Bandwidth for the feedback messages should be minimized | C. Bandwidth for the feedback messages should be minimized | |||
(such as via RFC 5506 [RFC5506]to allow RTCP without SR/RR) | (such as via RFC 5506 [RFC5506]to allow RTCP without Sender | |||
Reports/Receiver Reports) | ||||
D. Header extensions would avoid the RTCP timing rules issues, | D. Header extensions would avoid the RTCP timing rules issues, | |||
and allow the application to allocate bandwidth as needed | and allow the application to allocate bandwidth as needed | |||
for the congestion algorithm. | for the congestion algorithm. | |||
E. Backchannel data should be minimized to avoid taking too | E. Backchannel data should be minimized to avoid taking too | |||
much reverse-channel bandwidth (since this will often be | much reverse-channel bandwidth (since this will often be | |||
used in a bidirectional set of flows). In areas of | used in a bidirectional set of flows). In areas of | |||
stability, backchannel data may be sent more infrequently so | stability, backchannel data may be sent more infrequently so | |||
long as algorithm stability and fairness are maintained. | long as algorithm stability and fairness are maintained. | |||
skipping to change at page 7, line 28 | skipping to change at page 7, line 32 | |||
equilibrium after a change, backchannel feedback may be more | equilibrium after a change, backchannel feedback may be more | |||
frequent and use more reverse-channel bandwidth. This is an | frequent and use more reverse-channel bandwidth. This is an | |||
area with considerable flexibility of design, and different | area with considerable flexibility of design, and different | |||
approaches to backchannel messages and frequency are | approaches to backchannel messages and frequency are | |||
expected to be evaluated. | expected to be evaluated. | |||
9. Flows managed by this algorithm and flows competing against at a | 9. Flows managed by this algorithm and flows competing against at a | |||
bottleneck may have different DSCP[RFC5865] markings depending | bottleneck may have different DSCP[RFC5865] markings depending | |||
on the type of traffic, or may be subject to flow-based QoS. A | on the type of traffic, or may be subject to flow-based QoS. A | |||
particular bottleneck or section of the network path may or may | particular bottleneck or section of the network path may or may | |||
not honor DSCP markings. The algorithm SHOULD attempt to | not honor DSCP markings. The algorithm should attempt to | |||
leverage DSCP markings when they're available. | leverage DSCP markings when they're available. | |||
A. In WebRTC, a division of packets into 4 classes is | A. In WebRTC, a division of packets into 4 classes is | |||
envisioned in order of priority: faster-than-audio, audio, | envisioned in order of priority: faster-than-audio, audio, | |||
video, best-effort, and bulk-transfer. Typically the flows | video, best-effort, and bulk-transfer. Typically the flows | |||
managed by this algorithm would be audio or video in that | managed by this algorithm would be audio or video in that | |||
heirarchy, and feedback flows would be faster-than-audio. | heirarchy, and feedback flows would be faster-than-audio. | |||
10. The algorithm should sense the unexpected lack of backchannel | 10. The algorithm should sense the unexpected lack of backchannel | |||
information as a possible indication of a channel overuse | information as a possible indication of a channel overuse | |||
skipping to change at page 8, line 18 | skipping to change at page 8, line 25 | |||
the flow can fake congestion signals, unless they are passed on a | the flow can fake congestion signals, unless they are passed on a | |||
tamper-proof path. Since some possible algorithms depend on the | tamper-proof path. Since some possible algorithms depend on the | |||
timing of packet arrival, even a traditional protected channel does | timing of packet arrival, even a traditional protected channel does | |||
not fully mitigate such attacks. | not fully mitigate such attacks. | |||
An attack that reduces bandwidth is not necessarily significant, | An attack that reduces bandwidth is not necessarily significant, | |||
since an on-path attacker could break the connection by discarding | since an on-path attacker could break the connection by discarding | |||
all packets. Attacks that increase the percieved available bandwidth | all packets. Attacks that increase the percieved available bandwidth | |||
are concievable, and need to be evaluated. | are concievable, and need to be evaluated. | |||
Algorithm designers SHOULD consider the possibility of malicious on- | Algorithm designers should consider the possibility of malicious on- | |||
path attackers. | path attackers. | |||
5. Acknowledgements | 5. Acknowledgements | |||
This document is the result of discussions in various fora of the | This document is the result of discussions in various fora of the | |||
WebRTC effort, in particular on the rtp-congestion@alvestrand.no | WebRTC effort, in particular on the rtp-congestion@alvestrand.no | |||
mailing list. Many people contributed their thoughts to this. | mailing list. Many people contributed their thoughts to this. | |||
6. References | 6. References | |||
6.1. Normative References | 6.1. Normative References | |||
[I-D.ietf-rtcweb-overview] | [I-D.ietf-rtcweb-overview] | |||
Alvestrand, H., "Overview: Real Time Protocols for Brower- | Alvestrand, H., "Overview: Real Time Protocols for | |||
based Applications", draft-ietf-rtcweb-overview-09 (work | Browser-based Applications", draft-ietf-rtcweb-overview-10 | |||
in progress), February 2014. | (work in progress), June 2014. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | |||
"Extended RTP Profile for Real-time Transport Control | "Extended RTP Profile for Real-time Transport Control | |||
Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, July | Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, July | |||
2006. | 2006. | |||
[RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for | [RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for | |||
Real-time Transport Control Protocol (RTCP)-Based Feedback | Real-time Transport Control Protocol (RTCP)-Based Feedback | |||
(RTP/SAVPF)", RFC 5124, February 2008. | (RTP/SAVPF)", RFC 5124, February 2008. | |||
6.2. Informative References | 6.2. Informative References | |||
[I-D.ietf-rtcweb-data-channel] | [I-D.ietf-rtcweb-data-channel] | |||
Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data | Jesup, R., Loreto, S., and M. Tuexen, "WebRTC Data | |||
Channels", draft-ietf-rtcweb-data-channel-08 (work in | Channels", draft-ietf-rtcweb-data-channel-10 (work in | |||
progress), April 2014. | progress), June 2014. | |||
[I-D.welzl-rmcat-coupled-cc] | [I-D.welzl-rmcat-coupled-cc] | |||
Welzl, M., Islam, S., and S. Gjessing, "Coupled congestion | Welzl, M., Islam, S., and S. Gjessing, "Coupled congestion | |||
control for RTP media", draft-welzl-rmcat-coupled-cc-02 | control for RTP media", draft-welzl-rmcat-coupled-cc-03 | |||
(work in progress), October 2013. | (work in progress), May 2014. | |||
[MPEG_DASH] | [MPEG_DASH] | |||
"Dynamic adaptive streaming over HTTP (DASH) -- Part 1: | "Dynamic adaptive streaming over HTTP (DASH) -- Part 1: | |||
Media presentation description and segment formats", April | Media presentation description and segment formats", April | |||
2012. | 2012. | |||
[RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition | |||
of Explicit Congestion Notification (ECN) to IP", RFC | of Explicit Congestion Notification (ECN) to IP", RFC | |||
3168, September 2001. | 3168, September 2001. | |||
End of changes. 19 change blocks. | ||||
29 lines changed or deleted | 35 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |