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

Michael Welzl <michawe@ifi.uio.no> Thu, 03 January 2019 14:02 UTC

Return-Path: <michawe@ifi.uio.no>
X-Original-To: rmcat@ietfa.amsl.com
Delivered-To: rmcat@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BAE2112F1AC for <rmcat@ietfa.amsl.com>; Thu, 3 Jan 2019 06:02:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.8
X-Spam-Level:
X-Spam-Status: No, score=0.8 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, GB_SUMOF=5, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id klcU9R5qAAJF for <rmcat@ietfa.amsl.com>; Thu, 3 Jan 2019 06:02:27 -0800 (PST)
Received: from mail-out02.uio.no (mail-out02.uio.no [IPv6:2001:700:100:8210::71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 928F812EB11 for <rmcat@ietf.org>; Thu, 3 Jan 2019 06:02:26 -0800 (PST)
Received: from mail-mx11.uio.no ([129.240.10.83]) by mail-out02.uio.no with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from <michawe@ifi.uio.no>) id 1gf3Zo-0000iA-IB; Thu, 03 Jan 2019 15:02:24 +0100
Received: from boomerang.ifi.uio.no ([129.240.68.135]) by mail-mx11.uio.no with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) user michawe (Exim 4.91) (envelope-from <michawe@ifi.uio.no>) id 1gf3Zl-000ADJ-6W; Thu, 03 Jan 2019 15:02:24 +0100
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <3f1eaa60-275e-c668-ce08-bc142fd8147c@kau.se>
Date: Thu, 03 Jan 2019 15:02:17 +0100
Cc: rmcat@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <C1657DBF-68D6-4988-A714-E60C50C09ACA@ifi.uio.no>
References: <123D38B4-AF74-40FF-B7F9-0A1A9CFCFCC9@ifi.uio.no> <3f1eaa60-275e-c668-ce08-bc142fd8147c@kau.se>
To: Anna Brunstrom <anna.brunstrom@kau.se>
X-Mailer: Apple Mail (2.3445.9.1)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx11.uio.no: 129.240.68.135 is neither permitted nor denied by domain of ifi.uio.no) client-ip=129.240.68.135; envelope-from=michawe@ifi.uio.no; helo=boomerang.ifi.uio.no;
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: 1E247CC3FB2C890B4424031C23FA30B7A6D00375
Archived-At: <https://mailarchive.ietf.org/arch/msg/rmcat/uFzxWLGgfR4Iyu9YkP3JoNtt47Y>
Subject: Re: [rmcat] Proposed update to draft-ietf-rmcat-coupled-cc
X-BeenThere: rmcat@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "RTP Media Congestion Avoidance Techniques \(RMCAT\) Working Group discussion list." <rmcat.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rmcat>, <mailto:rmcat-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rmcat/>
List-Post: <mailto:rmcat@ietf.org>
List-Help: <mailto:rmcat-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rmcat>, <mailto:rmcat-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jan 2019 14:02:30 -0000

Hi,

Thanks for your careful check!
Answers in line:

> On 29 Dec 2018, at 00:19, Anna Brunstrom <anna.brunstrom@kau.se> 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
>