Ryu is a component-based software defined networking framework. Ryu是一个基于组件的软件定义网络框架 Ryu provides software components with well defined API's that make it easy for developers to create new network management and control applications.
Ryu为软件组件提供了定义良好的API,使开发人员可以轻松地建立新的网络管理和控制应用程序。
Ryu supports various protocols for managing network devices, such as OpenFlow, Netconf, OF-config, etc. 支持管理网络设备的多种协议
About OpenFlow, Ryu supports fully 1.0, 1.2, 1.3, 1.4, 1.5 and Nicira Extensions. 所支持的OpenFLow协议版本 All of the code is freely available under the Apache 2.0 license. Ryu is fully written in Python. 全部代码在Apache2.0许可下都是免费的,Ryu是使用Python开发的
git clone git://github.com/osrg/ryu.git
cd ryu 须要先进入文件夹中 sudo pip install -r tools/pip-requires
sudo python setup.py install
njzy@njzy-Inspiron-5493:/usr/local/bin$ ryu-manager
njzy@njzy-Inspiron-5493:/usr/local/bin$ sudo easy_install webob==1.2.3
这里有点尴尬了
参考:html
https://blog.csdn.net/cyz14/article/details/79994548python
http://www.javashuo.com/article/p-csmiquae-hv.htmlgithub
实际:web
由于Ubuntu下,还含有一个Python3版本安装的pip3,因此我将依赖和安装中pip所有改为pip3,就安装成功了
sudo pip3 install -r tools/pip-requires sudo python3 setup.py install ryu-manager
安装成功:api
base中有一个很是重要的文件:app_manager.py,其做用是RYU应用的管理中心。用于加载RYU应用程序,接受从APP发送过来的信息,同时也完成消息的路由。
其主要的函数有app注册、注销、查找、并定义了RYUAPP基类,定义了RYUAPP的基本属性。包含name, threads, events, event_handlers和observers等成员,以及对应的许多基本函数。如:start(), stop()等。
这个文件中还定义了AppManager基类,用于管理APP。定义了加载APP等函数。不过若是仅仅是开发APP的话,这个类能够没必要关心。
controller文件夹中许多很是重要的文件,如events.py, ofp_handler.py, controller.py等。其中controller.py中定义了OpenFlowController基类。用于定义OpenFlow的控制器,用于处理交换机和控制器的链接等事件,同时还能够产生事件和路由事件。其事件系统的定义,能够查看events.py和ofp_events.py。
在ofp_handler.py中定义了基本的handler句柄,完成了基本的如:握手,错误信息处理和keep alive 等功能。更多的如packet_in_handler应该在app中定义。
在dpset.py文件中,定义了交换机端的一些消息,如端口状态信息等,用于描述和操做交换机。如添加端口,删除端口等操做。
其余文件之后再叙述
lib中定义了咱们须要使用到的基本的数据结构,如dpid, mac和ip等数据结构。在lib/packet目录下,还定义了许多网络协议,如ICMP, DHCP, MPLS和IGMP等协议内容。而每个数据包的类中都有parser和serialize两个函数。用于解析和序列化数据包。
lib目录下,还有ovs, netconf目录,对应的目录下有一些定义好的数据类型,再也不赘述。
在这个目录下,基本分为两类文件,一类是协议的数据结构定义,另外一类是协议解析,也即数据包处理函数文件。
如ofproto_v1_0.py是1.0版本的OpenFlow协议数据结构的定义,而ofproto_v1_0_parser.py则定义了1.0版本的协议编码和解码。具体内容不赘述,实现功能与协议相同。
包含了switches.py等文件,基本定义了一套交换机的数据结构。 event.py定义了交换上的事件。 dumper.py定义了获取网络拓扑的内容。 最后api.py向上提供了一套调用topology目录中定义函数的接口。
这个文件夹主要存放的是开源社区贡献者的代码。
定义了RYU的命令系统,具体不赘述。
完成了BGP和vrrp的实现。
tests目录下存放了单元测试以及整合测试的代码
~/ryu/ryu/app$ ryu-manager simple_switch.py
sudo mn --controller=remote //不指定拓扑--默认是一个交换机下面挂两个主机 --controller=remote 是将mininet的控制器指向远端控制器 未指定ip,默认0.0.0.0或者本地IP 端口默认是在6635