引言:SDN为何会出现?是什么缘由使得学术界提出SDN?咱们为何须要SDN?若是你刚接触SDN方案时,你必定有这样的疑问。而问题的答案是:咱们须要拥有更多可编程能力的网络,来支持快速增加的网络业务需求。
本文选自《重构网络:SDN架构与实现》。程序员
众所周知,相比发展迅速的计算机产业,网络产业的创新十分缓慢。每个创新都须要等待数年才能完成技术标准化。为了解决这个问题,SDN创始人Nick McKeown教授对计算机产业的创新模式和网络产业的创新模式进行了研究和对比。在分析了计算机产业的创新模式以后,他总结出支撑计算机产业快速创新的以下三个因素。算法
计算机工业找到了一个面向计算的通用硬件底层:通用处理器,使得计算机的功能能够经过软件定义的方式来实现。编程
计算机功能的软件定义方式带来了更加灵活的编程能力,使得软件应用的种类获得爆炸式的增加。微信
计算机软件的开源模式,催生了大量的开源软件,加速了软件开发的进程,推进了整个计算机产业的快速发展,Linux开源操做系统就是最好的证实。网络
相比之下,传统的网络设备与上世纪60年代的IBM大型机相似,网络设备硬件、操做系统和网络应用三部分紧耦合在一块儿组成一个封闭的系统。这三部分相互依赖,一般隶属于同一家网络设备厂商,每一部分的创新和演进都要求其他部分作出一样的升级。这样的架构严重阻碍了网络创新进程的开展。若是网络产业能像当今计算机产业同样,也具有通用硬件底层、软件定义功能和开源模式三要素,必定能得到更快的创新速度,最终像计算机产业同样取得空前的发展。架构
正是在这种思路的影响下,McKeown教授团队提出了一个新的网络体系结构:SDN。在SDN架构中,网络的控制平面与数据平面相分离,数据平面将变得更加通用化,变得与计算机通用硬件底层相似,再也不须要具体实现各类网络协议的控制逻辑,而只须要接收控制平面的操做指令并执行便可。网络设备的控制逻辑转而由软件实现的SDN控制器和SDN应用来定义,从而实现网络功能的软件定义化。随着开源SDN控制器和开源SDN开放接口的出现,网络体系结构也拥有了通用底层硬件、支持软件定义和开源模式三个要素。从传统网络体系结构到SDN网络体系结构的演进关系以下。编程语言
因此能够看出,Nick McKeown教授在分析计算机产业创新模式的基础上,对传统网络系统的三部分功能模块进行了从新划分,在每层之间创建统一的开放接口,从而造成相似计算机架构的SDN体系结构。spa
除了从Nick McKeown教授的思路去理解为何SDN会出现之外,还能够从另一位SDN创始者Shenker教授的观点中顺藤摸瓜,进一步了解为何SDN会出现。操作系统
“为了让系统更好地工做,早期须要管理复杂性然后期须要提取简单性”是由美国学者唐·诺曼提出的系统设计理念。在这个理念的启发下,Shenker教授对现阶段的网络系统进行了分析,并得出告终论:网络发展了这么多年,仍然处于“管理复杂性”阶段,愈来愈多的网络新协议和新算法使得网络控制平面变得愈来愈复杂。可是如今的网络用户却对网络的易用性有更高的要求,但愿网络具备更多的可编程能力,从而自动化、智能化网络管理。因此对于当下的网络而言,当务之急是如何解决从“管理复杂性”阶段转变到“提取简单性”阶段的问题。
Shenker教授以计算机软件编程为例进行分析。编程语言发展初期,程序员必须处理全部底层硬件细节,整个编程方式处于“管理复杂性”阶段;后来出现的高级编程语言对底层硬件细节进行了抽象,提出了操做系统、文件系统和面向对象等抽象概念,使得编程变得更加容易。从计算机软件编程的发展中能够看出,“抽象”是完成这个转变的关键。
而对于网络而言,现有的分层协议能够看做一种数据平面抽象模型,可是控制平面依然只是网络功能和网络协议的堆砌,缺乏合适的抽象模型。因此,网络须要创建控制平面的抽象模型。
而在SDN架构中,SDN控制平面、数据平面通用抽象模型和全局网络状态视图三种抽象模型实现了包括控制平面抽象在内的网络抽象架构。SDN控制平面抽象模型支持用户在控制平面上进行编程去控制网络,而无须关心数据平面的实现细节;SDN数据平面通用抽象模型将不一样协议的匹配表整合起来,造成多字段匹配表,解决了网络协议堆砌问题;集中式的SDN控制平面也能够统计网络状态信息,提供描述网络状态的抽象模型。所以,经过进一步的抽象,SDN可使网络从“管理复杂性”阶段到“提取简单性”阶段转变,知足网络用户对易用性的需求,使网络管理更加简单,更加自动化和智能。这也是为何须要SDN的缘由之一。
对比两位SDN创始人的观点:Nick McKeown教授从“系统功能重构(Refactoring Functionality)”的角度来分析、解决当下的网络问题,而Scott Shenker教授却从“从新定义抽象(Redefining Abstractions)”的角度来尝试解决现有的网络问题。归根结底,这两种思路从不一样的角度阐述了当下网络须要更多可编程能力的事实,而这也正是为何须要SDN的真正缘由。虽然两位教授的思路不一样,但异曲同工,有殊途同归之妙。
本文选自《重构网络:SDN架构与实现》,点此连接可在博文视点官网查看此书。
想及时得到更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。