<?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-00" 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="2025" month="October" 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"/>)
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 7.9 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 "low and up" 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.15 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 "black hole" 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="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 3.6 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 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 11 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 120ms. 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 75ms,
and the maximum delay is set to 360ms. 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 634?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO acknowledge.</t>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

