OpenFlow协议标准演进过程

OpenFlow是一种新型网络协议,起源于斯坦福大学的Clean Slate项目组。OpenFlow提出的出发点是由于研究人员无法改变现有网络设备进行创新网络架构和协议的研究和实验,而这些新的网络创新思想恰恰需要在实际的网络上才能更好地验证。斯坦福大学因此提出了控制转发分离架构,将控制逻辑从网络设备中分离出来,交给中央控制器集中统一控制,实现网络业务的灵活部署,并且他们设计了OpenFlow协议作为控制器与交换机通讯的标准接口。近年OpenFlow已经引起了网络设备商和网络管理员的广泛关注,使用OpenFlow协议实现软件定义网络,可以把网络作为一个整体而不是许多独立分散的设备来集中进行管理,大大提升了网络可用性和网络管理效率。

OpenFlow的思路很简单,网络设备维护一个或者若干个流表,并且数据流只按照这些流表进行转发。流表本身的生成、维护完全由外置的控制器来管理。流表项并非仅指普通的IP五元组,而是由一些关键字和执行动作组成的灵活规则,并且每个关键字字段都是可以通配的。在实际应用中,网络管理人员可以通过配置流表项中具体的匹配关键字来决定使用何种粒度的流转发规则。例如,如果只需要根据目的IP进行路由,那么下发流表项时,关键字只匹配目的IP字段,其它关键字全通配,而动作中只需要一个出端口即可实现常规的IP路由转发。

自2009年底发布第一个正式版本v1.0以来,OpenFlow协议已经经历了1.1、1.2、1.3以及最新发布的1.4等版本的演进过程。同时,2012年OpenFlow管理和配置协议也发布了第一个版本(OF-CONFIG1.0&1.1),用于配合OpenFlow协议进行自动化的网络部署。图1给出了OpenFlow协议各个版本的演进过程和主要变化,目前使用和支持最多的是OpenFlow1.0和OpenFlow1.3版本,图2说明了这两个版本的主要变化。

图1:OpenFlow协议版本演进图

OpenFlow协议是描述控制器和交换机之间交互信息的南向接口标准。OpenFlow协议支持三类消息类型:Controller-to-Switch、Asynchronous和Symmetric,每一种类型都有多个子类型,控制器和交换机之间通过这三类消息进行连接建立,流表下发和信息交换,实现对网络中所有OpenFlow交换机的控制。

图2:OpenFlow1.0到1.3版本演进的主要结构变化

下面简单介绍一下OpenFlow协议中1.0到1.4版本的主要变化过程。

OpenFlow1.0协议指定每个OpenFlow交换机中都存在一张流表,用于数据包查找、处理和转发,并且只能同一台控制器进行通信,流表的维护也是通过控制器下发相应的OpenFlow消息来实现。流表由多个流表项组成,而每个流表项就是一个转发规则。流表项由匹配字段、计数器和动作组成。其中匹配字段是流表项的标识,OpenFlow1.0支持12个匹配字段;计数器用于流表项的匹配和收发包统计;动作指示对匹配流表项的数据包应该执行的动作,如转发到另一端口,丢弃或送控制器处理,甚至可以修改数据包字段转发。但OpenFlow1.0只支持IPv4。

OpenFlow1.0版本的优势是它可以与现有的商业交换芯片兼容,通过在传统交换机上升级固件就可以支持OpenFlow1.0版本,既方便OpenFlow的推广使用也有效保护了用户的投资,因此OpenFlow1.0是目前使用和支持最广泛的协议版本。

自OpenFlow1.1版本开始支持多级流表,将流表匹配过程分解成多个步骤,形成流水线处理方式,这样可以有效和灵活利用硬件内部固有的多表特性,同时把数据包处理流程分解到不同的流表中也避免了单流表过度膨胀问题。除此之外OpenFlow1.1中还增加了对于VLAN和MPLS标签的处理,并且增加了Group表,通过在不同流表项动作中引用相同的组表实现对数据包执行相同的动作,简化了流表的维护。OpenFlow1.1版本是OpenFlow协议版本发展的一个分水岭,它和OpenFlow1.0版本开始不兼容,但后续版本仍然还是在此基础上发展。

为了更好支持协议的可扩展性,OpenFlow1.2版本发展为下发规则的匹配字段不再通过固定长度的结构来定义,而是采用了TLV结构定义匹配字段,称为OXM(OpenFlow Extensible Match),这样用户就可以灵活的下发自己的匹配字段,增加了更多关键字匹配字段的同时也节省了流表空间。同时,OpenFlow1.2规定可以使用多台控制器和同一台交换机进行连接增加可靠性,并且多控制器可以通过发送消息来变换自己的角色。还有重要的一点是自OpenFlow1.2版本开始支持IPv6。

经过1.1和1.2版本的演变积累,2012年4月发布的OpenFlow1.3版本成为长期支持的稳定版本。OpenFlow1.3流表支持的匹配关键字已经增加到40个,足以满足现有网络应用的需要。OpenFlow1.3主要还增加了Meter表,用于控制关联流表的数据包的传送速率,但控制方式目前还相对简单。OpenFlow1.3还改进了版本协商过程,允许交换机和控制器根据自己的能力协商支持的OpenFlow协议版本。同时,连接建立也增加了辅助连接提高交换机的处理效率和实现应用的并行性。其它还有IPv6扩展头和Table-miss表项的支持。

2013年最新发布的OpenFlow1.4版本仍然是基于1.3版本的特征改进版本,数据转发层面没有太大变化,主要是增加了一种流表同步机制,多个流表可以共享相同的匹配字段,但可以定义不同的动作;另外又增加了Bundle消息,确保控制器下发一组完整消息或同时向多个交换机下发消息的状态一致性。其它还支持光口属性描述,多控制器相关的流表监控等特征。

OpenFlow协议的发展演进一直都围绕着两个方面,一方面是控制面增强,让系统功能更丰富更灵活;另一方面是转发层面的增强,可以匹配更多的关键字,执行更多的动作。每一个后续版本的OpenFlow协议都在前一版本的基础上进行了或多或少的改进,但自OpenFlow1.1版本开始和之前版本不兼容,OpenFlow协议官方维护组织ONF为了保证产业界有一个稳定发展的平台,把OpenFlow1.0和1.3版本作为长期支持的稳定版本,一段时间内后续版本发展要保持和稳定版本的兼容。

神州数码网络公司(DCN)在2011年就开始OpenFlow交换机的研发,全线交换产品支持OpenFlow1.0和1.3协议,并配合国内多家高校,科研机构和互联网公司进行了OpenFlow科研和商用网络的部署,是目前国内拥有最多实际案例的设备厂商,在行业内处于领先地位。2013年11月开放网络基金会ONF正式推出OpenFlow1.0协议一致性认证业务,为网络设备商提供了证明其产品完全符合OpenFlow标准规范的机会,该测试涵盖二层和三层交换功能的10个方面,共有200来个测试项。DCN公司凭借近几年在OpenFlow研发的技术积累,其数据中心交换机CS6500于2014年4月顺利通过ONF的规范测试,成为国内首家通过OpenFlow1.0一致性认证的设备厂商。今后DCN将持续研发创新,积极配合用户实践SDN,引领网络设备市场的新变革。

本文来源于SDNLAB,可点击此阅读原文。如果你也有好的创作,你可以给我们投稿,投稿地址请点击

时间: 2024-10-27 16:32:53

OpenFlow协议标准演进过程的相关文章

OpenFlow协议(OVS)

白皮书(版本): 功能(OpenFlow半年升级一次) FlowTable流表:由很多个流表项组成,每个流表项就是一个转发规则.进入交换机的数据包通过查询流表来获得转发的目的端口.流表项由头域.计数器和操作组成:其中头域是个十元组,是流表项的标识:计数器用来计算流表项的统计数据:操作标明了与该流表项匹配的数据包应该执行的操作. Secure Channel:安全通道是连接OpenFlow交换机到控制器的接口.控制器通过这个接口控制和管理交换机,同时控制器接收来自交换机的事件并向交换机发送数据包.

阿里P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程

阶段一.单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件.此时我们使用一个容器,如tomcat.jetty.jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate.maven+spring+springmvc+mybatis:最后再选择一个数据库管理系统来存储数据,如mysql.sqlserver.oracle,然后通过JDBC进行数据库的连接和操作. 把以上的所有软件都装载同一台机器上,应用跑起来

P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程

阶段一.单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件.此时我们使用一个容器,如tomcat.jetty.jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate.maven+spring+springmvc+mybatis:最后再选择一个数据库管理系统来存储数据,如mysql.sqlserver.oracle,然后通过JDBC进行数据库的连接和操作. 把以上的所有软件都装载同一台机器上,应用跑起来

SSL协议的握手过程

SSL协议的握手过程SSL协议既用到了公钥加密技术(非对称加密)又用到了对称加密技术,SSL对传输内容的加密是采用的对称加密,然后对对称加密的密钥使用公钥进行非对称加密.SSL的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下: ①客户端的浏览器向服务器传送客户端SSL协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息. ②服务器向客户端传送SSL协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己

对扩展openflow协议的一点思考

软件定义X变得越来越火,正所谓,Software is eating the world. 软件定义网络也是如此.不论是在工业界还是学术界都将是一次伟大的革命,都在紧随着这个行业的方向,找自己的研究点,关注着标准化的进展. 各种Controller,原型系统都相继出现,还有的是是做SDN 的Debug,安全,总之让这个生态系统变得更加健壮.尽管南向接口标准非常多,可是openflow适合我们的学习,社区庞大. 以下记录下自己对这个的一点基本的看法. 1.首先要明白的就是,如同其它通信协议一样,o

SSL协议的握手过程(摘录)

SSL协议的握手过程 为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议.SSL 协议既用到了公钥加密技术(非对称加密)又用到了对称加密技术,SSL对传输内容的加密是采用的对称加密,然后对对称加密的密钥使用公钥进行非对称加密.这样做的好处是,对称加密技术比公钥加密技术的速度快,可用来加密较大的传输内容, 公钥加密技术相对较慢,提供了更好的身份认证技术,可用来加密对称加密过程使用的密钥.       SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其

[译] QUIC Wire Layout Specification - Frame Types and Formats | QUIC协议标准中文翻译(4) 帧类型和格式

欢迎访问我的个人网站获取更好的阅读排版体验: [译] QUIC Wire Layout Specification - Frame Types and Formats | QUIC协议标准中文翻译(4) 帧类型和格式 | yoko blog (https://pengrl.com/p/47156/) 目录 Frame Types | 帧类型 STREAM Frame | 流类型帧 ACK Frame | ACK帧 STOP_WAITING Frame | 停止等待帧 WINDOW_UPDATE

Spring-cloud微服务实战【一】:微服务的概念与演进过程

本文是一个系列文章,主要讲述使用spring-cloud进行微服务开发的实战.在开始之前,我们先说一下从传统的单一部署架构到微服务的发展过程,以便让童鞋们更好的理解微服务的概念与演进过程. 1.单体架构   在互联网时代早期,彼时还没有微服务的概念,企业开发应用,将所有功能都集中到一个应用中,典型的特征是tomcat + servlet + jsp + mysql,然后将应用打包成一个war包发布. ![file](https://img2018.cnblogs.com/blog/1924225

详述USB OTG发展及协议标准

USB On-The-Go 扩大了USB 的应用领域,将USB 从传统的PC 与外设通讯的模式,扩展到移动电子和嵌入式领域中,抛开主机PC,实现通常的外设与外设之间点对点(Point to Point)的数据传输模式. 1 什么是USB On-The-Go 我们先来回顾一下通用串行总线(Universal Serial Bus,简称为USB)发展的历史: i)1994 年11 月,以Intel 为首的7 家公司(Intel.Compaq.Microsoft.IBM.DEC.Northern Te