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

实验6:开源控制器实践

时间:2022-10-28 20:12:24浏览次数:47  
标签:控制器 parser datapath 实践 ofp 开源 ofproto ryu

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

一、实验目的 能够独立部署RYU控制器; 能够理解RYU控制器实现软件定义的集线器原理; 能够理解RYU控制器实现软件定义的交换机原理。

二、实验环境 Ubuntu 20.04 Desktop amd64

三、实验要求

(一)基本要求 搭建下图所示SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。

sudo mn --topo=single,3 --mac --controller=remote,ip=127.0.0.1,port=6633 --switch ovsk,protocols=OpneFlow10

 

 

 

 

阅读Ryu文档的The First Application一节,运行当中的L2Switch,h1 ping h2或h3,在目标主机使用 tcpdump 验证L2Switch,分析L2Switch和POX的Hub模块有何不同。

编程修改L2Switch.py,另存为L2xxxxxxxxx.py,使之和POX的Hub模块的变得一致?(xxxxxxxxx为学号

 

 

 

 

from ryu.base import app_manager
from ryu.ofproto import ofproto_v1_3
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER,CONFIG_DISPATCHER
from ryu.controller.handler import set_ev_cls


class Hub(app_manager.RyuApp):
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]

    def __init__(self,*args,**kwargs):
        super(Hub,self).__init__(*args,**kwargs)


    @set_ev_cls(ofp_event.EventOFPSwitchFeatures,CONFIG_DISPATCHER)
    def switch_features_handler(self,ev):
        datapath = ev.msg.datapath
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser

        match = ofp_parser.OFPMatch()
        actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_CONTROLLER,ofproto.OFPCML_NO_BUFFER)]

        self.add_flow(datapath,0,match,actions,"default flow entry")

    def add_flow(self,datapath,priority,match,actions,remind_content):
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser

        inst = [ofp_parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS,
                                             actions)]

        mod = ofp_parser.OFPFlowMod(datapath=datapath,priority=priority,
                                    match=match,instructions=inst);
        print("install to datapath,"+remind_content)
        datapath.send_msg(mod);


    @set_ev_cls(ofp_event.EventOFPPacketIn,MAIN_DISPATCHER)
    def packet_in_handler(self,ev):
        msg = ev.msg
        datapath = msg.datapath
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser

        in_port = msg.match['in_port']

        print("get packet in, install flow entry,and lookback parket to datapath")

        match = ofp_parser.OFPMatch();
        actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_FLOOD)]

        self.add_flow(datapath,1,match,actions,"hub flow entry")

        out = ofp_parser.OFPPacketOut(datapath=datapath,buffer_id=msg.buffer_id,
                                            in_port=in_port,actions=actions)

        datapath.send_msg(out);

 个人总结,包括但不限于实验难度、实验过程遇到的困难及解决办法,个人感想,不少于200字。

使用用Ryu的L2Switch模块下发流表,可以在窗口看到h1 ping h2 和h1 ping h3的结果(有洪泛),但是看不出来Ryu与Pox的关键区别。于是收到同学的指点使用dpctl del-flows命令查看了一下流表发现流表为空,才明白Ryu与Pox的区别。

本次的ryu实践还算简单,根据PDF的指导可以正确的得到结果,但是图形化的界面有些问题,而且本地的网址始终打不开

本次实验完成我学会了如何独立部署安装ryu控制器,对ryu控制器实现软件定义的集线器原理有了实践上的理解,初步掌握了使用ryu控制器的方法。但是只是一些皮毛,会在大作业中继续使用并深入学习

标签:控制器,parser,datapath,实践,ofp,开源,ofproto,ryu
From: https://www.cnblogs.com/cwj0628/p/16837330.html

相关文章

  • 实验6_开源控制器实践——Ryu
    一)基本要求1.搭建所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。·构建拓扑sudomn--topo=single,3--mac--controller=remote,ip......
  • 实验6:开源控制器实践——RYU
    实验6:开源控制器实践——RYU一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环......
  • 实验6:开源控制器实践——RYU
    (一)基本要求1.搭建下图所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。1)构建topo:sudomn--topo=single,3--mac--controller=remot......
  • 实验6:开源控制器实践——RYU
    实验6:开源控制器实践——RYU一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验......
  • 可观测可回溯 | Continuous Profiling 实践解析
    作者:虚镜概述ContinuousProfiling在软件开发生命周期的位置CI/CD的概念非本文重点,不解释了。从上图可以看出。ContinuousProfiling(持续性能分析,下文简称为CP)是生产向开......
  • 可观测可回溯 | Continuous Profiling 实践解析
    作者:虚镜概述ContinuousProfiling在软件开发生命周期的位置CI/CD的概念非本文重点,不解释了。从上图可以看出。ContinuousProfiling(持续性能分析,下文简称为CP)是生产向开......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境......
  • 大咖说·对话开源|论数据库开源人才培养的实践
     数据库开发者的核心要素是什么?不同市场所需人才的共性和差异性在哪里?开源数据库人才是如何提升自我竞争力的?本期大咖说,阿里云数据库开源负责人惊玄携手CUUG负责人陈卫......
  • 可观测实践|如何使用阿里云 Prometheus 观测 ECS 应用
    作者:颍川引言Prometheus+Grafana已经成为云原生时代的可观测性事实标准。我们使用Prometheus观测云原生时代的Kubernetes体系下的Node、ApiServer、workload等......
  • 企业级自定义表单引擎解决方案(十五)--前端开源说明
    一直做后端开发,前端还真不是强项,半桶水的样子,好在现在前端框架和组件层出不穷,基本上勉强可以上路。自定义表单对前端要求非常高,技术上的难度不亚于后端,而且要考虑扩展性......