网络流量分析利器-可视化网络-netflow【1】-基础原理
网络流量分析利器-可视化网络-netflow【2】-Cisco NetFlow 工作原理介绍及配置
网络流量分析利器-可视化网络-netflow【3】-netflow版本5和版本9区别
网络流量分析利器-可视化网络-netflow【4】-接收器nfdump简介
网络流量分析利器-可视化网络-netflow【5】-linux下数据采集器fprobe
网络流量分析利器-可视化网络-netflow【6】-生产网流量监控架构设计
fprobe参数 -e
fprobe参数 -n -k

交换机netflow的不足

首先要知道,交换机在处理数据包的时候是会额外消耗资源的,比如cpu和内存,经过我们长时间的测试,发现这个消耗非常高,如果采样比为1:2的比例下,在一个万兆网里,cpu直接上升10%,当然这个上涨程度与网络中的流量大小成正比,但很明显,这个消耗,太大,如果选择大采样比,比如1:1024,那么在还原真实流量的时候,误差会非常大,曾经一次测试发现,误差高达20%。所以我们得另辟蹊径,找一个替代产品。

有人说,我们只需要大概数据就好,但是在做成本核算的时候,如果只是大概,就会引起成本承担者的不满,他会认为你多给他算成本了,所以采样比1:1的工具才是我们寻找的目标。

在linux下有个软件叫fprobe,可以将接口下的数据包转换成netflow格式并发送数据到指定的接收器中,默认netflow v5。

安装

环境:CentOS 6&7
软件:
链接:百度云盘-fprobe下载 提取码:ttkz
安装命令:rpm -ivh fprobe-1.1-2.el7.lux.x86_64.rpm

参数

我也没搞懂全部参数的含义,用了几个参数,就记录下来。

-p:不要设置成混杂模式,默认混杂模式,混杂模式可以监听所有到达比接口的数据包,比如镜像数据。
-i:监听网卡。
-f:筛选规则。
-e:这个参数用于发送频率,如果设置很大,会发现很久都没有数据包发到采集器中。测试效果见:[fprobe参数 -e](https://www.eazblog.com/fprobe%e5%8f%82%e6%95%b0-e/)
-n:指定netflow的版本
-a:指定发送源地址,在采集器上做数据筛选用
-b:内存大小(不太懂)
-m:flow缓存在内存使用上限

实例

监听eth0网卡,将数据每10s一个周期发送到10.2.82.60的9999端口

fprobe -i eth0 -e 10 10.2.82.60:9999

监听eth0网卡,使用非混杂模式,并指定原地址为10.6.6.6,发送到10.2.82.60的9999端口

fprobe -i eth0 -p -a 10.6.6.6 10.2.82.60:9999

监听bond1,只截取关于10.10.10.10且端口为80的数据包,生成v7版本,发送到10.2.82.60的9999端口

fprobe -i bond1 -n 7 -f "host 10.10.10.10 && port 80" 10.2.82.60:9999

扩展

思科交换机镜像下来的数据包通过fprobe转换成netflow数据正确,但是华为交换机镜像下来的数据经过fprobe转换之后数据有错误,需要使用-k参数进行VLAN heade的去除,详见:fprobe参数 -n -k