Блог Clearway

Как считать трафик и косты CDN для VPN-сервиса

Коротко

Косты CDN для VPN складываются из двух частей: оплаты исходящего трафика (egress) и оплаты за количество запросов к edge. Сырой гигабайт по прайсу CDN выглядит дёшево, но на масштабе транспорт XHTTP плодит мелкие запросы, и у провайдеров с тарификацией запросов эффективная ставка уходит заметно выше прайсовой. Чтобы посчитать бюджет, измерьте реальное потребление на пользователя из панели, умножьте на число активных юзеров, добавьте оверхед туннеля и заложите плату за запросы. Снизить кост помогает передача uplink-данных в теле запроса, а не в заголовках, — это уменьшает число запросов и одновременно нужно для работоспособности туннеля через CDN.

Из чего складываются косты CDN для VPN

Когда вход VPN спрятан за whitelisted CDN-edge (оператор видит трафик как обращение к «белому» CDN, а тот проксирует на вашу ноду), счёт за инфраструктуру перестаёт быть просто «арендой сервера». Появляется отдельная статья расходов — трафик через CDN, и считать её нужно по своей модели.

Косты CDN складываются из двух базовых компонентов:

КомпонентЧто этоПорядок величины
Исходящий трафик (egress)Оплата за отданные гигабайтыпо прайсу провайдера
ЗапросыОплата за число HTTP-запросов к edgeЗависит от транспорта
Итого эффективноegress + запросы на масштабесчитается из своего биллинга

Биллинг CDN обычно тарифицирует исходящий с edge к клиенту трафик (в основном downlink), но на масштабе к нему добавляется плата за число запросов — этот компонент нужно уточнить в тарифе заранее, иначе прогноз костов окажется заниженным. Ключевой вывод: себестоимость гигабайта — не константа. Она зависит от того, какой транспорт вы гоните через CDN и насколько «крупными» получаются запросы.

Как оценить объём трафика: формула расчёта

Расчёт трафика VPN проще всего вести снизу вверх — от реального потребления на одного пользователя.

Базовая формула:

Месячный объём (ГБ) = активные_юзеры × средний_ГБ_на_юзера_в_месяц
Бюджет CDN (₽) = месячный_объём × себестоимость_ГБ

Среднее потребление не нужно угадывать — его показывает панель (Remnawave, 3x-ui, Marzban, Hiddify ведут пер-юзер статистику). Снимите фактический расход за 2–4 недели, отбросьте неактивные аккаунты и возьмите медиану, а не среднее (несколько «тяжёлых» юзеров сильно искажают среднее).

Иллюстративный пример: 1000 активных юзеров × 60 ГБ/мес = 60 ТБ/мес. Дальше умножьте объём на свою фактическую ставку за гигабайт — её берут из выгрузки биллинга за прошлый месяц, а не из прайса, иначе плата за запросы в расчёт не попадёт.

Пару поправок к расчёту:

  • Пиковый онлайн важен для канала, объём — для биллинга. Пик одновременных сессий определяет требования к пропускной способности edge и ноды, а суммарные гигабайты — сумму счёта. Считайте обе метрики.
  • Не весь трафик обязан идти через whitelisted-вход. Если CDN-edge используется как устойчивый вход под троттлингом оператора, через него пойдёт та доля сессий, что иначе бы отвалилась. Оцените эту долю отдельно — платить за неё вы будете по CDN-тарифу.

Себестоимость гигабайта: egress плюс запросы

«Сколько стоит трафик VPN» — вопрос с двойным дном. Сырой egress по прайсу действительно недорог, и именно эту цифру подставляют в расчёт. Но у провайдеров, тарифицирующих запросы, вторая статья на XHTTP-профиле сопоставима с первой, а иногда и перекрывает её — во сколько раз, зависит от того, насколько мелкие запросы генерируют ваши абоненты.

Причина в характере транспорта. XHTTP через CDN дробит поток на HTTP-запросы. Чем мельче запросы, тем их больше на тот же объём данных, и тем выше доля request-платы в счёте. Крупные POST-запросы с данными в теле снижают число запросов на гигабайт — и напрямую уменьшают кост.

Поэтому себестоимость стоит считать не как «egress × объём», а как сумму двух слагаемых: трафик + запросы. На небольших объёмах request-часть почти незаметна, на масштабе она становится ощутимой статьёй расходов. Отсюда и практический рычаг оптимизации, к которому вернёмся ниже: укрупнять запросы.

Транспорт XHTTP и почему он влияет на счёт

Через whitelisted CDN-edge стабильно проходит XHTTP в режиме packet-up. Reality или Hysteria2 напрямую под троттлингом обычно не проходят, а протолкнуть их через CDN-edge не выходит — он их не пропускает. Поэтому выбор транспорта здесь не только про проходимость, но и про кост.

Есть неочевидный, но критичный нюанс, который бьёт и по работоспособности, и по цене. Uplink-данные должны идти в теле запроса (uplinkDataPlacement: "body"), а не в кастомном заголовке (например X-Payload). CDN-edge не доносит кастомные заголовки до origin — туннель рвётся с unexpected EOF. Служебные поля правильно раскладывать так:

  • session/seq — в cookie;
  • padding — в query;
  • полезные uplink-данные — в body.

Побочный эффект передачи данных в body — как раз укрупнение запросов: меньше мелких обращений к edge, ниже request-плата. То есть корректная конфигурация транспорта одновременно чинит туннель и снижает себестоимость гигабайта.

На стороне ноды за CDN держится XHTTP-инбаунд (например, на порту 25454). В клиентском конфиге CDN-поддомен указывается как Address/SNI/Host, а path и extra на клиенте и на ноде должны совпадать точь-в-точь — иначе туннель не поднимется, и никакой расчёт костов не понадобится.

Учёт трафика в панели: множители и лимиты

Биллинг CDN и учёт трафика для пользователей — две разные бухгалтерии, и их нужно свести.

В панели (на примере Remnawave) есть механизмы:

  • Множитель потребления ноды — коэффициент, с которым трафик ноды засчитывается против лимита юзера.
  • Пер-юзер лимиты — квота на пользователя.

Отдельно полезен приём: множитель 0 на ноде означает, что трафик через эту ноду не списывается с лимита юзера, при этом сама нода продолжает работать. Это удобно, например, для fallback-входа под ограничениями — юзер не расходует квоту в момент, когда сервис держится только за счёт whitelisted-входа.

Важно свести две цифры: сколько гигабайт вам выставил CDN и сколько насчитала панель. Расхождение — это оверхед туннелирования и проксирования. Регулярная сверка billed-vs-panel показывает реальный коэффициент оверхеда, который стоит закладывать в расчёт трафика заранее, а не обнаруживать в конце месяца.

Как снизить косты: чек-лист оптимизации

Практические рычаги, которые реально двигают счёт:

  • Укрупняйте запросы. Uplink в body вместо заголовков — меньше мелких запросов на гигабайт, ниже request-плата.
  • Не гоните лишнее через CDN. Через whitelisted-вход направляйте ту долю трафика, которой это действительно нужно для устойчивости под ограничениями оператора; остальное может идти прямым путём дешевле.
  • Закройте origin от постороннего трафика. Файрвол на вход только с IP gateway плюс секрет-заголовок X-Cdn-Auth защищают origin от прямых обращений мимо CDN. Это не только безопасность, но и экономия: вы не платите за паразитный или abuse-трафик.
  • Следите за whitelist-статусом /24. Whitelist привязан к подсетям: у одних хостеров /24 в белых списках, у других нет, и статус меняется. Selectel часто whitelisted, cloud.ru/SberCloud — часто нет. Проверять нужно каждую /24 отдельно и актуально, без гарантий. Платить за CDN-вход, чья подсеть отвалилась, — деньги на ветер.
  • Пересчитывайте по факту. Себестоимость гигабайта — не разовая величина; сверяйте прогноз с реальным счётом ежемесячно.

Если поднимать и сопровождать собственную CDN-дистрибуцию не хочется, whitelisted-вход можно взять как сервис. Clearway (clear-way.pro) даёт операторам готовый «белый» edge перед их нодами — вы платите за трафик через edge и не занимаетесь эксплуатацией самой CDN-инфраструктуры, оставляя ноды и учёт юзеров на своей панели.

Частые вопросы

Сколько стоит трафик VPN через CDN?

Из прайса за гигабайт — не всё: у части провайдеров отдельно тарифицируются запросы, а транспорт XHTTP дробит поток на множество мелких HTTP-обращений. Поэтому эффективная ставка считается только по собственной выгрузке биллинга: гигабайты и операции берутся за один и тот же период и делятся друг на друга. Управляемый рычаг здесь один — размер запросов: передача uplink-данных в теле запроса снижает их число и удешевляет гигабайт.

Как измерить реальное потребление на одного пользователя?

Возьмите пер-юзер статистику из панели — Remnawave, 3x-ui, Marzban и Hiddify её ведут. Снимите расход за 2–4 недели, отбросьте неактивные аккаунты и считайте по медиане, а не по среднему, потому что несколько «тяжёлых» юзеров сильно искажают среднее. Полученную цифру умножаете на число активных пользователей и получаете месячный объём для расчёта трафика.

Почему туннель через CDN рвётся с ошибкой unexpected EOF?

Скорее всего, uplink-данные отправляются в кастомном заголовке (например X-Payload). CDN-edge не доносит кастомные заголовки до origin, и туннель обрывается. Данные должны идти в теле запроса (uplinkDataPlacement: "body"), session/seq — в cookie, padding — в query; заодно это укрупняет запросы и снижает кост.

Снижает ли whitelist-CDN стоимость разблокировки стриминга?

Нет, это разные задачи. Whitelist-CDN отвечает за связность входа под троттлингом и в режиме белого списка оператора, но не влияет на доступ к стримингу. Сервисы вроде Kinopoisk банят датацентр-IP по репутации — для российского контента нужен резидентный IP, и это отдельная инженерная задача, не связанная с расчётом костов CDN.

Что даёт множитель трафика 0 на ноде?

Множитель 0 означает, что трафик через эту ноду не списывается против лимита пользователя, при этом сама нода продолжает работать. Это удобно для fallback-входа под ограничениями: юзер не расходует квоту в момент, когда сервис держится за счёт whitelisted-входа. Механизм относится к учёту в панели и не влияет на то, сколько трафика вам выставит CDN.

Whitelisted-вход для вашего VPN-сервиса

Clearway даёт «белый» CDN-вход перед вашей нодой — устойчивый к троттлингу операторов. Первые 10 ГБ бесплатно, без карты.

Попробовать →