采用sFlow工具实现流量监控—实验
学习目标
- 采用sFlow工具实现流量监控
学习内容
- 理解sFlow-rt的基本配置与操作;
- 掌握mininet中sFlow agent的配置过程
- 实验原理
sFlow的部署分为两部分:sFlow agent和sFlow collector。sFlow agent内嵌入网络设备中,获取设备的实时信息并封装成sFlow报文发送给sFlow collector。
sFlow-rt可统计到每个接口的流量信息,通过sFlow-rt的rest api获取json数据并对json数据进行解析获得。对解析到的数据进行判断分析后即可实施策略。
选择sFlow-rt好处:sFlow-rt可以提供周期性的网络接口统计采样和数据包采样,能够提供各接口的流量信息,且几乎不会对被统计设备造成任何负担,管理成本极低。
关于如何下载和使用sFlow-rt工具请参考我的这篇 博客
实验拓扑
如下图
实验仿真
启动sFlow-rt以及floodlight控制器
切换到sFlow-rt目录并启动sFlow-rt
cd sflow-rt/ ./start.sh
打开浏览器输入:
localhost:8080
如下图说明floodlight控制器启动成功
新开一个终端,切换到floodlight/example目录,执行以下命令查询虚拟机交换机dpid
cd floodlight/example ./cli.py switch
在输出结果中寻找dpid号如下
切换到floodight安装目录下
touch dropkt.json sudo chmod 777 dropkt.json sudo gedit dropkt.json
执行以下命令创建文件,并使用vim命令编辑该文件
在dropkt.json文件中添加如下内容,switch对应的编号则为之前获取的虚拟机交换机dpid
执行以下命令启动floodlight
java -jar target/floodlight.jar
创建拓扑
新开一个终端,在/mininet目录下创建文件topo-1sw_3host.py,
sudo touch topo-1sw_3host.py sudo chmod 777 topo-1sw_3host.py gedit topo-1sw_3host.py
并如下添加内容
添加完成后保存退出。
执行以下命令启动Mininet,生成测试拓扑结构
sudo mn --custom /home/administrator/Desktop/mininet/topo-1sw_3host.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpenFlow10
说明
–mac指定虚拟主机的mac地址顺序编号,若不带此参数则随机编号
–controller指定of交换机的控制器
–switch指定虚拟交换机的类型,ovsk表示虚拟交换机为ovs Kernel mode
–custom指定自定义拓扑文件
–topo指定加载拓扑的名字
部署sFlow agent
步骤1.
在mininet环境中输入ifconfig命令查看当前网卡状态
ifconfig
步骤2.
在mininet上测试连通性
h1 ping h2
步骤3
执行以下命令开启OvS的sFlow功能,并配置sFlow Agent
sudo ovs-vsctl -- --id=@sflow create sflow agent=s1 target=\"127.0.0.1:6343\" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow
参数说明:
1)agent:虚拟机对应的某个监控流量的网卡,本实验用s1网卡产生和监控流量;
2)target:sFlow-rt的IP,默认端口6343;
3)bridge:需要开启sFlow的网桥;
步骤4
输入如下命令查看已经配置的Agent信息。
sudo ovs-vsctl list sflow
输入ip link命令,查看交换机端口名称与端口编号的映射关系。
如下图我这里的docker0(eth0)对应的编号是3,s1对应的编号是13
(安装docker:主要实现Linux 机器上的本地虚拟化,目的做到轻量级、可移植性高)
步骤5.
查看sFlow agent是否配置成功
打开浏览器输入:
localhost:8080
可以看到代理配置成功
进入该监控的端口列表页面,如下
步骤6.
进入端口监控页面
总结
流量监控是sdn中很重要的一个环节,在获取各个端口的实时信息后,可以实现很多的服务,比如负载均衡,QoS,流量工程等。
–end–