Estou usando a biblioteca jnca para coletar registros do NetFlow enviados por um roteador. A versão do registro NetFlow enviada pelo roteador é a versão 9.
Quando o pacote NetFlow é observado no Wireshark, os conjuntos de fluxos com o ID do modelo 263 contêm os dados sobre octetos iniciador e octeto respondedor, que podem ser usados para determinar o número de bytes associados a um fluxo.
Mas o problema é que esses valores não podem ser obtidos pelo jcna. Mostra sempre zero para os 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 é o segmento de código usado para obter os dOctets. Isso retorna zero, mesmo para o ID do modelo 263.
Porém, quando é calculado com relação ao ID 263 do modelo do NetFlow, ele fornece os dados corretos. (fornece octetos do iniciador e, para obter o respondente, o octeto 46 deve ser substituído por 50, pois o comprimento do registro específico é de 4 bytes)
dOctets = Util.to_number(buf, off + 46, 4)
46 é onde o registro de iniciantes octetos está naquele pacote NetFlow específico. (Obtido usando o registro Wireshark.)
É um problema com o jnca? Felizmente, alguém familiarizado com o jcna pode me dar alguma ajuda nisso.
getTypeOffset
egetTypeLen
?Template.getTypeOffset()
parecem ser relativas ao fluxo. Isso funciona com o que você está fazendo? (Você não mostraram código suficiente para dizer, o que ébuf
?)java.util.Properties
em sequência analisa um formato de baixo nível? Nuke da órbita. O Java não tinha genéricos no momento em que esta biblioteca foi escrita?Respostas:
Recuperando informações de uso de rede dos registros do NetFlow versão 9
O Netflow é um recurso que foi introduzido nos roteadores Cisco que permite coletar o tráfego de rede IP quando ele entra ou sai de uma interface. Ao analisar os dados fornecidos pelo Netflow, um administrador de rede pode determinar coisas como a origem e o destino do tráfego, a classe de serviço e a causa do congestionamento. O Netflow consiste em três componentes: cache de fluxo, Flow Collector e Data Analyzer. No Netflow, o roteador encaminha os detalhes do uso da rede como pacotes UDP para uma porta especificada de um destino.
Analisador de coleta Java NetFlow
Mais informações
fonte