# nidps-base-dpdk **Repository Path**: codergeek/nidps-base-dpdk ## Basic Information - **Project Name**: nidps-base-dpdk - **Description**: 基于DPDK高性能多维智能入侵检测|DPI系统 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2025-05-26 - **Last Updated**: 2025-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nidps-base-dpdk #### 介绍 本课题研究就如何高效、迅速地处理网络报文并及时发现入侵行为为目的,研究并实现了一个面向高速网络的实时入侵检测系统。 版本基于DPDK-stable-20.11.2 ##### 模块介绍 1. 上电管理模块:该模块主要负责系统上电运行所需软硬件资源初始化,启动运行其他模块所需线程,处理命令接收模块发来的用户指令。由全局唯一的管理线程执行,独占一个CPU硬件核,一个线程绑定一个硬件核。 2. 命令接收模块:该模块主要负责接收来自用户输入的命令,并且解析命令,将命令发送给上电管理模块来执行。该模块独占一个CPU硬件核。 3. 业务流水线模块:该模块主要负责系统业务处理,包括接收数据包、解析数据包、分析检测数据包、分析汇聚检测结果、执行ACL策略、转发数据包。该模块以流水线形式运行,每条流水线独占一个CPU硬件核,利用多核CPU并行处理能力。(具体占用线程数后续补充) 4. AI检测模块:该模块主要集成ENS模块,对基于签名的规则无法检测的加密流量,由业务线程解析数据包将信息发送给AI检测模型进行分析,检测结果发送给业务流水线模块。(具体占用的线程数由观城科技确定后补充) 5. 日志模块:该模块主要负责汇聚业务流水线模块输出的检测信息日志、系统运行状态日志、恶意流量数据抓包等信息的持久化存储。独占个CPU硬件核。 6. 资源管理模块:该模块主要负责业务流水线模块、AI检测模块、日志模块运行时相关内存资源的管理。 ![模块交互图](https://images.gitee.com/uploads/images/2021/0827/092715_ad4ecc26_9537924.png "屏幕截图.png") #### 软件架构 软件架构说明 ![NIDPS](https://images.gitee.com/uploads/images/2021/0827/093641_023ae519_9537924.png "PMLNDPS.png") #### 安装教程 ##### 目录介绍 1. dpdk-stable-20.11.2:dpdk代码目录; 2. nidps-code : 项目代码目录; 3. nidps-doc : 项目文档目录; ##### 安装说明 1. 安装dpdk-stable-20.11.1; 目前254上已经安装,目录/home/nidps/dpdk-stable-20.11.2/ 2. 创建个人工程运行目录;如果个人目录在254上无需安装dpdk,导入环境变量即可 ``` export RTE_SDK=/home/nidps/dpdk-stable-20.11.2 export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig export LD_LIBRARY_PATH=/usr/local/lib64 ``` #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. git clone 本仓库 2. 本地代码编译没有错误; 3. git commit 4. git pull -r 5. git push origin master 6. #### 任务计划列表 - [x] 基本框架 - [x] TCP分段重组整合; deadline :8.31 - [x] L34规则加载模块整合; deadline :9.10 - [x] L7规则加载模块整合; deadline : 9.20 - [x] 协议解析(ip/tcp/udp/icmp/dns)整合; deadline :9.20 - [x] 数据库表老化机制 deadline : 9.15 - [ ] 红黄绿名单优化整合; deadline :9.20 - [x] 输出模块开发; deadline : 9.20 - [x] 基本框架集成测试; deadline :9.20 - [ ] 系统配置模块开发; deadline : 9. 30 - [x] 输出模块整合; deadline : 9.30 - [x] 检测模块开发与整合; deadline : 10.15 - [x] 集成检测模块与输出模块测试 deadline : 10.20 - [ ] 系统配置模块整合; deadline :10.15 - [ ] 集成系统配置模块测试; deadline : 10.20 - [ ] AI模块开发与整合; deadline :10.30 #### 问题记录 1. ===8.26==== : - tcp分段子功能:无法区分序列号反转与乱序场景;==========8.27 已修正; 2. ===9.23==== : - 代码中结构定义需要8字节对齐;========待梳理整改; 3. ====10.11=== : - 规则加载部分,内存申请未指定socketid; ====待整改; - 规则加载部分,需要规划相关统计值; ====待整改; - 增加msg字段; ====待整改; 4. ====10.13=== : - 错包解析暂不支持,后续统一规划处理。包括:ip tcp udp icmp 5. ====10.14=== : - 1. 增加端口号与应用层协议对应关系的配置;====待开发; - 2. 增加dns上行报文解析; ===待开发; - 3. 优化报文私有数据内存:对于比较大的字段值,如果存在于报文mbuf中则提供起始位置指针与长度;==待整改; - 4. 增加ip与域名映射关系的内存数据库表; ===待开发; 6. ====11.02=== : - 1. 流表字段内存整理;流记录字段过多或冗余会极大消耗内存; - 2. pktinfo 即mbuf私有数据区字段需要整理;mbuf 作为 dpdk 中报文的载体,它的内容会被频繁访问,其结构对 dpdk 程序的性能有影响。 - 3. 线程变量中的成员按线程角色区分赋值; - 4. 签名规则匹配引擎部分,全局变量的定义考虑按照与业务线程同socketid申请内存; - 5. 恶意流量包抓取功能(tcpdump)未开发; - 6. 流量模块检测模块未完成业务流程整合; - 7. 流量模块检测统计值累积需要开发去锁化; - 8. 文件头文件保护关系需要梳理; - 9. 内存资源使用与释放需要成对出现,待梳理; 7. ====11.09=== : - 1. 线程变量中的字段需要梳理哪些应该放在线程变量中,哪些不应该? - 2. tcp 分段重组功能接口入参要拆分 8. ====11.10=== : - 1. 宏值定义需要梳理,保证含义、value的统一。 - 2. 预处理多模扫过的option ,不再单模处理。 - 3. 多结果处理,待考虑? 9. ====11.12=== : - 1. 函数返回值梳理,梳理哪些错误返回值需要响应,哪些不需要响应; - 2. 跟张老师确定系统在IPS模式下,是二层转发还是3层转发? #### 优化可能点 1. ===9.09==== : - L34 规则加载: 2. ===10.11=== : - 端口分组时考虑:以数组代替链表; #### 更新日志 1. ===8.26==== : - 项目基本框架合入编译通过; - 合入tcp分段重组子功能; - 合入基础协议解析(ip/tcp/udp) 2. ===8.30==== : - 整合tcp分段功能; - 细化流表建立条件:UDP/TCP; 增加udp/tcp主处理函数 3. ===9.01==== : - TCP分段重组优化:红黄绿名单合入,未整合; 4. ===9.02==== : - 合入流表老化机制; 5. ===9.03==== : - 合入dns协议解析, 未整合; 6. ===9.06==== : - 合入L34精确Ip规则加载,未整合; 7. ===9.07==== : - 整合流表老化机制; - 基本测试环境搭建完成; 8. ===9.09==== : - L34 IP规则加载,整合完成; - icmp协议解析合入,未整合; 9. ===9.10==== : - 合入L7规则加载,待整合; - 修正系统初始化阶段部分代码逻辑错误; 10. ===9.18==== : - 基本框架集成测试;基本流程调通; - 修正部分代码逻辑错误; 11. ===9.23=== : - 修正因为8字节未对齐造成初始化失败,导致流表记录查找失败; - 新增rss功能保证相同流的数据包散列到同一个队列中; 12. ===10.11=== : - 整合L7规则加载; 13. ===10.13=== : - 整合icmp完成; 14. ===10.14==== : - 整合dns协议解析完成; 15. ===11.2===== : - 整合签名规则检测模块; - 整合检测结果输出模块; - 整合tcp分段重组业务流程; 16. ===11.9==== : - 优化业务流程 & 修正部分bug; 17. ===11.10==== : - 修正部分bug, 打通基本流程(收包-解析-签名规则匹配,不包括tls协议); 18. ===11.12==== : - 增加上电管理模块资源释放;