实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践
一、实验目的
能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包;
能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。
二、实验环境
Ubuntu 20.04 Desktop amd64

三、实验要求
(一)基本要求
搭建下图所示拓扑,完成相关 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
查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程,画出相关交互图或流程图。
(1)hello


(2)Features Request

(3)Set Conig

(4)Port_Status

(5)Features Reply

(6)Packet_in

(7)Flow_mod

(8)Packet_out

流程图

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

(二)进阶要求
将抓包基础要求第2步的抓包结果对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义。
(1)hello



Hello消息中只包含有ofp_header,包括:version,type,length,transaction ID

(2)Features Request

(3)Set Conig

(4)Port_Status

(5)Features Reply

(6)Packet_in


Packet_in报文有两种形式
  1.交换机查找流表,发现没有匹配条目,但是这种包没有抓到过(下图第一个函数)
  2.有匹配条目,对应的action是OUTPUT=CONTROLLER,固定收到向控制器发送包

(7)Flow_mod


(8)Packet_out

(三)个人总结
本次实验主要是通过wireshark对拓扑进行抓包进行学习,本次实验的难度主要不是在于代码的操作而是对源码以及抓包内容的理解。由于没试用过wireshark,所以在抓包过程中不仅在过程中不理解抓包的结果在找的过程中也花费了许多时间,以及有些的抓包结果需要先在拓扑中使用指令才会出现。而后在开始看抓包的时候花了很多时间都没办法在openflow_v1和其他的筛选器中找到hello发送回的报文,后面才知道自己在新建拓扑的时候没有选用其他openflow的版本。要理解其中的意思主要还是要通过openflow源码进行比较。

posted @ 2022-10-03 20:17  木禾火  阅读(45)  评论(0编辑  收藏  举报