<?xml version="1.0" encoding="US-ASCII"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com)
     by Daniel M Kohn (private) -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

]>
<rfc category="info" docName="draft-bagnulo-congress-cci-01"
     ipr="trust200902">
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

  <?rfc toc="yes" ?>

  <?rfc symrefs="yes" ?>

  <?rfc sortrefs="yes"?>

  <?rfc iprnotified="no" ?>

  <?rfc strict="yes" ?>

  <front>
    <title abbrev="CCI">Congestion Control Invariants
	</title>

    <author fullname="Marcelo Bagnulo" initials="M." surname="Bagnulo">
      <organization>UC3M</organization>
      <address>
        <email>marcelo@it.uc3m.es</email>
      </address>
    </author>

<date year="2023" />


    <abstract>
      <t> This document initiates the discussion about Congestion Control Invariants, that is, mechanisms that several CCAs implement and that would benefit from a common specification for all CCAs to improve their interoperability
      </t>
    </abstract>
  </front>

  <middle>
   <section title="Introduction">
	
	<t>Over the last decade, we have witnessed a refreshing spring in congestion control research, resulting in a number of novel congestion control algorithms (CCAs). Indeed, in addition to the traditional congestion control algorithms such as New Reno and Cubic, we can now observe in that at least, the following algorithms are being used in parts of the Internet:
		<list>
			<t>BBR (Bottleneck Bandwidth and Round-trip propagation time) <xref target="I-D.cardwell-iccrg-bbr-congestion-control" /> is a model-based congestion control algorithm that attempts to improve the performance of Internet communications by reducing the delay (when bottleneck buffers are large) and increase the throughput (when bottleneck buffers are small).</t>
			<t>LEDBAT/LEDBAT++ (Low Extra Delay Background Transport) )<xref target="I-D.irtf-iccrg-ledbat-plus-plus" />  is a CCA that implements a less-than-best-effort (LBE) traffic class.  When LEDBAT()++) traffic shares a bottleneck with one or more TCP connections using Cubic or other loss-based congestion control algorithms, it reduces its sending rate earlier and more aggressively than competing flows, allowing Cubic traffic to use more of the available capacity.</t>
			<t>DCTCP (Data-Center TCP) <xref target="I-D.ietf-tcpm-dctcp" /> is a CCA developed by Microsoft to reduce the latency for data center communications. DCTCP relies on AccECN to quantify the amount of inflight traffic that is experiencing congestion and reduced the sending rate accordingly. This allows DCTCP to operate with small queues, oscillating around the optimal operation point. while DCTP was originally designed for its use within data center networks, the L4S (Low Latency, Low Loss, and Scalable Throughput) architecture extends the use of DCTCP to the Internet. </t>
			<t>MPTCP (MultiPath TCP) <xref target="RFC8684" /> is an extension to TCP to support multiple concurrent paths in a single TCP connection. MPTCP includes a novel CCA that allows the coupling of the CCAs used in the different paths <xref target="RFC6356" />. Through the coupled CCA, MPTCP manages to offload traffic from paths that are experiencing congestion towards path that are less congested. </t>
		</list></t>
	
		<t>The adoption of the aforementioned CCA has not been uneventful. The roll-outs of some CCA have been problematic <xref target="_10.1145_3355369.3355604" /> than others. Specifically, the wide deployment of BBR(v1) attracted a fair amount of attention due to the (un)fairness issues that arise when BBR(v1) competes against legacy CCAs such as Cubic and New Reno  . As it has been repeatedly reported, BBR(v1) does not react to packet losses, which results in large packet loss rate for itself and other competing flows using alternative CCAs. Since other CCAs (such as Cubic) do react to packet losses, this BBR(v1) behaviour resulted in BBR(v1) seizing more than its fair share of capacity when competing with CCAs that do react against packet losses. these fairness issues are now being corrected with the new version of BBR (BBRv2) and also triggered the community to re-think the fairness requirements imposed to novel CCAs in order to be deployed in the public Internet.</t>
		
		<t>In this note, we focus in a different aspect of the interaction between different CCAs. Specifically, we posit that several of these CCAs implement similar functionalities in different ways which pose challenges to the correct interaction between these CCAs. The goal of this note is to initiate a line of research to identify potential invariants in CCAs, meaning, mechanisms that several CCAs implement and that would benefit from a common specification for all CCAs to improve their interoperability. Such standardised mechanisms could serve as building blocks for novel CCAs, so that when a new CCA needs to implement one of such functions, it re-uses the specified building block, rather than re-inventing it. To bootstrap the proposed work, we motivate and propose a first Congestion Control algorithm Invariant (CC), namely, periodic slow downs.</t> 

	<section title="Periodic Slow Down Invariant">
		<section title="Motivation">
			<t>Both BBR and LEDBAT++ estimate the base RTT as part of their operations. The base RTT is the RTT in the absence of queueing delay, which means it is the minimum RTT observable in a given path. 
			LEDBAT++ uses the base RTT to determine the current queuing delay, which is computed as the difference between the current RTT and the base RTT. BBR uses the base RTT to determine the Bandwidth Delay Product (BDP) which affects the flight-size a flow is able to inject in the network. </t>   
			<t>In order to have visibility of the base RTT, both protocols perform periodic slow downs as an attempt to empty the queues and expose the base RTT. Because there may be multiple flows contributing to the queue, both protocols include some form of synchronisation logic, that allows multiple competing flows to slow down at the same time, increasing the chances to empty the queue and expose the base RTT. While both protocols implement the periodic slow down, the actual implementation details differ.</t>
			<t>In the case of LEDBAT++, it performs a slow-start increase at the beginning of the connection. Then, LEDBAT++ executes periodic slow-downs to obtain more accurate measurements of the base RTT. Specifically LEDBAT++ sets the Congestion Window (CW) to 2 MSS during 2 RTTs and then performs a slow-start increase back to the value that it was using before the periodic decrease. An initial slow-down is performed 2 RTTs after exiting the initial slow-start. This process is performed periodically. If we call Tss the time that it takes for the slow-start to ramp back up, then LEDBAT++ performs the next periodic slow down after a period equal to 9Tss. </t>
			<t>This mechanism effectively empties the queue when there is a single LEDBAT++ flow contributing to the queue (i.e. there is no other traffic, LEDBAT++ or otherwise). If there are other competing LEDBAT++ flows, this mechanism, albeit counter-intuitively, actually works. Where there is a single flow int he bottleneck and it is using LEDBAT++, it will correctly estimate the base RTT. If later on, another LEDBAT++ joins, the base RTT measured will include the added queueing delay T generated by the previous flow. This will trigger than the second flow will attempt to generate an additional queueing delay T on top of that, outcasting the first flow. This is called late-comer advantage and has been documented extensively <xref target="_10.1145_3355369.3355604" />. At this point, only the second flow prevails. This is when the initial slow down of the second flow kicks in. Since the second flow has outcasted the first flow, when the second flow slows down, it exposes the base RTT.</t>
			<t>In the base of BBRv1, if during the last 10s, a BBRv1 flow has not observed an RTT smaller than its current estimation of the base RTT (called RTprop), BBRv1 enters in the ProbeRTT state, reducing the inflight to only 4 packets during at least 200 ms and one RTT. RTprop is set to the minimum RTT observed during the last 10 s. This mechanism naturally embeds synchronisation of slow-downs across multiple flows. Suppose there are N uncoordinated BBRv1 flows competing in the bottleneck. When the first one of them performs a slow down, it is likely that the rest of the flows record a minimum value for the RTT, which would likely cause than the next slow down will occurs 10 s after this for all flows.</t>
			<t>We have described how both LEDBAT++ and BBRv1 periodic slow down mechanism work when there are multiple LEDBAT++/BBRv1 flows respectively. We next consider how the slow down mechanism perform when there is a mix of BBRv1 and LEDBAT++ flows. Based on the logic of each of the mechanisms, we can easily conclude that will not synchronise their slow downs. The reason for this is that the period of the slowdowns does not match. In the case of BBR is a fixed period of 10 s, while in the LEDBAT++ case, the period depends both on the RTT and in the targeted CW. This lack of synchronisation has been verified experimentally in <xref target="COMNET" />.</t>
		</section>
		<section title="Proposed invariant">
			<t>Having two CCAs such as LEDBAT++ and BBR implementing two different slow down mechanisms is clearly counterproductive, since neither of them is able to perform concurrently and expose the base RTT when there is a mix of both types of flows competing in a bottleneck. Having a single slow down mechanism standardised that should be used as a building block by every CCA that requires a periodic slow down mechanism would naturally bring interoperability between the different CCAs, avoiding interference when they need to expose and measure the base RTT.</t>
			<t>Regarding the specific mechanism, we believe that the one specified by BBR has merits over the one of LEDBAT++. Specifically, the one specified by BBR is able to synchronise the slowdowns of multiple flows, which seems challenging for the LEDBAT++ mechanism, especially when the different flows have different characteristics. for instance, if there are different LEDBAT++ flows with different RTTs competing in the same bottleneck, the periods of the slow downs of the different flows is likely to be different as the Tss for each flow will be different (because the RTTs are different).</t> 
		</section>
	</section>
	<section title="Other potential invariants">
		<t>As next steps, we propose to identify other potential invariants by identifying basic building blocks used in different CCAs and that if implemented in different ways would result in interference between the different flavours.</t> 
	</section>
		
		
		
		
		
		</section>



    <section title="Security Considerations">

    </section>

    <section title="IANA Considerations">

    </section>

    <section title="Acknowledgements">

	<t>This work was supported by the EU through the StandICT CCI project.</t> 
    </section>

  </middle>

  <back>


    <references title="Informative References">

     <?rfc include='reference.I-D.cardwell-iccrg-bbr-congestion-control'?>
	 <?rfc include='reference.I-D.irtf-iccrg-ledbat-plus-plus" ?>
     <?rfc include="reference.RFC.6817" ?>
	 
	  <?rfc include="reference.I-D.ietf-tcpm-dctcp" ?> 
	  
     <?rfc include="reference.RFC.8684" ?>     
	 <?rfc include="reference.RFC.6356" ?>






	 <reference anchor="COMNET" >
	        <front>
	            <title>When less is more: BBR versus LEDBAT++</title>
	            <author initials="M.B." surname="Bagnulo" fullname="Marcelo Bagnulo">
	                <organization />
	            </author>
	            <author initials="A.G." surname="Garcia-Martinez" fullname="alberto Garcia-Martinez">
	                <organization />
	            </author>
	            <date year="2022" />
	        </front>
	        <seriesInfo name="Computer Networks" value="Volume 219" />
	        <refcontent></refcontent>
	    </reference>


<reference anchor="_10.1145_3355369.3355604" target="http://dx.doi.org/10.1145/3355369.3355604">
<front>
<title>
Modeling BBR's Interactions with Loss-Based Congestion Control
</title>
<author fullname="Ranysha Ware" surname="Ware">
<organization>Carnegie Mellon University</organization>
</author>
<author fullname="Matthew K. Mukerjee" surname="Mukerjee">
<organization>Nefeli Networks</organization>
</author>
<author fullname="Srinivasan Seshan" surname="Seshan">
<organization>Carnegie Mellon University</organization>
</author>
<author fullname="Justine Sherry" surname="Sherry">
<organization>Carnegie Mellon University</organization>
</author>
<author>
<organization>ACM</organization>
</author>
<date day="21" month="October" year="2019"/>
</front>
<refcontent>Proceedings of the Internet Measurement Conference</refcontent>
<seriesInfo name="DOI" value="10.1145/3355369.3355604"/>
</reference>


<reference anchor="_10.1016_j.comnet.2013.02.020" target="http://dx.doi.org/10.1016/j.comnet.2013.02.020">
<front>
<title>
Rethinking the Low Extra Delay Background Transport (LEDBAT) Protocol
</title>
<author fullname="Giovanna Carofiglio" surname="Carofiglio"/>
<author fullname="Luca Muscariello" surname="Muscariello"/>
<author fullname="Dario Rossi" surname="Rossi"/>
<author fullname="Claudio Testa" surname="Testa"/>
<author fullname="Silvio Valenti" surname="Valenti"/>
<author>
<organization>Elsevier BV</organization>
</author>
<date month="June" year="2013"/>
</front>
<refcontent>Computer Networks, vol. 57, no. 8, pp. 1838-1852</refcontent>
<seriesInfo name="DOI" value="10.1016/j.comnet.2013.02.020"/>
</reference>



    </references>
  </back>
</rfc>
