网络集成动态资源路由的制作方法

文档序号:7773626阅读:118来源:国知局
专利名称:网络集成动态资源路由的制作方法
技术领域
本发明大体上涉及网络中的数据传输,尤其涉及用于动态资源路由的方法和设备。
背景技术
服务提供商是出售与其相关的网络(例如,互联网、数据网络、电信网络等)所提供的带宽或访问上述网络的实体(例如,企业或组织)。服务提供商可以包括电信公司、数据载体、无线通信提供商、互联网服务提供商、提供高速互联网接入的有线电视运营商等。诸如视频、音频、图像、软件下载的内容使用的快速增长对服务提供商提出更高的带宽需求,该带宽需求对于重大内容和事件具有尖峰。内容可以从诸如安装于服务提供商的网络中的源服务器、镜像服务器、缓存服务器等服务器提供给客户端设备。客户端设备可以使用诸如超文本传输协议(HTTP)、实时消息协议(RTMP)等互联网协议请求访问这些内容。在客户端设备请求访问内容时,该请求必须路由至网络中合适的服务器。路由该请求需考虑数个因素,诸如,提高客户端设备的体验(例如,等待时间、内容传输速度等)、网络和内容传输基础设施的成本及其扩展性等。然而,由于服务提供商网络的复杂性和载荷变动性日益增加,因此对于服务提供商来说,越来越难以将请求路由到合适的服务器。此外,客户端设备的数量和类型,还有内容量也在飞速增长。另外,服务提供商有必要将其服务联合以提供全球性方案。为了解决这些问题,服务提供商目前采用了不同类型的方案,诸如基于域名系统(DNS)的方案、基于边界网关协议(BGP)的方案,以及基于应用级的方案等。每个方案利用手动提供(manual provisioning)在现有网络路由基础设施的顶部提供覆盖。手动提供涉及服务提供商通告服务器的互联网协议(IP)地址。对于较大的内容类型(如视频、下载等),该方案并不能提供任何机会以在单个请求语境内进一步优化路由。在服务提供商有必要联合其服务的情况下,该方案也不起作用。在基于DNS的方案中,客户端设备通常执行DNS查找,将域名解析为IP地址。DNS服务专用于基于诸如地理位置、服务器载荷、内容位置等因素来动态地选择服务器IP地址。然而,基于DNS的方案仅提供以域级粗粒度的路由。在基于BGP的方案中,在多个位置中支持给定的服务器IP地址。例如,每个不同区域可以包括具有相同IP地址的服务器,且服务器可以通告该IP地址。然而,基于BGP的方案仅提供以服务器水平的粗粒度的路由,并且尤其不能处理网络问题(例如,网络阻塞、服务器故障等)。关于基于应用级的方案,服务器能够经由(例如)HTTP协议将客户端设备重新定向至不同的服务器。例如,一些服务提供商以应用级采用在其网络中的内容服务器。可以通过显式地将内容请求路由(例如,经由DNS或BGP)至以应用级实现的内容路由器来执行基于应用级的方案。另一个应用级路由实例包括门户服务器,它基于内容请求源自何处而在门户服务器返回的超文本标记语言(HTML)页面中嵌入不同的统一资源定位器(URL)。然而,由于与内容服务器相关的连接设置和额外路由,因此基于应用级的方案增加了客户端设备的等待时间。此外,基于应用级的方案难于扩展,如果所有请求必须路由到内容服务器,则该内容服务器可能会变成网络的瓶颈。

发明内容
根据一方面,一种由计算设备执行的方法可以包括由计算设备从客户端设备接收对于资源的请求;由计算设备基于请求中提供的信息确定是否在该计算设备处终止针对该请求的连接;如果在该计算设备处未终止连接,计算设备将请求转发至网络;如果在该计算设备处终止连接,计算设备将为资源选择目标设备;计算设备将请求提供至选定的目标设备;计算设备从选定的目标设备接收资源;以及计算设备将资源提供至客户端设备。
根据另一方面,网络设备可以包括用于存储资源的本地缓存的存储器和处理器。该处理器可以接收来自客户端设备的对于资源的请求,并可以基于请求中提供的信息在网络设备处终止对于该请求的连接。该处理器可以确定资源是否存储在本地缓存中,如果资源存储在本地缓存中,则可以选择本地缓存作为资源的目标设备,如果资源未存储在本地缓存中,则可以从存储了资源的多个设备中选择目标设备。该处理器可以将请求提供至选定的目标设备,可以接收来自选定的目标设备的资源,并且可以向客户端设备提供资源。根据又一方面,一个或多个非易失性计算机可读介质可以存储由边缘设备的一个或多个处理器可执行的指令。该介质可以包括一个或多个指令,用于接收来自客户端设备的资源请求;一个或多个指令,用于基于请求中提供的信息在该边缘设备处终止对于该请求的连接;一个或多个指令,用于在该边缘设备处终止连接的情况下,为资源选择目标设备;一个或多个指令,用于将请求提供至选定的目标设备;一个或多个指令,用于从选定的目标设备接收资源;以及一个或多个指令,用于将资源提供至客户端设备。


并入且构成该说明书一部分的附图示出本文描述的一个或多个实施方式,连同这些描述一起解释这些实施方式。在图中图I是在其中可以实现本文描述的系统和/或方法的示例性网络的示图;图2是图I中描述的客户端设备、缓存服务器、源设备、路由中介服务器(routingbrokerserver)、或其他设备的示例性部件的示图;图3是图I中描述的网络设备的示意性部件的示图;图4是能够由图I中示出的网络的示例性部分执行的示例性操作的示图;图5A和图5B是能够由图I中示出的网络的示例性部分执行的另一示例性操作的示图;图6是能够由图I中示出的网络的示例性部分执行的又一示例性操作的示图;图7是能够由图I中示出的网络的示例性部分执行的示例性操作的示图;图8是能够由图I中示出的网络的示例性部分执行的另一示例性操作的示图;图9是图I中示出的网络设备的应用代理的示例性功能部件的示图;图10至图13是根据本文描述的实施方式、用于提供网络集成动态资源路由的示例性处理的流程图。
具体实施例方式参照附图进行下面详细的描述。不同附图中的相同参考标号可以表示相同或类似的元件。本文描述的系统和/或方法通过在核心网络的边缘网络设备中添加应用级智能从而可以将资源路由集成至核心网络(例如,服务提供商网络)的基础设施。应用级智能可以包括应用代理,其终止与所有客户端设备资源请求或其子集相关的给定应用的连接。对每个资源请求,该应用代理可以确定存储了资源的目标服务器,可以连接到确定的服务器,并且可以在客户端设备与确定的服务器之间代理(proxy)资源请求以及返回的资源。在示例性实施方式中,系统和/或方法可以接收来自客户端设备的资源请求,进而基于请求的IP信息确定是否终止针对该请求的连接。如果针对该请求的连接未被终止, 可以将该请求转发至核心网络(诸如,服务提供商网络)用于额外的路由。如果针对该请求的连接被终止,可以为资源确定目标源设备(target source device),进而可以向确定的目标源设备提供请求。可以接收来自目标源设备的资源,并可以将其提供给客户端设备。图I是在其中可以实现本文描述的系统和/或方法的示例性网络100的示图。如图所示,网络100可以包括客户端设备110 ;缓存服务器设备120 (本文称作“缓存服务器120”);源设备(origin device) 130 ;路由中介服务器设备140 (本文称作“路由中介服务器140”);其他设备150 ;网络160 ;以及设置在或附接至网络160的网络设备170。如图I所示,网络设备170可以包括应用代理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可以包括无线电话(radiotelephone),可以将蜂窝无线电话(cellular radiotelephone)与数据处理和数据通信功能结合的个人通信系统(PCS)终端,可以包括无线电话、寻呼机、互联网/内联网访问等的个人数字助理(PDA),例如无线电话(wireless telephone)的无线设备(wirelessdevice),智能电话,工作站电脑,膝上型电脑,个人计算机,或其他类型的计算或通信设备。缓存服务器120可以包括以本文描述的方式收集、处理、搜索和/或提供信息的一个或多个服务器设备、或其他类型的计算或通信设备。在一个示例性实施方式中,缓存服务器120可以充当来自客户端设备110的、寻找来自源设备130资源的请求的中介。本文使用的术语“资源”旨在广泛地理解为包括诸如视频、音频、图像、软件下载等的内容;诸如传送高清晰度和用户生成的内容、消费者和商业新闻以及信息服务、电子邮件系统等的服务;和/或内容与服务的组合。客户端设备110可以经由网络160和/或网络设备170连接至缓存服务器120,并且可以请求从源设备130可得到的一些资源。缓存服务器120可以评价请求(例如,根据过滤规则,诸如通过IP地址或协议对通信量进行过滤)。如果请求有效,则缓存服务器120可以通过连接至源设备130并且代表客户端设备110请求资源,从而提供所请求的资源。缓存服务器120可以满足该请求而不联系源设备130。在这种情况下,缓存服务器120可以缓存(或存储)先前请求的、来自源设备130的特定资源,并且可以经由网络设备170向客户端设备110提供特定资源而不涉及源设备130。源设备130可以包括以本文描述的方式收集、处理、搜索和/或提供信息的一个或多个服务器设备、或其他类型的计算或通信设备。在一个示例性实施方式中,源设备130可以包括客户端设备110经由网络160和/或网络设备170可访问的资源。 在一个实例中,源设备130可以向客户端设备110 (例如,经由网络160和/或网络设备170)提供资源。可替换地,源设备130可以向缓存服务器120提供特定资源用于存储。缓存服务器120可以存储特定资源,使得缓存服务器120可以在客户端设备110请求时向客户端设备110提供特定资源,而不涉及源设备130。路由中介服务器140可以包括以本文描述的方式收集、处理、搜索和/或提供信息的一个或多个服务器设备、或其他类型的计算或通信设备。在一个示例性实施方式中,路由中介服务器140可以接收来自各种源的信息并且可以存储这些信息。例如,路由中介服务器140可以接收来自本地缓存174的信息(例如,有关本地缓存174可用性的信息、标识存储在本地缓存174中资源的信息等);来自网络160的信息(例如,有关网络160和/或网络设备170可用性的信息、网络拓扑和成本等);来自缓存服务器120的信息(例如,有关缓存服务器120可用性的信息、标识存储在缓存服务器120中资源的信息等);来自其它设备150的信息(例如,有关其它设备150可用性的信息、标识存储在其它设备150中资源的信息、应用层流量优化(ALTO)服务(例如,如请求注解(RFC) 5693中阐述的)信息,该信息识别具有除了与网络100相关的服务提供商之外的服务提供商提供的资源的服务器);和/或来自源设备130的信息(例如,有关源设备130可用性的信息、标识在源设备130中存储的资源的信息等)。在一个实施例中,网络设备170可以向路由中介服务器140询问要服务于资源请求(例如,由客户端设备110提供的请求)的目标设备的位置。路由中介服务器140可以接收该询问,可以确定要服务于资源请求的目标设备,并且可以向网络设备170提供诸如目标设备的位置信息(诸如,IP地址)。例如,路由中介服务器140可以接收来自网络设备170的询问,并且可以确定源设备130为目标设备,原因在于源设备130是对于所请求的资源最近的设备。因此,路由中介服务器140可以向网络设备170提供诸如源设备130的位置信息(诸如,IP地址)。其它设备150可以包括按照本文描述的方式收集、处理、搜索、和/或提供信息的一个或多个服务器设备,或其他类型的计算或通信设备。在一个示例性实施方式中,其它设备150可以与联合服务提供商网络相关,该联合服务提供商网络在网络100或其部件故障的情况下向网络100提供资源。其它设备150可以存储ALTO服务信息,识别具有由这种联合服务提供商网络提供的资源的服务器。在示意性实施方式中,其它设备150可以包括在网络100或其部件故障的情况下由客户端设备110经由网络160和/或网络设备170能够访问的资源。
网络160可以包括诸如局域网(LAN)的服务提供商网络;广域网(WAN);城域网(MAN);电话网络(例如,公共交换电话网络(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可以将资源提供给客户端设备110,而不涉及缓存服务器120、源设备130、和/或其它设备150。例如,将结合图3至图9给出网络设备170、应用代理172以及本地缓存174的进一步细节。尽管图I示出了网络100的示例性设备,但是在其他实施方式中,网络100可以包括与图I描绘的设备相比更少的设备、不同的设备、不同布置的设备、或附加设备。图2是可以对应于(图I)客户端设备110、缓存服务器120、源设备130、路由中介服务器140或其他设备150的设备200的示例性部件的示图。在一些情况下,设备200可以对应于(图I)网络设备170。每个客户端设备110、缓存服务器120、源设备130、路由中介服务器140、其他设备150、或网络设备170可以包括一个或多个设备200。如图2所示,设备200可以包括总线210、处理单元220、主存储器230、ROM 240、存储设备250、输入设备260、输出设备270、和/或通信接口 280。总线210可以包括允许在设备200的部件之间进行通信的路径。处理单元220可以包括一个或多个处理器、微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或解释和执行指令的其他类型处理单元。主存储器230可以包括存储由处理单元220执行的指令和信息的RAM或其他类型的动态存储设备。ROM 240可以包括存储由处理单元220使用的静态信息和/或指令的ROM设备或其他类型的静态存储设备。存储设备250可以包括磁和/或光记录介质及其相应的驱动器,或诸如闪存的可移动存储器。
输入设备260可以包括允许操作者向设备200输入信息的机构,诸如键盘、鼠标、开关、按钮、语音识别和/或生物特征机构、触摸屏等。输出设备270可以包括向操作者输出信息的机构,包括显示器、扬声器、发光二极管(LED)等。通信接口 280可以包括使设备200能够与其他设备和/或系统进行通信的类似于收发器的任何装置。例如,通信接口 280可以包括经由网络用于与另一设备或系统进行通信的机构。在一个实施方式中,通信接口280可以包括诸如以太网接口的有线接口,或诸如射频接口的无线接口。如本文所描述的,响应于执行在诸如主存储器230的计算机可读介质中包含的软件指令的处理单元220,设备200可以执行特定操作。计算机可读介质可以定义为非易失性存储设备。存储设备可以包括在单个物理存储设备内或分布在多个物理存储设备上的空间。可以经由通信接口 280将软件指令从另一设备、或诸如存储设备250的另一计算机可读介质读取至主存储器230。包含在主存储器230中的软件指令可以使处理单元220执行本文描述的处理。可替换地,可以使用硬连线电路代替软件指令或与软件指令相结合来实现本文描述的处理。因此,本文描述的实施方式不限于任何特定的硬件电路与软件的组合。尽管图2示出设备200的示例性部件,但是在其他实施方式中,设备200可以包括与图2示出的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,设备200的一个或多个部件可以执行被描述为由设备200的一个或多个其他部件执行的一个或多个其他任务。图3是可以对应于网络设备170 (图I)的设备300的示例性部件的示图。在一些情况下,网络设备170可以包括一个或多个设备300。如图3所示,设备300可以包括输入部件310、交换/路由机制320、输出部件330、以及控制单元340。输入部件310可以是针对物理链路的附接点且可以是用于诸如数据包的输入通信量的入口点。输入部件310可以诸如通过执行数据链路层封装或解封来处理输入通信量。在示例性实施方式中,输入部件310可以发送和/或接收数据包。交换/路由机制320可以将输入部件310与输出部件330互连。可以利用许多不同的技术实现交换/路由机制320。例如,可以经由总线、交叉开关矩阵、和/或利用共享存储器来实现交换/路由机制320。该共享存储器可以用作临时缓冲器从而在来自输入部件310的通信量被最终调度为传送至输出部件330之前存储该通信量。输出部件330可以存储数据包,并且可以针对输出物理链路上的服务来调度数据包。输出部件330可以包括支持优先级和保证(guarantee)的调度算法。输出部件330可以支持数据链路层封装和解封,和/或各种更高层级协议。在示例性实施方式中,输出部件330可以发送数据包和/或接收数据包。控制单元340可以使用路由协议以及用于转发数据包的一个或多个转发表。控制单元340可以与输入部件310、交换/路由机制320、以及输出部件330连接。控制单元340可以计算转发表、执行路由协议和/或运行软件以配置和管理设备300。控制单元340可以确定针对目的地址未在转发表中找到的任何数据包的路由。
在示例性实施方式中,控制单元340可以包括总线350,其中总线可以包括允许在处理器360、存储器370、以及通信接口 380之间进行通信的路径。处理器360可以包括一个或多个处理器、微处理器、ASIC、FPGA、或可以解释和执行指令的其他类型处理单元。存储器370可以包括RAM、R0M设备、磁和/或光记录介质及其相应的驱动器、和/或可以存储由处理器360执行的信息和指令的其他类型的静态和/或动态存储设备。存储器370也可以在指引数据包返回交换/路由机制320、在交换/路由机制320中排队、并且最终被调度为发送至输出部件330之前,将来自输入部件310的用于由处理器360处理的输入通信量(例如,数据包的报头或整个数据包)进行临时存储。通信接口 380可以包括使控制单元340能够与其他设备和/或系统通信的类似于收发器的机构。如本文所描述的,响应于处理器360执行在诸如存储器370的计算机可读介质中包含的软件指令,设备300可以执行特定操作。可以将软件指令经由通信接口 380从另一设备或从诸如数据存储设备的另一计算机可读介质读取至存储器370。包含在存储器370中的软件指令可以使处理器360执行本文描述的处理。可替换地,可以使用硬连线电路代 替软件指令或与软件指令相结合来实现本文描述的处理。因此,本文描述的实施方式并不限于硬件电路与软件的任何特定组合。例如,可以使用路由协议(例如,BGP)经由外部代理来控制设备300的切换/路由操作。尽管图3示出了设备300的示例性部件,但是在其他实施方式中,设备300可以包括与图3描绘的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,设备300的一个或多个部件可以执行描述为通过设备300的一个或多个其他部件执行的一个或多个其他任务。图4是能够由网络100的示例性部分400执行的示例性操作的示图。如所示,示例性网络部分400可以包括客户端设备110、网络设备170和应用代理172。客户端设备110、网络设备170和应用代理172可以包括上面例如结合图I至图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地址、客户端设备110IP地址和/或目的端口来确定是否在网络设备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接收的通信量等生成。例如,如果网络设备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的示例性部件,但是在其他实施方式中,网络部分400可以包括与图4中描绘的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,网络部分400的一个或多个部件可以执行被描述为由网络部分400的一个或多个其他部件执行的一个或多个其他任务。图5A和5B是能够由网络100的示例性部分500执行的另一示例性操作的示图。如图5A和图5B所示,示例性网络部分500可以包括客户端设备110、缓存服务器120、源设备130、路由中介服务器140、其它设备150、网络160和网络设备170。客户端设备110、缓存服务器120、源设备130、路由中介服务器140、其它设备150、网络160和网络设备170可以包括上面例如结合图I至图4中一个或多个所描述的特征。 又如图5A所示,路由中介服务器140可以接收来自网络部分500的一个或多个源的信息。例如,本地缓存174可以将本地缓存信息510提供至路由中介服务器140。本地缓存信息510可以包括关于本地缓存174的可用性的信息、识别存储在本地缓存174中的资源的信息、关于本地缓存174的大小的信息等。在另一实施例中,网络160可以向路由中介服务器140提供网络信息520。网络信息520可以包括关于网络160/或其部件的可用性的信息、与网络160相关的拓扑和成本、网络160的可用带宽、网络160的优选客户端设备等。在又一实施例中,缓存服务器120可以向路由中介服务器140提供缓存信息530。缓存信息530可以包括关于缓存服务器120的可用性的信息、识别存储在缓存服务器120中资源的信息、关于缓存服务器120载荷的信息等。在一个示例性实施方式中,路由中介服务器140能够在不必明确地将新缓存服务器配置到路由决定(正如现有方案所需要)的情况下将新缓存服务器添加到网络100。新缓存服务器可以向路由中介服务器140提供缓存信息(例如,类似于缓存信息530)。在又一实施例中,其它设备150可以向路由中介服务器140提供其它设备信息540。其它设备信息540可以包括关于其它设备150可用性的信息、识别存储在其它设备150中资源的信息、关于与其它设备150相关的服务提供商的信息、识别具有与其它设备150相关的服务提供商所提供资源的服务器的ALTO服务信息等。在再一个实施例中,源设备130可以向路由中介服务器140提供源信息550。源信息550可以包括关于源设备130可用性的信息、识别存储在源设备130中资源的信息、关于源设备130载荷的信息等。路由中介服务器140可接收本地缓存信息510、网络信息520、缓存信息530、其它设备信息540、和/或源信息550,并可以(例如,在图2的主存储器230、R0M 240和/或存储设备250中)存储本地缓存信息510、网络信息520、缓存信息530、其它设备信息540、和/或源信息550。又如图5A所示,客户端设备110可以向网络设备170提供对于资源的请求560,网络设备170可经由应用代理172接收请求560。请求560可以包括IP信息,诸如请求560的目的IP地址、客户端设备110的IP地址(即,请求560的源IP地址)、请求560的目的端口等。在一个实施例中,请求560可以包括HTTP GET请求(例如,请求资源)、域名、和/或统一资源定位器(URL)。正如上面结合图4所描述的,应用代理172可接收请求560,并且可以基于请求560中提供的信息确定是否在网络设备170处终止针对请求560的 连接。如果应用代理172在网络设备170处终止针对请求560的连接,应用代理172可以针对请求560所请求的资源确定目标源设备。应用代理172可以按照多种方式确定目标源设备。例如,如图5B所示,应用代理172可以将询问570提供至路由中介服务器140。询问570可以包括对于存储了请求560所请求的资源的目标源设备的位置。在一个实现方式中,询问570可以包括与请求560相关的信息,诸如请求560所请求的资源、请求560的域名、请求560的URL等。路由中介服务器140可接收询问570,并可基于询问570针对请求560所请求的资源来确定目标源设备。在一个实施例中,路由中介服务器140可基于多个要素来确定目标源设备,诸如网络160的状况(例如,网络160的带宽、网络160载荷),与客户端设备110相关的目标源设备的物理位置(例如,可能在选择离客户端设备110较远的设备之前选择更接近于客户端设备110的设备)等。在确定了目标源设备之后,路由中介服务器140可以向应用代理172提供目标源设备的位置580 (例如,IP地址)。在一个实施例中,包含于请求560中的域名可由特定服务器(例如,源设备130)驻存,而包含于请求560中的URL可标识由另一服务器(例如,缓存服务器120)驻存的资源。在这种情况下,路由中介服务器140可以确定缓存服务器120为目标源设备,原因在于请求560所请求的资源由缓存服务器120驻存。相反,在基于DNS的系统中,由于请求560的域名,因此不必将请求560首先路由至源设备130。在一个示例性实施方式中,在生成询问570之前,应用代理172可以确定请求的资源是否存储在本地缓存174中。在一个实施例中,应用程序172可保持提供了本地缓存174中所存储的资源列表的表格(或其它数据结构)。应用代理172可搜寻该表格从而确定请求的资源是否存储于本地缓存174中。如果应用代理172确定请求的资源存储于本地缓存174中,应用代理172可从本地缓存174中检索请求的资源。例如,应用代理172可以将请求560提供至本地缓存174,本地缓存174可检索请求560所请求的资源590。本地缓存174可向应用代理172提供资源590,进而应用代理172可以将资源590转发至客户端设备110。如果应用代理172确定资源590未存储在本地缓存174中,应用代理172可向路由中介服务器140提供询问570。应用代理172可基于询问570接收来自路由中介服务器140的目标源设备(例如,缓存服务器120、源设备130、和/或其它设备150)的位置580。应用代理172可利用位置580从而与目标源设备连接进而从目标源设备检索请求的资源。又如图5B所示,在一个实施例中,如果位置580标识缓存服务器120的IP地址,应用代理172可向缓存服务器120提供请求560 (例如,其可能包括客户端设备110的IP地址),并且缓存服务器120可检索请求560所请求的资源590。缓存服务器120可向应用代理172提供资源590,应用代理172可向客户端设备110转发资源590 (例如,其可能包括缓存服务器120的IP地址)。在另一实施例中,如果位置580标识源设备130的IP地址,应用代理172可向源设备130提供请求560 (例如,其可能包括客户端设备110的IP地址),并且源设备130可以检索请求560所请求的资源590。源设备130可向应用代理172提供资源590,应用代理172可向客户端设备110转发资源590 (例如,其可能包括源设备130的 IP地址)。在又一实施例中,如果位置580标识其它设备150的IP地址,应用代理172可向其它设备150提供请求560(例如,其可能包括客户端设备110的IP地址),并且其它设备150可检索请求560所请求的资源590。其它设备150可向应用代理172提供资源590,应用代理172可向客户端设备110转发资源590 (例如,其可能包括其它设备150的IP地址)。尽管图5A和图5B示出网络部分500的示例性部件,但是在其他实施方式中,网络部分可以包括与图5A和图5B示出的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,网络部分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、和/或源设备彼此不可见,这可以提高客户端设备110和/或目标源设备的安全性。
又如图6所示,客户端设备110可向网络设备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,并可向客户端设备110提供资源630的代理640。代理资源640可以包括资源630的特征,但可通过冒用目标源设备的IP地址而透明地提供给客户端设备110。经由代理资源640,目标源设备可能对客户端设备110是“透明”的,这是因为网络设备170可使用其自身的IP地址将信息发送至客户端设备110。这能够使目标源设备安全地与客户端设备110通信(即,在客户端设备110未获得对于目标源设备的IP地址访问的情况下)。尽管图6示出网络部分600的示例性部件,但是在其他实施方式中,网络部分600可以包括与图6示出的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,网络部分600的一个或多个部件可以执行被描述为由网络部分600的一个或多个其他部件执行的一个或多个其他任务。图7是能够由网络100的示例性部分700执行的示例性操作的示图。如所示,示例性网络部分700可以包括客户端设备110、缓存服务器120、源设备130、其它设备150、网络设备170、应用程序代理172以及本地缓存174。客户端设备110、缓存服务器120、源设备130、其它设备150、网络设备170、应用代理172以及本地缓存174可以包括上面例如结合图I至图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可以将多个请求710转发至网络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的示例性部件,但是在其他实施方式中,网络部分700可以包括与图7示出的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,网络部分700的一个或多个部件可以执行被描述为由网络部分700的一个或多个其他部件执行的一个或多个其他任务。图8是能够由网络100的示例性部分800执行的又一示例性操作的示图。如所示,示例性网络部分800可以包括客户端设备110、缓存服务器120、源设备130、网络设备170以及应用代理172。客户端设备110、缓存服务器120、源设备130、网络设备170以及应用代理172可以包括上面例如结合图I至图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通信,并且可以通过将请求810(例如,HTTP字节范围请求)提供至源设备130或请求资源的其它目标源设备来切换目标源设备。基于请求810,源设备130可以检索请求810所请求的资源的剩余部分840。源设备130可以向应用代理172提供剩余资源部分840。应用代理172可以向客户端设备110提供资源部分820和剩余资源部分840。在 一个实施方式中,应用代理172可以在向客户端设备110提供剩余资源部分840之前向该客户端设备提供资源部分820。在又一实施方式中,应用代理172可以等待接收资源部分820/840,并且可以同时向客户端设备110传输资源部分820/840。即使在所请求资源的一个或多个目标源设备变得不可用(例如,由于网络状况或目标源设备状况改变)时,这种布置也可以确保将所请求的资源完整地提供给客户端设备110。尽管图8示出网络部分800的示例性部件,但是在其他实施方式中,网络部分800可以包括与图8示出的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,网络部分800的一个或多个部件可以执行被描述为由网络部分800的一个或多个其他部件执行的一个或多个其他任务。图9是网络设备170的应用代理172的示例性功能部件的示图。如所示,应用代理172可以包括TCP捻接器(TCP splicer)部件900、路由判定部件910、以及应用逻辑部件920。在一个示例性实施方式中,结合图9描述的一个或多个功能部件可以由设备200(图2)或设备300 (图3)的一个或多个示意性部件来实施。TCP捻接器部件900可以负责有效捻接客户端设备110与目标源设备连接(例如,TCP连接)之间所提供的信息。在一个实施例中,TCP捻接器部件900可以通过改变与TCP序列号相关的数据包中的报头长达特定时间段(例如,足够长的时间以向目标源设备提供资源请求以及接收来自目标源设备的资源)来捻接信息(例如,数据包)。在一个实施方式中,为了将应用代理172扩展到网络设备170的线路速率(例如,每秒千兆比特),TCP捻接器部件900可以设置于网络设备170的转发平面中。在另一实施方式中,TCP捻接器部件900可以是用于缓存丢失/旁路通路的加速器。应用代理172可以(例如,经由TCP捻接器部件900)从客户端设备110接收对于资源的请求930,并且可以基于请求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的连接,TCP捻接器部件900可以将请求930转发至网络160用于额外的路由,如参考号950所指示的。路由判定部件910可以确定将对于资源的请求或对于资源的部分请求路由至何处。在一个示例性实施方式中,路由判定部件910可以按照上面结合图5A和图5B所描述的方式来确定将对于资源的请求路由到何处(例如,路由到哪个目标源设备)。如图9所示,路由判定部件910可以接收来自TCP捻接器部件900的指示940,并且可以为请求930所请求的资源确定目标源设备。路由判定部件910可以将所确定的目标源设备的位置960提供至应用逻辑部件920。应用逻辑部件920可以处理由于网络条件改变或目标源设备故障等导致的目标源设备切换、资源请求等。如图9所示,应用逻辑部件920可以从路由判定部件910接收所确定的目标源设备的位置960,并且可以将请求930路由到所确定的目标源设备的位置960,如参考标号970所示。应用逻辑部件920可以从目标源设备接收资源980,并且可以将 资源980转发至客户端设备110。尽管图9示出应用代理172的示例性功能部件,但是在其他实施方式中,应用代理172可以包括与图9示出的功能部件相比更少的功能部件、不同的功能部件、不同布置的功能部件、或附加功能部件。可替换地,或附加地,应用代理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中提供的信息与表格中提供信息的一项或多项匹配,应用代理172就可以确定终止针对请求410的连接。又如图10所示,在连接未终止(块1020-未终止)时,处理1000可以包括将请求转发至网络(块1030)。例如,在上面结合图4描述的实施方式中,如果应用代理172基于请求410中提供的信息判定不终止针对请求410的连接,应用代理172可以向客户端设备110提供表明连接未终止的指示430,并且可以将请求410转发至网络160用于额外的路由,如参考标号440表示的。
返回至图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可以将请求560提供至缓存服务器120,并且缓存服务器120可检索请求560所请求的资源590。又如图10所示,处理1000可以包括接收来自目标源设备的资源(块1060),并且将资源提供至客户端设备(块1070)。例如,在上面结合图5B描述的实施方式中,缓存服务器120可以将资源590提供至应用代理172,应用代理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中提供的信息与表格中提供的一项或多项信息匹配时,应用代理172可以决定终止针对请求410的连接。
处理块1040可以包括图12中所描绘的处理块。如图12所示,处理块1040可以包括确定由该请求所请求的资源是否存储在本地缓存中(块1200)。如果资源存储在本地缓存中(块1200-在本地缓存中),处理块1040可以包括从本地缓存检索资源(块1210)。例如,在上面结合图5B描述的实施方式中,应用代理172可以确定所请求的资源是否存储在本地缓存174中。在一个实例中,应用程序172可保持提供了本地缓存174中存储的资源清单的表格(或其它数据结构)。应用代理172可搜索该表格从而确定所请求的资源是否存储于本地缓存174中。如果应用代理172确定所请求的资源存储于本地缓存174中,应用代理172可从本地缓存174中检索请求的资源。例如,应用代理172可以将请求560提供至本地缓存174,本地缓存174可检索请求560所请求的资源590。本地缓存174可以将资源590提供至应用代理172,应用代理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等)。本文使用的术语“数据包”旨在广泛地理解为包括帧、数据报文、数据包(packet)、或信元(cell);帧的片段、数据报文的片段、数据包的片段、或信元的片段;或其他类型、配置、或封装的数据。本文使用的术语“边缘设备”旨在广泛地理解为包括向网络(诸如,网络160)提供进入点或出口点的任何设备。在一个示例性实施方式中,网络设备170可以对应于边缘设备。
前述实施方式提供了图解和描述,但是并未意在穷尽或将本发明限制为所公开的精确形式。修改和变化根据上面的教导是可能的,或可以从本发明的实践中获得。例如,虽然关于图10至图13已描述了一系列块,但是在其他实施方式中可以更改块的顺序。此外,可以并行执行非从属块。如上所述,明显的是,实例方面可以在图示实施例中不同形式的软件、固件和硬件中得以实施。用于实施这些方面的实际软件代码或专用控制硬件不应解释为限制。因此,说明这些方面的操作行为并未参照具体的软件代码-应理解为可基于此处的说明设计软件和控制软件实施这些方面。即使具体的组合在权利要求书中列举和/或在说明书中公开,这些组合并不旨在限制公开的实施例。事实上,这些特征很多可按照权利要求书中未具体列举和/或说明书中未公开的方式进行组合。虽然以下每个独立的权利要求可能仅直接基于另外一个权利要求,但公开的实施方式包括每个独立的权利要求和权利集中其它单个权利要求的组合。

对公开实施例而言,本申请中使用的任何元件、行为或说明均不应解释为关键或必需的,除非对此作出了清楚地说明。也如此处所使用的,字母“a”意指包括一项或多项。如果仅表示一项时,使用“ 一个”或类似表述。此外,短语“基于”意指“至少部分基于”,除非做了清楚地陈述。
权利要求
1.一种由计算设备执行的方法,所述方法包括由所述计算设备从客户端设备接收对于资源的请求;由所述计算设备基于所述请求中提供的信息来确定是否在所述计算设备处终止针对所述请求的连接;其中,在所述连接未被终止时,所述方法包括由所述计算设备将所述请求转发至网络,以及其中,在所述连接被终止时,所述方法包括由所述计算设备为所述资源选择目标设备;由所述计算设备向选定的所述目标设备提供所述请求;由所述计算设备从选定的所述目标设备接收所述资源;以及由所述计算设备将所述资源提供至所述客户端设备。
2.根据权利要求I所述的方法,其中,确定是否終止所述连接包括从所述请求中提取目的互联网协议(IP)地址;从所述请求中提取所述客户端设备的IP地址;提取所述请求的目的端ロ ;以及基于所述目的IP地址、所述客户端设备的所述IP地址、或所述目的端ロ中的至少ー个确定是否在所述计算设备处終止针对所述请求的所述连接。
3.根据权利要求I所述的方法,其中,为所述资源选择所述目标设备包括确定所述资源是否存储在设置于所述计算设备中的本地缓存中;以及在所述资源存储在所述本地缓存中时,选择所述本地缓存作为所述目标设备。
4.根据权利要求3所述的方法,其中,在所述资源未存储在所述本地缓存中吋,为所述资源选择所述目标设备进ー步包括向路由中介服务器提供针对所述资源的询问;从所述路由中介服务器并基于所述询问接收所述目标设备的标识;以及基于所述标识从所述目标设备检索所述资源。
5.根据权利要求I所述的方法,其中,向选定的所述目标设备提供所述请求包括向选定的所述目标设备提供所述请求的代理。
6.根据权利要求5所述的方法,其中,所述请求的所述代理包括所述请求和所述计算设备的互联网协议(IP)地址。
7.根据权利要求I所述的方法,其中,向所述客户端设备提供所述资源包括向所述客户端设备提供所述资源的代理。
8.根据权利要求7所述的方法,其中,所述资源的所述代理包括所述资源和所述计算设备的互联网协议(IP)地址。
9.根据权利要求I所述的方法,其中,所述资源包括以下各项中的ー个或多个音频数据、视频数据、文本、或服务。
10.根据权利要求I所述的方法,其中,确定是否在所述计算设备处終止针对所述请求的连接包括基于所述信息确定从所述客户端设备中接收的请求的数量是否超过请求的阈值数量。
11.根据权利要求I所述的方法,其中,确定是否在所述计算设备处終止针对所述请求的连接包括基于所述信息识别与所述请求相关的网络设备;以及确定从识别的所述网络设备检索的数量或资源是否超过阈值。
12.—种网络设备,包括存储器,用于存储资源的本地缓存;以及处理器,被配置为从客户端设备接收对于资源的请求,基于所述请求中提供的信息来确定是否在所述网络设备处終止针对所述请求的连接;其中,在所述连接被终止时,所述处理器被配置为确定所述资源是否存储于所述本地缓存,在所述资源存储于所述本地缓存时,选择所述本地缓存作为针对所述资源的目标设备,在所述资源未存储于所述本地缓存时,从存储资源的多个设备中选择所述目标设备,向选定的所述目标设备提供所述请求,从选定的所述目标设备接收所述资源,以及向所述客户端设备提供所述资源。
13.根据权利要求12所述的网络设备,其中,在确定是否終止所述连接时,所述处理器被进ー步配置为从所述请求中提取目的互联网协议(IP)地址,从所述请求中提取所述客户端设备的IP地址,提取所述请求的目的端ロ,以及基于所述目的IP地址、所述客户端设备的所述IP地址、或所述目的端ロ中的至少ー个确定是否在所述网络设备处終止针对所述请求的所述连接。
14.根据权利要求13所述的网络设备,其中,在所述连接未被终止时,所述处理器被配置为将所述请求转发至网络。
15.根据权利要求12所述的网络设备,其中,在所述资源未存储于所述本地缓存时,所述处理器被进ー步配置为向路由中介服务器提供针对请求的所述资源的询问,从所述路由中介服务器并基于所述询问接收所述目标设备的标识,以及基于所述标识与所述目标设备连接。
16.根据权利要求12所述的网络设备,其中,在向选定的所述目标设备提供所述请求时,所述处理器被进ー步配置为将所述请求与所述网络设备的互联网协议(IP)地址关联,从而创建修改的请求,以及将所述修改的请求提供至选定的所述目标设备。
17.根据权利要求12所述的网络设备,其中,在向所述客户端设备提供所述资源时,所述处理器被进ー步配置为将所述资源与所述网络设备的互联网协议(IP)地址关联,从而创建修改的资源,以及将所述修改的资源提供给所述客户端设备。
18.根据权利要求12所述的网络设备,其中,所述资源包括以下各项中的ー个或多个音频数据、视频数据、文本、或服务。
19.根据权利要求12所述的网络设备,其中,在确定是否終止所述连接时,所述处理器被进ー步配置为确定从所述客户端设备接收的请求的数量是否超过请求的阈值数量。
20.根据权利要求12所述的网络设备,其中,在确定是否終止所述连接时,所述处理器被进ー步配置为确定从与所述请求相关的网络设备中检索的数量或资源是否超过阈值。
全文摘要
本发明公开了一种网络集成动态资源路由。一种设备,接收来自客户端设备的、对于资源的请求,并基于请求中提供的信息确定是否在该设备处终止针对请求的连接。如果在设备处未终止连接,该设备将请求转发至网络,如果在设备处终止连接,该设备为资源选择目标设备。该设备还向选定的目标设备提供请求,接收来自选定目标设备的资源,以及向客户端设备提供资源。
文档编号H04L29/12GK102833306SQ20111041246
公开日2012年12月19日 申请日期2011年12月12日 优先权日2011年6月15日
发明者雅斯帕·科利 申请人:丛林网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1