使用统一API对用于转发的服务器和架构编程以用于细粒度网络优化的制作方法

文档序号:17825606发布日期:2019-06-05 22:37阅读:158来源:国知局
使用统一API对用于转发的服务器和架构编程以用于细粒度网络优化的制作方法

本申请要求于2014年5月13日提交的题为"USING UNIFIED API TO PROGRAM BOTH SERVERS AND FABRIC FOR FORWARDING FOR FINE-GRAINED NETWORK OPTIMIZATIONS"的U.S.专利申请序列号14/276399的优先权,其要求于2014年2月10日提交的题为“USING UNIFIED API TO PROGRAM BOTH SERVERS AND FABRIC FOR DATA FORWARDING”的U.S.临时专利申请序列号61/937,933的优先权,其两者的全部内容通过引用合并至此。



背景技术:

数据中心包括大量互连的主机设备。主机设备通常运行多个应用,并且每个应用具有特定网络需求。在标准数据中心网络中,交换机对通过网络路由的数据进行控制而不管应用的具体网络需求。



技术实现要素:

根据本公开的一个方面,控制网络路由的方法包括提供网络。网络包括多个边缘设备和多个核心交换机。多个边缘设备中的每一个边缘设备执行具有应用需求的应用。多个边缘设备中的每一个边缘设备还具有转发引擎。多个核心交换机与多个边缘设备互连。网络还包括被耦合至多个边缘设备以及多个核心交换机中的每一个的网络控制器。所述方法还包括:由网络控制器接收在多个边缘设备中的每一个边缘设备上执行的应用的应用需求。所述方法进一步包括:由网络控制器,确定响应于所接收的应用需求的多个路由。最后,所述方法包括:由网络控制器,对响应于所确定的多个路由的多个边缘设备中的每一个边缘设备的转发引擎以及多个核心交换机中的每一个核心交换机的转发引擎进行编程。

根据本公开的另一方面,用于控制网络路由的系统包括网络。所述网络包括多个边缘设备,所述多个边缘设备中的每一个边缘设备执行具有应用需求的应用。多个边缘设备中的每一个边缘设备还具有转发引擎。网络进一步包括与多个边缘设备互连的多个核心交换机。系统还包括被耦合至多个边缘设备以及多个核心交换机中的每一个的网络控制器。网络控制器被配置成:接收在多个边缘设备中的每一个边缘设备上执行的应用的应用需求。网络控制器还被配置成:确定响应于所接收的应用需求的多个路由;并且对响应于所确定的多个路由的多个边缘设备中的每一个边缘设备的转发引擎以及多个核心交换机中的每一个核心交换机进行编程。

附图说明

本领域普通技术人员将理解是本文中所描述的图仅是说明性目的。应该理解的是在一些情况下所描述的实施方式的各个方面可以是夸大或放大示出的以促进对所述实施方式的理解。在图中,贯穿各个图,相同附图表记通常指相同特征、功能相似、和/或结构相似的元素。附图不是必需按比例绘制的,而是将重点放在对本教导的原理进行说明。附图不是旨在以任何方式对本教导的范围做出限制。参考以下附图从以下说明性描述可以更好地理解系统和方法,在附图中:

图1图示了示例数据中心网络。

图2图示了用于使用在图1中所图示的网络控制器来控制网络路由的方法的流程图。

图3图示了用于使用在图1中所图示的网络控制器来通过网络路由数据的方法的流程图。

具体实施方式

在上面所介绍的以及在下面更详细讨论的各种概念可以是以多种方式中的任何一种来实现的,因为所描述的概念并不局限于任何特定的实施方式。主要为了说明性目的提供了特定实施方式和应用的示例。

在数据中心,当网络无法按照满足应用的网络需求的方式来路由数据时,应用的性能可能受到不利影响。当具有不同类型的网络需求的不同应用都是在相同数据中心之内执行时加剧了所述问题。

作为概述,本公开提出了一种用于提高网络优化的系统。尤其是,本公开讨论了用于对动态网络中的数据路由进行控制的统一系统。在一些实施方式中,边缘设备(即,主机或外部交换机)通过网络架构(即,多个内部交换机)互连。主机和交换机包括用于确定传入业务的下一目的地的转发引擎。

图1图示了示例数据中心网络100。数据中心网络100包括逻辑上集中式控制器190。数据中心网络100还包括其每一个都包含转发引擎107的多个核心交换机101。网络100进一步包括多个网络边缘设备102。每个网络边缘设备102都被耦合至交换机104。每个网络边缘设备102包括用于执行一个或多个应用106的多个主机105。核心交换机101和边缘设备102通过多个数据链接103连接。核心交换机101和边缘设备102通过链接110被连接至网络控制器190。在一些实施方式中,网络控制器190通过一个或多个数据链接103被连接至网络,并且网络控制器190使用数据链接103以与核心交换机101和边缘设备102中的每一个进行通信。

网络100包括多个核心交换机101。在一些实施方式中,网络100包括数千、数万、或者数十万的核心交换机104。核心交换机101是路由器、交换芯片、服务器的集合、或者能够将信息从一个端口路由到另一个的任何其它设备或设备的布置。在一些实施方式中,核心交换机101形成了网络100中的一个或多个聚合层,并且在多个边缘设备102之间路由数据。例如,核心交换机101c可以用于将数据从边缘设备102a路由到边缘设备102b。

核心交换机101(以及如下所述的交换机104)包括转发引擎107。转发引擎107对传入的数据分组进行处理以针对数据分组确定数据分组的下一目的地或者路由。转发引擎107从数据分组提取地址信息(例如,从分组报头提取IP地址或者其它数据)并且对它进行处理以确定如何使用本文中所述的专用数据结构和方法来处理数据分组(例如,数据分组接下来要被转发到哪个核心交换机101或边缘设备102)。在一些实施方式中,转发引擎107参考路由表、转发信息库、路由信息库、或者用于存储路由数据的类似数据结构(通常在本文中称为数据路由结构)。在一些实施方式中,数据路由结构识别被配置为响应于应用106的不同需求的多个路由。

在一些实施方式中,转发引擎107是作为专用电路(例如ASIC)实现的。在一些实施方式中,转发引擎107是作为被存储在计算机可访问的存储器中的并可由一个或多个计算处理器执行的计算机可执行指令集的集合来实现的。

网络100还包括多个边缘设备102。每个边缘设备102包括交换机104和多个主机105,其中每一个执行一个或多个应用106。给定边缘设备102的主机105通过交换机104互连。

边缘设备102中的每一个包括多个(n个)主机105。主机105是诸如如下所述的那些的服务器或其它计算系统。在一些实现中,将给定边缘设备102的主机105布置在服务器机架中并且每个服务器机架通过交换机104与核心交换机101进行通信。在一些实施方式中,将多个边缘设备102组在一起以形成边缘设备102的超级块。在一些实施方式中,超级块的边缘设备102中的每一个被各自耦合至相同聚合层设备(例如,核心交换机101)。

每个主机105执行一个或多个应用106。应用106是存储在计算机可读介质上的处理器可执行指令的集合。还可以将应用106称为程序、软件、软件应用、脚本、或者代码。每个应用106通过网络100来路由数据并且具有硬的和软的与网络相关的需求。所述需求可包括带宽需求、延时需求、或者诸如SSL,负载平衡,通过中间节点的特定路径,或者可能需要处理数据的其它特殊服务这样的特殊服务需求。软性需求是应用的性能基本上最佳的网络需求。因此,当不满足软性需求时,应用106仍可继续进行。然而,硬性需求是应用106要继续进行所必需满足的网络需求。例如,主机105可以执行需要与另一主机105低延迟数据传递的通信应用。在一些实施方式中,交换机104是虚拟交换机并且像应用106一样在主机105上执行。

如上所述,应用106通过网络100路由数据。在一些实施方式中,应用106访问网络控制器190所提供的数据路由结构以确定它生成了数据分组的路由。例如,依照应用106在不同时间的不同需求,数据路由结构可以包括不同路由。当应用106生成数据分组时,应用106构造数据分组以便由交换机101和104通过网络对所述数据分组进行适当地路由。在一些实施方式中,应用106将路由信息编码在分组的报头中。在一些实施方式中,应用106(或者网络100的其它组件)使用源路由、动态源路由、多协议标签交换(MPLS)、通用路由封装(GRE)、松源路由、或者其组合以通过网络100来路由数据。例如,应用106可使用MPLS堆叠的静态标签集或者嵌套GRE报头集而在其数据分组中的每一个中包含路由信息。作为使用GRE的示例,参考数据路由结构的应用106为其数据确定响应于应用106的当前需求的适当路由。此后应用106将路由信息封装在多个嵌套报头中。此后交换机104将数据分组传送到第一核心交换机101。在每一跳(例如,沿着路由的交换机101)处,接收交换机暴露下一封装的报头以识别下一跳,直到到达最终目的地。

多个边缘设备102中的每一个边缘设备还包括交换机104。在一些实施方式中,交换机104是用于在给定边缘设备102之内内部路由数据(即,在边缘设备102的多个主机105之间)并且外部路由到给定边缘设备102(即,路由到特定核心交换机101)的架顶式(TOP)交换机。在一些实施方式中,边缘设备102的交换机104是路由器、交换芯片、或者能够将信息从一个端口路由到另一个的任何其它设备或设备的布置。在一些实施方式中,边缘设备102的交换机104是虚拟交换机并且核心交换机101是物理交换机。

网络100还包括网络控制器190。网络控制器190包括利用模块108和路由编程模块109。下面依次描述网络控制器190的组件,但是通常网络控制器190通过使用单个统一API对交换机101和边缘设备102进行编程以响应于应用需求而路由来增加网络100的应用的利用。在一些实施方式中,网络控制器190降低了数据中心网络配置的复杂性。例如,可将主机添加到未具体提供以满足其应用需求的网络,而不是提供网络的特定区域以满足特定应用需求并且此后将新主机放置在响应于它们执行的应用的网络中。此后可以由用于对每个应用需求配置特定路由的网络控制器来满足特定应用需求。

网络控制器190的组件可以是通过专用逻辑电路(例如,FPGA(现场可编程门阵列)、ASIC(专用集成电路))或者通用计算设备来实现的。

在一些实施方式中,网络100包括多个网络控制器190。当网络100包括多个网络控制器190时,多个网络控制器190中的每一个网络控制器仅控制网络100的一部分。例如,每个网络控制器190可以生成仅属于特定超级块的边缘设备102的路由。在所述示例中,如果数据将被路由到第二超级块之内的目的主机,那么第一网络控制器提供到第二超级块的路由,但是一旦数据到达第二超级块,则第二网络控制器提供到目的主机的路由。

网络控制器190包括利用模块108和路由编程模块109。利用模块108周期性地检索(或发送)在网络100中执行的每个应用106的硬性和软性需求。在一些实施方式中,利用模块108是网络控制器190的组件,而在其它实施方式中,利用模块108与网络控制器190相分离。在一些实施方式中,利用模块108包括API,该API可使应用106能够与利用模块108接口连接。在一些实施方式中,利用模块108将与网络利用有关的反馈提供给应用106。例如,利用模块108可以通知主机105网络100何时具有足够可用的资源以满足主机105希望执行的应用106的硬性和/或软性需求。进一步在该示例中,可以执行需要大量带宽以适当执行的第一应用。利用模块108可以监视网络并且通知主机105(或第一应用)何时网络100中足够带宽可用以使第一应用适当地执行。在一些实施方式中,利用模块108还收集与网络100有关的信息。例如,利用模块108可以收集与核心交换机101、边缘设备102、以及在线或脱机链接有关的信息。

网络控制器还包括路由编程模块109。如上所述,路由编程模块109使用单个统一API对网络100的数据路由结构和转发引擎107进行编程。在一些实施方式中,路由编程模块109是专用电路(例如,ASIC),并且在其它实施方式中,路由编程模块109被实现为存储在计算机可访问的存储器中的并且可由一个或多个计算处理器执行的一组计算机可执行指令集。路由编程模块109使用相同应用编程接口(API)或协议来对每个交换机101和104的数据路由结构进行编程,所述协议诸如但不局限于OpenFlow、开放式虚拟交换机数据库管理协议(OVSDB)、网络配置协议(NETCONF),思科位置标识符分离协议(LISP)、或者边界网关协议(BGP)。路由编程模块109吸收利用模块108所收集的利用信息以生成多个路由以满足多个应用需求。此后路由编程模块109利用多个所生成的路由对网络100的交换机101以及边缘设备102中的每一个进行编程。在一些实施方式中,网络控制器190用多个数据路由结构对每个转发引擎107进行编程,转发引擎使用响应于当前应用需求使用所述多个数据路由结构。例如,用要在第一需求集(例如,现在和将来的应用需求)之下所使用的第一数据路由结构以及要在第二需求集之下使用的第二数据路由结构来对交换机104进行编程。此后,响应于边缘设备102的需求,边缘设备102选择当转发特定数据分组时的数据路由结构。在一些实施方式中,将单个交换机的一个或多个数据路由结构存储在单个路由表或类似结构中。在这些实施方式中,转发引擎107使用哈希或其它功能以选择数据分组的适当路由或下一跳。进一步对与图2和3中所图示的方法有关的网络控制器190及其组件进行描述。

图2图示了用于控制网络路由的方法200的流程图。首先,提供网络(步骤201)。此后,网络控制器接收应用需求(步骤202)。接着,网络控制器确定响应于所接收的应用需求的路由(步骤203)。最后,用多个路由对网络的交换机进行编程(步骤204)。

如上所阐述的,并且参考图1,提供网络(步骤201)。如在图1中所图示的,网络包括多个互连的核心交换机101和边缘设备102。边缘设备102执行一个或多个应用106。每个应用106具有诸如但不局限于带宽需求和延迟需求的一个或多个需求。

接下来,网络控制器接收至少一个应用需求(步骤202)。经由利用模块,网络控制器可以向在边缘设备上执行的应用提供API,这可使应用利用其应用需求来更新网络控制器。在一些实施方式中,应用基本上实时地向利用模块提供其需求(即,随着应用的需求的发展),并且在其它实施方式中,应用在应用的启动阶段期间或者以预定间隔向网络控制器提供其需求。应用需求包括诸如但不局限于容量、带宽、延迟、以及像SSL的特殊服务这样的现在和将来的需求。

响应于接收需求,网络控制器确定多个路由(步骤203)并且用该路由对主机和转发引擎进行编程(步骤204)。在应用基本上实时地向网络控制器提供其需要的示例中,当第一边缘设备对需要被传递到第二边缘设备的数据进行处理时,第一边缘设备可以向网络控制器指示第一边缘设备不久将需要大量带宽以传递数据。因此,网络控制器确定第一边缘设备要使用的新路由并且用经更新的数据路由结构对边缘设备进行编程,所述更新的数据路由结构包括被配置为向边缘设备提供所需带宽的路由。

图3图示了通过网络路由数据的方法300的流程图。首先,边缘设备将第一应用需求和第二应用需求传送到网络控制器(步骤301)。此后,边缘设备接收第一数据路由结构和第二数据路由结构(步骤302)。接下来,边缘设备确定第一路由(步骤303)。此后边缘设备用所选路由对数据分组进行编码(步骤304)。

如上所阐述的,方法300包括将第一和第二应用需求传送到网络控制器(步骤301)。如上所述,每个边缘设备包括用于执行应用的一个或多个主机。边缘设备将它执行的应用的需求传送到网络控制器。例如,并且参考图1,假设主机105(A)运行第一应用和第二应用。假定第一应用是延迟敏感并且第二应用是带宽敏感(即,需要大量带宽)。此后主机将这些特定带宽和延迟需求传送到网络控制器。

接下来,边缘设备接收分别被配置为响应于第一和第二应用需求的第一数据路由结构和第二数据路由结构。如上所述,网络控制器生成包括响应于不同应用需求的不同路由的数据路由结构。在一些实施方式中,利用基于预测的业务算法生成数据路由结构。基于预测的业务算法收集来自网络的性能信息并且根据通过网络的平均业务来确定路由。可以在相对短的时间内收集性能信息以提供“在线”自适应路由,或者可以在相对长的时间内收集性能信息以提供含有通过网络的业务需求的合并的历史平均值的“离线”路由。在其它实施方式中,使用无关路由算法生成数据路由结构,其中网络控制器生成仅响应于源和目标节点的路由结构。在另外的其它实施方式中,使用自适应路由算法和无关路由算法的混合生成数据路由结构。例如,在低业务需求的时段期间,无关路由算法可以用于生成数据路由结构,但是在需求增加的时段期间自适应路由算法可以用于生成数据路由结构。网络控制器可以向边缘设备提供包括对需要低延迟的数据的专用路由的数据路由结构。在一些实施方式中,为了提高网络效率,在用多个数据路由结构对网络的交换机和边缘设备进行编程之前,网络控制器收集来自基本上所有边缘设备(以及在此上执行的应用)的应用需求。例如,网络控制器可以等待将要接收的基本上所有应用需求以便它不会生成包括冲突路由(例如,具有需要大量带宽以通过与执行延迟敏感应用的第二边缘设备所共享的链接来同时路由数据的第一边缘设备)的数据路由结构。

接下来,边缘设备确定第一路由(步骤303)。如上所述,每个边缘设备的主机设备可以执行多个应用,每个应用具有不同需求。应用参考数据路由结构并且选择响应于应用的需求的第一路由。继续主机105(A)运行对延迟敏感的第一应用以及对带宽敏感的第二应用的上述示例,所述第二应用参考数据路由结构以确定具有带宽敏感需求的应用的路由。返回参考图1,并且继续该示例,如果主机105(A)运行对延迟敏感的第一应用以及对带宽敏感的第二应用,那么网络控制器可以用四个数据路由结构对交换机104(A)进行编程。这四个数据路由结构可以包括:(1)使用核心交换机101(D)被送往主机105(B)的第一应用数据分组的路由;(2)使用核心交换机101(E)被送往主机105(C)的第一应用数据分组的路由;(3)使用核心交换机101(D)和核心交换机101(G)被送往主机105(B)的第二应用数据分组的路由;(4)使用核心交换机101(D)和核心交换机101(G)被送往主机105(C)的第二应用数据分组的路由。在该示例中,应用选择路由(3)以将来自主机105a的带宽敏感数据分组路由到主机105b。在一些实施方式中,所选路由指示通过网络的完整路径,或者在松源路由的情况下,仅指定沿着路由的点。

在确定第一数据路由之后,应用用第一路由对数据分组进行编码(步骤304)。例如,当应用构造了数据分组时,应用可以使用GRE以对数据分组的路由进行编码。在该示例中,应用创建具有多个嵌套报头的数据分组。一旦沿着路由到达每个交换机,交换机移除最外面以显露它接下来将数据分组转发到哪里。

在该说明书中所描述的主题和操作的实施方式可是在数字电子电路,或者包括在该说明书中所公开的结构及其结构等效体的计算机软件、固件、或硬件,或者这些中的一个或多个的组合中实现的。在该说明书中所描述的主题可是作为一个或多个计算机程序(即,计算机程序指令的一个或多个模块)被实现,所述一个或多个计算机程序产品被编码在一个或多个计算机存储介质上以由数据处理装置执行或者对数据处理装置的操作进行控制。

计算机可读介质可是计算机可读存储设备、计算机可读存储衬底、随机或串行存取存储器阵列或设备、或者这些中的一个或多个的组合,或者被包括在其中。此外,虽然计算机可读介质不是传播信号,但是计算机存储介质可是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质还可是一个或多个单独的组件或介质(例如,多个CD、磁盘、或其它存储设备)或者包含在一个或多个单独的组件或介质之中。因此,计算机可读介质是有形的且非暂时性的。

在该说明书中所描述的操作可是数据处理装置对存储在一个或多个计算机可读存储设备上的或者从其它来源所接收的数据所执行的。术语“数据处理装置”或者“计算设备”涵盖用于处理数据的所有类型的装置、设备、及机器,其包括例如可编程处理器、计算机、片上系统、或者多个、或者先前的组合。装置可包括例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)的专用逻辑电路。除了硬件之外,装置还可包括为所讨论的计算机程序创建执行环境的代码(例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行环境、虚拟机、或它们中的一个或多个的组合的代码)。装置和执行环境可实现诸如Web服务、分布式计算和网格计算基础结构的各种不同的计算模型基础结构。

计算机程序(也被称为程序、软件、软件应用、脚本、或者代码)可是以其包括编译或解释型语言、说明性或过程语言的任何形式的编程语言编写的,并且它可是以任何形式部署的,其包括作为独立程序或模块、组件、子例程、对象、或者适合在计算环境中使用的其它单元。计算机程序可以但不是必须与文件系统中的文件相对应。可将程序存储在容纳其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、存储在专用于所述程序的单个文件中、或者存储在多个协同文件(例如,用于存储一个或多个模块、子程序、或代码的部分的文件)中。计算机程序可被部署为在一个计算机上或在位于一个位置或跨多个位置分布且通过通信网络互连的多个计算机上执行。

例如,适合于执行计算机程序的处理器包括通用和专用微处理器这两者以及任何类型的计算机的一个或多个处理器。通常,处理器将接收来自只读存储器或随机存取存储器或这两者的指令和数据。计算机的基本单元是用于根据指令来执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如磁、磁光盘、或光盘)或者被可操作地耦合以接收来自所述一个或多个大容量存储设备的数据或者将数据传输到所述一个或多个大容量存储设备或者这两者。然而,计算机不是必须具有这样的设备。

虽然该说明书包含许多特定实现细节,但是不应将这些解释为对任何发明的范围或者所要求的保护范围的限制,而相反应解释为对特定发明的特定实施方式所特有的特征的描述。在该说明书中在单独实施方式的上下文中所描述的某些特征还可在单个实施方式中组合地实现。相反,在单个实施方式的上下文中所描述的各种特征还可以独立或以任何适合的子组合而在多个实施方式中实现的。此外,尽管在上文中可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下可以从该组合除去,并且要求保护的组合可以针对子组合或子组合的变化。

类似地,虽然在图中按特定顺序描述了操作,但是这不应被理解为需要按所示的特定顺序或者按相继顺序来执行这样的操作或者必需执行所有图示的操作以实现希望结果。在某些境况下,多任务和并行处理可以是有利的。此外,在不应将上面所描述的实施方式中的各种系组件的分离理解为在所有实施方式中需要这样的分离,并且应理解的是通常可将所述程序组件和系统集成在单个产品中或封装到多个产品之中。

因而,已对该主题的特定实施方式进行了描述。其它实施方式在以下权利要求的范围之内。在一些情况下,在权利要求中列举的动作可按不同顺序执行并且仍可实期望结果。另外,在附图中所描绘的处理不是必须需要所示的特定顺序或相继顺序以实现期望结果。在某些实施方式中,多任务和并行处理可以是有利的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1