<?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-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-ietf-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+L8z9sbYmKuKVVos8zqI19bcoomU5jldVdjdOTLkcx/HD3Vhe
G+/tqUVU0luzvdnBeO+I/qpvdPOrw9ZnRZ9sSaPeRmme0ZdlURmlkk3BP9py
trf3Ym+mosJEx/rGzHmG51lpisyU+rqIMrvJi1I93B1rTESrTw/H4YXxS0xW
xVFJCykXypbUz5qen12/UirOF0lG7So7jmycJGqTHGv6842Oo4y+NToqimir
B8lSR2mqt8YONRFqFdmVXpnC0OT1WJd5LD9YmkhhltZ92q75g8YLx2hMP/pX
jnmYhVlGVVpaesM/l0byuoqqcpUXx0rzn7H7X+skozf+aaJPwQQdvhb+/FNk
9E2eycPwLC9oof+SRDYqiTpx+N6z+Z4fha9BKENE29/b0++S+JMpLHV5uRjp
b6bEY/9anJTbY/02KtJ5XuTV3Wqk357UT/MFzWdv+uxw1viuysqCGn3MktIs
IIilsTpf6pO1KZI4Cm+adZSkx/rXyDzk2YTl7Y8yy0mcr/tp8nai/xTFqzw3
SYcqNMdttNYnZWSS3XeYOjd5ERtLgqM/5Om2NPEqS2IiliVFqkqzQ7KbD+c7
9CLi1C2IXh1KhSF66XS09+L300l3CbWOsLZPbml/fNgkE7Oo+un0aqIvuhR6
ZUiWLpL/+yVmSQuZpMnvEZbTNNpu8jzdFZZPu8/+XxCS2C3qj7GdeAlRWV6Q
8CT35hiWy9FKF8t4Np2+6Hx1ePR82vnq2YuDWeer59PZEQ19+eoUXRzLj2jq
fkQT9yNePSaLny3rWWh9+qfT2YEYPufGnpyvN0V+TwZbHFTDjf1kVtF9QoY5
yfRNUpjUWEuurnzIi09WP5CDc07wCXfYtqo04bZYnJBYFHlGfXWk4mQ9J7bL
s79LKP4bjNV/hc/osyXdDp0x0Y/1pR+j/k8T/cHQsmy3x59M9mu0Jq7I4786
Sb1D7P8aZbekaMZCfElGPxR5bAxQBWthuTIENc7OHB4h6c6zKNVX2/Umt0m1
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

-->

</rfc>
