实验3:OpenFlow协议分析实践
实验3:OpenFlow协议分析实践
一、实验目的
- 能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包;
- 能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。
二、实验环境
- 下载虚拟机软件Oracle VisualBox;
- 在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;
三、实验要求
(一)基本要求
主机 | 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 |
-
打开miniedit,绘制如题述拓扑图,设置好openflow协议,然后保存拓扑至/home/ubuntu/031902218/lab3
-
使用编辑器打开刚才保存的文件topo.py,如下修改主机IP设置
-
查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程,画出相关交互图或流程图。
由于题述拓扑中存在两个交换机,这里只以其中一个交换机与控制器的交互作为说明
-
Hello
控制器6633端口 ---> 交换机42696端口 (OpenFlow10)
交换机42696端口---> 控制器6633端口(OpenFlow1.3)
-
Features Request / Set Config
控制器6633端口-->交换机42686端口(OpenFlow1.0)控制器6633端口 ---> 交换机42686端口(OpenFlow1.0)
-
Port_Status
交换机42686端口 --->控制器6633端口(OpenFlow1.0)
-
Features Reply
交换机42686端口---> 控制器6633端口
-
Packet_in
交换机42686端口---> 控制器6633端口(OpenFlow1.0)
-
Packet_out
控制器6633端口 ---> 交换机42686端口(OpenFlow1.0)
-
Flow_mod
控制器6633端口--->交换机42686端口(OpenFlow1.0) -
相关交互图
-
-
回答问题:交换机与控制器建立通信时是使用TCP协议还是UDP协议?
使用了TCP协议,抓包截图与topo.py源码中均能体现.
(二)进阶要求
-
将抓包结果对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义。
-
Hello源码与对应抓包结果
-
Features Request源码与对应抓包结果
未找到源码,但可以发现这一个消息类型的格式与Hello一致,含有一个头部ofp_header。
-
Set Config源码与对应抓包结果
-
Port_Status
-
Features Reply源码与对应抓包结果
-
Packet_in源码与对应抓包结果
-
Packet_out源码与对应抓包结果
-
Flow_mod源码与对应抓包结果
-
四、个人总结
抓包时很难找到实验所要求的包,看了几百行还没找到,然后才发现搭建拓扑的时候忘记设置openflow协议了,还有就是openflow.h头文件里面也有很多行代码,找起来实在痛苦,不过也算是锻炼了自己。不过和上次实验相比简单了很多,实验很顺利,也没出现什么大问题。痛苦并快乐着,这也许就是学习的过程吧。