在网络元件处缓存内容和状态数据的制作方法

文档序号:6656846阅读:254来源:国知局
专利名称:在网络元件处缓存内容和状态数据的制作方法
技术领域
本发明一般地涉及计算机网络中的网络元件。更具体而言,本发明涉及用于在网络元件处缓存内容和状态数据的方法和装置。
背景技术
这一部分中描述的方法可以实现,但是不一定是先前已想到或已实现的方法。因此,除非另外指出,否则这一部分中描述的方法不是该申请的权利要求的现有技术,并且也不应当因为被包括在这一部分中而看作是现有技术。
在商业到商业环境中,运行在计算机上的应用一般会与运行在其他计算机上的其他应用通信。例如,运行在计算机“X”上的应用“A”可能向运行在计算机“Y”上的应用“B”发送指示购买订单的实质内容的消息。
计算机“X”可能远离计算机“Y”。为了使计算机“X”发送消息到计算机“Y”,计算机“X”可能通过计算机网络发送消息,计算机网络例如是局域网(LAN)、广域网(WAN)或互联网,例如因特网。为了通过这种网络发送消息,计算机“X”可能使用一套通信协议。例如,计算机“X”可能使用诸如因特网协议(IP)之类的网络层协议以及诸如传输控制协议(TCP)之类的传输层协议来发送消息。
假定消息利用TCP发送,则消息被封装到一个或多个数据分组中;同一消息的不同部分可以在不同分组中发送。继续以上示例,计算机“X”通过网络向计算机“Y”发送数据分组。介于计算机“X”和计算机“Y”之间的一个或多个网络元件可以接收分组,确定分组的下一“跳”,并向计算机“Y”发送分组。
例如,路由器“U”可能从计算机“X”接收分组,并且基于去往计算机“Y”的分组,确定分组应当被转发到另一路由器“V”(路由上的下一“跳”)。路由器“V”可能从路由器“U”接收分组,并将分组发送到计算机“Y”。在计算机“Y”处,可以提取出分组的内容并重组该内容以形成原始消息,原始消息可以被提供给应用“B”。应用“A”和“B”可以不关心分组是经过路由器“U”和“V”路由的这一事实。事实上,不同的分组可以采取经过网络的不同路由。
消息可以利用若干种应用层协议中的任何一种结合上述的网络层和传输层协议来发送。例如,应用“A”可以指定计算机“X”要利用超文本传送协议(HTTP)发送消息。因此,计算机“X”可以在如上所述将消息封装到TCP分组中之前,向消息的前部添加HTTP特定头部。如果应用“B”被配置为根据HTTP接收消息,则计算机“Y”可以使用HTTP特定头部来处理消息。
除了上述内容外,消息还可以根据若干种消息格式中的任何一种构造。消息格式一般指消息的结构。例如,如果购买订单包括地址和送货日期,则地址和送货日期可以利用消息格式特定的机制在消息内彼此区分。例如,应用“A”可以利用可扩展标记语言(XML)指示购买订单的结构。利用XML作为消息格式,地址可能被封在“<地址>”和“</地址>”标签内,而送货日期可能被封在“<送货日期>”和“</送货日期>”标签内。如果应用“B”被配置为翻译XML形式的消息,则应用“B”可以使用标签以确定消息的哪一部分包含地址,哪一部分包含送货日期。
Web浏览器(“客户端”)可能通过发送请求到远程服务器的通用资源定位符(URL)并接收作为响应的内容来访问存储在远程服务器上的内容。与非常普遍的URL相关联的网站接收极大数量的来自不同客户端的这种请求。为了处理这些大量请求,这些网站有时使用代理设备(proxydevice),代理设备首先接收请求,并根据某种方案在多个服务器之间分发请求。
一个这种方案尝试在连接到代理设备的服务器之间相对均匀地分发请求。采用该方案的代理设备通常称为“负载平衡器”。当成功时,负载平衡器有助于确保服务器“田”中的任何单个服务器都不会被请求淹没。
当代理设备接收到来自客户端的请求时,代理设备确定请求应当被引导到许多服务器中的哪一服务器。例如,请求可能与某一会话相关联,该会话与特定服务器相关联。在这种情况下,代理设备可能需要将请求发送到会话与之相关联的特定服务器。
当服务器接收到请求时,服务器可以通过向客户端发送包含所请求的数据的响应来为请求提供服务。例如,所请求的数据可以被包含在不随着请求而改变的文件中,并且被从文件中读取。这种数据经常被称为“静态”数据,因为无论请求在何种条件下(例如生成或接收请求的时刻)发生,数据都保持相同。
又例如,响应于接收到请求,服务器可以执行某一程序,该程序生成在每次执行程序时都可能不同的数据。对于更特定的示例,响应于接收到对股票报价的请求,服务器可能执行某一程序,该程序确定指定股票的当前价格,并生成指示程序的执行期间的价格的数据。服务器可以在对客户端的响应中返回所生成的数据。当然,价格可以随时间改变,因此即使两个独立的请求可能涉及同一股票,对这些请求的响应也可能由于请求被接收和服务的时间不同而不同。以这种方式“即时”(on the fly)生成的数据经常被称为“动态”数据。
动态数据的某些方面(例如当前股票价格)可能随接收或处理请求的时间的不同而不同。然而,无论请求所涉及的场合如何,动态数据的其他方面可能保持相同。例如,无论接收股票报价请求的时间如何,对该请求的每个响应都可能在此刻的实际股票价格之前包含诸如“当前股票价格是”之类的相同文本。从而,即使动态数据也可以包含静态部分。有时,静态部分可能较大。
为了减少服务器上的处理负载并减少在客户端发送请求的时刻和客户端接收到对该请求的响应的时刻之间经过的时间量,介于客户端和服务器之间的网络元件可以在本地缓存只包含静态数据的服务器响应。当网络元件确定请求所针对的是已经包含在本地缓存的服务器响应中的完全静态数据时,网络元件并不将请求转发到服务器,而是向客户端发送所缓存的服务器响应。结果,服务器被免除了为请求提供服务的负担。然而,当网络元件确定请求针对的是动态数据时,网络元件向服务器发送请求;网络元件不缓存可能随请求的不同而不同的响应。
在传统实践中,路由器、交换机和其他中介网络元件路由或交换个体帧、数据报和分组,而没有体现在分组流中的较高级应用层消息的任何知识,并且也不关注或者处理这种应用层消息。一般来说,请求的URL是中介网络元件用于确定请求是否是针对完全静态数据的唯一基础。例如,如果URL的最后一部分具有指示数据文件的扩展(例如“.htm”),则网络元件可以推论请求是针对完全静态数据的。又例如,如果URL的最后一部分具有指示可执行程序的扩展(例如“.exe”或“.pl”),则网络元件可以推论请求是针对动态数据的。
因此,当前的缓存判决是每请求全肯定或全否定的(all-or-nothing)。除非请求是针对完全静态数据的,否则向服务器发送请求。如果请求是针对可能以任何方式呈动态的数据的,则向服务器发送请求,即使由服务器生成的响应几乎完全由从不改变的内容构成时也是如此。如果整个服务器响应不能存储在缓存中或者从缓存中获得,则服务器响应中的任何一部分都不存储在缓存中或者从缓存中获得。
管理服务器响应数据的缓存的每请求全肯定或全否定方法太过于刚性、粗糙、低效率和浪费。需要一种更加灵活的、精细的和高效的用于管理服务器响应数据的缓存的技术。需要一种允许从服务器响应缓存中获得更多响应数据从而减少服务器工作负载的技术。


本发明在附图中以示例方式而非以限制方式示出,在附图中相似的标号指代类似的元件,其中图1是图示了系统的一个实施例的概况的框图,在系统中,一个或多个网络元件缓存动态生成数据的静态部分;图2A示出了某一流程图,该流程示了利用在网络元件处缓存的服务器响应数据对请求作出响应的方法的一个实施例的概况;图2B示出了某一流程图,该流程示了在网络元件处缓存状态信息的方法的一个实施例的概况;图3A-B示出了某一流程图,该流程示了将应用层消息分类到消息分类中并执行与这些消息分类相关联的动作的方法的一个实施例;图4示出了可能与特定消息分类相关联的样本流;图5是图示了可以在其上实现实施例的计算机系统的框图;图6是图示了某一路由器的一个实施例的框图,在该路由器中,监管器刀片(blade)引导某些分组流去往AONS刀片和/或其他刀片;图7是图示了根据一个实施例在AONS网络中涉及的各种组件的图;图8是示出了示例性AONS节点内的功能模块的框图;图9是示出了可以对消息流量执行以便只产生将在AONS层处理的一组选定流量的多层次过滤的图;图10是图示了根据云视角AONS云内的消息路径的图;图11A和图11B是图示了请求/响应消息流的图;图12A和图12B是图示了备选请求/响应消息流的图;图13是图示了单向消息流的图;图14是图示了备选单向消息流的图;图15A和图15B是图示了具有可靠消息传递的请求/响应消息流的图;图16是图示了具有可靠消息传递的单向消息流的图;图17是图示了同步请求和响应消息的图;图18是图示了样本单向端到端消息流的图;图19是图示了AONS节点内的消息处理模块的图;图20是图示了AONS节点内的消息处理的图;图21、图22和图23是图示了AONS配置和管理框架内的实体的图;以及图24是图示了AONS监视体系结构的图。
具体实施例方式
描述了一种用于在网络元件处缓存内容和状态数据的方法和装置。在下面的描述中,出于说明目的,给出了大量特定细节以提供对本发明的完全理解。然而,本领域技术人员应当清楚,没有这些特定细节也可以实施本发明。在其他实例中,公知的结构和设备以框图形式示出以避免不必要地混淆本发明。
实施例根据下面的大纲进行描述1.0总论2.0结构和功能概述3.0实现示例3.1多刀片(blade)体系结构3.2消息分类3.3动作流3.4AONS示例3.4.1AONS总论3.4.2AONS术语3.4.3AONS功能概述3.4.4AONS系统概述3.4.5AONS系统元件3.4.6AONS示例性特征3.4.7AONS功能模块3.4.8AONS工作模式3.4.9AONS消息路由3.4.10流、BladeletsTM和ScriptletsTM3.4.11AONS服务3.4.12AONS配置和管理3.4.13AONS监视3.4.14AONS工具4.0实现机制-硬件概述5.0扩展和替换
1.0总论在本发明中实现了在前述背景技术中给出的需要以及将从下面的描述中变清楚的其他需要和目的,本发明在一个方面中包括用于在网络元件处缓存动态生成数据的静态部分的方法,在另一个方面中包括用于在网络元件处缓存状态信息的方法。
根据一个实施例,网络元件截取客户端应用已经向服务器应用发送的数据分组。网络元件确定包含在数据分组的净荷部分中的应用层消息。在网络元件处检查指定对指定数据的请求的应用层消息的内容(在净荷部分内的任何头部之后的部分)。基于内容的至少一部分生成缓存密钥,并且向服务器应用转发请求。随后,网络元件截取服务器应用响应于请求而发送的响应。响应包含指定数据。网络元件在本地缓存响应或其一部分,并将响应或其一部分在缓存中与相应请求的缓存密钥相关联。网络元件可以将缓存与一个或多个其他缓存相同步,这一个或多个其他缓存可以远离网络元件。在随后的时刻,网络元件截取对指定数据的另一请求。网络元件从请求内容中导出缓存密钥。网络元件定位在缓存中与缓存密钥相关联的指定数据。网络应用并不将请求发送到服务器应用,而是向发送请求的客户端应用发送指定数据。
根据一个实施例,在网络元件处截取客户端应用发往服务器应用的数据分组。确定统一包含在数据分组的净荷部分中的应用层消息。应用层消息指定对来自服务器应用的指定数据的请求。确定包含在网络元件的缓存中的指定数据的一部分。向服务器应用发送请求未包含在缓存中的动态生成数据的特定消息。从服务器应用接收包含动态生成数据的第一响应。向客户端应用发送第二响应,第二响应既包含动态生成数据,又包含包含在缓存中的指定数据的那一部分。
由于至少某些指定数据不需要向服务器应用请求并且从服务器应用发送,因此减少了服务器应用上的负载,减少了请求和相应响应之间所需的时间,并且节省了网络带宽。由于该方法是由中介于客户端应用和服务器应用之间的网络元件执行的,因此客户端应用和服务器应用都不需要“注意到”该方法正在执行。从而,指定数据中的某些或全部可以在网络元件处“透明地”缓存。
根据一个实施例,在网络元件处截取目的地不是网络元件的数据分组。确定统一包含在数据分组的净荷部分中的应用层消息。应用层消息指定状态信息,例如会话状态信息或数据库连接状态信息。状态信息存储在网络元件处的缓存中。
结果,当容宿会话的服务器应用发生故障时,客户端应用和服务器应用之间的会话可以对于客户端应用来说透明地重新建立。对于客户端应用来说,表现为就好像没有服务器应用故障发生一样。另外,当使用数据库连接的服务器应用发生故障或者数据库连接被切断时,这些数据库连接可以对于服务器应用和数据库来说透明地重新建立。
在其他方面中,本发明包括被配置为执行前述步骤的计算机装置和计算机可读介质。
2.0结构和功能概述图1是图示系统100的一个实施例的概况的框图,在系统100中,网络元件102、104、106和108中的一个或多个缓存动态生成的数据的静态部分。网络元件102、104、106和108可以是代理设备和/或网络交换机和/或路由器,例如在下面的图6中所示的路由器600。
客户端应用110可通信地与网络元件102耦合。服务器应用112A-N可通信地耦合到网络元件106。服务器应用114A-N可通信地耦合到网络元件108。客户端应用110以及服务器应用112A-N和114A-N可以是运行在独立计算机上的独立进程。
网络元件102和104可通信地与网络116耦合。网络元件104和106可通信地与网络118耦合。网络元件104和108可通信地与网络120耦合。网络116、118和120中的每一个都是计算机网络,例如局域网(LAN)、广域网(WAN)或诸如因特网之类的互联网。网络116、118和120可以包含额外的网络元件,例如路由器。
管理控制台122可通信地耦合到网络116。通过管理控制台122,网络管理员可以远程地对网络元件102、104、106和108编程并配置网络元件102、104、106和108。
数据库124可通信地耦合到网络118。服务器应用112A-N和114A-N可以在数据库124中存储数据并从数据库124检索数据。在这样作之前,服务器应用112A-N和114A-N可能需要开启到数据库124的连接,这是通过协商数据库连接状态参数并存储这些参数以供与数据库的通信期间使用而实现的。
客户端应用110在数据分组内封装应用层消息,并使数据分组寻址到虚拟地址,例如虚拟IP地址,每个虚拟IP地址可以与多个服务器相关联。例如,第一虚拟IP地址可以与服务器应用112A-N相关联,第二虚拟IP地址可以与服务器应用114A-N相关联。截取去往第一虚拟IP地址的数据分组的网络元件将数据分组向网络元件106路由。截取去往第二虚拟IP地址的数据分组的网络元件将数据分组向网络元件108路由。
网络元件102、104、106和108截取包含消息的数据分组。网络元件102、104、106和108组装一个或多个数据分组以确定包含在其中的应用层消息的至少一部分。基于该消息,网络元件102、104、106和108执行一个或多个动作。
例如,网络元件106可以确定包含在应用层消息中的会话标识符。网络元件106可以确定服务器应用112A-N中的哪一个被映射到该会话标识符(如果有的话)。网络元件106可以将应用层消息发送到被映射到会话标识符的服务器应用112A-N之一,或者,如果没有任何一个服务器应用112A-N被映射到该会话标识符,则网络元件106可以建立服务器应用112A-N之一和会话标识符之间的映射,并将应用层消息发送到该服务器应用。
网络元件102、104、106和108在本地缓存信息。网络元件102、104、106和108缓存的信息类型的某些示例将在下面描述。
根据一个实施例,网络元件102、104、106和108缓存会话状态信息和数据库连接状态信息。当服务器应用112A-N或114A-N之一发生故障时,已在其上缓存会话状态信息的网络元件可以将该状态信息发送到服务器应用112A-N或114A-N中仍旧工作的另一个,并且该服务器应用可以使用会话状态信息来恢复与客户端应用110的会话。
类似地,当服务器应用112A-N或114A-N之一和数据库(例如数据库124)之间的数据库连接被切断时,已在其上缓存数据库连接状态信息的网络元件可以使用所缓存的状态信息来重新建立数据库连接,该数据库连接的重新建立对于正通过数据库连接进行通信的服务器应用或某一不同的服务器应用来说是透明的,从而服务器应用不需要重新开启数据库连接。
根据一个实施例,网络元件102、104、106和108缓存由服务器应用112A-N和114A-N动态生成的内容的静态部分。当网络元件102、104、106和108从客户端应用110接收到对于这种动态生成内容的请求时,网络元件只向服务器应用112A-N和114A-N请求动态生成内容的未缓存部分,并且在接收到未缓存部分后,将未缓存部分与已缓存部分相组合从而生成完整的响应,该响应随后被发回客户端应用110。
图2A示出了流程图200A,流程图200A图示了利用在网络元件处缓存的服务器响应数据对请求作出响应的方法的一个实施例的概况。该方法可以例如由网络元件102、104、106和108中的任何一个执行。
在框202中,网络元件截取客户端应用发往服务器应用的一个或多个数据分组,其中服务器应用容宿在除了网络元件之外的某一设备上。例如,网络元件106可以截取客户端应用110发往与服务器应用112A-N相关联的某一虚拟IP地址的一个或多个数据分组。从而,数据分组去往服务器应用112A-N之一。
在框204中,根据数据分组的一个或多个净荷部分确定包含对指定数据的请求的应用层消息。例如,网络元件106可以组装数据分组。网络元件106可以检查被组装的数据分组的净荷部分的内容以确定客户端应用110正试图发送到服务器应用112A-N之一的应用层消息。该消息可以例如是对目录的XML格式的请求。目录的某些部分可能需要由服务器应用112A-N之一动态生成;从而,该目录不可能只包含静态信息。
该消息可以采取多种形式中的任何一种XML格式的请求只是一个示例。此外,该消息可以经由许多种不同协议和/或格式(例如HTTP、JMS、SMTP、FTP等等)中的任何一种发送。消息的内容独立于用来传递该消息的协议和格式。在一个实施例中,消息的内容被认为是跟随在任何应用层头部(例如HTTP头部或其他应用层协议头部)之后的消息的一部分,该应用层头部包含在截取的数据分组的净荷部分中。
传统上,对数据的请求是以HTTP GET请求的形式发送的。然而,根据一个实施例,客户端应用以HTTP POST请求的形式向服务器应用发送请求(但是,如上所述,任何协议都可用于传送消息内容)。HTTP POST请求包含诸如XML消息之类的内容,其向服务器应用指示客户端应用请求什么内容。根据一个实施例的网络元件能够检查这种HTTP POST请求的内容,并基于这些内容生成缓存密钥,这将在下面描述。
指定数据的一个或多个部分可以包含在网络元件的缓存中。在框206中,确定包含在网络元件的缓存中的部分。例如,网络元件106可以确定所请求的目录的任何部分是否被存储在该网络元件的缓存中。这些部分可以由例如意识到这些部分不太可能随请求而改变的用户预先存储在缓存中。
在一个实施例中,对指定数据的请求对应于一个被称为“缓存密钥”的密钥,其可以通过将请求或其一部分输入到例如散列函数中来产生。在网络元件的缓存中,指定数据的一部分可以被映射到缓存密钥。例如,对目录的请求可以对应于特定缓存密钥,并且在网络元件的缓存中,目录的一部分可以被映射到该特定密钥。为了确定目录的任何部分当前是否被存储在网络元件的缓存中,网络元件可以确定缓存中的任何信息是否被映射到与对目录的请求相对应的缓存密钥。
根据一个实施例,当网络元件接收到对指定数据的请求时,网络元件通过对包含请求的消息的全部内容或内容的指定部分进行散列化(hash)来生成缓存密钥。从而,缓存密钥唯一地对应于消息内容。当网络元件截取对请求的响应时,网络元件将响应或其指定部分存储在网络元件的缓存中,并且将响应或其一部分与请求的缓存密钥相关联。这允许无论以后何时截取到包含散列化为相同缓存密钥的内容的类似请求时,都能在缓存中定位响应。由于缓存密钥是从消息的内容中导出的,因此缓存密钥可以独立于包含在协议头部中的任何信息,例如消息目的地的URI。根据一个实施例,被用于生成缓存密钥的消息内容的一部分以及被用于生成缓存密钥的机制都是用户可编程的。
在一个实施例中,如果所有指定数据都包含在网络元件的缓存中,则网络元件并不将请求向服务器应用转发,而是向客户端应用发送与网络元件的缓存中的缓存密钥相关联的数据。然而,如果指定数据中的任何一部分需要动态生成,则网络元件可以按如下方式向服务器应用请求指定数据的一部分。
在框208中,向服务器应用发送请求不包含在网络元件的缓存中的动态生成数据的消息。例如,在识别了被缓存的指定数据的一部分之后,网络元件106可以将只请求未被缓存的指定数据的那一部分的消息发送到服务器应用112A-N之一。例如,该消息可以由意识到这些部分可能随请求而改变的用户预先生成,并存储在网络元件106处。
在框210中,从服务器应用接收包含动态生成数据的第一响应。例如,服务器应用112A-N之一可以接收消息,动态生成该消息所请求的数据,并向网络元件106发送动态生成数据。例如,动态生成数据可以包括未在网络元件106处缓存的目录部分。
在框212中,向客户端应用发送第二响应,第二响应既包含指定数据的动态生成部分,又包含指定数据的已缓存部分。例如,网络元件106可以将指定数据的已缓存部分和包含在第一响应中的指定数据的未缓存的动态生成部分组合到第二响应中。然后,网络元件106可以向客户端应用110发送第二响应。例如,第二响应可以包括客户端应用110在原始应用层消息中请求的完整目录。
上述请求和响应并不依赖于任何协议;多种不同协议中的任何一种都可用于发送上述请求和响应。例如,应用层消息可以根据HTTP协议来运送。在这种情况下,应用层消息前可以加有HTTP头部,HTTP头部独立于应用层消息本身。又例如,应用层消息可以是Java消息服务(JMS)消息。类似地,上述第一和第二响应可以是HTTP消息、JMS消息或其他种类的消息。
在一个实施例中,网络元件102、104、106和108周期性地同步其缓存,以使得每个网络元件的缓存包含相同的数据和缓存密钥关联。另外或备选地,网络元件102、104、106和108中的每一个可以包括多个缓存。每个网络元件可以将该网络元件的缓存中的每一个与该网络元件的所有其他缓存同步。例如,每个这种缓存可以位于网络元件的不同“刀片”上。刀片将在下面参考图6更详细地描述。通过同步缓存,响应于截取的请求可以返回被缓存的响应,而无论这些请求是在网络中的何处被截取的。
图2B示出了流程图200B,流程图200B图示了在网络元件处缓存状态信息的方法的一个实施例的概况。该方法可以例如由网络元件102、104、106和108中的任何一个执行。
在框220中,网络元件截取目的地不是该网络元件的一个或多个数据分组。例如,网络元件106可以截取服务器应用112A去往客户端应用110或数据库124的一个或多个数据分组。从而,数据分组目的地不是网络元件106。
在框222中,根据数据分组的一个或多个净荷部分确定包含状态信息的应用层消息。例如,网络元件106可以组装数据分组。网络元件106可以检查被组装的数据分组的净荷部分的内容以确定应用层消息。例如,该消息可以包含指示客户端应用110和服务器应用112A之间的会话的当前状态的信息。又例如,该消息可以包含指示数据库连接状态信息的信息,例如服务器应用112A用于开启到数据库124的连接的参数。
在框224中,状态信息被存储在网络元件处的缓存中。例如,网络元件106可以将状态信息存储在位于网络元件106处的缓存中。被缓存的状态信息可以在以后用于在系统100的某些组件发生故障的情况下重新建立会话或数据库连接。会话和数据库连接的重新建立可以对于客户端应用110以及服务器应用112A-N和114A-N透明地执行。
3.0实现方式示例3.1多刀片体系结构根据一个实施例,路由器中的面向应用的网络服务(AONS)刀片执行上述动作。图6是图示了路由器600的一个实施例的框图,在路由器600中,监管器刀片602将分组流610A-B中的某一些引导到AONS刀片和/或其他刀片606A-N。路由器600包括监督器刀片602、AONS刀片604,以及其他刀片606A-N。刀片602、604和606A-N中的每一个都是具有诸如处理器、存储器和网络连接之类的组件的单个电路板,这些组件通常在多个板上找到。刀片602、604和606A-N被设计为可以被添加到路由器600和从路由器600中移除。路由器600的功能由其中的刀片的功能确定。向路由器600添加刀片可以增加路由器600的功能,但是如果希望,则路由器600可以以较低的成本利用较少的刀片提供较少的功能。可以选择一个或多个刀片。
路由器600接收分组流,例如分组流610A-B。更具体而言,由路由器600接收的分组流610A-B是由监管器刀片602接收到的。监管器刀片602可以包括转发引擎和/或路由处理器,例如可以从Cisco Systems Inc.购得的转发引擎和/或路由处理器。
在一个实施例中,监管器刀片602基于在分组流610A-B的分组头部中包含的一个或多个参数给分组流610A-B分类。如果在特定分组的分组头部中包含的参数与指定参数匹配,则监管器刀片602将分组发送到AONS刀片604和/或其他刀片606A-N中的指定一个。或者,如果在分组头部中包含的参数不与任何指定参数匹配,则监管器刀片602对于特定分组执行路由功能,并将该特定分组向特定分组的目的地转发。
例如,监管器刀片602可以确定分组流610B中的分组头部与指定参数匹配。因此,监管器刀片602可以将分组流610B中的分组发送到AONS刀片604。监管器刀片602可以接收从AONS刀片604和/或其他刀片606A-N返回的分组,并将分组发送到去往这些分组的目的地的网络路径中的下一跳。又例如,监管器刀片602可以确定分组流610A中的分组头部不与任何指定参数匹配。因此,监管器刀片602并不将分组流610A中的任何分组发送到AONS刀片604或其他刀片606A-N,而是可以将分组流610A中的分组发送到去往这些分组的目的地的网络路径中的下一跳。
AONS刀片604或其他刀片606A-N接收来自监管器刀片602的分组,执行与分组有关的操作,并将分组返回到监管器刀片602。监管器刀片602可以在将分组发出路由器600之前,将分组发送到多个刀片以及从多个刀片接收分组。例如,监管器刀片602可以将特定的一组分组发送到其他刀片606A。其他刀片606A可以执行与分组有关的防火墙功能,并将分组发回到监管器刀片602。监管器刀片602可以接收来自其他刀片606A的分组,并将分组发送到AONS刀片604。AONS刀片604可以执行一种或多种基于消息净荷的与分组有关的操作,并将分组发回到监管器刀片602。
根据一个实施例,在AONS路由器(例如路由器600)处发生下面的事件。首先,接收包含从客户端到服务器的消息的分组。接着,对分组执行基于访问控制列表的过滤,并且将某些分组发送到AONS刀片或模块。接着,对分组执行TCP终止。接着,如果必要的话,对分组执行安全套接字层(SSL)终止。接着,对分组执行基于通用资源定位符(URL)的过滤。接着,对分组执行基于消息头部和消息内容的过滤。接着,将分组中包含的消息分类到AONS消息类型中。接着,选择对应于AONS消息类型的策略流。接着,执行所选的策略流。然后,分组被按照所选策略流指定的那样转发、重定向、丢弃、拷贝或扇出(fan out)。
3.2消息分类图3A-B示出了流程图300,流程图300图示了将应用层消息分类到消息分类中并执行与这些消息分类相关联的动作的方法的一个实施例。例如,网络元件102、104、106和108中的一个或多个可以执行该方法。更具体而言,AONS刀片604可以执行该方法的一个或多个步骤。其他实施例可以省略在流程图300中示出的一个或多个操作。其他实施例可以包含除流程图300中所示的操作之外的操作。其他实施例可以按不同于流程图300中所示的顺序执行流程图300中所示的操作。
首先参考图3A,在框302中,在网络元件处接收用户指定输入。用户指定输入指示以下内容要与特定消息分类相关联的一个或多个标准,以及要与特定消息分类相关联的一个或多个动作。用户指定输入可以指示执行这一个或多个动作的顺序。用户指定输入可以指示动作的输出要被提供给其他动作作为输入。例如,网络元件104(更具体而言是AONS刀片604)可以接收这种来自网络管理员的用户指定输入。
在框304中,在网络元件处建立特定消息分类和一个或多个标准之间的关联。例如,AONS刀片604可以建立特定消息分类和一个或多个标准之间的关联。例如,该标准可以指示消息要属于相关联的消息分类而需要包含的特定文本串。又例如,该标准可以指示消息要属于相关联的消息分类而需要存在于XML格式的消息的分级结构中的特定路径。又例如,该标准可以指示消息要属于相关联的消息分类而需要来自于哪个/些源IP地址或去往哪个/些目的地IP地址。
在框306中,在网络元件处建立特定消息分类和一个或多个动作之间的关联。与特定消息分类相关联的一个或多个动作包括与该特定消息分类相关联的“策略”。策略可以包括根据在用户指定输入中指定的特定顺序排序的一个或多个动作的“流”和/或无序的一个或多个其他动作。例如,AONS刀片604可以建立特定消息分类和一个或多个动作之间的关联。总的来说,框302-306的操作包括“供应”(provisioning)网络元件。
在框308中,网络元件截取目的地是除了网络元件之外的某一设备的一个或多个数据分组。该数据分组可以例如是包含IP和TCP头部的数据分组。在数据分组的IP头部中指示的IP地址不同于网络元件的IP地址;因此,数据分组的目的地是除了网络元件之外的某一设备。例如,网络元件104(更具体而言是监管器刀片602)可以截取客户端应用110最初发送的数据分组。例如,数据分组的目的地可能是服务器应用112。
在框310中,基于在数据分组的头部中指示的一个或多个信息项,确定被用于发送在数据分组的净荷部分中包含的消息(下文中称为“该消息”)的应用层协议。信息项可以包括例如IP头部中的源IP地址、IP头部中的目的地IP地址、TCP头部中的TCP源端口和TCP头部中的TCP目的地端口。例如,网络元件104(更具体而言是AONS刀片604)可以存储映射信息,该信息将FTP(一种应用层协议)映射到IP地址和/或TCP端口的第一组合,将HTTP(另一种应用层协议)映射到IP地址和/或TCP端口的第二组合。基于该映射信息以及由截取的数据分组所指示的IP地址和/或TCP端口,AONS刀片604可以确定哪一种应用层协议(FTP、HTTP、简单邮件传送协议(SMTP)等)被用于发送该消息。
在框312中,确定与被用于发送该消息的应用层协议相关联的消息终止技术。例如,AONS刀片604可以存储映射信息,该信息将FTP映射到第一方案,将HTTP映射到第二方案,并将SMTP映射到第三方案。第一方案可以采用第一消息终止技术,其可被用于从数据分组中提取出利用FTP发送的消息。第二方案可以采用第二消息终止技术,其可被用于从数据分组中提取出利用HTTP发送的消息。第三方案可以采用第三消息终止技术,其可被用于从数据分组中提取出利用SMTP发送的消息。基于该映射信息以及被用于发送该消息的应用层协议,AONS刀片604可以确定应当调用哪一方案以从数据分组中提取出该消息。
在框314中,基于与被用于发送消息的应用层协议相关联的终止技术确定消息的内容。例如,AONS刀片604可以提供数据分组作为对在框312中确定的被映射到应用层协议的方案的输入。该方案可以使用适当的消息终止技术来从数据分组中提取出消息的内容。该方案可以将消息作为输出返回到AONS刀片604。从而,在一个实施例中,从数据分组中提取出的消息独立于被用于发送消息的应用层协议。
在框316中,确定与消息满足的标准相关联的消息分类。例如,AONS刀片604可以存储将不同标准映射到不同消息分类的映射信息。该映射信息指示在可能的许多不同关联中的在框304中建立的关联。AONS刀片604可以确定消息的内容是否满足与已知消息分类中的任何一种相关联的标准。在一个实施例中,如果消息的内容满足与特定消息分类相关联的标准,则确定该消息属于该特定消息分类。
尽管在一个实施例中消息内容被用于确定消息的分类,但是在备选实施例中,包含在消息中的内容以外的信息也可用于确定消息的分类。例如,在一个实施例中,消息内容以及在包含消息的数据分组中指示的一个或多个IP地址和/或TCP端口的组合被用于确定消息的分类。又例如,在一个实施例中,在包含消息的数据分组中指示的一个或多个IP地址和/或TCP端口被用于确定消息的分类,而无论消息的内容如何。
在框318中,执行与在框316中确定的消息分类相关联的一个或多个动作。如果两个或更多个动作与指定的执行顺序(由用户指定输入所指示)相关联,则这些动作被按指定顺序执行。如果这些动作中的任何一个的输出假定被作为输入提供给任何一个动作(如用户指定输入所指示),则指定动作的输出被作为输入提供给其他指定动作。
可以执行与消息有关的多种不同动作。例如,一个动作可能指示消息的一个或多个部分要在网络元件处缓存。例如,要缓存的部分可以利用XPath指定。或者,该部分可以利用常规表达指定。
又例如,一个动作可能指示在网络元件处缓存的响应要被返回到发出该消息的设备(如果该响应被在网络元件处缓存)。例如,网络元件104(更具体而言是AONS刀片604)可以确定对消息的响应是否在网络元件104处缓存;该响应可能在对同一消息的前一响应经过网络元件104的时已经在网络元件104处被缓存。如果网络元件104确定该响应被缓存,则网络元件104可以将响应返回到消息的发源地。因此,网络元件104不需要将消息转发到消息的目的地,并且消息的目的地不需要发出对消息的另一响应。
又例如,一个动作可能指示丢弃消息。在这种情况下,阻止消息被转发出网络元件向消息的目的地转发。又例如,一个动作可能指示在将消息转发出网络元件之前利用指定的压缩技术压缩消息。
又例如,一个动作可能指示要以指定方式改变消息的内容。例如,一个动作可能指示指定文本要被插入到消息中的指定位置。例如,该位置可能由消息的XML分级体系结构中的路径指定,或者由在消息中发生的指定文本串指定。又例如,一个动作可能指示指定文本要被从消息中删除。又例如,一个动作可能指示指定文本要替换消息中的其他指定文本。被插入到消息中的文本可能从网络元件外部的数据库动态(“即时”)获得。
又例如,一个动作可能指示要以指定方法改变消息的消息格式。例如,一个动作可能指示消息的格式要从XML变为某种其他格式,例如EDI。又例如,一个动作可能指示消息的格式要从除了XML之外的某种其他格式变为XML。消息格式可以在不改变消息的核心内容的情况下改变,该核心内容独立于消息格式。
又例如,一个动作可能指示消息要利用除了消息的发源地用于发送消息的应用层协议之外的指定应用层协议转发。例如,客户端应用110可能使用第一应用层协议(例如HTTP)来发送消息。因此,当被网络元件104截取时,该消息可能包含HTTP头部。然而,根据指定动作,在网络元件104将消息向消息的目的地转发之前,网络元件104(更具体而言是AONS刀片604)可以修改消息,以使得消息被利用除了HTTP之外的某一应用层协议(例如FTP、SMTP等)运送。
又例如,一个动作可能指示要改变消息的目的地以使得该消息被向与消息的源最初指定的设备不同的某一设备转发。例如,根据指定动作,网络元件104(更具体而言是AONS刀片604)可能将消息封装在一个或多个新的IP数据分组中,这些分组指示与最初截取的IP数据分组指示的目的地IP地址不同的新的目的地IP地址。然后,网络元件104可以将该新的IP数据分组向新的目的地转发。以这种方式,可以实现基于消息内容的路由。
又例如,一个动作可能指示指定事件要被写入到可能在网络元件外部的指定日志中。例如,根据指定动作,网络元件104(更具体而言是AONS刀片604)可能将消息的至少一部分与从其接收到消息的IP地址一起写入到日志文件。
又例如,一个动作可能指示消息在被转发到目的地之前要利用指定密钥进行加密。例如,根据指定动作,网络元件104(更具体而言是AONS刀片604)可能利用指定密钥对消息的至少一部分进行加密,然后将包含经加密的消息的数据分组向消息的目的地转发。
不同的消息分类可以与不同的缓存策略相关联。这些策略可以是用户指定且用户编程的。从而,在一个实施例中,用户指定消息的哪些部分要被缓存(如上所述,这些部分可以例如通过诸如常规表达或XPath之类的机制来指示)。用户可以指定其他缓存参数,例如要在其中缓存消息的缓存的身份和/或该条目在缓存中维持的时长。对于每个不同的消息分类,用户可以指定不同的缓存策略。用于某些消息分类的某些缓存策略可以指示属于这些消息分类的消息中包含的信息都不应当被缓存。用户还可以指定被用于生成用于属于特定消息分类的消息的缓存密钥的机制,以及要被提供给该机制的消息的一部分。例如,用户可以指示散列函数,其中消息内容的一个或多个指定部分要被输入到该散列函数中以导出用于特定分类的消息的缓存密钥。指定部分可以例如通过评价用户指定的常规表达或XPath表达来识别,这些表达指示消息的哪些部分要被提供给缓存密钥生成机制。
如果在动作的执行期间消息被以某种方式修改(例如,内容、格式或协议修改),并且修改后的消息假定要转发出网络元件,则网络元件将修改后的消息封装到新的数据分组中,并向修改后的消息的目的地(其可能也被修改)发送新的数据分组。
消息可能不属于任何已知的消息分类。在这种情况下,根据一个实施例,网络元件不执行任何用户指定的与消息有关的动作。相反地,网络元件仅仅沿到数据分组的指示目的地的路径将数据分组转发到下一跳。
作为流程图300中所示的方法的结果,诸如客户端应用110以及服务器应用112A-N和114A-N之类的应用可以彼此通信,就好像没有网络元件充当中介,并且每个其他应用都使用相同的消息格式和应用层协议进行通信那样。由于响应数据可以被缓存在网络元件102、104、106和108处,并从这些网络元件返回到客户端应用110,因此至少某些请求可能不需要总是被传递到服务器应用112A-N和114A-N,并且服务器应用可能不需要生成对这些请求的响应。这减少了延迟,节约了网络带宽,并减少了服务器应用上的负荷。
3.3动作流图4示出了可能与特定消息分类相关联的样本流400。流400按顺序包括动作402-414;其他流可以包括一个或多个其他动作。动作402指示消息的内容应当以指定方式修改。动作404指示指定事件应当被写入到指定日志。动作406指示消息的目的地应当变为指定目的地。动作408指示消息的格式应当被转换为指定消息格式。动作410指示用于发送消息的应用层协议应当变为指定应用层协议。动作412指示消息应当利用特定密钥进行加密。动作414指示消息应当向消息的目的地转发。
在其他实施例中,动作402-414中的任何一个可以独立执行,或者与动作402-414中的任何其他动作相组合地执行。
3.4AONS示例3.4.1AONS总论面向应用的网络系统(AONS)是一种用于构建在网络中嵌入智能以更好地满足应用部署的需要的一类产品的技术基础。AONS通过提供对关于什么信息在网络内流动的更大的关注程度并且通过将信息路由到适当的目的地(以该目的地所预期的格式)来帮助客户集成不同的应用,从而补充了现有的网络技术;施行用于信息访问和交换的策略;在网络带宽和处理开销方面优化应用流量流;提供增强的信息流管理,包括监视和度量信息流以用于业务和底层结构(infrastructure)目的;以及通过透明地备份或重路由关键业务数据来提供增强的业务连续性。
AONS通过更多地理解信息流的内容和上下文提供了该增强的支持。同样,AONS主要工作在消息级别,而不是分组级别。一般来说,信息的AONS处理终止了TCP连接以检查整个消息,包括“净荷”以及全部头部。AONS还理解并辅助普遍的应用层协议,例如HTTP、FTP、SMTP和事实上的标准中间设备(middleware)协议。
AONS与运行在通用计算系统上的中间设备产品的不同之处在于,AONS的行为在其简单性、总拥有成本和性能方面更加类似于网络器具(network appliance)。此外,AONS与网络层支持相集成以提供对信息流和管理的更完整的方法,从而将在应用层所需的特征映射到由路由器、交换机、防火墙和其他网络系统实现的低层联网特征中。
尽管在来自Cisco Systems Inc.的现有产品线中提供了某些与AONS具有类似功能的元件,但是这些产品一般对诸如IP/端口地址或HTTP头部之类的信息表现出更加有限的关注度,以提供负载平衡和故障切换(failover)解决方案。AONS提供了用于更宽广的功能支持、更宽广的应用分类以及更大的应用数据的控制和管理程度的框架。
3.4.2AONS术语
“应用”是执行运行在服务器或桌面系统上的业务功能的软件实体。应用可以是打包应用、运行在应用服务器上的软件、运行在主机上的遗留应用、或内部开发以满足业务需要的定制或私有软件、或者执行某种操作的脚本。这些应用可以与同一部门中的(部门的)其他应用、单个企业内的不同部门的(企业内的)其他应用、企业和其合作伙伴间的(企业间的或B2B)其他应用或者企业和其客户的(客户的或B2C)其他应用通信。AONS为上述情形中的任何一种提供了增值服务。
“应用消息”是由应用生成以与其他应用通信的消息。应用消息可以指定在处理该消息时应当执行的不同业务级别步骤,并且可以是下面描述的消息格式中的任何一种。在本文件的其余部分中,除非明确指出,否则术语“消息”也指应用消息。
“AONS节点”是AONS系统(或网络)内的主要AONS组件。如后面将描述的,AONS节点可以采取客户端代理、服务器代理或路由应用消息的中介设备的形式。
每个应用消息当被第一AONS节点接收时,被分派一个AONS消息ID,并被认为是“AONS消息”,直到该消息被传递到目的地AONS节点为止。AONS消息的概念存在于AONS云中。单个应用消息可以映射到多于一个AONS消息。如果例如应用消息需要由多于一个业务功能处理,则可能出现这种情形。例如,由请求应用提交的需要由“CreditCheck”应用和“LoanProcessing”应用处理的“LoanRequest”消息将需要由多于一个业务功能处理。在该示例中,从AONS的角度来看,存在两个AONS消息从请求应用到CreditCheck应用的“LoanRequest”到“CreditCheck”AONS消息;以及从CreditCheck应用到LoanProcessing应用的“LoanRequest”到“LoanProcessing”AONS消息。
在一个实施例中,AONS消息被封装在AONP(AON协议)头部中,并且被转换为“规范”(canonical)格式。从AONS消息的角度提供了可靠性、日志记录和安全性服务。
从AONS的角度,应用一般用来彼此通信的一组协议或方法被称为“应用访问协议”(或方法)。应用可以利用任何被支持的应用访问方法与AONS网络(一般是端点代理客户端代理和服务器代理)通信。应用访问协议的某些示例包括IBM MQ系列、Java消息服务(JMS)、TIBCO、超文本传送协议(HTTP)/HTTPS上的简单对象访问协议(SOAP),以及简单邮件传送协议(SMTP)。关于各种访问方法的细节将在该文件的后续部分中说明。
存在很多种应用所用的“消息格式”。这些消息格式的范围包括定制或私有格式以及工业特定格式和标准化格式。可扩展标记语言(XML)作为一种用于供应用彼此通信的通用语言或消息格式正得到普遍应用。AONS支持很多种这些格式。
另外,AONS提供了基于应用需要从一种格式到另一格式的转换服务。典型部署可能涉及第一AONS节点,其接收应用消息(客户端代理),将该消息转换为“规范”格式,规范格式的消息被作为AONS消息通过AONS网络运送。服务器代理可能在传递该消息之前将消息从“规范”格式转换为接收应用所理解的格式。为了理解某些非工业标准格式,可以使用消息辞典。
执行多种应用访问方法或协议之间的网关功能的节点被称为“协议网关”。协议网关的示例可以是通过文件传送协议(FTP)接收应用消息并将同一消息作为HTTP贴发送到另一应用的节点。在AONS中,客户端和服务器代理一般被预期执行协议网关功能。
如果应用生成电子数据交换(EDI)格式的消息而接收应用期望消息是XML格式,则消息格式需要被转换,而消息内容需要在转换过程中保持不变。在AONS中,端点代理一般执行该“消息格式转换”功能。
在某些情况下,即使发送和接收应用使用相同的消息格式,对于接收应用来说也需要转换内容。例如,如果一个美国应用正与一个英国应用通信,则这两个应用之间的消息中的日期格式可能需要被转换(从月/日/年到日/月/年),即使应用使用相同的数据表示(或消息格式)时也是如此。该转换被称为“内容转换”。
3.4.3AONS功能概述如前所定义,AONS可以被定义为基于网络的智能中介系统,其高效且有效地将业务和应用需要与更加灵活和更具响应性的网络服务相集成。具体而言,AONS可以通过以下特性理解AONS工作在比传统网络元件产品(2-4层)高的层(5-6层)。AONS使用消息级别的检查作为对分组级别检查的补充-通过理解应用消息,AONS向多种网络元件产品,例如交换机、防火墙、内容缓存系统和负载平衡器提供“消息交换路由”方面的附加值。AONS在安全性、可靠性、流量优化(压缩、缓存)、可视性(业务事件和网络事件)和变换(例如,从XML到EDI)方面提供了更大的灵活性和网络响应粒度。
AONS是一种综合技术平台,而不仅仅是点解决方案。AONS可以通过分布式智能中介系统实现,该系统位于分布式企业内和企业间环境中的应用、中间设备和数据库之间(用于路由消息、执行变换等)。AONS提供了用于业务流的末端用户配置的灵活框架,以及AONS服务的策略和伙伴驱动的可扩展性。
AONS尤其适合于基于网络的部署。AONS是基于网络的,而不是通用的基于服务器的。AONS是混合的基于软件和基于硬件的(即,基于专用集成电路(ASIC)/现场可编程门阵列(FPGA)的加速(acceleration))。AONS使用流量的(由策略确定的)带外或线内处理。AONS被部署在独立产品(网络器具)以及嵌入式产品(用于多个交换、路由和存储平台的服务刀片)中。
3.4.4AONS系统概述该部分概括了示例性AONS系统的系统概述。图7是图示了根据本发明一个实施例在示例性AONS网络702中涉及的各种组件的图700。由每个节点执行的角色在后续的部分中详细提及。
在AONS网络702内,关键的构建块包括AONS端点代(AEP)704-710和AONS路由器(AR)。可以从放置在逻辑AONS“云”的边缘处的AEP 704内开始了解应用意图。当客户端应用714A-N中的特定客户端应用尝试通过网络发送消息到服务器应用716A-N和718A-N中的特定服务器应用目的地时,该特定客户端应用将首先与AEP 704交互。
AEP 704充当透明或显式消息传送网关,其将网络分组聚集到应用消息中,并推断消息级别的意图,这是通过以下方式实现的检查给定消息的头部和净荷,将消息与适当上下文相关,可选地应用适当策略(例如,消息加密、变换等),然后经由网络交换机向消息的应用目的地路由消息。
AONS路由器(AR)712可以截取在到消息的目的地端点的路由上的消息。基于消息头部内容,AR 712可以确定新的路由将更好地满足给定应用系统的需要。AR 712可以基于企业级别的策略,在考虑到当前网络状况的情况下进行该确定。随着消息接近其目的地,消息可以遇到AEP 706,其可以执行在消息到达之前的最后一组操作(例如,消息解密、传递确认)。在一个实施例中,每个消息只被解析一次当该消息第一次进入AONS云时。消息遍历的第一AEP负责准备用于下层网络内的最优处理的消息。
AEP 704-708还可被进一步分类为AEP客户端代理和AEP服务器代理,以明确突出由代表特定端点应用的AEP执行的角色和操作。
典型的消息流包括特定客户端应用714A通过由AONS支持的各种访问协议之一向AEP客户端代理(CP)704提交消息。一接收到该消息,AEP CP 704就向消息分派一个AONS消息id,将该消息与AONP头部封装,并执行与AONS网络有关的任何必要操作(例如,安全性和可靠性服务)。另外,如果必要的话,该消息被AEP CP 704转换为“规范”格式。该消息通过TCP连接沿着到目的地应用718A的路径被运送到AR710。沿着路径的AONS路由器执行消息所需的底层结构服务,并可以基于客户所配置的策略改变路由。该消息在目的地AEP服务器代理(SP)706处被接收到。AEP SP 706执行必要的安全性和可靠性功能,并在必要的情况下将消息转换为接收应用所理解的格式。然后,AEP SP 706利用应用718A和AONS所支持的任何一种访问协议将消息发送到接收应用718A。通过AONS网络702的详细的消息流将在下面的部分中描述。
3.4.5AONS系统元件该部分概括了从AONS角度使用的不同概念。
“AEP客户端代理”是执行消息的发送方(客户端)上的应用所必需的服务的AONS节点。在该文件的其余部分中,端点代理也指客户端或服务器代理。在处理消息时客户端代理的一般责任是消息预分类和早期拒绝、协议管理、消息身份管理、AONP头部中的消息封装、用于可靠传递的端点发起、安全性端点服务发起(加密、数字签名、认证)、流选择和执行/底层结构服务(日志记录、压缩、内容变换等)、路由-下一跳AONS节点或目的地、AONS节点和路由发现/通告角色和路由以及用于可靠传递机制的端点发起(保证传递路由器)。
并不需要对每个消息执行上述所有功能。对消息执行的功能由对AONS节点配置的策略控制。
“AEP服务器代理”是执行消息的接收方(服务器)上的应用所必需的服务的AONS节点。在本文件的其余部分中,服务器代理也可被称为端点代理。在处理消息时服务器代理的一般责任是协议管理、用于可靠传递的端点终止、安全性端点服务终止(解密、数字签名的核实等等)、流选择和执行/底层结构服务(日志记录、压缩、内容转换等)、AONP头部中的消息解封装、对发送AONS节点的确认、到目的地的应用路由/请求消息传递、响应消息关联以及到入口AONS节点的路由。
注意,并不需要对每个消息执行以上列举的所有功能。对消息执行的功能由对AONS节点配置的以及消息头部指示的策略控制。
“AONS路由器”是提供消息转发功能以及AONS网络内的附加底层结构服务的AONS节点。AONS路由器与客户端代理、服务器代理和其他AONS路由器通信。AONS路由器可以在不解析消息的情况下提供服务;AONS路由器可以依赖于AONP消息头部和在AONS网络中配置的策略,而不用解析消息。AONS路由器提供了以下功能在需要的TCP连接的数目方面在AONS网络中的可扩展性;基于消息目的地、在AONS云中配置的策略、在消息中指定的路由和/或消息内容进行的消息路由;在期望目的地处的负载-重路由(如果需要的话);目的地的可用性-重路由(如果需要的话);传输成本(在多个服务提供商之间进行选择);以及底层结构服务,例如发送到日志记录工具、发送到存储区域网(SAN)以用于备份目的、以及对于可缓存的消息(比如目录)接口到缓存引擎。
AONS路由器不需要理解应用访问协议中的任何一种,并且在一个实施例中,只处理利用AONP头部封装的消息。
面向应用的联网协议(AONP)是用于AONS网络中的节点之间的通信的协议。在一个实施例中,每个AONS消息运送AONP头部,AONP头部给出了分组的目的地以及用于在后续节点中处理消息的附加信息。AONP还解决策略交换(静态的或动态的)、节点之间的故障切换、AONS节点之间的负载平衡以及路由信息的交换。AONP还能够在多种网络元件(例如防火墙、缓存引擎和路由器/交换机)中进行面向应用的消息处理。AONP既支持固定头部,又支持可变头部(利用类型长度值(TLV)字段形成),以支持中介节点中的高效处理以及用于附加服务的灵活性。
除非明确指出,否则这里的“路由器”或“交换机”指当前可以购买到的典型的第3层或第2层交换机或路由器。
3.4.6AONS示例性特征在一个实施例中,下层的“子系统服务的AONS基础平台”(AOS)提供了某个范围的通用服务,包括对安全性、压缩、缓存、可靠性、策略管理和其他服务的支持。随后,在该平台的顶端,AONS提供了某个范围的分立功能组件,这些功能组件可以连线在一起以提供对传入数据流量的整体处理。这些“bladeletsTM”意在在由应用或信息技术(IT)管理者所要求的特定策略或动作的上下文中实现个别服务。一系列访问方法适配器确保了对某个范围的入口和出口格式的支持。最后,一组面向用户的工具使得管理者能够适当地查看、配置和设置用于AONS解决方案的策略。这四个功能类别相组合以提供某个范围的末端客户能力,包括增强的安全性、底层结构优化、业务连续性、应用集成和操作可视性。
由AONS解决方案提供的增强的可视性和增强的响应能力提供了多种智能的、面向应用的网络服务。这些智能服务可以总结为四个主要类别增强的安全性和可靠性提供了可靠的消息传递,并且除了现有的网络级别安全性之外,还提供了消息级别安全性。
底层结构优化通过在消息级别利用缓存和压缩以及通过集成应用和网络服务质量(QoS),能够更高效地使用网络资源。
业务和底层结构活动性监视和管理通过读取包含在应用层消息中的信息,AONS可以记录、审计并管理应用级别业务事件,并将这些与公共的、策略驱动的管理环境中的网络、服务器和存储底层结构事件相组合。
基于内容的路由和变换基于消息的路由以及协议、内容、数据和消息格式的变换(例如,XML变换)。属于这些主要类别中的每一种的个别特征将在下面更详细地描述。
3.4.6.1增强的安全性和可靠性认证AONS可以基于包含在给定消息内的各种信息片段(用户名/密码、数字证书(certificate)、安全性声明标记语言(SAML)声明等等)核实进入消息的发送者的身份,并且基于这些凭证(credential),确定消息是否应当被进一步处理。
授权一旦经由消息检查获得了主要凭证,AONS就可以确定消息的发起者应当对其尝试调用的服务具有什么级别的访问。AONS还可以基于这种导出的特权进行路由判决,或者只要消息在AONS网络内,就在适当时阻挡或掩盖消息内的某些数据元素。
加密/解密当消息行进通过AONS网络时,基于策略,AONS可以执行消息元素(整个消息、消息主体或个别元素,例如信用卡号)的加密以维持端到端的私密性。相反地,AONS可以在消息到达给定端点之前执行这些元素的解密。
数字签名为了确保消息完整性并允许不对消息事务进行抵赖,AONS可以在任何给定AEP处对整个消息或个别消息元素执行数字签名。关于哪些内容被签名的判决将由被施加到从每个消息的内容和上下文导出的信息的策略来确定。
可靠性AONS可以通过在不同的私有机制之间充当中介来补充现有的保证消息传送系统。还可以为当前缺乏可靠传递的基于HTTP的应用(包括web服务)提供可靠性。作为附加特征,AONS可以生成成功消息传递的确认,并且在不能确认传递时自动生成异常响应。
3.4.6.2底层结构优化压缩AEP可以在通过网络发送消息数据之前压缩消息数据以节省带宽,并且相反地在向端点传递之前对其解压缩。
缓存AONS可以基于对一类请求定义的规则或者基于在响应中设置的指示符缓存先前消息询问的结果。缓存可以对整个消息或消息的某些元素执行,以减少应用响应时间并节省网络带宽使用。消息元素缓存使得能够对后续消息请求进行增量(delta)处理。
TCP连接共同分担(pooling)通过充当消息客户端和服务器之间的中介,AONS可以合并应用之间所需的永久连接的总数。从而,AONS减少了在其他情况下与一群端点之间的连接的正在进行的发起和拆除相关联的客户端和服务器处理负载。
批处理(batching)AONS中介可以对去往多个目的地的事务消息进行批处理以减少发送系统上的盘I/O开销。类似地,可以对来自多个源的事务消息进行批处理以减少接收系统上的盘I/O开销。
硬件加速通过利用专用硬件在AONS网络设备中高效地执行计算密集功能,例如加密和可扩展风格(Stylesheet)语言变换(XSLT)变换,AONS可以卸下端点服务器的计算资源的负载,从而潜在地提供了较低成本的处理能力。
服务质量AONS可以基于明示消息优先级区分(例如,被标记为“高优先级”的消息)或通过在检测到特定消息内容时确定消息何时需要较高质量的网络服务的策略,将应用级别QoS与网络级别QoS特征相组合。
策略施行优化整个AONS解决方案的核心是确保业务级别策略由底层结构表达、实现和施行的能力。AONS策略管理器确保了一旦检查消息,就在适当时针对该消息采取适当的动作(加密、压缩、路由等)。
3.4.6.3活动性监视和管理审计/日志记录/度量AONS可以选择性地过滤消息,并将其发送到节点或控制台以用于聚集和后续分析。工具能够查看和分析消息流。AONS还可以生成对重要实时事件(与业务和底层结构有关的)的自动响应。通过智能地收集统计信息并发送这些信息以计入日志,AONS可以产生用于审计或计费目的的度量数据。
管理AONS可以组合消息级别和网络底层结构级别事件以获得对整个系统健康度的更深理解。AONS管理接口自身可充当对那些希望可编程地对其进行访问的人的一项web服务。
测试和验证AONS能够截取消息流量的能力可以用于在允许消息到达目的地应用之前验证消息。除了保护消息以免受可能的应用或服务器故障影响之外,该能力还可以被修改以测试新的web服务和其他功能,这是通过在产品部署之前检查来自客户端和服务器的实际消息流而实现的。AONS还提供了“调试模式”(debug mode),该模式可以在可疑故障之后自动开启,或者在通知之后手工开启,以辅助对设备的整体管理。
工作负载平衡和故障切换AONS提供了一种策略和内容两者驱动的工作负载平衡和故障切换的方法。例如,给定AONS节点的在异种系统之间充当中介的能力,则AONS节点可以在提供对消息内容所请求的公共信息的访问的不同系统之间进行平衡。AONS还可以解决确保在消息级别而不是仅在会话级别实现故障切换所必需的消息亲合力(affinity)的问题,而大多数现有解决方案是在会话级别实现的。平衡还可以考虑到用于得到消息回复、路由到备选目的地(如果优选目标暂时响应很慢的话)的响应时间。
业务连续性通过提供将进入消息复制到远程目的地的能力,AONS使得客户能够从系统异常中快速恢复。AONS还可以检测发生故障的消息传递,并自动重路由到备选端点。AONS AEP和AR自身具有内建的冗余和组件级别的故障切换,并且可以被集群化以确保高可用性。
3.4.6.4基于内容的路由和变换基于内容的路由基于其检查并理解消息的内容和上下文的能力,AONS提供了通过将内容元素与预先建立的策略配置进行匹配来将消息路由到适当目的地的能力。该能力允许AONS为由不同应用处理的消息提供公共接口(服务虚拟化),并且由AONS检查消息类型或内容中的字段(部分号、帐户类型、雇员位置、客户邮政编码等等)以将消息路由到适当目的地。该能力还允许AONS利用AONS路由器的最优扇出发送消息到多个目的地(基于静态定义的消息类型或信息主题,或者基于对消息类型或信息主题的动态订制)。该能力还允许AONS重定向先前发送到某个应用的所有消息以使得其可以由新的应用处理。另外,该能力还允许AONS路由消息以用于预处理步骤,该预处理步骤被认为是在接收消息之前所必需的(例如,对于所有旅游请求引入管理预批准步骤)。该能力还允许AONS将超过某一标准(例如,顺序值)的消息的拷贝路由到审计系统,以及将该消息转发到期望目的地。该能力还允许AONS出于工作负载或故障切换原因将消息路由到特定服务器。该能力还允许AONS基于先前的路由判决将消息路由到特定服务器(例如,基于哪一服务器处理原始订单来路由查询请求)。另外,该能力还允许AONS基于消息的源进行路由。该能力还允许AONS通过由源或前一中介定义的步骤序列路由消息。
消息协议网关AONS可以充当使用不同传输协议的应用之间的网关。AONS支持开放式标准协议(例如HTTP、FTP、SMTP),以及普遍的或事实上标准的私有协议,例如IBM Websphere MQ。
消息变换AONS可以变换消息内容以使其适合于特定接收应用。这既可以对XML消息进行,又可以对非XML消息进行,后者是经由消息辞典定义或定义好的工业标准格式的辅助实现的。
3.4.7AONS功能模块图8是示出了示例性AONS节点内的功能模块的框图。AONS节点800包括AOS配置和管理模块802、流/规则804、AOS公共服务806、AOS消息执行控制器808、AOS协议访问方法810和AOS平台特定的“粘胶”(glue)812。AONS节点800与网络互联操作系统(IOS)814和Linux操作系统816相接口。流/规则804包括bladeletsTM818、scriptletsTM820和scriptletTM容器822。
在一个实施例中,AOS公共服务806包括安全性服务、标准压缩服务、delta压缩服务、缓存服务、消息日志记录服务、策略管理服务、可靠消息传送服务、公布/订购服务、活动性监视服务、消息分发服务、XML解析服务、XSLT变换服务和QoS管理服务。
在一个实施例中,AOS协议/访问方法810包括TCP/SSL、HTTP/HTTPS、SOAP/HTTP、SMTP、FTP、JMS/MQ和JMS/RV,以及Java数据库连通性(JDBC)。
在一个实施例中,AOS消息执行控制器808包括执行控制器、流子系统和bladeletTM子系统。
在一个实施例中,AOS bladeletsTM818和scriptletsTM820包括消息输入(读消息)、消息输出(发送消息)、日志记录/审计、判决、外部数据访问、XML解析、XML变换、缓存、scriptlet容器、公布、订购、消息验证(计划、格式等),过滤/掩盖、签名、认证、授权、加密、解密、活动性监视发源、活动性监视标记、活动性监视处理、活动性监视通知、消息丢弃、防火墙阻挡、防火墙阻挡去除(unblock)、消息截取和消息停止截取(stop-intercept)。
在一个实施例中,AOS配置和管理模块802包括配置、监视、拓扑管理、能力交换、故障切换冗余、可靠性/可用性/可服务性(RAS)服务(跟踪、调试等)、存档、安装、更新、许可、样本scriptletsTM、样本流、文档化、在线帮助和语言本地化。
在一个实施例中,所支持的平台包括Cisco Catalyst 6503、CiscoCatalyst 6505、Cisco Catalyst 6509和Cisco Catalyst 6513。在一个实施例中,所支持的监管器模块包括Sup2和Sup720。在一个实施例中,与平台有关的特定功能区域包括优化TCP、SSL、公共密钥底层结构(PKI)、加密/解密、到Cat6K监管器的接口、故障切换/冗余、图像管理和QoS功能。
3.4.8AONS工作模式AONS可以被配置为取决于应用集成需要和部署情形而运行在多种模式中。根据一个实施例,主要工作模式包括隐性模式(implicit mode)、显性模式(explicit mode)和代理模式。在隐性模式中,AONS节点透明地截取相关流量,而不对应用作出改变。在显性模式中,应用显性地使流量去往中介AONS节点。在代理模式中,应用被配置为与AONS节点协同工作,但是应用并不显性地使流量去往AONS节点。
在隐性模式中,应用不关注AONS的存在。消息是去往接收应用的。消息通过应用“代理”或中间设备系统的配置,和/或通过网络配置(分组截取)被重定向到AONS以路由消息到AONS。例如,基于域名服务器(DNS)的重定向可以用于路由消息。又例如,可以使用交换机或路由器上的基于5元组的访问控制列表(ACL)。基于网络的应用识别和内容交换模块可以被配置用于URL/URI重定向。基于消息的检查可以用于确定消息类型和分类。在隐性模式中,应用利用应用固有协议使用AONS作为中介(隐性地)彼此通信。
流量重定向、消息分类和“早期拒绝”(在完成AONS层内的处理之前将流量发出AONS层)可以经由多种机制实现,例如在图9中示出的那些机制。图9示出了可以对消息流量执行以便只产生将在AONS层处理的一组选定流量的多层次过滤。不在AONS层处理的流量可以被当作任何其他流量。
在最低层(层902),所有流量都通过。在次高的一层(层904),可以基于5元组过滤流量。监管器刀片或互联网操作系统(IOS)可以执行这种过滤。经过层904的过滤的流量传递到层906。在层906,可以进一步基于类似于基于网络的应用识别过滤和/或消息分类和拒绝来过滤流量。经过层906的过滤的流量传递到层908。在层908,可以进一步基于协议头部过滤流量。例如,可以基于流量中的URL/URI过滤流量。经过层908的过滤的流量传递到层910。在层910,可以基于应用层消息(包括头部和内容)处理流量。例如,消息内的XPath路径可以用于在层910处理流量。AONS刀片可以执行层910的处理。从而,所有网络流量的选定子集都可以被提供给AONS刀片。
在显性模式中,应用能注意到AONS的存在。消息显性地去往AONS节点。应用可以利用AONP与AONS通信。AONS可以执行服务虚拟化和目的地选择。
在代理模式中,应用不是明确地注意到AONS的存在。消息是去往其最终目的地(即,应用)的。然而,客户端应用被配置为经由代理模式引导流量。
3.4.9AONS消息路由
AONS中的消息管理的组件可以从两个角度来看节点视角和云视角。
图10是图示了根据云视角AONS云1010内的消息路径的图。客户端应用1004发送消息到AONS客户端代理(CP)1006。如果AONS CP1006不存在,则客户端应用1004可以发送消息到AONS服务器代理(SP)1008。该消息在AONS CP 1006处被处理。如果消息正进入AONS云1010,则AONS CP 1006将消息变换为AONP格式。
在AONS云1010内,消息被利用AONP路由。从而,利用AONP,消息可以被从AONS CP 1006路由到AONS路由器1012,或者从AONSCP 1006路由到AONS SP 1008,或者从AONS路由器1012路由到另一AONS路由器,或者从AONS路由器1012路由到AONS SP 1008。在AONS节点处处理的消息被以AONP格式处理。
当消息到达AONS SP 1008时,AONS SP 1008将消息变换为服务器应用1014所使用的消息格式。AONS SP 1008利用服务器应用1014的消息协议将消息路由到服务器应用1014。或者,如果AONS SP 1008不存在,则AONS CP 1006可以将消息路由到服务器应用1014。
AONS云1010内的消息处理的细节可以从以下角度来理解请求/响应消息流、单向消息流、具有可靠传递的消息流以及节点到节点通信。
图11A和图11B是图示了请求/响应消息流的图。参考图11A,在标号1处,发送应用1102向接收应用1104发送消息。在标号2处,AEP CP1106截取消息,并向消息添加AONP头部,形成AONP消息。在标号3处,AEP CP 1106将AONP消息发送到AONS路由器1108。在标号4处,AONS路由器1108接收AONP消息。在标号5处,AONS路由器1108将AONP消息发送到AEP SP 1110。在标号6处,AEP SP 1110接收AONP消息,并从消息中去除AONP头部,从而解封装消息。在标号7处,AEPSP 1110将消息发送到接收应用1104。
参考图11B,在标号8处,接收应用1104向发送应用1102发送响应消息。在标号9处,AEP SP 1110截取消息,并向消息添加AONP头部,形成AONP消息。在标号10处,AEP SP 1110将AONP消息发送到AONS路由器1108。在标号11处,AONS路由器1108接收AONP消息。在标号12处,AONS路由器1108将AONP消息发送到AEP CP 1106。在标号13处,AEP CP 1106接收AONP消息,并从消息中去除AONP头部,从而解封装消息。在标号14处,AEP CP 1106将消息发送到发送应用1102。从而,请求被从发送应用1102路由到接收应用1104,而响应被从接收应用1104路由到发送应用1102。
图12A和12B是图示了备选的请求/响应消息流的图。图12A示出了从发送应用1202到接收应用1204的消息可能采取的三种可能路由。根据第一路由,发送应用1202向接收应用1204发送消息,但是AEP CP 1206截取消息,并将消息发送到接收应用1204。根据第二路由,发送应用1202向接收应用1204发送消息,但是AEP CP 1206截取消息,将消息封装在AONP消息内,并将AONP消息发送到AEP SP 1208,AEP SP 1208从AONP消息中解封出消息,并将消息发送到接收应用1204。根据第三路由,发送应用1202向接收应用1204发送消息,但是AEP SP 1208截取消息,并将消息发送到接收应用1204。
图12B示出了从接收应用1204到发送应用1202的响应消息可能采取的三种可能路由。根据第一路由,接收应用1204向发送应用1202发送消息,但是AEP CP 1206截取消息,并将消息发送到发送应用1202。根据第二路由,接收应用1204向发送应用1202发送消息,但是AEP SP 1208截取消息,将消息封装在AONP消息内,并将AONP消息发送到AEP CP1206,AEP CP 1206从AONP消息中解封出消息,并将消息发送到发送应用1202。根据第三路由,接收应用1204向发送应用1202发送消息,但是AEP SP 1208截取消息,并将消息发送到发送应用1202。
图13是图示了单向消息流的图。在标号1处,发送应用1302向接收应用1304发送消息。在标号2处,AEP CP 1306截取消息,并向消息添加AONP头部,形成AONP消息。在标号3处,AEP CP 1306将ACK(确认)发回到发送应用1302。在标号4处,AEP CP 1306将AONP消息发送到AONS路由器1308。在标号5处,AONS路由器1308接收AONP消息。在标号6处,AONS路由器1308将AONP消息发送到AEP SP 1310。在标号7处,AEP SP 1310接收AONP消息,并从消息中去除AONP头部,从而解封装消息。在标号8处,AEP SP 1310将消息发送到接收应用1304。
图14是图示了备选的单向消息流的图。图14示出了从发送应用1402到接收应用1404的消息可能采取的三种可能路由。根据第一路由,发送应用1402向接收应用1404发送消息,但是AEP CP 1406截取消息,并将消息发送到接收应用1404。AEP CP 1406将ACK(确认)发送到发送应用1402。根据第二路由,发送应用1402向接收应用1404发送消息,但是AEP CP 1406截取消息,将消息封装在AONP消息内,并将AONP消息发送到AEP SP 1408,AEP SP 1408从AONP消息中解封出消息,并将消息发送到接收应用1404。同样,AEP CP 1406将ACK发送到发送应用1402。根据第三路由,发送应用1402向接收应用1404发送消息,但是AEP SP 1408截取消息,并将消息发送到接收应用1404。在这种情况下,AEP SP 1408将ACK发送到发送应用1402。从而,当AEP截取消息时,截取AEP将ACK发送到发送应用。
根据一个实施例,AONP被用在与下一跳的节点到节点通信中。在一个实施例中,AONP使用HTTP。AONP头部可以包括HTTP或TCP头部。AONP可以指示RM ACK、QoS级别、消息优先级和消息上下文(连接、消息序列号、消息上下文标识符、入口节点信息等等)。实际消息净荷在消息主体中。在AONS节点之间可以使用异步消息传送。AONS可以经由静态配置(下一跳)和/或经由动态发现和路由通告(“懒惰”(lazy)发现)进行路由和节点发现。
图15A和15B是图示了具有可靠消息传递的请求/响应消息流的图。参考图15A,在标号1处,发送应用1502向接收应用1504发送消息。在标号2处,AEP CP 1506截取消息,并向消息添加AONP头部,形成AONP消息。在标号3处,AEP CP 1506将消息保存到数据存储装置1512。从而,如果在发送消息时出现任何问题,则AEP CP 1506以重发存储在数据存储装置1512中的消息的拷贝。
在标号4处,AEP CP 1506将AONP消息发送到AONS路由器1508。在标号5处,AONS路由器1508接收AONP消息。在标号6处,AONS路由器1508将AONP消息发送到AEP SP 1510。在标号7处,AEP SP 1510接收AONP消息,并从消息中去除AONP头部,从而解封装消息。在标号8处,AEP SP 1510将消息发送到接收应用1504。
在标号9处,AEP SP 1510将可靠消息传送(RM)确认(ACK)发送到AONS路由器1508。在标号10处,AONS路由器1508接收RMACK,并将RM ACK发送到AEP CP 1506。在标号11处,AEP CP 1506接收RM ACK,并且作为响应,删除存储在数据存储装置1512中的消息拷贝。由于消息的传递已被确认,因此不再需要在数据存储装置1512中存储消息的拷贝。或者,如果AEP CP 1506没有在指定时间段内接收到RM ACK,则AEP CP 1506重发消息。
参考图15B,在标号12处,接收应用1504向发送应用1502发送响应消息。在标号13处,AEP SP 1510截取消息,并向消息添加AONP头部,形成AONP消息。在标号14处,AEP SP 1510将AONP消息发送到AONS路由器1508。在标号15处,AONS路由器1508接收AONP消息。在标号16处,AONS路由器1508将AONP消息发送到AEP CP 1506。在标号17处,AEP CP 1506接收AONP消息,并从消息中去除AONP头部,从而解封装消息。在标号18处,AEP CP 1506将消息发送到发送应用1502。
图16是图示了具有可靠消息传递的单向消息流的图。在标号1处,发送应用1602向接收应用1604发送消息。在标号2处,AEP CP 1606截取消息,并向消息添加AONP头部,形成AONP消息。在标号3处,AEPCP 1606将消息保存到数据存储装置1612。从而,如果在发送消息时出现任何问题,则AEP CP 1606可以重发存储在数据存储装置1612中的消息的拷贝。在标号4处,AEP CP 1606将ACK(确认)发回到发送应用1602。在标号5处,AEP CP 1606将AONP消息发送到AONS路由器1608。在标号6处,AONS路由器1608接收AONP消息。在标号7处,AONS路由器1608将AONP消息发送到AEP SP 1610。在标号8处,AEPSP 1610接收AONP消息,并从消息中去除AONP头部,从而解封装消息。在标号9处,AEP SP 1610将消息发送到接收应用1604。
在标号10处,AEP SP 1610将可靠消息传送(RM)确认(ACK)发送到AONS路由器1608。在标号11处,AONS路由器1608接收RMACK,并将RM ACK发送到AEP CP 1606。在标号12处,AEP CP 1606接收RM ACK,并且作为响应,删除存储在数据存储装置1612中的消息拷贝。由于消息的传递已被确认,因此不再需要在数据存储装置1612中存储消息的拷贝。或者,如果AEP CP 1606没有在指定时间段内接收到RM ACK,则AEP CP 1606重发消息。
图17是图示了同步请求和响应消息的图。在标号1处,AONS节点1704从客户端1702以隐性或显性模式接收请求消息。在标号2处,AONS节点1704读取消息,选择并执行流,并向消息添加AONP头部。在标号3处,AONS节点1704将消息发送到下一跳节点,AONS节点1706。在标号4处,AONS节点1706读取消息,选择并执行流,并从消息中去除AONP头部,从而根据服务器1708所期望的消息格式对消息格式化。在标号5处,AONS节点1706将消息发送到消息的目的地,服务器1708。
在标号6处,AONS节点1706在AONS节点1706发送请求消息的同一连接上接收来自服务器1708的响应消息。在标号7处,AONS节点1706读取消息,将消息与请求消息相关,执行流,并向消息添加AONP头部。在标号8处,AONS节点1706将消息发送到AONS节点1704。在标号9处,AONS节点1704读取消息,将消息与请求消息相关,执行流,并从消息中去除AONP头部,从而根据客户端1702所期望的消息格式对消息格式化。在标号10处,AONS节点1704在客户端1702向AONS节点1704发送请求消息的同一连接上将消息发送到客户端1702。
图18是图示了样本单向端到端消息流的图。在标号1处,AONS节点1804从客户端1802以隐性或显性模式接收请求消息。在标号2处,AONS节点1804读取消息,选择并执行流,并向消息添加AONP头部。在标号3处,AONS节点1804将确认发送到客户端1802。在标号4处,AONS节点1804将消息发送到下一跳节点,AONS节点1806。在标号5处,AONS节点1806读取消息,选择并执行流,并从消息中去除AONP头部,从而根据服务器1808所期望的消息格式对消息格式化。在标号6处,AONS节点1806将消息发送到消息的目的地,服务器1808。
根据节点视角,AONS节点内的消息生存周期(lifecycle)涉及入口/出口处理、消息处理、消息执行控制和流执行。
图19是图示了AONS节点1900内的消息处理模块的图。AONS节点1900包括AONS消息执行控制器(AMEC)框架1902、策略管理子系统1904、AONS消息处理底层结构子系统1906和AOSS 1908。AMEC框架1902包括流管理子系统1910、bladeletTM执行子系统1912和消息执行控制器1914。策略管理子系统1904与流管理子系统1910通信。AOSS 1908与bladeletTM执行子系统1912和AONS消息处理底层结构子系统1906通信。AONS消息处理底层结构子系统1906与消息执行控制器1914通信。流管理子系统1910、bladeletTM执行子系统和管理执行控制器1914都彼此通信。
图20是图示了AONS节点1900内的消息处理的图。AMEC框架1902是基于事件的多线程机制,以使吞吐量最大化,同时使AONS节点中的消息延迟最小化。根据一个实施例,对接收的分组重定向,执行TCP终止,执行SSL终止(如果需要的话),执行第5层协议适配和访问方法处理(使用诸如HTTP、SMTP、FTP、JMS/MQ、JMS/RV、JDBC等之类的访问方法),形成AONS消息(用于内部AONS处理的规范化消息格式),对消息排队,基于处理线程可用性使消息出队列,选择流(或规则),执行所选的流,将消息转发到消息的目的地,并且对于基于请求/响应的语义,通过维护在AEMC框架1902内的连接/会话状态处理响应。
在一个实施例中,执行流包括执行流的每一步(即,bladeletTM/动作)。如果bladeletTM运行在独立上下文中,则AMEC框架1902可以进入到bladeletTM特定的队列中排队,并且基于线程可用性,从每个bladeletTM队列中使适当的bladeletTM状态出队。
3.4.10流、bladeletsTM和scriptletsTM根据一个实施例,流串与bladeletsTM(即,动作)一起定制消息处理逻辑。ScriptletsTM提供了一种用于供客户和伙伴定制或扩展固有AONS功能的机制。某些bladeletsTM和服务可以利用AONS节点提供。
3.4.11AONS服务如前所述,AONS可以提供一组核心服务以形成可以经由AONS节点传递的增值功能的下层基础。在一个实施例中,这些服务包括安全性服务、标准压缩服务、delta压缩服务、缓存服务、消息日志记录服务、策略管理服务(策略管理器)、可靠消息传送服务、公布/订购服务、活动性监视服务、消息分发服务、XML解析服务、XSLT变换服务和QoS管理服务。在一个实施例中,每种AONS核心服务被实现在服务框架的上下文中。
3.4.12AONS配置和管理在一个实施例中,AONS节点被提供和配置有一类应用消息,从而其强制施行代表应用端点、业务领域、安全领域、管理领域和网络领域以声明形式定义的策略。此外,对于给定部署情形,AONS节点利用不同软件和硬件子系统的可配置性和可扩展性促进了不同产品功能特征的灵活构成和定制。由于AONS功能的应用和网络实施例,AONS体系结构框架应当有效地且统一地解决各种系统组件和其环境的可配置性、可管理性以及可监视性这些不同方面的问题。
AONS配置和管理框架是基于ISO网络管理论坛所推荐的用于网络管理的五个功能区域(“FCAPS”)的。这些功能区域包括故障管理、配置管理、会计(accounting)管理、性能管理和安全性管理。故障管理是发现、隔离以及修补AONS节点中的问题或故障的过程。配置管理是找到并设置AONS节点的过程。会计管理涉及跟踪AONS资源的使用和利用率以推动其正确使用。性能管理是策量AONS系统组件和整个系统的性能的过程。安全性管理控制对AONS系统上的信息的访问。许多上述功能是经由作为整个AONS解决方案的一部分的适当仪器、程序接口和工具处理的。
图21、图22和图23是图示了AONS配置和管理框架内的实体的图。配置和供应服务器(CPS)是用于AONS策略、流、scriptletsTM和其他可管理实体的配置和管理的中央集线器。可配置数据被从AONS设计工作室(流工具)推到CPS,然后AONS管理员可以将该数据提供给生产部署。还提供了促进过程以经由对生产展示过程的分段/证明的开发来测试和验证改变。配置和供应代理(CPA)驻留在个别AONS刀片上,并且为AONS提供本地控制和分发能力。CPA与CPS交互以得到更新。CPA采取适当的动作以实现改变。CPA还用于收集监视数据以报告给第三方控制台。
3.4.13AONS监视在一个实施例中,AONS被配置为支持定义好的事件以用于适当的对内部处理活动性的监视和可视性。AONS节点的监视可以经由预先定义的运行在每个AONS节点上的JMX MBean代理实现。该代理与PC联合体(complex)上的远程JMX Mbean服务器通信。AONS MIB被修改以被SNMP集成到第三方控制台。图24是图示了AONS监视体系结构的图。
3.4.14AONS工具在一个实施例中,提供了下面的工具设置以用于AONS的各种功能需要设计工作室、管理工作室和消息日志查看器。设计工作室是用于设计流并应用消息分类以及映射策略的可视工具。管理工作室是基于web的用于执行所有管理和配置功能的接口。消息日志查看器是分析消息流量、模式和示踪信息的可视接口。
4.0实现机制-硬件概述图5是图示了可以在其上实现本发明的实施例的计算机系统500的框图。优选实施例是利用运行在诸如代理设备之类的网络元件上的一个或多个计算机程序实现的。从而,在该实施例中,计算机系统500是诸如负载平衡器之类的代理设备。
计算机系统500包括总线502或用于传输信息的其他通信机构,以及与总线502相耦合用于处理信息的处理器504。计算机系统500还包括主存储器506,例如随机访问存储器(RAM)、闪存或其他动态存储设备,其耦合到总线502,用于存储信息和由处理器504执行的指令。主存储器506还可以用于存储在处理器504执行指令的执行期间的临时变量或其他中间信息。计算机系统500还包括只读存储器(ROM)508或其他静态存储设备,其耦合到总线502,用于存储静态信息和处理器504的指令。提供了存储设备510,例如磁盘、闪存或光盘,其耦合到总线502,用于存储信息和指令。
通信接口518可以耦合到总线502,用于向处理器504传输信息和命令选择。接口518是传统的串行接口,例如RS-232或RS-322接口。外部终端512或其他计算机系统连接到计算机系统500,并且利用接口514向其提供命令。运行在计算机系统500中的固件或软件提供终端接口或基于字符的命令接口,以使得可以向计算机系统给予外部命令。
交换系统516耦合到总线502,并且具有输入接口514和到一个或多个外部网络元件的输出接口519。外部网络元件可以包括耦合到一个或多个主机524的本地网络522,或者具有一个或多个服务器530的全球网络(例如因特网528)。交换系统516根据预定协议和公知惯例将到达输入接口514的信息流量交换到输出接口519。例如,交换系统516与处理器504协同操作可以确定到达输入接口514的数据分组的目的地,并利用输出接口519将其发送到正确目的地。目的地可以包括主机524、服务器530、其他末端站、或本地网络522或因特网528中的其他路由和交换设备。
本发明涉及使用计算机系统500来避免在计算机系统500上存储客户端状态。根据本发明的一个实施例,计算机系统500响应于处理器504执行包含在主存储器506中的一条或多条指令的一个或多个序列而提供这种更新。这些指令可以从另一计算机可读介质(例如存储设备510)读取到主存储器506中。包含在主存储器506中的指令序列的执行使得处理器504执行这里描述的过程步骤。多处理配置中的一个或多个处理器也可以用于执行包含在主存储器506中的指令序列。在备选实施例中,硬连线电路可以用于替代软件指令或者与软件指令相组合以实现本发明。从而,本发明的实施例并不限于硬件电路和软件的任何特定组合。
这里所用的术语“计算机可读介质”指参与向处理器504提供指令以供执行的任何介质。这种介质可以采取很多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质包括例如光盘或磁盘,例如存储设备510。易失性介质包括动态存储器,例如主存储器506。传输介质包括同轴电缆、铜线和光纤,包括包含总线502的线路。传输介质还可以采取声波或光波的形式,例如在无线电波和红外数据通信期间生成的声波或光波。
计算机可读介质的常见形式包括例如软盘、柔性盘、硬盘、磁带或任何其他磁介质、CD-ROM、任何其他光介质、穿孔卡、纸带、任何其他具有孔图案的物理介质、RAM、PROM、EPROM、FLASH-EPROM、任何其他存储器芯片或盒、下文中描述的载波、或计算机可以读取的任何其他介质。
各种形式的计算机可读介质都可以用于运送一条或多条指令的一个或多个序列到处理器504以供执行。例如,该指令可以首先承载在远程计算机的磁盘上。远程计算机可以将指令加载到其动态存储器中,并利用调制解调器通过电话线发送指令。计算机系统500本地的调制解调器可以接收电话线上的数据,并使用红外发送器来将数据转换为红外信号。耦合到总线502的红外检测器可以接收在红外信号中承载的数据,并将数据放到总线502上。总线502将数据运送到主存储器506,处理器504从主存储器506取得指令并执行指令。主存储器506接收的指令可以可选地在处理器504的执行之前或之后存储在存储设备510上。
通信接口518还提供到网络链路520的双向数据通信耦合,网络链路520连接到本地网络522。例如,通信接口518可以是集成业务数字网络(ISDN)卡或调制解调器,以提供到相应类型电话线的数据通信连接。又例如,通信接口518可以是局域网(LAN)卡以提供到兼容LAN的数据通信连接。还可以实现无线链路。在任何这种实现方式中,通信接口518发送并接收电的、电磁的或光信号,这些信号承载了代表各类信息的数字数据流。
网络链路520一般通过一个或多个网络提供到其他数据设备的数据通信。例如,网络链路520可以通过本地网络522提供到主机计算机524或由因特网服务提供商(ISP)526操作的数据设备的连接。ISP 526又通过全球分组数据通信网络(现在通常称为“因特网”)528提供数据通信服务。本地网络522和因特网528都使用承载数字数据流的电的、电磁的或光信号。经过各种网络的信号以及网络链路520上的并且通过通信接口518的信号(这些信号承载去往和来自计算机系统500的数字数据)是传输信息的载波的示例性形式。
计算机系统500可以通过(一个或多个)网络、网络链路520和通信接口518发送消息并接收数据,包括程序代码。在因特网示例中,服务器530可能通过因特网528、ISP 526、本地网络522和通信接口518发送应用程序所请求的代码。根据本发明,一个这样下载的程序避免了在服务器上存储客户端状态,如前所述。
处理器504可以在接收时执行所接收的代码和/或将其存储在存储设备510或其他非易失性存储装置中以供以后执行。以这种方式,计算机系统50可以获得载波形式的应用代码。
5.0扩展和替换在前述说明书中,已经参考本发明的特定实施例描述了本发明。但是,应当清楚,可以对本发明进行各种修改和改变,而不脱离本发明的更宽广的精神和范围。因此,说明书和附图应被当作是说明性的,而非限制性的。
权利要求
1.一种利用在网络元件处缓存的服务器响应数据对请求作出响应的方法,所述方法包括以下由计算机实现的步骤在所述网络元件处截取客户端应用发往服务器应用的一个或多个数据分组,所述服务器应用容宿在除了所述网络元件之外的一个设备上;确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息,其中所述应用层消息指定向所述服务器应用对指定数据的特定请求;确定包含在在所述网络元件处维护的缓存中的指定数据的一部分;向所述服务器应用发送请求未包含在所述缓存中的动态生成数据的特定消息,其中所述特定消息不请求包含在所述缓存中的指定数据的那一部分;从所述服务器应用接收包含所述动态生成数据的第一响应;以及向所述客户端应用发送第二响应,所述第二响应既包含所述动态生成数据,又包含包含在所述缓存中的指定数据的那一部分。
2.如权利要求1所述的方法,其中所述第一响应不包含包含在所述缓存中的指定数据的那一部分。
3.如权利要求1所述的方法,其中所述指定数据的一部分需要由所述服务器应用动态生成,并且所述动态生成数据不包含在所述缓存中。
4.如权利要求1所述的方法,其中所述动态生成数据是由所述服务器应用响应于接收到所述特定消息生成的,并且所述动态生成数据不在所述服务器应用接收到所述特定消息之前被生成。
5.如权利要求1所述的方法,其中所述第二响应是超文本传送协议(HTTP)响应。
6.如权利要求1所述的方法,其中所述网络元件是网络交换机或路由器。
7.如权利要求1所述的方法,其中所述应用层消息跟在独立于所述应用层消息的超文本传送协议(HTTP)头部的后面。
8.如权利要求1所述的方法,其中所述应用层消息不包含在超文本传送协议(HTTP)请求中。
9.如权利要求1所述的方法,其中所述应用层消息是Java消息服务(JMS)消息。
10.如权利要求1所述的方法,其中所述第二响应是Java消息服务(JMS)消息。
11.一种在分组交换网络中的路由器处缓存状态信息的方法,所述方法包括以下由计算机实现的步骤在所述路由器处截取目的地不是所述路由器的一个或多个数据分组;确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息,其中所述应用层消息指定状态信息;以及将所述状态信息存储在所述路由器处的面向应用的数据的缓存中。
12.如权利要求11所述的方法,其中所述网络元件是企业网络的边缘路由器。
13.如权利要求11所述的方法,其中所述状态信息包含会话状态信息。
14.如权利要求11所述的方法,其中所述状态信息包含数据库服务器连接状态信息。
15.一种利用在网络元件处缓存的数据对请求作出响应的方法,所述方法包括以下由计算机实现的步骤在所述网络元件处截取客户端应用发往服务器应用的一个或多个数据分组,所述服务器应用容宿在除了所述网络元件之外的一个设备上;确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息,其中所述应用层消息的内容跟在所述净荷部分内的一个或多个头部的后面,并且所述应用层消息的内容指定向所述服务器应用对指定数据的特定请求;基于所述应用层消息的内容的至少一部分生成缓存密钥;在所述网络元件处的缓存内定位所述缓存中与所述缓存密钥相关联的数据;以及向所述客户端应用发送包含与所述缓存密钥相关联的数据的响应。
16.如权利要求15所述的方法,其中所述应用层消息的内容包含在HTTP POST请求中。
17.如权利要求15所述的方法,其中所述应用层消息的内容不包含在HTTP请求中。
18.如权利要求15所述的方法,其中所述应用层消息的内容是XML消息。
19.如权利要求15所述的方法,其中生成所述缓存密钥的步骤包括对所述应用层消息的内容的至少一部分散列化以导出所述缓存密钥。
20.一种在网络元件处缓存数据的方法,所述方法包括以下由计算机实现的步骤在第一网络元件处截取客户端应用发往服务器应用的一个或多个第一数据分组,所述服务器应用容宿在除了所述第一网络元件之外的一个设备上;确定包含在所述一个或多个第一数据分组的一个或多个净荷部分中的第一应用层消息,其中所述第一应用层消息的内容跟在所述净荷部分内的一个或多个头部的后面,并且所述第一应用层消息的内容指定向所述服务器应用对指定数据的特定请求;基于所述第一应用层消息的内容的至少一部分生成缓存密钥;在所述第一网络元件处截取服务器应用响应于所述特定请求发往所述客户端应用的一个或多个第二数据分组,确定包含在所述一个或多个第二数据分组的一个或多个净荷部分中的第二应用层消息,其中所述第二应用层消息的内容跟在所述净荷部分内的一个或多个头部的后面;将所述第二应用层消息的内容的至少一部分存储在所述第一网络元件处的特定缓存内;以及在所述特定缓存中存储所述缓存密钥和所述第二应用层消息的内容的那一部分之间的关联。
21.如权利要求20所述的方法,还包括基于所述第二应用层消息的内容确定消息分类;其中存储所述第二应用层消息的内容的那一部分的步骤包括存储由与所述消息分类相关联的用户编程的策略指定的一部分。
22.如权利要求20所述的方法,还包括将一个或多个附加缓存与所述特定缓存相同步。
23.如权利要求22所述的方法,其中所述一个或多个附加缓存中的至少一个位于独立于所述第一网络元件的第二网络元件处。
24.如权利要求22所述的方法,其中所述一个或多个附加缓存中的至少一个位于独立于所述特定缓存所位于的刀片的一个刀片上。
25.一种承载一个或多个指令序列的计算机可读介质,所述指令序列用于利用在网络元件处缓存的服务器响应数据对请求作出响应,所述指令当被一个或多个处理器执行时使得所述一个或多个处理器执行以下步骤在所述网络元件处截取客户端应用发往服务器应用的一个或多个数据分组,所述服务器应用容宿在除了所述网络元件之外的一个设备上;确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息,其中所述应用层消息指定向所述服务器应用对指定数据的特定请求;确定包含在在所述网络元件处维护的缓存中的指定数据的一部分;向所述服务器应用发送请求未包含在所述缓存中的动态生成数据的特定消息,其中所述特定消息不请求包含在所述缓存中的指定数据的那一部分;从所述服务器应用接收包含所述动态生成数据的第一响应;以及向所述客户端应用发送第二响应,所述第二响应既包含所述动态生成数据,又包含包含在所述缓存中的指定数据的那一部分。
26.如权利要求25所述的计算机可读介质,其中所述第一响应不包含包含在所述缓存中的指定数据的那一部分。
27.如权利要求25所述的计算机可读介质,其中所述指定数据的一部分需要由所述服务器应用动态生成,并且所述动态生成数据不包含在所述缓存中。
28.如权利要求25所述的计算机可读介质,其中所述动态生成数据是由所述服务器应用响应于接收到所述特定消息生成的,并且所述动态生成数据不在所述服务器应用接收到所述特定消息之前被生成。
29.如权利要求25所述的计算机可读介质,其中所述第二响应是超文本传送协议(HTTP)响应。
30.如权利要求25所述的计算机可读介质,其中所述网络元件是网络交换机或路由器。
31.如权利要求25所述的计算机可读介质,其中所述应用层消息跟在独立于所述应用层消息的超文本传送协议(HTTP)头部的后面。
32.如权利要求25所述的计算机可读介质,其中所述应用层消息不包含在超文本传送协议(HTTP)请求中。
33.如权利要求25所述的计算机可读介质,其中所述应用层消息是Java消息服务(JMS)消息。
34.如权利要求25所述的计算机可读介质,其中所述第二响应是Java消息服务(JMS)消息。
35.一种承载一个或多个指令序列的计算机可读介质,所述指令序列用于利用在网络元件处缓存的数据对请求作出响应,所述指令当被一个或多个处理器执行时使得所述一个或多个处理器执行以下步骤在所述网络元件处截取客户端应用发往服务器应用的一个或多个数据分组,所述服务器应用容宿在除了所述网络元件之外的一个设备上;确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息,其中所述应用层消息的内容跟在所述净荷部分内的一个或多个头部的后面,并且所述应用层消息的内容指定向所述服务器应用对指定数据的特定请求;基于所述应用层消息的内容的至少一部分生成缓存密钥;在所述网络元件处的缓存内定位所述缓存中与所述缓存密钥相关联的数据;以及向所述客户端应用发送包含与所述缓存密钥相关联的数据的响应。
36.如权利要求35所述的计算机可读介质,其中所述应用层消息的内容包含在HTTP POST请求中。
37.如权利要求35所述的计算机可读介质,其中所述应用层消息的内容不包含在HTTP请求中。
38.如权利要求35所述的计算机可读介质,其中所述应用层消息的内容是XML消息。
39.如权利要求35所述的计算机可读介质,其中生成所述缓存密钥的步骤包括对所述应用层消息的内容的至少一部分散列化以导出所述缓存密钥。
40.一种承载一个或多个指令序列的计算机可读介质,所述指令序列用于在网络元件处缓存数据,所述指令当被一个或多个处理器执行时使得所述一个或多个处理器执行以下步骤在第一网络元件处截取客户端应用发往服务器应用的一个或多个第一数据分组,所述服务器应用容宿在除了所述第一网络元件之外的一个设备上;确定包含在所述一个或多个第一数据分组的一个或多个净荷部分中的第一应用层消息,其中所述第一应用层消息的内容跟在所述净荷部分内的一个或多个头部的后面,并且所述第一应用层消息的内容指定向所述服务器应用对指定数据的特定请求;基于所述第一应用层消息的内容的至少一部分生成缓存密钥;在所述第一网络元件处截取服务器应用响应于所述特定请求发往所述客户端应用的一个或多个第二数据分组,确定包含在所述一个或多个第二数据分组的一个或多个净荷部分中的第二应用层消息,其中所述第二应用层消息的内容跟在所述净荷部分内的一个或多个头部的后面;将所述第二应用层消息的内容的至少一部分存储在所述第一网络元件处的特定缓存内;以及在所述特定缓存中存储所述缓存密钥和所述第二应用层消息的内容的那一部分之间的关联。
41.如权利要求40所述的计算机可读介质,其中所述步骤还包括基于所述第二应用层消息的内容确定消息分类;其中存储所述第二应用层消息的内容的那一部分的步骤包括存储由与所述消息分类相关联的用户编程的策略指定的一部分。
42.如权利要求40所述的计算机可读介质,其中所述步骤还包括将一个或多个附加缓存与所述特定缓存相同步。
43.如权利要求42所述的计算机可读介质,其中所述一个或多个附加缓存中的至少一个位于独立于所述第一网络元件的第二网络元件处。
44.如权利要求42所述的计算机可读介质,其中所述一个或多个附加缓存中的至少一个位于独立于所述特定缓存所位于的刀片的一个刀片上。
45.一种承载一个或多个指令序列的计算机可读介质,所述指令序列用于在分组交换网络中的路由器处缓存状态信息,所述指令当被一个或多个处理器执行时使得所述一个或多个处理器执行以下步骤在所述路由器处截取目的地不是所述路由器的一个或多个数据分组;确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息,其中所述应用层消息指定状态信息;以及将所述状态信息存储在所述路由器处的面向应用的数据的缓存中。
46.如权利要求45所述的计算机可读介质,其中所述网络元件是企业网络的边缘路由器。
47.如权利要求45所述的计算机可读介质,其中所述状态信息包含会话状态信息。
48.如权利要求45所述的计算机可读介质,其中所述状态信息包含数据库服务器连接状态信息。
49.一种用于利用在网络元件处缓存的服务器响应数据对请求作出响应的装置,所述装置包括用于在所述网络元件处截取客户端应用发往服务器应用的一个或多个数据分组的装置,所述服务器应用容宿在除了所述网络元件之外的一个设备上;用于确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息的装置,其中所述应用层消息指定向所述服务器应用对指定数据的特定请求;用于确定包含在在所述网络元件处维护的缓存中的指定数据的一部分的装置;用于向所述服务器应用发送请求未包含在所述缓存中的动态生成数据的特定消息的装置,其中所述特定消息不请求包含在所述缓存中的指定数据的那一部分;用于从所述服务器应用接收包含所述动态生成数据的第一响应的装置;以及用于向所述客户端应用发送第二响应的装置,所述第二响应既包含所述动态生成数据,又包含包含在所述缓存中的指定数据的那一部分。
50.一种被配置用于缓存状态信息的分组交换网络中的路由器,所述路由器包括用于截取目的地不是所述路由器的一个或多个数据分组的装置;用于确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息的装置,其中所述应用层消息指定状态信息;以及用于将所述状态信息存储在所述路由器处的面向应用的数据的缓存中的装置。
51.一种用于利用在网络元件处缓存的服务器响应数据对请求作出响应的装置,包括耦合到数据网络的网络接口,用于接收来自所述数据网络的一个或多个分组流;处理器;一个或多个存储的指令序列,所述指令序列当被所述处理器执行时使得所述处理器执行以下步骤在所述网络元件处截取客户端应用发往服务器应用的一个或多个数据分组,所述服务器应用容宿在除了所述网络元件之外的一个设备上;确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息,其中所述应用层消息指定向所述服务器应用对指定数据的特定请求;确定包含在在所述网络元件处维护的缓存中的指定数据的一部分;向所述服务器应用发送请求未包含在所述缓存中的动态生成数据的特定消息,其中所述特定消息不请求包含在所述缓存中的指定数据的那一部分;从所述服务器应用接收包含所述动态生成数据的第一响应;以及向所述客户端应用发送第二响应,所述第二响应既包含所述动态生成数据,又包含包含在所述缓存中的指定数据的那一部分。
52.一种被配置用于缓存状态信息的分组交换网络中的路由器,包括耦合到数据网络的网络接口,用于接收来自所述数据网络的一个或多个分组流;处理器;一个或多个存储的指令序列,所述指令序列当被所述处理器执行时使得所述处理器执行以下步骤在所述路由器处截取目的地不是所述路由器的一个或多个数据分组;确定包含在所述一个或多个数据分组的一个或多个净荷部分中的应用层消息,其中所述应用层消息指定状态信息;以及将所述状态信息存储在所述路由器处的面向应用的数据的缓存中。
53.一种系统,包括客户端应用,所述客户端应用在一个或多个数据分组中向服务器应用发送应用层消息,其中所述应用层消息包括对指定数据的第一请求;分组交换网络中的路由器,所述路由器截取所述一个或多个数据分组,从所述一个或多个数据分组的一个或多个净荷部分中确定所述应用层消息,确定在所述路由器处缓存的所述指定数据的第一部分,发送对未在所述路由器处缓存的所述指定数据的第二部分的第二请求,并向所述客户端应用发送包括所述第一部分和所述第二部分的第一响应;以及服务器应用,所述服务器应用接收所述第二请求,并且响应于接收到所述第二请求,向所述路由器发送包含所述第二部分但不包含所述第一部分的第二响应。
全文摘要
本发明公开了用于在网络元件处缓存内容和状态数据的方法。在一个实施例中,在网络元件处截取数据。从数据分组中确定指定向服务器应用对指定数据的请求的应用层消息。确定包含在网络元件的缓存中的指定数据的第一部分。向服务器应用发送请求未包含在缓存中的数据的第二部分的消息。接收包含第二部分但不包含第一部分的第一响应。向客户端应用发送包含第一和第二部分的第二响应。在一个实施例中,在网络元件处截取数据分组。从数据分组中确定指定会话或数据库连接状态信息的应用层消息。在网络元件处缓存状态信息。
文档编号G06F15/16GK101069169SQ200580031571
公开日2007年11月7日 申请日期2005年11月15日 优先权日2004年11月23日
发明者亚力克斯·尤-曼·陈, 史奈奥·哈瑞达斯, 雷K·德达塔 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1