实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践

实验目的

1、能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包;
2、能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。

实验要求

(一)基本要求
搭建拓扑,完成相关 IP 配置

一、拓扑文件

 `

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')
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch)
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch)

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

    info( '*** Add links\n')
    net.addLink(h1, s1)
    net.addLink(h2, s1)
    net.addLink(s1, s2)
    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('s2').start([c0])
    net.get('s1').start([c0])

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

    CLI(net)
    net.stop()

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

`

  • pingall截图

二、Wireshark查看抓包结果

  • 1、hello
    控制器6633端口(我最高能支持Open Flow1.0) ---> 交换机51148端口

交换机51148端口(我最高能支持OpenFlow 1.5) ---> 控制器6633端口

  • 2. Features Request
    控制器6633端口(我需要你的特征信息) ---> 交换机51148端口

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

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

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

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

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

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

三、查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程,画出相关交互图或流程图。

四、交换机与控制器建立通信时是使用TCP协议还是UDP协议?

TCP协议

个人总结:

本次作业相较之前简单,主要难度在于抓包。好在及时发现可以根据length直接区分,大大提高了截图效率。

posted @ 2022-09-28 10:36  yezine  阅读(46)  评论(0)    收藏  举报