Subject: Re: [rmcat] Proposed update to draft-ietf-rmcat-coupled-cc

From: Michael Welzl <[email-masked]>
Date: Thu, 3 Jan 2019 15:02:17 +0100

Hi,

Thanks for your careful check!
Answers in line:

> On 29 Dec 2018, at 00:19, Anna Brunstrom <[email-masked]> wrote:
> 
> Hi Michael, all,
> 
> I also had two questions on the new algorithm (as an individual)
> 
> - Step (d) checks if there are flows that are limited by their DR and cannot accept their share of the TLO. In principle I guess this step would need to be repeated until there are no flows that can not use their share as the TLO may again grow in this step?

No, because the TLO is only reduced in step d.

> - Step (d) also looks strange to me. Seems FSE_R(i) > DR(i) would never be true after step (c)?

You found a typo!  Good catch and very sorry - it should be a "<"; we'll fix this in the draft update.
The code that we checked (off a whiteboard) didn't have that typo.

Cheers,
Michael

> Cheers,
> Anna
> 
> 
> On 2018-12-11 09:14, Michael Welzl wrote:
>> Dear all,
>> 
>> In Bangkok, Julius Flohr presented an issue with application-limited senders and our "active" coupling algorithm in draft-ietf-rmcat-coupled-cc-07
>> Indeed we kept it out of the algorithm on purpose as a way to keep it simple (early, when we brought our algorithm to the group, simplicity was a major concern) - see slide 6 here:
>> https://www.ietf.org/proceedings/88/slides/slides-88-rmcat-0.pdf
>> "included in the next version" never happened ... well better late than never  ;-)
>> 
>> Julius also proposed a fix that looked very simple, but it didn't really work well for more than 2 flows. Thanks to his help, we can now present a double-checked algorithm update that fixes the problem. Please find this algorithm update (changing the text in section 5.3.1) below. Given that our draft is already in the RFC editor queue, how should we now proceed?
>> 
>> Cheers,
>> Michael & Safiqul
>> 
>> PS: two further minor text changes are necessary: 1) the new algorithm talks about the Desired Rate (DR), which the draft now only introduces in appendix C; we would need to move this definition up, to section 5.3. Also, algorithm 2 in section 5.3.2 just changes step 3 (a) of algorithm 1, but because it was so short, the text currently just copies the whole algorithm from the section above. Since the algorithm is now longer, we think it would be better to change this text to just say that step 3 (a) from above is altered for algorithm 2.
>> 
>> 
>> ---------------------------------------------------------------------------
>> 
>> 
>> OLD:
>> 
>>       (a)  It updates S_CR.
>> 
>>              S_CR = S_CR + CC_R(f) - FSE_R(f)
>> 
>> 
>>       (b)  It calculates the sum of all the priorities, S_P.
>> 
>>              S_P = 0
>>              for all flows i in FG do
>>                  S_P = S_P + P(i)
>>              end for
>> 
>> 
>>       (c)  It calculates the sending rates for all the flows in an FG
>>            and distributes them.
>> 
>>              for all flows i in FG do
>>                  FSE_R(i) = (P(i)*S_CR)/S_P
>>                  send FSE_R(i) to the flow i
>>              end for
>> 
>> 
>> ***************************************************************************************
>> ***************************************************************************************
>> 
>> 
>> NEW:  [NOTE: (a) and (b) as above ]
>> 
>>       (a)  It updates S_CR.
>> 
>>              S_CR = S_CR + CC_R(f) - FSE_R(f)
>> 
>> 
>>       (b)  It calculates the sum of all the priorities, S_P.
>> 
>>              S_P = 0
>>              for all flows i in FG do
>>                  S_P = S_P + P(i)
>>              end for
>> 
>> 
>>       (c)  It calculates the sending rates for all the flows in
>>            an FG, the total leftover rate (TLO) from flows that are
>>            limited by their desired rate, and the sum of the priorities
>>            of all other flows, S_P2.
>> 
>>              TLO = 0
>>              S_P2 = 0
>>              for all flows i in FG do
>>                  FSE_R(i) = P(i) * S_CR / S_P
>>                  if FSE_R(i) > DR(i) then
>>                     TLO = TLO + FSE_R(i) - DR(i)
>>                     FSE_R(i) = DR(i)
>>                  else
>>                     S_P2 = S_P2 + P(i)
>>                  end if
>>              end for
>> 
>> 
>>       (d)  It checks if there are flows that are limited by their DR
>>            and cannot accept their share of the TLO, and updates TLO
>>            and S_P2 accordingly.
>> 
>>              for all flows i in FG do
>>                  if FSE_R(i) > DR(i) then
>>                      if FSE_R(i) + TLO * P(i) / S_P2 > DR(i) then
>>                         TLO = TLO - ( DR(i) - FSE_R(i) )
>>                         FSE_R(i) = DR(i)
>>                         S_P2 = S_P2 - P(i)
>>                      end if
>>                  end if
>>              end for
>> 
>> 
>>       (e)  It assigns the non-limited flow their share of the total
>>            leftover rate and sends all the rates to all the flows.
>> 
>>              for all flows i in FG do
>>                  if FSE_R(i) < DR(i) then
>>                     FSE_R(i) = FSE_R(i) + P(i) * TLO / S_P2
>>                  end if
>>                  send FSE_R(i) to the flow i
>>              end for
>

---

From: Michael Welzl <[email-masked]>
Date: Thu, 10 Jan 2019 13:51:42 +0100

Dear chairs, dear group,

We have now updated the draft to version -08.

Cheers,
Michael

> On 28 Dec 2018, at 23:40, Anna Brunstrom <[email-masked]> wrote:
> 
> Hi Michael, all,
> 
> We have now checked with the RFC editor and the wg should prepare a new version of the draft. It will then be up to our AD to approve it or decide if any further revision or review is needed.
> 
> Can the authors please prepare a new version and we will then give the wg a chance to comment on the update before passing it on.
> 
> Thanks,
> Anna (for the chairs)
>