本申请案根据35U.S.C.119(e)主张以下申请案的权益和优先权:2013年7月10日申请的标题为“灵活的流卸载(FLEXIBLE FLOW OFFLOAD)”的第61/844,709号美国临时申请案;2013年8月13日申请的标题为“网络装置中的灵活的流卸载(FLEXIBLE FLOW OFFLOADIN A NETWORK DEVICE)”的第61/865,525号美国临时申请案;及2013年9月5日申请的标题为“网络装置中的灵活的流卸载(FLEXIBLE FLOW OFFLOAD IN A NETWORK DEVICE)”的第61/874,259号美国临时申请案。这些临时申请案的全部内容以引用的方式并入本文中以用于所有目的。
具体实施方式
在以下描述中,出于解释的目的,阐述众多实例和细节以便提供对各种实施例的理解。然而,所属领域的技术人员将清楚,可在没有这些细节中的一些细节的情况下或可在其修改或等效物的情况下实践某些实施例。
1.概述
本发明描述用于从层4-7装置的通用处理器卸载有状态(即,流知晓的)处理的硬件架构及对应的软件架构。在高层级处,硬件架构可包含与通用处理器通信的众核网络处理器(NP)。此众核NP一个实例是由帝莱拉(Tilera)公司开发的TILE-Gx8036 NP,但可使用任何类似的众核处理器。可经由软件架构编程众核NP以执行先前仅由通用处理器执行的流知晓的任务,进而将那些任务从通用处理器卸载到众核NP。以此方式,可减少通用处理器上的负载且可改进层4-7装置的整体性能。
为了促进上文所描述的卸载,软件架构可包含在众核NP上运行的流卸载引擎。所述流卸载引擎可使得运行在通用处理器上的网络应用能够灵活地控制应如何、何时从通用处理器将流知晓的任务卸载到众核NP、应将什么流知晓的任务卸载到众核NP以及应卸载多长时间。举例来说,在某些实施例中,流卸载引擎可使得所述应用能够指定仅应卸载连接中的反向流、仅应卸载流中的某些包(例如,控制包或给定序列号范围内的包),等等。流卸载引擎可随后致使众核NP根据那些指令实行流处理,而不涉及通用处理器。
在以下节中进一步详细地描述本发明的这些和其它特征。
2.网络环境
图1是根据一实施例的网络环境100的简化框图。如图所示,网络环境100包含若干客户端装置102-1、102-2及102-3,其通过网络104和层4-7装置106与应用服务器108-1和108-2通信地耦合。虽然图1描绘三个客户端装置、两个应用服务器及一个层4-7装置,但可支持任何数目的这些实体。
客户端装置102-1、102-2及102-3是终端用户计算装置,例如桌上型计算机、膝上型计算机、个人数字助理、智能电话、平板计算机等。在一个实施例中,客户端装置102-1、102-2及102-3可各自执行(例如,经由标准网络浏览器或专有软件)在应用服务器108-1和/或108-2上托管的分布式软件应用的客户端组件,进而使得装置102-1、102-2及102-3的用户能够与所述应用交互。
应用服务器108-1和108-2是经配置以提供可在其中执行分布式软件应用的服务器组件的环境的计算机系统(或计算机系统的群集/群组)。举例来说,应用服务器108-1和108-2可从客户端102-1、102-2或102-3接收被引导到服务器上托管的应用的请求、使用为所述应用界定的交易逻辑来处理所述请求,且随后产生响应于所述请求的信息以供传输对客户端。在其中应用服务器108-1和108-2经配置以托管一或多个网络应用的实施例中,应用服务器108-1和108-2可与一或多个网络服务器系统(未图示)交互。这些网络服务器系统可处置从客户端102-1、102-2和102-3接收超文本传递协议(HTTP)请求且通过返回HTTP响应而服务那些请求的网络专有任务。
层4-7装置106是计算装置,其经配置以执行各种功能来增强对托管在应用服务器108-1和108-2上且由客户端装置102-1、102-2和102-3消耗的应用的递送。举例来说,层4-7装置106可拦截且处理在应用服务器与客户端装置之间传输的包,以提供(例如)层4-7业务重新引导、服务器负载平衡、自动化故障切换、TCP连接多路复用、服务器卸载功能(例如,SSL加速和TCP连接管理)、数据压缩、网络地址转译等。除了层4到7特征之外,层4-7装置106还可提供整合的层2/3功能性。
在一个实施例中,层4-7装置106可为专用网络装置,例如基于硬件的ADC。在其它实施例中,层4-7装置106可为经配置以在软件中实行其层4-7功能的通用计算机系统。在这些实施例中,层4-7装置106可为(例如)数据中心中的托管虚拟ADC(除了其它虚拟装置/机器之外)的服务器。
应了解,网络环境100是说明性的且无意限制本发明的实施例。举例来说,网络环境100中所描绘的各种实体可具有其它能力或包含未具体描述的其它组件。所属领域的技术人员将认识到许多变化、修改和替代方案。
3.层4-7装置的硬件架构
图2是根据一实施例的层4-7装置200的简化框图。在各种实施例中,层4-7装置200可用于实施图1的层4-7装置106。
如图所示,层4-7装置200包含通用处理器202和网络接口204。通用处理器202可为(例如)x86、PowerPC或基于ARM的CPU,其在存储于相关联的存储器(未图示)中的软件的控制下操作。网络接口204可包括使得层4-7装置200能够经由一或多个端口206传输和接收数据包的硬件和/或软件组件的任何组合。在一个实施例中,网络接口204可为基于以太网的接口。
如背景部分中所述,当常规的层4-7装置执行对传入的数据业务的有状态处理时,将给定流的所有数据包转发到装置的通用处理器。通用处理器执行所述包所需的任何流知晓的任务,且随后将所述包切换出(即,转发)到其既定目的地。此常规方法的问题在于,流中的许多包可能不需要较多的有状态处理,且因此让通用处理器检查每个单一包是低效的。
为了解决前述和其它类似问题,层4-7装置200可实施包含如图2中所示的众核NP208的新颖硬件架构。如本文中所使用,“众核NP”是一种处理器,其与通用处理器一样是软件可编程的,但包括大量(例如,数十、数百或更多个)轻量级处理核,而不是在典型的通用处理器中发现的相对少的重量级核。众核NP还可包含用于加速某些功能(例如,压缩、加密等)的专用硬件块。众核NP的实例包含由帝莱拉(Tilera)公司开发的TILE-Gx8036处理器、由凯威(Cavium)公司开发的Octeon处理器,及由博通(Broadcom)公司开发的XLP多核处理器。
众核NP 208可充当网络接口204与通用处理器202之间的通信桥接器。举例来说,众核NP 208可经编程以相对于经由网络接口204接收且被重新引导到通用处理器202的数据包执行包缓冲管理。此外,在其中网络接口204和通用处理器202支持不同物理接口(例如,分别为XAUI和PCI-e)的情形中,众核NP 208可包含硬件以桥接那两个物理接口。
更重要的是,众核NP 208可接管(即,卸载)先前由通用处理器202处置的层4-7包处理的至少一部分。举例来说,众核NP 208可从通用处理器202卸载无状态处理任务,例如拒绝服务(DoS)保护和无状态防火墙过滤。另外,众核NP 208可从通用处理器202卸载有状态或流知晓的处理任务,例如层4或7负载平衡。在此后一种情况下,众核NP 208可执行流卸载引擎(在下文节4中详述),所述流卸载引擎使得运行在通用处理器202上的应用能够灵活地控制卸载的性质(例如,卸载哪些任务、卸载哪些流或其部分等)。通过此流卸载能力,众核NP 208可显著地减少通用处理器202上的流处理负载,进而释放通用处理器202来处置其它任务或实施新的特征/能力。
应了解,图2描绘层4-7装置200的高度简化表示,且各种修改或替代表示是可能的。举例来说,虽然仅展示单一通用处理器和单一众核NP,但可支持任何数目的这些处理器。
此外,在某些实施例中,可用基于硬件的逻辑电路(例如FGPA或ASIC)来取代众核NP 208。在这些实施例中,硬件逻辑电路可经设计/配置以执行归于众核NP 208的流卸载功能。然而,出于若干原因,使用众核NP一般是优选的。首先,FPGA或ASIC针对给定大小/成本/功率包络可处置的流的数目小于众核NP。因此,这些硬件逻辑电路不会随着数据业务量增加而良好地缩放,这在高容量(例如,企业或服务提供商)网络中是显著的缺点。第二,归因于它们的基于硬件的性质,FPGA和ASIC设计和维持起来是固有困难/昂贵的,尤其在实施例如流知晓的处理逻辑等复杂逻辑时。这意味着对于给定成本,图2的众核NP设计使得网络供应商能够将更灵活的、可缩放的且经济的层4-7装置而不是基于FPGA/ASIC的设计提供给客户。
另外,取决于层4-7装置200的性质,所述装置可包含图2中未展示的额外组件和/或子组件。举例来说,图3描绘其中将所述装置实施为专用ADC 300的层4-7装置200的版本。ADC 300包含与图2的层4-7装置200相同的通用处理器202、众核NP 208和端口206。然而,ADC 300还包含包处理器302和以太网PHY 304(其共同表示网络接口204),以及PCI-e交换器306。以太网PHY 304经由因特网XAUI接口308通信地耦合到众核NP 208,而PCI-e交换器306分别经由PCI-e接口310和312与通用处理器202和众核NP 208通信地耦合。
作为另一实例,图4描绘其中将所述装置实施为通用计算机系统400的层4-7装置200的版本。计算机系统400包含与图2的层4-7装置200相同的通用处理器202、网络接口204、端口206,及众核NP 208。然而,计算机系统400的通用处理器202、网络接口204及众核NP 208全部经由共用总线子系统402(例如,PCI-e)进行通信。在此实施例中,众核NP 208可位于(例如)PCI-e加速器卡上,所述PCI-e加速器卡可插入到计算机系统400的底架中且可从所述底架移除。计算机系统400还包含通常在常规计算机系统中发现的各种组件,例如存储子系统404(包括存储器子系统406和文件存储子系统408)及用户输入/输出装置410。子系统406和408可包含存储可由本发明的实施例使用的程序代码和/或数据的计算机可读媒体(例如,RAM 412、ROM 414、磁性/快闪/光学盘等等)。
4.层4-7装置的软件架构
如上文所论述,为了促进将流知晓的处理从通用处理器202卸载到众核NP 208,层4-7装置200可实施包含新颖的流卸载引擎的软件架构。图5是根据一实施例的此类软件架构500的简化框图。软件架构500被视为“数据平面”软件架构,因为其运行在层4-7装置200的数据平面组件(例如,众核NP 208和/或通用处理器202)上。
如图所示,软件架构500包括操作系统502、转发层504及会话层506。操作系统502可为此项技术中已知的任何操作系统,例如里纽克斯(Linux)、尤尼克斯(Unix)的变体等。在特定实施例中,操作系统502是多线程操作系统,且因此可利用众核NP 208中的多个处理核。转发层504负责执行低层级包转发操作,例如包健全检查和层2/3转发。会话层506负责会话管理,例如创建、删除及老化会话。
除了前述组件之外,软件架构500包含若干特征模块508和流卸载引擎510。特征模块508可对应于由众核NP 208和/或通用处理器202支持的各种无状态和有状态包处理特征,例如L4负载平衡、L7负载平衡、SYN攻击保护、高速缓冲、压缩、脚本等。运行在众核NP208上的流卸载引擎510可包含用于调用特征模块508中的一或多者以便在某些传入的数据包上执行流知晓的任务而不必将那些包发送到通用处理器202的逻辑。
值得注意的是,流卸载引擎510在本质上不是固定的;换句话说,所述引擎不限于相对于每个传入流调用相同的流处理。而是,流卸载引擎510可被动态配置/控制(通过(例如)运行在通用处理器202上的网络应用)以相对于不同的流或其部分执行不同类型的流处理。以此方式,流卸载引擎510可完全充分利用由众核NP 208提供的架构性优点以提高层4-7装置200的性能。
仅举例来说,流卸载引擎510可经配置以:
·仅卸载流中的中间的包(和/或流中的某些控制包,例如TCP SYN-ACK、第一FIN等)。
·基于指定的准则而开始/终止流的流卸载(例如,在接收到指定的控制包后即刻,在接收到X量的数据之后等)。
·卸载流的全部、仅正向流(即,客户端到服务器)、仅反向流(即,服务器到客户端),或仅流内的某一范围的包(例如,指定的序列号或数据范围内的包)。
·仅卸载某些流知晓的任务或任务的组合(例如,用于HTTP响应的L7负载平衡、L4负载平衡及SYN攻击预防等)。
·启用/停用某些应用/服务的流卸载任务(HTTP网络服务、邮件服务等)。
为了进一步阐明流卸载引擎510的操作和可配置性,以下子节描述若干示范性流卸载情景及层4-7装置200的众核NP 208和通用处理器202可如何处置所述情景。在这些情景中,假设经由流卸载引擎510来执行归于众核NP 208的步骤。
4.1层4负载平衡
图6A和6B描绘根据一实施例的示范性层4负载平衡情景的流程图600。开始于图6A,在框602处,众核NP 208可接收从客户端到服务器的流中的第一包(例如,TCP SYN包)。
在框604处,众核NP 208可将所述流识别为新流(即,先前尚未被众核NP 208看到的流)。作为响应,众核NP 208可在NP可存取的存储器中创建所述流的待决会话表条目,且可将所述包转发到通用处理器202(框606和608)。
在框610处,通用处理器202可基于层4负载平衡度量(例如,每个服务器的连接的数目等)来选择用于处置所述流的应用服务器,且可在所述处理器可存取的存储器中创建所述流的会话表条目。此会话表条目可与在框606处由众核NP 208创建的待决会话表条目分开。
通用处理器202可随后确定此时可将所述流卸载到众核NP 208且可因此将流卸载命令发送到众核NP 208(框612)。在各种实施例中,所述流卸载命令可包含(例如)识别待卸载的流的信息、待卸载的任务的指示(例如,服务器负载平衡)及所选择的服务器的指示。
在接收到流卸载命令之后,众核NP 208可即刻基于流卸载命令中所包含的信息将待决会话表条目转换为有效条目(框614)。以此方式,众核NP 208可准备处置在相同的流中所接收的其它数据包。众核NP 208可随后将第一包转发到所选择的应用服务器(框616)。
现在转向图6B,在框618处,众核NP 208可接收与图6A相同的流(即,客户端到服务器的流)中的第二包。作为响应,众核NP 208可基于在框614处创建/转换的有效会话表条目将所述流识别为已知流(框620)。最后,在框622处,众核NP 208可基于有效会话表条目将第二包直接转发到所选择的应用服务器,而不涉及通用处理器。
4.2层4负载平衡+SYN攻击保护
图7描绘根据一实施例的示范性层4负载平衡+SYN攻击保护情景的流程图700。在框702处,众核NP 208可接收从客户端到服务器的流中的第一包(例如,TCP SYN包)。
在框704处,众核NP 208可将所述流识别为新流(即,先前尚未被众核NP 208看到的流)。此外,在框706处,众核NP 208可确定已启用SYN攻击保护。
在框708处,众核NP 208可将TCP SYN-ACK发送到客户端(不涉及通用处理器或应用服务器)。众核NP 208可随后响应于SYN-ACK而从客户端接收到TCP ACK(框710)。
在接收到TCP ACK后,众核NP 208可即刻确定客户端是有效的(即,无恶意的)客户端(框712)。因此,众核NP 208可创建所述流的待决会话表条目,且将ACK包转发到通用处理器202(框714)。流程图700的处理可随后根据图6A和6B的框208到622而进行,以便实行层4负载平衡。
4.3层7负载平衡(响应主体卸载)
图8A和8B描绘根据一实施例的示范性层7负载平衡情景的流程图800。具体来说,流程图800对应于其中将HTTP响应的主体部分从通用处理器202卸载到众核NP 208的情景。
在框802和804处,众核NP 208可接收从客户端到服务器的流中的第一包(例如,TCP SYN包)且可将所述包转发到通用处理器202。
在框806处,通用处理器202可创建所述流的会话表条目且可致使TCP SYN-ACK返回到客户端。随后,在框808处,众核NP 208/通用处理器202可从客户端接收TCP ACK包且可完成TCP 3路握手。
现在转向图8B,在框810处,众核NP 208可从客户端接收HTTP GET请求且将所述请求转发到通用处理器202。作为响应,通用处理器202可检查HTTP GET请求的内容、基于所检查的内容而选择应用服务器,且可用所选择的服务器信息来更新其会话表条目(框812)。通用处理器202可随后致使将HTTP GET请求转发到所选择的服务器(框814)。
在某一时间周期之后,众核NP 208可从应用服务器接收HTTP响应且可将所述响应转发到通用处理器202(框816)。在接收到所述响应后,通用处理器202可即刻致使将所述HTTP响应转发到客户端。另外,通用处理器202可将指示HTTP响应的主体应由众核NP 208处置的流卸载命令发送到众核NP 208(框818)。在特定实施例中,流卸载命令可识别用于卸载的TCP序列号的范围。
在框820处,众核NP 208可基于流卸载命令中的信息而创建本地会话表条目。最后,对于位于指定的序列号范围内的后续服务器到客户端的包(即,HTTP响应主体包),众核NP 208可基于所述会话表条目将那些包直接转发到客户端,而不涉及通用处理器202(框822)。应注意,一旦用尽序列号范围,众核NP 208便可在框820处移除会话表条目,进而致使将后续HTTP响应标头发送到通用处理器202以用于常规处置。
应了解,图6A、6B、7、8A和8B中所示的情景是说明性的,且打算展示可经由图5的流卸载引擎510实现的灵活性。对这些情景的各种修改和变化是可能的。举例来说,在图6A和6B的L4负载平衡情景中,众核NP 208可不在接收到新流时创建待决会话表条目;替代地,众核NP 208可在由通用处理器202指令时直接创建新有效条目。或者,众核NP 208可仅创建直至某一阈值的待决会话表条目(例如,会话表的50%使用率),且随后在其后不再创建待决条目。这将避免在层4-7装置经受攻击时不会用伪条目完全填满会话表。在这些情况中的任一者中,当通用处理器202指令众核NP 208开启流的卸载时,通用处理器202可需要发送一些额外信息(在存在待决条目的情况下其将不具有的信息),使得众核NP 208可正确地创建有效会话表条目。这没有首先创建待决条目有效,但被视为用以避免在经受攻击时填满会话表的可接受的折衷。
作为另一实例,在某些实施例中,众核NP 208可经编程以卸载归于图6A、6B、7、8A和8B中的通用处理器202的某些任务(例如,第一包处理)。这可需要NP 208与通用处理器202之间的额外状态同步。
作为又一实例,众核NP 208可经编程以处置流知晓的任务的某些组合或卸载未具体描述的流的某些部分。所属领域的技术人员将认识到许多变化、修改和替代方案。
以上描述说明本发明的各种实施例以及可如何实施本发明的各方面的实例。不应将上述实例和实施例视为仅有的实施例,且呈现上述实例和实施例以说明如通过所附权利要求书定义的本发明的灵活性和优点。举例来说,虽然已相对于特定过程流和步骤而描述了某些实施例,但所属领域的技术人员应明白,本发明的范围未严格受限于所描述的流程和步骤。被描述为连续的步骤可并行地执行,步骤的次序可改变,且步骤可被修改、组合、添加或省略。作为另一实施例,虽然已使用硬件与软件的特定组合来描述了某些实施例,但应认识到,硬件与软件的其它组合是可能的,且被描述为实施于软件中的特定操作也可实施于硬件中,且反之亦然。
因此将以说明性的而非约束性的意义来看待说明书和图。所属领域的技术人员将清楚其它布置、实施例、实施方案和等效物,且可在不偏离如在所附权利要求书中阐述的本发明的精神及范围的情况下使用。