<?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 I-D.ietf-tsvwg-careful-resume SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-tsvwg-careful-resume.xml">
<!ENTITY RFC9743 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9743.xml">
]>


<rfc ipr="trust200902" docName="draft-huitema-ccwg-c4-test-02" 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="February" day="26"/>

    <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"/>)
and tests (see <xref target="tests"/>)</t>

</section>
<section anchor="simulations"><name>Simulations</name>

<t>We tested the design by running a series of simulations, which covered:</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>
</list></t>

<section anchor="testing-strategy"><name>Testing strategy</name>

<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>

<t>Our basic test is to run a simulation, measure the simulated
duration of a connection, and compare that to the expected nominal value.
When we were developing the C4, we used that for detecting possible
regressions, and progressively refine the specification of the
algorithm.</t>

<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. When running the same test multiple
times, we are likely to observe different values each time.
When comparing two code versions, we
may also observe different results of a given test, but it is hard to know
whether these results. To get reliable results, we run each test 100
times, and we consider the test passing if all the worse result of
these 100 times was withing the expected value.</t>

</section>
<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"><name>Simulation of a simple 20Mbps connection</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. The test verifies that 100 simulations all complete
in less than 4.7 seconds.</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"><name>Simulation of a simple 200Mbps connection</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. The test verifies that 100 simulations all complete
in less than 1.3 seconds.</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-geostationary-satellite-connection"><name>Simulation of a geostationary satellite connection</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="I-D.ietf-tsvwg-careful-resume"/> by setting
the remembered CWND to 18750000 bytes and the
remembered RTT to 600.123ms.
The test verifies that 100 simulations all complete
in less than 7.7 seconds.</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. The test verifies that 100 simulations of a
7MB download all complete in less than 8.6 seconds.</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. The test verifies that 100 simulations of a
7MB download all complete in less than 8.25 seconds.</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. The test verifies that 100 simulations of a
10MB download all complete in less than 6.1 seconds.</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-to-long"><name>Short to 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. The test verifies that 100 simulations of a
20MB download all complete in less than 22 seconds.</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>
<section anchor="ecn"><name>L4S and ECN</name>

<t>The "ECN" test simulates a 20 Mbps link,
with an 80ms RTT, and a bottleneck buffer capacity corresponding
to 1 BDP. The test verifies that 100 simulated downloads of
10 MB all complete in less than 4.5 seconds.</t>

</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. The test
pass if 100 different 10MB downloads each complete in less than 4.3 seconds.</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. The test
pass if 100 different 10MB downloads each complete in less than 6.2
seconds.</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.  The test
pass if 100 different 10MB downloads each complete in less than 5.4
seconds.</t>

</section>
</section>
<section anchor="competition-with-itself"><name>Competition with itself</name>

<t>In accordance with <xref target="RFC9743"/>, 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="two-short-c4-simultaneous-connections"><name>Two short C4 simultaneous connections</name>

<t>Our first test simulates two C4 connections starting at the
same time and using the same path. The path has a 20Mbps data rate
and 80ms RTT. The background connection
tries to download 10MB, the main connection downloads 5MB.
The test pass if in 100 trials the main connection completes
in less than 6.7 seconds.</t>

</section>
<section anchor="short-background-c4-connection-first"><name>Short background C4 connection first</name>

<t>The "background first" test simulates two C4 connections using the same path
with the background connection starting
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.
The test pass if in 100 trials the main connection completes
in less than 8.15 seconds after the beginning of the trial.</t>

</section>
<section anchor="short-background-c4-connection-last"><name>Short background C4 connection last</name>

<t>The "background last"  simulates two C4 connections using the same path
with the background connection starting at the
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.
The test pass if in 100 trials the main connection completes
in less than 4.1 seconds after the beginning of the trial.</t>

</section>
<section anchor="two-long-c4-connections"><name>Two long C4 connections</name>

<t>The long connection test simulates two C4 connections starting at the
same time and using the same path. The path has a 20Mbps data rate
and 80ms RTT. The background connection
tries to download 30MB, the main connection downloads 20MB.
The test pass if in 100 trials the main connection completes
in less than 23 seconds.</t>

</section>
<section anchor="long-background-c4-connection-last"><name>Long background C4 connection last</name>

<t>The long "background last" test simulates two C4 connections using the same path
with the background connection starting
1 second after the main connection. The path has a 10Mbps data rate
and 70ms RTT. The background connection
tries to download 15MB, the main connection downloads 10MB.
The test pass if in 100 trials the main connection completes
in less than 23 seconds after the beginning of the trial.</t>

</section>
<section anchor="compete-with-c4-over-bad-wi-fi"><name>Compete with C4 over bad Wi-Fi</name>

<t>The "compete over bad Wi-Fi" test simulates two C4 connections using 
the same "bad Wi-Fi" path and starting, 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.
The test pass if in each of 100 trials the main connection completes
in less than 12 seconds after the beginning of the trial.</t>

</section>
</section>
<section anchor="competition-with-cubic"><name>Competition with Cubic</name>

<t>In accordance with <xref target="RFC9743"/>, we design series of tests
of multiple competing flows using C4 and Cubic. 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="two-short-c4-and-cubic-connections"><name>Two short C4 and Cubic connections</name>

<t>Our first test simulates two C4 and Cubic connections starting at the
same time and using the same path. The path has a 20Mbps data rate
and 80ms RTT. The background Cubic connection
tries to download 10MB, the main connection downloads 5MB.
The test pass if in 100 trials the main connection completes
in less than 6.8 seconds.</t>

</section>
<section anchor="two-long-c4-and-cubic-connections"><name>Two long C4 and Cubic connections</name>

<t>The long connection test simulates two C4 and Cubic connections starting at the
same time and using the same path. The path has a 20Mbps data rate
and 80ms RTT. The background connection
tries to download 30MB, the main connection downloads 20MB.
The test pass if in 100 trials the main connection completes
in less than 23 seconds.</t>

</section>
<section anchor="long-cubic-background-connection-last"><name>Long Cubic background connection last</name>

<t>The long "background last" test simulates two C4 and Cubic connections
using the same path
with the background Cubic connection starting
1 second after the main connection. The path has a 10Mbps data rate
and 70ms RTT. The background connection
tries to download 15MB, the main connection downloads 10MB.
The test pass if in 100 trials the main connection completes
in less than 23 seconds after the beginning of the trial.</t>

</section>
<section anchor="compete-with-cubic-over-bad-wi-fi"><name>Compete with Cubic over bad Wi-Fi</name>

<t>The "compete over bad Wi-Fi" test simulates two C4 and Cubic connections using 
the same "bad Wi-Fi" path, 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.
The test pass if in each of 100 trials the main connection completes
in less than 12.5 seconds after the beginning of the trial.</t>

</section>
</section>
<section anchor="competition-with-bbr"><name>Competition with BBR</name>

<t>In accordance with <xref target="RFC9743"/>, we design series of tests
of multiple competing flows using C4 and BBR. 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="two-short-c4-and-bbr-connections"><name>Two short C4 and BBR connections</name>

<t>Our first test simulates two C4 and BBR connections starting at the
same time and using the same path. The path has a 20Mbps data rate
and 80ms RTT. The background BBR connection
tries to download 10MB, the main connection downloads 5MB.
The test pass if in 100 trials the main connection completes
in less than 6.7 seconds.</t>

</section>
<section anchor="two-long-c4-and-bbr-connections"><name>Two long C4 and BBR connections</name>

<t>The long connection test simulates two C4 and BBR connections starting at the
same time and using the same path. The path has a 20Mbps data rate
and 80ms RTT. The background connection
tries to download 30MB, the main connection downloads 20MB.
The test pass if in 100 trials the main connection completes
in less than 23 seconds.</t>

</section>
<section anchor="long-bbr-background-connection-last"><name>Long BBR background connection last</name>

<t>The long "background last" test simulates two C4 and BBR connections
using the same path
with the background BBR connection starting
1 second after the main connection. The path has a 10Mbps data rate
and 70ms RTT. The background connection
tries to download 15MB, the main connection downloads 10MB.
The test pass if in 100 trials the main connection completes
in less than 23 seconds after the beginning of the trial.</t>

</section>
<section anchor="compete-with-bbr-over-bad-wi-fi"><name>Compete with BBR over bad Wi-Fi</name>

<t>The "compete over bad Wi-Fi" test simulates two C4 and BBR connections using 
the same "bad Wi-Fi" path, with the main
connection starting 1 second after the background BBR 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.
The test pass if in each of 100 trials the main connection completes
in less than 14.5 seconds after the beginning of the trial.</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"><name>Media on High Speed Connection</name>

<t>The "high speed" media test verifies how C4 handles 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. The expected average delay is set to 31ms,
and the maximum delay is set to 79ms. The test is successful if
100 trials are all successful.</t>

</section>
<section anchor="media-on-10-mbps-connection"><name>Media on 10 Mbps Connection</name>

<t>The "high speed" media test verifies how C4 handles 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. The expected average delay is set to 47ms,
and the maximum delay is set to 160ms. The test is successful if
100 trials are all successful.</t>

</section>
<section anchor="media-for-20-seconds"><name>Media for 20 seconds</name>

<t>The "20 seconds" media test verifies 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. The expected average delay is set to 33ms,
and the maximum delay is set to 80ms. The test is successful if
100 trials are all successful.</t>

</section>
<section anchor="media-over-varying-rtt"><name>Media over varying RTT</name>

<t>The "varying RTT" 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. The expected average delay is set to 110ms,
and the maximum delay is set to 127ms. The test is successful if
100 trials are all successful.</t>

</section>
<section anchor="media-over-varying-wi-fi"><name>Media over varying Wi-Fi</name>

<t>The "varying 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 "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. The expected average delay is set to 110ms,
and the maximum delay is set to 350ms. The test is successful if
100 trials are all successful.</t>

</section>
<section anchor="media-with-wi-fi-suspensions"><name>Media with Wi-Fi suspensions</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. The expected average delay is set to 23.6ms,
and the maximum delay is set to 202ms. The test is successful if
100 trials are all successful.</t>

</section>
<section anchor="media-over-bad-wi-fi"><name>Media over bad Wi-Fi</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. The expected average delay is set to 100ms,
and the maximum delay is set to 680ms. The test is successful if
100 trials are all successful.</t>

</section>
</section>
</section>
<section anchor="tests"><name>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;
&I-D.ietf-tsvwg-careful-resume;
&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 642?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO acknowledge.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1dW3Mbt5J+x69A0Q+b5IgMSUm+aCtbx5bjRKdix2try4+n
wBmQnNVwhhnMiGJcym/fr7uBuZCUTdmyY2/5PByLGFwa3V9f0Lik3++rMilT
e6J759aVSTbT+VSfzosEP0z2H06f5tmMvuQZ/VkWeYp/Y6u/Oz36vqfMZFLY
S7Q+PdLUgeupyJR2lhfrE51k01ypOI8ys8AIcWGmZX9eJaVdmH4UrWb96Khf
olV/OFaumiwS5zBOuV6i9tnP589UVi0mtjhRMfo8UVGeOZu5yp3osqisSpYF
/+XK8XD4CH2YwhrQ8sZOtMlifZaVtshsqc8Lk7llXpQ9dWHXq7yIT5Tu69Mj
/v+tCVLpK2vSMllYlC0WVZZgVqhBX57bODE6v7SF/u//OTtVylTlPC+oR6U1
Jg3yTgf6V5knFcn0a6a2P+XF7ES/LJJLTFD/HpX5snKgOxrQR9RJ0hPtOfZP
/+8AM2qP9XqgX2C25qJamKIZ7nU1N27jC0YzWfInTwUEJS7KW+O4TCr/M6IP
gyhfbEzpXzbLgBDXmlOVpjbrfHj3GNO0mk7X/0ySZBAZpbK8WKDmJYRLYKl/
oMGrZ6ePhsMh/33WfzpIbDntL/I/+mUQZvdT6S4JUIDAtEr7hXXVounowdHh
iaIfL5Mo/6NKIv6iS1PMbAkOl+XSnfz4Y/h3lpTzakIc+HEpsunnIpsfl74D
ae9VJ/Ta41IGq+6Nh+NjKXC2SKyjCaL4l6T8tZoAX8vcJSX0ROrUIML/mOk7
oNSewL/x7WPngD52TkO/sCWU5EK/ThZVakDkJ54YilS/39dm4iDdqFRqHwuU
OG10Zlc6aipEXoNNChMEDix0DAJnmY11mWtXLQk4rNz9c9Jus1ymXrcdPkdz
bZza0PCBPitpsHZPMVhq8cfKFLHTab7C19Ss3YFaYVQ9y/O4Hg241uXc6l5r
MJ0mC8w97umJnZvLJC/UtLB/VDYr0zVaVDBfqzlUq3Jkky9NkZhJanVBdsJm
UR6j+ICsnAw4Na7UsH4Rdw4CWzzBL3OZJ7EQATAQZ9ZQOEyQ7G1Pz0GZJQ2W
Mbf5ycygIiiodYo6MpdQaKYpMksToceBPke5cEmvYHwuTZoQZmI9WSvBCnkX
J6gilvMMtEldjiqARQKRp+himebrBXjhQGVNQyaodAP9hoeJimRi9RyE0cyc
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
gFLaeSHZWiFJ1X1wrFu8GxQPbo2Jblx7MyjuD0YfhAkfILZQISg3PthwlVva
zDXpAN2CwmuJR3JNwbxHgzQjfnGEfytH4FcL3ZFuL3LifiPsQ+a5CHzU1vF6
uLZj0C29jU1pJOS5IwUf7ynM8fgDZYnFNTkEhG9wCPbKFpRrETvfc7zphMF7
TSaNd6a83/A5yRWxD8PSav23o9csyZ9PX+i392yUXXsho6Dn49BOgL33cuuu
Y2lIPfCVeM3u/ck7OHw0OO5EM/rXVgr9V0q1/0vSVj+3Uu3gQXTUX4GCa160
tXYNOFfMCzbOQk2spQXwmpPtlFOjLCj6y3zuQ/UmAMCbpP8s6XWy+QedJZqu
XMV7JbRTKLH11K7UIkE4GqxOxOlMt0wueO2FMJky75REGgtA33BajzALjZSM
B20tlQVTB1qqLIYBKDkVRGyNTEWg4Twe94tOKBvK+ej5ekmbFw4ATEQMUD7O
UNGOoJP9wJBWA5xMATvOE633dsLyQuei9ZyO85uZpPyF7hE8M5v26q0WISnK
aeKkTnEVVppqnrAtySjlBuzDeS0IMYnrtgqbfGCCc5T6QnPuXAl1AjzHvvAy
Tym7RJm81F5KJgproDwjAUIgFP708+l0wBsokypJibsLUJDyPp7HpGbO+Pzn
hOC9mCRZyBHOoAMF7ZNI0ulxyKNytkyjAdhFMBoy1SO9YJWXQeopyUatySJ7
wH28zBHJUbFPvUt1VsXULCax+WlETLpM4rDmlhMz+sWI021i8yMD2Y0WxAqQ
TllZpXlXOALaMr+uqUmIKdNa+Dw/XHax3k3LjTTpn/RofIAh2EBk9ahgfjaj
CGSK1cexzL9NggjO54/JNbdCWRGNcDzsHTYcFxocCUU2uihJj2kkUUKa0rvq
iYVJYIkitm7EKmmfqpjy6VY2nTrQKmzY5hOZPuNNqnpf4rtR/+r7xrnxHohP
8pQdWYw56hjs6GF3e7JxlCRHQ86z0ff3ImFfrnsXFJylbLwR01LOpJOarxLK
5tgT9ddff9Ve9Sdg6gcC0T9A1w/clUqmBLT/wshyviPU7f+kC258zptRjSSu
ZKeNNpviZm5yhAXYhzhmNmiYpJn12bRdJ3GKaADRZPxrbl8Rh/+0Rc71fZId
Zl8SG5l+NFpsVB5RTSU1aU0l2hnqyNSvMOnvPFX/9lT1SZG+//ERbDHXedN2
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

-->

</rfc>

