OpenFlow: Enabling Innovation in Campus Networks

  • 文章名称:OpenFlow: Enabling Innovation in Campus Networks
  • 文章来源:Mckeown N , Anderson T , Balakrishnan H , et al. OpenFlow: Enabling innovation in campus networks[J]. ACM SIGCOMM Computer Communication Review, 2008, 38(2):69-74.

ABSTRACT:

这篇白皮书提出了OpenFlow——一种可以让研究人员在他们每天使用的网络中运行实验协议的方法。

OpenFlow基于一个以太网交换机、一个内部流表和一个标准化的接口来添加和删除流条目。我们的目标是鼓励网络供应商将OpenFlow添加到他们的交换机产品中,以便部署在大学校园主干网和配线柜中。我们认为,OpenFlow是一种实用的方案:一方面,它允许研究人员以统一的方式、线速和高端口密度异构交换机上运行实验;另一方面,供应商不需要公开其交换机的内部工作。除了允许研究人员在真实世界的流量设置中评估他们的想法之外,OpenFlow还可以作为一个有用的校园组件,用于像GENI这样的大型测试平台。斯坦福大学的两栋大楼不久将使用商业以太网交换机和路由器运行OpenFlow网络,我们也将鼓励OpenFlow在其他学校部署,鼓励您考虑在您的大学网络中部署OpenFlow

1. THE NEED FOR PROGRAMMABLE  NETWORKS:

网络已经成为企业、家庭和学校重要基础设施的一部分。

这一成功对网络研究人员来说是把双刃剑——他们的工作更具相关性,但他们产生影响力的机会也更为渺茫。任何特定网络创新对现实世界影响的降低,都是因为需要设备和协议的庞大安装基础,以及不愿意试验生产流量,这种环境给新思想的引入创造了极高的障碍。今天,几乎没有任何实际的方法,能够在足够真实的设置(例如,大规模承载真实流量)中试验新的网络协议(例如,新的路由协议,或IP的替代方案),很难获得其广泛部署所需的信心,因此网络研究界的大多数新想法都未经试验和测试。有鉴于此,人们普遍认为网络基础设施已经“僵化”。

认识到这一问题后,网络界开始努力开发可编程网络,例如GENI

这是一个被建议的全国性研究设施,用于试验新的网络结构和分布式系统。这些可编程网络要求可编程交换机和路由器(使用虚拟化)可以同时处理多个孤立实验网络的数据包。例如,在GENI中,设想研究员将在整个网络中分配一片资源,其中包括网络中的一部分链路、分组处理元件(例如路由器)和终端主机,研究人员对其片进行编程,使其按自己的意愿工作,一“片”可以贯穿主干网、接入网、大学校园、工业研究实验室,包括布线柜、无线网络和传感器网络。虚拟化可编程网络可以降低新思想进入的障碍,提高网络基础设施的创新速度。但是,在全国范围内建设核设施的计划雄心勃勃并且成本高昂,需要数年时间才可能部署。

这篇白皮书关注的是一个更贴近的短期问题:作为研究人员,我们如何在校园网络中运行实验?如果我们能想出办法,我们可以很快开始并将这项技术推广到其他校园,以造福整个社区。但是为了应对这一挑战,有几个问题需要回答,包括:在早期,高校网络管理者将如何舒适地将实验设备(交换机、路由器、接入点等)放入他们的网络?研究人员将如何控制本地网络的一部分,而不干扰其他依赖它的人?网络交换机究竟需要什么功能才能进行实验呢?我们的目标是提出一个新的交换特性,可以把可编程性延伸至大学校园布线柜。

我们不打算说服商业“名牌”设备供应商在他们的交换机和路由器上提供一个开放的、可编程的、虚拟化的平台,尽管这样便于研究人员部署新的协议,让网络管理员可以确保设备得到了很好的支持,但是这种结果在短期内显然是不太可能的——商业交换机和路由器通常不提供开放的软件平台,更不用说提供虚拟化其硬件或软件的手段。商业网络的标准化的外部接口很窄(即仅仅是包转发),而交换机的所有内部灵活性都是隐藏的,不同厂商的内部结构不同,没有标准的平台供研究人员试验新的想法。此外,网络设备供应商对在他们的盒子里打开接口会感到紧张,他们花了多年时间部署和调整脆弱的分布式协议和算法,他们有理由担心新的实验会导致网络崩溃。

当然,开放平台降低了新竞争对手的进入门槛,一些开放的软件平台已经存在,只不过没有我们需要的理想的性能或端口密度。最简单的例子是一台具有多个网络接口一个操作系统的PC机。所有著名的操作系统都支持接口之间的数据包路由,并且存在路由协议的开源实现(例如,作为Linux发行版的一部分,或来自XORP),并且在大多数情况下可以通过修改操作系统,用几乎任何方式来处理数据包(例如,使用Click),问题在于性能——一台PC既不能支持大学布线机柜所需的端口数量(每个机箱需要100个以上端口的扇形分叉),也不能支持数据包处理性能(布线机柜交换机处理超过100Gbit/s的数据,而一台典型的PC很难做到超过1Gbit/s,两者之间的差距正在扩大),并且现有的带专门硬件的线速处理平台也不太适合大学布线柜。例如,华盛顿大学(Washington University)正在开发一种基于ATCA的虚拟可编程路由器,名为Supercharged Planetlab Platform,它可以使用网络处理器以线速同时处理来自多个接口的数据包。从长远来看,这种方法是有希望的,但目前只能针对大型交换中心,对于在大学布线柜中广泛部署来说成本太高。另一个极端是Netfpga,目标是用于教学和研究实验室。Netfpga是一种低成本的PCI卡,具有用户可编程的处理数据包的FPGA和4端口千兆以太网。但是Netfpga仅限于四个网络接口,也不足以在布线柜中使用。

因此,商业解决方案过于封闭和僵化,研究解决方案要么性能不足,要么成本过高,研究完全的通用性解决方案似乎不能克服其性能或成本限制。一种更有前途的方法是在通用性上妥协,并寻求一定程度上更灵活的交换机,即:

  • 易于高性能和低成本实现。
  • 能够支持广泛的研究。
  • 确保将实验流量与生产流量隔离。
  • 符合供应商对封闭平台的需求。

本文描述的OpenFlow Switch规范,它是实现这四个目标的初步尝试。

2. THE OPENFLOW SWITCH:

OpenFlow Switch的基本思想很简单:利用了这样一个事实,大多数现代以太网交换机和路由器都包含以线速运行的流表(通常由TCAM构建),以实现防火墙、NAT、QOS和收集统计数据。虽然每个供应商的流程表不同,但我们已经确定了在许多交换机和路由器中运行的一组有趣的通用函数OpenFlow利用了这组常见的函数,Openflow提供了一个开放的协议,可以在不同的交换机和路由器中编程流表。网络管理员可以将流量划分为生产和研究流,研究人员可以选择他们的数据包遵循的路径和处理方法,以此控制他们自己的流量。通过这种方式,研究人员可以尝试新的路由协议、安全模型、寻址方案,甚至IP的替代方案。在同一个网络上,生产流量被隔离,并以与今天相同的方式进行处理。OpenFlow交换机的数据路径由一个流表与流条目相关联的操作组成,并且OpenFlow交换机支持的操作集是可扩展的。

但下面我们将描述交换机的最低要求,对于高性能和低成本,数据路径必须具有精心指定的灵活性,这意味着要放弃指定对每个包的任意处理的能力,并寻求更有限但仍然有用的操作范围。因此,本文后面将定义所有OpenFlow交换机所需的基本操作集,OpenFlow交换机至少由三部分组成:

  • 一个流表,其中包含与每个流条目相关联的操作,以告诉交换机如何处理流。
  • 一个连接交换机和远程控制器的安全通道,用来在两者之间传输命令与数据包。
  • 发送命令和数据包的OpenFlow协议OpenFlow协议为控制器与交换机通信提供了一种开放和标准的方式,通过指定一个标准接口(OpenFlow协议)实现在外部定义流表中的条目,避免了研究人员对交换机进行编程的需要。

很有必要对交换机进行分类,一种是OpenFlow专用交换机不支持标准的二层、三层网络处理。另一种是OpenFlow通用交换机支持标准的二层、三层网络处理,同时具备OpenFlow的新特性。

Dedicated OpenFlow switches

专用OpenFlow交换机是一个哑的数据路径元素,它仅仅是在端口之间转发数据包,被远程控制进程所定义。图1显示了一个OpenFlow交换机的示例。

在这种情况下,流被广泛定义,并且仅受到流表特定实现的能力的限制。例如,流可以是TCP连接,或者来自特定MAC地址或IP地址的所有数据包,或者具有相同VLAN标记的所有数据包,或者来自相同交换机端口的所有数据包。对于涉及非IPV4数据包的实验,流可以定义为与特定的头匹配的所有数据包。

每个流表项都有一个与之关联的简单操作,以下是三个最基本的操作(所有专用OpenFlow交换机都必须支持):

  • 将此流的数据包转发到给定端口。这要允许路由数据包通过网络,在大多数交换机中,这种情况预计会以线速发生。
  • 封装此流的数据包并将其转发到控制器。数据包被传送到安全通道,在那里被封装并发送到控制器。这通常用于新流中的第一个数据包,控制器因此可以决定是否应将该流添加到流表中,或者在一些实验中,它可以用来将所有数据包转发给控制器进行处理。
  • 丢弃此流的数据包。可用于安全性、抑制拒绝服务攻击或减少来自终端主机的虚假广播发现通信量。

流表中的每个流表项有三个字段:

  • 定义流的数据包头
  • 定义应如何处理数据包的操作
  • 跟踪每个流的数据包数和字节数以及自上次数据包与流匹配以来的时间的统计信息(帮助删除非活动流)。

在第一代“type 0”交换机中,流头是表1所示的10元组。

TCP流可以由所有10个字段指定,而IP流的定义中可能不包含传输端口。每个头字段都可以是通配符,以允许流的聚合,例如只定义VLAN ID一个字段代表属于此特定VLAN的所有流量。

OpenFlow-enabled switches

通过添加流表安全通道Openflow协议OpenFlow将增强一些商业交换机、路由器和接入点的特性。通常,流表将重用现有硬件,如TCAM,安全通道和协议将被移植到交换机的操作系统上运行。图2显示了一个网络的OpenFlow商业交换机和接入点。

在本例中,所有的流表都由同一个控制器管理,OpenFlow协议允许一个交换机由两个或多个控制器控制,以提高性能或健壮性。我们的目标是使实验能够在现有的生产网络中与常规流量和应用程序一起进行。因此,为了赢得网络管理员的信任,启用OpenFlow的交换机必须将实验流量(由流表处理)与生产流量(由交换机的正常第2层和第3层管道处理)隔离开来。

实现这种分离有两种方法:

  • 一是增加第四个动作:通过交换机的正常处理管道转发此流的数据包
  • 另一个是为实验和生产流量定义单独的VLAN集

这两种方法都允许交换机以通常的方式处理不属于实验的正常生产流量,所有启用OpenFlow-enabled的交换机都需要支持一种或另一种方法,有些将同时支持这两种方法。

Additional features

如果一个交换机支持头格式和上面提到的四个基本操作(在OpenFlow交换机规范中有详细说明),那么我们称它为“type 0”交换机。我们期望许多交换机将支持额外的操作,例如重写包头的部分(例如,对于NAT,或混淆中间链路上的地址)并将包映射到优先级类。同样,一些流表将能够匹配数据包头中的任意字段,从而能够使用新的非IP协议进行实验。当一组特定的特性出现时,我们将定义一个“类型1”交换机。

Controllers

控制器代表实验从流表中添加和删除流条目,例如,静态控制器可能是一个运行在PC上的简单应用程序,用于静态地建立流,以便在实验期间将一组测试的计算机互连。在这种情况下,流类似于当前网络中的VLAN——提供了一种简单的机制来将实验流量与生产网络隔离。从这个角度OpenFlow是Vlan的一个泛化。人们还可以想象,随着实验的进行,会有更复杂的控制器动态地添加或移除流,在一个使用模型中,研究人员可以控制OpenFlow交换机的整个网络,并自由决定如何处理所有流。一个更复杂的控制器可能有多个研究人员,每个人都有不同的帐户和权限,使他们能够在不同的流集合上运行多个独立的实验。被确定为在特定研究人员控制下的流(例如,通过在控制器中运行的策略表)可以被传递到研究人员的用户级控制程序,然后该程序决定是否应将新的流条目添加到交换机网络中。

3. USING OPENFLOW:

如何使用OpenFlow交换机的一个简单例子:

假设Amy(一位研究人员)发明了Amy OSPF作为一种新的路由协议来代替OSPF,她想在一个由OpenFlow交换机组成的网络中尝试她的协议,而不需要更改任何终端主机软件。Amy OSPF将在一个控制器中运行,每当一个新的应用程序流启动时,Amy OSPF将通过一系列OpenFlow交换机选择一条路由,并在路径上的每个交换机中添加一个流条目。在她的实验中,Amy决定从她自己的台式电脑中使用Amy OSPF的流量进入OpenFlow网络,所以她不中断网络,也不会影响其他人。为此,她将一个流定义为通过PC连接的交换机端口进入OpenFlow交换机的所有流量,并添加一个流条目,其操作为“将所有数据包封装并转发到控制器”。当她的数据包到达控制器时,她的新协议选择一条路由,并将一个新的流条目(用于应用程序流)添加到沿所选路径的每个交换机,因此当随后的数据包到达交换机时,它们会被流表快速地(以行速率)处理。

对于一个在实验过程中动态添加和删除流的控制器的性能、可靠性和可伸缩性,会有一些合理的问题:比如这样的集中式控制器是否能够足够快地处理新的流并对流交换机进行编程?当控制器发生故障时会发生什么?在某种程度上,这些问题是在Ethane原型的背景下解决的,该原型使用简单的流交换机和中央控制器。初步结果表明,基于低成本台式PC机的Ethane控制器每秒可以处理10000多个新的流量,足够一个大型大学校园使用。当然,新流程的处理速度将取决于研究人员实验所需处理的复杂性,但它让我们相信有意义的实验是可以进行的,通过使控制器无状态,允许在多个独立设备上进行简单的负载平衡,可以实现可伸缩性和冗余性。

Experiments in a Production Network

很有可能,Amy正在很多人使用中的网络里测试她的新协议,因此会希望网络有两个额外的属性:

  • 属于除了Amy以外的用户的数据包应使用在交换机或路由器中运行的标准,且经过测试的路由协议从“名牌”供应商的设备里进行路由。
  • Amy应该只能对她的流量或网络管理员允许她控制的流量来添加流量条目。

属性1是通过启用OpenFlow的交换机实现的,在Amy的实验中,所有不是来自Amy电脑的数据包的默认操作是通过正常的处理管道转发。Amy自己的数据包将直接转发到传出端口,而不会被正常的管道处理。

属性2取决于控制器,控制器应被视为使研究人员能够实现各种实验的平台,并且可以通过适当设置使用权限或其他方式来限制单个研究人员控制流入口的权限,以此来实现属性2的限制。这些类似权限的机制的确切性质将取决于控制器的实现方式,我们预计会出现各种各样的控制器。作为控制器具体实现的一个例子,一些作者正在研究一个名为NOX的控制器,作为Ethane的后续工作,通过将GENI管理软件扩展到OpenFlow网络,可能会出现一个完全不同的控制器。

More Examples

与任何实验平台一样,实验集或许将超过我们预想——OpenFlow网络中的大多数实验还没有想到。这里为了举例说明,我们提供了一些示例,说明如何使用OpenFlow-Enabled网络来试验新的网络应用程序和体系结构。

Example1 网络管理与访问控制

首先我们使用Ethane作为第一个例子,正是因为它的研究才启发了OpenFlow,事实上OpenFlow可以看作是Ethane的普遍化。Ethane使用特殊实现的控制器,适用于网络管理与控制,通过它管理流的准入与路由。基本思路是这样的,允许网络管理员在中心控制器上定义适用于全网的策略,控制器利用此策略中定义的规则控制交换机,从而控制流的准入与路由。策略中的规则可能是诸如“允许访客使用http但必需经过某个代理”或者是“不允许VoIP电话与便携电脑通信”等。控制器通过绑定名称服务与地址服务等实现数据包与发送者的关联。本质上控制器接管了DNS、DHCP与认证服务,当一个用户接入网络时追踪其MAC地址、所连接的交换机端口或者接入设备、是否认证等信息。这些特征值被用来在定义策略时匹配一个用户的包。试想对Ethane的一种扩展,在控制器中指定一条策略,指示网络将特定的流发送给某个用户进程,从而实现研究者指定的特殊处理。 

Example2  VLANs

OpenFlow能够很容易的为用户提供独立网络,就像VLAN一样。最简单的方法是创建一系列的流,这些流的包从特定端口进入网络,然后在流表的流表项中为其指定行为,行为会为这一系列的流添加指定的VLAN ID。或者是通过端口及MAC地址标识单个用户并为其指定VLAN ID。 一种更动态的方法可能是像Ethane所作的一样,跟踪某个用户接入网络的过程,从而可以知道其具体的位置信息,进而在运行时动态的标识其流量。 

Example 3  移动终端的VOIP客户端WIFI网络切换

用户使用手机中的VOIP客户端通话时,通过一个特别实现的控制器跟踪其位置,当用户从一个WIFI网络移动到另一个WIFI网络时,VOIP客户端重新与新的接入设备建立链拉,而控制器通过OpenFlow功能控制其路由,从而实现通话不中断的无缝切换。

Example 4  非IP网络

目前为止,我们的示例都发生在IP网络中,但OpenFlow并没有对包的具体格式提出任何要求,只要包头能与流表中的流表项能够匹配即可,这就允许对新的名称、寻址、路由方案展开实验。OpenFlow通用交换机有数种方法支持非IP流量。例如,通过以太网桢的头部(源、目的MAC地址)以及一个新的以太网桢类型,或者是在IP层为数据包指定一个新的版本号。更一般的,我们希望将来的交换机允许控制器创建通用掩码(偏移+值+掩码),允许包按研究者指定的方式处理。 

Example 5  处理包而非流

以上示例都涉及到流,当流开始时由控制器决策如何处理。当然,也存在一些有趣的实验,要求每一个包都被处理。例如,检测每一个包的入侵侦测系统,一个显式拥塞控制机制,或者修改包内容:将其从一种格式转换成另一种格式。  在OpenFlow通用交换机网络中有两种处理包的方法。首先,也是最简单的,强制所有流的包通过特定控制器。这样做的话,控制器不会向流表中添加任何一条流表项,只是默认交换机将所有的包转发到控制器。这种方法相当灵活,但需以性能为代价。它可能为新协议的实验提供了一种有效的途径,但不大可能在大型网络中部署。  第二种处理包的方法是将它们路由到可编程的交换机中,例如基于NetFPGA可编程路由器,并在那里进行包处理。好处是包能够以用户定义的方式被线速处理。

如图三所示,本质上OpenFlow通用交换机充当了允许包到达NetFPGA的一块插板,某些情况下NetFPGA板(PCI板,可直接插入到计算机的卡槽中)有可能与OpenFlow通用交换机一起放置在配线间,更有可能是实验室。

4. THE OPENFLOW CONSORTIUM:

OpenFlow联盟旨在推广OpenFlow并维护OpenFlow交换机的规范,该联盟是一个由大学和学院的研究人员和网络管理员组成的团体,他们相信如果在他们的网络中安装支持OpenFlow的交换机,他们的研究任务将得到加强。会员资格对世界各地的学校、学院、大学或政府机构的任何人开放和免费,OpenFlow联盟欢迎那些没有受雇于生产或销售以太网交换机、路由器或无线接入点的公司的个人成员(因为我们希望让联盟免受供应商的影响)。若要加入,请发送电子邮件至join@openflow switch.org,财团网站包含oOpenFlow交换机规范、财团成员列表和OpenFlow交换机的参考实现。

许可模式:OpenFlow交换机规范对所有商业和非商业用途都是免费的,(确切的措辞在网站上)声称“启用OpenFlow”的商业交换机和路由器必须符合OpenFlow Type 0交换机的要求。正如OpenFlow交换机规范中定义的那样,OpenFlow是斯坦福大学的商标,将代表财团受到保护。

5. DEPLOYING OPENFLOW SWITCHES:

我们相信,网络设备供应商有一个有趣的市场机会,可以向研究界出售支持OpenFlow的交换机。数千所高校的每一栋楼都有带以太网交换机和路由器的布线柜,以及遍布校园的无线接入点,我们正在积极与一些交换机和路由器制造商合作,他们正在通过在现有硬件中实现一个流表,将OpenFlow特性添加到他们的产品中,也就是说可以不需要更改硬件,交换机在其现有处理器上运行安全通道软件

我们发现网络设备供应商对添加OpenFlow特性的想法非常开放,大多数供应商希望支持研究社区而不必公开其产品的内部工作原理。我们正在斯坦福大学计算机科学和电子工程系部署大型OpenFlow网络,两栋楼的网络将被运行OpenFlow的交换机所取代。最终,所有流量将在OpenFlow网络上运行,生产流量和实验流量将在网络管理员的控制下隔离在不同的VLAN上。研究人员将控制自己的流量,并能够添加或者删除流量条目。

我们也希望能够通过研究组织,开发多种不同的OpenFlow交换机。在OpenFlow的网站中,“Type 0”交换机在几个不同的平台被设计:Linux操作系统(软件),OpenWRT的(软件,接入点),和NetFPGA(硬件,4个端口每GE)。随着越来越多的设计出现,我们将会在社区里发布。我们鼓励开发人员对照参考设计,测试他们的交换机。 所有张贴在网站上的,关于OpenFlow交换机的参考实现将是开源和免费的,可以用于商业和非商业用途

6. CONCLUSION

我们认为OpenFlow是一种实用的折衷方案,它允许研究人员以统一的方式在异构交换机和路由器上运行实验,而不需要供应商公开其产品的内部工作,也不需要研究人员编写特定于供应商的控制软件。如果我们成功地在我们的校园中部署了OpenFlow网络,我们希望OpenFlow能逐渐在其他大学流行起来,以增加支持实验的网络数量。我们也希望新一代的控制软件出现,使研究人员能够重复使用控制器和实验,并在其他人的工作基础上进一步发展。随着时间的推移,我们希望不同大学的OpenFlow网络将通过隧道技术和覆盖网络相互连接,也许还将通过运行在主干网络中的新的OpenFlow网络来连接大学。

原文地址:https://www.cnblogs.com/chelinger/p/11528064.html