Subject: Re: [rmcat] I-D Action: draft-ietf-rmcat-coupled-cc-05.txt

From: Colin Perkins <[email-masked]>
Date: Wed, 22 Mar 2017 22:49:03 +0000

WG,

There were no objections, so the chairs will prepare the write-up for this draft to send to the IESG in order to request publication.

Colin
(as WG co-chair)

> On 9 Dec 2016, at 23:26, Colin Perkins <[email-masked]> wrote:
> 
> WG,
> 
> The authors recently submitted draft-ietf-rmcat-coupled-cc-05. Following the discussion in the working group session at IETF 97 in Seoul, this moves the text on how to use coupled congestion control with the Google congestion control (GCC) algorithm from the main text to an appendix, and makes the reference to GCC informative. The rest of the document is updated to use NADA as the example, rather than NADA and GCC. These changes are intended to prevent the coupled congestion control draft from blocking on a normative reference to GCC, since the GCC draft is not yet finished. They are not intended to change the scope of the work.
> 
> The authors have also taken the opportunity to add some minor clarifications to the general recommendations, adding text on Stateful algorithms and Rate Jumps, in what is now Section 6.2 of the draft.
> 
> This draft has completed working group last call. However, since there was some discussion around these changes in the meeting, the chairs would like to re-open the working group last call for an additional week to ensure there are no objections. If you object to the changes in this version of the draft, please comment to the list by 16 December 2016. If there are no objections, the chairs will prepare the write-up to send this to the IESG in early 2017.
> 
> Colin
> (as WG co-chair)
> 
> 
> 
> 
> 
>> On 7 Dec 2016, at 13:49, [email-masked] wrote:
>> 
>> 
>> A New Internet-Draft is available from the on-line Internet-Drafts directories.
>> This draft is a work item of the RTP Media Congestion Avoidance Techniques of the IETF.
>> 
>>       Title           : Coupled congestion control for RTP media
>>       Authors         : Safiqul Islam
>>                         Michael Welzl
>>                         Stein Gjessing
>> 	Filename        : draft-ietf-rmcat-coupled-cc-05.txt
>> 	Pages           : 25
>> 	Date            : 2016-12-07
>> 
>> Abstract:
>>  When multiple congestion controlled RTP sessions traverse the same
>>  network bottleneck, combining their controls can improve the total
>>  on-the-wire behavior in terms of delay, loss and fairness.  This
>>  document 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 amount of changes needed to existing RTP applications.  It
>>  specifies how to apply the method for the NADA congestion control
>>  algorithm, and provides suggestions on how to apply it to other
>>  congestion control algorithms.
>> 
>> 
>> The IETF datatracker status page for this draft is:
>> https://datatracker.ietf.org/doc/draft-ietf-rmcat-coupled-cc/
>> 
>> There's also a htmlized version available at:
>> https://tools.ietf.org/html/draft-ietf-rmcat-coupled-cc-05
>> 
>> A diff from the previous version is available at:
>> https://www.ietf.org/rfcdiff?url2=draft-ietf-rmcat-coupled-cc-05
>> 
>> 
>> Please note that it may take a couple of minutes from the time of submission
>> until the htmlized version and diff are available at tools.ietf.org.
>> 
>> Internet-Drafts are also available by anonymous FTP at:
>> ftp://ftp.ietf.org/internet-drafts/
> 
> -- 
> Colin Perkins
> https://csperkins.org/

---

From: Colin Perkins <[email-masked]>
Date: Wed, 22 Mar 2017 23:33:18 +0000

Authors,

I’ve reviewed this draft while preparing the IESG write-up and request for publication. I have a number of minor questions and comments:

- Section 2 defines a Flow and gives an example as “an RTP session, or a sub-session that is multiplexed onto a single RTP session”. I believe this example is incorrect, and what is intended is “an RTP Stream [RFC7656], or a group of RTP Streams multiplexed onto a single RTP session” (Section 2.1.10 of RFC 7656 defines the term RTP Stream carefully, so I think a reference is useful; it also defines the term RTP Session in Section 2.2.2). Can you please check and update are necessary.

- Section 3 discusses limitations of the proposed algorithms. Would it be appropriate to add a brief applicability statement either here, or in the Introduction, stating that the described mechanisms are believed safe to use, but are experimental and are presented for wider review and operational evaluation?

- Section 5.1, bullet 1, notes that flows share a bottleneck if they’re sent on the same 5-tuple and have the same DSCP value. Should this also note that they need the same ECT mark? With the proposed L4S ECN experiments, we’re likely to see quite different behaviour between flows with NotECT/ECT(0) and those with ECT(1) marking. 

- Section 5.2 defines the priority in the range 0.1 to 1. Assuming 0.1 is correct, it might be worth adding a brief note to explain this choice, since readers might think it a typo for the more typical range of 0 to 1. 

- Section 5.2, in the paragraph following the bullet points, the draft suggests mapping priority levels from RTCWEB using the values 1, 2, 4, and 8 – how do these relate to the 0.1 to 1 range?

- Section 5.3 defines terminology and describes the two algorithms. The terminology used is inconsistent, sometimes using FSE_R and sometimes FSE_R(f). If the intent is that these are the same variable, the terminology should be aligned (I assume to FSE_R(f) since they’re per-flow values, but the important point is that it’s consistent). If there’s intended to be a difference between the overall and per-flow values, can you please check that they’re used consistently, and add a sentence to clarify the meanings of the terms. 

- Section 5.3 also uses P and P(i) in a manner that suggests they’re referring to the same parameter. Similarly for CC_R – should it be CC_R(i)?

- Appendix C: similar terminology comments apply.

- Appendix C: “highly experimental” – It might be useful to add a brief applicability statement for implementors so they know whether this is safe to deploy outside of testbed environments.

Thanks,
Colin

> On 22 Mar 2017, at 22:49, Colin Perkins <[email-masked]> wrote:
> 
> WG,
>

---

From: Michael Welzl <[email-masked]>
Date: Thu, 23 Mar 2017 14:47:19 +0100

Dear Colin,

Thanks a lot, this was very helpful !    We incorporated your comments and attach the updated draft to this email, as right now submission is closed.
Some answers in line:

> On 23 Mar 2017, at 00:33, Colin Perkins <[email-masked]> wrote:
> 
> Authors,
> 

Thanks a lot - of course you're right! We changed the definition of a flow as follows:
"A flow is the entity that congestion control is operating on. It could, for example, be a transport layer connection, or an RTP  stream <xref target="RFC7656"/>, whether or not this RTP stream is multiplexed onto an RTP session with other RTP streams."

> - Section 3 discusses limitations of the proposed algorithms. Would it be appropriate to add a brief applicability statement either here, or in the Introduction, stating that the described mechanis…

OK, done, at the end of the introduction.

> - Section 5.1, bullet 1, notes that flows share a bottleneck if they’re sent on the same 5-tuple and have the same DSCP value. Should this also note that they need the same ECT mark? With the propo…

Good catch! Done

> - Section 5.2, in the paragraph following the bullet points, the draft suggests mapping priority levels from RTCWEB using the values 1, 2, 4, and 8 – how do these relate to the 0.1 to 1 range?

Another good catch! The value range really doesn't matter for our algorithm, but 0 is not allowed (it might lead to a division by 0).

To clarify all of this, we have removed the "0.1 to 1" example in the priority definition, and changed the text talking about 1, 2, 4 and 8 levels to the following:

***
   Note that the absolute range of priorities does not matter: the
   algorithm works with a flow's priority portion of the sum of all
   priority values.  For example, if there are two flows, flow 1 with
   priority 1 and flow 2 with priority 2, the sum of the priorities is
   3.  Then, flow 1 will be assigned 1/3 of the aggregate sending rate
   and flow 2 will be assigned 2/3 of the aggregate sending rate.
   Priorities can be mapped to the "very-low", "low", "medium" or "high"
   priority levels described in [I-D.ietf-rtcweb-transports] by simply
   using the values 1, 2, 4 and 8, respectively.
***

> - Section 5.3 also uses P and P(i) in a manner that suggests they’re referring to the same parameter. Similarly for CC_R – should it be CC_R(i)?

Fixed everywhere.

> - Appendix C: similar terminology comments apply.

Fixed everywhere (here it also applies to the variables DR, new_DR and Rate).

> - Appendix C: “highly experimental” – It might be useful to add a brief applicability statement for implementors so they know whether this is safe to deploy outside of testbed environments.

done  (we added "and not safe to deploy outside of testbed environments" after "highly experimental").

Cheers,
Michael

---

From: Colin Perkins <[email-masked]>
Date: Fri, 24 Mar 2017 23:29:52 +0000

Looks good, thanks! (although maybe call out explicitly that the priority has to be greater than zero?)

Cheers,
Colin

> On 23 Mar 2017, at 13:47, Michael Welzl <[email-masked]> wrote:
> 
> Dear Colin,
> 
> <draft-ietf-rmcat-coupled-cc-06.txt>
> 

-- 
Colin Perkins
https://csperkins.org/

---

From: Michael Welzl <[email-masked]>
Date: Sat, 25 Mar 2017 06:53:33 +0100

Thanks!

This is actually there but too weakly qualified:

***
a priority P(f), which here is assumed to be represented as a
      positive number within a fixed range.
***

Suggest to change to:

***
a priority P(f), which is a positive number within a fixed range.
***

Cheers,
Michael

> On Mar 25, 2017, at 12:29 AM, Colin Perkins <[email-masked]> wrote:
>

---

From: Colin Perkins <[email-masked]>
Date: Sun, 26 Mar 2017 18:59:48 +0100

> On 25 Mar 2017, at 05:53, Michael Welzl <[email-masked]> wrote:
> 
> Thanks!
> 

I’d suggest “which is a positive number, greater than zero” to be clear zero is excluded. 

Also “within a fixed range” - what’s the range? It might be okay to remove this part.

Cheers,
Colin

-- 
Colin Perkins
https://csperkins.org/

---

From: Michael Welzl <[email-masked]>
Date: Sun, 26 Mar 2017 13:56:07 -0500

> On Mar 26, 2017, at 12:59 PM, Colin Perkins <[email-masked]> wrote:
> 
> 

Ok with me.

> Also “within a fixed range” - what’s the range? It might be okay to remove this part.

Ok

Cheers,
Michael