1、安装mininet
1.1 python环境
1.2 安装git
sudo apt-get install git
1.3 源码安装mininet
#clone mininet到当前目录
git clone git://github.com/mininet/mininet
#切换目录至/mininet/util
cd mininet/util
#安装
sudo ./install.sh -a
#测试是否安装成功(图片晚些放)
sudo mn
1.4 mininet可视化使用
#在/mininet/examples目录下输入如下可打开图形化界面
sudo python ./miniedit.py
使用方法及视频安装教程可以参考bilibili:https://www.bilibili.com/video/BV1ft4y1a7ip?p=12&spm_id_from=pageDriver
2、安装Ryu(非必需,本文尚不完全,后续需要)
2.1 pip3安装
pip3 install ryu
2.2 源码安装
#clone到当前目录
git clone git://github.com/osrg/ryu.git
#进入ryu文件夹
cd ryu
# 安装包
sudo pip3 install -r tools/pip-requires
# 安装Ryu
sudo python3 setup.py install
2.3 检验是否安装成功
#输入如下命令,如果不为图1所示,则需要安装一些配套工具
ryu-manager

2.4 如果安装失败
我遇到的问题是:pkg_resources.DistributionNotFound: The 'oslo.config>=1.2.0' distribution wa......
一般在最后几行就能找到关键字:'oslo.config>=1.2.0',这里提示oslo.config需要大于1.2.0,就使用pip3安装即可:
sudo pip3 install oslo.config
举例:如果提示为'webob==1.0.4',则只能安装1.0.4版本的webob,对应命令为:
sudo pip3 install webob==1.0.4
直至输入ryu-manager显示正确。
3、安装sFlow-rt
3.1 配置jdk
我推荐直接:
sudo apt-get install openjdk-8-jdk
也可以自行搜索其他方法。
3.2 安装sFlow-rt
#下载压缩文件
wget [http://www.inmon.com/products/sFlow-RT/sflow-rt.tar.gz](http://www.inmon.com/products/sFlow-RT/sflow-rt.tar.gz)
#解压至当前目录
tar -zxvf sflow-rt.tar.gz
#进入文件夹
cd sflow-rt
#启动
./start.sh
出现如图2则成功:

4、开始实验
4.1 在mininet中搭建网络
交换机DPID为16位:0000 0000 0000 0001
三主机IP地址分别为:10.0.0.1-10.0.0.3
网络拓扑图如图3:

在mininet菜单栏Edit-Preferences中勾选Start CLI,如图4:

点击左下角“Run”,如图5:

切换至终端应为图6:

如果没有进入CLI,可以尝试“Stop”,退出mininet,在终端输入如下命令后重新“Run”:
#在非mininet终端下,执行该命令,可以clear上一次topo所遗留的文件,参考连接:https://www.cnblogs.com/lance-haha/p/13637316.html
sudo mn -c
4.2 启动Ryu(非必需,本文尚不完全,后续实验需要)
通过ryu-manager命令启动ryu控制器,并且打开ofctl_rest.py和simple_switch.py,作为交换机的转发规则,因为之后要用到restAPI,即控制器的北向接口(postamn连接使用),所以需要打开ofctl_rest.py。命令如下:
ryu-manager ofctl_rest.py simple_switch.py
配置sFlow Agent
#新开一终端,输出命令:
sudo ovs-vsctl -- --id=@sflow create sflow agent=s1-eth0 \
target=\"127.0.0.1:6343\" sampling=10 polling=20 -- -- set bridge s1 \
sflow=@sflow
上述命令的主要意思如下:
1)agent:监控s1-eth0 网卡产生的流量;s1-eth0是为s1创建的端口;
2)target:sFlow-RT的IP,默认端口6343;
3)bridge:需要开启sFlow的网桥;
4)sampling:采样率,表示每隔N个Packet就取样一次
5)polling:轮询时间,每隔N秒polling一次
(提示:如果有N个网桥,就需要执行N次部署 sFlowAgent 的指令,我们本次实验中只有一个网桥,所以执行一次就可以了。)
查看已经配置的 sFlow Agent信息,通过命令:sudo ovs-vsctl list sflow