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交换机的整个网络,并自由决定如何处理所有流。一个更复杂的控制器可能有多个研究人员,每个人都有不同的帐户和权限,使他们能够在不同的流集合上运行多个独立的实验。被确定为在特定研究人员控制下的流(例如,通过在控制器中运行的策略表)可以被传递到研究人员的用户级控制程序,然后该程序决定是否应将新的流条目添加到交换机网络中。

猜你喜欢

转载自www.cnblogs.com/chelinger/p/11528064.html