实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践

(一)基本要求

1.搭建拓扑,完成相关 IP 配置。

2-1.查看抓包结果

① HELLO

控制器6633端口(我最高能支持OpenFlow 1.0) ---> 交换机60806端口

交换机60806端口(我最高能支持OpenFlow 1.5) ---> 控制器6633端口

于是双方建立连接,并使用OpenFlow 1.0

②FEATURES_REQUEST

控制器6633端口(我需要你的特征信息) ---> 交换机60806端口

Set Config

控制器6633端口(请按照我给你的flag和max bytes of packet进行配置) ---> 交换机60806端口

④PORT_STATUS

当交换机端口发生变化时,告知控制器相应的端口状态。

⑤FEATURES_REPLY

交换机60806端口(这是我的特征信息,请查收) ---> 控制器6633端口

⑥PACKET_IN

交换机60806端口(有数据包进来,请指示)--->控制器6633端口

⑦PACKET_OUT

控制器6633端口--->交换机60806端口(请按照我给你的action进行处理)

⑧FLOW_MOD

分析抓取的flow_mod数据包,控制器通过6633端口向交换机60804端口、交换机60806端口下发流表项,指导数据的转发处理(图以交换机60806端口为例)

2-2.分析消息交互过程,画出相关交互图或流程图。

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

答:TCP协议。从下图捕捉到的报文协议可以看出。

(二)进阶要求

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

① HELLO源码与对应抓包结果

②FEATURES_REQUEST源码与对应抓包结果

格式与HELLO相同

Set Config源码与对应抓包结果

④PORT_STATUS源码与对应抓包结果

⑤FEATURES_REPLY源码与对应抓包结果

⑥PACKET_IN源码与对应抓包结果

⑦PACKET_OUT源码与对应抓包结果

⑧FLOW_MOD源码与对应抓包结果

(三)个人总结

所遇问题与解决方法

问题:在观察交换机60806端口与控制器6633端口之间的HELLO时,我过滤出 “openflow_v1” 与 ”openflow_v4” 的数据报文,只看到一方发送的信息,没看到回复。

解决方法:过滤器改成”openflow_v6”就能看到交互情况了,可能是因为我的交换机60806端口最高能支持OpenFlow 1.5,支持的是openflow_v6协议。

问题:在开始抓包时,没有找到Flow_mod包。

解决方法:猜测Flow_mod包需要在出现数据转发或者流表下发时才能看到,于是执行pingall操作,抓到了Flow_mod包。

问题:在寻找FEATURES_REQUEST的源码时找了很久也没有找到。

解决方法:后来发现它与HELLO的格式是一致的。

实验感想

本次实验的总体难度不大,比上次会简单一些的感觉,主要是抓包和找源码的时候很费眼睛。总的来说,本次实验帮助我了解 Wireshark 抓包流程与 OpenFlow 协议的报文结构,让我熟悉了如何运用报文信息对使用 OpenFlow 协议通信的过程进行分析。

posted @ 2022-09-25 19:57  xilili48  阅读(72)  评论(0)    收藏  举报