Статья от команды CloudBridge Research.
Тут можно ознакомиться с нашими исследованиями

Три недели назад мы рассказывали на Хабре о наших первых экспериментах с MASQUE VPN и о том, почему этот протокол показался нам перспективным для нестабильных сетей. Тогда у нас был рабочий прототип, который демонстрировал потенциал технологии.

Исходный код проекта открыт и доступен на GitHub:
github.com/cloudbridge-research/masque-vpn

В первой статье мы сознательно показывали сырой прототип. Это про то, что происходит, когда протокол начинают доводить до инженерного состояния.

Сегодня хотим поделиться тем, что получилось за эти три недели: полноценная реализация MASQUE CONNECT-IP с REST API, комплексным тестированием и документацией для исследователей. Проект превратился из экспериментального прототипа в образовательную платформу для изучения современных сетевых протоколов.


Что изменилось за три недели

Кастомная реализация протокола

Главное изменение, мы полностью переписали реализацию MASQUE CONNECT-IP. Вместо использования внешних библиотек создали собственную реализацию протокола, которая:

  • Реализация следует ключевым требованиям RFC 9484 (CONNECT-IP) и покрывает базовый сценарий IP-туннелирования поверх QUIC

  • Сфокусирована на исследовательских и образовательных задачах

  • Не имеет внешних зависимостей для MASQUE функциональности

  • Позволяет легко экспериментировать с протоколом

// Пример из нашей реализации (упрощенный для демонстрации)
type MASQUEClient struct {
    quicConn quic.Connection
    logger   *zap.Logger
}

func (c *MASQUEClient) SendPacket(packet []byte) error {
    stream, err := c.quicConn.OpenStreamSync(context.Background())
    if err != nil {
        return fmt.Errorf("failed to open QUIC stream: %w", err)
    }
    defer stream.Close()
    
    // NOTE: For educational clarity each packet is sent via a new stream.
    // Production-grade implementations would reuse streams or use datagrams.
    _, err = stream.Write(packet)
    return err
}

Модульная архитектура сервера

Сервер теперь разделен на специализированные компоненты:

  • masque_handler.go — обработка MASQUE CONNECT-IP запросов

  • api_server.go — REST API для управления и мониторинга

  • packet_processor.go — обработка пакетов TUN устройства

  • metrics.go — детальные метрики Prometheus

  • tls_config.go — конфигурация TLS

Это позволяет легко понимать код и модифицировать отдельные части системы.

Архитектура потока данных

Архитектура потока данных
Архитектура потока данных

Ключевые особенности архитектуры:

  • QUIC streams для надежной передачи управляющих сообщений

  • QUIC datagrams для эффективной передачи IP пакетов

  • О��циональные TUN устройства для полной интеграции с ОС

  • Модульная обработка на каждом уровне

REST API для управления

Добавили полноценный REST API, который работает параллельно с MASQUE сервером:

# Проверка состояния сервера
curl http://localhost:8080/api/v1/status

# Список подключенных клиентов
curl http://localhost:8080/api/v1/clients

# Метрики Prometheus
curl http://localhost:8080/metrics

API предоставляет:

  • Информацию о состоянии сервера

  • Список активных клиентов

  • Статистику соединений

  • Логи подключений

  • Метрики производительности


Тестирование в реальных условиях

Комплексное тестирование

Создали полноценную систему тестирования:

  • Unit тесты для всех компонентов

  • Integration тесты для проверки взаимодействия

  • Load тесты для проверки производительности

  • Функциональный тест протокола MASQUE

# Запуск всех тестов
./scripts/test-local.sh

# Функциональный тест протокола
go run test_masque_connection.go

Результаты тестирования

Функциональный тест показывает, что базовая функциональность MASQUE работает стабильно:

=== MASQUE Connection Test ===
✓ Server MASQUE connection created
✓ Test packet sent
✓ Packet read successfully: 10 bytes
✓ Packet size matches
✓ Packet content matches
✓ Connection closed
✓ Write after close returns error (expected)
✓ Read after close returns error (expected)

=== MASQUE Connection Test Complete ===
Basic MASQUE connection functionality is working!

Работа без TUN устройств

Важное улучшение, система может работать без TUN устройств для тестирования протокола. Это упрощает разработку и позволяет тестировать MASQUE функциональность на любой системе без административных прав.


Мониторинг и наблюдаемость

Детальные метрики

Добавили комплексную систему метрик Prometheus:

  • Активные соединения

  • Время обработки пакетов

  • Статистика QUIC streams

  • Использование IP пула

  • Ошибки по типам

# Активные соединения
masque_vpn_active_connections

# Латентность обработки пакетов (95-й перцентиль)
histogram_quantile(0.95, rate(masque_vpn_packet_processing_duration_seconds_bucket[5m]))

# Использование IP пула
(masque_vpn_ip_pool_used / masque_vpn_ip_pool_total) * 100

Структурированное логирование

Перешли на zap для структурированного логирования с различными уровнями детализации:

logger.Info("QUIC connection established",
    zap.String("remote_addr", conn.RemoteAddr().String()),
    zap.String("local_addr", conn.LocalAddr().String()),
)

Образовательная направленность

Документация для исследователей

Создали подробную документацию, ориентированную на студентов и исследователей:

  • Руководство студента с лабораторными работами

  • Архитектурная документация с описанием всех компонентов

  • API документация с примерами использования

  • Руководство по мониторингу с настройкой Grafana

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

Разработали серию лабораторных работ для изучения протокола:

  1. Базовое развертывание — сборка и запуск системы

  2. Анализ производительности — измерение метрик VPN

  3. Глубокий анализ протокола — изучение реализации MASQUE

  4. Тестирование в различных условиях — эмуляция сетевых проблем

Исследовательские проекты

Предложили темы для дипломных работ и исследований:

  • Оптимизация производительности MASQUE

  • Анализ поведения под нагрузкой

  • Исследования безопасности

  • Системы мониторинга и наблюдаемости


Практические результаты

Стабильность соединений

За время тестирования подтвердились наши первоначальные наблюдения о стабильности MASQUE в нестабильных сетях. Протокол действительно лучше переносит:

  • Смену сетевых интерфейсов

  • Потери пакетов

  • Изменения RTT

  • Временные разрывы соединения

Производительность

Измерили характеристики производительности:

  • Время установки QUIC соединения: ~40ms

  • Время инициализации MASQUE сессии: ~3ms

  • Обработка пакетов в user-space без значительных задержек

  • Поддержка мно��ественных одновременных соединений

Совместимость

Система работает на:

  • Windows (с PowerShell скриптами для сертификатов)

  • Linux (с bash скриптами)

  • macOS (с учетом особенностей TUN устройств)


Что дальше

Планы развития

  1. Эксперименты с ускорением обработки пакетов — hybrid user/kernel-space подходы (eBPF, XDP)

  2. IPv6 поддержка — полная поддержка dual-stack

  3. Расширенные метрики — более детальная аналитика производительности

  4. Исследования оптимизации QUIC — для специфики туннелирования

Исследовательские направления

Проект открывает возможности для исследований в области:

  • Сравнительного анализа VPN протоколов

  • Оптимизации QUIC для туннелирования

  • Анализа поведения в мобильных сетях

  • Разработки новых алгоритмов управления перегрузкой


Попробуйте сами

Проект полностью открыт и готов для экспериментов:

https://github.com/cloudbridge-research/masque-vpn

Быстрый старт

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

# Сборка
cd vpn_server && go build -o vpn-server .
cd ../vpn_client && go build -o vpn-client .

# Генерация сертификатов
cd cert && ./generate-test-certs.sh

# Запуск сервера (локальное тестирование)
cd ../vpn_server
./vpn-server -c config.server.local.toml

# Тестирование API
curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/api/v1/status

# Функциональный тест
go run test_masque_connection.go

Для исследователей

Мы сознательно не делаем "продукт". Мы делаем систему, которую можно разбирать и ломать.

Если вы работаете в области сетевых протоколов или изучаете VPN технологии:

  • Используйте проект как основу для исследований

  • Экспериментируйте с различными сетевыми условиями

  • Анализируйте метрики производительности

  • Сравнивайте с другими VPN решениями


Заключение

За время с момента первой статьи (всего три недели!) проект превратился из экспериментального прототипа в полноценную образовательную платформу. MASQUE VPN показал себя как стабильное решение для нестабильных сетей, а наша реализация стала удобным инструментом для изучения современных сетевых протоколов.

MASQUE интересен не как замена OpenVPN или WireGuard, а как индикатор того, куда движется транспортный уровень интернета. Это возможность изучить, как современные протоколы решают старые проблемы сетевой связности.

Мы продолжаем развивать проект и будем рады вашим экспериментам, вопросам и предложениям. Особенно интересны результаты тестирования в различных сетевых условиях и сравнения с другими VPN решениями.

Лицензия: MIT
Copyright: CloudBridge Research / 2GC Network Protocol Suite & Original Authors (iselt/masque-vpn)


Вопрос для исследователей

Нас особенно интересует поведение MASQUE в мобильных сетях. Если у вас есть возможность протестировать наш стек в условиях:

  • Переключения между Wi-Fi и LTE

  • Роуминга между базовыми станциями

  • Изменения качества сигнала в движении

  • Работы в метро или других сложных радиоусловиях

Поделитесь результатами! Особенно интересны:

  • Время восстановления соединения при смене сети

  • Поведение метрик latency и jitter

  • Сравнение с WireGuard в тех же условиях

Это поможет всему сообществу лучше понять, где MASQUE действительно выигрывает, а где пока проигрывает традиционным решениям.


Если у вас есть вопросы или предложения по развитию проекта, пишите в Issues на GitHub или в комментариях к статье.