draft-ietf-rmcat-coupled-cc-06.txt | draft-ietf-rmcat-coupled-cc-07.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: September 29, 2017 University of Oslo | Expires: March 19, 2018 University of Oslo | |||
March 28, 2017 | September 15, 2017 | |||
Coupled congestion control for RTP media | Coupled congestion control for RTP media | |||
draft-ietf-rmcat-coupled-cc-06 | draft-ietf-rmcat-coupled-cc-07 | |||
Abstract | Abstract | |||
When multiple congestion controlled RTP sessions traverse the same | When multiple congestion controlled Real-time Transport Protocol | |||
network bottleneck, combining their controls can improve the total | (RTP) sessions traverse the same network bottleneck, combining their | |||
on-the-wire behavior in terms of delay, loss and fairness. This | controls can improve the total on-the-wire behavior in terms of | |||
document describes such a method for flows that have the same sender, | delay, loss and fairness. This document describes such a method for | |||
in a way that is as flexible and simple as possible while minimizing | flows that have the same sender, in a way that is as flexible and | |||
the amount of changes needed to existing RTP applications. It | simple as possible while minimizing the amount of changes needed to | |||
specifies how to apply the method for the NADA congestion control | existing RTP applications. It specifies how to apply the method for | |||
the Network-Assisted Dynamic Adaptation (NADA) congestion control | ||||
algorithm, and provides suggestions on how to apply it to other | algorithm, and provides suggestions on how to apply it to other | |||
congestion control algorithms. | 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 September 29, 2017. | This Internet-Draft will expire on March 19, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
skipping to change at page 2, line 51 ¶ | skipping to change at page 3, line 4 ¶ | |||
D.1.4. Changes from -03 to -04 . . . . . . . . . . . . . . . 24 | D.1.4. Changes from -03 to -04 . . . . . . . . . . . . . . . 24 | |||
D.1.5. Changes from -04 to -05 . . . . . . . . . . . . . . . 24 | D.1.5. Changes from -04 to -05 . . . . . . . . . . . . . . . 24 | |||
D.2. draft-ietf-rmcat-coupled-cc . . . . . . . . . . . . . . . 24 | D.2. draft-ietf-rmcat-coupled-cc . . . . . . . . . . . . . . . 24 | |||
D.2.1. Changes from draft-welzl-rmcat-coupled-cc-05 . . . . 24 | D.2.1. Changes from draft-welzl-rmcat-coupled-cc-05 . . . . 24 | |||
D.2.2. Changes from -00 to -01 . . . . . . . . . . . . . . . 24 | D.2.2. Changes from -00 to -01 . . . . . . . . . . . . . . . 24 | |||
D.2.3. Changes from -01 to -02 . . . . . . . . . . . . . . . 24 | D.2.3. Changes from -01 to -02 . . . . . . . . . . . . . . . 24 | |||
D.2.4. Changes from -02 to -03 . . . . . . . . . . . . . . . 24 | D.2.4. Changes from -02 to -03 . . . . . . . . . . . . . . . 24 | |||
D.2.5. Changes from -03 to -04 . . . . . . . . . . . . . . . 24 | D.2.5. Changes from -03 to -04 . . . . . . . . . . . . . . . 24 | |||
D.2.6. Changes from -04 to -05 . . . . . . . . . . . . . . . 25 | D.2.6. Changes from -04 to -05 . . . . . . . . . . . . . . . 25 | |||
D.2.7. Changes from -05 to -06 . . . . . . . . . . . . . . . 25 | D.2.7. Changes from -05 to -06 . . . . . . . . . . . . . . . 25 | |||
D.2.8. Changes from -06 to -07 . . . . . . . . . . . . . . . 25 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
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 attempts | |||
increase its sending rate until the path's capacity has been reached; | to increase its sending rate until the path's capacity has been | |||
depending on the controller, sometimes the rate is increased further, | reached. Some controllers detect path capacity by increasing the | |||
until packets are ECN-marked or dropped. This process inevitably | sending rate further, until packets are ECN-marked [RFC8087] or | |||
creates undesirable queuing delay when multiple congestion controlled | dropped, and then decreasing the sending rate until that stops | |||
connections traverse the same network bottleneck. | happening. This process inevitably creates undesirable queuing delay | |||
when multiple congestion-controlled connections traverse the same | ||||
network bottleneck, and each connection overshoots the path capacity | ||||
as it determines its sending rate. | ||||
The Congestion Manager (CM) [RFC3124] couples flows by providing a | The Congestion Manager (CM) [RFC3124] couples flows by providing a | |||
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 [RFC7478]. | required by rtcweb [I-D.ietf-rtcweb-overview] [RFC7478]. | |||
The described mechanisms are believed safe to use, but are | The described mechanisms are believed safe to use, but are | |||
experimental and are presented for wider review and operational | experimental and are presented for wider review and operational | |||
evaluation. | evaluation. | |||
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]. | |||
skipping to change at page 3, line 47 ¶ | skipping to change at page 4, line 4 ¶ | |||
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 | |||
interval, divided by that time interval. | interval, divided by that time interval. | |||
Bottleneck: | Bottleneck: | |||
The first link with the smallest available bandwidth along the | The first link with the smallest available bandwidth along the | |||
path between a sender and receiver. | path between a sender and receiver. | |||
Flow: | Flow: | |||
A flow is the entity that congestion control is operating on. | A flow is the entity that congestion control is operating on. | |||
It could, for example, be a transport layer connection, an RTP | It could, for example, be a transport layer connection, or an | |||
stream [RFC7656], whether or not this RTP stream is multiplexed | RTP stream [RFC7656], whether or not this RTP stream is | |||
onto an RTP session with other RTP streams. | multiplexed onto an RTP session with other RTP streams. | |||
Flow Group Identifier (FGI): | Flow Group Identifier (FGI): | |||
A unique identifier for each subset of flows that is limited by | A unique identifier for each subset of flows that is limited by | |||
a common bottleneck. | a common bottleneck. | |||
Flow State Exchange (FSE): | Flow State Exchange (FSE): | |||
The entity that maintains information that is exchanged between | The entity that maintains information that is exchanged between | |||
flows. | flows. | |||
Flow Group (FG): | Flow Group (FG): | |||
A group of flows having the same FGI. | A group of flows having the same FGI. | |||
skipping to change at page 4, line 22 ¶ | skipping to change at page 4, line 28 ¶ | |||
Flow Group (FG): | Flow Group (FG): | |||
A group of flows having the same FGI. | A group of flows having the same FGI. | |||
Shared Bottleneck Detection (SBD): | Shared Bottleneck Detection (SBD): | |||
The entity that determines which flows traverse the same | The entity that determines which flows traverse the same | |||
bottleneck in the network, or the process of doing so. | bottleneck in the network, or the process of doing so. | |||
3. Limitations | 3. Limitations | |||
Sender-side only: | Sender-side only: | |||
Coupled congestion control as described here only operates | Shared bottlenecks can exist when multiple flows originate from | |||
inside a single host on the sender side. This is because, | the same sender, or when flows from different senders reach the | |||
irrespective of where the major decisions for congestion | same receiver (see [I-D.ietf-rmcat-sbd], section 3). Coupled | |||
control are taken, the sender of a flow needs to eventually | congestion control as described here only supports the former | |||
decide on the transmission rate. Additionally, the necessary | case, not the latter, as it operates inside a single host on | |||
information about how much data an application can currently | the sender side. | |||
send on a flow is often only available at the sender side, | ||||
making the sender an obvious choice for placement of the | ||||
elements and mechanisms described here. | ||||
Shared bottlenecks do not change quickly: | Shared bottlenecks do not change quickly: | |||
As per the definition above, a bottleneck depends on cross | As per the definition above, a bottleneck depends on cross | |||
traffic, and since such traffic can heavily fluctuate, | traffic, and since such traffic can heavily fluctuate, | |||
bottlenecks can change at a high frequency (e.g., there can be | bottlenecks can change at a high frequency (e.g., there can be | |||
oscillation between two or more links). This means that, when | oscillation between two or more links). This means that, when | |||
flows are partially routed along different paths, they may | flows are partially routed along different paths, they may | |||
quickly change between sharing and not sharing a bottleneck. | quickly change between sharing and not sharing a bottleneck. | |||
For simplicity, here it is assumed that a shared bottleneck is | For simplicity, here it is assumed that a shared bottleneck is | |||
valid for a time interval that is significantly longer than the | valid for a time interval that is significantly longer than the | |||
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). This document describes both | correct Flow Group Identifiers (FGIs). | |||
active and passive versions, however the passive version is put into | ||||
the appendix as it is extremely experimental. Figure 2 shows the | This document describes both active and passive versions. While the | |||
interaction between flows and the FSE, using the variable names | passive algorithm works better for congestion controls with RTT- | |||
defined in Section 5.2. | independent convergence, it can still produce oscillations on short | |||
time scales. The passive algorithm, described in Appendix C, is | ||||
therefore considered as highly experimental and not safe to deploy | ||||
outside of testbed environments. Figure 2 shows the interaction | ||||
between flows and the FSE, using the variable names defined in | ||||
Section 5.2. | ||||
------- <--- Flow 1 | ------- <--- Flow 1 | |||
| FSE | <--- Flow 2 .. | | FSE | <--- Flow 2 .. | |||
------- <--- .. Flow N | ------- <--- .. Flow N | |||
^ | ^ | |||
| | | | | | |||
------- | | ------- | | |||
| SBD | <-------| | | SBD | <-------| | |||
------- | ------- | |||
skipping to change at page 6, line 19 ¶ | skipping to change at page 6, line 19 ¶ | |||
REGISTER <--register-- JOIN #1 | REGISTER <--register-- JOIN #1 | |||
#2 CC_R(1) ----UPDATE----> UPDATE (in) | #2 CC_R(1) ----UPDATE----> UPDATE (in) | |||
#3 NEW RATE <---FSE_R(1)-- UPDATE (out) --FSE_R(2)-> #3 NEW RATE | #3 NEW RATE <---FSE_R(1)-- UPDATE (out) --FSE_R(2)-> #3 NEW RATE | |||
Figure 2: Flow-FSE interaction | Figure 2: Flow-FSE interaction | |||
Since everything shown in Figure 1 is assumed to operate on a single | Since everything shown in Figure 1 is assumed to operate on a single | |||
host (the sender) only, this document only describes aspects that | host (the sender) only, this document only describes aspects that | |||
have an influence on the resulting on-the-wire behavior. It does, | have an influence on the resulting on-the-wire behavior. It does | |||
for instance, not define how many bits must be used to represent | not, for instance, define how many bits must be used to represent | |||
FSIs, or in which way the entities communicate. Implementations can | FGIs, or in which way the entities communicate. | |||
take various forms: for instance, all the elements in the figure | ||||
could be implemented within a single application, thereby operating | Implementations can take various forms: for instance, all the | |||
on flows generated by that application only. Another alternative | elements in the figure could be implemented within a single | |||
could be to implement both the FSE and SBD together in a separate | application, thereby operating on flows generated by that application | |||
process which different applications communicate with via some form | only. Another alternative could be to implement both the FSE and SBD | |||
of Inter-Process Communication (IPC). Such an implementation would | together in a separate process which different applications | |||
extend the scope to flows generated by multiple applications. The | communicate with via some form of Inter-Process Communication (IPC). | |||
FSE and SBD could also be included in the Operating System kernel. | Such an implementation would extend the scope to flows generated by | |||
multiple applications. The FSE and SBD could also be included in the | ||||
Operating System kernel. However, only one type of coupling | ||||
algorithm should be used for all flows. Combinations of multiple | ||||
algorithms at different aggregation levels (e.g., the Operating | ||||
System coupling application aggregates with one algorithm, and | ||||
applications coupling their flows with another) have not been tested | ||||
and are therefore not recommended. | ||||
5. Roles | 5. Roles | |||
This section gives an overview of the roles of the elements of | This section gives an overview of the roles of the elements of | |||
coupled congestion control, and provides an example of how coupled | coupled congestion control, and provides an example of how coupled | |||
congestion control can operate. | congestion control can operate. | |||
5.1. SBD | 5.1. SBD | |||
SBD uses knowledge about the flows to determine which flows belong in | SBD uses knowledge about the flows to determine which flows belong in | |||
the same Flow Group (FG), and assigns FGIs accordingly. This | the same Flow Group (FG), and assigns FGIs accordingly. This | |||
knowledge can be derived in three basic ways: | knowledge can be derived in three basic ways: | |||
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 values for the Differentiated Services Code Point | having the same values for the Differentiated Services Code Point | |||
(DSCP) and the ECN field in the IP header are typically treated | (DSCP) and the ECN field in the IP header are typically treated | |||
in the same way along the path. The latter method is the only | in the same way along the path. This method is the only one | |||
one specified in this document: SBD MAY consider all flows that | specified in this document: SBD MAY consider all flows that use | |||
use the same five-tuple, DSCP and ECN field value to belong to | the same five-tuple, DSCP and ECN field value to belong to the | |||
the same FG. This classification applies to certain tunnels, or | same FG. This classification applies to certain tunnels, or RTP | |||
RTP flows that are multiplexed over one transport (cf. | flows that are multiplexed over one transport (cf. | |||
[transport-multiplex]). Such multiplexing is also a recommended | [transport-multiplex]). Such multiplexing is also a recommended | |||
usage of RTP in rtcweb [rtcweb-rtp-usage]. | usage of RTP in rtcweb [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 | |||
skipping to change at page 12, line 41 ¶ | skipping to change at page 12, line 41 ¶ | |||
Experiments should investigate cases where the media coder's output | Experiments should investigate cases where the media coder's output | |||
rate is below the rate that is calculated by the coupling algorithm | rate is below the rate that is calculated by the coupling algorithm | |||
(FSE_R(i) in algorithms 1 and 2, section 5.3). Implementers and | (FSE_R(i) in algorithms 1 and 2, section 5.3). Implementers and | |||
testers are invited to document their findings in an Internet draft. | testers are invited to document their findings in an Internet draft. | |||
8. Acknowledgements | 8. Acknowledgements | |||
This document has benefitted from discussions with and feedback from | This document has benefitted from discussions with and feedback from | |||
Andreas Petlund, Anna Brunstrom, Colin Perkins, David Hayes, David | Andreas Petlund, Anna Brunstrom, Colin Perkins, David Hayes, David | |||
Ros (who also gave the FSE its name), Ingemar Johansson, Karen | Ros (who also gave the FSE its name), Ingemar Johansson, Karen | |||
Nielsen, Kristian Hiorth, Mirja Kuehlewind, Martin Stiemerling, Varun | Nielsen, Kristian Hiorth, Mirja Kuehlewind, Martin Stiemerling, | |||
Singh, Xiaoqing Zhu, and Zaheduzzaman Sarker. The authors would like | Spencer Dawkins, Varun Singh, Xiaoqing Zhu, and Zaheduzzaman Sarker. | |||
to especially thank Xiaoqing Zhu and Stefan Holmer for helping with | The authors would like to especially thank Xiaoqing Zhu and Stefan | |||
NADA and GCC. | 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). | |||
9. IANA Considerations | 9. IANA Considerations | |||
This memo includes no request to IANA. | This memo includes no request to IANA. | |||
10. Security Considerations | 10. Security Considerations | |||
skipping to change at page 13, line 32 ¶ | skipping to change at page 13, line 32 ¶ | |||
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. | |||
Implementers should also be aware of the Security Considerations | ||||
sections of [RFC3124], [RFC5348], and [RFC7478]. | ||||
11. References | 11. References | |||
11.1. Normative References | 11.1. Normative References | |||
[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, M., Cruz, S., Jones, P., Fu, | |||
J., D'Aronco, S., and C. Ganzhorn, "NADA: A Unified | J., and S. D'Aronco, "NADA: A Unified Congestion Control | |||
Congestion Control Scheme for Real-Time Media", draft- | Scheme for Real-Time Media", draft-ietf-rmcat-nada-04 | |||
ietf-rmcat-nada-03 (work in progress), September 2016. | (work in progress), March 2017. | |||
[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, DOI 10.17487/ | |||
RFC2119, March 1997, | RFC2119, March 1997, <https://www.rfc-editor.org/info/ | |||
<http://www.rfc-editor.org/info/rfc2119>. | 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>. | <https://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", RFC | |||
5348, DOI 10.17487/RFC5348, September 2008, | 5348, DOI 10.17487/RFC5348, September 2008, | |||
<http://www.rfc-editor.org/info/rfc5348>. | <https://www.rfc-editor.org/info/rfc5348>. | |||
11.2. Informative References | 11.2. Informative References | |||
[anrw2016] | [anrw2016] | |||
Islam, S. and M. Welzl, "Start Me Up:Determining and | Islam, S. and M. Welzl, "Start Me Up:Determining and | |||
Sharing TCP's Initial Congestion Window", ACM, IRTF, ISOC | Sharing TCP's Initial Congestion Window", ACM, IRTF, ISOC | |||
Applied Networking Research Workshop 2016 (ANRW 2016) , | Applied Networking Research Workshop 2016 (ANRW 2016) , | |||
2016. | 2016. | |||
[fse] Islam, S., Welzl, M., Gjessing, S., and N. Khademi, | [fse] Islam, S., Welzl, M., Gjessing, S., and N. Khademi, | |||
skipping to change at page 14, line 34 ¶ | skipping to change at page 14, line 34 ¶ | |||
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] | [I-D.ietf-rmcat-eval-test] | |||
Sarker, Z., Singh, V., Zhu, X., and M. Ramalho, "Test | Sarker, Z., Singh, V., Zhu, X., and M. Ramalho, "Test | |||
Cases for Evaluating RMCAT Proposals", draft-ietf-rmcat- | Cases for Evaluating RMCAT Proposals", draft-ietf-rmcat- | |||
eval-test-04 (work in progress), October 2016. | eval-test-05 (work in progress), April 2017. | |||
[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-02 (work in | Time Communication", draft-ietf-rmcat-gcc-02 (work in | |||
progress), July 2016. | progress), July 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-08 (work in progress), | |||
March 2016. | July 2017. | |||
[I-D.ietf-rtcweb-overview] | ||||
Alvestrand, H., "Overview: Real Time Protocols for | ||||
Browser-based Applications", draft-ietf-rtcweb-overview-18 | ||||
(work in progress), March 2017. | ||||
[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-17.txt, October 2016. | draft-ietf-rtcweb-transports-17.txt, October 2016. | |||
[IETF-93] Islam, S., Welzl, M., and S. Gjessing, "Updates on Coupled | [IETF-93] Islam, S., Welzl, M., and S. Gjessing, "Updates on Coupled | |||
Congestion Control for RTP Media", July 2015, | Congestion Control for RTP Media", July 2015, | |||
<https://www.ietf.org/proceedings/93/rmcat.html>. | <https://www.ietf.org/proceedings/93/rmcat.html>. | |||
[IETF-94] Islam, S., Welzl, M., and S. Gjessing, "Updates on Coupled | [IETF-94] Islam, S., Welzl, M., and S. Gjessing, "Updates on Coupled | |||
Congestion Control for RTP Media", November 2015, | Congestion Control for RTP Media", November 2015, | |||
<https://www.ietf.org/proceedings/94/rmcat.html>. | <https://www.ietf.org/proceedings/94/rmcat.html>. | |||
[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, <https://www.rfc- | |||
<http://www.rfc-editor.org/info/rfc7478>. | editor.org/info/rfc7478>. | |||
[RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and | [RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and | |||
B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms | B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms | |||
for Real-Time Transport Protocol (RTP) Sources", RFC 7656, | for Real-Time Transport Protocol (RTP) Sources", RFC 7656, | |||
DOI 10.17487/RFC7656, November 2015, | DOI 10.17487/RFC7656, November 2015, <https://www.rfc- | |||
<http://www.rfc-editor.org/info/rfc7656>. | editor.org/info/rfc7656>. | |||
[RFC8087] Fairhurst, G. and M. Welzl, "The Benefits of Using | ||||
Explicit Congestion Notification (ECN)", RFC 8087, DOI | ||||
10.17487/RFC8087, March 2017, <https://www.rfc- | ||||
editor.org/info/rfc8087>. | ||||
[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. | |||
[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", Internet-draft draft- | Single Lower-Layer Transport", Internet-draft draft- | |||
skipping to change at page 16, line 7 ¶ | skipping to change at page 16, line 14 ¶ | |||
When applying the FSE to GCC, the UPDATE function call described in | When applying the FSE to GCC, the UPDATE function call described in | |||
Section 5.3 gives the FSE GCC's estimate of available bandwidth | Section 5.3 gives the FSE GCC's estimate of available bandwidth | |||
A_hat. The recommended algorithm for GCC is the Active FSE in | 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 | 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 | flow i, this means updating A_hat of flow i with the value of | |||
FSE_R(i). | FSE_R(i). | |||
Appendix B. Scheduling | Appendix B. Scheduling | |||
When connections originate from the same host, it would be possible | When flows originate from the same host, it would be possible to use | |||
to use only one single sender-side congestion controller which | only one single sender-side congestion controller which determines | |||
determines the overall allowed sending rate, and then use a local | the overall allowed sending rate, and then use a local scheduler to | |||
scheduler to assign a proportion of this rate to each RTP session. | assign a proportion of this rate to each RTP session. This way, | |||
This way, priorities could also be implemented as a function of the | priorities could also be implemented as a function of the scheduler. | |||
scheduler. The Congestion Manager (CM) [RFC3124] also uses such a | The Congestion Manager (CM) [RFC3124] also uses such a scheduling | |||
scheduling function. | function. | |||
Appendix C. Example algorithm - Passive FSE | Appendix C. Example algorithm - Passive FSE | |||
Active algorithms calculate the rates for all the flows in the FG and | Active algorithms calculate the rates for all the flows in the FG and | |||
actively distribute them. In a passive algorithm, UPDATE returns a | actively distribute them. In a passive algorithm, UPDATE returns a | |||
rate that should be used instead of the rate that the congestion | rate that should be used instead of the rate that the congestion | |||
controller has determined. This can make a passive algorithm easier | controller has determined. This can make a passive algorithm easier | |||
to implement; however, when round-trip times of flows are unequal, | to implement; however, when round-trip times of flows are unequal, | |||
shorter-RTT flows may (depending on the congestion control algorithm) | shorter-RTT flows may (depending on the congestion control algorithm) | |||
update and react to the overall FSE state more often than longer-RTT | update and react to the overall FSE state more often than longer-RTT | |||
skipping to change at page 25, line 25 ¶ | skipping to change at page 25, line 25 ¶ | |||
o Moved the application to GCC to an appendix, and made the GCC | o Moved the application to GCC to an appendix, and made the GCC | |||
reference informative. | reference informative. | |||
o Provided a few more general recommendations on applying the | o Provided a few more general recommendations on applying the | |||
coupling algorithm. | coupling algorithm. | |||
D.2.7. Changes from -05 to -06 | D.2.7. Changes from -05 to -06 | |||
o Incorporated comments by Colin Perkins. | o Incorporated comments by Colin Perkins. | |||
D.2.8. Changes from -06 to -07 | ||||
o Addressed OPSDIR, SECDIR, GENART, AD and IESG comments. | ||||
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. | ||||
77 lines changed or deleted | 108 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/ |