Netflow记录无法获取八位字节(jnca)


169

我正在使用jnca库来收集路由器发送的NetFlow记录。路由器发送的NetFlow记录的版本为版本9。

从Wireshark观察到NetFlow数据包时,模板ID为263的流集包含有关发起者八位字节和响应者八位字节的数据,这些数据可用于确定与流关联的字节数。 Wireshark记录

但是问题是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

1
您是否检查了方法getTypeOffset和返回的值getTypeLen
卢基诺2015年

从JNCA返回的偏移量Template.getTypeOffset()似乎是相对于流程集的。这对您的工作有用吗?(您没有显示足够的代码来说明;什么是buf?)
rakslice

1
实际的NetFlow V9规范也可能会有所帮助:cisco.com/en/US/technologies/tk648/tk362/…:D
rakslice

另外,java.util.Properties在解析低级格式的代码中使用字符串类型吗?核弹从轨道。在编写该库时,Java是否没有泛型?
rakslice

Answers:


1

从NetFlow版本9记录中检索网络使用情况信息

Netflow是Cisco路由器上引入的一项功能,使它能够在进入或退出接口时收集IP网络流量。通过分析Netflow提供的数据,网络管理员可以确定诸如流量的源和目的地,服务等级以及拥塞原因之类的东西。Netflow由三个组件组成:流缓存,流收集器和数据分析器。在Netflow中,路由器将网络使用情况的详细信息作为UDP数据包转发到目标的指定端口。

Java NetFlow收集分析器

更多信息


2
我很好奇,为什么您要提供赏金?
Enzokie

2
@Enzokie可能需要Altruist徽章;)
campovski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.