This project implements a Deep Packet Inspection (DPI) application designed to classify network packets based on custom-defined rules. The application leverages CUDA for high-performance packet processing on the GPU.
The main goal of this project is to build a high-throughput DPI engine that can detect and classify network packets according to specific rule-based conditions. The detection phase is optimized using a tree-based structure to store rules, enabling efficient parallel processing of packets.
This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.
- NVIDIA GPU with CUDA support (e.g., RTX 4090).
- CUDA Toolkit (version compatible with your GPU).
- Libpcap for reading pcap files.
- CMake for project compilation.
- C++17 or later for building the project.
- yaml-cpp for configuration settings
- Clone the repository
git clone https://github.com/smkh1400/DPI-GPU.git cd DPI-GPU - Built the project using make
make -B
- Configure the settings in config.yml
isTimerSet: false readPacketMode: offline chunkCountLimit: 1572864 chunkTimeLimit: -1 threadPerBlock: 32
- Run the application for a specific pcap file using flag -f
Or for a directory containing pcap files
./main -f <path_to_pcap_file>
./main -d <path_to_directory_of_pcap_files>
Distributed under the MIT License. See LICENSE.txt for more information.
Seyed Mohammadreza Khosravian: mz2012kh82@gmail.com
MohammadMehdi Sattari: mamadsadtari83@gmail.com
Project Link: https://github.com/smkh1400/DPI-GPU