Sto usando la libreria jnca per raccogliere i record NetFlow inviati da un router. La versione del record NetFlow inviata dal router è la versione 9.
Quando il pacchetto NetFlow viene osservato da Wireshark, il flusso si imposta con l'ID modello 263 contiene i dati sugli ottetti dell'iniziatore e sugli ottetti del risponditore che possono essere utilizzati per determinare il numero di byte associati a un flusso.

Ma il problema è che questi valori non possono essere ottenuti dal jcna. Mostra sempre zero per gli ottetti.
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();
}
Questo è il segmento di codice che viene utilizzato per ottenere i dOctet. Questo restituisce zero anche per l'ID modello 263.
Ma quando viene calcolato rispetto all'ID modello NetFlow 263, fornisce i dati corretti. (indica gli ottetti iniziatore e per ottenere l'ottetto risponditore 46 deve essere sostituito con 50 poiché la lunghezza del record particolare è di 4 byte)
dOctets = Util.to_number(buf, off + 46, 4)
46 è dove si trova il record di Octiator Octets in quel particolare pacchetto NetFlow (ottenuto usando il record di Wireshark).
È un problema con jnca? Spero che qualcuno che abbia familiarità con JCNA possa darmi un aiuto.
getTypeOffsete getTypeLen?
Template.getTypeOffset()sembrano essere relativi al flowset. Funziona con quello che stai facendo? (Non hai mostrato abbastanza codice per dirlo; cos'è buf?)
java.util.Propertiesin modo stringente nel codice che analizza un formato di basso livello? Nuke dall'orbita. Java non aveva generici al momento della stesura di questa biblioteca?