【非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服务器

 

posted @ 2022-04-19 20:32  文&禾  阅读(518)  评论(0)    收藏  举报