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

From: Michael Welzl <[email-masked]>
Date: Tue, 11 Dec 2018 09:14:06 +0100

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: Anna Brunstrom <[email-masked]>
Date: Fri, 28 Dec 2018 23:40:49 +0100

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)

---

From: Anna Brunstrom <[email-masked]>
Date: Sat, 29 Dec 2018 00:19:53 +0100

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?

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

Cheers,
Anna

---

From: Michael Welzl <[email-masked]>
Date: Sun, 30 Dec 2018 07:07:54 +0100

Hi,

Thank you very much - we’ll do that!
Also thanks for your questions about the algorithm - we’ll get back to you soon after the holidays.

Cheers,
Michael

> On Dec 28, 2018, at 11:40 PM, 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)
>