<?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-ccwg-search-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-ccwg-search-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>ccwg</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+L8z9sbYmKuKVVos8zqI19bcoomU5jldVdjeO44e7sbwx3ttT
i6ikF2Z7s4Px3hH9Vd/o5leHrc+KPtmSBryN0jyjL8uiMkolm4J/tOVsb+/F
3kxFhYmO9Y2Z8+TOs9IUmSn1dRFldpMXpXq4O9aYiFafHo7DC+OXmKeKo5LW
UC6ULamfNT0/u36lVJwvkozaVXYc2ThJ1CY51vTnGx1HGX1rdFQU0VYPkqWO
0lRvjR1qotEqsiu9MoWhyeuxLvNYfrA0kcIsrfu0XfMHjReO0Zh+9K8c8zAL
s4yqtLT0hn8ujeR1FVXlKi+OleY/Y/e/1klGb/zTRJ+C/jp8Laz5p8jomzyT
h+FZXtBC/yWJbFQSdeLwvefwPT8KX4NQhoi2v7en3yXxJ1NY6vJyMdLfTInH
/rU4KbfH+m1UpPO8yKu71Ui/Pamf5guaz9702eGs8V2VlQU1+pglpVlABktj
db7UJ2tTJHEU3jTrKEmP9a+RecizCYvaH2WWkzhf99Pk7UT/KYpXeW6SDlVo
jttorU/KyCS77zB1bvIiNpYER3/I021p4lWWxEQsSzpUlWaHZDcfznfoRcSp
WxC9OpQKQ/TS6Wjvxe+nk+4Sah1hbZ/c0v74sEkmZlH10+nVRF90KfTKkCxd
JP/3S8ySFjJJk98jLKdptN3keborLJ92n/2/ICSxW9QfYzvxEqKyvCDhSe7N
MSyXo5UulvFsOn3R+erw6Pm089WzFwezzlfPp7MjGvry1Sm6OJYf0dT9iCbu
R7x6TBY/W9az0Pr0T6ezAzF8zoM9OV9vivyeDLb4poYH+8msovuEDHOS6Zuk
MKmxlrxc+ZAXn6x+IN/m/N8T7rBtVWnCbbE4IbEo8oz66kjFyXpObJdnf5dQ
/DcYq/8Kn9FnS7odOmOiH+tLP0b9nyb6g6Fl2W6PP5ns12hNXJHHf3WSeofY
/zXKbknRjIX4kox+KPLYGKAK1sJyZQhqnJ05PELSnWdRqq+2601uk2qtieQX
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

-->

</rfc>
