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

实验5:开源控制器实践——POX

时间:2022-10-12 01:00:23浏览次数:49  
标签:控制器 POX 开源 actions action ofp msg output port

实验5:开源控制器实践——POX

(一)基础要求

  1. h1 ping h2
    结果:h2、h3都收到数据包。
    image

  2. h1 ping h3
    结果:h2、h3都收到数据包。
    image

  3. 阅读L2_learning模块代码,画出程序流程图,使用 tcpdump 验证Switch模块

  • 程序流程图
    image

  • 验证结果
    (1) h1 ping h2
    结果:h2收到数据包,h3没有收到。
    image

(2) h1 ping h3
结果:h2没有收到数据包,h3收到。
image

(二)进阶要求

    1. 模块SendFlowInSingle3
点击查看代码
from pox.core import core
import pox.openflow.libopenflow_01 as of

class SendFlowInSingle3(object):
    def __init__ (self):
        core.openflow.addListeners(self)
    def _handle_ConnectionUp(self, event):
        msg = of.ofp_flow_mod()  
        msg.priority = 1
        msg.match.in_port = 1
        msg.actions.append(of.ofp_action_output(port=2)) 
        msg.actions.append(of.ofp_action_output(port=3))
        event.connection.send(msg)
        msg = of.ofp_flow_mod()  
        msg.priority = 1
        msg.match.in_port = 2  
        msg.actions.append(of.ofp_action_output(port=1)) 
        msg.actions.append(of.ofp_action_output(port=3))  
        event.connection.send(msg)
        msg = of.ofp_flow_mod()  
        msg.priority = 1
        msg.match.in_port = 3  
        msg.actions.append(of.ofp_action_output(port=1)) 
        msg.actions.append(of.ofp_action_output(port=2))  
        event.connection.send(msg)
def launch():
    core.registerNew(SendFlowInSingle3)
  • 开始pingall不通,下发流表后pingall通。

image

    1. 模块SendPoxHardTimeOut
点击查看代码
from pox.core import core
import pox.openflow.libopenflow_01 as of
from pox.openflow.of_json import *


def _handle_ConnectionUp(event):
    msg = of.ofp_flow_mod()
    msg.priority = 1
    msg.match.in_port = 1
    msg.actions.append(of.ofp_action_output(port=2))
    #msg.actions.append(of.ofp_action_output(port=3))
    event.connection.send(msg)

    msg = of.ofp_flow_mod()
    msg.priority = 1
    msg.match.in_port = 2
    msg.actions.append(of.ofp_action_output(port=1))
    msg.actions.append(of.ofp_action_output(port=3))
    event.connection.send(msg)

    msg = of.ofp_flow_mod()
    msg.priority = 1
    msg.match.in_port = 3
    #msg.actions.append(of.ofp_action_output(port=1))
    msg.actions.append(of.ofp_action_output(port=2))
    event.connection.send(msg)


def launch():
    core.openflow.addListenerByName("ConnectionUp", _handle_ConnectionUp)
  • 开始SendFlowInSingle后ping通,然后执行SendPoxHardTimeOut后不可达,再次SendFlowInSingle后又ping通。

image

    1. ovs-ofctl交换机流表项
  • 执行SendPoxHardTimeOut后,可以看出s1中流表h1少了output至h3的action,h3少了output至h1的action,导致h1 ping h3时不可达。
    image

(三)总结

  • 1.完成基础要求时按照实验说明ppt可以顺利完成,提高了对pox的基本使用,但理解L2_learning的代码时需要查阅下资料,耗费了较长时间。
  • 2.完成进阶要求时理解了下发流表和硬超时的原理,但在编写代码时需要查阅下资料并努力理解每一行代码的含义,耗费了较长时间。

标签:控制器,POX,开源,actions,action,ofp,msg,output,port
From: https://www.cnblogs.com/juqin-6905/p/16783136.html

相关文章

  • 实验5:开源控制器实践——POX
    一、基础要求:建立拓扑:sudomn--topo=single,3--mac--controller=remote,ip=127.0.0.1,port=6633--switchovsk,protocols=OpenFlow10运行Hub模块:./pox.pylog.level......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的1.能够理解POX控制器的工作原理;2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;3.......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的1.能够理解POX控制器的工作原理;2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;3.......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验5 开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验5:开源控制器实践——POX
    基本要求1.tcpdump验证Hub模块h1pingh2的tcpdump抓包结果截图h1pingh3的tcpdump抓包结果截图2.tcpdump验证Switch模块h1pingh2的tcpdump抓包结果截图h1p......
  • 实验5:开源控制器实践——POX
    一、实验目的1.能够理解POX控制器的工作原理;2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;3.能够运用POX控制器编写自定义网......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX(一)基本要求1、使用tcpdump验证Hub模块h1pingh2h1pingh32、阅读L2_learning模块代码,画出程序流程图3、使用tcpdump验......
  • 实验5:开源控制器实践——POX
    (一)基础要求搭建下图所示SDN拓扑,协议使用OpenFlow1.0,控制器使用部署于本地的POX(默认监听6633端口)阅读Hub模块代码,使用tcpdump验证Hub模块;h1pingh2时,h2和h3都能接......