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

166

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

当通过Wireshark观察NetFlow数据包时,带有模板ID 263的流集合包含了有关发起方八位字节和响应方八位字节的数据,可以用于确定与流关联的字节数。

wireshark record

但问题在于,这些值无法通过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)

在该特定NetFlow数据包中,46是Initiator Octets记录所在的位置。(使用Wireshark记录获得)

这是否是jnca的问题?希望熟悉jnca的人能够给我一些帮助。


6
这个链接可能会有所帮助: http://cdwijayarathna.blogspot.in/2014/03/retrieving-network-usage-information.html - Mandar Pandit
1
你有检查过 getTypeOffsetgetTypeLen 方法返回的值吗? - Lukino
JNCA 的 Template.getTypeOffset() 返回的偏移量似乎是相对于 flowset 的。这是否与您正在做的事情相符?(您没有展示足够的代码来判断;buf 是什么?) - rakslice
1
实际的NetFlow V9规范也可能有所帮助:http://www.cisco.com/en/US/technologies/tk648/tk362/technologies_white_paper09186a00800a3db9.html :D - rakslice
此外,在解析低级格式的代码中使用强类型的java.util.Properties?直接从轨道上核掉。这个库编写时Java没有泛型吗? - rakslice
这个问题在3年半后还能重现吗?有人应该添加一个链接到触发错误的流转储。自2013/4/15以来,JNCA没有得到维护。 - yacc
1个回答

1
从NetFlow版本9记录中检索网络使用信息
NetFlow是一种在思科路由器上引入的功能,可以收集IP网络流量进出接口。通过分析NetFlow提供的数据,网络管理员可以确定流量的源和目的地、服务类别以及拥塞的原因等信息。Netflow由三个组件组成:流缓存、流收集器和数据分析器。在NetFlow中,路由器将网络使用详情作为UDP数据包转发到指定端口的目标地址。 Java NetFlow Collect-Analyzer 更多信息

2
我只是好奇你为什么要提供赏金? - Enzokie
2
@Enzokie 可能需要一个利他主义者徽章 ;) - campovski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接