RYU的GUI安装
1. RYU安装
Ubuntu14.04 LTS
1.sudo apt-get install git python-pip libxml2-dev libxslt1-dev python2.7-dev
2.sudo pip install msgpack-python oslo.config netaddr lxml ecdsa
3.git clone https://github.com/osrg/ryu.git
4. cd ryu
python setup.py install
5.ryu-manager检查
2. 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行(48—56)即可;
启动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目录
#python controller.py
打开浏览器界面 http://127.0.0.1:8000,即可查看
3. 遇到的问题
3.1 启动Ryu:
问题:
$ ryu-manager
error: [ERROR 98] Address already in use (即端口号被占用)
解决:
1. 首先VM可以在這裡下載到,http://sdnhub.org/tutorials/sdn-tutorial-vm-64-bit/
雖然裡面已經有RYU的Controller了,但是Ryu的部分並沒有安裝Web GUI的外掛,所以這裡來幫它安裝一下。
2. 本文大部分參考此前輩的網頁:http://blog.xuite.net/juilin77/happy/202669918-%E5%BF%AB%E5%BF%AB%E6%A8%82%E6%A8%82%E5%AE%89%E8%A3%9DRYU+%26+RYU+GUI
3. sudo apt-get install python-eventlet
sudo apt-get install python-routes (已經安裝了,可跳過)
sudo apt-get install python-webob (已經安裝了,可跳過)
sudo apt-get install python-paramiko (已經安裝了,可跳過)
4. sudo apt-get install python-dev(已經安裝了,可跳過)
sudo pip install flask
sudo pip install gevent-websocket
5. 接著到https://github.com/yamada-h/ryu/archive/gui-patch-v3-rebase.zip下載Ryu的Web GUI。
下載完後解壓縮
移動解壓縮後的檔案。
sudo mv /home/ubuntu/Downloads/ryu-gui-patch-v3-rebase/ryu/gui/ /home/ubuntu/ryu/ryu/
6. 原本的安裝步驟要求更動/ryu/ryu/topology.switches.py,在此不作這一步。
BUT更動後,--observe-links這個參數會被禁用,接者噴出錯誤訊息,所以在此略過此步驟,
有興趣的人可以自行研究此檔案。
7. 啟動ryu: 位在第一層的ryu下面,在不對的地方啟動,可能會造成WEB GUI ERROR。
./bin/ryu-manager --verbose --observe-links ryu/topology/switches.py ryu/app/rest_topology.py ryu/app/ofctl_rest.py ryu/app/simple_switch.py
./bin/ryu-manager --verbose --observe-links ryu/app/rest_topology.py ryu/app/ofctl_rest.py ryu/app/simple_switch.py 從不知道哪個版本開始,變成這樣子了。
8. 啟動Web GUI Server: 一樣位在第一層的ryu下面,在不對的地方啟動,可能會造成WEB GUI ERROR。
sudo /home/ubuntu/ryu/ryu/gui/controller.py
9. 啟動mininet: sudo mn --controller=remote --topo=tree,2,這個在哪裡啟動都沒差。
10. 打開Browser,在網址列鍵入http://127.0.0.1:8000,接著按照預設值登入,就可以看到WEB GUI了。

首先要將安裝好的ryu加上GUI的patch (安裝ryu可以參考先前的文章)
由於目前Ryu的gui功能還沒包含在官方的版本裡面
因此需要下載patch來完成這個功能
由此gui-patch-v3-rebase 下載 ZIP 解壓縮後在路徑 /gui-patch-v3-rebase/ryu/gui 將 gui 整個資料夾複製到原官方 Ryu 專案相同位置的地方(/ryu/ryu/)。
或是直接解壓縮覆蓋ryu資料夾也可以
接著要到 /ryu/ryu/topology 修改 switches.py 45行-53行的地方註解掉。
(這邊還不太確定為什麼要註解)
下載並安裝RYU with GUI的所需套件。
sudo apt-get install python-dev
sudo pip install ryu flask gevent-websocket

開啟Ryu GUI所需的應用程式
ryu-manager --verbose --observe-links ryu.topology.switches ryu.app.rest_topology ryu.app.ofctl_rest ryu.app.simple_switch (2015/02/12註:加上這個simple_switch的話拓樸的連線沒辦法正常顯示,去掉就正常了)
開啟Ryu GUI server
./ryu/gui/controller.py
接著利用Mininet建立自己的網路拓樸
下面的mininet腳本描述了上面圖片所示的網路架構
可以寫在一個python 腳本裡面 (mytopo.py)
from mininet.topo import Topo
class MyTopo( Topo ):
"Simple topology example."
def __init__( self ):
"Create custom topo."
# Initialize topology
Topo.__init__( self )
# Add hosts and switches
server = self.addHost( 'server' )
client = self.addHost( 'client' )
switch1 = self.addSwitch( 's1' )
switch2 = self.addSwitch( 's2' )
switch3 = self.addSwitch( 's3' )
switch4 = self.addSwitch( 's4' )
switch5 = self.addSwitch( 's5' )
switch6 = self.addSwitch( 's6' )
switch7 = self.addSwitch( 's7' )
# Add links
self.addLink( server , switch1 )
self.addLink( switch1, switch2 )
self.addLink( switch1, switch3 )
self.addLink( switch2, switch4 )
self.addLink( switch3, switch4 )
self.addLink( switch3, switch5 )
self.addLink( switch4, switch7 )
self.addLink( switch5, switch6 )
self.addLink( switch6, switch7 )
self.addLink( switch7, client )
topos = { 'mytopo': ( lambda: MyTopo() ) }
之後利用mininet建立我們創建的網路拓樸
mn --custom mytopo.py --topo mytopo --controller=remote
controller=remote預設是在本機的ip 若是controller在其他機器的話則在後面加上,ip=xxx.xxx.xx.xx
例如 --controller=remote,ip=192.168.10.11
之後開啟瀏覽器 網址輸入http://localhost:8000
應該就會看到我們建立的網路拓樸
如果controller在其他機器的話則ip也要跟著改
http://www.sdnap.com/wp-content/uploads/others/Ryu_and_GUI_installaion_from_king-nanjing_sdnap.pdf
http://linton.tw/2014/02/11/note-how-to-set-up-ryu-controller-with-gui-component/
RYU的GUI安装的更多相关文章
- SDN学习之RYU源码安装
近些天开始接触SDN,即软件定义网络的学习,由于是初学者,想通过写博客来分享自己对sdn学习中所使用的ryu以及mininet仿真软件. Mininet源码安装: 尽管网上对mininet的安装教程很 ...
- (转)Windows下MySQL :GUI安装和使用(MySQL GUI tools)
原文:http://blog.csdn.net/dahunbi/article/details/52970815 MySQL GUI Tools是MySQL官方提供的图形化管理工具,功能很强大,值得推 ...
- linux centOS 7 GUI安装
centOS 7 GUI 图形用户界面(Graphical User Interface 克隆clone Windows中安装xshell和xftp传输软件 https://blog.csdn.net ...
- Ubuntu16.04 RYU pip命令安装
pip命令安装方法 sudo apt install gcc python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev ...
- SDN环境搭建(mininet,OVS,ryu安装及命令)
1.mininet安装与使用 1.1mininet安装 ubuntu 12.04/14.04/14.10 命令行 sudo apt-get install mininet 1.2 mini ...
- Ubuntu15.10下***搭建及GUI客户端安装
1.依赖包安装 sudo apt-get install python-pip python-dev build-essential sudo pip install pip sudo apt-get ...
- Ryu控制器安装部署和入门
Ryu官网简介,原滋原味 Ryu is a component-based software defined networking framework. Ryu provides software c ...
- Ubuntu下搭建ryu环境
RYU环境搭建总共四步: step1:首先下载相应的python套件,并且更新pip $ sudo apt-get install python-pip python-dev build-essent ...
- Kickstart/Anaconda实现自动化安装原理探究
原网页地址:http://molinux.blog.51cto.com/2536040/548247#55918... 内容概要: 1. 系统安装基本流程图示2. Anaconda简介3. K ...
随机推荐
- string行读入&&文件输入
普通读入的时候会以空格作为分隔符 直接用cin>>s读入,此时可以直接处理文件尾的情况 text代码: #include <iostream>#include <cstd ...
- Gym - 101142J Java2016 (构造)
题意:给定一个数字,让你构造成一些表达式,最后结果是该数字的概率要大于50%. 析:我们可以把一个数分解是2的多少次幂,然后加起来就好. 代码如下: #pragma comment(linker, & ...
- CLR via C# 第五章学习记录(更新中)
1.设置全局溢出检查,项目属性->生成->高级->检测运算上溢/下溢 2.局部使用溢出检测 Byte b = ; b = ));// 不检测溢出 checked// 检测溢出代码段 ...
- 在 WinForm/WPF 下制作 Google Material Design 风格程序
国内社区没有,顺手转.WinForm: https://github.com/IgnaceMaes/MaterialSkin演示:https://www.youtube.com/watch?v=A8o ...
- cf813C(bfs)
题目链接:http://codeforces.com/problemset/problem/813/C 题意:给出一颗树,开始时两个人 Alice 和 Bob 分别站在 1(树根)和 x 处.此后每一 ...
- MySQL (case when then else end)和常用函数用法
case when then else end 相当于Java的if-else if-else,可以用来在select语句中将要显示的内容替换成另一个内容 更多用法:https://www.cnblo ...
- appium自动化测试框架——封装获取设备信息类
在上一节中,我们已经解决了如何在python中执行cmd,并获取执行结果.下面就小小实战一下,获取设备信息. 一.思路 1.windows上获取设备信息的方法 输入dos命令“adb devices” ...
- Nacos深入浅出(八)
Nacos-spring-context.java 感觉这个后台要比之前的Nacos复杂多了,涉及到很多基础的概念,慢慢看,这个后面慢慢更新解析过程 看到他的目录结构一个是基于注解,一个是XML的解析 ...
- Mysql 5.7主主复制配置
MySQL5.7主主复制配置 主机1IP:192.168.1.2主机2IP:192.168.1.4 一.首先安装MySQL 5.71.卸载两台主机系统中已经有的mysql相关软件包rpm -qa | ...
- 17.视图--SQL
一.什么是视图 视图是虚拟的表 为什么使用视图 重用SQL语句. 简化复杂的SQL操作.在编写查询后,可以方便地重用它而不必知道其基本查询细节. 使用表的一部分而不是整个表. 保护数据.可以授予用户访 ...