<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.13 -->
<?rfc compact="yes"?>
<?rfc text-list-symbols="o*+-"?>
<?rfc subcompact="no"?>
<?rfc sortrefs="no"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc toc="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" consensus="true" 
  docName="draft-zhao-tcpm-ack-freq-adjustment-00" ipr="trust200902" submissionType="IETF" 
  obsoletes="" updates="" xml:lang="en" sortRefs="false" symRefs="true" tocInclude="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.27.0 -->
  <front>
    <title abbrev="AFAS">ACK Frequency Adjustment Strategy Based on Congestion Control Algorithms</title>
    <seriesInfo name="Internet-Draft" value="draft-zhao-tcpm-ack-freq-adjustment-00"/>
    <author fullname="Guangyu Zhao" initials="G." surname="Zhao">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street>No.32 XuanWuMen West Street</street>
          <city>Beijing</city>
          <code>100053</code>
          <country>China</country>
        </postal>
        <email>zhaoguangyu@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Ruifeng Li" initials="R." surname="Li">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street>No.32 XuanWuMen West Street</street>
          <city>Beijing</city>
          <code>100053</code>
          <country>China</country>
        </postal>
        <email>liruifengyjy@chinamobile.com</email>
      </address>
    </author>
    <date day="15" month="October" year="2025"/>
    <workgroup>tcpm</workgroup>
    <abstract>
      <t>TCP Delayed ACK is a widely deployed mechanism that can effectively reduce protocol overhead in many scenarios. The TARR option has been defined, which allows a sender to request a specific ACK frequency from a receiver. However, there is no clear method for adjusting the ACK frequency during data transmission over a TCP connection. This document provides a method for adjusting the ACK frequency by considering the different phases of congestion control algorithms. 
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>The TCP Delayed ACKs mechanism, specified in <xref target="RFC1122"/>, aims to reduce protocol overhead. 
        This design allows combining multiple segments and saves ACK packets under many traffic patterns, 
        leading to its widespread deployment. A TCP connection has different requirements for ACK feedback frequency 
        during different congestion control phases. Effectively adjusting the ACK frequency plays a crucial role 
        in calculating RTT and improving congestion control performance.
      </t>
      <t>TCP congestion control algorithms slide the congestion window upon receiving ACKs to regulate the sending rate. 
        Currently, widely used congestion control algorithms include CUBIC and BBR<xref target="I-D.ietf-ccwg-bbr"/> . 
        CUBIC is a typical RENO-type congestion control algorithm and is the default in operating systems like Linux and Windows. 
        It uses a cubic function as the congestion window growth function during the congestion avoidance phase to improve 
        network bandwidth utilization. RENO-type congestion control algorithms control the sending rate based on 
        received ACK packets, adjust the congestion window to regulate the sending rate, and use lost packets as congestion 
        signals to perform network congestion control. Their characteristics include slow start, congestion avoidance, 
        fast retransmit, and fast recovery.
      </t>
      <t>The BBR congestion control algorithm primarily works by periodically probing the bottleneck bandwidth 
        (bandwidth and delay) of the link and adjusting the congestion window size based on this information 
        to achieve high bandwidth utilization and low transmission latency. BBR consists mainly of four phases: 
        Startup, Drain, Probe Bandwidth, and Probe RTT.</t>
      <t>Startup phase: The main task of this phase is to rapidly increase the sending rate until the link's 
        bottleneck bandwidth is reached.</t>
      <t>Drain phase: The main task of this phase is to drain the backlog of packets in the link to reduce network latency.</t>
      <t>Probe Bandwidth phase: The main task of this phase is to probe the link's bottleneck bandwidth to determine 
        the optimal sending rate.</t>
      <t>Probe RTT phase: The main task of this phase is to probe the network's Round-Trip Time (RTT) to determine network 
        stability.</t>
      <t>The latest versions of the BBR algorithm have introduced new phases, including cruise, refill, up, and down, 
        to improve the design of the Probe Bandwidth phase. These enhancements aim to improve the fairness of BBR flows 
        when sharing network capacity with other traffic and also include improved handling of packet loss.</t>
    </section>

    <section anchor="frequency-adjustment" numbered="true" toc="default">
      <name>ACK frequency Adjustment Strategy Based on Congestion Control Algorithms </name>
      <section numbered="true" toc="default">
        <name>Adjusting ACK Frequency According to BBR Congestion Control Phases</name>
        <t>1. Startup Phase</t>
        <t>In the Startup phase, the sender needs to rapidly increase its sending rate to quickly reach the link's 
          bottleneck bandwidth. To accelerate the rate increase, the ACK feedback frequency should be set to a high value 
          to ensure the sender quickly receives acknowledgments from the receiver. Set the ACK feedback frequency to provide 
          an immediate ACK after each data packet is received, meaning the receiver sends an ACK immediately for 
          every data packet.</t>
        
        <t>2. Drain Phase</t>
        <t>In the Drain phase, the sender's main task is to drain the backlog of packets in the link to reduce network latency. 
          Since frequent sending rate adjustments are not necessary in this phase, the ACK feedback frequency should be set to 
          a lower value to reduce unnecessary computational and bandwidth resource consumption.The ACK frequency can be determined
           according to the following formula<xref target="TACK"/>:</t>
        <t>    f = min{bw/(L * MSS), &#946; / RTT_min} Formula (1)</t>
        <t>Where:</t>
        <t>f is the current ACK feedback frequency.</t>
        <t>bw is the available bandwidth of the current network link.</t>
        <t>L is a constant, with a default value.</t>
        <t>MSS is the Maximum Segment Size.</t>
        <t>&#946; is the number of packets sent per RTT_min.</t>
        <t>RTT_min is the minimum delay measured on the path of the transmission connection, corresponding to the BBR.min_rtt 
          parameter measured by the BBR algorithm. This RTT value determines the minimum amount of time required for the 
          connection to sustain transmission at the bottleneck bandwidth rate, thus determining the minimum amount of data 
          required for the connection to achieve full utilization.</t>
        
        <t>3. Probe Bandwidth Phase</t>
        <t>In the Probe Bandwidth phase, the sender's main tasks are to probe the link's bottleneck bandwidth to determine 
          the optimal sending rate and to send data steadily at the current rate.</t>
        <t>BBRv1 Version:During the 1.25x speed-up phase, obtain one ACK per data packet and calculate the bottleneck bandwidth 
          of the link.In other phases, calculate and adjust the ACK acquisition frequency according to Formula (1).</t>
        <t>BBRv2, BBRv3 Versions:The corresponding bandwidth probing phase is the "up" phase. During this phase, obtain one ACK 
          per data packet and calculate the bottleneck bandwidth of the link.</t>
        
        <t>4. Probe RTT Phase</t>
        <t>In the Probe RTT phase, the sender's main task is to probe the network's RTT to determine network stability. 
          In the BBRv1 version, the sending rate or congestion window is reduced to 4 packets, and one ACK is obtained per 
          data packet. In BBRv2 and v3 versions, the sending rate or congestion window is reduced to half of its original size, 
          and one ACK is obtained per data packet.</t>
        
        <t>5. Other Phases</t>
        <t>TBD.</t>
      </section>
      
      <section numbered="true" toc="default">
        <name>Adjusting ACK Frequency According to Reno-like Congestion Control Phases</name>
        <t>TBD.</t>
      </section>
    </section>
    
    <section anchor="experiment" numbered="true" toc="default">
      <name>Experiment</name>
      <t>TBD.</t>

    </section>
    
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>TBD.</t>
    </section>
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>TBD.</t>
    </section>
    <section numbered="true" toc="default">
      <name>Contributors</name>
      <t>The following people have substantially contributed to this
      document:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
  Zhiqiang Li
  lizhiqiangyjy@chinamobile.com
  
  Hongwei Yang
  yanghongwei@chinamoblie.com]]></artwork>
    </section>
    
    <section numbered="true" toc="default">
      <name>Acknowledgements</name>
      <t>TBD.</t>
    </section>
    
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
          <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        
        <reference anchor="TACK">
          <front>
            <title>TACK: Improving Wireless Transport Performance by Taming Acknowledgments</title>
            <author initials="T." surname="Li" fullname="Tong Li">
              <organization/>
            </author>
            <author initials="K." surname="Zheng" fullname="Kai Zheng">
              <organization/>
            </author>
            <date year="2020" month="August"/>
          </front>
          <seriesInfo name="Proceedings of the 2020 Conference of the ACM Special Interest Group on Data Communication (ACM SIGCOMM)" value=""/>
        </reference>
        
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1122.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ccwg-bbr.xml"/>
      </references>
    </references>
  </back>
</rfc>
