实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践
一、实验目的
能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包;
能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。

二、实验环境
Ubuntu 20.04 Desktop amd64

三、实验要求
(一)基本要求
搭建下图所示拓扑,完成相关 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

查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程,画出相关交互图或流程图。

回答问题:交换机与控制器建立通信时是使用TCP协议还是UDP协议?
交换机与控制器建立通信时是使用TCP协议
Hello
控制器与交互及互相发送 Hello 消息。

Features Request
其次,OpenFlow 连接建立之后,控制器需要获得交换机的特性信息,因此控制器向交换机发送 Features Request 消息查询交换机特性.

Features Reply
交换机在收到控制器发出的 Features Request 消息后,将自己的特性告诉给控制器,返回 Features Request 消息.

Set config
知道了交换机的特性之后就要配置交换机了。

Packet-in
有两种情况会触发交换机向控制器发送 Packet_in 消息
1.数据包在交换机中匹配不到流表,则向controller发送Packet_in消息
2.数据包在流表中有匹配的条目,但是其中所指示的 action 列表中包含转发给控制器的动作(Output = CONTROLLER)

(注:该图是因为匹配不到流表,属于第一种)
Flow-Mod / Packet-out
当控制器收到 Packet-in 消息时有两种响应的方式:
Flow-Mod:控制器收到 Packet‐in 消息后,可以发送 Flow‐Mod 消息向交换机下发一个流表项。
Packet-out:与Flow-Mod不同的是,控制器不会下发流表,而是直接告诉交换机该如何做。

(Flow-Mod)

(Packet_out)

(二)进阶要求
将抓包基础要求第2步的抓包结果对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义。

(三)实验报告
通过本次Openflow的协议分析实验,除了学习到了OpenFlow 协议数据交互过程,还通过wireshark对抓包过程的应用分析与解释 OpenFlow协议的数据包交互过程与机制对控制器和交换机的基本交互建立连接的具体流程有了一定的了解,学会了通过抓包抓取数据header分析其相关作用,通过本次实验对SDN学习的内容的方向有了一定的了解,和SDN对交换机的优化和实现有了基础的认识。

posted @ 2022-10-06 09:16  HIMESAKA_NOA  阅读(107)  评论(0编辑  收藏  举报