1.  概述

OpenFlow是由斯坦福大学的Nick McKeown教授在2008年4月ACM Communications Review上发表的一篇论文OpenFlow: enabling innovation in campus networks首先详细论述了OpenFlow的原理。由该论文课题可知OpenFlow提出的最初出发点是用于校园内网络研究人员实验其创新网络架构、协议,考虑到实际的网络创新思想需要在实际网络上才能更好地验证,而研究人员又无法修改在网的网络设备,故而提出了OpenFlow的控制转发分离架构,将控制逻辑从网络设备盒子中引出来,研究者可以对其进行任意的编程从而实现新型的网络协议、拓扑架构而无需改动网络设备本身。该想法首先在美国的GENI研究项目中得到应用,实现了一个从主机到网络的端到端创新实验平台。OpenFlow的架构见下图:

图1 OpenFlow概念架构

OpenFlow的思路很简单,网络设备(OpenFlow交换机)维护一个FlowTable并且只按照FlowTable进行转发,Flowtable本身的生成、维护、下发完全由外置的Controller来实现,注意这里的FlowTable并非是指IP五元组,事实上OpenFlow 1.0定义了包括端口号、VLAN、L2/L3/L4信息的12个关键字,但是每个字段都是可以通配的,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的IP进行路由,那么流表中就可以只有目的IP字段是有效的,其它全为通配。

这种控制和转发分离的架构对于L2交换设备而言,意味着MAC地址的学习由Controller来实现,V-LAN和基本的L3路由配置也由Controller下发给交换机。对于L3设备,各类IGP/EGP路由运行在Controller之上,Controller根据需要下发给相应的路由器。流表的下发可以是主动的,也可以是被动的,主动模式下,Controller将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;被动模式是指网络设备收到一个报文没有匹配的FlowTable记录时,将该报文转发给Controller,由后者进行决策该如何转发,并下发相应的流表。被动模式的好处是网络设备无需维护全部的流表,只有当实际的流量产生时才向Controller获取流表记录并存储,当老化定时器超时后可以删除相应的流表,故可以大大节省TCAM空间。

2.  缩写和术语

GRE (Generic Routing Encapsulation):通用路由封装

L2overgre(layer 2 Generic Routing Encapsulation):二层报文路由封装

OpenFlow控制端:OpenFlow实现了数据层和控制层的分离,其中OpenFlow交换机进行数据层的转发,而Controller实现了控制层的功能。Controller通过OpenFlow协议这个标准接口对OpenFlow交换机中的流表进行控制,从而实现对整个网络进行集中控制。

OpenFlow交换机:OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。OpenFlow交换机接收到数据包后,首先在本地的流表上查找转发目标端口,如果没有匹配,则把数据包转发给Controller,由控制层决定转发端口。

OpenFlow协议:OpenFlow协议用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准。

Diffserve(Differentiated Service):差分服务。

3.  技术介绍

3.1  OpenFlow交换机架构

OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。OpenFlow交换机接收到数据包后,首先在本地的流表上查找转发目标端口,如果没有匹配,则把数据包转发给Controller,由控制层决定转发端口。

OpenFlow交换机由流表、安全通道和OpenFlow协议三部分组成。

图2 OpenFlow交换机的构成和分类

流表由很多个流表项组成,每个流表项就是一个转发规则。进入交换机的数据包通过查询流表来获得转发的目的端口。流表项由头域、计数器和操作组成;其中头域是个十二元组,是流表项的标识;计数器用来计数流表项的统计数据;操作标明了与该流表项匹配的数据包应该执行的操作。

OpenFlow协议用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。OpenFlow协议支持三种信息类型:Controller-to-SwitchAsynchronousSymmetric,每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态。Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态。Symmetric信息可以在没有请求的情况下由控制器或交换机发起。

按照对OpenFlow的支持程度,OpenFlow交换机可以分为两类:专用的OpenFlow交换机和支持OpenFlow的交换机。专用的OpenFlow交换机是专门为支持OpenFlow而设计的。它不支持现有的商用交换。机上的正常处理流程,所有经过该交换机的数据都按照OpenFlow的模式进行转发。专用的OpenFlow交换机中不再具有控制逻辑,因此专用的OpenFlow交换机是用来在端口间转发数据包的一个简单的路径部件。支持OpenFlow的交换机是在商业交换机的基础上添加流表、安全通道和OpenFlow协议来获得了OpenFlow特性的交换机。其既具有常用的商业交换机的转发模块,又具有OpenFlow的转发逻辑,因此支持OpenFlow的交换机可以采用两种不同的方式处理接收到的数据包。

3.2  OpenFlow连接维护

支持照协议规范定义的HELLO、ECHO_REQUEST、ECHO_REPLY消息, 维护交换机与OpenFlow控制端之间的连接。

3.3  OpenFlow控制vlan

(1)由于DCN目前实现支持OpenFlow的交换机,所以提供命令配置OpenFlow控制的VLAN,这样OpenFlow下发的规则等只会在OpenFlow控制的VLAN内生效,不会影响其他VLAN的流量。

(2)与OpenFlow控制器连接的交换机端口不包含在启用OpenFlow的VLAN中,由用户自行控制。

3.4  规则处理

受交换机硬件芯片的限制,交换机不能通过硬件实现OpenFlow协议定义的所有action,为此引入了多业务卡,通过软件实现硬件不能支持的这部分action。当OpenFlow控制端下发一个规则的时候,交换机上的OpenFlow任务把规则下发到主控卡和多业务卡两个地方,其中多业务卡由于支持所有的action,所以上面下发了所有规则;主控卡由于只支持部分action,所以可以成功下发部分规则,其他规则下发到主控硬件上时都把动作改为转发到多业务卡,由多业务卡对匹配规则的报文进行处理。

3.4.1  规则匹配字段

(1) 支持二层字段的匹配, 包括入端口、源MAC、目的MAC、以太网协议类型、VLAN_ID、VLAN PRIORITY六个基本字段和源MAC掩码、目的MAC掩码两个扩展字段,共8个字段。

(2) 支持三层字段的匹配, 包括源IP地址、目的IP地址、源端口、目的端口、传输层协议号、TOS六个基本字段和源IP地址掩码、目的IP地址掩码两个扩展字段, 共8个字段。

3.4.2  规则动作

(1) 支持向指定端口发包动作。

(2) 支持向启用OpenFlow的VLAN所有端口发包, 协议中定义为ALL和FLOOD动作。

(3)支持向OpenFlow控制器发包,如果报文原来没有Vlan Tag,则发给控制器的包也不带Vlan Tag, 协议中定义为CONTROLLER动作。

(4)支持向入端口发包, 协议中定义为IN_PORT动作。

(5)支持丢弃报文的动作。协议中定义为DROP动作。

(6)支持数据包入队列动作。 协议中定义为QUEUE动作。

(7)支持修改报文字段动作。.

3.4.3  规则维护

(1)OpenFlow规则的增加, 支持OFPFF_CHECK_OVERLAP标志,在加入规则时检查是否存在冲突。如果增加操作不设置OFPFF_CHECK_OVERLAP标志,规则匹配后的行为由OpenFlow控制器负责。

(2)支持规则的删除, 包括带_STRICT后缀及不带后缀两个类型.

3.4.4  规则老化

(1)提供规则的定期老化, 用户可以通过设置hard-timeout时间, 让规则在hard-timeout时间到的时候老化删除.

(2) 提供规则的不活跃老化, 用户可以通过设置idle-timeout时间, 如果规则在idle-timeout时间内没有匹配报文, 则老化删除.

3.5  报文转发

主控收到一个报文,首先进行规则匹配,如果匹配上规则,并且actions是主控支持的,则在主控进行处理,否则,主控上虽然有规则,但是action是送往多业务卡处理,则把报文转发到多业务卡上,报文到多业务卡上重新进行规则匹配,找到对应的处理action,进行处理。如果报文在主控上没有找到匹配的规则,则把报文送往OpenFlow控制端,由控制端决定报文的处理行为。

3.6  二层GRE隧道(l2overgre)

用户可以通过配置和规则下发,实现对二层报文的GRE隧道功能,包括对二层报文的l2overgre封装和l2overgre报文的解封装。这里注意隧道配置的源IP地址必须是交换机上一个有效的IP地址,并且该地址所在的VLAN必须是OpenFlow未控制的VLAN。

用户配置完隧道后,交换机根据源IP、目的IP生成L2overGRE隧道虚端口,并为该虚端口生成对应的index,name(由l2GreTunnel + index组成),创建并注册成功后,把端口以HybridTag的方式加入VLAN ID指定的VLAN,该vlan应与OpenFlow控制的vlan需要一致,用户配置时需要注意。当成功配置后,OpenFlow交换机会构建OFPT_CSTNET_GRE_TUNNEL_REPLY消息发送给控制端,该消息包含隧道配置的源IP地址、目的IP地址、VLAN ID以及隧道虚端口对应的index值,控制端可以根据这些信息来识别对应的隧道并保留该index值。配置成功后,控制端即可下发相应规则,对符合规则的报文进行隧道,比如用户通过指定报文的出端口为隧道口对应的index即可对报文进行隧道。

3.7  QoS

1) 支持队列的方式, 通过控制队列所占带宽配置及WRR队列调度算法提供服务质量保证。

2) 支持差分服务的方式提供服务质量保证。

3.8  交换机信息收集

3.8.1  端口信息

1)提供端口基本信息,包括端口索引值(index),端口的MAC地址,端口的名称。

2)提供端口配置信息,不包括STP的配置。

3)提供端口状态信息和特征信息。

4)提供扩展端口信息,如果端口是L2OverGRE隧道端口, 提供隧道的源、目的IP地址。

5) 在收到控制端发送OFPT_FEATURES_REQUEST请求消息, 或者端口up/down、端口速率发生变化时通知OpenFlow 控制端端口信息.

3.8.2  统计信息

1) 提供单个flow信息统计, 提供符合OpenFlow控制端请求的流的匹配字段,action老化时间, 优先级, 匹配报文字节数等信息。

2) 提供流聚合统计信息,提供符合匹配规则的所有流的个数, 以及总的匹配报文个数。

3) 提供端口收发包相关统计。

4) 提供队列收发包相关统计。

4.  主要特性

该功能主要的特性为:

该功能实现了OpenFlow1.0协议,并扩展实现了l2overgre和QoS的功能,能够满足用户的需求。

5.  技术特色与优势

在OpenFlow1.0协议定义的基础上,扩展实现了l2overgre和QoS的功能,这些是DCN独有的。

OpenFlow技术白皮书-V1.0的更多相关文章

  1. [华三] IPv6技术白皮书(V1.00)

    IPv6技术白皮书(V1.00) http://www.h3c.com/cn/d_200802/605649_30003_0.htm H3C S7500E IPv6技术白皮书 关键词:IPv6,隧道 ...

  2. 接口性能测试方案 白皮书 V1.0

    一. 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间.响应时间按软件的特点再可以细分,如对于一个 C/S 软件的响应时间可以细分为网 ...

  3. 全栈技术经理——团队管理:每周问问你的团队这这些问题 V1.0

    全栈技术经理--团队管理:每周问问你的团队这这些问题 V1.0 1.本周取得了哪些进展? ​ 通过回答这个问题可以让员工庆祝甚至夸耀一些自己的成果,包括那些跟最高优先级不相干而被忽视的小事情.借此你也 ...

  4. JAP 1.0.1 以及 《JAP产品技术白皮书》正式发布

    快讯 JAP 1.0.1 正式发布 <JAP产品技术白皮书>正式发布.立即获取:白皮书 JAP 1.0.1 版本内容 新增功能/支持 添加 com.fujieid.jap.core.uti ...

  5. 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点

    一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...

  6. 003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点

    一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...

  7. [转]SDN与OpenFlow技术简介

    http://blog.163.com/s_zhchluo/blog/static/15014708201411144727961/ 本文是2012年文章,对Openflow的发展.规范.应用和SDN ...

  8. ASP.NET Boilerplate终于发布v1.0了

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:ABP经过2年多的开发,终于发布第一个主要版本了,谨此提醒ABP的使用者. ASP.N ...

  9. 屏幕监视专家 v1.0 定时录制屏幕动画发送到指定邮箱

    ScreenWatcher v1.0功能:定时录制屏幕动画发送到指定邮箱,录制的动画为gif,可指定录制多长时间.指定几点直接开始录制,完全后台运行.作者:Bluefish 下载链接: http:// ...

随机推荐

  1. 树梅派配置ad-hoc网络

    树梅派配置ad-hoc网络 更新与安装 1.更改源/etc/apt/source.list: http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian ...

  2. Centos7服务器搭建VNC Server环境

    在企业级项目的开发中,尤其是分布式项目,经常直接在服务器上进行开发工作,操作系统环境一般是Centos 7.普遍状况是,在服务器上安装IDE 开发工具,通过 Xshell等工具远程启动,本地通过虚拟桌 ...

  3. 混合开发的大趋势之一React Native手势行为那些事

    转载请注明出处:王亟亟的大牛之路 最近项目部分模块重构,事情有点多,学习进度有所延缓,外加一直在吸毒(wow你懂的),导致好多天没发问了,其实这部分知识月头就想写了,一直没补. 话不多说先安利:htt ...

  4. centos redis 3.2.11 安装与配置

    centos 7 下载解压 wget http://download.redis.io/releases/redis-3.2.11.tar.gz tar xzf redis-3.2.11.tar.gz ...

  5. 【GAN】GAN的原理及推导

    把GAN的论文看完了, 也确实蛮厉害的懒得写笔记了,转一些较好的笔记,前面先贴一些 原论文里推理部分,进行备忘. GAN的解释 算法流程 GAN的理论推理 转自:https://zhuanlan.zh ...

  6. 跟着vamei复习概率论

    最近重新看了一下概率论,感觉很多东西都遗忘了,还会陷入各种误区,赶紧的纠正回来. 概率论这块,主要内容包括: 事件.条件概率.随机变量.随机变量的分布函数.概率密度.联合分布.期望.方差.协方差. 我 ...

  7. tcpdump抓包笔记

    抓取指定端口的数据包 并保存文件,用wireshark分析 tcpdump -Ans 4096 -i any port 8080 -w ../mpass.cap 抓取指定端口和指定ip的数据包 并保存 ...

  8. 使用jsonp去访问跨域数据,回调使用数据

    var foo = function (data) { console.log("foo", data)} var testJsonP = function () { $.ajax ...

  9. 场景设计以及Manual Scenario和Goal-OrientedScenario的区别

    Manual Scenario 手工场景 主要是设计用户变化,通过手工场景可以帮助我们分析系统的性能瓶颈.手动方案:如果要生成手动方案,请选择此方法.通过创建组并指定脚本.负载生成器和每组中包括的 V ...

  10. Rem实现移动端适配

    移动端适配 web页面跑在手机端(h5页面) 跨平台 基于webview() 基于webkit 常见适配方法 pc端采用display:inline-block,让div盒子横着排 移动web:采用定 ...