1.介绍

sFlow技术是一种以设备端口为基本单元的数据流随机采样的流量监控技术,不仅可以提供完整的第二层到第四层甚至全网范围内的实时流量信息,而且可以适应超大网络流量(如大于10Gbit/s)环境下的流量分析,让用户详细、实时地分析网络传输流的性能、趋势和存在的问题。sFlow监控工具由sFlow Agent和sFlow Collector两部分组成。Agent作为客户端,一般内嵌于网络转发设备(如交换机、路由器),通过获取本设备上的接口统计信息和数据信息,将信息封装成sFlow报文,当sFlow报文缓冲区满或是在sFlow报文缓存时间(缓存时间为1秒)超时后,sFlow Agent会将sFlow报文发送到指定的Collector。Collector作为远端服务器,负责对sFlow报文分析、汇总、生成流量报告。

2.拓扑

使用两台虚拟机,虚拟机1部署Mininet服务并配置sFlow Agent,虚拟机2安装sFlow Collector,在虚拟机1的Mininet环境中模拟创建一个交换机下挂2个主机的网络拓扑,通过执行ping测试来产生网络流量,然后通过在Collector Web界面查看监控结果。

3.安装sFlow

wget https://inmon.com/products/sFlow-RT/sflow-rt.tar.gz

tar -xvzf sflow-rt.tar.gz

cd sflow-rt

./start.sh

http://localhost:8008/html/index.html

3.1启动验证

netstat anput|grep 6343或ps ef|grep sflow若看相应进程,则启动成功。

4.部署sFlow Agent

4.1登录到虚拟机1,用mn挂2个主机。重启一个终端输入:

#sudo ovs-vsctl -- --id=@sflow create sFlow agent=s1 target=\"10.0.0.4:6343\"  header=128  sampling=64 polling=1 -- set bridge s1 sflow=@sflow

待sFlow Agent配置好后,会生成一个UUID。

(1) agent:虚拟机对应的某个监控流量的网卡,本实验用s1网卡产生和监控流量;

(2) target:sFlow Collector的IP,默认端口6343;

(3) bridge:需要开启sflow的网桥;

4.2查看已经配置的Agent信息:

# sudo ovs-vsctl list sflow

如果上述命令出现错误的话,通过ovs-vsctl remove bridge [bridge_name] sflow [uuid]重建。

4.3查看交换机端口名称与端口编号的对应关系:

#ip link

查看交换机端口名称与端口编号的映射关系。如下图eth0对应的编号是2,s1对应的编号是19。登录sFlow-rt页面,进入监控的端口列表页面,如下编号为19、2的端口都有监控,可选择19查看。

5.查看监控结果

登录sFlow Collector Web页面,查看Agents中可知已将虚拟机1已加到被监控对象中,通过上述操作步骤,也可以监控多个。

选中端口ifinpkts参数,可看到端口接收数据包的速率,也可查看ifspeed、ifoututilization等监控信息。

6.模拟网络流量

h1 ping -f h2//洪泛

iperf h1 h2//大数据包