前言
在当今网络架构中,OpenFlow技术作为SDN(软件定义网络)的关键支持技术之一,为网络流量控制提供了更加灵活和智能的解决方案。Wireshark作为一个优秀的网络协议分析工具,可以帮助我们深入了解OpenFlow协议背后的数据交换过程。在本文中,我们将通过Wireshark工具来分析OpenFlow协议,探索其工作原理和数据交换过程。
1. OpenFlow简介
OpenFlow是一种通信协议,用于在网络设备之间进行通信,并 能够实现控制数据流的灵活性和集中管理。OpenFlow协议通过控制器来管理网络设备,并根据网络流量的需求对网络设备进行动态配置和管理。
2. Wireshark简介
Wireshark是一款开源的网络协议分析工具,可以帮助用户捕获和分析网络数据包。通过Wireshark工具,我们可以深入了解数据包的传输过程,进而解决网络问题和优化网络性能。
3.实验步骤
PS:教程不包括安装Ununtu、niminet等教程,文献参考https://www.cnblogs.com/eleven955/p/15328388.html
3.1实验前置任务
1.首先在ubuntu系统中启动mininet可视化界面
mininet/examples/miniedit.py
然后按照下图所示,搭建拓扑图
2.点击左上角的Exit里的Preferences,配置偏好设置,并按照下图进行设置
3.将修改好的拓扑图保存为*.py的格式,如下图所示
使用vim打开文件,编辑每个终端的IP地址,当然,您也可以提前在拓扑图中编辑IP地址。
vim name.top
保存好之后,主要任务的前置任务就算完成了
3.2基础实验
首先再打开一个终端,用来启动Wireshark进程
wireshark
如果您使用的账户非root模式,请在指令前加上sudo
之后使用使用第一个终端运行保存好的拓扑图py文件
python {name}.py
pingall
打开Wireshark开始分析数据包
当控制器和交换机建立连接时,它们会通过发送 "OFPT_HELLO" 消息进行握手。这个握手过程用于确保双方都理解彼此的通信协议版本,并为后续的通信建立基础。,其中包含了源端口号(6633)与目的端口号(59784)
并且可以看到使用的传输协议是TCP协议
查看openflow_v6的数据包
查看openflow_v1的数据包的OFPT_FEATURES_REQUEST,OFPT_FEATURES_REQUEST用于控制器向交换机请求交换机的特性和能力。当控制器与交换机建立连接后,通常会发送此类消息以获取关于交换机的信息,以便控制器可以了解交换机的功能和配置。
查看openflow_v1的数据包的OPTF_SET_CONFIG,OPTF_SET_CONFIG可以确保控制器和交换机之间的行为一致,并能够对交换机的行为进行精细的控制。
查看openflow_v1的数据包的OPTF_PACKET_IN,OPTF_PACKET_IN用于将从交换机收到的数据包传送给控制器。当交换机无法根据当前的流表项处理接收到的数据包时,会生成一个 "OFPT_PACKET_IN" 消息,并将数据包及相关信息发送到控制器。
查看openflow_v1的数据包的OPTF_PACKET_OUT, 通过“OFPT_PACKET_OUT”消息,控制器可以实现对数据包的编程式控制,用于实现特定的网络行为、策略或功能。
- 四、个人总结
本次实验是结课实验,实验难度相对于平常练习会有难度一些,需要建立拓扑后在wireshark中操作,首先要能够熟练使用wireshark,其次就是找包的时候数据很多,容易错过,需要很细心。通过阅读openflow的源码,能理清楚其中的数据结构,并和实际抓到的包的详细信息对应起来,从而理解openflow协议的数据包交互过程。除此之外,对wireshark中过滤器的使用也有了更深刻的了解,对openflow协议有了更深刻的认识,整理实验报告的过程中能够加深对整个交互过程的理解,截图较多,整理起来需要足够的耐心。实验中遇到的问题都得到了解决,对mininet的一些命令行操作也更加的熟练。