在过去几年中,借助 SDN(软件定义网络)的帮助,网络的设计和管理变得更具创新性。这项技术似乎是突然出现的,但实际上它是使计算机网络更具可编程性的长期历史的一部分。
计算机网络复杂且难以管理。它们涉及多种设备,从路由器和交换机到中间盒,例如防火墙、网络地址转换器、服务器负载均衡器和入侵检测系统。路由器和交换机运行复杂的分布式控制软件,这些软件通常是封闭的和专有的。该软件实现了经过多年标准化和互操作性测试的网络协议。网络管理员通常使用在供应商之间甚至来自同一供应商的不同产品之间各不相同的配置界面来配置单个网络设备。尽管某些网络管理工具为配置网络提供了中心 vantage point,但这些系统仍然在各个协议、机制和配置界面的级别上运行。这种操作模式减缓了创新,增加了复杂性,并抬高了运行网络的资本和运营成本。
SDN 正在改变网络的设计和管理方式。它具有两个定义性特征。首先,SDN 将控制平面(决定如何处理流量)与数据平面(根据控制平面做出的决策转发流量)分离开来。其次,SDN 整合了控制平面,以便单个软件控制程序控制多个数据平面元素。SDN 控制平面通过明确定义的 API 直接控制网络数据平面元素(即,路由器、交换机和其他中间盒)中的状态。OpenFlow51 是此类 API 的一个突出示例。OpenFlow 交换机具有一个或多个数据包处理规则表。每个规则匹配流量的子集,并对匹配规则的流量执行某些操作;操作包括丢弃、转发或洪泛。根据控制器应用程序安装的规则,OpenFlow 交换机可以充当路由器、交换机、防火墙、网络地址转换器或介于两者之间的任何设备。
SDN 在行业中获得了显着的吸引力。许多商业交换机都支持 OpenFlow API。HP、NEC 和 Pronto 是首批支持 OpenFlow 的供应商;此列表此后已大幅扩展。已经涌现出许多不同的控制器平台。23, 30, 37, 46, 55, 63, 80 程序员已经使用这些平台创建了许多应用程序,例如动态访问控制16,53、服务器负载均衡39, 81、网络虚拟化54, 67、节能网络42 以及无缝虚拟机迁移和用户移动性24。早期的商业成功,例如 Google 的广域流量管理系统44 和 Nicira 的网络虚拟化平台54,已引起行业的广泛关注。许多世界最大的信息技术公司(例如,云提供商、运营商、设备供应商和金融服务公司)都加入了 SDN 行业联盟,例如开放网络基金会57 和 Open Daylight 倡议56。
尽管最近对 SDN 的兴奋变得越来越明显,但该技术背后的许多想法在过去 20 年(或更长时间)中已经发展起来。在某些方面,SDN 重新审视了早期电话网络的思想,这些网络使用控制平面和数据平面的清晰分离来简化网络管理和新服务的部署。然而,诸如 OpenFlow 之类的开放接口比为狭窄范围的电话服务设计的封闭网络能够实现更多的控制器平台和应用程序创新。在其他方面,SDN 类似于过去对主动网络的研究,该研究阐明了可编程网络的愿景,尽管重点是可编程数据平面。SDN 也与之前关于计算机网络中控制平面和数据平面分离的工作有关。
本文介绍了可编程网络的思想史,最终发展到当今的 SDN。它着眼于关键思想的演变、当时的应用程序“拉动”和技术“推动”,以及可以帮助指导下一组 SDN 创新的经验教训。在此过程中,它揭穿了关于每项技术的谬误和误解,并阐明了 SDN 与网络虚拟化等相关技术之间的关系。
SDN 的历史始于 20 年前,当时互联网刚刚兴起,互联网的惊人成功加剧了管理和发展网络基础设施的挑战。这里的重点是网络社区的创新(无论是研究人员、标准机构还是公司),尽管在某些情况下,这些创新是由分布式系统、操作系统和编程语言等其他领域的进步催化的。创建可编程网络基础设施的努力也清楚地与长期以来支持高速可编程数据包处理的工作有关。5, 21, 38, 45, 49, 71, 73
在开始讲述这个故事之前,我们提醒读者,任何历史都比单一故事情节所暗示的更为细致。特别是,本文中描述的许多工作早于术语 SDN,该术语是在一篇关于斯坦福大学 OpenFlow 项目的文章36 中创造的。该术语的词源本身就很复杂,尽管该术语最初用于描述斯坦福大学的 OpenFlow 项目,但此后该定义已扩展到包括更广泛的技术。(该术语甚至已被行业营销部门盗用,以描述早于斯坦福大学 SDN 项目的无关想法。)因此,本文没有试图归因于项目之间的直接影响,而是强调了代表 SDN 定义特征的思想的演变,无论它们是否直接影响了后续研究。这些早期思想可能没有直接影响后来的思想,但概念之间的联系值得注意,并且过去的项目可能为未来的 SDN 提供新的经验教训。
使计算机网络更具可编程性使得网络管理创新成为可能,并降低了部署新服务的门槛。本节回顾了早期关于可编程网络的工作。图 1 显示了过去 20 年中可编程网络选定的发展及其与网络虚拟化(首批成功的 SDN 用例之一)进展的时序关系。
历史分为三个阶段,每个阶段都有其自身的贡献:(1)主动网络(从 20 世纪 90 年代中期到 21 世纪初),它在网络中引入了可编程功能,从而实现了更大的创新;(2)控制平面和数据平面分离(从 2001 年左右到 2007 年),它开发了控制平面和数据平面之间的开放接口;以及(3)OpenFlow API 和网络操作系统(从 2007 年到 2010 年左右),这代表了开放接口的首次广泛采用,并开发了使控制平面和数据平面分离可扩展和实用的方法。网络虚拟化(将在下一节中讨论)在 SDN 的历史演进中发挥了重要作用,它大大早于 SDN,但已扎根为 SDN 的首批重要用例之一。
20 世纪 90 年代初期至中期,互联网开始兴起,其应用程序和吸引力远远超过了科学家早期的文件传输和电子邮件应用程序。更多样化的应用程序和公众的更大规模使用吸引了渴望测试和部署改进网络服务的新想法的研究人员。为此,研究人员在小型实验室环境中设计和测试了新的网络协议,并在更大的网络上模拟了行为。然后,如果动机和资金持续存在,他们会将他们的想法提交给 IETF(互联网工程任务组)以标准化这些协议,但这是一个缓慢的过程,最终使许多研究人员感到沮丧。
作为回应,一些网络研究人员寻求一种开放网络控制的替代方法,大致基于相对容易地重新编程独立 PC 的类比。传统网络在任何有意义的层面上都不是“可编程的”。主动网络代表了一种激进的网络控制方法,它设想了一个编程接口(或网络 API),该接口公开了单个网络节点上的资源(例如,处理、存储和数据包队列),并支持构建自定义功能以应用于通过节点的数据包子集。
这种方法为互联网社区中的许多人所厌恶,他们主张网络核心的简单性对于互联网的成功至关重要。主动网络研究计划探索了通过 IP 或 ATM(异步传输模式)(20 世纪 90 年代初期的另一种主要网络方法)提供的传统互联网堆栈所提供服务的激进替代方案。从这个意义上说,主动网络是在一系列网络架构的全新方法14 中的第一个,随后在美国的 GENI(全球网络创新环境)33 和 NSF FIND(未来互联网设计)31 以及欧盟的 EU FIRE(未来互联网研究与实验倡议)32 等计划中得到追求。
主动网络社区追求两种编程模型
• 胶囊模型,其中在节点上执行的代码以内联方式在数据包中携带。82
• 可编程路由器/交换机模型,其中在节点上执行的代码通过带外机制建立。8,68
胶囊模型变得与主动网络最密切相关。然而,在与后续努力的思想联系中,这两种模型都具有持久的遗产。胶囊设想在整个网络中安装新的数据平面功能,在数据包中携带代码(如早期关于分组无线电88 的工作),并使用缓存来提高代码分发的效率。可编程路由器将关于可扩展性的决策直接交到网络运营商手中。
技术推动和应用拉动。 鼓励主动网络的“技术推动”包括计算成本的降低,从而允许在网络中进行更多处理;Java 等编程语言的进步,这些语言提供平台可移植性和一些代码执行安全性;以及虚拟机技术,该技术保护主机(在本例中为活动节点)和其他进程免受行为不端的程序的影响。70 一些主动网络研究项目还利用了快速代码编译和形式化方法的进步。
主动网络生态系统中的一个重要催化剂是资助机构的兴趣,特别是 DARPA(美国国防高级研究计划局)从 20 世纪 90 年代中期到 21 世纪初创建和支持的主动网络计划。尽管并非所有对主动网络的研究都由 DARPA 资助,但该资助计划支持了一系列项目,也许更重要的是,鼓励就术语和一组主动网络组件达成一致,以便项目可以为一个旨在大于部分之和的整体做出贡献。14 主动网络计划强调演示和项目互操作性,并具有相应的开发工作水平。在缺乏近期用例的情况下,资助机构的大胆和协调一致的推动也可能导致社区对主动网络产生一定程度的怀疑,这种怀疑通常是健康的,但可能接近敌意,并且可能掩盖了该工作与后来为提供网络可编程性所做的努力之间的某些思想联系。
当时文献15,74 中描述的主动网络的“应用拉动”与今天用于激发 SDN 的示例非常相似。当时的问题包括网络服务提供商对开发和部署新网络服务所需时间(所谓的网络僵化)的挫败感;第三方对增值、细粒度控制的兴趣,以动态满足特定应用程序或网络条件的需求;以及研究人员对支持大规模实验平台的渴望。此外,许多关于主动网络的早期论文都引用了中间盒的激增,包括防火墙、代理和转码器,每个中间盒都必须单独部署,并且需要不同的(通常是特定于供应商的)编程模型。主动网络提供了一种对这些中间盒进行统一控制的愿景,最终可以取代管理和控制这些盒子的临时、一次性方法。74 有趣的是,早期文献预示了当前 NFV(网络功能虚拟化)19 的趋势,NFV 也旨在为在整个网络中部署了复杂中间盒功能的网络提供统一的控制框架。
思想贡献。 主动网络提供了与 SDN 相关的思想贡献。以下是三个特别值得注意的方面
• 网络中的可编程功能降低了创新门槛。 主动网络的研究率先提出了可编程网络的概念,将其作为降低网络创新门槛的一种方式。在最初激发 SDN 的动机中,通常引用了在生产网络中进行创新很困难的观点以及对增强可编程性的呼吁。SDN 的早期愿景主要侧重于控制平面可编程性,而主动网络更侧重于数据平面可编程性。也就是说,数据平面可编程性一直在与控制平面工作5, 21 并行发展,并且数据平面可编程性再次在新兴的 NFV 倡议中处于前沿地位。最近关于 SDN 的工作正在探索 SDN 协议(如 OpenFlow)的演变,以支持更广泛的数据平面功能。11 此外,实验流量与正常流量隔离的概念(其根源在于主动网络)也出现在 OpenFlow51 和其他 SDN 技术(例如,FlowVisor29)的设计文档中,并且处于中心位置。
• 网络虚拟化和基于数据包标头多路分解到软件程序的能力。 支持使用多种编程模型进行实验的需求促成了网络虚拟化的工作。主动网络产生了一个架构框架,该框架描述了此类平台的组件。13 该平台的关键组件是管理共享资源的共享 NodeOS(节点操作系统);一组 EE(执行环境),每个环境定义一个用于数据包操作的虚拟机;以及一组 AA(主动应用程序),它们在给定的 EE 中工作以提供端到端服务。将数据包定向到特定 EE 取决于标头字段上的快速模式匹配以及多路分解到适当的 EE。有趣的是,这种模型在 PlanetLab60 架构中得到了延续,不同的实验在虚拟执行环境中运行,数据包根据其数据包标头多路分解到适当的执行环境中。将数据包多路分解到不同的虚拟执行环境也已应用于虚拟化可编程硬件数据平面的设计。5
• 中间盒编排的统一架构愿景。 尽管该愿景在主动网络研究计划中从未完全实现,但早期的设计文档引用了需要使用通用、安全的编程框架来统一各种中间盒功能。尽管此愿景可能并未直接影响最近关于 NFV 的工作,但随着基于 SDN 的中间盒控制和编排的应用向前发展,主动网络研究的各种经验教训可能会被证明是有用的。
谬误和误解。 主动网络包括网络 API 将可供发起和接收数据包的最终用户使用的概念,尽管研究社区中的大多数人都充分认识到最终用户网络程序员将很少见。15 数据包必然会携带最终用户编写的 Java 代码的误解使得人们有可能驳斥主动网络研究过于脱离真实网络并且本质上是不安全的。主动网络当时也因其无法提供实际的性能和安全性而受到批评。虽然性能不是主动网络研究社区的首要考虑因素(该社区专注于架构、编程模型和平台),但一些努力旨在构建高性能主动路由器。84 同样,虽然安全在许多早期项目中都未得到充分解决,但安全主动网络环境 (SANE) 架构项目2 是一个值得注意的例外。
寻求实用主义。 尽管主动网络阐明了可编程网络的愿景,但这些技术并未得到广泛部署。也许最大的绊脚石之一是缺乏立即引人注目的问题或明确的部署路径。从主动网络研究工作中获得的一个重要教训是,数据平面的杀手级应用程序很难构思。社区提出了各种可以从网络内处理中受益的应用程序,包括信息融合、缓存和内容分发、网络管理以及特定于应用程序的服务质量。15,74 不幸的是,尽管可以在实验室中量化性能优势,但这些应用程序均未证明对紧迫需求提供了足够引人注目的解决方案。
后续的努力(在下一小节中描述)更狭隘地侧重于路由和配置管理。除了更狭窄的范围之外,下一阶段的研究还开发了在控制平面和数据平面的功能之间划清界限和分离的技术。这种分离最终使得有可能专注于控制平面的创新,控制平面不仅需要进行重大改革,而且由于它通常在软件中实现,因此比数据平面具有更低的创新门槛。
在 21 世纪初,不断增长的流量和对网络可靠性、可预测性和性能的更大强调导致网络运营商寻求更好的方法来处理某些网络管理功能,例如控制用于传递流量的路径(通常称为流量工程)。使用传统路由协议进行流量工程的方法充其量是原始的。运营商对这些方法的挫败感得到了一个小型、地位优越的研究人员社区的认可,这些研究人员要么为骨干网络运营商工作,要么定期与他们互动。这些研究人员探索了务实的、近期的、标准驱动的或使用现有协议即将部署的方法。
具体而言,传统路由器和交换机体现了控制平面和数据平面之间的紧密集成。这种耦合使得各种网络管理任务(例如,调试配置问题以及预测或控制路由行为)变得极其具有挑战性。为了应对这些挑战,各种分离数据平面和控制平面的努力开始涌现。
技术推动和应用拉动。 随着 20 世纪 90 年代互联网的蓬勃发展,骨干网络中的链路速度Swift增长,导致设备供应商直接在硬件中(与控制平面软件分离)实现数据包转发逻辑。此外,ISP(互联网服务提供商)正在努力管理其网络不断增长的规模和范围,以及对更高可靠性和新服务(例如虚拟专用网络)的需求。与这些趋势并行,商品计算平台的快速进步意味着服务器通常比仅在一两年前部署的路由器的控制平面处理器具有更多的内存和处理资源。这些趋势催生了两项创新
• 控制平面和数据平面之间的开放接口,例如 IETF 标准化的 ForCES(转发和控制元素分离)86 接口和 Linux 中内核级数据包转发功能的 Netlink 接口。65
• 网络的逻辑集中控制,如 RCP(路由控制平台)12,26 和 SoftRouter47 架构以及 IETF 的 PCE(路径计算元素)25 协议中所见。
这些创新是由行业对用于管理 ISP 网络内路由的技术的需求驱动的。一些关于分离数据平面和控制平面的早期提案也来自学术界,包括 ATM10,30,78 和主动网络。69
与早期关于主动网络的研究相比,这些项目侧重于网络管理中的紧迫问题,重点是网络管理员(而不是最终用户和研究人员)的创新;控制平面中的可编程性(而不是数据平面);以及全网络范围的可视性和控制(而不是设备级配置)。
网络管理应用程序包括基于当前流量负载选择更好的网络路径、最大限度地减少计划路由更改期间的瞬态中断、使客户网络对流量流具有更多控制权以及重定向或丢弃可疑的攻击流量。一些控制应用程序使用旧式路由器在运营 ISP 网络中运行,包括 IRSCP(智能路由服务控制点),该控制点部署用于为 AT&T 一级骨干网络中的虚拟专用网络客户提供增值服务。77 尽管此时的大部分工作都集中在管理单个 ISP 内的路由,但一些工作25,26 也提出了在多个管理域之间实现灵活路由控制的方法。
将控制功能从网络设备移至单独的服务器是有道理的,因为网络管理从定义上来说是一项全网络范围的活动。逻辑上集中的路由控制器12,47,77 由于开源路由软件9,40,64 的出现而成为可能,这降低了创建原型实现的门槛。服务器技术的进步意味着单个商品服务器可以存储大型 ISP 网络的所有路由状态并计算所有路由决策。12,79 反过来,这使得简单的主备复制策略成为可能,其中备份服务器存储与主服务器相同的状态并执行相同的计算,以确保控制器可靠性。
思想贡献。 分离控制平面和数据平面的最初尝试相对务实,但它们代表了从互联网传统上将路径计算和数据包转发紧密耦合的重大概念性背离。分离网络控制平面和数据平面的努力产生了几个概念,这些概念已在后续 SDN 设计中得到延续
• 使用数据平面的开放接口进行逻辑集中控制。 IETF 的 ForCES 工作组提出了一个标准的开放接口到数据平面的提议,以实现控制平面软件的创新。SoftRouter47 使用 ForCES API 允许单独的控制器在数据平面中安装转发表条目,从而完全从路由器中删除控制功能。不幸的是,ForCES 未被主要的路由器供应商采用,这阻碍了增量部署。RCP12,26 没有等待新的开放 API 的出现,而是使用了现有的标准控制平面协议(边界网关协议)在旧式路由器中安装转发表条目,从而允许立即部署。OpenFlow 也面临类似的向后兼容性挑战和约束:特别是,最初的 OpenFlow 规范依赖于与商品交换机硬件功能的向后兼容性。
• 分布式状态管理。 逻辑上集中的路由控制器面临涉及分布式状态管理的挑战。必须复制逻辑上集中的控制器以应对控制器故障,但复制引入了跨副本状态不一致的可能性。研究人员探讨了可能的故障场景和一致性要求。至少在路由控制的情况下,控制器副本不需要通用的状态管理协议,因为每个副本最终都会计算出相同的路由(在学习相同的拓扑和路由信息之后),并且即使使用旧式协议,路由协议收敛期间的瞬态中断也是可以接受的。12 为了更好的可扩展性,每个控制器实例都可以负责拓扑的单独部分。然后,这些控制器实例可以彼此交换路由信息以确保决策一致。79 构建分布式控制器的挑战将在几年后在分布式 SDN 控制器的背景下再次出现。46,55 这些控制器面临着支持任意控制器应用程序的更普遍的问题,需要更复杂的分布式状态管理解决方案。
谬误和误解。 当提出这些新架构时,批评者以健康的怀疑态度看待它们,经常强烈争辩说,逻辑上集中的路由控制会违反命运共享,因为控制器可能会独立于负责转发流量的设备而发生故障。许多网络运营商和研究人员认为分离控制平面和数据平面本质上是一个坏主意,因为最初没有明确说明如果控制器发生故障,这些网络将如何继续正确运行。怀疑论者还担心逻辑集中控制会偏离路由器实现分布式共识的概念上简单的模型,在分布式共识中,路由器都(最终)具有网络状态的共同视图(例如,通过洪泛)。在逻辑集中控制中,每个路由器仅对路由选择过程的结果具有纯粹的本地视图。
事实上,在这些项目扎根时,即使是传统的分布式路由解决方案也已经违反了这些原则。将数据包转发逻辑移入硬件意味着路由器的控制平面软件可能会独立于数据平面而发生故障。同样,分布式路由协议采用了扩展技术,例如 OSPF(开放最短路径优先)区域和 BGP(边界网关协议)路由反射器,其中网络一个区域中的路由器对其他区域中的路由信息的可见性有限。正如下一节所讨论的那样,控制平面和数据平面的分离在某种程度上自相矛盾地使研究人员能够更清楚地思考分布式状态管理:控制平面和数据平面的解耦催化了状态管理层的出现,该层维护了网络状态的一致视图。
寻求通用性。 主要设备供应商几乎没有动力采用标准数据平面 API(如 ForCES),因为开放 API 可能会吸引新的市场参与者。由此产生的需要依赖现有路由协议来控制数据平面,对可编程控制器可以支持的应用范围施加了重大限制。传统的 IP 路由协议计算目的地 IP 地址块的路由,而不是基于更广泛的标头字段(例如,MAC 和 IP 地址、TCP 和 UDP 端口号)提供更广泛的功能(例如,丢弃、洪泛或修改数据包),正如 OpenFlow 所做的那样。最后,尽管行业原型和标准化努力取得了一些进展,但广泛采用仍然难以实现。
为了拓宽控制平面和数据平面分离的愿景,研究人员开始探索逻辑集中控制的全新架构。4D 项目35 提倡四个主要层:数据平面(用于基于可配置规则处理数据包);发现平面(用于收集拓扑和流量测量);传播平面(用于安装数据包处理规则);以及决策平面(由将网络级目标转换为数据包处理状态的逻辑集中控制器组成)。几个小组继续设计和构建将这种高级方法应用于新应用领域的系统,16,85 超出了路由控制的范围。特别是,Ethane 项目16(及其直接前身 SANE17)为企业网络中的访问控制创建了一个逻辑集中、流级的解决方案。Ethane 将交换机简化为由控制器根据高级安全策略填充的流表。Ethane 项目及其在斯坦福大学计算机科学系的运营部署,为 OpenFlow 的创建奠定了基础。特别是,Ethane 中简单的交换机设计成为原始 OpenFlow API 的基础。
在 21 世纪中期,研究人员和资助机构对大规模网络实验的想法产生了兴趣,这受到了实验基础设施(例如,PlanetLab6 和 Emulab83)的成功以及政府为以前为其他学科保留的大规模“仪器化”单独提供资金以构建昂贵的共享基础设施(如对撞机和望远镜)的鼓舞。52 这种热情的一个结果是 GENI(全球网络创新环境)33 的创建,该项目由 NSF 资助的 GENI 项目办公室和欧盟 FIRE 计划29 组成。这些以基础设施为中心的工作的批评者指出,对基础设施的大量投资与使用它的周全想法并不匹配。在这一切之中,斯坦福大学的一组研究人员创建了 Clean Slate Program,并专注于在更本地化和易于处理的规模上进行实验:校园网络。51
在 OpenFlow 出现之前,SDN 背后的思想面临着完全可编程网络的愿景与能够实现实际部署的实用主义之间的紧张关系。OpenFlow 通过实现比早期路由控制器更多的功能,并通过商品交换机中日益增长的商家芯片组的使用来构建在现有交换机硬件之上,从而在这两个目标之间取得了平衡。尽管依赖现有交换机硬件在某种程度上限制了灵活性,但 OpenFlow 几乎可以立即部署,从而使 SDN 运动既务实又大胆。OpenFlow API51 的创建之后,控制器平台(如 NOX37)的设计迅速跟进,从而能够创建许多新的控制应用程序。
OpenFlow 交换机具有数据包处理规则表,其中每个规则都有一个模式(它与数据包标头中的位匹配)、一个操作列表(例如,丢弃、洪泛、通过特定接口转发、修改标头字段或将数据包发送到控制器)、一组计数器(用于跟踪字节数和数据包数)以及优先级(用于消除具有重叠模式的规则之间的歧义)。收到数据包后,OpenFlow 交换机识别优先级最高的匹配规则,执行关联的操作,并递增计数器。
技术推动和应用拉动。 也许 OpenFlow 最具决定性的特征是它在行业中的采用,特别是与其思想先驱相比。这种成功可以归因于设备供应商、芯片组设计商、网络运营商和网络研究人员之间完美风暴的条件。在 OpenFlow 诞生之前,Broadcom 等交换机芯片组供应商已经开始开放其 API,以允许程序员控制某些转发行为。开放芯片组的决定为已经clamoring for更多网络设备控制权的行业提供了必要的推动力。这些芯片组的可用性还使范围更广的公司能够构建交换机,而无需承担设计和制造自己的数据平面硬件的巨额成本。
最初的 OpenFlow 协议在交换机已支持的技术基础上,标准化了数据平面模型和控制平面 API。具体来说,由于网络交换机已经支持细粒度的访问控制和流监控,因此在交换机上启用 OpenFlow 的初始功能集就像执行固件升级一样简单——供应商无需升级硬件即可使其交换机支持 OpenFlow。
OpenFlow 最初的目标部署场景是校园网络,以满足积极寻求在研究友好的操作环境中对“全新”网络架构进行实验性工作的网络研究社区的需求。在 2000 年代后期,斯坦福大学的 OpenFlow 小组牵头在许多校园部署 OpenFlow 测试平台,并在单个校园网络和跨越多个校园的广域骨干网络上演示了该协议的功能。34
随着真实的 SDN 用例在这些校园中涌现,OpenFlow 开始在其他领域占据一席之地,例如数据中心网络,在这些网络中,迫切需要大规模管理网络流量。在数据中心,雇用工程师编写复杂的控制程序以在大量通用交换机上运行,被证明比继续购买无法在不与设备供应商进行大量沟通的情况下支持新功能的封闭式专有交换机更具成本效益。随着供应商开始竞相销售用于数据中心的服务器和交换机,网络设备市场中的许多小型厂商抓住了机会,通过支持 OpenFlow 等新功能与老牌路由器和交换机供应商竞争。
知识贡献。 尽管 OpenFlow 体现了早期关于控制平面和数据平面分离的许多原则,但它的兴起提供了几个额外的知识贡献
• 通用化网络设备和功能。 之前关于路由控制的工作主要集中在通过目标 IP 前缀匹配流量。相比之下,OpenFlow 规则可以根据任何一组 13 个不同的数据包头部定义流量的转发行为。因此,OpenFlow 在概念上统一了许多不同类型的网络设备,这些设备仅在它们匹配的头部字段和它们执行的动作方面有所不同。路由器匹配目标 IP 前缀并转发到链路,而交换机匹配源 MAC 地址(以执行 MAC 地址学习)和目标 MAC 地址(以进行转发),并进行洪泛或转发到单个链路。网络地址转换器和防火墙匹配五元组(源 IP 地址和目标 IP 地址、源端口号和目标端口号以及传输协议),并重写地址和端口字段或丢弃不需要的流量。OpenFlow 还通用化了规则安装技术,允许从主动安装粗粒度规则(即,对于许多头部字段使用“通配符”)到根据应用程序被动安装细粒度规则。尽管如此,OpenFlow 仍未为深度包检测或连接重组提供数据平面支持;因此,仅靠 OpenFlow 无法有效地实现复杂中间盒功能。
• 网络操作系统的愿景。 与早期关于主动网络提出节点操作系统的研究相比,OpenFlow 的工作引出了网络操作系统的概念。37 网络操作系统是一种软件,它将网络交换机中状态的安装从控制网络行为的逻辑和应用程序中抽象出来。更一般地说,网络操作系统的出现提供了将网络操作概念性分解为三个层次:(1) 具有开放接口的数据平面;(2) 负责维护网络状态一致性视图的状态管理层;以及 (3) 根据其网络状态视图执行各种操作的控制逻辑。46
• 分布式状态管理技术。 分离控制平面和数据平面引入了关于状态管理的新挑战。运行多个控制器对于可扩展性、可靠性和性能至关重要,但这些副本应协同工作,充当单个逻辑上集中的控制器。先前关于分布式路由控制器12,79 的工作仅在路由计算的狭隘背景下解决了这些问题。为了支持任意控制器应用程序,Onix46 控制器的工作引入了网络信息库的概念——网络拓扑和其他控制状态的表示,由所有控制器副本共享。Onix 还结合了分布式系统中的过去工作,以满足状态一致性和持久性要求。例如,Onix 具有由复制状态机支持的事务性持久数据库,用于缓慢变化的网络状态,以及用于快速变化状态的内存分布式哈希表,具有较弱的一致性要求。最近,ONOS(开放网络操作系统)提供了一个具有类似功能的开源控制器,使用现有的开源软件来维护分布式状态之间的一致性,并为控制器应用程序提供网络拓扑数据库。55
迷思和误解。 关于 SDN 的一个迷思是,每个流量的第一个数据包都必须发送到控制器进行处理。事实上,一些早期的系统(如 Ethane16)就是这样工作的,因为它们旨在支持小型网络中的细粒度策略。事实上,一般的 SDN,特别是 OpenFlow,并没有对规则的粒度或控制器是否处理任何数据流量施加任何假设。一些 SDN 应用程序仅响应拓扑变化和粗粒度流量统计信息,并且很少更新规则以响应链路故障或网络拥塞。其他应用程序可能会将某些较大流量聚合的第一个数据包发送到控制器,但不会发送来自每个 TCP 或 UDP 连接的数据包。
关于 SDN 的第二个迷思是,控制器必须在物理上是集中式的。事实上,Onix46 和 ONOS55 表明,SDN 控制器可以而且应该 - 是分布式的。SDN 的广域部署,例如谷歌的私有骨干网44,在整个网络中分布着许多控制器。
最后,一个普遍存在的误解是 SDN 和 OpenFlow 是等价的;事实上,OpenFlow 仅仅是 SDN 原则的一种(广受欢迎的)实例化。可以使用不同的 API 来控制全网转发行为;例如,先前专注于路由(使用 BGP 作为 API)的工作可以被认为是 SDN 的一种实例化,来自各个供应商的架构(例如,Cisco ONE 和 JunOS SDK)是不同于 OpenFlow 的 SDN 的其他实例化。
寻找控制程序和用例。 尽管最初围绕 SDN 存在兴奋情绪,但值得认识到,它仅仅是一种工具,可以促进网络控制的创新。SDN 既不规定应如何设计该控制,也不解决任何特定问题。相反,研究人员和网络运营商现在拥有一个平台,可供他们用来帮助解决管理其网络和部署新服务方面长期存在的问题。最终,SDN 的成功和采用将取决于它是否可以用来解决早期协议难以或不可能解决的迫切需要解决的网络问题。SDN 已经证明对于解决与网络虚拟化相关的问题很有用,这将在下一节中描述。
网络虚拟化是网络的抽象,它与底层物理设备解耦,是 SDN 的一个突出的早期用例。它允许多个虚拟网络在共享基础设施上运行,并且每个虚拟网络可以具有比底层物理网络简单得多(更抽象)的拓扑。例如,VLAN(虚拟局域网)提供了跨越多个物理子网的单个 LAN 的假象,并且多个 VLAN 可以在同一组交换机和路由器上运行。尽管网络虚拟化在概念上独立于 SDN,但这两种技术之间的关系近年来已变得更加紧密。
关于网络虚拟化的讨论有三个需要注意的地方。首先,完整的网络虚拟化历史需要单独的调查;本文重点介绍与可编程网络创新直接相关的进展。
其次,尽管网络虚拟化作为 SDN 的用例而声名鹊起,但该概念早于现代 SDN,并且实际上与可编程网络并行发展。这两种技术实际上是紧密耦合的:可编程网络通常假定共享基础设施的机制(跨数据中心中的多个租户、校园中的管理组或实验设施中的实验)和支持与物理网络不同的逻辑网络拓扑,这两者都是网络虚拟化的核心原则。
最后,网络虚拟化的精确定义是难以捉摸的,专家们自然会对某些机制(例如,切片)是否代表网络虚拟化的形式持有异议。本文将网络虚拟化的范围定义为包括任何有助于在底层物理网络基础设施上托管虚拟网络的技术。
SDN 之前的网络虚拟化。 多年来,网络设备一直支持以 VLAN 和虚拟专用网络的形式创建虚拟网络,但只有网络管理员才能创建这些虚拟网络,这些虚拟网络仅限于运行现有的网络协议。因此,逐步部署新技术被证明是困难的。相反,研究人员和从业人员求助于运行叠加网络,其中一小组升级节点使用隧道在传统网络之上形成自己的拓扑。在叠加网络中,升级后的节点运行自己的控制平面协议,并通过封装数据包、通过传统网络发送数据包并在另一端解封装数据包来相互定向数据流量(和控制平面消息)。Mbone(用于组播)50、6bone(用于 IPv6)43 和 X-Bone76 是早期的突出例子。
这些早期的叠加网络由运行特殊协议的专用节点组成,希望鼓励采用对网络基础设施的拟议增强功能。叠加网络的想法很快扩展到包括任何安装和运行特殊应用程序的终端主机计算机,这受到了早期对等文件共享应用程序(例如,Napster 和 Gnutella)的成功推动。除了对对等协议的重大研究之外,网络社区重新点燃了关于使用叠加网络作为改进网络基础设施方式的研究,例如关于弹性叠加网络4 的工作,其中一小群通信主机形成一个叠加网络,可以快速响应网络故障和性能问题。
与主动网络相比,叠加网络不需要任何来自网络设备的特殊支持或 ISP 的合作,这使得它们更容易部署。为了降低实验叠加网络的门槛,研究人员开始构建虚拟化实验基础设施,例如 PlanetLab60,允许多个研究人员在共享和分布的主机集合上运行自己的叠加网络。有趣的是,PlanetLab 本身就是一种“可编程路由器/交换机”主动网络,但使用服务器集合而不是网络节点,并为程序员提供传统的操作系统(即 Linux)。这些设计决策刺激了分布式系统研究社区的采用,导致原型系统实验在该社区中的作用显着增加。
基于共享实验平台在促进实验系统研究方面的成功,研究人员开始倡导创建共享实验平台,以推动对虚拟拓扑的支持,这些虚拟拓扑可以在底层网络内部运行自定义协议7,61,从而使实际实验能够与运营流量并行运行。在这种模型中,网络设备“托管”虚拟拓扑,这可以追溯到早期的 Tempest 架构,其中多个虚拟 ATM 网络可以在同一组物理交换机上共存。78 Tempest 甚至允许使用软件控制器定义交换机转发行为,这预示了控制平面和数据平面分离的工作。
GENI 计划33,59 将虚拟化和可编程网络基础设施的想法扩展到更大的规模,为网络和分布式系统研究构建了国家实验基础设施。超越实验基础设施,一些研究人员认为,网络虚拟化可以构成未来互联网的基础,该互联网允许多个网络架构共存(每个架构都针对不同的应用程序或要求进行优化,或者由不同的商业实体运行),并随着时间的推移而发展以满足不断变化的需求。27,61,72,87
网络虚拟化与 SDN 的关系。 网络虚拟化(物理网络在逻辑网络方面的抽象)显然不需要 SDN。同样,SDN(逻辑上集中的控制平面与底层数据平面的分离)并不意味着网络虚拟化。然而,有趣的是,网络虚拟化和 SDN 之间已经出现了一种共生关系,这种关系已开始催化几个新的研究领域。SDN 和网络虚拟化主要在以下三个方面相关
• SDN 作为网络虚拟化的使能技术。 云计算使网络虚拟化变得突出,因为云提供商需要一种允许多个客户(或租户)共享网络基础设施的方式。Nicira 的 NVP(网络虚拟化平台)53 提供了这种抽象,而无需底层网络硬件的任何支持。它使用叠加网络为每个租户提供连接其所有虚拟机的单个交换机的抽象。然而,与先前关于叠加网络的工作相反,每个叠加节点实际上是物理网络的扩展——一个软件交换机(例如 Open vSwitch58,62),它封装了发往在其他服务器上运行的虚拟机流量。逻辑上集中的控制器在这些虚拟交换机中安装规则以控制数据包的封装方式,并在虚拟机移动到新位置时更新这些规则。
• 用于评估和测试 SDN 的网络虚拟化。 将 SDN 控制应用程序与底层数据平面解耦的能力使得可以在虚拟环境中测试和评估 SDN 控制应用程序,然后再将其部署到运行网络上。Mininet41,48 使用基于进程的虚拟化来运行多个虚拟 OpenFlow 交换机、终端主机和 SDN 控制器——每个都作为同一物理(或虚拟)机器上的单个进程。基于进程的虚拟化的使用允许 Mininet 在单台机器上模拟具有数百个主机和交换机的网络。在这种环境中,研究人员或网络运营商可以开发控制逻辑,并在生产数据平面的全面模拟中轻松对其进行测试;一旦控制平面经过评估、测试和调试,就可以将其部署在真实的生产网络上。
虚拟化(“切片”)SDN。 在传统网络中,虚拟化路由器或交换机很复杂,因为每个虚拟组件都需要运行其自己的控制平面软件实例。相比之下,虚拟化“哑” SDN 交换机要简单得多。FlowVisor67 系统使校园能够在承载生产流量的同一物理设备之上支持用于网络研究的测试平台。主要思想是将流量空间划分为切片(PlanetLab60 先前工作中引入的概念),其中每个切片共享网络资源,并由不同的 SDN 控制器管理。FlowVisor 作为管理程序运行,与每个 SDN 控制器和底层交换机进行 OpenFlow 通信。最近的工作提出了对家庭网络控制进行切片,以允许不同的第三方服务提供商(例如,智能电网运营商)在网络上部署服务,而无需安装自己的基础设施。87 更近期的工作提出了向 SDN 的每个切片呈现其自己的逻辑拓扑1,22 和地址空间1 的方法。
迷思和误解。 人们经常将 SDN 的功劳归功于所谓的优势——例如分摊物理资源成本或在多租户环境中动态重新配置网络——这些优势实际上来自网络虚拟化。尽管 SDN 促进了网络虚拟化,因此可能使其中一些功能更容易实现,但重要的是要认识到 SDN 提供的功能(即,数据平面和控制平面的分离,以及分布式网络状态的抽象)并不能直接提供这些好处。
探索更广泛的用例。 尽管 SDN 已经取得了一些早期的实际成功,并且肯定提供了支持网络虚拟化急需的技术,但还需要做更多的工作,既要改进现有基础设施,又要探索 SDN 在解决更广泛用例问题方面的潜力。尽管早期的 SDN 部署主要集中在大学校园34、数据中心53 和私有骨干网44,但最近的工作探索了 SDN 在更广泛的网络环境中的应用和扩展,包括家庭网络、企业网络、互联网交换点、蜂窝核心网络、蜂窝和 Wi-Fi 无线接入网络以及终端主机应用程序和网络的联合管理。这些设置中的每一个都引入了许多新的机遇和挑战,社区将在未来几年内探索这些机遇和挑战。
可编程网络的想法最初以主动网络的形式出现,它秉持与 SDN 相同的许多愿景,但缺乏明确的用例和增量部署路径。在主动网络研究项目时代之后,钟摆从愿景转向实用主义,以分离数据平面和控制平面的形式,使网络更易于管理。这项工作主要集中在改进网络流量路由的方法上——这比先前关于主动网络的工作的愿景要狭窄得多。
最终,关于 OpenFlow 和网络操作系统的工作在愿景和实用主义之间取得了适当的平衡。这项工作倡导针对广泛应用的全网控制,但仅依赖于交换机芯片组的现有功能。与现有交换机硬件的向后兼容性吸引了许多急于在不断增长的数据中心网络市场中竞争的设备供应商。当 SDN 在网络虚拟化中找到引人注目的用例时,广泛而清晰的愿景与务实的广泛采用策略的平衡获得了吸引力。
随着 SDN 的不断发展,其历史具有重要的教训。首先,SDN 技术将根据“用例拉动”而生存或死亡。尽管 SDN 经常被誉为解决所有网络问题的方案,但值得记住的是,它只是一种更轻松地解决网络管理问题的工具。SDN 仅仅赋予开发人员创建新应用程序和找到长期存在问题解决方案的能力。在这方面,工作才刚刚开始。如果过去有任何指示意义,那么这些新技术的开发将需要在多个时间尺度上进行创新,从长期的宏伟愿景(例如主动网络)到近期的创造性问题解决(例如,以操作为中心的分离控制平面和数据平面的工作)。
其次,愿景与实用主义之间的平衡仍然是脆弱的。SDN 的宏伟愿景倡导各种控制应用程序;然而,OpenFlow 对数据平面的控制仅限于数据包头部字段上的原始匹配-动作操作。OpenFlow 的初始设计是由快速采用的愿望驱动的,而不是第一性原理。支持广泛的网络服务将需要更复杂的方式来分析和操作流量(例如,深度包检测,以及数据包的压缩、加密和转码),使用通用服务器(例如,x86 机器)或可编程硬件(例如,FPGA、网络处理器和 GPU),或两者兼而有之。有趣的是,人们对更复杂的数据平面功能(例如 NFV)的重新关注,又回到了早期的主动网络工作,使故事回到了原点。
要保持 SDN 的宏伟愿景,需要更多地跳出框框思考,思考在不受当前技术限制的情况下对网络进行编程的最佳方法。开发人员不应仅仅考虑使用当前的 OpenFlow 协议来设计 SDN 应用程序,而应考虑他们希望对数据平面进行何种控制,并将该愿景与务实的部署策略相平衡。
我们感谢 Mostafa Ammar、Ken Calvert、Martin Casado、Russ Clark、Jon Crowcroft、Ian Leslie、Larry Peterson、Nick McKeown、Vyas Sekar、Jonathan Smith、Kobus van der Merwe 和 David Wetherall 对本文的详细评论、反馈、见解和观点。
1. Al-Shabibi, A. 2013. 可编程虚拟网络:从网络切片到网络虚拟化;http://www.slideshare.net/nvirters/virt-july2013meetup。
2. Alexander, D. S,, Arbaugh, W. A., Keromytis, A. D., Smith, J. M. 1998. 安全主动网络环境架构:SwitchWare 中的实现。IEEE Network Magazine (May): 37-45。
3. Alexander, D. S., Arbaugh, W. A., Hicks, M. W., Kakkar, P., Keromytis, A. D., Moore, J. T., Gunter, C. A., Nettles, S. M., Smith, J. M. 1998. SwitchWare 主动网络架构。IEEE Network 12(3): 29-36。
4. Andersen, D. G., Balakrishnan, H., Kaashoek, M. F., Morris, R. 2001. 弹性叠加网络。在第 18 届 操作系统原理研讨会 (SOSP) 会议记录中:131-145。
5. Anwer, M. B., Motiwala, M., bin Tariq, M., Feamster, N. 2010. SwitchBlade:在可编程硬件上快速部署网络协议的平台。在 SIGCOMM 会议记录中。
6. Bavier, A. C., Bowman, M., Chun, B. N., Culler, D. E., Karlin, S., Muir, S., Peterson, L. L., Roscoe, T., Spalink, T., Wawrzoniak, M. 2004. 行星级网络服务的操作系统支持。在第一届网络系统设计与实现研讨会 (NSDI) 会议记录中。
7. Bavier, A., Feamster, N., Huang, M., Peterson, L., Rexford, J. 2006. 在 VINI veritas 中:现实和受控的网络实验。在 SIGCOMM 会议记录中。
8. Bhattacharjee, S., Calvert, K.L.., Zegura, E. W. 1997. 主动网络架构。在高性能网络会议记录中。
9. BIRD Internet 路由守护程序;http://bird.network.cz/.
10. Biswas, J., Lazar, A. A., Huard, J.-F., Lim, K., Mahjoub, S., Pau, L.-F., Suzuki, M., Torstensson, S., Wang, W., Weinstein, S. 1998. 用于可编程网络接口的 IEEE P1520 标准倡议。IEEE Communications Magazine 36(10): 64-70。
11. Bosshart, P., Gibb, G., Kim, H.-S., Varghese, G., McKeown, N., Izzard, M., Mujica, F., Horowitz, M. 2013. 转发变形:用于 SDN 的硬件快速可编程匹配-动作处理。在 SIGCOMM 会议记录中:99-110。
12. Caesar, M., Feamster, N., Rexford, J., Shaikh, A., van der Merwe, J. 2005. 路由控制平台的设计与实现。在第二届 Usenix 网络系统设计与实现研讨会 (NSDI) 会议记录中。
13. Calvert, K. L., Ed. 1999. 主动网络架构框架(版本 1.0);http://www.cc.gatech.edu/projects/canes/papers/arch-1-0.pdf。
14. Calvert, K. 2006. 关于网络架构的反思:主动网络视角。 SIGCOMM Computer Communications Review 36(2): 27-30。
15. Calvert, K., Bhattacharjee, S., Zegura, E., Sterbenz, J. 1998. 主动网络的方向。IEEE Communications Magazine 36(10): 72-78。
16. Casado, M., Freedman, M. J., Pettit, J., Luo, J., McKeown, N., Shenker, S. 2007. Ethane:控制企业。在 SIGCOMM 会议记录中。
17. Casado, M., Garfinkel, T., Akella, A., Freedman, M. J., Boneh, D., McKeown, N., Shenker, S. 2006. SANE:企业网络的保护架构。在第 15 届 Usenix 安全研讨会会议记录中。
18. Chun, B., Culler, D., Roscoe, T., Bavier, A., Peterson, L., Wawrzoniak, M., Bowman, M. 2003. PlanetLab:用于广泛覆盖服务的叠加测试平台。 SIGCOMM Computer Communication Review 33(3): 3-12。
19. Ciosi, M., et al. 2012. 网络功能虚拟化。技术报告,ETSI,达姆施塔特,德国;http://portal.etsi.org/NFV/NFV_White_Paper.pdf。
20. da Silva, S., Yemini, Y., Florissi, D. 2001. NetScript 主动网络系统。IEEE Journal on Selected Areas in Communications 19(3): 538-551。
21. Dobrescu, M., Egi, N., Argyraki, K., Chun, B.-G., Fall, K., Iannaccone, G., Knies, A., Manesh, M., Ratnasamy, S. 2009. RouteBricks:利用并行性来扩展软件路由器。在第 22 届 操作系统原理研讨会 (SOSP) 会议记录中。
22. Drutskoy, D., Keller, E., Rexford, J. 2013. 软件定义网络中的可扩展网络虚拟化。IEEE Internet Computing 17(2): 20-27。
23. Erickson, D. 2013. Beacon OpenFlow 控制器。在 SIGCOMM 软件定义网络热点问题研讨会 (HotSDN) 会议记录中。
24. Erickson, D., et al. 2008. OpenFlow 网络中虚拟机移动性的演示。 SIGCOMM 演示。http://yuba.stanford.edu/~nickm/papers/p513-ericksonA.pdf
25. Farrel, A., Vasseur, J.,-P. Ash, J. 2006. 基于路径计算单元 (PCE) 的架构。互联网工程任务组 RFC 4655。https://tools.ietf.org/html/rfc4655
26. Feamster, N., Balakrishnan, H., Rexford, J., Shaikh, A., van der Merwe, K. 2004. 将路由与路由器分离的理由。在 SIGCOMM 未来网络架构方向研讨会会议记录中。
27. Feamster, N., Gao, L., Rexford, J. 2007. 如何在空闲时间租赁互联网。 SIGCOMM Computer Communications Review 37(1): 61-64。
28. Floodlight OpenFlow 控制器;http://floodlight.openflowhub.org/.
29. FlowVisor;http://www.openflowswitch.org/wk/index.php/FlowVisor。
30. Fraser, A. G. 1980. Datakit—用于同步和异步流量的模块化网络。在国际通信会议会议记录中。
31. 未来互联网设计。国家科学基金会;http://www.nets-find.net/.
32. 未来互联网研究和实验倡议。欧盟;http://www.ict-fire.eu/.
33. GENI:全球网络创新环境;http://www.geni.net/.
34. GENI。2011. 校园 OpenFlow 拓扑;http://groups.geni.net/geni/wiki/OpenFlow/CampusTopology。
35. Greenberg, A., Hjalmtysson, G., Maltz, D. A., Myers, A., Rexford, J., Xie, G., Yan, H., Zhan, J., Zhang, H. 2005. 用于网络控制和管理的全新 4D 方法。 SIGCOMM Computer Communication Review 35(5): 41-54。
36. Greene, K. 2009. TR10:软件定义网络。MIT Technology Review (March/April); http://www2.technologyreview.com/article/412194/tr10-software-defined-networking/。
37. Gude, N., Koponen, T., Pettit, J., Pfaff, B., Casado, M., McKeown, N., Shenker, S. 2008. NOX:迈向网络操作系统。 SIGCOMM Computer Communication Review 38(3): 105-110。
38. Han, S., Jang, K., Park, K., Moon, S. 2010. PacketShader:GPU 加速的软件路由器。在 SIGCOMM 会议记录中。
39. Handigol, N., Flajslik, M., Seetharaman, Johari, R. 2010. S. McKeown, N., Aster*x:作为网络原语的负载均衡。在大型数据中心架构问题 (ACLD) 会议记录中。
40. Handley, M., Kohler, E., Ghosh, A., Hodson, O., Radoslavov, P. 2005. 设计可扩展的 IP 路由器软件。在第二届网络系统设计与实现研讨会 (NSDI) 会议记录中。
41. Heller, B., Handigol, N., Jeyakumar, V., Lantz, B., McKeown, N. 2012. 使用基于容器的仿真进行可重复的网络实验。在 CoNEXT 会议记录中。
42. Heller, B., Seetharaman, S., Mahadevan, P., Yiakoumis, Y., Sharma, P., Banerjee, S., McKeown, N. 2010. ElasticTree:节省数据中心网络的能源。在第七届 Usenix 网络系统设计与实现研讨会 (NSDI) 上展示;https://www.usenix.org/legacy/event/nsdi10/tech/full_papers/heller.pdf。
43. Hinden, R., Postel, J. 1996. IPv6 测试地址分配。互联网工程任务组 RFC 1897,被关于 6bone Phaseout 的 RFC 2471 取代。https://tools.ietf.org/html/rfc1897
44. Jain, S., Kumar, A., Mandal, S., Ong, J., Poutievski, L., Singh, A., Venkata, S., Wanderer, J., Zhou, J., Zhu, M., Zolla, J., Hölzle, U., Stuart, S., Vahdat, A. 2013. B4:全球部署的软件定义 WAN 的经验。在 SIGCOMM 会议记录中。
45. Kohler, E., Morris, R., Chen, B., Jannotti, J., Kaashoek, M. F. 2000. Click 模块化路由器。 Transactions on Computer Systems 18(3): 263-297。
46. Koponen, T., Casado, M., Gude, N., Stribling, J., Poutievski, L., Zhu, M., Ramanathan, R., Iwata, Y., Inoue, H., Hama, T., Shenker, S. 2010. Onix:用于大规模生产网络的分布式控制平台。在第九届 Usenix 操作系统设计与实现研讨会会议记录中:351-364;https://www.usenix.org/legacy/event/osdi10/tech/full_papers/osdi10_proceedings.pdf。
47. Lakshman, T. V., Nandagopal, T., Ramjee, R., Sabnani, K., Woo, T. 2004. SoftRouter 架构。在第三届 网络热点问题研讨会 (HotNets) 会议记录中;http://conferences.sigcomm.org/hotnets/2004/HotNets-III%20Proceedings/lakshman.pdf。
48. Lantz, B., Heller, B., McKeown, N. 2010. 笔记本电脑中的网络:软件定义网络(大规模!)的快速原型设计。在第九届 网络热点问题研讨会 (HotNets) 会议记录中。
49. Lockwood, J. W.,McKeown, N.,Watson, G.,Gibb, G.,Hartke, P.,Naous, J. Raghuraman, R.,Luo, J. 2007. NetFPGA:用于千兆位速率网络交换和路由的开放平台。载于IEEE 微电子系统教育国际会议:160-161。
50. Macedonia, M. R.,Brutzman, D. P. 1994. Mbone 提供跨互联网的音频和视频。计算机 27(4): 30-36。
51. McKeown, N.,Anderson, T.,Balakrishnan, H.,Parulkar, G.,Peterson, L.,Rexford, J.,Shenker, S.,Turner, J. 2008. OpenFlow:在校园网络中实现创新。 SIGCOMM 计算机通信评论 38(2): 69-74。
52. 国家科学基金会。 NSF 主要研究设备和设施建设 (MREFC) 账户规划和管理指南。 2005; http://www.nsf.gov/bfa/docs/mrefcguidelines1206.pdf。
53. Nayak, A.,Reimers, A.,Feamster, N.,Clark, R. 2009. Resonance:企业网络中的动态访问控制。载于第一届 企业网络研究研讨会论文集。
54. Nicira。 现在是网络虚拟化的时候了。 2012; http://www.netfos.com.tw/PDF/Nicira/It%20is%20Time%20To%20Virtualize%20the%20Network%20White%20Paper.pdf。
55. ON.Lab。 2013. ONOS:开放网络操作系统; http://www.slideshare.net/umeshkrishnaswamy/open-network-operating-system.
56. Open Daylight; http://www.opendaylight.org/.
57. 开放网络基金会; https://www.opennetworking.org/。
58. Open vSwitch; http://openvswitch.org。
59. Peterson, L.,Anderson, T.,Blumenthal, D.,Casey, D.,Clark, D.,Estrin, D.,Evans, J.,Raychaudhuri, D.,Reiter, M.,Rexford, J.,Shenker, S.,Wroclawski, J. 2006. GENI 设计原则。IEEE 计算机 39(9): 102-105。
60. Peterson, L.,Anderson, T.,Culler, D.,Roscoe, T. 2002. 将颠覆性技术引入互联网的蓝图。载于第一届 网络热点主题研讨会论文集 (HotNets)。
61. Peterson, L.,S. Shenker, S.,Turner, J. 2004. 通过虚拟化克服互联网僵局。载于第三届 网络热点主题研讨会论文集 (HotNets)。
62. Pfaff, B.,Pettit, J.,Amidon, K.,Casado, M.,Koponen, T.,Shenker, S. 2009. 将网络扩展到虚拟化层。载于第八届 网络热点主题研讨会论文集 (HotNets)。
63. POX; http://www.noxrepo.org/pox/about-pox/.
64. Quagga 软件路由套件; http://www.quagga.net/.
65. Salim, J.,Khosravi, H.,Kleen, A.,Kuznetsov, A. 2003. Linux Netlink 作为 IP 服务协议。互联网工程任务组,RFC 3549。 https://tools.ietf.org/html/rfc3549
66. Schwartz, B.,Jackson, A. W.,Strayer, W. T.,Zhou, W.,Rockwell, R. D.,Partridge, C. 1999. 用于主动网络的智能数据包。载于第二届 IEEE 开放架构和网络编程会议论文集: 90-97。
67. Sherwood, R.,Gibb, G.,Yap, K.-K.,Appenzeller, G.,Casado, M.,McKeown, N.,Parulkar, G. 2010. 生产网络可以作为测试平台吗?载于第九届 Usenix 操作系统设计与实现研讨会 (OSDI) 论文集。
68. Smith, J.,等。 1996. SwitchWare:加速网络演进。宾夕法尼亚大学技术报告 MS-CIS-96-38。
69. Smith, J. M.,Calvert, K. L.,Murphy, S. L.,Orman, H. K.,Peterson, L. L. 1999. 激活网络:进展报告。计算机 32(4): 32-41。
70. Smith, J. M.,Nettles, S. M. 2004. 主动网络:对过去、现在和未来的一个观点。IEEE 系统、人与控制论汇刊:C 部分:应用与评论 34(1)。
71. Spalink, T.,Karlin, S.,Peterson, L.,Gottlieb, Y. 2001. 使用网络处理器构建强大的基于软件的路由器。载于第十八届操作系统原理研讨会 (SOSP) 论文集: 216-229。
72. Taylor, D.,Turner, J. 2005. 使互联网多样化。载于IEEE 全球电信会议论文集。
73. Taylor, D. E.,Turner, J. S.,Lockwood, J. W.,Horta, E. L. 2002. 动态硬件插件:利用可重构硬件实现高性能可编程路由器。计算机网络 38(3): 295-310。
74. Tennenhouse, D.,Smith, J.,Sincoskie, W. D.,Wetherall, D.,Minden, G. 1997. 主动网络研究综述。IEEE 通信杂志 35(1): 80-86。
75. Tennenhouse, D. L.,Wetherall, D. J. 1996. 迈向主动网络架构。 SIGCOMM 计算机通信评论 26(2):5-18。
76. Touch, J. 2001. 使用 X-Bone 的动态互联网覆盖部署和管理。计算机网络 36(2): 117-135。
77. van der Merwe, J.,Cepleanu, A.,D'Souza, K.,Freeman, B.,Greenberg, A.,等。 2006. 使用智能路由服务控制点的动态连接管理。载于 SIGCOMM 互联网网络管理研讨会。
78. van der Merwe, J.,Rooney, S.,Leslie, I.,Crosby, S. 1998. Tempest:网络可编程性的实用框架。IEEE 网络 12(3): 20-28。
79. Verkaik, P.,Pei, D.,Scholl, T.,Shaikh, A.,Snoeren, A.,van der Merwe, J. 2007. 从 BGP 夺取控制权:可扩展的细粒度路由控制。载于Usenix 年度技术会议论文集。
80. Voellmy, A.,Hudak, P. 2011. Nettle:OpenFlow 网络的函数式反应式编程。载于声明式语言实用方面研讨会论文集:235-249。
81. Wang, R.,Butnariu, D.,Rexford, J. 2011. 基于 OpenFlow 的服务器负载均衡失控。载于互联网、云和企业网络与服务管理热点主题研讨会 (Hot-ICE) 论文集。
82. Wetherall, D.,Guttag, J.,Tennenhouse, D. 1998. ANTS:用于构建和动态部署网络协议的工具包。载于IEEE OpenArch 论文集。
83. White, B.,Lepreau, J.,Stoller, L.,Ricci, R.,Guruprasad, S.,Newbold, M.,Hibler, M.,Barb, C.,Joglekar, A. 2002. 分布式系统和网络的集成实验环境。载于第五届操作系统设计与实现研讨会 (OSDI) 论文集。
84. Wolf, T.,Turner, J. S. 2001. 高性能主动路由器的设计问题。IEEE 精选通信领域杂志 19(3): 404-409。
85. Yan, H.,Maltz, D. A.,Ng, T. S. E.,Gogineni, H.,Zhang, H.,Cai, Z. 2007. Tesseract:4D 网络控制平面。载于第四届 Usenix 网络系统设计与实现研讨会 (NSDI) 论文集。
86. Yang, L.,Dantu, R.,Anderson, T.,Gopal, R. 2004. 转发和控制元素分离 (ForCES) 框架。互联网工程任务组,RFC 3746。 https://www.rfc-editor.org/rfc/rfc3746.txt
87. Yiakoumis, Y.,Yap, K.-K.,Katti, S.,Parulkar, G.,McKeown, N. 2011. 切片家庭网络。载于 SIGCOMM 家庭网络研讨会 (Homenets) 论文集。
88. Zander, J.,Forchheimer, R. 1983. Softnet:更高级别分组无线电方法。载于业余无线电计算机网络会议论文集。
喜欢它,讨厌它?请告诉我们
Nick Feamster 是佐治亚理工学院计算学院的副教授。他于 2005 年在麻省理工学院获得计算机科学博士学位,并于 2000 年和 2001 年在麻省理工学院获得电气工程和计算机科学学士和工程硕士学位。他的研究重点是计算机网络和网络系统的许多方面。 2008 年 12 月,他因在网络安全(尤其是垃圾邮件过滤)方面的贡献而获得总统早期职业科学家和工程师奖 (PECASE)。他的荣誉包括《技术评论》35 岁以下“35 位顶级青年创新者”奖、 SIGCOMM Rising Star 奖和 IRTF(互联网研究任务组)应用网络研究奖。
Jennifer Rexford 是普林斯顿大学计算机科学系 Gordon Y.S. Wu 工程学教授。在 2005 年加入普林斯顿之前,她在 AT&T 实验室—研究部门工作了八年。她于 1991 年在普林斯顿大学获得电气工程学士学位,并于 1996 年在密歇根大学获得电气工程和计算机科学博士学位。她于 2003 年至 2007 年担任 SIGCOMM 主席,并于 2004 年获得 颁发的 Grace Murray Hopper 奖,以表彰杰出的年轻计算机专业人士。
Ellen W. Zegura 是佐治亚理工学院计算学院的计算机科学教授,自 1993 年以来她一直在该学院担任教职。她的兴趣在于计算机网络,重点是互联网和移动无线网络,以及人道主义计算。她是 Fellow 和 IEEE Fellow。她的所有学位均毕业于圣路易斯华盛顿大学。
© 2013 1542-7730/13/1200 $10.00
最初发表于 Queue vol. 11, no. 12—
在 数字图书馆 中评论本文
David Collier-Brown - 关于带宽,你一窍不通
当您的员工或客户说他们的互联网性能很差时,带宽可能不是问题。一旦他们拥有 50 到 100 Mbps 范围内的带宽,问题就是延迟,即 ISP 的路由器处理他们的流量需要多长时间。如果您是 ISP 并且所有客户都讨厌您,请振作起来。这现在是一个可以解决的问题,这要归功于一群执着的人,他们找到了问题,解决了它,然后在家庭路由器中验证了他们的解决方案。
Geoffrey H. Cooper - 使用 FDO 和不受信任的安装程序模型的设备载入
设备的自动载入是处理正在安装的越来越多的“边缘”和物联网设备的重要技术。设备的载入与大多数设备管理功能不同,因为设备的信任从工厂和供应链转移到目标应用程序。为了通过自动载入加速流程,供应链中的信任关系必须在设备中正式化,以允许自动化过渡。
Brian Eaton, Jeff Stewart, Jon Tedesco, N. Cihan Tas - 通过关键路径追踪的分布式延迟分析
低延迟是许多 Google 应用程序(如搜索)的重要功能,延迟分析工具在维持大规模低延迟方面发挥着关键作用。对于包括功能和数据不断演变的服务的复杂分布式系统,将总体延迟保持在最低水平是一项具有挑战性的任务。在大型真实世界的分布式系统中,诸如 RPC 遥测、CPU 性能分析和分布式跟踪等现有工具对于理解整个系统的子组件非常有价值,但在实践中不足以执行端到端延迟分析。
David Crawshaw - 一切 VPN 焕然一新
VPN(虚拟专用网络)已有 24 年的历史。这个概念是为与我们今天所知的互联网截然不同的互联网而创建的。随着互联网的增长和变化,VPN 用户和应用程序也随之发展。 VPN 在 2000 年代的互联网中经历了尴尬的青春期,与其他广泛流行的抽象概念交互不良。在过去的十年中,互联网再次发生了变化,这个新的互联网为 VPN 提供了新的用途。一种全新的协议 WireGuard 的开发为构建这些新 VPN 提供了技术基础。