首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Ryu:OpenFlow协议源码分析

Ryu支持OpenFlow所有的版本,是所有SDN控制器中对OpenFlow支持最好的控制器之一。这得益于Ryu的代码设计,Ryu中关于OpenFlow协议的代码量不多。...阅读Ryu源码,不仅让我了解到了Ryu的运行细节,也学会了许多的编码知识。这为我当前开发的协议提供了很大的帮助。 ? 本篇将从交换机与控制器建立连接开始,介绍OpenFlow报文的解析的相关代码实现。...Ryu采用了Python的Struct库去完成数据的解封装工作,关于Struct的介绍将在后续内容介绍。...在Python中分别对应的是1个字节的integer|一个字节的integer|2个字节的integer|4个字节的integer。 calcsize函数用于计算对应的format的长度。...示例代码如下: def _ofp_msg_name_to_ev_name(msg_name):         return 'Event' + msg_name Struct lib Python的struct

1.4K110

Ryu:模块间通信机制分析

Ryu是一款非常轻便的SDN控制器,在科研方面得到了广泛的应用。相比其他控制器,受益于Python语言,在Ryu上开发SDN应用的效率要远高于其他控制器。...为了解决复杂的业务,有时需要在Ryu上开发多模块来协同工作,从而共同完成复杂的业务。本文将介绍Ryu模块之间通信,包括Context等方式的多种通信方式。 ?...然而在Ryu的实现中,这个机制并不完美,或者有所限制。首先,当某个模块作为别的模块的服务启动时,就无法在启动Ryu时手动启动。这种做法应该是出于保证模块启动顺序,从而顺利完成多模块启动而设计。...每当交换机和Ryu建立连接,都会实例化一个Datapath对象来处理这个连接。在Datapath对象中,会将接收到的数据解析成对应的报文,进而转化成对应的事件,然后发布。...总结 在使用Ryu开发SDN网络应用的过程中,多模块协同工作是非常常见的场景。

1.1K80

Ryu的一些设计方法解读

作为一个业余研究Ryu的软件工程师,一直惊叹于Ryu设计的优雅与简洁。一年多坚持下来,也有自己的一些收获,写出来和大家分享一下。 我们的故事从@set_ev_cls这个被大量使用的装饰器开始。...我们的李呈大神在《RYU源码解读》(http://www.sdnlab.com/6395.html)已经把ryu的启动流程给我们大致讲解了。 不过我本人觉得还不过瘾,有几点在这里补充一下。..._Event的使用在\ryu\topology\switches中有如下代码 而在\ryu\base\app_manager文件中有 从这些线索中我们可以看到_EVENTS其实就是上文中动态生成的msg_ev_class...当然Event类的来源还通过import得到,比如\ryu\lib\lacplib.py就定义了大量的Event类,simple_switch_lacp_13.py就是通过from ryu.lib import...@set_ev_cls还有个兄弟@set_ev_handler,在\ryu\app\gre_tunnel和\ryu\controller\ofp_handler有使用。

1.1K60

基于Ryu打造自定义控制器

本篇文章将以Ryu为例,介绍如何修改Ryu源码,打造属于自己风格的自定义控制器。其内容包括自定义参数,事件,启动顺序,报文,协议和底层服务。 ?...import flags from ryu import version from ryu.app import wsgi from ryu.base.app_manager import AppManager...from ryu.controller import controller from ryu.milestone import milestone from ryu.topology import switches...通过python setup.py install重新安装Ryu之后即可通过ryu-manager -h来查看到新注册的命令。...重新安装Ryu即可将该报文写入到Ryu运行代码中,Ryu的事件机制会自动将这个报文生成对应的事件,进一步测试需要读者自行开发。 自定义协议 既然讲到自定义报文,那么继续提一下自定义协议。

1.5K60

怎样配置开发环境来调试SDN应用程序

本文主要讲述如何在Eclipse中搭建基于RYU控制器的开发环境。 0. 众所周知,Ryu是基于python编写的,那么在进行下面的步骤之前,大家需要自己首先配置和安装python环境。...方法1:在命令行中,可以直接cd到Ryu源代码的目录中,然后按照readme中的提示python setup.py build和python setup.py install即可。...编译之后会自动在工程中出现build的目录,其中包含了所有Ryu的功能。 6.运行最简单的基于Ryu的Hub应用程序,这是很多Ryu教程中最为基础的一个例子。...接下来,右键ryu-manager,选择run as->1 python run即可运行该应用程序。 8....若想动态调试simple_switch_13.py这一程序,可以直接在eclipse中打开该程序并设置断点,右键ryu-manager,选择debug as->1 python run即可。

1.1K120

基于Sdn和cnn的网络数据包的识别

网络是SDN,控制器使用RYU,基础网络使用OVS搭,在启动RYU之后整个网络就开始运行了。这个时候控制器就会实时地检测这个网络里的数据流。...将统计好的数据交由Numpy(一个python实现的科学计算库,用来存储和处理大型矩阵)和pandas(基于Numpy的一种工具,为了解决数据分析而创建)进行处理成为模型可以处理的数据。...四、测试 (一)打开Ryu控制器 使用下面的命令在Pycharm的Terminal下开启Ryu ? (二)打开Mininet Mninetstart.sh文件中包含一下命令: ?...③修改Ryu源码,一次解决所有的问题。...(三)基于RYU实现了对数据包的实时解析 成功将模型嵌入到Ryu当中,实现实时的处理,这一步非常的重要。没有这一步那么即使训练的模型在好,也不能够实现数据包的实时处理。

1.3K20

SDN有哪些开源项目?

可能你熟悉OpenDaylight、 RYU、Floodlight,但是你也许不知道还有MUL、Beacon、Trema等一大波开源控制器。...RYU RYU 由日本NTT公司负责设计研发的一款开源SDN控制器,同POX一样,也是完全由Python语言实现,使用者可以在Python语言的基础上实现自己的 应用,采用Apache License...POX POX是由斯坦福使用Python语言开发的基于OpenFlow的一种控制器,是NOX的兄弟,它具有能将交换机送上来的协议包交给指定软件模块的功能。 8....NOX NOX 是Nicira使用Python开发的首个提供尽可能通用接口的 SDN 软件定义网络生态系统的控制器,也是用来构建网络控制应用的平台。 9....Open vSwitch Open vSwitch是由Nicira公司使用C和Python语言开发实现的遵循开源Apache2.0许可的产品级质量的多层虚拟交换标准!

3.2K80

SDN你必须知道的十大问题——SDN书籍有哪些?

RYU SDN Framework - English Edition Release 1.0 作者:Ryu project team ?...《RYU SDN Framework》是主要专注于Ryu与OpenFlow协议的一本书,其章节章节第一部分 是Simple Switch简单实际操作与流量监控以及链路聚合。...第二部分详细说明并分析OpenFlow协议;第三部分讨论使用Ryu内建防火墙(FireWall)和测试工具应用程式;最后介绍Ryu的架构及实际应用的案例。...评价: 《RYU SDN Framework》给使用Ryu作为开发的架构的人,安装、使用案例及实践,通过实际的例子,介绍Ryu的程式如何运作及OpenFlow协议的封包函数的使用,目的是为了实现SDN的一本书...,且应用python语言的易用性,支持OpenStack插件,较严谨。

1.3K40

基于网络流量的SDN最短路径转发应用

本文将介绍如何通过SDN控制器Ryu开发基于流量的最短路径转发应用。 ?...示例代码可由muzixing/ryu/network_monitor获取。...为了让其他模块获取到最新的流量信息,可在Ryu中自定义事件,具体教程请查看《基于Ryu打造自定义控制器》的自定义事件部分内容。不定义事件的情况下,需要将此模块作为新模块的CONTEXT。...详情可阅读《Ryu:模块间通信机制分析》的相关内容。 Forwarding Application 基于以上两个模块的数据,转发应用模块需要完成如下几个步骤,从而完成基于流量的最优路径转发。...Conclusion 本文介绍了在Ryu控制器中开发基于流量的最优转发的流程。不过内容仅仅涉及了解决思路,实际工程代码的发布还需要等待一段时间。

1.9K101
领券