成千上万的网络设备、海量的链路——一个 ping 解决不了的问题,需要一套专业的工具。 nettools 是百度内部跑了多年的黑盒监控工具集,现在开源了。
curl -fsSL https://nettools.rpcx.io/install.sh | sh
lidar 是一个基于 TCP SYN 的网络可达性探测工具。通过发送原始 SYN 报文并分析响应,判断目标端口是开放、关闭还是不可达。无需在远端部署任何软件。
无需在目标安装任何软件。只需目标 IP 和端口,利用内核 TCP 协议栈自动响应 SYN 报文即可判断可达性。
SYN-ACK = 端口开放,RST = 端口关闭/拒绝,Timeout = 不可达/丢包。区分网络层和应用层故障。
原始套接字构造 TCP SYN,macOS 通过 BPF 设备接收响应。绕过内核 TCP 栈,不影响系统连接。
支持逗号分隔多 IP,统一速率限制下轮询探测。每个目标独立统计,适合批量场景。
baize 是一个配置驱动、单进程双角色、为长期部署而设计的网络质量持续监控工具。默认每秒 5000 个探测包,统计窗口可调至 100ms,让偶发轻微丢包无处遁形。
确定性端口轮转算法,1000 个五元组同时探测,覆盖 ECMP 哈希空间所有路径。丢包五元组直接定位故障设备和端口。
每个探测包携带上一个时间窗口的发包数和起始端口对,Server 端完整还原五元组。不需要 NTP,不需要维护 Client 状态。
4 种 Salt 填充模式,专门检测 TCP/UDP 校验和发现不了的互补翻转。精确到哪个字节的哪一位被篡改。
Raw IP Socket + BPF 过滤器 + 8 路并行读 + 无锁设计。百度内部几千台机器上跑了多年。
bitflip 是命令行驱动的高频 UDP 探测工具,用于快速排查网络丢包和比特翻转。支持单向丢包检测和五元组级定位。bitflip6 是其 IPv6 版本,使用方式完全一致。
Client 和 Server 双端独立统计,对比两端数据即可判断丢包发生在正向路径还是回程路径,避免往返探测的误判。
全 1、全 0、交替位、互补交替,覆盖所有比特翻转类型。互补交替模式专门针对 TCP/IP Checksum 检测盲区。
自动覆盖 ECMP 多路径,检测到丢包或改包时输出具体五元组。结合 traceroute 拓扑,直接定位到故障设备和端口。
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
sudo
权限来设置 IP TOS/DSCP 值。
mping 是多目标 ICMP Echo 探测工具,支持 CIDR 网段展开、DNS 解析、硬件时间戳,一次命令探测成百上千个目标。mping6 是其 IPv6 版本。
传入网段自动展开所有 IP,支持 IPv4 和 IPv6。--max-targets 防止意外展开过大网段。
默认启用 SO_TIMESTAMPING,纳秒级延迟精度。macOS 自动回退到软件时间戳。
自动解析主机名(A/AAAA 记录),逗号分隔多 IP,混合使用 CIDR + DNS + 单 IP。
令牌桶限速精确控制 pps,按秒报告延迟、丢包率。支持 Verbose 逐包详情。
| bitflip / bitflip6 | baize | lidar | mping / mping6 | |
|---|---|---|---|---|
| 探测协议 | UDP | UDP | TCP SYN | ICMP Echo |
| 需要服务端 | 需要 | 需要 | 不需要 | 不需要 |
| 探测内容 | 延迟 + 丢包 + bitflip | 延迟 + 丢包 + bitflip | 延迟 + 可达性(SYN-ACK/RST/Timeout) | 延迟 + 丢包 + bitflip |
| 配置方式 | 命令行参数 | JSON 配置文件 | 命令行参数 | 命令行参数 |
| 多目标 | 多 IP | 多 IP | 多 IP | CIDR + DNS + 多 IP |
| 适用场景 | 临时排查、快速诊断 | 长期部署、持续监控 | 快速可达性探测 | 批量 ICMP 巡检 |
网络监控不是能不能做的问题,是做得够不够细致的问题。
每一条链路、每一个端口、每一个场景,都值得被监控。