RYU控制器代码结构的总结

来源:互联网 发布:会议管理所用软件 编辑:程序博客网 时间:2024/04/20 04:23

转载:http://blog.csdn.net/simongeek/article/details/40320781


1. RYU的基本框架及开发须知



从框架中我们可以看到,在RYU控制器架构中,包括:Non-OF protocols、OF protocols、 各种libraries以及内嵌的APP,同时,RYU控制器提供给用户统一的REST API,供用户基于RYU框架开发自己的APP,同时,开发者可以根据自己的需要。添加所需的组件和库文件。值得注意的是,RYU架构只是提供给开发者一个平台,相当于一个没有应用软件的操作系统,开发者想基于这个框架实现自己想要的功能,就必须通过RYU提供的API编写相应功能的APP,这些APP就相当于我们操作系统的应用软件。



2. RYU的代码结构

RYU控制器实现主要功能的代码放在/ryu/folder中(在我的Linux系统中放在~/home/simon/ryu/ryu/),为了尽快的熟悉RYU,我们首先熟悉RYU的主要功能组件的作用:
  • app/-在RYU控制器上面运行的应用,基于控制器完成特定的功能。
  • base/-为RYU的APP的正常运行提供必要的基类。其中app_manager.py文件夹中的RyuApp类非常重要,每创建一个新的APP都要继承这个类。
  • controller/-这个文件中包含处理OpenFlow功能的一系列文件。例如,来自交换机的数据包,生成flows,处理网络事件,汇总状态信息等与OpenFlow相关的数据处理。
  • lib/-包括一系列用于分析不同协议包的包头的协议包库以及一个专门用于OFConfig协议的库。除此之外,还包括专门分析NetFlow和sFlow的分析器,注意,这里对于各个协议数据包只是分析,也就是可以识别以及分析出数据包的包头所包含的信息,并没有对数据包的处理能力,如果想进行不同协议之间的互通以及对于协议数据包的处理,必须要开发者创建相应的组件或者是相应的APP。
  • ofproto/-包括OpenFlow协议的版本信息以及对于不同版本的OpenFlow协议相关的分析模块(OF 1.0 1.2 1.3 1.4)
  • topology/-包括关于OpenFlow交换机相关的拓扑发现的代码以及对于和拓扑发现相关的信息的处理(例如ports, links等)。内部使用LLDP协议进行拓扑发现。
3.RYU控制器代码概要

大部分的控制器平台都会提供给开发者各自特有的特性来支持下面的关键功能:
  • 可以监听异步事件(例如,PACKET_IN, FLOW_REMOVED等),并且可以查看 使用ryu.controller.handler.set_ev_cls decorator注册的事件
  • 可以分析进入控制器的数据包(例如,ARP, ICMP, TCP等)并且可以产生发往网络的数据包
  • 可以生成并且可以向可编程数据平面发送OpenFlow/SDN信息(例如,PACKET_OUT, FLOW_MOD, STATS_REQUEST等)。

0 0
原创粉丝点击