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

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

时间:2022-10-02 18:35:03浏览次数:44  
标签:控制器 POX pox 端口 ofp 开源 交换机 模块 msg

1.基础要求
a)使用 tcpdump 验证Hub模块,h1 ping h2、h2和h3的tcpdump抓包结果截图

b)使用 tcpdump 验证Switch模块,h1 ping h2、h2和h3的tcpdump抓包结果截图

c)L2_learning模块代码流程图

2.进阶要求
a)相关代码

  • 编写Python程序自定义一个POX模块SendFlowInSingle3,并且将拓扑连接至SendFlowInSingle3(默认端口6633),实现向s1发送流表规则使得所有主机两两互通。
from pox.core import core
import pox.openflow.libopenflow_01 as of
from pox.openflow.of_json import *
from pox.lib.addresses import IPAddr

log = core.getLogger()

class SendFlowInSingle3(object):
    def __init__(self):
    	core.openflow.addListeners(self)

    def _handle_ConnectionUp(self, event):
#设置数据包从端口1进,从端口2和端口3出
        msg = of.ofp_flow_mod() # 使用ofp_flow_mod()的方法向交换机来下发流表
        msg.priority = 1 #设置msg的优先级
        msg.match.in_port = 1  #设置在端口1接收数据包
        msg.actions.append(of.ofp_action_output(port=2))  #增加转发向端口2的动作
        msg.actions.append(of.ofp_action_output(port=3))  #增加转发向端口3的动作
        event.connection.send(msg) #通过send函数向交换机发送所设定的消息
        log.debug("Connection %s" % (event.connection,))
#设置数据包从端口2进,从端口1和端口3出
        msg = of.ofp_flow_mod() # 使用ofp_flow_mod()的方法向交换机下发流表
        msg.priority = 1 #设置msg的优先级
        msg.match.in_port = 2  #设置数据包从端口2进入
        msg.actions.append(of.ofp_action_output(port=1)) #增加转发向端口1的动作 
        msg.actions.append(of.ofp_action_output(port=3))  #增加转发向端口3的动作
        event.connection.send(msg)#通过send函数向交换机发送所设定的消息
        log.debug("Connection %s" % (event.connection,))
#设置数据包从端口3进,从端口1和端口2出
        msg = of.ofp_flow_mod()# 使用ofp_flow_mod()的方法向交换机下发流表
        msg.priority = 1 #设置msg的优先级
        msg.match.in_port = 3  #设置使数据包进入端口3
        msg.actions.append(of.ofp_action_output(port=1))  #增加转发向端口1的动作
        msg.actions.append(of.ofp_action_output(port=2)) #增加转发向端口2的动作 
        event.connection.send(msg)#通过send函数向交换机发送所设定的消息
        log.debug("Connection %s" % (event.connection,))


def launch():
    core.registerNew(SendFlowInSingle3) #注册SendFlowInSingle3的组件

b)运行结果

  • 重新搭建(一)的拓扑,此时交换机内无流表规则,拓扑内主机互不相通
  • 编写Python程序自定义一个POX模块SendFlowInSingle3,并且将拓扑连接至SendFlowInSingle3(默认端口6633),实现向s1发送流表规则使得所有主机两两互通。

    c)ovs-ofctl交换机流表项截图

    3.个人总结
    a)实验感想
    通过本次实验能够理解pox控制器的工作原理,根据老师提供的资料验证了pox的forwarding.hub和forwarding.l2_learning模块,初步掌握了pox控制器的使用方法。并且能运用pox控制器编写自定义网络应用程序,进一步熟悉了pox控制器是如何进行流表的下发。在对比hub模块和switch模块中,学到了switch模块的功能是让Openflow交换机实现L2自学习,可见交换机对数据包进行了学习,实现了从相应的端口发出,只有目的主机可以抓取到报文。而hub模块是在每个交换机上安装泛洪通配符规则,将数据包以广播形式转发,此时交换机等效于集线器。
    b)关键步骤记录
  • 拓扑的生成
  • 进入pox文件目录,开启pox终端

    *开启h1 h2 h3各自的命令行终端
  • 在h2和h3使用开启抓包(抓取eth0端口)

  • 停止hub模块,运行 forwarding 文件夹下的 l2_learning 模块,依旧以 DEBUG 模式运行(这里我是退出了上个拓扑,重新建了一个拓扑,随后与之前步骤相似,打开h1 h2 h3各自的命令行终端,在h2和h3使用开启抓包(抓取eth0端口),再在h1的命令行终端ping10.0.0.2)

  • 进阶部分的“重新搭建(一)的拓扑,此时交换机内无流表规则,拓扑内主机互不相通”,记得关掉pox控制器(ctrl+c)然后重新创建拓扑,mininet命令行中输入:dpctl del-flows 得以删除s1的流表

  • 进阶部分的“编写Python程序自定义一个POX模块SendFlowInSingle3,并且将拓扑连接至SendFlowInSingle3(默认端口6633),实现向s1发送流表规则使得所有主机两两互通。”,在lab5目录下编写完代码后记得将其.py文件复制到pox文件夹中
  • 在pox文件目录下开启pox终端,进入POX模块SendFlowInSingle3

标签:控制器,POX,pox,端口,ofp,开源,交换机,模块,msg
From: https://www.cnblogs.com/eddieduck520/p/16748798.html

相关文章

  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境......
  • 【K8S】Kubernetes控制器Controller-RS/Deployment/HPA详解
    一、介绍Pod是kubernetes的最⼩管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类:自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建......
  • 实验5:开源控制器实践——POX
    一.基础要求只需要提交h1pingh2、h2和h3的tcpdump抓包结果截图,外加L2_learning模块代码流程图,其余文字请勿赘述;1.使用命令创建拓扑:sudomn--topo=single,3--mac--co......
  • 实验4:开源控制器实践——OpenDaylight
    基础要求1.Mininet拓扑生成并连接控制器的结果2.Mininet中ping测试截图进阶要求查找资料,整理和记录ODL控制器主要的RESTAPI文档,包括但不限于ODL提供的文档链接,获取......
  • 实验4:开源控制器实践——OpenDaylight
    (一)基本要求Mininet拓扑生成并连接控制器的结果Mininet中ping测试截图(二)进阶要求1获取拓扑的交换机url:http://127.0.0.1:8181/apidoc/explorer/index.html#!/o......
  • 实验4:开源控制器实践——OpenDaylight
    (一)基本要求1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;使用postman清除旧流通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h......
  • 实验4:开源控制器实践——OpenDaylight
    基础要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s进阶要求......
  • 实验4:开源控制器实践——OpenDayight
    一、基础实验1、Mininet拓扑生成并连接控制器2、Mininet中ping测试如上图所示3、通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight三、实验要求(一)基本要求1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;2.通过Postman工具调用OpenDayligh......
  • 实验4:开源控制器实践——OpenDaylight
    1.基础要求需要提交两张图,一是Mininet拓扑生成并连接控制器的结果,二是Mininet中ping测试截图,并体现个人信息,其余文字请勿赘述;1)扑生成并连接控制器的结果2)Mininet中h1p......