The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
netflow 5.0 unix_secs, sys_uptime, first,last, !*! deadka, 05-Май-09, 15:24  [смотреть все]
Доброго времени суток!
Не могу понять, как вычленять время из пакетов протокола Netflow версии 5.0.

Маршрутизатор Cisco 4507R, находится в новосибирске (GMT+6). Экспортирует flow-поток на одну из рабочих станций. Моя задача - вычленять оттуда некоторые пакеты, точнее данные с них. По-большому счету все понятно, кроме времени. Есть в протоколе следующие поля:

(Далее воспользовался информацией с http://www.securitylab.ru/forum/forum21/topic46779/messages/... )

/**********************************************************/

UNIX_SECS - Время когда поток был экспортирован - в секундах

SYSUPTIME - UpTime экспортирующей системы на время когда поток был экспортирован. Тут тысячные секунды

FIRST - UpTime экспортирующей системы на время когда поток был создан (получен первый пакет). Тут тысячные секунды

LAST - UpTime экспортирующей системы на время когда был получен последний пакет потока. Тут тысячные секунды.

Есть однозначная привязка UNIX_SECS и SYSUPTIME Поэтому формула для Unix_Time когда получен первый пакет потока такая.

Unix_Time_Flow_Created = UNIX_SECS + (FIRST - SYSUPTIME)/1000

Для последнего пакета потока - такая.

Unix_Time_Flow_Died = UNIX_SECS + (LAST - SYSUPTIME)/1000

Точность времени для данных порядка одной секунды, так как приходится округлять

/********************************************************/

Попробовал реализовать.

Что в итоге получаю:

Сегодня 05.05.09, местное время примерно 18.14. Время на экспортирующем маршрутизаторе указано верно.

Получаю пакет.

unix_secs (8-11) = 1241522062

sys_uptime (4-7) = 1228598392

first (24-27) = 1228430416

last (28-31) = 1228450356

Использую формулу, получаю

Unix_Time_Flow_Created = 1245816861

Для последнего пакета потока - такая.

Unix_Time_Flow_Died = 1245816881

преобразуем

select FROM_UNIXTIME(1241522062) as UNIXSECS,FROM_UNIXTIME(1245816861) as Unix_Time_Flow_Created

получаем результат:

UNIXSECS Unix_Time_Flow_Created '2009-05-05 18:14:22', '2009-06-24 11:14:21'

UnixSecs похож на правду, а вот Unix_Time_Flow_Created - ни в какие ворота - даже если прибавить шесть часов (GMT+6) то 24 июня 2009 тут совсем не при делах :(.

Подскажите в чем я не прав, кто знает, плиз.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру