Skip to content

cloudbridge-research/quic-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudBridge Research

CloudBridge Research

QUIC Test

Professional QUIC protocol testing platform for network engineers, researchers, and educators.

Build Status Go Report Card License Docker Pulls Go Version

Prometheus Grafana Docker QUIC

English | Русский

Что это?

quic-test — это профессиональная платформа для тестирования и анализа производительности протокола QUIC. Разработана для образовательных и исследовательских целей, с акцентом на воспроизводимость результатов и детальную аналитику.

graph TD
    A[QUIC Client] --> B[QUIC Server]
    B --> C[Prometheus]
    C --> D[Grafana]
    E[Dashboard] --> F[Container Manager]
    F --> A
    F --> B
Loading

Основные возможности:

Компонент Описание Статус
Web Dashboard Web GUI интерфейс для менее технических пользователей Готово
Metrics Измерение latency, jitter, throughput для QUIC и TCP Готово
Network Emulation Эмуляция различных сетевых условий (потери, задержки, bandwidth) Готово
TUI Visualization Real-time TUI визуализация Готово
Prometheus Export Экспорт метрик в Prometheus Готово
WebTransport Testing WebTransport и HTTP/3 load testing Готово
FEC SIMD Forward Error Correction с SIMD оптимизацией Экспериментально
PQC Simulation Post-Quantum Cryptography симуляция Экспериментально
BBRv3 BBRv3 congestion control с dual-scale bandwidth estimation Экспериментально

Quick Start

Docker Compose (рекомендуется)

Docker

Самый простой способ запустить полную платформу:

# Клонирование репозитория
git clone https://github.com/cloudbridge-research/quic-test
cd quic-test

# Запуск всех сервисов
docker-compose up -d

# Открыть веб-дашборд
open http://localhost:9990

Доступные сервисы:

Сервис URL Описание
Dashboard localhost:9990 Веб-интерфейс управления тестами
Prometheus localhost:9091 Сбор и хранение метрик
Grafana localhost:3000 Визуализация метрик (admin/admin)
Jaeger localhost:16686 Трейсинг и мониторинг
QUIC Server localhost:9000 QUIC сервер для тестирования

GUI Interface (для начинающих)

# Сборка GUI
make build

# Запуск GUI сервера
make gui
# или
./quic-gui --addr=:8080 --api-addr=:8081

# Открыть браузер
open http://localhost:8080

GUI возможности:

  • Создание тестов через веб-форму
  • Real-time мониторинг активных тестов
  • История тестов с детальными метриками
  • Остановка тестов одним кликом
  • Готовые пресеты для различных сценариев

Отдельные Docker контейнеры

# Запуск QUIC сервера
docker-compose up -d quic-server

# Запуск клиентского теста
docker-compose up quic-client

# Запуск только дашборда
docker-compose up -d dashboard

# Просмотр логов
docker-compose logs -f quic-server

Command Line Interface

# Сборка из исходников
git clone https://github.com/cloudbridge-research/quic-test
cd quic-test

# Сборка FEC библиотеки (опционально, для лучшей производительности)
cd internal/fec && make && cd ../..

# Сборка всех компонентов
make build

# Базовый тест
./quic-test --mode=client --server=demo.quic.tech:4433

Основные режимы

# Простой тест latency/throughput
./quic-test --mode=client --server=localhost:4433 --duration=30s

# Сравнение QUIC vs TCP
./quic-test --mode=client --compare-tcp --duration=60s

# Эмуляция мобильной сети
./quic-test --profile=mobile --duration=30s

# TUI мониторинг
./cmd/tui/tui --server=localhost:4433

# WebTransport тестирование
make test-webtransport

# HTTP/3 load testing
make test-http3

Архитектура

Architecture

Контейнерная архитектура

graph TB
    subgraph "Docker Compose"
        A[Dashboard<br/>:9990] --> B[QUIC Server<br/>:9000]
        A --> C[QUIC Client<br/>:2112]
        B --> D[Prometheus<br/>:9091]
        C --> D
        D --> E[Grafana<br/>:3000]
        F[Jaeger<br/>:16686] --> A
    end
    
    subgraph "External"
        G[Browser] --> A
        H[Metrics API] --> D
    end
Loading

Структура проекта

quic-test/
├── Docker Infrastructure
│   ├── docker-compose.yml         # Оркестрация сервисов
│   ├── Dockerfile.server          # QUIC сервер контейнер
│   ├── Dockerfile.client          # QUIC клиент контейнер
│   └── Dockerfile.dashboard       # Веб-дашборд контейнер
├── Core Applications
│   ├── cmd/
│   │   ├── gui/                   # Web GUI интерфейс
│   │   ├── tui/                   # Terminal UI мониторинг
│   │   ├── dashboard/             # Веб-дашборд
│   │   ├── quic-client/           # Standalone QUIC клиент
│   │   ├── quic-server/           # Standalone QUIC сервер
│   │   └── experimental/          # Экспериментальные функции
├── Internal Libraries
│   ├── internal/
│   │   ├── dashboard/             # Dashboard API и управление
│   │   ├── container/             # Docker контейнер менеджер
│   │   ├── quic/                  # QUIC логика
│   │   ├── fec/                   # Forward Error Correction (C++/AVX2)
│   │   ├── congestion/            # BBRv2/BBRv3 алгоритмы
│   │   ├── webtransport/          # WebTransport поддержка
│   │   ├── http3/                 # HTTP/3 load testing
│   │   ├── pqc/                   # Post-Quantum Crypto симуляция
│   │   ├── metrics/               # Prometheus метрики
│   │   └── ca/                    # Certificate Authority
├── Web Interface
│   ├── web/
│   │   ├── templates/             # HTML шаблоны
│   │   └── static/                # CSS/JS ресурсы
├── Monitoring
│   ├── prometheus/                # Prometheus конфигурация
│   ├── grafana/                   # Grafana дашборды
│   └── certs/                     # TLS сертификаты (CA)
└── Documentation
    └── docs/                      # Документация проекта

Компоненты системы

Компонент Технология Назначение Порт
Dashboard Go + HTML/JS Веб-интерфейс управления 9990
QUIC Server quic-go QUIC протокол сервер 9000
QUIC Client quic-go QUIC протокол клиент 2112
Prometheus Prometheus Сбор метрик 9091
Grafana Grafana Визуализация данных 3000
Jaeger Jaeger Распределенный трейсинг 16686

Возможности

Стабильные функции

Функция Статус Описание
Web GUI Готово Удобный веб-интерфейс для создания и мониторинга тестов
QUIC Protocol Готово QUIC client/server на базе quic-go с расширениями
Metrics Готово Измерение RTT, jitter, throughput — детальная аналитика производительности
Network Profiles Готово Эмуляция сетевых профилей — mobile, satellite, fiber, WiFi
TUI Готово TUI визуализация — real-time мониторинг в терминале
Prometheus Готово Prometheus экспорт — интеграция с системами мониторинга
BBRv2 Готово BBRv2 congestion control — современный алгоритм управления перегрузкой
Docker Готово Контейнерная архитектура с docker-compose
Certificate Authority Готово Встроенный CA для автоматической генерации TLS сертификатов

Экспериментальные функции

Функция Статус Описание
BBRv3 Экспериментально BBRv3 congestion control с dual-scale bandwidth estimation и 2% loss threshold
FEC Экспериментально Forward Error Correction с AVX2/SIMD оптимизацией
WebTransport Экспериментально WebTransport support — тестирование WebTransport соединений
HTTP/3 Экспериментально HTTP/3 load testing — нагрузочное тестирование HTTP/3
PQC Экспериментально Post-Quantum Cryptography — симуляция PQC алгоритмов (ML-KEM, Dilithium)
MASQUE Экспериментально MASQUE VPN тестирование — тесты VPN через QUIC
ICE/STUN/TURN Экспериментально ICE/STUN/TURN тесты — тестирование NAT traversal

В планах (Roadmap)

Функция Статус Приоритет
AI Anomaly Detection Планируется Высокий
Multi-Cloud Deployment Планируется Средний
Extended AI Integration Планируется Средний
QUIC v2 Support Планируется Низкий

Полный roadmap: docs/roadmap.md

Документация

Documentation

Категория Документ Описание
Education Отчет о сотрудничестве с МЭИ Показатели проекта и программа стажировок
Путеводитель для студентов Терминология, TCP vs QUIC, RFC документы
Лабораторные работы Готовые лабораторные работы для университетов
Technical API Reference Полная справка по REST API
CLI Reference Справка по командам командной строки
Architecture Детальная архитектура системы
Integration AI Integration Интеграция с AI Routing Lab
Case Studies Результаты тестов с методикой
TUI User Guide Руководство по TUI интерфейсу
Security Certificate Authority Setup Настройка встроенного CA и TLS сертификатов
Roadmap Планы развития проекта

GUI Интерфейс

Web GUI предоставляет удобный интерфейс для пользователей без глубоких технических знаний:

Основные возможности GUI:

  • Dashboard — обзор активных тестов и системного статуса
  • New Test — создание тестов через веб-форму с валидацией
  • Test History — просмотр всех выполненных тестов
  • Test Details — детальный просмотр метрик и логов теста
  • Real-time Updates — автоматическое обновление статуса тестов

API Endpoints:

  • POST /api/tests — создание нового теста
  • GET /api/tests — получение списка тестов
  • GET /api/tests/{id} — получение деталей теста
  • DELETE /api/tests/{id} — остановка теста
  • GET /api/metrics/current — текущие агрегированные метрики
  • GET /api/metrics/prometheus — метрики в формате Prometheus

Подробнее: docs/API_REFERENCE.md

Для университетов

Проект разработан с акцентом на образование и подготовку кадров. Включает готовые лабораторные работы, образовательные материалы и программу стажировок.

Образовательные ресурсы:

  • Путеводитель для студентов — терминология, сравнение TCP vs QUIC, RFC документы
  • Практические лабораторные работы с пошаговыми инструкциями
  • Готовые сценарии тестирования для различных сетевых условий

Лабораторные работы:

  • ЛР #1: Основы QUIC — handshake, 0-RTT, миграция соединений
  • ЛР #2: Congestion Control — сравнение BBRv2 vs BBRv3
  • ЛР #3: Производительность — QUIC vs TCP в различных условиях
  • ЛР #4: Forward Error Correction — влияние FEC на производительность
  • ЛР #5: Post-Quantum Cryptography — тестирование PQC алгоритмов

Программа стажировок CloudBridge Research

Подробнее: docs/education.md | Отчет о сотрудничестве

Интеграция с AI Routing Lab

quic-test экспортирует метрики в Prometheus, которые используются в AI Routing Lab для обучения моделей предсказания оптимальных маршрутов.

Пример:

# Запуск с Prometheus экспортом
./quic-test --mode=server --prometheus-port=9090

# AI Routing Lab собирает метрики
curl http://localhost:9090/metrics

Подробнее: docs/ai-routing-integration.md

Разработка

Development

Быстрый старт для разработчиков

# Клонирование и сборка
git clone https://github.com/cloudbridge-research/quic-test
cd quic-test
make build

# Запуск тестов
make test

# Полный набор тестов
make all

# Smoke test
make smoke

Docker разработка

# Сборка Docker образов
docker-compose build

# Запуск в режиме разработки
docker-compose up -d

# Просмотр логов
docker-compose logs -f

# Остановка всех сервисов
docker-compose down

Доступные Make команды

Команда Описание Время выполнения
make build Сборка всех бинарных файлов ~2 мин
make gui Запуск GUI сервера Мгновенно
make test Базовые функциональные тесты ~30 сек
make bench-rtt Бенчмарки RTT ~5 мин
make bench-loss Бенчмарки потерь пакетов ~10 мин
make soak-2h 2-часовой стресс-тест 2 часа
make regression Полный набор регрессионных тестов ~30 мин
make performance Тесты производительности ~20 мин

Качество кода

# Линтинг
golangci-lint run

# Статус сборки
make status

# Проверка зависимостей
go mod verify

# Обновление зависимостей
go mod tidy

Лицензия

License: MIT

MIT License. См. LICENSE.

Контакты

About

A simple tool for testing QUIC protocol performance and stability. Includes both client and server, collects metrics, and generates reports.

Resources

License

Stars

Watchers

Forks

Contributors