【非Mininet环境】利用docker、ovs、ryu、sflow等进行仿真实验
为什么不采用Mininet环境?
答:Mininet 相对上手简单,一行命令便可以部署交换机和主机建立实验拓扑。但是可玩性不高,用户自定义性不强,很难完成本文所述的仿真实验。
一、本文实验拓扑

实验最基本的拓扑包括五种角色,四条链路:
合法用户:用docker容器构建,他应该只能与ovs相连,所以在一开始网络配置应该设置为none,即无网卡无IP,由ovs提供,这一块目前正在解决,主要是这样的容器依赖的镜像必须本身包含就有net-tools工具,用我封装的镜像不知道为什么做不了……
核心交换机ovs:在宿主主机进行安装,这里和mininet的ovs不太相同,比如后者的ovs是有名称的。关于ovs的介绍我觉得这个博客写的好:https://www.cnblogs.com/goldsunshine/p/11527928.html
SDN控制器Ryu:同样是在宿主主机进行安装,这里和mininet的不同与上面类似。
流量监控工具sFlow:
安装和启动代码:
wget http://www.inmon.com/products/sFlow-RT/sflow-rt.tar.gz tar -xvzf sflow-rt.tar.gz cd sflow-rt ./start.sh
用浏览器输入:localhost:8008/html/index.html 即可看到各项指标。这里要注意,一定要运行 ./start.sh 浏览器才能打开监控页面。
配置sflow-agent和sflow-collector:sflow-agent内嵌于ovs之中,首先建立一条网桥:
ovs-vsctl add-br ovs-sflow
然后进行配置:
ovs-vsctl -- --id=@sflow create sflow agent=ovs-sflow target=\"127.0.0.1:6343\" sampling=128 polling=10 -- set bridge ovs-sflow sflow=@sflow
可以通过代码查看配置:
ovs-vsctl list flow
Http服务器:也是用docker构建的,有IP地址,和合法用户基本类似
构建好角色后,接下来便是打通它们之间的链路,如实验拓扑所示,存在4条链路。这里和mininet不同的是,这里的链路需要自己去搭建,不是现成的。难点在于:
1. 构建这四条链路,保证其有效联通;
2. 保证有且仅有这四条有效链路。意思是,合法用户必须通过ovs才能访问http服务器,而不存在其他隐形的网卡网桥(如docker0)。
目前的工作进度是链路都构建了,但没有进行有效性测试,例如实现ryu对ovs的控制。接下来的工作是实现合法用户通过ovs访问http服务器
浙公网安备 33010602011771号