<?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-rfc version 1.7.13 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-chung-ietf-ccwg-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.0 -->
  <front>
    <title abbrev="search">SEARCH -- a New Slow Start Algorithm for TCP and QUIC</title>
    <seriesInfo name="Internet-Draft" value="draft-chung-ietf-ccwg-00"/>
    <author initials="J." surname="Chung" fullname="Jae Won Chung">
      <organization abbrev="viasat">Viasat Inc</organization>
      <address>
        <postal>
          <street>300 Nickerson Rd,</street>
          <city>Marlborough, MA</city>
          <code>1002</code>
          <country>United States of America</country>
        </postal>
        <email>jaewon.chung@viasat.com</email>
      </address>
    </author>
    <author initials="M." surname="Kachooei" fullname="Maryam Ataei Kachooei">
      <organization abbrev="WPI">Worcester Polytechnic Institute</organization>
      <address>
        <postal>
          <street>100 Institute Rd</street>
          <city>Worcester, MA</city>
          <code>01609</code>
          <country>United States of America</country>
        </postal>
        <email>mataeikachooei@wpi.edu</email>
      </address>
    </author>
    <author initials="F." surname="Li" fullname="Feng Li">
      <organization abbrev="viasat">Viasat Inc</organization>
      <address>
        <postal>
          <street>300 Nickerson Rd,</street>
          <city>Marlborough, MA</city>
          <code>1002</code>
          <country>United States of America</country>
        </postal>
        <email>feng.li@viasat.com</email>
      </address>
    </author>
    <author initials="M." surname="Claypool" fullname="Mark Claypool">
      <organization abbrev="WPI">Worcester Polytechnic Institute</organization>
      <address>
        <postal>
          <street>100 Institute Rd</street>
          <city>Worcester, MA</city>
          <code>01609</code>
          <country>United States of America</country>
        </postal>
        <email>claypool@cs.wpi.edu</email>
      </address>
    </author>
    <date year="2024" month="June" day="06"/>
    <area>Web and Internet Transport</area>
    <workgroup>congestcontrol</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 160?>

<t>TCP slow start is designed to ramp up to the network congestion point
quickly, doubling the congestion window each round-trip time until the
congestion point is reached, whereupon TCP exits the slow start phase.
Unfortunately, the default Linux TCP slow start implementation -- TCP
Cubic with HyStart -- can cause premature exit from slow
start, especially over wireless links, degrading link utilization.
However, without HyStart, TCP exits slow start too late, causing
unnecessary packet loss.  To improve TCP slow start performance, this
document proposes using the Slow start Exit At Right CHokepoint
(SEARCH) algorithm where the TCP sender determines the
congestion point based on acknowledged deliveries -- specifically, the
sender computes the delivered bytes compared to the expected delivered
bytes, smoothed to account for link latency variation and normalized
to accommodate link capacities, and exits slow start if the delivered
bytes are lower than expected.  We implemented SEARCH as a Linux
kernel v5.16 module and evaluated it over WiFi, 4G/LTE, and low earth
orbit (LEO) and geosynchronous (GEO) satellite links.  Analysis of the
results show that the SEARCH reliably exits from slow start after the
congestion point is reached but before inducing packet loss.</t>
    </abstract>
  </front>
  <middle>
    <?line 182?>

<section anchor="problems">
      <name>Introduction</name>
      <t>The TCP slow start mechanism starts sending data rates cautiously yet
rapidly increases towards the congestion point, approximately doubling
the congestion window (cwnd) each round-trip time (RTT).
Unfortunately, default implementations of TCP slow start, such as TCP
Cubic with HyStart <xref target="HYSTART"/> in Linux, often result in a premature
exit from the slow start phase, or, if HyStart is disabled, excessive
packet loss upon overshooting the congestion point.  Exiting slow
start too early curtails TCP's ability to capitalize on unused link
capacity, a setback that is particularly pronounced in high
bandwidth-delay product (BDP) networks (e.g., GEO satellites) where
the time to grow the congestion window to the congestion point is
substantial.  Conversely, exiting slow start too late overshoots the
link's capacity, inducing necessary congestion and packet loss,
particularly problematic for links with large (bloated) bottleneck
queues.</t>
      <t>To determine the slow start exit point, we propose that the TCP sender
monitor the acknowledged delivered bytes in an RTT and compare that to
what is expected based on the bytes acknowledged as delivered during
the previous RTT.  Large differences between delivered bytes and
expected delivered bytes is then the indicator that slow start has
reached the network congestion point and the slow start phase should
exit.  We call our approach the Slow start Exit At Right CHokepoint
(SEARCH) algorithm.  SEARCH is based on the principle that during slow
start, the congestion window expands by one maximum segment size (MSS)
for each acknowledgment (ACK) received, prompting the transmission of
two segments and effectively doubling the sending rate each RTT.
However, when the network surpasses the congestion point, the delivery
rate does not double as expected, signaling that the slow start phase
should exit.  Specifically, the current delivered bytes should be
twice the delivered bytes one RTT ago.  To accommodate links with a
wide range in capacities, SEARCH normalizes the difference based on
the current delivery rate and since link latencies can vary over time
independently of data rates (especially for wireless links), SEARCH
smooths the measured delivery rates over several RTTs.</t>
      <t>This document describes the current version of the SEARCH algorithm,
version 3. Active work on the SEARCH algorithm is continuing.</t>
      <t>This document is organized as follows: Section 2 provides terminology
and definitions relevant used throughout this document; Section 3
describes the SEARCH algorithm in detail; Section 4 provides
justification for algorithm settings; Section 5  describes the
implementation status; Section 6 describes security considerations;
Section 7 notes that there are no IANA considerations; Section 8
closes with acknowledgments; and Section 9 provides references.</t>
    </section>
    <section anchor="terminology-and-definitions">
      <name>Terminology and Definitions</name>
      <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 RFC 2119, BCP 14
<xref target="RFC2119"/> and indicate requirement levels for compliant CoAP
implementations.</t>
      <t>In this document, the term "byte" is used in its now customary sense
as a synonym for "octet".</t>
      <t><em>ACK:</em> a TCP acknowledgement.</t>
      <t><em>bins:</em> the aggregate (total) of acknowledged delivery bytes over a
small time window.</t>
      <t><em>congestion window (cwnd):</em> A TCP state variable that limits the
 amount of data a TCP can send. At any given time, a TCP flow MUST NOT
 send data with a sequence number higher than the sum of the highest
 acknowledged sequence number and the minimum of the cwnd and receiver
 window.</t>
      <t><em>norm_diff:</em> the normalized difference in current delivered bytes and
 previously delivered bytes.</t>
      <t><em>round-trip time (RTT):</em> the round-trip time for a segment sent until
 the acknowledgement is received.</t>
      <t><em>THRESH:</em> the norm_diff value above which SEARCH will consider the
 congestion point to be reached and the slow start phase exits.</t>
    </section>
    <section anchor="search-algorithm">
      <name>SEARCH Algorithm</name>
      <t>The concept that during the slow start phase, the delivered bytes
should double each RTT until the congestion point is reached is core
to the SEARCH algorithm. In SEARCH, when the bytes delivered one RTT
prior is half the bytes delivered currently, the bitrate is not yet at
capacity, whereas when the bytes delivered prior are more than half
the bytes delivered currently, the link capacity has been reached and
TCP exits slow start.</t>
      <t>One challenge in monitoring delivered data across multiple RTTs is
latency variability for some links. Variable latency in the absence of
congestion - common in some wireless links - can cause RTTs to differ
over time even when the network is not yet at the congestion point.
This variability complicates comparing delivered bytes one RTT prior
to those delivered currently in that a lowered latency can make it
seem like the total bytes delivered currently is too low compared to
the total delivered one RTT ago, making it seem like the link is at
the congestion point when it is not.</t>
      <t>To counteract link latency variability, SEARCH tracks delivered data
over several RTTs in a sliding window providing a more stable basis
for comparison.  Since tracking individual segment delivery times is
prohibitive in terms of memory use, the data within the sliding window
is aggregated over bins representing small, fixed time periods. The
window then slides over bin-by-bin, rather than sliding every
acknowledgement (ACK), reducing both the computational load (since
SEARCH only triggers at the bin boundary) and the memory requirements
(since delivered byte totals are kept for a bin-sized time interval
instead of for each segment).</t>
      <t>The SEARCH algorithm (that runs on the TCP sender only) is shown
below.</t>
      <t>The parameters in CAPS (lines 1-6) are constants, with the INITIAL_RTT
(line 1) obtained via the first round-trip time measured in the TCP
connection.</t>
      <t>The variables in Initialization (lines 7-9) are set once, upon
establishment of a TCP connection.</t>
      <t>The variable <em>now</em> on lines 9, 10 and 24 is the current system time
when the code is called.</t>
      <t>The variable sequence_num and rtt above line 10 are obtained upon
arrival of an acknowledgement from the receiver.</t>
      <t>The variable <em>cwnd</em> on line 41 is the current congestion window.</t>
      <t>Lines 1-6 set the predefined parameters for the SEARCH algorithm.  The
window size (WINDOW SIZE) is 3.5 times the initial RTT.  The delivered
bytes over a SEARCH window is approximated using 10 (W) bins, with an
additional 15 additional bins (EXTRA_BINS) bins (for a total of 25
(NUM_BINS)) to allow comparison of the current delivered bytes to the
previously delivered bytes one RTT earlier.  The bin duration
(BIN_DURATION) is the window size divided by the number of
bins. The threshold (THRESH) is set to 0.35 and is the upper bound of
the permissible difference between the previously delivered bytes and
the current delivered bytes (normalized) above which slow start exits.</t>
      <t>Lines 7 to 9 do one-time initialization of SEARCH variables when a TCP
connection is established.</t>
      <t>After initialization, SEARCH only acts when acknowledgements (ACKS) are
received and even then, only when the current time (<em>now</em>) has passed
the end of the latest bin boundary (stored in the variable bin_end).
This check happens on line 10 and if the bin boundary is passed, the
bin statistics are updated in the function update_bins(), lines 24-31.</t>
      <t>In update_bins(), under most TCP connections, the time (<em>now</em>) is in
the successive bin, but in some cases (such as during an RTT spike or
a TCP connection without data to send), more than one bin boundary may
have been passed.  Line 24 computes how many bins have been passed.
In lines 26 to 28, for each bin passed, the bin[] variable is set to
0.  For the latest bin, the delivered bytes is updated by taking the
latest sequence number (from the ACK) and subtracting the previously
recorded sequence number in the last bin boundary (line 30).  In line
31, the current sequence number is stored (in prev_seq_num) for
computing the delivered bytes the next time a bin boundary is passed.</t>
      <t>Once the bins are updated, lines 12-14 check if enough bins have been
filled to run SEARCH.  This requires at least W (10) bins (i.e., on
SEARCH window worth of bytes-delivered data), but also enough bins to
shift back by an RTT to compute a window (10) bins one RTT ago, too.</t>
      <t>If there is enough bin data to run SEARCH, lines 15 and 17 compute the
current and previously delivered bytes over a window (W) of bins,
respectively.  This sum is computed in the function sum_bins(), lines
32-38. For previously delivered bytes, shifting by an RTT may mean the
SEARCH window lands between bin boundaries, so the sum is interpolated
by the fraction of each of the end bins.</t>
      <t>The function sum_bins(), idx1 and idx2 are the indices into the
bin[] array for the start and end of the bin summation and as
explained above, fraction is the proportion (from 0 to 1) of the end
bins to use in the summation.  In lines 33-35, the summation loops
through the bin[] array for the middle bins, modulo the number of
bins allocated (NUM_BINS) and then adds the fractions of the end bins
in lines 36 and 37.</t>
      <t>Once bin sums are tallied, line 18 calculates the difference between
the expected delivered bytes (2 * prev_delv) and the current delivered
bytes (curr_delv), normalized by dividing by the expected delivered
bytes.  In line 19, this normalized difference value (norm_diff) is
compared to the threshold (THRESH).  If norm_diff is larger than
THRESH, that means the current delivered bytes is lower than expected
(i.e., they didn't double over the previous RTT) and slow start exits.
Slow start exit is handled by the function exit_slow_start() on lines
39-42.</t>
      <t>In slow_start_exit(), since SEARCH had to pass the congestion point in
order to ascertain that the chokepoint has been reached, it can reduce
the congestion window (cwnd) to instead be at the congestion point
instead of above it.  Detection of the chokepoint condition is delayed
by almost exactly two RTTs, so lines 39 and 40 compute the extra bytes
(past the congestion point) that have been added to the congestion
window and these are subtracted from the congestion window (line 41).
Setting the slow start threshold (ssthresh) to the congestion window
(cwnd) effectively exits slow start.</t>
      <t>SEARCH 3.0 ALGORITHM</t>
      <artwork><![CDATA[
Parameters:
1: WINDOW_SIZE = INITIAL_RTT x 3.5  
2: W = 10  
3: EXTRA_BINS = 15
4: NUM_BINS = W + EXTRA_BINS  
5: BIN_DURATION = WINDOW_SIZE / W  
6: THRESH = 0.35  

Initialization():
7: bin[NUM_BINS] = {}
8: curr_idx = -1 
9: bin_end = *now* + BIN_DURATION  

ACK_arrived(sequence_num, rtt):
  // Check if passed bin boundary.
10: if (*now* > bin_end) then  
11:   update_bins()

      // Check if enough data for SEARCH.
12:   prev_idx = curr_idx - (rtt / BIN_DURATION)
13:   if (prev_idx >= W) and
14:      (curr_idx - prev_idx) <= EXTRA_BINS then  

        // Run SEARCH check.
15:     curr_delv = sum_bins(curr_idx - W, curr_idx)
16:     fraction = rtt mod BIN_DURATION
17:     prev_delv = sum_bins(prev_idx - W, prev_idx, fraction)
18:     norm_diff = (2 * prev_delv - curr_delv) / (2 * prev_delv)
19:     if (norm_diff >= THRESH) then
20:       exit_slow_start()
21:     end if

22:   end if // Enough data for SEARCH.

23: end if // Each ACK.

// Update bin statistics, accounting for cases where more
// than one bin boundary might have been passed.
update_bins():
24: passed_bins = (*now* - bin_end) / BIN_DURATION + 1
25: bin_end += passed_bins * BIN_DURATION
26: for i = curr_idx to (curr_idx + passed_bins)
27:   bin[i mod NUM_BINS] = 0
28: end for
29: curr_idx += passed_bins
30: bin[curr_idx mod NUM_BINS] = sequence_num - prev_seq_num
31: prev_seq_num = sequence_num

// Add up bins, interpolating a fraction of each bin on the
// end (default is 0).
sum_bins(idx1, idx2, fraction = 0):
32: sum = 0
33: for i = idx1+1 to idx2-1
34:   sum += bin[i mod NUM_BINS]
35: end for
36: sum += bin[idx1] * fraction
37: sum += bin[idx2] * (1-fraction)
38: return sum

// Exit slow start by setting cwnd and ssthresh.
exit_slow_start():
39: cong_idx = curr_idx - 2 * INITIAL_RTT / BIN_DURATION
40: overshoot = sum_bins(cong_idx, curr_idx)
41: cwnd -= overshoot
42: ssthresh = cwnd
]]></artwork>
    </section>
    <section anchor="search-parameters">
      <name>SEARCH Parameters</name>
      <t>This section provides justification and some sensitivity analysis for
key SEARCH algorithm constants.</t>
      <t><strong>Window Size (WINDOW_SIZE)</strong></t>
      <t>The SEARCH window smooths over RTT fluctuations in a connection that
are unrelated to congestion. The window size must be large enough to
encapsulate meaningful link variation, yet small in order to allow
SEARCH to respond near when slow start reaches link capacity. In order
to determine an appropriate window size, we analyzed RTT variation
over time for GEO, LEO, and 4G LTE links for TCP during slow start.
See <xref target="KCL24"/> for details.</t>
      <t>The SEARCH window size needs to be large enough to capture the
observed periodic oscillations in the RTT values. In order to
determine the oscillation period, we use a Fast Fourier Transform
(FFT) to convert measured RTT values from the time domain to the
frequency domain.  For GEO satellites, the primary peak is at 0.5 Hz,
meaning there is a large, periodic cycle that occurs about every 2
seconds.  Given the minimum RTT for a GEO connection of about 600 ms,
this means the RTT cycle occurs about every 3.33 RTTs.  Thus, a window
size of about 3.5 times the minimum RTT should smooth out the latency
variation for this type of link.</t>
      <t>While the RTT periodicity for LEO links is not as pronounced as they
are in GEO links, the analysis yields a similar window size.  The FFT
of LEO RTTs has a dominant peak at 10 Hz, so a period of about 0.1
seconds. With LEO's minimum RTT of about 30 ms, the period is about
3.33 RTTs, similar to that for GEO. Thus, a window size of about 3.5
times the minimum RTT should smooth out the latency variation for this
type of link, too.</t>
      <t>Similarly to the LEO link, the LTE network does not have a strong RTT
periodicity.  The FFT of LTE RTTs has a dominant peak at 6 Hz, with a
period of about 0.17 seconds.  With the minimum RTT of the LTE network
of about 60 ms, this means a window size of about 2.8 times the
minimum RTT is needed.  A SEARCH default of 3.5 times the minimum RTT
exceeds this, so should smooth out the variance for this type of link
as well.</t>
      <t>** Threshold (THRESH) **</t>
      <t>The threshold (THRESH) determines when the difference between the
bytes delivered currently and the bytes delivered during the previous
RTT is large enough to exit the slow start phase.  A small threshold
is desirable to exit slow start close to the `at capacity' point
(i.e., without overshooting too much), but the threshold must be large
enough not to trigger an exit from slow start prematurely due to noise
in the measurements.</t>
      <t>During slow start, the congestion window doubles each RTT.  In ideal
conditions and with an initial cwnd of 1 (1 is used as an example, but
typical congestion windows start at 10 or more), this results in a
sequence of delivered bytes that follows a doubling pattern (1, 2, 4,
8, 16, ...). Once the link capacity is reached, the delivered bytes
each RTT cannot increase despite cwnd growth.  For example, consider a
window that is 4x the size of the RTT.  After 5 RTTs, the current
delivered window comprises 2, 4, 8, 16, while the previous delivered
window is 1, 2, 4, 8.  The current delivered bytes is 30, exactly
double the bytes delivered in the previous window.  Thus, SEARCH would
compute the normalized difference as zero.</t>
      <t>Once the cwnd ramps up to meet full link capacity, the delivered bytes
plateau.  Continuing the example, if the link capacity is reached when
cwnd is 16, the delivered bytes growth would be 1, 2, 4, 8, 16, 16.
The current delivered window is 4+8+16+16 = 44, while the previously
delivered window is 2+4+8+16 = 30.  Here, the normalized difference
between 2x the previously delivered window and the current delivered
window is about (60-44)/60 = 0.27.  After 5 more RTTs, the previous
delivered and current delivered bytes would both be 16 + 16 + 16 + 16
= 64 and the normalized difference would be (128 - 64) / 64 = 0.5.</t>
      <t>Thus, the norm values typically range from 0 (before the congestion
point) to 0.5 (well after the congestion point) with values between 0
and 0.5 when the congestion point has been reached but not surpassed
by the full window.</t>
      <t>To generalize this relationship, the theoretical underpinnings of this
behavior can be quantified by integrating the area under the
congestion window curve for a closed-form equation for both the
current delivered bytes (curr_delv) and the previously delivered bytes
(prev_delv).  The normalized difference can be computed based on the
RTT round relative to the "at capacity" round.  While SEARCH seeks to
detect the "at capacity" point as soon as possible after reaching it,
it must also avoid premature exit in the case of noise on the link.
The 0.35 threshold value chosen does this and can be detected about 
2 RTTs of reaching capacity.</t>
      <t><strong>Number of Bins (NUM_BINS)</strong></t>
      <t>Dividing the delivered byte window into bins reduces the sender's
memory load by aggregating data into manageable segments instead of
tracking each packet.  This approach simplifies data handling and
minimizes the frequency of window updates, enhancing sender
efficiency.  However, more bins provide more fidelity to actual
delivered byte totals and allow SEARCH to make decisions (i.e.,
compute if it should exit slow start) more often, but require more
memory for each flow.  The sensitivity analysis previously conducted
aimed to identify the impact of the number of bins used by SEARCH and
the ability to exit slow start in a timely fashion.</t>
      <t>Using a window size of 3.5x the initial RTT and a threshold of 0.35,
we varied the number of bins from 5 to 40 and observed the impact on
SEARCH's performance over GEO, LEO and 4G LTE downloads.  For all
three link types, a bin size 10 of provides nearly identical
performance as SEARCH running with more bins, while 10 also minimizes
early exits from slow start while having an "at chokepoint" percentage
that is close to the maximum.</t>
    </section>
    <section anchor="deployment-and-performance-evaluation">
      <name>Deployment and Performance Evaluation</name>
      <t>Evaluation of hundreds of downloads of TCP with SEARCH across GEO,
LEO, and 4G LTE network links compared to TCP with HyStart and TCP
without HyStart shows SEARCH almost always exits after capacity has
been reached but before packet loss has occurred.  This results in
capacity limits being reached quickly while avoiding inefficiencies
caused by lost packets.</t>
      <t>Evaluation of a SEARCH implementation in an open source QUIC library
(QUICly) over an emulated GEO satellite link validates the
implementation, illustrating how SEARCH detects the congestion point
and exits slow start before packet loss occurs.  Evaluation over a
commercial GEO satellite link shows SEARCH can provide a median
improvement of up to 3 seconds (14%) compared to the baseline by
limiting cwnd growth when capacity is reached and delaying any packet
loss due to congestion.</t>
      <t>Details can be found at <xref target="KCL24"/> and <xref target="CKC24"/>.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the status of known implementations of the
algorithm defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The
description of implementations in this section is intended to assist
the IETF in its decision processes in progressing drafts to RFCs.
Please note that the listing of any individual implementation here
does not imply endorsement by the IETF.  Furthermore, no effort has
been spent to verify the information presented here that was supplied
by IETF contributors.  This is not intended as, and must not be
construed to be, a catalog of available implementations or their
features.  Readers are advised to note that other implementations may
exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups
to assign due consideration to documents that have the benefit of
running code, which may serve as evidence of valuable experimentation
and feedback that have made the implemented protocols more mature. It
is up to the individual working groups to use this information as they
see fit".</t>
      <t>As of the time of writing, the following implementations of SEARCH
have been publicly released:</t>
      <t>Linux TCP</t>
      <t>Source code URL:</t>
      <t><eref target="https://github.com/Project-Faster/tcp_ss_search.git">https://github.com/Project-Faster/tcp_ss_search.git</eref></t>
      <t>Source: WPI
Maturity: production
License: GPL?
Contact: claypool@cs.wpi.edu
Last updated: May 2024</t>
      <t>QUIC</t>
      <t>Source code URLs:</t>
      <t><eref target="https://github.com/Project-Faster/quicly/tree/generic-slowstart">https://github.com/Project-Faster/quicly/tree/generic-slowstart</eref>
        <eref target="https://github.com/AmberCronin/quicly">https://github.com/AmberCronin/quicly</eref>
        <eref target="https://github.com/AmberCronin/qperf">https://github.com/AmberCronin/qperf</eref></t>
      <t>Source: WPI
Maturity: production
License: BSD-style
Contact: claypool@cs.wpi.edu
Last updated: May 2024</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This proposal makes no changes to the underlying security of transport
protocols or congestion control algorithms.  SEARCH shares the same
security considerations as the existing standard congestion control
algorithm <xref target="RFC5681"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions. Here we are using that phrase,
suggested by <xref target="RFC8126"/>, because SEARCH does not modify or extend the
wire format of any network protocol, nor does it add new dependencies
on assigned numbers.  SEARCH involves only a change to the slow start
part of the congestion control algorithm of a transport sender, and
does not involve changes in the network, the receiver, or any network
protocol.</t>
      <t>Note to RFC Editor: this section may be removed on publication as an RFC.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Much of the content of this draft is the result of discussions with
the Congestion Control Research Group (CCRG) at WPI
<eref target="https://web.cs.wpi.edu/~claypool/ccrg">https://web.cs.wpi.edu/~claypool/ccrg</eref>. In addition, feedback and
discussions of early versions of SEARCH with the technical group at
Viasat has been invaluable.</t>
    </section>
    <section anchor="references">
      <name>References</name>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5681" target="https://www.rfc-editor.org/info/rfc5681" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5681.xml">
          <front>
            <title>TCP Congestion Control</title>
            <author fullname="M. Allman" initials="M." surname="Allman"/>
            <author fullname="V. Paxson" initials="V." surname="Paxson"/>
            <author fullname="E. Blanton" initials="E." surname="Blanton"/>
            <date month="September" year="2009"/>
            <abstract>
              <t>This document defines TCP's four intertwined congestion control algorithms: slow start, congestion avoidance, fast retransmit, and fast recovery. In addition, the document specifies how TCP should begin transmission after a relatively long idle period, as well as discussing various acknowledgment generation methods. This document obsoletes RFC 2581. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5681"/>
          <seriesInfo name="DOI" value="10.17487/RFC5681"/>
        </reference>
        <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CKC24" target="https://web.cs.wpi.edu/~claypool/papers/quic-search-lanman-24/paper.pdf">
          <front>
            <title>Improving QUIC Slow Start Behavior in Wireless Networks with SEARCH</title>
            <author initials="A." surname="Cronin" fullname="Amber Cronin">
              <organization>Worcester Polytechnic Institute</organization>
            </author>
            <author initials="M." surname="Kachooei" fullname="Maryam Ataei Kachooei">
              <organization>Worcester Polytechnic Institute</organization>
            </author>
            <author initials="J." surname="Chung" fullname="Jae Won Chung">
              <organization>Viasat Inc</organization>
            </author>
            <author initials="F." surname="Li" fullname="Feng Li">
              <organization>Viasat Inc</organization>
            </author>
            <author initials="B." surname="Peters" fullname="Benjamin Peters">
              <organization>Viasat Inc</organization>
            </author>
            <author initials="M." surname="Claypool" fullname="Mark Claypool">
              <organization>Worcester Polytechnic Institute</organization>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="Proceedings of the IEEE International Symposium on Local and Metropolitan Area Networks (LANMAN), Boston, MA, USA" value=""/>
        </reference>
        <reference anchor="KCL24">
          <front>
            <title>Improving TCP Slow Start Performance in Wireless Networks with SEARCH</title>
            <author initials="M." surname="Kachooei" fullname="Maryam Ataei Kachooei">
              <organization>Worcester Polytechnic Institute</organization>
            </author>
            <author initials="J." surname="Chung" fullname="Jae Won Chung">
              <organization>Viasat Inc</organization>
            </author>
            <author initials="F." surname="Li" fullname="Feng Li">
              <organization>Viasat Inc</organization>
            </author>
            <author initials="B." surname="Peters" fullname="Benjamin Peters">
              <organization>Viasat Inc</organization>
            </author>
            <author initials="J." surname="Chung" fullname="Josh Chung">
              <organization>Lexington Christian Academy</organization>
            </author>
            <author initials="M." surname="Claypool" fullname="Mark Claypool">
              <organization>Worcester Polytechnic Institute</organization>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="The World of Wireless, Mobile and Multimedia Networks conference (WoWMoM), Perth, Australia" value=""/>
        </reference>
        <reference anchor="HYSTART" target="https://doi.org/10.1016/j.comnet.2011.01.014">
          <front>
            <title>Taming the Elephants: New TCP Slow Start</title>
            <author initials="S." surname="Ha" fullname="Sangtae Ha">
              <organization/>
            </author>
            <author initials="I." surname="Rhee" fullname="Injong Rhee">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="Computer Networks vol. 55, no. 9, pp. 2092-2110, DOI 10.1016/j.comnet.2011.01.014" value=""/>
        </reference>
      </references>
    </references>
    <?line 688?>

<section anchor="compat">
      <name>Historical Note</name>
      <!--  LocalWords:  SEARCH: a New Slow Start Algorithm for TCP and QUIC 
-->
<!--  LocalWords:  
-->

</section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19+3PbSJLm7/VX1Lljo8lukhaph23tdN+oZdnWjvxYSV7t
Xm+HDgSLItogwEEBkjmO3r9988usKjwIeXomYm/jLs7hsEUC9crnl1lZpfF4
rMqkTM2xvjo7uTx9o8djHel35kFfpTn9U0ZFqU/Su7xIytVaL/NCX59+0FG2
0P/88fxUq2g+L8z9sbYmKuKVVos8zqI19bcoomU5jldVdjdOTLkcx/HD3Xhv
j16JSno+25sdjPeO6K/6Rje/Omx9VvTJljTebZTmGX1ZFpVRKtkU/KMtZ3t7
L/ZmKipMdKxvzJzndp6VpshMqa+LKLObvCjVw92xjvPsztiS/iuLPFWfHo7D
m+OXmK+Ko5LWUi6ULanDNT0/u36lVJwvkow6qOw4snGSqE1yrOnPNzqOMvrW
6Kgooq0eJEsdpaneGjvURKtVZFd6ZQpDq9BjXeax/GBpRoVZWvdpu+YPGi8c
ozH96F855mEWZhlVaWnpDf9cGsnrKqrKVV4cK81/xu5/rZOM3viniT4FH3T4
Wlj0T5HRN3kmD8OzvKCF/ksS2agk6sThe8/pe34UvgahDBFtn1j7Lok/mcJS
l5eLkf5murcXXouTcnus30ZFOs+LvLpbjfTbk/ppvqD57E2fHc4a31XEJmr0
MUtKs4AslsbqfKlP1qZI4ii8adZRkh7rXyPzkGcTFrk/yiwncb7up8nbif5T
FK/y3CQdqtAct9Fan5SRSXbfYerc5EVMcmQK/SFPt6WJV1kSE7Es6VJVmh2S
3Xw436EXEaduQfTqUCoM0Uuno70Xv59OukuodYS1fXJL++PDJpmYRdVPp1cT
fdGl0CtDsnSR/N8vMUtayCRNfo+wnKbRdpOT0dgRlk+7z/5fEJLYLeqPsZ14
CVFZXpDwJPfmGJbL0UoXy3g2nb7ofHV49Hza+erZi4NZ56vn09kRDX356hRd
HMuPaOp+RBP3I149JtOfLetZaH36p9PZgRg+58menK83RX5PBlt8VMOT/WRW
0X1ChjnJ9E1SmNRYS96ufMiLT1Y/kI9zfvAJd9i2qjThtlickFgUeUZ9daTi
ZD0ntsuzv0so/huM1X+Fz+izJd0OnTHRj/WlH6P+TxP9wdCybLfHn0z2a7Qm
rsjjvzpJvUPs/xplt6RoxkJ8SUY/FHlsDFAFa2G5MgQ1zs4cHiHpzrMo1Vfb
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

-->

</rfc>
