我使用 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 的代码段。即使对于模板 ID263,这也返回零。
但是,当根据 NetFlow 模板 id263计算时,它提供了正确的数据。(给出发起者八位元组,为了得到响应者八位元组46,应该用50代替,因为特定记录的长度是4个字节)
dOctets = Util.to_number(buf, off + 46, 4)
46是 Initiator Octets 记录位于特定 NetFlow 数据包中的位置
JNCA 有什么问题吗? 希望 JNCA 的熟人可以在这方面给我一些帮助。