首页 > 其他分享 >实验3:OpenFlow协议分析实践

实验3:OpenFlow协议分析实践

时间:2024-06-07 19:30:37浏览次数:20  
标签:控制器 OFPT OpenFlow 端口 实践 交换机 实验 数据包

一、实验目的

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

二、实验环境

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

三、实验要求

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

如图所示为(Transmission Control Protocol)TCP协议。

• 也有源端口50932 -> 目的端口6653的,即交换机到控制器的另一个包,此处协议为openflow1.5
在这里插入图片描述

控制器与交换机建立连接,并使用OpenFlow 1.0
• OFPT_FEATURES_REQUEST 源端口6653 -> 目的端口509032,从控制器到交换机
在这里插入图片描述

控制器请求交换器的特征信息
• OFPT_SET_CONFIG 源端口6653 -> 目的端口50932,从控制器到交换机
在这里插入图片描述

控制器要求交换机按照所给出的信息进行配置
• OFPT_PORT_STATUS 源端口50932 -> 目的端口6653,从交换机到控制器
在这里插入图片描述

当交换机端口发生变化时,交换机告知控制器相应的端口状态
• OFPT_FEATURES_REPLY 源端口50932 -> 目的端口6653,从交换机到控制器
在这里插入图片描述

交换机告知控制器它的特征信息
• OFPT_PACKET_IN 源端口50932 -> 目的端口6653,从交换机到控制器
在这里插入图片描述

交换机告知控制器有数据包进来,请求控制器指示
• OFPT_PACKET_OUT 源端口6653 -> 目的端口50932,从控制器到交换机
在这里插入图片描述

控制器要求交换机按照所给出的action进行处理
• OFPT_FLOW_MOD 源端口6653 -> 目的端口50932,从控制器到交换机
在这里插入图片描述

控制器对交换机进行流表的添加、删除、变更等操作
• 上述OFPT_PACKET_IN、OFPT_PACKET_OUT、OFPT_FLOW_MOD三种消息报文的交互会频繁多次出现在交换机和控制器之间。
6.画出相关交互图或流程图:在这里插入图片描述

7.回答问题:交换机与控制器建立通信时是使用TCP协议还是UDP协议?在这里插入图片描述

  1. 配置网段在这里插入图片描述

  2. 配置ip地址在这里插入图片描述

  3. 保存拓扑为python文件在这里插入图片描述

  4. 运行sudo wireshark命令,并选择any模式进行抓包,开启另一个终端,命令行运行031902241.py文件,运行pingall                                                                          在这里插入图片描述

  5. 查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交互过程(截图以其中一个交换机为例)                                                                                                                                      • OFPT_HELLO 源端口6653 -> 目的端口50932,从控制器到交换机在这里插入图片描述

四,实验总结

一,出现的问题:

  1. 第一次抓包没有找到OFPT_HELLO,后查资料发现是因为我先运行了拓扑文件后才打开了wireshark,应该先打开wireshark再运行拓扑。
  2. 查看抓包时有太多信息,导致找的过程比较耗时间,后询问同学懂了设置过滤,这样只会显示OpenFlow协议的数据包方便查找
    ,并且通过选择过滤规则openflow_v1可以发现只有openflow1.0和openflow1.5的数据包。

  二,个人心得

     本次实验我们通过抓取数据包、分析数据包学习了OpenFlow协议下控制器和交换机的交互过程。交换机和控制器的交互过程涉及到多个不同用途的数据包,通过wireshark我们捕获所有数据包,后续通过设置过滤规则进行数据包的过滤,查看每一个OpenFlow数据包的源端口、目的端口、类型和相关字段。通过实践分析,我更加深入地理解了OpenFlow协议的基本原理和工作机制,掌握了报文的格式和字段含义。在编写控制器应用程序的过程中,我提高了自己的网络编程能力,熟悉了SDN网络编程的基本流程和技巧。锻炼了分析问题和解决问题的能力:在实验过程中,我遇到了许多问题,但通过查阅资料和不断尝试,我最终解决了这些问题,锻炼了自己的分析问题和解决问题的能力。进阶要求中通过数据包字段和源码的比较让我更进一步了解与掌握了OpenFlow协议。截图很多,整理起来需要足够的耐心。实验中遇到的问题都得到了解决,对mininet的一些命令行操作也更加的熟练了。OpenFlow协议的实践分析是一次宝贵的学习经历。它不仅提升了我的技术技能,也让我认识到了SDN在未来的网络发展中的潜力。

标签:控制器,OFPT,OpenFlow,端口,实践,交换机,实验,数据包
From: https://blog.csdn.net/m0_74385498/article/details/139531490

相关文章

  • 平稳交付 20+ 医院,卓健科技基于 OpenCloudOS 的落地实践
    导语:随着数字化转型于各个行业领域当中持续地深入推进,充当底层支撑的操作系统正发挥着愈发关键且重要的作用。卓健科技把OpenCloudOS当作首要的交付系统,达成了项目交付速度的提升、安全可靠性的增强、运维成本的降低。本文将会阐述卓健科技运用OpenCloudOS的背景情况,深入探究......
  • GitHub狂揽6700 Star,Python进阶必备的案例、技巧与工程实践
    当下是Python急剧发展的时代,越来越多的人开始学习和使用Pyhon,而大家也遇到了各种问题。这份手册清晰、细致地介绍了Python代码应该遵循的编程风格,并解释了背后的原理和机制。入门Python语言相对简单,但写出优雅的代码并非易事。这份手册深入讲解了Python进阶知识的方方......
  • 使用Redis优化Java应用的性能——高效的缓存实践
    引言:在现代应用开发中,高效的缓存策略是提升性能和用户体验的关键。Redis作为一个高性能的键值存储系统,提供了一种快速存取数据的方式,帮助Java应用处理大量动态信息而无需频繁查询数据库。什么是Redis?Redis是一个开源的键值存储系统,它支持多种类型的数据结构如字符串、哈希、......
  • 实验6_C语言结构体、枚举应用编程
    实验任务4#include<stdio.h>#defineN10typedefstruct{charisbn[20];//isbn号charname[80];//书名charauthor[80];//作者doublesales_price;//售价intsales_count;//销售册数}Book;voi......
  • 【GD32F303红枫派使用手册】第九节 RTC-万年历实验
    9.1实验内容通过本实验主要学习以下内容:RTC简介RTC复位RTC实现万年历RTC使用注意事项9.2实验原理9.2.1RTC简介RTC(RealTimeClock)——实时时钟定时器,可以用作日历。RTC电路分两个电源域部分,其一位于备份域中,该部分包括一个32位的累加计数器、一个闹钟、一个预......
  • 【JS封装-数组操作】强化编程实践:精选JavaScript函数封装集锦-关于数组操作(数组去重、
    目录数组去重数组快速排序过滤数组映射数组数组扁平化数组求和数组最大值数组最小值数组切片数组乱序(洗牌算法)数组去重/***去除数组中的重复项。*@param{Array}array要去重的数组。*@returns{Array}去重后的数组。*/functionuniqueArray(array......
  • Three.js入门指南:从基础到实践的三维渲染之旅
    threejs相关资料threejs官网threejs案例安装(Installation)使用NPM和构建工具进行安装对于大多数用户而已,从npm包注册表中心安装并使用构建工具会是一个更推荐的方案。因为项目需要的依赖越多,就越有可能遇到静态托管无法轻易解决的问题。而使用构建工具,导入本地J......
  • 数据库实验二
    (1)查询所有供应商情况,先按城市升序排列,城市相同按供应商名称降序排列。select * from sorder by cityASC , snameDESC; (2)查询所有零件情况, 先按零件名称升序排列, 零件名称相同按重量降序排列。select * from porder by pnameASC , weight DESC;(3)查询项......
  • 递推 7-1 sdut-C语言实验-母牛的故事
    7-1sdut-C语言实验-母牛的故事分数20全屏浏览切换布局作者 马新娟单位 山东理工大学有一对夫妇买了一头母牛,它从第2年起每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入格式:输入为一个整......
  • 7-3 sdut-C语言实验-骨牌铺方格
    7-3sdut-C语言实验-骨牌铺方格分数20全屏浏览切换布局作者 马新娟单位 山东理工大学斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,很多题目由此衍生而来,骨牌铺方格便是......