为科研人员和专职工作者设计的大规模网络测量框架
SMap 是为大规模网络测量设计的 高性能编程框架,其基础功能与 ZMap 类似,但在 可扩展性、工程化规范 和 定制化能力 上进行了深度优化。SMap 基于现代编程语言RUST进行开发,具有高性能、高稳定性、代码清晰易维护等优势。与传统网络测量工具相比,SMap 的核心差异体现在:
- 模块解耦:将探测模块、目标生成算法、结果处理等组件完全分离,用户可通过组合模块快速构建定制化工具。
- 模式(Mode)机制:提供
cycle_v4
、file_reader
等基础模式作为模板,支持通过 ≤100行代码 实现新探测逻辑。
功能 | SMap | ZMap | ZMapv6 |
---|---|---|---|
自定义探测逻辑 | ✅ 支持快速开发完全自定义的探测逻辑,提供宏和模块接口 | ❌ 需修改核心代码 | ❌ 需修改核心代码 |
IPv4/IPv6 双栈 | ✅ 原生支持 | ❌ 仅支持IPv4 | |
可维护性 | ✅ 基于RUST的无成本抽象技术,各核心组件完全独立,模块接口严格规范 | ❌基于C编写,各部分没有独立封装 | ❌基于C编写,各部分没有独立封装 |
自定义探测模块 | ✅ 提供探测模块开发的统一规范,并支持自定义探测模块接口以用于活跃探测、拓扑探测等不同目的 | ||
探测算法热插拔 | ✅ 支持嵌入任何类型的大规模网络测量算法 | ❌ 仅能用于基础的网络测量任务 | ❌ 仅能用于基础的网络测量任务 |
底层算法优化 | ✅ 对核心底层算法进行深度优化,如优化后的乘法循环群迭代器算法等 | ❌ 对IPv6等探测场景仅编写了能进行探测的最基础模块,黑名单等机制实际上无效 |
- 算法即插即用:内置
AddrMiner-S
(IPv6 地址生成)、IPv6 Aliased Prefixes Checker
(IPv6别名检测)、Pmap
(活跃端口探测)等算法模块。 - 全面的基础探测模式:内置各类基础探测模式,适用于各种大规模网络测量的常见任务。
- 与大型探测系统快速集成:借助Rust的无成本抽象技术,SMap提供统一的输入和输出接口,外部工具可以通过构造统一的指令结构体进行控制。
📌 典型应用场景:
- 互联网普查(IPv6 地址空间测绘)
- 关键基础设施拓扑发现
- 新型网络协议部署监测