<?xml version="1.0" encoding="US-ASCII"?>
<!-- This is built from a template for a generic Internet Draft. Suggestions for
     improvement welcome - write to Brian Carpenter, brian.e.carpenter @ gmail.com 
     This can be converted using the Web service at http://xml.resource.org/ -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<!-- You want a table of contents -->
<!-- Use symbolic labels for references -->
<!-- This sorts the references -->
<!-- Change to "yes" if someone has disclosed IPR for the draft -->
<!-- This defines the specific filename and version number of your draft (and inserts the appropriate IETF boilerplate -->
<?rfc sortrefs="yes"?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc topblock="yes"?>
<?rfc comments="no"?>
<rfc category="info" docName="draft-chen-tsvwg-updated-ack-00"
     ipr="trust200902">
  <front>
    <title abbrev="Network Working Group">An Updated ACK mechanism based on
    RDMA</title>

    <author fullname="Danyang Chen" initials="D." surname="Chen">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street/>

          <city>Beijing</city>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>chendanyang@chinamobile.com</email>
      </address>
    </author>

    <!---->

    <date day="18" month="October" year="2024"/>

    <area>Networking</area>

    <workgroup>Web and Internet Transport</workgroup>

    <keyword>RDMA, ACK mechanism</keyword>

    <abstract>
      <t>This document proposes a new ACK mechanism for the technical gaps of
      RDMA used in wide-area network data transmission. The new ACK mechanism,
      which gets rid of the limitation of sliding window size setting and RTT
      measurement, can further improve the effective throughput of network
      transmission.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>The existing retransmission mechanisms for packet loss mainly include
      the following three: timeout retransmission, fast retransmission and
      selective retransmission (SACK). Timeout retransmission sets a period of
      time after data is sent. If no ACK response is received within this
      period, the data is retransmitted, whether the sent packet or ACK
      response is lost. In this mechanism, the timeout RTO should be set to
      slightly greater than one RTT (Round-Trip Time latency). And due to
      network fluctuations, RTO should also be a dynamically changing value.
      After the sender sends several packets and the receiver receives three
      identical ACK packets, fast retransmission retransmits the lost packet
      segment before the timer expires. The SACK method adds a SACK part to
      the TCP header field. The SACK part can send the received data
      information to the sender. In this way, the sender can know which data
      has been received and which data has not been received. This can solve
      the efficiency problem of fast retransmission to a certain extent (for
      example, if 2, 3, and 4 packets are lost in a row, quick retransmission
      alone requires nine ACK times, but with the SACK option, the sender
      knows which packets are lost and can complete the process through one
      retransmission).</t>

      <t>In the above methods, if each data is sent for a confirmation
      response, when the previous packet received the response and then sent
      to the next, the network transmission efficiency will be very low.
      Therefore, TCP introduced the sliding window mechanism, there is a
      window field in the TCP header, which tells the other side how long the
      free buffer I currently have for receiving data. For the sender,
      subtract this value from the length of the data that has not received
      the ACK response, which is the data that can be sent directly at
      present. After receiving the ACK packet, continue to slide the send
      window backwards.</t>

      <t>The three classical retransmission modes of packet loss all depend on
      the setting of RTO and window size. However, as mentioned above, the
      setting of RTO is related to RTT, and RTT is related to network status,
      so it is difficult to achieve accurate setting of RTO. If the RTO is too
      large, the sender will have to wait for a long time to discover that the
      packet segment is lost, which reduces the throughput of connection data
      transmission. On the other hand, if the RTO is too small, although the
      sender can quickly detect the loss of packet segments, it may mistake
      some packet segments with a large delay as lost, causing unnecessary
      retransmission and wasting network resources. The size of the sliding
      window also has a great impact on network performance. If the sliding
      window is too small, the confirmation information needs to be
      transmitted frequently on the network, which will occupy a large amount
      of network bandwidth. If the sliding window is too large, the network
      with high utilization rate and easy packet loss will need to send
      repeated data for many times, which also consumes network bandwidth.</t>

      <t>In order to meet the data transmission requirements of wide-area
      high-throughput networks, improve the network bandwidth utilization as
      much as possible, improve the effective throughput rate of the network,
      solve the problems such as the sensitivity of the go-back-N packet loss
      retransmission algorithm used by RDMA to packet loss, and the
      maintenance of the receiving window by the traditional SACK, this
      document plans to improve the existing packet retransmission mechanism.
      A time-counting dual-dimensional packet loss retransmission mechanism
      (T/C-SACK) is proposed.</t>
    </section>

    <section title="Updated ACK Mechanism">
      <t>This document proposes a time-counting dual-dimensional packet loss
      retransmission mechanism (T/C-SACK), which decoups the sending rate from
      packet loss retransmission, and removes window-less. The receiver
      triggers the packet loss retransmission notification according to the
      preset time or the number of packets received.</t>

      <t>The mechanism proposed in this paper enables the sender to
      continuously send packets according to the preset transmission rate
      without being limited by the sliding window size, which solves the
      problem of bandwidth consumption caused by unreasonable window size
      setting and can improve the effective throughput of network
      transmission.</t>

      <t>The flow of the new ACK mechanism proposed in this document is as
      follows:<list>
          <t>According to the network environment and the size of the packet
          to be sent, the packet sending rate of the sender is preset, the
          cumulative acknowledgement time T of the receiver and the cumulative
          number of received packets N.</t>

          <t>If the window limit is removed, the sender does not need to
          adjust the sending rate based on packet loss. Instead, the sender
          only needs to keep sending packets at the preset sending rate.</t>

          <t>Within the range of the cumulative acknowledgement time T and the
          cumulative number of received packets N, the receiver continues to
          receive packet packets and arranges them according to packet
          sequence number in the receive buffer.</t>

          <t>When the preset time T or the accumulated number of received
          packets N is reached, the receiver triggers the acknowledgement
          mechanism and sends the received packet sequence number to the
          sender through an ACK packet.</t>

          <t>After receiving the ACK packet, the sender checks whether any
          packet is lost according to the rules. If any packet is lost, the
          sender resends the lost packet to the receiver.</t>

          <t>If the sender does not receive an ACK packet within 2T, it
          considers that the ACK packet is lost and resends the last
          packet.</t>
        </list></t>
    </section>

    <section title="A New ACK Packet Format">
      <t>TBD</t>
    </section>

    <section anchor="Security" title="Security Considerations"/>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document has no requests to IANA.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
    </references>
  </back>
</rfc>
