<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.20 (Ruby 3.3.5) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC9000 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000.xml">
<!ENTITY I-D.ietf-moq-transport SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-moq-transport.xml">
<!ENTITY RFC9959 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9959.xml">
<!ENTITY RFC9743 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9743.xml">
]>


<rfc ipr="trust200902" docName="draft-huitema-ccwg-c4-test-04" category="info" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="C4 Tests">Testing of Christian's Congestion Control Code (C4)</title>

    <author initials="C." surname="Huitema" fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <author initials="S." surname="Nandakumar" fullname="Suhas Nandakumar">
      <organization>Cisco</organization>
      <address>
        <email>snandaku@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Jennings" fullname="Cullen Jennings">
      <organization>Cisco</organization>
      <address>
        <email>fluffy@iii.ca</email>
      </address>
    </author>

    <date year="2026" month="July" day="19"/>

    <area>Web and Internet Transport</area>
    
    <keyword>C4</keyword> <keyword>Congestion Control</keyword> <keyword>Realtime Communication</keyword> <keyword>Media over QUIC</keyword>

    <abstract>


<?line 61?>

<t>Christian's Congestion Control Code is a new congestion control
algorithm designed to support Real-Time applications such as
Media over QUIC. It is designed to drive towards low delays,
with good support for the "application limited" behavior
frequently found when using variable rate encoding, and
with fast reaction to congestion to avoid the "priority
inversion" happening when congestion control overestimates
the available capacity. The design was validated by
series of simulations, and also by initial deployments
in control networks. We describe here these simulations and
tests.</t>



    </abstract>



  </front>

  <middle>


<?line 75?>

<section anchor="introduction"><name>Introduction</name>

<t>Christian's Congestion Control Code (C4) is a new congestion control
algorithm designed to support Real-Time multimedia applications, specifically
multimedia applications using QUIC <xref target="RFC9000"/> and the Media
over QUIC transport <xref target="I-D.ietf-moq-transport"/>. The design was validated by
series of simulations, and also by initial deployments
in control networks. We describe here these simulations (see <xref target="simulations"/>),
the simulation results for each of the test cases (see <xref target="results"/>),
and the live networking tests (see <xref target="live-tests"/>).</t>

</section>
<section anchor="simulations"><name>Description of simulation tests</name>

<t>We test the design by running a series of simulations, which cover:</t>

<t><list style="symbols">
  <t>reaction to network events</t>
  <t>competition with other congestion control algorithms</t>
  <t>handling of high jitter environments</t>
  <t>handling of multimedia applications</t>
  <t>handling of ECN</t>
</list></t>

<t>We are running the tests using the picoquic network simulator <xref target="Picoquic_ns"/>.
The simulator embeds the picoquic implementation of QUIC <xref target="Picoquic"/>.
Picoquic itself comes with support for a variety of congestion control
protocols, including Cubic and BBR. We added an implementation of C4.</t>

<t>That implementation is designed so that the same code can be used
in execution over the network and in simulations, the main difference being
a replacement of the socket API by a simulation API. When running in
simulation, the code runs in "virtual time", with a virtual clock driven
by simulation events such as arrival and departure of packets from
simulated queues. With the virtual clock mechanism, we can simulate
in a fraction of a second a connection that would last 10 seconds in "real time".</t>

<section anchor="reaction-to-network-events"><name>Reaction to network events</name>

<t>The first series of simulation test how C4 behaves in simple scenarios
when it is the sole user of a link. The list of test includes:</t>

<t><list style="symbols">
  <t>a 20Mbps connection,</t>
  <t>a 200Mbps connection,</t>
  <t>a geostationary satellite connection,</t>
  <t>a sudden increase in path capacity, i.e. "low and up"</t>
  <t>a sudden decrese in path capacity followed by a return to normal, i.e. "drop and back"</t>
  <t>a sudden drop to 0 of path capacity for 2 seconds, i.e. a "black hole"</t>
  <t>a sudden increase in path latency, from "short" to "long"</t>
</list></t>

<section anchor="simulation-of-a-simple-20mbps-connection-alone"><name>Simulation of a simple 20Mbps connection (alone)</name>

<t>This scenario simulates a 10MB download over a 20 Mbps link,
with an 80ms RTT, and a bottlneck buffer capacity corresponding
to 1 BDP.</t>

<t>In a typical simulation, we see a initial phase complete in less
than 800ms, followed by a recovery phase in which the
transmission rate stabilizes to the line rate. After that,
the RTT remains very close to the path RTT, except for
periodic small bumps during the "push" transitions.</t>

</section>
<section anchor="simulation-of-a-simple-200mbps-connection-alone200"><name>Simulation of a simple 200Mbps connection (alone_200)</name>

<t>This scenario simulates a 20MB download over a 200 Mbps link,
with a 40ms RTT, and a bottleneck buffer capacity corresponding
to 1 BDP.</t>

<t>This short test shows that the initial phase correctly discover
the path capacity, and that the transmission operates at
the expected rate after that.</t>

</section>
<section anchor="simulation-of-a-simple-15mbps-connection-alone15m"><name>Simulation of a simple 1.5Mbps connection (alone_1_5M)</name>

<t>This scenario simulates a 4MB download over a 1.5 Mbps link,
with a 40ms RTT, and a bottleneck buffer capacity corresponding
to 1.25 BDP.</t>

<t>This short test shows that the initial phase correctly discover
the path capacity, and that the transmission operates at
the expected rate after that.</t>

</section>
<section anchor="simulation-of-a-simple-512kbps-connection-alone512k"><name>Simulation of a simple 512kbps connection (alone_512k)</name>

<t>This scenario simulates a 1MB download over a 512 kbps link,
with a 34ms RTT, and a bottleneck buffer capacity corresponding
to 50ms of transmission.</t>

<t>This short test shows that the initial phase correctly discover
the path capacity, and that the transmission operates at
the expected rate after that.</t>

</section>
<section anchor="low-and-up"><name>Low and up</name>

<t>The "low and up" scenario simulates a sudden increase in the
capacity of the path. At the beginning of the simulation,
the simulated bandwidth is set at 5 Mbps. It increases to
10 Mbps after 2.5 seconds. The RTT remains constant at
100ms.</t>

<t>The goal of the test is to verify that C4 promptly
discovers the increase in bandwidth, and
increases the transmission rate.</t>

</section>
<section anchor="drop-and-back"><name>Drop and back</name>

<t>The "drop and back" scenario simulates a sudden decrease in the
capacity of the path, followed by return to normal.
At the beginning of the simulation,
the simulated bandwidth is set at 10 Mbps. It decreases
to 5 Mbps after 1.5 second, then returns to 10 Mbps
after 2 seconds. The RTT remains constant at
100ms.</t>

<t>The goal of the test is to verify that C4 adapts
promptly to changes in the available bandwidth on a
path.</t>

</section>
<section anchor="black-hole"><name>Black Hole</name>

<t>The "black hole" scenario simulates a sudden decrease in the
capacity of the path, followed by return to normal.
At the beginning of the simulation,
the simulated bandwidth is set at . After 2 seconds,
the path capacity is set to 0, and is restored to normal
2 seconds later. The RTT remains constant at
70ms.</t>

<t>The goal of the test is to verify that C4 recovers
promptly after a short suspension of the path.</t>

</section>
<section anchor="short-and-long"><name>Short and long</name>

<t>The "short and long" scenario simulates a sudden increase in the
latency of the path.
At the beginning of the simulation,
the simulated RTT is set at 30ms. After 1 second, the
latency increases to 100ms. The data rate remains constant at
100ms.</t>

<t>The goal of the test is to verify that C4 react properly
exercises the "slow down" mechanism to discover the new RTT.</t>

</section>
<section anchor="simulation-of-a-geostationary-satellite-connection-satellite"><name>Simulation of a geostationary satellite connection (satellite)</name>

<t>This scenario simulates a 100MB download over a 250 Mbps link,
with a 600ms RTT, and a bottleneck buffer capacity corresponding
to 1 BDP, i.e., simulating a geostationary satellite connection.
The scenario also tests the support for careful resume
<xref target="RFC9959"/> by setting
the remembered CWND to 18750000 bytes and the
remembered RTT to 600.123ms.</t>

</section>
</section>
<section anchor="competition"><name>Competition</name>

<t>In accordance with <xref target="RFC9743"/>, we evaluate competition between
C4 connections, or between C4 and Cubic or BBR. We design a series of tests,
each correponding to a competition scenario between a "main" connection and
a "background" connection. For each test, we run the test using either C4,
Cubic or BBR for the "main" connection. The test scenario specifies the
algorithm managing the background connection, as well as scenario details.</t>

<t>we design series of tests
of multiple competing flows all using C4. We want to test
different conditions, such as data rate and latency,
and also different scenarios, such as testing whether
the "background" connection starts at the same time, before
or after the "main" connection.</t>

<t>We test that the bandwidth is shared reasonably by testing
the completion time of a download, and setting the target
value so it can only be achieved if the main connection
gets "about half" of the bandwidth.</t>

<section anchor="short-main-connection-versus-c4-vsc4"><name>Short main connection versus C4 (vs_c4)</name>

<t>Our first test simulates a main connection starting at the
same time as a background C4 connection. The path has a 20Mbps data rate
and 80ms RTT. The background connection
tries to download 10MB, the main connection downloads 5MB.</t>

</section>
<section anchor="short-background-c4-connection-first-afterc4"><name>Short background C4 connection first (after_c4)</name>

<t>The "background first" test simulates a main connection competing
with the background C4 connection that started
0.5 seconds before the main connection. The path has a 20Mbps data rate
and 80ms RTT. The background connection
tries to download 10MB, the main connection downloads 5MB.</t>

</section>
<section anchor="short-background-c4-connection-last-before-c4"><name>Short background C4 connection last (before C4)</name>

<t>The "background last"  simulates a main connections competing
with the background connection that starts
0.5 seconds after the main connection. The path has a 50Mbps data rate
and 30ms RTT. The background connection
tries to download 20MB, the main connection downloads 10MB.</t>

</section>
<section anchor="two-long-connections"><name>Two long connections</name>

<t>The long connection test simulates a main connections starting at the
same time as the background. The path has a 20Mbps data rate
and 80ms RTT. The background connection
tries to download 30MB, the main connection downloads 20MB.</t>

<t>There are three variants of that test, depending on the background
connection algorithm: C4 (vs_c4_lg), Cubic (vs_cubic_lg) or BBR
(vs_bbr_lg).</t>

</section>
<section anchor="long-background-connection-last"><name>Long background connection last</name>

<t>The long "background last" test simulates a main connections competing
with the background connection starting
1 second after it. The path has a 10Mbps data rate
and 70ms RTT. The background connection
tries to download 15MB, the main connection downloads 10MB.</t>

<t>There are three variants of that test, depending on the background
connection algorithm: C4 (vs_c4_lg2), Cubic (vs_cubic_lg2) or BBR
(vs_bbr_lg2).</t>

</section>
</section>
<section anchor="c4-wifi"><name>Handling of High Jitter Environments</name>

<t>In the design of C4, we have been paying special attention to
"bad Wi-Fi" environments, in which the usual delays of a few
milliseconds could spike to 50 or even 200ms. We spent a lot of time trying to
understand what causes such spikes. Our main hypothesis is that
this happens when multiple nearby Wi-Fi networks operate on the
same frequency or "channel", which causes collisons due to the
hidden node problem. This causes collisions and losses, to which
Wi-Fi responses involves two leves of exponential back-off.</t>

<t>We built a model to simulate this jitter by combining two generators:</t>

<t><list style="symbols">
  <t>A random value r between 0 and 1 ms to model collision avoidance,</t>
  <t>A Poisson arrival model with lambda=1 providing the number N1 of short scale 1ms intervals
to account for collision defferal and retry,</t>
  <t>A Poisson arrival arrival model with lambda = 12,
and an interval length of 7.5ms to account for Wi-Fi packet restransmission.</t>
</list></t>

<t>We combine these generators models by using a coefficient "x" that indicates the general
degree of collisions and repetitions:</t>

<t><list style="symbols">
  <t>For a fraction (1-x) of the packets, we set the number N2 to 0.</t>
  <t>For a fraction (x) of the packets, we compute N2 from the Poisson arrival model with lambda = 12,
and an interval length of 7.5ms.</t>
</list></t>

<t>The latency for a single sample will be:
~~~
latency = N1<em>1ms + N2</em>7.5ms
if N1 &gt;= 1:
    latency -= r
~~~
The coefficient x is derived from the target average jitter value. If the target is
1ms or less, we set x to zero. If it is higher than 91ms, we set x to 1. If
it is in between, we set:
~~~
x = (average_jitter - 1ms)/90ms
~~~
We have been using this simulation of jitter to test our implementation of multiple
congestion control algorithms.</t>

<section anchor="bad-wifi"><name>Bad Wi-Fi test</name>

<t>The "bad Wi-Fi" test simulates a connection experiencing a high level of
jitter. The average jitter is set to 7ms, which implies multiple spikes
of 100 to 200ms every second. The data rate is set to 10Mbps, and the base
RTT before jitter is set to 2ms, i.e., simulating a local server.</t>

</section>
<section anchor="wifi-fade"><name>Wifi fade trial</name>

<t>The "Wi-Fi fade" trial simulates varying conditions. The connection starts
with a data rate of 20Mbps, an 80ms latency, and Wi-Fi jitter
with average 1ms. After 1 second, the data rate drops to 2Mbps
and the jitter average increases to 12ms. After another 2 seconds,
data rate and jitter return to the original condition.</t>

</section>
<section anchor="wifi-suspension"><name>Wifi suspension trial</name>

<t>The "Wi-Fi suspension" test simulates a connection experiencing
multiple "suspensions". For every 1.8 second of a 2 second interval,
the data rate is set to 20Mbps, and the base
RTT before jitter is set to 10ms. For the last 200ms of these
intervals, the data rate is set to 0. This model was developed
before we got a better understanding of the Wi-Fi jitter. It is
obsolete, but we kept it as a test case anyhow.</t>

</section>
<section anchor="compete-over-bad-wi-fi"><name>Compete over bad Wi-Fi</name>

<t>The "compete over bad Wi-Fi" test simulates a main connection using 
a "bad Wi-Fi" path and competing on the same path with a background
connection, with the main
connection starting 1 second after the background connection.
The path has a 10Mbps data rate and 2ms RTT, plus Wi-Fi jitter
set to 7ms average -- 
the same jitter characteristics as in the "bad Wi-Fi" test (see <xref target="bad-wifi"/>).
The background connection
tries to download 10MB, the main connection downloads 4MB.</t>

<t>There are three variants of that test, depending on the background
connection algorithm: C4 (wifi_bad_c4), Cubic (wifi_bad_cubic) or BBR
(wifi_bad_bbr).</t>

</section>
</section>
<section anchor="ecn-simulations"><name>L4S and ECN</name>

<t>To evaluate the handling of ECN, we run a series of tests in which the
bottleneck queue is managed by the "duaQ" adaptie queue management
algorithm (AQM) specified for L4S <xref target="RFC9743"/></t>

<section anchor="ecn-test"><name>Basic ECN test (ecn)</name>

<t>The "ECN" test simulates a 20 Mbps link,
with an 80ms RTT, and a bottleneck buffer capacity corresponding
to 1 BDP.</t>

<t>When using C4 we set the ECT1 marking, signaling support
of L4S. We do not set these markings when using Cubic or BBR.</t>

</section>
<section anchor="competition-with-other-algorithms"><name>Competition with other algorithms</name>

<t>The "compete over ECN" tests simulates a main connection competing
against a background connection, using the same network path characteristics
as the "ECN" test (see <xref target="ecn-test"/>).</t>

<t>There are three variants of this test, with the background connection using
either C4 (ecn_c4), Cubic (ecn_cubic) or BBR (ecn_bbr).</t>

</section>
</section>
<section anchor="handling-of-multimedia-applications"><name>Handling of Multimedia Applications</name>

<t>C4 is specifically designed to properly handle multimedia applications. We test
that function by running simulations of a call including:</t>

<t><list style="symbols">
  <t>a simulated audio stream sending 80 bytes simulated audio segments every 20 ms.</t>
  <t>a simulated compressed video stream, sending 30 frames per second, organized
as groups of 30 frames each starting with a 37500 bytes simulated I-Frame
followed by 149 3750 bytes P-frames.</t>
  <t>a simulated less compressed video stream, sending 30 frames per second, organized
as groups of 30 frames each starting with a 62500 bytes simulated I-Frame
followed by 149 6250 bytes P-frames.</t>
</list></t>

<t>The simulation sends each simulated audio segment as QUIC datagram, with
QUIC priority 2, and each group of frames as a separate QUIC stream with priority
4 for the compressed stream, and a priority 6 for the less compressed stream.</t>

<t>If the frames delivered on the less compressed stream fall are delivered
more than 250ms later than the expected time, the receiver sends a "STOP SENDING"
request on the QUIC stream to cancel it; transmission will restart with
the next group of frame, simulating a plausible "simulcast" behavior.</t>

<t>The simulator collects statistics on the delivery of media frame, which are
summarized as average and maximum frame delivery delay. For each test, the
simulation specifies an expected average and an expected maximum delay, as
well as a "start measurement" time, typically set long enough to start after
the initial "startup" phase. The
test passes if the average and max value for the simulated audio and for
the simulated compressed video measured after the start time
are below the specified values.</t>

<section anchor="media-on-high-speed-connection-media"><name>Media on High Speed Connection (media)</name>

<t>The "media" test verifies simulates the handling of media on a 100 Mbps
connection with a 30ms RTT. The test lasts for 5 video groups of frames,
i.e. 5 seconds. The measurements start 200ms after the
start of the connection.</t>

</section>
<section anchor="media-on-10-mbps-connection-media10"><name>Media on 10 Mbps Connection (media10)</name>

<t>The "media10" test verifies the handling of media on a 10 Mbps
connection with a 40ms RTT.  The test lasts for 5 video groups of frames,
i.e. 5 seconds. The measurements start 200ms after the
start of the connection.</t>

</section>
<section anchor="media-for-20-seconds-media600"><name>Media for 20 seconds (media600)</name>

<t>The "media600" media checks that media performance does not
degrade over time, simulating a 100Mbps connection with a 30ms RTT.
The test lasts for 20 video groups of frames, i.e. 20 seconds. 
The measurements start 200ms after the
start of the connection.</t>

</section>
<section anchor="media-over-varying-rtt-mediashortlong"><name>Media over varying RTT (media_short_long)</name>

<t>The "media_short_long" media test verifies that media performance does not
degrade over time, simulating a 100Mbps connection with a 30ms RTT,
that changes to a 100ms RTT after 1 second.
The test lasts for 10 video groups of frames, i.e. 10 seconds. 
The measurements start 5 seconds after the
start of the connection.</t>

</section>
<section anchor="media-over-bad-wi-fi-mediawb"><name>Media over bad Wi-Fi (media_wb)</name>

<t>The "bad Wi-Fi" media test verifies that media performance does not
degrade too much on a connection that has the kind of jitter
discussed in <xref target="c4-wifi"/>. The connection has the characteristics
similar to the "bad Wi-Fi" scenario described in <xref target="bad-wifi"/>.
The average jitter is set to 7ms, which implies multiple spikes
of 100 to 200ms every second. The data rate is set to 20Mbps, and the base
RTT before jitter is set to 2ms, i.e., simulating a local server.
The test lasts for 5 video groups of frames,
i.e. 5 seconds. The measurements start 200ms after the
start of the connection.</t>

</section>
<section anchor="media-over-fading-wi-fi-mediawf"><name>Media over fading Wi-Fi (media_wf)</name>

<t>The "fading Wi-Fi" media test verifies that media performance does not
degrade too much on a connection that hast characteristics
similar to the "fading Wi-Fi" scenario described in <xref target="wifi-fade"/>.
The connection starts
with a data rate of 20Mbps, 40ms RTT, and Wi-Fi jitter
with average 1ms. After 1 second, the data rate drops to 2Mbps
and the jitter average increases to 12ms.
The test lasts for 5 video groups of frames,
i.e. 5 seconds. The measurements start 200ms after the
start of the connection.</t>

</section>
<section anchor="media-with-wi-fi-suspensions-mediaws"><name>Media with Wi-Fi suspensions (media_ws)</name>

<t>The "varying Wi-Fi" media test verifies that media performance does not
degrade too much on a connection experiences suspensions as
discussed in <xref target="wifi-suspension"/>.
For every 1.8 second of a 2 second interval,
the data rate is set to 20Mbps, and the base
RTT before jitter is set to 10ms. For the last 200ms of these
intervals, the data rate is set to 0.
The test lasts for 5 video groups of frames,
i.e. 5 seconds. The measurements start 200ms after the
start of the connection.</t>

</section>
<section anchor="media-over-an-ecn-capable-connection-mediaecn"><name>Media over an ECN capable connection (media_ecn)</name>

<t>The "varying Wi-Fi" media test verifies that media works as expected
on a path managed using ECN/L4S. The set up is similar to the "ECN" test
discussed in <xref target="ecn-simulations"/>.</t>

</section>
</section>
</section>
<section anchor="results"><name>Simulation results</name>

<t>Simulations include random events, such as network jitter or the
precise timing of packet arrivals and departure. Minute changes in starting
conditions can have cascading effects. To get reliable results, we run each test 100
times. The simulator produces a log of each test execution (in QLOG format), and a summary
of each test results, including the completion time for each test, and for tests
checking media the average and max frame delivery time.</t>

<t>We present here a summary of the results, including the average and the 90th percentile
of the completion time for each test. For media tests, we also report the average frame
delivery time and the 90th percentile of the max frame delivery time.</t>

<t>We run these tests for C4, Cubic and BBR, and present the results for these 3
congestion control algorithms in a set of tables. All times are expressed in microseconds,
and for all results lower time values are considered better.</t>

<section anchor="reaction-to-network-events-1"><name>Reaction to network events</name>

<t>Here are the statistics for the network events test cases.</t>

<section anchor="average-time-for-network-events-tests"><name>average time for network events tests</name>

<texttable>
      <ttcol align='left'>average time for network events tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>alone</c>
      <c>4502913</c>
      <c>4689260</c>
      <c>4472465</c>
      <c>4642195</c>
      <c>alone_200</c>
      <c>1115776</c>
      <c>1221630</c>
      <c>1145722</c>
      <c>1161980</c>
      <c>alone_1_5M</c>
      <c>21504710</c>
      <c>21717251</c>
      <c>21514264</c>
      <c>21660915</c>
      <c>alone_512k</c>
      <c>16173870</c>
      <c>16211371</c>
      <c>16183314</c>
      <c>16213861</c>
      <c>low_and_up</c>
      <c>7569237</c>
      <c>7506849</c>
      <c>8035433</c>
      <c>7762235</c>
      <c>drop_and_back</c>
      <c>7554195</c>
      <c>7625693</c>
      <c>7629764</c>
      <c>7697371</c>
      <c>blackhole</c>
      <c>5591981</c>
      <c>5811316</c>
      <c>5695660</c>
      <c>5628028</c>
      <c>short_long</c>
      <c>17536781</c>
      <c>42331541</c>
      <c>21368101</c>
      <c>17537092</c>
      <c>satellite</c>
      <c>6807127</c>
      <c>7492539</c>
      <c>6704246</c>
      <c>6807111</c>
</texttable>

</section>
<section anchor="top-90-time-for-network-events-tests"><name>top 90% time for network events tests</name>

<texttable>
      <ttcol align='left'>top 90% time for network events tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>alone</c>
      <c>4564480</c>
      <c>4698415</c>
      <c>4518852</c>
      <c>4835141</c>
      <c>alone_200</c>
      <c>1181668</c>
      <c>1222012</c>
      <c>1148423</c>
      <c>1186067</c>
      <c>alone_1_5M</c>
      <c>21511156</c>
      <c>21718512</c>
      <c>21552321</c>
      <c>21661024</c>
      <c>alone_512k</c>
      <c>16173974</c>
      <c>16217210</c>
      <c>16208261</c>
      <c>16215577</c>
      <c>low_and_up</c>
      <c>7570221</c>
      <c>7511647</c>
      <c>8071920</c>
      <c>7764215</c>
      <c>drop_and_back</c>
      <c>7579428</c>
      <c>7630825</c>
      <c>7632455</c>
      <c>7698289</c>
      <c>blackhole</c>
      <c>5592061</c>
      <c>5815444</c>
      <c>5699327</c>
      <c>5628156</c>
      <c>short_long</c>
      <c>17538429</c>
      <c>43394841</c>
      <c>21541922</c>
      <c>17538424</c>
      <c>satellite</c>
      <c>6807174</c>
      <c>7834142</c>
      <c>6704247</c>
      <c>6807137</c>
</texttable>

</section>
</section>
<section anchor="competition-1"><name>Competition</name>

<t>Here the statistics for the compete test cases.</t>

<section anchor="average-time-for-compete-tests"><name>average time for compete tests</name>

<texttable>
      <ttcol align='left'>average time for compete tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>vs_bbr</c>
      <c>2817663</c>
      <c>4501471</c>
      <c>2853022</c>
      <c>2964582</c>
      <c>vs_c4</c>
      <c>4361871</c>
      <c>6813101</c>
      <c>7891899</c>
      <c>4490594</c>
      <c>vs_cubic</c>
      <c>3428960</c>
      <c>6974953</c>
      <c>5348004</c>
      <c>3484869</c>
      <c>after_c4</c>
      <c>6563029</c>
      <c>6846566</c>
      <c>7208456</c>
      <c>5239798</c>
      <c>before_c4</c>
      <c>2640670</c>
      <c>4281776</c>
      <c>3105136</c>
      <c>2699206</c>
      <c>vs_c4_lg</c>
      <c>21026786</c>
      <c>32250064</c>
      <c>23618741</c>
      <c>21067859</c>
      <c>vs_c4_lg2</c>
      <c>20979188</c>
      <c>21139542</c>
      <c>21818194</c>
      <c>21102894</c>
      <c>vs_bbr_lg</c>
      <c>15612556</c>
      <c>21098503</c>
      <c>15562778</c>
      <c>16742530</c>
      <c>vs_bbr_lg2</c>
      <c>16449739</c>
      <c>18711270</c>
      <c>21520837</c>
      <c>20600335</c>
      <c>vs_cubic_lg</c>
      <c>17902039</c>
      <c>21430554</c>
      <c>20902893</c>
      <c>17578391</c>
      <c>vs_cubic_lg2</c>
      <c>17080952</c>
      <c>15533300</c>
      <c>20672401</c>
      <c>16969990</c>
</texttable>

</section>
<section anchor="top-90-time-for-compete-tests"><name>top 90% time for compete tests</name>

<texttable>
      <ttcol align='left'>top 90% time for compete tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>vs_bbr</c>
      <c>2824981</c>
      <c>4580449</c>
      <c>2877804</c>
      <c>2983881</c>
      <c>vs_c4</c>
      <c>4453585</c>
      <c>6843240</c>
      <c>8424848</c>
      <c>4864821</c>
      <c>vs_cubic</c>
      <c>3761300</c>
      <c>7089722</c>
      <c>5580459</c>
      <c>3555684</c>
      <c>after_c4</c>
      <c>6742984</c>
      <c>6991485</c>
      <c>7494092</c>
      <c>6102901</c>
      <c>before_c4</c>
      <c>2734698</c>
      <c>5404668</c>
      <c>4163561</c>
      <c>3001428</c>
      <c>vs_c4_lg</c>
      <c>21139706</c>
      <c>39556964</c>
      <c>25105527</c>
      <c>21141447</c>
      <c>vs_c4_lg2</c>
      <c>21046812</c>
      <c>21379953</c>
      <c>22272580</c>
      <c>21174182</c>
      <c>vs_bbr_lg</c>
      <c>15808681</c>
      <c>21131562</c>
      <c>15839671</c>
      <c>16936214</c>
      <c>vs_bbr_lg2</c>
      <c>16522592</c>
      <c>18954745</c>
      <c>22323666</c>
      <c>21138531</c>
      <c>vs_cubic_lg</c>
      <c>20251838</c>
      <c>21760143</c>
      <c>21120555</c>
      <c>18440982</c>
      <c>vs_cubic_lg2</c>
      <c>17419617</c>
      <c>15706948</c>
      <c>20930258</c>
      <c>17548782</c>
</texttable>

</section>
</section>
<section anchor="wi-fi"><name>Wi-Fi</name>

<t>Here the statistics for the wifi test cases.</t>

<section anchor="average-time-for-wifi-tests"><name>average time for wifi tests</name>

<texttable>
      <ttcol align='left'>average time for wifi tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>wifi_bad</c>
      <c>4059372</c>
      <c>5601202</c>
      <c>4076699</c>
      <c>4144883</c>
      <c>wifi_fade</c>
      <c>5065021</c>
      <c>5403001</c>
      <c>5341227</c>
      <c>5203858</c>
      <c>wifi_suspension</c>
      <c>4564740</c>
      <c>4615871</c>
      <c>4600118</c>
      <c>4563252</c>
      <c>wifi_bad_bbr</c>
      <c>7582895</c>
      <c>7280777</c>
      <c>6837401</c>
      <c>7581238</c>
      <c>wifi_bad_c4</c>
      <c>8750784</c>
      <c>9650917</c>
      <c>8426742</c>
      <c>9347050</c>
      <c>wifi_bad_cubic</c>
      <c>8618719</c>
      <c>8731338</c>
      <c>10397119</c>
      <c>8407363</c>
</texttable>

</section>
<section anchor="top-90-time-for-wifi-tests"><name>top 90% time for wifi tests</name>

<texttable>
      <ttcol align='left'>top 90% time for wifi tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>wifi_bad</c>
      <c>4643322</c>
      <c>7615210</c>
      <c>4475581</c>
      <c>4806788</c>
      <c>wifi_fade</c>
      <c>5335174</c>
      <c>5599818</c>
      <c>5550898</c>
      <c>5480744</c>
      <c>wifi_suspension</c>
      <c>4574165</c>
      <c>4616328</c>
      <c>4602178</c>
      <c>4573648</c>
      <c>wifi_bad_bbr</c>
      <c>12112441</c>
      <c>11626769</c>
      <c>12533043</c>
      <c>11985779</c>
      <c>wifi_bad_c4</c>
      <c>11690859</c>
      <c>12288047</c>
      <c>12435459</c>
      <c>12401707</c>
      <c>wifi_bad_cubic</c>
      <c>11961135</c>
      <c>12011172</c>
      <c>13905062</c>
      <c>11723366</c>
</texttable>

</section>
</section>
<section anchor="ecn"><name>ECN</name>

<t>Here the statistics for the ecn test cases.</t>

<section anchor="average-time-for-ecn-tests"><name>average time for ecn tests</name>

<texttable>
      <ttcol align='left'>average time for ecn tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>ecn</c>
      <c>4465878</c>
      <c>4670054</c>
      <c>4460773</c>
      <c>4494003</c>
      <c>ecn_c4</c>
      <c>12286476</c>
      <c>17269928</c>
      <c>13977479</c>
      <c>11422019</c>
      <c>ecn_cubic</c>
      <c>8362141</c>
      <c>9701695</c>
      <c>13356991</c>
      <c>8235549</c>
      <c>ecn_bbr</c>
      <c>13079389</c>
      <c>13246715</c>
      <c>16900370</c>
      <c>13083701</c>
</texttable>

</section>
<section anchor="top-90-time-for-ecn-tests"><name>top 90% time for ecn tests</name>

<texttable>
      <ttcol align='left'>top 90% time for ecn tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>ecn</c>
      <c>4466761</c>
      <c>4671124</c>
      <c>4457939</c>
      <c>4494072</c>
      <c>ecn_c4</c>
      <c>13033989</c>
      <c>17698371</c>
      <c>14561797</c>
      <c>12383356</c>
      <c>ecn_cubic</c>
      <c>9108260</c>
      <c>10561707</c>
      <c>13961159</c>
      <c>8720974</c>
      <c>ecn_bbr</c>
      <c>13342537</c>
      <c>13372125</c>
      <c>17458084</c>
      <c>13345131</c>
</texttable>

</section>
</section>
<section anchor="media"><name>Media</name>

<t>Here the statistics for the media test cases.</t>

<section anchor="average-avlatency-for-media-tests"><name>average av_latency for media tests</name>

<texttable>
      <ttcol align='left'>average av_latency for media tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>media</c>
      <c>33511</c>
      <c>33427</c>
      <c>33512</c>
      <c>33511</c>
      <c>media10</c>
      <c>45378</c>
      <c>44991</c>
      <c>47755</c>
      <c>45204</c>
      <c>media_600fr</c>
      <c>33625</c>
      <c>33545</c>
      <c>33629</c>
      <c>33624</c>
      <c>media_short_long</c>
      <c>100794</c>
      <c>134059</c>
      <c>100766</c>
      <c>101036</c>
      <c>media_wb</c>
      <c>80894</c>
      <c>85353</c>
      <c>84391</c>
      <c>77485</c>
      <c>media_wf</c>
      <c>82547</c>
      <c>86474</c>
      <c>83914</c>
      <c>82971</c>
      <c>media_ws</c>
      <c>22941</c>
      <c>21645</c>
      <c>22495</c>
      <c>22854</c>
      <c>media_ecn</c>
      <c>34413</c>
      <c>34481</c>
      <c>34716</c>
      <c>34408</c>
</texttable>

</section>
<section anchor="top-90-maxlatency-for-media-tests"><name>top 90% max_latency for media tests</name>

<texttable>
      <ttcol align='left'>top 90% max_latency for media tests</ttcol>
      <ttcol align='right'>c4</ttcol>
      <ttcol align='right'>bbr</ttcol>
      <ttcol align='right'>cubic</ttcol>
      <ttcol align='right'>c4_2026_07_05</ttcol>
      <c>media</c>
      <c>43453</c>
      <c>43453</c>
      <c>43453</c>
      <c>43453</c>
      <c>media10</c>
      <c>71128</c>
      <c>71128</c>
      <c>92163</c>
      <c>71128</c>
      <c>media_600fr</c>
      <c>43453</c>
      <c>43453</c>
      <c>43453</c>
      <c>43453</c>
      <c>media_short_long</c>
      <c>111153</c>
      <c>334491</c>
      <c>109180</c>
      <c>117984</c>
      <c>media_wb</c>
      <c>270847</c>
      <c>304794</c>
      <c>274677</c>
      <c>269770</c>
      <c>media_wf</c>
      <c>279458</c>
      <c>365839</c>
      <c>298720</c>
      <c>298762</c>
      <c>media_ws</c>
      <c>197821</c>
      <c>195521</c>
      <c>197821</c>
      <c>197821</c>
      <c>media_ecn</c>
      <c>47975</c>
      <c>50996</c>
      <c>50996</c>
      <c>49700</c>
</texttable>

</section>
</section>
</section>
<section anchor="live-tests"><name>Live Tests</name>

<t>We need real life tests as well.</t>

<section anchor="loopback-tests"><name>Loopback tests</name>

<t>Loopback tests were performed on Windows, downloading 10GB of data over
a loopback connection. They showed picoquic using C4 achieving a data rate
of 3Gbps, slightly more than the 2.9Gbps achieved when using Cubic or the
2.6 Gbps achieved when using BBR.</t>

</section>
<section anchor="webex-prototype-deployments"><name>Webex prototype deployments</name>

<t>To do. Write down.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This documentation of protocol testing does not have any
particular security considerations.</t>

<t>We did not include specific security oriented tests in this document.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>




    <references title='Informative References' anchor="sec-informative-references">

&RFC9000;
&I-D.ietf-moq-transport;
&RFC9959;
&RFC9743;
<reference anchor="Picoquic" target="https://https://github.com/private-octopus/picoquic">
  <front>
    <title>Picoquic</title>
    <author initials="C." surname="Huitema">
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
  <seriesInfo name="GitHub Repository" value=""/>
</reference>
<reference anchor="Picoquic_ns" target="https://https://github.com/private-octopus/picoquic_ns">
  <front>
    <title>Picoquic Network Simulator</title>
    <author initials="C." surname="Huitema">
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
  <seriesInfo name="GitHub Repository" value=""/>
</reference>


    </references>



<?line 712?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO acknowledge.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA9VdaXPcRpL9jl9R0YqNlWZJGmcD0IY3xqYvTdjyxQ19ZKDR
1Wys0EAPgCbFkTW/fV9mVuHog6I80ozHjnCDQJ2ZL89KwOfn505XdKV+rmZX
uu2K6kbVK3W5bgr8kVX/2arLurqhJ3VFl11Tl/hdavX0Mnw2c7LFotG36H0Z
KhqgnTl51umburl/ropqVTvOss6rbIMZlk226s7Xu6LTm+w8z+9uzvPwvEOv
czd02t1iU7Qt5unut2j94uurb5xqt1no5rmzxJjPnbyuWl21u/a56pqddopt
w1dt57tu6vpO1ugMa3mlFyqrlupF1emm0p26arKq3dZNN3Ne6/u7ulk+d9S5
ugz5vwcbpLu/6Kzsio3Gvc1mVxXYFVrQkx/0sshUfasb9fP/vrh0nGzXreuG
RnSUwqaxvMsL9Z3sk27J9nuijh/Vzc1z9VNT3GKD6se8q7e7FuvOL+gh2hTl
c2Uo9mfze4Edjef69UK9xG6z17tN1gzT/bpbZ+3eE8yWVcXfeCtYUNHm9Wie
tpLGf87pwUVeb/a29BddVUBIO9rTrix1NXnw8Byrcrda3f+5KIqLPHOcqm42
aHkL5hJY+j/Q4ZdvLlPXdfn6xflXF4XuVueb+q/nnWVm3yyN0v46DoPnDv3x
U5HXf90VOT9RXdbc6A607Lpt+/yzz+zvTdGtdwva62db4cJ5LVz4bGsGkP5G
SOyoM77LsFQz3/UjudHqptAtbQW3vy2673YLIGlbt0UHiZA2PVzwD5P3CGjG
G7jGs390Dxjj6DbUS91BHF6rX4vNrsywyE+8Mdxyzs/PVbZowce8c5zH6Jqi
VZmq9J3Khwa5kdWshLIBBTZqiQXeVHqpulq1uy1BhMX4/IrkONtuSyPFLR7n
a5W1zp4sX6gXHU02HmkJkmpc3GXNslVlfYenZXbfnjl3mFXd1PWynw0IVt1a
q9loMlUWG+x9OVMLvc5ui7pxVo3+605XXXmPHjsoqrs1hGjXkva9zZoiW5Ra
NaQRdJXXS9w+I30mE66ytlPQczkPjgWOaIK/stu6WMoiAAaizD1ECxskzTpT
a6xMk6zKnIf0ZGLQLYiibh0aKLuF6PKa8myb5RjxQl3hvlBJ3UHN3GZlQZhZ
qsW9I1ghO9IKqojkvAOVlW2NJoBFAZaXGGJb1vcb0KLFKvs1VILK9kK94mny
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
ccgbagAA

-->

</rfc>

