<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY bom    "&#65279;">
  <!ENTITY wd     "&#x2011;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902"
     docName="draft-li-hpwan-transmission-optimization-00"
     category="info" submissionType="IETF" consensus="true" version="3"
     xml:lang="en" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="HPWAN Transmission Optimization">Coordinated Packet Loss Recovery and Congestion Control for High-Throughput WAN Transmission</title>
    <seriesInfo name="Internet-Draft" value="draft-li-hpwan-transmission-optimization-00"/>

    <author fullname="Zhiqiang Li" initials="Z." surname="Li">
      <organization>China Mobile</organization>
      <address>
        <postal><city>Beijing</city><code>100053</code>
        <country>China</country></postal>
        <email>lizhiqiangyjy@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Zongpeng Du" initials="Z." surname="Du">
      <organization>China Mobile</organization>
      <address>
        <postal><city>Beijing</city><code>100053</code>
        <country>China</country></postal>
        <email>duzongpeng@chinamobile.com</email>
      </address>
    </author>
    <author fullname="Junjie Wang" initials="J." surname="Wang">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>wangjj@centec.com</email>
      </address>
    </author>
    <author fullname="Wei Cheng" initials="W." surname="Cheng">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>chengw@centec.com</email>
      </address>
    </author>
    <author fullname="Guoying Zhang" initials="G." surname="Zhang">
      <organization>Centec</organization>
      <address>
        <postal><city>Shanghai</city><code>201203</code>
        <country>China</country></postal>
        <email>zhanggy@centec.com</email>
      </address>
    </author>
    <author fullname="Xun Sun" initials="X." surname="Sun">
      <organization>Inesa</organization>
      <address>
        <postal><city>Shanghai</city><code>200030</code>
        <country>China</country></postal>
        <email>sunxun@inesa.com</email>
      </address>
    </author>
    <author fullname="Chunhao Zhao" initials="C." surname="Zhao">
      <organization>SAIA</organization>
      <address>
        <postal><city>Shanghai</city><code>200125</code>
        <country>China</country></postal>
        <email>chunhao.zhao@sh-aia.com</email>
      </address>
    </author>

    <date year="2026" month="July" day="4"/>
    <area>TSV</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>FEC</keyword>
    <keyword>congestion control</keyword>
    <keyword>QUIC</keyword>
    <keyword>high-throughput</keyword>
    <keyword>WAN</keyword>
    <keyword>ACK Delay</keyword>
    <abstract>
      <t>This document defines a coordinated mechanism between packet loss recovery (forward error correction) and congestion control for high-throughput WAN transmission. In high bandwidth-delay product (BDP) networks, loss recovery operations introduce additional processing delay at the receiver, which distorts the congestion controller's perception of network conditions. This mechanism addresses the problem by dynamically adjusting the ACK Delay field in acknowledgment packets to reflect loss recovery processing overhead, enabling the congestion control algorithm to accurately distinguish true network delay from recovery processing delay.</t>
      <t>The mechanism is applicable to QUIC, TCP, and RDMA transport protocols, and supports host-side, network-side, and coordinated deployment modes.</t>
    </abstract>
  </front>

  <middle>
<section anchor="introduction" numbered="true" toc="include"><name>Introduction</name>
<t>Services such as bulk data transfer, inter-datacenter WAN interconnection, and large-scale distributed training and inference require high-throughput network transmission. While underlay network technology has advanced to 400G commercial capability and is evolving toward 800G and 1.6T, high bandwidth does not automatically translate to high throughput. The primary gap lies in the lack of transport-layer innovation for high-BDP, loss-prone network scenarios, particularly in the coordination between packet loss recovery and congestion control.</t>
<t>Packet loss recovery mechanisms use redundancy coding algorithms (e.g., Reed-Solomon, Random Linear Codes, Tornado, Tetrys) to encode data packets with redundancy before transmission. When minor packet loss occurs, the receiver can reconstruct lost packets from redundant data without waiting for retransmission.</t>
<t>Congestion control mechanisms detect network quality based on signals such as packet loss (e.g., CUBIC <xref target="CUBIC"/>), delay (e.g., Swift), or bottleneck bandwidth (e.g., BBR <xref target="BBR"/>), and adjust the congestion window (cwnd) and pacing rate to match network capacity.</t>
<t>However, when both mechanisms operate simultaneously, the loss recovery module's processing delay interferes with the congestion controller's network quality assessment, leading to suboptimal cwnd and pacing rate calculations. This document proposes a coordination mechanism to resolve this interference.</t>
<section anchor="requirements-language" numbered="true" toc="include"><name>Requirements Language</name>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
</section></section>
<section anchor="terminology" numbered="true" toc="include"><name>Terminology</name>
<dl><dt>BDP (Bandwidth-Delay Product):</dt><dd>The product of a link's bandwidth and its round-trip delay, representing the amount of data in flight.</dd>
<dt>FEC (Forward Error Correction):</dt><dd>Redundancy coding used for packet loss recovery without retransmission.</dd>
<dt>cwnd (Congestion Window):</dt><dd>The sender-side limit on the amount of data in flight.</dd>
<dt>pacing rate:</dt><dd>The rate at which the sender transmits packets.</dd>
<dt>ACK Delay:</dt><dd>A field in acknowledgment packets indicating the receiver's processing delay between packet reception and ACK generation. Defined in <xref target="RFC9000"/> Section 19.3, with loss detection and congestion control defined in <xref target="RFC9002"/>.</dd>
<dt>RTT (Round-Trip Time):</dt><dd>The time for a packet to travel from source to destination and back.</dd>
<dt>Nmin:</dt><dd>The minimum number of packets recovered in bulk that triggers batch recovery feedback adjustment.</dd>
<dt>Tmax:</dt><dd>The maximum inter-recovery interval that triggers frequent recovery feedback adjustment.</dd>
<dt>S:</dt><dd>A configurable constant representing the recovery delay compensation value.</dd></dl>
</section>
<section anchor="problem-statement" numbered="true" toc="include"><name>Problem Statement</name>
<section anchor="loss-recovery-interference" numbered="true" toc="include"><name>Loss Recovery Interference with Congestion Control</name>
<t>When the loss recovery module operates, it introduces additional processing delay at the receiver. The receiver must wait for sufficient redundant data to arrive before performing decoding and recovery. This additional delay is included in end-to-end RTT measurements, causing the congestion control module to misinterpret it as increased network transmission delay and incorrectly reduce cwnd or pacing rate.</t>
</section>
<section anchor="throughput-oscillation" numbered="true" toc="include"><name>Throughput Oscillation</name>
<t>The above misinterpretation causes unnecessary sender slowdown. Reduced sending rate may in turn cause insufficient redundant data at the receiver, leading to recovery failure, triggering retransmission, further increasing delay, and creating a negative feedback loop. This oscillation severely limits high-throughput transmission capability.</t>
</section></section>
<section anchor="coordinated-ack-delay" numbered="true" toc="include"><name>Coordinated ACK Delay Adjustment Mechanism</name>
<section anchor="overview" numbered="true" toc="include"><name>Overview</name>
<t>This mechanism adds loss-recovery delay awareness to the transport protocol's ACK mechanism. The receiver dynamically adjusts the ACK Delay field based on the actual operating intensity of the loss recovery module, providing the sender with accurate network delay feedback and eliminating recovery processing delay interference with congestion control.</t>
</section>
<section anchor="service-type-adaptation" numbered="true" toc="include"><name>Service Type Adaptation</name>
<t>The working mode of loss recovery and congestion control SHOULD be selected based on service type. For High-Throughput, Non-Low-Latency Services: loss recovery SHOULD NOT be enabled; only congestion control and retransmission-based loss recovery are used, avoiding bandwidth waste from redundancy coding. For High-Throughput, Low-Latency Services: both loss recovery and congestion control MUST be enabled, coordinated by this mechanism. Upon packet loss, FEC-based recovery is attempted first; retransmission is used only if recovery fails.</t>
</section>
<section anchor="ack-delay-rules" numbered="true" toc="include"><name>ACK Delay Adjustment Rules</name>
<t>The receiver MUST adjust the ACK Delay field based on the loss recovery module's operational state according to the following rules.</t>
<section anchor="no-recovery" numbered="true" toc="include"><name>No Loss Recovery Triggered</name>
<t>When loss recovery is not triggered, ACK Delay retains its standard definition: ACK_Delay = t2 - t1, where t1 is the packet reception time and t2 is the ACK generation and transmission time.</t>
</section>
<section anchor="batch-recovery" numbered="true" toc="include"><name>Batch Recovery Scenario</name>
<t>When a large number of packets (n &gt;= Nmin) are recovered via the loss recovery module: ACK_Delay = t2 - t1 + f1(n, ...), where f1() is a compensation function of recovered packet count n and other parameters. When the recovered packet count does not meet the batch threshold: ACK_Delay = t2 - t1 + S, where S is a configurable recovery delay compensation constant.</t>
</section>
<section anchor="frequent-recovery" numbered="true" toc="include"><name>Frequent Recovery Scenario</name>
<t>When packets are recovered frequently (inter-recovery interval t &lt;= Tmax): ACK_Delay = t2 - t1 + f2(t, ...), where f2() is a compensation function of recovery interval t and other parameters. When the recovery frequency does not meet the threshold: ACK_Delay = t2 - t1 + S.</t>
</section></section>
<section anchor="deployment-modes" numbered="true" toc="include"><name>Deployment Modes</name>
<t>This mechanism supports three deployment modes: Host-Side Deployment -- the sending host/NIC performs FEC encoding and congestion control sending logic; the receiving host/NIC performs FEC decoding, ACK Delay adjustment, and congestion control receiving logic; no network-side changes required. Network-Side Deployment -- the sending gateway/router proxies sender traffic and performs FEC encoding and congestion control; the receiving gateway/router proxies receiver traffic and performs FEC decoding and ACK Delay adjustment; no host-side changes required. Coordinated Deployment -- host-side and network-side devices collaborate to perform the above functions.</t>
</section></section>
<section anchor="packet-format-extensions" numbered="true" toc="include"><name>Packet Format Extensions</name>
<section anchor="quic-ack-extension" numbered="true" toc="include"><name>QUIC ACK Frame Extension</name>
<t>For QUIC <xref target="RFC9000"/>, the ACK frame is extended with an optional TLV field to carry additional information from the receiver to the sender. New ACK frame type 0x04 and ACK_MP frame type 0xbaba02 are defined with an extended format that includes an optional TLV Extension carrying TLV Type, TLV Length, and TLV Value. The TLV Extension carries information such as recovery status, recovered packet count, and recovery interval.</t>
</section>
<section anchor="other-protocols" numbered="true" toc="include"><name>Applicability to Other Protocols</name>
<t>This mechanism MAY be adapted to TCP (via TCP Options extension) and RDMA (via CNP/NACK extension). The specific adaptation varies by protocol, but the core ACK Delay adjustment logic remains consistent.</t>
</section></section>
<section anchor="security-considerations" numbered="true" toc="include"><name>Security Considerations</name>
<t>ACK Delay Tampering: A malicious receiver could forge ACK Delay values to manipulate the sender's congestion control decisions. Senders SHOULD validate ACK Delay values for reasonableness and enforce upper-bound thresholds. TLV Injection: The new TLV fields in ACK frames could be exploited for malicious data injection. Implementations MUST strictly validate TLV content and enforce length checks. Network-Side Deployment Security: In gateway proxy mode, gateways can observe and modify transport-layer state. Gateway devices MUST implement strict access controls to prevent unauthorized modification.</t>
</section>
<section anchor="iana-considerations" numbered="true" toc="include"><name>IANA Considerations</name>
<t>This document requests IANA to allocate the following: (1) Registration of the extended ACK frame type 0x04 semantics and TLV sub-types in the QUIC Frame Types registry. (2) A formal QUIC frame type code point for ACK_MP frame type 0xbaba02.</t>
</section>
  </middle>

  <back>
      <references title="Normative References">
    <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
      <front>
        <title>Key words for use in RFCs to Indicate Requirement Levels</title>
        <author initials="S." surname="Bradner" fullname="Scott Bradner"/>
        <date year="1997" month="March"/>
      </front>
      <seriesInfo name="BCP" value="14"/>
      <seriesInfo name="RFC" value="2119"/>
      <seriesInfo name="DOI" value="10.17487/RFC2119"/>
    </reference>
    <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
      <front>
        <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
        <author initials="B." surname="Leiba" fullname="Barry Leiba"/>
        <date year="2017" month="May"/>
      </front>
      <seriesInfo name="BCP" value="14"/>
      <seriesInfo name="RFC" value="8174"/>
      <seriesInfo name="DOI" value="10.17487/RFC8174"/>
    </reference>
    <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000">
      <front>
        <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
        <author initials="J." surname="Iyengar" fullname="Jana Iyengar, Ed."/>
        <author initials="M." surname="Thomson" fullname="Martin Thomson, Ed."/>
        <date year="2021" month="May"/>
      </front>
      <seriesInfo name="RFC" value="9000"/>
      <seriesInfo name="DOI" value="10.17487/RFC9000"/>
    </reference>
    <reference anchor="RFC9002" target="https://www.rfc-editor.org/info/rfc9002">
      <front>
        <title>QUIC Loss Detection and Congestion Control</title>
        <author initials="J." surname="Iyengar" fullname="Jana Iyengar, Ed."/>
        <author initials="I." surname="Swett" fullname="Ian Swett, Ed."/>
        <date year="2021" month="May"/>
      </front>
      <seriesInfo name="RFC" value="9002"/>
      <seriesInfo name="DOI" value="10.17487/RFC9002"/>
    </reference>
      </references>
      <references title="Informative References">
    <reference anchor="BBR">
      <front>
        <title>BBR: Congestion-Based Congestion Control</title>
        <author initials="N." surname="Cardwell" fullname="Neal Cardwell"/>
        <author initials="Y." surname="Cheng" fullname="Yuchung Cheng"/>
        <author initials="C.S." surname="Gunn" fullname="C. Stephen Gunn"/>
        <author initials="S.H." surname="Yeganeh" fullname="Soheil Hassas Yeganeh"/>
        <author initials="V." surname="Jacobson" fullname="Van Jacobson"/>
        <date year="2016"/>
      </front>
      <seriesInfo name="ACM Queue" value="vol. 14, no. 5"/>
    </reference>
    <reference anchor="CUBIC">
      <front>
        <title>CUBIC: a new TCP-friendly high-speed TCP variant</title>
        <author initials="S." surname="Ha" fullname="Sangtae Ha"/>
        <author initials="I." surname="Rhee" fullname="Injong Rhee"/>
        <author initials="L." surname="Xu" fullname="Lisong Xu"/>
        <date year="2008"/>
      </front>
      <seriesInfo name="ACM SIGOPS OSR" value="vol. 42, no. 5"/>
    </reference>
      </references>
  </back>
</rfc>
