OpenFlow,一种网络通信协议,属于
数据链路层,能够控制网上交换器或
路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。
历史
OF的最初概念始于2008年的
斯坦福大学。到2009年12月,OpenFlow交换规范1.0版发布。自成立以来,OpenFlow一直由开放网络基金会(ONF)管理,ONF是一个致力于开放标准和SDN应用的用户主导型组织。
自其发布以来,多家公司和OpenDaylight Project等开源项目都支持OpenFlow,甚至还提供了OpenDaylight控制器。思科和博科等其他公司也提供使用OF的控制器,以及Cisco XNC和Brocade Vyatta控制器。
概论
OpenFlow能够启动远程的控制器,经由
网络交换器,决定网络数据包要由何种路径通过
网络交换机。这个协议的发明者,将它当成
软件定义网络(Software-defined networking)的启动器。
OpenFlow允许从远程控制网络交换器的
数据包转送表,透过新增、修改与移除数据包控制规则与行动,来改变数据包转送的路径。比起用
访问控制表(ACLs) 和路由协议,允许更复杂的流量管理。同时,OpenFlow允许不同供应商用一个简单,开源的协议去远程管理交换机(通常提供专有的接口和描述语言)。
OpenFlow
协议用来描述控制器和交换机之间交互所用信息的标准,以及控制器和交换机的接口标准。协议的核心部分是用于OpenFlow协议信息结构的集合。
OpenFlow
协议支持三种信息类型:Controller-to-Switch,Asynchronous和Symmetric,每一个类型都有多个子类型。Controller-to-Switch信息由控制器发起并且直接用于检测交换机的状态。Asynchronous信息由交换机发起并通常用于更新控制器的网络事件和改变交换机的状态。Symmetric信息可以在没有请求的情况下由控制器或交换机发起。
特点
开发者自行制造设备的方法一般是使用PC服务器或专用硬件搭建自己的交换路由设备,受限于
主机能装备的网卡数量, 这种方法不能获得足够大密度的端口(一般交换机很容易达到48或者更多的端口,而主机即使插上多块网卡也很难有这么多的端口),而且研究设备的交换性能一般也远不如同价格的商用设备。在这种情况下,OpenFlow论坛提出新的交换设备解决方案必须具有以下四点性质:
第一,设备必须具有商用设备的高性能和低价格的特点;
第二,设备必须能支持各种不同的研究范围;
第三,设备必须能隔绝实验流量和运行流量;
第四,设备必须满足设备制造商封闭平台的要求。
发展
由于OpenFlow对网络的创新发展起到了巨大的推动作用,因此受到了广泛的关注和支持。由
美国科学基金会(NSF)支持的Global Environment for Network Investigations (GENI)计划对OpenFlow进行了资金支持并已开始实施“GENI Enterprise”计划。
从2007年提出以来,OpenFlow已经在硬件和
软件支持方面取得了长足的发展。从OpenFlow推出开始,
日本NEC就对OpenFlow的相关硬件进行了跟进性的研发,NEC的IP8800/S3640-24T2XW和IP8800/S3640-48T2XW两款交换机是支持OpenFlow的最成熟的交换机之一。CISCO,Juniper,Toroki,pronto也相继推出了支持OpenFlow的交换机、
路由器、
无线网络接入点(AP)等网络设备。此外,具有OpenFlow功能的AP也已在
斯坦福大学进行了部署,标志着OpenFlow已不再局限于固网。2009年12月,OpenFlow规范发布了具有里程碑意义的可用于商业化产品的1.0版本,而且支持规范1.0的
软件indigo也已发布了
Beta版本。OpenFlow相应的支持
软件,如OpenFlow在Wireshark
抓包分析工具上的支持
插件、OpenFlow的调试工具(liboftrace)、“OpenFlow虚拟
计算机仿真”(OpenFlowVMS)等也已日趋成熟。
OpenFlow分别于2008年和2009年连续两年获得了SIGCOMM的最佳演示奖,并且享有声望的MIT Technology Review杂志把OpenFlow选为十大未来技术,认为其具有实力改变未来的日常生活。此外,乔治亚工学院、
哥伦比亚大学、
多伦多大学以及
汉城国立大学分别以讲座和工程实践的方式开设了OpenFlow。OpenFlow已经在
美国斯坦福大学、Internet2、
日本的JGN2plus以及其他的10-15个科研机构中部署,并将在国家科研骨干网以及其他科研和生产中应用。OpenFlow的国际覆盖已经包括日本、
葡萄牙、
意大利、
西班牙、
波兰和
瑞典等。
网络组成
OpenFlow网络由OpenFlowswitch(
OpenFlow交换机)、FlowVisor(网络虚拟化层)和Controller(控制器)三部分组成。OpenFlow交换机进行数据层的转发;FlowVisor对网络进行虚拟化;Controller对网络进行集中控制,实现控制层的功能。OpenFlow网络的结构示意图如下:
OpenFlow交换机是整个OpenFlow网络的核心部件,主要管理数据层的转发。OpenFlowSwitch拥有一个FlowTable(流表),它只按照流表进行转发,FlowTable的生成、维护和下发由外置的Controller来实现。这里的FlowTable并非是指IP五元组(IP源地址、IP目的地址、协议号、源端口、目的端口),OpenFlow1.0规范定义了包括输入端口、MAC源地址、MAC目的地址、
以太网类型、VLANID、IP源地址、IP目的地址、IP端口、TCP源端口、TCP目的端口在内的10个关键字(十元组)。FlowTable中的每个关键字都可以通配,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的IP进行路由,那么FlowTable中就可以只有IP目的地址字段是有效的,其它全为通配。传统网络中数据包的流向是人为指定的,虽然交换机、路由器拥有控制权,却没有数据流的概念,只进行数据包级别的交换;而在OpenFlow网络中,统一的Controller取代路由,决定了所有数据包在网络中传输路径。
OpenFlow采用控制和转发分离的架构,意味着MAC地址的学习由Controller来实现,VLAN和基本的路由配置也由Controller下发给OpenFlowSwitch。对于三层网络设备,各类路由器运行在Controller之上,Controller根据需要下发给相应的路由器。当一个Controller同时控制多个OpenFlowSwitch时,它们看起来就像一个大的逻辑交换机。
FlowTable的下发可以是主动的,也可以是被动的。
主动模式:Controller将自己收集的FlowTable信息主动下发给OpenFlowSwitch,随后OpenFlowSwitch可以直接根据FlowTable进行转发。
被动模式:OpenFlowSwitch收到数据包后,首先在本地的FlowTable上查找转发目标端口,如果没有匹配,则把数据包转发给Controller,由控制层决定转发端口,并下发相应的FlowTable。被动模式的好处是网络设备无需维护全部的FlowTable,只有当实际的流量产生时才向Controller获取FlowTable记录并存储,当记录老化时可以删除相应的FlowTable,故可以大大节省存储器空间。
OpenFlow交换机由FlowTable(流表)、SecureChannel(安全通道)和OpenFlowProtocol(协议)三部分组成。
FlowTable流表:由很多个流表项组成,每个流表项就是一个转发规则。进入交换机的
数据包通过查询流表来获得转发的目的端口。流表项由头域、计数器和操作组成;其中头域是个十元组,是流表项的标识;计数器用来计算流表项的统计数据;操作标明了与该流表项匹配的
数据包应该执行的操作。
Secure Channel:安全通道是连接OpenFlow交换机到控制器的接口。控制器通过这个接口控制和管理交换机,同时控制器接收来自交换机的事件并向交换机发送
数据包。交换机和控制器通过安全通道进行通信,而且所有的信息必须按照OpenFlow协议规定的格式来执行。
相关应用
OpenFlow的应用是很广泛的,这里我们只是列举五个比较典型的应用。
OpenFlow在校园网络中的应用。如果我们可以让校园网具有OpenFlow特征,则可以为学生和科研人员实现新协议和新算法提供一个试验平台。OpenFlow网络试验平台不仅更接近真实网络的复杂度,实验效果更好,而且可以节约实验费用。包括
斯坦福大学在内的几所高校已经部署了OpenFlow交换机,取得了很好的实验效果。
OpenFlow在
广域网和
移动网络中的应用。在广域网和
移动网络中添加具有OpenFlow特征的节点,将带来众多的好处。例如,可以使得固网和
移动网络实现无缝控制、使得VPN的管理更加灵活等。NEC 已经利用OpenFlow控制技术对快速、宽带的
移动网络进行高效、灵活的网络管理,并解决了两个课题。首先,在多个移动通信方式实现动态切换。在移动通信混杂时以及通信环境恶化时,动态切换通信方式,将满足通信服务所需的服务品质,提供给终端用户。其次,移动回环网络的节能。在一天当中通信量相对较少的夜晚时段,可以汇集网络路径,关闭多余的中转基站的电源,从而节省能源。
OpenFlow在
数据中心网络中的应用。在
数据中心网络中使用OpenFlow交换机,可以使得网络和计算资源更加紧密的联系起来并实现有效的控制。
数据中心的数据流量很大,如果不能合理分配传输路径很容易造成数据拥塞,从而影响数据中心的高效运行。若在
数据中心网络中添加OpenFlow交换机,则可以实现路径优化以及
负载均衡,从而使得数据交换更加迅速。
OpenFlow在
网络管理和安全控制中的应用。如果网络是基于OpenFlow技术实现的,则经过OpenFlow交换机的每个新的
数据流都必须由控制器来做出转发决定。在控制器中可以对这些流按照预先制定的规则进行检查,然后由控制器指定
数据流的传输路径以及流的处理策略,从而更好的控制网络。更为重要的是,在内部网络和外网的连接处应用OpenFlow交换机可以通过更改
数据流的路径以及拒绝某些数据流来增强企业内网的安全性。
基于OpenFlow实现
SDN(Software Defined Network)。在SDN中,交换设备的数据转发层和控制层是分离的,因此网络协议和交换策略的升级只需要改动控制层。OpenFlow在OpenFlow交换机上实现数据转发,而在控制器上实现数据的转发控制,从而实现了数据转发层和控制层的分离。基于OpenFlow实现SDN,则在网络中实现了软硬件的分离以及底层硬件的虚拟化,从而为网络的发展提供了一个良好的发展平台。
影响
由于
网络暴露出了越来越多的弊病以及人们对网络性能需求的提高,于是研究人员不得不把很多复杂功能加入到
路由器的体系结构当中,例如OSPF,BGP,
组播,区分服务,流量工程,NAT,
防火墙,MPLS等等。这就使得
路由器等交换设备越来越臃肿而且性能提升的空间越来越小。
然而与网络领域的困境截然不同的是,计算机领域实现了日新月异的发展。仔细回顾计算机领域的发展,不难发现其关键在于计算机领域找到了一个简单可用的硬件底层(x86指令集)。由于有了这样一个公用的硬件底层,所以在
软件方面,不论是
应用程序还是
操作系统都取得了飞速的发展。很多主张重新设计
计算机网络体系结构的人士认为:网络可以复制计算机领域的成功经验来解决网络所遇到的所有问题。在这种思想的指导下,将来的网络必将是这样的:底层的
数据通路(交换机、
路由器)是“哑的、简单的、最小的”,并定义一个对外开放的关于流表的公用的API,同时采用控制器来控制整个网络。未来的研究人员就可以在控制器上自由的调用底层的API来编程,从而实现网络的创新。
OpenFlow正是这种网络创新思想的强有力的推动者。OpenFlow交换机将原来完全由交换机/
路由器控制的
报文转发过程转化为由OpenFlow交换机(OpenFlow Switch)和控制服务器(Controller)来共同完成,从而实现了数据转发和路由控制的分离。控制器可以通过事先规定好的接口操作来控制OpenFlow交换机中的流表,从而达到控制数据转发的目的。
因此,OpenFlow开启了一条网络创新的道路。如果OpenFlow得到广泛的应用和推广,则未来的网络将如曾经的计算机一样取得日新月异的发展。