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

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

时间:2022-11-06 19:44:06浏览次数:58  
标签:控制器 parser datapath actions ofp 开源 ofproto RYU match

一、实验要求

(一)基本要求

1.搭建下图所示SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。

查看网络拓扑

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

h1 ping h2

h1 ping h3

查看流表

pox下查看拓扑流表


结论:Ryu的L2Switch模块和POX的Hub模块都采用洪泛转发,不同之处在于Ryu的L2Switch模块运行时不能查看流表,而POX的Hub模块运行时可以查看流表

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

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_feathers_handler(self, ev):
        datapath = ev.msg.datapath
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser
 
        # install flow table-miss flow entry
        match = ofp_parser.OFPMatch()
        actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_CONTROLLER, ofproto.OFPCML_NO_BUFFER)]
        # 1\OUTPUT PORT, 2\BUFF IN SWITCH?
        self.add_flow(datapath, 0, match, actions)
 
    def add_flow(self, datapath, priority, match, actions):
        # 1\ datapath for the switch, 2\priority for flow entry, 3\match field, 4\action for packet
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser
        # install flow
        inst = [ofp_parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS, actions)]
        mod = ofp_parser.OFPFlowMod(datapath=datapath, priority=priority, match=match, instructions=inst)
        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']  # get in port of the packet
 
        # add a flow entry for the packet
        match = ofp_parser.OFPMatch()
        actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_FLOOD)]
        self.add_flow(datapath, 1, match, actions)
 
        # to output the current packet. for install rules only output later packets
        out = ofp_parser.OFPPacketOut(datapath=datapath, buffer_id=msg.buffer_id, in_port=in_port, actions=actions)
        # buffer id: locate the buffered packet
        datapath.send_msg(out)

验证修改截图


(二)个人总结
本次实验,通过看ppt和阅读RYU文档以及查看相关模块的源代码,进一步了解了RYU控制器的工作原理,比较了RYU的L2Switch模块与POX的Hub模块的相同之处和不同之处。让我对RYU的控制机制有了更深入的认知。在修改代码使得ryu的L2switch与pox的hub模式一样过程中,通过学习网上资料和代码,收获了很多相关的知识。实验中如果遇到运行L2_212006125.py文件时出错,不妨可以把OpenFlow13改为OpenFlow10。

标签:控制器,parser,datapath,actions,ofp,开源,ofproto,RYU,match
From: https://www.cnblogs.com/fjfkhfjh/p/16863565.html

相关文章

  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ubu......
  • 实验6:开源控制器实践——RYU
    实验6:开源控制器实践——RYU一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验6:开源控制器实践——RYU
    一、实验目的1、能够独立部署RYU控制器;2、能够理解RYU控制器实现软件定义的集线器原理;3、能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktop......
  • Java 超新星开源项目 Solon v1.10.10 发布
    一个更现代感的Java应用开发框架:更快、更小、更自由。主框架仅0.1MB。Helloworld:@ControllerpublicclassApp{publicstaticvoidmain(String[]args){......
  • Kubernetes控制器工作流程
    Kubernetes控制器会监视资源的创建/更新/删除事件,并触发Reconcile函数作为响应。Kubernetes水平触发API的实现方式为:监视系统的实际状态,并与对象的Spec中定义的期望状态进......
  • Codelf 搜索开源代码帮程序员命名
    "计算机科学里两件最难的事:缓存失效和命名。"Codelf通过搜索在线开源平台Github,Bitbucket,GoogleCode,Codeplex,Sourceforge,FedoraProject的项目源码,帮开发者从......
  • 基于AM5728的振动控制器软硬件设计
    上世纪由于技术的限制,大都主要发展单轴振动控制系统,但随着实验环境和要求的复杂化,单轴的振动控制系统已经不能满足工业试验的要求,因此,世界各国开始研究多轴振动控制系统......
  • 成熟企业级开源监控解决方案Zabbix6.2关键功能实战-上
    @目录概述定义监控作用使用理解监控对象和指标架构组成常用监控软件分析版本选型俗语安装部署方式部署zabbix-agent概述定义Zabbix官网地址https://www.zabbix.com/......
  • 实验6:开源控制器实践——RYU
    一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktopam......