Re: [lp-wan] need for MAX_ACK_REQUESTS?

Arun <arun@ackl.io> Wed, 19 July 2017 16:35 UTC

Return-Path: <arun@ackl.io>
X-Original-To: lp-wan@ietfa.amsl.com
Delivered-To: lp-wan@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AACFA12F3CB for <lp-wan@ietfa.amsl.com>; Wed, 19 Jul 2017 09:35:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.619
X-Spam-Level:
X-Spam-Status: No, score=-2.619 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, URIBL_BLOCKED=0.001] autolearn=ham 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 JEHEwqPGgJJz for <lp-wan@ietfa.amsl.com>; Wed, 19 Jul 2017 09:35:36 -0700 (PDT)
Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [217.70.183.195]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3D8E0127077 for <lp-wan@ietf.org>; Wed, 19 Jul 2017 09:35:36 -0700 (PDT)
Received: from mfilter11-d.gandi.net (mfilter11-d.gandi.net [217.70.178.131]) by relay3-d.mail.gandi.net (Postfix) with ESMTP id 9E347A80F5; Wed, 19 Jul 2017 18:35:34 +0200 (CEST)
X-Virus-Scanned: Debian amavisd-new at mfilter11-d.gandi.net
Received: from relay3-d.mail.gandi.net ([IPv6:::ffff:217.70.183.195]) by mfilter11-d.gandi.net (mfilter11-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id J-AMO23R_hwj; Wed, 19 Jul 2017 18:35:33 +0200 (CEST)
X-Originating-IP: 192.44.77.204
Received: from [192.168.1.158] (nat-asr-incub-b204.rennes.enst-bretagne.fr [192.44.77.204]) (Authenticated sender: arun@acklio.com) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 4A7EBA80CE; Wed, 19 Jul 2017 18:35:32 +0200 (CEST)
To: Carles Gomez Montenegro <carlesgo@entel.upc.edu>
Cc: lp-wan <lp-wan@ietf.org>, BARTHEL Dominique IMT/OLPS <dominique.barthel@orange.com>
References: <f06b79ed-9b06-8ba0-79da-d091b9270d4e@ackl.io> <c53f65f77e2bef71d2b8598cd4c72dfc.squirrel@webmail.entel.upc.edu> <d89f5ae6-2d9d-56ff-71c7-c8624563a002@ackl.io> <6627d2074d9c4fc56c035b7d283acf19.squirrel@webmail.entel.upc.edu>
From: Arun <arun@ackl.io>
Message-ID: <8cf063e5-b0cc-ba05-98ec-1de7b4de336d@ackl.io>
Date: Wed, 19 Jul 2017 18:35:28 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1
MIME-Version: 1.0
In-Reply-To: <6627d2074d9c4fc56c035b7d283acf19.squirrel@webmail.entel.upc.edu>
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="0BrflpmC5N2bDSLNGTFPhrxjqfocMjOkW"
Archived-At: <https://mailarchive.ietf.org/arch/msg/lp-wan/Gg3-UKqStQXhP0tuB7N0IzNZKqw>
Subject: Re: [lp-wan] need for MAX_ACK_REQUESTS?
X-BeenThere: lp-wan@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "Low-Power Wide Area Networking \(LP-WAN\), also known as LPWA or Low-Rate WAN \(LR-WAN\)" <lp-wan.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/lp-wan>, <mailto:lp-wan-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/lp-wan/>
List-Post: <mailto:lp-wan@ietf.org>
List-Help: <mailto:lp-wan-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lp-wan>, <mailto:lp-wan-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 19 Jul 2017 16:35:39 -0000

Thanks Carles for the explanation.
Yes, I agree. Keeping a lower value of retries seems reasonable in case
of large window.
I prefer to have simpler option, MAX_ACK_REQUEST to decide when to abort
but will wait for inputs from others as well.

On 19/07/2017 17:20, Carles Gomez Montenegro wrote:
> Hi Arun,
>
> Thanks for your response.
>
> Yes, I understand your example is correct. On your question, the same
> problem will happen anyway when any applicable "MAX_" parameter is
> reached.
>
> The main reason I can see for having two separate parameters is that a
> sender may want to resend the last fragment "many times" (say, e.g. 5) to
> request for an ACK. But when the ACK is received, maybe a sender cannot
> afford to resend as many times each specific fragment reported to be lost
> (imagine a "large window", say of 30 fragments where 8 out of those need
> to be resent). Maybe doing up to 5 retries for each lost fragment is too
> much, but a lower number of retries could be acceptable.
>
> Maybe a more simple option is to reduce the number of "MAX_" parameters to
> only 1 (you favor that to be MAX_ACK_REQUESTS), and if a sender determines
> from an ACK that there have been too many losses (and maybe it is not
> worth trying to recover all of them since link quality appears to be low),
> it can always abort.
>
> Thoughts?
>
> Carles
>
>
>
>
>> Hi Carles,
>> I'm not clear about the purpose of having retry counter for each
>> fragments.
>>
>> My understanding is as follows (w.r.t. ACK always) :
>>  - whenever there is a retransmission  the receiver would expect the
>> ACK_REQUEST packet to be least the CFN in the bitmap.
>>  we resend (at the same time increment retry counter for this fragment)
>> only last fragment in case of timer expiry. when the counter reaches
>> MAX_FRAG_RETRIES for CFN =1, what do we do?
>>  we cannot try resending CFN !=1 (in this case cfn=4) because the
>> receiver would still expect CFN=1 for ACK_REQUEST or to send bitmap.
>> So, I think it would be good to have only variable, can be
>> MAX_ACK_REQUEST.
>>
>>
>>
>>                        Tx                        Rx
>>                         +                         +
>>                         |                         |
>>                         |          cfn=6          | expected
>> ACK_REQ_PACKET = cfn_0
>>                         +------------------------->
>>                         |          cfn=5          |
>>                         +------------------------->
>>                         |          cfn=4          |
>>                         +--------------------X---->
>>                         |          cfn=3          |
>>                         +--------------------X---->
>>                         |          cfn=2          |
>>                         +------------------------->
>>                         |          cfn=1          |
>>                         +--------------------X---->
>>                         |          cfn=0          |
>>                         +------------------------->
>>                         |  ACK:11001011           |expected
>> ACK_REQ_PACKET = cfn_1
>>                         <-------------------------+
>>                         |         cfn=4           |
>>                         +-------------------X----->
>>                         |         cfn=3           |
>>                         +------------------------->
>>                         |         cfn=1           |
>>                         +-------------------X----->
>>           timer expired |    ACK:11011011         |expected
>> ACK_REQ_PACKET = cfn_1
>>                         <--X----------------------+
>>                         |        cfn=1            |
>>                         +------------------------->
>>           timer expired |    ACK:11011011         |expected
>> ACK_REQ_PACKET = cfn_1
>>                         <--X----------------------+
>>     reached MAX_ACK_REQ |                         |
>>          discard cfn=1  |      cfn=4??            |
>>                         +-------------------------> wait until cfn=1 to
>> send ACK
>>                         |                         |
>>                         |                         |
>> regards,
>>
>> On 19/07/2017 13:58, Carles Gomez Montenegro wrote:
>>> Hi Arun,
>>>
>>> Thanks for commenting on this.
>>>
>>> Currently, MAX_ACK_REQUESTS applies only to the last fragment in a
>>> window,
>>> which can be viewed also as an "ACK request". MAX_FRAG_RETRIES applies
>>> to
>>> the previous fragments in the window.
>>>
>>> I have been thinking about this several times, and I see two options:
>>>
>>> 1.- Keep the two parameters. There might be reasons for setting
>>> MAX_ACK_REQUESTS to a higher value than MAX_FRAG_RETRIES. It may be
>>> specially critical to get an ACK (which gives feedback on the delivery
>>> of
>>> all fragments in the window), while one might want to be careful
>>> regarding
>>> how many times a fragment (from the rest of fragments in the window) is
>>> resent. In addition, it is possible to set the two parameters to the
>>> same
>>> value if desired.
>>>
>>> 2.- Remove MAX_ACK_REQUESTS and have just MAX_FRAG_RETRIES applying to
>>> all
>>> fragments.
>>>
>>> Which are your (and other) opinions on this?
>>>
>>> Thanks,
>>>
>>> Carles
>>>
>>>
>>>
>>>> Hi Carles, all,
>>>>
>>>>  Do we still need this variable MAX_ACK_REQUESTS ?
>>>>  MAX_FRAG_RETRIES is going to be the same (during retransmission we
>>>> only
>>>> send the last fragment of the received bitmap which would be considered
>>>> as ACK REQUEST). correct?
>>>>
>>>>  if this is already discussed in the thread of Dominique's review
>>>> please
>>>> point me to the same.
>>>>
>>>> thanks,
>>>>
>>>> --
>>>>
>>>> Arunprabhu Kandasamy
>>>> arun at ackl.io
>> --
>> Arunprabhu Kandasamy
>> arun at ackl.io
>>
>> 2 bis rue de la Châtaigneraie
>> 35510 Cesson-Sévigné
>> France
>> Phone: +33 (0)2.99.12.24.14
>>
>>
>>
>

-- 
Arunprabhu Kandasamy
arun at ackl.io

2 bis rue de la Châtaigneraie
35510 Cesson-Sévigné 
France 
Phone: +33 (0)2.99.12.24.14