draft-ietf-rmcat-coupled-cc-02.txt | draft-ietf-rmcat-coupled-cc-03.txt | |||
---|---|---|---|---|
RTP Media Congestion Avoidance Techniques (rmcat) S. Islam | RTP Media Congestion Avoidance Techniques (rmcat) S. Islam | |||
Internet-Draft M. Welzl | Internet-Draft M. Welzl | |||
Intended status: Experimental S. Gjessing | Intended status: Experimental S. Gjessing | |||
Expires: October 16, 2016 University of Oslo | Expires: January 29, 2017 University of Oslo | |||
April 14, 2016 | July 28, 2016 | |||
Coupled congestion control for RTP media | Coupled congestion control for RTP media | |||
draft-ietf-rmcat-coupled-cc-02 | draft-ietf-rmcat-coupled-cc-03 | |||
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 both the NADA and Google congestion | how to apply the method for both the NADA and Google congestion | |||
skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
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 16, 2016. | This Internet-Draft will expire on January 29, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 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 | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. Architectural overview . . . . . . . . . . . . . . . . . . . 4 | 4. Architectural overview . . . . . . . . . . . . . . . . . . . 4 | |||
5. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 5. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
5.1. SBD . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 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 . . . . . . . . . . 7 | |||
5.3.2. Example algorithm 2 - Conservative Active FSE . . . . 8 | 5.3.2. Example algorithm 2 - Conservative Active FSE . . . . 8 | |||
6. Application . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6. Application . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
6.1. NADA . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 6.1. NADA . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
6.2. GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 6.2. GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
6.3. General recommendations . . . . . . . . . . . . . . . . . 10 | 6.3. General recommendations . . . . . . . . . . . . . . . . . 10 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 7. Expected feedback from experiments . . . . . . . . . . . . . 11 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 12 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 12 | |||
Appendix A. Scheduling . . . . . . . . . . . . . . . . . . . . . 13 | 11.2. Informative References . . . . . . . . . . . . . . . . . 12 | |||
Appendix B. Example algorithm - Passive FSE . . . . . . . . . . 13 | Appendix A. Scheduling . . . . . . . . . . . . . . . . . . . . . 14 | |||
B.1. Example operation (passive) . . . . . . . . . . . . . . . 16 | Appendix B. Example algorithm - Passive FSE . . . . . . . . . . 14 | |||
Appendix C. Change log . . . . . . . . . . . . . . . . . . . . . 20 | B.1. Example operation (passive) . . . . . . . . . . . . . . . 17 | |||
C.1. draft-welzl-rmcat-coupled-cc . . . . . . . . . . . . . . 20 | Appendix C. Change log . . . . . . . . . . . . . . . . . . . . . 21 | |||
C.1.1. Changes from -00 to -01 . . . . . . . . . . . . . . . 20 | C.1. draft-welzl-rmcat-coupled-cc . . . . . . . . . . . . . . 21 | |||
C.1.2. Changes from -01 to -02 . . . . . . . . . . . . . . . 20 | C.1.1. Changes from -00 to -01 . . . . . . . . . . . . . . . 21 | |||
C.1.3. Changes from -02 to -03 . . . . . . . . . . . . . . . 20 | C.1.2. Changes from -01 to -02 . . . . . . . . . . . . . . . 21 | |||
C.1.4. Changes from -03 to -04 . . . . . . . . . . . . . . . 21 | C.1.3. Changes from -02 to -03 . . . . . . . . . . . . . . . 21 | |||
C.1.5. Changes from -04 to -05 . . . . . . . . . . . . . . . 21 | C.1.4. Changes from -03 to -04 . . . . . . . . . . . . . . . 22 | |||
C.2. draft-ietf-rmcat-coupled-cc . . . . . . . . . . . . . . . 21 | C.1.5. Changes from -04 to -05 . . . . . . . . . . . . . . . 22 | |||
C.2.1. Changes from draft-welzl-rmcat-coupled-cc-05 . . . . 21 | C.2. draft-ietf-rmcat-coupled-cc . . . . . . . . . . . . . . . 22 | |||
C.2.2. Changes from -00 to -01 . . . . . . . . . . . . . . . 21 | C.2.1. Changes from draft-welzl-rmcat-coupled-cc-05 . . . . 22 | |||
C.2.3. Changes from -01 to -02 . . . . . . . . . . . . . . . 21 | C.2.2. Changes from -00 to -01 . . . . . . . . . . . . . . . 22 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | C.2.3. Changes from -01 to -02 . . . . . . . . . . . . . . . 22 | |||
C.2.4. Changes from -02 to -03 . . . . . . . . . . . . . . . 22 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
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 7, line 13 ¶ | skipping to change at page 7, line 19 ¶ | |||
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 | 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 | its value range does not matter for this algorithm: the algorithm | |||
works with a flow's priority portion of the sum of all priority | works with a flow's priority portion of the sum of all priority | |||
values. Priorities can therefore be mapped to the "very-low", "low", | values. Priorities can therefore be mapped to the "very-low", "low", | |||
"medium" or "high" priority levels described in | "medium" or "high" priority levels described in | |||
[I-D.ietf-rtcweb-transports] using the values 1, 2, 4 and 8, | [I-D.ietf-rtcweb-transports] using the values 1, 2, 4 and 8, | |||
respectively. | respectively. | |||
The FSE can operate on window-based as well as rate-based congestion | ||||
controllers. 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 rates. | ||||
In the FSE, each FG contains one static variable S_CR which is the | In the FSE, each FG contains one static variable S_CR which is the | |||
sum of the calculated rates of all flows in the same FG. This value | sum of the calculated rates of all flows in the same FG. This value | |||
is used to calculate the sending rate. | is used to calculate the 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 | |||
skipping to change at page 8, line 5 ¶ | skipping to change at page 8, line 5 ¶ | |||
This algorithm was designed to be the simplest possible method to | This algorithm was designed to be the simplest possible method to | |||
assign rates according to the priorities of flows. Simulations | assign rates according to the priorities of flows. Simulations | |||
results in [fse] indicate that it does however not significantly | results in [fse] indicate that it does however not significantly | |||
reduce queuing delay and packet loss. | reduce queuing delay and packet loss. | |||
(1) When a flow f starts, it registers itself with SBD and the FSE. | (1) When a flow f starts, it registers itself with SBD and the FSE. | |||
FSE_R is initialized with the congestion controller's initial | FSE_R is initialized with the congestion controller's initial | |||
rate. SBD will assign the correct FGI. When a flow is assigned | rate. SBD will assign the correct FGI. When a flow is assigned | |||
an FGI, it adds its FSE_R to S_CR. | an FGI, it adds its FSE_R to S_CR. | |||
(2) When a flow f stops, its entry is removed from the list. | (2) When a flow f stops or pauses, its entry is removed from the | |||
list. | ||||
(3) Every time the congestion controller of the flow f determines a | (3) Every time the congestion controller of the flow f determines a | |||
new sending rate CC_R, the flow calls UPDATE, which carries out | new sending rate CC_R, the flow calls UPDATE, which carries out | |||
the tasks listed below to derive the new sending rates for all | the tasks listed below to derive the new sending rates for all | |||
the flows in the FG. A flow's UPDATE function uses a local | the flows in the FG. A flow's UPDATE function uses a local | |||
(i.e. per-flow) temporary variable S_P, which is the sum of all | (i.e. per-flow) temporary variable S_P, which is the sum of all | |||
the priorities. | the priorities. | |||
(a) It updates S_CR. | (a) It updates S_CR. | |||
skipping to change at page 8, line 45 ¶ | skipping to change at page 8, line 46 ¶ | |||
This algorithm extends algorithm 1 to conservatively emulate the | This algorithm extends algorithm 1 to conservatively emulate the | |||
behavior of a single flow by proportionally reducing the aggregate | behavior of a single flow by proportionally reducing the aggregate | |||
rate on congestion. Simulations results in [fse] indicate that it | rate on congestion. Simulations results in [fse] indicate that it | |||
can significantly reduce queuing delay and packet loss. | can significantly reduce queuing delay and packet loss. | |||
(1) When a flow f starts, it registers itself with SBD and the FSE. | (1) When a flow f starts, it registers itself with SBD and the FSE. | |||
FSE_R is initialized with the congestion controller's initial | FSE_R is initialized with the congestion controller's initial | |||
rate. SBD will assign the correct FGI. When a flow is assigned | rate. SBD will assign the correct FGI. When a flow is assigned | |||
an FGI, it adds its FSE_R to S_CR. | an FGI, it adds its FSE_R to S_CR. | |||
(2) When a flow f stops, its entry is removed from the list. | (2) When a flow f stops or pauses, its entry is removed from the | |||
list. | ||||
(3) Every time the congestion controller of the flow f determines a | (3) Every time the congestion controller of the flow f determines a | |||
new sending rate CC_R, the flow calls UPDATE, which carries out | new sending rate CC_R, the flow calls UPDATE, which carries out | |||
the tasks listed below to derive the new sending rates for all | the tasks listed below to derive the new sending rates for all | |||
the flows in the FG. A flow's UPDATE function uses a local | the flows in the FG. A flow's UPDATE function uses a local | |||
(i.e. per-flow) temporary variable S_P, which is the sum of all | (i.e. per-flow) temporary variable S_P, which is the sum of all | |||
the priorities, and a local variable DELTA, which is used to | the priorities, and a local variable DELTA, which is used to | |||
calculate the difference between CC_R and the previously stored | calculate the difference between CC_R and the previously stored | |||
FSE_R. To prevent flows from either ignoring congestion or | FSE_R. To prevent flows from either ignoring congestion or | |||
overreacting, a timer keeps them from changing their rates | overreacting, a timer keeps them from changing their rates | |||
skipping to change at page 10, line 48 ¶ | skipping to change at page 11, line 5 ¶ | |||
congestion control mechanisms. | congestion control mechanisms. | |||
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. Expected feedback from experiments | |||
The algorithm described in this memo has so far been evaluated using | ||||
simulations covering all the tests for more than one flow from | ||||
[I-D.ietf-rmcat-eval-test] (see [IETF-93], [IETF-94]). Experiments | ||||
should confirm these results using at least one of the same | ||||
congestion control algorithms (GCC or NADA) with real-life code | ||||
(e.g., browsers communicating over an emulated network covering the | ||||
conditions in [I-D.ietf-rmcat-eval-test]. The tests with real-life | ||||
code should be repeated afterwards in real network environments and | ||||
monitored. Implementers and testers are invited to document their | ||||
findings in an Internet draft. | ||||
8. 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, Karen Nielsen, Andreas Petlund, David | David Hayes, Mirja Kuehlewind, Karen Nielsen, Andreas Petlund, David | |||
Ros (who also gave the FSE its name), Zaheduzzaman Sarker, Varun | Ros (who also gave the FSE its name), Zaheduzzaman Sarker, Varun | |||
Singh and Kristian Hiorth. The authors would like to thank Xiaoqing | Singh, Anna Brunstrom, Martin Stiemerling, and Kristian Hiorth. The | |||
Zhu and Stefan Holmer for helping with NADA and GCC. | 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 | 9. IANA Considerations | |||
This memo includes no request to IANA. | This memo includes no request to IANA. | |||
9. Security Considerations | 10. Security Considerations | |||
In scenarios where the architecture described in this document is | In scenarios where the architecture described in this document is | |||
applied across applications, various cheating possibilities arise: | applied across applications, various cheating possibilities arise: | |||
e.g., supporting wrong values for the calculated rate, the desired | e.g., supporting wrong values for the calculated rate, the desired | |||
rate, or the priority of a flow. In the worst case, such cheating | rate, or the priority of a flow. In the worst case, such cheating | |||
could either prevent other flows from sending or make them send at a | could either prevent other flows from sending or make them send at a | |||
rate that is unreasonably large. The end result would be unfair | rate that is unreasonably large. The end result would be unfair | |||
behavior at the network bottleneck, akin to what could be achieved | behavior at the network bottleneck, akin to what could be achieved | |||
with any UDP based application. Hence, since this is no worse than | with any UDP based application. Hence, since this is no worse than | |||
UDP in general, there seems to be no significant harm in using this | UDP in general, there seems to be no significant harm in using this | |||
skipping to change at page 11, line 38 ¶ | skipping to change at page 12, line 9 ¶ | |||
In the case of a single-user system, it should also be in the | In the case of a single-user system, it should also be in the | |||
interest of any application programmer to give the user the best | interest of any application programmer to give the user the best | |||
possible experience by using reasonable flow priorities or even | possible experience by using reasonable flow priorities or even | |||
letting the user choose them. In a multi-user system, this interest | letting the user choose them. In a multi-user system, this interest | |||
may not be given, and one could imagine the worst case of an "arms | may not be given, and one could imagine the worst case of an "arms | |||
race" situation, where applications end up setting their priorities | race" situation, where applications end up setting their priorities | |||
to the maximum value. If all applications do this, the end result is | to the maximum value. If all applications do this, the end result is | |||
a fair allocation in which the priority mechanism is implicitly | a fair allocation in which the priority mechanism is implicitly | |||
eliminated, and no major harm is done. | eliminated, and no major harm is done. | |||
10. References | 11. References | |||
10.1. Normative References | 11.1. Normative References | |||
[I-D.ietf-rmcat-gcc] | [I-D.ietf-rmcat-gcc] | |||
Holmer, S., Lundin, H., Carlucci, G., Cicco, L., and S. | Holmer, S., Lundin, H., Carlucci, G., Cicco, L., and S. | |||
Mascolo, "A Google Congestion Control Algorithm for Real- | Mascolo, "A Google Congestion Control Algorithm for Real- | |||
Time Communication", draft-ietf-rmcat-gcc-01 (work in | Time Communication", draft-ietf-rmcat-gcc-02 (work in | |||
progress), October 2015. | progress), July 2016. | |||
[I-D.ietf-rmcat-nada] | [I-D.ietf-rmcat-nada] | |||
Zhu, X., Pan, R., Ramalho, M., Cruz, S., Jones, P., Fu, | Zhu, X., Pan, R., Ramalho, D., Cruz, S., Jones, P., Fu, | |||
J., D'Aronco, S., and C. Ganzhorn, "NADA: A Unified | J., D'Aronco, S., and C. Ganzhorn, "NADA: A Unified | |||
Congestion Control Scheme for Real-Time Media", draft- | Congestion Control Scheme for Real-Time Media", draft- | |||
ietf-rmcat-nada-02 (work in progress), March 2016. | ietf-rmcat-nada-02 (work in progress), March 2016. | |||
[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, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, | |||
RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3124] Balakrishnan, H. and S. Seshan, "The Congestion Manager", | [RFC3124] Balakrishnan, H. and S. Seshan, "The Congestion Manager", | |||
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", RFC | Friendly Rate Control (TFRC): Protocol Specification", | |||
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 | 11.2. Informative References | |||
[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) and ACM SIGCOMM CCR | Capacity Sharing Workshop (CSWS 2014) and ACM SIGCOMM CCR | |||
44(4) 2014; extended version available as a technical | 44(4) 2014; extended version available as a technical | |||
report from | 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. | |||
[fse-noms] | [fse-noms] | |||
Islam, S., Welzl, M., Hayes, D., and S. Gjessing, | Islam, S., Welzl, M., Hayes, D., and S. Gjessing, | |||
"Managing Real-Time Media Flows through a Flow State | "Managing Real-Time Media Flows through a Flow State | |||
Exchange", IEEE NOMS 2016, Istanbul, Turkey , 2016. | Exchange", IEEE NOMS 2016, Istanbul, Turkey , 2016. | |||
[I-D.ietf-rmcat-eval-test] | ||||
Sarker, Z., Singh, V., Zhu, X., and D. Ramalho, "Test | ||||
Cases for Evaluating RMCAT Proposals", draft-ietf-rmcat- | ||||
eval-test-03 (work in progress), March 2016. | ||||
[I-D.ietf-rmcat-sbd] | [I-D.ietf-rmcat-sbd] | |||
Hayes, D., Ferlin, S., Welzl, M., and K. Hiorth, "Shared | Hayes, D., Ferlin, S., Welzl, M., and K. Hiorth, "Shared | |||
Bottleneck Detection for Coupled Congestion Control for | Bottleneck Detection for Coupled Congestion Control for | |||
RTP Media.", draft-ietf-rmcat-sbd-04 (work in progress), | RTP Media.", draft-ietf-rmcat-sbd-04 (work in progress), | |||
March 2016. | March 2016. | |||
[I-D.ietf-rtcweb-transports] | [I-D.ietf-rtcweb-transports] | |||
Alvestrand, H., "Transports for WebRTC", Internet-draft | Alvestrand, H., "Transports for WebRTC", Internet-draft | |||
draft-ietf-rtcweb-transports-11.txt, January 2016. | draft-ietf-rtcweb-transports-11.txt, January 2016. | |||
[IETF-93] Islam, S., Welzl, M., and S. Gjessing, "Updates on Coupled | ||||
Congestion Control for RTP Media", July 2015, | ||||
<http://www.ietf.org/proceedings/93/slides/ | ||||
slides-93-rmcat-3.pptx>. | ||||
[IETF-94] Islam, S., Welzl, M., and S. Gjessing, "Updates on Coupled | ||||
Congestion Control for RTP Media", November 2015, | ||||
<https://www.ietf.org/proceedings/94/slides/slides-94- | ||||
rmcat-5.pdf>. | ||||
[RFC7478] Holmberg, C., Hakansson, S., and G. Eriksson, "Web Real- | [RFC7478] Holmberg, C., Hakansson, S., and G. Eriksson, "Web Real- | |||
Time Communication Use Cases and Requirements", RFC 7478, | Time Communication Use Cases and Requirements", RFC 7478, | |||
DOI 10.17487/RFC7478, March 2015, | DOI 10.17487/RFC7478, March 2015, | |||
<http://www.rfc-editor.org/info/rfc7478>. | <http://www.rfc-editor.org/info/rfc7478>. | |||
[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", | |||
Internet-draft draft-ietf-rtcweb-rtp-usage-26.txt, March | Internet-draft draft-ietf-rtcweb-rtp-usage-26.txt, March | |||
2016. | 2016. | |||
skipping to change at page 14, line 23 ¶ | skipping to change at page 15, line 5 ¶ | |||
bandwidth from application-limited or terminated flows) which is | bandwidth from application-limited or terminated flows) which is | |||
initialized to 0. For the passive version, S_CR is limited to | initialized to 0. For the passive version, S_CR is limited to | |||
increase or decrease as conservatively as a flow's congestion | increase or decrease as conservatively as a flow's congestion | |||
controller decides in order to prohibit sudden rate jumps. | controller decides in order to prohibit sudden rate jumps. | |||
(1) When a flow f starts, it registers itself with SBD and the FSE. | (1) When a flow f starts, it registers itself with SBD and the FSE. | |||
FSE_R and DR are initialized with the congestion controller's | FSE_R and DR are initialized with the congestion controller's | |||
initial rate. SBD will assign the correct FGI. When a flow is | initial rate. SBD will assign the correct FGI. When a flow is | |||
assigned an FGI, it adds its FSE_R to S_CR. | assigned an FGI, it adds its FSE_R to S_CR. | |||
(2) When a flow f stops, it sets its DR to 0 and sets P to -1. | (2) When a flow f stops or pauses, it sets its DR to 0 and sets P to | |||
-1. | ||||
(3) Every time the congestion controller of the flow f determines a | (3) Every time the congestion controller of the flow f determines a | |||
new sending rate CC_R, assuming the flow's new desired rate | new sending rate CC_R, assuming the flow's new desired rate | |||
new_DR to be "infinity" in case of a bulk data transfer with an | new_DR to be "infinity" in case of a bulk data transfer with an | |||
unknown maximum rate, the flow calls UPDATE, which carries out | unknown maximum rate, the flow calls UPDATE, which carries out | |||
the tasks listed below to derive the flow's new sending rate, | the tasks listed below to derive the flow's new sending rate, | |||
Rate. A flow's UPDATE function uses a few local (i.e. per-flow) | Rate. A flow's UPDATE function uses a few local (i.e. per-flow) | |||
temporary variables, which are all initialized to 0: DELTA, | temporary variables, which are all initialized to 0: DELTA, | |||
new_S_CR and S_P. | new_S_CR and S_P. | |||
skipping to change at page 21, line 43 ¶ | skipping to change at page 22, line 41 ¶ | |||
connection to the prioritization text there. | connection to the prioritization text there. | |||
C.2.3. Changes from -01 to -02 | C.2.3. Changes from -01 to -02 | |||
o Minor changes. | o Minor changes. | |||
o Moved references of NADA and GCC from informative to normative. | o Moved references of NADA and GCC from informative to normative. | |||
o Added a reference for the passive variant of the algorithm. | o Added a reference for the passive variant of the algorithm. | |||
Authors' Addresses | C.2.4. Changes from -02 to -03 | |||
o Minor changes. | ||||
o Added a section about expected feedback from experiments. | ||||
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 | |||
Michael Welzl | Michael Welzl | |||
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 85 24 20 | Phone: +47 22 85 24 20 | |||
Email: michawe@ifi.uio.no | Email: michawe@ifi.uio.no | |||
Stein Gjessing | Stein Gjessing | |||
End of changes. 27 change blocks. | ||||
52 lines changed or deleted | 87 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |