专利名称:为资源请求终止连接和选择目标源装置的制作方法
技术领域:
本发明涉及通信领域,具体地涉及为资源请求终止连接和选择目标源装置。
背景技术:
服务提供商是出售由与服务提供商相关的网络(例如,互连网、数据网络、电信网络等)提供的带宽或接入该网络的带宽的实体(例如,企业或组织)。服务提供商可以包括电信公司、数据载体、无线通信提供商、互联网服务提供商、提供高速互联网接入的有线电视运营商等。诸如例如视频、音频、图像和软件下载的内容使用的快速增长正为服务提供商创造更高的带宽要求,伴有病毒内容和事件的急剧攀升。
内容可以从诸如通过服务提供商的网络安装的源服务器、镜像服务器、缓存服务器等的服务器提供到客户端装置。客户端装置可以请求使用诸如超文本传输协议(HTTP)、实时消息协议(RTMP)等的互联网协议访问该内容。当客户端装置请求访问内容时,必须将该请求路由到网络中的适当的服务器。路由请求考虑多个因素,诸如改善客户端装置的体验(例如,延迟、内容传输速度等)、网络的成本和可扩展性以及内容分发架构等。然而,由于服务提供商网络的复杂性和负载变化性增加,因此,对于服务提供商来说,将请求路由到适当的服务器变得越来越成问题。此外,客户端装置的数量和类型以及内容量正在快速增长。另外,服务提供商需要联合他们的服务以提供全球化解决方案。为了解决这些问题,服务提供商当前部署了不同类型的解决方案,诸如基于域名系统(DNS)的解决方案、基于边界网关协议(BGP)的解决方案以及基于应用程序级的解决方案。每个解决方案均通过手动配置在现有网络路由基础架构上提供覆盖。手动配置包括服务提供商广播服务器的互联网(IP)地址。对于较大类型的内容(例如,视频、下载等),解决方案不提供在单个请求上下文中进一步优化路由的任何机会。解决方案在服务提供商需要联合他们的服务的环境下也不能很好地运行。在基于DNS的解决方案中,客户端装置通常执行DNS查找以将域名解析为IP地址。DNS服务专用于基于例如地理位置、服务器负载、内容位置等的因素动态地选择服务器IP地址。然而,基于DNS的解决方案仅在域级提供粗粒度路由。在基于BGP的解决方案中,在多个位置支持给定的服务器IP地址。例如,每个不同区域可以包括具有相同IP地址的服务器,并且服务器可以广播IP地址。然而,基于BGP的解决方案仅在服务器级提供粗粒度路由,并且也不可特别好地解决网络问题(例如,拥塞、服务器故障等)。借助于基于应用程序级的解决方案,服务器能够经由HTTP协议将客户端装置重定向到不同服务器。例如,一些服务提供商在应用程序级在其网络中部署内容服务器。可以通过将内容请求明确地路由(例如,经由DNS或BGP)到在应用程序级实施的内容路由器来执行基于应用程序级的解决方案。应用程序级路由的另一实例包括门户服务器基于内容请求的来源在门户服务器返回的超文本标记语言(HTML)页面中嵌入不同的统一资源定位符(URL)。
然而,由于与内容服务器相关的额外路由和连接建立,基于应用程序级的解决方案增加了客户端装置的延迟。此外,基于应用程序级的解决方案难以扩展,并且如果必须将所有请求路由到内容服务器,则内容服务器可能变成网络瓶颈。
发明内容
根据一个方面,计算装置执行的方法可以包括计算装置从客户端装置接收资源的请求;计算装置访问包括一项或多项信息的表;计算装置将请求中提供的信息与表中提供的一项或多项信息进行比较;在请求中提供的信息与表中提供的一项或多项信息的至少一项进行匹配时,计算装置终止请求的连接;当在计算装置没有终止连接时,计算装置将请求转发到网络;以及当在计算装置终止连接时,计算装置为资源选择目标装置。根据另一方面,计算装置执行的方法可以包括计算装置从网络装置接收本地缓存信息,其中,本地缓存信息标识网络装置的本地缓存中存储的资源;计算装置从多个服务器装置接收资源信息,其中,资源信息标识多个服务器装置中的每个中存储的资源;计算装置从与网络装置相关的网络接收网络信息,其中,网络信息标识与网络相关的拓扑结构、负 载和成本;计算装置存储本地缓存信息、资源信息和网络信息;计算装置从网络装置接收所请求的资源的查询;计算装置基于本地缓存信息、资源信息或网络信息中的一个或多个为所请求的资源选择目标装置,其中,目标装置包括包括所请求的资源的本地缓存或多个服务器装置中的一个;以及计算装置向网络装置提供所选择的目标装置的标识。根据又一方面,边缘装置可以包括用于存储包括一项或多项信息的表的装置以及处理器。处理器可以从客户端装置接收资源的请求,可以将请求中提供的信息与表中提供的一项或多项信息进行比较,可以在请求中提供的信息与表中提供的一项或多项信息中至少一项匹配时在边缘装置终止请求的连接。处理器可以在边缘装置没有终止连接时将请求转发到网络,可以在边缘装置终止连接时为资源选择目标装置,并可以从所选择的目标装置检索资源。根据又一方面,计算装置可以包括存储器,用于存储以下一个或多个标识网络装置的本地缓存中存储的资源的本地缓存信息,标识多个服务器装置的每个中存储的资源的资源信息,以及标识与网络装置相关的网络的拓扑结构、负载和成本的网络信息。计算装置还可以包括处理器用于从网络装置接收所请求的资源的查询,基于本地缓存信息、资源信息或网络信息中的一个或多个来选择包括所请求的资源的目标装置,其中,目标装置包括本地缓存或多个服务器装置中的一个,并且向网络装置提供所选择的目标装置的标识。
附图包括在说明书中,并构成说明书的一部分,示出了本文描述的一个或多个实施方式,并与说明书一起说明这些实施方式。在附图中图I是可以实施本文所述的系统和/或方法的实例网络的示图;图2是图I所示的客户端装置、缓存服务器、源装置、路由中介服务器或其他装置的实例组件的示图;图3是图I所示的网络装置的实例组件的示图;图4是能够由图I所示的网络的实例部分执行的实例操作的示图5A和图5B是能够由图I中所示的网络的实例部分执行的另一实例操作的示图;图6是能够由图I所示的网络的实例部分执行的又一实例操作的示图;图7是能够由图I所示的网络的实例部分执行的实例操作的示图;
图8是能够由图I所示的网络的实例部分执行的另一实例操作的示图;图9是图I所示的网络装置的应用代理的功能组件的实例的示图;以及图10至13是根据本文所述的实施方式提供网络集成动态资源路由的实例过程的流程图。
具体实施例方式以下的详细描述参照附图。不同图中的相同参考标号可以标识相同或相似的元件。通过在诸如服务提供商网络的核心网的边缘网络装置中添加应用程序级智能,本文所述的系统和/或方法可以将资源路由集成至核心网的基础架构中。应用程序级的智能可以包括应用程序代理,其终止与客户端装置资源请求的全部或子集相关的给定应用程序的连接。对于每个资源请求,应用程序代理可以确定存储资源的目标服务器,可以连接至所确定的服务器,并可以在客户端装置和确定的服务器之间代理资源请求和返回的资源。在实例实施方式中,系统和/或方法可以从客户端装置接收资源请求,并基于请求的IP信息确定是否终止该请求的连接。如果没有终止请求的连接,则可以将请求转发到诸如服务提供商网络的核心网用于额外路由。如果终止请求的连接,则可以确定该资源的目标源装置,并且可以将请求提供到所确定的目标源装置。可以从目标源装置接收资源,并将其提供到客户端装置。图I是可以实施本文所述的系统和/或方法的实例网络100的示图。如图所示,网络100可以包括客户端装置110、缓存(cache,高速缓存)服务器装置120 (本文称为“缓存服务器(cache server) 120”)、起始装置130、路由中介服务器装置140(本文称为“路由中介(routing broker)服务器140”)、其他装置150、网络160和设置在网络160中或与网络160连接的网络装置170。如图I所示,网络装置170可以包括应用程序代理(applicationproxy) 172和本地缓存174。网络100中的装置可以经由有线和/或无线互连或连接。为了简单,在图I中示出了单个客户端装置110、缓存服务器120、起始装置130、路由中介服务器140、其他装置150、网络160和网络装置170。实际上,可存在另外的客户端装置110、缓存服务器120、起始装置130、路由中介服务器140、其他装置150、网络160和/或网络装置170。此外,在一些情况下,网络100的一个或多个装置可以执行被描述为由网络100的另一个或多个装置执行的一个或多个任务。客户端装置110可以包括能够经由网络160和/或网络装置170接入缓存服务器120、起始装置130和/或其他装置150的任何装置。例如,客户端装置110可以包括无线电话、可以将数据处理和数据通信功能与蜂窝无线电话组合的个人通信系统(PCS)终端、可以包括无线电话、寻呼机、互联网/以太网接入等的个人数字助理(PDA)、无线装置(例如,无线电话)、智能电话、工作站计算机、膝上型计算机、个人计算机或其他类型的计算或通信>J-U P^3装直。缓存服务器120可以包括一个或多个服务器装置,或者以本文所述的方式收集、处理、搜索和/或提供信息的其他类型的计算或通信装置。在一个实例实施方式中,缓存服务器120可以用作来自从起始装置130寻求资源的客户端装置110的请求的媒介。如本文所使用的术语“资源”旨在广义地解释为包括内容,诸如视频、音频、图像、软件下载等;服务,诸如提供高清晰度和用户生成的内容、消费者和企业新闻和信息服务、电子邮件系统等;和/或内容和服务的组合。客户端装置110可以经由网络160和/或网络装置170连接至缓存服务器120,并可以从起始服务器130请求一些可用资源。缓存服务器120可以评估请求(例如,根据过滤规则,诸如按IP地址或协议过滤流量)。如果验证请求,则缓存服务器120可以通过连接至起始装置130并代表客户端装置110请求资源来提供所请求的资源。缓存服务器120可以在没有连接起始装置130的情况下服务请求。在该情况下,缓存服务器120可以缓存(或存储)先前从起始装置130请求的特定资源,并在没有涉及起始 装置130的情况下经由网络装置170将该特定资源提供到客户端装置。起始装置130可以包括一个或多个服务器装置,或者以本文所述的方式收集、处理、搜索和/或提供资源的其他类型的计算或通信装置。在一个实例实施方式中,起始装置130可以包括客户端装置170可以经由网络160和/或网络装置170访问的资源。在一个实例中,起始装置130可以向客户端装置110提供资源(例如,经由网络160和/或网络装置170)。可选地,起始装置130可以为缓存服务器120提供特定资源用于存储。缓存服务器120可以存储特定资源,使得当客户端装置110请求时,缓存服务器120可以将特定资源提供到客户端装置110,而不涉及起始装置130。路由中介服务器140可以包括一个或多个服务器装置,或者以本文所述的方式收集、处理、搜索和/或提供信息的其他类型的计算或通信装置。在一个实例实施方式中,路由中介服务器140可以从各种源接收信息,并可存储信息。例如,路由中介服务器140可以接收来自本地缓存174的信息(例如,关于本地缓存174的可用性的信息、标识本地缓存174中存储的资源的信息等);来自网络160的信息(例如,关于网络160和/或网络装置170的可用性的信息,网络拓扑结构和成本等);来自缓存服务器120的信息(例如,关于缓存服务器120的信息、标识缓存服务器120中存储的资源的信息等);来自其他装置150的信息(例如,关于其他装置150的可用性的信息,标识由其他装置150存储的资源的信息、标识有除由与网络100相关的服务提供商之外的服务提供商提供的资源的服务器的应用层流量优化(ALTO)服务(例如,请求注解(RFC) 5693中阐述的)信息;和/或来自起始装置130的信息(例如,关于起始装置130可用性的信息,标识起始装置130中存储的资源的信息)。在一个实例中,网络装置170可以向路由中介服务器140查询目标装置的位置以服务资源请求(例如,由客户端装置110提供)。路由中介服务器140可以接收该查询,可以确定目标装置以服务资源请求,并且可以向网络装置170提供目标装置的诸如IP地址的位置信息。例如,路由中介服务器140可从网络装置170接收查询,并且因为起始装置130是所请求的资源的最近装置,因此可以确定起始装置130是目标装置。因此,路由中介服务器140可以向网络装置170提供起始装置130的诸如IP地址的位置信息。其他装置150可以包括一个或多个服务器装置或者以本文所述的方式收集、处理、搜索、和/或提供信息的其他类型的计算或通信装置。在一个实例实施方式中,其他装置150可以与在网络100或网络100的组件故障的情况下为网络100提供资源的联合服务提供商网络相关。其他装置150可以存储标识有这种联合服务提供商网络提供的资源的服务器的ALTO服务信息。在实例实施方式中,在网络100或网络100的组件故障的情况下,其他装置150可以包括客户端装置110可以经由网络160和/或网络装置170接入的资源。网络160可以包括诸如局域网(LAN)、广域网(WAN)的服务提供商网络;城域网(WAN);电话网络(例如,公共交换电话网络(PSTN)或蜂窝网络);互联网;或网络的组合。网络装置170可以包括诸如网关、路由器、交换机、防火墙、网络接口卡(NIC)、集线器、网桥、代理服务器,光分插复用器(OADM)的流量传输装置,或者处理和/或转移流量(例如,包)的一些其他类型的装置。在一个实施方式中,网络装置170可以是提供来自网络160的入口点或出口点的边缘网络装置。在一个实例中,网络装置170可以使得客户端装置110、缓存服务器120、起始装置130、路由中介服务器140和/或其他装置150能够彼此通信。在另一实例中,网络装置170可以使得客户端装置110能够请求并从缓存服务器120、起始服务器130和/或其他装置150接收资源。
如图I进一步所示,网络装置170可以包括应用程序代理172和本地缓存174。应用程序代理172可以终止与客户端装置110的资源请求的全部或子集相关的给定应用程序的连接。应用程序代理172基本上可以同时、在不同时间等接收资源请求。对于每个资源请求,应用程序代理172可以确定存储资源的目标服务器(例如,缓存服务器120、起始服务器130、其他装置150或本地缓存174)。应用程序代理服务器172可以连接至所确定的服务器,并可以代理资源请求以及客户端装置110和确定的服务器之间返回的资源。在实例实施方式中,应用程序代理172可以从客户端装置110接收资源请求,并基于请求的IP信息确定是否终止请求的连接。如果应用程序代理172确定不应当终止请求的连接,则代理服务器172可以将请求转发到网络160用于额外路由。如果应用程序代理172确定应当终止请求的连接,则应用代理服务器172可以终止请求的连接,并且可以确定该资源的目标源装置(例如,缓存服务器120、起始服务器130、其他装置150或本地缓存174)。应用程序代理172可以将请求提供到确定的目标源装置,并接收来自目标源装置的资源,并可以将资源提供到客户端装置110。本地缓存174可以包括一个或多个存储装置,诸如磁和/或光记录介质和它们的相应驱动、可移除存储器、随机存取存储器(RAM)和只读存储器(ROM)等。在一个实例实施方式中,本地缓存174可以存储客户端装置110可以接入的资源。本地缓存174可以存储资源,使得在客户端装置110请求时,本地缓存174可以在不涉及缓存服务器120、起始装置130、和/或其他装置150的情况下,将资源提供到客户端装置110。例如,以下结合图3-9提供了网络装置170、应用程序代理172和本地缓存174的进一步细节。虽然图I示出了网络100的实例装置,但是在其他实施方式中,与图I描述的相t匕,网络100可以包括更少的装置、不同装置、不同排列的装置或另外的装置。图2是装置200的实例组件的示图,其可以对应于客户端装置110、缓存服务器120、起始服务器130、路由中介服务器140、或其他装置150 (图I)。在一些情况下,装置200还可以对应于网络装置170(图I)。客户端装置110、缓存服务器120、起始服务器130、路由中介服务器140、其他装置150或网络装置170中的每个可以包括一个或多个装置200。如图2所示,装置200可以包括总线210、处理单元220、主存储器230、ROM 240、存储装置250、输入装置260、输出装置270和/或通信接口 280。总线210可以包括允许在装置200的组件之间通信的路径。处理单元220可以包括一个或多个处理器、微处理器、特定用途集成电路(ASIC)、场可编程门阵列(FPGA)或解释并执行指令的其他类型的处理单元。主存储器230可以包括RAM或存储用于处理单元220执行的信息和指令的其他类型的动态存储装置。ROM 240可以包括ROM装置或存储用于处理单元220的静态信息和/或指令的其他类型的静态存储装置。存储装置250可以包括磁和/或光记录介质及其相应驱动,或者诸如闪存的可移除存储器。输入装置260可以包括允许操作者向诸如键盘、鼠标、交换机、按钮、语音识别和/或生物机制、触摸屏等的装置200输入信息的机制。输出装置270可以包括向包括显示器、扬声器、发光二极管(LED)等的操作器输出信息的机制。通信接口 280可以包括使得装置200能够与其他装置和/或系统通信的任何收发机机制。例如,通信接口 280可以包括用于经由网络与另一装置或系统进行通信的机制。在一个实施方式中,通信接口 280可以包括 诸如以太网接口的有线接口或者诸如射频接口的无线接口。如本文所述,装置200可以响应于执行诸如主存储器230的计算机可读介质中包含的软件指令的处理单元220执行特定操作。计算机可读介质可以限定为非暂时性的存储器装置。存储器装置可以包括在单个物理存储器装置中或遍布多个物理存储器装置的空间。软件指令可以从诸如存储装置250的另一计算机可读介质或者经由通信接口 280从另一装置读入主存储器230。主存储器230中包含的软件指令可以使处理单元220执行本文所述的处理。可选地,硬连线的电路可以取代软件指令或与其结合使用以执行本文所述的处理。因此,本文所述的实施方式不限于硬件电路和软件的任何特定组合。虽然图2示出了装置200的实例组件,但是在其他实施方式中,与图2中描述的相t匕,装置200可以包括更少的组件、不同组件、不同地排列的组件或另外的组件。可选地或者另外地,装置200的一个或多个组件可以执行描述为由装置200的一个或多个其他组件执行的一个或多个其他任务图3是可以对应于网络装置170 (图I)的装置300的实例组件的示图。在一些情况下,网络装置170可以包括一个或多个装置300。如图3所示,装置300可以包括输入组件310、交换/路由机制320、输出组件330和控制单元340。输入组件310可以是物理链路的附着点,并可以是诸如包的进入流量的入口点。输入组件310可以处理进入流量,诸如通过执行数据链路层封装或封装。在一个实例实施方式中,输入组件310可以发送和/或接收包。交换/路由机制320可以将输入组件310与输出组件330互连。交换/路由机制320可以使用多种不同技术来实施。例如,交换/路由机制320可以经由总线、经由交换机、和/或用共享存储器来实施。共享存储器可以用作在流量被最终调度以传送到输出组件330之前存储来自输入组件310的流量的缓冲器。输出组件330可以存储包并可以调度包用于输出物理链路上的服务。输出组件330可以包括支持优先级或保证的调度算法。输出组件330可以支持数据链路层封装和解封装,和/或各种更高层协议。在实例实施方式中,输出组件330可以发送包和/或接收包。
控制单元340可以使用路由协议以及一个或多个转发表用于转发包。控制单元340可以与输入组件310、交换/路由机制320和输出组件330连接。控制单元340可以计算转发表、实施路由协议、和/或运行软件以配置和管理装置300。控制电路340可以确定其目的地地址没有在转发表中找到的任何包的路由。在实例实施例中,控制单元340可以包括总线350,其包括允许处理器360、存储器370和通信接口 380之间进行通信的路径。处理器360可以包括一个或多个处理器、微处理器、ASIC、FPGA、或可以解释和执行指令的其他类型的处理单元。存储器370可以包括RAM、ROM装置、磁和/或光记录介质及其相应驱动、和/或可以存储信息和指令用于处理器360执行的其他类型的静态和/或动态存储装置。在包被导向回至交换/路由机制320,被交换/路由机制320传输并最后调度以发送到输出组件330之前,存储器370还可以临时地存储来自输入组件310的进入流量(例如,包的头或整个包)用于处理器360处理。通信接口380可以包括任何像收发器的机制,其使得控制单元340与其他装置和/或系统进行通信。 如本文所述,响应于执行在诸如存储器370的计算机可读介质中包含的软件指令的处理器360,装置300可以执行特定操作。软件指令可以从诸如数据存储装置的另一计算机可读介质或者经由通信接口 380从另一装置读入存储器370。存储器370中包含的软件指令可以使处理器360执行本文所述的处理。可选地,硬连线电路可以代替软件指令或者与软件指令结合使用来实施本文所述的处理。因此,本文所述的实施方式不限于硬件电路和软件的任何特定组合。例如,可以使用路由协议(例如,BGP)经由外部代理控制装置300的交换/路由操作。虽然图3示出了装置300的实例组件,但是在其他实施方式中,与图3描述的相t匕,装置300可以包括更少的组件、不同的组件、不同排列的组件或另外的组件。可选地或另外地,装置300的一个或多个组件可以执行描述为由装置300的一个或多个其他组件执行的一个或多个其他任务。图4是能够由网络100的实例部分400执行的实例操作的示图。如图所示,实例网络部分400可以包括客户端装置110、网络装置170和应用程序代理172。客户端装置110、网络装置170和应用程序代理172可以包括以上结合例如图1-3中的一个或多个描述的特征。如图4所示,客户端装置110可以向网络装置170提供资源请求410,并且网络装置170可以经由应用程序代理172接收请求410。应用程序代理172可以接收请求410,并可以基于请求410中提供的信息确定是否在网络装置170终止请求410的连接(例如,传输控制协议(TCP))。在一个实例中,请求410中提供的信息可以包括IP信息,诸如请求410的目的地IP地址、客户端装置110的IP地址(S卩,请求410的源IP地址)、请求410的目的地端口(例如,网络地址转换(NAT))等。在一个实施方式中,应用程序代理172可以从请求410提取目的地IP地址,可以从请求410提取客户端装置110的IP地址,和/或可以从请求410提取目的地端口。应用程序代理172可以基于提取的目的地IP地址确定客户端装置110的IP地址、和/或目的地端口、是否在网络装置170终止请求410的连接。如图4中进一步所示,如果应用程序代理172基于请求410中提供的信息决定终止请求410的连接,则应用程序代理172可以向客户端装置110提供终止连接的指示420。如果应用程序代理172基于请求410中提供的信息决定没有终止请求410的连接,则应用程序代理172可以向客户端装置110提供连接没有终止的指示430,并可以将请求410转发到网络160用于额外路由,如参考标号440所示。在一个实例实施方式中,应用程序代理172可以终止给定应用程序或从客户端装置110接收的资源请求的全部或子集的连接(例如,TCP连接)。在另一实例实施方式中,由于请求410可以被另一下游装置终止,因此可以省略指示430。在一个实施方式中,应用程序代理172可以保持或接入提供应用程序、客户端装置IP地址、源装置IP地址等的列表的表(或其他数据结构)。表中提供的信息可以由网络管理员输入到网络装置170,或者可以由应用程序代理172基于提供到网络装置170或由其接收的先前流量来生成。例如,如果网络装置170从特定客户端装置110接收特定数量(例如,大于阈值)的请求,则应用程序代理172可以将客户端装置110的IP地址添加到表。在另一实例中,如果网络装置170从特定服务器检索特定数量(例如,大于阈值)的资源,则应用程序代理172可以将特定服务器的IP地址添加到表。
应用程序代理172可以将请求410中提供的信息和表中提供的信息进行比较,并且当请求410中提供的信息与表中提供的一项或多项信息匹配时,决定终止请求410的连接。在一个实施方式中,应用程序代理172可以建立规则以确定是否终止连接(例如,如果表中有一个匹配,则终止连接,如果表中有两个或多个匹配,则终止连接等)。在一个实例中,如果请求410包括起始装置130的目的地IP地址并且表包括起始装置130的目的地IP地址,则应用程序代理172可以决定终止请求410的连接。在另一实例中,如果请求包括缓存服务器120的目的地IP地址但是不包括客户端装置110的IP地址,则应用程序代理172可以确定没有终止请求410的连接。虽然图4示出了网络部分400的实例组件,但是在其他实施方式中,与图4中描述的相比较,网络部分400可以包括更少的组件、不同的组件、不同排列的组件或另外的组件。可选地或另外地,网络部分400的一个或多个组件可以执行描述为由网络部分400的一个或多个其他组件执行的一个或多个任务。图5A和5B是能够由网络100的实例部分500执行的另一实例操作。如图5A和5B所示,实例网络部分500可以包括客户端装置110、缓存服务器120、起始装置130、路由中介服务器140、其他装置150、网络160和网络装置170。客户端装置110、缓存服务器120、起始装置130、路由中介服务器140、其他装置150、网络160和网络装置170可以包括例如以上结合图1-4中的一个或多个描述的特征。如图5A进一步所示,路由中介服务器140可以从网络部分500的一个或多个源接收信息。例如,本地缓存174可以将本地缓存信息510提供到路由中介服务器140。本地缓存信息510可以包括关于本地缓存174的可用性的信息,标识本地缓存174中存储的资源的信息,关于本地缓存174的大小的信息等。在另一实例中,网络160可以将网络信息520提供到路由中介服务器140。网络信息520可以包括关于网络160和/或网络160的组件、与网络160相关的拓扑结构和成本、可用于网络160的带宽、优选的网络160的客户端装置等的信息。在又一实例中,缓存服务器120可以将缓存信息530提供给路由中介服务器140。缓存信息530可以包括关于缓存服务器120的可用性的信息、标识缓存服务器120中存储的资源的信息、关于缓存服务器120的负载的信息等。在一个实例实施方式中,路由中介服务器140可以使得新缓存服务器添加到网络100,而无需像现有方案要求的那样明确地将新的缓存服务器配置到路由判定中。新的缓存服务器可以向路由中介服务器140提供缓存信息(例如,与缓存信息530类似)。在再一实例中,其他装置150可以向路由中介服务器140提供其他装置信息540。其他装置信息540可以包括关于其他装置150的可用性的信息、标识其他装置150中存储的资源的信息、关于与其他装置150相关的服务提供商的信息、标识具有由与其他装置150相关的服务提供商提供的资源的服务器的ALTO服务信息等。在又一实例中,起始装置130可以向路由中介服务器140提供起始信息550。起始信息550可以包括关于起始装置130的可用性的信息、标识起始装置130中存储的资源的 信息、关于起始装置130的负载的信息
坐寸o路由中介服务器140可以接收本地缓存信息510、网络信息520、缓存信息530、其他装置信息540和/或起始信息550,并可以存储(例如,在图2的主存储器230、ROM 240和/或存储装置250中)本地缓存信息510、网络信息520、缓存信息530、其他装置信息530和/或起始信息550。如图5A中进一步示出,客户端装置110可以向网络装置170提供资源的请求560,并且网络装置170可以经由应用程序代理172接收请求560。请求560可以包括IP信息,诸如请求560的目的地IP地址、客户端装置110的IP地址(即,请求560的源IP地址)、请求560的目的地端口等。在一个实例中,请求560可以包括HTTP GET请求(例如,请求资源)、域名、和/或统一资源定位符(URL)。应用程序代理172可以接收请求560,并可以如以上结合图4描述的,基于请求560中提供的信息确定是否在网络装置170终止请求560的连接。如果应用程序代理172在网络装置170终止请求560的连接,则应用程序代理172可以确定请求560请求的资源的目标源装置。应用程序代理172可以以多种方式确定目标源装置。例如,如图5B所示,应用程序代理172可以向路由中介服务器140提供查询570。查询570可以包括存储了由请求560请求的资源的目标源装置的位置的请求。在一个实施方式中,请求570可以包括与请求560相关的信息,诸如请求560请求的资源、请求560的域名、请求560的URL等。路由中介服务器140可以接收查询570,并可以基于查询570确定请求560请求的资源的目标源装置。在一个实例中,路由中介服务器140可以基于各种因素确定目标源装置,诸如网络160的状态(例如,网络160的带宽、网络160的负载等)、目标源装置关于客户端装置110的物理位置(例如,在位于距客户端装置110较远的装置前,可以选择位于较靠近客户端装置110的装置)等。在确定目标源装置之后,路由中介服务器140可以将目标源装置的位置580 (例如,IP地址)提供给应用程序代理172。在一个实例中,请求560中包括的域名可以由特定服务器(例如,起始装置130)托管,而请求560中包括的URL可以标识由不同服务器(例如,缓存服务器120)托管的资源。在这种场景下,由于请求560请求的资源由缓存服务器120托管,因此路由中介服务器140可以确定缓存服务器120是目标源装置。相反,在基于DNS的系统中,请求560将不必首先由于请求560的域名而被路由到起始装置130。在一个实例实施方式中,在生成查询570之前,应用程序代理172可以确定所请求的资源是否存储在本地缓存174中。在一个实例中,应用程序代理172可以保持提供了本地缓存174中存储的资源列表的表(或其他数据结构)。应用程序代理172可以扫描表以确定所请求的资源是否存储在本地缓存174中。如果应用程序代理172确定所请求的资源存储在本地缓存174中,则应用程序代理172可以从本地缓存174检索所请求的资源。例如,应用程序代理172可以向本地缓存174提供请求560,并且本地缓存174可以检索请求560请求的资源590。本地缓存174可以向应用程序代理172提供资源590,并且应用程序代理172可以将资源590转发到客户端装置110。如果应用程序代理172确定资源不存储在本地缓存174中,则应用程序代理172可以向路由中介服务器140提供查询570。应用程序代理172可以从路由中介服务器140并且基于查询570接收目标源装置(例如,缓存服务器120、起始装置130、和/或其他装置150)的位置580。应用程序代理172可以使用位置580来与目标源装置连接,并从目标源装置检索所请求的资源。如图5B进一步示出,在一个实例中,如果位置580标识了缓存服务器120的IP地址,则应用程序代理172可以向缓存服务器120提供请求560(例如,其可以包括客户端装置110的IP地址),并且缓存服务器120可以检索请求560请求的资源590。缓存服务器120可以向应用程序代理172提供资源590,并且应用程序代理172可以将资源590 (例 如,其可以包括缓存服务器120的IP地址)转发到客户端装置110。在另一实例中,如果位置580标识起始装置130的IP地址,则应用程序代理172可以向起始装置130提供请求560 (例如,其可以包括客户端装置110的IP地址),并且起始装置130可以检索请求560所请求的资源590。起始装置130可以向应用程序代理172提供资源590,并且应用程序代理172可以将资源590 (例如,其可以包括起始装置130的IP地址)转发到客户端装置110。在又一实例中,如果位置580识别其他装置150的IP地址,则应用程序代理172可以向其他装置150提供请求560 (例如,其可以包括客户端装置110的IP地址),并且其他装置150可以检索请求560请求的资源590。其他装置150可以向应用程序代理172提供资源590,并且应用程序代理172可以将资源590 (例如,其可以包括其他装置150的IP地址)转发到客户端装置110。虽然图5A和5B中示出了网络部分500的实例组件,但是在其他实施方式中,与图5A和5B中描述的相比较,网络部分500可以包括更少的组件、不同的组件、不同排列的组件或另外的组件。可选地或者另外地,网络部分500的一个或多个组件可以执行描述为由网络部分500的一个或多个组件执行的一个或多个其他任务。例如,网络装置170可以经由应用程序代理172执行描述为由路由中介服务其140执行的一个或多个功能(例如,确定目标源装置)。图6是能够由网络100的实例部分600执行的又一实例操作的示图。如图所示,实例网络部分600可以包括客户端装置110、缓存服务器120、起始装置130、其他装置150、网络装置170、应用程序代理172和本地缓存174。客户端装置110、缓存服务器120、起始装置130、其他装置150、网络装置170、应用程序代理172和本地缓存174可以包括以上结合例如图I至5B中的一个或多个描述的特征。在一个实施方式中,图6可以描述网络装置170如何将来自客户端装置110的请求代理到目标源装置,并且进一步将从目标源装置检索的资源代理到客户端装置110。通过代理请求和资源,网络装置170可以确保客户端装置110和目标源装置彼此是透明的,或者缓存服务器120对客户端装置110和起始装置130是透明的。例如,客户端装置110可以对起始装置130是透明的,因为网络装置170可以使用其自己的IP地址,或者可以隐瞒客户端装置110和/或起始装置130的地址,以在客户端装置110和起始装置130之间交换信息(例如,包)。在另一实例中,网络装置170可以使用客户端装置110和/或起始装置130的IP地址,以与缓存服务器120交换信息(即,使得缓存服务器120对客户端装置110和/或起始装置130不可见)。这种布置可以确保客户端装置110、缓存服务器120、和/或起始装置130对彼此不可见,这将提高客户端装置110和/或目标源装置的安全性。如图6中进一步所示,客户端装置100可以向网络装置170提供资源请求610,并且网络装置170可以经由应用程序代理172接收请求610。请求610可以包括IP信息,诸如请求610的目的地IP地址、客户端装置110的IP地址(S卩,请求610的源IP地址)、请求610的目的地端口等。应用程序代理172可以接收请求610,并可以基于请求610中提供的信息确定是否在网络装置170终止请求610的连接。如果应用程序代理172在网络装置170终止请求610的连接,则应用程序代理172可以确定适于服务请求610请求的资源的目标源装置。例如,应用程序代理172可以确定目标源装置为缓存服务器120、起始装置130、其他装置150和/或本地缓存174。在一个实例实施方式中,应用程序代理172可以以上结合图5A和5B描述的方式确定请求610的目标源装置。应用程序代理172可以连接至所确定的目标源装置,并可以向确定的目标源装置提供请求610的代理620。代理请求620可以包括请求610的特征,但是可以通过对目标源装置隐瞒客户端装置110的IP地址来透明地提供。经由代理请求620,客户端装置110对目标源装置可以是透明的,因为网络装置170可以使用其自己的IP地址,或者可以隐瞒客户端装置110的地址,以向目标源装置发送信息。这可以使得客户端装置110安全地与目标源装置进行通信(即,而不需通过目标源装置获得对客户端装置110的IP地址的接入)。在一个实例中,如果目标源装置对应于缓存服务器120,则应用程序代理172可以向缓存服务器120提供代理请求620,并且缓存服务器120可以检索代理请求620请求的资源630。缓存服务器120可以向应用程序代理172提供资源630。在另一实例中,如果目标 源装置对应于起始装置130,则应用程序代理172可以向起始装置130提供代理请求620,并且起始装置130可以检索代理请求620请求的资源630。起始装置130可以向应用程序代理172提供资源630。在又一实例中,如果目标源装置对应于其他装置150,则应用程序代理172可以向其他装置150提供代理请求620,并且其他装置150可以检索代理请求620请求的资源630。其他装置150可以向应用程序代理172提供资源630。在另一实例中,如果目标源装置对应于本地缓存174,则应用程序代理172可以向本地缓存174提供请求610 (即,可以不需要代理),并且本地缓存174可以检索请求610请求的资源630。本地缓存174可以向应用程序代理172提供资源630。应用程序代理172可以从上述目标源装置中的一个接收资源630,并且可以将资源630的代理640提供到客户端装置110。代理资源640可以包括资源630的特征,但是可以通过对客户端装置110隐瞒目标源装置的IP地址来透明地提供。经由代理资源640,目标源装置对客户端装置110可以是“透明”的,因为网络装置170可以使用其自己的IP地址向客户端装置110发送信息。这可以使得目标源装置安全地与客户端装置110进行通信(即,无需客户端装置110获得对目标源装置的IP地址的接入)。虽然图6示出了网络部分600的实例组件,但是在其他实施方式中,与图6中描述的相比较,网络部分600可以包括更少的组件、不同的组件、不同排列的组件或另外的组件。可选地或另外地,网络部分600的一个或多个组件可以执行描述为由网络部分600的一个或多个其他组件执行的一个或多个任务。图7是能够由网络100的实例部分700执行的实例操作的示图。如图所示,实例网络部分700可以包括客户端装置110、缓存服务器120、起始装置130、其他装置150、网络装置170、应用程序代理172和本地缓存174。客户端装置110、缓存服务器120、起始装置130、其他装置150、网络装置170、应用程序代理172和本地缓存174可以包括例如以上结合图1-6中的一个或多个描述的特征。如图7所示,客户端装置110可以向网络装置170提供与单个连接相关的多个资源的多个请求710-1,. . .,710-4(统称为“多个请求710” ),并且网络装置170可以经由应用程序代理172接收多个请求710。在一个实施方式中,可以经由单个连接顺序提供多个请求710。在其他实施方式中,可以经由单个连接在不同时间提供多个请求710。应用程序代 理172可以接收多个请求710,并可以基于多个请求710中提供的信息确定是否在网络装置170终止多个请求710的连接。在一个实施方式中,应用程序代理172可以以上面结合图4描述的方式确定是否终止多个请求710的连接。如果应用程序代理172决定没有终止多个请求710的连接,则应用程序代理172可以将多个请求410转发到网络160用于额外路由。如果应用程序代理172在网络装置170终止多个请求710的连接,则应用程序代理172可以确定最适于服务多个请求710请求的资源的目标源装置。在一个实例实施方式中,应用程序代理172可以为多个请求710选择一个或多个目标源装置。在另一实例实施方式中,应用程序代理172可以为多个请求710中的每个选择单独的目标源装置。例如,应用程序代理172可以选择缓存服务器120作为请求710-1的目标源装置,可以选择其他装置150作为请求710-2的目标源装置,可以选择起始装置130作为请求710-3的目标源装置,和/或可以选择本地缓存174为请求710-4的目标源装置。在一个实例中,应用程序代理172可以上面结合图5A和5B描述的方式为多个请求710选择目标源装置。应用程序代理172可以向缓存服务器120提供请求710-1,并且缓存服务器120可以检索请求710-1请求的资源720-1。缓存服务器120可以向应用程序代理172提供资源720-1。应用程序代理172可以其他装置150提供请求710-2,并且其他装置150可以检索请求710-2请求的资源720-2。其他装置150可以向应用程序代理172提供资源720-2。应用程序代理172可以向起始装置130提供请求710-3,并且起始装置130可以检索请求710-3请求的资源720-3。起始装置130可以向应用程序代理172提供资源720-3。应用程序代理172可以向本地缓存174提供请求710-4,并且本地缓存174可以检索请求710-4请求的资源720-4。本地缓存174可以向应用程序代理172提供资源720-4。应用程序代理172可以接收资源720-1、. . .、720-4,并可以向客户端装置110提供资源720-1、. . .、720_4。虽然图7示出了网络部分700的实例组件,但是在其他实施方式中,与图I中所述的相比,网络部分700可以包括更少的组件、不同的组件、不同排列的组件或另外的组件。可选地或另外地,网络部分700的一个或多个组件可以执行描述为由网络部分700的一个或多个其他组件执行的一个或多个任务。图8是能够由网络100的实例部分800执行的又一实例操作。如图所示,实例网络部分800可以包括客户端装置110、缓存服务器120、起始装置130、网络装置170和应用程序代理172。客户端装置110、缓存服务器120、起始装置130、网络装置170和应用程序代理172可以包括例如以上结合图1-7中的一个或多个描述的特征。如图8所示,客户端装置110可以向网络装置170提供资源请求810,并且网络装置170可以经由应用程序代理172接收请求810。请求810可以包括IP信息,诸如请求810的目的地IP地址、客户端装置110的IP地址(S卩,请求810的源IP地址)、请求810的目的地端口等。应用程序代理172可以接收请求810,并可以基于请求810中提供的信息确定是否在网络装置170终止请求810的连接。如果应用程序代理172在网络装置170终止请求810的连接,则应用程序代理172可以确定最适于服务请求810请求的资源的目标源装置。例如,应用程序代理172可以确定目标源装置为缓存服务器120。应用程序代理172可以向缓存服务器120提供请求810,并且缓存服务器120可以检索请求810请求的资源的部分820。缓存服务器120可以向应用程序代理172提供资源部分820。然而,在应用程序代理172从缓存服务器120接收到请求810请求的整个资源之前,应用程序代理172可以接收事件的指示830。事件指示830可以提供关于网络(例如,网络160)中的诸如网络拥塞、带宽限制等的改变条件的信息、关于缓存服务器120故障的 信息、关于缓存服务器120的过载条件的信息、和/或指示不能从缓存服务器120检索所请求的资源的剩余部分的其他信息。响应于时间指示830,应用程序代理172可以停止与缓存服务器120进行通信,并可以通过向起始装置130或者向所请求的资源的另一目标源装置提供请求810 ( S卩,HTTP字节范围请求)来切换目标源装置。基于请求810,起始装置130可以检索请求810请求的资源的剩余部分840。起始装置130可以向应用程序代理172提供剩余资源部分840。应用程序代理172可以向客户端装置110提供资源部分820和剩余资源部分840。在一个实施方式中,在向客户端装置110提供剩余资源部分840之前,应用程序代理172可以向客户端装置提供资源部分820。在另一实施方式中,应用程序代理172可以等待接收资源部分820/840,并同时将资源部分820/840发送到客户端装置110。这种安排可以确保即使在所请求的资源的一个或多个目标源装置变得不可用时(例如,由于网络条件或目标源装置条件的变化),也能将所请求的资源完整地提供到客户端装置110。虽然图8示出了网络部分800的实例组件,但是在其他实施方式中,与图8中描述的相比较,网络部分800可以包括更少的组件、不同的组件、不同排列的组件或另外的组件。可选地或另外地,网络部分800的一个或多个组件可以执行描述为由网络部分800的一个或多个其他组件执行的一个或多个任务。图9是网络装置170的应用程序代理172的实例功能组件的示图。如图所示,应用程序代理172可以包括TCP接合器组件900、路由判定组件910和应用程序逻辑组件920。在一个实例实施方式中,结合图9描述的一个或多个功能组件可以由装置200 (图2)或装置300 (图3)的一个或多个实例组件实施。TCP接合器组件900可以负责有效地接合客户端装置110和目标源装置连接(例如,TCP连接)之间提供的信息。在一个实例中,TCP接合器组件900可以通过相对于TCP序列号在特定时间段(例如,长度足以向目标源装置提供资源请求并从目标源装置接收资源)改变包中的头来接合信息(例如,包)。在一个实施方式中,TCP接合器900可以设置在网络装置170的转发面,以将应用程序代理172扩展至网络装置170的线速度(例如,每秒千兆)。在其他实施方式中,TCP接合器组件900可以是用于缓存未命中/旁路路径的加速器。应用程序代理172可以从客户端装置110接收资源的请求930 (例如,经由TCP接合器组件900),并可以基于请求930中提供的信息确定是否使用TCP接合器组件900。在一个实例中,请求930中提供的信息可以包括IP信息,诸如请求930的目的地IP地址、客户端装置110的IP地址(即,请求930的源IP地址)、请求930的目的地端口等。当应用程序代理172决定使用TCP接合器组件900时,应用程序代理172可以在网络装置170终止请求930的连接(例如,TCP连接),并可以激活TCP接合器组件900以优化连接的传输。如果应用程序代理172基于请求930中提供的信息终止请求930的连接,则TCP接合器组件900可以向路由判定组件910提供终止连接的指示940。如果应用程序代理172没有终止请求930的连接,则如参考标号950所指示,TCP接合器组件900可以将请求930转发到网络160用于额外路由。路由判定组件900可以确定将资源请求或资源请求的部分路由至哪里。在一个实例实施方式中,路由判定组件910可以以上面结合图5A和5B描述的方式决定将资源请求 路由至哪里。如图9所示,路由判定组件910可以从TCP接合器组件900接收指示940,并可以确定请求930请求的资源的目标源装置。路由判定组件910可以向应用程序逻辑组件920提供所确定的目标源装置的位置960。应用程序逻辑组件920可以处理资源请求,由于网络条件变化或目标源装置故障等而切换目标源装置。如图9所示,应用程序逻辑组件920可以从路由判定组件910接收所确定的目标源装置的位置960,并且可以如参考标号970所指示将请求930路由到所确定的目标源装置的位置960。应用程序逻辑组件920可以从目标源装置接收资源980,并可以将资源980转发到客户端装置110。虽然图9示出了应用程序代理172的实例功能组件,但是在其他实施方式中,与图9中描述的相比较,应用程序代理172可以包括更少的功能组件、不同的功能组件、不同排列的功能组件或另外的功能组件。可选地或另外地,应用程序代理172的一个或多个功能组件可以执行描述为由应用程序代理172的一个或多个其他功能组件执行的一个或多个任务。在一个实例实施方式中,可以将网络装置170、应用程序代理172和本地缓存174部署为服务提供商网络中的独立组件。在另一实例实施方式中,网络装置170、应用程序代理172和本地缓存174可以集成到单个装置中(例如,单个服务器、单个介质流控制器、单个网络装置等)。在另一实例实施方式中,应用程序代理172和本地缓存174中的一个或多个的功能可以集成到网络装置170中。本文所述的系统和/或方法可以提供细粒度和动态路由,这可以扩展到网络装置170的线速度。另外地或可选地,本文所述的系统和/或方法可以集成在核心网(例如,网络160)的基础架构(例如,网络装置170)中,并可以不要求覆盖服务的明确手动配置。另外地或可选地,系统和/或方法可以帮助在不同服务提供商中联合资源(例如,经由路由中介服务器140),并可以对透明和反向代理部署的资源路由进行寻址。另外地或可选地,通过在延迟最小的网络170终止这种连接,系统和/或方法可以提高来自客户端装置的TCP连接的效率,并且可以特别为诸如视频和文件下载的大资源提供透明目标源装置故障转移。
图10至13是用于根据本文所述的实施方式提供网络集成的动态资源路由的实例处理1000的流程图。在一个实施方式中,处理1000可以由网络装置170执行。在另一实施方式中,一些或全部处理1000可以由不同于网络装置170的一个或多个装置执行,或者与网络装置170组合执行。图10-13中描述的一个或多个处理块可以同时执行,或者独立于一个或多个其他处理块来执行。如图10所示,处理1000可以包括从客户端装置接收资源请求(块1010),并且基于请求的IP信息确定是否终止请求的连接(块1020)。例如,在以上结合图4描述的实施方式中,客户端装置110可以向网络装置170提供资源的请求410,并且网络装置170可以经由应用程序代理172接收请求410。应用程序代理172可以接收请求410,并且可以基于请求410中提供的信息确定是否在网络装置170终止请求410的连接(例如,TCP连接)。在一个实例中,请求410中提供的信息可以包括IP信息,诸如请求410的目的地IP地址、客户端装置110的IP地址(即,请求410的源IP地址)、请求410的目的地端口等。应用程序代理172可以将请求410中提供的信息与表中提供的信息进行比较,并可以在请求410中提供的信息与表中提供的一项或多项信息匹配时决定终止请求410的连接。 如图10中进一步所示,当没有终止连接时(块1020-没有终止),处理1000可以包括将请求转发到网络(块1030)。例如,在以上结合图4描述的实施方式中,如果应用程序代理172基于请求410中提供的信息决定不终止请求410的连接,则应用程序代理172可以向客户端装置110提供没有终止连接的指示,并且可以如参考标号440所指示,将请求410转发到网络160用于额外路由。返回图10,当终止连接时(块1020-终止),处理1000可以包括确定资源的目标源装置(块1040)并将请求提供到所确定的目标源装置(块1050)。例如,在以上结合图5B描述的实施方式中,如果应用程序代理172在网络装置170终止请求560的连接,则应用程序代理172可以为请求560请求的资源确定目标源装置。在一个实例中,应用程序代理172可以向路由中介服务器140提供查询570。查询570可以包括对存储了请求560请求的资源的目标源装置的位置的请求。路由中介服务器140可以接收查询570,并可以基于查询570确定请求560所请求的资源的目标源装置。在确定目标源装置之后,路由中介服务器140可以向应用代理服务器172提供目标源装置的位置580 (例如,IP地址)。在一个实例中,如果位置580标识缓存服务器120的IP地址,则应用程序代理172可以向缓存服务器120提供请求560,并且缓存服务器120可以检索请求560请求的资源590。如图10进一步所示,处理1000可以包括从目标源装置接收资源(块1060),并向客户端装置提供资源(块1070)。例如,在以上结合图5B描述的实施方式中,缓存服务器120可以向应用程序代理172提供资源590,并且应用程序代理172可以接收资源590并将资源590转发到客户端装置110。处理块1020可以包括图11中描述的处理块。如图11所示,处理块1020可以包括从请求提取目的地IP地址(块1100),从请求提取客户端装置IP地址(块1110),从请求提取目的地端口(块1120),并基于目的地IP地址、客户端装置IP地址和目的地端口中的一个或多个确定是否终止请求的连接(块1130)。例如,在以上结合图4描述的实施方式中,应用程序代理172可以从请求410提取目的地IP地址,可以从请求410提取客户端装置110的IP地址,和/或可以从请求410提取目的地端口。应用程序代理172可以基于所提取的目的地IP地址、客户端装置110的IP地址、和/或目的地端口确定是否在网络装置170终止请求410的连接。在一个实例中,应用程序代理172可以保持或接入提供了应用程序、客户端装置IP地址、源装置IP地址等的列表的表(或其他数据结构)。应用程序代理172可以将请求410中提供的信息与表中提供的信息进行比较,并可以在请求410中提供的信息与表中提供的一项或多项信息匹配时确定终止请求410的连接。处理块1040可以包括图12中描述的处理块。如图12所示,处理块1040可以包括确定请求所请求的资源是否存储在本地缓存中(块1200)。如果资源存储在本地缓存中(块1200-在本地缓存中),则处理块1040可以包括从本地缓存检索资源(块1210)。例如,在以上结合图5B描述的实施方式中,应用程序代理172可以确定所请求的资源是否存储在本地缓存174中。在一个实例中,应用程序代理172可以维持提供了本地缓存174中存储的资源的列表的表(或其他数据结构)。应用程序代理172可以扫描表,以确定所请求的资源是否存储在本地缓存174中。如果应用程序代理172确定所请求的资源存储在本地缓存174中,则应用程序代理172可以从本地缓存174检索所请求的资源。例如,应用程序代理172可以向本地缓存174提供请求560,并且本地缓存174可以检索请求560所请求的 资源590。本地缓存174可以向应用程序代理172提供资源590,并且应用程序代理172可以将资源590转发到客户端装置110。如图12中进一步所示,如果资源不存储在本地缓存中(块1200-不在本地缓存中),则处理块1040可以包括向所请求的资源的路由中介服务器提供查询(块1220),从路由中介服务器并基于查询来接收目标源装置的标识(块1230),并基于识别从目标源装置检索资源(块1240)。例如,在以上结合图5B描述的实施方式中,如果应用程序代理172确定资源590没有存储在本地缓存174中,则应用程序代理172可以将查询570提供到路由中介服务器140。应用程序代理172可以从路由中介服务器140并基于查询570来接收目标源装置(例如,缓存服务器120、起始装置130、和/或其他装置150)的位置580。应用程序代理172可以使用位置580来与目标源装置建立连接,并从目标源装置检索所请求的资源。处理块1050-1070可以包括图13中描述的处理块。如图13所示,处理块1050-1070可以包括连接至所确定的目标源装置(块1300),并将请求的代理提供到所确定的目标源装置(块1310),基于请求的代理从目标源装置接收资源(块1320),并将资源的代理提供到客户端装置(块1330)。例如,在以上结合图6描述的实施方式中,应用程序代理172可以连接至所确定的目标源装置,并可以向所确定的目标源装置提供请求610的代理620。目标源装置可以检索代理请求620请求的资源630,并可以向应用程序代理172提供资源630。应用程序代理172可以从目标源装置接收资源630,并可以向客户端装置110提供资源630的代理640。通过在诸如服务提供商网络的核心网的边缘网络装置中添加应用级智能,本文所述的系统和/或方法可以将资源路由集成到核心网的基础架构中。应用级智能可以包括应用程序代理,其终止与请求资源的客户端装置的全部和子集相关的给定应用程序的连接。对于每个资源请求,应用程序代理可以确定存储资源的目标服务器,可以连接至所确定的服务器,并可以在客户端装置和所确定的服务器之间代理资源请求和返回的资源。文中所使用的术语组件旨在广义地解释为包括硬件(例如,处理器、微处理器、ASIC、FPGA、芯片、存储器装置(例如,ROM、RAM等)等)或者硬件和软件的组合(例如,执行存储器装置中包含的软件的处理器、微处理器、ASIC等)。文中所使用的术语包旨在广义地解释为包括帧、数据报、包或信元;帧的片段、数据报的片段、 包的片段或信元的片段;或者数据的其他类型、排列或封装。文中所使用的术语边缘装置旨在广义地解释为包括提供到诸如网络160的网络的入口点或网络的出口点的任何装置。在一个实例实施方式中,网络装置170可以对应于边缘装置。以上的实施方式的描述提供了说明和描述,但是不旨在详尽的或者将实施方式限定为公开的精确形式。鉴于上述教导,可以进行修改和更改,并可以从实施方式的实践获得。例如,虽然已经关于图10-13描述了一系列块,但是在其他实施方式中,可以修改块的次序。此外,可以并行执行非依赖性块。显而易见的是,可以以附图中示出的实施方式中的软件、固件和硬件的多种不同形式来实施上述的实例方面。用于实施这些方面的实际软件代码或专用控制硬件不应当解释为限制的。因此,没有参照特定程序代码描述这些方面的操作和行为,应当理解,软件和控制硬件可以设计为基于文中的描述来实施这些方面。虽然权利要求中列出和/或说明书中公开了特征的特定组合,但是这些组合不旨在限制所公开的实施方式。实际上,许多这些特征可以以权利要求中没有特别列出和/或说明书中没有特别公开的方式组合。虽然以下列出的每个从属权利要求仅可以直接引用一个其他权利要求,但是所公开的实施方式包括与权利要求集中的每个其他权利要求组合的每个从属权利要求。除非这样明确地描述,否则本申请中的元件、操作或指令都不应理解为对所公开的实施方式是关键和重要的。此外,如本文所使用的,冠词“一个(a)”旨在包括一项或多项。在仅指一项时,使用术语“一个(one)”或类似语言。此外,除非另有明确说明,短语“基于”旨在表示“至少部分地基于”。
权利要求
1.一种方法,所述方法包括 通过计算装置从客户端装置接收资源的请求; 通过所述计算装置访问包括一项或多项信息的表; 通过所述计算装置将所述请求中提供的信息与所述表中提供的所述一项或多项信息进行比较; 在所述请求中提供的信息与所述表中提供的所述一项或多项信息的至少一项匹配时,通过所述计算装置在所述计算装置终止所述请求的连接; 当在所述计算装置没有终止所述连接时,通过所述计算装置将所述请求转发到网络; 以及 当在所述计算装置终止所述连接时,通过所述计算装置为所述资源选择目标装置。
2.根据权利要求I所述的方法,其中 所述请求中提供的信息包括目的地互联网协议(IP)地址、客户端装置的IP地址或目的地端口中的至少一个, 所述表中提供的所述一项或多项信息包括应用程序、客户端装置IP地址或源装置IP地址的列表中的一个或多个,以及 其中,将所述请求中提供的信息与所述表中提供的所述一项或多项信息进行比较包括 将所述目的地IP地址、所述客户端装置的IP地址、或所述目的地端口中的至少一个与所述表中提供的应用程序、客户端装置IP地址或源装置IP地址的列表中的一个或多个进行比较。
3.根据权利要求I所述的方法,其中,将所述请求中提供的信息与所述表中提供的所述一项或多项信息进行比较还包括 从所述请求提取目的地互联网协议(IP)地址; 从所述请求提取客户端装置的IP地址; 提取所述请求的目的地端口 ;以及 将所述目的地IP地址、所述客户端装置的IP地址和所述目的地端口与所述表中提供的一项或多项信息进行比较。
4.根据权利要求I所述的方法,还包括 从所述客户端装置接收与特定应用程序相关的多个请求;以及 在所述计算装置终止所述多个请求的全部或子集的连接。
5.根据权利要求I所述的方法,其中,为所述资源选择所述目标装置包括 搜索设置在所述计算装置中或本地连接至所述计算装置的本地缓存中存储的资源的列表;以及 当所述列表的搜索指示所述资源存储在所述本地缓存中时,选择所述本地缓存作为所述目标装置。
6.根据权利要求5所述的方法,其中,当所述列表的搜索指示所述资源不存储在所述本地缓存中时,为所述资源选择所述目标装置还包括 基于所述网络的带宽、与所述网络相关的成本、所述网络上提供的负载或所述目的地 装置相对于所述客户端装置的物理位置中的一个或多个来选择所述目标装置;以及与所述目标装置连接。
7.一种由计算装置执行的方法,所述方法包括 通过所述计算装置从网络装置接收本地缓存信息,其中,所述本地缓存信息标识所述网络装置的本地缓存中存储的资源; 通过所述计算装置从多个服务器装置接收资源信息,其中,所述资源信息标识所述多个服务器装置中的每个中存储的资源; 通过所述计算装置从与所述网络装置相关的网络接收网络信息,其中,所述网络信息标识与所述网络相关的拓扑结构、负载和成本; 通过所述计算装置存储所述本地缓存信息、所述资源信息和所述网络信息; 通过所述计算装置从所述网络装置接收所请求的资源的查询; 通过所述计算装置基于所述本地缓存信息、所述资源信息或所述网络信息中的一个或多个来为所请求的资源选择目标装置,其中,所述目标装置包括所述多个服务器装置中的一个或包括所请求的资源的所述本地缓存;以及 通过所述计算装置向所述网络装置提供所选择的目标装置的标识。
8.根据权利要求7所述的方法,其中,基于以下一个或多个来选择所述目标装置 所述网络的带宽, 与所述网络相关的成本, 所述网络上提供的负载,或 所述目标装置相对于请求所述资源的客户端装置的物理位置。
9.根据权利要求7所述的方法,其中,所述查询包括与所请求的资源相关的域名和统一资源定位符(URL),并且所述方法还包括 基于所述域名和所述URL来为所请求的资源选择所述目标装置。
10.一种边缘装置,包括 用于存储包括一项或多项信息的表的装置; 用于从客户端装置接收资源的请求的装置; 用于将所述请求中提供的信息与所述表中提供的所述一项或多项信息进行比较的装置; 用于在所述请求中提供的信息与所述表中提供的所述一项或多项信息匹配时在所述边缘装置终止所述请求的连接的装置; 用于在所述边缘装置没有终止所述连接时将所述请求转发到网络的装置; 用于在所述边缘装置终止所述连接时为所述资源选择目标装置的装置,以及 用于从所选择的目标装置检索所述资源的装置。
11.根据权利要求10所述的边缘装置,其中 所述请求中提供的信息包括目的地互联网协议(IP)地址、客户端装置的IP地址或目的地端口中的至少一个,以及 所述表中提供的一项或多项信息包括应用程序、客户端装置IP地址或源IP地址的列表中的一个或多个。
12.根据权利要求11所述的边缘装置,其中,所述用于将所述请求中提供的信息与所述表中提供的所述一项或多项信息进行比较的装置包括用于将所述目的地IP地址、所述客户端装置的IP地址或所述目的地端口中的至少一个与所述表中提供的应用程序、所述客户端装置IP地址或所述源装置IP地址的列表中的一个或多个进行比较。
13.根据权利要求10所述的边缘装置,还包括 用于从所述客户端装置接收与特定应用相关的多个请求的装置;以及 用于在所述边缘装置终止所述多个请求的全部或子集的连接的装置。
14.根据权利要求10所述的边缘装置,其中,所选择的目标装置包括与一个或多个联合服务提供商网络相关的装置,所述联合服务提供商网络在所述网络或所述网络的组件故障的情况下向所述网络提供资源, 其中,所述请求包括与所请求的资源相关的域名和统一资源定位符(URL),以及 其中,所述边缘装置还包括 用于基于所述域名和所述URL为所请求的资源选择所述目标装置的装置。
15.根据权利要求10所述的边缘装置,其中,所述边缘装置包括资源的本地缓存,并且所述边缘装置还包括 用于搜索所述本地缓存中存储的资源的列表的装置,以及 用于当所述列表的搜索指示所述资源存储在所述本地缓存中时选择所述本地缓存作为所述目标装置的装置。
16.根据权利要求15所述的边缘装置,其中,当所述列表的搜索指示所述资源不存储在所述本地缓存中时,所述边缘装置还包括 用于将所述请求提供到服务器装置的装置, 用于从所述服务器装置并基于所述请求接收所述目标装置的位置的装置,以及 用于基于所述位置与所述目标装置连接的装置。
17.根据权利要求10所述的边缘装置,其中,基于以下一个或多个来选择所述目标装置 所述网络的带宽, 与所述网络相关的成本, 所述网络上提供的负载,或 所述目标装置相对于所述客户端装置的物理位置。
18.一种计算装置,包括 用于存储以下一个或多个的装置 本地缓存信息,标识网络装置的本地缓存中存储的资源, 资源信息,标识多个服务器装置的每个中存储的资源,以及 网络信息,标识与所述网络装置相关的网络的拓扑结构、负载和成本; 用于从所述网络装置接收所请求的资源的查询的装置; 用于基于所述本地缓存信息、所述资源信息或所述网络信息中的一个或多个来选择包括所请求的资源的目标装置的装置,其中,所述目标装置包括所述多个服务器装置中的一个或所述本地缓存;以及 用于向所述网络装置提供所选择的目标装置的标识的装置。
19.根据权利要求18所述的计算装置,其中,基于以下一个或多个来选择所述目标装置 所述网络的带宽, 与所述网络相关的成本, 所述网络上提供的负载,或 所述目标装置相对于请求所述资源的客户端装置的物理位置。
20.根据权利要求18所述的计算装置,其中,所选择的目标装置包括与一个或多个联合服务提供商网络相关的装置,所述联合服务提供商网络在所述网络或所述网络的部件故障的情况下向所述网络提供资源, 其中,所述查询包括与所请求的资源相关的域名和统一资源定位符(URL),以及 其中,所述计算装置还包括 用于基于所述域名和所述URL为所请求的资源选择所述目标装置的装置。
全文摘要
本发明涉及为资源请求终止连接和选择目标源装置,该装置从客户端装置接收资源的请求并访问包括一项或多项信息的表。该装置将请求中提供的信息与表中提供的一项或多项信息进行比较,并在请求中提供的信息与表中提供的一项或多项信息的至少一项匹配时在该装置终止请求的连接。当在该装置没有终止连接时,该装置将请求转发到网络,并且当在该装置终止连接时,为资源选择目标装置。
文档编号H04L29/12GK102833361SQ20111045178
公开日2012年12月19日 申请日期2011年12月29日 优先权日2011年6月15日
发明者雅斯帕·科利 申请人:丛林网络公司