本申请涉及网络服务的领域,并且更具体地,涉及用于动态虚拟化网络功能(VNF)的动态级联聚类。
背景技术:
当代网络拓扑可能要求提供大量不同类型的资源。例如,当网络分组到达企业,每个分组可能需要经受节点链中的许多离散服务。随着流量等级增加,额外的服务器可被联机以处理额外的流量。这些例如可由诸如防火墙、路由器、以及垃圾邮件过滤器之类的专用或独立网络应用来提供。
附图说明
当与附图一起阅读时,本公开从下列详细描述被最好地理解。强调的是,根据行业的标准做法,各个特征未被按比例绘制并且仅用于说明目的。实际上,各个特征的尺寸为了讨论的清楚性可被任意地增加或减小。
图1是根据本说明书的一个或多个示例的分布式网络环境的框图;
图2是根据本说明书的一个或多个示例的计算设备的框图;
图3是根据本说明书的一个或多个示例的动态级联聚类的框图;
图4是根据本说明书的一个或多个示例的动态级联聚类的框图;
图5是根据本说明书的一个或多个示例的动态级联聚类的框图;
图6是根据本说明书的一个或多个示例的动态级联聚类的框图;
图7是根据本说明书的一个或多个示例的动态级联聚类的框图;
图8是根据本说明书的一个或多个示例的动态级联聚类的框图;
图9是根据本说明书的一个或多个示例的动态级联聚类的框图;
图10是根据本说明书的一个或多个示例的动态级联聚类的框图;
图11是根据本说明书的一个或多个示例的动态级联聚类的框图;
图12是根据本说明书的一个或多个示例的动态级联聚类的框图。
具体实施方式
概览
在示例中,服务器架构针对提供资源聚类的动态级联节点链被描述。级联节点链可包括被提供为头节点、零个或多个中间节点、以及尾节点的一个或多个资源实例。每个节点可包括流表中的离散数目的可用资源条目。当流量进入头节点,每个节点试图将流量匹配到它的流表中的条目。若未发现匹配,则分组被下行链路到链中的下一节点。若分组在没有匹配的情况下到达尾节点,则它被踢到控制器。若存在可用条目,则控制器然后可提供相匹配的条目。若不存在可用条目,则控制器可产生新的资源实例。当达到聚类的全容量时,不匹配条目可被丢弃。
在第一示例中,公开了网络设备,包括:第一网络接口,用于通信地耦接到数据网络;第二网络接口,用于通信地耦接到包括级联节点链中的一个或多个资源实例的数据平面;以及资源控制器引擎,可操作用于接收第一网络接口上的网络流;将网络流经由第二网络接口发送到数据平面;接收网络流从数据平面回来的网络流;以及配设资源实例上的流条目以匹配网络流。
在第二示例中,公开了提供虚拟化网络功能的方法,包括:接收第一网络接口上的网络流;将网络流经由第二网络接口发送到数据平面;接收网络流从数据平面回来的网络流;以及配设资源实例上的流条目以匹配网络流。
在第三示例中,公开了在其上存储有可执行指令的一个或多个计算机可读介质,该可执行指令可操作用于指导处理器提供虚拟化网络功能,包括:接收第一网络接口上的网络流;将网络流经由第二网络接口发送到数据平面;接收网络流从数据平面回来的网络流;以及配设资源实例上的流条目以匹配网络流。
示例实施例
下列公开提供了用于实现本公开的不同特征的许多不同的实施例或示例。组件和布置的特定示例在下面被描述以简化本公开。当然,这些仅是示例并且不旨在是限制性的。此外,本公开可重复各个示例中的参考标号和/或字母。该重复是为了简单和清楚的目的,并且它自身不指定所讨论的各个实施例和/或配置之间的关系。
不同的实施例可具有不同的优势,并且没有特定优势是任何实施例所必需要求的。
在示例架构中,企业可在一个或多个分支机构的边缘部署多个服务。然而,企业可能发现专用独立应用的成本至少部分地不适用,例如,由于它在某些实施例中是每个特征禁止的(per-feature prohibitive)、不灵活的、安装缓慢的、和/或难以维护的。在其他实施例中,功能可由集成访问路由器提供,仅提供有限特征集。随着企业发展,服务和应用可能迁移到企业数据中心或公共云,从而引起企业网络架构中的变化。额外的挑战可在所谓的“自带设备”(BYOD)环境中被发现,在BYOD环境中,用户被许可提供他们自己的优选计算设备。这可能要求应用额外的网络服务以确保网络安全和完整,并防止数据丢失或泄露。
为了成本高效地解决这些数据需求,企业可经由网络功能虚拟化(NFV)而不是在用户驻地设备(CPE)上来提供服务。网络功能虚拟化基础设施(NFVI)提供一个或多个服务作为虚拟化网络功能(VNF)。应理解的是,在该上下文中,“服务”将被广义地理解为包括可被应用于网络分组的任意服务或动作,以非限制性示例的方式,例如,域名系统(DNS)翻译、目录服务、电子邮件、打印、文件服务、时间服务、互联网协议电话(VoIP)、认证、路由、防火墙、区域防火墙、应用防火墙、深度分组检测、防病毒、垃圾邮件过滤、防恶意软件、服务质量、网流、广域应用服务、网络地址翻译、IP安全、NAT、IPSec、以及应用可视化和控制。
这种NFV可使得服务提供商能够使用它的NFVI来操作VNF实例,这提供了实现企业CPE以及它自己的PE路由器的潜在另一VNF实例所要求的功能。因此,不同于企业将它自己的资本投资到联网基础设施的部署,服务提供商可以能够提供高级联网特征作为以费用为基础的测量服务。
随着企业的业务增长,VNF实例的使用可能增加。但由于网络服务的特殊性,添加更多的VNF实例可能影响整个拓扑,这在某些上下文中是不可接受的。这可驱使服务提供商来寻找用于扩展被分配给一个VNF实例的NFVI资源实例,并同时动态地管理那些资源的解决方案。
对此的一种选择是全网格拓扑,用于跨提供服务的资源实例来同步服务状态,以便每个实例可处理来自任意双向数据流的任意分组,即使当流是不对称的。然而,该方法要求实例之间的低延迟以确保消息的顺序以及服务状态的一致性。同时,每个分组可触发N-1个消息以便在N个实例中同步状态,这在某些情况下将不具有可接受的效率并可能导致CPU周期的不可接受的高消耗。这些问题随着资源实例的数目增加可能加剧。
另一选择是“星型”拓扑,其中,中央调度器根据它的CPU负载或存储器使用将分组转移到资源实例,并且然后进行服务的资源实例将分组返回到调度器以便被转发出去。然而,该拓扑在某些上下文中可能是不适用的,这是由于当调度器操作数据平面和控制平面二者时,它变成了瓶颈和单一故障点。
资源实例被动态地配设并且控制平面与数据平面相分离的级联节点链的某些实施例,可提供优于全网格拓扑和星型拓扑的优势。在级联节点链中,资源实例的聚类在数据平面上被提供,并且控制器在控制平面上被提供。级联节点链可包括被配设为头节点、零个或多个中间节点、以及尾节点的一个或多个资源实例。每个节点可包括流表中的离散数目的可用资源条目。当流量进入头节点,每个节点试图将流量匹配到它的流表中的条目。若未发现匹配,则分组被下行链路到链中的下一节点。若分组在没有匹配的情况下到达尾节点,则它被踢到控制器。若存在可用条目,则控制器然后可配设匹配的条目。若不存在可用条目,则控制器可产生新的资源实例。当达到聚类的全容量时,不匹配条目可被丢弃。
图1是根据本说明书的一个或多个示例的分布式计算系统100的网络级示图。在分布式计算系统100中,一个或多个最终用户客户端130经由互联网170连接于一个或多个服务器类计算设备。以非限制性示例的方式,服务器类计算设备可包括机架式服务器120、控制器110、以及一个或多个独立服务器140,例如,独立服务器140-1、140-2、以及140-3。在示例中,最终用户客户端130被提供客户端软件以访问服务器类计算机上的计算资源。
在该示例中,机架式服务器120包括多个虚拟机122,即,虚拟机122-1、虚拟机122-2、虚拟机122-3、以及虚拟机122-4。还应注意的是,机架式服务器120可提供管理程序环境,以便虚拟机122可根据负载和实时需求被动态地配设。控制器110还可被提供工作负载服务器功能,被配置为在诸如虚拟机122和独立服务器140之类的多个服务器类计算机之间有效地分发服务器任务。
图2是根据本说明书的一个或多个示例的服务器140的框图。服务器140可以是任意适当的计算设备。在各个实施例中,以非限制示例的方式,“计算设备”可以是或可包括下述项:计算机、嵌入式计算机、嵌入式控制器、嵌入式传感器、个人数字助理(PDA)、膝上型计算机、蜂窝电话、IP电话、智能电话、平板计算机、可转换平板计算机、手持计算器、或用于处理和传送数据的任意其他电子、微电子、或微电机设备。
服务器140包括被连接于存储器220的处理器210,存储器220在其中存储有用于提供操作系统222和资源引擎224的可执行指令。服务器140的其他组件包括存储装置250、网络接口260、以及外围设备接口240。
在示例中,处理器210经由存储器总线270-3被通信地耦接到存储器220,例如,存储器总线270-3可以是直接存储器访问(DMA)总线。处理器210可经由系统总线270-1被通信地耦接到其他设备。如贯穿本说明书使用的,“总线”包括任意有线或无线互连线、网络、连接、束、单个总线、多个总线、交叉网络、单级网络、多级网络或可操作来在计算设备的部分之间或计算设备之间运载数据、信号、或功率的其他传导介质。应注意的是,这些使用仅以非限制性示例的方式被公开,并且某些实施例可省略上述总线中的一个或多个总线,而其他实施例可采用额外的或不同的总线。
在各个示例中,“处理器”可包括提供可编程逻辑的硬件、软件、或固件的任意组合,以非限制示例的方式,包括微处理器、数字信号处理器、现场可编程门阵列、可编程逻辑阵列、专用集成电路、或虚拟机处理器。
处理器210可经由DMA总线270-3被连接到DMA配置中的存储器220。为了简化本公开,存储器220被公开为单个逻辑块,但在物理实施例中可包括任意适当的一个或多个易失性或非易失性存储器技术的一个或多个块,易失性或非易失性存储器技术例如包括DDR RAM、SRAM、DRAM、缓存、L1或L2存储器、片上存储器、寄存器、闪存、ROM、光介质、虚拟存储器区域、磁或磁带存储器、或类似项。在某些实施例中,存储器220可包括相对低延迟的易失性主存储器,而存储装置250可包括相对较高延迟的非易失性存储器。然而,存储器220和存储装置250不需要是物理上分离的设备,并且在某些示例中可仅表示功能的逻辑分离。还应注意的是,尽管DMA以非限制性示例的方式被公开,但DMA不是与本说明书相一致的唯一协议,并且其他存储器架构是可用的。
存储装置250可以是任意种类的存储器220,或可以是独立的设备,例如,硬盘驱动器、固态驱动器、外围存储装置、独立磁盘冗余阵列(RAID)、附网存储装置、光存储装置、磁带驱动器、备份系统、云存储装置、或上述项的任意组合。存储装置250可以是一个或多个数据库或在其中可包括被存储在其他配置中的数据,并可包括诸如操作系统222和资源引擎224的软件部分之类的操作软件的存储副本。许多其他配置还是可能的,并且旨在被包含在本说明书的广义范围内。
网络接口260可被提供以将服务器140通信地耦接到有线或无线网络。如贯穿本说明书使用的,“网络”可包括可操作来在计算设备之内或之间交换数据或信息的任意通信平台,以非限制性示例的方式,包括自组本地网络、提供具有电子交互能力的计算设备的互联网架构、计算设备可用来执行事务的简易老式电话系统(POTS)(其中,计算设备可由人类操作员来辅助或可将数据手动键入到电话或其他适当的电子设备中)、提供系统中的任意两个节点之间的通信接口或交换的任意分组数据网络(PDN)、或任意局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网(VPN)、内联网、或辅助网络或电话环境中的通信的任意其他适当的架构或系统。
在一个示例中,资源引擎224是执行方法的实用程序和程序,方法例如为贯穿本说明书结合资源实例所描述的方法(例如,参见图4-12)、或根据本说明书的其他方法。在各个实施例中,资源引擎224可被体现在硬件、软件、固件或上述项的某些组合中。例如,在某些情况下,资源引擎224可包括被设计为执行方法或其中的部分的专用集成电路,并还可包括可操作来指导处理器执行方法的软件指令。在某些情况下,资源引擎224可作为“后台程序”进程来运行。不论在硬件、软件、固件、还是上述项的任意组合中被实现,“后台程序”可包括作为下述项来运行的任意程序或可执行指令序列:后台进程、终止及常驻程序、服务、系统扩展、控制平面、启动程序、BIOS子程序、或在没有直接用户交互的情况下进行操作的任意类似程序。还应注意的是,资源引擎224仅以非限制性示例的方式被提供,并且包括交互式或用户模式软件的其他硬件和软件还可结合资源引擎224、除了资源引擎224之外、或替代资源引擎224被提供,以执行根据本说明书的方法。
在一个示例中,资源引擎224包括被存储在非暂态介质上可操作来执行根据本说明书的资源实例方法的可执行指令。在适当的时间(例如,当启动服务器140时)或根据来自操作系统222或用户120的命令,处理器210可从存储装置250取回资源引擎224(或其中的软件部分)的副本,并将其加载到存储器220中。处理器210然后可迭代地执行资源引擎224的指令。
外围设备接口240可被配置为与连接到服务器140的任意辅助设备相接口,但这不必是服务器140的核心架构的一部分。外围设备可操作来向服务器140提供扩展功能,并可以完全或不完全地取决于服务器140。在某些情况下,外围设备可以是独立的计算设备。外围设备可包括输入和输出设备,以非限制性示例的方式,例如,显示器、终端、打印机、键盘、鼠标、调制解调器、网络控制器、传感器、换能器、执行机构、控制器、数据采集总线、摄像头、麦克风、扬声器、或外部存储装置。
图3是根据本说明书的一个或多个示例的服务器140的框图。服务器140可以是任意适当的计算设备,如结合图2所描述的。通常,图2的定义和示例可被认为同样适用于图3,除非另有特别说明。
服务器140包括被连接到存储器320的处理器310,存储器320在其中存储有用于提供操作系统322和资源控制器引擎324的可执行指令。服务器140的其他组件包括存储装置350、网络接口360、以及外围设备接口340。
在示例中,处理器310经由存储器总线370-3被通信地耦接到存储器320,存储器总线370-3例如可以是直接存储器访问(DMA)总线。处理器310可经由系统总线370-1被通信地耦接到其他设备。
处理器310可经由DMA总线370-3被连接到DMA配置中的存储器320。为了简化本公开,存储器320被公开为单个逻辑块,但在物理实施例中可包括任意适当的一个或多个易失性或非易失性存储器技术的一个或多个块,如结合图2的存储器220所描述的。在某些实施例中,存储器320可包括相对低延迟的易失性主存储器,而存储装置350可包括相对较高延迟的非易失性存储器。然而,存储器320和存储装置350不需要是物理上分离的设备,如结合图2所进一步描述的。
存储装置350可以是任意种类的存储器320,或可以是独立的设备,如结合图2的存储装置250所描述的。存储装置350可以是一个或多个数据库或在其中可包括被存储在其他配置中的数据,并可包括诸如操作系统322和资源控制器引擎324的软件部分之类的操作软件的存储副本。许多其他配置还是可能的,并且旨在被包含在本说明书的广义范围内。
网络接口360可被提供以将服务器140通信地耦接到有线或无线网络。如贯穿本说明书使用的,“网络”可包括可操作来在计算设备之内或之间交换数据或信息的任意通信平台,以非限制性示例的方式,包括自组本地网络、提供具有电子交互能力的计算设备的互联网架构、计算设备可用来执行事务的简易老式电话系统(POTS)(其中,计算设备可由人类操作员来辅助或可将数据手动键入到电话或其他适当的电子设备中)、提供系统中的任意两个节点之间的通信接口或交换的任意分组数据网络(PDN)、或任意局域网(LAN)、城域网(MAN)、广域网(WAN)、无线局域网(WLAN)、虚拟专用网(VPN)、内联网、或辅助网络或电话环境中的通信的任意其他适当的架构或系统。
在一个示例中,资源控制器引擎324是执行方法的实用程序和程序,例如,方法例如为贯穿本说明书结合控制器110所描述的方法、或根据本说明书的其他方法。在各个实施例中,资源控制器引擎324可被体现在硬件、软件、固件或上述项的某些组合中。例如,在某些情况下,资源控制器引擎324可包括被设计为执行方法或其中的部分的专用集成电路,并还可包括可操作来指导处理器执行方法的软件指令。在某些情况下,资源控制器引擎324可作为后台程序进程来运行,如上所述。还应注意的是,资源控制器引擎324仅以非限制性示例的方式被提供,并且包括交互式或用户模式软件的其他硬件和软件还可结合资源控制器引擎324、除了资源控制器引擎324之外、或替代资源控制器引擎324被提供,以执行根据本说明书的方法。
在一个示例中,资源控制器引擎324包括被存储在非暂态介质上可操作来执行结合控制器110所描述的方法、或根据本说明书的类似方法的可执行指令。在适当的时间(例如,当启动服务器140时)或根据来自操作系统322或用户120的命令,处理器310可从存储装置350取回资源控制器引擎324(或其中的软件部分)的副本,并将其加载到存储器320中。处理器310然后可迭代地执行资源控制器引擎324的指令。
外围设备接340可被配置为与连接到服务器140的任意辅助设备相接口,但这不必是服务器140的核心架构的一部分。外围设备可操作来向服务器140提供扩展的功能,并可以完全或不完全地取决于服务器140。在某些情况下,外围设备可以是独立的计算设备。以非限制性示例的方式,外围设备可包括结合图2的外围设备接口240所讨论的任意设备。
图4是根据本说明书的一个或多个示例的VNF聚类410的框图。VNF聚类410可在图1的任意服务器类计算设备上被提供,包括机架式服务器120的虚拟机122、或独立服务器140。在其他示例中,独立服务器140还可被配设管理程序或其他虚拟机,以便它可提供多于一个的VNF。因此,应注意的是,VNF 410被概念地体现为被配置为提供本文描述的功能的硬件和/或软件的任意组合,而不管抽象度。例如,除非另有明确规定,为了本说明书目的,可以认为具有虚拟存储器区域和虚拟处理器的虚拟机等同于具有物理处理器和物理存储器的独立机器。确实,随着网络虚拟化的流行度增加,更常见的是网络功能在虚拟机上被提供,然后在独立的物理硬件设备上被提供。然而,本文预期的是VNF配设可包括任意适当的功能,以非限制性示例的方式,例如,包括从管理程序发起新的虚拟机实例、从现有的图像启动现有的虚拟机、联机已被配置为提供VNF的物理服务器、或从被配置为提供网络功能的已有图像启动物理设备。
在该示例中,VNF聚类410是工作流的部分。上游VNF 480和下游VNF 482还可被提供作为工作流的部分。工作流可被定义为逻辑工作流。例如,上游VNF 480可以是负载均衡器、VNF聚类410可提供防火墙、以及下游VNF 482可被配置为提供网络服务。在该情况下,从上游VNF 480到VNF聚类410到下游VNF 482的路径可不基于物理网络路径,而可基于网络管理员所定义的服务链。因此,应注意的是,上游VNF 480、VNF聚类410、以及下游VNF 482相对于彼此的定位不需要表示任何特定物理布置或甚至逻辑布置。相反,布置被配置为表示有效工作流,其中,期望服务以逻辑和有效顺序被应用于网络分组或一组网络分组。
VNF聚类410针对资源被配设,例如,提供特定服务,以非限制性示例的方式,特定服务可包括本文公开的任意服务。VNF聚类410可被设计为在零个或多个实例中被配设。在该情况下,头节点412提供第一资源实例。零个或多个中间节点414-N可提供零个或多个额外实例。最终,尾节点416提供最终资源实例。应注意的是,该布置同样不需要是特定物理或逻辑布置,但指定资源实例的有效组织。在某些情况下,仅一个资源实例被提供。在该情况下,头节点412可以与尾节点416相同。在其他情况下,仅两个资源实例被提供。在该情况下,头节点412还用作中间节点414,而尾节点416可用作中间节点414或尾节点416。然而,应注意的是,在某些情况下,将资源实例分类为具有潜在重叠的头节点412和中间节点414的三类是有用的。因此,示例分类将节点分类为尾节点416、或不是尾节点。若不是尾节点,则节点可以是头节点412、中间节点414、或二者。在该分类中,头节点和尾节点共享每个可包括到级联中的下一节点的下行链路470的属性。换句话说,尾节点416不具有下行链路470。
头节点412包括流表430-1。流表430-1包括零个或多个在用流条目440。流表430-1还可提供表未命中流条目。若遇到表未命中流条目,则下行链路470-1可被提供给中间节点414-N。
在某些示例中,中间节点414-N和尾节点416可本质上是头节点412的复制。应注意的是,在示例实施例中,VNF聚类410提供仅一个不同的网络资源,并且节点根据网络负载和要求被动态地配设。
头节点412具有处理网络流量的有限容量,并因此在增加的网络负载下可能最终变成耗尽的。因此,额外的实例对于处理增加的流量可能是必要的。每个资源负载实例(其中,“负载实例”例如可表示离散的网络分组或一组网络分组的处理)可占用流表430-1的零个或多个在用流条目440。当所有资源负载实例已被耗尽时(即,资源实例正在处理它被配置为处理的或能够处理的所有或近乎所有容量的流量),期望产生新的资源实例以处理额外的流量。
例如,当头节点412已耗尽其所有资源负载实例时,期望产生新的节点。在该情况下,尾节点416可被产生。应注意的是,在该实例中,头节点412是唯一的非尾节点。当尾节点416已用尽其所有实例时,期望产生新的尾节点416。在该情况下,之前的尾节点416变成中间节点414-1。若尾节点416然后耗尽其所有资源负载实例,则期望产生新的尾节点416。在该情况下,头节点412和中间节点414-1保持它们的标识。之前的尾节点416变成新的中间节点414-2,并且新的实例变成尾节点416。
生成新的资源实例的控制部分地由控制器110来管理,并且可能是因为资源实例能够与控制器110进行协调。
在该图的示例架构中,控制平面和数据平面彼此分离。如本文使用的,“控制平面”和“数据平面”的概念表示网络功能的逻辑分离,并且应注意的是,它们不需要被展示在分离的接口或分离的物理信令平面上。相反,控制平面和数据平面可仅使用不同的信令协议、不同的端口、和/或不同的命令。
特别地,控制器110处理控制平面上的协调功能。聚类中的其他资源实例在数据平面上进行操作,并可被用于处理网络流量和提供期望服务。例如,以非限制性示例的方式,控制平面设备可调度分组或处理负载共享。在该示例中,对于同步资源实例之间的流状态不需要专用调度器。
VNF聚类410包括数据平面中的一系列级联连接的资源实例412、414、416,以及控制平面中的控制器110。根据图4的拓扑,VNF聚类410的数据平面402包括级联节点链。数据平面402中的资源实例可被定义为链的节点,并如上所述可被分类为头节点412、中间节点414、或尾节点416中的一项。聚类可包含一个头节点412、一个尾节点416、以及0-N个中间节点414。当聚类仅包含一个节点时,该单个节点将用作头节点和尾节点二者。头节点412和中间节点414具有被连接到级联节点链的下一元素的一个下行链路端口470。下行链路470可以是物理端口或逻辑端口。
在示例架构中,头节点412是级联节点链400被配置为从聚类外部接收分组的唯一节点。中间节点414或尾节点416从它的链中的之前的节点接收分组。所有三类节点412、414、416可被配置为从控制器110接收分组。
当分组被传递到级联节点链400中的任意节点时,节点可首先在它的流表430中执行流查找。在一个示例中,流表430中的每个条目440是下述三类中的一类:
在用流条目;
表未命中流条目;以及
空闲流条目。
在用流条目被控制器110预先或动态地安装,并可包括指定动作集。节点412、414、416上所提供的在用流条目440的数目可通过该节点的总体容量来确定。例如,当头节点412遇到与在用流条目相匹配的分组时,该条目的动作被应用。例如,若VNF 410是防火墙,则输入分组可针对头节点412的在用流条目被检查。若分组与在用流条目的标准相匹配,则当流条目440被建立时,头节点412将应用控制器110之前所指定的动作。注意的是,该动作仅当流条目440尚未处理分组时被执行。若流条目440已处理分组,则分组可被切换至另一流条目440。因此,在一个示例中,流表430可具有本质上相同的流条目的阵列,表示可由头节点412同时处理的离散数目的输入分组。
在头节点412已对输入分组应用动作之后,分组可被转发到上游服务480或下游服务482以便用于额外的处理。由于VNF 410提供单个网络功能的多个实例,因此对于处理特定分组可能不需要整个级联节点链440中的多于一个的流条目440。换句话说,该图的示例是针对并行地提供单个服务的多个实例的级联节点链440。在其他示例中,多个服务的单个实例、或多个服务的多个实例还可被提供。
每个流表430还已在其中安装一个表未命中流条目。表未命中流条目可具有最低优先级(0),并可被配置为与不与任意其他流条目相匹配的任意分组相匹配。在示例中,流表的表未命中条目不可被替换,但它的动作可通过控制器110来修改。当分组与表未命中流条目相匹配时,表未命中动作可被如下应用:
对于头节点412和中间节点414:
若节点的容量从未被填满,则“踢到控制器”;
若节点的容量已被完全利用至少一次(达到“满”水印),则控制器110将表未命中动作设置为“发送到下行链路”,以便分组将总是被发送到链中的下一节点。
对于尾节点416:
若节点的容量从未被填满,则“踢到控制器”;
当级联节点链400的整个聚类的容量是满时,为了避免到控制器110的不必要的流量,动作可被设置为“丢弃”;
当级联节点链400的聚类仅包括一个节点时,节点的表未命中动作将与尾节点416的表未命中动作相同。
空闲流条目是不能与流查找上的任意分组相匹配的特殊条目。相反,空闲流条目被用于跟踪节点的剩余容量。
在上述示例中,控制器110必须知道聚类的拓扑,以便它可以知道级联节点链400中的每个节点的种类。控制器110还可被赋予更新级联节点链400中的每个节点412、414、416的流表430的任务。取决于配置,控制器110可以维护或不维护流经聚类的现有的流的记录。
控制器110还可负责基于存粹的统计(从控制器110的角度)、或基于聚类中的其他网络实体所报告的错误消息来检测“容量满”事件。控制器110还维护可用来确定具有可用容量的节点的“可用节点列表”。
控制器110还被配置为响应几类分组较少事件,以非限制性示例的方式,包括“容量满”、“流删除”、“丢失连接”、“聚类容量高使用率”、以及“节点空闲”。
响应于“容量满”事件,控制器110可执行下述项:
若节点是头节点412或中间节点414,并且这是“容量满”事件的第一个实例,则将节点的表未命中动作更新为“发送到下行链路”。
从控制器110的“可用节点列表”移除节点。
若级联节点链400已达到其总体全容量,则将尾节点416的表未命中流条目更新为“丢弃”。
响应于“流删除”事件,控制器110可执行下述项:
将进行报告的节点添加到控制器110的“可用节点列表”。这可以是排序列表,并且节点可以以与它在级联节点链400中的位置相同的顺序被添加。
若尾节点416的当前表未命中流动作被设置为“丢弃”,则将其更新为“踢到控制器”。
响应于“丢失连接”事件,控制器110可执行快速故障切换,这结合图5被更具体地描述。
响应于“聚类容量高使用率”事件,控制器110可将新的网络实体动态地添加到聚类的数据平面,如下所述。
响应于“节点空闲”事件,控制器110可选择使进行报告的节点离线以节省操作费用,如下所述。
当节点将分组踢到控制器110时,若控制器110被配置为维护现有的流的记录,则它可执行下述项:
若分组属于对于控制器110未知的流,则执行下述项:
若进行踢或报告的节点不是尾节点416,则在进行踢的节点上设置在用流条目。
若进行踢的节点是尾节点416,则执行下述项:
寻找“可用节点列表”中具有空闲流条目的第一个节点,并在节点上设置在用流条目。
若“可用节点列表”是空的,则表示整个聚类的容量是满的,将尾节点416的表未命中动作更新为“丢弃”。
通常,分组不应属于对于控制器110已知的节点。然而,若这种情况发生,则检查级联节点链400中的所有节点的连接。
当分组被踢到控制器110并且它不被配置为保持现有的流的记录时,控制器110可执行下述项:
若进行踢或报告的节点不是尾节点416,则在进行踢的节点上设置在用流条目。
若进行踢的节点是尾节点416,则执行下述项:
寻找“可用节点列表”中具有可用空闲流条目的第一个节点,并在该节点上设置在用流条目。
若“可用节点列表”是空的,则表示整个聚类的容量是满的,将尾节点416的表未命中动作更新为“丢弃”。
图5和6提供了根据本说明书的一个或多个示例的级联节点链中的快速故障切换的框图。在该示例中,提供VNF 402以及上游VNF 480和下游VNF 482的级联节点链400基本上如图4所示的被公开。控制器110为了绘图的方便而从该图中被省略,但仍可出现在某些实施例中。在该示例中,级联节点链400包括四个节点,即,头节点412、尾节点416、以及中间节点414-1和414-2。
该示例中还公开了每个节点包括到至少一个其他节点的备份下行链路510,至少一个其他节点例如为其自身移动两个位置的节点。特别地,头节点412包括到中间节点414-2的备份下行链路510-2。中间节点414-1包括到尾节点416的备份下行链路。备份下行链路510提供如本文所述的快速故障切换,确保没有节点可能用作单一故障点。
控制器110可预期地建立备份下行链路510(即,在它们被需要建立之前)。这确保稳健的链以防止任何单一节点故障。
控制器110可监测级联节点链中的节点的连接。若一个节点故障,则控制器110可通过立即从链中移除发生故障的节点并将前面的节点连接到链中的下一节点来执行节点保护。例如,若中间节点414-1发生故障,由于控制器110之前已建立了备份下行链路510,则控制器110可立即将头节点412下行链路到中间节点414-2。
头节点412表示特殊情况,这是由于它的前面不存在节点。因此,若头节点412发生故障,则新的进入链路需要被提供给中间节点414-1,这然后将改变中间节点414-1的角色并变成头节点412。为了辅助这种情况,控制器110可建立到中间节点414-1的备份进入链路520。特别地,上游VNF 480可具有到中间节点414-1的备份进入链路520-1,并且下游VNF 482可具有到中间节点414-1的备份进入链路520-2。
尾节点416不需要任何特殊连接,这是由于在尾节点416发生故障的情况下,控制器110可简单地将中间节点414-2指定为新的尾节点416。
该过程在图6中被示出。在该示例中,头节点412、中间节点414、以及尾节点416被连接到控制器110。头节点412包括到中间节点414的下行链路470-1。中间节点414包括到尾节点416的下行链路470-2。头节点412还包括到尾节点416的备份下行链路510。在操作期间,故障610在中间节点414上发生。在故障610时,备份下行链路510接管连接,保持链被连接。被分配给中间节点414的任意流需要在另一节点、或中间节点414(若它随后可以恢复在线)上被重新安装。但在这期间,其他节点上的其他流将不会超时并可被维护。
图7A和7B提供了根据本说明书的一个或多个示例示出动态资源分配和收回的框图。
在图7A中,级联节点链400再次被示出初始地具有头节点412、以及通过下行链路470-1被连接的尾节点416-1。级联节点链400遇到诸如流量增加之类的情况,其中,需要额外的容量。在该情况下,新的尾节点416-2可被联机。例如,这可包括配设并启动新的虚拟机、重新配置现有的虚拟机、和/或上电(并按需配置)物理机器。建立从旧的尾节点416-1到新的尾节点416-2的下行链路470-2。
结果可在图7B中看出。头节点412保持其之前的位置。旧的尾节点416-1已被重新指定为中间节点414,具有流自头节点412的下行链路470-1。中间节点414具有到尾节点416的下行链路470-2,该尾节点416之前被指定为“新”的尾节点416-2。也建立从头节点412到尾节点416被的备份下行链路510。
然而,要求新的尾节点416-2被联机的流量爆发可能证明是暂时的,或在一段高峰流量时间之后可能减弱。新的尾节点416-2然后可能变成冗余的和不必要的。随着流量衰减,当从中间节点414转移流量是合理的时,控制器110可以这么做。一旦中间节点414是彻底空闲的,则中间节点414可被断电并从级联节点链400的数据平面被移除。备份下行链路510然后接管(类似于故障的情况)以无缝地维持连接。现在头节点412和尾节点416(之前的新的尾节点416-2)是链中的仅有节点。中间节点414(之前的旧的尾节点416-1)对于其他资源需求是可用的(例如,它可被添加到上游VNF 480或下游VNF482的级联节点链)、或简单地用于节省操作成本。
图8-12是根据本说明书的一个或多个示例的级联节点链中的工作流的框图。
在该示例中,级联节点链400包括三个节点:头节点412、中间节点414、以及尾节点416。头节点412经由下行链路470-1链接到中间节点414。中间节点414经由下行链路470-2链接到尾节点416。
头节点412包括流表440-1。中间节点414包括流表440-2。尾节点包括流表440-3。在该示例中,每个流表440包括四个表条目,并且每个相同地包括三个空闲流条目和一个表未命中条目。
控制器110维护它自身的可用节点的表810。初始地,可用节点表810列出头节点412、中间节点414、以及尾节点416。
在该示例中,三节点实施例被用于说明性的目的。每个节点具有包括四个条目的流表,包括表未命中条目。初始地,每个节点具有三个空闲流条目、以及一个表未命中流条目。
在图9中,控制器110在级联节点链400上配设四个新的流。以示例的方式,在图9之前,三个流(流1、流2、以及流3)已到达级联节点链400,并已被分配流条目。流条目1、流条目2、以及流条目3已在头节点412的流表440-1的可用条目上被配设。头节点412现在是满的,并且控制器110从它的可用节点表810移除头节点412。
在项(1)处,流4到达头节点412。
在项(2)处,流4不与任意在用流条目相匹配,因此它命中流表440-1的表未命中流条目。该条目已被修改为下行链路470-1。
在项(3)处,流4被发送到下行链路470-1。流条目910尚未被提供,因此流4不与中间节点414的流表440-2上的任意条目相匹配。流4因此到达已被修改为下行链路470-2的表未命中流条目。
在项(4)处,流4通过尾节点416的流表440-3,并再次不与任意流条目相匹配。它因此到达已被修改为“踢到控制器”的表未命中流条目。尾节点416因此将流4踢回到控制器110。
在项(5)处,控制器110确定流4不与级联节点链400中的任意流条目相匹配。检查它的可用节点表810,控制器110确定中间节点414具有可用流条目。控制器110因此在流表440-2上提供在用流条目4910。控制器110现在可通过将流4转发到头节点412来将流4发送回级联节点链400。流4现在将流经流表440-1,并在它到达流条目4910时与流条目4910相匹配。中间节点414因此将服务流4。
在图10中,流条目4、5、6、7、8、以及9也已进入级联节点链400。这些已被配设。流条目已针对中间节点414的流表440-2上的流5和流6被添加。流7、流8、以及流9的流条目已被添加到尾节点416的流表440-3。
由于级联节点链400的容量现在已被达到,因此尾节点416上的流表440-3的表未命中流条目的动作已被修改为“丢弃”。因此,当流10进入级联节点链400时,它以头节点412、中间节点414、以及尾节点416的顺序通过头节点412、中间节点414、以及尾节点416,并且不与任意流条目相匹配。因此,流10被丢弃。
在图11中,在一段时间之后,流3和流5过期。因此,控制器110可移除那些流条目,在头节点412的流表440-1上新创建空闲流条目1110,并在中间节点414的流表440-2上新创建空闲流条目1120。由于资源在这些节点上已被释放,控制器110还通过将头节点412和中间节点414添加到列表来更新可用节点表810。注意的是,流1、2、4、以及6-9的分组仍将如之前穿过级联节点链400,并仍将与它们相应的流条目相匹配。
在图12中,新的流11到达级联节点链400。注意的是,在该示例中,控制器110被配置为跟踪现有的流。
在项(1)处,流11被转发到头节点412。流11穿过流表440-1的所有条目,并且未找到匹配。注意的是,流条目1210尚未被提供(见图11),因此该条目当前是不能与任意流相匹配的空闲流条目。
在项(2)处,流11命中头节点412的流表440-1的表未命中流条目。该条目的动作已被修改为“发送到下行链路”。
在项(3)处,头节点412将流11发送到下行链路470-1。
在项(4)处,流11还穿过中间节点414的流表440-2,并且不与任意条目相匹配。流11因此到达中间节点414上的流表440-2的表未命中流条目。控制器110已将该条目修改为“发送到下行链路”。
在项(5)处,中间节点414将流11发送到下行链路470-2。
在项(6)处,流11穿过尾节点416的流表440-3,并且不与任意流条目相匹配。它因此到达该表的表未命中流条目。控制器110已将该表未命中流条目修改为“踢到控制器”。因此,尾节点416将流11踢到控制器110。
在项(7)处,控制器110咨询它的可用节点表810,并发现头节点412和中间节点414具有可用的流条目(见图11)。控制器110选择这些条目中的第一个条目。可用的第一个节点上的可用的第一个条目是头节点412的流表440-1上的条目1210。控制器110因此配设条目1210以处理流11。来自流11的分组的进一步的实例现在将与头节点412的流表440-1上的流条目111210相匹配。由于控制器110现在已耗尽头节点412上的最后的可用的条目,它从可用节点表810移除头节点412。
上述概述了若干实施例的特征,以便本领域技术人员可以更好地理解本公开的各方面。本领域技术人员应理解的是,他们可以容易地使用本公开作为设计或修改用于实现本文介绍的实施例的相同目的和/或实现本文介绍的实施例的相同优势的其他处理和结构的基础。本领域技术人员还应认识到的是,这类等同结构未脱离本公开的精神和范围,并且他们可在本文做出各种改变、置换、以及更改而不脱离本公开的精神和范围。
本公开的特定实施例可容易地包括片上系统(SOC)中央处理单元(CPU)封装。SOC表示将计算机或其他电子系统的组件集成在单个芯片中的集成电路(IC)。它可包含数字、模拟、混合信号、以及射频功能:所有这些可在单个芯片基板上被提供。其他实施例可包括具有多个芯片的多芯片模块(MCM),该多个芯片位于单个电子封装中并被配置为通过电子封装来彼此紧密交互。在各个其他实施例中,数字信号处理功能可在专用集成电路(ASIC)、现场可编程门阵列(FPGA)、以及其他半导体芯片中的一个或多个硅核心中被实现。此外,在各个实施例中,本文描述的处理器、存储器、网卡、总线、存储设备、相关外围设备、以及其他硬件元件可通过软件或固件所配置的处理器、存储器、以及其他相关设备来实现,以仿真或虚拟化那些硬件元件的功能。
在示例实现方式中,本文概述的处理活动中的至少某些部分还可在软件中被实现。在某些实施例中,这些特征中的一个或多个特征可在附图所公开的元件之外被提供的硬件中被实现,或以任意适当的方式被合并以现实预期的功能。各个组件可包括可以进行协调以便实现如本文所概述的操作的软件(或往复式软件)。在其他实施例中,这些元件可包括任意适当的算法、硬件、软件、组件、模块、接口、或辅助其中的操作的对象。
此外,与所描述的微处理器相关联的组件中的某些组件可被移除或合并。在一般意义上,附图中所描绘的布置在他们的表示上可以更加逻辑,而物理架构可包括这些要素的各种置换、组合、和/或混合。有必要注意到的是,大量可能的设计配置可被用于实现本文概述的操作目标。因此,相关联的基础设施具有大量的替代布置、设计选择、设备可能性、硬件配置、软件实现方式、装置选项等。
任意被适当配置的处理器组件可执行与数据相关联的任意类型的指令以实现本文详述的操作。本文公开的任意处理器可将要素或物品(例如,数据)从一个状态或事务转换为另一状态或事务。在另一示例中,本文概述的某些活动可使用固定逻辑或可编程逻辑(例如,处理器所执行的软件和/或计算机指令)来实现,并且本文标识的元件可以是某些类型的可编程处理器、可编程数字逻辑(例如,现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))、包括数字逻辑、软件、代码、电子指令的ASIC、闪速存储器、光盘、CD-ROM、DVD ROM、磁卡或光卡、适用于存储电子指令的其他类型的机器可读介质、或其中的任意适当的组合。在操作中,处理器可在适当的情况下并基于具体需求,将信息存储在任意适当类型的非暂态存储介质(例如,随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等)、软件、硬件中、或任意其他适当的组件、设备、元件、或对象中。此外,在处理器中被跟踪、发送、接收、存储的信息可基于具体需求和实现方式在任意数据库、寄存器、表、缓存、队列、控制列表、或存储结构中被提供,所有这些可以在任意适当的时间表中被引用。本文讨论的任意存储器项应被理解为被包含在广义的术语“存储器”中。类似地,本文描述的任意潜在的处理元件、模块、以及机器应被理解为被包含在广义的术语“微处理器”或“处理器”中。
实现所有或部分本文描述的功能的计算机程序逻辑以各种形式被体现,包括但绝不限于:源代码形式、计算机可执行形式、以及各种中间形式(例如,汇编器、编译器、链接器、或定位器所生成的形式)。在示例中,源代码包括在各种编程语言(例如,目标代码、汇编语言、或诸如OpenCL、Fortan、C、C++、JAVA、HTML之类的高级语言)中实现的用于与各种操作系统或操作环境一起使用的一系列计算机程序指令。源代码可定义和使用各种数据结构和通信消息。源代码可以是以计算机可执行形式的(例如,经由翻译器),或源代码可被转换(例如,经由翻译器、汇编器、或编译器)为计算机可执行形式。
在上面的实施例的讨论中,电容器、缓冲器、图形元件、互连板、时钟、DDR、照相机传感器、分频器、电感器、电阻器、放大器、交换机、数字核心、晶体管、和/或其他组件可被容易地替换、替代、或修改,以便满足特定电路需求。此外,应注意的是,补充电子设备、硬件、非暂态软件等的使用提供了用于实现本公开的教导的同样可行的选项。
在一个示例实施例中,附图的任意数目的电子电路可在相关联的电子设备的板上被实现。板可以是可保持电子设备的内部电子系统的各种组件,并还提供其他外围设备的连接器的通用电路板。更具体地,板可提供系统的其他组件借以可电子地通信的电子连接。任意适当的处理器(包括数字信号处理器、微处理器、支持芯片组等)、存储器元件等可基于特定配置需求、处理要求、计算机设计等被适当地耦合于板。诸如外部存储装置、额外的传感器、音频/视频显示器的控制器、以及外围设备之类的其他组件可作为插件经由电缆被附接于板,或被集成到板自身中。在另一示例实施例中,附图的电子电路可被实现为独立模块(例如,具有被配置为执行特定应用或功能的相关联组件和电路的设备)或被实现为电子设备的应用专用硬件的插入模块。
注意的是,使用本文提供的许多示例,交互可关于两个、三个、四个、或更多个电子组件被描述。然而,这仅为了清楚和示例的目的已被完成。应理解的是,系统可以以任意适当的方式被合并。连同类似的设计替代,任意附图所示的组件、模块、以及元件可被合并在各种可能的配置中,所有这些在本说明书的广义范围内是清除的。在某些情况下,通过仅引用有限数目的电子元件来描述给定的一组流的一个或多个功能可能是更简单的。应理解的是,附图的电子电路及其教导是容易得可扩展的,并可以容纳大量组件、以及更复杂/精细的布置和配置。因此,所提供的示例不应限制范围或将电子电路的广义教导抑制为潜在地被应用于大量其他架构。
许多其他改变、替代、变化、更改、以及修改对于本领域技术人员是确定的,并且旨在本公开包含落入所附权利要求的范围内的所有这些改变、替代、变化、更改、以及修改。此外,为了协助美国专利及商标局(USPTO)和此申请上发布的任何专利的任何读者解释所附权利要求,申请人希望注意到的是,申请人:(a)不旨在任何所附权利要求调用其递交日期存在的U.S.C 35 112节的第六(6)段,除非在特定权利要求中具体使用了词语“用于…的装置”或“用于…的步骤”;以及(b)不旨在通过此说明书中的任意陈述来以所附权利要求中未反映的任何方式限制本公开。