Skip to content

Политика

Блок policy задаёт тайм-ауты соединений и размеры буферов по уровням, а также определяет, какие счётчики трафика должна заполнять подсистема статистики.

Параметры верхнего уровня

ПолеТипПо умолчаниюДопустимые значенияОписание
levelsmap[uint32]*Policy{}{ "<level>": Policy }Отображение с ключом — уровнем пользователя (uint32). Каждое значение — объект Policy, флаги которого применяются к трафику пользователей этого уровня.
system*SystemPolicy(unset)SystemPolicyОбщесистемная политика. Сейчас содержит только четыре переключателя счётчиков трафика входящих/исходящих.

Исходный код: infra/conf/policy.go:73-76 · зафиксировано на v26.7.28 (5ca6f4b)

Policy по уровням

Каждая запись в levels — объект Policy. Уровень 0 используется по умолчанию для пользователей без явно заданного уровня.

ПолеТипПо умолчаниюДопустимые значенияОписание
handshake*uint324<seconds>Максимальное время, за которое входящий должен завершить рукопожатие, прежде чем соединение будет закрыто.
connIdle*uint32300<seconds>Тайм-аут простоя. Соединение без трафика в течение указанного числа секунд закрывается.
uplinkOnly*uint322<seconds>Льготное окно после закрытия нисходящего канала; восходящий закрывается спустя указанное число секунд.
downlinkOnly*uint325<seconds>Льготное окно после закрытия восходящего канала; нисходящий закрывается спустя указанное число секунд.
statsUserUplinkboolfalsetrue | falseСчитать байты восходящего трафика по каждому пользователю (требует наличия блока stats).
statsUserDownlinkboolfalsetrue | falseСчитать байты нисходящего трафика по каждому пользователю.
statsUserOnlineboolfalsetrue | falseОтслеживать онлайн-статус каждого пользователя.
bufferSize*int32(internal)<KB> | -1Внутренний буфер на соединение, в КБ. -1 (или любое отрицательное значение) означает «без ограничения».

Исходный код: infra/conf/policy.go:7-16 · зафиксировано на v26.7.28 (5ca6f4b)

SystemPolicy

ПолеТипПо умолчаниюДопустимые значенияОписание
statsInboundUplinkboolfalsetrue | falseСчётчик байтов восходящего трафика по тегу входящего.
statsInboundDownlinkboolfalsetrue | falseСчётчик байтов нисходящего трафика по тегу входящего.
statsOutboundUplinkboolfalsetrue | falseСчётчик байтов восходящего трафика по тегу исходящего.
statsOutboundDownlinkboolfalsetrue | falseСчётчик байтов нисходящего трафика по тегу исходящего.

Исходный код: infra/conf/policy.go:55-60 · зафиксировано на v26.7.28 (5ca6f4b)

Пример

json
{
  "stats": {},
  "policy": {
    "levels": {
      "0": {
        "handshake": 4,
        "connIdle": 300,
        "uplinkOnly": 2,
        "downlinkOnly": 5,
        "statsUserUplink": true,
        "statsUserDownlink": true,
        "bufferSize": 0
      }
    },
    "system": {
      "statsInboundUplink": true,
      "statsInboundDownlink": true,
      "statsOutboundUplink": true,
      "statsOutboundDownlink": true
    }
  }
}

Примечания

  • Тайм-ауты в Go-структуре — указатели. Пропуск поля оставляет внутреннее значение по умолчанию; явно заданный 0 действительно означает «без тайм-аута» для этого поля.
  • bufferSize умножается на 1024 в Policy.Build (infra/conf/policy.go:42-46) — значение в JSON задаётся в КБ. Любое отрицательное значение снимает ограничение.
  • Для счётчиков по пользователям объект пользователя на соответствующем входящем должен иметь непустой уровень, номер которого совпадает с одним из ключей в policy.levels.

Исходный код: infra/conf/policy.go:7-76 · v26.7.28 (5ca6f4b)

Core Tutorial от Argsment