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

实验3:OpenFlow协议分析实践

时间:2022-09-26 20:01:25浏览次数:46  
标签:控制器 表项 OpenFlow 端口 实践 交换机 实验 数据包

(一)基本要求

  1. 搭建下图所示拓扑,完成相关 IP 配置,并实现主机与主机之间的 IP 通信。用抓包软件获取控制器与交换机之间的通信数据。

     

       

       

 

 

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

Hello:

控制器6633端口(我最高能支持OpenFlow 1.0) → 交换机50640端口

 

 

          

交换机50640端口(我最高能支持OpenFlow 1.5) → 控制器6633端口

 

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

 

Features Request:

控制器6633端口(我需要你的特征信息) → 交换机50640端口

 

 

 

  

Set Conig:

控制器6633端口(请按照我给你的flag和max bytes of packet进行配置) → 

交换机50640端口

 

 

 

Port_Status:

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

 

 

 

Features Reply:

交换机50640端口(这是我的特征信息,请查收) → 控制器6633端口

 

 

 

Packet_in:

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

 

 

 

Packet_out:

控制器6633端口(请按照我给你的action进行处理) → 交换机50640端口

 

 

 

Flow_mod:控制器6633端口 → 交换机50640端口

 

 

 

 

 

 

 

 

          3.回答问题:交换机与控制器建立通信时是使用TCP协议还是UDP协议?

          TCP协议

(二)进阶要求

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

Hello:

与ofp_header结构体中数据相同。

Version:OpenFlow版本

Type:OpenFlow消息类型

Length:消息总长度

Xid:事件ID,同一件事件的ID号一致

 

Features Request:

 

源码参数格式与HELLO相同,与上述ofp_header结构体中数据相同。

 

Set Conig:

flag:指示交换机如何处理 IP 分片数据包

max bytes of packet:当交换机无法处理到达的数据包时,向控制器发送如何处理的最大字节数,本实验中控制器发送的值是0x0080,即128字节

 

 

Port_Status:

 

 

 Features Reply:

 

datapath_id:唯一标识符

n_buffers:交换机缓冲区可以缓存的最大数据包个数

n_tables:流表数量

pad:可以理解为填充值

capabilities:支持的特殊功能

actions:支持的动作

port data:物理端口描述列表

 

Packet_in:

 

 

 

buffer_id:数据通道分配的缓存id,标志数据包存在交换机中的位置,如果没有缓存在交换机中则buffer_id则为-1

 

total_len:整个数据帧的长度

 

in_port:接收数据帧的端口

 

reason:将数据包发送给控制器的原因,一般有俩原因,一是没有匹配到流表项,二是动作要求发给控制器

 

Packet_out:

 

 

 

Flow_mod:

 

 

 

 

 

 

 

Cookie:控制器设置的不透明数据

 

idle_timeout和hard_timeout控制流表项的生命周期。当idle_timeout为x(x不为0)并且hard_timeout为0时,流表项在x秒收不到数据包后就到期。当idle_timeout为0并且hard_timeout为x时,x秒后无论收不收得到数据包流表项都到期。当idle_timeout为x(x不为0)并且hard_timeout为y(y不为0)时,x秒收不到数据包或者y秒后,哪个期限先到就按哪个算。当idle_timeout和hard_timeout都为0时,表明这个流表项是永恒的,除非用OFPFC_DELETE删除,否则不会到期

 

priority:只和含通配字段的流表项有关。Priority值越大,表明流表优先级越高。交换机必须将优先级最高的通配流表项放在编号最低的通配流表中。无论流表是什么配置,交换机需要确保精确流表项排在通配流表项之前

 

buffer_id:标志由packet_in消息发送的数据包存储的地方

 

out_port:delete和delete_strict消息利用该字段确定作用域,而add、modify、modify_strict消息会自动忽略该字段。如果out_port为ofpp_none则表明禁用output端口过滤功能,否则就相当于添加了一个额外的匹配限制条件。连0也是有效端口id,表示约束条件是必须有关于该端口的output动作。而ofp_match和优先级等条件依旧生效,该字段只是添加了一个额外的约束

 

 

 

 

 

个人总结

 

 

  本次实验,我学到了运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包并对照OpenFlow源码了解了OpenFlow主要消息类型对应的数据结构定义。本次实验对我来说比较简单。在实验中,最开始抓包时一直没有hello的包,无论是重新构建拓扑还是重新抓包都没有用。经过上网查询后,得知需要在打开mininet之前先开始抓包,才能抓到hello的包,否则会丢失之前的包。在进阶要求中,要对照OpenFlow源码,阅读量较大,是本次实验中比较困难的部分。通过网络上的对OpenFlow的解析,才对OpenFlow源码有一定的了解。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:控制器,表项,OpenFlow,端口,实践,交换机,实验,数据包
From: https://www.cnblogs.com/zsy222/p/16732167.html

相关文章

  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践一、实验目的1.能够运用wireshark对OpenFlow协议数据交互过程进行抓包;2.能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与......
  • 实验3:OpenFlow协议分析实践
    一、基本要求1.搭建拓扑2.抓包结果HELLO控制器6633端口(我最高能支持OpenFlow1.0)--->交换机41986端口交换机41986端口(我最高能支持OpenFlow1.3)--->控制器6633......
  • 实验3:OpenFlow协议分析实践
    一、实验目的能够运用wireshark对OpenFlow协议数据交互过程进行抓包;能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与机制。二、实验环境Ubuntu20......
  • 实验3:OpenFlow协议分析实践
    (一)基本要求拓扑文件wireshark抓包的结果OFPT_HELLO控制器6633端口(我最高能支持OpenFlow1.0)--->交换机46192端口交换机46192端口(我最高能支持OpenFlow1.5)--->......
  • 阿里云 ACK 容器服务生产级可观测体系建设实践
    简介: 随着容器被越来越对企业接纳与落地,可观测成为重点。那么,让我们深入了解阿里云ACK容器服务生产级可观测体系建设实践,为自身业务可观测提供参考~作者:冯诗淳......
  • ARMS实践|日志在可观测场景下的应用
    简介: 在实际生产中,通过灵活组合文内几种使用方式,运维团队可以很好地排除日常观测、故障定位过程中的干扰因素,更快的定界甚至定位问题根因。作者:陈陈 日志在......
  • 龙湖千丁基于 ACK@Edge 的云原生智慧停车系统架构实践
    作者:蔡佩、刘涛在物联网、大数据、云服务等的快速发展及规模化应用下,今天,大量在日常生活中产生的数据可以被更好地连接和利用,为智能设备的运转提供支持,在推进社会高效协作......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践一、实验目的能够运用wireshark对OpenFlow协议数据交互过程进行抓包;能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与机制......
  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的O......
  • 实验3:OpenFlow协议分析实践
    一、基本要求1.拓扑文件2.wireshark抓包结果OFPT_HELLO控制器6633端口(我最高能支持OpenFlow1.0)--->交换机51938端口交换机51938端口(我最高能支持OpenFlow1.5)--......