sFlow入门初涉

2014-11-21 by muzi

前言

sFlow是一个应用在高速交换网络中的监控软件。sFlow需要交换机支持才能使用,万幸OpenvSwitch支持这个功能。netflow同样也是类似功能的软件,可惜没有接触过,也只是听过名字而已。第一次接触到sFlow之后,就觉得很感兴趣,跟着SDNLAB的教程做了一遍之后,记录下自己的学习过程。

安装sFlow

下载sFlow代码:

http://pan.baidu.com/s/1mgmOVck

解压缩,安装:

tar -zxvf sflow.tar.gz
cd sflow/sflow-rt
./start.sh

此时通过浏览器127:0.0.1:8008可以查看到生成的页面。

实验步骤

本实验步骤将介绍如何在一台机器上完成sflow流量监控实验。实验需要运行一个控制器,可以使用mininet自带的控制器,也可以使用RYU等控制器。然后运行mininet,设置OVS的sFlow功能,从而从8008端口上查看到相应的数据。

启动mininet

sudo mn

或者

sudo mn --controller=remote,ip=[controllerip]

开启OVS的sFlow功能

为了让mininet中创建的OVS和本地网卡相连,从而使得8008端口可以通过网卡获取到mininet中流量数据,我们需要将某个网卡加入到OVS生成的bridge上。选择最简单的eth0即可,不过如果eth0是连接外网的网卡的话,很可能添加到bridge之后,就无法上网了。

ovs-vsctl add-port s1 eth0

设置s1的IP,使得交换机可以作为sFlow agent与sFlow Collector通信。例如,给s1使用eth的IP:10.108.144.45,此举确保IP是可用的。

 ifconfig s1 10.108.144.45 netmask 255.255.255.248

配置之后,查看配置是否生效:

ifconfig s1

开启OVS的sFlow功能:

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

其中agent指的是需要作为sFlow agent的网卡,target是目标的sFlow Collector。

查看配置是否生效:

ovs-vsctl list sflow

查看结果如下图:

list功能可以查看很多内容,如:

ovs-vsctl list port
ovs-vsctl list queue
ovs-vsctl list qos

监控网络流量

打开127.0.0.1:8008,点击agent等栏目能看到对应的信息。在mininet中使用pingall,iperf iperfudp等命令产生流量,并查看统计情况。实例如下:

后语

在网络中,如果能实时监控到网络的流量,那么就可以根据网络流量数据做出许多Traffic Engineering的操作。所以对于一个网络而言,实时的网络流量数据至关重要。本篇教程是在阅读了SDNLAB网站的教程之后,自己总结的单机版sFlow部署。更多详细的内容,大家可以到SDNLAB去查看。