深入分析OpenFlow协议

article/2025/10/25 9:49:58

文章目录

  • OpenFlow是什么???
  • OpenFlow的起源与发展
  • OpenFlow工作原理
    • OpenFlow组件
      • OpenFlow控制器
        • 1、NOX/POX
        • 2、ONOS
        • 3、OpenDaylight
    • OpenFlow安全通道
    • OpenFlow交换机
    • 流表项的组成
    • 多级流表与流水线处理
    • 流表下发方式
  • OpenFlow的应用场景
  • OpenFlow的未来
  • 参考

OpenFlow是什么???

OpenFlow是一种网络通信协议,应用于SDN架构中控制器和转发器之间的通信。软件定义网络SDN的一个核心思想就是“转发、控制分离”,要实现转、控分离,就需要在控制器与转发器之间建立一个通信接口标准,允许控制器直接访问和控制转发器的转发平面。OpenFlow引入了“流表”的概念,转发器通过流表来指导数据包的转发。控制器正是通过OpenFlow提供的接口在转发器上部署相应的流表,从而实现对转发平面的控制。

OpenFlow的起源与发展

OpenFlow起源于斯坦福大学的Clean Slate项目,该项目的目标是要“重塑互联网”,旨在改变设计已略显不合时宜,且难以进化发展的现有网络基础架构。在2006年,斯坦福的学生Martin Casado领导了一个关于网络安全与管理的项目,试图通过一个集中式的控制器,让网络管理员方便地定义基于网络流的安全控制策略,并将这些安全策略应用到各种网络设备中,从而实现对整个网络通讯的安全控制。

受此项目启发,Clean Slate项目的负责人Nick McKeown教授及其团队发现,如果将传统网络设备的数据转发和路由控制两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置,那么这将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展。于是,他们便提出了OpenFlow的概念,并且于2008年发表了题为《OpenFlow: Enabling Innovation in Campus Networks》的论文,首次详细地介绍了OpenFlow的原理和应用场景。

2009年,基于OpenFlow,该研究团队进一步提出了SDN(Software Defined Network,软件定义网络)的概念,引起了行业的广泛关注和重视。2011年,由Google、Facebook、微软等公司共同发起成立了一个对SDN影响深远的组织ONF(Open Networking Foundation),致力于发展SDN。ONF将OpenFlow定义为SDN架构的控制层和转发层之间的第一个南向标准通信接口,并加大OpenFlow的标准化力度。
在这里插入图片描述
自2009年底发布第一个正式版本v1.0以来,OpenFlow协议已经经历了1.1、1.2、1.3以及最新发布的1.5等版本的演进过程。目前使用和支持最多的是OpenFlow1.0和OpenFlow1.3版本。
在这里插入图片描述

OpenFlow工作原理

整个OpenFlow协议架构由控制器(Controller)、OpenFlow交换机(OpenFlow Switch)、以及安全通道(Secure Channel)组成。控制器对网络进行集中控制,实现控制层的功能;OpenFlow交换机负责数据层的转发,与控制器之间通过安全通道进行消息交互,实现表项下发、状态上报等功能。
在这里插入图片描述

OpenFlow组件

OpenFlow控制器

OpenFlow控制器位于SDN架构中的控制层,是SDN的“大脑”,通过OpenFlow协议指导设备的转发。目前主流的OpenFlow控制器分为两大类:开源控制器和厂商开发的商用控制器。常见的开源控制器例如NOX/POX、OpenDaylight等。厂商的商用控制器有Huawei的iMaster NCE等。

1、NOX/POX

NOX是第一款真正的SDN OpenFlow控制器,由Nicira公司在08年开发,并且捐赠给了开源组织。NOX支持OpenFlow V1.0,并提供相关C++的API,采用异步的、基于时间的编程模型。而POX可以视作是更新的、基于Python的NOX版本,支持Windows,Mac OS和Linux系统上的Python开发,主要用于研究和教育领域。

2、ONOS

ONOS(Open Network Operating System)控制器是由The Open Networking Lab使用Java及Apache实现发布的首款开源SDN网络操作系统,主要面向服务提供商和企业骨干网。ONOS的设计宗旨是实现可靠性强、性能好、灵活度高的SDN控制器。

3、OpenDaylight

OpenDaylight是一个Linux 基金合作项目,该项目以开源社区为主导,使用Java语言实现开源框架,旨在推动创新实施以及软件定义网络透明化。面对SDN型网络,OpenDaylight作为项目核心,拥有一套模块化、可插拔且极为灵活的控制器,还包含一套模块合集,能够执行需要快速完成的网络任务。OpenDaylight控制器的命名以化学元素为名,最初的产品是Hydrogen(氢),当前已经发布了第八个版本Oxygen(氧),并且实现了OpenDaylight与NFV开放平台OPNFV(Open Platform for NFV)、开源云平台OpenStack和开放网络自动化平台ONAP(Open Network Automation Platform)同步。

OpenFlow安全通道

安全通道就是连接OpenFlow交换机与控制器的信道,负责在OpenFlow交换机和控制器之间建立安全链接。控制器通过这个通道来控制和管理交换机,同时接收来自交换机的反馈。

通过OpenFlow安全通道的信息交互必须按照OpenFlow协议规定的格式来执行,通常采用TLS(Transport Layer Security)加密,在一些OpenFlow版本中(1.1及以上),有时也会通过TCP明文来实现。通道中传输的OpenFlow消息类型包括以下三种:

Controller-to-Switch消息:由控制器发出、OpenFlow交换机接收并处理的消息,主要用来管理或获取OpenFlow交换机状态。
Asynchronous消息:由OpenFlow交换机发给控制器,用来将网络事件或者交换机状态变化更新到控制器。
Symmetric消息:可由OpenFlow交换机发出也可由控制器发出,也不必通过请求建立,主要用来建立连接、检测对方是否在线等。

OpenFlow交换机

OpenFlow交换机是整个OpenFlow网络的核心部件,主要负责数据层的转发。OpenFlow交换机可以是物理的交换机/路由器,也可以是虚拟化的交换机/路由器。按照对OpenFlow的支持程度,OpenFlow交换机可以分为两类:

OpenFlow专用交换机:一个标准的OpenFlow设备,仅支持OpenFlow转发。他不支持现有的商用交换机上的正常处理流程,所有经过该交换机的数据都按照OpenFlow的模式进行转发。
OpenFlow兼容型交换机:既支持OpenFlow转发,也支持正常二三层转发。这是在商业交换机的基础上添加流表、安全通道和OpenFlow协议来获得了OpenFlow特性的交换机。
OpenFlow交换机在实际转发过程中,依赖于流表(Flow Table)。流表是OpenFlow交换机进行数据转发的策略表项集合,指示交换机如何处理流量,所有进入交换机的报文都按照流表进行转发。流表本身的生成、维护、下发完全由控制器来实现。

流表项的组成

在传统网络设备中,交换机/路由器的数据转发需要依赖设备中保存的二层MAC地址转发表、三层IP地址路由表以及传输层的端口号等。OpenFlow交换机中使用的“流表”也是如此,不过他的表项并非是指普通的IP五元组,而是整合了网络中各个层次的网络配置信息,由一些关键字和执行动作组成的灵活规则。

OpenFlow流表的每个流表项都由匹配域(Match Fields)、处理指令(Instructions)等部分组成。流表项中最为重要的部分就是匹配域和指令,当OpenFlow交换机收到一个数据包,将包头解析后与流表中流表项的匹配域进行匹配,匹配成功则执行指令。

流表项的结构随着OpenFlow版本的演进不断丰富,不同协议版本的流表项结构如下。
在这里插入图片描述

多级流表与流水线处理

OpenFlow v1.0采用单流表匹配模式,这种模式虽然简单,但是当网络需求越来越复杂时,各种策略放在同一张表中显得十分臃肿。这使得控制平面的管理变得十分困难,而且随着流表长度与数目的增加,对硬件性能要求也越来越高。

从OpenFlow v1.1开始引入了多级流表和流水线处理机制,当报文进入交换机后,从序号最小的流表开始依次匹配,报文通过跳转指令跳转至后续某一流表继续进行匹配,这样就构成了一条流水线。多级流表的出现一方面能够实现对数据包的复杂处理,另一方面又能有效降低单张流表的长度,提高查表效率。
在这里插入图片描述
在这里插入图片描述

流表下发方式

OpenFlow流表的下发分可以是主动(Proactive)的,也可以是被动(Reactive)的:

主动模式下,控制器将自己收集的流表信息主动下发给OpenFlow交换机,随后交换机可以直接根据流表进行转发。
被动模式下,OpenFlow交换机收到一个报文而查流表失败时,会发送消息询问控制器,由控制器进行决策该如何转发,并计算、下发相应的流表。被动模式的好处是交换机无需维护全部的流表,只有当实际的流量产生时才向控制器获取流表记录并存储,当老化定时器超时后可以删除相应的流表,因此可以大大节省交换机芯片空间。

OpenFlow的应用场景

随着OpenFlow概念的发展和推广,其研究和应用领域也得到了不断拓展,主要包括网络虚拟化、安全和访问控制、负载均衡等方面。下面以几个典型的场景来展示OpenFlow的应用:

  • OpenFlow在校园网络中的应用
    科研院校网络是OpenFlow的发源地,也是OpenFlow被广泛应用的网络环境。学生或研究人员在进行网络创新性研究时,可能会有全新设计的网络控制协议和数据转发技术需要验证,他们希望有一个平台能帮助他们把网络的控制、转发独立出来,以便能在平台上自由验证他们的研究工作。基于OpenFlow的网络正好可以提供这样一个试验平台,不仅更接近真实网络的复杂度,实验效果好,而且可以节约实验费用。

  • OpenFlow在数据中心网络中的应用
    云数据中心是OpenFlow得以发扬光大的地方。云数据中心部署时存在多租户资源动态创建、流量隔离以及虚拟机动态迁移等虚拟化需求,OpenFlow交换机可以配合云管理平台实现网络资源的动态分配和网络流量的按需传输,实现云服务的网络虚拟化需求并可以改善网络性能。其次,在数据中心的流量很大,如果不能合理分配传输路径很容易造成数据拥塞,从而影响数据中心的高效运行。如果在数据中心中部署OpenFlow,可以动态获取各链路的流量传输情况,动态下发OpenFlow流表规则进行均衡调度,实现路径优化以及负载均衡。

  • OpenFlow在园区网络中的应用
    在园区网络中可以使用OpenFlow对接入层设备进行有效的管控。接入层设备的特点是量大、故障率高,但设备功能和流量策略相对简单。如果使用OpenFlow,可以在控制器上集中统一对接入设备进行流表下发、网络监控等维护工作。在要求用户身份认证的场合,可以把认证流量引导到控制器上,在验证用户身份合法后再下发准入规则到用户连接的交换机端口上。在控制器检测到特定网络端口或特定用户流量异常时,可以通过下发规则关停设备端口或限制特定流量,快速恢复网络故障,提高网络可靠性和安全性。

OpenFlow的未来

OpenFlow作为SDN转控分离架构和可编程性的灵魂已经存在近十年了,作为SDN技术家族中的老前辈可谓劳苦功高。然而,从整个网络技术数十年的发展历程来看,Openflow还只是个刚刚长成的少年,尽管已具备了丰富的功能雏形,在未来的日子里仍然还有很长的成熟期要度过。我相信伴随着云计算和虚拟化技术的进一步推广落地,在众多SDN技术支持者的贡献下,OpenFlow会更加稳定、强大,最终能够某种程度上推动全人类科技的发展和生活的改善。最后,套用一句我最喜欢的话来结尾:OpenFlow的征途是星辰大海,诸君努力!

参考


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

相关文章

【赛氪 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。 然后,侧翻跟头为第三个维度&…

令人讨厌的是数学课,不是数学----《一个数学家的叹息》

机缘巧合,看到了一本书,深受触动。 书中所说的理念正是马同学一直想去、要去、希望能够做到的,借用书中的话: 数学是理性的音乐。做数学是从事发现与猜测、直觉与灵感的活动;是进入疑惑的状态——不是因为它让你搞不懂…

五使用计算机上数学课英文,数学课用英语怎么说

目录 一、她正在上数学课用英语怎么说 请帮忙,我不会英语翻译! 数学课mθs 语文课ˌtʃaɪˈni:z 英语课ˈɪŋglɪʃ 体育课ˈfizikəl ˈkʌltʃə 电脑课kəmˈpju:tə(r) 科学课[saɪəns] 音乐课[mju:zɪk] 美术课[ɑ:t] 品德课[ˈmɔ&a…

Android HttpDns:我的域名我做主

Android HttpDns:我的域名我做主 之前公司的产品遇到了用户忽然无法登陆使用的问题,后来查明是因为在用户发布的内容里有一张被判定为黄图的图片,导致我们的域名被运营商封锁。还有一种情况,部分地区的用户使用我们的产品时页面上…

HTTPDNS基礎知識

什么是 DNS DNS(Domain Name System,域名系统),DNS 服务用于在网络请求时,将域名转为 IP 地址。能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 数串。 传统的基于 UDP 协议的公共 D…

HTTPDNS调度

小编:对于互联网,域名是访问的第一跳,而这一跳很多时候会“失足”,导致访问错误内容,失败连接等,让我们在互联网上畅游的爽快瞬间消失,而对于这关键的第一跳,鹅厂也在持续深入研究和…

阿里云HttpDns接入

个人博客 http://www.milovetingting.cn 前言 简单记录集成阿里云HTTPDNS服务的过程 什么是HTTPDNS HTTPDNS是面向多端应用(移动端APP,PC客户端应用)的域名解析服务,具有域名防劫持、精准调度、实时解析生效的特性。 以上来自阿…

HTTPDNS解析

简介 HTTPDNS使用HTTP协议进行域名解析,代替现有基于UDP的DNS协议,域名解析请求直接发送到阿里云的HTTPDNS服务器,从而绕过运营商的Local DNS,能够避免Local DNS造成的域名劫持问题和调度不精准问题。 HTTPDNS是面向移动开发者推…

httpdns技术有什么用

dns解析现状问题1:暴利的dns劫持# 要说为啥会出现httpdns(先不用管意思,后面解释),那么,首先要说一下,现在的dns解析,是不是有啥问题? dns能有啥问题呢,就是…

什么是HTTPDNS跟随阿里的httpdns demo一步一步了解httpdns

阿里巴巴是这样说的 HTTPDNS使用HTTP协议进行域名解析,代替现有基于UDP的DNS协议,域名解析请求直接发送到阿里云的HTTPDNS服务器,从而绕过运营商的Local DNS,能够避免Local DNS造成的域名劫持问题和调度不精准问题。 分析demo htt…