Я использую библиотеку jnca для сбора записей NetFlow, отправленных маршрутизатором. Версия записи NetFlow, отправленная маршрутизатором, - это версия 9.Запись Netflow не может получить октеты (jnca)
Когда пакет 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. Это возвращает ноль даже для шаблона ID 263.
Но когда он рассчитан в отношении идентификатора шаблона NetFlow 263, он дает правильные данные. (Дает инициатор октета и получить Ответчик октета 46 должен быть заменен на 50, как длина конкретной записи составляет 4 байта)
dOctets = Util.to_number(buf, off + 46, 4)
46, где запись Инициатор Octets лежит в этом конкретном пакете NetFlow. (Получил используя запись Wireshark.)
Это проблема с jnca? Надеюсь, кто-то, кто знаком с jcna, может мне помочь.
Эта ссылка может помочь: http://cdwijayarathna.blogspot.in/2014/03/retrieving-network-usage-information.html –
ли вы проверить, какие значения возвращаются из метода 'getTypeOffset' и' getTypeLen'? – Lukino
Смещение, возвращаемое с помощью 'Template.getTypeOffset()' JNCA', похоже на относительный набор. Работает ли это с тем, что вы делаете? (Вы не указали достаточно кода, чтобы рассказать, что такое 'buf'?) – rakslice