首页> 中国专利> 用于透明代理缓存的欺骗技术

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

摘要

在一个实施例中,计算机网络中的代理设备接收重定向客户端请求,其具有请求源地址作为客户端地址并且具有请求源端口作为客户端端口的重定向客户端请求。代理设备随后决定对客户端请求进行服务、代理还是绕过,并且响应于决定代理客户端请求,将客户端请求转发到具有请求源地址作为客户端地址并且请求源端口变成对应于代理的选定代理端口值的对应服务器。此外,代理设备随后可以接收对于客户端请求的重定向服务器回复,所述服务器回复具有回复目的地地址作为客户端地址并且具有回复目的地端口作为选定代理端口值,其中基于回复目的地端口内的选定代理端口值来从转发设备接收重定向的服务器回复。

著录项

  • 公开/公告号CN104160680A

    专利类型发明专利

  • 公开/公告日2014-11-19

    原文格式PDF

  • 申请/专利权人 思科技术公司;

    申请/专利号CN201380012854.5

  • 发明设计人 马丁·安德鲁·奥斯特洛夫斯基;

    申请日2013-03-06

  • 分类号H04L29/08(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人李晓冬

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 03:49:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-01

    授权

    授权

  • 2014-12-17

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20130306

    实质审查的生效

  • 2014-11-19

    公开

    公开

说明书

技术领域

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

背景技术

因特网服务提供商(ISP)网络当前承载大量视听媒体流量。此流量具 有显著的重复程度,一些视频片段可能包括所有媒体流量中的大部分。由 于高成本的网络带宽,特别是在ISP对等点处,缓存此流量的可能性非常 有吸引力。然而,尽管在产业上具有大的兴趣,但是迄今为止缓存尚未广 泛应用于此环境中。部署的主要障碍是如今的缓存网络代理通常不完全透 明。即使网络代理通常可能在不需要明确配置的意义上似乎对客户端透明, 但是一般对内容提供商(CP)是不透明的,因为代理将客户端请求用其自 己的IP地址而非客户端地址转发给CP。此代理据称在应用层(应用是 HTTP)而非在网络层(在此状况下是TCP/IP)透明。缺乏网络透明度意味 着关于做出请求的客户端的重要信息(诸如位置)对CP隐藏。此外,来自 许多客户端的请求可能对于CP来说似乎来自单个源(代理),这使得CP 难以精确地确定有效点击的数量,并且进而减少CP的网络广告收入。

鉴于以上这些和其他有关原因,CP通常反对缓存网络代理,要么对来 自可疑代理的请求进行阻挡,要么通过诸如URL混淆的技术使缓存变得困 难。因此,考虑部署缓存网络代理的ISP需要网络层(而非仅应用层)的 透明度,这尤其意味着通过代理的请求必须保持客户端的源IP地址。这种 在拦截连接的同时的地址保持称为欺骗,即,IP欺骗通常意味着发送源IP 地址并不是自己的地址的IP数据包。

如果代理被内嵌部署,或者使用诸如WCCP(网络缓存通信协议)的 适合的重定向技术,则代理有可能欺骗源IP地址并且保持对CP的网络层 透明度。实际上,许多流行的代理支持这种部署。然而,所有现有被欺骗 的网络缓存解决方案的共同问题在于所有网络流量(从客户端到CP或者从 CP返回到客户端)必须通过网络代理。原因是被欺骗的流量(即使其来自 代理)携带客户端的源IP地址。因此,从CP返回的响应流量的目的地是 客户端而非代理,并且除了代理之外没有网络实体知道欺骗。为了支持欺 骗,到达和来自CP的所有网络流量必须通过网络代理,包括代理决定不缓 存的流。因为代理决定缓存的网络流量的比例可能相对小,所以这意味着 代理的一大部分处理资源可能被浪费来转发应直接路由给用户而非重定向 给代理的返回的数据包。

附图说明

本文的实施例可以通过结合附图参照以下描述来更好理解,附图中相 同的参考数字相同地或功能地指示类似元件,其中:

图1示出一个示例性计算机网络;

图2示出一个示例性网络设备/节点;

图3示出一个消息的示例性视图;

图4示出在计算机网络中通过的消息的实例;

图5示出从路由器的观点用于代理缓存的一个示例性简化程序;以及

图6示出从代理设备的观点用于代理缓存的一个示例性简化程序。

具体实施方式

概述

根据本披露的一个或多个实施例中,计算机网络中的代理设备接收具 有请求源地址作为客户端地址并且具有请求源端口作为客户端端口的重定 向客户端请求。代理设备随后决定对客户端请求进行服务、代理还是绕过, 并且响应于决定代理客户端请求,将客户端请求转发到具有请求源地址作 为客户端地址并且请求源端口变成对应于代理的选定代理端口值的对应服 务器。此外,代理设备随后可以接收对于客户端请求的重定向服务器回复, 服务器回复具有回复目的地地址作为客户端地址并且具有回复目的地端口 作为选定代理端口值,其中服务器回复由配置成检测回复目的地端口内的 选定代理端口值的转发设备来重定向。

此外,根据本披露的一个或多个额外实施例,转发设备(例如,路由 器、交换机等)接收对于客户端请求的服务器回复,并且确定服务器回复 的回复目的地端口是否对应于代理端口值。响应于检测到目的地端口内的 代理端口值,转发设备将服务器回复重定向到适当的代理设备。

描述

计算机网络是由用于在终端节点(诸如个人计算机和工作站或其他设 备(诸如传感器)等)之间传输数据的网络链路和段互连的节点的地理分 布的集合。许多类型的网络可用,范围从局域网(LAN)到广域网(WAN)。 LAN通常通过位于相同的地理物理位置(诸如建筑物或校园)中的专用通 信链路连接节点。另一方面,WAN通常通过远距离通信链路(诸如普通载 波电话线路、光学光路、同步光纤网络(SONET)、同步数字体系(SDH) 链路等)连接地理上分散的节点。

图1是示例性计算机网络100的示意方框图,该网络说明性地包括通 过各种通信方法(例如,在有线或无线链路中)由路由器140互连的节点/ 设备,诸如客户端设备110、代理设备120以及服务器130。例如,消息300 (例如,数据包和/或帧)可以相应地使用预定网络通信协议(诸如某些已 知的有线或无线协议)在计算机网络100的节点/设备之间交换。在此上下 文中,协议由定义节点如何彼此互动的一组规则构成。

本领域技术人员将理解,可以在计算机网络中使用任何数量的节点、 设备、链路等,并且本文所示的视图用于简化。具体来说,在图1中,客 户端设备110或本文的“客户端”代表路由器(通过客户端侧网络115)的 客户端侧上的许多客户端之一,并且是与其他客户端共享的潜在大网络的 一部分。另外,本文的路由器140或“路由器”代表单个路由器、交换机 或配置成将流量转向到代理设备120的路由器/交换机的逻辑群组。路由器 位于网络(服务器侧网络125)的服务器侧的出口点处,其实际上可以是专 用与公用网络之间的边界或者ISP之间的对等点。另外,本文的代理设备 120或“代理”代表单个网络代理设备或网络缓存代理场。路由器140可以 被配置成基于目的地端口号和协议类型(以下描述)将来自客户端侧的所 有感兴趣的网络流量转向到代理120。在如今的因特网中,这通常意味着至 少TCP(传输控制协议)端口80流量(超文本传输协议或HTTP协议), 但是也可以包括候选用于缓存的其他协议和端口。最后,本文的服务器130 或“原始服务器(OS)”代表客户端请求被发送到其IP地址的网络实体。 OS可以是从场选择的服务器,其又可以是内容提供商(CP)网络的一部分。 再次注意,图1中的逻辑拓扑仅是说明性的,并且本文的技术与此特定拓 扑无关。

图2是可以与本文描述的一个或多个实施例一起使用的示例性节点/设 备200的示意性方框图,例如,如以上图1中所示的设备中的任一个,特 别是路由器140和/或代理120。设备可以包括通过系统总线250互连的一 个或多个网络接口210、至少一个处理器220和存储器240。

网络接口210含有用于通过联接到网络100的链路传递数据的机械、 电气和信号电路。网络接口可以被配置成使用各种不同的通信协议传输和/ 或接收数据。另外请注意,节点可以具有两种不同类型的网络连接210,例 如无线和有线/物理连接,并且本文的视图仅用于说明。

存储器240包括可以由处理器220和网络接口210寻址的用于存储与 本文描述的实施例相关联的软件程序和数据结构的多个存储位置。处理器 220可以包括适于执行软件程序和操纵数据结构245的必要元件或逻辑。操 作系统242(其中部分通常贮存在存储器240中并且由处理器执行)功能地 组织设备,尤其是通过在设备上执行的软件进程和/或服务的支持调用操作。 这些软件进程和/或服务可以包括在至少路由器140上的路由程序/服务244 和在代理120上的代理缓存进程246。此外,每个设备可以具有说明性的欺 骗(子)进程248,如本文所描述。请注意,虽然进程是在集中式存储器 240中示出,但是替代实施例提供一个或多个将专门在网络接口210中操作 的进程。

具体来说,路由进程(服务)244(用于路由器140)含有计算机可执 行指令,所述指令由处理器220执行以执行由一个或多个路由协议提供的 功能,如本领域技术人员将理解并如本文另外描述。例如,这些功能可以 被配置成管理含有例如用来进行路由/转发决定的路由/转发表(数据结构 245)。此外,代理进程246(用于代理120)含有计算机可执行指令,所 述指令由处理器220执行以执行由一个或多个代理协议提供的功能,如本 领域技术人员将理解并也如本文另外描述。

本领域技术人员将清楚,可以使用其他处理器和存储器类型(包括各 种计算机可读媒体)来储存和执行涉及本文描述的技术的程序指令。另外, 虽然描述说明各种进程,但是明确预期可以将各种进程实施为配置成根据 本文的技术(例如,根据类似进程的功能性)来操作的模块。另外,虽然 分开展示进程,但是本领域技术人员将了解,进程可以是其他进程内的例 程或模块。

如以上所提及,因特网服务提供商(ISP)网络当前携带大量视听媒体 流量,并且此流量具有显著的重复程度:一些视频片段可能包括所有媒体 流量中的大部分。由于高成本的网络带宽,特别是在ISP对等点处,缓存 此流量的可能性非常有吸引力。然而,部署的主要障碍是如今的缓存网络 代理通常不完全透明。

存在两种本领域通常理解的欺骗。第一,客户端IP地址欺骗是向原始 服务器(OS)130欺骗客户端的IP地址。客户端110进行目的地到OS130 的连接,将数据包转向到代理120,该代理接受连接并且使用客户端的源IP 地址潜在地进行到OS的另一个连接。第二,服务器IP地址欺骗是将OS 的响应转向到代理120,进行处理并且以一些形式用OS的源地址而非代理 的源地址的转到客户端。

存在几个进行IP欺骗的原因。第一是因为服务器计费。例如,许多服 务器鉴于各种原因(包括统计和广告)追踪客户端连接。一些服务器可能 会对看起来经过代理的连接(其隐藏客户端的IP地址)进行阻挡。第二个 原因是因为安全和/或认证,其中一些网站基于IP地址来认证内容,而第三 个原因是因为地理定位,其中一些服务试图基于IP地址来定位客户端。

TCP/IP欺骗的概念已经被完全建立和理解到流行的网络缓存产品通常 实施此功能性的程度。通常,“IP欺骗”被理解为保持IP数据包的以下属 性:源和目的地IP地址、协议以及源和目的地传输层端口,统称为“5元 组”。其还可能可选地保持TCP序列/ACK号,如本领域中将理解。

图3示出了通常包括头部310和有效负载320的示例性简化消息300 (例如,数据包、帧等)。头部310由具有网络能力的设备使用以路由/转 发消息300和其相关有效负载320,并且说明性地包括源地址311、源端口 313、目的地地址315、目的地端口317和协议319。还可以存在其他字段、 标记、标签、子头部等,但是为了清晰起见未示出。因此,IP欺骗通常意 味着发送具有源IP地址311而非自己的地址的IP数据包300。在以上网络 100的上下文中,其意味着通过代理120的数据包300:a)的目的地并非代 理而是最终目的地,以及b)由代理传递而不会修改源或目的地地址(分别 是311和315)。

与IP欺骗有关的另一种技术是具有源端口重写的源网络地址转换 (SNAT)地址共享。使用动态建立的源端口号来唯一地识别与经过SNAT 设备的其他连接共享单个IP地址的连接的概念已经使用了一段时间。此概 念的出现解决了SNAT设备所面对的识别与其他连接共享IP地址的哪个源 连接应接收特定的返回数据包的问题。SNAT最为常见的使用是将在企业网 络内使用的大的私有IP地址池转换成可以用于公共因特网中的小的公共IP 地址池。由于SNAT设备通常将私有网络地址空间中的许多源IP地址映射 到发送到公共因特网的仅少量源地址,所以单个公共IP地址不再在几个私 有IP地址间共享。SNAT将输出的私有地址的源IP地址变成共享的公共地 址,但是其不能仅基于响应数据包中的公共IP地址来确定这些连接中的哪 一个应接收返回的数据包。

为了解决这个问题,SNAT设备生成用于被映射到共享的公共IP地址 的每个私有IP源地址的唯一源端口号(313)。当数据包300从因特网返回 时,除了公共IP地址之外还使用变成返回的数据包中的目的地端口号(317) 的源端口号(313)来识别数据包应被转发到私有IP地址。然而,具有源端 口重写的SNAT地址共享并不是完美的解决方案,至少因为其不能维持个 别的源IP地址。

因此,本文的技术通过将源端口重写到唯一地识别在场中处理请求的 代理的范围来标记转向的网络流量。所述技术结合基于端口的重定向来使 用以使得仅相关的返回流量转向到代理,而将剩余流量直接传递给用户(客 户端)而不进行转向。使用本文的技术,网络透明度仍得以维持,并且关 于是否代理特定流的决定被保留在网络代理中,这是网络代理欺骗的当前 实施方式的两个主要益处。然而,仅对应于网络缓存决定代理的请求的返 回流实际上通过代理,这减少了代理的转发负担。此外,因为所述技术不 需要维护返回流量的每个流的状态,所以与其他方法相比的另一个益处是 具有更大的可扩展性。对于其中处理数百万流并且维持每个流状态是昂贵 的或令人望而却步的高流量情景(诸如ISP)来说,这可能是显著的优点。

说明性地,本文描述的技术可以由硬件、软件和/或固件来执行(诸如 根据欺骗进程248),其可以各自含有计算机可执行指令,所述指令由处理 器220(或接口210的独立处理器)执行以(例如)相应地结合路由进程 244和/或代理进程246来执行与本文描述的新颖技术有关的功能。例如, 本文的技术可以被处理为扩展到常规协议(诸如各种路由协议或代理协 议),并且这样,可以相应地由执行那些协议的领域中理解的类似部件来 处理。

一般参照图4来描述本文的技术,图4示出各种消息流选择,以下详 细描述。请注意,转向机制本身对于技术来说不重要并且可以取决于供应 商。例如,WCCP(网络缓存通信协议)允许通过使用IP5元组上的散列 将去往特定端口的流量转向和分发到网络缓存场,并且允许使用几个不同 技术(诸如,层2转发或GRE隧道技术)来将流量转发到该场。替代地, 可以使用诸如PBR的方法来将目的地为所感兴趣的端口/协议的流量转向 到特定代理设备。重要的因素在于转向的数据包到达代理时的5元组相对 于从由客户端发送的数据包是未修改的。

操作地,参照图4,客户端(客户端110)意欲将请求300发送到用于 由URL(统一资源定位符)识别的、特定网络目标的内容提供商(CP)。 为了发送请求,客户端必须发现原始服务器(OS)130的地址(例如,IP 地址),这通常通过经由域名服务(DNS)将URL的域名部分分解为IP 地址来进行。此操作的细节对于本文的技术而言不重要,并且将由本领域 技术人员理解。基于IP地址,客户端110在路径(1)上发送由路由器140 接收的消息300。

从客户端发送的请求在具有以下5元组的IP数据包中携带请求URL:

(源地址311:CLIENT_IP;

源端口313:CLIENT_port,

目的地地址315:OS_IP,

目的地端口317:OS_port,

协议319:Request_protocol),

其中:“CLIENT_IP”是客户端的地址,“CLIENT_port”是发起请求 的客户端的特定端口,“OS_IP”是被请求内容的OS的地址,“OS_port” 是客户端所连接的服务器的特定端口(例如,TCP端口80),并且 “Request_protocol”是进行请求的特定协议,各自将由本领域技术人员理 解。

如果基于目的地端口317和协议319认为请求是令人感兴趣的,则其 与路由器上的规则进行匹配并且将其转向到代理120(例如,通常到代理场 或到特定代理设备)而不修改5元组。也就是说,接收路由器140分析请 求,并且基于过滤器匹配,将请求在路径(7)上发送到OS(通过)或者 在路径(3)上发送代理/代理场。

本文技术所支持的另一个转向技术涉及深度数据包检测(DPI),诸如 通过路由器140或独立嵌入式DPI设备。DPI设备本身可以在路径(1)上 与图4中的路由器140相嵌,或者几个设备可以包括路由器在路径(3)上 将所感兴趣的数据包转向到的场。DPI的任务是除了从IP5元组获得的标 准之外使用一些标准来选择特定的代理处理请求,如本领域可以了解。

使用任一种转向方法都可以使具有完整的原始5元组的数据包到达代 理120。假如保持5元组,则还可以使用其他转向方法。

当代理120接收到数据包时,其可以基于一些算法来决定对自客户端 的请求是进行服务、代理还是绕过,也就是,该请求是已经被缓存、还是 其必须从OS获取、或者是对于缓存该请求没有兴趣。

如果在代理中发现所请求的对象(缓存命中),则该代理可以决定为 其服务。如果这样,则代理将在路径(4)上的对应响应中将OS IP地址欺 骗为源地址311,因此客户端将会相信其在与OS130而非代理120通信。 换言之,代理将服务缓存的内容并且使用OS源IP地址与客户端通信,从 而对客户端应用是透明的(例如,因为其使用套接字抽象,并且不需要担 心源IP地址,如本领域技术人员将理解)。

如果在代理中未发现该对象(缓存丢失),则该对象可以被代理(如 果意欲缓存流量)或绕过(如果不缓存流量)。在第一种状况下,必须在 路径(5)上从OS130获取该对象,并且在路径(6-4-2)上通过代理转发 到客户端110,同时将对象潜在地存储在代理上以供将来请求。在路径(5) 上从代理到OS的请求与来自客户端的原始请求具有语义上等同的形式,但 是具有以下5元组:

(源地址311:CLIENT_IP;

源端口313:PROXY_port,

目的地地址315:OS_IP,

目的地端口317:OS_port,

协议319:Request_protocol),

其中变成“PROXY_port”的源端口313是对应于代理的选定代理端口 值(例如,允许与相同客户端的连接的通常在1024-65535之间的任何值)。

此重写是本文的实施例的关键方面。在此客户端请求中,为OS维持了 网络透明度,因为源IP地址311是客户端110的实际地址而非代理的IP地 址。源端口313被重写为唯一地识别代理的一组端口之一并且必须基于路 由器140上转向规则的用于对应端口(以下解释)。随后在路径(5)上将 重写的数据包从代理发送到OS。换言之,代理120发送具有可以唯一地识 别代理(例如,场中)的特别端口范围值的被欺骗请求(5),并且还可以 支持来自客户端110的多个平行连接。

路径(6)上来自OS的响应(“服务器回复”消息300)和对应于对 请求的响应的所有后续数据包将具有以下5元组:

(源地址311:OS_IP;

源端口313:OS_port,

目的地地址315:CLIENT_IP,

目的地端口317:PROXY_port,

协议319:Request_protocol)。

路由器140说明性地被配置成使用不修改5元组的一些机制(通常与 用来在转发路径中转向的机制相同)将来自服务器侧网络135的具有对应 于与代理相关的范围的目的地端口317和协议319的所有流量转向到那个 代理。这确保将客户端请求被代理的服务器回复发送到正确的代理而非客 户端(路径(8))或某个其他代理。因为这样,所以如果使用多于一个代 理,则每个代理必须具有唯一识别的源端口范围。还应注意,一旦将连接 中的请求/回复转向,则可能所有后续请求也被转向,这是因为对在前一个 请求被转向之后通过OS的请求,OS可能更新也可能不更新服务器回复中 的序列号(从而表现为不同的流/连接),这取决于文件是否已经被缓存或 代理是否已从原始服务器将其获取。

请注意,代理可以被配置成当其从客户端接收到TCP连接请求时将 SYN消息发送到OS,并且随后将OS初始序列号复制到返回到客户端的 TIP连接中作为代理的SYN ACK响应。也就是说,需要在从客户端接收到 实际请求之后将被欺骗的SYN ACK从代理发送到客户端(例如,如果协议 是TCP)。

如果代理120决定绕过请求而非对其代理,则可以简单地通过当在路 径(5)上将请求转发到路由器时不重写源端口而是保持输入的客户端请求 5元组来进行。当来自OS的响应到达路由器时,其将具有客户端而非代理 的目的地端口,并且此响应将在路径(8)上直接转发到客户端而非转向回 到代理。

请注意,存在来自客户端的请求的源端口值与用来识别代理的源端口 值相同的可能性。在此状况下,如果代理选择绕过响应,则返回的流量仍 将发送到代理而非客户端。

然而,代理仅需要将响应流量转发回到客户端而不进行修改。容易在 代理上检测到这种端口冲突,因为在对应于响应的代理上将不存在任何请 求状态。假如用来识别代理的端口池与可能的动态端口范围相比而言小, 则这种冲突将非常罕见并且将不会对代理造成大的转发负担。

本文的技术还为对称路由提供支持,其中对OS的响应不会通过传递原 始请求(从客户端或代理)的路由器。只要处理返回流量的所有路由器具 有将响应(服务器回复)上的目的地端口317映射到特定代理的相同规则, 则响应流量将被正确地转发。

图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。

随后,在步骤530中,路由器140可以接收对于客户端请求的服务器 回复300,并且在步骤535中,可以相应地确定服务器回复的回复目的地端 口317是否对应于代理端口值,例如,在指定范围之内,如以上所描述。 (请注意,任何重叠的端口值都由代理处理)。如果在步骤540中确定服 务器回复的目的地端口317不是代理端口值,则在步骤545中,将服务器 回复转发到(目的地地址315的)适当的客户端110。另一方面,如果在步 骤540中,存在目的地端口317内检测出的代理端口值,则在步骤550中, 路由器将服务器回复重定向到适当的代理设备(代理120)。例如,如以上 所描述,路由器可以基于代理端口值来将服务器回复重定向到特定代理。 程序500在步骤555中结束。

此外,图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专用的,而本 文技术适用于其他传输协议。

继续到步骤625,代理120随后可以接收对于客户端请求的重定向的服 务器回复300,其中服务器回复具有回复目的地地址315作为客户端地址(用 于客户端110)和回复目的地端口317作为选定代理端口值(用于代理120)。 具体来说,服务器回复可以由配置成检测回复目的地端口内的选定代理端 口值的转发设备(例如,路由器140)来进行重定向,如以上所说明。以上 还说明,代理120负责确认客户端请求被代理,并且重定向由于端口重叠 状况(也就是说,客户端与对应于代理的选定代理端口值之间的重叠端口 值)而是不适当的。例如,在代理设备处接收到服务器回复时,代理120 可以检测到服务器回复未被代理,并且这样,将未改变的服务器回复转发 到对应于未被代理的客户端请求的客户端。

作为步骤615的替代输出,响应于决定服务客户端请求,在步骤630 中,代理可以通过具有服务器(OS130)的被欺骗的回复源地址311的被 欺骗的服务器回复300来对客户端地址(对客户端110)回复。仍替代地, 在步骤635中,响应于决定绕过客户端请求,代理可以将客户端请求相应 地转发到具有请求源地址作为客户端地址并且未改变的请求源端口作为客 户端端口的对应服务器。程序600说明性地在步骤640中结束。

应注意,虽然程序500-600中的某些步骤如上所述可以是可选的,但是 图5-6中所示的步骤仅是用于说明的实例,并且可以根据需要包括或排除某 些其他步骤。另外,虽然示出特定次序的步骤,但是此排序仅是说明性的, 并且在不脱离本文实施例的范围的情况下可以使用任何适合的步骤排列。 此外,虽然分开描述程序500-600,但是可以将来自每个程序的某些步骤并 入到彼此程序中,并且程序并不打算是相互排他的。

因此,本文描述的新颖技术为透明的代理缓存提供欺骗技术。具体来 说,本文的技术描述用于将从服务器返回的IP流量路由到欺骗请求的代理 或路由到客户端,其中基于返回的数据包的重写的目的地端口而非路由设 备中的状态来进行路由决定。当前的欺骗解决方案要么需要将所有返回的 流量(被欺骗或不被欺骗)重定向到代理,这对代理造成大的转发负担, 要么需要在路由器设备上维持关于哪些流将被重定向的每个流状态,这对 处理返回流量的路由设备造成大的负担。

本文提出的技术是无状态的并且不具有这些缺点(且因此更加可扩 展),因为它们标记返回流量以允许路由器进行关于将流量直接发送到客 户端还是发送到代理的简单、无状态的决定,因为请求被欺骗。

具体来说,重要的是注意到,本文的技术与以上提及的SNAT源端口 技术不同。具体来说,SNAT技术与本文实施例之间的关键概念差异是:

——如何在代理设备处进行原始的输入与所得的输出的源IP地址和端 口之间的映射,

——哪些网络实体由映射的地址和端口识别,以及

——实际上如何使用所得的映射来路由返回的流量。

使用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地址和端口。

然而,本文描述的技术根本不改变客户端的源IP地址,因为其应用在 于欺骗源IP地址。此外,其不使用共享地址/源端口组合来识别特定客户端, 而是使用分配给特定代理的一个范围的源端口来识别哪个流量由代理拦 截,并且哪个特定代理将其拦截:(IP_source,port_source)->(IP_source, new_port_source)。在此状况下,跨代理保持了IP_source,并且 new_port_source来自唯一地属于那个代理的一组端口。同样在此状况下, new_port_source识别代理而非特定客户端连接,并且单个代理可以具有多 个客户端连接。通过返回目的地IP地址和返回目的地端口来进行回到特定 连接的映射(因为单个客户端在不同的源端口上可以具有多个连接)。因 此,SNAT源端口重新标记从根本上说不适用于透明代理,因为用于SNAT 的所有返回流量旨在通过设计来经过SNAT网关。然而,对于如本文描述 的透明网络代理,端口重新标记是用来选择性地转向一些返回流量。

此外,一些端口与基于外部无状态端口的转发技术(诸如PBR)结合 使用以将返回的流量路由到正确代理或者在不重定向的情况下将流量传递 回到客户端。以此方式,源端口用来在转向到网络代理的流量与被传递而 不被转向的流量之间进行区别。对于其中发生未转向的连接凑巧使用与用 来识别代理的连接相同的源端口的情况而言,代理透明地转发任何未辨认 出的返回的流量以确保客户端仍接收返回的流量。

虽然示出和描述了提供用于透明代理缓存的欺骗技术的说明性实施 例,但是应理解,在本文的实施例的精神和范围内,可以进行各种其他改 编和修改。例如,本文关于特定协议和消息格式示出和描述了实施例。然 而,实施例在其更广泛的意义上而言不受限制,并且事实上可以相应地通 过其他适合的协议或格式来使用。例如,虽然从客户端发送的请求将请求 URL携带在具有以上说明性的5元组布置的IP数据包中,但是可以使用其 他替代字段,这仍允许本文描述的技术(例如,将源端口改变成代理端口, 同时留下源地址作为客户端地址,与所请求的其他字段无关)。

以上描述针对特定实施例。然而,将显然,可以对所描述的实施例进 行其他改变和修改,获得其部分或全部优点。

例如,明确预期本文描述的部件和/或元件可以实施为存储在有形(永 久)计算机可读媒体(例如,磁盘/CD/等)上的软件,所述软件具有在计 算机上执行的程序指令、硬件、估计或其组合。因此,此描述仅通过实例 来进行,而不以任何方式限制本文实施例的范围。因此,所附权利要求的 目的在于覆盖所有这些改变和修改,如同它们属于本文实施例的真实精神 和范围中一样。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号