<?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-01" 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 5 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. The typical
test completes in 4.85 seconds.</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.25 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.4 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 5.6 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.5 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 22.8 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 22.2 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 13 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.7 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 22.2 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 22 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 13.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 120ms,
and the maximum delay is set to 675ms. 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>To do. Write down.</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 641?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO acknowledge.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1dW3fbNrZ+x6/AYh5O27FUSZbjxGf1rCZOM/GsJs0kPiuP
syASknDMi0qQltUs97fPvgAkKNGO3DhpcqbzMLFIXDb2/vYVADsYDERlqlSf
yOhc28rkC1nM5emyNPBD5f9l5WmRL/BNkeOfVVmk8G+i5Ten028joWazUl9C
79OpxAFsJGJV6UVRbk6kyeeFEEkR5yqDGZJSzavBsjaVztQgjteLQTwdVNBr
MBoLW88yYy3MU21W0Prsp/PnIq+zmS5PRAJjnoi4yK3ObW1PZFXWWphVSX/Z
ajIaPR5NhCq1Alre6ZlUeSLP8kqXua7kealyuyrKKhIXerMuyuREyIE8ndL/
7ywQn77RKq1MpuFZltW5gVVBC3zzUidGyeJSl/Kf/3t2KoSqq2VR4ohCSlg0
kHc6lC94nfiIl98wNXxVlIsT+bo0l7BA+UtcFavaAt3xEF9CG5OeSMexH92/
Q1hRONfboXwFq1UXdabKdrq39VLZrTcwm8rNb7QUIMjYuAjmsTk3/jHGF8O4
yLaW9A+d54AQG6ypTlOdd17cPsc8refzzY/GmGGshMiLMoOWlyBcBEvzAzq8
eX76eDQa0d9ng2dDo6v5ICt+HVRemN1Xlb1EQAEE5nU6KLWts3ag4+nhicAf
r01c/FqbmN7ISpULXQGHq2plT77/3v+7MNWyniEHvl+xbAYFy+b7lRuA+zvV
8aNG9JTAKqPJaHLED6wujba4QHj8d1O9qGeAr1VhTQV6wm0aEMH/iOk9UAoX
8C9497FrgDF6lyFf6QqU5EK+NVmdKiDyEy8MHonBYCDVzIJ040qIfSyQsVLJ
XK9l3DaInQarFEwQcCCTCRC4yHUiq0LaeoXAIeUenKN2q9Uqdbpt4XW8lMqK
LQ0fyrMKJwtHSoClGv5YqzKxMi3W8DZVG3sg1jCrXBRF0swGuJbVUssomEym
JoO1J5Gc6aW6NEUp5qX+tdZ5lW6gRw3ma70E1aot2uRLVRo1S7Us0U7oPC4S
eHyAVo4nnCtbSbB+MQ0OBAY8gV/qsjAJEwFgQM5sQOFggWhvI7kEyjRqMM+5
y09iBj4CBdVW4EDqEhSaaIrVSsUw4lCew3PmklyD8blUqUHMJHK2EYwV9C6W
UYUspxVIldoCmgAsDIg8hSFWabHJgBcWqGxoyBmVdijf0TRxaWZaLoEwXJnV
4cDEGXQtdigIWplJklQL8QC9QlkkNXFqP6Chq7sXtAF56FMQXSHwDqRd6djM
4XeabsQNrRwUEJHy/XtnHq+viYMoEEKtaFArGzsJrfsN6PX1FyWyb6zWQGvw
6Pr6W0HLQ0H69/QD34As37ZthYAp8J1mdrhFAY1lTd4JxHfDgtZLA4ofE8Yh
MhDfdTTJrUHqS1odvAWbutJgNLEBaV8BE5Z9atMAg/otYS2pC7GWZrGU/2cq
iFBAny9NWeSZHz9sdwMYYPEPpI/Y0GhCzLUhFoADbFaMfGDeMXbwtzf+zbqs
N/LA28C7ADgEgqN9rSEWA2PXGcRkq1Qj4WzVgGCHTz8SDtP4FVNZnc6RfyAF
4lxoIxWZOV1tcJgeLVuVRVXERQoSM3mc1mgCIQKZwcAIkqdP3xDMVJIABCDM
2qXtdArW4Hypqu13oXUHYFfYBNdpIcqB+RM0coAlDXzUCQJcX+m45mFR4bCt
5yfSAi06CMP3EADlMjHzOaAsjzWMBvQLBVhbpSomYpBGmraILyBsffL6DPGr
grHwGawSrbQXsslF+56nIorhvUVCIgBXVYOOIo6iA+Y78No9jVOYjP1ZLmC2
YC5GvHeLgCyMI1JaIOi7gv6ANSAZzD+Qa+W8hJDR9QdGgjerNao+TohkdafM
dAxANzYDkpi/visyWMFoTgdhBlRdgAGIFdGQa6ecKKZ1UaeJTNH/jUeuGa8b
lNgtGqT+S13KmbKAFVQIFDioNrCow90DIErZmq1TQ04ikrpULSktBWwL0Rwo
6oOoKaivvgKLjkzIi8zkQAcwrtZDQZKD5a7RBCbA4LRYec08nRInEGI8FipF
oiucC5pAWGUN+FtR6gX4YtsaY1AMfgLDgbnTc5O7FXi34omHh62zAq4E9tPp
FIYYeVJkTvgHjfQ9vJ3N4pgGdBJmADsObHYGi8HgwWK7aBnKlyavIYRB0YN+
k6JABIsLxPQuMUwLogHCIoSFjRUpugbFiSu7Bf5GSUmqZCxBsQVK3RI3UTCp
uUDGgGiKGbgAGNarYcVysRLs/ZKw4kTEMqUZ1gXrk4uWaFiRqQ37wN0RMfVI
K8tYWaBaEXEHclYD7gh6S4gakZyLvFgLCLnIfbBDdL3BMRcS4nr4nbrIj1/Q
ohC3TLEm2I/8gpHZqExApkmcXaI2K2XJAxggKk3pOUizmQ+IFTw/DEZ8sBQO
oK3wbG4g7aCMHujNLX4SncfclDB5n9tlspYQOJ9OOQZ2aCDLLG2sc+B/YQVF
pMw2No0pqUjJ/AU3ecFBTAphHEGc1JuxbMmZKzkZvZytbKi47nH/84UuLDsG
VYJBBBOQpqbSO+1sDa4mx8nA1ADvgPyVAlvnA2LwU0OAfITpAUqmXkVhv0RD
v55uoPcpdKEYTKJ/AM1hDmOCnPpRk7JY0bAz0LjuwPgG2o9YH7tDl3LiraQb
ScloBh7oAqSR6ujWlaE5zGNYGJp6Gdkl1lRwKlhjvogQE2FQ5kw3i3RHCAgR
kKoXdWNvMdAej14+lUmxztNCJexjUV6ShkChu0QL7MSjUWblm/NzF5jKWVFV
KUxxAQqHOtkuPi5KYPgKzQyYG6B6LJ8+e83wIdjANGAutWXzi6rQSSlAcdAu
pJpdVAomF1vm8shzFLTiDF1KtVlhMN9xLaCXGMCqJmZeLZG1fkTpRhQ04qMR
rOpgBwkUo25cT+jAkSsaYgrqXQGNs0SA8Myk5jdtvVNK0S/gu6F8Mq/IPKjq
gLI54B8MjyGKlTQF+Gg069yRZE8s1lexXpFnEitgFqShsbQZcmZWZyAa8JTe
XkSr2i4jTkPYrDtOM28oO2tWT7o/HT4KOXkrlu4Cpkk/mHrQJKd9YNKfF03j
4SRkA68LNY2HhT/Xtg1Rt9EERMVYQ0iw8gYkiEaArVnilNEN0EFOAVJlrlWi
Y/QJUqpBzQ3i+bDlvF3pewV11Ceoh6OPlRRbv4NGKJQhfngBLivy9FMQwDkW
uacgn3G1SMm1SBFk4X21SsjkMfrWFcVCOBboI6ZckJPK03evnqEyjh8dH0HW
P4KmxDJO/UXQEhUZGgJ7huPJYWaZ3I/C4/FwuqWVPzcOjd186OH6RdvjUJDw
RkQu8UGcgnFiYM70wnCU59Oi1pqKToAOLjBP1iYBZCC2MPyswCgjarh456ZF
SyjGDk4M5smw1TVS3dASYhxVqRyHg24AuL21G7VBHIdoDvkrO/x9NHzYUXct
FwUotFt0kK7QlBueEKImCPuzFai68KpunUFoedzwhUuFAR+2FZ/cAkv3WRhY
OAF3g41bZUxhzQdk3PVs2xHOUNwPApykCQKeKov6fxQiYNwggJLn3JFDHHcj
CIeVPx8pW55hX6ioRK0gJveIoQJxm4F1y7ktJwEWSpBKMjCeUpT4osA6KqEi
CBu/Ekj4yKeNgXf9o2+OETR7F3iA1e+i5MIukySaMSgsLm8HxfGdMdENgW8G
xcPh+A9hwkWTASoY5coFG7a2K53btnIgAyi85XikkBj3OzRwN+QXJQN3cgQu
sejOdHeRI/dbYR8Sz1ng41DHm+lCxyADvU1UpTjkuScFn+wpzMnkD8oS8nB0
CBC+gUPQV7rEsgzb+cjS/hRMHrVFN9rEcn7DlS/XyD6YFhP7n6dvSZI/nb6S
7x/oOL92QoYHkYtDOxH23pnZfQfTIHXPV+Q1ufent3D4qONtca0vgnL7CyzL
/4NLXD8FZXlgQjwdrIGEa0rxgh0GqitTekcVq5nWmCxvqDCP9TesmMJ4uauT
iGgGCHhnBs9N1Kn8H3QSOlnbmvZVcFeRg+u5XovMQDzqzU5MpU+7MheUqUGc
jFV6LDhNGKHvqASIoAWV5OoIbkNVJVEHtNR5AhagorIR8jVWNaKGan40LgyC
lVOqXS83K9zosIBAw3IA7aNqFu4eWt479CU4wJMqwZDTQpt9IJ9fyILVnkp3
buMTtb+UEeIz12nUbMswSXGBC0d9Smqfl4qlIWOSY3kOwA/eK0PIGNvt5TcE
gQnWYpkMutPggqlj5FlyhpdFipUorPql+pKrVpAEFTkKEASC8c+gmM+HtNky
q02K3M2AgpT2/BwoJXHG1UpniO9sZnJfT1yAEpS4p8IFqie+5kqVNQkdgF0I
oxFRPZYZ6TxP0iyJN3VVHusDGuN1AaEcPnZlem5OupiqbJaoH8bIpEuT+Ayd
T9fIV2MqzbHRh8xcy3GGrADSsYIrJO0gx4C23CU2DQkJVmVLtycAPrvc9NNy
I03yBzmeHMAUZCHyZlZgfr7AEGQO6ccRrz8kgQXnas3om4NYlkXDHPf7jC3H
mQaLQuFNMSzowzJMbFBToquITYwBUxSTeUNWcf9UJFh717xB1YFWqf2WIMv0
OW1oNXsY34wHV9+23o32S1xJqOrIYkJhx7BnhP7+aOSwoA4dqSaH7z+IhH25
7nyQ95a8SYdMS6nqjmq+Nlj70Sfi999/b9zqD4Cp7xBEfwO6vqOhhJkj0P4H
ZuazIL7t4AdZUudz2rhqJXHFu3K4MZW0a+PjLoB9EMdCew3jkrQ8m4dtjBVI
AxCN1r/h9hVy+DddFtTeFeTB7HNlI5ePx9lW4zG2FNwSkyrWTt+Gl34Fi/7G
UfUvR9UAFenb7x+DLaY270IX4XdkMVzpVFFc54rLCrIA87u7k9nsdNy66ezj
du9weMT3D8ADeV/GcXzrkXZce7DfhsWgEmQTs9rQFjYaSQxQBJPNHntLOm08
fZw12+24JvTnjcNgfyNgcbQHUbATQ3+GlRhyedvBWTvwmOqBvrKFSYzVAqPB
mQbU9lAyyWxvASgtqG6LezplG34I3D/BzRMkrd3q6YTobhOpP+qYDrcrm++A
/3KuEnTH6FjeP0CJDPCJFwvLDJ9ErlErmEvFTrzdNGNqA3HRxpr1BbOWa8Dh
ScMuDtKauj7yj6dljrneTp7jG+LpYHAsFJC1nnDi7OTh+O8H6sbdk3ZYlfNZ
iiA/a8fGwdxAbX6IowPcF7TL2nDjHkX3cDgRPaIL0qOOANvnXTG2z/dXMtEo
R9R2t9GQfAMrxnj4yO+NU5DoGdfYdE6R+nRmcledGVNQ+dwdZ6Mtd9ZR9ksW
64YuaNiGRZBSuwjNOSVl/Ta4ToSbeI1pD4ZVYGmRgjZKDZLAEKXuhJ4oZrg9
WGnea4VhLnCzAgw3nl5grseYdKp8syzWQ3l/IDkaTjsgwWPD3TNCfPaF94cg
kCkpcuNXfJrreHp4fU1OxSUW7bYp1ZdFYPb9ESRgxzzF7QDMd9ijnE4p7l9j
rup8iGhX1JqLdme/q2DeFIjmmFfbu9mVbTtX7gyS28UmsEUYJC9KPMQY7Rok
GZ6twXzkwAFOYHjhdhhgEMw5wu7D5oRXu3fRLfEsFRZo0LAUuZqlG4zxHH2C
j8WQ6EhlMQ8ihfHiZT1w9fcgjBAclAMfTEXnEoocRwZmxUujMTYx8/Z8T7DR
scAjMZGaFQDFpUrnkUduQ7QzJ+eQEXD0DZk8WQWAui7qcHvL8gkW3k/fMh+Y
UUDPoHFzpsLxWjS85ip9cxiMnnPR/dyXwZbKtlvmDTYIDj6h59atlMNlVwRa
rC74agdq0UEfiwLVOnr5NNip8NoIrSkWQPtqe0do9g/Fls0+3t5IJAYHJHc4
xoxtoqGmET3esdc9DO9hKbvO6iZGtedeRm1s4E1vz1L/n0no0XDcrrrV+p1a
H428nwzRIe2KEJ9G8pNJz2tYKMR2OR+S4VGfDA//kAwne8gQ5XyfQpy2ped9
ZYjGDsvDWyJwiWbBEW1zwO/rMnSHe4hgcs8imEyaALDdnYVF76ElxO1dVfm0
xs4D5g5KMu6T0PEfM3RHn19JQEKTu2oJR48uPATuU5W+ydKdkYtdo+7L/QUo
GgmGBQBiPIVCTmTuxLBfsegzgj1S7RUJ8/UW2dLME79tsEohCOqko20dockl
B4NgJS5niSEUVDH8hXc7YouBqtvn3Kl1uFsFTUnk+lsm8j595/QmRFFG4Sse
d0bW+PBuuNpNSuj0/KfKSXw+QjKlmf7KTL7izKSR4t3Skt5un91vb1PwZQTB
u2lKGB7dwPD9A6Uvg/VfYsg06QuZmFX98csfjJr6Rbhv/LTd8z87ivq4GIpY
eQ9hVL9OfSig+iuG+mJjqElv4n6nKOrp0zefJYbyNxz/iqC+3ggKZHj3+Gmr
02d34d35v5bYaYfVd4uc/mymf3lx02Ff1IRsuveYaVt0+0ZM3X7/0fHSHWsD
W/ESMvKeoqVtPfr0sVJ3xr/ipfutOd05XgrP175sP2fxpPM5CwALuvngOyid
b6n4o838bYwbv6RC4RGFRXyBvs55McFXQLaPZkucrP2ghLsx3B4uVvC4wE9s
aJXBwvkMwiN/A2unnV7weWE+nTEZSTyF1R0ROYvX9fEqtUm0H/ygGf1whMf+
8A42rLk5Z+M+rKUTPLdnJeJkRUtom5NoGyVxB38O8crYDrlng+fYB8YKr12M
p4+pvWv+esADb6+A4PCZl/FwcrdlYPudZYRfNCGDonN/ruMGSSKN9EkTNBeL
EteHBAl65r+lJCccYdJAtCJckFsN2RyLX0BAW0P9HJpoZc33mKbNh6ICznqe
8gH6Zr6HTdttUXAHvIfMeuiISHRq6PM27uT1Df3kHJVB0bcpXAeR8YY0+pQj
f1bMHZXEgZobohzu46NSxxo7O/YqGb09/+W1fPvTq2dnr/4eCTrvjUcbeYSQ
JXgxCRMo0Mjqv7s31OikKR71BVywDLBzrq+qLZZvnehbpaqmD2fIiJ7HFHv4
z251MeEON+OHJiTdA2VTXvgD/8QTuqXCtsfNxycagW3C1lkGWdRvCKPWXaD0
MnUFc2TcpR2KDvi7A13+iw58RyWEKZtFuvHZMjwcPXzuZ6KhD/CDZmuNUiVJ
MPvcZ04Q4JEXHF/LTukOKkdsOi/qxZKOtVMvMvfEdX/pmIfDW590/ZjCItE4
HG19/rTFCHfQ3WN4W/WwFd4w777bsTduEWEQwHTigvBbkCBkvPlCLxwH3dcr
fATrvvSW872PtyuNd207d5UBNXTO1eK7yIm9eyPFfcSCPZN1TfD4NblYOgYZ
+FVvlTuRJA2IQbElphy5FbbGkdX4QNAHG7ZurAbCdFmKO5bX8EXwU+eat4Pe
HUARcIIje4d4Iro5ytmBV3i293HnUpShayQxCAzvQBu8mNPEGygbNDRtg215
+Eu69yqMm2QxbWTxFQhjeryPMMYPR/clDfpkSPNlJSeG9kG/GCj84hfg/OnL
nlgWSwp4lxcV3aPAs898/czsGO3xzgcedhRH9MgKyLpBWPypk5bsoRSfR3cO
9xHXo3uTFjHUHw4HNjl5BU/+LIEdcEzu7x3jhR6+ckm3NlXnVHmvcMcfEO54
D+H25C4fKeAxnoreQyEnx59ExGFu3nn2cWKuCvCvWAYm0xnWy3AAzKNxsReG
j527RBnvk9bkoCFlfP/eX5i83rmZ4PtvpcwY8phUlf5YfzTnT3+59TT3if2H
JN087b0J98nCnbL0rXcgup98+VMuP/Sh/QtzO3vC/PDo3iwZMX/77oT9jFBv
bmLQjdiGAgyot5C+ffEDcPhV39D4CvA4ORw+3AeQk9HkXu3udj00KO19/fY2
WMxNxratWTJKPv9VvzsrxV5X/b4CyI8ne5ngh8dHH4l4/i850JZsrnnXNZWp
mfuPCeOHIXXqqrs/F8UK69ZuM1ucY516KN+V+NksLEdzs3d6pq8kfcIX//sO
nQ9G9/eRb3VcU7Xr1H3O0teK6f5YUsR150qs/zxws23tlYwv3ap8I/ArpCau
EfLWDx53BueN6MQk1NF/EtWXpdteBToGqnoRR6jQHxBF9J89efXkdtpJMfOC
W/I9b/+9cv720gP5JMaPhKY64bqyeH/CN8V18gOER6nVEV4z/OXZL9Dft9RD
8W9fN4NP2WMAAA==

-->

</rfc>

