open flow协议分析

一、实验目的

1.能够运用 wireshark 对 OpenFlow 协议数据交互过程进行抓包;

2.能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。

二、实验环境

1.下载虚拟机软件Oracle VisualBox;

2.在虚拟机中安装Ubuntu 20.04 Desktop amd64,并完整安装Mininet;

三、实验步骤

首先进入用户模式,搭建打开拓扑界面

然后搭建下图所示拓扑,完成相关 IP 配置,并实现主机与主机之间的 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

配置网段

接下来保存为one.py文件

Vim one.py打开文件再次比对IP配置

最后运行此文件:

可以看到全部连接成功,成功运行!

接下来在另一个终端进行数据抓包。

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

交换机或控制器首先发送hello报文,确定openflow通信版本。
交换机或控制器收到hello报文之后,回复一个hello报文,协商版本。
控制器发送feature_request报文,查询交换机具体信息。
交换机收到feature_request报文之后,回复feature_reply,报告自己的详细信息给控制器。
工作过程中控制器会不断发送echo_request给交换机,交换机回复echo_reply消息给控制器,确认连接。
 

以下是数据抓包数据类型:

1.hello

2. FEATURES_REQUEST

3.SET_CONFIG

4. PORT_STATUS

5. FEATURES_REPLY

6. PACKET_IN

7. PACKET_OUT

8. FLOW_MOD

四、实验分析

Open flow协议格式里面的各个字段及其交换机和控制器的交互过程,每个数据包都有相互的作用。目前所支持的有三种报文类型:

1Controller to Switch消息

        Controller发起、Switch接收并处理的消息。这些消息主要用于ControllerSwitch进行状态查询和修改配置等管理操作,可能不需要交换机响应。就当前实验出现的类型进行分析:

  1. Features:用于控制器发送请求来了解交换机的性能,交换机必须回应该报文。
  2. Flow-Mod:Flow-Mod消息用来添加、删除、修改OpenFlow交换机的流表信息。Flow-Mod消息共有五种类型:ADD、DELETE、DELETE-STRICT、MODIFY、MODIFY-STRICT。
  3. Packet-out:用于通过交换机特定端口发送报文 ,这些报文是通过Packet-in消息接收到的。通常Packet-out消息包含整个之前接收到的Packet-in消息所携带的报文或者buffer ID(用于指示存储在交换机内的特定报文)。这个消息需要包含一个动作列表,当OpenFlow交换机收到该动作列表后会对Packet-out消息所携带的报文执行该动作列表。如果动作列表为空,Packet-out消息所携带的报文将被OpenFlow交换机丢弃。

2异步(Asynchronous)消息

        Switch发送给Controller,用来通知Switch上发生的某些异步事件的消息,主要包括Packet-inFlow-RemovedPort-StatusError等。

1. Packet-in:转移报文的控制权到控制器。对于所有通过匹配流表项或者Table Miss后转发到Controller端口的报文均要通过Packet-in消息送到Controller。也有部分其他流程(如TTL检查等)也需要通过该消息和Controller交互。Packet-in既可以携带整个需要转移控制权的报文,也可以通过在交换机内部设置报文的Buffer来仅携带报文头以及其Buffer ID传输给ControllerController在接收到Packet-in消息后会对其接收到的报文或者报文头和Buffer ID进行处理,并发回Packet-out消息通知OpenFlow交换机如何处理该报文。

2.Port-Status:通知控制器端口状态或设置的改变。

3同步(Symmetric)消息

        顾名思义,同步(Symmetric)消息是双向对称的消息,主要用来建立连接、检测对方是否在线等,是控制器和OpenFlow交换机都会在无请求情况下发送的消息,包括HelloEchoExperimenter三种消息。:

Hello:当连接启动时交换机和控制器会发送Hello交互。

五、个人总结

  • 本次实验目的在于能够运用 wireshark OpenFlow 协议数据交互过程进行抓包;能够借助包解析工具,分析与解释 OpenFlow协议的数据包交互过程与机制。
  • 其中注意抓包的时候,要在另一个在终端执行sudo python one.py pingall,这样在抓包的时候才会显示完整的数据包。
  • 个人感悟:本次实验是验证分析,实验步骤并不繁琐,但是涉及到抓包,数据类型较多。需要实际操作较少,理论部分较多,通过实验操作,结合理论知识。从而对于openflow有了深刻的认识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值