一、实验目的
1.能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包;
2.能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。
二、实验环境
Ubuntu 20.04 Desktop amd64
三、实验要求
(一)基本要求。
1.搭建下图所示拓扑,完成相关 IP 配置,并实现主机与主机之间的 IP 通信。用抓包软件获取控制器与交换机之间的通信数据。
pingall结果
2.查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程,画出相关交互图或流程图。
hello
控制器6633端口(我最高能支持OpenFlow 1.0) ---> 交换机43920端口
交换机43920端口(我最高能支持OpenFlow 1.5) ---> 控制器6633端口
于是双方建立连接,并使用OpenFlow 1.0
Features Request / Set Conig
控制器6633端口(我需要你的特征信息) ---> 交换机43920端口
控制器6633端口(请按照我给你的flag和max bytes of packet进行配置) ---> 交换机43920端口
Port_Status
当交换机端口发生变化时,告知控制器相应的端口状态。
Features Reply
交换机43920端口(这是我的特征信息,请查收) ---> 控制器6633端口
Packet_in
交换机43920端口(有数据包进来,请指示)--- 控制器6633端口
PACKET_OUT
控制器6633端口--->交换机43920端口(请按照我给你的action进行处理)
Flow_mod
分析抓取的flow_mod数据包,控制器通过6633端口向交换机43920端口、交换机43920端口下发流表项,指导数据的转发处理
流程图
四、个人总结
本次实验难度中等,主要在于拓扑的构建及抓包后截图数较多,可利用wireshark里的排序便捷的找到对应的包。
实验中遇到的困难
1.wireshark没有抓到hello的包。解决方法:先抓包再运行Python文件。
2.hello的包没有找到另一个对应的。解决方法:用openflow_v6进行过滤。
总结,通过实验抓包对OpenFlow协议中交换机与控制器的消息交互过程,以及常用的消息列表有了进一步的了解,提升了运用wireshark抓取数据包的能力,对OpenFlow消息类型的数据结构有了更深入的了解。