Название файла - log_YYYY-MM-DD-HH.XXX.bgdl, где YYYY - год, MM - месяц, DD - день, HH - час, XXX - порядковый номер файла в данном часе, например 000, 001, 002 и т.д.
Файл начинается с 16 байтового префикса
MAGIC | VERSION | TYPE | HEADER LENGTH |
---|---|---|---|
42 47 44 4C | 00 00 00 04 | 00 00 00 01 | 00 00 00 C9 |
BGDL | 4 | IP | 201 |
где TYPE: IP=1, RADIUS=2, DHCP=3
Далее идет блок с параметрами заголовка, длина блока берется из префикса (например, 201 - в таблице выше)
4 байта | 4 байта | N байт |
---|---|---|
ID первого параметра | длина первого параметра, N байт | значение первого параметра |
... | ... | ... |
ID последнего параметра | длина последнего параметра, N байт | значение последнего параметра |
Параметры заголовка
ID | Название | Длина, байт | Описание | Пример |
---|---|---|---|---|
3 | FINISHED_ID | 1 | Флаг окончание записи файла-лога, 0 - не закончен, 1 - закончен | TRUE |
4 | BUFFER_ID | 5 | Если тип CHUNKED, данные в файле разбиты на блоки размером Size байт. Если тип NONE, то данные хранятся одним блоком размером Size байт | Type: CHUNKED; Size: 524288 |
5 | COMPRESSION_ID | 3 | Сжатие блока с данными: NONE(0), ZLIB(1), GZIP(2), XZ(3) | Type: ZLIB; Level: 5; Strategy: 1 |
6 | DISTRIBUTED_ID | 1 | если 0 - данные хранятся в том же файле что и заголовок, если 1 - данные в отдельном файле log_YYYY-MM-DD-HH.XXX.data | TRUE |
7 | STREAMING_ID | 1 | Флаг, значения 0 и 1. | TRUE |
100 | IP_DATALOG_TYPE_ID | 3 | формат логов: RAW(0), NETFLOW(1), SFLOW(2), SNMP(3), NETFLOW9(4), IPFIX(5) | Type: NETFLOW9 |
110 | NETFLOW9_TEMPLATES_ID | Y | описание шаблонов с данными: 2 байта ID шаблона, 2 байта количество полей в шаблоне, далее для каждого поля 2 байта ID поля + 2 байта длина поля, далее следующий шаблон пока не переберем Y байт | Template IDs: 256, 257, 258, 259 |
После параметров заголовка в зависимости от значения параметра DISTRIBUTED_ID идут пакеты с данными если DISTRIBUTED_ID=0 или файл файл bgdl заканчивается, а данные находятся в отдельном файле log_YYYY-MM-DD-HH.XXX.data.
В зависимости от значения параметра COMPRESSION_ID данные могут быть сжаты или нет.
Формат файла с данными. В зависимости от значения параметра BUFFER_ID данные могут распологатся одним блоком или могут быть разбиты на равные куски (CHUNK). Если BUFFER_ID=1, данные рабиты на куски размером size байт, если BUFFER_ID=0 данные хранятся одним блоком размером size байт.
Если данные хранятся кусками, то в начале каждого куска идет заголовок 16 байт
4 байта | 4 байта | 4 байта | 4 байта |
---|---|---|---|
реальная длина блока с данными, может быть меньше длины куска | номер куска в файле | ? | ? |
Далее идут пакеты flow в том формате в котором они приходят от оборудования.