3

環境

現在のステータス

パフォーマンス分析のために、私の会社はナノ秒の分解能に関心があります。これまではハードウェア タイムスタンプを使用してきましたが、ナノ秒のサポートはすぐに C libpcapライブラリに組み込まれました。

ナノ秒のサポートがライブラリに追加されたようです (他のスタック オーバーフローの回答はこちらを参照) 。git リポジトリの最新バージョンでは、次のメソッドが利用可能になっています。

pcap_open_offline_with_tstamp_precision(pathname, PCAP_TSTAMP_PRECISION_NANO, errbuf);

未来

問題は、C は保守やスケーラビリティが難しいことが証明されており、キャプチャを分析のみに使用しているため、代わりにJavaを使用することでメリットが得られると感じていることです。パフォーマンス分析に関しては、適切な IDE、Maven、ビルド Web サービスなどを使用できることが、実行速度よりも重要であるように思われます。

私は最初にjNetPcapを使用できることを望んでいましたが、libpcap の Java バインディングでナノ秒の解像度をサポートする方法を見つけることができません。


質問

jNetPcap

jNetPcap を使用して、ナノ秒の精度で Pcap ファイルを読み取る簡単な方法を知っている人はいますか?

更新:TimestampResolution jNetPcap の Javadoc で列挙型についての言及を見つけました。それを使用して、後で回答を更新しようとします。

注: jNetPcap のサポート フォーラムでナノ秒の解像度について直接質問したこともあり、その面で回答が得られたら質問を更新します...

その他のソリューション

ナノ秒の精度で PCap ファイルを読み取ることができる一方で、Java のエコシステムから利益を得る別の方法を知っている人はいますか?


ありがとう!:)

4

1 に答える 1

1

私はこの質問が古いことを知っていますが、他の誰かがこの必要性を持っている場合に備えて-jNetPcapの使用が必須ではない場合、pcap4jはそれをサポートしているようです.

キャップを開くには:

PcapHandle h = Pcaps.openOffline(fname, PcapHandle.TimestampPrecision.NANO);

パケットとタイムスタンプを読み取るには:

Packet nextPacket = h.getNextPacket();
Timestamp timestamp = h.getTimestamp();

それが役立つことを願っています!

于 2016-08-26T07:59:25.383 に答える