我们把 GitHub 上的流量分析工具都装了一遍
这篇只比一件事:一个网管拿到工具,到看见第一张图、并且相信图上的数字,中间要走多远。traffic66 在这条路上走得最短;安全检测和 ntopng 同一档;规模、深度包检测和社区积累,别人更强。每一项都逐个对比过,表在后面。
参赛选手
我们找了 GitHub 上和 sFlow、NetFlow、IPFIX 有关、星数靠前的项目。有的是完整产品,有的只是采集器,有的已经归档。星数是 GitHub 页面上的数字。
| 项目 | 星数 | 是什么 | 要先装好的东西 | 状态 · 许可证 |
|---|---|---|---|---|
| ntopng | 8.1k | Web 流量监控,nDPI 深度包检测 | Redis;收 NetFlow/sFlow 要配 nProbe,nProbe 需要授权 | 活跃 GPL-3.0 |
| FastNetMon | 3.7k | DDoS 检测,可联动 BGP 黑洞 | Linux;看图要另配 InfluxDB/Grafana 等 | 活跃 GPL-2.0 |
| ElastiFlow(旧版) | 2.5k | Logstash + Kibana 看板 | Elasticsearch、Logstash、Kibana | 2024-03 归档 |
| Akvorado | 2.3k | 采集、补全、可视化 | inlet、Kafka、outlet、ClickHouse,官方 compose 里还有 Redis | 活跃 AGPL-3.0 |
| pmacct | 1.2k | 采集守护进程,带 BGP/BMP | 自己选数据库和看板(常见是 Grafana) | 活跃 GPL(拟改 BSD 类) |
| vflow | 1.2k | 采集器,输出到 Kafka | Kafka 以及下游存储和看板 | Apache-2.0 |
| nfdump | 922 | 命令行收集和查询工具集 | 没有现成 Web 界面 | 活跃 BSD |
| Cloudflare goflow | 919 | Cloudflare 内部用的采集器 | Kafka 以及下游 | 2025-02 归档 |
| GoFlow2 | 798 | 高性能采集器 | 输出到 Kafka 或文件,存储和界面自己搭 | 活跃 BSD-3 |
| traffic66 | 刚起步 | 采集、存储、Web 和终端界面、检测、pcap 分析 | 没有。一个可执行文件,DuckDB 内嵌 | 活跃 源码可用(见下文) |
新版 ElastiFlow 已更名 NetObserv Flow,闭源,免费的 Community 版限 500 条流记录/秒。
第一项:从下载到第一张图
这是我们最在意的一项。网工下午三点接到“出口跑满了,看看是谁”,没有人想先学 Kafka。下面是各家从零到能看图的步骤,按官方文档最短路径数:
traffic66 第一次启动后用 admin / traffic66 登录,登录后先改一个自己的密码。Windows 上双击 traffic66.exe 就自动打开浏览器。想先看效果,traffic66 demo 会造一个模拟公司网络,带一天历史数据和一次完整的攻击过程。
顺带一提,Windows。表里的项目基本只跑在 Linux 或 Docker 上。traffic66 的 Windows、Linux、macOS 是同一份代码编出来的原生程序,不用 WSL,也不用 Docker。很多中小单位的网管机就是一台 Windows。
第二项:数字能不能和设备计数器对上
流量工具最常被问的问题:图上说出口 800M,Zabbix 里 SNMP 取的是 600M,到底信哪个?
流量数字本来就是估算值:采样到的包乘以采样率。traffic66 专门做了一页接口对账,把每个接口的流量估算和设备自己的计数器(sFlow 计数器或 SNMP)画在同一张图上,算出偏差和采样本身的统计误差。偏差超出误差范围,会直接写出最可能的原因:有接口没开采样、同一份流量在两个口各采了一次、导出包在路上丢了,或者采样率还没收到。
为了让数字对得上,后台还做了几件不显眼的事:用设备实际生效的采样率;采样率没到之前先扣住记录,不按 1:1 乱算;补偿导出时丢掉的包;把长流按持续时间摊到每一分钟;给 NetFlow 字节数补上以太网开销,因为接口计数器是算它的。
对手们在这件事上做到哪一步:
接口计数器在别家要么不读,要么是另一张图,摆在那里让你自己比。把“对不上的原因”写成结论的,我们没找到第二家。
第三项:打开就有结论,不用先学查询语言
概览页回答“现在多少、谁在用、和昨天比怎么样”。每个地址、端口、应用、国家都能点:只看它、排除它、看它的流记录、看它的详情页。整个界面的设计目标是让人尽量不用打字。
同一件事,对手们的界面:
第四项:攻击能不能在采样数据里找到
采样数据做安全检测是出了名的难:1:4096 的采样下,一次扫描可能只剩几个包。traffic66 的检测规则按采样后的数据重新校过阈值,演示环境里的整条攻击链都能找出来:内网扫描、端口扫描、暴力破解、横向移动、向陌生地址的大量上传,再加上威胁情报命中。同时,一天的正常流量里除了互联网上的扫描器敲网站,不出别的误报。
这一项要说实话:
所以安全这一项,我们和 ntopng 是同一档。我们的优势在于:这些检测在一个程序里、不用额外配置,而且专门针对采样数据调过。
还有一个顺手的功能:traffic66 a.pcap b.pcapng 直接分析抓包文件,和实时数据分开存放,Ctrl+C 退出时自动删除导入的数据。ntopng 也能读 pcap,这一项算打平。
总成绩单
把上面几项和后面要说的弱项放在一张表里。实心是做到了,半个是部分做到或要付费、要另装,空心是没有。
| 能力 | traffic66 | ntopng | Akvorado | ElastiFlow 新版 | FastNetMon | 采集器类GoFlow2 · pmacct · vflow · nfdump |
|---|---|---|---|---|---|---|
| 一个程序装完就能用 | Redis + nProbe 授权 | Kafka + ClickHouse | Elasticsearch + Kibana | 看图另接 Grafana | 存储和界面自建 | |
| Windows 原生运行 | Windows 为演示版 | |||||
| 自带 Web 界面 | Kibana 看板 | 商业版 | ||||
| 中文界面 | Kibana 有,看板英文 | |||||
| 流量与接口计数器对账 | 企业版有 SNMP 图 | 自己拼图 | ||||
| 安全检测 | 检测项最多 | 威胁情报补全 | 只做 DDoS,可自动处置 | |||
| pcap 离线分析 | ||||||
| 终端界面 | 命令行 | nfdump 命令行 | ||||
| 七层应用识别 | nDPI | |||||
| 大规模横向扩展 | 单机 5,000 条/秒 | 付费档 | ||||
| OSI 开源许可证 | 源码可用 | 闭源 |
前八行里,traffic66 每一行都是实心;八行全实心的,表里只有这一列。后三行是我们的短板,下一节细说。
别人做得更好的地方
选工具之前,请认真看这一节。
规模
traffic66 按单机每秒 5,000 条流设计,DuckDB 内嵌。运营商级别的流量,Kafka 加 ClickHouse 的横向扩展架构才是正解。
深度包检测
ntopng 有 nDPI,能识别几百种七层协议。traffic66 只看流,应用靠端口识别,不解析包内容。
DDoS 自动处置
FastNetMon 检测到攻击能直接发 BGP 黑洞或 FlowSpec。traffic66 只报告洪泛,不动路由。
路由数据和灵活度
pmacct 能同时收 BGP 和 BMP,把路由信息并进流记录,输出到几乎任何地方。traffic66 是成品,不是积木。
年头和社区
ntopng 有近三万次提交,nfdump 跑了二十年。traffic66 刚开始攒星,经受的生产检验远远不够。
许可证
它们是 OSI 认可的开源许可证。traffic66 是源码可用:评估免费,100 人以下的组织生产使用免费,更大的组织 30 天后需要登记。功能不锁,但这不是开源。
怎么选
我们有把握的是三件事:装得快、看得懂、数字对得上。其他几项,欢迎来 GitHub 提 issue,把差距一项一项缩小。