halladj/simulation-scripts
GitHub: halladj/simulation-scripts
基于 NS-3 的网络仿真框架,通过移动 IoT agent 穿越密度梯度场并触发上下文相关的多类型 DDoS 攻击,生成用于智慧城市 IoT 入侵检测研究的带标注基准数据集。
Stars: 0 | Forks: 0
# DynIoT-DDoS — NS-3 仿真框架
生成 **[DynIoT-DDoS 数据集](https://doi.org/10.5281/zenodo.21627584)**:一个针对智慧城市 IoT 的移动性感知、
多攻击 DDoS 基准测试。单个移动 IoT agent 会穿越一个包含 61 个固定节点的密度梯度场,同时路径上的恶意节点会发起
**上下文触发**的攻击,仅当 agent 处于其无线电范围内时才会触发攻击,因此
对抗性流量会与合法的、由移动引起的流量激增同时发生。
- **数据集:** https://doi.org/10.5281/zenodo.21627584 · https://github.com/halladj/DynIoT-DDoS
- **攻击:** UDP flood、TCP flood、ICMP flood、MAC 层信道干扰
- **输出:** 每秒时序 CSV + 每流 CSV,均已标记
## 环境要求
| 组件 | 版本 | 备注 |
|---|---|---|
| NS-3 | **3.43** | 包含 Python 绑定 |
| cppyy | **3.1.2** | **请锁定此版本** — 详见下文 |
| Python | 3.10+ | |
| PyYAML | 任意 | 用于读取 `nodes.yaml` |
```
# 在 NS-3 virtualenv 中
pip install 'cppyy==3.1.2' pyyaml
cd /path/to/ns-allinone-3.43/ns-3.43
./ns3 configure --enable-python-bindings && ./ns3 build
```
## 安装说明
克隆此代码仓库,然后将 `Makefile` 指向你的 NS-3 安装路径:
```
NS3_DIR := /path/to/ns-allinone-3.43/ns-3.43
OUTPUT_DIR := /path/to/output
```
`SCENARIO` 是相对于 `Makefile` 进行解析的,因此无需修改其他路径。
## 复现已发布的数据集
```
make validate ATTACK_TYPES="udp_flood tcp_flood icmp_flood jamming" JOBS=18
```
将 `JOBS` 设置为大约(核心数 − 2)。在 20-vCPU 的主机上大约需要 ~2.5 小时。
**预期输出:** `184 succeeded, 116 failed, 300 total` →
`combined_timeseries_features.csv` (11,084 行) 和 `combined_flow_features.csv` (795,683 行)。
### 其他目标
| 目标 | 用途 |
|---|---|
| `make sim` | 使用默认参数运行单个场景 |
| `make topo` | 重新生成 `nodes.yaml`(菱形拓扑) |
| `make concat` | 合并现有的各场景 CSV |
| `make batch-parallel` | **较旧的**单攻击 603 场景网格 — 并非已发布的数据集 |
| `make help` | 显示所有目标和变量 |
## 目录结构
```
discovery_collab_simulation.py entry point
run_scenarios.py batch runner (grid sweep, parallel, --resume)
generate_topology.py builds nodes.yaml
lib/
core/ config, constants, node loader
nodes/ node containers, malicious tracking
network/ 802.11n ad hoc stack, range propagation
mobility/ constant-position + waypoint models
protocols/ UDP discovery, TCP collaboration
attacks/ udp_flood, tcp_flood, icmp_flood, jamming (+ registry)
features/ FlowMonitor sampling → CSV
```
## 仿真概述
在菱形场地(W = 100 m, H = 76 m)中分布着 61 个固定节点,共有 13 列,列间距为 8 m,每列节点数呈峰值分布
`{1,1,3,5,7,7,9,9,7,5,3,3,1}`。一个移动 agent 的速度为 1 m/s,通信范围为 20 m,
采用 IEEE 802.11n ad hoc (IBSS) 模式,以及硬截止范围传播模型。两阶段流量:UDP 广播
邻居发现,随后是持续的 TCP 协作。攻击时间窗口是通过
计算 agent 移动轨迹与各攻击者范围之间的圆与线交点来确定的。
网格参数:起始偏移量 `d ∈ {0, 20, 40}` m · 移动角度 `α` 以 15° 为步长 ·
攻击者数量 `n ∈ {1, 3, 5}` · 路径间距 `s ∈ {8, 24}` m。
## 引用
```
@dataset{halladj2026dyniotddos,
author = {Halladj, Hamza and Sa\"{i}douni, Djamel Eddine and Maati, Bouchera and D\'{i}az, Gregorio},
title = {{DynIoT-DDoS}: a mobility-aware, multi-attack {DDoS} detection dataset for {Smart City IoT}},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.21627584}
}
```
## 许可证
MIT。
标签:DDoS检测, NS-3, 恶意代码分类, 数据集生成, 智慧城市, 物联网, 网络仿真, 逆向工具