软件定义网络
软件定义网络(SoftwareDefinedNetwork,SDN),是由Emulex提出的一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。
中文名:软件定义网络
外文名:SoftwareDefinedNetwork,SDN
提出者:由Emulex提出
类型:一种新型网络创新架构
1、设计
从路由器的设计上看,它由软件控制和硬件数据通道组成。软件控制包括管理(CLI,SNMP)以及路由协议(OSPF,ISIS,BGP)等。数据通道包括针对每个包的查询、交换和缓存。这方面有大量论文在研究,引出三个开放性的话题,即“提速2倍”,确定性的(而不是概率性的)交换机设计,以及让路由器简单。
事实上在路由器设计方面我们已经迷失了方向,因为有太多的复杂功能加入到了体系结构当中,比如OSPF,BGP,组播,区分服务,流量工程,NAT,防火墙,MPLS,冗余层等等。个人认为,我们在20世纪60年代定义的“哑的,最小的”数据通路已经臃肿不堪。
2、优势
由于传统的网络设备(交换机、路由器)的固件是由设备制造商锁定和控制,所以SDN希望将网络控制与物理网络拓扑分离,从而摆脱硬件对网络架构的限制。这样企业便可以像升级、安装软件一样对网络架构进行修改,满足企业对整个网站架构进行调整、扩容或升级。而底层的交换机、路由器等硬件则无需替换,节省大量的成本的同时,网络架构迭代周期将大大缩短。
举个不恰当的例子,SDN技术就相当于把每人家里路由器的的管理设置系统和路由器剥离开。以前我们每台路由器都有自己的管理系统,而有了SDN之后,一个管理系统可用在所有品牌的路由器上。如果说网络系统是功能机,系统和硬件出厂时就被捆绑在一起,那么SDN就是Android系统,可以在很多智能手机上安装、升级,同时还能安装更多更强大的手机App(SDN应用层部署)。
3、对比
计算机系统的持续革新已经创造了新的抽象层,从最初的操作系统到如今的虚拟化。每次都抽象底层的硬件,同时在上层创造一个新的用于竞争和革新的平台。然而在网络方面,软硬件的功能划分就不那么清晰,正确的可编程平台变得难以捉摸,以至于我们开发了动态网络、网络处理器和软件路由。一个逐步显现的趋势指出,越来越多的网络基础设施将用数据通道之外的软件来定义。
对比计算机领域,PC工业已经找到一个简单可用的硬件底层(x86指令集)。在软件定义方面,顶层(应用程序)和底层(操作系统和虚拟化)都在爆炸式地发展。开源方面,有10万个开发者参与了标准化进程,加速了创新。可见,硬件底层+软件定义的网络+开源文化就能推动创新,网络创新亦需如此,这个底层需要我们去实现。
一个简单稳定通用的底层需要具备以下属性:
1.允许应用程序的繁荣发展。比如在因特网领域,稳定的IPv4带来了Web的繁荣;
2.允许其顶部的基础设施能用软件定义。比如因特网领域的路由协议、管理等;
3.体系结构本身能够快速创新。
4、历史
回顾网络创新的历史,在20世纪90年代中期认为“推动网络的创新,需要在一个简单的硬件数据通路上编程”,即动态网络。它的问题在于隔离性、性能、复杂度。20世纪90年代后期认为,“为了推动网络创新,我们需要底层的数据通道是可编程的”,也即网络处理器。它的问题在于加剧了数据通道底层的复杂度。事实上在网络领域,我们一直以来没有分清一个简单通用的硬件底层与一个开放的上层编程环境之间的界限。之前的尝试往往犯以下错误:
1.假设当前的IP路由底层是固定的,并试图在其外部编程,包括路由协议;
2.自上而下地定义编程和控制模型。(但事实上Intel在选择x86指令集的时候,并没有定义WindowsXP、Linux或者VMware)
5、思想
因此我们需要做以下几件事:
1.在底层和开放编程环境之间要有一个清晰的分割;
2.设计一个简单的硬件底层,能够包括和简化当前的底层;
3.极少的使用事先形成的有关底层如何被编程的想法;
4.强隔离。
在设计硬件底层方面,我们要用最少的基于流的数据通路来缓存决策,也即实现一个基于流的底层。我们需要对流进行灵活的定义,如单播、组播、导航点、负载均衡,并且支持不同类型的流的聚类;我们需要控制流,把流作为编程的实体:能对它路由、私有化、移动……我们还要吸取包交换的益处,因为它切实可行,能全局部署,而且很有效率——当然是在它很简单的时候。
综合上述考虑,我们定义了一个名为“流空间”的底层,它有以下属性:
1.后向兼容。当前的分层结构是它的一个特例,而且端点不需要修改;
2.容易在硬件上部署,比如在每个交换机上部署TCAM流表;
3.流之间能清晰分离,具有简单的几何结构,能证明哪个流能或者不能通讯。
作为底层,它有以下属性:
第一,基于流;第二,对每个流只有少量的动作,如转发给端口;转发给控制器;重写头,在流空间之间路由;根据最小/最大速率分隔带宽等;第三,外部的针对流表的开放API。
6、现状
我们开发了一个基于流的底层OpenFlow草案。我们的第一步是定义底层,即一个针对流表的开放外部API。它的1.0版本要求易于添加到现有的硬件交换机、路由器、API上,已经完成。它的2.0版本需要开发针对OpenFlow优化的硬件,以及通用的“流空间”,期限是2011年。我们的第二步是部署,首先在校园里部署,再在全美国的科研骨干网络上部署,允许研究人员*地在其顶部创新。
使用OpenFlow,我们可以静态地划分VLAN,比如将生产用和研究用的VLAN划分开来;我们可以设计自己的路由协议,比如单播、组播、多径、负载均衡;可以做接入控制、家庭网络管理、移动性管理、能量管理;包处理器(在控制器上);设计自己的IP协议;网络测量和虚拟化,比如在交换机上实现虚拟化OpenFlow。
这样我们就拥有了一个简单、可用、稳定的硬件底层,它具有可编程性,强隔离模型,支持其上的*竞争,从而加速创新。
OpenFlow已经在美国斯坦福大学、Internet2、日本的JGN2plus以及其他的10-15个科研机构中部署,计划将在2009年10月前进行规模的机构部署,应用于“GENIEnterprise”项目,并在国家科研骨干网以及其他科研和生产中应用。
7、研究进展
传统网络的层次结构是互联网取得巨大成功的关键。但是随着网络规模的不断扩大,封闭的网络设备内置了过多的复杂协议,增加了运营商定制优化网络的难度,科研人员无法在真实环境中规模部署新协议。同时,互联网流量的快速增长,用户对流量的需求不断扩大,各种新型服务不断出现,增加了网络运维成本。
SDN起源于2006年斯坦福大学的CleanSlate研究课题。2009年,Mckeown教授正式提出了SDN概念。利用分层的思想,SDN将数据与控制相分离。在控制层,包括具有逻辑中心化和可编程的控制器,可掌握全局网络信息,方便运营商和科研人员管理配置网络和部署新协议等。在数据层,包括哑的(dumb)交换机(与传统的二层交换机不同,专指用于转发数据的设备)。交换机仅提供简单的数据转发功能,可以快速处理匹配的数据包,适应流量日益增长的需求。两层之间采用开放的统一接口(如OpenFlow等)进行交互。控制器通过标准接口向交换机下发统一标准规则,交换机仅需按照这些规则执行相应的动作即可。因此,SDN技术能够有效降低设备负载,协助网络运营商更好地控制基础设施,降低整体运营成本,成为最具前途的网络技术之一。因此,SDN被MIT列为“改变世界的十大创新技术之一”。SDN相关技术研究迅速开展起来,成为近年来的研究热点。2013年,SIGCOMM会议收录了多篇相关文章,甚至将SDN列为专题来研讨,带动了SDN相关研究的蓬勃发展。
推荐阅读