参考自https://blog.csdn.net/AsNeverBefore/article/details/79098971
和https://blog.csdn.net/yinxingsha/article/details/52276587
和https://www.sdnlab.com/15090.html
1 实验目的
该实验通过安装sFlow流量监控工具,可直观的展现网络中的流量以及其他监控信息。在实验过程中,可以了解以下方面的知识:
- 掌握监控网络流量的方法;
- 掌握流量监测工具sFlow的使用;
2 实验原理
sFlow技术是一种以设备端口为基本单元的数据流随机采样的流量监控技术,不仅可以提供完整的第二层到第四层甚至全网范围内的实时流量信息,而且可以适应超大网络流量(如大于10Gbit/s)环境下的流量分析,让用户详细、实时地分析网络传输流的性能、趋势和存在的问题。sFlow监控工具由sFlow Agent和sFlow Collector两部分组成。Agent作为客户端,一般内嵌于网络转发设备(如交换机、路由器),通过获取本设备上的接口统计信息和数据信息,将信息封装成sFlow报文,当sFlow报文缓冲区满或是在sFlow报文缓存时间(缓存时间为1秒)超时后,sFlow Agent会将sFlow报文发送到指定的Collector。Collector作为远端服务器,负责对sFlow报文分析、汇总、生成流量报告。sFlow的基本工作原理如图1所示:
3 实验任务(实验网络拓扑如右上)
使用两台虚拟机,虚拟机1部署Mininet服务并配置sFlow Agent,虚拟机2安装sFlow Collector,在虚拟机1的Mininet环境中模拟创建一个交换机下挂2个主机的网络拓扑,通过执行ping测试来产生网络流量,然后通过在Collector Web界面查看监控结果。
4 实验步骤
4.1 环境搭建
创建2个虚拟机,一个是选择带有sFlow的镜像,另一个是选择Mininet桌面镜像作为所需Mininet,启动实验并启动虚拟机。
4.2基本操作
打开三个终端,一个用来启动sFlow服务器,一个用来运行虚拟网络,一个用来控制虚拟网络和下发指令等操作
此时上火狐http://10.0.0.132:8008/agents/html是无法进入页面的
4.3创建环境,启动服务器
接下来,在三个不同的终端上分别执行以下指令:
打开文件启动服务器(打开后刷新以下网站就能上去了)
cd sflow-rt
./start.sh
运行最简单的虚拟网络
sudo mn
控制虚拟网络:把s1端口接上ens33并且赋予s1地址和掩码等等
ifconfig ens33 up
ovs-vsctl add-port s1 ens33
ifconfig s1 10.0.0.3 netmask 255.255.255.0
route add default gw 10.0.0.1
ifconfig
4.4配置环境
查看ifconfig和路由表
最后在控制终端打入,这里10.0.0.132是本机ip
sudo ovs-vsctl -- --id=@sflow create sFlow agent=s1 target=\"10.0.0.132:6343\" header=128 sampling=64 polling=1 -- set bridge s1 sflow=@sflow
待sFlow Agent配置好后,会生成一个UUID。
(1) agent:虚拟机对应的某个监控流量的网卡,本实验用s1网卡产生和监控流量;
(2) target:sFlow Collector的IP,默认端口6343;(同一台主机所以也设置为10.0.0.132,不同主机就是不同的ip)
(3) bridge:需要开启sflow的网桥
你也可以查询一下配置好的agent信息和链路状态
sudo ovs-vsctl list sflow
ip link
刷新一下火狐页面,其中10.0.0.3就是s1,也就是我们所要监控的对象
4.5测试分析
点开浏览器中10.0.0.3那一栏,可查询你想要的分析,或者直接点击metrics可以看到总的数据
此时比方说点开ifinpkts(进入的数据包),然后在mininet>那一栏随便输入ping指令,就可以在火狐上看到相应的数据
注:AdminStatus 接口的管理状态
ifIndex 桥接端口对应的端口
ifInDiscards 被丢弃(尽管没有错误)的输入报文数,并且这些报文不会被传递给上层网络协议
ifInErrors 流入的错误报文数,由于错误使得这些报文不会被传递给上层网络协议
ifinOctets 接口输入的字节数
ifinutilization 输入利用率