Re: [nwcrg] I-D Action: draft-irtf-nwcrg-coding-and-congestion-05.txt

Kuhn Nicolas <> Mon, 22 February 2021 16:50 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id ECA453A1DBB for <>; Mon, 22 Feb 2021 08:50:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 7rB8ykIgeUcX for <>; Mon, 22 Feb 2021 08:50:09 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 1EE503A0AA1 for <>; Mon, 22 Feb 2021 08:50:08 -0800 (PST)
X-IronPort-AV: E=Sophos; i="5.81,197,1610409600"; d="scan'208,217"; a="24187357"
From: Kuhn Nicolas <>
To: 'Michael Welzl' <>, Marie-Jose Montpetit <>
CC: roca <>, "" <>
Thread-Topic: [nwcrg] I-D Action: draft-irtf-nwcrg-coding-and-congestion-05.txt
Thread-Index: AQHXBDdgKiwpmSyEu0SbGumMrta+tapaZpQAgAN1u5aABo36MA==
Date: Mon, 22 Feb 2021 16:50:01 +0000
Message-ID: <>
References: <> <> <> <> <>
In-Reply-To: <>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
x-tm-as-product-ver: SMEX-
x-tm-as-result: No-23.357100-8.000000-10
x-tmase-matchedrid: vWvnoyq7eMw7iuZ/mdYYtq6BkpaFwy8N7/+9swuISRXT7QbuKj/gda1D nvO5cSZcFZVWQa5bomvfNKD9uRfMaV3n+beqvEXMSprpPKHJe8+T9bd2q/Jc0wvBPGQoLW6lw3b B4TsYCZlQg2FPhnvik3chjFF7GmAAYUuZn9VXZWGH4I6QZJ07kfFBLqyzMQ6ahjOnJudfcN0ueP wsf46cHoTupmyHzxaPxVQFfLw4zf/tEm/I0e6z7gNPGPNKJEnBvnwPkToqUsJHYDaPB4d0+xzfB OVfQ0inqMLr8w1TE6jJ/bVh4iw9hqmvtGxmfrOZu8MF5O5w0laEW1g6KxcsLI0ogGHrw9oBQUUi DKo91afkWZrPAyKWDxlLm7Fc/E3poae+ev6zOlItferJ/d7Ab06pgIbVd5REYY+BSeD7lyt7Ya1 HVUdOVozzVltKnXVo9FQh3flUIh4GAD6h6FZmEYhIjrzeyQMK3z/3MGfAW954QDWoRVUbQHER5r HmG8Wqk4DUhUqJIL5oUArKobkzYjVvI0Ic6AC1FBQ5IKls/A6IavEwyYMt/NwTyQoIrnVD7ZAtm +Y/ZbWBuA5wvFsZwvRuTPYDI6IvpZnQY49fmqCy7nAa4Xi7XbNSrREeq4umcsRTm7NHz9Sp1Fnj yMzfGlH5jl3Rub1AquhwVBoPC0kj8dL4lJnXruC8pKahLnNgic78j+LtLYA6EDh28picBUCc6xj Yxko1FmurKg2yWK02Uxn7RTIiMdfTPr2VbSmVP/mlMDR9HNQMSKLJ3T4bL/LH8cPCrKX3Qhg/Yy HHNFdSHosnxqKdcGv+i/U0zBYLuIzBsv4c7qybKItl61J/ybLn+0Vm71LcF0R3uGLoidC4UWwlt DXjMNypa3oolEGgt5sI5za80evMvL7YP7x0mg9JNge2hKH4dBMUqsNJS33y+JNZqixWsB/BXqwE 9HSW
x-tm-as-user-approved-sender: Yes
x-tm-as-user-blocked-sender: No
x-tmase-result: 10--23.357100-8.000000
x-tmase-version: SMEX-
Content-Type: multipart/alternative; boundary="_000_F3B0A07CFD358240926B78A680E166FF29EC7D94TWMBXP03cnesnet_"
MIME-Version: 1.0
Archived-At: <>
Subject: Re: [nwcrg] I-D Action: draft-irtf-nwcrg-coding-and-congestion-05.txt
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IRTF Network Coding Research Group discussion list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Mon, 22 Feb 2021 16:50:14 -0000


Following the comments on the mailing lists, there has been a quick update on the draft to save some cycles.

Thank you very much for the feedback that help improve the document.
Please see inline how the comments have been :

(1)    addressed in the update , or

(2)    added to the issues of the GITHUB repo for further discussions during next IETF and updates of this document.



De : Michael Welzl <>
Envoyé : jeudi 18 février 2021 13:34
À : Marie-Jose Montpetit <>
Cc : Kuhn Nicolas <>fr>; roca <>fr>; iccrg IRTF list <>rg>;
Objet : Re: [nwcrg] I-D Action: draft-irtf-nwcrg-coding-and-congestion-05.txt

Hi all,

Interesting questions, thanks!  A bit difficult to answer, too… I hope my co-authors have ideas  ;-)

I’m intrigued by one in particular, down below:

On Feb 17, 2021, at 6:47 PM, Marie-Jose Montpetit <<>> wrote:

Ok so let me add to Vincent’s detailed comments with more generic ones some of the information exists - it may just need to be re-organized.
- This is an IRTF document how is this relating to current research and where?
- CC and NC are essentially two competing control loops - there is a lot of heritage on that topic (outside networking too) - what can NC/CC learn from that - any research questions?
- My experience with NC is that the most gains are in low loss networks (far from network capacity) - where in fact CC protocols over react- is there research on appropriate metrics?

*low* loss, far from network capacity? Why would a CC mechanism over-react? When it’s far from the capacity, there’s nothing to react upon… did you mean that they are too cautious and flows terminate before even reaching the capacity limit?  I can imagine this being an interesting scenario for coding indeed, but I’d like to understand if this is what you meant.
[NK] I have added these elements on the GITHUB for discussion during the next meeting or update of the document.


- Most of the gain seems to be in last-mile/access networks - any other research?
[NK] I have added these elements on the GITHUB for discussion during the next meeting or update of the document.


Marie-José Montpetit, Ph.D.<>

From: roca <><>
Reply: roca <><>
Date: February 17, 2021 at 5:52:20 AM
To: Kuhn Nicolas <><>
Cc: roca <><>, iccrg IRTF list <><>,<> <><>
Subject:  Re: [nwcrg] I-D Action: draft-irtf-nwcrg-coding-and-congestion-05.txt

Dear authors, everybody,

Thanks a lot for this significant revision of your I-D.
Here are few comments, based on a quick review of the document.




Generally speaking, this is a great document IMHO.
[NK] Thank you very much.

** Section 2.1:
   "The Forward Erasure Correction channel carries repair symbols (from the sender to
   the receiver) and potential information signaling which packets have
   been repaired (from the receiver to the sender). "

Isn’t it a bit restrictive to say the feedback potentially carries information about repaired symbols only?
We could imagine other types of information (loss rate prior and/or after decoding for instance).
For instance, later, in section 4.3, you mention that:
   « The receiver may indicate to the sender the number of packets that have been received or recovered. »

[NK] You are right. Updated as follows : ‘ The Forward
   Erasure Correction channel carries repair symbols (from the sender to
   the receiver) and information from the receiver to the sender (e.g.
   signaling which packets have been repaired, loss rate prior and/or
   after decoding, etc.). ‘

** Section 2.2:
   "The document considers one application layer stream as input packets.
   The application layer may exploit several paths above both the FEC
   and transport layers; this case is not further described in the

Confusion between « paths » and « stream ». Is it the same?
Also, since this is a key point, could you just detail a bit more what are the implications of « several paths ».
The various streams could be mapped on top of the same transport connection, or on top of different transport
connection. Consequences are totally different.

[NK] This was not clear in the previous version of the document. Updated as follows:

   The application layer may be composed of several streams above each

   FEC and transport layers instances.  The different streams could

   exploit different paths between the sender and the receiver or not.

   The document considers one application layer stream as input packets

   above a combination of FEC and transport layers.  The case of

   multiple application level streams above multiple FEC and transport

   layers instances is currently out of the scope of the document and

   not further described.
** Section 2.3:
This new section is important as it raises key questions.
However the organisation of ideas could perhaps be a bit improved (several ideas are mixed I think).
Last paragraph is okay however and contains the key messages in this section (perhaps swap last two sentences).

[NK] This was indeed not clear. We have tried to move things around and hope it is better.

   End users may share a bottleneck that may not be ruled by a quality

   of service mechanism that should ensure the fairness between the

   different flows.  In this case, the share of available capacity

   between single flows can help assess when one flow starves the other.

   As one example, for residential accesses, the data-rate can be

   guaranteed for the customer premises equipment, but not necessarily

   for the end user.  The quality of service that guarantees fairness

   between the different clients can be seen as a policy concern


   While past efforts have focused on achieving fairness, quantifying

   and limiting harm caused by new algorithm (or algorithms with coding)

   is more practical [BEYONDJAIN].  This document considers fairness as

   the impact of the addition of coded flows on non-coded flows when

   they share the same bottleneck.

   This document assumes that the non-coded flows respond to congestion

   signals from the network.  This document does not aim at contributing

   to the definition of fairness at a wider scale.

** Section 3.3:
I don’t understand this part of the sentence:
   « Adapting the coding rate to the minimum required data rate of the application… »

If I decide that the code rate adds a 5% overhead, then I don’t really care about the minimum required data rate of the app.
It will increase the required data rate by 5%.
My concern is more to know if this is compatible with the "available capacity given by the congestion control underneath"
as said just before. I suspect it just needs to be reformulated.

[NK] That was not clear indeed. Updated as follows:

   The coding rate applied at the application layer mainly depends on

   the available capacity given by the congestion control underneath.

   The coding rate could be adapted to avoid adding overhead when the

   minimum required data rate of the application is not provided by the

   congestion control underneath.  When it is not the case, coding would

   reduce packet losses and improve the quality of experience.

** Section 3.6:
I would say that partial reliability essentially impacts the type of FEC and type of codec you can use.
If your codec does not enable a subset of the linear system to be inverted, but instead waits to have the
perfect expected rank to invert and recover missing packets, you won’t achieve partial reliability.
Partial reliability also impacts the way you use a block FEC: in that case, I’d say use small block sizes, so
that you can solve one of them but not necessarily all of them… except that it will also lower the robustness
in front of long loss periods. This is typically where sliding window codes do offer a key advantage.

[NK] We have added an issue on the GITHUB. Partial reliability should be better described in the document.
In the mean time, we have added the following in all sections on partial reliability.

Partial reliability impacts the type of FEC and

   type of codec that can be used.

** Section 4:
Are you sure that « the cost of capacity used to transmit source packets » is what you mean?
I’d say: « to transmit repair packets » instead.

[NK] Updated as follows :

There is a trade-off

   between1) the capacity that could have been exploited to transmit

   source packets and 2) the benefits brought out by transmitting repair

   symbols (e.g. unlocking the receive buffer if this is limiting).

** Section 4.2:
Is the assumption « If the FEC and CC channels are decoupled » meaningful when we talk about
FEC within the transport? For me within means that they are both coupled in some way.

[NK] We removed the sentences.

** Section 4.3:
   « an increasing coding rate as a probe of the channel capacity »
Increasing the coding rate reduces the amount of redundancy added. In fact I realize that coding rate is not
[NK] Indeed. We have added a definition of coding rate and updated as follows :

   There is an important flexibility in the trade-off, inherent to the

   use of coding, between (1) reducing goodput when useless repair

   symbols are transmitted and (2) helping to recover sooner from

   transmission and congestion losses.  The receiver may indicate to the

   sender the number of packets that have been received or recovered.

   The sender may exploit this information to tune the coding ratio.  As

   one example of flexibility of this case, coupling an increased

   transmission rate with an increasing or decreasing coding rate could

   be envisioned.  A server may use an decreasing coding rate as a probe

   of the channel capacity and adapt the congestion control transmission


** Section 5.4:
I’d suggest talking about adjusting the code rate to what is actually needed instead of saying:
   « and tune the amount of useless repair symbols »

[NK]    The useless repair symbols only impact the load of the network

   without actual gain for the coded flow.  That being said, using

   feedback signaling, FEC mechanisms can measure the actually used

   symbols and adjust the coding rate.

** Section 6 Open research questions
While working on RFC 8681 on sliding window codes, we tried to find appropriate parameter derivation
techniques. It turned out to be quite difficult. You can have a look at the discussion here:

[NK] Added in the issues list.
** section 3.2: add a final « s » to « retransmission » in: « may reduce the number of retransmission »

[NK] Thanks.

Le 16 févr. 2021 à 08:45, Kuhn Nicolas <<>> a écrit :

Dear all,

We have worked on an updated version of the draft on interactions between congestion control and network coding.
It will be presented in the NWCRG session of IETF110.
Please let us know if you have any comments or views on the comment - there is still time for further updating the document before the cut-off for draft submission.

Kind regards,

Nicolas on the behalf of the authors

-----Message d'origine-----
De : nwcrg <<>> De la part de<>
Envoyé : mardi 16 février 2021 08:43
À :<>
Cc :<>
Objet : [nwcrg] I-D Action: draft-irtf-nwcrg-coding-and-congestion-05.txt

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Coding for efficient NetWork Communications Research Group RG of the IRTF.

       Title           : Coding and congestion control in transport
       Authors         : Nicolas Kuhn
                         Emmanuel Lochin
                         Francois Michel
                         Michael Welzl
               Filename        : draft-irtf-nwcrg-coding-and-congestion-05.txt
               Pages           : 19
               Date            : 2021-02-15

  Forward Erasure Correction (FEC) is a reliability mechanism that is
  distinct and separate from the retransmission logic in reliable
  transfer protocols such as TCP.  Using FEC coding can help deal with
  losses at the end of transfers or with networks having non-congestion
  losses.  However, FEC coding mechanisms should not hide congestion
  signals.  This memo offers a discussion of how FEC coding and
  congestion control can coexist.  Another objective is to encourage
  the research community to also consider congestion control aspects
  when proposing and comparing FEC coding solutions in communication

  This document is the product of the Coding for Efficient Network
  Communications Research Group (NWCRG).  The scope of the document is
  end-to-end communications: FEC coding for tunnels is out-of-the scope
  of the document.

The IETF datatracker status page for this draft is:

There are also htmlized versions available at:

A diff from the previous version is available at:

Please note that it may take a couple of minutes from the time of submission until the htmlized version and diff are available at<>g/>.

Internet-Drafts are also available by anonymous FTP at:

nwcrg mailing list<>

nwcrg mailing list<>

nwcrg mailing list<>
nwcrg mailing list<>