SDN实验---RYU介绍

一:RYU的安装:

        参考  :

                        https://blog.csdn.net/Mr_Wanderer/article/details/107028267

                        https://blog.csdn.net/qq_19696893/article/details/123747960

        bug解决:

SDN实验---RYU介绍_第1张图片

SDN实验---RYU介绍_第2张图片

sudo pip3 install webob==1.2.3

sudo easy_install webob==1.2.3
应该会有很多红色的都根据上面的方式进行更新即可

        最后 

        测试是否可以正常运行。 

二:Ryu是主流SDN开源控制器之一

        1.Ryu是什么

        Ryu是一种基于Python语言的软件定义网络(SDN)控制器,它提供了一个开放的应用程序接口(API),使网络管理员和开发人员能够轻松地编写新的网络控制应用程序来进行网络流量的控制和管理。Ryu通过OpenFlow协议与网络交换机通信,可以对网络设备进行配置、监控和管理。Ryu是一个开源项目,由日本NTT实验室开发和维护,被广泛应用于SDN应用程序的开发和部署。

        2.Ryu的架构

SDN实验---RYU介绍_第3张图片

        3.RYU的特点

        Ryu在SDN控制器领域有以下几个特点:

  1. 简单易用:Ryu采用Python语言编写,易于学习和使用,提供了丰富的API和文档,使开发人员能够快速地构建自己的SDN应用程序。

  2. 高度可扩展:Ryu提供了一个基于插件的架构,使开发人员可以方便地扩展和定制SDN应用程序的功能。

  3. 支持多种OpenFlow协议版本:Ryu支持多种OpenFlow协议版本,包括1.0、1.3和1.4版本,使其可以兼容不同厂家的网络交换机。

  4. 高性能:Ryu采用异步I/O模型和事件驱动的设计,提供了高性能的网络流量控制和管理能力。

  5. 开放源代码:Ryu是一个开源项目,可以自由获取代码并进行修改和定制,有助于推动SDN技术的发展和普及。

        4.RYU可以做什么?

        RYU是一款SDN控制器,可以实现以下功能:

  1. 网络拓扑发现和管理:RYU可以发现和管理SDN网络中的拓扑结构,包括交换机、主机、链路和路径等信息。

  2. 网络流量控制和管理:RYU可以控制网络流量的转发和策略,支持流表、QoS、ACL等功能,可以实现网络流量的精确控制和管理。

  3. 网络安全和监控:RYU可以对网络流量进行监控和分析,能够识别和处理恶意流量和攻击行为,提高网络安全性。

  4. 网络服务质量(QoS)保障:RYU可以实现基于流量的服务质量保障,包括带宽限制、拥塞控制、流量分类等功能。

  5. 网络编程和应用开发:RYU提供了丰富的API和SDK,支持Python编程语言,可以方便地开发和部署SDN应用程序,如基于SDN的网络监控、负载均衡、流量控制和优化等。

        总之,RYU可以实现SDN网络的灵活和高效管理和控制,提高网络性能和安全性,同时也为SDN应用程序的开发和部署提供了便利。

        5.GUI

官方:
https://ryu.readthedocs.io/en/latest/gui.html

第三方:
http://ww7.sdnhub.org/releases/sdn-starter-kit-ryu/

        6.Ryu的源码目录

SDN实验---RYU介绍_第4张图片

         1.base:

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

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

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

SDN实验---RYU介绍_第5张图片

        2.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文件中,定义了交换机端的一些消息,如端口状态信息等,用于描述和操作交换机。如添加端口,删除端口等操作。

        3. lib:

       lib中定义了我们需要使用到的基本的数据结构,如dpid, mac和ip等数据结构。在lib/packet目录下,还定义了许多网络协议,如ICMP, DHCP, MPLS和IGMP等协议内容。而每一个数据包的类中都有parser和serialize两个函数。用于解析和序列化数据包。lib目录下,还有ovs, netconf目录,对应的目录下有一些定义好的数据类型,不再赘述。SDN实验---RYU介绍_第6张图片

         4.ofproto:

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

        5.topology:

        包含了switches.py等文件,基本定义了一套交换机的数据结构。

        event.py定义了交换上的事件。

        dumper.py定义了获取网络拓扑的内容。

        最后api.py向上提供了一套调用topology目录中定义函数的接口。

        6. contrib:这个文件夹主要存放的是开源社区贡献者的代码。

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

        8.services:完成了BGP和vrrp的实现。

        9.tests:tests目录下存放了单元测试以及整合测试的代码

三:Ryu和Mininet联用

        1.开启控制器,使用二层交换

ryu-manager simple_switch.py

         2.开启Mininet

sudo mn --controller=remote

运行成功并且 pingall测试

SDN实验---RYU介绍_第8张图片

         3.连接成功如图:SDN实验---RYU介绍_第9张图片

 


 

你可能感兴趣的:(SDN,零信任网络,RYU,linux,网络)