实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践

一、实验目的

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

二、实验环境

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

三、实验要求

(一)基本要求

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

  • 打开mininet,设置题图拓扑图,并另存至“/home/zhuzhipeng/102192108/lab3/”,命名保存为“102192108——lab3”
主机 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
  • 编辑器打开保存的py文件,进行相应IP设置修改。

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

控制器与交换机互发HELLO消息,可以看到如下:

  • (1)OFPT_HELLO,控制器6633端口————>交换机35352端口,控制器OpenFlow版本为1.0

  • (2)OFPT_HELLO,交换机35352端口————>控制器6633端口,交换机OpenFlow版本为1.5依据向下兼容原则,OpenFlow版本应为1.0

    依据向下兼容原则,OpenFlow版本应为1.0

FEATURES_REQUEST/SET_CONFIG:

  • (3)控制器6633端口(我需要你的特征信息进行验证)————>交换机35352端口

  • (4)控制器6633端口(请按照我给你的信息进行配置)————>交换机35352端口

PORT_STATUS

  • (5)交换机端口发生变化时告知控制器变化的状态

FEATURES_REPLY

  • (6)交换机35352端口————>控制器6633端口(返回特征信息)

PACKET_IN

  • (7)交换机端口35352————> 控制器端口6633

PACKET_OUT

  • (8)控制器端口6633————> 交换机端口35352

FLOW_MOD

  • (9)控制器端口6633————> 交换机端口35352

画出相关交互图或流程图

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

  • 使用TCP协议(Transmission Control Protocol)

(二)进阶要求

1.将抓包结果对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义。

(三)实验报告

1.请用Markdown排版,
2.将(一)中导出的拓扑文件存入目录:/home/用户名/学号/lab3/;
3.(一)只需要提交导入拓扑文件、wireshark抓包的结果截图和附图说明,其余文字请勿赘述;
4.(二)不做必须要求,有完成的同学请提交相关文字分析说明。
5.个人总结,包括但不限于实验难度、实验过程遇到的困难及解决办法,个人感想,不少于200字。

个人总结

实验难度

这次实验建立在前几次的实验室的基础上,有前面的基础再进行实验操作还算较为顺利。主要是抓包完成后,要对控制机跟交换机之间验证、交流信息的情况进行相应的查询。这要求对这二者之间工作原理有所掌握,这些内容老师课堂上有讲解过,基本就是二者的交互图。

实验困难

有前几次的实验基础,难度不算很大。在抓包后有碰到两个小问题,一是抓包选择,依照lab2选择具体的抓包,没有一开始抓取“any”这个抓包;二是pingall后,抓包一直在跑停不下来,正好鼠标左击出了点问题,后面通过触摸板点击后,用上下方向箭来选择相应的抓包行。

个人感想

这个实验操作,要求对OpenFlow协议的原理有足够的理解,再结合之前的操作基础,对抓包后的内容能进行简单的分析。需要掌握清楚相互间的几个“命令”消息所代表的含义跟目的作用,这样再去查询就比较清晰,能理解所代表的含义。

posted @ 2021-09-29 14:37  土二月  阅读(214)  评论(0编辑  收藏  举报