颠覆网络的新技术——OpenFlow
OpenFlow是最近刚走出大学实验室开始商业化的最新网络技术。在2011年拉斯维加斯Interop展会上,该技术一经展示就引起了轰动,这届展会也被称之为“OpenFlow展示会”。虽然该协议很简单,但是它将会对网络架构和价值160亿美元的交换机市场产生深远影响。
我们将回顾OpenFlow的起源和它能够解决的各种问题,包括其目前的常用架构,我们非常想知道OpenFlow为什么能够被称之为是一种颠覆性技术,为什么能够让网络功能、传输方式、网络设计与运作发生革命性的变化。
起源
OpenFlow由斯坦福大学和加州大学伯克利分校领导的大学联盟所发起,他们的初衷是让研究人员可将企业级以太网交换机作为定制构件用于大学的网络实验。他们希望服务器软件能够直接访问交换机的转发表,因此他们研发了OpenFlow协议。该协议自身非常小,虽然只有27页规范(这已经是非常小了),但是却非常强大,一套用于修改、转发、排队和剥离匹配数据包的基元。OpenFlow与用于网络的x86指令集相似,可创建在软件层上。
在OpenFlow网络中,L2交换机的许多控制平面功能,如生成树协议、MAC地址学习等均由服务器软件而不是交换机固件决定。早期研发人员在定义协议时想的更远,他们允许OpenFlow控制器和交换机执行许多传统的控制功能(如路由、防火墙和负载平衡)。
目前,OpenFlow协议已经走出大学实验室,并且得到了开放网络基金会的支持。开放网络基金是非盈利性的行业机构,其会员包括许多大型的设备厂商和芯片技术提供商,全球最大的几家网络运营者如谷歌、微软、雅虎、Facebook、德国电信和威瑞森等公司均是其董事会成员。
演化
三年前,OpenFlow完全由几家大学和交换机厂商推动。这几家交换机厂商对研发提供了坚定的支持。OpenFlow允许研发人员在生产网络和信息中安全地测试全新的协议设计和理念。
三年前,OpenFlow的可编程性开始受到庞大的数据中心网络团体的关注,因为这些团体正在寻求一种能够支持大型Mapreduce/Hadoop簇的方法。这些簇有着非常详细的网络需求:每个服务器之间需要平等的网络带宽,这一需求被外界称之为“全截面带宽”。
此后,公有云(IaaS)运营者开始对OpenFlow架构进行调研,因为他们发现拥有大量虚拟机的租户提出了相同的全截面带宽需求,这些租户的虚拟机被分散的部署在数据中心的许多机架上。这些IaaS提供商同样受到了支持多租户需求的推动,由于规模和速度限制,这已经超出了传统脚本和VLAN的能力。正是这一需求推动了OpenFlow 应用的研发和对网络虚拟化的研究。
如今,OpenFlow的多租户网络使用让OpenFlow成功进入到了大型数据中心、IaaS提供商和企业数据中心领域。
架构组成
目前主要的OpenFlow解决方案包含一个三层架构,第一层架构由关键的具备OpenFlow 协议许可的以太网交换机组成。通常情况下,它们是具备OpenFlow功能的物理以太网交换机。我们还能看到一些具备OpenFlow功能的虚拟层/软件交换机和路由器。今后这类设备肯定会越来越多。
然后是两层服务器端软件:OpenFlow控制器和OpenFlow软件应用建立在控制器顶端。
控制器是一个平台,该平台向下可以直接与使用OpenFlow协议的交换机进行对话。向上,控制器可为OpenFlow软件应用提供大量功能,包括将交换机资源编入统一的网络视窗内,为应用提供协同和通用库。
在顶层,OpenFlow软件应用为网络执行实际控制功能,如交换与路由。应用是写在由控制器提供的统一网络视窗和通用库顶层的简单软件。因此,这些应用能够着重执行特定控制算法,并能够调整其下层的OpenFlow层以实例化网络中的算法。
软件架构师对这个三层的OpenFlow架构应非常熟悉。比如, Web应用服务器架构:应用在Web应用服务器顶层,而Web应用服务器又在数据库层顶层。每一个较低的层都向上提供了一个抽象概念/API以简体其上一层的设计。
目前,OpenFlow术语有两个意思,可以指“OpenFlow协议”,明确指称用于网络的x86指令集,也可以指“OpenFlow架构”,主要是交换机、控制器和应用层。
变革
OpenFlow在网络界一直是一个有争议的话题,在某种程度上是因为其早期曾宣称它们的目标是将交换硬件商业化。很明显,协议需要交换硬件和控制器软件之间进行合作,但是该目标并没有得到相关交换合作伙伴的响应。尽管存在争议,但是开始关注OpenFlow的大多数公司已经看到,OpenFlow是一个可加速创新并可实际区分硬件和整体解决方案的办法。
大前景是,由于能够快速创新——随着软件应用与编程设备的整合而产生的新网络功能,避开传统网络协议常花上数年时间进行批准/实施的过程,因此OpenFlow和网络界所推出的 “软件定义网络”将带来革命性变化。由于软件/硬件架构采用了分层设计,因此提速是有可能实现的。