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

Если вы когда-нибудь пытались построить стабильный VPN поверх реального Интернета, то знаете: ключевая проблема не в криптографии и даже не в пропускной способности канала. Проблема в том, как протокол ведет себя, когда сеть начинает «качать».

Мы много лет экспериментировали с OpenVPN, WireGuard и разными вариациями UDP-туннелей. В хорошей сети → работают все. В плохой сети → перестают работать почти все. Поэтому когда в экосистеме QUIC появился MASQUE, мы решили проверить: а можно ли собрать VPN, который действительно переносит нестабильные условия?

Оказалось, что можно. Ниже немного опыта и наблюдений, которые накопились в процессе разработки нашего экспериментального masque-vpn.


Почему MASQUE выглядит многообещающе

QUIC долгое время воспринимали как «протокол для браузеров»: быстрый старт, меньше задержек, меньше head-of-line blocking. Но со временем стало понятно, что QUIC — это скорее современный транспорт, который умеет жить в реальном мире: мигрирующие соединения, резкие просадки канала, переезды между Wi-Fi и LTE.

MASQUE вырос как логичное продолжение:

«Если мы уже передаем пол-Интернета по QUIC, почему бы не сделать поверх него нормальный IP-туннель?»

Так появился RFC 9484 (CONNECT-IP). И он оказался гораздо интереснее, чем ожидалось.


Что происходит, когда MASQUE попадает в нестабильную сеть

Мы специально создавали «плохие условия»: RTT скачет от 50 до 150 мс, джиттер до 30 мс, потери 2%. Типичный мобильный профиль.

Результаты:

  • OpenVPN в таких условиях легко «тонет» из-за TCP-over-TCP.

  • WireGuard держится лучше, но чувствителен к потере и не любит частые переключения канала.

  • MASQUE неожиданно стабилен.

Почему так:

  • QUIC datagrams не создают лавину ретраев.

  • Потери не приводят к блокировке всего потока.

  • Управляющий поток живет отдельно и не мешает передаче данных.

  • При смене канала соединение не рвется, QUIC продолжает «как ни в чем не бывало».

Когда мы включили свой FEC-модуль (мы сделали XOR-вариант и экспериментируем с Reed-Solomon), джиттер внутри туннеля упал почти до нуля. Это очень заметно в RDP, видеозвонках и стриминговых приложениях.

WireGuard все еще быстрее на идеальных каналах, тут спору нет. Но MASQUE оказался «живучее», а для многих задач именно это и важно.


Немного о том, как все устроено внутри

masque-vpn — это реализация CONNECT-IP поверх QUIC с поднятием TUN-интерфейса, обработкой капсул и передачей пакетов через datagrams. Все максимально прозрачно, без «магии».

Несколько любопытных моментов:

  • Capsules позволяют динамически менять IP и параметры туннеля без переподключения.

  • QUIC проще переносит потерю связи между разными интерфейсами.

  • Go удобен для прототипирования, но, конечно, user-space криптография ест CPU.

Сейчас мы больше сосредоточены на корректности и воспроизводимости, а не на экстремальной оптимизации. Но потенциал для оптимизации — огромный (XDP, eBPF, аппаратный offload и т.д.)


Где MASQUE оправдывает себя лучше всего

MASQUE и WireGuard не конкуренты, а инструменты для разных задач.

Есть сценарии, где MASQUE прямо «заходит»:

  • Мобильные пользователи, переключающие сети на ходу.

  • Филиалы и удаленные площадки с неоднородными каналами.

  • Корпоративная удаленка, где важна предсказуемость качества.

  • Среды, где HTTP/3 проходит стабильнее, чем «чистый UDP».

  • Приложения, чувствительные к очередям и джиттеру.

Если упростить:

  • WireGuard про скорость.

  • MASQUE про устойчивость.


Но и минусы есть, честно и без маркетинга

Было бы странно их не перечислить:

  • QUIC-туннель тяжелее по CPU, чем kernel-based WireGuard.

  • Архитектура MASQUE сложнее.

  • Пока что нужен наш клиент (нельзя просто включить в ОС).

  • Оптимизации «на железе», еще впереди.

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


Хотите попробовать?

Репозиторий полностью открыт:

https://github.com/twogc/masque-vpn

Есть базовые образы Docker, примеры конфигураций и минимальные клиенты.

Мы будем рады вашим находкам, идеям, вопросам и Pull Request’ам — это исследовательский проект, и чем больше людей его попробует, тем быстрее мы поймем, как этот стек ведет себя «в дикой природе».

Комментарии (1)


  1. aborouhin
    01.12.2025 17:40

    Очень интересно, но текущие реалии вынуждают задаться вопросом - а как там вообще сейчас дела с QUIC в РФ? Живой? Вроде, блокировали его ковровыми методами.