实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践

一、实验目的

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

二、实验环境

  1. 下载虚拟机软件Oracle VisualBox;
  2. 在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;

三、实验要求

(一)基本要求

  1. 搭建下图所示拓扑,完成相关 IP 配置,并实现主机与主机之间的 IP 通信。用抓包软件获取控制器与交换机之间的通信数据包。

主机 IP地址
h1 192.168.0.101/24
h2 192.168.0.102/24
h3 192.168.0.103/24
h4 192.168.0.104/24


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

    根据抓包结果,可以得出交换机与控制器在本实验中是如以下过程进行消息交互的

  • OFPT_HELLO,源端口6633 -> 目的端口45410,从控制器到交换机

  • OFPT_HELLO ,交换机45410端口->控制器6633端口 此处协议为openflow1.3

  • OFPT_FEATURES_REQUEST,源端口6633 -> 目的端口45410

OFPT_SET_CONFIG ,源端口6633 -> 目的端口45410

  • OFPT_PORT_STATUS 源端口45414-> 目的端口6633

  • OFPT_FEATURES_REPLY, 源端口45410 -> 目的端口6633

  • OFPT_PACKET_IN,源端口45414 -> 目的端口6633

  • OFPT_PACKET_OUT, 源端口6633 -> 目的端口45414

OFPT_FLOW_MOD, 源端口6633 -> 目的端口46124,从控制器到交换机,且flow_mod会出现在in与OUT之间,控制器向交换机下发流表项。

​ 控制器和交换机的交互流程图:

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


如图所示,交换机与控制器建立通信时使用TCP协议。

四、实验心得

本次实验的主要内容是能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包,能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。这次的实验总体来说难度不大,但是要理解、运用wireshark才能完成实验,所以需要查找一些有关wireshark的使用指南。

  • 问题
  1. 一开始建立拓扑的时候,因为没有配置IP base(默认网段)导致拓扑出不来,因为我以为只要配置4个主机的IP地址就行了,结果导致拓扑图建立失败,后面通过复习实验1的时候知道如果要运行的话一定要去配置并且将open vSwitch的那几个OPENflow打勾上。
  2. 在运行wireshark的时候忘记将拓扑图运行,一开始只能读到ARP什么的,后面在做的时候可能是运行的太久了导致交换机的端口有些乱掉了。
  3. 拓扑运行一段时间后没有看见flow_mod,询问同学才知道这是控制器向交换机端口下发流表,从而指导数据的转发处理,需要在mininet命令行pingall后才会出现这一个。
  • 收获
  1. 本次实验通过Open分析实践学会了如何使用wireshark进行抓包,并且对具体的内容能够理解其中的一些比较关键的部分。
  2. 通过流程图的绘画也简单的了解了OpenFlow协议中控制器和交换机的交互过程,对于网络中设备间的通信有了一定的理解。
posted @ 2021-09-22 16:23  031902131zt  阅读(53)  评论(0编辑  收藏  举报