RYU控制器代码结构的总结
2015-05-19 12:18
281 查看
转载: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等)。
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等)。
相关文章推荐
- RYU控制器代码结构的总结
- css中常见的代码结构及样式(平日总结)
- Unity框架(代码结构)总结
- atitit js 开发工具 ide的代码结构显示(func list) outline总结
- RYU控制器代码解析-Hub
- 看数据结构写代码(15)链式队列的实现(总结篇)
- atitit js 开发工具 ide的代码结构显示(func list) outline总结
- 看数据结构写代码(24) 二叉链表的递归遍历 和 非递归遍历 算法 总结
- atitit js 开发工具 ide的代码结构显示(func list) outline总结
- Ryu控制器代码解析-任意地址Ping应答
- HRDM项目经验总结——树结构菜单、session的三种保存机制、代码效率
- 工作总结之源代码目录结构
- 图总结之存储结构代码详解
- RYU控制器代码解析-简单交换机
- 图总结之存储结构代码详解
- Flask代码结构总结
- 【《Effective C#》提炼总结】提高Unity中C#代码质量的21条准则
- GameKit的蓝牙开发代码总结
- MVC结构总结
- Java内存结构学习总结http://zljpp.iteye.com/blog/1554929