Estoy usando la biblioteca jnca para recopilar registros de NetFlow enviados por un enrutador. La versión del registro de NetFlow enviada por el enrutador es la versión 9.
Cuando se observa el paquete NetFlow desde Wireshark, los conjuntos de flujo con el id. De plantilla 263 contienen los datos sobre los octetos iniciadores y los octetos respondedores que pueden usarse para determinar el número de bytes asociados con un flujo.
Pero el problema es que estos valores no pueden ser obtenidos por el jcna. Muestra siempre cero para los octetos.
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();
}
Este es el segmento de código que se utiliza para obtener los dOctetos. Esto devuelve cero incluso para la ID de plantilla 263.
Pero cuando se calcula con respecto a la plantilla de NetFlow id 263, proporciona los datos correctos. (proporciona los octetos del iniciador y para obtener el octeto del respondedor 46 debe reemplazarse por 50 ya que la longitud del registro particular es de 4 bytes)
dOctets = Util.to_number(buf, off + 46, 4)
46 es donde se encuentra el registro de iniciadores de octetos en ese paquete particular de NetFlow (se obtuvo el registro de Wireshark).
¿Es un problema con jnca? Con suerte, alguien que esté familiarizado con jcna puede ayudarme en esto.
getTypeOffset
y getTypeLen
?
Template.getTypeOffset()
parecen ser relativas al conjunto de flujo. ¿Funciona esto con lo que estás haciendo? (Usted no se presentó código suficiente para decir: ¿qué es buf
?)
java.util.Properties
en forma de código en un análisis de bajo nivel? Nuke desde la órbita. ¿Java no tenía genéricos en el momento en que se escribió esta biblioteca?