NWCRG N. Kuhn
Internet-Draft CNES
Intended status: Informational E. Lochin
Expires: August 9, 2020 ISAE-SUPAERO
F. Michel
UCLouvain
M. Welzl
University of Oslo
February 6, 2020
Coding and congestion control in transport
draft-irtf-nwcrg-coding-and-congestion-01
Abstract
Coding is a reliability mechanism that is distinct and separated from
the loss detection of congestion controls. Using coding can be a
useful way to better deal with tail losses or with networks with non-
congestion losses. However, coding mechanisms should not hide
congestion signals. This memo offers a discussion of how coding and
congestion control can coexist. This document can help the
comparison of FEC schemes by identifying at which level they are
operating with respect to the transport congestion control.
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: coding for tunnels is out-of-the scope of
the document.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on August 9, 2020.
Kuhn, et al. Expires August 9, 2020 [Page 1]
Internet-Draft Coding and congestion February 2020
Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Separate channels, separate entities . . . . . . . . . . . . 3
3. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Type of application . . . . . . . . . . . . . . . . . . . 4
3.2. End-to-end . . . . . . . . . . . . . . . . . . . . . . . 4
3.3. Objective of the document . . . . . . . . . . . . . . . . 5
4. FEC above the transport . . . . . . . . . . . . . . . . . . . 5
5. FEC within the transport . . . . . . . . . . . . . . . . . . 6
6. FEC below the transport . . . . . . . . . . . . . . . . . . . 6
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
9. Security Considerations . . . . . . . . . . . . . . . . . . . 8
10. Informative References . . . . . . . . . . . . . . . . . . . 8
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8
1. Introduction
There are cases where deploying coding improves the quality of the
transmission. As an example, it may take time for the server to
detect tail losses and this would impact the experience of
applications using short flows. Another example are networks where
non-congestion losses are persistent and prevent a sender from
exploiting the link capacity.
Coding is a reliability mechanism that is distinct and separated from
the loss detection of congestion controls. [RFC5681] defines TCP as
a loss-based congestion control; because coding repairs such losses,
blindly applying it may easily lead to an implementation that also
hides a congestion signal to the sender. It is important to ensure
that such information hiding does not occur.
Kuhn, et al. Expires August 9, 2020 [Page 2]
Internet-Draft Coding and congestion February 2020
This memo offers a discussion of how coding and congestion control
can coexist. One objective is to help the research community
consider congestion control aspects when proposing and comparing
coding solutions.
This document represents the collaborative work and consensus of the
Coding for Efficient Network Communications Research Group (NWCRG);
it is not an IETF product and is not a standard. The proposed
recommendations apply for coding at the transport or application
layer. Coding for tunnels is out of scope for the document.
2. Separate channels, separate entities
Figure 1 presents the notations that will be used in this document
and introduce the Congestion Control (CC) and Forward Erasure
Correction (FEC) channels. The Congestion Control channel carries
data packets (from a server to a client) and potential information
signaling the packets that have been received (from the client to the
server). The Forward Erasure Correction channel carries coded
packets (from the server to the client) and a potiential information
signaling the packets that have been repaired (from the client to the
server). It is worth pointing out that there are cases where these
channels are not separated.
Client Server
+------+ +------+
| | -- { data packet -----| |
| CC | | CC |
| | -- received packet } --| |
+------+ +------+
+------+ +------+
| | -- { coded packet ----| |
| FEC | | FEC |
| | -- repaired packet } --| |
+------+ +------+
Figure 1: Notations and separate channels
Inside a host, the CC and FEC entities can be regarded as
conceptually separate:
Kuhn, et al. Expires August 9, 2020 [Page 3]
Internet-Draft Coding and congestion February 2020
| ^ | ^
| data | coded | data, | sending
| | data |requirements | rate (or
v | v | window)
+-----------------------------+ +-------------------------+
| FEC | | CC |
+-----------------------------+ +-------------------------+
^ ^
| information | network
| about repaired | measurements
| ratio
Figure 2: Separate entities (server side)
Figure 2 provides more details than Figure 1 by focusing on the
server side. The inputs to FEC (data to work upon, and signaling
from the receiver about losses and/or repaired blocks) are distinct
from the inputs to CC. The latter calculates a sending rate or
window from network measurements, and it takes the data to send as
input, sometimes along with application requirements such as upper/
lower rate bounds, periods of quiescence, or a priority.
It is not clear that the ACK signals feeding into a congestion
control algorithm are useful to FEC in their raw form, and vice versa
- information about repaired blocks may be quite irrelevant to a CC
algorithm. However, there can be meaningful other interactions
(indicated by the horizontal double arrow) between the two entities,
usually as a result of their operation rather than by relaying their
own raw inputs.
3. Scope
This section describes the scope of the document.
3.1. Type of application
The document focuses on reliable transmissions.
3.2. End-to-end
The document focuses on end-to-end coding, i.e. cases where coding is
added at the server and client end points. The discussions should
then consider fairness with non-coding solutions.
Kuhn, et al. Expires August 9, 2020 [Page 4]
Internet-Draft Coding and congestion February 2020
3.3. Objective of the document
Section 2 presents that FEC and CC can be seen as two separate
channels. In practice, implementations may mix the signals that are
exchanged on these channels. This document discusses how FEC and CC
relate. The discussion can help in avoiding comparing FEC schemes
that do not operate at the same level (with respect to the CC). [NK:
We may want to later add that we provide recommendations - but for
the moment, we may just list the server side coding solutions in the
layering approach without providing recommendations for each case]
4. FEC above the transport
Figure 3 illustrates the FEC above the transport case.
|
| data
v
+------------------------------------+
| FEC |
+------------------------------------+
^ | ^
| information | coded | sending rate
| about repaired | data | (or window)
| ratio v |
+-----------------+
| Transport | coded data
| (including CC) | ===>
+-----------------+
^
| network
| measurements
Figure 3: FEC above the transport (server side)
Figure 3 presents an architecture where FEC is on top of the
transport. The coded packets are sent within what the congestion
window allows.
The advantage of this approach is that the FEC does not contribute to
adding congestion in the network.
The drawback of this approach is that it is useless if the transport
guarantees data delivery by retransmitting packets.
Kuhn, et al. Expires August 9, 2020 [Page 5]
Internet-Draft Coding and congestion February 2020
5. FEC within the transport
Figure 4 illustrates the FEC within the transport case.
|
| data, requirements
|
v
+---------------------+
| Transport |
| +-----+ +-----+ | coded data
| | FEC | | CC | | ===>
| +-----+ +-----+ |
| |
+---------------------+
^ ^
| |
information network
about measurements
repaired ratio
Figure 4: FEC in the transport (server side)
Figure 4 presents an architecture where FEC is within the transport.
The coded packets are sent within what the congestion window allows,
such as in [CTCP]. Examples of the solution would be sending coded
packets when there is no more data to transmit or preferably send
coded packets instead of the following packets in the send buffer.
The advantage of this approach is that it can enable conjoint
optimization between the CC and the FEC. Moreover, the transmission
of coded packets does not add congestion in potentially congested
networks but help repair lost packets (such as tail losses).
The drawback of this approach is that it may not result in much gains
as opposed to classical CC retransmissions mechanisms and it costs
bandwidth that could have been exploited to transmit non coded data
packets. The coding ratio needs to be carefully designed.
6. FEC below the transport
Figure 5 illustrates the FEC below the transport case.
Kuhn, et al. Expires August 9, 2020 [Page 6]
Internet-Draft Coding and congestion February 2020
| data | sending rate
| requirements | (or window)
v v
+------------------------------------+
| Transport (including CC) |
+------------------------------------+
^ |
| network | data
| measurements |
v
+-----------------+
| FEC | coded data
| | ===>
+-----------------+
^
| information
| about repaired
| ratio
Figure 5: FEC below the transport (server side)
Figure 5 presents an architecture where FEC is below the transport.
The coded packets are sent on top of what is allowed by the
congestion control. Examples of the solution could be adding a given
percentage of the congestion window as supplementary packets or
sending a given amount of coded packets at a given rate. The
redundancy flow can be decorrelated from the congestion control that
manages source packets: a secondary congestion control could be
introduced underneath the FEC layer, such as in coupled congestion
control for RTP media [I-D.ietf-rmcat-coupled-cc]. An example would
be to exploit a lower than best-effort congestion control [RFC6297].
The advantage of this approach is that it can result in performance
gains when there are persistent transmission losses along the path.
The drawback of this approach is that it can induce congestion in
already congested networks. The coding ratio needs to be carefully
designed.
7. Acknowledgements
Many thanks to Spencer Dawkins, Dave Oran, Carsten Bormann, Vincent
Roca and Marie-Jose Montpetit for their useful comments that helped
improve the document.
Kuhn, et al. Expires August 9, 2020 [Page 7]
Internet-Draft Coding and congestion February 2020
8. IANA Considerations
This memo includes no request to IANA.
9. Security Considerations
There is no security considerations required for this document.
10. Informative References
[CTCP] Kim (et al.), M., "Network Coded TCP (CTCP)",
arXiv 1212.2291v3, 2013.
[I-D.ietf-rmcat-coupled-cc]
Islam, S., Welzl, M., and S. Gjessing, "Coupled congestion
control for RTP media", draft-ietf-rmcat-coupled-cc-09
(work in progress), August 2019.
[RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion
Control", RFC 5681, DOI 10.17487/RFC5681, September 2009,
<https://www.rfc-editor.org/info/rfc5681>.
[RFC6297] Welzl, M. and D. Ros, "A Survey of Lower-than-Best-Effort
Transport Protocols", RFC 6297, DOI 10.17487/RFC6297, June
2011, <https://www.rfc-editor.org/info/rfc6297>.
Authors' Addresses
Nicolas Kuhn
CNES
Email: nicolas.kuhn@cnes.fr
Emmanuel Lochin
ISAE-SUPAERO
Email: emmanuel.lochin@isae-supaero.fr
Francois Michel
UCLouvain
Email: francois.michel@uclouvain.be
Kuhn, et al. Expires August 9, 2020 [Page 8]
Internet-Draft Coding and congestion February 2020
Michael Welzl
University of Oslo
Email: michawe@ifi.uio.no
Kuhn, et al. Expires August 9, 2020 [Page 9]