软件定义网络

科技工作者之家 2020-11-17

软件定义网络(Software Defined Network, SDN ),是由Emulex提出的一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。

简介软件定义网络(Software Defined Network,SDN),是由美国斯坦福大学CLean State课题研究组提出的一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。

传统网络的世界是水平标准和开放的,每个网元可以和周边网元进行完美互联;计算机的世界则不仅水平标准和开放,同时垂直也是标准和开放的,从下到上有硬件、驱动、操作系统、编程平台、应用软件等等,编程者可以很容易地创造各种应用。

和计算机对比,在垂直方向,从某个角度来说,网络是“相对封闭”和没有“框架”的,在垂直方向创造应用、部署业务是相对困难的。但SDN将在整个网络(不仅仅是网元)的垂直方向,让网络开放、标准化、可编程,从而让人们更容易、更有效地使用网络资源。所以,SDN不能丢掉网络水平方向标准、易互通、节点智能的优势1。

设计从路由器的设计上看,它由软件控制和硬件数据通道组成。软件控制包括管理(CLI,SNMP)以及路由协议(OSPF,ISIS,BGP)等。数据通道包括针对每个包的查询、交换和缓存。这方面有大量论文在研究,引出三个开放性的话题,即“提速2倍”,确定性的(而不是概率性的)交换机设计,以及让路由器简单。

事实上在路由器设计方面我们已经迷失了方向,因为有太多的复杂功能加入到了体系结构当中,比如OSPF,BGP,组播,区分服务,流量工程,NAT,防火墙,MPLS,冗余层等等。个人认为,我们在20世纪60年代定义的“哑的,最小的”数据通路已经臃肿不堪2。

优势由于传统的网络设备(交换机、路由器)的固件是由设备制造商锁定和控制,所以SDN希望将网络控制与物理网络拓扑分离,从而摆脱硬件对网络架构的限制。这样企业便可以像升级、安装软件一样对网络架构进行修改,满足企业对整个网站架构进行调整、扩容或升级。而底层的交换机、路由器等硬件则无需替换,节省大量的成本的同时,网络架构迭代周期将大大缩短。

举个不恰当的例子,SDN技术就相当于把每人家里路由器的的管理设置系统和路由器剥离开。以前我们每台路由器都有自己的管理系统,而有了SDN之后,一个管理系统可用在所有品牌的路由器上。如果说网络系统是功能机,系统和硬件出厂时就被捆绑在一起,那么SDN就是Android系统,可以在很多智能手机上安装、升级,同时还能安装更多更强大的手机App(SDN应用层部署)。

对比计算机系统的持续革新已经创造了新的抽象层,从最初的操作系统到如今的虚拟化。每次都抽象底层的硬件,同时在上层创造一个新的用于竞争和革新的平台。然而在网络方面,软硬件的功能划分就不那么清晰,正确的可编程平台变得难以捉摸,以至于我们开发了动态网络、网络处理器和软件路由。一个逐步显现的趋势指出,越来越多的网络基础设施将用数据通道之外的软件来定义。

对比计算机领域,PC工业已经找到一个简单可用的硬件底层(x86指令集)。在软件定义方面,顶层(应用程序)和底层(操作系统和虚拟化)都在爆炸式地发展。开源方面,有10万个开发者参与了标准化进程,加速了创新。可见,硬件底层+软件定义的网络+开源文化就能推动创新,网络创新亦需如此,这个底层需要我们去实现。

一个简单稳定通用的底层需要具备以下属性:

1. 允许应用程序的繁荣发展。比如在因特网领域,稳定的IPv4带来了Web的繁荣;

2. 允许其顶部的基础设施能用软件定义。比如因特网领域的路由协议、管理等;

3. 体系结构本身能够快速创新。

历史回顾网络创新的历史,在20世纪90年代中期认为“推动网络的创新,需要在一个简单的硬件数据通路上编程”,即动态网络。它的问题在于隔离性、性能、复杂度。20世纪90年代后期认为,“为了推动网络创新,我们需要底层的数据通道是可编程的”,也即网络处理器。它的问题在于加剧了数据通道底层的复杂度。事实上在网络领域,我们一直以来没有分清一个简单通用的硬件底层与一个开放的上层编程环境之间的界限。之前的尝试往往犯以下错误:

1. 假设当前的IP路由底层是固定的,并试图在其外部编程,包括路由协议;

2. 自上而下地定义编程和控制模型。(但事实上Intel在选择x86指令集的时候,并没有定义Windows XP、Linux或者VMware)

思想如果采用的是经典的软件定义网络SDN(即网络控制和网络数据包处理相分离),要对控制器和数据平台设备以及所有控制器上的软件定义网络SDN应用进行更新。

如果采用的是以虚拟化为主的软件定义网络SDN,需要关注控制器,同时也要看护底层的虚拟化平台以及带有自己操作系统的混合的物理设备。

在这两种场景中,鉴于管理员正在改变其控制和架构网络、安全的方式,网络团队需要确保其监控工具能跟踪到最新情势。如果虚拟叠加网络创建新的安全区域,安全操作中心应该可以监测到并根据需求报告那些区域内外的活动。为此需要做以下几件事:

1. 在底层和开放编程环境之间要有一个清晰的分割;

2. 设计一个简单的硬件底层,能够包括和简化当前的底层;

3. 极少的使用事先形成的有关底层如何被编程的想法;

4. 强隔离。

在设计硬件底层方面,我们要用最少的基于流的数据通路来缓存决策,也即实现一个基于流的底层。我们需要对流进行灵活的定义,如单播、组播、导航点、负载均衡,并且支持不同类型的流的聚类;我们需要控制流,把流作为编程的实体:能对它路由、私有化、移动……我们还要吸取包交换的益处,因为它切实可行,能全局部署,而且很有效率——当然是在它很简单的时候。

综合上述考虑,我们定义了一个名为“流空间”的底层,它有以下属性:

1. 后向兼容。当前的分层结构是它的一个特例,而且端点不需要修改;

2. 容易在硬件上部署,比如在每个交换机上部署TCAM流表;

3. 流之间能清晰分离,具有简单的几何结构,能证明哪个流能或者不能通讯。

作为底层,它有以下属性:

第一,基于流;第二,对每个流只有少量的动作,如转发给端口;转发给控制器; 重写头,在流空间之间路由;根据最小/最大速率分隔带宽等;第三,外部的针对流表的开放API2。

现状我们开发了一个基于流的底层OpenFlow草案。我们的第一步是定义底层,即一个针对流表的开放外部API。它的1.0版本要求易于添加到现有的硬件交换机、路由器、API上,已经完成。它的2.0版本需要开发针对OpenFlow优化的硬件,以及通用的“流空间”,期限是2011年。我们的第二步是部署,首先在校园里部署,再在全美国的科研骨干网络上部署,允许研究人员自由地在其顶部创新。

使用OpenFlow,我们可以静态地划分VLAN,比如将生产用和研究用的VLAN划分开来;我们可以设计自己的路由协议,比如单播、组播、多径、负载均衡;可以做接入控制、家庭网络管理、移动性管理、能量管理;包处理器(在控制器上);设计自己的IP协议;网络测量和虚拟化,比如在交换机上实现虚拟化OpenFlow。

这样我们就拥有了一个简单、可用、稳定的硬件底层,它具有可编程性,强隔离模型,支持其上的自由竞争,从而加速创新。

OpenFlow已经在美国斯坦福大学、Internet2、日本的JGN2plus以及其他的10-15个科研机构中部署,计划将在2009年10月前进行规模的机构部署,应用于“GENI Enterprise”项目,并在国家科研骨干网以及其他科研和生产中应用。

研究进展传统网络的层次结构是互联网取得巨大成功的关键。但是随着网络规模的不断扩大,封闭的网络设备内置了过多的复杂协议,增加了运营商定制优化网络的难度,科研人员无法在真实环境中规模部署新协议。同时,互联网流量的快速增长,用户对流量的需求不断扩大,各种新型服务不断出现,增加了网络运维成本。

SDN起源于2006年斯坦福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念。利用分层的思想,SDN将数据与控制相分离。在控制层,包括具有逻辑中心化和可编程的控制器,可掌握全局网络信息,方便运营商和科研人员管理配置网络和部署新协议等。在数据层,包括哑的(dumb)交换机(与传统的二层交换机不同,专指用于转发数据的设备)。交换机仅提供简单的数据转发功能,可以快速处理匹配的数据包,适应流量日益增长的需求。两层之间采用开放的统一接口(如OpenFlow等)进行交互。控制器通过标准接口向交换机下发统一标准规则,交换机仅需按照这些规则执行相应的动作即可。因此,SDN技术能够有效降低设备负载,协助网络运营商更好地控制基础设施,降低整体运营成本,成为最具前途的网络技术之一。因此,SDN被MIT列为“改变世界的十大创新技术之一”。SDN相关技术研究迅速开展起来,成为近年来的研究热点。2013年,SIGCOMM会议收录了多篇相关文章,甚至将SDN列为专题来研讨,带动了SDN相关研究的蓬勃发展3。

本词条内容贡献者为:

孔祥杰 - 副教授 - 大连理工大学软件学院

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。