Я использую библиотеку jnca для сбора записей NetFlow, отправленных маршрутизатором. Версия записи NetFlow, отправляемой маршрутизатором, - версия 9.
Когда пакет NetFlow наблюдается из Wireshark, наборы потоков с идентификатором 263 шаблона содержат данные об октетах инициатора и октетах респондента, которые можно использовать для определения количества байтов, связанных с потоком.
Но проблема в том, что эти значения не могут быть получены с помощью jcna. Это показывает всегда ноль для октетов.
currOffset = t.getTypeOffset(FieldDefinition.InBYTES_32);
currLen = t.getTypeLen(FieldDefinition.InBYTES_32);
if (currOffset >= 0 && currLen > 0) {
dOctets = Util.to_number(buf, off + currOffset, currLen) * t.getSamplingRate();
}
Это сегмент кода, который используется для получения dOctets. Это возвращает ноль даже для идентификатора шаблона 263.
Но когда он рассчитывается относительно идентификатора шаблона NetFlow 263, он дает правильные данные. (дает октеты инициатора и для получения ответчика октет 46 следует заменить на 50, так как длина конкретной записи составляет 4 байта)
dOctets = Util.to_number(buf, off + 46, 4)
46 - это место записи октетов инициатора в этом конкретном пакете NetFlow (получено с помощью записи Wireshark).
Это проблема с JNCA? Надеюсь, кто-нибудь, кто знаком с jcna, может помочь мне в этом.
getTypeOffset
иgetTypeLen
?Template.getTypeOffset()
по-видимому, относительно потока. Это работает с тем, что вы делаете? (Вы не показали достаточно кода, чтобы сказать; что этоbuf
?)java.util.Properties
в коде синтаксический анализ формата низкого уровня? Ядерный с орбиты. Разве у Java не было генериков во время написания этой библиотеки?Ответы:
Получение информации об использовании сети из записей NetFlow версии 9
Netflow - это функция, представленная на маршрутизаторах Cisco, которая позволяет собирать сетевой трафик IP при входе или выходе из интерфейса. Анализируя данные, предоставленные Netflow, сетевой администратор может определить такие вещи, как источник и назначение трафика, класс обслуживания и причина перегрузки. Netflow состоит из трех компонентов: кэширование потока, сборщик потока и анализатор данных. В Netflow маршрутизатор пересылает сведения об использовании сети в виде пакетов UDP на указанный порт назначения.
Java NetFlow Collect-Analyzer
Больше информации
источник