RYU控制器搭建和遇到的一些坑
in 教程 with 0 comment

RYU控制器搭建和遇到的一些坑

in 教程 with 0 comment

Ryu比floodlight功能少一点,但是更稳定,而且REST API更好用,毕业设计决定放弃floodlight转Ryu了


第一步,安装组件

$ sudo apt install python-eventlet
$ sudo apt install python-routes
$ sudo apt install python-webob
$ sudo apt install python-paramiko

第二步,git clone源码

$ git clone git://github.com/osrg/ryu.git
$ cd ryu

第三步,安装

$ sudo pip install -r tools/pip-requires
$ sudo python ~/ryu/setup.py install

第四步,验证

$ ryu --version
$ ryu-manager

看到下面输出就算正常

mitsuha@mitsuha-virtual-machine:~$ ryu --version
ryu 4.34
mitsuha@mitsuha-virtual-machine:~$ ryu-manager
loading app ryu.controller.ofp_handler
instantiating app ryu.controller.ofp_handler of OFPHandler

第五步,安装WebGUI

1.安装依赖

$ sudo pip install flask
$ sudo pip install gevent-websocket

2.下载GUI

$ wget https://github.com/yamada-h/ryu/archive/gui-patch-v3-rebase.zip
$ unzip gui-patch-v3-rebase.zip
$ cp ~/ryu-gui-patch-v3-rebase/ryu/gui ~/ryu/ryu/

3.修改switches.py

$ vim ~/ryu/ryu/topology/switches.py

4.注释掉其中的代码块,大约在48-56行

CONF.register_cli_opts([
    cfg.BoolOpt('observe-links', default=False,
                help='observe link discovery events.'),
    cfg.BoolOpt('install-lldp-flow', default=True,
                help='link discovery: explicitly install flow entry '
                     'to send lldp packet to controller'),
    cfg.BoolOpt('explicit-drop', default=True,
                help='link discovery: explicitly drop lldp packet in')
])

5.替换国内js插件源

gui/templates/base.html里的jsplumb插件国内不可用,替换成对应的版本的国内源

<script src="https://cdn.bootcss.com/jsPlumb/1.3.16/jquery.jsPlumb.min.js" type="text/javascript"></script>

6.补齐文件(如果遇到Disconnected问题)

Ryu的app有两种版本:

https://github.com/osrg/ryu/tree/master/ryu/app
https://github.com/o3project/ryu-oe/tree/master/ryu/app

如果通过$ git clone git://github.com/osrg/ryu.git安装,则使用的是缺失client.py文件的app版本。所以需要将缺失的文件补齐。下载ryu-oe:
$ git clone https://github.com/o3project/ryu-oe.git
$ cp -ri ryu-oe/ryu/app/* ~/ryu/ryu/app

7.重新安装

$ cd ~/ryu
$ sudo python setup.py install

8.安装完成后运行

$ ryu-manager --verbose --observe-links ryu.topology.switches ryu.app.rest_topology ryu.app.ofctl_rest ryu.app.simple_switch

运行GUI

$ ~/ryu/ryu/gui/controller.py

如果报错提示

ryu-manager: error: unrecognized arguments: --observe-links

那么前面第4步取消注释,再次安装

Responses
0:00