用于透明代理缓存的欺骗技术

阅读:649发布:2021-06-14

专利汇可以提供用于透明代理缓存的欺骗技术专利检索,专利查询,专利分析的服务。并且在一个 实施例 中, 计算机网络 中的代理设备接收重定向客户端 请求 ,其具有请求源地址作为客户端地址并且具有请求源端口作为客户端端口的重定向客户端请求。代理设备随后决定对客户端请求进行服务、代理还是绕过,并且响应于决定代理客户端请求,将客户端请求转发到具有请求源地址作为客户端地址并且请求源端口变成对应于代理的 选定 代理端口值的对应 服务器 。此外,代理设备随后可以接收对于客户端请求的重定向服务器回复,所述服务器回复具有回复目的地地址作为客户端地址并且具有回复目的地端口作为选定代理端口值,其中基于回复目的地端口内的选定代理端口值来从转发设备接收重定向的服务器回复。,下面是用于透明代理缓存的欺骗技术专利的具体信息内容。

1.一种方法,包括:
计算机网络中的代理设备处接收重定向的客户端请求,所述客户端请求具有请求源地址作为客户端地址和请求源端口作为客户端端口;
决定对所述客户端请求进行服务、代理还是绕过;
响应于决定代理所述客户端请求,将所述客户端请求转发到具有所述请求源地址作为所述客户端地址并且所述请求源端口变成对应于所述代理的选定代理端口值的对应服务器;以及
在所述代理设备处接收对于所述客户端请求的重定向的服务器回复,所述服务器回复具有回复目的地地址作为所述客户端地址并且具有回复目的地端口作为所述选定代理端口值,其中基于所述回复目的地端口内的选定代理端口值来从转发设备接收所述重定向的服务器回复。
2.如权利要求1所述的方法,其进一步包括:
响应于决定服务所述客户端请求,由所述代理通过具有所述服务器的被欺骗的回复源地址的被欺骗的服务器回复来回复所述客户端地址。
3.如权利要求1所述的方法,其进一步包括:
响应于决定绕过所述客户端请求,将所述客户端请求转发到具有所述请求源地址作为所述客户端地址并且未改变的所述请求源端口作为所述客户端端口的对应服务器。
4.如权利要求1所述的方法,其进一步包括:
在所述代理设备处接收对于未由所述代理设备代理的第二客户端请求的第二服务器回复;
由所述代理设备检测所述第二服务器回复未被代理;以及
将未改变的所述第二服务器回复转发到对应于所述第二客户端请求的第二客户端。
5.如权利要求4所述的方法,其中在所述代理设备处接收对于未由所述代理设备代理的第二客户端请求的第二服务器回复是由于所述第二客户端与对应于所述代理的所述选定代理端口值之间的重叠端口值。
6.如权利要求1所述的方法,其进一步包括:
响应于决定代理所述客户端请求,对来自所述代理设备的所述客户端地址欺骗SYN ACK消息。
7.一种方法,包括:
在计算机网络中的转发设备处接收对于客户端请求的服务器回复;
确定所述服务器回复的回复目的地端口是否对应于代理端口值;以及
响应于检测到所述代理端口值在所述目的地端口内,将所述服务器回复重定向到适当的代理设备。
8.如权利要求7所述的方法,其进一步包括:
在所述转发设备处确定是否将接收到的客户端请求重定向到代理设备,所述客户端请求具有请求源地址作为客户端地址并且请求源端口作为客户端端口;以及响应于决定重定向所述客户端请求,将未改变的所述客户端请求转发到所述代理设备。
9.如权利要求8所述的方法,其进一步包括:
将所述客户端请求重定向到特定的代理设备。
10.如权利要求8所述的方法,其中基于请求目的地端口和请求协议或深度数据包检测结果中的一个确定是否将所述接收到的客户端请求重定向到所述代理设备。
11.如权利要求7所述的方法,其中重定向包括:
基于所述代理端口值来将所述服务器回复重定向到特定的代理设备。
12.一种装置,包括:
一个或多个网络接口
联接到所述网络接口并且适于执行一个或多个进程的处理器;以及
配置成存储可由所述处理器执行的进程的存储器,所述进程在被执行时可操作以:
接收重定向的客户端请求,所述请求具有请求源地址作为客户端地址和请求源端口作为客户端端口;
决定对所述客户端请求进行服务、代理还是绕过;
响应于决定代理所述客户端请求,将所述客户端请求转发到具有所述请求源地址作为所述客户端地址并且所述请求源端口变成对应于所述装置的选定代理端口值的对应服务器;以及
接收对于所述客户端请求的重定向的服务器回复,所述服务器回复具有回复目的地地址作为所述客户端地址并且具有回复目的地端口作为所述选定代理端口值。
13.如权利要求12所述的装置,其中所述进程在被执行时进一步可操作以:
响应于决定服务所述客户端请求,通过具有所述服务器的被欺骗回复源地址的被欺骗的服务器回复来回复所述客户端地址。
14.如权利要求12所述的装置,其中所述进程在被执行时进一步可操作以:
响应于决定绕过所述客户端请求,将所述客户端请求转发到具有所述请求源地址作为所述客户端地址并且未改变的所述请求源端口作为所述客户端端口的对应服务器。
15.如权利要求12所述的装置,其中所述进程在被执行时进一步可操作以:
接收对于未被代理的对于第二客户端请求的第二服务器回复;
检测所述第二服务器回复未被代理;以及
将未改变的所述第二服务器回复转发到对应于所述第二客户端请求的第二客户端。
16.一种装置,包括:
一个或多个网络接口;
联接到所述网络接口并且适于执行一个或多个进程的处理器;以及
配置成存储可由所述处理器执行的进程的存储器,所述进程在被执行时可操作以:
接收对于客户端请求的服务器回复;
确定所述服务器回复的回复目的地端口是否对应于代理端口值;以及
响应于检测到所述代理端口值在所述目的地端口内,将所述服务器回复重定向到适当的代理设备。
17.如权利要求16所述的装置,其中所述进程在被执行时进一步可操作以:
确定是否将接收到的客户端请求重定向到代理设备,所述客户端请求具有请求源地址作为客户端地址并且请求源端口作为客户端端口;以及
响应于决定重定向所述客户端请求,将未改变的所述客户端请求转发到所述代理设备。
18.如权利要求17所述的装置,其中所述进程在被执行时进一步可操作以:
将所述客户端请求重定向到特定的代理设备。
19.如权利要求17所述的装置,其中所述进程在被执行确定是否将所述接收到的客户端请求重定向到所述代理设备时进一步可操作以:
基于请求目的地端口和请求协议或深度数据包检测结果中的一个确定是否将所述接收到的客户端请求重定向到所述代理设备。
20.如权利要求16所述的装置,其中所述进程在被执行时进一步可操作以:
基于所述代理端口值来将所述服务器回复重定向到特定的代理设备。

说明书全文

用于透明代理缓存的欺骗技术

技术领域

[0001] 本发明一般涉及计算机网络,并且更具体来说,涉及计算机网络中的代理的操作。

背景技术

[0002] 因特网服务提供商(ISP)网络当前承载大量视听媒体流量。此流量具有显著的重复程度,一些视频片段可能包括所有媒体流量中的大部分。由于高成本的网络带宽,特别是在ISP对等点处,缓存此流量的可能性非常有吸引。然而,尽管在产业上具有大的兴趣,但是迄今为止缓存尚未广泛应用于此环境中。部署的主要障碍是如今的缓存网络代理通常不完全透明。即使网络代理通常可能在不需要明确配置的意义上似乎对客户端透明,但是一般对内容提供商(CP)是不透明的,因为代理将客户端请求用其自己的IP地址而非客户端地址转发给CP。此代理据称在应用层(应用是HTTP)而非在网络层(在此状况下是TCP/IP)透明。缺乏网络透明度意味着关于做出请求的客户端的重要信息(诸如位置)对CP隐藏。此外,来自许多客户端的请求可能对于CP来说似乎来自单个源(代理),这使得CP难以精确地确定有效点击的数量,并且进而减少CP的网络广告收入。
[0003] 鉴于以上这些和其他有关原因,CP通常反对缓存网络代理,要么对来自可疑代理的请求进行阻挡,要么通过诸如URL混淆的技术使缓存变得困难。因此,考虑部署缓存网络代理的ISP需要网络层(而非仅应用层)的透明度,这尤其意味着通过代理的请求必须保持客户端的源IP地址。这种在拦截连接的同时的地址保持称为欺骗,即,IP欺骗通常意味着发送源IP地址并不是自己的地址的IP数据包。
[0004] 如果代理被内嵌部署,或者使用诸如WCCP(网络缓存通信协议)的适合的重定向技术,则代理有可能欺骗源IP地址并且保持对CP的网络层透明度。实际上,许多流行的代理支持这种部署。然而,所有现有被欺骗的网络缓存解决方案的共同问题在于所有网络流量(从客户端到CP或者从CP返回到客户端)必须通过网络代理。原因是被欺骗的流量(即使其来自代理)携带客户端的源IP地址。因此,从CP返回的响应流量的目的地是客户端而非代理,并且除了代理之外没有网络实体知道欺骗。为了支持欺骗,到达和来自CP的所有网络流量必须通过网络代理,包括代理决定不缓存的流。因为代理决定缓存的网络流量的比例可能相对小,所以这意味着代理的一大部分处理资源可能被浪费来转发应直接路由给用户而非重定向给代理的返回的数据包。附图说明
[0005] 本文的实施例可以通过结合附图参照以下描述来更好理解,附图中相同的参考数字相同地或功能地指示类似元件,其中:
[0006] 图1示出一个示例性计算机网络;
[0007] 图2示出一个示例性网络设备/节点
[0008] 图3示出一个消息的示例性视图;
[0009] 图4示出在计算机网络中通过的消息的实例;
[0010] 图5示出从路由器的观点用于代理缓存的一个示例性简化程序;以及[0011] 图6示出从代理设备的观点用于代理缓存的一个示例性简化程序。

具体实施方式

[0012] 概述
[0013] 根据本披露的一个或多个实施例中,计算机网络中的代理设备接收具有请求源地址作为客户端地址并且具有请求源端口作为客户端端口的重定向客户端请求。代理设备随后决定对客户端请求进行服务、代理还是绕过,并且响应于决定代理客户端请求,将客户端请求转发到具有请求源地址作为客户端地址并且请求源端口变成对应于代理的选定代理端口值的对应服务器。此外,代理设备随后可以接收对于客户端请求的重定向服务器回复,服务器回复具有回复目的地地址作为客户端地址并且具有回复目的地端口作为选定代理端口值,其中服务器回复由配置成检测回复目的地端口内的选定代理端口值的转发设备来重定向。
[0014] 此外,根据本披露的一个或多个额外实施例,转发设备(例如,路由器、交换机等)接收对于客户端请求的服务器回复,并且确定服务器回复的回复目的地端口是否对应于代理端口值。响应于检测到目的地端口内的代理端口值,转发设备将服务器回复重定向到适当的代理设备。
[0015] 描述
[0016] 计算机网络是由用于在终端节点(诸如个人计算机和工作站或其他设备(诸如传感器)等)之间传输数据的网络链路和段互连的节点的地理分布的集合。许多类型的网络可用,范围从局域网(LAN)到广域网(WAN)。LAN通常通过位于相同的地理物理位置(诸如建筑物或校园)中的专用通信链路连接节点。另一方面,WAN通常通过远距离通信链路(诸如普通载波电话线路、光学光路、同步光纤网络(SONET)、同步数字体系(SDH)链路等)连接地理上分散的节点。
[0017] 图1是示例性计算机网络100的示意方框图,该网络说明性地包括通过各种通信方法(例如,在有线或无线链路中)由路由器140互连的节点/设备,诸如客户端设备110、代理设备120以及服务器130。例如,消息300(例如,数据包和/或)可以相应地使用预定网络通信协议(诸如某些已知的有线或无线协议)在计算机网络100的节点/设备之间交换。在此上下文中,协议由定义节点如何彼此互动的一组规则构成。
[0018] 本领域技术人员将理解,可以在计算机网络中使用任何数量的节点、设备、链路等,并且本文所示的视图用于简化。具体来说,在图1中,客户端设备110或本文的“客户端”代表路由器(通过客户端侧网络115)的客户端侧上的许多客户端之一,并且是与其他客户端共享的潜在大网络的一部分。另外,本文的路由器140或“路由器”代表单个路由器、交换机或配置成将流量转向到代理设备120的路由器/交换机的逻辑群组。路由器位于网络(服务器侧网络125)的服务器侧的出口点处,其实际上可以是专用与公用网络之间的边界或者ISP之间的对等点。另外,本文的代理设备120或“代理”代表单个网络代理设备或网络缓存代理场。路由器140可以被配置成基于目的地端口号和协议类型(以下描述)将来自客户端侧的所有感兴趣的网络流量转向到代理120。在如今的因特网中,这通常意味着至少TCP(传输控制协议)端口80流量(超文本传输协议或HTTP协议),但是也可以包括候选用于缓存的其他协议和端口。最后,本文的服务器130或“原始服务器(OS)”代表客户端请求被发送到其IP地址的网络实体。OS可以是从场选择的服务器,其又可以是内容提供商(CP)网络的一部分。再次注意,图1中的逻辑拓扑仅是说明性的,并且本文的技术与此特定拓扑无关。
[0019] 图2是可以与本文描述的一个或多个实施例一起使用的示例性节点/设备200的示意性方框图,例如,如以上图1中所示的设备中的任一个,特别是路由器140和/或代理120。设备可以包括通过系统总线250互连的一个或多个网络接口210、至少一个处理器220和存储器240。
[0020] 网络接口210含有用于通过联接到网络100的链路传递数据的机械、电气和信号电路。网络接口可以被配置成使用各种不同的通信协议传输和/或接收数据。另外请注意,节点可以具有两种不同类型的网络连接210,例如无线和有线/物理连接,并且本文的视图仅用于说明。
[0021] 存储器240包括可以由处理器220和网络接口210寻址的用于存储与本文描述的实施例相关联的软件程序和数据结构的多个存储位置。处理器220可以包括适于执行软件程序和操纵数据结构245的必要元件或逻辑。操作系统242(其中部分通常贮存在存储器240中并且由处理器执行)功能地组织设备,尤其是通过在设备上执行的软件进程和/或服务的支持调用操作。这些软件进程和/或服务可以包括在至少路由器140上的路由程序/服务244和在代理120上的代理缓存进程246。此外,每个设备可以具有说明性的欺骗(子)进程248,如本文所描述。请注意,虽然进程是在集中式存储器240中示出,但是替代实施例提供一个或多个将专在网络接口210中操作的进程。
[0022] 具体来说,路由进程(服务)244(用于路由器140)含有计算机可执行指令,所述指令由处理器220执行以执行由一个或多个路由协议提供的功能,如本领域技术人员将理解并如本文另外描述。例如,这些功能可以被配置成管理含有例如用来进行路由/转发决定的路由/转发表(数据结构245)。此外,代理进程246(用于代理120)含有计算机可执行指令,所述指令由处理器220执行以执行由一个或多个代理协议提供的功能,如本领域技术人员将理解并也如本文另外描述。
[0023] 本领域技术人员将清楚,可以使用其他处理器和存储器类型(包括各种计算机可读媒体)来储存和执行涉及本文描述的技术的程序指令。另外,虽然描述说明各种进程,但是明确预期可以将各种进程实施为配置成根据本文的技术(例如,根据类似进程的功能性)来操作的模。另外,虽然分开展示进程,但是本领域技术人员将了解,进程可以是其他进程内的例程或模块。
[0024] 如以上所提及,因特网服务提供商(ISP)网络当前携带大量视听媒体流量,并且此流量具有显著的重复程度:一些视频片段可能包括所有媒体流量中的大部分。由于高成本的网络带宽,特别是在ISP对等点处,缓存此流量的可能性非常有吸引力。然而,部署的主要障碍是如今的缓存网络代理通常不完全透明。
[0025] 存在两种本领域通常理解的欺骗。第一,客户端IP地址欺骗是向原始服务器(OS)130欺骗客户端的IP地址。客户端110进行目的地到OS130的连接,将数据包转向到代理120,该代理接受连接并且使用客户端的源IP地址潜在地进行到OS的另一个连接。第二,服务器IP地址欺骗是将OS的响应转向到代理120,进行处理并且以一些形式用OS的源地址而非代理的源地址的转到客户端。
[0026] 存在几个进行IP欺骗的原因。第一是因为服务器计费。例如,许多服务器鉴于各种原因(包括统计和广告)追踪客户端连接。一些服务器可能会对看起来经过代理的连接(其隐藏客户端的IP地址)进行阻挡。第二个原因是因为安全和/或认证,其中一些网站基于IP地址来认证内容,而第三个原因是因为地理定位,其中一些服务试图基于IP地址来定位客户端。
[0027] TCP/IP欺骗的概念已经被完全建立和理解到流行的网络缓存产品通常实施此功能性的程度。通常,“IP欺骗”被理解为保持IP数据包的以下属性:源和目的地IP地址、协议以及源和目的地传输层端口,统称为“5元组”。其还可能可选地保持TCP序列/ACK号,如本领域中将理解。
[0028] 图3示出了通常包括头部310和有效负载320的示例性简化消息300(例如,数据包、帧等)。头部310由具有网络能力的设备使用以路由/转发消息300和其相关有效负载320,并且说明性地包括源地址311、源端口313、目的地地址315、目的地端口317和协议319。还可以存在其他字段、标记、标签、子头部等,但是为了清晰起见未示出。因此,IP欺骗通常意味着发送具有源IP地址311而非自己的地址的IP数据包300。在以上网络100的上下文中,其意味着通过代理120的数据包300:a)的目的地并非代理而是最终目的地,以及b)由代理传递而不会修改源或目的地地址(分别是311和315)。
[0029] 与IP欺骗有关的另一种技术是具有源端口重写的源网络地址转换(SNAT)地址共享。使用动态建立的源端口号来唯一地识别与经过SNAT设备的其他连接共享单个IP地址的连接的概念已经使用了一段时间。此概念的出现解决了SNAT设备所面对的识别与其他连接共享IP地址的哪个源连接应接收特定的返回数据包的问题。SNAT最为常见的使用是将在企业网络内使用的大的私有IP地址池转换成可以用于公共因特网中的小的公共IP地址池。由于SNAT设备通常将私有网络地址空间中的许多源IP地址映射到发送到公共因特网的仅少量源地址,所以单个公共IP地址不再在几个私有IP地址间共享。SNAT将输出的私有地址的源IP地址变成共享的公共地址,但是其不能仅基于响应数据包中的公共IP地址来确定这些连接中的哪一个应接收返回的数据包。
[0030] 为了解决这个问题,SNAT设备生成用于被映射到共享的公共IP地址的每个私有IP源地址的唯一源端口号(313)。当数据包300从因特网返回时,除了公共IP地址之外还使用变成返回的数据包中的目的地端口号(317)的源端口号(313)来识别数据包应被转发到私有IP地址。然而,具有源端口重写的SNAT地址共享并不是完美的解决方案,至少因为其不能维持个别的源IP地址。
[0031] 因此,本文的技术通过将源端口重写到唯一地识别在场中处理请求的代理的范围来标记转向的网络流量。所述技术结合基于端口的重定向来使用以使得仅相关的返回流量转向到代理,而将剩余流量直接传递给用户(客户端)而不进行转向。使用本文的技术,网络透明度仍得以维持,并且关于是否代理特定流的决定被保留在网络代理中,这是网络代理欺骗的当前实施方式的两个主要益处。然而,仅对应于网络缓存决定代理的请求的返回流实际上通过代理,这减少了代理的转发负担。此外,因为所述技术不需要维护返回流量的每个流的状态,所以与其他方法相比的另一个益处是具有更大的可扩展性。对于其中处理数百万流并且维持每个流状态是昂贵的或令人望而却步的高流量情景(诸如ISP)来说,这可能是显著的优点。
[0032] 说明性地,本文描述的技术可以由硬件、软件和/或固件来执行(诸如根据欺骗进程248),其可以各自含有计算机可执行指令,所述指令由处理器220(或接口210的独立处理器)执行以(例如)相应地结合路由进程244和/或代理进程246来执行与本文描述的新颖技术有关的功能。例如,本文的技术可以被处理为扩展到常规协议(诸如各种路由协议或代理协议),并且这样,可以相应地由执行那些协议的领域中理解的类似部件来处理。
[0033] 一般参照图4来描述本文的技术,图4示出各种消息流选择,以下详细描述。请注意,转向机制本身对于技术来说不重要并且可以取决于供应商。例如,WCCP(网络缓存通信协议)允许通过使用IP5元组上的散列将去往特定端口的流量转向和分发到网络缓存场,并且允许使用几个不同技术(诸如,层2转发或GRE隧道技术)来将流量转发到该场。替代地,可以使用诸如PBR的方法来将目的地为所感兴趣的端口/协议的流量转向到特定代理设备。重要的因素在于转向的数据包到达代理时的5元组相对于从由客户端发送的数据包是未修改的。
[0034] 操作地,参照图4,客户端(客户端110)意欲将请求300发送到用于由URL(统一资源定位符)识别的、特定网络目标的内容提供商(CP)。为了发送请求,客户端必须发现原始服务器(OS)130的地址(例如,IP地址),这通常通过经由域名服务(DNS)将URL的域名部分分解为IP地址来进行。此操作的细节对于本文的技术而言不重要,并且将由本领域技术人员理解。基于IP地址,客户端110在路径(1)上发送由路由器140接收的消息300。
[0035] 从客户端发送的请求在具有以下5元组的IP数据包中携带请求URL:
[0036] (源地址311:CLIENT_IP;
[0037] 源端口313:CLIENT_port,
[0038] 目的地地址315:OS_IP,
[0039] 目的地端口317:OS_port,
[0040] 协议319:Request_protocol),
[0041] 其中:“CLIENT_IP”是客户端的地址,“CLIENT_port”是发起请求的客户端的特定端口,“OS_IP”是被请求内容的OS的地址,“OS_port”是客户端所连接的服务器的特定端口(例如,TCP端口80),并且“Request_protocol”是进行请求的特定协议,各自将由本领域技术人员理解。
[0042] 如果基于目的地端口317和协议319认为请求是令人感兴趣的,则其与路由器上的规则进行匹配并且将其转向到代理120(例如,通常到代理场或到特定代理设备)而不修改5元组。也就是说,接收路由器140分析请求,并且基于过滤器匹配,将请求在路径(7)上发送到OS(通过)或者在路径(3)上发送代理/代理场。
[0043] 本文技术所支持的另一个转向技术涉及深度数据包检测(DPI),诸如通过路由器140或独立嵌入式DPI设备。DPI设备本身可以在路径(1)上与图4中的路由器140相嵌,或者几个设备可以包括路由器在路径(3)上将所感兴趣的数据包转向到的场。DPI的任务是除了从IP5元组获得的标准之外使用一些标准来选择特定的代理处理请求,如本领域可以了解。
[0044] 使用任一种转向方法都可以使具有完整的原始5元组的数据包到达代理120。假如保持5元组,则还可以使用其他转向方法。
[0045] 当代理120接收到数据包时,其可以基于一些算法来决定对自客户端的请求是进行服务、代理还是绕过,也就是,该请求是已经被缓存、还是其必须从OS获取、或者是对于缓存该请求没有兴趣。
[0046] 如果在代理中发现所请求的对象(缓存命中),则该代理可以决定为其服务。如果这样,则代理将在路径(4)上的对应响应中将OS IP地址欺骗为源地址311,因此客户端将会相信其在与OS130而非代理120通信。换言之,代理将服务缓存的内容并且使用OS源IP地址与客户端通信,从而对客户端应用是透明的(例如,因为其使用套接字抽象,并且不需要担心源IP地址,如本领域技术人员将理解)。
[0047] 如果在代理中未发现该对象(缓存丢失),则该对象可以被代理(如果意欲缓存流量)或绕过(如果不缓存流量)。在第一种状况下,必须在路径(5)上从OS130获取该对象,并且在路径(6-4-2)上通过代理转发到客户端110,同时将对象潜在地存储在代理上以供将来请求。在路径(5)上从代理到OS的请求与来自客户端的原始请求具有语义上等同的形式,但是具有以下5元组:
[0048] (源地址311:CLIENT_IP;
[0049] 源端口313:PROXY_port,
[0050] 目的地地址315:OS_IP,
[0051] 目的地端口317:OS_port,
[0052] 协议319:Request_protocol),
[0053] 其中变成“PROXY_port”的源端口313是对应于代理的选定代理端口值(例如,允许与相同客户端的连接的通常在1024-65535之间的任何值)。
[0054] 此重写是本文的实施例的关键方面。在此客户端请求中,为OS维持了网络透明度,因为源IP地址311是客户端110的实际地址而非代理的IP地址。源端口313被重写为唯一地识别代理的一组端口之一并且必须基于路由器140上转向规则的用于对应端口(以下解释)。随后在路径(5)上将重写的数据包从代理发送到OS。换言之,代理120发送具有可以唯一地识别代理(例如,场中)的特别端口范围值的被欺骗请求(5),并且还可以支持来自客户端110的多个平行连接。
[0055] 路径(6)上来自OS的响应(“服务器回复”消息300)和对应于对请求的响应的所有后续数据包将具有以下5元组:
[0056] (源地址311:OS_IP;
[0057] 源端口313:OS_port,
[0058] 目的地地址315:CLIENT_IP,
[0059] 目的地端口317:PROXY_port,
[0060] 协议319:Request_protocol)。
[0061] 路由器140说明性地被配置成使用不修改5元组的一些机制(通常与用来在转发路径中转向的机制相同)将来自服务器侧网络135的具有对应于与代理相关的范围的目的地端口317和协议319的所有流量转向到那个代理。这确保将客户端请求被代理的服务器回复发送到正确的代理而非客户端(路径(8))或某个其他代理。因为这样,所以如果使用多于一个代理,则每个代理必须具有唯一识别的源端口范围。还应注意,一旦将连接中的请求/回复转向,则可能所有后续请求也被转向,这是因为对在前一个请求被转向之后通过OS的请求,OS可能更新也可能不更新服务器回复中的序列号(从而表现为不同的流/连接),这取决于文件是否已经被缓存或代理是否已从原始服务器将其获取。
[0062] 请注意,代理可以被配置成当其从客户端接收到TCP连接请求时将SYN消息发送到OS,并且随后将OS初始序列号复制到返回到客户端的TIP连接中作为代理的SYN ACK响应。也就是说,需要在从客户端接收到实际请求之后将被欺骗的SYN ACK从代理发送到客户端(例如,如果协议是TCP)。
[0063] 如果代理120决定绕过请求而非对其代理,则可以简单地通过当在路径(5)上将请求转发到路由器时不重写源端口而是保持输入的客户端请求5元组来进行。当来自OS的响应到达路由器时,其将具有客户端而非代理的目的地端口,并且此响应将在路径(8)上直接转发到客户端而非转向回到代理。
[0064] 请注意,存在来自客户端的请求的源端口值与用来识别代理的源端口值相同的可能性。在此状况下,如果代理选择绕过响应,则返回的流量仍将发送到代理而非客户端。
[0065] 然而,代理仅需要将响应流量转发回到客户端而不进行修改。容易在代理上检测到这种端口冲突,因为在对应于响应的代理上将不存在任何请求状态。假如用来识别代理的端口池与可能的动态端口范围相比而言小,则这种冲突将非常罕见并且将不会对代理造成大的转发负担。
[0066] 本文的技术还为对称路由提供支持,其中对OS的响应不会通过传递原始请求(从客户端或代理)的路由器。只要处理返回流量的所有路由器具有将响应(服务器回复)上的目的地端口317映射到特定代理的相同规则,则响应流量将被正确地转发。
[0067] 图5示出用于根据本文描述的,特别是从转发设备(例如,路由器140)的度的一个或多个实施例的用于透明代理缓存的欺骗技术的一个示例性简化程序。程序500在步骤505开始,并且继续到步骤510,其中如以上更详细地描述,路由器140(或其他转发设备)确定是否将接收到的客户端请求300重定向到代理120,其中客户端请求至少具有请求源地址311作为(客户端110的)客户端地址和请求源端口313作为(也是客户端110的)客户端端口。如上所述,确定是否将接收到的客户端请求重定向到代理设备可以说明性地基于请求目的地端口317和请求协议319和/或深度数据包检测结果。如果在步骤515中,路由器140决定不重定向请求,则在步骤520中,将请求300转发到原始服务器(OS)130。然而,如果在步骤515中决定应重定向客户端请求300,则在步骤525中,路由器140将未改变的客户端请求(相同的客户端源地址和源端口等)相应地转发到代理120。
[0068] 随后,在步骤530中,路由器140可以接收对于客户端请求的服务器回复300,并且在步骤535中,可以相应地确定服务器回复的回复目的地端口317是否对应于代理端口值,例如,在指定范围之内,如以上所描述。(请注意,任何重叠的端口值都由代理处理)。如果在步骤540中确定服务器回复的目的地端口317不是代理端口值,则在步骤545中,将服务器回复转发到(目的地地址315的)适当的客户端110。另一方面,如果在步骤540中,存在目的地端口317内检测出的代理端口值,则在步骤550中,路由器将服务器回复重定向到适当的代理设备(代理120)。例如,如以上所描述,路由器可以基于代理端口值来将服务器回复重定向到特定代理。程序500在步骤555中结束。
[0069] 此外,图6示出用于根据本文描述的、特别是从代理设备(例如,代理120)的角度的一个或多个实施例的用于透明代理缓存的欺骗技术的一个示例性简化程序。程序600在步骤605开始,并且继续到步骤610,其中如以上更详细描述,特定代理120可以接收重定向的客户端请求300,该请求具有请求源地址311作为客户端地址(用于客户端110)和请求源端口313作为客户端端口(用于那个客户端110)。在步骤615中,代理决定服务客户端请求(例如,缓存命中)、代理客户端请求(例如,缓存丢失)还是绕过客户端请求(例如,不感兴趣)。响应于决定代理客户端请求,在步骤620中,代理将客户端请求300转发到具有请求源地址311作为相同的客户端地址并且请求源端口313变成对应于代理120的选定代理端口值的对应服务器(OS130)。还应注意,当代理请求时,代理可以对客户端地址(对客户端110)欺骗SYN ACK消息,如以上所提及。这必须含有与OS SYN ACK相同的序列号。还应注意,SYN ACK是TCP专用的,而本文技术适用于其他传输协议。
[0070] 继续到步骤625,代理120随后可以接收对于客户端请求的重定向的服务器回复300,其中服务器回复具有回复目的地地址315作为客户端地址(用于客户端110)和回复目的地端口317作为选定代理端口值(用于代理120)。具体来说,服务器回复可以由配置成检测回复目的地端口内的选定代理端口值的转发设备(例如,路由器140)来进行重定向,如以上所说明。以上还说明,代理120负责确认客户端请求被代理,并且重定向由于端口重叠状况(也就是说,客户端与对应于代理的选定代理端口值之间的重叠端口值)而是不适当的。例如,在代理设备处接收到服务器回复时,代理120可以检测到服务器回复未被代理,并且这样,将未改变的服务器回复转发到对应于未被代理的客户端请求的客户端。
[0071] 作为步骤615的替代输出,响应于决定服务客户端请求,在步骤630中,代理可以通过具有服务器(OS130)的被欺骗的回复源地址311的被欺骗的服务器回复300来对客户端地址(对客户端110)回复。仍替代地,在步骤635中,响应于决定绕过客户端请求,代理可以将客户端请求相应地转发到具有请求源地址作为客户端地址并且未改变的请求源端口作为客户端端口的对应服务器。程序600说明性地在步骤640中结束。
[0072] 应注意,虽然程序500-600中的某些步骤如上所述可以是可选的,但是图5-6中所示的步骤仅是用于说明的实例,并且可以根据需要包括或排除某些其他步骤。另外,虽然示出特定次序的步骤,但是此排序仅是说明性的,并且在不脱离本文实施例的范围的情况下可以使用任何适合的步骤排列。此外,虽然分开描述程序500-600,但是可以将来自每个程序的某些步骤并入到彼此程序中,并且程序并不打算是相互排他的。
[0073] 因此,本文描述的新颖技术为透明的代理缓存提供欺骗技术。具体来说,本文的技术描述用于将从服务器返回的IP流量路由到欺骗请求的代理或路由到客户端,其中基于返回的数据包的重写的目的地端口而非路由设备中的状态来进行路由决定。当前的欺骗解决方案要么需要将所有返回的流量(被欺骗或不被欺骗)重定向到代理,这对代理造成大的转发负担,要么需要在路由器设备上维持关于哪些流将被重定向的每个流状态,这对处理返回流量的路由设备造成大的负担。
[0074] 本文提出的技术是无状态的并且不具有这些缺点(且因此更加可扩展),因为它们标记返回流量以允许路由器进行关于将流量直接发送到客户端还是发送到代理的简单、无状态的决定,因为请求被欺骗。
[0075] 具体来说,重要的是注意到,本文的技术与以上提及的SNAT源端口技术不同。具体来说,SNAT技术与本文实施例之间的关键概念差异是:
[0076] ——如何在代理设备处进行原始的输入与所得的输出的源IP地址和端口之间的映射,
[0077] ——哪些网络实体由映射的地址和端口识别,以及
[0078] ——实际上如何使用所得的映射来路由返回的流量。
[0079] 使用SNAT源端口技术的设备如下将源映射到目的地:(IP_source,port_source)->(new_IP_source,new_port_source,)。用于特定客户端的源IP地址/端口连接被映射到具有新的源端口号的新共享IP地址。SNAT技术中的“new_IP_source”来自一组可用于SNAT设备的“公共”IP地址。每个“公共”IP地址又具有一组可用源端口,并且从此组中选择new_port_source。映射被储存在SNAT设备中,并且new_port_source从该组可用“公共”IP地址中移除。该映射仅对于流中的第一个数据包进行,后续数据包重复使用此映射。当从“公共”侧接收到响应时,使用所存储的映射将连接容易地映射回到原始客户端源IP地址和端口。
[0080] 然而,本文描述的技术根本不改变客户端的源IP地址,因为其应用在于欺骗源IP地址。此外,其不使用共享地址/源端口组合来识别特定客户端,而是使用分配给特定代理的一个范围的源端口来识别哪个流量由代理拦截,并且哪个特定代理将其拦截:(IP_source,port_source)->(IP_source,new_port_source)。在此状况下,跨代理保持了IP_source,并且new_port_source来自唯一地属于那个代理的一组端口。同样在此状况下,new_port_source识别代理而非特定客户端连接,并且单个代理可以具有多个客户端连接。通过返回目的地IP地址和返回目的地端口来进行回到特定连接的映射(因为单个客户端在不同的源端口上可以具有多个连接)。因此,SNAT源端口重新标记从根本上说不适用于透明代理,因为用于SNAT的所有返回流量旨在通过设计来经过SNAT网关。然而,对于如本文描述的透明网络代理,端口重新标记是用来选择性地转向一些返回流量。
[0081] 此外,一些端口与基于外部无状态端口的转发技术(诸如PBR)结合使用以将返回的流量路由到正确代理或者在不重定向的情况下将流量传递回到客户端。以此方式,源端口用来在转向到网络代理的流量与被传递而不被转向的流量之间进行区别。对于其中发生未转向的连接凑巧使用与用来识别代理的连接相同的源端口的情况而言,代理透明地转发任何未辨认出的返回的流量以确保客户端仍接收返回的流量。
[0082] 虽然示出和描述了提供用于透明代理缓存的欺骗技术的说明性实施例,但是应理解,在本文的实施例的精神和范围内,可以进行各种其他改编和修改。例如,本文关于特定协议和消息格式示出和描述了实施例。然而,实施例在其更广泛的意义上而言不受限制,并且事实上可以相应地通过其他适合的协议或格式来使用。例如,虽然从客户端发送的请求将请求URL携带在具有以上说明性的5元组布置的IP数据包中,但是可以使用其他替代字段,这仍允许本文描述的技术(例如,将源端口改变成代理端口,同时留下源地址作为客户端地址,与所请求的其他字段无关)。
[0083] 以上描述针对特定实施例。然而,将显然,可以对所描述的实施例进行其他改变和修改,获得其部分或全部优点。
[0084] 例如,明确预期本文描述的部件和/或元件可以实施为存储在有形(永久)计算机可读媒体(例如,磁盘/CD/等)上的软件,所述软件具有在计算机上执行的程序指令、硬件、估计或其组合。因此,此描述仅通过实例来进行,而不以任何方式限制本文实施例的范围。因此,所附权利要求的目的在于覆盖所有这些改变和修改,如同它们属于本文实施例的真实精神和范围中一样。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈