首页 > 其他分享 >实验6:开源控制器实践——RYU

实验6:开源控制器实践——RYU

时间:2022-11-08 21:44:26浏览次数:55  
标签:控制器 simple 开源 ofp switch msg RYU

实验6:开源控制器实践——RYU

一、实验目的

  1. 能够独立部署RYU控制器;
  2. 能够理解RYU控制器实现软件定义的集线器原理;
  3. 能够理解RYU控制器实现软件定义的交换机原理。

二、实验环境

  1. 下载虚拟机软件Oracle VisualBox或VMware;
  2. 在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;

三、实验要求

(一)基本要求

  1. 完成Ryu控制器的安装。
    img
  2. 搭建下图所示SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器。
    img
  3. 通过Ryu的图形界面查看网络拓扑。
  4. 阅读Ryu文档的The First Application一节,运行并使用 tcpdump 验证L2Switch,分析和POX的Hub模块有何不同。
    h1 ping h2

img

h1 ping p3

img

L2Switch.py

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]
 
    def __init__(self, *args, **kwargs):
        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)]
 
        data = None
        if msg.buffer_id == ofp.OFP_NO_BUFFER:
             data = msg.data
 
        out = ofp_parser.OFPPacketOut(
            datapath=dp, buffer_id=msg.buffer_id, in_port=msg.in_port,
            actions=actions, data = data)
        dp.send_msg(out)
 

img

RYU的L2Switch模块和POX的Hub模块都采用洪泛转发,pox的Hub模块可以在运行时查看流表,ryu的L2Switch模块无法查看运行时的流表

(二)进阶要求

  1. 阅读Ryu关于simple_switch.py和simple_switch_1x.py的实现,以simple_switch_13.py为例,完成其代码的注释工作,并回答下列问题:
    a) 代码当中的mac_to_port的作用是什么?
    b) simple_switch和simple_switch_13在dpid的输出上有何不同?
    c) 相比simple_switch,simple_switch_13增加的switch_feature_handler实现了什么功能?
    d) simple_switch_13是如何实现流规则下发的?
    e) switch_features_handler和_packet_in_handler两个事件在发送流规则的优先级上有何不同?

个人总结

这次实验总体不难,但是因为各种奇奇怪怪的BUG费了大段时间.
先是RYU安装时因为网络的问题报错了好几次,后面关掉了网络代理后可以正常安装了.
然后是开启RYU的时候报错
查了下没找到解决办法,最后重装虚拟机
img

标签:控制器,simple,开源,ofp,switch,msg,RYU
From: https://www.cnblogs.com/legoylx/p/16871315.html

相关文章

  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境......
  • 开源镜像站
    ​​http://mirrors.cnnic.cn/​​​中国互联开源镜像站只包含Apache开源软件镜像站​​​http://mirror.bit.edu.cn/web/​​​北京理工大学开源镜像服务​​​http:/......
  • 降级域控制器
    一、转换服务器角色  删除活动目录1、如果该域内还有其他域控制器,则该域会被降级为该域的成员服务器2、如果最后一个域控制器,则被降级后,该计算机被降级为独......
  • 推荐 4 个开源工具
    今天推荐4个登上GitHub热搜的开源项目,它们分别是:1.炫酷的UI工具:glslViewer2.Textual3.ToolJet:开源的低代码开发框架4. Linux命令大全搜索工具01炫酷的UI......
  • 基于云开发的答题活动小程序v1.0,开开开源啦
    基于云开发的微信答题活动小程序v1.0,开开开源啦!!!这个答题小程序,技术栈是基于云开发的微信原生小程序。搭建教程系列文章11月是全国“119”消防宣传月,不少企事业单位会举办......
  • 利用网络复制安装额外域控制器、利用介质安装额外域控制器、安装RODC额外域控制器
    一、拥有多台域控制器的优势1、分担用户身份验证的负担,改善用户登录的效率2、容错功能:若有域控制器故障,此时仍然可以有其他正常的域控制器来继续提供服务,因此对......
  • 实验5:开源控制器实践——POX
    POX拓扑、h2、h3mininet>xtermh2h3h2tcpdump-nn-ih2-eth0h3tcpdump-nn-ih3-eth0Hub模块左2是h1pingh2;右2是h1pingh3Switch模块左2是h1pingh2;右2......
  • QT5-打开源码中的所有打印信息
    移植QT时,可能要查看QT的源码中的打印日志,以便确定问题。修改方法如下:/etc/profile文件exportQT_DEBUG_PLUGINS=1exportQT_LOGGING_RULES="*=false;*=true"规则如下:关闭所......
  • 基于arx模型的MPC预测控制器simulink建模与仿真实现
    目录一、理论基础二、核心程序三、测试结果一、理论基础MPC的优点模型预测控制善于处理多输入多输出系统对于MIMO系统,PID需要为每个子系统单独设计PID控制器,......
  • Angel工作室ASP.NET(AngelExam)开源驾校考试系统正式发布
    Angel工作室ASP.NET(AngelExam)开源驾校考试系统正式发布 一、Angel工作室ASP.NET(AngelExam)开源驾校考试系统简介   Angel工作室ASP.NET(AngelExam)驾校考试系......