Ubuntu18.04 安装SDN ryu+mininet

一。安装Mininet

 apt-get install git

这是最好的方式。git下载方式安装容易出错。

二、安装并测试Ryu控制器
1、安装并更新pip

sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip
2、下载ryu源码

git clone git://github.com/osrg/ryu.git
3、打开Ryu,查看文件夹内包含内容

cd ryu
ls
4、安装Ryu的依赖

sudo pip3 install -r tools/pip-requires
如果出现报错,再执行一遍即可,或者重启系统后执行。

5、安装Ryu

sudo python3 setup.py install
6、测试是否安装成功

cd ryu
cd app
sudo ryu-manager simple_switch.py

出错:pkg_resources.ContextualVersionConflict: (PyYAML 3.12 (/usr/lib/python3/dist-packages), Requirement.parse('PyYAML>=5.1'), {'oslo.config'})

解决方法:# 亲测可用
pip install --ignore-installed PyYAML

7、另打开一个终端,进入root模式,并输入权限密码

su root
8、创建网络拓扑

 mn --controller remote --mac --topo tree,2,2


9、先回车ryu-manager,然后回车mn网络拓扑,正常通信即证明mininet和Ryu安装完成;

在网络拓扑中输入“pingall”查看网络连通性。

10. RYU安装GUI

安装依赖: 
  #pip install Flask((Python 上一個非常知名的輕量化 Web Famework))
  #pip install gevent-websocket(在Web Browser 与 GUI Server做联系的套件)
获取图形界面源码:
  在gui-patch-v3-rebase 下载gui-patch-v3- rebase软件压缩包,解压,把里面的ryu/gui目录复制到安装Ryu的源代码目录/ryu/ryu;

    然后接着我们要到/ryu/ryu/topology/文件夹下修改switches.py文件中的第45行至53行注释掉,  如下图所示:不支持lldp消息处理。

输入图片说明

 启动Ryu,进入源码目录ryu/app,执行
 # ryu-manager --verbose --observe-links  ryu.topology.switches ryu.app.rest_topology  ryu.app.ofctl_rest ryu.app.simple_switch
  启动GUI界面,进入ryu/ryu/gui目录
 #python3 controller.py
打开浏览器界面 http://127.0.0.1:8000,即可查看 

第二种方式:Ryu自带了网络拓扑可视化的app,名称为gui_topology.py,路径为:ryu安装目录/ryu/app/gui_topology/gui_topology.py。

ryu-manager --verbose --observe-links ryu.app.gui_topology.gui_topology ryu.app.rest_topology ryu.app.ofctl_rest ryu.app.simple_switch

浏览器输入:

http://localhost:8080

Ryu是支持同时启用多个app的,也就是说,启用gui_topology.py这个app并不影响你启用你自己写的控制逻辑app, 即你可以使用如下命令来启用多个app:

ryu-manager /ryu/app/gui_topology/gui_topology.py yourApp.py 

 三. 使用POSTMAN调用RESTAPI,方便调试

安装Postman:

官网下载地址:https://www.getpostman.com/根据机器类型选择64位下载。

在POSTMAN中输入正确的内容就可以下发请求信息。如请求dpid为1的交换机上的流表信息:

1

http://localhost:8080/stats/flow/1

选择动作类型为GET,点击send,可以马上获得交换机1上的流表信息。

获得交换机1上的流表信息

详细流表内容如下。可见目前交换机上有三条流表项,其中第一条是默认的miss_table_entry.后两条是h1和h2通信的双向流表项。

后两条是h1和h2通信的双向流表项

也可以使用POST动作类型,下发一个flow_mod消息,对现有流表进行操作。

四、使用miniedit建立网络拓扑

root 权限模式下依次运行以下代码

root@ubuntu:/home/grape/mininet/examples# ./miniedit.py

ImportError: No module named '_tkinter',

sudo apt install tk-dev
sudo apt-get install python-tk

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值