用于高效的网络地址转换和应用层网关处理的装置和方法转让专利

申请号 : CN201280062382.X

文献号 : CN103999435B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : V·S·K·万格拉A·米特拉R·特里帕蒂

申请人 : 高通股份有限公司

摘要 :

公开了用于高效的NAT和ALG处理的装置和方法。示例性的方法包括下面的操作:对通过连接所接收的分组进行深度扫描,以确定要对该分组执行的应用层网关(ALG)处理;将该连接与ALG处理进行关联;以及基于所述关联,对通过该连接所接收的额外分组进行转发以接收ALG处理,使得绕过对这些额外的分组的深度扫描。示例性的装置包括:处理器,其用于对通过连接所接收的分组进行深度扫描,以确定要对该分组执行的ALG处理;数据库,其用于将该连接与ALG处理进行关联;以及分组发射机,其用于基于所述关联,对通过该连接所接收的其它分组进行转发以接收ALG处理,使得绕过对这些额外的分组的深度扫描。

权利要求 :

1.一种用于进行分组路由的方法,包括:

对通过选择的连接接收的分组进行深度扫描,以确定要对所述分组执行的选择的应用层网关(ALG)处理;

响应于所述深度扫描在连接数据库中生成条目,其中,所述条目将所述选择的连接与所述选择的ALG处理进行关联;

基于所述条目,绕过对通过所述选择的连接接收的额外分组的深度扫描;

使用信息标记所述分组和所述额外分组中的每一个以形成标记分组,并且其中与每个标记分组相关联的所述信息指示要对该标记分组执行的ALG处理;

将选择的标记分组分别输入到与选择的ALG引擎相关联的选择的输入队列;以及如果确定针对其它标记分组不需要ALG处理,则向网络地址转换(NAT)处理模块发送所述其它标记分组。

2.根据权利要求1所述的方法,还包括:

维持对与一个或多个ALG处理相关联的一个或多个规则分别进行标识的规则数据库;

以及

确定所述分组满足所述一个或多个规则中的哪一些,以确定所述选择的ALG处理。

3.根据权利要求1所述的方法,还包括:维持所述连接数据库以将连接与ALG处理进行关联。

4.根据权利要求1所述的方法,所述深度扫描包括:对分组报头和分组有效载荷中的至少一个进行扫描,以确定要对所述分组执行的所述选择的应用层网关(ALG)处理。

5.根据权利要求1所述的方法,还包括:

从所述选择的ALG引擎接收经处理的分组;以及

将所述经处理的分组转发给所述NAT处理模块。

6.根据权利要求5所述的方法,所述接收经处理的分组包括:分别从与所述选择的ALG引擎相关联的选择的输出队列接收所述经处理的分组。

7.一种用于进行分组路由的装置,包括:

处理器,其被配置为对通过选择的连接接收的分组进行深度扫描,以确定要对所述分组执行的选择的应用层网关(ALG)处理,以及在连接数据库中生成条目,所述条目将所述选择的连接与所述选择的ALG处理进行关联,所述处理器还被配置为基于所述条目绕过对通过所述选择的连接接收的额外分组的深度扫描,以及使用信息标记所述分组和所述额外分组中的每一个以形成标记分组,并且其中与每个标记分组相关联的所述信息指示要对该标记分组执行的ALG处理;以及分组发射机,其被配置为将选择的标记分组分别输入到与选择的ALG引擎相关联的选择的输入队列,以及如果确定针对其它标记分组不需要ALG处理,则向网络地址转换(NAT)处理模块发送所述其它标记分组。

8.根据权利要求7所述的装置,所述处理器被配置为:维持对与一个或多个ALG处理相关联的一个或多个规则分别进行标识的规则数据库;

以及

确定所述分组满足所述一个或多个规则中的哪一些,以确定所述选择的ALG处理。

9.根据权利要求7所述的装置,所述数据库被配置为:维持连接和ALG处理之间的关联。

10.根据权利要求7所述的装置,所述处理器被配置为:对分组报头和分组有效载荷中的至少一个进行深度扫描,以确定要对所述分组执行的所述选择的应用层网关(ALG)处理。

11.根据权利要求7所述的装置,还包括:

分组接收机,其被配置为从所述选择的ALG引擎接收经处理的分组,以及向所述NAT处理模块发送所述经处理的分组。

12.根据权利要求11所述的装置,所述分组接收机被配置为分别从与所述选择的ALG引擎相关联的选择的输出队列接收所述经处理的分组。

13.一种用于进行分组路由的装置,包括:

用于对通过选择的连接接收的分组进行深度扫描,以确定要对所述分组执行的选择的应用层网关(ALG)处理的单元;

用于响应于所述深度扫描在连接数据库中生成条目的单元,其中,所述条目将所述选择的连接与所述选择的ALG处理进行关联;

用于基于所述条目,绕过对通过所述选择的连接接收的额外分组的深度扫描的单元;

用于使用信息标记所述分组和所述额外分组中的每一个以形成标记分组的单元,并且其中与每个标记分组相关联的所述信息指示要对该标记分组执行的ALG处理;

用于将选择的标记分组分别输入到与选择的ALG引擎相关联的选择的输入队列的单元;以及用于如果确定针对其它标记分组不需要ALG处理,则向网络地址转换(NAT)处理模块发送所述其它标记分组的单元。

14.根据权利要求13所述的装置,还包括:

用于维持对与一个或多个ALG处理相关联的一个或多个规则分别进行标识的规则数据库的单元;以及用于确定所述分组满足所述一个或多个规则中的哪一些,以确定所述选择的ALG处理的单元。

15.根据权利要求13所述的装置,还包括:用于维持所述连接数据库以将连接与ALG处理进行关联的单元。

16.根据权利要求13所述的装置,所述用于深度扫描的单元包括:用于对分组报头和分组有效载荷中的至少一个进行深度扫描,以确定要对所述分组执行的所述选择的应用层网关(ALG)处理的单元。

17.根据权利要求13所述的装置,还包括:

用于从所述选择的ALG引擎接收经处理的分组的单元;以及用于向所述NAT处理模块转发所述经处理的分组的单元。

18.根据权利要求17所述的装置,所述用于接收经处理的分组的单元包括:用于分别从与所述选择的ALG引擎相关联的选择的输出队列接收所述经处理的分组的单元。

说明书 :

用于高效的网络地址转换和应用层网关处理的装置和方法

技术领域

[0001] 概括地说,本申请涉及无线通信系统的操作,具体地说,本申请涉及实现高效的分组路由。

背景技术

[0002] 网络地址转换(NAT)用于扩展网络的可使用地址空间。在一种实现中,NAT模块只转换数据分组的IP/传输报头信息。这影响在数据分组有效载荷中向它们的对等体传输网络IP/端口信息的应用,这是由于NAT模块不对该信息进行转换。由于NAT模块可能拒绝这些IP/端口上的输入分组连接,因此这导致丢弃的分组。
[0003] 应用层网关(ALG)通过将应用有效载荷中嵌入的IP/端口信息转换成NAT外部的IP/端口,来实现特定于应用的NAT穿越(traversal)。ALG可以与NAT模块交互以允许输入的数据连接,或者在NAT模块与外部领域中的对等体通信的后台,执行实现应用所需要的其它操作。
[0004] 不幸地,在传统系统中,ALG是特定于应用的,并且由于它们对应用有效载荷进行解析来搜索嵌入的IP/端口信息,因此引入了显著的处理延迟。如果在NAT处理路径中直接引入这些延迟,则这些延迟可能影响所有分组流,从而导致往返时间(RTT)的不适当的增加,并且因此还使整个吞吐量下降。另外,无线嵌入设备(或者移动路由器)在CPU带宽方面受到限制,这意味着NAT处理的增加将影响通用系统性能。此外,由于ALG增加而导致的增加的NAT处理还将使移动路由器消耗更多的功率,这导致电池的更快速消耗和频繁的充电。
[0005] 因此,期望具有一种提供高效的NAT和ALG处理以克服如上所述的与传统系统相关联的问题的系统。

发明内容

[0006] 在一个或多个示例性实施例中,提供了一种用于提高路由器(例如,移动路由器)中的NAT-ALG处理的效率的包括装置和方法的系统。在一个示例性实施例中,维持用于将特定连接的分组与选择的ALG处理相关联的数据库。当接收到额外的分组时,可以根据该数据库容易地且快速地确定针对每一个分组所需要的ALG处理,从而避免需要对每一个分组进行深度扫描并且查找ALG规则来确定其ALG处理需求。每一个ALG处理还包括其自己的输入/输出队列,因此进一步增加了NAT处理效率。
[0007] 在一个方面,提供了一种用于进行分组路由的方法,该方法包括:对通过选择的连接接收的分组进行深度扫描,以确定要对所述分组执行的选择的应用层网关(ALG)处理;将所选择的连接与所选择的ALG处理进行关联;以及基于所述关联,对通过所选择的连接接收的额外分组进行转发以接收所选择的ALG处理,使得绕过对所述额外分组的深度扫描。
[0008] 在一个方面,提供了一种用于进行分组路由的装置,该装置包括:处理器,其被配置为对通过选择的连接接收的分组进行深度扫描,以确定要对所述分组执行的选择的应用层网关(ALG)处理;数据库,其被配置为将所选择的连接与所选择的ALG处理进行关联;以及分组发射机,其被配置为基于所述关联,对通过所选择的连接接收的额外分组进行转发以接收所选择的ALG处理,使得绕过对所述额外分组的深度扫描。
[0009] 在一个方面,提供了一种用于进行分组路由的装置,该装置包括:用于对通过选择的连接接收的分组进行深度扫描,以确定要对所述分组执行的选择的应用层网关(ALG)处理的单元;用于将所选择的连接与所选择的ALG处理进行关联的单元;以及用于基于所述关联,对通过所选择的连接接收的额外分组进行转发以接收所选择的ALG处理,使得绕过对所述额外分组的深度扫描的单元。
[0010] 在一个方面,提供了一种用于进行分组路由的计算机程序产品。所述计算机程序产品包括非临时性计算机可读介质,非临时性计算机可读介质体现可由处理器执行以进行以下操作的指令:对通过选择的连接接收的分组进行深度扫描,以确定要对所述分组执行的选择的应用层网关(ALG)处理;将所选择的连接与所选择的ALG处理进行关联;以及基于所述关联,对通过所选择的连接接收的额外分组进行转发以接收所选择的ALG处理,使得绕过对所述额外分组的深度扫描。
[0011] 在阅读下文阐述的对附图、具体实施方式和权利要求书的简短描述以后,其它方面将变得显而易见。

附图说明

[0012] 参照下面结合附图给出的详细描述,本文描述的上述方面将变得更加显而易见,其中:
[0013] 图1示出了用于在路由器使用的传统NAT配置;
[0014] 图2示出了用于高效的NAT和ALG处理的装置的示例性实施例;
[0015] 图3示出了示例性NAT查找模块;
[0016] 图4示出了示例性分类模块;
[0017] 图5示出了示例性规则数据库;
[0018] 图6示出了示例性连接数据库;
[0019] 图7描绘了用于执行NAT处理的示例性方法,其中该方法减少分组扫描需求和对ALG规则的表格查找,从而提供增加的效率;
[0020] 图8示出了用于分组分类和传输的示例性方法;
[0021] 图9示出了示例性NAT查找装置;
[0022] 图10示出了示例性分组分类装置;
[0023] 图11描绘了用于执行减少分组扫描需求的NAT处理的示例性方法;以及[0024] 图12示出了用于分组分类和传输的示例性方法。

具体实施方式

[0025] 下面的说明描述了用于提高路由器(例如,移动路由器)中的NAT-ALG处理的效率的包括装置和方法的系统。该系统特别适合于结合移动设备来使用,但也可以结合作为路由器进行操作的任何类型的设备来使用。
[0026] 图1示出了用于在路由器使用的传统NAT配置100。配置100包括NAT装置102,NAT装置102通过局域网(LAN)连接104来接收和发送分组。NAT装置102包括NAT查找模块106、一个或多个ALG引擎108和NAT处理模块110。
[0027] 在操作期间,从LAN接收的分组流到NAT查找模块106,其中在NAT查找模块106处,对这些分组进行扫描以确定要执行哪一种ALG处理(如果有的话)。例如,ALG处理操作以根据这些分组的有效载荷来确定任何应用规范信息,其中该信息将在对这些分组进行路由时使用。在扫描之后,将这些分组传送给适当的ALG引擎108。在ALG引擎108进行的处理之后,这些分组流到NAT处理模块110,其中在NAT处理模块110处,确定用于这些分组的目的地路由地址。随后,在广域网(WAN)连接112上将这些分组发送给目的地地址。对于在相反的方向上行进的分组,该处理是相反的。
[0028] NAT配置100描绘了用于执行ALG处理的次最佳配置,这是由于直接在NAT数据路径中处理这些分组。由ALG引擎处理的分组可以造成当处理在输入队列中等待的其它分组时发生延迟,这导致建立输入队列,从而增加所有分组流的RTT。如果ALG处理任务不够快,则队列可能被快速地建立,从而导致分组丢失。对于TCP连接,这转换成可能的超时和回退,并最终造成较低的吞吐量。维持的同步处理还造成CPU的不高效使用,从而减少了系统的空闲时间并且增加了电池消耗。
[0029] 图2示出了用于高效的NAT和ALG处理的系统200的示例性实施例。在各种实现中,针对LAN和WWAN处理或者为了处理与任何类型的连接相关联的分组,可以对称/非对称地布置ALG处理。系统200使ALG处理是异步的,并且执行至少下面四个主要功能。
[0030] 1、分组查找
[0031] 2、分类和异步分组操纵
[0032] 3、有效载荷转换
[0033] 4、分组路由
[0034] 系统200包括NAT查找模块202、分类和异步分组操纵器206(其还称为“分组操纵器”)和NAT处理模块212。系统200还包括一个或多个ALG引擎208,并且每一个ALG引擎包括相关联的输入/输出队列210。
[0035] 使用关于如何对与特定的应用相关联的分组进行处理的规则,来对NAT查找模块202进行初始化。例如,每一个ALG引擎208向NAT查找模块202提供规则信息,使得可以在NAT查找模块202处维持规则数据库。该规则数据库包括规定各种分组类型的一组规则,并且每组规则与将用于处理该相关联的分组类型的相应ALG引擎相关联。可以(例如通过用户输入或者通过使用从其它网络实体接收的信息)使用任何其它输入来初始化、更新或者维持该规则数据库。
[0036] NAT查找模块202还包括连接数据库。该连接数据库将特定连接的分组与特定的ALG引擎进行关联。这允许将特定连接的分组高效地传送到适当的ALG引擎,而无需对与该连接相关联的每一个分组都进行深度扫描。
[0037] 在示例性操作期间,NAT查找模块202从LAN204接收要被路由到无线WAN214的分组。NAT查找模块202首先确定接收的分组是否与已在该连接数据库中标识的连接相关联。如果该分组与连接数据库中标识的任何连接都不相关联,则将该分组视作新连接的第一分组。假定该分组是新连接的第一分组,则对该分组进行深度扫描,以确定针对该分组需要的ALG处理。例如,在深度扫描期间,对分组有效载荷或者任何其它分组信息进行扫描以确定关于该分组的信息。将通过对分组进行深度扫描所获得的信息与规则数据库进行相互参照,以确定针对该分组所需要的ALG处理的类型。随后,对连接数据库进行更新,以便将该特定连接的分组与特定的ALG引擎相关联。使用标识期望的ALG处理的信息来标记该分组,随后将该分组传送给分组操纵器206以执行适当的ALG处理。
[0038] 当NAT查找模块202接收到该连接的额外分组时,将它们相对于连接数据库进行核查,以确定将用于处理该分组的ALG引擎。使用标识根据连接数据库所确定的期望的ALG处理的信息,对该连接的每一个额外分组进行标记。随后,将这些额外的分组传送到分组操纵器206,以执行适当的ALG处理。因此,一旦使用来自特定连接的第一分组的信息对连接数据库进行了更新,就可以标识与该连接相关联的所有其它分组,并将它们传送到分组操纵器206以进行适当的ALG处理,而无需对每一个额外的分组都进行深度扫描。在一些情况下,分组将不需要任何ALG处理,并且将对这些分组进行标记以指示不需要ALG处理并将这些分组传送到NAT处理模块以进行路由。因此,NAT查找模块202可以从多个连接接收分组,并且可以使用连接数据库将这些分组高效地路由到适当的ALG处理,同时绕过对每一个识别的连接的额外分组进行深度扫描的需要。
[0039] 分组操纵器206操作以对去往/来自ALG引擎208和去往NAT处理模块212的分组的流进行协调。分组操纵器206接收旨在进行ALG处理的分组,并且将这些分组路由到与期望的ALG处理引擎208相关联的特定队列210。在一个示例性实施例中,向每一个ALG引擎提供输入队列和输出队列。例如,每一个队列可以被配置为先入先出(FIFO)队列或者任何其它类型的适当队列。这些队列为要由每个引擎处理的分组提供临时存储,并且为已经由每个引擎处理的分组提供临时存储。各个队列操作以减少或者消除可能当没有使用队列并且系统被迫等待任何特定的ALG处理完成时发生的瓶颈。
[0040] 分组操纵器206还从队列210接收已由ALG引擎208处理的分组。分组操纵器206将这些分组与来自NAT查找模块202的不需要任何ALG处理的分组进行组合,以形成流到NAT处理模块212的分组流。因此,分组操纵器206操作以执行异步多处理,以允许ALG引擎对分组进行处理,并且形成向NAT处理模块212发送的分组流。NAT处理模块212操作以对去往/来自无线WAN网络214上的实体的分组进行路由。因此,减少或者消除了系统的瓶颈,并且更高效地使用了CPU和电池资源。
[0041] 图3示出了示例性NAT查找模块300。例如,NAT查找模块300适合于在图2中所示的NAT查找模块202处使用。NAT查找模块300包括处理器302、规则数据库304、连接数据库306、分组发射机308和分组接收机310,其均通过总线312耦合在一起以进行通信。应当注意的是,NAT查找模块300仅仅只是一种实现,并且其它实现是可能的。
[0042] 分组接收机310包括硬件和/或执行软件的硬件,其操作以允许NAT查找模块300从网络(例如,LAN)接收分组。
[0043] 规则数据库304包括允许存储、获取和维持与接收的分组的ALG处理相关联的规则的任何适当的存储器或存储设备。例如,在初始化处理期间,将与每一个ALG引擎相关联的规则提供给NAT查找模块300,并存储在规则数据库304中。在操作期间,使用规则数据库304来确定针对特定的分组所需要的ALG处理的类型。因此,可以针对满足特定的一组规则的任何分组,确定ALG处理的类型。
[0044] 连接数据库306包括允许存储、获取和维持连接/分组与ALG处理引擎之间的关联的任何适当的存储器或存储设备。连接数据库306由处理器302维持,并被不断地更新以反映连接/分组与ALG处理引擎之间的关联。例如,当接收到与新连接相关联的第一分组时,处理器302对该分组进行深度扫描以确定所需要的ALG处理,并在连接数据库306中存储该连接与所需要的ALG处理之间的关联。通过使用连接数据库306,可以高效地确定用于对在该连接上接收的任何额外的分组进行处理的适当ALG引擎,而无需对每一个额外的分组都进行深度扫描,从而绕过对这些额外的分组的深度扫描。
[0045] 分组发射机308包括硬件和/或执行软件的硬件,其操作以允许NAT查找模块300向分组操纵器(例如,图2中所示的分组操纵器206)发送分组。
[0046] 处理器302包括CPU、处理器、门阵列、硬件逻辑、存储器元件和/或执行软件的硬件中的至少一个。处理器302操作以控制NAT查找模块300来执行本文所描述的功能。例如,处理器302操作以使用任何适当的接口来与ALG引擎进行通信,从而接收存储在规则数据库304中的规则。处理器302还操作以对分组接收机310所接收的每一个连接的第一分组进行深度扫描,并且根据规则数据库304确定该分组所需要的ALG处理的类型。随后,处理器302更新连接数据库306,以指示将与该连接相关联的分组将传送到所确定的ALG引擎以进行处理。此外,处理器302使用来自连接数据库的指示要向每一个分组应用的ALG处理的类型(如果有的话)的信息,对这些分组进行标记。随后,处理器302控制分组发射机308向分组操纵器(例如,图2中所示的分组操纵器206)发送标记的分组。下面提供NAT查找模块300的操作的更详细描述。
[0047] 图4示出了示例性分组操纵器400。例如,分组操纵器400适合用作图2中所示的分组操纵器206。分组操纵器400包括处理器402、NAT查找接口404、NAT处理接口406、分组发射机408和分组接收机410,其均通过总线412耦合在一起以进行通信。应当注意的是,分组操纵器400仅仅是一种实现,并且其它实现是可能的。
[0048] NAT查找接口404包括CPU、处理器、门阵列、硬件逻辑、存储器元件和/或执行软件的硬件中的至少一个。NAT查找接口404提供与NAT查找模块(例如,图2中所示的NAT查找模块202或者图3中所示的NAT查找模块300)的通信。NAT查找接口404操作以从NAT查找模块接收标记的分组。这些标记的分组指示要对每一个分组执行的ALG处理的类型。
[0049] 分组发射机408包括CPU、处理器、门阵列、硬件逻辑、存储器元件和/或执行软件的硬件中的至少一个。分组发射机408提供与可用的ALG引擎的通信。例如,将需要ALG处理的分组发送到与期望的ALG引擎相关联的适当队列(即,队列210)。进入每一个队列的分组将由相关联的ALG引擎按照顺序进行处理。
[0050] 分组接收机410包括CPU、处理器、门阵列、硬件逻辑、存储器元件和/或执行软件的硬件中的至少一个。分组接收机410提供与可用的ALG引擎/队列的通信。例如,从与ALG引擎相关联的适当队列(即,队列210)接收处理后的分组。
[0051] NAT处理接口406包括硬件和/或执行软件的硬件,其操作以允许分组操纵器400向NAT处理模块(例如,图2中所示的NAT处理模块212)发送分组,以进行进一步路由。
[0052] 处理器402包括CPU、处理器、门阵列、硬件逻辑、存储器元件和/或执行软件的硬件中的至少一个。处理器402操作以控制分组操纵器400,以执行本文所描述的功能。例如,处理器402操作以使用接口404来与NAT查找模块进行通信,从而接收用于ALG处理的标记的分组。处理器402还控制分组发射机408向适当的ALG队列发送分组,以进行处理。该处理器还控制分组接收机410从ALG队列接收处理后的分组,并且控制NAT处理接口406向NAT处理模块发送这些处理后的分组。在一些情况下,接口404可以接收不需要ALG处理的分组。处理器402控制NAT处理接口406针对这些分组绕过ALG处理,并且将它们发送到NAT处理模块。下面提供分组操纵器400的操作的更详细描述。
[0053] 应当注意的是,虽然已经将NAT查找模块300和分组操纵器400描述成不同的实体,但也可以将这些模块组合成单个模块或者实体。此外,在一个或多个各种实施例中,可以根据期望对每一个模块的功能进行重新排列或者重新分布。
[0054] 图5示出了示例性规则数据库500。例如,规则数据库500代表图3中所示的规则数据库304。规则数据库500包括标识规则的三列(规则1—规则3),其中这些规则当被满足时,标识特定的分组类型502。例如,“X”指示满足相关联的规则。因此,规定了不满足任何规则的第一分组类型,并且规定了满足规则1和规则2但不满足规则3的第四分组类型。应当注意的是,可以指定更多或者更少的规则,并且可以使用规则的任意期望的组合(与、或、非等等)来对任何特定的分组类型进行分类或者规定。例如,为了规定FTP协议分组的ALG处理,可以在规则数据库500中指定下面两种规则。
[0055] 规则1 下一个协议应当是TCP(与)
[0056] 规则2 TCP目的地端口21
[0057] 第四列504标识了与每一个分组类型相关联并且将用于处理每一个分组类型的ALG引擎。应当注意的是,对于所选择的分组类型来说,可以不需要ALG处理。此外,与不同的连接相关联的分组也可以满足相同的一组规则,并且由相同的ALG引擎进行处理。
[0058] 图6示出了示例性连接数据库600。例如,连接数据库600代表图3中所示的连接数据库306。连接数据库600包括提供连接标识符602的第一列和提供与每一个连接标识符相关联的ALG引擎604的第二列。
[0059] 在操作期间,当接收到每一个连接的第一分组时,在连接数据库中将新连接标识符与该连接进行关联。随后,对该第一分组进行深度扫描,以确定ALG处理需求。例如,规则数据库500与根据深度扫描所确定的信息进行相互参照,以确定该分组满足的规则和相关联的ALG引擎。随后,在连接数据库600中,将所确定的ALG引擎与该连接标识符进行关联。因此,当接收到该连接的额外分组时,访问连接数据库600以高效地确定针对这些分组的所需要的ALG处理,而无需对每一个额外的分组都进行深度扫描。
[0060] 应当注意的是,对于所选择的连接标识符来说,可以不存在ALG处理需求。与不同的连接相关联的分组也可能需要相同的ALG引擎来处理这些分组。例如,在连接数据库600中,与连接1相关联的分组不需要ALG处理,与连接2和6相关联的分组需要通过相同的ALG引擎(即,ALG引擎1)进行处理。
[0061] 图7描绘了用于执行NAT处理的示例性方法700,其中该方法减少分组扫描需求和对ALG规则的表格查找,从而提供增加的效率。例如,方法700适合于由图3中所示的NAT查找模块300使用。在一种实现中,处理器302执行一组或多组代码或指令,以控制查找模块300来执行下面所描述的功能。
[0062] 在框702,维持ALG规则的数据库。例如,处理器302维持规则数据库304,以维持由一个或多个ALG引擎、通过用户输入或者其它方式提供的规则。这些规则确定将使用哪个ALG引擎来处理具有特定的分组类型的分组(即,满足指定的一组规则的分组)。可以对规则数据库304进行初始化,随后在ALG引擎的数量和/或类型改变时并且在规则改变时,处理器302对规则数据库304进行不断地更新。
[0063] 在框704,维持分组/连接的数据库。例如,处理器302维持连接数据库306,以维持连接/分组和将用于处理这些连接的分组的ALG处理之间的关系。
[0064] 在框706,对分组进行接收,例如,在NAT查找模块202处从LAN接收用于路由到WWAN的分组。在一种实现中,由分组接收机310接收该分组,并将其传送给处理器302。
[0065] 在框708,确定所接收的分组是否与连接数据库中标识的连接相关联。例如,处理器302通过评估分组报头或者关于该分组或连接的其它信息并且将该信息与连接数据库306中的信息进行比较,来进行该确定。如果该分组与不存在于连接数据库306中的连接相关联,则确定该分组是新连接的第一分组,并且该方法前进至框712。如果该分组与连接数据库306中标识的连接相关联,则确定该分组与现有的连接相关联,并且该方法前进至框
718。
[0066] 在框712,对所接收的分组进行深度扫描,以确定可以与规则数据库306相互参照的关于该分组的信息。例如,处理器302对该分组进行深度扫描,以确定来自其报头、有效载荷和/或该分组的其它方面的信息,从而确定可以用于确定该分组是否满足规则数据库304中的规则中的任何一个的关于该分组的信息。处理器302使用来自深度扫描的该信息,来确定该分组满足规则数据库304中的哪些规则,并因此确定分组类型。
[0067] 在框714,执行规则查找,以确定针对该分组所需要的ALG处理。一旦确定了分组类型(即,满足哪些规则),处理器302就根据规则数据库304确定针对该分组的所需要的ALG处理。
[0068] 在框716,对连接数据库进行更新。一旦确定了用于该分组的ALG引擎,就在连接数据库306中添加新条目,其标识该连接和将用于对与该连接相关联的分组进行处理的相关联的ALG处理。一旦使用新连接对连接数据库306进行了更新,就不需要在该连接条目的使用期,对与该连接相关联的额外分组执行另外的深度扫描。这节省了处理时间,并且绕过对该连接的额外分组的深度扫描。
[0069] 在框718,使用来自连接数据库的标识针对每一个分组所需要的ALG处理的类型的信息,对分组进行标记。例如,在一个实施例中,将连接标识符和相关联的ALG引擎标识符添加到该分组中。因此,使用标识该分组所需要的ALG处理的信息来标记每一个分组。如果不需要ALG处理,则没有标记与分组相关联,或者将指示不进行ALG处理的特定标记与该分组相关联。
[0070] 在框720,发送该分组以进行处理。例如,处理器302控制分组发射机308将这些分组转发到分类和异步分组操纵器(例如,图4中所示的分组操纵器400)。
[0071] 因此,方法700操作以接收和识别用于ALG处理的分组,而无需对每一个分组都进行深度扫描。应当注意的是,方法700仅仅是一种实现,并且可以对方法700的操作进行重新排列或者以其它方式进行修改,使得其它实现是可能的。
[0072] 图8示出了用于实现异步分类和分组操纵的示例性方法800。为了清楚起见,下面参照分组操纵器400来描述方法800。例如,方法800提供了对分组的异步并行和多任务ALG处理。例如,示出了可以并行地执行的两个处理。这些异步处理规定了以下内容。
[0073] 1、当更快速地处理队列时分组流的RTT降低,这导致该队列中的分组丢弃的机率更低并且端到端吞吐量增加。
[0074] 2、任何单个任务的CPU使用减少。
[0075] 3、当将每一分组处理划分成更小的单元时,CPU的效率增加,这是因为其可以并行处理多个任务,从而增加了系统的空闲时间并因此显著地减少了电池功耗。
[0076] 在一种实现中,处理器402执行一组或多组代码或指令,以控制分组操纵器400执行下面所描述的功能。
[0077] 在框802,通过从NAT查找模块接收标记的分组,来开始第一处理。例如,从图2中所示的NAT查找模块202或者图3中所示的NAT查找模块300接收该标记的分组。使用指示针对该分组所需要的ALG处理的类型的信息来标记该分组,或者将该分组与该信息相关联。还可以对该分组进行标记或者以其它方式指示不需要ALG处理。
[0078] 在框804,确定针对所接收的分组是否需要ALG处理。例如,处理器402检查分组标记来确定是否需要ALG处理,如果需要的话,确定需要哪种类型的ALG处理。如果分组标记指示不需要ALG处理,则该方法前进至框810。如果分组标记指示需要ALG处理,则该方法前进至框806。
[0079] 在框810,发送该分组以用于NAT处理。例如,向NAT处理模块212发送该分组,以进行进一步处理和路由。例如,处理器402控制NAT处理接口406来向NAT处理模块212发送该分组。
[0080] 在框806,将该分组转发给通过分组的标记所确定的适当ALG引擎。在一个实施例中,每一个ALG引擎包括输入队列和输出队列,这些队列允许ALG引擎按照接收分组的顺序,对与多个连接相关联的分组进行处理。队列的使用空出了(free up)NAT处理,这是由于当系统等待ALG处理完成时,不需要对分组处理进行暂停或者延迟。例如,一旦选择的分组输入到适当的ALG队列中,就可以在所选择的分组由ALG引擎进行处理的同时,对额外的分组进行操纵。这种类型的多任务帮助减少对端到端RTT的影响。
[0081] 处理器402控制分组发射机408向适当的ALG引擎队列发送该分组。向ALG引擎通知处于其接收队列中的该分组,并当ALG引擎对该分组进行处理时,其根据协议规定来转换该分组的应用有效载荷。在ALG处理完成之后,ALG引擎将该分组放入到其输出队列中。
[0082] 第二处理开始于框808,其中在框808,在处理之后,从ALG引擎接收处理后的分组。例如,处理后的分组由分组接收机410接收,并传送给处理器402。随后,该方法前进至框810,其中在框810,发送处理后的分组以进行NAT处理,如上所述。
[0083] 因此,方法800提供了由分组操纵器执行的两个处理。在第一处理中,将从NAT查找模块接收的分组导向选择的ALG引擎以进行ALG处理。在第二处理中,将经ALG处理的分组和不需要ALG处理的任何分组发送给NAT处理模块,以进行进一步处理。应当注意的是,方法800仅仅是一种实现,并且可以对方法800的操作进行重新排列或者以其它方式进行修改,使得其它实现是可能的。
[0084] 图9示出了示例性NAT查找装置900。例如,NAT查找装置900适合用作图3中所示的NAT查找模块300。在一个方面,通过包括一个或多个模块的至少一个集成电路来实现NAT查找装置900,其中所述一个或多个模块被配置为提供如本文所描述的NAT查找模块的各个方面。例如,在一个方面,每一个模块包括硬件和/或执行软件的硬件。
[0085] NAT查找装置900包括第一模块,第一模块包括用于对通过选择的连接接收的分组进行深度扫描,以确定要对该分组执行的选择的应用层网关(ALG)处理的单元(902)。NAT查找装置900还包括第二模块,第二模块包括用于将所选择的连接与所选择的ALG处理进行关联的单元(904),其在一个方面包括连接数据库306。NAT查找装置900还包括第三模块,第三模块包括用于基于所述关联,对通过所选择的连接接收的额外分组进行转发以接收所选择的ALG处理的单元(906),其中绕过对所述额外的分组的深度扫描,其在一个方面包括处理器302。
[0086] 图10示出了示例性分类装置1000。例如,分类装置1000适合用作图4中所示的分类模块400。在一个方面,通过包括一个或多个模块的至少一个集成电路来实现分类装置1000,其中所述一个或多个模块被配置为提供如本文所描述的分类和分组操纵器的各个方面。例如,在一个方面,每一个模块包括硬件和/或执行软件的硬件。
[0087] 分类装置1000包括第一模块,第一模块包括用于接收标记的分组的单元(1002),其在一个方面包括NAT查找接口404。分类装置1000还包括第二模块,第二模块包括用于基于与每一个标记的分组相关联的ALG处理信息,确定针对每一个标记的分组是否需要任何ALG处理的单元(1004),其在一个方面包括处理器402。分类装置1000还包括第三模块,第三模块包括用于如果确定针对所选择的标记的分组需要ALG处理,则将所选择的标记分组分别传送给选择的ALG引擎,以接收ALG处理的单元(1006),其在一个方面包括分组发射机408。分类装置1000还包括第四模块,第四模块包括用于如果确定针对其它标记的分组不需要ALG处理,则向网络地址转换(NAT)处理模块发送这些其它标记的分组的单元(1008),其在一个方面包括NAT处理接口406。
[0088] 图11描绘了用于执行NAT处理的示例性方法1100,其中该方法减少分组扫描需求和对ALG规则的表格查找,从而提供增加的效率。例如,方法1100适合于由图3中所示的NAT查找模块300使用。在一种实现中,处理器302执行一组或多组代码或指令,来控制查找模块300执行下面所描述的功能。
[0089] 在框1102,对通过选择的连接接收的分组进行深度扫描,以确定要对该分组执行的选择的应用层网关(ALG)处理。例如,对接收的分组进行深度扫描,以确定可以与规则数据库306相互参照的关于该分组的信息。例如,处理器302对分组进行深度扫描,以确定来自其报头、有效载荷和/或该分组的其它方面的信息,从而确定可以用于确定该分组是否满足规则数据库304中的规则中的任何一个的关于该分组的信息。处理器302使用来自深度扫描的该信息,来确定该分组满足规则数据库304中的哪些规则,并因此确定分组类型。
[0090] 在框1104,将所选择的连接与选择的ALG处理进行关联,并且对连接数据库进行更新。一旦确定了用于该分组的ALG引擎,就在连接数据库306中添加新条目,其标识该连接和将用于对与该连接相关联的分组进行处理的相关联的ALG处理。一旦使用新连接对连接数据库306进行了更新,就不需要在该连接条目的使用期,对与该连接相关联的额外分组执行另外的深度扫描。这节省了处理时间,并且绕过对该连接的额外分组的深度扫描。
[0091] 在框1106,基于连接数据库306中的关联,对通过所选择的连接接收的额外分组进行转发以接收所选择的ALG处理,使得绕过对这些额外分组的深度扫描。例如,处理器302控制分组发射机308将这些分组转发给分类和异步分组操纵器(例如,图4中所示的分组操纵器400)。
[0092] 因此,方法1100操作以接收并识别用于ALG处理的分组,而无需对每一个分组都进行深度扫描。应当注意的是,方法1100仅仅是一种实现,并且可以对方法1100的操作进行重新排列或者以其它方式进行修改,使得其它实现是可能的。
[0093] 图12描绘了用于分类和分组操纵的示例性方法1200。为了清楚起见,下面参照分组操纵器400来描述方法1200。在一种实现中,处理器402执行一组或多组代码或指令,来控制分组操纵器400执行下面所描述的功能。
[0094] 在框1202,从NAT查找模块接收标记的分组。例如,从图2中所示的NAT查找模块202或者图3中所示的NAT查找模块300接收标记的分组。使用指示针对该分组所需要的ALG处理的类型的信息来标记该分组,或者将该分组与该信息相关联。还可以对该分组进行标记或者以其它方式指示不需要ALG处理。
[0095] 在框1204,确定针对所接收的分组是否需要ALG处理。例如,处理器402检查分组标记来确定是否需要ALG处理,如果需要的话,确定需要哪种类型的ALG处理。如果分组标记指示不需要ALG处理,则该方法前进至框1208。如果分组标记指示需要ALG处理,则该方法前进至框1206。
[0096] 在框1206,将该分组转发给通过分组的标记所确定的适当ALG引擎。在一个实施例中,每一个ALG引擎包括输入队列和输出队列,这些队列允许ALG引擎按照接收分组的顺序,对与多个连接相关联的分组进行处理。队列的使用空出了NAT处理,这是由于当系统等待ALG处理完成时,不需要对分组处理进行暂停或者延迟。例如,一旦选择的分组输入到适当的ALG队列中,就可以在所选择的分组由ALG引擎进行处理的同时,进行额外分组的处理。这种类型的多任务帮助减少对端到端RTT的影响。
[0097] 处理器402控制分组发射机408向适当的ALG引擎队列发送该分组。向ALG引擎通知存在于其接收队列中的该分组,并当ALG引擎对该分组进行处理时,其根据协议规定来转换该分组的应用有效载荷。在ALG处理完成之后,ALG引擎将该分组放入到其输出队列中。
[0098] 在框1208,发送该分组以用于NAT处理。例如,已确定不需要对该分组进行ALG处理,将该分组发送给NAT处理模块212,以进行进一步处理和路由。例如,处理器402控制NAT处理接口406来向NAT处理模块212发送该分组。
[0099] 因此,方法1200操作以从NAT查找模块接收标记的分组。如果需要ALG处理,则将这些分组发送给适当的ALG引擎。如果不需要ALG处理,则直接将这些分组发送给NAT处理模块。应当注意的是,方法1200仅仅是一种实现,并且可以对方法1200的操作进行重新排列或者以其它方式进行修改,使得其它实现是可能的。
[0100] 在一个或多个示例性的实施例中,所描述的功能可以用硬件、软件、固件或其任意组合的方式来实现。如果用软件来实现,则可以将这些功能作为一个或多个指令或代码存储在或传送到计算机可读介质上。计算机可读介质包括非临时性计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是计算机能够存取的任何可用介质,并且还可以称为计算机程序产品。举例说明而非限制性地,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或者诸如红外线、无线和微波之类的无线技术从网站、服务器或其它远程源传输的,那么同轴电缆、光纤电缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所述介质的定义中。如本文所使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光光学地复制数据。上面各项的组合也应当包括在计算机可读介质的范围之内。
[0101] 为了使本领域任何技术人员能够实现或者使用本发明,提供了对所公开的方面的描述。对于本领域技术人员来说,对这些方面的各种修改是显而易见的,并且本文定义的总体原理可以在不脱离本发明的精神或范围的基础上适用于其它方面(例如,在即时消息传送服务或者任何通用无线数据通信应用中)。因此,本发明并不旨在限于本文所给出的这些方面,而是与符合本文公开的原理和新颖性特征的最广范围相一致。本文专门使用的“示例性的”一词意味着“用作例子、例证或说明”。本文描述为“示例性”的任何方面不应被解释为比其它方面更优选或更具优势。
[0102] 因此,虽然本文示出和描述了用于高效的NAT和ALG处理的装置和方法的各个方面,但是应当清楚的是,在不脱离它们的精神或本质特征的基础上,可以对这些方面做出各种修改。因此,本文的公开内容和描述是说明性的,而不是对下面的权利要求中阐述的本发明的范围的限制。