首页 > 其他分享 >实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践

时间:2022-09-27 20:59:00浏览次数:52  
标签:info OpenFlow 端口 实践 源码 实验 交换机 net 抓包

实验3:OpenFlow协议分析实践

(一)基本要求

1、拓扑文件

#!/usr/bin/env python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call

def myNetwork():

    net = Mininet( topo=None,
                   build=False,
                   ipBase='10.0.0.0/8')

    info( '*** Adding controller\n' )
    c0=net.addController(name='c0',
                      controller=Controller,
                      protocol='tcp',
                      port=6633)

    info( '*** Add switches\n')
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch)
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch)

    info( '*** Add hosts\n')
    h1 = net.addHost('h1', cls=Host, ip='192.168.0.101/24', defaultRoute=None)
    h2 = net.addHost('h2', cls=Host, ip='192.168.0.102/24', defaultRoute=None)
    h3 = net.addHost('h3', cls=Host, ip='192.168.0.103/24', defaultRoute=None)
    h4 = net.addHost('h4', cls=Host, ip='192.168.0.104/24', defaultRoute=None)

    info( '*** Add links\n')
    net.addLink(h1, s1)
    net.addLink(s1, h2)
    net.addLink(s2, s1)
    net.addLink(s2, h3)
    net.addLink(s2, h4)

    info( '*** Starting network\n')
    net.build()
    info( '*** Starting controllers\n')
    for controller in net.controllers:
        controller.start()

    info( '*** Starting switches\n')
    net.get('s1').start([c0])
    net.get('s2').start([c0])

    info( '*** Post configure switches and hosts\n')

    CLI(net)
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    myNetwork()

2、wireshark抓包的结果截图

  • OFPT_HELLO
    从控制器6633端口到交换机47928端口,使用OpenFlow1.0协议:

从控制器47928端口到交换机6633端口,使用OpenFlow1.5协议:

  • OFPT_FEATURES_REQUEST
    控制器6633端口(我需要你的特征信息) ---> 交换机47928端口

  • Set Conig
    控制器6633端口(请按照我给你的flag和max bytes of packet进行配置) ---> 交换机47928端口

  • PORT_STATUS
    当交换机端口发生变化时,告知控制器相应的端口状态

  • Features Reply
    交换机47928端口(这是我的特征信息,请查收) ---> 控制器6633端口

  • PACKET_IN
    交换机47928端口(有数据包进来,请指示)--->控制器6633端口

  • Packet_out
    控制器6633端口(请按照我给你的action进行处理) ---> 交换机47928端口

  • FLOW_MOD
    分析抓取的flow_mod数据包,控制器通过6633端口向交换机47928端口、交换机47928端口下发流表项,指导数据的转发处理

  • 画出相关交互图或流程图

3、回答问题:交换机与控制器建立通信时是使用TCP协议还是UDP协议?

答:使用的是TCP协议。

(二)进阶要求

将抓包基础要求第2步的抓包结果对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义。

通用字段

① HELLO源码与对应抓包结果

②FEATURES_REQUEST源码与对应抓包结果

结构与HELLO一致。

③Set Config源码与对应抓包结果

④PORT_STATUS源码与对应抓包结果

⑤FEATURES_REPLY源码与对应抓包结果


⑥PACKET_IN源码与对应抓包结果

⑦PACKET_OUT源码与对应抓包结果

⑧FLOW_MOD源码与对应抓包结果

(三)个人总结

  • 本次实验较之前的实验来说难度不大,只是有些繁琐,需要不停地找到我们需要的数据,是验证性的实验。只要实验步骤正确,一般是可以得到正确的结果的,这也要求我们在实验过程中要仔细认真。
  • 在上次实验中,我们已经能够运用wireshark对OpenFlow协议数据交互过程进行抓包,但当时也只是尝试了一下,没有深入了解抓取到的内容。而在本次实验中,我们学习了利用过滤器对抓取的数据包并用过滤方法来找到所需要的数据包。同时在抓包结果与openflow头文件源码对照学习中更深入地了解openflow主要消息类型对应的数据结构定义和OpenFlow协议的数据包交互过程的机制。
  • 本次实验中FLOW_MOD较为难找,但在命令框里的CLI中执行pingall命令后,就可以在wireshark抓包工具中找到FLOW_MOD的数据包了。

标签:info,OpenFlow,端口,实践,源码,实验,交换机,net,抓包
From: https://www.cnblogs.com/siyueniao/p/16735684.html

相关文章

  • 软件定义网络实验2
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201这个作业要求在哪里https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201/homewo......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践(一)基本要求拓朴文件点击查看代码#!/usr/bin/envpythonfrommininet.netimportMininetfrommininet.nodeimportController,Remote......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践一、实验目的能够运用wireshark对OpenFlow协议数据交互过程进行抓包;能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与机制......
  • 实验3:OpenFlow协议分析实践
    一、实验目的1.能够运用wireshark对OpenFlow协议数据交互过程进行抓包;2.能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与机制。二、实验环境Ubuntu......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践(一)基本要求ovs-vsctl基础操作实践:创建OVS交换机,以ovs-xxxxxxxxx命名,其中xxxxxxxxx为本人学号。在创建的交换机上增加端口p0和p1,设置p0......
  • 实验3 OpenFlow协议分析实践
    实验3OpenFlow协议分时实践基础实验抓包分析step1:搭建拓扑并配置相应IPIP配置如下:step2:Pingall并抓包step3:分析(1)hello包表示含义:控制器6633端口发送“我最......
  • 实验3:OpenFlow协议分析实践
    基本要求一、拓扑文件二、Wireshark抓包结果1、hello控制台6633端口→交换机33440端口hello交换机33440端口→控制台6633端口2、FeaturesRequest控制台6633端......
  • 实验3:OpenFlow协议分析实践
    (一)基本要求1.导入到/home/用户名/学号/lab3/目录下的拓扑文件//实践代码如下#!/usr/bin/envpythonfrommininet.netimportMininetfrommininet.nodeimportCon......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......