网站首页 > 技术文章 正文
2006年,美国斯坦福大学启动了一个名叫Clean Slate的研究课题。
该课题由美国GENI项目资助,目的非常明确且宏大,就是——“重塑互联网”。
当时的互联网,已经历经了30多年的高速发展,从最初的小型专用局域网络,变成了空前庞大和复杂的世界级网络。
网络规模的持续扩张,网络设备的不断增加,超过了早期设计的承受能力,也使得网络维护变得举步维艰。
于是,专家们开始探讨未来网络的可能性架构,希望在互联网崩溃之前,将它拉回正轨。而GENI项目和Clean Slate课题,就是这些尝试之一。
2007年,斯坦福大学博士生Martin Casado等人提出了关于网络安全与管理的项目——Ethane。
该项目试图通过一个集中式的控制器,将网络管理人员制定的安全控制策略,下发到各个网络设备中,从而实现对整个网络的安全控制。
2008年,Clean Slate课题的项目负责人,斯坦福大学教授Nick McKeown及其团队,受到Ethane项目的启发,提出了OpenFlow的概念,并发布了那篇经典的文章——《OpenFlow : Enabling Innovation in Campus Networks(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网络的链路带宽利用率提高了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控制器。
OpenDaylight提出,SDN不等于OpenFlow,人们需要对SDN进行“重新定义”。
也就是说,OpenDaylight强调SDN控制器不仅仅局限于OpenFlow,而是应该支持多种南向协议。
同时,OpenDaylight还强调,应该用分布式的控制平台,取代单实例的控制器。这样可以管理更大的网络,提供更强劲的性能,还能增强系统的安全性和可靠性。
OpenDaylight成立之后,成员数量增长迅速。但实际上,各个成员都有自己的小算盘。
Cisco就不用说了,作为OpenDaylight项目的牵头人,它主导了其中大部分项目的开发。Cisco也一直想推自家的OpFlex上位。
除了Cisco之外,Big Switch推出Big Network Controller以及对应的开源版本Floodlight。Juniper推出的是Contrial以及对应的开源版本OpenContrial。
总而言之,这一时期各种各样的SDN控制器处于百家争鸣的状态,发展势头一片大好。
仗着人多势众,OpenDaylight也成了行业里最具影响力的技术组织之一。
就在OpenDaylight风光无限的时候,又杀出了一个搅局者。
2014年12月5日,ON.Lab推出了一款创新性的网络操作系统——ONOS(Open Network Operating System),对OpenDaylight发起了强有力的挑战。
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“正主”地位的争夺也没有结束。最终谁将主导未来网络?让我们拭目以待!
参考文献:
1、《谈谈大家想知道的、不知道的SDN》,谭培龙
2、《重构网络: SDN 架构与实现》,杨泽卫, 李呈
3、《SDN是什么》,李宗标
4、《SDN网络构架及发展历史》, 李呈
5、《SDN是什么依然值得讨论》,杨泽卫
- 上一篇: 极简的wrk安装和使用教程
- 下一篇: 多通道输出可调的PCM信号源设计
猜你喜欢
- 2024-12-31 Redis 持久化策略浅析
- 2024-12-31 Kubernetes计算资源管理
- 2024-12-31 Netcat - 你需要知道的一切
- 2024-12-31 多通道输出可调的PCM信号源设计
- 2024-12-31 极简的wrk安装和使用教程
- 2024-12-31 Systrace 的原理、流程及定制
- 2024-12-31 基于FIMC接口的CMOS摄像头驱动分析与设计
- 2024-12-31 Linux 内核中的 Device Mapper 机制
- 2024-12-31 如何利用 Docker 环境加速 Android 应用的构建
- 2024-12-31 「技术干货」一文搞懂Linux内核initrd技术
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)