实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践 - 原题链接

一、实验目的

  1. 能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包;
  2. 能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。

二、实验环境

  1. 下载虚拟机软件Oracle VisualBox;
  2. 在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;

三、实验要求

(一)基本要求

  1. 搭建下图所示拓扑,完成相关 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

配置如图:

  1. 查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程,画出相关交互图或流程图。
sequenceDiagram participant controller participant switch controller ->> switch : "Hello" switch ->> controller : "Hello" controller ->> switch : "OFPT_FEATURES_REQUEST" controller ->> switch : "SET_CONFIG" switch ->> controller : "PORT_STATUS" switch ->> controller : "OFPT_FEATURES_REPLY" switch ->> controller : "PACKET_IN" controller ->> switch : "PACKET_OUT" controller ->> switch : "FLOW_MOD"

具体抓包结果如下:

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

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

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

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

  • PORT STATUS
    交换机端口40066告知控制器6633相应的端口状态

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

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

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

  • FLOW_MOD
    分析抓取的flow_mod数据包,控制器通过6633端口向交换机40066端口、交换机40068端口下发流表项,指导数据的转发处理

  1. 回答问题:交换机与控制器建立通信时是使用TCP协议还是UDP协议?
    交换机与控制器建立通信时使用TCP协议(Transmission Control Protocol)。

(二) 进阶要求

将抓包结果对照OpenFlow源码(openflow安装目录openflow/include/openflow当中的openflow.h头文件中),了解OpenFlow主要消息类型对应的数据结构定义。

  1. HELLO

  2. FEATURES_REQUEST
    格式与HELLO相同

  3. SET_CONFIG

  1. FEATURES_REPLY


  2. PACKET_IN

  3. PACKET_OUT

  4. FLOW_MOD


四、个人总结

  • 实验难度:
    个人感觉技术方面的难度不大,主要难度在于分析抓包结果以得出交互图的过程。

  • 实验困难与解决办法:
    由于上一次实验使用过 wireshark,所以此次进行拓扑、抓包的过程比较顺利。具体困难较少且琐碎,详情如下:
    抓包结果可以用过滤器将 OpenFlow 协议过滤,但不知为什么我输入词条openflow_v4仍然无法过滤抓包信息。导致看的头晕眼花。而后突然发现输入openflow_v4是无法抓包的,大抵都因为这次抓包中不含使用openflow1.3协议的吧。而后改成使用open flow_v4和openflow_v6过滤抓包信息。这也顺利解决了一开始找不到交换机向控制器发的HELLO报文的困难。

  • 个人感想:
    可以说这次实验通过工具来认知到具体的交互过程与机制,让我对于 OpenFlow 协议有了更为深刻的认知。自己分析一次交互过程时,记好抓包的各种信息的意思以及交换机、控制器的端口号之后,才能理顺条理以图纸方式表述此过程且非常的印象深刻。也顺带着学习了下 Markdown 编辑器怎么画时序图来表述这次的交互图吧。虽然一开始用不来 wireshark 过滤器,导致看 OpenFlow 消息非常麻烦,不过在众多的抓包结果之中,还能看到许多其他类型的信息交互,算是额外学习了。

posted @ 2021-09-25 17:51  AnEweLamb  阅读(108)  评论(0)    收藏  举报