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に関して計算されると、正しいデータが得られます。(イニシエーターオクテットを提供し、レスポンダーオクテットを取得するには、特定のレコードの長さが4バイトであるため、46を50に置き換える必要があります)

dOctets = Util.to_number(buf, off + 46, 4)

46は、イニシエーターオクテットレコードがその特定のNetFlowパケット内にある場所です(Wiresharkレコードを使用して取得しました)。

jncaの問題ですか?うまくいけば、jcnaに精通している誰かが私にこれについていくつかの助けを与えることができます。


6
このリンクが役立つ場合があります:cdwijayarathna.blogspot.in/2014/03/…–
Mandar Pandit

1
あなたは値がメソッドから返されているか確認しましたgetTypeOffsetgetTypeLen
ルキノ2015

JNCAからによって返されるオフセットはTemplate.getTypeOffset()、フローセットに関連しているようです。これはあなたがやっていることで動作しますか?(あなたが伝えるのに十分なコードを示していませんでした;何bufですか?)
rakslice '24

1
実際のNetFlow V9仕様も役立つかもしれません:cisco.com/en/US/technologies/tk648/tk362/…:D
rakslice

また、java.util.Properties低レベルの形式を解析するコードに文字列型で入力しましたか?軌道からの核。このライブラリが書かれた当時、Javaにはジェネリックはありませんでしたか?
rakslice 2017

回答:


1

NetFlowバージョン9レコードからのネットワーク使用状況情報の取得

Netflowは、Ciscoルータに導入された機能であり、インターフェイスに出入りするときにIPネットワークトラフィックを収集する機能を提供します。Netflowによって提供されるデータを分析することにより、ネットワーク管理者は、トラフィックの送信元と宛先、サービスクラス、および輻輳の原因などを判断できます。Netflowは、フローキャッシング、フローコレクター、データアナライザーの3つのコンポーネントで構成されています。Netflowでは、ルーターはネットワーク使用の詳細をUDPパケットとして宛先の指定されたポートに転送します。

Java NetFlow Collect-Analyzer

より詳しい情報


2
どうしてあなたが賞金を提供するのか知りたいのですが?
Enzokie 2017

2
@Enzokieはおそらく利他主義者のバッジを必要としていた;)
campovski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.