实验3:OpenFlow协议分析实践 实验4:开源控制器实践——OpenDaylight

发布时间 2023-10-07 19:17:12作者: Minakyo

实验3:OpenFlow协议分析实践

一、实验目的

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

二、实验环境

Ubuntu 21.10

三、实验内容

搭建拓扑,完成相关 IP 配置,并连接OpenDaylight控制器,实现主机与主机之间的 IP 通信

用抓包软件获取控制器与交换机之间的通信数据。

Hello

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

交换机46306端口(最高能支持OpenFlow 1.3) ---> 控制器6633端口

于是双方建立连接,并使用OpenFlow 1.0。

Features Request

控制器6633端口(需要特征信息) ---> 交换机46306端口

Set Conig

控制器6633端口(按照给的flag和max bytes of packet进行配置) ---> 交换机46306端口

Port_Status

当交换机端口发生变化时,告知控制器相应的端口状态。

Features Reply

交换机46306端口(这是特征信息,请查收) ---> 控制器6633端口

Packet_in

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

Packet_out

控制器6633端口(按照给的action进行处理) ---> 交换机46306端口

Flow_mod

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

对照OpenFlow源码,了解OpenFlow主要消息类型对应的数据结构定义,并根据抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程,画出相关交互图或流程图。

回答问题

1.交换机与控制器建立通信时是使用TCP协议还是UDP协议?

TCP协议。

2.产生Packet_IN消息的原因有哪些?

(1)交换机查找流表,发现没有匹配条目;
(2)有匹配条目但是对应的action是OUTPUT=CONTROLLER。

四、实验总结

抓包时在openflow_v1里没有找到Hello数据包,发现ppt中注意事项“先开启抓包再构建拓扑”,原来我先构建拓扑再开启抓包,于是我重新照做,就出现了Hello数据包。在寻找FLOW_MOD数据包时,一直没有寻找到,执行pingall后再找就到FLOW_MOD数据包了。

实验4:开源控制器实践——OpenDaylight

一、实验目的

  1. 能够独立完成OpenDaylight控制器的安装配置;
  2. 能够使用Postman工具调用OpenDaylight API接口下发流表。

二、实验环境

Ubuntu 21.10

三、实验内容

1.利用Mininet平台搭建网络拓扑,并连接OpenDaylight控制器

命令行连接控制器


2.通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s

四、总结

在OpenDayLight的安装配置中,虚拟机下载便花费了大量时间,由于ios系统电脑设备版本限制,试了很多遍,最终还是无法完成安装,只好借用同学电脑一起完成实验。在实验时OpenDayLight的UI界面打不开,经过研究发现应该是防火墙拦截了端口号,把防火墙关闭即可。总体实验还算顺利,难度适中。