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

实验目的

  • 能够独立部署RYU控制器
  • 能够理解RYU控制器实现软件定义的集线器原理
  • 能够理解RYU控制器实现软件定义的交换机原理

二、实验环境

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

三、实验要求

  • 安装截图
    实验6:开源控制器实践——RYU
  • 查看网络拓扑
    实验6:开源控制器实践——RYU
  • 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)

  • 运行run L2Switch.py
    实验6:开源控制器实践——RYU

  • h1 ping h2:
    实验6:开源控制器实践——RYU

  • h1 ping h3:
    实验6:开源控制器实践——RYU

  • 洪泛转发ICMP报文
    实验6:开源控制器实践——RYU
    发现并没有流表,但是使用pox会有

个人心得

  • 本次的ryu实践还算简单,根据PDF的指导可以正确的得到结果,但是图形化的界面有些问题,而且本地的网址始终打不开
  • 本次实验完成我学会了如何独立部署安装ryu控制器,对ryu控制器实现软件定义的集线器原理有了实践上的理解,初步掌握了使用ryu控制器的方法。但是只是一些皮毛,会在大作业中继续使用并深入学习。
上一篇:blender3安装blendergis显示google


下一篇:百度paddle和aistudio系列分析(人工智能产业生态发展前景全聚焦)国产人工智能产业的升级,并且与Google对比下未来的展望