• 文章名称:Software-Defined Networking: A Comprehensive Survey
  • 文章来源:Proceedings of the IEEE ( Volume: 103 , Issue: 1 , Jan. 2015 ) Page(s): 14 - 76

Abstract:

互联网推动了一个数字社会的诞生,这个数字社会里互联网几乎将所有东西都连接起来,并且实现从任何地方进行访问。尽管传统的IP网络被广泛采用,但有其复杂性并且管理难度很大,想根据预先定义的策略配置网络、重新配置网络以响应故障、负载和更改都很困难,又因为当前的网络是垂直整合的(控制层和数据层被捆绑在一起),这也使得事情难上加难。

软件定义网络(SDN)是一种新兴的模式,它通过打破垂直整合,将网络的控制逻辑与底层路由器和交换机分离,促进网络控制的逻辑集中,并引入编程网络的能力。将网络策略的定义、交换硬件中的实现和流量转发三者分离,是实现所需灵活性的关键,通过这种策略可以将网络控制问题分解为可处理的部分。SDN易于创建和引入网络抽象概念,简化网络管理,促进网络演进。

本文对SDN进行了一个全面的综述,首先介绍了SDN产生的动因,解释了SDN的主要概念以及它与传统网络区别、根源以及与这一新范式相关的标准化活动。接下来,我们将使用自下而上的分层方法介绍SDN基础设施的关键构建块。我们深入分析了硬件基础设施南向和北向的api、网络虚拟化层、网络操作系统(SDN控制器)、网络编程语言网络应用程序。我们还研究跨层问题,如调试和故障排除。为了预测这种新模式的未来发展,我们讨论了SDN正在进行的主要研究工作和挑战。特别是,我们讨论了交换机和控制平台的设计,重点放在弹性、可扩展性、性能、安全性和可靠性——以及运营商传输网络和云提供商的新机遇。最后,我们分析了SDN作为软件定义环境的关键使能器的地位。

垂直整合(Vertical Integration):一个产品从原料到成品,最后到消费者手中经过许多阶段。如果一个公司原本负责某一阶段,当公司开始生产过去由其供货商供应的原料,或当公司开始生产过去由其所生产原料制成的产品时,谓垂直整合。垂直整合是指合并两个在生产过程中处于不同层次的业务,它是一种提高或降低公司对于其投入和产出分配控制水平的方法。)

1.Introduction:

路由器和交换机内部运行的分布式控制传输网络协议是使信息以数字包的形式在世界各地传播的关键技术。尽管传统的IP网络被广泛采用,但其复杂且难以管理——要表示所需的高级网络策略,网络运营商需要使用低级命令(通常是特定于供应商的命令)分别配置每个网络设备。除了配置的复杂性之外,网络环境还必须承受故障的动态性和适应负载的变化。在当前的ip网络中,自动重构和响应机制实际上是不存在的。因此,在这样一个动态的环境中执行所需的策略是非常具有挑战性的。更为复杂的是,目前的网络也是垂直整合的。控制平面和数据平面捆绑在网络设备中,降低了灵活性,阻碍了网络基础设施的创新和发展。从ipv4到ipv6的过渡,十多年前就开始了,但是到现在还基本上没有完成。ipv6实际上只是一个协议更新,但是由于目前IP网络的惯性,一个新的路由协议需要5到10年的时间才能完全设计、评估和部署。同样,改变互联网架构的全新方法(例如,替换IP)被认为是一项艰巨的任务并且在实践中根本不可行。最终,这种情况造成运营IP网络的资本和运营费用无法得到有效降低。

软件定义的网络(SDN)是一种新兴的网络模式,有望改变当前网络基础设施的局限性。首先,它通过将网络的控制逻辑(控制平面)与转发流量的底层路由器和交换机(数据平面)分离,打破了垂直集成。其次,随着控制平面和数据平面的分离,网络交换机成为简单的转发设备,控制逻辑在逻辑集中的控制器(或网络操作系统)中实现,简化了策略实施,减少了网络(重新)配置的响应时间,推动了网络的演进。

这个架构的简化视图如图1所示:

必须强调的是:逻辑上集中的编程模型并不假定物理上集中的系统。事实上,需要保证足够的性能、可伸缩性和可靠性,这就排除了这种解决方案。相反,生产级SDN网络设计采用物理分布式控制平面。通过交换机和SDN控制器之间定义良好的编程接口,可以实现控制平面和数据平面的分离。控制器通过这个定义良好的应用程序编程接口(API)对数据平面元素中的状态进行直接控制,如图1所示。

这种api最显著的例子是Openflow。

openflow交换机有一个或多个数据包处理规则表(flow table)。每个规则都匹配通信量的一个子集,并对通信量执行某些操作,包括丢弃、转发、修改等。根据控制器应用程序安装的规则,Openflow交换机可以在控制器的指示下像路由器、交换机、防火墙一样工作,或者执行其他角色例如负载平衡器、流量整形器。(通常是中间盒的角色)

SDN原则的一个重要结果是,分离了网络策略的定义、它们在交换硬件中的实现流量转发,这种分离是实现所需灵活性的关键,它可以将网络控制问题分解成可处理的部分,并使创建和引入网络中的新抽象变得更容易,简化了网络管理,促进了网络的发展和创新。尽管SDN和Openflow最初是学术实验,但在过去几年里,它们在业界获得了巨大的吸引力。现在,大多数商业交换机供应商都在其设备中支持Openflow API。我们将交替使用这两个术语。SDN势头强劲,足以使谷歌、脸谱网、雅虎、微软、Verizon和德意志电信基金开放网络基金会(ONF)都想要通过开放标准开发和推广SDN。随着对SDN可伸缩性的最初关注被解决,特别是逻辑集中化意味着物理集中化控制器,SDN控制器的出现代表着SDN思想已经成熟,并从学术实践发展到商业成功。例如,谷歌已经部署了一个软件定义的网络,将其全球数据中心互连起来,这一生产网络已经部署了3年并帮助公司提高了运营效率、显著降低了成本。VMware的网络虚拟化平台NSX就是另一个例子,NSX是一个商业解决方案——在软件中提供了一个功能齐全的网络,完全基于SDN原则,独立于底层网络设备进行配置。最后一个例子是世界上最大的IT公司(从运营商和设备制造商到云提供商和金融服务公司)最近加入了SDN联盟,如ONF和OpenDaylight所倡议的一样,这也从工业视角表明了SDN的重要性。

最近的几篇论文调查了SDN的具体架构方面。Openflow的概述和简短的文献综述可以在底下的引用文献中找到,这些面向openflow的调查提供了一个相对简单的三层堆栈模型,由高级网络服务控制器控制器/交换机接口组成,进一步提出了SDN的分类法。然而,与之前的研究类似,该调查在范围上是有限的,并没有对SDN的基本方面进行深入的探讨——从本质上说,现有的调查缺乏对SDN的基本构造块,如网络操作系统、编程语言和接口的调查,对它们在跨层问题(如可伸缩性、安全性和可靠性)的分析上也有不足,更没有对正在进行的研究工作、挑战和相关标准化活动的相对完整的概述。

因此,在这篇文章中,我们将提出了SDN到目前为止就我们所知的最全面的文献调查,并按图2所示组织此调查。

在接下来的两个部分中,我们将通过解释上下文、介绍SDN产生的目的并解释这种新范式的主要概念以及它与传统网络的区别。我们在调查的早期部分的目的也是为了解释SDN并不像技术进步那样新颖——事实上它的存在根植于一系列“旧”观念、技术驱动力以及当前和未来需求的交叉点。SDN的基本概念,即控制平面和数据平面的分离、转发决策所依据的流抽象、网络控制的(逻辑)集中以及网络编程的能力本身并不新颖。然而,将已经测试过的概念与最近的网络趋势结合起来,才是导致这种网络范式的转变的原因。

由于SDN能够从多个角度改变网络现状的潜力,业界对SDN高度地关注,围绕SDN的一些标准化工作也正在进行,第四节是本次调查的核心,介绍了一个广泛而复杂的、使用自下而上的分层方法重新全面分析SDN基础设施的构建块。分层方法的选择是基于这样一个事实:SDN允许沿着两个基本概念思考网络,一是关注点的分离(利用抽象概念),二是递归

我们的分层自底向上的方法将网络问题分为八个部分:(1)硬件基础设施(2)南向接口(3)网络虚拟化(转发设备和网络操作系统之间的管理程序层)(4)网络操作系统(SDN控制器和控制平台)(5)北向接口(为上层提供通用的编程抽象,主要是网络应用)(6)使用专用库或编程语言和编译器提供的切片技术进行虚拟化,(7)网络编程语言(8)网络应用

此外我们还研究跨层问题,如调试和故障排除机制,讨论正在进行的研究工作、挑战、未来的工作和机遇

2.State of quo in “computer networking” and motivation for SDN:

计算机网络可以分为三个功能平面:数据控制管理平面,如图3。

数据平面对应于负责有效地转发数据的网络设备。控制平面表示用于填充数据平面元素的转发表的协议。管理平面包括软件服务,例如基于SNMP的工具,用于远程监视和配置控制功能。网络策略在管理平面中定义,控制平面强制执行该策略,数据平面通过相应地转发数据来执行该策略。

在传统的IP网络中,控制平面和数据平面紧密耦合,嵌入在同一网络设备中,整个网络结构高度分散。这在早期的互联网设计中被认为是很重要的:在当时它似乎是保证网络弹性的最佳方法,确实,随着线路速率和端口密度的快速增加,这种方法在网络性能方面非常有利。

虽然早期互联网设计中上述方法非常有效,但是,这也造就了一个非常复杂和相对静态的体系结构,这也是传统网络僵化、管理和控制复杂的根本原因。在一个垂直整合的行业中,创新是非常困难的。

网络错误配置和相关错误在当今网络中极为常见,例如,在BGP路由器中已经累计观察到超过1000个配置错误。单个配置错误的设备可能导致包丢失、转发循环、设置意外路径或违反服务合同等问题。事实上,一个配置错误的路由器虽然很少见,但却能在几个小时内损害整个互联网的正确运行。为了支持网络管理,少数供应商提供专用硬件、操作系统和控制程序(网络应用程序)这样的专有解决方案。但是网络运营商必须获得不同的管理解决方案和相应的专业团队,建设和维护网络基础设施的资本和运营成本高,投资周期长,阻碍了创新和新功能和服务的添加(例如访问控制、负载平衡、能源效率、交通工程)。为了缓解网络中缺乏路径内功能的问题,大量的专用组件和中间盒,如防火墙、入侵检测系统和深度包检查引擎,在当前的网络中涌现。最近,在对57个企业网络的调查中,中间盒的数量已经与当前网络中的路由器数量持平,尽管有助于实现路径功能,但中间盒的网络效应却增加了网络设计及其运行的复杂性

3.WHAT IS SOFTWARE-DEFINED NETWORKING:

SDN一词最初是斯坦福大学(stanford university)所提出的,用来表示关于openflow的思想和工作。如最初定义的,SDN是指数据平面中的转发状态被与之分离的远程控制平面所管理的网络体系结构。但是网络行业已经开始从最初的SDN观点转变,将任何涉及软件的内容都称为SDN。因此,我们试图对软件定义网络提供一个不那么模棱两可的定义。

我们将SDN定义为具有四个支柱的网络体系结构:

  • 控制平面和数据平面分离
  • 转发决策是基于流的,而不是基于目的地
  • 控制逻辑转移到外部实体,即所谓的SDN控制器或网络操作系统(NOS)
  • 网络可通过运行在与底层数据平面设备交互的NOS上的软件应用程序进行编程

控制逻辑的集中化提供了一些额外的好处:

  • 首先,与低层特定于设备的配置相比,通过高级语言和软件组件修改网络策略更简单、更不容易出错。
  • 其次,控制程序可以自动地对网络状态的虚假变化做出反应,从而保持高级策略的完整性。
  • 第三,将控制逻辑集中在具有网络状态全局知识的控制器中,简化了更复杂的网络功能、服务和应用程序的开发。

遵循被引用文献中引入的SDN概念,SDN可以由三个基本抽象来定义:(1)转发(2)分布(3)规范。事实上,抽象是计算机科学和信息技术研究的基本工具,已经成为许多计算机体系结构和系统的普遍特征。

  • 转发抽象:理想情况下,转发抽象应该允许网络应用程序(控制程序)的任何转发行为,同时隐藏底层硬件的详细信息。Openflow是这种抽象的一个实现,可以看作是操作系统中的“设备驱动程序”
  • 分布式抽象:分布式抽象应该保护SDN应用不受分布式状态的影响,使分布式控制问题成为一个逻辑上集中的问题,它的实现需要一个公共的分布层。在SDN中,分布层位于NOS中,这一层有两个基本的功能。首先,它负责在转发设备上安装控制命令。其次,它收集转发层(网络设备和链接)的状态信息,为网络应用程序提供全局网络视图。
  • 规范抽象:规范抽象应该允许网络应用程序表达所需的网络行为,而不必负责实现该行为本身,可以通过虚拟化解决方案以及网络编程语言来实现。这些方法将应用程序基于简化抽象网络模型表示的抽象,映射到SDN控制器公开的全局网络视图的物理配置中。

图4描述了SDN体系结构、概念和构建块。

如前所述,控制平面和数据平面之间的强耦合使得向传统网络添加新功能变得非常困难。如图5所示,控制平面和数据平面的耦合使得开发和部署新的网络功能(例如,路由算法)非常困难,因为它意味着要安装新固件,在某些情况下进行硬件升级。因此,新的网络特性通常是通过昂贵的、专门的和难以配置的设备(也称为中间盒)引入的,例如负载平衡器、入侵检测系统(IDS)和防火墙等。这些中间盒需要战略性地放置在网络中,也使得以后更改网络拓扑、配置和功能变得更加困难。

而SDN将控制平面与网络设备分离,并成为一个外部实体——网络操作系统SDN控制器。这种方法有几个优点:

  • 由于可以共享控制平台或网络编程语言提供的抽象,因此编程这些应用程序变得更容易。
  • 所有应用程序都可以利用相同的网络信息(全球网络视图),从而在重新使用控制平面软件模块的同时,可以做出更加一致和有效的策略决策。
  • 这些应用程序可以从网络的任何部分执行操作(即重新配置转发设备)。因此,没有必要设计一个关于新功能位置的精确策略。
  • 不同应用程序的集成变得更加简单。例如,负载平衡和路由应用程序可以按顺序组合,负载平衡决策优先于路由策略。

Terminology

为了尽可能明确地识别SDN的不同元素,文章介绍了在整个工作中使用的基本术语:

  • 转发设备(FD):执行一组基本操作的基于硬件或软件的数据平面设备。
  • 数据平面(dp):转发设备通过无线信道或有线电缆互连,网络基础设施包括表示数据平面的互连转发设备。
  • 南向接口(si):由南向api定义的转发设备的指令集,它是南向接口的一部分。
  • 控制平面(cp):转发设备由控制平面元件通过定义良好的南向接口实施编程。
  • 北向接口(ni):网络操作系统可以为应用程序开发人员提供api,这个api表示一个北向接口。
  • 管理平面(MP):管理平面是利用北向接口提供的功能来实现网络控制和操作逻辑的应用程序集

Alternative and Broadening Definitions

自2010年成立以来,最初以openflow为中心的sdn术语的范围不断扩大。

控制平面/代理sdn:一种网络方法,它保留了现有的分布式控制平面,但提供了新的api,允许应用程序与网络双向。

sdn控制器:通常称为编排平台,充当应用程序和网络元素之间的代理。

overlay sdn:一种网络方法,其中网络边缘被动态编程,用以管理程序和网络交换机之间的隧道,引入一个overlay网络。

Standardization Activities

History of Software-Defined Networking

尽管SDN是一个相当新的概念,但SDN利用了具有较长历史的网络思想,特别是它建立在可编程网络,如主动网络、可编程ATM网络上的工作,以及控制和数据平面分离的建议。

4.SOFTWARE-DEFINED NETWORKS: BOTTOM-UP:

SDN体系结构可以描述为不同层的组合,如上图(b)所示,每一层都有自己的特定功能

Layer I: Infrastructure

sdn基础设施类似于传统网络,由一组网络设备(交换机、路由器和中间盒设备)组成。主要的区别在于,那些传统的物理设备现在是简单的转发元件,没有嵌入式控制或软件来进行自主决策。网络智能从数据平面设备移除到逻辑集中控制系统,即网络操作系统和应用程序。更重要的是,这些新网络建立在开放的标准接口(例如openflow)之上,这是确保不同数据和控制平面设备之间的配置、通信兼容性和互操作性的关键方法。

Layer II: Southbound Interfaces

南向接口(或南向api)是控制和转发元素之间的连接桥梁,因此是明确分离控制和数据平面功能的关键工具,这些api仍然与底层物理或虚拟基础设施的转发元素紧密相连。南向api是引进和接受任何新网络技术的主要障碍之一,有鉴于此,诸如openflow这样的sdn southerbound api提议的出现受到了业内许多人的欢迎。这些标准促进了互操作性,允许部署与供应商无关的网络设备,这已经通过来自不同供应商的支持openflow的设备之间的互操作性得到了证明,截至该文撰写之时,openflow是sdn中被最广泛接受和部署的开放南向标准。

该部分还介绍了除了openflow之外的一些协议,例如ovsdb、pof、opflex等等。

Layer III: Network Hypervisors

虚拟化已经是现代计算机中的一种整合技术,虚拟机监控程序允许不同的虚拟机共享相同的硬件资源。在云基础设施服务(iaas)中,每个用户都可以拥有自己的虚拟资源,从计算到存储。这使得新的收入和业务模式成为可能,在这种模式下,用户可以以相对较低的成本按需分配来自共享物理基础设施的资源。同时,供应商也更好地利用其已安装的物理基础设施的容量,在不显著增加资本支出和运营成本的情况下创造新的收入。

不顺利的是,虚拟化在实践中只有部分被实现了,尽管在虚拟化计算和存储元素方面有了很大的进步,但网络仍然主要是以逐箱的方式进行静态配置的。网络需求主要可以通过两个维度来获取:网络拓扑和地址空间。对于网络拓扑而言,一般需要扁平的二级或三级服务,或者更复杂的四级到七级服务来实现高级功能,而目前单一的物理拓扑很难支持应用和服务的不同需求。同样,地址空间在当前网络中也很难改变。因此,如今虚拟化工作负载必须在物理基础设施的同一地址上运行,很难保持原有的网络配置,虚拟机无法迁移到任意位置,寻址方案固定且难以更改。

因此,为了提供完全的虚拟化,网络应该提供与计算层类似的属性,网络基础设施应该能够支持任意的网络拓扑和寻址方案,每个租户都应该能够同时配置计算节点和网络。

Layer IV: Network Operating Systems / Controllers

传统操作系统提供抽象(例如高级编程api)来访问低级设备,管理对底层资源如硬盘、网络适配器、cpu、内存等的并发访问,并提供安全保护机制。而相比之下,迄今为止网络的管理和配置却都是使用较低级别、特定于设备的指令集和大多数封闭的专有网络操作系统,如Cisco IOS和Juniper Junos。

SDN承诺通过网络操作系统(nos)提供的逻辑集中控制来促进网络管理,并减轻解决网络问题的负担。与传统操作系统一样,nos的关键价值在于为开发人员提供抽象、基本服务和通用应用程序编程接口(api)。网络状态和网络拓扑信息、设备发现和网络配置分发等通用功能可以作为NOS的服务提供。使用NOS,开发人员不再需要关心数据分发的低级细节。nos是SDN体系结构中的关键元素,因为它是控制逻辑(应用程序)根据网络运营商定义的策略生成网络配置的关键支持部件。

Layer V: Northbound Interfaces

北行界面是SDN生态系统的两个关键抽象。南向接口已经是一个被广泛接受的建议,例如openflow,但是一个通用的北向接口仍然是一个开放性的问题。现在定义一个标准的北向接口可能还为时过早,因为用例仍在开发中。但无论如何,随着sdn的发展,应该会出现一个通用的北向接口。

北向接口主要是一个软件生态系统,而不是像南向接口那样的硬件生态系统。

Layer VI: Language-based Virtualization

虚拟化解决方案的两个基本特性是表示模块性和允许不同级别的抽象,但同时仍然保证所需的属性,如保护。虚拟化技术可以允许对单个物理基础设施的不同视图,例如一个虚拟的“大交换机”可以表示几个底层转发设备的组合,这从本质上简化了应用程序开发人员的任务,因为他们不需要考虑必须安装转发规则的交换机序列,而是将网络看作一个简单的“大交换机”。这种抽象大大简化了复杂网络应用程序(如高级安全相关服务)的开发和部署。

pyretic与静态切片。

Layer VII: Programming languages

几十年来,编程语言一直在飞速发展。学术界和工业界都从低级硬件特定的机器语言(如x86架构的汇编)发展到高级和强大的编程语言,如Java和Python。类似地,网络中的可编程性开始从低级机器语言如openflow转向其他高级编程语言。由于openflow和pof这样的汇编语言本质上还是模仿转发设备的行为,迫使了开发人员花太多时间在底层细节上,而不是在问题解决上。

在SDNs中,可以设计和使用高级编程语言去:

  • 创建更高层次的抽象,简化转发设备的编程任务
  • 为网络软件程序员提供更高效、更专注于问题的环境,加快开发和创新
  • 在网络控制平面上促进软件模块化和代码重用
  • 促进网络虚拟化的发展。

在SDNs中使用编程语言可以更好地解决一些挑战:通常,每个应用程序根据自己的需要和策略生成规则,不需要进一步了解其他应用程序生成的规则。因此,转发设备中可能会生成并安装冲突规则,这可能会给网络操作带来问题。编程语言和运行时系统可以帮助解决这些本来很难预防的问题。高级编程语言可以作为实现和提供SDN不同的重要属性和功能(如网络范围结构、分布式更新、模块化组合、虚拟化、形式验证等)抽象的强大工具。低级指令集有几个问题,为了解决其中的一些,人们提出了更高层次的编程语言,其目标是多种多样的,例如:

  • 避免像传统的网络配置方法那样,低层次和特定于设备的配置和依赖性在网络中传播;
  • 提供通过易于理解和维护的网络策略实现不同管理任务的抽象
  • 多个任务(如路由、访问控制、流量工程)的分离
  • 实现更高级别的编程接口,避免低级别的结构集
  • 自动解决转发规则问题,例如可以防止触发交换机事件的冲突或不完整规则
  • 解决分布式系统固有的不同竞争条件问题
  • 增强冲突解决技术具有分布式决策者的环境上的问题
  • 在数据平面路径设置上提供本机容错能力
  • 减少处理新流的延迟
  • 简化有状态应用程序(如有状态防火墙)的创建
  • 编程语言还可以提供专门的抽象来处理其他管理需求,例如监视

另一个最重要的方面是编程语言的可移植性,这是开发人员不必为不同的控制平台重新实现应用程序所必需的。编程语言的可移植性可以被认为是控制平面生态系统的一个重要附加值。SDN提出了几种编程语言,绝大多数人提出了支持openflow的网络的抽象。

Layer VIII: Network Applications

网络应用可以看作是“网络大脑”,它们实现了控制逻辑,这些控制逻辑将转换为安装在数据平面中的命令,指示转发设备的行为。现有的网络应用程序既执行传统的功能,如路由、负载平衡和安全策略实施,也探索新的方法,如降低功耗。网络应用的多样性,结合实际的用例部署,有望成为推动sdn广泛采用的主要力量之一。

尽管用例种类繁多,但大多数sdn应用程序可以分为五类:

  • 流量工程
  • 移动性和无线
  • 测量和监控
  • 安全性和可靠性
  • 数据中心网络

该部分总结了上述几个应用程序的分类,说明了它们的主要用途、实现/评估它的控制器以及使用的南行API。

Cross-layer issues

在本节中,文章主要讨论跨层问题,如调试和故障排除、测试、验证、模拟和仿真。

调试和故障排除调试和故障排除一直是计算基础设施、并行和分布式系统、嵌入式系统和桌面应用程序中的重要课题。用于调试和故障排除的两种主要策略是运行时调试(例如,类似gdb的工具)和事后分析(例如,跟踪、回放和可视化)。在传统网络中,工程师和开发人员必须使用ping、traceroute、tcpdump、nmap、netflow和snmp统计等工具进行调试和故障排除,用这种原始工具调试复杂的网络是非常困难的。sdn引入的灵活性和可编程性确实为开发更好的工具来调试、故障排除、验证和测试网络开辟了新的途径,支持openflow的网络的早期调试工具,如ndb、ofrewind和netsight,可以更容易地发现网络问题的根源,如设备固件故障、流规则不一致或不存在、无法访问和路由错误。

验证和测试工具可以补充调试和故障排除。研究表明,验证技术可用于检测和避免sdn中的问题,如转发环路和黑洞。验证可以在不同的层(在控制器、网络应用程序或网络设备上)进行。此外,如果网络模型可用,则可以正式验证不同的网络属性(主要是拓扑特定的属性),这些属性的例子有连通性、循环自由度和访问控制,还提出了一些工具来通过模拟大规模网络的负载来评估openflow控制器的性能。

模拟和仿真软件对于快速成型和测试尤其重要,无需昂贵的物理设备。mininet是第一个提供了一种快速简便的方法来原型化和评估SDN协议和应用程序的系统。mininet的关键特性之一是在虚拟化容器中使用基于软件的openflow开关,提供与基于硬件的openflow开关完全相同的语义。

5.ONGOING RESEARCH EFFORTS AND CHALLENGES:

该文章调查的研究进展旨在克服实现SDN愿景和实现SDN承诺的挑战,虽然第上一章中提供了跨越“SDN堆栈”各层的视角,但作者认为本章重点介绍对于充分发挥sdn的潜力非常重要,因此值得在本次调查中进行具体报道。

Switch Designs

当前可用的openflow交换机非常多样化,在功能集、性能、解释和遵守协议规范、架构上都非常具有多样化。异构实现的实现选择对交换机的行为、准确性和性能有着根本性的影响,从流计数器行为的差异到许多其他性能指标。适应这种异构性的一种方法便是通过nosix,这是一种可移植的api,它将应用程序期望与交换机异构性分离开来。

  • Flow Table Capacity

流匹配规则存储在网络设备内的流表中,一个实际的挑战是为交换机提供大型高效的流表来存储规则。tcam是保存流表的常见选择,尽管在匹配能力方面灵活高效,但tcam成本高昂,而且通常容量很小。

  • Performance

如今,商用openflow交换机的吞吐量从每秒38到1000个flow-mod不等,大多数设备的吞吐量低于每秒500个flow-mod。这显然是一个限制因素,因此在交换机设计过程中加以解决,支持现有产品线中的openflow更多的是一项改进活动,而不是一项干净的功能规划和实施活动。解决这个问题的一种方法是在交换机中添加更强大的CPU,或者重新考虑外部控制器和交换机内的openflow代理之间的控制操作分布。我们目前的理解表明,一个有效的前进方向是根据南向api标准化活动的演变来设计sdn交换机。

  • Evolving Switch Designs &.

与任何软件、硬件创新周期一样,从硬件的角度来看需要取得一些进步以提高sdn的能力和性能。新的sdn交换机设计以各种硬件组合出现,以便与tcam有效地协同工作。这些早期的工作表明,需要为将来的sdn交换设备在新的硬件架构中投入更多的精力。

该部分主要说不断发展的交换机设计和硬件增强。

  • Native SDN Switch Designs

到目前为止,大多数sdn交换机的设计工作都遵循一种进化的方法,按照交换机或者路由器设计和整合技术上的共同智慧,将openflow特定的可编程特性改造成现有的硬件布局。与此方法不同的是,2.01 34版本正在进行转发变形的工作,这是一个可重构的匹配表模型,灵感来自应用于交换芯片的类似risc的流水线结构。这项工作说明了在硬件中实现一组最小的动作原语以实现灵活的报头处理的可行性,几乎不需要额外的成本或功耗。

Controller Platforms

在sdn模型中,控制器平台是体系结构的一个关键支柱,因此业界也正在努力将sdn控制器转变为高性能、可扩展、分布式、模块化和高可用的程序员友好软件,特别是分布式控制器平台,以应对各种挑战。值得特别考虑的是转发设备和控制器实例之间的延迟、容错、负载平衡、一致性和同步等问题,运营商还应能够观察和理解不同功能和模块的组合如何影响其网络。

  • Modularity & Flexibility

一系列正在进行的研究工作的目标是控制器的模块化和灵活组合。例如raon提出了openflow控制器的递归抽象,其中每个控制器将下面的控制器看作openflow开关。开放的研究问题包括定义这样一个控制器层次中不同层之间的合适接口。在这方面存在有待进一步研究的其他开放问题,如东、西向api,以及它们在实现可伸缩性、模块性和安全性的适当分层设计中的使用。

  • Interoperability and application portability

与源于标准南向接口的转发设备供应商的不可知论类似,促进控制器之间的互操作性也很重要。早期针对更具互操作性的控制平台的倡议包括可移植编程语言,如Pyretic和控制器之间的东、西向接口,如SDNI、Forces CE-CE接口和Forces内部机制。然而,这些努力还远远没有完全实现控制器的互操作性和应用程序的可移植性。

  • High-Availability

在生产中,sdn控制器需要在来自其宿主应用程序的不同目标的压力下保持正常运行。为了处理基于控制器的解决方案的潜在风险向量,需要许多进展。另一个核心挑战涉及分布式sdn控制器中状态分布的一致性模型、控制应用程序的一致性要求和性能之间的基本权衡。

  • Delegation of control

为了提高操作效率,sdn控制器可以委托控制功能来报告状态和属性值更改、阈值交叉警报、硬件故障等。这些通知通常遵循发布、订阅模型,即控制器和应用程序按需订阅他们感兴趣的特定通知类。此外这些子系统可以提供弹性和可靠性特性。

将控制权委托给数据平面的一些原因大致有:

  • 对各种网络事件的低延迟响应
  • 必须在数据平面中处理的通信量,特别是在诸如数据中心之类的大型网络中
  • 诸如(重复sdh(同步数字层次结构)[470]复用部分开销所需的字节或比特定向
  • 功能已被充分理解和标准化
  • 控制r故障容限

这不仅可以减少控制平面的开销,包括流量和计算,还可以通过在数据平面中保留基本的网络功能来提高网络效率。

Resilience

实现弹性通信是网络的首要目标,因此,sdn的可用性预计将与legacy和任何新的替代技术一样。作为sdn的分离控制体系结构通常会被质疑,质疑它们应对可能危及控制到数据平面通信从而导致“无脑”网络故障的实际弹性能力。实际上,特定sdn元素的故障不应该导致可用性的损失。在考虑关键控制平面功能时,将sdn控制平面功能从盒子内部重新定位到远程、逻辑上集中的位置是一个挑战。openflow网络的恢复能力取决于数据平面的容错能力(与传统网络一样),也取决于集中控制平面功能的高可用性。因此,由于体系结构的不同部分可能出现多种故障,sdn的恢复能力具有挑战性。目前在构建和操作容错sdn方面缺乏足够的研究和经验。

Scalability

可扩展性从一开始就是sdns关注的主要问题之一,这也是一个需要在任何系统中解决的问题,不仅是在传统网络中,显然也是sdn环境下的一个重要讨论问题,而sdns中大多数可扩展性问题都与控制平面和数据平面的分离有关。大规模网络中,控制器将需要能够每秒处理数百万个流,并且不影响其服务质量。因此,控制平面上的这些开销和流上设置延迟(是SDN中两个主要的缩放关注点。

Performance evaluation

正如本文所介绍的,硬件和软件供应商已经在不同类型的网络中部署了几个OpenFlow实现,从小型企业到大型数据中心。因此,在不久的将来,在支持sdn的网络上进行的实验将会越来越多,这自然会带来新的挑战,因为有关sdn性能和可伸缩性的问题尚未得到适当的研究。了解sdn概念的性能和局限性是在生产网络中实现sdn的必要条件,目前对openflow和sdn体系结构的性能评估研究很少,虽然仿真研究和实验是最广泛使用的性能评估技术之一,但分析建模也有其自身的优点。

Security and Dependability

针对金融机构、能源设施、政府单位和研究机构的网络攻击正成为全球各国政府和机构最关注的问题之一。不同的事件,如stuxnet,已经显示了威胁的持续性,这些攻击能够破坏一个国家的广泛基础设施,这必然是一个重大和令人关切的问题。正如预期的那样,执行这些攻击的最常见方法之一是通过网络,或者是通过因特网,或者是通过局域网。它可以用作攻击的简单传输基础设施,也可以用作增强攻击影响的增强武器。例如,高容量网络可用于发起大规模攻击,即使攻击者在其场所只有低容量网络连接。由于网络攻击的危险性和当前数字威胁的前景,安全性和可靠性是SDN的首要任务。

  • OpenFlow security assessment

在支持openflow的网络中,已经发现了一些安全问题。从Stride方法学开始,可以识别对启用OpenFlow的网络的不同攻击,表十四总结了这些攻击。

  • Countermeasures for OpenFlow based SDNs

可以采取多种对策来减轻sdns中的安全威胁。表十五总结了可应用于支持sdn/openflow的网络的不同元素的若干对策。

Migration and Hybrid deployments

sdn承诺提供更简单的计算机网络设计、操作和管理,但在增量可部署性、健壮性和可伸缩性方面的挑战使其面临危险。主要的sdn采用挑战涉及由于sdn自动化能力和“层/域模糊”的一阶(和二阶)影响而可能出现的组织障碍。预计会有一定程度的人为阻力,可能会影响SDN的决策和部署过程,特别是那些将SDN的控制重构视为对当前控制和指挥链,甚至对其工作安全的风险的人。

Meeting carrier-grade and cloud requirements

许多运营商级基础设施提供商(如NTT、AT&T、Verizon、Deutsche Telekom)是SDN社区的核心,其最终目标是解决长期存在的网络问题。

表十六总结了运营商级网络和云基础设施提供商的一些要求。在这张表中,我们展示了当前的挑战和SDN的预期。正如我们之前看到的,一些预期已经成为现实,但许多仍然是悬而未决的问题。显然,sdn为电信和云提供商提供了一个机会,为他们的网络提供灵活性、成本效益和更轻松的管理。

SDN: the missing piece towards Software-Defined Environments

不同技术的融合使完全可编程的IT基础设施得以出现。从网络基础设施到应用程序,已经可以动态、自动地配置或重新配置整个IT堆栈,以更好地响应工作负载的变化。最近的进展使得几乎在所有基础设施层按需提供资源成为可能——IBM最近命名为软件定义环境(SDE)的IT基础设施的全自动配置和编排。这是一种新的方法,有望在简化IT管理、优化基础设施的使用、降低成本和缩短新思想和产品的上市时间方面具有巨大的潜力。在sde中,工作负载可以根据应用程序特性、安全性和服务级别策略以及最佳可用资源轻松、自动地分配给适当的it资源,从而提供连续、动态的优化和重新配置,以解决基础架构问题,以快速和灵敏的方式。表XVII总结了传统方法和SDES启用的一些关键功能。

sde的四个基本组成部分是:

  • 软件定义网络(sdn)
  • 软件定义存储(sds)
  • 软件定义计算(sdc)
  • 软件定义管理(sdm)

6.CONCLUSION

传统的网络复杂且难以管理,其中一个原因是控制平面和数据平面是垂直整合的,并且是特定于某些供应商。另一个一致的原因是典型的网络设备也与产品线和版本紧密相连,换言之,每一系列产品都可能有其自己的特定配置和管理接口,这意味着产生产品更新或升级的周期很长。所有这些都给网络基础设施所有者带来了供应商锁定问题,也对变革和创新造成了严重限制。

软件定义的网络(sdn)为解决这些长期存在的问题创造了机会。sdn的一些关键思想是通过开放的南向接口在转发设备中引入动态可编程性,控制和数据平面的分离,以及通过“网络大脑”的逻辑集中实现网络的全局视图。虽然数据平面元件变得哑巴,但高效和可编程的包转发设备,控制平面元件现在由单个实体、控制器或网络操作系统表示。实现网络逻辑的应用程序运行在控制器之上,与传统网络相比,开发和部署要容易得多。从全局的角度来看,策略的一致性很容易实施。

sdn代表了网络发展和演进的一个重大范式转变,它带来了网络基础设施创新的新步伐。尽管最近有人试图调查网络史上的这一新篇章,但据我们所知,文献仍然缺乏对sdn的组成部分、概念和挑战的单一、广泛和全面的概述。为了解决这一问题,本文采用分层的方法,系统地剖析了软件定义网络的概念、思想和组成部分,涵盖了现有的各种解决方案以及未来的发展方向。我们首先将这一新模式与传统网络进行了比较,并讨论了学术界和业界如何帮助塑造软件定义的网络。

遵循自下而上的方法,我们对SDN问题的八个基本方面进行了深入的概述:

  • 硬件基础设施
  • 南向接口
  • 网络虚拟化(转发设备和网络操作系统之间的管理程序层ms)
  • 网络操作系统(sdn控制器和控制平台)
  • 北向接口(提供给网络应用程序的通用编程抽象)
  • 使用特殊用途库和/或编程语言和编译器提供的切片技术的虚拟化
  • 网络编程语言
  • 网络应用程序。

SDN已经成功地为下一代网络铺平了道路,催生了一个创新的研发环境,促进了在以下几个领域的进步:

  • 交换机和控制器平台设计
  • 设备和架构的可扩展性和性能的演变
  • 支持安全性和可靠性运动。

在不久的将来,我们将继续见证围绕SDN的广泛活动。需要进一步研究的新课题有:

  • 向sdn的迁移路径
  • 向运营商传输网络扩展sdn
  • 实现networkas-a-service云计算模式或软件定义环境(sde

因此,随着这一新模式的发展,我们希望从networking/sdn社区获得反馈,使其成为一个“实时文档”,并根据社区反馈进行更新和改进。为此,我们建立了一个github页面2,并邀请读者加入我们的共同努力。

Software-Defined Networking: A Comprehensive Survey的更多相关文章

  1. Software Defined Networking(Week 1)

    前言 课程名称:软件定义网络 课程地址 Coursera上新的一期还没开课,所以是YouTube. Instructor:Nick Feamster Get Started 对于本次课程,主要的新内容 ...

  2. Software Defined Networking For Dummies, Cisco Special Edition

    从接触SDN开始,不论是硬件还是软件,一直都是从具体的点开始,慢慢的勾勒出自己认为的SDN的样子,相信读完这本思科出的关于SDN的书会对其有新的认识 这本书的名字就是Software Defined ...

  3. Improving Network Management with Software Defined Networking

    Name of article:Improving Network Management with  Software Defined Networking Origin of the article ...

  4. Software-Defined Networking A Comprehensive Survey --阅读_day1

    The Internet has led to the creation of a digital society, where (almost) everything is connected an ...

  5. Method of Seamless Integration and Independent Evolution of Information-Centric Networking via Software Defined Networking

    A method of transferring data between a software defined network (SDN) and an information-centric ne ...

  6. A Survey of Machine Learning Techniques Applied to Software Defined Networking (SDN): Research Issues and Challenges

    将机器学习用到SDN中的综述:研究的问题和挑战 从流量分类.路由优化.服务质量(Qos)/体验质量(QoE)预测.资源管理和安全性的角度,回顾了机器学习算法如何应用于SDN领域. 相关知识 在SDN中 ...

  7. Software-Defined Networking A Comprehensive Survey --阅读_day2

    3. 什么是SDN?(WHAT IS SOFTWARE-DEFINED NETWORKING?) The term SDN was originally coined to represent the ...

  8. Software Defined Networking(Week 2, part 2)

    History of SDN 1.3 - 1.4 课程地址 Network Virtualization 网络可虚拟化,可以说是SDN的一项核心内容,同样也源自很多先前的技术和思想.我们先讨论何为网络 ...

  9. Software Defined Networking(Week 2, part 1)

    History of SDN 1.1 - 1.2 本节讨论从上世纪八十年代时到现在为止出现的SDN的思想和发展历史.了解历史,可以明白技术后面的成因以及一些原则,并从架构上去大致掌握.了解一些主旨. ...

随机推荐

  1. 配置NAT

    NAT是将IP数据报文报头中的IP地址转换为另-一个IP地址的过程,主要用于实现内部网络(私有IP地址)访问外部网络(公有IP地址)的功能.NAT有3种类型:静态NAT.动态地址NAT以及网络地址端口 ...

  2. 华南理工大学 “三七互娱杯” G HRY and tree

    https://ac.nowcoder.com/acm/contest/874/G 题目大意:对于一个连通图,现在定义两个点的贡献为连接两点的路径上最大的权值 求任意两个点贡献的和 这个题看懂花了我很 ...

  3. 【嵌入式 Linux文件系统】如何使用Initramfs文件系统

    (1)#cd ../rootfs/ #ln -s ./bin/busybox init 创建软链接 (2)进入Linux内核 #make menuconfig General setup-->I ...

  4. 网络 osi七层协议

    一 互联网的本质 咱们先不说互联网是如何通信的(发送数据,文件等),先用一个经典的例子,给大家说明什么是互联网通信. 现在追溯到八九十年代,当时电话刚刚兴起,还没有手机的概念,只是有线电话,那么此时你 ...

  5. JVM — 性能调优

    概念: 一:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.” ...

  6. RouteReuseStrategy angular路由复用策略详解,深度刨析路由复用策略

    关于前端路由复用策略网上的文章很多,大多是讲如何实现tab标签切换历史数据,至于如何复用的原理讲的都比较朦胧,代码样例也很难适用各种各样的路由配置,比如懒加载模式下多级嵌套路由出口网上的大部分代码都会 ...

  7. POJ 3259 Wormholes SPFA算法题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  8. 区块链开源实现hyperledger fabric架构详解

    hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM.Intel.各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量.本文中我们依次讨论:区块链 ...

  9. Redis---使用场景

    3.使用场景 计数器   可以对String进行自增自减运算,从而实现计算器功能.   Redis这种内存型数据库的读写性能非常高,很适合存储频繁读写的及数量 缓存   将热点数据放到内存中,设置内存 ...

  10. 原生js实现深度克隆

    总体思路: 判断对象当中的值为引用值还是原始值 如果是引用值,判断是数组还是对象,如果是原始值直接copy 递归 注意:不要忘了排除null,因为typeof null = 'object' func ...