Re: [Detnet] Packet Ordering Function (draft-varga-detnet-pof-00.txt)

Ludovic Thomas <ludovic.thomas@woolab.fr> Wed, 21 April 2021 08:52 UTC

Return-Path: <ludovic.thomas@woolab.fr>
X-Original-To: detnet@ietfa.amsl.com
Delivered-To: detnet@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4EC333A1BE6 for <detnet@ietfa.amsl.com>; Wed, 21 Apr 2021 01:52:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 2.167
X-Spam-Level: **
X-Spam-Status: No, score=2.167 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FAKE_REPLY_A1=3.399, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665, WEIRD_QUOTING=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 CG_g4vDf1MZ4 for <detnet@ietfa.amsl.com>; Wed, 21 Apr 2021 01:52:42 -0700 (PDT)
Received: from smtpextng.isae.fr (smtpextng.isae.fr [192.93.254.80]) by ietfa.amsl.com (Postfix) with ESMTP id 907BE3A1BE5 for <detnet@ietf.org>; Wed, 21 Apr 2021 01:52:41 -0700 (PDT)
Received: from smtp-secu-int (smtp-secu-int.isae.fr [10.132.1.48]) by smtpextng.isae.fr (Postfix) with ESMTP id 25CD371280 for <detnet@ietf.org>; Wed, 21 Apr 2021 10:52:40 +0200 (CEST)
Received: from [10.20.3.39] (port-thomas-w.isae.fr [10.20.3.39]) by smtp-secu-int (Postfix) with ESMTPSA id 1C6638FE88 for <detnet@ietf.org>; Wed, 21 Apr 2021 10:52:40 +0200 (CEST)
To: detnet@ietf.org
From: Ludovic Thomas <ludovic.thomas@woolab.fr>
Message-ID: <2af69bf1-d5a1-c5c3-9a7c-9efd0bcecf2c@woolab.fr>
Date: Wed, 21 Apr 2021 10:52:40 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="------------A5BD7A9CBFEF855844A1B767"
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/detnet/r55Y47ixplkVVZPWkr5ZdzScxgI>
Subject: Re: [Detnet] Packet Ordering Function (draft-varga-detnet-pof-00.txt)
X-BeenThere: detnet@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Discussions on Deterministic Networking BoF and Proposed WG <detnet.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/detnet>, <mailto:detnet-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/detnet/>
List-Post: <mailto:detnet@ietf.org>
List-Help: <mailto:detnet-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/detnet>, <mailto:detnet-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 21 Apr 2021 08:52:47 -0000

Hi all, I have two thoughts on it:

=======

1/ what are you thoughts in changing:

"""" [Current version]
The next received packet must be forwarded and the POFLastSent
       updated wheno the POF function was reset OR no packet was received
       for a predefined time ("POFTakeAnyTime").
""""

for

""" [Proposed version]
The next received packet must be forwarded and the POFLastSent
       updated wheno the POF function was reset OR no packet_with a seq_num strictly higher (>) than POFLastSent_  was received
       for a predefined time ("POFTakeAnyTime").
"""
?

Consider the following use-case:

Source has been up for a while, at POF point we received and sent thousand packets such that POFLastSent = 1000
Suddenly the source reboots and the reboot is so fast that the time elapsed between:
		- when packet noted 1000 was sent prior to reboot
		- when packet noted 0 is sent after reboot
is less or equal to the inter-packet spacing. (meaning the time elapsed between 1000 and 0 is about the same or even less than between 999 and 1000).
As such, in any coherent design the time elapsed between 1000 and 0 is less than POFTakeAnyTime.

Now assume POF function receives 1000, 0, 3, 1, [a sequence of out-of order packets], 100, 102, 101, 104, 103 ... again with a spacing between 1000 and 0 that is less than POFTakeAnyTime.

* With the current version, after reception of 1000, timer is started, but reset as soon as 0 is received.
At the end of the day each receiving packet resets the timer before it fires, so POFLastSent stays at 1000 and all packets are forwarded without being reordered until the sequence number reaches 1000 again.

* With the proposed version, neither 0 nor 3, 1, etc resets the timer because their sequence number is <= POFLastSent.
After some time (say just BEFORE packet 100) the timer is fired, POFLastSent is set to 100 and starting from there is the output of POF is back in order.

======

2/ also, the draft states

o  If (seq_num <= POFLastSent + 1)

       *  Then the packet is forwarded and "POFLastSent" is updated
          (POFLastSent = seq_num).

I believe we shouldn't update POFLastSent if the seq_num is <= POFLastSent. In the above example, assume the POFTakeAnyTime is fired just AFTER packet 100. Packet 102 is received, is sent and sets POFLastSent=102.
With the current version, 101 is received, is sent (because seq_num <= POFLastSent + 1) and sets POFLastSent=101, from there the system is stuck because 102 will never be received again, and the following packets will be released after the POFMaxDelay expires.
With the proposed version (no update of POFLastSent if the seq_num is <= POFLastSent), then 101 does not set POFLastSent=101 and the system continues normal operation.

======

My two cents,
Ludovic