百度 · 物理网络黑盒监控

nettools
大规模物理网络监控工具集

成千上万的网络设备、海量的链路——一个 ping 解决不了的问题,需要一套专业的工具。 nettools 是百度内部跑了多年的黑盒监控工具集,现在开源了。

500000+
内部部署节点
6
已开源工具
MIT
开源协议
60000/800000
单机 pps 探测上限, rawsocket/单五元组
一键安装
curl -fsSL https://nettools.rpcx.io/install.sh | sh
支持 Linux / macOS(amd64 / arm64),自动选择可写目录安装
工具集: baize(白泽) bitflip / bitflip6 evr kuiniu(夔牛) lidar(激光雷达) mping / mping6

lidar(激光雷达)— TCP SYN 网络可达性探测

最新发布 使用指南 →

lidar 是一个基于 TCP SYN 的网络可达性探测工具。通过发送原始 SYN 报文并分析响应,判断目标端口是开放、关闭还是不可达。无需在远端部署任何软件。

🎯

零部署探测

无需在目标安装任何软件。只需目标 IP 和端口,利用内核 TCP 协议栈自动响应 SYN 报文即可判断可达性。

🔀

精准分类

SYN-ACK = 端口开放,RST = 端口关闭/拒绝,Timeout = 不可达/丢包。区分网络层和应用层故障。

📡

Raw Socket + BPF

原始套接字构造 TCP SYN,macOS 通过 BPF 设备接收响应。绕过内核 TCP 栈,不影响系统连接。

多目标并行

支持逗号分隔多 IP,统一速率限制下轮询探测。每个目标独立统计,适合批量场景。

典型场景

机房内网络探测 海外机房可达性监测 LCC 机房探测 防火墙策略验证 网络割接前后对比 上线前连通性检查

baize(白泽)— 毫秒级网络质量持续监控

最新发布 使用指南 →

baize 是一个配置驱动、单进程双角色、为长期部署而设计的网络质量持续监控工具。默认每秒 5000 个探测包,统计窗口可调至 100ms,让偶发轻微丢包无处遁形。

🔀

ECMP 全路径覆盖

确定性端口轮转算法,1000 个五元组同时探测,覆盖 ECMP 哈希空间所有路径。丢包五元组直接定位故障设备和端口。

⏱️

无需时钟同步的单向丢包检测

每个探测包携带上一个时间窗口的发包数和起始端口对,Server 端完整还原五元组。不需要 NTP,不需要维护 Client 状态。

🔍

互补比特翻转检测

4 种 Salt 填充模式,专门检测 TCP/UDP 校验和发现不了的互补翻转。精确到哪个字节的哪一位被篡改。

生产级性能

Raw IP Socket + BPF 过滤器 + 8 路并行读 + 无锁设计。百度内部几千台机器上跑了多年。

典型场景

集群间 fullmesh 高频探测 机房间链路监控 混合云持续探测 专线 SLA 监控 网络改造保障 故障回切验证
部署方式:一个 JSON 配置文件 + 一个二进制文件。配合 Puppet/Ansible 批量下发,几十台机器分分钟到位。日志按天轮转,pprof 内置,线上排查不需要重新编译。

kuiniu(夔牛)— AI 训练集群 GPU NIC 互联探测

最新发布 使用指南 →

kuiniu 是面向 AI 训练集群 GPU 网卡(RoCEv2/UDP)的双向互联探测工具。以「GPU 对」为最小单元同时发起对称探测,单进程内同时承担 client + server 两种角色,支持 role=both 一行配置部署到所有训练节点。

🎮

GPU NIC 对称探测

按 GPU 网卡 IP 绑定源地址发包,覆盖训练节点真实使用的 RoCEv2 路径。两端探测对称展开,丢包归因精确到方向。

🔗

GPU 对数组模型

local_gpu_addrs[i] ↔ remote_gpu_addrs[i] 平行数组配置,N 张 GPU 卡一次性展开 N 个对称探测对,单机多卡场景天然适配。

🔄

role=both 单配置部署

一份 JSON、一行 role=both 同时启动 client + server,自动维护 localGPUSet 防止自回声。所有节点配置同构,运维成本极低。

🛡️

4-Salt bitflip 检测

复用 baize 同款 4 种 Salt 填充模式,专门覆盖 RoCE 链路上 TCP/UDP 校验和发现不了的互补比特翻转,定位到 GPU 网卡或交换机端口。

典型场景

AI 训练集群 GPU 互联监控 RoCEv2 链路丢包定位 GPU 网卡 bitflip 排查 训练前预检 故障复盘 大模型训练保障
部署方式:每台训练节点一份 JSON 配置 + 一个二进制,role=both 同时承担 client/server。日志按天轮转(与 baize 共用 util.RotateWriter),同时输出到终端和文件,pprof 内置,故障现场排查不需要二次部署。

evr — 基于 VXLAN 的 EVR 设备探测

最新发布 使用指南 →

evr 是面向 EVR(VXLAN 边缘虚拟路由器)设备的单端探测工具。借助 EVR 自身的 VXLAN 反射能力,单进程在本机即可完成探测——无需在对端部署 server,通过构造「自环内层帧 + payload 内嵌 EVR 源 IP」的巧妙设计,把 VXLAN 隧道路径和 EVR 设备健康度全部覆盖。

🔁

自环内层帧设计

内层 IPv4 帧的 src 和 dst 都填本机 IP,EVR 反射回的内层报文直接命中本机原始套接字,免去额外路由配置和对端服务。

🧬

payload 内嵌 EVR srcIP

真实的 EVR src IP 写在 payload[24:28],回包通过 peerByEVRSrc 映射归因到具体目标,单 socket 同时监控多个 EVR 设备。

🎭

mock_src 源地址伪造

通过 IP_HDRINCL + ipv4.NewRawConn 自建外层 IPv4 头,可伪造 outer src IP,灵活验证 EVR 在不同源地址下的转发策略。

🛡️

4-Salt bitflip 检测

复用 baize/kuiniu 同款 4 种 Salt 填充模式,覆盖 VXLAN 隧道+EVR 反射全路径上的比特翻转,发现校验和漏检的链路问题。

典型场景

EVR 设备健康度监控 VXLAN 隧道路径监控 多 EVR 并发对比 NIC bitflip 检测 虚拟网络故障定位
部署方式:一台探测机 + 一份 JSON 配置 + 一个二进制文件,无需在 EVR 对端运行 server。日志按天轮转,pprof 内置,CLI flag 可覆盖配置文件中的任意参数,运维同 baize/kuiniu。

bitflip / bitflip6 — 丢包与比特翻转检测

稳定版 使用指南 →

bitflip 是命令行驱动的高频 UDP 探测工具,用于快速排查网络丢包和比特翻转。支持单向丢包检测和五元组级定位。bitflip6 是其 IPv6 版本,使用方式完全一致。

📡

单向丢包定位

Client 和 Server 双端独立统计,对比两端数据即可判断丢包发生在正向路径还是回程路径,避免往返探测的误判。

🛡️

4 种 Salt 模式覆盖

全 1、全 0、交替位、互补交替,覆盖所有比特翻转类型。互补交替模式专门针对 TCP/IP Checksum 检测盲区。

🎯

五元组级定位

自动覆盖 ECMP 多路径,检测到丢包或改包时输出具体五元组。结合 traceroute 拓扑,直接定位到故障设备和端口。

🔄

IPv4 + IPv6 双栈

bitflip 覆盖 IPv4,bitflip6 覆盖 IPv6。相同的参数格式,相同的使用体验。

快速体验

# 克隆并编译
git clone https://github.com/baidu/nettools.git
cd nettools && make build

# 服务端
./bitflip

# 客户端 — 5000 pps 持续探测
sudo ./bitflip -r client -s 10.0.0.1
Note:Client 端需要 sudo 权限来设置 IP TOS/DSCP 值。

mping / mping6 — 多目标 ICMP 批量探测

最新发布 使用指南 →

mping 是多目标 ICMP Echo 探测工具,支持 CIDR 网段展开、DNS 解析、硬件时间戳,一次命令探测成百上千个目标。mping6 是其 IPv6 版本。

🌐

CIDR 批量展开

传入网段自动展开所有 IP,支持 IPv4 和 IPv6。--max-targets 防止意外展开过大网段。

⏱️

硬件时间戳

默认启用 SO_TIMESTAMPING,纳秒级延迟精度。macOS 自动回退到软件时间戳。

🔍

DNS + 多 IP

自动解析主机名(A/AAAA 记录),逗号分隔多 IP,混合使用 CIDR + DNS + 单 IP。

高速率 + 实时统计

令牌桶限速精确控制 pps,按秒报告延迟、丢包率。支持 Verbose 逐包详情。

典型场景

机房批量连通性巡检 CIDR 网段扫描 网络质量基线采集 割接前后对比 IPv6 网络验证 DNS 域名可达性

工具对比:怎么选?

bitflip / bitflip6 baize kuiniu evr lidar mping / mping6
探测协议 UDP UDP UDP(GPU NIC / RoCEv2) UDP / VXLAN(EVR 反射) TCP SYN ICMP Echo
需要服务端 需要 需要 需要(role=both 单进程双角色) 不需要(EVR 设备本身反射) 不需要 不需要
探测内容 延迟 + 丢包 + bitflip 延迟 + 丢包 + bitflip 延迟 + 丢包 + bitflip(GPU 间) 延迟 + 丢包 + bitflip(VXLAN 路径) 延迟 + 可达性(SYN-ACK/RST/Timeout) 延迟 + 丢包 + bitflip
配置方式 命令行参数 JSON 配置文件 JSON 配置文件 + 命令行覆盖 JSON 配置文件 + 命令行覆盖 命令行参数 命令行参数
多目标 多 IP 多 IP GPU 对数组(local↔remote 平行数组) 多 EVR(vtep#evrSrc[#mockSrc] 列表) 多 IP CIDR + DNS + 多 IP
适用场景 临时排查、快速诊断 长期部署、持续监控 AI 训练集群 GPU 互联监控 EVR / VXLAN 虚拟网络监控 快速可达性探测 批量 ICMP 巡检
简单来说:UDP 质量监控用 bitflip/baize,TCP 可达性探测用 lidar,ICMP 批量巡检用 mping。bitflip 适合临时排查,baize 适合长期部署,lidar 适合无需服务端的 TCP 探测,mping 适合批量 ICMP 延迟和丢包检测。kuiniu 专门面向 AI 训练集群 GPU NIC 互联探测,按 GPU 对组织、role=both 同构部署。evr 面向 VXLAN/EVR 虚拟网络探测,单机部署即可,借助 EVR 设备本身的 VXLAN 反射做无对端探测。
网络监控不是能不能做的问题,是做得够不够细致的问题。
每一条链路、每一个端口、每一个场景,都值得被监控。