跳到主要内容

NS-3 网络仿真在 AI/HPC 中的应用

NS-3(Network Simulator 3)是开源的离散事件网络仿真器,建模粒度为每个数据包的路由、排队、拥塞控制响应。在 AI/HPC 集群通信仿真中,NS-3 通常不独立部署,而是作为 ASTRA-sim 和 SimAI 的高精度网络后端,提供包级网络行为的精确建模。


核心架构

事件驱动引擎

NS-3 是离散事件仿真器(Discrete-Event Simulator),核心运行机制:

  • 每个事件绑定一个仿真时间戳(simulation time)
  • 事件队列按时间戳顺序排列
  • Simulator::Run() 从队列中按序取出事件执行
  • 事件执行过程中可以生成新的未来事件(自持续事件链)
  • 终止条件:事件队列清空或显式调用 Simulator::Stop()

关键设计模式:

  • Attribute System:对象通过属性机制暴露可配置参数,无需重编译
  • Topology Helpers:将多步骤的设备/通道/连接创建抽象为单个操作
  • Container 模式NodeContainerNetDeviceContainerApplicationContainer 管理对象集合

Node / NetDevice / Channel 模型

Node(计算设备抽象)
|-- Application 列表(用户级程序,驱动仿真活动)
|-- Protocol Stack(TCP/UDP/IP 实现)
|-- NetDevice 列表(网络接口卡抽象)
|-- 连接到 Channel(通信子网抽象)

Node 采用图论术语"node",设计为空壳容器,通过聚合插入对象扩展功能。

NetDevice 封装软件驱动和模拟硬件,主要实现包括 PointToPointNetDevice(点对点直连)、CsmaNetDevice(以太网类)等。

Channel 表示通信介质,与特定 NetDevice 类型配对。包外发调用 NetDevice::Send(),内收通过注册的回调函数上传。

Packet 抽象

Packet 对象模型的关键特性:

  • 支持 Header/Trailer 的添加和移除
  • Tag 机制附加元数据
  • 零拷贝分片和合并
  • 序列化支持(用于分布式仿真)

AI/HPC 相关能力

RoCEv2 / RDMA 建模支持

NS-3 本身不包含 RDMA/RoCEv2 模块,但学术界和工业界有三个成熟的扩展实现:

ns3-rdma(MSRA,bobzhuyb):来自微软亚洲研究院 DCQCN 论文配套代码。实现 QBB Net Device(DCQCN + PFC)、Broadcom Switch Model(ASIC 缓冲区管理)、Egress Queue(MMU 缓冲 + 调度器)。支持 DCQCN 和 TIMELY。基于 NS-3.17(较老版本),活跃度低。

HPCC repo(阿里巴巴):来自 SIGCOMM 2019 论文。实现 HPCC + HPCC-PINT(INT 头压缩至 1-2 bytes)、DCQCN、TIMELY、DCTCP,以及 Broadcom 共享缓冲区交换机。

ns-3-alibabacloud(阿里云):当前最活跃、功能最全的实现,是 SimAI 的网络后端。核心增强包括:

  • 8 优先级队列 QBB/PFC
  • 基于队列深度的 ECN 标记 + 接收端 CNP 反馈
  • 完整 RDMA Host Stack(QP/RxQP 建模,窗口控制,ACK/NACK 处理)
  • 多 CC 算法:DCQCN, HPCC, HPCC-PINT, TIMELY, DCTCP
  • ECMP(5-tuple hash 等价多路径转发)
  • INT/PINT(带内遥测元数据注入)
  • NVSwitch(服务器内 GPU 通信模拟)

拥塞控制算法实现

算法核心机制NS-3 实现位置
DCQCNECN 1-bit 标记 -> 发送端降速ns3-rdma, HPCC, ns-3-alibabacloud
HPCCINT 多 bit 精确链路负载信息 -> 精准速率调整HPCC repo, ns-3-alibabacloud
TIMELYRTT 增量检测拥塞 -> 速率调整ns3-rdma(独立分支), ns-3-alibabacloud
DCTCPECN 标记比例 -> 窗口调整HPCC repo, ns-3-alibabacloud
PFC逐跳 PAUSE/RESUME 无损以太网所有三个实现
Swift端到端延迟信号SimAI 文档提及支持

交换机缓冲区模型:Broadcom ASIC 共享缓冲区模拟、MMU 入口控制(静态/动态阈值)、PFC 触发/ECN 标记/包丢弃三级决策、Egress 调度(严格优先级 + 轮询)。

拓扑建模

NS-3 内置支持 FatTreeHelper、BCubeHelper 等拓扑 Helper。AI/HPC 集群典型拓扑建模方式:

拓扑NS-3 建模方式
Fat-Tree / ClosFatTreeHelper 或手动构建 PointToPoint 链路
Rail-Optimized手动拓扑构建,SimAI 已实现完整模板
NVSwitch + Railns-3-alibabacloud 支持 NVSwitch 建模
Dragonfly手动构建

与 ASTRA-sim / SimAI 的集成

ASTRA-sim 集成

集成接口(AstraNetworkAPI):

sim_send(tag, src, dst, size, callback)  → 触发 NS-3 包级仿真
sim_recv(tag, src, dst, size, callback) → 注册接收回调,包到达唤醒事件

物理拓扑配置(文本格式,每行一条链路):

# <src> <dst> <bw_Gbps> <latency_μs> <err_rate> <queue_size>
0 1 100 1.0 0.0 1024000

逻辑拓扑(JSON 格式,允许逻辑维度与物理布局解耦):

{"logical-dims": ["8", "16"]}

代码来源:astra-network-ns3 仓库扩展自阿里巴巴 HPCC 项目,继承了其 RDMA/CC 能力,但拥塞控制建模精度有限。

SimAI 集成

SimCCL 产出的 P2P 流通过接口注入 ns-3-alibabacloud:

  • sim_send() — 生成 NS-3 网络包
  • sim_recv() — 注册回调,包到达后唤醒仿真事件

SimAI 的 NS-3 集成相比 ASTRA-sim 原版的核心改进:真实 QP 创建/销毁逻辑、perQP 粒度 NIC 配置、Max-Min 调度原则、CC 模块解耦可替换。这些改进是 SimAI 98.1% 精度的关键来源之一。


精度与性能边界

SimAI 验证数据(NSDI'25)

指标结果
整体对齐精度平均 98.1%(与真实集群对比)
测试规模小规模实验室 -> 大规模工业环境(512–1024 GPU)

对比参考:ASTRA-sim 原版 NS-3 后端在基础规模下误差 45.9%,扩展到 512 GPU 时误差飙升至 530.2%。SimAI 通过 ns-3-alibabacloud 将此改善到约 2% 误差。

误差来源分析:原版 NS-3 后端的高误差主要来自拥塞控制建模不足(CC 算法建模不精确)和 QP 行为简化(发送/接收窗口简化,无独立 per-QP 速率控制)。

规模限制

场景节点数内存估算
RDMA 数据中心仿真128–256 GPU约 2–8 GB
Fat-Tree + 全包级仿真512 节点约 10–20 GB
大规模 AI 集群1000+ GPU需要分布式仿真

规模扩展的挑战:

  • 节点数 x2 时仿真时间 x4–5(超线性增长)
  • 活跃流数量远多于节点数(每个流维护独立 CC 状态)
  • 大规模下分布式 NS-3(MPI)每个 rank 需实例化完整拓扑,限制了实际可扩展性

执行时间

经验数据:

  • 128 节点拓扑构建:约 3 秒
  • 512 节点拓扑构建:约 75 秒
  • RDMA 仿真通常比标准 TCP 仿真慢(更多 per-packet 事件:PFC、ECN 标记、CC 更新)
  • SimAI NS-3 Simulation 模式:分钟到小时级(取决于规模和流量量)

难以精确建模的行为

  • NCCL 内部优化:NCCL 的 bandwidth-aware graph 选择、transport 选择(IB Verbs vs Socket)、rank 到 GPU 的映射优化——这些高层策略需要在仿真器中显式重实现
  • GPU Direct RDMA:GPU 显存直接参与 RDMA 传输时的 PCIe/NVLink 带宽竞争
  • PFC 风暴和死锁:大规模下的 PFC 级联效应难以完全捕获
  • 微突发(Microbursts):纳秒级的流量突发与 NS-3 事件调度精度的权衡
  • 实际网卡固件行为:CC 算法的硬件实现可能与论文描述有偏差

不适合 NS-3 建模的场景

NS-3 的建模职责范围限于传输层到物理层(网络协议/拓扑),以下场景应使用其他工具:

不适合建模原因应该用什么
芯片内部微架构NS-3 抽象层在网络接口以上SystemC / gem5
DMA 引擎行为NS-3 不建模 CPU/GPU 内部数据搬运SystemC TLM
GPU 计算核心NS-3 是网络仿真器SCALE-sim / Timeloop
PCIe 总线仲裁芯片级总线协议超出范围SystemC / gem5
NVLink 协议细节NS-3 只能建模为带宽/延迟参数化链路专用 NVLink 模型
SRAM/HBM 存储层级存储器行为不在范围内DRAMSim / Ramulator
算子执行时序计算 kernel 的时钟级行为Timeloop / MAESTRO
芯片内部计算/通信 overlap 精确建模NS-3 不建模芯片内部状态SystemC TLM

NS-3 与 SystemC 的职责分界:

应用层(训练框架)     <- ASTRA-sim / SimAI
|
集合通信层(NCCL) <- SimCCL / MockNCCL
|
传输层(RoCEv2/TCP) <- NS-3 [开始]
|
网络层(路由/转发) <- NS-3
|
链路层(以太网/PFC) <- NS-3
|
物理层(信号/编码) <- NS-3 简化 [结束]
|
------ 分界线 ------
|
NIC 内部(DMA/QP) <- SystemC TLM [开始]
|
总线(PCIe/NVLink) <- SystemC TLM
|
片上网络(NoC) <- SystemC / BookSim
|
计算核心(ALU/MAC) <- SystemC RTL / gem5
|
存储(SRAM/HBM) <- SystemC TLM / DRAMSim [结束]

关键开源项目汇总

项目来源NS-3 版本核心能力活跃度
ns3-rdmaMSRA3.17DCQCN, PFC, ECN低(归档)
HPCC阿里巴巴~3.27HPCC, DCQCN, TIMELY, DCTCP
ns-3-alibabacloud阿里云较新全 CC 算法, QP, NVSwitch, INT
astra-network-ns3GT/Meta/Intel基于 HPCCASTRA-sim 集成
SimAI阿里云通过 ns-3-alibabacloud全栈 LLM 训练仿真

参考资料