2006 年,美国斯坦福大学启动了一个名叫 Clean Slate 的研究课题。该课题由美国 GENI 项目资助,目的非常明确且宏大,就是——“重塑互联网”。
Global Environment for Network Innovations
当时的互联网,已经历经了 30 多年的高速发展,从最初的小型专用局域网络,变成了空前庞大和复杂的世界级网络。
网络规模的持续扩张,网络设备的不断增加,超过了早期设计的承受能力,也使得网络维护变得举步维艰。
于是,专家们开始探讨未来网络的可能性架构,希望在互联网崩溃之前,将它拉回正轨。而 GENI 项目和 Clean Slate 课题,就是这些尝试之一。
2007 年,斯坦福大学博士生 Martin Casado 等人提出了关于网络安全与管理的项目——Ethane。
该项目试图通过一个集中式的控制器,将网络管理人员制定的安全控制策略,下发到各个网络设备中,从而实现对整个网络的安全控制。
2008 年,Clean Slate 课题的项目负责人,斯坦福大学教授 Nick McKeown 及其团队,受到 Ethane 项目的启发,提出了 OpenFlow 的概念,并发布了那篇经典的文章——《OpenFlow : Enabling Innovation in Campus Networks(OpenFlow:校园网的创新使能)》。
Nick McKeown 和他的文章
OpenFlow,字面意思就是“开放的流”。
2009 年,基于 OpenFlow,Nick Mckeown 教授正式提出了 SDN(Software Defined Network,软件定义网络)。
同年,SDN 概念成功入围 Technology Review 年度十大前沿技术,获得了行业的广泛关注和重视。
12 月份,OpenFlow 规范的 1.0 版本正式发布。这是首个可用于商业化产品的版本,具有里程碑意义。
在继续介绍 SDN 发展历程之前,我们还是要稍微介绍一下 SDN 的工作原理。
SDN 的核心思想真的很简单,就是控制和转发分离。
我们知道,网络的作用就是连接。通过无数的节点(例如路由器、交换机),将数据从起点传送到终点,这就是网络的基本功能。
数据传输过程中,各节点不断接收和转发数据包。控制负责下命令,转发负责干活。然而,考虑到安全冗余等因素,现实中的网络绝对不会是一条直线那么简单。它会是一个复杂的拓扑结构。
于是,命令该怎么下,直接决定了网络的效率。
传统网络中,各个转发节点都是独立工作的,内部管理命令和接口也是厂商私有的,不对外开放。
每个节点,都在说各自的“方言”
所以,我们可以把它理解为“各自为战”的模式。虽然“战略层面”的规划和设计可能是统一的,但“战术层面”的执行却是复杂且低效的。
而 SDN 网络,就是在网络之上建立了一个 SDN 控制器节点,统一管理和控制下层设备的数据转发。所有的下级节点,管理功能被剥离(交给了 SDN 控制器),只剩下转发功能。
SDN 控制下的网络,变得更加简单。管理者只需要像配置软件一样,进行简单部署,就可以让网络实现新的路由转发策略。(如果是传统网络,每个网络设备都需要单独配置。)
除了简化部署之外,SDN 更深层次的意义,是赋予了网络的“可编程性”。
也就是说,控制和转发分离之后,借助规范化的 API 接口,用户可以通过编写软件的方式,对网络进行管理。整个网络,就像个完整的机器人一样可供驱使。
我们具体来看看 SDN 的架构。
SDN 网络的整体架构,分为三层,从上到下分别是应用平面、控制平面和转发平面。
整个架构的核心,就是 SDN 控制器。
上北下南,SDN 控制器向上与应用平面进行通信的接口,叫做北向接口,也叫 NBI 接口(northbound interface)。SDN 控制器向下与数据平面进行通信的接口,叫做南向接口,也叫 CDPI 接口(control-data-plane interface,控制数据平面接口)。
北向接口相对来说比较好搞,麻烦的是南向接口及其协议。因为它直接影响到 SDN 控制器的命令能否准确下达到无数的底层网络设备。
因此,SDN 技术的发展史,简而言之,就是围绕 SDN 控制器和南向接口的“王位争夺史”。
在 SDN 被提出之后,第一个控制器平台是 NOX。它是一种单一集中式结构的控制器,南向接口采用的是 OpenFlow 协议。
2011 年,由 Google、Facebook、微软等公司共同发起成立了一个对 SDN 影响深远的组织,那就是 ONF(Open Networking Foundation,开放网络基金会)。
ONF 的主要发起成员是德国电信、Facebook、Google、微软、雅虎等公司。
这些公司要么是网络服务提供商,要么是运营商,没有一个是来自设备商的。他们成立 ONF 的目的,是为了推动 SDN 和 OpenFlow 协议的发展。他们不希望 SDN 这个网络新技术又被设备商控制,成为设备商的赚钱工具。
上述发起人里面,最值得一提的是 Google。
如果说 Nick Mckeown 教授是点燃 SDN 星星之火的人,那么,Google 显然是将星星之火烧遍全球的关键角色。
早在 SDN 被提出之外,Google 就在寻找提升自身网络效率的方法。当看到 SDN 之后,Google 确认,这就是他们想要的。于是,他们果断决定将 SDN 应用于自己的数据网络。
2010 年,Google 开始将数据中心与数据中心之间的网路连线(G-scale),转换成 SDN 架构。整个改造分为三个阶段。到了 2012 年,整个 Google B4 网络完全切换到了 OpenFlow 网络。
Google B4 是一种横跨整个地球的连接到谷歌数据中心私有广域网。
改造之后,Google B4 网络的链路带宽利用率提高了 3 倍以上,接近 100%。
这样的结果毫无疑问是令人震撼的,也坚定了行业对 SDN 的信心。
2013 年,Google 在 SIGCOMM 上发表了论文《B4: Experience with a Globally-Deployed Software Defined WAN》,详细介绍了 Google 的 WAN 加速 SDN 方案。论文中提及,Google 使用的控制器名叫 ONIX。
面对 SDN 和 ONF,设备商当然也不能无动于衷。
2013 年 4 月 8 日,在 Linux 基金会的支持下,作为网络设备商的领导者,Cisco 与 IBM、微软等公司一起,发起成立了开源组织 OpenDaylight,共同开发 SDN 控制器。
ODL 的发起公司有:IBM、微软、Big Switch、博科、思杰、戴尔、爱立信、富士通、英特尔、Juniper、NEC、惠普、红帽和 VMware……基本都是厂商
OpenDaylight 提出,SDN 不等于 OpenFlow,人们需要对 SDN 进行“重新定义”。
也就是说,OpenDaylight 强调 SDN 控制器不仅仅局限于 OpenFlow,而是应该支持多种南向协议。
同时,OpenDaylight 还强调,应该用分布式的控制平台,取代单实例的控制器。这样可以管理更大的网络,提供更强劲的性能,还能增强系统的安全性和可靠性。
OpenDaylight 成立之后,成员数量增长迅速。但实际上,各个成员都有自己的小算盘。
Cisco 就不用说了,作为 OpenDaylight 项目的牵头人,它主导了其中大部分项目的开发。Cisco 也一直想推自家的 OpFlex 上位。
除了 Cisco 之外,Big Switch 推出 Big Network Controller 以及对应的开源版本 Floodlight。Juniper 推出的是 Contrial 以及对应的开源版本 OpenContrial。
总而言之,这一时期各种各样的 SDN 控制器处于百家争鸣的状态,发展势头一片大好。
当时比较主流的几种 SDN 控制器
仗着人多势众,OpenDaylight 也成了行业里最具影响力的技术组织之一。
就在 OpenDaylight 风光无限的时候,又杀出了一个搅局者。
2014 年 12 月 5 日,ON.Lab 推出了一款创新性的网络操作系统——ONOS(Open Network Operating System),对 OpenDaylight 发起了强有力的挑战。
ONOS 直接将自身定位提升到网络操作系统层面。
ON.Lab 是哪里冒出来的呢?ON.Lab 全名是 Open Networking Lab(开放网络实验室),最初是由 Parulkar 和 Nick McKeown 共同成立的。没错,就是提出 SDN 的那个 Nick McKeown 教授。
On.Lab 的某些职能和 ONF 很类似。2016 年 10 月 19 日,两个组织宣布正式合并,组成了新的 ONF。
就这样,围绕 SDN 控制器和协议,各大流派及厂商进行了十多年的明争暗斗,并最终形成了现在的局面。
从趋势来看,网络操作系统的概念深入人心,是大势所趋。SDN 控制器作为网络操作系统的核心,重要性不言而喻。
未来,随着网络规模的扩大,SDN 控制器肯定会继续往分布式的方向发展。控制器之间的分工协作会更加深入,甚至可能出现集群。控制器也会引入 NFV 虚拟化技术,与 OpenStack 等云平台进行整合。
好啦,关于 SDN 的大致发展过程,就介绍到这里。SDN 的演进并没有结束,围绕 SDN“正主”地位的争夺也没有结束。最终谁将主导未来网络?让我们拭目以待!