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

实验3:OpenFlow协议分析实践

时间:2022-09-28 16:58:31浏览次数:48  
标签:info 控制器 OFPT OpenFlow 实践 交换机 实验 import net

拓扑

#!/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='192.168.0.0/24')

    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(s2, h4)
    net.addLink(s1, s2)
    net.addLink(h3, s1)
    net.addLink(h2, s2)

    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()

交互图

首先交换机和控制器互相发送Hello,建立连接。控制器6633端口发送Features Request请求特征信息,SET_CONFIG给出flag和max bytes of packet。交换机feature reply回答特征信息,当交换机端口发生变化时,发送Port_Status告知控制器相应的端口状态。当交换机查找流表,发现没有匹配条目,或有匹配条目但是对应的action是OUTPUT=CONTROLLER时,交换机发送Packet_in;控制器接着Packet_out回答。控制器通过Flow_mod向交换机端口下发流表。

问题

交换机与控制器建立通信时使用TCP协议

抓包截图

OFPT_HELLO


对照源码

REQUEST

set config


源码对照

features reply


源码对照

status

源码对照

packet in

源码对照

packet out

源码对照

flowmod

源码对照

个人总结

本次实验分析openflow协议中交换机与控制器的消息交互过程,双方先发送OFPT_HELLO建立连接,并确定使用的openflow的版本。随后控制器OFPT_FEATURES_REQUEST请求交换机特征信息,OFPT_SET_CONFIG给出flag和max bytes of packet进行配置。交换机OFPT_FEATURES_REPLY回答特征信息。当交换机端口变化时发送OFPT_PORT_STATUS告知控制器对应的端口状态。当交换机查找流表发现没有匹配条目时,发送OFPT_PACKET_IN,控制器OFPT_PACKET_OUT回答处理方式。

问题:

  • 在抓包的时候,要先启动wireshark,在建立拓扑,这样抓取的数据才完整。
  • 过滤抓包数据的时候,是选择openflow_v1、和openflow_v6来过滤出openflow 1.0和1.5的数据。其中只有两次hello用了openflow1.5

标签:info,控制器,OFPT,OpenFlow,实践,交换机,实验,import,net
From: https://www.cnblogs.com/navio/p/16735781.html

相关文章

  • 实验1 类和对象(1)
    实验目的通过实践,加深对类、对象的理解,能够解释类的抽象、封装所指,能够描述什么是类的接口能够使用C++语法规则正确定义、实现、测试类能够使用C++语法规则正确创建对......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pyth......
  • 实验任务1
    1#include<iostream>2#include<string>3#include<vector>45intmain()6{7usingnamespacestd;89strings1;10strings2{"c......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践(一)基本要求1.保存在/home/用户名/学号/lab3/目录下的拓扑文件2.wireshark抓包的结果截图和对应的文字说明hello控制器6633端口(我最高能支......
  • 软件定义网络实验3
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201这个作业要求在哪里https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201/homewo......
  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的O......
  • 实验1 类和对象(1)
    实验任务二1.源码1#include<iostream>2usingnamespacestd;34classPoint{5public:6Point(intx0=0,inty0=0);7Point(constPoint&......
  • 实验3:OpenFlow协议分析实践
    开启wireshark的any模式进行抓包,然后建立目标拓扑,接着mininet>pingallHelloFeaturesRequest/SetConigPort_StatusFeaturesReplyPacket_inFlow_modPa......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践一、实验目的能够运用wireshark对OpenFlow协议数据交互过程进行抓包;能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践一、实验目的1.能够运用wireshark对OpenFlow协议数据交互过程进行抓包;2.能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与......