Skip to content

Трафик, квоты и лимиты ​

Эта страница прослеживает трафик пользователя от узла, который его передал, до чисел на странице пользователей и объясняет, где действует каждое ограничение учётной записи. Как задавать ограничения, описано в Пользователи и Тарифы.

Сбор трафика ​

Узлы считают байты по каждому инбаунду, аутбаунду и пользователю, в памяти. Каждые 30 секунд панель собирает счётчики всех узлов:

  • Узел обнуляет каждый счётчик, когда сообщает его, поэтому каждый байт сообщается ровно один раз.
  • Панель записывает весь сбор одной транзакцией базы данных. Если запись не удалась, сбор остаётся в памяти и добавляется к следующему, так что из-за занятой базы ничего не теряется.
  • Узел, отрезанный от панели, продолжает считать, пока не перестанет обслуживать. То, что он передал после последнего сбора панели, теряется, если он остановится раньше, чем панель снова до него дойдёт; см. Узел и его панель.

Две записи из одного сбора ​

Каждый сбор записывается сразу в два места:

ЗаписьДля чего онаХранится
Учётная книга: по узлу, по пользователю и по паре узел–пользователь, плюс итоги каждой учётной записиквоты, лимиты реселлеров, отчётывсегда
Ряды для графиков: сырые байты по временным интерваламграфики трафикав течение срока хранения статистики, по умолчанию 30 дней; 0 отключает запись

Отчёты читают учётную книгу, поэтому отключение графиков никогда не меняет того, сколько списано с учётной записи и что показывает отчёт. График узла и его общий итог берутся из одних и тех же замеров, поэтому расходиться не могут.

Множитель узла ​

Множитель трафика узла масштабирует то, что списывается с его пользователей. При множителе 2 гигабайт через этот узел снимает два гигабайта с квоты пользователя и с лимита его реселлера. Собственные показатели узла и его периодический лимит остаются в сырых байтах.

Туннели и эндпоинты ​

  • Трафик через туннель списывается на ретрансляторе, к которому подключаются пользователи. На исходном узле он повторно не списывается.
  • Эндпоинт WireGuard или OpenVPN считает то, что отправляют пиры, и то, что он пересылает под именем эндпоинта, а панель складывает одно с другим.

Онлайн ​

Учётная запись считается онлайн, пока у неё был трафик за последние 90 секунд. Онлайн-счётчик каждого узла — это число учётных записей с трафиком через этот узел за то же окно. Если ряды для графиков отключены, счётчик по узлам неизвестен и показывается прочерком, а не нулём.

Квоты и сроки ​

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

  • Учётная запись, вышедшая за предел, отключается на каждом узле, где она есть, на лету, без перезапуска чего-либо, и панель создаёт событие с причиной.
  • Учётная запись, вернувшаяся в свои пределы (продлена, получила больше трафика, сброшена), снова включается той же проверкой.
  • Учётная запись, отключённая человеком, остаётся отключённой. Ежеминутная проверка никогда не включает учётную запись, которую вы или массовое действие отключили вручную, даже если она в своих пределах.

Сроки, которые начинаются с первого использования ​

Тариф может задавать длительность, например 30 дней, а не дату. Тогда учётная запись ждёт первого подключения, и её срок пока не применяется. В первую минуту после того, как узел сообщит о её трафике, срок устанавливается как этот момент плюс длительность. Получение подписки не запускает отсчёт: оно значит, что приложение прочитало ссылки, а не что кто-то подключился.

Циклы сброса ​

Цикл обнуляет трафик учётной записи и начинает заново.

ЦиклСбрасывает
Скользящийкаждые N дней после последнего сброса
Еженедельный, ежемесячный, ежегодныйв заданный день недели, день месяца или дату, по григорианскому или персидскому календарю

Каждый шаг отсчитывается от опорной даты, а не от последнего сброса, поэтому учётная запись с опорой на 31-е число сбрасывается 28 февраля и снова 31 марта. Сброс применяется ежеминутной проверкой, как и всё остальное.

Предупреждения до предела ​

Тот же ежеминутный проход один раз выдаёт предупреждение, пока учётная запись ещё работает:

  • user.quota_warning, когда расход переходит долю квоты, по умолчанию 80%;
  • user.expiring, когда до даты окончания остаётся окно, по умолчанию 7 дней и 1 день.

Каждое предупреждение выдаётся один раз на порог и запоминается в базе, так что перезапуск панели ничего не повторяет. Продажа дополнительного трафика или продление снова его взводят. Telegram, электронная почта и дополнения могут передавать предупреждения клиентам; см. Шина событий.

Лимит адресов ​

Лимит адресов ограничивает, со скольких адресов-источников учётная запись может подключаться одновременно, по всему парку узлов.

  1. Узел сам допускает новый адрес, пока по его данным учётная запись не достигла лимита, не спрашивая панель о каждом соединении.
  2. Каждые 10 секунд панель объединяет адреса, которые видели все узлы, урезает каждую ограниченную учётную запись до её лимита, оставляя последние замеченные адреса, и отправляет результат обратно.
  3. Соединение с лишнего адреса отклоняется, как только таблица дошла до узла.

Таким образом, 10-секундный цикл — это окно, в котором учётная запись может ненадолго превысить лимит на нескольких узлах. Адрес IPv4 считается сам по себе, а адрес IPv6 — по своему /64. Адрес продолжает учитываться десять минут после того, как его видели в последний раз, поэтому телефон, сменивший сеть, не блокирует сам себя. Замеченные адреса живут только в памяти; хранятся только лимиты. Когда панель показывает текущие адреса учётной записи, она читает то же объединённое представление, и чтение никогда не меняет того, что применяет парк узлов.

Ограничение скорости ​

Ограничение скорости ограничивает каждое направление трафика учётной записи в Мбит/с и действует на каждом узле отдельно: лимит 20 Мбит/с позволяет учётной записи использовать 20 Мбит/с на каждом узле, к которому она подключена одновременно. Бюджет скорости внутри пути данных одной машины нельзя разделить между машинами. Изменение лимита никогда его не умножает, а лимит, который сняли и вернули, доходит и до уже открытых соединений.

Лимит устройств ​

Лимит устройств ограничивает выдачу, а не соединения. Узел видит адреса, но никогда не устройства. Панель видит устройство, только когда приложение, которое получает подписку, присылает идентификатор устройства, как делают некоторые приложения.

  • Устройству сверх лимита отказывают в подписке и в странице.
  • Устройство, у которого конфигурация уже есть, продолжает подключаться, пока вы не освободите его место в учётной записи.
  • Приложения, которые не присылают идентификатор устройства, обслуживаются, если не включено Лимит устройств отклоняет клиентов без идентификатора.

Лимит адресов — это половина защиты от совместного использования, отвечающая за одновременность, а лимит устройств — половина, отвечающая за распространение. Их задумано использовать вместе.

Собственные лимиты узлов ​

У узла может быть периодический лимит трафика: недельный, месячный или годовой. Когда его сырой трафик за период превышает лимит, панель отключает узел до следующего периода и тогда же снова включает, если только вы не отключили его сами.

Лимиты реселлеров ​

Лимит реселлера вычисляется, а не хранится: это трафик всех его учётных записей с начала его периода, умноженный на множитель каждого узла.

  • При превышении лимита или после окончания срока ежеминутная проверка отключает все его учётные записи, и они возвращаются, когда начинается новый период или реселлер продлён.
  • Реселлер с истёкшим сроком не может войти в панель, а его API-токены перестают работать, пока его не продлят.

См. Реселлеры.

Текст и изображения — CC BY 4.0.