Формат логов .raw

Технические вопросы по UTM 5.0
Ответить
vexor
Сообщения: 2
Зарегистрирован: Чт окт 08, 2009 11:15

Формат логов .raw

Сообщение vexor »

Поясните пожалуйста структуру хранения данных в логах .raw.
У меня получилось следующее:
длинна записи 76 байт

Код: Выделить всё

struct utmraw {
    unsigned int tv; // unixtime
    unsigned int null_0; // +4
    unsigned int null_1; // +8
    unsigned int src; // source address
    unsigned int dst; // destination address
    unsigned int null_2; // +20
    unsigned int null_3; // +24
    unsigned int null_4; // +28
    unsigned int bytes; // bytes transferred
    unsigned int null_6; // +36
    unsigned int null_7; // +40
    unsigned short sport; // source port
    unsigned short dport; // destination port
    unsigned int null_9; // +48
    unsigned int null_10; // +52
    unsigned int null_11; // +56
    unsigned int null_12; // +60
    unsigned int null_13; // +64
    unsigned int null_14; // +68
    unsigned int null_15; // +72
}; // 76
Вопросов 2:
1. Что в остальных полях (null_*) ?
2. Почему первая запись размером 68 байт? Куда "делись" ещё 8?
---
Для чего? Нужно эти логи траффика считывать, аггрегировать и подбивать статистику (с записью в БД). Делать это методом get_nf_direct|читать вывод в формате очень долго и некрасиво.
Поясните, если не тяжело.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Для файлов .utm формат примерно такой:

Код: Выделить всё

# 1-4 Device ID        
# 5-8 Src IP           
# 9-12 Dst IP          
# 13-20 Next Hop IP    
# 17-18 In interface ID
# 19-20 Out interface ID
# 21-24 Packets        
# 25-28 Bytes          
# 29-32 Start Time     
# 33-36 End Time       
# 37-38 Src Port       
# 39-40 Dest Port      
# 41 Pad               
# 42 TCP Flag ID       
# 43 Protocol ID       
# 44 ToS               
# 45-46 Src AS         
# 47-48 Dest AS        
# 49 Src Mask Bits     
# 50 Dest Mask Bits    
# 51-52 Pad            
# 53-56 ???            
# 57-60 UTM account_id 
# 61-64 ???            
# 65-68 UTM tclass     
# 69-72 UTM timestamp  
# 73-76 ???

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

73-76 адрес источника, с которого пришел Netflow пакет. 61-64 по-моему id сервисной связки, но нужно проверять.

vexor
Сообщения: 2
Зарегистрирован: Чт окт 08, 2009 11:15

Сообщение vexor »

Спасибо )
Задача выполнена.
Ежели кому надо исходники сохранения логов в постгрес - поделюся.

nvi93
Сообщения: 6
Зарегистрирован: Пн дек 07, 2009 05:59

Сообщение nvi93 »

Подскажите, формат файла менялся или нет? А может есть заголовок, который надо отбрасывать?
Билинг на Салярке, версия 5.2.1-007
Пытаюсь разобрать файл скриптом Rupreht & Magnum72.
Похоже есть смещение, т.к. IP адреса не корректные, файлов сформировалось 150тыс. а пользователей всего несколько тыс. и т.д.

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Не должен был меняться. Никакой практической ценности в данном шаге не вижу. Но могли и поменять. Смотреть надо.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Ничего не менялось по крайней мере с 002 по 007. Похожая картинка с кучей IP и нереальными трафиками была один раз, когда накрывался винт и побились файлы.

Ну и ещё на всякий случай, .utm и .dbs -- разные форматы

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Ага, и dbs уже официально умер.

nvi93
Сообщения: 6
Зарегистрирован: Пн дек 07, 2009 05:59

Сообщение nvi93 »

Причину нашел. Теперь надо думать как с ней бороться.
В общем, судя по полю "дата (69-72)", 4 байта данные в файле записываются в обратной последовательности:
4B FC 8F 48 - дата 26.05.2010, а в результате перл выдает 48 8F FC 4B - что соответствует 30.07.2008... там ещё минуты секунды... Надо полагать все остальные поля тоже перевернуты.
Сервер у нас на Спарке, а разбор в Интеле, может в этом проблема... а у Вас то как в файле?

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

nvi93 писал(а):Причину нашел. Теперь надо думать как с ней бороться.
В общем, судя по полю "дата (69-72)", 4 байта данные в файле записываются в обратной последовательности:
4B FC 8F 48 - дата 26.05.2010, а в результате перл выдает 48 8F FC 4B - что соответствует 30.07.2008... там ещё минуты секунды... Надо полагать все остальные поля тоже перевернуты.
Сервер у нас на Спарке, а разбор в Интеле, может в этом проблема... а у Вас то как в файле?
Разные форматы, на спарке big-endian, интел little-endian. Соответственно, стоит учитывать это при распаковке (вместо %32I принудительно задать нужный формат).

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Разработчикам. Воспользуйтесь функциями htonl и htons перед записью данных в raw файл. Потом будет гораздо меньше головной боли читающим эти файлы.

nvi93
Сообщения: 6
Зарегистрирован: Пн дек 07, 2009 05:59

Сообщение nvi93 »

Получилось.
Помогла перлвская reverse(). После чтения из файла переменных "реверсирую" каждую, дальше уже сохраняется в "нормальной" последовательности. Можно и во внутрь unpack вставить, например:
в место $bytes = unpack ( "%32I" , $bytes ); использовать $bytes = unpack ( "%32I" , reverse($bytes) );
Может кому пригодится...

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

nvi93 писал(а):Получилось.
Помогла перлвская reverse(). После чтения из файла переменных "реверсирую" каждую, дальше уже сохраняется в "нормальной" последовательности. Можно и во внутрь unpack вставить, например:
в место $bytes = unpack ( "%32I" , $bytes ); использовать $bytes = unpack ( "%32I" , reverse($bytes) );
Может кому пригодится...
Вместо $bytes = unpack ( "%32I" , $bytes ) использовать $bytes = unpack ( "%N" , $bytes ) -- всё уже придумано...

littlesavage
Сообщения: 120
Зарегистрирован: Вс ноя 22, 2009 02:41
Откуда: Чебоксары

Сообщение littlesavage »

JAO писал(а):73-76 адрес источника, с которого пришел Netflow пакет. 61-64 по-моему id сервисной связки, но нужно проверять.
53-36 - ID сервисной связки
61-64 - IP адрес, на который записан трафик (src_ip, dst_ip, либо 0)

C 5 по 52 формат - 1 в 1 Netflow V5 Flow Record.

Ответить