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加上mininet建立的一個自訂網路拓樸,在利用ryu的gui patch顯示在web介面上

首先要將安裝好的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安装的更多相关文章

  1. SDN学习之RYU源码安装

    近些天开始接触SDN,即软件定义网络的学习,由于是初学者,想通过写博客来分享自己对sdn学习中所使用的ryu以及mininet仿真软件. Mininet源码安装: 尽管网上对mininet的安装教程很 ...

  2. (转)Windows下MySQL :GUI安装和使用(MySQL GUI tools)

    原文:http://blog.csdn.net/dahunbi/article/details/52970815 MySQL GUI Tools是MySQL官方提供的图形化管理工具,功能很强大,值得推 ...

  3. linux centOS 7 GUI安装

    centOS 7 GUI 图形用户界面(Graphical User Interface 克隆clone Windows中安装xshell和xftp传输软件 https://blog.csdn.net ...

  4. Ubuntu16.04 RYU pip命令安装

    pip命令安装方法 sudo apt install gcc python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev ...

  5. SDN环境搭建(mininet,OVS,ryu安装及命令)

    1.mininet安装与使用 1.1mininet安装 ubuntu 12.04/14.04/14.10      命令行  sudo apt-get install mininet 1.2 mini ...

  6. Ubuntu15.10下***搭建及GUI客户端安装

    1.依赖包安装 sudo apt-get install python-pip python-dev build-essential sudo pip install pip sudo apt-get ...

  7. Ryu控制器安装部署和入门

    Ryu官网简介,原滋原味 Ryu is a component-based software defined networking framework. Ryu provides software c ...

  8. Ubuntu下搭建ryu环境

    RYU环境搭建总共四步: step1:首先下载相应的python套件,并且更新pip $ sudo apt-get install python-pip python-dev build-essent ...

  9. Kickstart/Anaconda实现自动化安装原理探究

    原网页地址:http://molinux.blog.51cto.com/2536040/548247#55918... 内容概要:  1.  系统安装基本流程图示2.  Anaconda简介3.  K ...

随机推荐

  1. 【转】eclipse修改workspace

    [转]eclipse修改workspace 以下方法选其中一种 1.进入 Window > Preferences > General > Startup and Shutdown ...

  2. NFS资料

      Linux NFS服务器的安装与配置 http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html Linux NFS服务器的安装与配 ...

  3. 7.20实习培训日志-Java基础程序设计结构

    Java基础程序设计结构 在 Math 类中,为了达到最快的性能,所有的方法都使用计算机浮点单元中的例程,如果得到一个完全可预测的结果比运行速度更重要的话,那么就应该使用StrictMath类,它使用 ...

  4. ubuntu18.04安装配置opencv3.4.0

    1.安装配置相关工具及依赖库 sudo apt-get install build-essential # 必须的,gcc编译环境 sudo apt-get install cmake git lib ...

  5. 手动配置webpack之React

    安装 1.安装react转译相关依赖包: npm安装:             npm install --save-dev babel-core babel-loader babel-preset- ...

  6. 3DMAX 10 角色动作

    基本流程 1保存初始姿势(保存原始T动作) 2确定动画帧数时间 3找参考动作姿态,绘制关键帧草图 4先调整出初始姿势,如果是循环动画,需要把第一帧复制到最后一帧 5大体先想好在固定时间比例调草图的关键 ...

  7. 剑指Offer的学习笔记(C#篇)-- 平衡二叉树(二叉树后序遍历递归详解版)

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 一 . 题目分析 首先要理解一个概念:什么是平衡二叉树,如果某二叉树中任意的左右子树深度相差不超过1,那么他就是一颗平衡二叉树.如下图: 所以 ...

  8. 剑指Offer的学习笔记(C#篇)-- 栈的压入、弹出序列

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  9. python3 安装虚拟镜像

    virtualenvwrapper--提供了一系列命令使得和虚拟环境工作变得愉快很多,他把你所需要的虚拟环境都放在一个地方. 1.先安装virtualenv:pip install virtualen ...

  10. SpringSecurity为项目加入权限控制

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...