我正在使用jnca库来收集路由器发送的 NetFlow 记录。路由器发送的 NetFlow 记录版本为版本 9。
当从 Wireshark 观察到 NetFlow 数据包时,模板 id 为 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 模板 id 263 进行计算时,它会给出正确的数据。(给发起者八位字节并获得响应者八位字节 46 应替换为 50,因为特定记录的长度为 4 个字节)
dOctets = Util.to_number(buf, off + 46, 4)
46 是发起方八位字节记录在该特定 NetFlow 数据包中的位置。(使用 Wireshark 记录获得。)
jnca有问题吗?希望熟悉jcna的人能给我一些帮助。