CN102685179A - 模块化透明代理缓存 - Google Patents
模块化透明代理缓存 Download PDFInfo
- Publication number
- CN102685179A CN102685179A CN2011102763047A CN201110276304A CN102685179A CN 102685179 A CN102685179 A CN 102685179A CN 2011102763047 A CN2011102763047 A CN 2011102763047A CN 201110276304 A CN201110276304 A CN 201110276304A CN 102685179 A CN102685179 A CN 102685179A
- Authority
- CN
- China
- Prior art keywords
- resource
- caching server
- request
- client device
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种模块化透明代理缓存。一种设备,其从客户端设备接收对于从源设备可获得的资源的请求,并且确定资源是否在缓存服务器中被缓存或没有在缓存服务器中被缓存。该设备不管资源是否在缓存服务器中被缓存而向缓存服务器转发请求,并且当资源没有在缓存服务器中被缓存时基于请求从缓存服务器接收重定向命令。该设备向客户端设备转发接收的重定向命令,其中重定向命令指示客户端设备从源设备获得资源。在资源在缓存服务器中被缓存时,该设备基于请求从缓存服务器接收资源,并且向客户端设备转发接收到的资源。
Description
技术领域
本发明大体上涉及网络中的数据传输,尤其涉及用于代理缓存的方法和系统。
背景技术
服务提供商是出售与其相关的网络(例如,互联网、数据网络、电信网络等)所提供的带宽或访问上述网络的实体(例如,企业或组织)。服务提供商可以包括电信公司、数据载体、无线通信提供商、互联网服务提供商、提供高速互联网接入的有线电视运营商等。诸如视频、音频、图像、软件下载的内容使用的快速增长对服务提供商提供更高的带宽需求,该带宽需求对于重大内容和事件具有尖峰。
为了解决这种更高的带宽需求,服务提供商在他们的网络中部署诸如缓存服务器的透明超文本传输协议(HTTP)代理缓存设备。该代理缓存设备(这里也称作“代理缓存”)可以缓存流行的内容,这使服务提供商能够将网络应用最优化,并且节省回程带宽成本。通常在层7处实现代理缓存,其中,层7是开放系统互连(ISO)模型的应用层。代理缓存可以与网络设备(例如,路由器)相关联,该网络设备将请求内容的客户端设备和存储所请求内容的源设备互连。因为代理缓存利用源设备的地址(例如,互联网协议(IP)地址)向客户端设备发送信息(例如,数据包)且利用客户端设备的IP地址向源设备发送信息,所以代理缓存对于客户端设备和源设备来说是“透明的”。这种布置确保代理缓存对于客户端设备或源设备来说均是不可见的。
使交换通信量(traffic)的客户端设备与源设备互连的网络设备可以利用过滤器或基于策略的路由(PBR),以从该网络设备向代理缓存发送诸如对内容的请求的通信量子集。在这种布置中,代理缓存将终止与客户端设备的连接(例如,传输控制协议(TCP)连接)。如果请求的内容存储在代理缓存中,则代理缓存利用源设备的IP地址向客户端设备提供该内容。如果所请求的内容没有存储在代理缓存中,则代理缓存利用客户端设备的IP地址连接至源设备,并且请求来自源设备的内容。代理缓存利用源设备的IP地址向客户端设备提供源设备所返回的内容,并且可以缓存该内容用于以后使用。
然而,以这种方式部署的代理缓存经历了与非对称路由以及数据包处理开销相关的问题。当数据包在一条路径中从客户端设备遍历至源设备而响应数据包在不同的路径中从源设备遍历至客户端设备时,在许多服务提供商网络中发生非对称路由。在某些情况下,响应数据包可能绕开代理缓存而直接去往客户端设备。由于该响应数据包不与任何连接状态匹配,所以客户端设备将丢弃该响应数据包,并且将导致代理缓存超时。
在代理缓存的部署中,由于客户端设备访问各种各样的内容且这些内容的相当大的部分不可缓存(例如,动态数据),所以缓存命中率(例如,代理缓存器存储客户端设备所请求的内容的概率)通常较低(例如,小于20%)。尽管缓存命中率很低,但是所有客户端设备请求流过代理缓存,并且不必要地增加了代理缓存中的数据包处理开销。
发明内容
根据一个方面,可以通过计算设备执行一种方法。该方法可以包括:通过计算设备从客户端设备接收对于从源设备可获得的资源的请求;基于存储在与该计算设备相关联的存储器中的信息确定资源是否可能在缓存服务器中被缓存或可能没有在缓存服务器中被缓存;当资源可能在缓存服务器中被缓存时,通过计算设备向缓存服务器转发该请求,其中缓存服务器基于请求检索被缓存的资源,并且向客户端设备转发被缓存的资源;以及当资源可能没有在缓存服务器中被缓存时,通过计算设备向缓存服务器转发请求,其中缓存服务器基于请求向客户端设备转发重定向命令,并且其中客户端设备基于重定向命令从源设备获得资源。
根据另一方面,一种计算设备,可以包括:存储器以及处理器,其中该存储器存储关于存储在缓存服务器中的资源的信息。处理器可以从客户端设备接收对于从源设备可获得的资源的请求,并且可以基于存储在存储器中的信息确定资源是否可能在缓存服务器中被缓存或可能没有在缓存服务器中被缓存。当资源可能在缓存服务器中被缓存时,处理器可以向缓存服务器转发请求,其中缓存服务器基于请求检索被缓存的资源,并且向客户端设备转发被缓存的资源。当资源可能没有在缓存服务器中被缓存时,处理器可以向缓存服务器转发请求,其中缓存服务器基于请求向客户端设备转发重定向命令,并且其中客户端设备基于重定向命令从源设备获得资源。
根据又一方面,一种可以通过缓存服务器设备执行的方法。该方法可以包括:通过缓存服务器设备从请求监视器设备接收对于与包括具有可缓存资源的源设备的地址的监视列表的条目相匹配的资源的请求;通过缓存服务器设备添加所请求的资源作为候选资源从而进行存储;通过缓存服务器设备从一个或多个源设备检索候选资源;以及通过缓存服务器设备存储检索到的候选资源,其中可以直接通过缓存服务器设备而非通过一个或多个源设备来提供检索到的候选资源。
根据再一方面,一个或多个非易失性计算机可读介质可以存储被缓存服务器设备的一个或多个处理器执行的指令。该介质可以包括:一条或多条指令,用于从请求监视器设备接收对于与包括具有可缓存资源的源设备的地址的监视列表的条目相比配的资源的请求;一条或多条指令,用于添加所请求的资源作为候选资源以存储;一条或多条指令,用于从一个或多个源设备检索候选资源;以及一条或多条指令,用于存储检索到的候选资源,其中可以直接通过缓存服务器设备而非通过一个或多个源设备来提供检索到的候选资源。
附图说明
并入且构成该说明书一部分的附图示出本文描述的一个或多个实施方式,连同这些描述一起解释这些实施方式。在图中:
图1是在其中可以实现本文描述的系统和/或方法的示例性网络的示图;
图2是图1中描述的客户端设备、缓存服务器、或源设备的示例性部件的示图;
图3是图1中描述的请求监视器、响应监视器、或网络设备的示例性部件的示图;
图4A和图4B是能够通过图1中示出的网络的示例性部分执行的示例性操作的示图;
图5是图1中描绘的请求监视器的示例性功能部件的示图;
图6是由图5中描绘的缓存命中/未命中分离器保持的示例性信息的示图;
图7是图1中描绘的响应监视器的示例性功能部件的示图;
图8是图1中描绘的缓存服务器的示例性功能部件的示图;
图9和图10是根据本文描述的实施方式用于向代理缓存方案提供请求监视功能的示例性处理的流程图;
图11是根据本文描述的实施方式用于向代理缓存方案提供响应监视功能的示例性处理的流程图;
图12A和图12B描绘了根据本文描述的实施方式用于提供模块化透明代理缓存的示例性处理的流程图;
图13是能够由图1中示出的网络的另一示例性部分执行的示例性操作的示图;
图14是能够由图1中示出的网络的又一示例性部分执行的示例性操作的示图;以及
图15是根据本文描述的实施方式用于对代理缓存方案中的内容流量进行优化的示例性处理的流程图。
具体实施方式
参照附图进行下面详细的描述。不同附图中的相同参考标号可以表示相同或类似的元件。
本文描述的系统和/或方法可以提供将缓存命中与缓存未命中进行分离的模块化透明代理缓存方案,其中缓存命中可以指代所请求的资源存储在代理缓存(诸如缓存服务器)的情况,而缓存未命中可以指代所请求的资源没有存储在缓存服务器中的情况。该系统和/或方法可以利用存储资源的源设备的IP地址,使缓存命中通信量能够由缓存服务器提供,并且可以使缓存未命中通信量在客户端设备(例如,请求资源)与源设备之间流动而没有任何层7拦截。缓存服务器可以利用一组经配置的、与源设备相关的IP地址来异步地检索以及存储诸如内容、服务等资源。在一个实例中,当缓存未命中发生时,该系统和/或方法可以使重定向命令被提供回请求资源的客户端设备。响应重定向命令,客户端设备可以生成会被提供给源设备的新的资源请求而没有缓存服务器的干预。
在示例性实施方式中,该系统和/或方法可以从客户端设备接收对于从源设备可得到的资源的请求,并且可以确定所请求的资源是否可能在缓存服务器中被缓存(例如,缓存命中)或可能没有被缓存(例如,缓存未命中)。当所请求的资源可能在缓存服务器中被缓存时,该系统和/或方法可以向缓存服务器转发请求。缓存服务器可以基于请求检索被缓存的资源,并且可以向客户端设备转发被缓存的资源。当所请求的资源可能没有在缓存服务器中被缓存时,该系统和/或方法可以向缓存服务器转发请求,而缓存服务器可以基于请求向客户端设备转发重定向命令。重定向命令可以使客户端设备从源设备获得资源。
在另一示例性实施方式中,该系统和/或方法可以从客户端设备接收对于资源的请求,并且可以确定所请求的资源是否在缓存服务器中被缓存(例如,缓存命中)或没有被缓存(例如,缓存未命中)。如果发生缓存命中,则该系统和/或方法可以提供用于指示客户端设备从缓存服务器请求资源的命令,并且可以基于该命令从客户端设备接收对于资源的新请求。该系统和/或方法可以基于新请求使客户端设备能够从缓存服务器接收所请求的资源。如果发生缓存未命中,则该系统和/或方法可以创建防火墙过滤器,并且可以提供用于指示客户端设备从源设备请求资源的命令。该系统和/或方法可以基于命令经由防火墙过滤器从客户端设备接收对于资源的新请求,并且可以基于新请求使客户端设备能够经由防火墙过滤器从源设备接收所请求的资源。该系统和/或方法可以在客户端设备接收了所请求的资源后移除防火墙过滤器。
图1是在其中可以实现本文描述的系统和/或方法的示例性网络100的示图。如图所示,网络100可以包括客户端设备110;缓存服务器设备120(本文称作“缓存服务器120”);源设备130;请求监视器设备140(本文称作“请求监视器140”);响应监视器设备150(本文称作“响应监视器150”);网络160;以及设置在或附接至网络160的网络设备170。网络100的设备可以经由有线和/或无线连接或链路互连。为简单起见,已经在图1中示出单个客户端设备110、缓存服务器120、源设备130、请求监视器140、响应监视器150、网络160、以及网络设备170。实际上,可以存在更多的客户端设备110、缓存服务器120、源设备130、请求监视器140、响应监视器150、网络160和/或网络设备170。同样地,在某些情况下,网络100的一个或多个设备可以执行被描述为由网络100的另一个或多个设备执行的一个或多个任务。
客户端设备110可以包括能够经由网络160和/或网络设备170访问缓存服务器120和/或源设备130的任何设备。例如,客户端设备110可以包括:无线电话(radiotelephone),可以将蜂窝无线电话(cellularradiotelephone)与数据处理和数据通信功能结合的个人通信系统(PCS)终端,可以包括无线电话、寻呼机、互联网/内联网访问等的个人数字助理(PDA),例如无线电话(wireless telephone)的无线设备(wireless device),智能电话,膝上型电脑,个人计算机,或其他类型的计算或通信设备。
缓存服务器120可以包括以本文描述的方式收集、处理、搜索和/或提供信息的一个或多个服务器设备、或其他类型的计算或通信设备。在一个示例性实施方式中,缓存服务器120可以充当来自客户端设备110的、寻找来自源设备130资源的请求的中介。本文使用的术语“资源”旨在广泛地理解为包括:诸如视频、音频、图像、软件下载等的内容;诸如传送高清晰度和用户生成的内容、消费者和商业新闻以及信息服务、电子邮件系统等的服务;和/或内容与服务的组合。客户端设备110可以连接至缓存服务器120,并且可以请求从源设备130可得到的一些资源。缓存服务器120可以评价请求(例如,根据过滤规则,诸如通过IP地址或协议对通信量进行过滤)。如果请求有效,则缓存服务器120可以通过连接至源设备130并且代表客户端设备110请求资源从而提供所请求的资源。缓存服务器120可以改变来自客户端设备110的请求和/或可以改变来自源设备130的响应。缓存服务器120可以满足该请求而不联系源设备130。在这种情况下,缓存服务器120可以缓存(或存储)先前请求的、来自源设备130的特定资源,并且可以向客户端设备110提供特定资源而不涉及源设备130。
源设备130可以包括以本文描述的方式收集、处理、搜索和/或提供信息的一个或多个服务器设备、或其他类型的计算或通信设备。在一个示例性实施方式中,源设备130可以包括客户端设备110经由网络160和/或网络设备170可访问的资源。在一个实例中,源设备130可以向客户端设备110(例如,经由网络160和/或网络设备170)提供资源。可替换地,源设备130可以向缓存服务器120提供特定资源用于存储。缓存服务器120可以存储特定资源,使得缓存服务器120可以在客户端设备110请求时向客户端设备110提供特定资源,而不涉及源设备130。
请求监视器140可以包括以本文描述的方式收集、处理、搜索和/或提供信息的一个或多个服务器设备、或其他类型的计算或通信设备。在一个示例性实施方式中,请求监视器140可以在TCP/IP层级分离缓存命中通信量(诸如对于存储在缓存服务器120中的资源的请求)和缓存未命中通信量(诸如对于没有存储在缓存服务器120中的资源的请求)。请求监视器140可以基于存储在存储器中的信息执行这种分离,其中利用所观测的通信量流量(例如,经由网络160和/或网络设备170提供的通信量的流量)和控制协议来动态更新该信息。
在一个示例性实施方式中,请求监视器140可以从客户端设备110接收对于从源设备130可得到的资源的请求,并且可以确定所请求的资源是否可能在缓存服务器120中被缓存(例如,缓存命中)或可能没有被缓存(例如,缓存未命中)。如果所请求的资源可能在缓存服务器120中被缓存,则请求监视器140可以将该请求转发至缓存服务器120。缓存服务器120可以基于请求检索经缓存的资源,并且可以向客户端设备110转发经缓存的资源。如果所请求的资源可能没有在缓存服务器120中被缓存,则请求监视器140可以向缓存服务器120转发请求,并且缓存服务器120可以基于请求向客户端设备110转发重定向命令。重定向命令可以使客户端设备110从源设备130获得资源。
响应监视器150可以包括以本文描述的方式收集、处理、搜索和/或提供信息的一个或多个服务器设备、或其他类型的计算或通信设备。在一个示例性实施方式中,响应监视器150可以监视从源设备(例如,源设备130)向客户端设备(例如,客户端设备110)提供的通信量(例如,响应流),并且可以基于诸如对象大小、缓存期满时间、可缓存的总带宽等一组可配置的参数来确定通信量是否包括可以存储在缓存服务器120中的资源。响应监视器150可以向请求监视器140提供具有可缓存资源的源设备的地址(例如,IP地址)。响应监视器150可以基于所接收的通信量生成报告。例如,响应监视器150可以生成描述由缓存服务器120提供的潜在带宽储蓄(bandwidth savings)的报告、基于诸如源设备IP地址、多用途互联网邮件扩展(MIME)类型、MIME大小等的各种参数描述通信量分布的报告、和/或其他类似的报告。
网络160可以包括:诸如局域网(LAN)的服务提供商网络;广域网(WAN);城域网(MAN);电话网络(例如,公共交换电话网络(PSTN)或蜂窝网络);互联网;或网络的组合。
网络设备170可以包括:诸如网关、路由器、交换机、防火墙、网络接口卡(NIC)、集线器、网桥、代理服务器、光分插复用器(OADM)的通信量传送设备,或处理和/或传送通信量(例如,数据包)的其他类型的设备。在一个实例中,网络设备170可以使客户端设备110、缓存服务器120、源设备130、请求监视器140、和/或响应监视器150能够彼此通信。在另一实例中,网络设备170可以使客户端设备110请求和接收来自缓存服务器120和/或源设备130的资源。
尽管图1示出了网络100的示例性设备,但是在其他实施方式中,网络100可以包括与图1描绘的设备相比更少的设备、不同的设备、不同布置的设备、或附加设备。
图2是可以对应于(图1)客户端设备110、缓存服务器120或源设备130的设备200的示例性部件的示图。在一些情况下,设备200可以对应于(图1)请求监视器140和/或响应监视器150。在其他情况下,客户端设备110、缓存服务器120、源设备130、请求监视器140或响应监视器150可以包括一个或多个设备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是可以对应于(图1)请求监视器140、响应监视器150、或网络设备170的设备300的示例性部件的示图。在一些情况下,请求监视器140、响应监视器150、或网络设备170可以包括一个或多个设备300。如图3所示,设备300可以包括输入端口310、切换机构320、输出端口330、以及控制单元340。
输入端口310可以是针对物理链路的附接点且可以是用于诸如数据包的输入通信量的入口点。输入端口310可以执行数据链路层封装和解封。在示例性实施方式中,输入端口310可以发送和/或接收数据包。
切换机构320可以将输入端口310与输出端口330互连。可以利用许多不同的技术实现切换机构320。例如,可以经由总线、交叉开关矩阵、和/或利用可以用作临时缓冲器以在来自输入端口310的通信量被最终调度为传送至输出端口330之前存储该通信量的共享存储器,实现切换机构320。
输出端口330可以存储数据包,并且可以调度针对输出物理链路上的服务的数据包。输出端口330可以包括支持优先级和保证(guarantee)的调度算法。输出端口330可以支持数据链路层封装和解封,和/或各种更高层级协议。在示例性实施方式中,输出端口330可以发送数据包和/或接收数据包。
控制单元340可以使用路由协议和用于转发数据包的一个或多个转发表。控制单元340可以与输入端口310、切换机构320、以及输出端口330连接。控制单元340可以计算转发表、实施路由协议和/或运行软件以配置和管理设备300。控制单元340可以处理目的地址未在转发表中找到的任何数据包。
在示例性实施方式中,控制单元340可以包括总线350,其中总线可以包括允许在处理器360、存储器370、以及通信接口380之间进行通信的路径。处理器360可以包括一个或多个处理器、微处理器、ASIC、FPGA、或可以解释和执行指令的其他类型处理单元。存储器370可以包括RAM、ROM设备、磁和/或光记录介质及其相应的驱动器、和/或可以存储由处理器360执行的信息和指令的其他类型的静态和/或动态存储设备。存储器370也可以在指引数据包返回切换机构320、在切换机构320中排队、并且最终被调度为发送至输出端口330之前,将来自输入端口310的用于由处理器360处理的输入通信量(例如,数据包的报头或整个数据包)进行临时存储。通信接口380可以包括使控制单元340与其他设备和/或系统通信的类似收发器的机构。
如本文所描述的,设备300可以执行特定操作。响应于处理器360执行在诸如存储器370的计算机可读介质中包含的软件指令,设备300可以执行这些特定操作。可以将软件指令经由通信接口380从另一设备或从诸如数据存储设备的另一计算机可读介质读取至存储器370。包含在存储器370中的软件指令可以使处理器360执行本文描述的处理。可替换地,可以使用硬连线电路代替软件指令或与软件指令相结合来实现本文描述的处理。因此,本文描述的实施方式并不限于硬件电路与软件的任何特定组合。
尽管图3示出了设备300的示例性部件,但是在其他实施方式中,设备300可以包括与图3描绘的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,设备300的一个或多个部件可以执行描述为通过设备300的一个或多个其他部件执行的一个或多个其他任务。
图4A和图4B是能够由网络100的示例性部分400执行的示例性操作的示图。如图4A和图4B所示,示例性网络部分400可以包括客户端设备110、缓存服务器120、源设备130、请求监视器140、响应监视器150、以及网络设备170。客户端设备110、缓存服务器120、源设备130、请求监视器140、响应监视器150、以及网络设备170可以包括上面例如结合图1至图3中的一个或多个所描述的特征。
如图4A所示,客户端设备110可以向网络设备170提供对于资源的请求405,并且网络设备170可以向请求监视器140提供请求405。请求监视器140可以接收请求405,并且可以基于信息(例如,在请求监视器140中提供且在下面结合图6描述的信息)确定由请求405所请求的资源是否可能在缓存服务器120中被缓存(例如,缓存命中)或可能没有在缓存服务器120中被缓存(例如,缓存未命中)。对于图4A中所描绘的操作,假设所请求的资源没有在缓存服务器120中被缓存。因此,请求监视器140可以向网络设备170提供缓存未命中的指示410。
尽管在图4A中未示出,但请求监视器140可以(例如,经由网络设备170或其他网络设备)接收来自客户端设备110或其他客户端设备的附加的资源请求,并且可以过滤该附加的资源请求(例如,包括请求405)以生成经过滤的请求415。在一个示例性实施方式中,请求监视器140可以基于与源设备(例如,源设备130)相关联的IP地址的“监视列表”来过滤附加的资源请求(例如,创建经过滤的请求415)。可以通过请求监视器140经由控制协议(例如,TCP)预配置和/或动态更新监视列表。监视列表可以包括具有与“拦截列表”(例如,也在请求监视器140中提供)不匹配的HTTP GET请求(例如,请求资源)的IP数据包。下面结合图6描述拦截列表。如图4A进一步所示,请求监视器140可以经由控制协议向缓存服务器120报告请求405和/或经过滤的请求415。
响应监视器150可以监视从源设备130向客户端设备110提供的通信量(例如,响应流量)。响应监视器150可以监视从其他源设备向其他客户端设备提供的通信量,并且可以基于一组可配置的参数(例如,对象大小、缓存期满时间、总可缓存带宽等)确定通信量是否包括可以在缓存服务器120中缓存(或存储)的资源。如图4A进一步所示,响应监视器150可以向请求监视器140提供具有可缓存资源的源设备(例如,源设备130)的地址420(例如,IP地址)。请求监视器140可以接收地址420,并且可以向监视列表添加地址420。响应监视器150还可以基于所监视的通信量生成报告425。在一个实例中,报告425可以包括描述由缓存服务器120提供的潜在带宽储蓄的报告,基于诸如源设备IP地址、MIME类型、MIME大小等的各种参数描述通信量分布的报告。
缓存服务器120可以从请求监视器140接收经过滤的请求415(例如,其可以包括请求405),并且可以从经过滤的请求415中提取在数据包中提供的诸如统一资源定位符(URL)的信息。所提取的信息可以包括在由经过滤的请求415识别的源设备上可得到的、且与监视列表(例如,包括具有可缓存资源的源设备的IP地址)相匹配的资源。如通过参考标号430所指示的,缓存服务器120可以将所提取的信息添加为要摄取的候选资源,并且可以摄取该候选资源。摄取430可以指代缓存服务器120从源设备检索候选资源,并且在与缓存服务器120相关联的存储器中存储检索到的资源。在一个实例中,缓存服务器120可以从源设备130摄取430候选资源,同时处理请求405。在另一实例中,缓存服务器120可以在不同的时刻(例如,在处理了请求405之后)摄取430一个或多个候选资源。缓存服务器120可以在与缓存服务器120相关联的存储设备中存储检索到的候选资源。
拦截通信量可以包括:由客户端设备110生成的、以源设备130为目的地,但是在到达源设备130之前被请求监视器140和/或网络设备170拦截的通信量。请求监视器140可以向缓存服务器120提供这种拦截通信量。对于从请求监视器140接收的拦截通信量(例如,请求405),缓存服务器120可以接受与拦截通信量相关联的连接(例如,TCP连接),并且可以利用源设备(例如,源设备130)的IP地址为客户端设备110服务。缓存服务器120可以不同于缓存未命中拦截通信量地处理缓存命中拦截通信量。由于图4A示出针对请求405的缓存未命中情形,缓存服务器120并不是向源设备130提供针对请求405的代理,而是生成重定向命令435。重定向命令可以包括具有HTTP响应状态代码“302”的命令。缓存服务器120可以(经由网络设备170)向客户端设备110提供重定向命令435,并且可以结束(或终止)与客户端设备110的连接。重定向命令435可以指示客户端设备110重连接并且重试请求405。客户端设备110可以接收重定向命令435,可以重试请求405(例如,作为新请求440),并且可以向网络设备170提供新请求440。新请求440可以包括对于请求405所请求的相同资源的请求。
在向客户端设备110提供重定向命令435之前,缓存服务器120可以向请求监视器140提供控制消息。该控制消息可以指示请求监视器140在异常列表(例如,在请求监视器140中提供且在下面结合图6描述的)中增加对于客户端设备110的条目(例如,5元组)。为了解决客户端设备110经由不同端口号重试请求405(例如,新请求440),请求监视器140可以忽略在5元组中提供的源端口(例如,src-port)。因此,请求监视器140可以从特定源端口切断4元组。控制消息可以确保来自客户端设备110的请求405(例如,新请求440)的下一次尝试不会被请求监视器140拦截而改为提供给源设备130。可替换地,或附加地,缓存服务器120可以将资源(例如,由请求405请求的或其他缓存未命中资源)增加为要摄取(例如,经由摄取430)的候选资源。缓存服务器120可以从源设备130或其他源设备检索候选资源,并且可以将检索到的候选资源存储在与缓存服务器120相关联的存储设备中。
如图4A进一步示出的,网络设备170可以向源设备130提供新请求440。源设备130可以接收新请求440,可以检索由新请求440所请求的资源445,并且可以向网络设备170提供资源445。网络设备170可以向客户端设备110转发资源445,并且客户端设备110可以接收和/或利用资源445。在一个示例性实施方式中,网络设备170可以向请求监视器140提供所有或一部分资源445,并且请求监视器140可以在监视列表中提供与资源445相关联的信息。在另一示例性实施方式中,网络设备170可以向响应监视器150提供资源445的一部分447用于分析。
图4B可以描绘对于请求405的缓存命中情形。如图所示,客户端设备110可以向网络设备170提供对于资源的请求405,并且网络设备170可以向请求监视器140提供请求405。请求监视器140可以接收请求405,并且可以基于在下面结合图6描述的并且在请求监视器140中提供的信息来确定由请求405所请求的资源是否可能在缓存服务器120中被缓存(例如,缓存命中)或可能没有在缓存服务器120中被缓存(例如,缓存未命中)。对于图4B中描绘的操作,假设所请求的资源在缓存服务器120中被缓存。因此,请求监视器140可以向网络设备170提供缓存命中的指示450。
如图4B进一步示出的,请求监视器140可以向缓存服务器120转发请求405和/或经过滤的请求415,并且缓存服务器120可以接收请求405和/或经过滤的请求415。缓存服务器120可以检索由请求405所请求的缓存资源455,并且可以(经由网络设备170)向客户端设备110提供被缓存的资源455。在一个实例中,缓存服务器120可以基于缓存规则提供被缓存的资源455,其中缓存规则指定存储在缓存服务器120中的资源类型以及如何从缓存服务器120提供资源。客户端设备110可以接收和/或利用被缓存的资源455。
在一个示例性实施方式中,缓存服务器120可以基于经过滤的请求415针对在请求监视器140中保存的监视列表中提供的源设备的每个IP地址分析潜在的缓存命中率。例如,缓存服务器120可以选择在监视列表中提供的特定IP地址,并且可以确定在经过滤的请求415中提供的资源(例如,与特定IP地址相关联)是否存储在缓存服务器120中。如果在一个经过滤的请求415中提供的资源存储在缓存服务器120中,则缓存服务器120可以确定资源为缓存命中。对于特定的IP地址,缓存服务器120于是可以将所有确定的缓存命中除以经过滤的请求415中提供的资源总数(例如,与特定IP地址相关联),从而计算针对特定IP地址的潜在缓存命中率。当与特定IP地址(例如,特定源设备的IP地址)相关联的潜在缓存命中率超过可配置的阈值时,缓存服务器120可以经由控制协议向请求监视器140中所保存的拦截列表添加该特定IP地址,如参考标号460所示。
尽管图4A和图4B示出了网络部分400的示例性部件,但是在其他实施方式中,网络部分400可以包括与图4A和图4B中描绘的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,网络部分400的一个或多个部件可以执行被描述为由网络部分400的一个或多个其他部件执行的一个或多个其他任务。
图5是请求监视器140的示例性功能部件的示图。如所示,请求监视器140可以包括缓存命中/未命中分离器500、请求报告器510、以及异常列表条目移除器520。在一个示例性实施方式中,结合图5描述的一个或多个功能部件可以通过设备200(图2)或设备300(图3)的一个或多个示例性部件实现。
缓存命中/未命中分离器500可以从客户端设备110接收请求405,并且可以接收从客户端设备110或其他客户端设备的附加资源请求。缓存命中/未命中分离器500可以过滤附加的资源请求(例如,包括请求405)以生成经过滤的请求415。在一个实例中,缓存命中/未命中分离器500可以基于由缓存命中/未命中分离器500保存的、与源设备(例如,源设备130)相关联的IP地址的监视列表过滤附加的资源请求(例如,创建经过滤的请求415)。缓存命中/未命中分离器500可以向请求报告器510提供请求405和/或经过滤的请求415。
缓存命中/未命中分离器500可以基于信息(例如,在下面结合图6描述的拦截列表、异常列表、流量信息、和/或监视列表)确定由请求405所请求的资源是否可能在缓存服务器120中被缓存(例如,缓存命中)或可能没有在缓存服务器120中被缓存(例如,缓存未命中)。在一个示例性实施方式中,当请求405的目的地IP地址在拦截列表中提供而没有在异常列表中提供时,缓存命中/未命中分离器500可以确定由请求405所请求的资源可能在缓存服务器120中被缓存。当请求405的目的地IP地址没有在拦截列表中提供而在异常列表中提供时,缓存命中/未命中分离器500可以确定由请求405所请求的资源可能没有在缓存服务器120中被缓存。
如果缓存命中/未命中分离器500确定由请求405所请求的资源可能没有在缓存服务器120中被缓存,则缓存命中/未命中分离器500可以向网络设备170提供缓存未命中的指示410,并且缓存服务器120可以(经由网络设备170)向客户端设备110提供重定向命令435。重定向命令435可以指示客户端设备110重连接以及重试请求405。如果缓存命中/未命中分离器500确定由请求405所请求的资源可能在缓存服务器120中被缓存,则缓存命中/未命中分离器500可以向网络设备170提供缓存命中的指示450。
如图5进一步示出的,缓存命中/未命中分离器500可以从响应监视器150接收地址420,并且可以将地址420添加至缓存命中/未命中分离器500所保持的监视列表。当与请求405和/或经过滤的请求415的特定IP地址(例如,特定源设备的IP地址)相关联的、潜在的缓存命中率超过可配置的阈值时,缓存服务器120可以经由控制协议向保存在缓存命中/未命中分离器500中的拦截列表增加该特定IP地址,如参考标号460所不。
请求报告器510可以从缓存命中/未命中分离器500接收请求405和/或经过滤的请求415。请求报告器510可以经由控制协议向缓存服务器120提供请求405和/或经过滤的请求415。
异常列表条目移除器520可以接收与诸如客户端设备110的特定客户端设备连接结束的指示530。在一个实例中,基于超时值或当客户端设备110生成具有重置连接(RST)标志的数据包或具有不再有来自发送器的数据(FIN)标志的数据包时,可能接收指示530。客户端设备110收到重定向命令435时可以产生这种数据包。异常列表条目移除器520可以确定与指示530相关联的数据包是否与在缓存命中/未命中分离器500中所保存的异常列表中提供的特定5元组条目相匹配。如果与指示530相关联的数据包和异常列表中的特定5元组条目相匹配,则异常列表条目移除器520可以从异常列表中移走特定5元组条目,如参考标号540所示。
尽管图5示出请求监视器140的示例性功能部件,但是在其他实施方式中,请求监视器140可以包括与图5示出的部件相比更少的功能部件、不同的功能部件、不同布置的功能部件、或附加功能部件。可替换地,或附加地,请求监视器140的一个或多个功能部件可以执行被描述为通过请求监视器140的一个或多个其他功能部件执行的一个或多个其他任务。
图6是由缓存命中/未命中分离器500保持的示例性信息和/或操作信息的逻辑的示图。如图所示,缓存命中/未命中分离器500可以包括拦截列表600、异常列表610、流量信息620、以及监视列表630。在一个示例性实施方式中,信息可以存储在与设备200(图2)或设备300(图3)的一个或多个示例性部件相关联的一个或多个存储器中。
拦截列表600可以包括针对源设备(例如,源设备130)的地址(例如,IP地址)的条目,从客户端设备(例如,客户端设备110)对于该源设备的资源的请求应该被拦截进而路由至缓存服务器120,而不是发送至源设备。如图6所示,拦截列表600可以包括源设备字段、标识符字段、以及与这些字段相关联的多个条目。源设备字段可以包括识别对于其资源的请求应该被拦截进而路由至缓存服务器120的源设备的条目。标识符字段可以包括提供在源设备字段中被识别的源设备的识别信息(诸如IP地址)的条目。
在一个示例性实施方式中,拦截列表600可以接收请求405(或一个经过滤的请求415),并且可以确定由请求405请求的资源是否与拦截列表600中提供的IP地址(例如,源设备的IP地址)相关联。例如,如果由请求405请求的资源与IP地址1(例如,源设备1的IP地址)相关联,则拦截列表600可以将请求405路由至缓存服务器120。然而,如果由请求405所请求的资源与IP地址11(例如,源设备11的IP地址)相关联,则拦截列表600可以不将请求405路由至缓存服务器120。
异常列表610可以包括针对尽管与拦截列表600中提供的条目相匹配却仍应当转发至源设备的资源请求数据包的条目。针对该资源请求数据包的条目可以由与每个数据包相关联的5元组(例如,源IP地址(src-IP)、目的地IP地址(dst-IP)、源端口(src-port)、目的地端口(dst-port)、以及协议(proto))标引。如图6所示,异常列表610可以包括IP 5元组字段、时间窗口字段、以及与这些字段相关联的多个条目。IP 5元组字段可以包括提供要被转发至源设备(例如,尽管在拦截列表600中匹配)的资源请求数据包的5元组的条目。在一个示例性实施方式中,取决于由客户端设备110使用的、诸如网络地址翻译(NAT)方案或直接寻址方案的寻址方案,5元组条目的源端口可以被忽略或被建立以用作基于范围的匹配。时间窗口字段可以包括针对客户端设备(例如,与在IP 5元组字段中提供的5元组条目相关联的客户端设备)被期望与请求监视器140重连接期间的时间窗口的条目。在一个实例中,时间窗口可以包括倒计时和期满的时间段。在时间窗口字段中提供的特定时间窗口期满之后,可以从异常列表610中移除与该特定时间窗口相关联的特定5元组条目。可以限制在时间窗口字段中提供的时间窗口,从而确保不妨碍可能使用相同IP地址以及连接相同源设备的客户端设备长时间使用缓存服务器120。
在一个示例性实施方式中,可以用2元组字段、3元组字段、...、N元组字段(N≥2)代替异常列表610的5元组字段。异常列表610可以在这种字段中存储IP数据包的2元组、3元组、...、N元组。
如图6进一步示出的,异常列表610可以接收IP 5元组数据包640(例如,与请求405和/或经过滤的请求415相关联的数据包),并且可以增加IP 5元组数据包640的5元组作为异常列表610的IP 5元组字段中的条目。异常列表610可以从异常列表条目移除器520(图5)接收从异常列表610中移除特定5元组条目的指示540,进而可以从异常列表610移除特定5元组条目,如通过参考标号650所示。
流量信息620可以包括针对被重定向至缓存服务器120的客户端设备的连接(例如,TCP连接)或基于异常列表610而被定向源设备的客户端设备的连接的条目。如图6所示,流量信息620可以包括连接字段、目的地字段、以及与这些字段相关联的多个条目。连接字段可以包括识别定向至缓存服务器120或基于异常列表610定向至源设备的客户端设备的连接的条目。目的地字段可以包括提供在连接字段中识别的连接的目的地设备的条目。例如,流量信息620可以表明TCP连接1定向至源设备1,以及TCP连接2定向至缓存服务器120。如图6进一步示出的,流量信息620可以从客户端设备(例如,客户端设备110)接收TCP连接660,并且可以用TCP连接660以及与TCP连接660相关联的目的地来构成流量信息620。
监视列表630可以包括针对来自客户端设备(例如,客户端设备110)的请求可以检索到资源的源设备(例如,源设备130)的地址(例如,IP地址)的条目。如图6所示,监视列表630可以包括源设备字段、标识符字段、以及与这些字段相关联的多个条目。源设备字段可以包括识别可以从中检索到资源的源设备的条目。标识符字段可以包括提供在源设备字段中识别的源设备的识别信息(诸如IP地址)的条目。如图6进一步示出的,监视列表630可以(例如,经由缓存服务器120)从响应监视器150接收具有可缓存资源的源设备的地址420(例如,IP地址),并且在与特定IP地址460相关联的潜在缓存命中率超过可配置的阈值时可以从缓存服务器120接收特定IP地址460(例如,特定源设备的IP地址)。监视列表630可以利用IP地址420和460以及利用识别与IP地址420和460相关联的源设备的信息来构造监视列表630。
在一个示例性实施方式中,请求监视器140可以利用拦截列表600、异常列表610、流量信息620和/或监视列表630中的一个或多个来确定是否对以下各项做出确定:由请求405所请求的资源是否可能在缓存服务器120中被缓存(例如,缓存命中)或可能没有在缓存服务器120中被缓存(例如,缓存未命中)。
尽管图6示出可以在缓存命中/未命中分离器500中保存的示例性信息,但是在其他实施方式中,缓存命中/未命中分离器500可以包括与图6中描绘的信息相比更少的信息、不同的信息、不同布置的信息或附加信息。
图7是响应监视器150的示例性功能部件的示图。如图所示,响应监视器150可以包括源IP地址报告器700和报告生成器710。在一个示例性实施方式中,可以通过设备200(图2)或设备300(图3)的一个或多个示例性部件来实现结合图7描述的一个或多个功能部件。
源IP地址报告器700可以接收从源设备(例如,源设备130)向客户端设备(例如,客户端设备110)提供的响应流量720,并且可以经由控制协议接收可配置参数730(例如,从网络管理员接收)。响应流量720可以包括从源设备到客户端设备的响应,并且可以包括HTTP响应报头。可配置参数730可以包括对象大小(例如,要缓存的资源大小)、缓存期满时间(例如,缓存服务器120的缓存期满时间)、以及总可缓存带宽(例如,缓存服务器120的总可缓存带宽)等。源IP地址报告器700可以基于包含在响应流量720中的HTTP响应报头检查响应流量720(例如,针对可缓存的资源)。源IP地址报告器700可以基于对响应流量720的检查以及基于可配置参数730,确定响应流量720是否包括可以存储在缓存服务器120中的资源。如图7进一步示出的,源IP地址指示器700可以向缓存服务器120提供(例如,基于对响应流量720的检查)被确定为包含有可缓存资源的源设备(例如,源设备130)的地址420(例如,IP地址)。
报告生成器710可以接收响应流量720。报告生成器710可以基于响应流量720生成报告425。在一个实例中,报告425可以包括描述由缓存服务器120提供的潜在带宽储蓄的报告730、基于各种参数(例如,源设备IP地址、MIME类型、MIME大小等)描述通信量分布的报告740、或其他类型的报告。
尽管图7示出响应监视器150的示例性功能部件,但是在其他实施方式中,响应监视器150可以包括与图7描绘的部件相比更少的功能部件、不同的功能部件、不同布置的功能部件、或附加功能部件。可替换地,或附加地,响应监视器150的一个或多个功能部件可以执行被描述为通过响应监视器150的一个或多个其他功能部件执行的一个或多个其他任务。
图8是缓存服务器120的示例性功能部件的示图。如图所示,缓存服务器120可以包括请求提取器810、缓存命中率确定器820、缓存命中/未命中服务器830、以及资源摄取器840。在一个示例性实施方式中,可以通过设备200(图2)的一个或多个示例性部件来实现结合图8描述的一个或多个功能部件。
请求提取器810可以从请求监视器140接收请求405和/或经过滤的请求415,并且可以从请求405和/或经过滤的请求415中提取信息(例如,数据包中提供的URL 850)。URL 850可以包括在由请求405和/或经过滤的请求415识别的源设备处可得到的资源。请求提取器810可以向资源摄取器840提供URL 850作为要摄取(例如,从源设备检索且存储在缓存服务器120中)的候选资源。
缓存命中率确定器820可以从请求监视器140接收拦截通信量(例如请求405和/或经过滤的请求415)。缓存命中率确定器820可以基于请求405和/或经过滤的请求415确定在监视列表630(例如,保存在请求监视器140中的监视列表)中提供的每个IP地址(例如,源设备的IP地址)的潜在缓存命中率。当缓存命中率确定器820确定与特定IP地址(例如,特定源设备的IP地址)相关联的潜在缓存命中率超过可配置的阈值时,缓存命中率确定器820可以经由控制协议向拦截列表600(例如,保持在请求监视器140中的拦截列表)添加特定IP地址,如参考标号460所示。
缓存命中/未命中服务器830可以与处理缓存未命中拦截通信量不同地来处理缓存命中拦截通信量。对于缓存未命中拦截通信量,缓存命中/未命中服务器830可以生成重定向命令435,可以(经由网络设备170)向客户端设备110提供重定向命令435,并且可以结束与客户端设备110的连接。在向客户端设备110提供重定向命令435之前,缓存命中/未命中服务器830可以向请求监视器140提供控制消息860。控制消息860可以指示请求监视器140在请求监视器140所提供的异常列表610中添加用于客户端设备110的条目(例如,5元组)。控制消息860可以确保来自客户端设备110的请求405的下一次尝试(例如,新请求440)不会被请求监视器140拦截而是改为提供给源设备130。可替换地,或附加地,缓存命中/未命中服务器830可以向资源摄取器840提供与缓存未命中信息870(例如,由请求405、经过滤的请求415、和/或其他缓存未命中请求所请求的)相关联的资源作为要摄取的候选资源。
对于缓存命中拦截通信量,缓存命中/未命中服务器830可以检索由请求405和/或经过滤的请求415所请求的缓存资源455,并且可以(经由网络设备170)向客户端设备110提供缓存资源455。在一个实例中,缓存命中/未命中服务器830可以基于缓存规则提供缓存资源455,其中缓存规则指定存储在缓存服务器120中的资源类型以及如何从缓存服务器120提供资源。
资源摄取器840可以从请求提取器810接收URL 850,并且可以从缓存命中/未命中服务器830接收与缓存未命中信息870相关联的资源作为要摄取的候选资源。如参考标号430所示,资源摄取器840可以摄取候选资源。在一个实例中,资源摄取器840可以从源设备130摄取430候选资源,同时处理请求405。在另一实例中,资源摄取器840可以在不同的时间(例如,在处理请求405之后)从不同的源设备摄取430一个或多个候选资源。缓存服务器120可以在与缓存服务器120相关联的存储设备中存储检索到的资源。例如,在摄取430期间,资源摄取器840可以向源设备130提供对于候选资源的请求,并且源设备130可以接收该请求。源设备130可以基于该请求检索候选资源,并且可以向资源摄取器840提供候选资源。资源摄取器840可以在与缓存服务器120相关联的存储设备中存储接收到的候选资源。
尽管图8示出缓存服务器120的示例性功能部件,但是在其他实施方式中,缓存服务器120可以包括与图8描绘的部件相比更少的功能部件、不同的功能部件、不同布置的功能部件、或附加功能部件。可替换地,或附加地,缓存服务器120的一个或多个功能部件可以执行被描述为通过缓存服务器120的一个或多个其他功能部件执行的一个或多个其他任务。
在一个示例性实施方式中,缓存服务器120、请求监视器140、以及响应监视器150可以部署为服务提供商网络中的独立部件。在另一示例性实施方式中,缓存服务器120、请求监视器140、以及响应监视器150可以集成为单个设备(例如,单个服务器、单个媒体流量控制器、单个网络设备等)。在又一示例性实施方式中,请求监视器140的功能性可以集成于缓存服务器120或网络设备170中。在又一示例性实施方式中,请求监视器140与响应监视器150可以作为在网络设备170上执行的应用程序来实现。在这种实施方式中,请求监视器140可以使用网络设备170的线卡中的流量信息(例如,类似于流量信息620)来实现异常列表610。在另一个示例性实施方式中,缓存服务器120、请求监视器140、以及响应监视器150中的一个或多个的功能性可以集成于网络设备170中。在又一示例性实施方式中,请求监视器140可以用作针对多个缓存服务器的负载均衡器,用于对于部署进行调整或增加冗余。在这种实施方式中,请求监视器140可以使用流量信息620来了解与每个拦截的TCP连接相关的缓存服务器。
在可替换实施方式中,本文描述的系统和/或方法可以使用源设备的可替换IP地址,而不是异常列表610。对于具有提供相同资源的多个IP地址(例如,用于负载均衡的域名系统(DNS)循环法)的许多源设备(站点)来说是常见的。在这种情形中,本文描述的系统和/或方法可以从监视列表630中省略一个或多个冗余IP地址,并且可以使用被省略的IP地址作为重定向命令435(图4)的目标。
在另一可替换实施方式中,本文描述的系统和/或方法可以用请求监视器140提供的配置驱动监视列表(例如,类似于监视列表630)来代替响应监视器150。例如,本文描述的系统和/或方法可以配置域列表,并且请求监视器140可以执行DNS查找以建立配置驱动监视列表。
图9和图10是根据本文描述的实施方式用于提供针对代理缓存方案的请求监控功能的示例性处理900的流程图。在一个实施方式中,处理900可以由请求监视器140执行。在另一实施方式中,处理900中的某些或全部可以通过除了请求监视器140之外的或与请求监视器140相结合的一个或多个设备来执行。可以与一个或多个其他处理块并发或独立地执行在图9和图10中示出的一个或多个处理块。
如图9所示,处理900可以包括从客户端设备接收对于资源的请求(块910),并且基于信息来确定所请求的资源是否可能被缓存(缓存命中)或可能没有被缓存(缓存未命中)(块920)。例如,在上面结合图4A描述的实施方式中,客户端设备110可以向网络设备170提供对于资源的请求405,并且网络设备170可以向请求监视器140提供请求405。请求监视器140可以接收请求405,并且可以基于信息(例如,在请求监视器140中提供的信息)来确定由请求405所请求的资源是否可能在缓存服务器120中被缓存(例如,缓存命中)或可能没有在缓存服务器120中被缓存(例如,缓存未命中)。
如在图9中进一步示出的,当所请求的资源可能被缓存(块920-缓存命中)时,处理900可以包括向缓存服务器转发请求,其中缓存服务器基于请求检索被缓存的资源,并且向客户端设备转发被缓存的资源(块930)。例如,在上面结合图4B描述的实施方式中,缓存服务器120可以接收请求405和/或经过滤的请求415。缓存服务器120可以检索由请求405所请求的缓存资源455,并且可以(经由网络设备170)向客户端设备110提供缓存资源455。客户端设备110可以接收和/或利用缓存资源455。
返回至图9,当所请求的资源可能没有被缓存(块920-缓存未命中)时,处理900可以包括向缓存服务器转发请求,其中缓存服务器基于请求向客户端设备转发重定向命令,并且客户端设备基于重定向命令从源设备获得资源(块940)。例如,在上面结合图4A描述的实施方式中,请求监视器140可以经由控制协议向缓存服务器120报告请求405和/或经过滤的请求415。缓存服务器120可以生成重定向命令435(具有HTTP响应状态代码“302”的命令),可以(经由网络设备170)向客户端设备110提供重定向命令435,并且可以结束与客户端设备110的连接。重定向命令435可以指示客户端设备110重连接以及重试请求405。客户端设备110可以接收重定向命令435,可以重试请求405(例如,作为新请求440),并且可以向网络设备170提供新请求440。新请求440可以包括对于由请求405所请求的相同资源的请求。
处理块920可以包括图10中描绘的处理块。如图10所示,处理块920可以包括:创建拦截列表,该拦截列表包括关于与路由至缓存服务器的通信量相关联的源IP地址的条目(块1000);创建异常列表,该异常列表包括关于尽管在拦截列表中匹配却仍被路由至源设备的数据包的IP 5元组的条目(块1010);创建流量信息,该流量信息包括关于指向缓存服务器或源设备的连接的条目(块1020);和/或创建监视列表,该监视列表包括关于源设备IP地址的条目(块1030)。处理块920还可以包括,基于拦截列表和异常列表确定所请求的资源是否可能被缓存(块1040)。
例如,在上面结合图5和图6描述的实施方式中,请求监视器140可以包括缓存命中/未命中分离器500。缓存命中/未命中分离器500可以包括拦截列表600、异常列表610、流量信息620、以及监视列表630。如上所述,拦截列表600可以包括关于源设备(例如,源设备130)的地址(例如,IP地址)的条目,其中来自客户端设备(例如,客户端设备110)对于该源设备的资源的请求应该被拦截进而路由至缓存服务器120而不是发送给源设备。异常列表610可以包括关于尽管与拦截列表600中提供的条目匹配却仍应该转发至源设备的资源请求数据包的条目。用于资源请求数据包的条目可以由与每个数据包相关联的5元组来标引。流量信息620可以包括关于被重定向至缓存服务器120的客户端设备的连接(例如,TCP连接)或基于异常列表610被定向源设备的客户端设备的连接的条目。监视列表630可以包括关于可以从中检索到资源的源设备的地址的条目。缓存命中/未命中分离器500可以基于信息(例如,拦截列表600、异常列表610、流量信息620、和/或监视列表630)确定由请求405所请求的资源是否可能在缓存服务器120中被缓存(例如,缓存命中)或可能没有在缓存服务器120中被缓存(例如,缓存未命中)。
图11是根据本文描述的实施方式用于向代理缓存方案提供响应监视功能的示例性处理1100的流程图。在一个实施方式中,可以通过响应监视器150执行处理1100。在另一实施方式中,处理1100中的一些或全部可以通过除了响应监视器150之外的或与响应监视器150相结合的一个或多个设备来执行。可以与一个或多个其他处理块并发或独立地执行图11中所描绘的一个或多个处理块。
如图11所示,处理1100可以包括接收从源设备向客户端设备提供的通信量(块1110),并且基于参数确定该通信量是否包括要在缓存服务器中被缓存的资源(块1120)。例如,在上面结合图4A描述的实施方式中,响应监视器150可以监视从源设备130向客户端设备110提供的通信量(例如,响应流量)。响应监视器150可以监视从其他源设备向其他客户端设备提供的通信量,并且可以基于一组可配置的参数(例如,对象大小、缓存期满时间、以及总可缓存带宽等)确定通信量是否包括可以存储在缓存服务器120中的资源。
正如图11进一步示出的,处理1100可以包括向请求监视器提供被确定为具有可缓存的资源的源设备的IP地址(块1130),和/或基于通信量确定来生成潜在带宽储蓄报告和通信量分布报告(块1140)。例如,在上面结合图4A描述的实施方式中,响应监视器150可以向请求监视器140提供具有可缓存的资源的源设备(例如,源设备130)的地址420(例如,IP地址)。请求监视器140可以接收地址420,并且可以向监视列表添加地址420。响应监视器150也可以基于所监视的通信量生成报告425。在一个实例中,报告425可以包括:描述由缓存服务器120提供的潜在带宽储蓄的报告、基于各种参数(例如,源设备IP地址、MIME类型、MIME大小等)描述通信量分布的报告、或其他类型的报告。
图12A和图12B示出根据本文描述的实施方式用于提供模块化透明代理缓存的示例性处理1200的流程图。在一个实施方式中,可以由缓存服务器120执行处理1200。在另一实施方式中,处理1200中的一些或全部可以通过除了缓存服务器120之外的或与缓存服务器120相结合的一个或多个设备来执行。可以与一个或多个其他处理块并发或独立地执行图12A和图12B中所描绘的一个或多个处理块。
如图12A所示,处理1200可以包括:从请求监视器接收对于与包括具有可缓存资源的源设备的IP地址的监视列表中的条目相匹配的资源的请求(块1205),并且添加所请求的资源作为要存储的候选资源(块1210)。例如,在上面结合图4A描述的实施方式中,缓存服务器120可以从请求监视器140接收经过滤的请求415(例如,其可以包括请求405),并且可以从经过滤的请求415中提取信息(诸如数据包中提供的URL)。所提取的信息可以包括在通过经过滤的请求415识别的源设备上可得到的、且匹配监视列表(例如,其包括具有可缓存资源的源设备的IP地址)的资源。缓存服务器120可以添加所提取的信息作为要摄取的候选资源。在一个实例中,请求监视器140可以基于与源设备相关联的IP地址的监视列表过滤附加的资源请求(例如,创建经过滤的请求415)。
如图12A进一步示出的,处理1200可以包括:针对监视列表中的每个IP地址分析缓存命中率(块1215),并且当IP地址的缓存命中率超过阈值时向拦截列表添加IP地址(块1220)。例如,在上面结合图4A和图4B描述的实施方式中,缓存服务器可以基于经过滤的请求415针对请求监视器140保持的监视列表中提供的每个IP地址(例如,源设备的IP地址)分析潜在的缓存命中率。当与特定源设备的特定IP地址相关联的潜在的缓存命中率超过可配置的阈值时,缓存服务器120可以经由控制协议向保存在请求监视器140中的拦截列表添加特定的IP地址,如参考标号460所示。
如图12B所示,处理1200可以包括确定通过从请求监视器接收的拦截通信量所请求的资源是否被存储(缓存命中)或没有被存储(缓存未命中)(块1225)。当所请求的资源被存储(块1225-缓存命中)时,处理1200可以包括向客户端设备提供所存储的资源(块1230)。例如,在上面结合图4A和图4B描述的实施方式中,针对从请求监视器140接收的拦截通信量(例如,请求405),缓存服务器120可以接受与拦截通信量相关联的连接(例如,TCP连接),并且可以利用源设备130的IP地址(例如,屏蔽与缓存服务器120相关联的地址)为客户端设备110服务。对于缓存命中,缓存服务器120可以接收请求405和/或经过滤的请求415。缓存服务器120可以检索由请求405请求的缓存资源455,并且可以(经由网络设备170)向客户端设备110提供缓存资源455。
如图12B进一步所示,当所请求的资源没有被存储(块1225-缓存未命中)时,处理1200可以包括向客户端设备返回重定向命令(块1235),结束与客户端设备的连接(块1240),并且添加根据拦截通信量所请求的资源作为要存储的候选资源(块1245)。例如,在上面结合图4A描述的实施方式中,在针对请求405的缓存未命中情形中,缓存服务器并不是提供对于请求405的代理(例如,以源设备130的名义提供资源),而是缓存服务器120可以生成重定向命令435(例如,具有HTTP响应状态代码“302”的命令),可以(经由网络设备170)向客户端设备110提供重定向命令435,并且可以结束与客户端设备110的连接。缓存服务器120可以添加资源(例如,由请求405所请求的或其他缓存未命中资源)作为(例如,经由摄取430)要摄取的候选资源。
返回至图12B,处理1200可以包括:从源设备检索候选资源(块1250),以及存储检索到的候选资源(块1255)。例如,在上面结合图4A描述的示例性实施方式中,缓存服务器120可以添加所提取的信息作为要摄取(例如,从源设备检索且存储在缓存服务器120中)的候选资源,并且可以摄取候选资源,如参考标号430所示。缓存服务器120可以在与缓存服务器120相关联的存储设备中存储检索到的候选资源。
图13是能够由网络100的另一示例性部分1300执行的示例性操作的示图。如图13所示,示例性网络部分1300可以包括客户端设备110、缓存服务器120、源设备130、以及网络设备170。客户端设备110、缓存服务器120、源设备130、以及网络设备170可以包括在上面结合(例如)图1至图12B中的一个或多个所描述的特征。
如图13所示,网络设备170可以包括缓存命中/未命中模块1310。在一个实例中,缓存命中/未命中模块1310可以包括在网络设备170的服务平面中提供的硬件上执行缓存命中/未命中软件。客户端设备110可以向网络设备170提供对于资源的请求1320,并且网络设备170可以经由缓存命中/未命中模块1310接收请求1320。缓存命中/未命中模块1310可以用作对于来自客户端设备110的请求的代理,并且可以将回复发送回客户端设备110直到缓存命中/未命中模块1310确定请求1320是HTTP GET请求(例如,请求特定资源)或HTTP HEAD请求(例如,请求资源类似于GET请求)。一旦缓存命中/未命中模块1310确定请求1320是HTTP GET或HEAD请求,缓存命中/未命中模块1310就可以确定由请求1320所请求的资源是否在缓存服务器120中被缓存(例如,缓存命中)或没有在缓存服务器120中被缓存(例如,缓存未命中)。在一个示例性实施方式中,缓存命中/未命中模块1310基于网络设备170中提供的信息(例如,如上面结合图6描述的,拦截列表600、异常列表610、流量信息620、和/或监视列表630)确定由请求1320所请求的资源是否在缓存服务器120中被缓存或没有被缓存。
如果缓存命中/未命中模块1310确定由请求1320所请求的资源没有在缓存服务器120中被缓存(例如,缓存未命中),则缓存命中/未命中模块1310可以在网络设备170中建立临时防火墙过滤器1330。防火墙过滤器1330可以包括与网络设备170相关联的防火墙中设置的临时过滤器,并且利用转发平面可以使来自客户端设备110的资源请求能够发送至源设备130。在建立防火墙过滤器1330之后、之前、或同时,缓存命中/未命中模块1310可以生成重定向命令1340(例如,具有HTTP响应状态代码“302”的命令),可以向客户端设备110提供重定向命令1340,并且可以结束与客户端设备110的连接。重定向命令1340可以指示客户端设备110重连接以及重试请求1320。缓存命中/未命中模块1310也可以将与请求1320相关的缓存未命中通知缓存服务器120,并且可以指示缓存服务器120获得由请求1320所请求的资源,如通过参考标号1350所示。缓存服务器120可以接收指令1350,并且可以从源设备130检索新资源1355(例如,由请求1320请求的资源)。在一个示例性实施方式中,缓存命中/未命中模块1310与缓存服务器120可以分别进行通信直到缓存服务器120从源设备130检索到新资源1355。
客户端设备110可以接收重定向命令1340,可以重试请求1320(例如,作为发起与源设备130的TCP连接的新请求1360),并且可以向网络设备170的防火墙过滤器1330提供新请求1360。新请求1360可以包括对于由请求1320所请求的相同资源的请求。防火墙过滤器1330可以接收新请求1360,并且可以向源设备130转发新请求1360,而不涉及缓存命中/未命中模块1310。源设备130可以接收新请求1360,可以检索由新请求1360所请求的资源1370,并且可以向网络设备170提供资源1370。网络设备170可以向客户端设备110转发资源1370,并且客户端设备110可以接收和/或利用资源1370。
在客户端设备110接收资源1370之后,防火墙过滤器1330可以向缓存命中/未命中模块1310提供表示与检索资源1370相关的会话完成的通知1380。当缓存命中/未命中模块1310接收到通知1380时,缓存命中/未命中模块1310可以(例如,从与网络设备170相关联的防火墙)移除防火墙过滤器1330,如通过参考标号1390所示,使得任何来自客户端设备110的新请求可以再次通过缓存命中/未命中模块1310。
尽管图13示出网络部分1300的示例性部件,但是在其他实施方式中,网络部分1300可以包括与图13中描绘的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,网络部分1300的一个或多个部件可以执行被描述为通过网络部分1300的一个或多个其他部件执行的一个或多个其他任务。
图14是能够通过网络100的又一示例性部分1400执行的示例性操作的示图。如图14所示,示例性网络部分1400可以包括客户端设备110、缓存服务器120、以及网络设备170(具有缓存命中/未命中模块1310)。客户端设备110、缓存服务器120、网络设备170、以及缓存命中/未命中模块1310可以包括在上面(例如)结合图1至图13中的一个或多个描述的特征。
如图14进一步示出的,客户端设备110可以向网络设备170提供对于资源的请求1410,并且网络设备170可以经由缓存命中/未命中模块1310接收请求1410。缓存命中/未命中模块1310可以用作对于来自客户端设备110的请求的代理,并且可以将回复发送回客户端设备110直到缓存命中/未命中模块1310确定请求1410是HTTP GET或HEAD请求。一旦缓存命中/未命中模块1310确定请求1410是HTTP GET或HEAD请求,缓存命中/未命中模块1310就可以确定由请求1410所请求的资源是否在缓存服务器120中被缓存(例如,缓存命中)或没有在缓存服务器120中被缓存(例如,缓存未命中)。
如果缓存命中/未命中模块1310确定由请求1410所请求的资源在缓存服务器120中被缓存(例如,缓存命中),则缓存命中/未命中模块1310可以生成重定向命令1420(例如,具有HTTP响应状态代码“302”的命令),可以向客户端设备110提供重定向命令1420,并且可以结束与客户端设备110的连接。重定向命令1420可以指示客户端设备110重连接以及重试请求1410。客户端设备110可以接收重定向命令1420,可以重试请求1410(例如,作为发起与缓存服务器120的TCP连接的新请求1430),并且可以向网络设备170提供新请求1430。新请求1430可以包括对于通过请求1410所请求的相同资源的请求,但是可以包括缓存服务器120的地址(例如,反之,请求1410可能不包括缓存服务器120的地址)。
缓存命中/未命中模块1310可以接收新请求1430,并且可以确定新请求1430包括缓存服务器120的地址。基于缓存服务器120的地址,缓存命中/未命中模块1310可以向缓存服务器120转发新请求1430。缓存服务器120可以接收新请求1430,可以检索由新请求1430所请求的资源1440,并且可以向网络设备170提供资源1440。网络设备170可以向客户端设备110转发资源1440,并且客户端设备110可以接收和/或利用资源1440。
尽管图14示出网络部分1400的示例性部件,但是在其他实施方式中,网络部分1400可以包括与图14描绘的部件相比更少的部件、不同的部件、不同布置的部件、或附加部件。可替换地,或附加地,网络部分1400的一个或多个部件可以执行被描述为通过网络部分1400的一个或多个其他部件执行的一个或多个其他任务。
图15是根据本文描述的实施方式用于优化代理缓存方案中的内容流量的示例性处理1500的流程图。在一个实施方式中,可以通过网络设备170执行处理1500。在另一实施方式中,处理1500中的一些或全部可以通过除了网络设备170之外的或与网络设备170相结合的一个或多个设备来执行。可以与一个或多个其他处理块并发或独立地执行在图15中描绘的一个或多个处理块。
如图15所示,处理1500可以包括:经由缓存命中/未命中模块从客户端设备接收对于资源的请求(块1510),并且经由缓存命中/未命中模块确定所请求的资源是否被缓存(缓存命中)或没有被缓存(缓存未命中)(块1520)。例如,在上面结合图13描述的实施方式中,客户端设备可以向网络设备170提供对于资源的请求1320,并且网络设备170可以经由缓存命中/未命中模块1310接收请求1320。缓存命中/未命中模块1310可以用作对于来自客户端设备110的请求的代理,并且可以将回复发送回客户端设备110直到缓存命中/未命中模块1310确定请求1320是HTTP GET请求(例如,请求特定资源)或HTTP HEAD请求(例如,请求资源类似于GET请求)。一旦缓存命中/未命中模块1310确定请求1320是HTTP GET或HEAD请求,缓存命中/未命中模块1310就可以确定由请求1320所请求的资源是否在缓存服务器120中被缓存(例如,缓存命中)或没有在缓存服务器120中被缓存(例如,缓存未命中)。
如图15进一步示出的,当所请求的资源被缓存时(块1520-缓存命中),处理1500可以包括:提供指示客户端设备请求来自缓存服务器的资源的命令(块1530),基于该命令从客户端设备接收新请求(块1540),并且基于新请求使客户端设备能够从缓存服务器接收所请求的资源(块1550)。例如,在上面结合图14描述的实施方式中,如果缓存命中/未命中模块1310确定由请求1410所请求的资源在缓存服务器120中被缓存(例如,缓存命中),则缓存命中/未命中模块1310可以生成重定向命令1420,并且可以向客户端设备110提供重定向命令1420。重定向命令1420可以指示客户端设备110重新连接以及重试请求1410。客户端设备110可以接收重定向命令1420,可以重试请求1410(例如,作为发起与缓存服务器120的TCP连接的新请求1430),并且可以向缓存命中/未命中模块1310提供新请求1430。新请求1430可以包括缓存服务器120的地址,而请求1410可能不包括缓存服务器120的地址。基于缓存服务器120的地址,缓存命中/未命中模块1310可以向缓存服务器120转发新请求1430。缓存服务器120可以接收新请求1430,可以检索由请求1430所请求的资源1440,并且可以向网络设备170提供资源1440。网络设备170可以向客户端设备110转发资源1440。
返回至图15,当所请求的资源没有被缓存时(块1520-缓存未命中),处理1500可以包括:经由缓存命中/未命中模块创建防火墙过滤器,并且提供指示客户端设备从源设备请求资源的命令(块1560);基于该命令经由防火墙过滤器从客户端设备接收对于资源的新请求(块1570);基于新请求使客户端设备能够经由防火墙过滤器从源设备接收所请求的资源(块1580);并且在客户端设备接收到所请求的资源之后移除防火墙过滤器(块1590)。
例如,在上面结合图13描述的实施方式中,如果缓存命中/未命中模块1310确定由请求1320所请求的资源没有在缓存服务器120中被缓存(例如,缓存未命中),则缓存命中/未命中模块1310可以在网络设备170中建立临时的防火墙过滤器1330。在建立防火墙过滤器1330之后、之前、或同时,缓存命中/未命中模块1310可以生成重定向命令1340,并且可以向客户端设备110提供重定向命令1340。重定向命令1340可以指示客户端设备110重连接且重试请求1320。客户端设备110可以接收重定向命令1340,可以重试请求1320(例如,作为发起与源设备130的TCP连接的新请求1360),并且可以向网络设备170的防火墙过滤器1330提供新请求1360。防火墙过滤器1330可以接收新请求1360,并且可以向源设备130转发新请求1360。源设备130可以接收新请求1360,可以检索由新请求1360所请求的资源1370,并且可以向网络设备170提供资源1370。网络设备170可以向客户端设备110转发资源1370。在客户端设备110接收到资源1370之后,缓存命中/未命中模块1310可以(例如,从与网络设备170相关联的防火墙)移除防火墙过滤器1330,如参考标号1390所示,使得来自客户端设备110的任何新请求可以再次通过缓存命中/未命中模块1310。
本文描述的系统和/或方法可以提供将缓存命中和缓存未命中进行分离的模块化透明代理缓存方案,其中缓存命中可以指代所请求的资源存储在诸如缓存服务器的代理缓存中的情况,而缓存未命中可以指代所请求的资源没有存储在缓存服务器中的情况。该系统和/或方法可以利用存储资源的源设备的IP地址使缓存命中通信量能够由缓存服务器来提供,并且可以使缓存未命中通信量能够在客户端设备(例如,请求资源)与源设备之间流动而没有任何层7拦截。缓存服务器可以利用一组经配置的、与源设备相关联的IP地址来异步检索以及存储诸如内容、服务等的资源。在一个实例中,当缓存未命中发生时,该系统和/或方法可以将重定向命令提供返回至请求资源的客户端设备。响应于重定向命令,客户端设备可以生成能够被提供给源设备的新资源请求而没有缓存服务器的干预。
本文使用的术语“部件”旨在广泛地理解为包括硬件(例如,处理器、微处理器、ASIC、FPGA、芯片、存储设备(例如,ROM、RAM等)等)或硬件与软件的组合(例如,执行包含在存储设备中的软件的处理器、微处理器、ASIC等)。
本文使用的术语“数据包”旨在广泛地理解为包括帧、数据报文、数据包(packet)、或信元(cell);帧的片段、数据报文的片段、数据包的片段、或信元的片段;或其他类型、配置、或封装的数据。
前述实施方式提供了图解和描述,但是并未意在穷尽或将本发明限制为所公开的精确形式。修改和变化根据上面的教导是可能的,或可以从本发明的实践中获得。
例如,虽然关于图9至图12B以及图15已描述了一系列块,但是在其他实施方式中可以更改块的顺序。此外,可以并行执行非从属块。
显而易见,如上所述的示例性方面可以用图中所示的实施方式中的软件、固件、硬件的许多不同形式来实现。用于实现这些方面的实际软件代码或专用控制硬件不应理解为限制的。因此,不参照特定的软件代码描述方面的操作和行为——应当理解,可以基于本文的描述将软件和控制硬件设计为实现这些方面。
尽管在说明书中公开和/或在权利要求书中陈述了特征的特定组合,但是这些组合并未意在限制本发明的公开。实际上,这些特征中的许多可以按照没有具体在权利要求书陈述和/或说明书中公开的方式进行组合。尽管下面列出的每个从属权利要求可以直接仅引用另一个权利要求,但是本发明的公开包括与权利要求书中的每个其他权利要求相结合的每个从属权利要求。
除非明确地描述,否则本申请中使用的元件、动作或指令不应被解释为对于本发明是关键的或必需的。同样,如本文使用的,冠词“一(a)”旨在包括一个或多个事项。当仅仅指的是一个事项时,使用术语“一个(one)”或类似的语言。此外,除非明确不同地表述,否则词组“基于”旨在表示“至少部分地基于”。
Claims (20)
1.一种方法,包括:
由计算设备从客户端设备接收对于从源设备可获得的资源的请求;
基于存储在与所述计算设备相关联的存储器中的信息确定所述资源是否被缓存在缓存服务器中;
其中,当所述资源被缓存在所述缓存服务器中时,所述方法包括:
由所述计算设备将所述请求转发至所述缓存服务器;
由所述缓存服务器基于所述请求检索被缓存的资源;以及
由所述缓存服务器将所述被缓存的资源转发至所述客户端设备,以及
其中,当所述资源没有被缓存在所述缓存服务器中时,所述方法包括:
由所述计算设备将所述请求转发至所述缓存服务器;以及
由所述缓存服务器基于所述请求将重定向命令转发至所述客户端设备,并且其中所述重定向命令使所述客户端设备从所述源设备获取所述资源。
2.根据权利要求1所述的方法,其中,所述重定向命令包括具有超文本传输协议(HTTP)302响应状态代码的命令。
3.根据权利要求1所述的方法,其中,所述资源包括音频数据、视频数据、文本、或服务中的一个或多个。
4.根据权利要求1所述的方法,其中,确定所述资源是否被缓存在所述缓存服务器中包括:
创建拦截列表,该拦截列表包括关于要被路由至所述缓存服务器的通信量的地址的条目;
创建异常列表,该异常列表包括关于要被路由至所述源设备的数据包的N元组(N≥2)的条目,其中所述异常列表的每个条目与所述拦截列表中提供的条目相匹配;
当所述拦截列表中提供所述请求的目的地互联网协议(IP)地址时并且当所述异常列表中没有提供所述请求的所述目的地IP地址时,确定所述资源被缓存在所述缓存服务器中;以及
当所述拦截列表中没有提供所述请求的所述目的地IP地址时或者当所述异常列表中提供所述请求的所述目的地IP地址时,确定所述资源没有被缓存在所述缓存服务器中。
5.根据权利要求4所述的方法,进一步包括:
基于超时值或者在结束与特定条目相关的连接时,从所述异常列表中移除所述特定条目。
6.根据权利要求1所述的方法,进一步包括:
创建监视列表,该监视列表包括关于与所述源设备相关联的地址的条目;
从所述客户端设备接收对于资源的多个请求;
基于所述监视列表过滤所述多个请求;以及
将经过滤的所述多个请求报告至所述缓存服务器。
7.一种由计算设备执行的方法,所述方法包括:
由所述计算设备接收从多个源设备向客户端设备提供的通信量;
由所述计算设备确定所述通信量是否包括要存储在缓存服务器中的资源;以及
由所述计算设备向所述缓存服务器提供被确定为包括了要存储在所述缓存服务器中的资源的所述多个源设备的地址。
8.根据权利要求7所述的方法,进一步包括:
基于所述通信量生成与所述缓存服务器相关的潜在带宽储蓄的报告或与通信量分布相关的报告;以及
输出所述报告。
9.一种系统,包括:
网络设备,包含:
用于存储关于在缓存服务器中存储的资源的信息的装置,
用于从客户端设备接收对于从源设备可获得的资源的请求的装置,
用于基于存储的所述信息确定所述资源是否存储在缓存服务器中的装置,以及
当确定所述资源被缓存在所述缓存服务器中时,所述缓存服务包括:
用于从所述网络设备接收所述请求的装置,
用于基于所述请求检索被缓存的资源的装置,以及
用于向所述客户端设备转发存储在所述缓存服务器中的所述资源的装置,以及
当确定所述资源没有存储在所述缓存服务器中时,所述缓存服务器包括:
用于从所述网络设备接收所述请求的装置,
用于基于所述请求向所述客户端设备转发重定向命令的装置,其中所述重定向命令使所述客户端设备从所述源设备获取所述资源。
10.根据权利要求9所述的系统,其中,所述用于确定所述资源是否存储在所述缓存服务器中的装置包括:
用于存储拦截列表的装置,该拦截列表包括关于要路由至所述缓存服务器的通信量的地址的条目;
用于存储异常列表的装置,该异常列表包括关于要路由至所述源设备的数据包的N元组(N≥2)的条目,其中所述异常列表的每个条目与所述拦截列表中提供的条目相匹配;
用于当所述拦截列表中提供所述请求的目的地互联网协议(IP)地址时并且当所述异常列表中没有提供所述请求的所述目的地IP地址时,确定所述资源存储在所述缓存服务器中的装置;以及
用于当所述拦截列表中没有提供所述请求的所述目的地IP地址时或者当所述异常列表中提供所述请求的所述目的地IP地址时,确定所述资源没有存储在所述缓存服务器中的装置。
11.根据权利要求10所述的系统,其中,所述网络设备进一步包括:
用于在结束与特定条目相关联的连接时从所述异常列表移除所述特定条目的装置。
12.根据权利要求9所述的系统,其中,所述网络设备进一步包括:
用于存储监视列表的装置,该监视列表包括关于与所述源设备相关联的地址的条目,
用于从所述客户端设备接收对于资源的多个请求的装置,
用于基于所述监视列表过滤所述多个请求的装置,以及
用于将经过滤的所述多个请求报告至所述缓存服务器的装置。
13.根据权利要求9所述的系统,其中,所述网络设备进一步包括:
用于接收从多个源设备向所述客户端设备提供的通信量的装置,
用于确定所述通信量是否包含了要存储在所述缓存服务器中的资源的装置,
用于向所述缓存服务器提供被确定为包含了要存储在所述缓存服务器中的资源的所述多个源设备的地址的装置,
用于基于所述确定生成与所述缓存服务器相关的潜在带宽储蓄的报告或与通信量分布相关的报告的装置,以及
用于输出所述报告的装置。
14.根据权利要求13所述的系统,其中,所述用于确定所述通信量是否包含了要存储在所述缓存服务器中的资源的装置使用包含以下一项或多项的可配置参数:
与所述资源之一相关的大小,
与所述缓存服务器相关的缓存期满时间,或者
与所述缓存服务器相关的总可缓存带宽。
15.根据权利要求9所述的系统,其中,所述资源包括音频数据、视频数据、文本、或服务中的一个或多个。
16.一种由缓存服务器设备执行的方法,所述方法包括:
由所述缓存服务器设备从请求监视器设备接收对于与监视列表的条目相匹配的资源的请求,其中,所述条目包括具有可缓存资源的源设备的地址;
由所述缓存服务器设备识别所请求的所述资源作为候选资源;
由所述缓存服务器设备从一个或多个所述源设备检索所述候选资源;
由所述缓存服务器设备存储检索到的所述候选资源;以及
由所述缓存服务器设备并且响应于从客户端设备接收的请求,将检索到的所述候选资源提供至所述客户端设备。
17.根据权利要求16所述的方法,进一步包括:
分析所述监视列表中提供的所述地址的缓存命中率;以及
当特定地址的缓存命中率超过阈值时向拦截列表添加所述特定地址,其中所述拦截列表包括在要路由至所述缓存服务器的通信量中提供的至少一个所述源设备的地址。
18.根据权利要求16所述的方法,进一步包括:
确定由所述缓存服务器设备拦截的通信量所请求的资源是否存储在所述缓存服务器设备中;以及
在所述资源存储在所述缓存服务器设备中时,将所述资源提供至与所述通信量相关联的客户端设备。
19.根据权利要求18所述的方法,进一步包括:
当所述资源没有存储在所述缓存服务器设备中时,将重定向命令传输至与所述通信量相关联的所述客户端设备,其中,所述重定向命令指示所述客户端设备从一个所述源设备获取所述资源;
基于传输的所述重定向命令终止与所述客户端设备的连接;以及
识别由所述通信量请求的所述资源作为特定候选资源。
20.根据权利要求19所述的方法,其中,每个所述候选资源包括音频数据、视频数据、文本、或服务中的一个或多个,所述方法进一步包括:
从一个所述源设备检索所述特定候选资源;以及
存储检索到的所述特定候选资源。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/051,325 US8539036B2 (en) | 2011-03-18 | 2011-03-18 | Modular transparent proxy cache |
US13/051,325 | 2011-03-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102685179A true CN102685179A (zh) | 2012-09-19 |
CN102685179B CN102685179B (zh) | 2015-10-14 |
Family
ID=44582603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110276304.7A Active CN102685179B (zh) | 2011-03-18 | 2011-09-16 | 模块化透明代理缓存 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8539036B2 (zh) |
EP (1) | EP2501104B1 (zh) |
CN (1) | CN102685179B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103369368A (zh) * | 2013-06-24 | 2013-10-23 | 西安交通大学 | 一种支持多码率版本的视频云点播缓存调度方法 |
CN104348722A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 确定内容获取路径、请求处理的方法、装置和系统 |
CN107562803A (zh) * | 2017-08-08 | 2018-01-09 | 上海数据交易中心有限公司 | 数据供应系统及方法、终端 |
CN108111866A (zh) * | 2016-11-24 | 2018-06-01 | 法乐第(北京)网络科技有限公司 | 音视频播放的控制方法及系统 |
CN109561027A (zh) * | 2017-09-26 | 2019-04-02 | 中兴通讯股份有限公司 | 透明缓存的流量优化方法、负载均衡器及存储介质 |
CN113348658A (zh) * | 2019-01-29 | 2021-09-03 | 思科技术公司 | 延迟约束下的缓存集群的高效灵活的负载均衡 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US9229867B2 (en) * | 2011-06-16 | 2016-01-05 | International Business Machines Corporation | Shared network response cache |
EP2759115A4 (en) * | 2011-09-23 | 2015-05-20 | Ericsson Telefon Ab L M | USE OF MEMORY IN A TELECOMMUNICATIONS NETWORK |
KR101907932B1 (ko) * | 2011-12-27 | 2018-10-17 | 한국전자통신연구원 | 묶음 콘텐츠를 위한 네트워크 기반 콘텐츠 캐싱 지원하는 패킷 포워딩 구조 및 방법 |
JP6102108B2 (ja) * | 2012-07-24 | 2017-03-29 | 富士通株式会社 | 情報処理装置、データ提供方法、及びデータ提供プログラム |
US8812489B2 (en) * | 2012-10-08 | 2014-08-19 | International Business Machines Corporation | Swapping expected and candidate affinities in a query plan cache |
GB2510192A (en) * | 2013-01-29 | 2014-07-30 | Openwave Mobility Inc | Intermediate proxy server caching buffer searched with key (URI hash) |
US8788703B1 (en) | 2013-08-05 | 2014-07-22 | Iboss, Inc. | Content caching |
US8972513B2 (en) * | 2013-08-05 | 2015-03-03 | Iboss, Inc. | Content caching |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
US9088803B2 (en) * | 2013-10-14 | 2015-07-21 | Nec Laboratories America, Inc. | Software defined joint bandwidth provisioning and cache management for MBH video traffic optimization |
US10028316B2 (en) * | 2014-04-08 | 2018-07-17 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Network discovery and selection |
US9929955B2 (en) | 2014-12-17 | 2018-03-27 | International Business Machines Corporation | Local session loopback protocol |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
US20160344831A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Proxy service for content requests |
CN106856456B (zh) * | 2015-12-08 | 2020-02-28 | 中兴通讯股份有限公司 | 缓存集群服务的处理方法及系统 |
US10305815B2 (en) * | 2016-04-29 | 2019-05-28 | Huawei Technologies Co., Ltd. | System and method for distributed resource management |
WO2018090315A1 (zh) * | 2016-11-18 | 2018-05-24 | 华为技术有限公司 | 数据请求的处理方法及缓存系统 |
EP3767494B1 (en) | 2017-08-28 | 2023-02-15 | Bright Data Ltd. | Method for improving content fetching by selecting tunnel devices |
US11190374B2 (en) | 2017-08-28 | 2021-11-30 | Bright Data Ltd. | System and method for improving content fetching by selecting tunnel devices |
EP4075304B1 (en) * | 2019-02-25 | 2023-06-28 | Bright Data Ltd. | System and method for url fetching retry mechanism |
US11449963B1 (en) * | 2020-02-24 | 2022-09-20 | Juice Technologies, Inc. | Virtual graphics processing with remote execution |
US11445225B2 (en) * | 2020-10-27 | 2022-09-13 | Akamai Technologies, Inc. | Measuring and improving origin offload and resource utilization in caching systems |
US11323540B1 (en) * | 2021-10-06 | 2022-05-03 | Hopin Ltd | Mitigating network resource contention |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117093A1 (en) * | 1998-10-29 | 2006-06-01 | Cisco Technology Inc. | Methods and apparatus for redirecting network cache traffic |
CN101834777A (zh) * | 2009-03-11 | 2010-09-15 | 丛林网络公司 | 基于会话高速缓存的http加速 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185598B1 (en) * | 1998-02-10 | 2001-02-06 | Digital Island, Inc. | Optimized network resource location |
US7080158B1 (en) | 1999-02-09 | 2006-07-18 | Nortel Networks Limited | Network caching using resource redirection |
AU2002313583A1 (en) * | 2001-08-01 | 2003-02-17 | Actona Technologies Ltd. | Virtual file-sharing network |
US7849502B1 (en) * | 2006-04-29 | 2010-12-07 | Ironport Systems, Inc. | Apparatus for monitoring network traffic |
US20100162126A1 (en) * | 2008-12-23 | 2010-06-24 | Palm, Inc. | Predictive cache techniques |
US9634993B2 (en) * | 2010-04-01 | 2017-04-25 | Cloudflare, Inc. | Internet-based proxy service to modify internet responses |
-
2011
- 2011-03-18 US US13/051,325 patent/US8539036B2/en active Active
- 2011-09-08 EP EP11180566.9A patent/EP2501104B1/en active Active
- 2011-09-16 CN CN201110276304.7A patent/CN102685179B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117093A1 (en) * | 1998-10-29 | 2006-06-01 | Cisco Technology Inc. | Methods and apparatus for redirecting network cache traffic |
CN101834777A (zh) * | 2009-03-11 | 2010-09-15 | 丛林网络公司 | 基于会话高速缓存的http加速 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103369368A (zh) * | 2013-06-24 | 2013-10-23 | 西安交通大学 | 一种支持多码率版本的视频云点播缓存调度方法 |
CN104348722A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 确定内容获取路径、请求处理的方法、装置和系统 |
CN104348722B (zh) * | 2013-07-31 | 2017-12-12 | 华为技术有限公司 | 确定内容获取路径、请求处理的方法、装置和系统 |
US10103986B2 (en) | 2013-07-31 | 2018-10-16 | Huawei Technologies Co., Ltd. | Method, apparatus and system for determining content acquisition path and processing request |
US10587513B2 (en) | 2013-07-31 | 2020-03-10 | Huawei Technologies Co., Ltd. | Method, apparatus and system for determining content acquisition path and processing request |
CN108111866A (zh) * | 2016-11-24 | 2018-06-01 | 法乐第(北京)网络科技有限公司 | 音视频播放的控制方法及系统 |
CN107562803A (zh) * | 2017-08-08 | 2018-01-09 | 上海数据交易中心有限公司 | 数据供应系统及方法、终端 |
CN109561027A (zh) * | 2017-09-26 | 2019-04-02 | 中兴通讯股份有限公司 | 透明缓存的流量优化方法、负载均衡器及存储介质 |
CN113348658A (zh) * | 2019-01-29 | 2021-09-03 | 思科技术公司 | 延迟约束下的缓存集群的高效灵活的负载均衡 |
CN113348658B (zh) * | 2019-01-29 | 2024-04-19 | 思科技术公司 | 延迟约束下的缓存集群的高效灵活的负载均衡 |
Also Published As
Publication number | Publication date |
---|---|
US8539036B2 (en) | 2013-09-17 |
US20120239811A1 (en) | 2012-09-20 |
EP2501104A1 (en) | 2012-09-19 |
CN102685179B (zh) | 2015-10-14 |
EP2501104B1 (en) | 2020-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102685179A (zh) | 模块化透明代理缓存 | |
CN102685177B (zh) | 资源的透明代理缓存方法、网络设备及系统 | |
CN102833148B (zh) | 资源请求及资源的路由代理 | |
CN102833306B (zh) | 网络集成动态资源路由 | |
CN104885431A (zh) | 软件定义信息中心网络中基于内容的流量工程 | |
WO2003065241A1 (en) | Policy based routing system and method for caching and vpn tunneling | |
US10862800B2 (en) | Method and system for managing network communications | |
JP2011160041A (ja) | フロントエンドシステム、フロントエンド処理方法 | |
US20170155730A1 (en) | Terminating connections and selecting target source devices for resource requests | |
US10038669B2 (en) | Path control system, control device, and path control method | |
EP2858317A1 (en) | Control device, communication system, switch control method and program | |
JP2014502794A (ja) | 通信経路制御システム、経路制御装置、通信経路制御方法および経路制御プログラム | |
CN105991793B (zh) | 报文转发的方法和装置 | |
CN101909005A (zh) | 转发表的处理方法和装置 | |
KR101530013B1 (ko) | 효율적인 네트워크 주소 변환 및 애플리케이션 레벨 게이트웨이 프로세싱을 위한 장치 및 방법들 | |
JP3822595B2 (ja) | ラベルスイッチングネットワーク、ルートサーバ、およびラベルエッジルータ | |
JP3825438B2 (ja) | ラベルスイッチングネットワークおよびラベルエッジルータ | |
CN117099356A (zh) | 实例-仿射业务调度 | |
Latvakoski | A Hierarchical routing algorithm for small world wireless networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Juniper Networks, Inc. Address before: California, USA Applicant before: Jungle network |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: NETSCREEN TECHNOLOGIES INC. TO: JUNIPER NETWORKS INC. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |