Я использую библиотеку 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. Это возвращает ноль даже для шаблона ID 263.
Но когда он вычисляется относительно идентификатора 263 шаблона NetFlow, он дает правильные данные. (дает октеты инициатора и для получения ответчика октет 46 должен быть заменен на 50, так как длина конкретной записи равна 4 байтам)
dOctets = Util.to_number(buf, off + 46, 4)
46, где запись инициатора Octets лежит в этом конкретном пакете NetFlow (получена с использованием записи Wireshark.)
Это проблема с jnca? Надеюсь, кто-то, кто знаком с jcna, может мне помочь.