<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Cloudbridge Research</title>
    <description>The latest articles on DEV Community by Cloudbridge Research (@cloudbridge).</description>
    <link>https://dev.to/cloudbridge</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F12052%2Fe23ec33e-c01b-4573-a68a-e99b50f8c118.png</url>
      <title>DEV Community: Cloudbridge Research</title>
      <link>https://dev.to/cloudbridge</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cloudbridge"/>
    <language>en</language>
    <item>
      <title>Quic-test: an open tool for testing QUIC, BBRv3, and FEC under real-world network conditions</title>
      <dc:creator>Maksim Lanies</dc:creator>
      <pubDate>Thu, 11 Dec 2025 19:05:53 +0000</pubDate>
      <link>https://dev.to/cloudbridge/quic-test-an-open-tool-for-testing-quic-bbrv3-and-fec-under-real-world-network-conditions-2791</link>
      <guid>https://dev.to/cloudbridge/quic-test-an-open-tool-for-testing-quic-bbrv3-and-fec-under-real-world-network-conditions-2791</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was prepared as part of the CloudBridge Research project focused on optimizing network protocols (BBRv3, MASQUE, FEC, QUIC).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; &lt;a href="https://github.com/cloudbridge-research/quic-test" rel="noopener noreferrer"&gt;github.com/cloudbridge-research/quic-test&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/user-attachments/assets/b3124696-1ab8-48e3-8b04-1cec3881c3a4" rel="noopener noreferrer"&gt;Video demo of quic-test&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdial92u6kqjijvk9hwwn.jpg" alt="Screenshot of interface" width="800" height="543"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Why we built this
&lt;/h2&gt;

&lt;p&gt;When we began studying the behavior of QUIC, BBRv3, and Forward Error Correction in real networks — from Wi-Fi to mobile networks and regional backbones — we ran into a simple problem: there were almost &lt;strong&gt;no tools capable of accurately reproducing real-world network conditions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can use iperf3, but it’s about TCP and basic UDP. You can take standalone QUIC libraries, but they lack visualization and load generation. You can write custom simulators, but they do not reflect real channel behavior. Want to test how BBRv3 performs between Moscow and Novosibirsk? Please: find three servers across different datacenters, configure netem, manually collect metrics and &lt;em&gt;hope&lt;/em&gt; results will be reproducible.&lt;/p&gt;

&lt;p&gt;There was no comprehensive QUIC tester with charts, channel profiles, FEC, BBRv3 support, TUI, and Prometheus metrics.&lt;br&gt;
So we built &lt;strong&gt;quic-test&lt;/strong&gt; — an open tool we use inside CloudBridge Research for all experiments. And now we share it with the community, universities, and engineers.&lt;/p&gt;


&lt;h2&gt;
  
  
  What is quic-test
&lt;/h2&gt;

&lt;p&gt;A fully open laboratory environment for analyzing the behavior of QUIC, BBRv3, and FEC in real networks.&lt;br&gt;
Not a simulator, but a real engineering instrument — all our research is based on measurements collected with it.&lt;/p&gt;
&lt;h3&gt;
  
  
  Who quic-test is for
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Network engineers&lt;/strong&gt; — compare TCP/QUIC/BBRv3 in your own networks and understand where QUIC provides real benefits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SRE and DevOps teams&lt;/strong&gt; — test service behavior under packet loss and high RTT, prepare for production issues before they appear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Educators and students&lt;/strong&gt; — run modern labs on transport protocols with real metrics and visualization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Researchers&lt;/strong&gt; — gather datasets for ML routing models, publish reproducible results.&lt;/p&gt;
&lt;h3&gt;
  
  
  Key capabilities
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Protocols:&lt;/strong&gt; QUIC (RFC 9000), HTTP/3, 0-RTT resumption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Congestion Control:&lt;/strong&gt; BBRv2 (stable), BBRv3 (experimental), CUBIC, Reno.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forward Error Correction:&lt;/strong&gt; XOR-FEC (working), RS-FEC (in development).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network profiles:&lt;/strong&gt; mobile (4G/LTE), Wi-Fi, lossy (3–5% loss), high-latency (regional routes).&lt;br&gt;
All profiles are based on real measurements from our CloudBridge Edge PoPs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metrics:&lt;/strong&gt; Prometheus, Grafana, TUI visualization (&lt;strong&gt;quic-bottom&lt;/strong&gt; in Rust).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comparison:&lt;/strong&gt; TCP vs QUIC under identical conditions.&lt;/p&gt;


&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Docker
&lt;/h3&gt;

&lt;p&gt;The simplest way to start is with ready Docker images:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run client (performance test)&lt;/span&gt;
docker run mlanies/quic-test:latest &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="nt"&gt;--server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;demo.quic.tech:4433

&lt;span class="c"&gt;# Run server&lt;/span&gt;
docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 4433:4433/udp mlanies/quic-test:latest &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Build from source
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/twogc/quic-test
&lt;span class="nb"&gt;cd &lt;/span&gt;quic-test

&lt;span class="c"&gt;# Build FEC library (requires clang)&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;internal/fec &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; make &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ../..

&lt;span class="c"&gt;# Build main tool (requires Go 1.21+)&lt;/span&gt;
go build &lt;span class="nt"&gt;-o&lt;/span&gt; quic-test cmd/quic-test/main.go

&lt;span class="c"&gt;# Run&lt;/span&gt;
./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="nt"&gt;--server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;demo.quic.tech:4433
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  First test: QUIC vs TCP
&lt;/h2&gt;

&lt;p&gt;Server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;server &lt;span class="nt"&gt;--listen&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;:4433
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="nt"&gt;--server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;127.0.0.1:4433 &lt;span class="nt"&gt;--duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;QUIC vs TCP comparison:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="nt"&gt;--server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;127.0.0.1:4433 &lt;span class="nt"&gt;--compare-tcp&lt;/span&gt; &lt;span class="nt"&gt;--duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TUI visualization:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;quic-bottom &lt;span class="nt"&gt;--server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;127.0.0.1:4433
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The results include RTT, jitter, throughput, retransmissions, packet loss, FEC recovery, and fairness under parallel tests.&lt;br&gt;
These are the exact metrics we used when achieving jitter &amp;lt;1 ms on PoP↔PoP.&lt;/p&gt;


&lt;h2&gt;
  
  
  Real network profiles
&lt;/h2&gt;

&lt;p&gt;Profiles are based on actual measurements from CloudBridge Edge PoPs (Moscow, Frankfurt, Amsterdam).&lt;/p&gt;
&lt;h3&gt;
  
  
  Mobile (4G/LTE)
&lt;/h3&gt;

&lt;p&gt;RTT 50–150 ms (avg ~80), throughput 5–50 Mbps (avg ~20), 0.1–2% loss, jitter 10–30 ms.&lt;br&gt;
On this profile we tested FEC and achieved ~+10% goodput at 5% loss.&lt;/p&gt;
&lt;h3&gt;
  
  
  Wi-Fi
&lt;/h3&gt;

&lt;p&gt;Burst losses and micro-drop behavior typical for office/home Wi-Fi.&lt;/p&gt;
&lt;h3&gt;
  
  
  Lossy
&lt;/h3&gt;

&lt;p&gt;3–5% stable loss — ideal for testing FEC recovery efficiency.&lt;/p&gt;
&lt;h3&gt;
  
  
  High-latency
&lt;/h3&gt;

&lt;p&gt;RTT 50–150 ms — typical interregional RU↔EU routes that we tested.&lt;/p&gt;

&lt;p&gt;Usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="nt"&gt;--profile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mobile &lt;span class="nt"&gt;--compare-tcp&lt;/span&gt; &lt;span class="nt"&gt;--duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Custom profiles
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="nt"&gt;--profile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;custom &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--rtt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;100ms &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--bandwidth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10mbps &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--loss&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1% &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--jitter&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;20ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Metrics &amp;amp; Grafana integration
&lt;/h2&gt;

&lt;p&gt;Server with Prometheus:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;server &lt;span class="nt"&gt;--prometheus-port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;9090
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Available metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;quic_rtt_ms&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quic_jitter_ms&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quic_loss_total&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fec_recovered&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tcp_goodput_mbps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quic_goodput_mbps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bbrv3_bandwidth_est&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;quic_datagram_rate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;connection_drops&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;queue_delay_ms&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We use these metrics in Grafana and in &lt;a href="https://github.com/twogc/ai-routing-lab" rel="noopener noreferrer"&gt;AI Routing Lab&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Research examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Case 1: Mobile profile (5% loss)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Baseline QUIC&lt;/th&gt;
&lt;th&gt;QUIC + FEC 10%&lt;/th&gt;
&lt;th&gt;Gain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Goodput&lt;/td&gt;
&lt;td&gt;3.628 Mbps&lt;/td&gt;
&lt;td&gt;3.991 Mbps&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+10%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jitter&lt;/td&gt;
&lt;td&gt;0.72 ms&lt;/td&gt;
&lt;td&gt;0.72 ms&lt;/td&gt;
&lt;td&gt;stable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTT P50&lt;/td&gt;
&lt;td&gt;51.25 ms&lt;/td&gt;
&lt;td&gt;51.25 ms&lt;/td&gt;
&lt;td&gt;stable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;TCP CUBIC shows 4–6× degradation here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Case 2: VPN tunnels with 10% loss
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;TCP&lt;/th&gt;
&lt;th&gt;QUIC&lt;/th&gt;
&lt;th&gt;QUIC + FEC 15%&lt;/th&gt;
&lt;th&gt;Gain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Throughput&lt;/td&gt;
&lt;td&gt;25 Mbps&lt;/td&gt;
&lt;td&gt;45 Mbps&lt;/td&gt;
&lt;td&gt;68 Mbps&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+172%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retransmissions&lt;/td&gt;
&lt;td&gt;18,500&lt;/td&gt;
&lt;td&gt;12,200&lt;/td&gt;
&lt;td&gt;3,800&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-79%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P99 RTT&lt;/td&gt;
&lt;td&gt;450 ms&lt;/td&gt;
&lt;td&gt;320 ms&lt;/td&gt;
&lt;td&gt;210 ms&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-53%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Other results
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PoP↔PoP (Moscow—Frankfurt—Amsterdam): jitter &amp;lt;1 ms, connection time 9.20 ms&lt;/li&gt;
&lt;li&gt;BBRv2 vs BBRv3 on satellite-like profiles: +16% throughput&lt;/li&gt;
&lt;li&gt;Production profile: 9.258 Mbps goodput at 30 connections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More in &lt;code&gt;docs/reports/&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Usage in universities
&lt;/h2&gt;

&lt;p&gt;quic-test was originally designed as a teaching laboratory environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Available lab works
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Lab #1: QUIC basics&lt;/strong&gt; — RTT, jitter, handshake, 0-RTT, connection migration.&lt;br&gt;
&lt;strong&gt;Lab #2: TCP vs QUIC&lt;/strong&gt; — losses, HOL blocking, performance.&lt;br&gt;
&lt;strong&gt;Lab #3: Losses &amp;amp; FEC&lt;/strong&gt; — redundancy trade-offs.&lt;br&gt;
&lt;strong&gt;Lab #4: BBRv3 vs CUBIC&lt;/strong&gt; — congestion control comparison.&lt;br&gt;
&lt;strong&gt;Lab #5: NAT traversal&lt;/strong&gt; — ICE/STUN/TURN.&lt;br&gt;
&lt;strong&gt;Lab #6: HTTP/3 performance&lt;/strong&gt; — multiplexing vs HOL-blocked HTTP/2.&lt;/p&gt;

&lt;p&gt;Materials are available in &lt;code&gt;docs/labs/&lt;/code&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Detailed scheme in &lt;code&gt;docs/ARCHITECTURE.md&lt;/code&gt;. Summary:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go core&lt;/strong&gt; — transport, QUIC, measurements (quic-go v0.40, BBRv2 and experimental BBRv3).&lt;br&gt;
&lt;strong&gt;Rust TUI&lt;/strong&gt; — &lt;em&gt;quic-bottom&lt;/em&gt; real-time visualization.&lt;br&gt;
&lt;strong&gt;C++ FEC module&lt;/strong&gt; — AVX2 SIMD optimized, stable XOR-FEC, experimental RS-FEC.&lt;br&gt;
&lt;strong&gt;Metrics&lt;/strong&gt; — Prometheus, HDR histograms.&lt;br&gt;
&lt;strong&gt;Network emulation&lt;/strong&gt; — token bucket, delay queue, random drop.&lt;/p&gt;


&lt;h2&gt;
  
  
  Project status
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stable&lt;/strong&gt; — QUIC client/server, TCP vs QUIC comparison, profiles, Prometheus, TUI.&lt;br&gt;
&lt;strong&gt;Experimental&lt;/strong&gt; — BBRv3, RS-FEC, MASQUE CONNECT-IP, TCP-over-QUIC.&lt;br&gt;
&lt;strong&gt;Planned&lt;/strong&gt; — automatic plotting, eBPF latency inspector, mini-PoP container.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why we opened the project
&lt;/h2&gt;

&lt;p&gt;CloudBridge Research is an independent research center (ANO "Center for Network Technology Research and Development", founded in 2025).&lt;br&gt;
Our goal is to create an open stack of tools for engineers and universities.&lt;br&gt;
We believe that open research accelerates technological progress and makes it accessible to everyone.&lt;/p&gt;


&lt;h2&gt;
  
  
  Related projects
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/twogc/ai-routing-lab" rel="noopener noreferrer"&gt;AI Routing Lab&lt;/a&gt;&lt;/strong&gt; — uses quic-test metrics to train delay prediction models (&amp;gt;92% accuracy target).&lt;br&gt;
&lt;strong&gt;&lt;a href="https://github.com/twogc/masque-vpn" rel="noopener noreferrer"&gt;masque-vpn&lt;/a&gt;&lt;/strong&gt; — QUIC/MASQUE VPN load-tested with quic-test, including high-loss scenarios.&lt;/p&gt;


&lt;h2&gt;
  
  
  How to reproduce our results
&lt;/h2&gt;

&lt;p&gt;All configs and commands are in the repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production profile (0.1% loss, 20 ms RTT):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;server &lt;span class="nt"&gt;--listen&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;:4433 &lt;span class="nt"&gt;--prometheus-port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;9090

./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;server-ip&amp;gt;:4433 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--connections&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60s &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--congestion&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bbrv3 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--profile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;custom &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--rtt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;20ms &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--loss&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.1%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Mobile profile (5% loss) with FEC:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;server &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--listen&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;:4433 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--fec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--fec-redundancy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.10

./quic-test &lt;span class="nt"&gt;--mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;client &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--server&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;server-ip&amp;gt;:4433 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--profile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mobile &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--fec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--fec-redundancy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.10 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--duration&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other scenarios are described in &lt;code&gt;scripts/&lt;/code&gt; and &lt;code&gt;docs/reports/&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Contributions &amp;amp; feedback
&lt;/h2&gt;

&lt;p&gt;We welcome issues, PRs, test reports, feature proposals, and integrations into university courses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/cloudbridge-research/quic-test" rel="noopener noreferrer"&gt;https://github.com/cloudbridge-research/quic-test&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Email:&lt;/strong&gt; &lt;a href="mailto:info@cloudbridge-research.ru"&gt;info@cloudbridge-research.ru&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Blog:&lt;/strong&gt; &lt;a href="https://cloudbridge-research.ru" rel="noopener noreferrer"&gt;https://cloudbridge-research.ru&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If you need to honestly evaluate how QUIC, BBRv3, and FEC behave in real networks — from Wi-Fi to mobile to regional backbones — try &lt;strong&gt;quic-test&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;All results are reproducible, all tools are open, and this is a living engineering project that evolves with the community.&lt;/p&gt;

&lt;p&gt;Try it, reproduce our findings, share your results — together we make networks better.&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>testing</category>
      <category>opensource</category>
      <category>networking</category>
    </item>
  </channel>
</rss>
