SDN网络初探

2015-11-12 sunsmile 专业

目录

1. SDN简介

2. SDN网络结构

3. SDN控制器

4. OpenFlow

5. SDN与虚拟网络、云计算

6. 参考

----------------------------------------

1. SDN简介

软件定义网络(Software Defined Network, SDN)通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。来自于不同群体的需求推动了SDN的蓬勃发展,当前的主要群体如下所示:

(1) 斯坦福SANE/Ethane项目

① 需求:提升企业网网络安全性,降低网络管理的复杂度

② 解决方案:用于企业网的集中控制管理,每个端点必须和网络进行认证,安全策略可以在单点进行控制,由网络设备负责执行策略。

(2) 校园网

① 需求:高校研究者的网络创新可以在校园网上实验而不必求助于设备提供商

② 解决方案:将网络设备的转发行为原语化,全部交由外部的计算机控制,研究者可以在基于通用操作系统的计算机上编程实现新的网络协议和转发行为,而不必修改转发面设备本身。OpenFlow由此而诞生。

(3) Google、Facebook、Yahoo!等大型网络服务提供商

① 需求:

a) 大型数据中心(10K交换机)复杂的网络管理问题。

b) 云计算技术革新带来的对网络特性新的需求很难在短时间内满足,比如TRILL协议标准化用了7年,用户希望能网络特性增加能和自己修改软件特性一样快捷。

c) IaaS服务所要求的资源调度包括对网络资源的动态按需调度,现有技术不能很好的满足。

d) 降低网络设备的成本。

② 解决方案:

a) 集中管理,网络设备即插即用、自动故障发现及流量切换、自动故障恢复处理。

b) 将网络的转发行为控制交由外部控制实体控制,并且这个外部实体是开放系统,Google、Facebook的工程师可以自己编程实现任何想要的网络特性,而不必去走提需求、标准化、测试、入网的冗长流程。

c) 网络资源池化,网络控制实体提供接口给应用,应用可以根据需要控制网络的转发行为。

d) 转发面设备标准化、同质化,将创新、差异化交给控制器软件,转发面成本如同PC一样可以大幅降低。

(4) 电信运营商

① 需求:

a) 缩短网络新功能的面市周期,希望CT创新也像互联网一样快捷、多样化。

b) 降低网络的管理成本。

② 解决方案:网络进一步软件化、通用化、集中化。


从路由器的设计上看,它由软件控制和硬件数据通道组成。软件控制包括管理(CLI,SNMP)以及路由协议(OSPF,ISIS,BGP)等。数据通道包括针对每个包的查询、交换和缓存。 如果将网络中所有的网络设备视为被管理的资源,那么参考操作系统的原理,可以抽象出一个网络操作系统(Network OS)的概念,这个网络操作系统一方面抽象了底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。这样,基于网络操作系统这个平台,用户可以开发各种应用程序,通过软件来定义逻辑上的网络拓扑,以满足对网络资源的不同需求,而无需关心底层网络的物理拓扑结构。

SDN提出控制层面的抽象,目前的MAC层和IP层能做到很好的抽象但是对于控制接口来说并没有作用,我们以处理高复杂度(因为有太多的复杂功能加入到了体系结构当中,比如OSPFBGP,组播,区分服务,流量工程,NAT,防火墙,MPLS,冗余层等等)的网络拓扑、协议、算法和控制来让网络工作,我们完全可以对控制层进行简单、正确的抽象。SDN给网络设计规划与管理提供了极大的灵活性,我们可以选择集中式或是分布式的控制,对微量流(如校园网的流)或是聚合流(如主干网的流)进行转发时的流表项匹配,可以选择虚拟实现或是物理实现。

目前,包括HPIBMCiscoNEC以及国内的华为和中兴等传统网络设备制造商都已纷纷加入到OpenFlow的阵营,同时有一些支持OpenFlow的网络硬件设备已经面世。2011年,开放网络基金会(Open Networking Foundation)在Nick等人的推动下成立,专门负责OpenFlow标准和规范的维护和发展;同年,第一届开放网络峰会(OpenNetworking Summit)召开,为OpenFlowSDN在学术界和工业界都做了很好的介绍和推广。

2. SDN网络结构

如图 1所示,部署SDN的基本元素包括:SDN交换机、SDN控制器、控制器中用于和转发设备通信的接口、通常的南向接口(使用OpenFlow通信协议)和南向接口(网络应用接口)。

(1) SDN应用

SDN设计的最可视部分就是提供服务的应用,如交换机/网络虚拟化,防火墙和数据流均衡器。(注意基于OpenFlow的负载均衡器被称为流均衡器。他们不是传统意义上的负载均衡器,因为它们不能读取数据包内容。)这些应用类似于或者等同于现在软件运行于专用硬件时所使用的应用。大多数网络技术的创新都来自SDN应用。

(2) SDN控制器

SDN控制器就像是一个整个架构的中间件。控制器必须整合网络中所有物理和虚拟设备。控制器会从与设备一起工作的SDN软件中提取物理网络设备。控制器与网络设备之间高度融合。在OpenFlow环境中,控制器会使用OpenFlow协议和NETCONF协议与交换机联系。(OpenFlow是将流数据发送到交换机的API,而NETCONF是网络配置API)


图 1 SDN网络结构示意图


(3) SDN:基础架构

在当前SDN方法中,供应商只是把应用和控制器作为单独产品提供。例如,Nicira/VMware将其应用和控制器打包到了一个单独的专属应用堆栈中。思科则通过把控制器嵌入IOS软件的方式把控制器打包到了OnePK产品中。笔者也希望思科可以在近期推出一款有分量的控制器。Big Switch Networks最近发布了SDN控制器的商用版,该产品提供的两个应用(Big Virtual SwitchBig Tap)运行于控制器之上。

显然,控制器是网络架构中的关键要素。它必须把API显示给代表着可用功能的应用,而SDN战场上这一部分的角逐也最激烈。

(4) SDN API:新的战场

一个SDN架构包含两个截然不同的网络API:北向和南向。OpenFlow是一个北向APIOpenFlow描述了一个行业标准API,这个API在以太网交换机中配置了帧转发芯片 并且定义了网络中的数据流路径。此外,开放网络基金会(ONF)作为监督OpenFlow协议的标准组织发布了一个用于设备配置的API,其名称为OF-CONFIGOF-CONFIG使用NETCONF XML数据格式定义语言。

思科的OnePK是南向API。关于OpenFlow是否能满足网络需求有些争议,特别是从基于数据包的网络转向基于数据流的网络。一些悬而未决的问题会影响到这种过渡,如与现有协议STPOSPF的互操作性问题。

北向APISDN架构中提供了一种机制呈现服务或应用。每个应用都会为网络设备开发出一个流量表视图,然后将请求发送给控制器获取网络设备的配额。

例如,一个虚拟交换应用应能够在物理和虚拟机网络的所有连接点上创建一个网络图表/数据库。在多租户的以太网中,应用可以开发一套流量规则模拟以太网VLAN,同时保持每位租户浏览的独立性。流量规则应该包含进出端口的数值,加上始发MAC地址和目的地MAC地址。

北向API,从服务到控制器都还未被定义。笔者认为可以归结为三个原因。第一,大厂商还不能找到有力的使用案例足以说服他们投资。第二,只有少部分控制器上市,还未有证据显示它们是强大的生产平台。第三,不同的应用或许要依据各自的情况通过不同API访问控制器。例如,一个防火墙应用或许需要高性能,低延时,低复杂度的数据交换,同时监控应用只需读取途经的数据。

整个行业面临多种选择。似乎ONF中会有一些论坛在不久后将推出一些指导,而IETF也通过Network Working Group发布了一些草案。

缺乏标准的API意味着软件开发者不得不对开发平台做出选择。F5 是为思科还是Big Switch的控制器做研发呢?安全公司为OpenFlow开发防火墙又会怎样?他们会选择惠普OpenFlow控制器还是为IBM?北向API必须形成一定的标准,但是其格式,性能和数据结构或许无法很好地被理解。所以在这个方面还需要有更多努力。

3. SDN控制器

SDN中,特别是OpenFlow中,控制平面和数据平面是分离的,我们可以把两者比作操作系统和计算机硬件,OpenFlow控制器(就好比操作系统)提供一个OpenFlow交换机(就好比计算机硬件)的编程接口,利用这个编程接口就可以开发网络应用,完成控制和管理任务,并提供新的功能。SDN中的控制平面,特别是OpenFlow控制平面,在逻辑上是集中化的,因此在开发网络应用的时候可以把网络视为一个系统。

控制器的控制方式有两种,应变式控制模式和主动式控制模式。在应变式模式下,每当需要作出决策时,OpenFlow交换机必须询问OpenFlow控制器,比如一个数据包流到达OpenFlow交换机时。在主动式模式下,控制器将决策的策略规则推送到交换机。

控制器的部署方式是当前研究领域的一个热点,主要分为单一控制平面和多控制平面。单一控制平面控制器的实现主要有NOXPOXBeacon(斯坦福大学)OpenDaylightLinux基金会协作项目)Big Network Controller & FloodlightSDN 初创公司Big Switch Networks),Maestro(莱斯大学),Ryu(日本NTT公司)等开源控制器,以及Helios SNAC等闭源控制器。多控制平面控制器的实现主要有HyperFlow(基于NOX的分布式控制方案),Onix2010 GoogleNEC Nicira 共同提出的一种面向大规模网络的分布式SDN 部署方案),Master/slaves(控制器可以使用任何一种,文献使用的Beacon,控制器间采用JGroups 进行通信),ASIC(清华大学)。除此之外,还有两种特殊用途的控制器:FlowVisorRouterFlow。前者在OpenFlow交换机和多个OpenFlow控制器之间提供一个透明的代理,它能够创建网络分片,并且能够将每个分片的控制权赋予不同的OpenFlow控制器。RouterFlow则能够在支持OpenFlow的硬件上提供虚拟化的IP路由,可以把RouterFlow视为一个OpenFlow控制器之上的网络应用,它由一个OpenFlow控制器应用程序、一个独立的服务器和一个虚拟网络环境组成。

SDN的这种控制转发相分离的架构,使复杂的网络管理变得越来越简单、方便,而且随着基于OpenFlow协议的SDN技术的逐渐发展与成熟,SDN越来越多的引起学术界以及工业界的关注,它在数据中心、校园网、企业网以及广域骨干网络中的应用部署越来越多。

SDN快速发展的过程中,作为其主要组成部分的控制器也在不断的发展完善,从最初的单线程NOX到现在支持多线程、多应用的各种控制器纷纷涌现,以及近年来为了解决控制平面扩展性而提出的多控制器的解决方案。

由于各种控制器在实现语言以及设计目标上各有差异,所以每种控制器都有着其优缺点。如果追求高吞吐量,可以选择Beacon;如果将控制器用于商用闭源软件,可以选择Floodlight;如果希望快速的设计开发网络应用原型,可以采用POX等等。

4. OpenFlow

SDNOpenFlow之间的关系非常紧密,但SDN Software Defined Networking)不等于OpenFlow,类似于互联网不等于IP协议,WEB体系不等于HTTP协议。OpenFlow仅是SDN中控制器控制转发平面设备的通信协议,控制器本身的架构、网络拓扑算法、运行环境、编程工具,以及上层应用的集成技术都是SDN的一部分,并且是架构上更为核心的部分。

OpenFlow最直接的前身是斯坦福大学的SANE/Ethane项目(yuba.stanford.edu/saneyuba.stanford.edu/ethane),该项目于2006年定义了用于企业网的新型网络架构。Ethane的重点是采用集中式的控制器来管理网络中的策略和安全。20084,斯坦福大学的Nick McKeown教授在ACM Communications Review上发表的一篇论文“OpenFlow: enabling innovation in campus networks”首先详细论述了OpenFlow的原理。由该论文课题可知OpenFlow提出的最初出发点是用于校园内网络研究人员实验其创新网络架构、协议,考虑到实际的网络创新思想需要在实际网络上才能更好地验证,而研究人员又无法修改在网的网络设备,故而提出了OpenFlow的控制转发分离架构,将控制逻辑从网络设备盒子中引出来,研究者可以对其进行任意的编程从而实现新型的网络协议、拓扑架构而无需改动网络设备本身。该想法首先在美国的GENI研究项目中得到应用,实现了一个从主机到网络的端到端创新实验平台,HPNEC等公司提供了GENI项目所需的支持OpenFlow的交换机设备。

OpenFlow的思路很简单,网络设备维护一个流表(FlowTable)并且只按照流表进行转发,流表本身的生成、维护、下发完全由外置的控制器(Controller来实现,注意这里的流表并非是指IP五元组,事实上OpenFlow 1.0定义的了包括端口号、VLANL2/L3/L4信息的10个关键字,但是每个字段都是可以通配的,网络的运营商可以决定使用何种粒度的流,比如运营商只需要根据目的IP进行路由,那么流表中就可以只有目的IP字段是有效的,其它全为通配。

图 2 OpenFlow交换机关键组成部分


这种控制和转发分离的架构对于L2交换设备而言,意味着MAC地址的学习由控制器来实现,V-LAN和基本的L3路由配置也由控制器下发给交换机。对于L3设备,各类IGP/EGP路由运行在控制器之上,控制器根据需要下发给相应的路由器。流表的下发可以是主动的,也可以是被动的,主动模式下,控制器将自己收集的流表信息主动下发给网络设备,随后网络设备可以直接根据流表进行转发;被动模式是指网络设备收到一个报文没有匹配的流表记录时,将该报文转发给控制器,由后者进行决策该如何转发,并下发相应的流表。被动模式的好处是网络设备无需维护全部的流表,只有当实际的流量产生时才向控制器获取流表记录并存储,当老化定时器超时后可以删除相应的流表,故可以大大节省TCAM空间。当一个控制器同时控制多个交换机/路由器设备时,它们看起来就像一个大的逻辑交换机,各个交换机/路由器硬件就如同这个逻辑网络设备的远程线卡,类似的概念在CiscoNexus 1000/1000vASR9000/9000vJuniperQ-Fabric架构中可以看到影子,Cisco称之为NV(Network Virtualization)技术。

OpenFlow 1.0的流表分为Match Fields、计数器和指令集三个部分,Match Fields是报文匹配的输入关键字,计数器是管理所需,指令集是决定报文如何转发,最基本的转发行为包括转发给某个端口、封装改写报文后转发以及丢弃。OpenFlow 1.1增加了对MPLS以及UDP/SCTP传输层协议的支持,同时针对流表开销过大的情况设计了多级流表,并增加分组策略功能。

5. SDN与虚拟网络、云计算

SDN可以通过结构化编程实现网络虚拟化,或者在网络结构(虚拟的或者物理的)中创建路径从而有效实现私有网络之间的相互隔离。但这种方式的虚拟网络要比覆盖网络方式少见,覆盖网络中的虚拟机端点只需要经过简单封装就能够在物理网络中传递。

完全的覆盖网络实现网络虚拟化的过程中可以不使用可编程流量控制,也就是集中式的,隔离的控制平面。然而,假设大多数网络虚拟化解决方案涉及到四到七层服务以及跨层网络的组合时,就需要一个可编程组件,也就是SDN

网络虚拟化(NV)

组织网络管理员无法满足网络频繁更改的请求,需要有一种方法来自动化网络以提高IT的响应能力。在这种用例,我们通常试图解决一个问题:如何在不同的逻辑域移动虚拟机(VM)?网络虚拟化通过在流量级逻辑划分网络的方式,在现有的网络中创建网络逻辑段(类似于硬盘驱动器分区)

NV是一个覆盖,是一个隧道。不是将两个域物理地连接在一个网络中,NV在现有的网络中建立隧道来连接两个域。NV是有价值的,管理员不必再在物理连接每一个新的域,尤其是对于创建虚拟机。这非常有用,因为管理员不用更改已经部署好的网络。他们得到一个新的方式来虚拟化基础设施建设,在现有的基础架构之上进行更改。

NV运行在高性能的x86平台上,其目标是允许组织能够在它们现有的基础设施独立地移动虚拟机,而不需要重新配置网络。NV适用于任何在使用虚拟机技术的组织。

网络功能虚拟化(NFV)

如果说NV提供在网络中创建隧道,并使用per-flow服务思维的能力,下一步就是将一个服务放入隧道。NFV是虚拟化第4-7层功能,如防火墙或IDPS,甚至是负载均衡(应用交付控制器)

如果管理员可以通过指向和点击鼠标设置一个虚拟机,为什么不能以同样的方式打开防火墙或IDS/IPS?这就是NFV做的事情。NFV使用最佳实践作为不同网络元素的基础策略和配置。如果你在基础设施上有特定的隧道,你可以在那条隧道添加一个防火墙或IDS/IPS

NFV也运行在高性能的x86平台上,其目的是允许人们为虚拟机或流量创建服务配置文件,并在网络(隧道)上构建抽象,然后在那个特定的逻辑环境搭建虚拟服务。一旦应用得当,NFV节省了大量手动配置和培训的时间。

NFV也减少了过度配置的需要:不是购买大可处理整个网络的防火墙或IDS/IPS,顾客可以为需要它们的具体的隧道购买功能。这样可以减少初始资本支出,但运营收益是真正的优势。

软件定义网络(SDN)

SDN使用罐装进程来配置网络。举例来说,SDN不是使用一个设备建立网络的水龙头,当用户想建立一个水龙头时,他们应该能够对网络进行编程。

SDN通过将控制平面(告诉网络要去什么地方)从数据平面(发送数据包到特定的目的地)分离,使网络可编程。它依赖于交换机的可编程,通过使用工业标准的控制协议(诸如OpenFlow)SDN的控制器。

NVNFV为物理网络添加了虚拟通道和功能,而SDN改变了物理网络,确实是配置和管理网络的一个新的外部驱动手段。一个用例可能涉及从一个1G端口移动一个大象流量到一个10G端口,或者聚集大量的老鼠流量到一个1G端口。SDN是在网络交换机上实现的,而不是在x86服务器。

小结

所有这三种类型技术的目的是解决移动性和灵活性。我们需要找到一个对网络编程的方式,并有不同的方法:NVNFVSDN

NVNFV可以在现有的网络中运行,因为它们驻留在服务器上,与发送给它们的流量交互;SDN需要一个新的网络结构,数据和控制平面是分开的。

NFV 和 SDN:区别在何处?http://www.sdnap.com/sdn-study/231.html


6. 参考

http://baike.baidu.com/view/5423131.htm

http://blog.sina.com.cn/s/blog_5385c0b901010pu3.html

http://www.zdnet.com.cn/wiki-SDN

http://www.edu.cn/sdn_12536/20130724/t20130724_992628.shtml

Siamak AzodoImolky徐磊译.软件定义网络,基于OpenFlowSDN技术揭秘.P44-45

江国龙付斌章陈明宇SDN 控制器的调研和量化分析[J]. 计算机科学与探索.2014

左青云,陈鸣,赵广松,邢长友,张国敏,蒋培成.基于OpenFlow SDN 技术研究.软件学报,2013,24(5):1078−1097. http://www.jos.org.cn/1000-9825/4390.htm

Yazıcı V, Sunay M O, Ercan A Ö. Controlling a Software-Defined Network via Distributed Controllers. 2012NEM Summit, Özyeğin University, İstanbul, Turkey, 2012

https://www.opennetworking.org/

Network Virtualization Solutions An Analysis of Solutions,Use Cases and Vendor and Product Profiles,October 2013, 

http://www.sdncentral.com/

http://networking.ctocio.com.cn/223/12856723.shtml


除非注明,科博网文章均为原创,转载请以链接形式标明本文地址 

本文地址:http://sungdm.cn/?post=24



评论:

nn
2015-11-22 10:31
这是你转的,还是你自己写的啊啊啊~~
sunsmile
2015-12-03 11:15
@nn:自己写的,怎么了
gdm
2015-12-11 21:02
@sunsmile:好腻害呀~~虽然我看不懂;-)
sunsmile
2015-12-03 11:16
@nn:用牛爷爷的话说,我是站在巨人的肩膀上

发表评论:

Powered by emlog 京ICP备15044591号-1