Sly Technologies
Welcome to Sly Technologies main repository! If you are interested in creating network applications, we have many of the tools you will need to quickly develop your products or complete projects on time. Incorporating our tried and tested libraries into your production environments and applications can help save both time and money.
Our SDKs are organized into a hierarchical structure that promotes modularity and reuse:
- jnet-platform - Core runtime and support functionality used by all SDKs
- Base APIs and utilities
- Packet Language (JNPL) for filter expressions
- System tables and configuration
- Common data structures and protocols
- Thread and memory management
Java wrapper and API for libpcap with high-level protocol support:
- Native libpcap integration
- Packet capture and transmission
- Protocol header access
- Live and offline capture
- IP reassembly
- Protocol services
Extensive protocol support including:
- TCP/IP protocol family
- Web protocols (HTTP, TLS)
- Telecom protocols
- Database protocols
- Microsoft protocols
- Media protocols (Voice/Video)
High-performance multi-CPU packet processing:
- Multi-CPU packet distribution
- Hardware acceleration support
- Zero-copy architecture
- Advanced stream processing
- High-speed packet capture
- In-line packet forwarding
- Traffic shaping
Napatech SmartNIC integration:
- SmartNIC hardware acceleration
- High-speed packet processing
- Hardware-assisted filtering
- Advanced NIC features
Intel DPDK integration:
- DPDK packet processing
- High-performance networking
- Poll-mode drivers
- Memory management
First, add the dependencies:
<dependency> <groupId>com.slytechs.jnet.jnetpcap</groupId> <artifactId>jnetpcap-api</artifactId> <version>${jnetpcap.version}</version></dependency><dependency> <groupId>com.slytechs.jnet.protocol</groupId> <artifactId>protocol-tcpip</artifactId> <version>${protocol.version}</version></dependency>
Smallest possible example:
try (varpcap =NetPcap.openOffline("capture.pcap")) {pcap.loop(System.out::println);}
Advanced example with protocol handling:
try (varpcap =NetPcap.openOffline("capture.pcap")) {// Initialize protocol headers once for reusefinalEthernetethernet =newEthernet();finalIp4ip4 =newIp4();finalTcptcp =newTcp();finalHttphttp =newHttp();// Configure packet formattingpcap.setPacketFormatter(newPacketFormat());pcap.loop(packet -> {// Headers bind to packet's native memoryif (packet.hasHeader(ethernet))System.out.println(ethernet);if (packet.hasHeader(ip4))System.out.println(ip4);if (packet.hasHeader(tcp))System.out.println(tcp);if (packet.hasHeader(http))System.out.println(http); });}
<dependency> <groupId>com.slytechs.jnet.jnetworks</groupId> <artifactId>jnetworks-api</artifactId> <version>${jnetworks.version}</version></dependency>
Multi-CPU capture example with multiple buffers and streams:
try (PcapFrameworkframework =newPcapFramework(PcapFramework.VERSION)) {// Configure multi-port setup with streams and bufferstry (Configconfig =framework.createConfig()) {// Enable multiple portsconfig.getPortsConfig() .enablePorts(PortIds.portSet(0,1,2,3)) .disablePorts(PortIds.portRange(4,2));// Configure receive streamsvarrxSettings =newStreamSettings() .setRxBufferCount(4)// Multiple receive buffers .setRxStreamCount(4);// Multiple stream processors// Setup streams with hash-based distributionint[]streamIds =config.getBufferConfig() .setupRxStreams(rxSettings);// Configure TCP filtering with hash distributionconfig.getNetworkConfig() .assignFilter("tcp") .priority(20) .ids(streamIds) .hash(HashMode.HASH_5_TUPLE_SORTED); }// Start capture with multiple processing threadstry (NetTransceivercapture =framework.createTransceiver()) {// Fork stream processors (4 worker threads)capture.forkRxStreams(stream -> {RxPacketpacket =newRxPacket();longtotalSize =0;while (stream.isActive()) {if (stream.get(packet,100))continue;totalSize +=packet.length();stream.release(packet); }System.out.printf("Stream processed %d bytes%n",totalSize); },4);// Fork buffer processors (2 worker threads)capture.forkRxBuffers(buffer -> {RxSegmentsegment =buffer.newSegment();longtotalSize =0;while (buffer.isActive()) {if (buffer.get(segment,100) ||segment.isEmpty())continue;totalSize +=segment.byteSize();buffer.release(segment); }System.out.printf("Buffer processed %d bytes%n",totalSize); },2);// Start capture and waitcapture.startCapture();capture.awaitCaptureStart();capture.awaitCaptureStop(); }}
Our modules are licensed as follows:
- jnetpcap-wrapper: Licensed underApache v2 License
- All other modules: Licensed underSly Technologies Free License
- 5 free developer installations
- One-time distribution license fee
- No royalties
- Commercial support available (1 or 5 year terms)
We specialize in high-performance network packet capture and analysis solutions for Java. Our libraries are tried and tested in production environments, helping developers save time and money.
- Phone: 1-315-930-0939 (US NY)
- Email:sales@slytechs.com
- Address: 224 Harrison Street, Syracuse, NY 13202 - USA
- Website:www.slytechs.com (contact form available)
PinnedLoading
- jnetpcap-sdk
jnetpcap-sdk PublicPCAP capture/transmission with protocol enabled network packet dissection, analysis and reassembly
- protocol-sdk
protocol-sdk PublicNetwork protocol modules/packs for core, web, database, microsoft and telco family of protocols
Repositories
- platform-systables Public
Native system table access from Java such as ARP, DNS and network routing tables
slytechs-repos/platform-systables’s past year of commit activity - jnetpcap-sdk Public
PCAP capture/transmission with protocol enabled network packet dissection, analysis and reassembly
slytechs-repos/jnetpcap-sdk’s past year of commit activity - compiler-pcap-filter Public
Packet filter expression compiler that generated Berkley Packet Filter (BPF) binary OPCODES
slytechs-repos/compiler-pcap-filter’s past year of commit activity