draft-ietf-rmcat-coupled-cc-00.txt | draft-ietf-rmcat-coupled-cc-01.txt | |||
---|---|---|---|---|
RTP Media Congestion Avoidance S. Islam | RTP Media Congestion Avoidance S. Islam | |||
Techniques (rmcat) M. Welzl | Techniques (rmcat) M. Welzl | |||
Internet-Draft S. Gjessing | Internet-Draft S. Gjessing | |||
Intended status: Experimental University of Oslo | Intended status: Experimental University of Oslo | |||
Expires: March 17, 2016 September 14, 2015 | Expires: September 22, 2016 March 21, 2016 | |||
Coupled congestion control for RTP media | Coupled congestion control for RTP media | |||
draft-ietf-rmcat-coupled-cc-00 | draft-ietf-rmcat-coupled-cc-01 | |||
Abstract | Abstract | |||
When multiple congestion controlled RTP sessions traverse the same | When multiple congestion controlled RTP sessions traverse the same | |||
network bottleneck, it can be beneficial to combine their controls | network bottleneck, it can be beneficial to combine their controls | |||
such that the total on-the-wire behavior is improved. This document | such that the total on-the-wire behavior is improved. This document | |||
describes such a method for flows that have the same sender, in a way | describes such a method for flows that have the same sender, in a way | |||
that is as flexible and simple as possible while minimizing the | that is as flexible and simple as possible while minimizing the | |||
amount of changes needed to existing RTP applications. It specifies | amount of changes needed to existing RTP applications. It specifies | |||
how to apply the method for the NADA congestion control algorithm. | how to apply the method for both the NADA and Google congestion | |||
control algorithms. | ||||
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 March 17, 2016. | This Internet-Draft will expire on September 22, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
skipping to change at page 2, line 18 ¶ | skipping to change at page 2, line 19 ¶ | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. Architectural overview . . . . . . . . . . . . . . . . . . . . 5 | 4. Architectural overview . . . . . . . . . . . . . . . . . . . . 5 | |||
5. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 5. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.1. SBD . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 5.1. SBD . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.2. FSE . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 5.2. FSE . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.3. Flows . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.3. Flows . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
5.3.1. Example algorithm 1 - Active FSE . . . . . . . . . . . 7 | 5.3.1. Example algorithm 1 - Active FSE . . . . . . . . . . . 8 | |||
5.3.2. Example algorithm 2 - Conservative Active FSE . . . . 8 | 5.3.2. Example algorithm 2 - Conservative Active FSE . . . . 8 | |||
6. Application . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 6. Application . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
6.1. NADA . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 6.1. NADA . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
6.2. General recommendations . . . . . . . . . . . . . . . . . 10 | 6.2. GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
6.3. General recommendations . . . . . . . . . . . . . . . . . 11 | ||||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 11 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . . 11 | 10.1. Normative References . . . . . . . . . . . . . . . . . . . 12 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . . 12 | 10.2. Informative References . . . . . . . . . . . . . . . . . . 12 | |||
Appendix A. Scheduling . . . . . . . . . . . . . . . . . . . . . 13 | Appendix A. Scheduling . . . . . . . . . . . . . . . . . . . . . 13 | |||
Appendix B. Example algorithm - Passive FSE . . . . . . . . . . . 13 | Appendix B. Example algorithm - Passive FSE . . . . . . . . . . . 13 | |||
B.1. Example operation (passive) . . . . . . . . . . . . . . . 15 | B.1. Example operation (passive) . . . . . . . . . . . . . . . 16 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 20 | Appendix C. Change log . . . . . . . . . . . . . . . . . . . . . 20 | |||
C.1. draft-welzl-rmcat-coupled-cc . . . . . . . . . . . . . . . 20 | ||||
C.1.1. Changes from -00 to -01 . . . . . . . . . . . . . . . 20 | ||||
C.1.2. Changes from -01 to -02 . . . . . . . . . . . . . . . 20 | ||||
C.1.3. Changes from -02 to -03 . . . . . . . . . . . . . . . 21 | ||||
C.1.4. Changes from -03 to -04 . . . . . . . . . . . . . . . 21 | ||||
C.1.5. Changes from -04 to -05 . . . . . . . . . . . . . . . 21 | ||||
C.2. draft-ietf-rmcat-coupled-cc . . . . . . . . . . . . . . . 21 | ||||
C.2.1. Changes from draft-welzl-rmcat-coupled-cc-05 . . . . . 21 | ||||
C.2.2. Changes from -00 to -01 . . . . . . . . . . . . . . . 21 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
1. Introduction | 1. Introduction | |||
When there is enough data to send, a congestion controller must | When there is enough data to send, a congestion controller must | |||
increase its sending rate until the path's capacity has been reached; | increase its sending rate until the path's capacity has been reached; | |||
depending on the controller, sometimes the rate is increased further, | depending on the controller, sometimes the rate is increased further, | |||
until packets are ECN-marked or dropped. This process inevitably | until packets are ECN-marked or dropped. This process inevitably | |||
creates undesirable queuing delay -- an effect that is amplified when | creates undesirable queuing delay -- an effect that is amplified when | |||
multiple congestion controlled connections traverse the same network | multiple congestion controlled connections traverse the same network | |||
bottleneck. | bottleneck. | |||
skipping to change at page 3, line 26 ¶ | skipping to change at page 3, line 26 ¶ | |||
single congestion controller. It is hard to implement because it | single congestion controller. It is hard to implement because it | |||
requires an additional congestion controller and removes all per- | requires an additional congestion controller and removes all per- | |||
connection congestion control functionality, which is quite a | connection congestion control functionality, which is quite a | |||
significant change to existing RTP based applications. This document | significant change to existing RTP based applications. This document | |||
presents a method to combine the behavior of congestion control | presents a method to combine the behavior of congestion control | |||
mechanisms that is easier to implement than the Congestion Manager | mechanisms that is easier to implement than the Congestion Manager | |||
[RFC3124] and also requires less significant changes to existing RTP | [RFC3124] and also requires less significant changes to existing RTP | |||
based applications. It attempts to roughly approximate the CM | based applications. It attempts to roughly approximate the CM | |||
behavior by sharing information between existing congestion | behavior by sharing information between existing congestion | |||
controllers. It is able to honor user-specified priorities, which is | controllers. It is able to honor user-specified priorities, which is | |||
required by rtcweb [rtcweb-usecases]. | required by rtcweb [RFC7478]. | |||
2. Definitions | 2. Definitions | |||
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]. | |||
Available Bandwidth: | Available Bandwidth: | |||
The available bandwidth is the nominal link capacity minus the | The available bandwidth is the nominal link capacity minus the | |||
amount of traffic that traversed the link during a certain time | amount of traffic that traversed the link during a certain time | |||
skipping to change at page 5, line 21 ¶ | skipping to change at page 5, line 21 ¶ | |||
it initiates communication with flows and SBD. However, in the | it initiates communication with flows and SBD. However, in the | |||
passive version, it does not actively initiate communication with | passive version, it does not actively initiate communication with | |||
flows and SBD; its only active role is internal state maintenance | flows and SBD; its only active role is internal state maintenance | |||
(e.g., an implementation could use soft state to remove a flow's data | (e.g., an implementation could use soft state to remove a flow's data | |||
after long periods of inactivity). Every time a flow's congestion | after long periods of inactivity). Every time a flow's congestion | |||
control mechanism would normally update its sending rate, the flow | control mechanism would normally update its sending rate, the flow | |||
instead updates information in the FSE and performs a query on the | instead updates information in the FSE and performs a query on the | |||
FSE, leading to a sending rate that can be different from what the | FSE, leading to a sending rate that can be different from what the | |||
congestion controller originally determined. Using information | congestion controller originally determined. Using information | |||
about/from the currently active flows, SBD updates the FSE with the | about/from the currently active flows, SBD updates the FSE with the | |||
correct Flow State Identifiers (FSIs). | correct Flow State Identifiers (FSIs). This document describes both | |||
active and passive versions, however the passive version is put into | ||||
the appendix as it is extremely experimental. | ||||
------- <--- Flow 1 | ------- <--- Flow 1 | |||
| FSE | <--- Flow 2 .. | | FSE | <--- Flow 2 .. | |||
------- <--- .. Flow N | ------- <--- .. Flow N | |||
^ | ^ | |||
| | | | | | |||
------- | | ------- | | |||
| SBD | <-------| | | SBD | <-------| | |||
------- | ------- | |||
skipping to change at page 6, line 26 ¶ | skipping to change at page 6, line 26 ¶ | |||
1. From multiplexing: it can be based on the simple assumption that | 1. From multiplexing: it can be based on the simple assumption that | |||
packets sharing the same five-tuple (IP source and destination | packets sharing the same five-tuple (IP source and destination | |||
address, protocol, and transport layer port number pair) and | address, protocol, and transport layer port number pair) and | |||
having the same Differentiated Services Code Point (DSCP) in the | having the same Differentiated Services Code Point (DSCP) in the | |||
IP header are typically treated in the same way along the path. | IP header are typically treated in the same way along the path. | |||
The latter method is the only one specified in this document: SBD | The latter method is the only one specified in this document: SBD | |||
MAY consider all flows that use the same five-tuple and DSCP to | MAY consider all flows that use the same five-tuple and DSCP to | |||
belong to the same FG. This classification applies to certain | belong to the same FG. This classification applies to certain | |||
tunnels, or RTP flows that are multiplexed over one transport | tunnels, or RTP flows that are multiplexed over one transport | |||
(cf. [transport-multiplex]). In one way or another, such | (cf. [transport-multiplex]). Such multiplexing is also a | |||
multiplexing will probably be recommended for use with rtcweb | recommended usage of RTP in rtcweb [rtcweb-rtp-usage]. | |||
[rtcweb-rtp-usage]. | ||||
2. Via configuration: e.g. by assuming that a common wireless uplink | 2. Via configuration: e.g. by assuming that a common wireless uplink | |||
is also a shared bottleneck. | is also a shared bottleneck. | |||
3. From measurements: e.g. by considering correlations among | 3. From measurements: e.g. by considering correlations among | |||
measured delay and loss as an indication of a shared bottleneck. | measured delay and loss as an indication of a shared bottleneck. | |||
The methods above have some essential trade-offs: e.g., multiplexing | The methods above have some essential trade-offs: e.g., multiplexing | |||
is a completely reliable measure, however it is limited in scope to | is a completely reliable measure, however it is limited in scope to | |||
two end points (i.e., it cannot be applied to couple congestion | two end points (i.e., it cannot be applied to couple congestion | |||
controllers of one sender talking to multiple receivers). A | controllers of one sender talking to multiple receivers). A | |||
measurement-based SBD mechanism is described in [sbd]. Measurements | measurement-based SBD mechanism is described in [I-D.ietf-rmcat-sbd]. | |||
can never be 100% reliable, in particular because they are based on | Measurements can never be 100% reliable, in particular because they | |||
the past but applying coupled congestion control means to make an | are based on the past but applying coupled congestion control means | |||
assumption about the future; it is therefore recommended to implement | to make an assumption about the future; it is therefore recommended | |||
cautionary measures, e.g. by disabling coupled congestion control if | to implement cautionary measures, e.g. by disabling coupled | |||
enabling it causes a significant increase in delay and/or packet | congestion control if enabling it causes a significant increase in | |||
loss. Measurements also take time, which entails a certain delay for | delay and/or packet loss. Measurements also take time, which entails | |||
turning on coupling (refer to [sbd] for details). | a certain delay for turning on coupling (refer to | |||
[I-D.ietf-rmcat-sbd] for details). | ||||
5.2. FSE | 5.2. FSE | |||
The FSE contains a list of all flows that have registered with it. | The FSE contains a list of all flows that have registered with it. | |||
For each flow, it stores the following: | For each flow, it stores the following: | |||
o a unique flow number to identify the flow | o a unique flow number to identify the flow | |||
o the FGI of the FG that it belongs to (based on the definitions in | o the FGI of the FG that it belongs to (based on the definitions in | |||
this document, a flow has only one bottleneck, and can therefore | this document, a flow has only one bottleneck, and can therefore | |||
be in only one FG) | be in only one FG) | |||
o a priority P, which here is assumed to be represented as a | o a priority P, which here is assumed to be represented as a | |||
floating point number in the range from 0.1 (unimportant) to 1 | floating point number in the range from 0.1 (unimportant) to 1 | |||
(very important). A negative value is used to indicate that a | (very important). | |||
flow has terminated | ||||
o The rate used by the flow in bits per second, FSE_R. | o The rate used by the flow in bits per second, FSE_R. | |||
Note that the priority does not need to be a floating point value and | ||||
its value range does not matter for this algorithm: the algorithm | ||||
works with a flow's priority portion of the sum of all priority | ||||
values. Priority values can therefore also be mapped to the "very- | ||||
low", "low", "medium" or "high" priority levels described in | ||||
[I-D.ietf-rtcweb-transports]. | ||||
The FSE can operate on window-based as well as rate-based congestion | The FSE can operate on window-based as well as rate-based congestion | |||
controllers (TEMPORARY NOTE: and probably -- not yet tested -- | controllers (TEMPORARY NOTE: and probably -- not yet tested -- | |||
combinations thereof, with calculations to convert from one to the | combinations thereof, with calculations to convert from one to the | |||
other). In case of a window-based controller, FSE_R is a window, and | other). In case of a window-based controller, FSE_R is a window, and | |||
all the text below should be considered to refer to window, not | all the text below should be considered to refer to window, not | |||
rates. | rates. | |||
In the FSE, each FG contains one static variable S_CR which is meant | In the FSE, each FG contains one static variable S_CR which is the | |||
to be the sum of the calculated rates of all flows in the same FG | sum of the calculated rates of all flows in the same FG. This value | |||
(including the flow itself). This value is used to calculate the | is used to calculate the sending rate. | |||
sending rate. | ||||
The information listed here is enough to implement the sample flow | The information listed here is enough to implement the sample flow | |||
algorithm given below. FSE implementations could easily be extended | algorithm given below. FSE implementations could easily be extended | |||
to store, e.g., a flow's current sending rate for statistics | to store, e.g., a flow's current sending rate for statistics | |||
gathering or future potential optimizations. | gathering or future potential optimizations. | |||
5.3. Flows | 5.3. Flows | |||
Flows register themselves with SBD and FSE when they start, | Flows register themselves with SBD and FSE when they start, | |||
deregister from the FSE when they stop, and carry out an UPDATE | deregister from the FSE when they stop, and carry out an UPDATE | |||
skipping to change at page 10, line 21 ¶ | skipping to change at page 10, line 21 ¶ | |||
end for | end for | |||
6. Application | 6. Application | |||
This section specifies how the FSE can be applied to specific | This section specifies how the FSE can be applied to specific | |||
congestion control mechanisms and makes general recommendations that | congestion control mechanisms and makes general recommendations that | |||
facilitate applying the FSE to future congestion controls. | facilitate applying the FSE to future congestion controls. | |||
6.1. NADA | 6.1. NADA | |||
Network-Assisted Dynamic Adapation (NADA) [nada] is a congestion | Network-Assisted Dynamic Adapation (NADA) [I-D.ietf-rmcat-nada] is a | |||
control scheme for rtcweb. It calculates a reference rate R_n upon | congestion control scheme for rtcweb. It calculates a reference rate | |||
receiving an acknowledgment, and then, based on the reference rate, | r_ref upon receiving an acknowledgment, and then, based on the | |||
it calculates a video target rate R_v and a sending rate for the | reference rate, it calculates a video target rate r_vin and a sending | |||
flows, R_s. | rate for the flows, r_send. | |||
When applying the FSE to NADA, the UPDATE function call described in | When applying the FSE to NADA, the UPDATE function call described in | |||
Section 5.3 gives the FSE NADA's reference rate R_n. The recommended | Section 5.3 gives the FSE NADA's reference rate r_ref. The | |||
algorithm for NADA is the Active FSE in Section 5.3.1. In step 3 | recommended algorithm for NADA is the Active FSE in Section 5.3.1. | |||
(c), when the FSE_R(i) is "sent" to the flow i, this means updating | In step 3 (c), when the FSE_R(i) is "sent" to the flow i, this means | |||
R_v and R_s of flow i with the value of FSE_R(i). | updating r_ref(r_vin and r_send) of flow i with the value of | |||
FSE_R(i). | ||||
NADA simulation results are available from | 6.2. GCC | |||
http://heim.ifi.uio.no/safiquli/coupled-cc/. The next version of | ||||
this document will refer to a technical report that will be made | ||||
available at the same URL. | ||||
6.2. General recommendations | Google Congestion Control (GCC) [I-D.ietf-rmcat-gcc] is another | |||
congestion control scheme for rtcweb. The rate control of GCC | ||||
employs two parts: controlling the bandwidth estimate based on delay, | ||||
and controlling the bandwidth estimate based on loss. Both are | ||||
designed to estimate the available bandwidth, A_hat. | ||||
When applying the FSE to GCC, the UPDATE function call described in | ||||
Section 5.3 gives the FSE GCC's estimate of available bandwidth | ||||
A_hat. The recommended algorithm for GCC is the Active FSE in | ||||
Section 5.3.1. In step 3 (c), when the FSE_R(i) is "sent" to the | ||||
flow i, this means updating A_hat of flow i with the value of | ||||
FSE_R(i). | ||||
6.3. General recommendations | ||||
This section will provides general advice for applying the FSE to | This section will provides general advice for applying the FSE to | |||
congestion control mechanisms. TEMPORARY NOTE: Future versions of | congestion control mechanisms. TEMPORARY NOTE: Future versions of | |||
this document will contain a longer list. | this document will contain a longer list. | |||
Receiver-side calculations: | Receiver-side calculations: | |||
When receiver-side calculations make assumptions about the rate | When receiver-side calculations make assumptions about the rate | |||
of the sender, the calculations need to be synchronized or the | of the sender, the calculations need to be synchronized or the | |||
receiver needs to be updated accordingly. This applies to TFRC | receiver needs to be updated accordingly. This applies to TFRC | |||
[RFC5348], for example, where simulations showed somewhat less | [RFC5348], for example, where simulations showed somewhat less | |||
favorable results when using the FSE without a receiver-side | favorable results when using the FSE without a receiver-side | |||
change [fse]. | change [fse]. | |||
7. Acknowledgements | 7. Acknowledgements | |||
This document has benefitted from discussions with and feedback from | This document has benefitted from discussions with and feedback from | |||
David Hayes, Mirja Kuehlewind, Andreas Petlund, David Ros (who also | David Hayes, Mirja Kuehlewind, Karen Nielsen, Andreas Petlund, David | |||
gave the FSE its name), Zaheduzzaman Sarker and Varun Singh. The | Ros (who also gave the FSE its name), Zaheduzzaman Sarker, Varun | |||
authors would like to thank Xiaoqing Zhu for helping with NADA. | Singh and Kristian Hiorth. The authors would like to thank Xiaoqing | |||
Zhu and Stefan Holmer for helping with NADA and GCC. | ||||
This work was partially funded by the European Community under its | This work was partially funded by the European Community under its | |||
Seventh Framework Programme through the Reducing Internet Transport | Seventh Framework Programme through the Reducing Internet Transport | |||
Latency (RITE) project (ICT-317700). | Latency (RITE) project (ICT-317700). | |||
8. IANA Considerations | 8. IANA Considerations | |||
This memo includes no request to IANA. | This memo includes no request to IANA. | |||
9. Security Considerations | 9. Security Considerations | |||
skipping to change at page 12, line 17 ¶ | skipping to change at page 12, line 32 ¶ | |||
RFC 3124, DOI 10.17487/RFC3124, June 2001, | RFC 3124, DOI 10.17487/RFC3124, June 2001, | |||
<http://www.rfc-editor.org/info/rfc3124>. | <http://www.rfc-editor.org/info/rfc3124>. | |||
[RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP | [RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP | |||
Friendly Rate Control (TFRC): Protocol Specification", | Friendly Rate Control (TFRC): Protocol Specification", | |||
RFC 5348, DOI 10.17487/RFC5348, September 2008, | RFC 5348, DOI 10.17487/RFC5348, September 2008, | |||
<http://www.rfc-editor.org/info/rfc5348>. | <http://www.rfc-editor.org/info/rfc5348>. | |||
10.2. Informative References | 10.2. Informative References | |||
[I-D.ietf-rmcat-gcc] | ||||
Holmer, S., Lundin, H., Carlucci, G., Cicco, L., and S. | ||||
Mascolo, "A Google Congestion Control Algorithm for Real- | ||||
Time Communication", draft-ietf-rmcat-gcc-01 (work in | ||||
progress), October 2015. | ||||
[I-D.ietf-rmcat-nada] | ||||
Zhu, X., Pan, R., Ramalho, M., Cruz, S., Jones, P., Fu, | ||||
J., D'Aronco, S., and C. Ganzhorn, "NADA: A Unified | ||||
Congestion Control Scheme for Real-Time Media", | ||||
draft-ietf-rmcat-nada-02 (work in progress), March 2016. | ||||
[I-D.ietf-rmcat-sbd] | ||||
Hayes, D., Ferlin, S., Welzl, M., and K. Hiorth, "Shared | ||||
Bottleneck Detection for Coupled Congestion Control for | ||||
RTP Media.", draft-ietf-rmcat-sbd-04 (work in progress), | ||||
March 2016. | ||||
[I-D.ietf-rtcweb-transports] | ||||
Alvestrand, H., "Transports for WebRTC", | ||||
draft-ietf-rtcweb-transports-11.txt (work in progress), | ||||
January 2016. | ||||
[RFC7478] Holmberg, C., Hakansson, S., and G. Eriksson, "Web Real- | ||||
Time Communication Use Cases and Requirements", RFC 7478, | ||||
DOI 10.17487/RFC7478, March 2015, | ||||
<http://www.rfc-editor.org/info/rfc7478>. | ||||
[fse] Islam, S., Welzl, M., Gjessing, S., and N. Khademi, | [fse] Islam, S., Welzl, M., Gjessing, S., and N. Khademi, | |||
"Coupled Congestion Control for RTP Media", ACM SIGCOMM | "Coupled Congestion Control for RTP Media", ACM SIGCOMM | |||
Capacity Sharing Workshop (CSWS 2014); extended version | Capacity Sharing Workshop (CSWS 2014) and ACM SIGCOMM CCR | |||
available as a technical report from | 44(4) 2014; extended version available as a technical | |||
report from | ||||
http://safiquli.at.ifi.uio.no/paper/fse-tech-report.pdf , | http://safiquli.at.ifi.uio.no/paper/fse-tech-report.pdf , | |||
2014. | 2014. | |||
[nada] Zhu, X., Pan, R., Ramalho, M., Mena, S., Ganzhorn, C., | ||||
Jones, P., and S. De Aronco, "NADA: A Unified Congestion | ||||
Control Scheme for Real-Time Media", | ||||
draft-ietf-rmcat-nada-00 (work in progress), April 2015. | ||||
[rtcweb-rtp-usage] | [rtcweb-rtp-usage] | |||
Perkins, C., Westerlund, M., and J. Ott, "Web Real-Time | Perkins, C., Westerlund, M., and J. Ott, "Web Real-Time | |||
Communication (WebRTC): Media Transport and Use of RTP", | Communication (WebRTC): Media Transport and Use of RTP", | |||
draft-ietf-rtcweb-rtp-usage-18.txt (work in progress), | draft-ietf-rtcweb-rtp-usage-26.txt (work in progress), | |||
October 2014. | March 2016. | |||
[rtcweb-usecases] | ||||
Holmberg, C., Hakansson, S., and G. Eriksson, "Web Real- | ||||
Time Communication Use-cases and Requirements", | ||||
draft-ietf-rtcweb-use-cases-and-requirements-14.txt (work | ||||
in progress), February 2014. | ||||
[sbd] Hayes, D., Ferlin, S., and M. Welzl, "Shared Bottleneck | ||||
Detection for Coupled Congestion Control for RTP Media", | ||||
draft-ietf-rmcat-sbd-00.txt (work in progress), May 2015. | ||||
[transport-multiplex] | [transport-multiplex] | |||
Westerlund, M. and C. Perkins, "Multiple RTP Sessions on a | Westerlund, M. and C. Perkins, "Multiple RTP Sessions on a | |||
Single Lower-Layer Transport", | Single Lower-Layer Transport", | |||
draft-westerlund-avtcore-transport-multiplexing-07.txt | draft-westerlund-avtcore-transport-multiplexing-07.txt | |||
(work in progress), October 2013. | (work in progress), October 2013. | |||
Appendix A. Scheduling | Appendix A. Scheduling | |||
When connections originate from the same host, it would be possible | When connections originate from the same host, it would be possible | |||
skipping to change at page 20, line 5 ¶ | skipping to change at page 20, line 25 ¶ | |||
3 e) FSE_R(f) = DR(f) = 9.33. | 3 e) FSE_R(f) = DR(f) = 9.33. | |||
The resulting FSE looks as follows: | The resulting FSE looks as follows: | |||
------------------------------------------- | ------------------------------------------- | |||
| # | FGI | P | FSE_R | DR | Rate | | | # | FGI | P | FSE_R | DR | Rate | | |||
| | | | | | | | | | | | | | | | |||
| 2 | 1 | 0.5 | 9.33 | 9.33 | 9.33 | | | 2 | 1 | 0.5 | 9.33 | 9.33 | 9.33 | | |||
------------------------------------------- | ------------------------------------------- | |||
S_CR = 9.33, TLO = 0 | S_CR = 9.33, TLO = 0 | |||
Appendix C. Change log | ||||
C.1. draft-welzl-rmcat-coupled-cc | ||||
C.1.1. Changes from -00 to -01 | ||||
o Added change log. | ||||
o Updated the example algorithm and its operation. | ||||
C.1.2. Changes from -01 to -02 | ||||
o Included an active version of the algorithm which is simpler. | ||||
o Replaced "greedy flow" with "bulk data transfer" and "non-greedy" | ||||
with "application-limited". | ||||
o Updated new_CR to CC_R, and CR to FSE_R for better understanding. | ||||
C.1.3. Changes from -02 to -03 | ||||
o Included an active conservative version of the algorithm which | ||||
reduces queue growth and packet loss; added a reference to a | ||||
technical report that shows these benefits with simulations. | ||||
o Moved the passive variant of the algorithm to appendix. | ||||
C.1.4. Changes from -03 to -04 | ||||
o Extended SBD section. | ||||
o Added a note about window-based controllers. | ||||
C.1.5. Changes from -04 to -05 | ||||
o Added a section about applying the FSE to specific congestion | ||||
control algorithms, with a subsection specifying its use with | ||||
NADA. | ||||
C.2. draft-ietf-rmcat-coupled-cc | ||||
C.2.1. Changes from draft-welzl-rmcat-coupled-cc-05 | ||||
o Moved scheduling section to the appendix. | ||||
C.2.2. Changes from -00 to -01 | ||||
o Included how to apply the algorithm to GCC. | ||||
o Updated variable names of NADA to be in line with the latest | ||||
version. | ||||
o Added a reference to [I-D.ietf-rtcweb-transports] to make a | ||||
connection to the prioritization text there. | ||||
Authors' Addresses | Authors' Addresses | |||
Safiqul Islam | Safiqul Islam | |||
University of Oslo | University of Oslo | |||
PO Box 1080 Blindern | PO Box 1080 Blindern | |||
Oslo, N-0316 | Oslo, N-0316 | |||
Norway | Norway | |||
Phone: +47 22 84 08 37 | Phone: +47 22 84 08 37 | |||
Email: safiquli@ifi.uio.no | Email: safiquli@ifi.uio.no | |||
End of changes. 26 change blocks. | ||||
66 lines changed or deleted | 166 lines changed or added | |||
This html diff was produced by rfcdiff 1.44. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |