# 🚀 多线程深度包检测 (DPI) 引擎
### 分析。分类。检测。理解。
一个高性能的深度包检测 (DPI) 引擎,使用 C++17 编写,旨在用于真实网络流量分析、应用层流量分类、TLS 检测以及多线程数据包处理。






# 🔥 为什么选择这个项目?
大多数数据包分析器只停留在基本的数据包解析上。这个 DPI 引擎通过执行以下操作深入了几个层次:
- 深度包检测 (DPI)
- TLS Server Name Indication (SNI) 提取
- 五元组流跟踪
- 多线程数据包处理
- 应用层流量分类
- 基于规则的数据包过滤
- 真实互联网流量分析
- PCAP 流量处理
- 负载均衡的数据包分发
与传统的数据包分析器不同,该引擎使用通过 Wireshark 捕获的真实网络流量进行了验证,并使用多线程 DPI pipeline 进行了处理。
# ✨ 亮点
```
✔ 25,520 Real Network Packets Analyzed
✔ 29+ Million Bytes Processed
✔ Multi-threaded Architecture
✔ Application-Level Traffic Classification
✔ TLS SNI & DNS Inspection
✔ Five Tuple Based Flow Tracking
✔ Rule-Based Packet Filtering
✔ Wireshark Integration
✔ Real World Traffic Analysis
✔ Modular Systems Programming Design
```
# 🌐 真实世界流量捕获
使用 Wireshark 捕获实际的互联网流量,并将其导出为 PCAP 文件以进行深度包检测。
# 📁 捕获的 PCAP 文件
捕获的流量被导出为 PCAP 文件,并由 DPI 引擎进行处理。
# 🚀 DPI 引擎初始化
引擎初始化 Load Balancer 和 Fast Path 线程,以高效地分发数据包工作负载。
# 📊 流量分析报告
DPI 引擎成功分析了真实的网络流量。
| 指标 | 值 |
|-------|-------|
| 总数据包 | 25,520 |
| 总字节数 | 29,252,849 |
| TCP 数据包 | 1,988 |
| UDP 数据包 | 23,532 |
| 转发的数据包 | 25,520 |
| 丢弃的数据包 | 0 |
| 多线程 | 是 |
| 真实流量测试 | 是 |
# 🌍 应用层流量分类
DPI 引擎通过以下方式识别应用和服务:
- TLS Server Name Indication (SNI)
- HTTP Host Header
- DNS 查询
- 数据包元数据
- 基于端口的分类
成功检测了来自以下服务的流量:
```
GitHub
Google Services
YouTube
Twitter / X
HTTPS Traffic
DNS Traffic
Mozilla Services
TLS Traffic
Various CDN Services
```
# ⚙️ 系统架构
```
INPUT PCAP FILE
|
v
PCAP READER
|
v
PACKET PARSER
|
v
LOAD BALANCER
|
v
FAST PATH THREADS
|
v
APPLICATION CLASSIFIER
|
v
RULE BASED FILTERING
|
v
OUTPUT PCAP FILE
|
v
TRAFFIC REPORTS
```
# 🧠 数据包处理 Pipeline
```
Ethernet Frame
↓
IPv4 Packet
↓
TCP / UDP Parsing
↓
Payload Extraction
↓
TLS SNI Inspection
↓
Application Detection
↓
Rule Evaluation
↓
Packet Filtering
↓
Traffic Statistics Generation
↓
Output PCAP File
```
# 🏎️ 多线程架构
多线程 pipeline 使用:
- Reader 线程
- Load Balancer 线程
- Fast Path 线程
- 线程安全队列
- Output Writer 线程
- 用于流跟踪的一致性哈希
```
Reader Thread
|
v
Packet Queue
|
-------------------------
| |
v v
LB-0 LB-1
| |
---------- ----------
| | | |
v v v v
FP0 FP1 FP2 FP3
\ | | /
\ | | /
Output Queue
|
v
Output Writer Thread
```
这种架构确保属于同一连接的数据包由同一个 Fast Path 线程处理,从而实现准确的流跟踪和更好的可扩展性。
# 🔒 TLS SNI 提取
DPI 引擎对 TLS Client Hello 数据包执行深度包检测,以提取:
- Server Name Indication (SNI)
- 域名
- 应用签名
示例:
```
TLS Client Hello
↓
SNI Extension
↓
www.youtube.com
↓
Application Classification
↓
YOUTUBE
```
这使得即使对于 HTTPS 流量也能进行应用层流量识别。
# 🚀 核心功能
### 网络
- 以太网帧解析
- IPv4 数据包解析
- TCP 数据包解析
- UDP 数据包解析
### 深度包检测
- TLS SNI 检测
- HTTP Host Header 检测
- DNS 查询检测
### 流量分类
- 应用层分类
- 服务识别
- 流量统计生成
### 系统编程
- 五元组流跟踪
- 多线程处理
- 负载均衡架构
- Fast Path 数据包处理
- 线程安全队列
### 过滤
- 基于规则的数据包过滤
- 应用屏蔽支持
- 基于 IP 的屏蔽支持
# 🌐 支持的协议
```
Ethernet
IPv4
TCP
UDP
HTTP
HTTPS
DNS
TLS
PCAP
```
# 🌍 支持的流量检测
```
GitHub
Google
YouTube
Twitter / X
HTTPS
DNS
Mozilla
TLS
Various CDN Services
```
# 🏗️ 项目结构
### 头文件
### 源文件
该项目遵循模块化架构,将数据包解析、流量分类和数据包处理分离为独立的组件。
# 🛠 技术栈
| 类别 | 技术 |
|--------|--------|
| 语言 | C++17 |
| 网络 | TCP/IP, UDP, IPv4 |
| 数据包捕获 | Wireshark |
| 数据包格式 | PCAP |
| 流量分析 | 深度包检测 |
| 分类 | TLS SNI 检测 |
| 架构 | 多线程 |
| 编程范式 | 系统编程 |
# 📈 性能指标
```
Real World Traffic Tested YES
Packets Processed 25,520
Traffic Processed 29+ MB
Application Classification YES
TLS SNI Extraction YES
Five Tuple Flow Tracking YES
Rule Based Filtering YES
Multi-threaded Architecture YES
Wireshark Integration YES
Output PCAP Generation YES
```
# ⚡ 开始使用
克隆代码库:
```
git clone https://github.com/girish-xd/Deep-Packet-Inspection-Engine.git
```
进入项目:
```
cd Deep-Packet-Inspection-Engine
```
编译:
```
g++ -std=c++17 -pthread -O2 -I include -o dpi_engine \
src/dpi_mt.cpp \
src/pcap_reader.cpp \
src/packet_parser.cpp \
src/sni_extractor.cpp \
src/types.cpp
```
# 🚀 运行引擎
分析 PCAP 文件:
```
./dpi_engine input.pcap output.pcap
```
运行多线程引擎:
```
./dpi_engine test_dpi.pcap output.pcap
```
生成示例 PCAP 数据:
```
python3 generate_test_pcap.py
```
# 🔮 未来改进
- 实时数据包捕获支持
- 实时流量监控
- QUIC / HTTP3 支持
- 交互式流量仪表板
- 高级应用分类器
- 增强的协议支持
- 性能优化
- 持久化规则管理
## 使用 C++、咖啡因和数不清的数据包构建。
### 如果您正在阅读本文,您的浏览器可能已经泄露了它的 SNI。
### 由 Girish Jain 用 ❤️ 和原始数据包制作。