Re: [nwcrg] Review of draft-irtf-nwcrg-tetrys-01.txt

Marie-Jose Montpetit <marie@mjmontpetit.com> Sun, 24 April 2022 12:11 UTC

Return-Path: <marie@mjmontpetit.com>
X-Original-To: nwcrg@ietfa.amsl.com
Delivered-To: nwcrg@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 6A0DD3A1753 for <nwcrg@ietfa.amsl.com>; Sun, 24 Apr 2022 05:11:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.905
X-Spam-Level:
X-Spam-Status: No, score=-1.905 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, UNPARSEABLE_RELAY=0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=mjmontpetit-com.20210112.gappssmtp.com
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 uKwplASOblYe for <nwcrg@ietfa.amsl.com>; Sun, 24 Apr 2022 05:11:07 -0700 (PDT)
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5C5653A1755 for <nwcrg@irtf.org>; Sun, 24 Apr 2022 05:11:07 -0700 (PDT)
Received: by mail-lf1-x12f.google.com with SMTP id w19so21726727lfu.11 for <nwcrg@irtf.org>; Sun, 24 Apr 2022 05:11:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mjmontpetit-com.20210112.gappssmtp.com; s=20210112; h=from:in-reply-to:references:mime-version:date:message-id:subject:to :cc; bh=y+bl/vtt2JqJxWkVedFASwryRLc8Th+38ITzgJcrj6U=; b=WcbtFDB098P+MoLBVIhxauYbngq82WyLzyygLYjVzIyNgSQvi8ZjpbglZFSvr6+Eyf YJeB92frIwxNjJNWicW+s+L1oE0ffbHhzrbZJhrYNHoXlOwe04DPjZhO7J2iMlyJ3dFN PMQZ7Cf8lShKT9bXf3l6KmSkNCf7zhFPduJCWI6TMU9qJ6LlduVyh4DMSCQBzsGKCGuB JPgZWAVbGvftjKw94F++JPh5mjEFTOouXPtW2hoN+Ym6sWJKgVoyB+gUFlnzFjSMNwMl z66sKDZGgKANFCiC7+hIgyfUuKiZvmRlCim00Sy19mTi3NMF3IUPmHO02A4yuCkd3XxW kDlQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=y+bl/vtt2JqJxWkVedFASwryRLc8Th+38ITzgJcrj6U=; b=FuRsG3oCaHAdgHJvAhVxeMSnyFH2eHh4ArIR1ihjrF43x3CVc7YnmiTa4nKlCfpIXW KAdGssCPuouDtRr8g9lkfkqea/8uVZYb+5gO6s37iBffHUqcthDX60BwMS6r4qcYFUhW WHRWQkhoZarQBRBdz2aMXY0JTV+NyNRFyb9tEcXWINvDkLHBfE7v8EA1RcsJAdGljVRl e3RvKH+SuJJIwbECHimKgtuvjIKsu8PxduoVxgkDwkB/MPhq64vyr0B0nrF2Vxe0GX+k Ccfd5G5r6rKCMpmelS6vPuJQIcceqKBixh8ndM1is5OvNyYYvgHx7ifNLMa8/JSU7X09 Wqng==
X-Gm-Message-State: AOAM533fCmQHLopkJ2EBD5GwDNxflh3tFAvxMWV8PRQgJTzJa/ddQajy KrbhN5WF8ZK0FQ1a6xpvpuBgguj+PmMbFUwpKUqh/g==
X-Google-Smtp-Source: ABdhPJygnO6ujpRKXByTZDv2SeGMpgWBnhet+ZjL+tlzSpXCvDdiOJBoW9cuoQXggQH9nOZz6O99JdlWr/7l35UKYwE=
X-Received: by 2002:a05:6512:2313:b0:471:9564:8801 with SMTP id o19-20020a056512231300b0047195648801mr9724456lfu.236.1650802264955; Sun, 24 Apr 2022 05:11:04 -0700 (PDT)
Received: from 1058052472880 named unknown by gmailapi.google.com with HTTPREST; Sun, 24 Apr 2022 08:11:03 -0400
From: Marie-Jose Montpetit <marie@mjmontpetit.com>
In-Reply-To: <MRZP264MB2924E1FD2B76504EA0DB6EFDFEF99@MRZP264MB2924.FRAP264.PROD.OUTLOOK.COM>
References: <CAPjWiCTpF8W1dk4shPY5sJAmfSbTu9BHr2VRMv2ymqud78qg_g@mail.gmail.com> <1025283239.39135238.1645694184698.JavaMail.zimbra@inria.fr> <MRZP264MB2924E1FD2B76504EA0DB6EFDFEF99@MRZP264MB2924.FRAP264.PROD.OUTLOOK.COM>
MIME-Version: 1.0
Date: Sun, 24 Apr 2022 08:11:03 -0400
Message-ID: <CAPjWiCTq96GaHgMskHWdbrMNcmrPXEc++rQqjqptebd0awMvmw@mail.gmail.com>
To: Cedric Adjih <cedric.adjih@inria.fr>, Emmanuel LOCHIN <emmanuel.lochin@enac.fr>
Cc: nwcrg <nwcrg@irtf.org>, "draft-irtf-nwcrg-tetrys.all@ietf.org" <draft-irtf-nwcrg-tetrys.all@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000098efe905dd655ab4"
Archived-At: <https://mailarchive.ietf.org/arch/msg/nwcrg/d5XvslvF6NlBCKfTw5fXFUe2BBM>
Subject: Re: [nwcrg] Review of draft-irtf-nwcrg-tetrys-01.txt
X-BeenThere: nwcrg@irtf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IRTF Network Coding Research Group discussion list <nwcrg.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/nwcrg>, <mailto:nwcrg-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nwcrg/>
List-Post: <mailto:nwcrg@irtf.org>
List-Help: <mailto:nwcrg-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/nwcrg>, <mailto:nwcrg-request@irtf.org?subject=subscribe>
X-List-Received-Date: Sun, 24 Apr 2022 12:11:14 -0000

Thanks Emmanuel. Cedric: please confirm your changes were made and you
agree with the new version.

We can then proceed.

mjm (w/o Vincent who is a co-author)

Marie-José Montpetit, Ph.D.
marie@mjmontpetit.com



From: Emmanuel LOCHIN <emmanuel.lochin@enac.fr> <emmanuel.lochin@enac.fr>
Reply: Emmanuel LOCHIN <emmanuel.lochin@enac.fr> <emmanuel.lochin@enac.fr>
Date: April 24, 2022 at 6:29:40 AM
To: Cedric Adjih <cedric.adjih@inria.fr> <cedric.adjih@inria.fr>
Cc: draft-irtf-nwcrg-tetrys.all@ietf.org
<draft-irtf-nwcrg-tetrys.all@ietf.org>
<draft-irtf-nwcrg-tetrys.all@ietf.org>, nwcrg <nwcrg@irtf.org>
<nwcrg@irtf.org>
Subject:  RE: Review of draft-irtf-nwcrg-tetrys-01.txt

Dear Cedric, all,

Thank you so much for this in-depth review of our draft. We have addressed
all your comments point by point in the recently pushed updated version.
Conjointly to this submission, you will find below our answers inline and
how we treated them inside the document.
All our answers begin with [TETRYS] to ease the reading.
See below ...

________________________________
De : Cedric Adjih <cedric.adjih@inria.fr>
Envoyé : jeudi 24 février 2022 10:16
À : nwcrg <nwcrg@irtf.org>
Cc : Colin Perkins <csp@csperkins.org>; Vincent Roca <vincent.roca@inria.fr>;
Emmanuel LOCHIN <emmanuel.lochin@enac.fr>; DETCHART Jonathan <
jonathan.detchart@isae-supaero.fr>; jerome.lacan <
jerome.lacan@isae-supaero.fr>; Marie-Jose Montpetit <marie@mjmontpetit.com>
Objet : Review of draft-irtf-nwcrg-tetrys-01.txt

Dear authors, dear participants of the nwcrg,


Here is a review of the document draft-irtf-nwcrg-tetrys-01.txt

(the line numbering is obtained from "cat -n
draft-irtf-nwcrg-tetrys-01.txt").


Globally, the document still needs some editing, but the content is already
in good shape.


* Main comments:

One main comment is that the document describes parts of a protocol (that
had been already implemented and experimented), but there is not a clear
boundary on which parts are described and which parts are not.


About half of the draft is focusing on the packet format (Section 5), but
it might be useful to provide/move some information on the semantics of the
protocol in an earlier part(s). This is true especially because some of the
semantics are implied/only presented in passing while detailing the bits of
the packet format protocol, and on the other hand, some of the important
high-level information and considerations appear in Section 6. Maybe there
is some room for instance in Sections 3 or 4 to give an overview of some of
the semantics and close some of the gaps between packet format et research
considerations: such as rules or examples for repair/redundant packets
generation, elastic window management with respect to feedback, etc.


Generally, it is not immediately clear what are the objective and the
content of the document as it presents itself as:

25 This document is a record of the experience gained by the authors

26 while developing and testing in real conditions the Tetrys protocol.

In particular, the current document would allow the parsing or generation
of well-formed Tetrys packets by a third party, but would not necessarily
allow developing an interoperable implementation (or even a full standalone
implementation), especially since some parts are missing considering the
feedback management, and window management - but it might also not be an
objective of the document?

The authors might consider whether the document is intended to include a
small primer on how an implement a sender/receiver scenario in open-loop
transmissions (no feedback) with the packet format they have; or even a
sender/receiver scenario with some example of feedback management (and in
this case does the protocol always attempt to recover all packets?)


[TETRYS] As this main comment is a global summary of all points raised
below, we propose to jump directly to the general comments below and answer
them point by point. Note that these answers aims at completing what is
already updated in the last submitted version.


General comments on the packet format:

I am not an expert on packet formats, and also am not sure whether the
document aims to document a packet format that already works for
implementation (hence is already self-contained), or if the intent is to
define a good basis for Tetrys-like protocol. In any case, I would have the
following comments:

* Some parts are describing specific exceptions that much not further
documented/used in the current draft: in particular the congestion control
information (lines 420-424 / 458-464), the transport section identifier
(lines 426-428 / 466-477), and the section Header Extension (Section
5.1.1), that are either optional or have alternate formats. It might be
simpler for instance to provide a single, generic "Type-Length-Value"
format for all options (e.g. RFC 8609 Section 3), or at least use the
generic Header Extension format for the CCI and TSI options as well.

[TETRYS] First, these fields lay on RFC3451 and their purpose is to provide
to developers an access to congestion control information, if needed, when
implementing their own protocol. Actually, all these points deal with the
congestion control interaction which is not the purpose of this draft. The
current draft does not aim at identifying interaction issues with the
transport layer, knowing these issues are also discussed in
https://datatracker.ietf.org/doc/draft-irtf-nwcrg-coding-and-congestion/
However, this interaction is further discussed Section 6.1 as a research
issue.


* Some of the efforts are spent to align the various fields on a 32 bits
boundary: it is fine, although it is not clear how much of this is
necessary (given that only source/coded symbol IDs are 32 bits long).

[TETRYS] Simply because we are considering C calls (e.g. read()), where a
32 bits size might improve the performance.


* Among the methods to specify lists of Source Symbol IDs, one is used in
one direction (compressed list, Section 5.3.1.1), another is used in the
other direction (SACK bitmap, lines 887-905); might this be streamlined?

[TETRYS] At least, the current proposal works. There is certainly a better
way to do it, but this might not be trivial.
SACK is indeed a proven and efficient method and the other formats are for
vector encodings which limit the amount of information needed to represent
a linear combination. However, we believe this discussion would have more
interest in the context of an IETF standard, and not within an informative
contribution, as this is the case here.


* It can be helpful to give symbolic names to predefined constant values of
message fields (such as packet types) as if there were an IANA registries
section.

[TETRYS] Definitely, we changed the notation in the last submitted version.

* Better (more precise) definitions could be given, be referring to other
documents. Notably the algebraic description of finite fields, and the
coefficient computation (lines 706-721), which had been also specified
elsewhere, for instance RFC 5510 and elsewhere.

[TETRYS] Agree, we used the same approach than in RFC8681 Section 3.7.1 and
added RFC5510. This part has been completely modified.


More detailed comments:


. lines 25-26, lines 156-157 -> maybe improve the description of the scope
of the draft?


[TETRYS] We think we understand your concern, as the sentence pointed out
may be a bit fuzzy. We changed to emphasize that the design of Tetrys
protocol detailed in this document is _completed_ by a record of the
experience gained by the authors while developing and testing in real
conditions the Tetrys protocol and in particular, several research issues
are discussed in Section 6 following our own experience and observations.


. lines 132-140 - the authors might further elaborate on the window,
feedback, and rate management in a later section.


[TETRYS] All these operations are further detailed in Section 4.


. lines 306-312 - the "Window Management Building Block" seems to be akin
to an algorithm; also are the coding rate management and congestion
management in this picture?


[TETRYS] Once again, we believe this discussion would be more useful in the
context of an IETF standard as the coding rate management should be
designed by the developer. However and as we are in the context of an
informative draft, we discuss potential issues concerning the coding rate,
in particular when interacting with a congestion controlled transport layer
in Sections 6.1 and 6.2. Note also thta we refer to
[I-D.irtf-nwcrg-coding-and-congestion], which is another draft written by
some of the authors that further elaborate on this problem.


. lines 331-33 - do the source symbols in the Elastic Encoding Window have
contiguous source symbol ID?


[TETRYS] They can be non-contiguous but ordered (e.g., the window might
contain symbols : {s10, s11, s12, s14, s15} where s13 is missing). However,
non-contiguous IDs prevent the possibility to "compress" the source ID list
in the encoding vector.


. line 348-352 - generally, what Tetrys does when using feedback is not
well defined in the draft, but here in particular when the encoding window
size is overflowing, probably both sides (encoder/decoder) have to take
some undefined actions.


[TETRYS] True. Similarly to TCP, a full protocol should implement ISO
Transport Service from RFC2126 and particularly protocol exchange messages
such as connection establishment, connection release, buffer size
negotiation (similarly to TCP flow control), ... The encoding window must
be bounded and this limit should be negotiated between both end-points for
instance, at the beginning of the connection.


. line 454 - "source packets (0)" -> something like "PT_SOURCE_SYMBOL"?
(that would make lines 588, 644 clearer)


[TETRYS] Agree, we change the notation (see PKT_TYPE_SOURCE,
PKT_TYPE_CODED, PKT_TYPE_WND_UPT, ...)


. lines 466-477 - it is maybe not necessary to specify that "IP + TSI"
uniquely define a session, as it may depend on the way Tetrys is integrated
with the other layers. For instance in case of multiple interfaces, maybe
it is acceptable to consider different source IP addresses as in the same
session?


[TETRYS] One possible other solution could be to use Connection IDs as in
QUIC RFC9000. Their main objective is to prevent wrong endpoint delivery of
packets due to changes in addressing at lower protocol layers (UDP, IP).
Basically each connection handles a set of connection identifiers able to
identify the connection independently of the IP address. Connection IDs are
independently selected by endpoints and each endpoint selects the
connection IDs used by its peer.


. lines 706-721 - maybe this part deserves its own paragraph (or
subsection). This should specify main details: the finite field (e.g.
GF(256), GF(16)), the unambiguous encoding of its elements (for instance
bit-order of the polynomial coefficients), the unambiguous choice for alpha
"root of the primitive polynomial" (not sure what is its representation),
etc. Also a bonus hint on why the choice of "Vandermonde" form could be
nice (and why the modulo). Maybe refer to other RFCs?


[TETRYS] As previously mentioned above this has been updated in the novel
submitted version (see lines 704 to 741) starting from :
704 The two RLC FEC schemes specified in this document
705 reuse the Finite Fields defined in [RFC5510], Section 8.1. More
706 specifically, the elements of the field GF(2^(m)) are represented
707 by polynomials with binary coefficients (i.e., over GF(2))


. lines 735, 741, 761, 765, 766, 778 - it is unclear what is an "edge
block", hence the difference between "compressed list of the source symbol
IDs" and "compressed edge blocks of source symbol IDs" is a bit unclear. In
general, Section 5.3.1.1 and 5.3.1.2 help, but some more examples of (all?)
possible encoding vector formats might help.


[TETRYS] Four examples have been added with the resulting fields to clarify=