实验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 协议通信的过程进行分析。
标签:OpenFlow,端口,实践,60806,交换机,实验,源码,抓包 From: https://www.cnblogs.com/xilili/p/16728666.html