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