实验环境(VMWare Player 12):
虚拟机1 - Collector:Ubuntu 16.04 LTS
虚拟机2 - Mininet:Mininet 2.2.1官方虚拟机镜像,下载:https://github.com/mininet/mininet/wiki/Mininet-VM-Images
虚拟机网络模式:仅主机(host only)
配置过程:
1.虚拟机1配置
出于省心的角度,安装sflow-rt,用以图形化界面显示,网上有很多其他工具,抓包自己分析也是可以的。
此时,先设置虚拟机1在NAT模式下工作,以下载所需软件。
使用sflow-rt前,先要确保jdk 1.7+的环境。在这里我装了JAVA 9:
//清除OpenJDK,如未安装OpenJDK可跳过
sudo apt-get purge openjdk*
//添加 PPA 源
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
//安装 Oracle Java 9
sudo apt-get install oracle-java9-installer
//查看版本,确保成功安装
java -version
//设置环境变量
sudo apt-get install oracle-java8-set-default
然后安装sflow-rt:
wget http://www.inmon.com/products/sFlow-RT/sflow-rt.tar.gz
tar -xvzf sflow-rt.tar.gz
cd sflow-rt
./start.sh
//我这里就直接 sflow-rt/start.sh
如需安装其他软件,就一起安完,然后网络模式切换到仅主机模式。
start.sh之后,就可以通过 http://localhost:8008/agents/html 来查看连接到当前Collector的agent列表了。
打开控制台,ifconfig查看本机ip,这台虚拟机的ip地址是192.168.109.129
2.虚拟机2开启Mininet
下载镜像之后解压,得到:
在VMWare中打开其中的.ovf文件,耐心等待进度条加载完成,显示登陆界面。
登录名:mininet
密码:mininet
登陆后ifconfig查看本机ip,Mininet虚拟机ip为192.168.109.130
随后开启Mininet虚拟拓扑网络,这里简单起见使用默认的拓扑结构,需要自定义结构请查阅相关资料。
sudo mn
可以通过nodes命令查看当前网络中的结点:
3.虚拟机2设置agent端口转发
在虚拟机2中,Alt+F2开启新终端,在新终端输入:
sflow agent=eth0 target=\"192.168.109.129:6343\" header=128 sampling=10 polling=1 -- set bridge s1 sflow=@sflow
agent是要监听的网卡,target是sflow collector所在的ip地址和sflow默认端口6343,本实验为虚拟机1(192.168.109.130),bridge设定需要监听的交换机
在新终端输入
ip link
查看各个端口序号
4.模拟网络流量
在虚拟机2中,Alt+F1回到Mininet终端,模拟网络流量:
//洪泛
h1 ping -f h2
//大数据包
iperf h1 h2
5.查看sFlow采样情况
回到虚拟机1,agents-192.168.109.130,可以看到端口的采样参数:
选中其中的7号端口ifinpkts参数,可以看到7号端口接收数据包的速率:
实验小结:
1.NAT模式下设置端口转发总是出问题,需要进一步学习ovs
2.所有应用都采用了默认配置,自定义配置方式有待研究
3.折腾了半天,我只是想看看sFlow抓到的包是什么样子的