我正在使用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是Initiator Octets记录位于该特定NetFlow数据包中的位置(使用Wireshark记录获取)。
jnca有问题吗?希望熟悉jcna的人可以在此方面给我一些帮助。
6
该链接可能会有所帮助:cdwijayarathna.blogspot.in/2014/03/…– Mandar
—
Pandit
您是否检查了方法
—
卢基诺2015年
getTypeOffset
和返回的值getTypeLen
?
从JNCA返回的偏移量
—
rakslice
Template.getTypeOffset()
似乎是相对于流程集的。这对您的工作有用吗?(您没有显示足够的代码来说明;什么是buf
?)
实际的NetFlow V9规范也可能会有所帮助:cisco.com/en/US/technologies/tk648/tk362/…:D
—
rakslice
另外,
—
rakslice
java.util.Properties
在解析低级格式的代码中使用字符串类型吗?核弹从轨道。在编写该库时,Java是否没有泛型?