OpenFlow交换机概述

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

1 交换机组成

这里写图片描述
OpenFlow交换机包括一个或多个流表和一个组表,执行分组查找和转发,和到一个外部控制器OpenFlow的信道。
控制器使用OpenFlow的协议,可添加、更新和删除流表中表项,既主动或被动响应数据包。
每个流表项包含匹配字段,计数器和一组指令,用来匹配数据包。
行动描述了数据包转发,数据包的修改和组表处理。流水线处理的指令允许数据包被发送到后面的表进行处理,允许信息以元数据的形式在表之间进行通信。
当与一个匹配的流表项相关联的指令集没有指向下一个表时,表流水线处理停止,这时该数据包通常被修改和转发。
流表项可能包含数据包转发到某个端口(物理端口、逻辑端口(可指定链路汇聚组,隧道或环回接口)、保留端口(可指定通用的转发行为,如发送到控制器、洪泛或使用非OpenFlow方法转发,如普通交换机转发处理))
组表示一组洪泛的指令集,以及更复杂的转发(如多路径、快速重路由、链路聚合)。

2 一些重要概念

流表项:在流表中用于匹配和处理数据包的一个元素。它包含用于匹配数据包的匹配字段、匹配次序的优先级,跟踪数据包的计数器,以及对应的的指令集 。

匹配字段:用来匹配数据包的字段,包括包头,进入端口,元数据值。匹配字段可能会进行通配符匹配(匹配任何值)或者在某些情况下通过位掩码进行匹配。

指令:指令存在于流表项中,描述报文匹配流表项时OpenFlow的处理方式。指令可以修改流水线处理,如指导包匹配另一个流表,也可以包含一系列添加到行动集的行动,还可
以包含一系列立即应用到数据包的行动。

行动:将数据包转发到一个端口或修改数据包,如TTL字段减1操作。行动可能是与流表项相关联的指令集或者与组表项相关联的行动存储段的一部分。我们可以将行动积累在数据包的行动集,也可以立即将行动应用到该数据包。

行动集:与数据包相关的行动集合,在报文被每个表处理的时候这些行动可以累加,在指令集指导报文退出处理流水线的时候这些行动会被执行。
组:一系列的行动存储段和一些选择一个或者多个存储段应用到数据包单元的手段。
行动存储段:一组行动和相关参数,定义组。
标记:一个头,可以插入到数据包或者通过压入和弹出行动进行移除。
最外层的标签:一个数据包最开始出现的标签。
控制器:一个实体与OpenFlow交换机使用OpenFlow协议交互的实体。
计量: 一个交换机元件,可以测量和控制数据包的速度。当数据包速率或通过计量的字节速率超过预定义的阈值时,计量触发计量带。如果计量带丢弃该数据包,它则被称为一个速率限制器。

3 OpenFlow端口

OpenFlow端口是OpenFlow处理进程和网络的其余部分之间传递数据包的网络接口。
OpenFlow交换机必须支持三种类型的OpenFlow端口:物理端口(对应一个交换机的硬件接口)、逻辑端口、保留端口。
OpenFlow交换机可以实现交换机的硬件虚拟化,一个OpenFlow物理端口可以代表一个与交换机硬件接口对应的虚拟切片。
OpenFlow的逻辑端口为交换机定义的端口,并不直接对应一个交换机的硬件端口。
物理端口和逻辑端口之间的唯一区别是:一个逻辑端口的数据包可能有一个叫做隧道ID的额外的元数据字段与它相关联;而当一个逻辑端口上接收到的分组被发送到控制器时,其逻辑端口和底层的物理端口都要报告给控制器。
保留端口指定通用的转发动作,如发送到控制器,泛洪,或使用非OpenFlow的方法转发,如“正常”交换机处理。

4 OpenFlow表

描述流表和组表的组件,以及与匹配和行动处理的技术。
##4.1 流水线处理
OpenFlow兼容的交换机有两种类型:OpenFlow-only和OpenFlow-hybrid。 OpenFlow-only交换机只支持OpenFlow操作,在这些交换机中的所有数据包都由OpenFlow流水线处理,否则不能被处理。

OpenFlow-hybrid交换机支持OpenFlow的操作和普通的以太网交换操作,即传统的L2以太网交换,VLAN隔离,L3路由(IPv4的路由,IPv6路由),ACL和QoS处理。这些交换机提供一个交换机外的分类机制,使流量路由到OpenFlow流水线或普通流水线。例如,某个交换机可以使用VLAN标签或数据包的输入端口,来决定是否使用一个流水线或其他流水线,或者它可指导所有数据包都到OpenFlow流水线进行处理。

##4.2 流表
每个流表项包含:
这里写图片描述
匹配字段:对数据包匹配。包括入口端口和数据包报头,以及由前一个表指定的可选的元数据。
•优先级:流表项的匹配次序
•计数器:更新匹配数据包的计数
•指令:修改行动集或流水线处理
•超时:最大时间计数或流有效时间
•cookie:由控制器选择的不透明数据值。控制器用来过滤流统计数据、流改变和流删除。但处理数据包时不能使用。
当交换机接收到一个格式不正确或损坏的数据包,此版本的规范没有定义预期的行为。

流表项可以通过两种方式在流表中删除,控制器的请求或交换机流超时机制。
交换流超时机制运行基于相关的控制器和流表项的状态和配置。每个流的表项具有一个和它相关的idle_timeout和hard_timeout值。如果两个值中有一个不为零,交换机必须注意的流表项的老化时间,因为交换机可能删除该项。如果给定非零hard_timeout的值,那么一段时间后,可以导致流表项被删除,无论有多少数据包与之匹配。如果给定非零idle_timeout的值,那么如果在一段时间没有报文与之匹配,可以导致流表项被删除。交换机必须实现流表项超时和删除功能。

##4.3 组表

每个组表项由组编号确定,具体内容包含:
组编号:一个32位的无符号整数,唯一标识该组
组类型:确定组语义(参见5.6.1节)
计数器:更新数据当报文被组表项处理时
行动存储段:一系列有序的行动存储段,其中的每个动作存储段包含了一组要执行的动作和相关参数

##4.4 计量表
一个计量表包含若干计量表项,确定每个流量的计数。单位流量的计量可以使OpenFlow实现各种简单的QoS业务,如限速,并且可以结合每个端口队列来实现复杂的QoS框架,如DiffServ。

计量直接连接到流表项(而不是被连接到端口的队列)。任意的流表项可以在它的指令集中定义一个计量,计量测量和控制和它相连的所有流的速率。

每计量表项由其计量标识符标识,并且包含:
计量的标识符:一个32位的无符号整数唯一识别仪
计量带:计量带的无序列表,其中每个计量带定义带的速度和处理数据包的方式
计数器:报文被计量表项处理时,更新计数

每个计量可能有一个或多个计量带。每个带指定带适用的速率和并数据被处理的方式。数据包基于当前的计量速率被单个计量带处理,计量带适用于当前速率超过配置的速率的情况,如果目前的速度比任何指定的计量带率较低,那么计量带就不工作。
每个计量带用速率识别,包括:
•带类型:定义了数据包怎样被处理
•按计量率:用于选择计量带,定义了带可以运行的最低速率
•计数器:当数据报文被计量带处理时时,更新计数
•类型的具体参数:带类型的可选参数

几个问题:
流表、组表、计量表是怎么样工作的?
为什么有了流表还要有组表?
流表、组表中均有计数器,会什么还需要有计量表?

##4.5 计数器
维护计数器可以有如下计数:每一个流程表,流量入口,端口,队列,组,组存储段,计量和计量带。 用来统计流量的一些信息,例如活动表项、查找次数、发送包数等。也可以OpenFlow-compliant计数器可以在软件中实现,而且可以通过硬件计数器获取计数进行维护。

##4.6 指令
每个流表项中包含一组的指令,当一个数据包匹配表项时指令会被执行。这些指令可以更改数据包,行动组和/或流水线处理。
• Optional Instruction: Meter meter id : 直接将包计量后丢弃。
• Optional Instruction: Apply-Actions action(s): 立即进行指定的行动,而不改变行动集。这个指令经常用来修改数据包,在两个表之间或者执行同类型的多个行动的时候。
• Optional Instruction: Clear-Actions: 在行动集中立即清除所有的行动。
• Required Instruction: Write-Actions action(s): 将指定的行动添加到正在运行的行动集中。
• Optional Instruction: Write-Metadata metadata / mask : 在元数据区域记录元数据。
• Required Instruction: Goto-Table next-table-id: 指定流水线处理进程中的下一张表的ID。

##4.7 行动集
行动集与每个报文相关,默认情况下是空的。一个流表项可以使用Write-Action指令或者Clear-Action指令修改行动集。行动集在表间被累加,当一个表项的指令集没有包含Goto-Table指令时,流水线处理就停止了,然后报文的行动集就被执行。

行动集包含所有的行动,无论他们以什么顺序加入到行动集中,行动的顺序均按照下列顺序执行。如果行动集包含组行动,那么组行动存储段中的行动也按照下列顺序执行。当然,交换机也可以支持通过Apply-Actions指令修改行动执行顺序。

  1. copy TTL inwards: apply copy TTL inward actions to the packet
  2. pop: apply all tag pop actions to the packet
  3. push-MPLS: apply MPLS tag push action to the packet
  4. push-PBB: apply PBB tag push action to the packet
  5. push-VLAN: apply VLAN tag push action to the packet
  6. copy TTL outwards: apply copy TTL outwards action to the packet
  7. decrement TTL: apply decrement TTL action to the packet
  8. set: apply all set-field actions to the packet
  9. qos: apply all QoS actions, such as set queue to the packet
  10. group: 如果指定了组行动,那么按照这个序列中的顺序执行组行动存储段里的行动。
  11. output: 如果没有指定组行动,报文就会按照output行动中指定的端口转发。
    Output行动最后执行。如果组行动和输出行动均存在,那么组行动优先级高。如果两者均不存在,那么报文被丢弃。

Apply-Actions指令和Packet-out消息中存在行动列表。行动的效果是被累积的,也就是这些行动全部都会执行的。比如行动列表中有两个行动都是push VLAN,那么行动后,报文会被加上两个VLAN tag。

#5 OpenFlow通道
OpenFlow 通道是交换机连接控制器的接口。
OpenFlow协议运行在安全传输层协议(TLS)或无保护TCP连接之上。
##5.1 OpenFlow协议介绍
OF协议支持三种消息类型:controller-to-switch,asynchronous(异步)和symmetric(对称),每一类消息又有多个子消息类型。controller-to-switch 消息由控制器发起,用来管理或获取switch 状态;asynchronous 消息由switch 发起,用来将网络事件或交换机状态变化更新到控制器;symmetric 消息可由交换机或控制器发起。
controller-to-switch:
Features在建立传输层安全会话(Transport Layer Security Session)的时候,控制器发送feature请求消息给交换机,交换机需要应答自身支持的功能。
Configuration控制器设置或查询交换机上的配置信息。交换机仅需要应答查询消息。
Modify-state控制器管理交换机流表项和端口状态等。
Read-state控制器向交换机请求一些诸如流、网包等统计信息。
Packet-out控制器通过交换机指定端口发出网包。
Barrier控制器确保消息依赖满足,或接收完成操作的通知
asynchronous
Packet-in交换机收到一个网包,在流表中没有匹配项,则发送Packet-in 消息给控制器。如果交换机缓存足够多,网包被临时放在缓存中,网包的部分内容(默认128 字节)和在交换机缓存中的的序号也一同发给控制器;如果交换机缓存不足以存储网包,则将整个网包作为消息的附带内容发给控制器。
Flow-removed交换机中的流表项因为超时或修改等原因被删除掉,会触发Flow-removed 消息。
Port-status交换机端口状态发生变化时(例如down 掉),触发Port-status 消息。
Error交换机发生问题时触发消息。
Symmetric
Hello交换机和控制器用来建立连接。
Echo交换机和控制器均可以向对方发出Echo 消息,接收者则需要回复Echo reply。该消息用来测量延迟、是否连接保持等。
Vendor交换机提供额外的附加信息功能。为未来版本预留。

5.2 连接建立

通过安全通道建立连接,所有流量都不经过交换机流表检查。
动态发现控制器协议?
当of连接建立起来后,两边必须先发送OFPT_HELLO消息给对方,该消息携带支持的最高协议版本号,接受方将采用双方都支持的最低协议版本进行通信。一旦发现共同支持的协议版本,则连接建立,否则发送OFPT_ERROR消息,描述失败原因,并中断连接。


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

相关文章

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 输入…

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

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

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

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

数学知识(习题课)

异或运算(不进位加法) 台阶Nim游戏必胜策略: 拆分Nim游戏 利用sg定理(后期再把sg定理给大家好好写一下)

2021年辽宁省大学生数学建模

2021年辽宁省大学生数学建模 C题 碳中和问题 碳中和是指人为排放量(化石燃料利用和土地利用)被人为努力(木材蓄积量、土壤有机碳、工程封存等)和自然过程(海洋吸收、侵蚀-沉积过程的碳埋藏等)所吸收。简单…

计算机专业数学建模结课论文,数学建模结课论文3000字论文

数学建模结课论文3000字论文 此频道为与数学建模和论文和字论文有关的范文,免费给你写数学建模结课论文提供相关参考文献资料。 摘 要:研究性学习中数学建模作为中职教育教学的重要组成部分,在教学的探索中取得了一定的成效。数学建模在解决数学问题时能够更好地调动学生自身…

当前目录下有一个文件名为 class_score.txt 的文本文件,存放着某班学生的学号、数学课成绩(第 2 列)和语文课成绩(第 3 列)。请编程完成下列要求。

练习三:当前目录下有一个文件名为 class_score.txt 的文本文件,存放着某班学生的学号、数学课成绩(第 2 列)和语文课成绩(第 3 列)。请编程完成下列要求: (1)分别求这个班…

土圭垚㙓数学课(一)万向锁(Gimbal Lock)

何为万向锁,我们先抛弃掉那些理论,直接举个栗子。 以你自身为对象。 首先,原地旋转为第一个维度,也就是heading。 其次,正翻跟头为第二个维度,也就是pitch。 然后,侧翻跟头为第三个维度&…