OpenFlow协议分析

article/2025/10/25 6:52:04

实验环境:CentOS + OpenDayLight-Carbon + mininet + WireShark
本实验通过wireshark抓包分析openflow1.3协议的各种报文与字段。

抓包

  • 首先安装好实验所需的软件,这里不多赘述,需要的可以点击查看:mininet多方法安装,控制器安装

  • 运行控制器(我这里是OpenDayLight),其他的也可以不过需要支持1.3版本的openflow。

  • 打开wireshark进行抓包,网卡直接选择any就行。

  • 使用mininet连接控制器,在mininet里面pingall获得一些报文,然后就可以退出mininet了

  • 现在就能看到wireshark捕获到很多报文,直接停止捕获开始分析。

分析

利用过滤器,输入过滤条件: openflow_v4,v4 表示1.3版本。

然后就能看到传输的openflow协议的报文。
在这里插入图片描述

点击报文即可查看到其中具体的字段,这里以比较有代表性的FLOW_MOD报文为例,其它同理。
各个表项具体的含义见下一部分。

在这里插入图片描述

利用wireshark的流量图功能,选择过滤器过滤之后的结果如下:
可以清晰的看出openflow各个阶段发送到报文(原图较长,只截取了小部分)

概述

OpenFlow 协议支持3种消息类型:Controller-to-Switch(控制器—交换机)、Asynchronous(异步)和Symmetric(对称),每一类消息又有多个子消息类型。

  • 1、 Controller-Switch(控制器—交换机)消息,这类消息由控制器发起。包括Features、Configuration、Modify-State、Read-State、Send-Packet、Barrier等几类消息,用于对OF交换机的管理。
  • 2、 Asynchronous(异步)消息,这类消息用来将网络事件或交换机状态的变化更新到控制器。主要包括4种子类型:Packet-in、Flow-Removed、Port-status和Error消息。
  • 3、 Symmetric(同步)消息与前两类消息有所不同,Symmetric类的消息可由控制器或者OF交换机中的任意一侧发起,这类消息包括以下3种类型:Hello、Echo和Vendor。
    Modify-State消息是OpenFlow消息中最为重要的消息类型,控制器通过Port-mod消息用来管理端口状态,通过Flow-mod消息增删交换机的流表项,考虑到流表在OpenFlow的重要意义,在此针对Flow-mod消息进行详尽分析。
类型作用
HELLO是使用来协商控制器和交换机之间openflow协议的版本号的消息。
FEATURE_REQUEST是控制器用来查询交换机特性消息,如交换机ID,缓冲区数量,端口及端口属性等。
FEATURE_REPLY交换机收到feature_request消息之后会回复feature_reply消息来报告自己的特性。
SET_CONFIG控制器对交换机进行配置的消息。控制器可以配置交换机的 MTU,报文分片处理等能力。
PACKET_IN当交换机遇到不知道如何转发的报文时,使用 Packet_IN 消息将无法处理的报文封装起来发送给控制器,交给控制器去判断处理。并且交换机会将该数据包缓存。
PACKET_OUT控制器可以使用 Packet_Out 消息,告诉交换机某一个数据包如何处理
FLOW_MOD下发流表项。通过 Flow_Mod 消息可以对流表进行添加、删除、变更设置等操作。可以简单理解为一个flow_mod就是就是一个流表项
ECHO_REQUEST & ECHO_REPLY控制器和交换机通过 ECHO_REQUEST 和 ECHO_REPLY 报文保持连接

Flow-mod消息的具体格式,其主要字段含义介绍如下:

字段含义
前4个字段表示OpenFlow消息的通用报头。
wildcard字段表示匹配时12元组的掩码位,被掩盖掉的元组不参加匹配。
从in_port到tp_dst字段表示流表项12元组的信息。
cookie字段在处理数据分组时不会用到,控制器通过该字段来过滤流的统计信息。
command字段表示对流表的操作,包括增加(Add)、删除(Delete)、修改(Modify)等。
idle_time字段表示当这条流表项在这段时间内没有匹配到数据分组,则该流表项失效。
hard_time字段表示自流表项下发后只要过了这段时间即刻失效。
priority字段表示该流表项被处理的优先级,原则上优先级越高,所属的Table号就越小。
buffer_id字段表示对应Packet-in消息的buffer_id。
out_port字段仅在command为Delete或者Delete Strict时有效,表明当某表项不仅匹配了Flow-mod中给出的12元组,且转发动作中指定端口等于该out_port的动作时才予以删除,即对删除操作的一种额外限制。
flags字段该字段为标志位,OpenFlow v1.0中包括3项:OFPFF_SEND_FLOW_REM(流表失效时是否向控制器发送Flow-removed消息),OFPFF_CHECK_OVERLAP(交换机是否检测流表冲突),OFPFF_EMERG(该流表项将被存于Emergency Flow Cache中,仅在交换机处于紧急模式时生效)。
actions字段该字段是个数组,表示要对满足过滤条件的流做的动作列表,actions[0]即代表其中第一个动作。

http://chatgpt.dhexx.cn/article/VvK4gkXv.shtml

相关文章

openflow简介

openflow交换机包含一些流表,流表负责具体包查找和转发 控制器通过of协议对流表查询和管理 一、流表 流表组成: 包头域、活动计数器、0个或多个执行行动 包头域: 计数器: 可以针对每张表、每个流、每个端口、每个队列来维护。…

SDN-OpenFlow1.0协议分析

目录 OpenFlow1.0代码 OpenFlow交换机流表 包头域 计数器 行动 流表匹配 OpenFlow消息 OpenFlow消息格式 对称消息 建立OpenFlow连接(OFPT_HELLO消息) 报告错误(OFPT_ERROR消息) 获取交换机特性信息(Featu…

OpenFlow概述

OpenFlow简介 通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议。OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTable进行转发,FlowTable本身的生成、维护、下发完全由外置的Controller来实现,注意这里…

OpenFlow了解

openflow的核心思想是将所有的协议都抽象出来,抽象成公共的flow概念。协议抽象:数据,函数(对数据的处理方式),逻辑(数据与处理的对应关系,函数之间的交互行为与时序) pu…

OpenFlow交换机概述

1 交换机组成 OpenFlow交换机包括一个或多个流表和一个组表,执行分组查找和转发,和到一个外部控制器OpenFlow的信道。 控制器使用OpenFlow的协议,可添加、更新和删除流表中表项,既主动或被动响应数据包。 每个流表项包含匹配字段&…

openflow阅读感悟

一、背景 随着网络的快速发展和普及,设备和协议的复杂性导致了网络实验的困难。当时,几乎没有实际方法可以在足够现实的环境中尝试新的网络协议,来自网络学术、产业界的大多数新想法都未经试用和测试。因此,人们普遍认为网络基础设…

OpenFlow概念

OpenFlow是一种网络通信协议,应用于SDN架构中控制器和转发器之间的通信。软件定义网络SDN的一个核心思想就是“转发、控制分离”,要实现转、控分离,就需要在控制器与转发器之间建立一个通信接口标准,允许控制器直接访问和控制转发…

OpenFlow总结

OpenFlow总结 OpenFlow体系结构OpenFlow端口1.1、物理端口1.2、逻辑端口1.3、预定端口(OpenFlow1.5中文版) OpenFlow流表(FlowTable)2.1、概念2.2、流表结构 OpenFlow通信通道3.1、消息类型3.2 、消息交换 OpenFlow体系结构 Open…

Openflow

1.Openflow是啥 OpenFlow是第一个开放的南向接口协议,也是目前最流行的南向协议。 它提出了控制与转发分离的架构,规定了SDN转发设备的基本组件和功能要求,以及与控制器通信的协议。 2.OpenFlow组件 2.1. OpenFlow交换协议 2.2 OpenFlow网…

[学习笔记]OpenFlow概述(1)

个人学习笔记,出问题请指出下。摘取《图解OpenFLow》 Openflow协议是由斯坦福大学提出,最初的出发点是为了更加轻松地构建用于研究的网络。 Openflow的初期设计思想:无需设计新的硬件,只对现有硬件更新其软件。因此,O…

OpenFlow 协议详解(干货)

OpenFlow是一种新型的网络协议,它是控制器和交换机之间的标准协议。自2009年底发布1.0版本后,OpenFlow协议又经历了1.1、1.2、1.3及1.4版本的演进过程,目前使用和支持最多的是1.0和1.3版本。OpenFlow1.3在1.0版的基础上进一步优化及升级&…

OpenFlow概念学习

前言 OpenFlow交换机将原来完全由交换机/路由器控制的报文转发过程转化为由OpenFlow交换机和控制服务器来共同完成,目的交换机要通过of协议(OpenFlow Protocol)经安全通道(Secure Channel)连接到外部控制器&#xff08…

Openflow协议详解

来自:http://www.h3c.com/cn/d_201811/1131080_30005_0.htm 1 OpenFlow背景 转发和控制分离是SDN网络的本质特点之一 。在SDN网络架构中,控制平面与转发平面分离,网络的管理和状态在逻辑上集中到一起,底层的网络基础从应用中独立出来&#…

深入分析OpenFlow协议

文章目录 OpenFlow是什么???OpenFlow的起源与发展OpenFlow工作原理OpenFlow组件OpenFlow控制器1、NOX/POX2、ONOS3、OpenDaylight OpenFlow安全通道OpenFlow交换机流表项的组成多级流表与流水线处理流表下发方式 OpenFlow的应用场景OpenFlow的…

【赛氪 Saikr】不正方形(数学、平面几何 ps:今天打了假赛)

题目: 不正方形 Description 今天是数学课!小A发现同学们上课很消极,于是给大家出了一个数学小游戏。 小A在黑板上画了一个很大很大的平面直角坐标系,然后给出了若干个红点和黄点,现在同学们需要回答,这…

数学真正的意义

产业智能官:“很多人对现代数学充满疑虑,成长的过程中被数学的难题长期折磨而产生的心理阴影。因此,数学成了社交网络中避而不谈的话题。 很早以前,我们就被教育“数学是思维的体操”。但是,对大脑是如何受益于这种体…

查询语文成绩大于数学的学生

Oracle --创建表,插入资料 create table lx ( sno number(10), course varchar2(10), score number(10) ) insert into lx select 3,语文,90 from dual union select 3,数学,68 from dual select * from lx 写法1: 将语文成绩,数学…

美团2022秋招笔试题-小美的数学题-栈

题目描述 阔浩序列是这样定义的: 空串是合法的序列,且代价1如果 s 是合法的阔浩序列,那么( s )也是合法的,且( s )的代价为 s1如果s,t都是合法的,那么它们拼接起来的 st 也是合法,且总的代价为s的代价*t 的代价。 例如,(()())()是合法的,其代价为(2*21)*210 输入…

那些虐哭过你的大学数学课都有什么用处?看完后恍然大悟!

导读:高等数学有什么用?很多人都在问这个问题。其实大多数人在问这个问题的时候,心里已经预设了否定的答案。确实,对于大多数人来说,已经发展到了连数字都基本很少用了的一些高等数学分支,是过于虚无飘渺了…

程序员,想转型人工智能吗?先补补数学课吧!

人工智能很火,也很高端,深度学习、机器学习、视觉识别,听上去就很高大上。而且不仅仅是听上去高大上,现实当中确实也是实实在在的高大上。 在互联网圈子里,有一句话流传甚广:得人工智能者得天下。根据脉脉…