ryu

2019 SDN上机第5次作业

二次信任 提交于 2019-12-05 20:18:22
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 官方教程实现了一个将接收到的数据包发送到所有端口的交换机功能 控制器设定交换机支持什么版本的OpenFlow? OpenFlow 1.0 控制器设定了交换机如何处理数据包? @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER) def packet_in_handler(self, ev): msg = ev.msg dp = msg.datapath ofp = dp.ofproto ofp_parser = dp.ofproto_parser actions = [ofp_parser.OFPActionOutput(ofp.OFPP_FLOOD)] out = ofp_parser.OFPPacketOut( datapath=dp, buffer_id=msg.buffer_id, in_port=msg.in_port, actions=actions) dp.send_msg(out) 类中添加了一个新方法“packet_in_handler”。当Ryu接收到消息中的OpenFlow数据包时调用此函数。诀窍是“set-ev-cls”装饰器

2019 SDN上机第5次作业

两盒软妹~` 提交于 2019-12-05 20:16:43
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解 - 描述官方教程实现了一个什么样的交换机功能? 实现了让交换机在各端口发送它接收到的数据包的功能 - 控制器设定交换机支持什么版本的OpenFlow? 支持OpenFlow v1.0 - 控制器设定了交换机如何处理数据包? 首先通过以下这个语句设置想要向交换机协商的OpenFlow版本号 OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] 给出官方的代码,这一部分是实现将接收到的数据包发送到所有端口的功能。 super(L2Switch, self).__init__(*args, **kwargs) @set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER) def packet_in_handler(self, ev): msg = ev.msg dp = msg.datapath ofp = dp.ofproto ofp_parser = dp.ofproto_parser actions = [ofp_parser.OFPActionOutput(ofp.OFPP_FLOOD)] out = ofp_parser.OFPPacketOut( datapath=dp, buffer_id=msg

通过源码安装RYU控制器

♀尐吖头ヾ 提交于 2019-12-05 17:58:22
安装pip3 sudo apt-get install python3-pip 获取ryu源码 git clone https://github.com/osrg/ryu.git 安装依赖 cd ryu sudo pip3 install -r tools/pip-requires -i https://pypi.tuna.tsinghua.edu.cn/simple 安装ryu sudo python3 setup.py install 来源: https://www.cnblogs.com/multhree/p/11938765.html

2019 SDN上机第5次作业

一笑奈何 提交于 2019-12-05 16:04:34
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解 1.描述官方教程实现了一个什么样的交换机功能? 让交换机在各个端口发送它接收到的数据包 2. 控制器设定交换机支持什么版本的OpenFlow? OpenFlow v1.0 3. 控制器设定了交换机如何处理数据包? 这里把官方给出的代码放上来(不然不知道在解释啥),备注中解释到处理函数定义为止的前半部分,后半部分较长就在下面用文字解释 from ryu.base import app_manager from ryu.controller import ofp_event from ryu.controller.handler import MAIN_DISPATCHER from ryu.controller.handler import set_ev_cls from ryu.ofproto import ofproto_v1_0 class L2Switch(app_manager.RyuApp): OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION] /*这里设置想要向交换机协商的OpenFlow版本号*/ /*这玩意设置完后,控制器会自动交换Hello包,协商版本号,接着协商完成之后,它再自动执行交换Features包,进行握手*/ def __init__

在RYU中实现交换机的功能

眉间皱痕 提交于 2019-12-05 02:38:23
首先源码,解析部分如下,同时可以参考RYU_BOOK上的解释说明 from ryu.base import app_manager from ryu.controller import ofp_event from ryu.controller.handler import CONFIG_DISPATCHER, MAIN_DISPATCHER from ryu.controller.handler import set_ev_cls from ryu.ofproto import ofproto_v1_3 from ryu.lib.packet import packet from ryu.lib.packet import ethernet class SimpleSwitch13(app_manager.RyuApp): OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]//OpenFlow1.3版本 def __init__(self, *args, **kwargs): super(SimpleSwitch13, self).__init__(*args, **kwargs) self.mac_to_port = {}\\MAC位址表,用于存放MAC地址和端口之间的映射 \\@set_ev_cls表示事件修饰符

SDN实验---Ryu的源码分析

↘锁芯ラ 提交于 2019-12-03 01:59:10
一:安装Pycharm https://www.cnblogs.com/huozf/p/9304396.html (有可取之处) https://www.jetbrains.com/idea/buy/#discounts?billing=yearly (学生注册,免费) 二:推文 https://www.cnblogs.com/ssyfj/p/11730362.html (含目录介绍) 三:源码分析流程 四:找入口函数main (一)我们编写的应用:全部继承于app_manager.RyuApp----去看他 from ryu.base import app_manager class Hub(app_manager.RyuApp): pass 没有找到主函数main!!!! (二)我们启动Ryu的常用方式 ryu-manager simple_switch_13.py --verbose 通过终端输入,启动Ryu控制器。因此我们进入cmd目录中 cmd目录定义了RYU的命令系统 我们在该文件目录下的两个文件中都找到了main函数-----Ok  反正是找到了main函数 (三)使用Ctrl+B查找调用main函数的位置 1.ryu_base.py查找 在主目录下的bin目录的ryu文件中,调用了主函数main 2.在manager.py中查找 在主目录下的bin目录的ryu

Ryu学习-呈神链接

匿名 (未验证) 提交于 2019-12-03 00:18:01
1.SDN下分布式广播风暴解决方案 http://www.muzixing.com/pages/2013/12/07/yuan-chuang-sdnxia-de-fen-bu-shi-yan-bo-feng-bao-jie-jue-fang-an.html 2.mininet与外部主机的通信 http://www.muzixing.com/pages/2014/03/25/mininetyu-wai-bu-hosttong-xin.html 3.Ryu上的负载均衡 http://www.muzixing.com/pages/2014/11/07/load-balancemultipath-application-on-ryu.html 4.docker上安装ryu http://www.muzixing.com/pages/2014/12/03/dockerbu-shu-sdnhuan-jing.html 5.RYU学习:eventlet的使用 http://www.muzixing.com/pages/2014/12/10/ryuxue-xi-eventlet.html 6.RYU学习:oslo学习 http://www.muzixing.com/pages/2014/12/19/ryuxue-xi-oslo.html 7. RYU核心源码解读:OFPHandler

RYU安装教程

一个人想着一个人 提交于 2019-12-03 00:03:50
一、使用pip的形式安装RYU 1.首先检查ubuntu中是否存在pip,命令为 sudo pip3 --version 2.如果存在则使用默认版本8.1.1就行不必跟新,否则自己下载一个pip 3.安装ryu命令 sudo pip install ryu -i https://pypi.douban.com/simple 4.安装完成后使用命令查看ryu安装的位置 sudo pip show ryu 5.进入到ryu目录使用命令查看ryu是否能够运行 sudo ryu-manager 6.或者进入到ryu/ryu/app文件夹下使用ryu-manager simple_switch.py命令,来检验一下ryu是否安装成功 来源: https://www.cnblogs.com/manmanchanglu/p/11768377.html

SDN学习笔记mininet+ryu开篇

匿名 (未验证) 提交于 2019-12-02 22:51:30
很久没写博客了,顺便最近要学一下sdn,顺便就记录一下自己的学习过程和心得体会这样子 顺便以后有个可以翻看笔记的地方: 1.mininet和ryu安装   只要照着那上面弄就没什么大问题   我使用的是Ubuntu安装的没有什么问题   以后会贴一些测试效果看一下   地址:http://osrg.github.io/ryu/resources.html   有繁体中文版 2.简单的测试: mn --topo single,3 --mac --switch ovsk --controller remote -x //mininet启动 single单个交换机;3三个host; mac自动设定host的mac; ovsk 交换机使用Open vSwitch;--controller remote使用外部控制器就是ryu;-x 显示xterm ovs-vsctl set Bridge s1 protocols=OpenFlow13 //设定ovs的OpenFlow 协议版本 //检查ovs里的某个流表 ryu-manager --verbose ./xxx.py //启动某个ryu APP 要进入相应路径 //现在基本上用到的这些 help可以查看帮助以后有用到的细节再添加    文章来源: SDN学习笔记mininet+ryu开篇

SDN实验---Ryu的应用开发(四)基于跳数的最短路径转发原理

ぃ、小莉子 提交于 2019-12-02 22:14:01
一:实现最短跳数转发 (一)原理 推文: 迪杰斯特拉算法 和 弗洛伊德算法 二:代码实现 (一)全部代码 from ryu.base import app_manager from ryu.controller.handler import set_ev_cls from ryu.controller import ofp_event from ryu.controller.handler import MAIN_DISPATCHER,CONFIG_DISPATCHER from ryu.lib.packet import packet,ethernet from ryu.topology import event from ryu.topology.api import get_switch,get_link from ryu.ofproto import ofproto_v1_3 import networkx as nx class MyShortestForwarding(app_manager.RyuApp): ''' class to achive shortest path to forward, based on minimum hop count ''' OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION] def __init__