项目计划部署在阿里云上,有关Software Defined Network,所有子模块均来自Netgroup Research Group,项目目前仍在部署中,这里主要负责记录项目部署过程中的注意事项。(实时更新中)
-
- 一个简单直观的JavaScript Web GUI(虽然他们官方的Demo都早早的挂了),可以通过扩展支持不同的网络模型,目前支持标准OpenFlow设备网络和由OSHI节点构成的网络,可以导出或导入JSON格式的拓扑。还支持图形编辑拓扑。
-
- 控制emulated SDN testbeds与Topology3D提供的Web GUI进行交互,使用Mininet仿真器,提供服务端元素来分配和控制Mininet节点,将Mininet控制台中的信息重定向到Web GUI上进行显示。
-
Dreamer-Topology-and-Service-Validator
- 一个Django应用程序,用于存储model/layer及其约束,并能够检验基于Dreamer-Topology3D项目创建的拓扑。
-
- OSHI的分段路由数据平面扩展
-
- 基于SDN流量工程和分段路由的工具
- parsers-generators
- java-te-sr
- OSHI-SR-pusher
-
- 用于OSHI实验的Mininet扩展,用来模拟使用Mininet仿真器的OSHI网络
-
Dreamer-Topology-Parser-and-Validator
- 用于Mininet和测试部署的拓扑解析器。使用此工具,您可以解析和验证由Dreamer-Topology-Designer创建的拓扑。
- Ubuntu 16.04
- Apache2
- gcc
- python2.7
- nodejs
-
python依赖
pip install django==1.6 pip install networkx==1.9
-
下载并启动项目
git clone https://github.com/netgroup/Dreamer-Topology-and-Service-Validator.git cd Dreamer-Topology-and-Service-Validator python manage.py runserver 0.0.0.0:8090 # 后台运行 nohup python manage.py runserver 0.0.0.0:8090 &
-
git clone https://github.com/netgroup/Dreamer-Topology3D.git
-
将Dreamer-Topology挂在到服务器跟目录下,我用的是apache2,如下:
mv Dreamer-Topology3D {webroot}
-
修改项目中的js/src/config.js文件如下:
this.top_ser_validator = {}; this.top_ser_validator.host_port = 8090; this.top_ser_validator.host_name "{ip_address}"; //Experiment Handler this.experiment_handler = {}; this.experiment_handler.host_port = 3000; this.experiment_handler.host_name = "{ip_address}";
-
打开浏览器输入url即可访问
-
项目会默认从googleapis处加载字体,导致前端加载比较慢,可以先从源地址下载fonts.css文件到Dreamer-Topology3D/dist/css目录下,然后将AdminLTE.css的第1行改为
@import url(fonts.css)
-
Dreamer-Topology3D/index.html中第1087行的js文件名写错了,改成plugins/datatables/dataTables.bootstrap.min.js
-
Clone仓库
git clone https://github.com/netgroup/Dreamer-Mininet-Extensions.git git clone https://github.com/netgroup/Dreamer-VLL-Pusher.git git clone https://github.com/netgroup/Dreamer-Topology-Parser-and-Validator.git
-
python依赖
pip install netaddr pip install ipaddress pip install ryu pip install siphash
-
系统依赖
apt install autoconf apt install automake apt install libtool apt install quagga
-
Mininet安装
apt install mininet mv /etc/init.d/openvswitch-switch /etc/init.d/openvswitchd
-
修改Dreamer-Mininet-Extensions目录中的文件路径
- mininet_deployer.py中设置
parser_path={workspace}/Dreamer-Topology-Parserd
- mininet_extensions.py中设置
RYU_PATH={workspace}/dreamer-ryu/ryu/app
- mininet_extensions.py中设置
PROJECT_PATH={workspace}/Dreamer-Mininet-Extensions
- mininet_deployer.py中设置
-
运行测试
./mininet_deployer.py --topology topo/topo_vll_pw.json
-
具体安装方法详见:Dreamer-Mininet-Extensions How-To
-
git clone https://github.com/netgroup/Dreamer-Experiment-Handler.git
-
修改配置文件config.js
config.mininet.mininet_extension_path = "{workspace}/Dreamer-Mininet-Extensions";
-
运行
cd Dreamer-Experiment-Handler node app.js # 后台运行 nohup node app.js &
git clone https://github.com/netgroup/OSHI-SR-dataplane-extensions.git
cd OSHI-SR-dataplane-extensions
make
mv fpm-of.bin /usr/bin/
-
依赖和Clone
apt install python-tk pip install matplotlib==2.2 git clone https://github.com/netgroup/SDN-TE-SR-tools.git) git clone https://github.com/netgroup/dreamer-ryu.git git clone https://github.com/netgroup/Mantoo-scripts-and-readme.git
-
修改Dreamer-Mininet-Extensions/nodes.py文件中的第32行:
ENABLE_SEGMENT_ROUTING = True
-
在浏览器打开Topology3D GUI加载样例拓扑,点击右上角菜单栏的"Topology",选择"Import topology from file",选择SDN-TE-SR-tools/parsers-generators/t3d/small-topo2-4-vll.t3d文件
-
选择左侧菜单栏的"Deployment",点击"Deploy",在下方命令行输入
deploy
并回车 -
查看Controller的IP并远程登录
ssh -X root@10.255.245.1 cd Mantoo-scripts-and-readme
-
修改ryu_start.sh文件中的目录为dreamer-ryu/ryu/app
-
运行
./ryu_start.sh
-
或者手动运行
ssh -X root@10.255.245.1 cd {workspace}/dreamer-ryu/ryu/app ryu-manager rest_topology.py ofctl_rest.py --observe-links
-
修改generate_topo_and_flow_cata.sh文件中的目录为SDN-TE-SR-tools/parsers-generators
-
生成SR分配算法所需的流目录
cd Mantoo-scripts-and-readme ./generate_topo_and_flow_cata.sh 10.255.245.1:8080
-
或者手动运行
cd {workspace}/SDN-TE-SR-tools/parsers-generators python parse_transform_generate.py --in ctrl_ryu --out nx --generate_flow_cata_from_vll_pusher_cfg --controller 10.255.245.1:8080 mv flow_catalogue.json ../java-te-sr/flow/ mv links.json ../java-te-sr/topology/ mv nodes.json ../java-te-sr/topology/
-
查看生成的文件
cat {workspace}/SDN-TE-SR-tools/java-te-sr/flow/flow_catalogue.json
-
运行SR分配算法
- 打开Intellij IDEA,导入SDN-TE-SR-tools/java-te-sr项目,选择从Eclipse项目导入
- 使用JDK1.8运行(原项目使用JDK1.7)
- 设置运行参数
topo_in=topology/links.json topo_out=topology/out_links.json flows_in=flow/flow_catalogue.json flows_out=flow/out_flow_catalogue.json
- 在IDEA中选择"Tools"->"Deployment"->"Configuration",选择传输协议,配置服务器ip地址以及跟目录,在"Mappings"中配置本地项目路径以及对应的服务端项目路径,配置成功后选择"Tools"->"Deployment"->"Browser Remote Host"即可在右侧看到服务器端文件,以方便在本地和服务器双方进行文件的同步。
- 点击运行,如果成功则控制台不会显示任何信息
-
把本地生成的out_flow_catalogue.json文件同步到服务器后,将其放到SDN-TE-SR-tools/OSHI-SR-pusher路径下
cd {workspace}/Mantoo-scripts-and-readme ./sr_pusher_start.sh 10.255.245.1:8080 --add
-
或者手动运行
cd {workspace}/SDN-TE-SR-tools mv java-te-sr/flow/out_flow_catalogue.json OSHI-SR-pusher/ cd {workspace}/SDN-TE-SR-tools/OSHI-SR-pusher/ rm sr_vlls.json ./sr_vll_pusher.py --controller 10.255.245.1:8080 --add
-
未完待续