Working on jNetStream

I have for the most part finished the intensive work on jNetPcap, a sister project. Over the next few weeks I will be working on jNetStream 3.0.

The plan is to drop NPL and large part, if not entirely, the current packet implementation in jNetStream. The capture file support, indexing, iterators and majority of the API stay untouched.

The packet implementation itself has to be changed drastically to take advantage of jNetPcap's native capabilities. jNetStream relies heavily on ByteBuffer class, whereas jNetPcap provides a new buffer class called JBuffer. JBuffer is, like a direct ByteBuffer, accessor to native memory. JBuffer is more efficient and flexible then JRE's ByteBuffer implementation. jNetPcap's packet's are subclasses of JBuffer which ranges over entire packet buffer length, providing direct access to raw data. And so forth. One interesting property that jnetpcap brings is that ByteBuffer objects are interchangeable with JBuffer ones without copies. Unfortunately the reverse is not true, as ByteBuffer doesn't allow peering native memory like JBuffer does.

jNetPcap brings:

  • Protocol headers in plain old java syntax
  • A native packet scanner - the scanner also works with java headers for easy extension
  • Protocol analyzers - this includes, analysis, statistics, sequencing and reassembly of fragments and tcp segments.
  • Very advanced native memory capabilities that jNetStream will be able to take advantage of
  • All of libpcap functionality including tcpdump syntax for packet filtering

So stay tuned for more updates soon.