Политика
Блок policy задаёт тайм-ауты соединений и размеры буферов по уровням, а также определяет, какие счётчики трафика должна заполнять подсистема статистики.
Параметры верхнего уровня
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
levels | map[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 | *uint32 | 4 | <seconds> | Максимальное время, за которое входящий должен завершить рукопожатие, прежде чем соединение будет закрыто. |
connIdle | *uint32 | 300 | <seconds> | Тайм-аут простоя. Соединение без трафика в течение указанного числа секунд закрывается. |
uplinkOnly | *uint32 | 2 | <seconds> | Льготное окно после закрытия нисходящего канала; восходящий закрывается спустя указанное число секунд. |
downlinkOnly | *uint32 | 5 | <seconds> | Льготное окно после закрытия восходящего канала; нисходящий закрывается спустя указанное число секунд. |
statsUserUplink | bool | false | true | false | Считать байты восходящего трафика по каждому пользователю (требует наличия блока stats). |
statsUserDownlink | bool | false | true | false | Считать байты нисходящего трафика по каждому пользователю. |
statsUserOnline | bool | false | true | false | Отслеживать онлайн-статус каждого пользователя. |
bufferSize | *int32 | (internal) | <KB> | -1 | Внутренний буфер на соединение, в КБ. -1 (или любое отрицательное значение) означает «без ограничения». |
Исходный код: infra/conf/policy.go:7-16 · зафиксировано на v26.7.28 (5ca6f4b)
SystemPolicy
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
statsInboundUplink | bool | false | true | false | Счётчик байтов восходящего трафика по тегу входящего. |
statsInboundDownlink | bool | false | true | false | Счётчик байтов нисходящего трафика по тегу входящего. |
statsOutboundUplink | bool | false | true | false | Счётчик байтов восходящего трафика по тегу исходящего. |
statsOutboundDownlink | bool | false | true | 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)
