ryu使用

a、ryu使用命令

ryu的使用非常简单,执行使用如下命令

# ryu-manager <yourapp>

如,进入ryu/app目录,运行simple_switch_13.py

# ryu-manager simple_switch_13.py

b、ryu启动参数

ryu-manager 启动ryu, 如果不加任何参数,则默认启动ofphandler模块。
Ryu-manager –h 查看帮助信息
--verbose 打印详细信息
--version
--observe-links 自动下发LLDP,用于拓扑发现。
…

c、ryu目录结构

    
base

    base中有一个非常重要的文件:app_manager.py.其作用是RYU 应用的管理中心。用于加载RYU应用程序,接受从APP发送过来的信息,同时也完成消息的路由。

    其主要的函数有app注册、注销、查找、并定义了RYUAPP基类,定义了RYUAPP的基本属性。包含name,threads,events、event_handlers和observers等成员,以及对应的许多基本函数。如:start(),stop()等。

    这个文件中还定义了AppManager基类,用于管理APP。定义了加载APP等函数。不过如果仅仅是开发APP的话,这个类可以不必关心。 

controller

    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

    lib中定义了我们需要使用到的基本的数据结构,如dpid,mac和ip等数据结构。在lib/packet目录下,还定义了许多网络协议,如ICMP,DHCP,MPLS和IGMP等协议内容。而每一个数据包的类中都有parser和serialize两个函数。用于解析和序列化数据包。

    lib目录下,还有ovs,netconf目录,对应的目录下有一些定义好的数据类型,不再赘述。

    ofproto

    在这个目录下,基本分为两类文件,一类是协议的数据结构定义,另一类是协议解析,也即数据包处理函数文件。如ofproto_v1_0.py是1.0版本的OpenFlow协议数据结构的定义,而ofproto_v1_0_parser.py则定义了1.0版本的协议编码和解码。具体内容不赘述,实现功能与协议相同。

    
topology

    包含了switches.py等文件,基本定义了一套交换机的数据结构。event.py定义了交换上的事件。dumper.py定义了获取网络拓扑的内容。最后api.py向上提供了一套调用topology目录中定义函数的接口。

    
contrib

    这个文件夹主要存放的是开源社区贡献者的代码。我没看过。

    
cmd

    定义了RYU的命令系统,具体不赘述。

    
services

    完成了BGP和vrrp的实现。具体我还没有使用这个模块。 tests

    tests目录下存放了单元测试以及整合测试的代码,有兴趣的读者可以自行研究。

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
永久连接: http://www.nfvschool.cn/?p=600
标签:

发表评论