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”装饰器。这个decorator告诉Ryu何时应该调用修饰函数。
每次Ryu在消息中收到一个packet_时,都会调用此函数。
使用“MAIN_DISPATCHER”作为第二个参数意味着仅在协商完成后才调用此函数。
之后定义packet_in数据结构对象,数据路径对象datapath,OpenFlow协议和解析过程;定义交换机的动作,如何发送数据包;定义Ryu向交换机发送的packet_out内容,最后发送消息

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!