用查找键作为分组标签以便于使用统一分组转发缓存 【技术领域】
本发明一般地涉及网络设备领域。更具体而言,本发明涉及用缓存(cache)的查找键(lookup key)作为分组标签,用统一的基于分组互联网协议(IP)流的缓存对网络分组进行转发的方法和装置。
背景技术
许多不同的处理都是由网络设备来执行的,所述网络设备例如是桥接器、路由器、交换机、防火墙、网关或其它互联网接入产品,在其中每种设备上接收或发送分组。例如,由路由器执行的典型任务列表可能包括:(1)应用网络地址翻译(NAT),(2)应用分组过滤,以及(3)对分组进行路由。
在网络设备的完整路由表中查找可能是非常缓慢的。因此,许多网络设备实现某种缓存功能以加速分组处理。典型地,将最近的转发决定存储在为快速查找而最优化了的单独的表(转发缓存)中。如果一个分组流已被分类,并且可以用缓存信息来处理随后的分组,则一般将该转发路径称为“快路径”。如果不存在缓存条目,则基于完整的路由表来转发分组。这种转发路径称为“慢路径”。同种缓存机制也可以应用于NAT和过滤。较早的产品一般为每类功能使用独立的缓存。使用单独缓存的示例性转发流例示如下:
·从分组中读取报头信息。
·在NAT缓存中进行查找。如果缓存命中,则执行NAT操作(例如翻译IP报头中的地址)。否则,将分组发送给NAT模块用于慢路径处理。
·在过滤缓存中进行查找。如果缓存命中,则执行过滤操作(例如传递或丢弃分组)。否则,将分组发送给过滤模块用于慢路径处理。
·在转发/路由缓存中进行查找。如果缓存命中,则执行路由操作(例如在缓存条目中所指定地接口上转发分组)。否则,将分组发送给转发模块用于慢路径处理。
接下来参照图1,对在路由的上下文中的快速/慢路径概念作进一步描述。在此简化示例中,示出了路由器中的转发流100,该路由器具有:(1)快路径,包括由快路径转发模块110来处理接收到的网络分组105,以及在转发缓存115中进行缓存查找;(2)慢路径,除所述快路径处理之外,还包括由慢路径转发模块120来处理分组,以及在路由表125中进行完整路由表查找。
在许多情形下,快路径处理位于与慢路径处理不同的处理单元上(例如,在同一网络处理器上的不同微引擎中,或者在不同的网络处理器上)。在单处理器系统中,一般将快路径代码和慢路径代码作为不同的操作系统处理来执行。结果,当将分组传递到慢路径时需要处理调度。虽然仍保有快路径和慢路径的概念,但较新的网络产品通常使用一个称为“基于流的转发”的概念。基于流的转发的基本思想是对分组进行一次分类然后在统一缓存(unified cache)中执行一次查找,其中每个缓存条目包含处理分组所必需的所有信息(例如关于将分组转发到何处的信息)。但是,因为分组处理功能通常位于分开的模块中(在某些情形下是由不同的处理器和/或微引擎来运行的),所以确保统一缓存保持一致可能变得非常复杂。此外,如以下将要讨论的那样,当一个或多个分组处理功能修改了缓存查找键所基于的分组报头的部分时,还有其它涉及统一缓存使用的复杂情况。
【附图说明】
在附图中,示例性而非限制性地示出了本发明,其中相似的标号指的是相似的元件,其中:
图1示出了在路由的上下文中的快/慢路径概念。
图2示出了实现支持NAT的统一缓存的一个问题。
图3A-3C示出了一个同步问题的例子,当在统一缓存环境中试图执行分布式分组处理时,就可能遇到这种问题。
图4是根据本发明一个实施例的网络设备的简化高级框图。
图5是示例性网络处理器的框图。
图6是一个流程图,示出了根据本发明一个实施例的统一缓存更新处理。
图7是一个框图,其概念性地示出了根据本发明一个实施例,当新流被检测到并通过NAT接收慢路径接收到时的基本分组流。
图8是一个框图,其概念性地示出了根据本发明一个实施例,当新流被检测到并通过过滤接收慢路径接收到时的基本分组流。
图9是一个框图,其概念性地示出了根据本发明一个实施例,当新流被检测到并通过转发接收慢路径接收到时的基本分组流。
【具体实施方式】
以下描述了NAT敏感(NAT-aware)统一缓存的装置和方法。广泛地说,本发明的实施例试图提供一种机制,用于在包括诸如NAT之类的应用的环境中有效地实现统一缓存,所述应用修改分组的一个或多个部分,例如缓存查找键所基于的分组报头。根据一个实施例,将缓存查找键作为分组标签的一部分而存储,并使其对分组流处理所涉及的所有任务可用。然后,第一个对网络分组进行检查的应用用来自原始分组报头的缓存查找信息作为分组标签,当随后的分组处理应用访问统一缓存时,它们就使用所述标签中的缓存查找键。以此方式,所有分组处理应用一致地执行缓存访问。此外,此处所描述的统一缓存体系结构和方法试图改进统一缓存在网络设备的分布式模块之间共享的方式。根据一个实施例,提供了一种直接而简单的机制,用于发现已删除的或被无效的缓存条目,并且无需缓存同步协议就可以防止创建重复的条目。
在以下描述中,为说明目的,阐述了许多具体细节,以便提供对本发明的透彻理解。但是,对本领域技术人员来说,很明显没有这些具体细节中的某些也可以实现本发明。在其它情况下,以框图的形式示出了公知的结构和设备。
本发明包括以下将要描述的多个步骤。本发明的步骤可以由硬件器件来执行,或者可以实施到机器可执行的指令中,所述指令可被用来使编程有所述指令的通用或专用处理器执行所述步骤。或者,可以由硬件和软件的结合来执行所述步骤。
本发明可被提供为计算机程序产品,该产品可包括其上存储了指令的机器可读介质,所述指令可被用来对计算机(或其它电子设备)进行编程,用于执行根据本发明的处理。所述机器可读介质可以包括但并不限于软盘、光盘、光盘只读存储器(CD-ROM),以及磁光盘、ROM、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存或其它类型的适于存储电子指令的媒体/机器可读介质。此外,本发明还可以作为计算机程序产品而被下载,其中可依靠包含在载波或其它传播介质中的数据信号,通过通信链路将所述程序从远程计算机(例如服务器)传输到请求计算机(例如客户端)。因此,应将载波或其它传播介质看作是包括用于本说明书的机器可读介质。
尽管为方便起见,参照具有NAT功能的网络设备而描述了本发明的实施例,但本发明也同等地适用于其它各种分组处理应用,所述分组处理应用涉及对用于生成缓存查找键的分组报头部分的全部或部分进行修改。
术语
在描述可在其中实现本发明各个实施例的示例性网络环境之前,简要定义一些将会在整个本申请中使用的术语。
此处所用的“网络设备”一般指有助于通过一组互连的局域网(LAN)进行计算机到计算机通信的中间设备。示例性的网络设备包括网关、路由器、交换机、桥接器、防火墙和互联网接入产品。
术语“网络接口”或简称“接口”一般指网络设备的物理或逻辑接口,通过该接口可以接收或发送分组。物理接口的示例是以太网端口。逻辑接口的示例是端口80——超文本传输协议(HTTP)服务的标准端口号,或者其它协议服务的接口。
术语“分组处理应用”、“分组处理任务”、“分组处理功能”或“模块”一般指在转发分组期间执行个别功能或一组操作的网络设备的硬件、软件或混合模块,所述功能或操作例如是从所述网络设备的输入端口通过所述网络设备的输出端口向分组的期望目的地转发分组。示例性的分组处理应用包括接收NAT、接收静态过滤、接收防火墙过滤、对缓存查找(转发)进行路由、发送静态过滤、发送防火墙过滤、发送NAT,等等。
此处所用的“模块专用信息”一般指特定的分组处理应用所利用的信息。
此处所使用的“统一缓存”或“统一转发缓存”一般指由多个分组转发处理共享的缓存机制,一般是与完整的路由表分开的存储器,所述路由表存储了最近的转发决定并被最优化用于快速查找。根据本发明一个实施例,统一缓存是统一基于IP流的缓存,其允许将流分类一次,然后就可以用在该统一缓存中的一次查找就处理随后的分组。
此处所用的“缓存同步协议”一般指一种集中机制,通过该机制,分布在不同处理器上的分组处理应用可以保持彼此具有统一缓存中最新的当前条目状态。例如,缓存同步管理应用可以跟踪为一个特定缓存条目而创建的指针数量,以及缓存条目是否有效。
此处所用的“分组描述符”一般指分组处理应用所使用的内部数据结构,所述分组处理应用与分组相关联,并包含分组专用信息。根据本发明一个实施例,分组描述符包含以下内容中的一个或多个:(1)分组的存储器地址(例如指向该分组数据的指针),(2)分组长度,(3)对在其上接收到分组的网络接口的指示,以及(4)统一缓存查找键。
与实现支持NAT的统一缓存相关联的困难
图2示出了实现支持NAT的统一缓存的一个问题。与实现支持NAT的统一缓存相联系的主要问题是其可能改变分组报头,从而使跟在NAT之后的分组处理应用无法定位统一缓存条目。例如,NAT可能在其改变分组报头之前,基于分组报头的原始内容来创建统一缓存条目。结果,随后的模块基于修改后的分组报头来生成不同的缓存查找键,并在错误的区域(bin)中寻找统一缓存条目。下面参照图2,用一个具体示例对此情景进行说明。
例如,网络设备接收到去往IP地址89.20.171.1的分组205。假定分组205被NAT接收慢路径210所接收(即,对此目的地IP地址,在统一缓存220中不存在缓存条目),NAT接收慢路径210使用从完整NAT规则表215中检索到的翻译规则,将分组报头中的目的地IP地址翻译成例如10.1.1.1。然后,NAT接收慢路径210基于从包括目的地IP地址89.20.171.1的分组报头的原始内容中生成的查找键,将一个缓存条目插入到统一缓存220中。以此方式,随后接收到的去往IP地址89.20.171.1的分组将会走NAT接收快路径(未示出),从而避免了在完整NAT规则表215中执行查找的开销,并且地址翻译将会基于由NAT接收慢路径210插入的缓存条目来执行。
无论如何,继续当前的示例,在翻译了分组报头并在统一缓存220中插入了条目之后,NAT接收慢路径210将分组传递给下一模块。在此示例中,跟在NAT后面的模块是过滤。当过滤模块接收到NAT处理后的分组时,过滤代码读取分组报头,并基于包括目的地IP地址10.1.1.1的分组报头的当前内容,在统一缓存220中进行缓存查找。找不到条目,因为NAT是用基于原始目的地IP地址—89.20.171.1的查找键来插入条目的。因此,将分组传递给过滤接收慢路径225,其现在必须从完整过滤规则表230中检索过滤规则。在执行过滤之后,过滤接收慢路径225用基于包括目的地IP地址10.1.1.1的当前分组报头内容的查找键来插入一个新的缓存条目。结果,在此示例中,NAT接收慢路径210和过滤接收慢路径创建了与不同的缓存查找键相关联的重复的统一缓存条目。
有效的统一缓存实现不应无谓地创建重复的统一缓存条目。相反,一般应该使用一致且可预测的缓存查找键来将缓存条目的所有信息存储在一个统一缓存条目中。一个惯例是基于分组报头的原始内容来生成缓存查找键,在此示例中,所述分组报头的原始内容包括IP目的地地址89.20.171.1。
与采用统一缓存相联系的另一个问题是使用统一缓存的不同模块的同步。图3A-3C示出了一个同步问题的例子,当在统一缓存环境中试图执行分布式分组处理时,就可能遇到这种问题。在此示例中,假定模块将指向统一缓存条目的指针传递给下一模块。在图3A中,NAT模块310在时刻t1接收到网络分组305。随后,在时刻t2,NAT模块将缓存条目323插入到由过滤模块330与其它模块共享的统一缓存320中。在NAT模块310完成其翻译处理之后,其用指向缓存条目323的指针作为翻译后网络分组305的标签。如图3B所示,NAT模块310在时刻t3,将翻译后网络分组305与指向缓存条目323的指针一起,作为带标签网络分组306传递给过滤模块330,所述传递例如是经由处理间队列来进行的,因为过滤模块330可能是个单独的处理。但是,在允许运行过滤模块330之前,如图3C所示,NAT模块在时刻t4例如由于重配置事件而决定去除缓存条目323,从而使条目323无效。结果,与带标签网络分组306一起传递的缓存条目指针现在无效了。在没有缓存同步机制的情况下,当过滤模块330在时刻t5使用所述指针来访问统一缓存320,以检索对应于带标签网络分组306的缓存条目323时,过滤将会产生不确定的结果,因为它将基于无效数据而执行。因此,共享统一缓存的可靠机制应准备好检测已删除或已被无效的缓存条目,并防止创建重复的条目,而不需要实现缓存同步协议所引起的开销和复杂性。
此处所描述的统一缓存体系结构和方法试图解决上述问题。根据一个实施例,第一个检查分组的应用用基于原始分组报头的查找信息作为分组的标签。然后,当随后的分组处理应用更新或访问统一缓存时,其使用原始分组查找信息(所述标签)作为查找键。如果所述条目已被删除(像上例中那样),则该查找将会失败,从而确保了一致性。
示例性网络设备
图4是根据本发明一个实施例的网络设备400的简化高级框图。网络设备400表示示例性网络计算或网络通信设备,例如网关、路由器、桥接器、交换机、防火墙或互联网接入产品,其中可以实现本发明的特征。在此示例中,网络设备400包括诸如总线410之类的用于传送信息的通信装置,以及诸如一个或多个处理器415的处理装置,其与总线410相耦合,用于处理信息和执行指令。
网络设备400还包括耦合到总线410的网络接口420,用于允许向/从网络设备400进行通信和交换信息,这例如是经由局域网(LAN)、广域网(WAN)、城域网(MAN)、互联网或公共交换电话网(PSTN)来进行的。网络接口420可以包括诸如一个或多个10/100以太网端口、一个或多个千兆比特以太网端口(光纤和/或铜)之类的公知接口,或者诸如数据用户线路(DSL)接口、异步传输模式(ATM)端口之类的其它公知接口,以及其它在现有的公共或个人网络环境中普遍使用的接口的各种组合。无论如何,以此方式,网络设备400都可以通过传统网络基础设施与多个其它网络设备、客户端和/或服务器进行通信,所述传统网络基础设施例如是公司的内部网和/或互联网。
网络设备400还包括多个用于执行各种分组处理任务的模块,例如用于在所接收和/或所发送的分组上应用网络地址翻译的一个或多个NAT模块460、用于执行接收和/或发送分组过滤的一个或多个过滤模块470,以及用于做出转发决定的一个或多个转发模块480。
网络设备400还包括耦合到总线410的主存储器430,用于存储要由处理器415、NAT模块460、过滤模块470和/或转发模块480来使用和/或执行的信息和指令。主存储器可以包括一种或多种随机存取存储器(RAM),例如用于缓存的静态RAM(SRAM)和动态RAM(DRAM)、同步DRAM(SDRAM),或者其它用于较大运行时存储需要的动态存储设备。因此,在由处理器415执行指令期间,可以用主存储器430来存储临时变量或诸如查找表或者一个或多个统一缓存之类的其它中间信息。
网络设备400还包括耦合到总线410上的只读存储器(ROM)440和/或其它静态存储设备,用于存储静态信息和处理器415的指令。还可以将诸如闪存盘、磁盘或光盘和相应驱动器之类的数据存储设备450耦合到总线410,用于存储信息和指令。
在以上描述中,为了方便说明,一般对于处理器415、NAT模块460、过滤模块470和转发模块480,如同其中每个都是单一设备或处理那样进行讨论。但是,每个功能单元实际上可能包括以分布式体系结构连接的多个物理和/或逻辑设备。此外,实际上可以将功能单元的各种组合合并成同一硅晶片上的多个执行单元。此外,在另外的实施例中,各种功能单元所执行的功能可能被分布得与所描述的不同。例如,可以在多个处理器之间划分特定的功能。
示例性网络处理器
图5是示例性网络处理器500的框图。网络处理器500表示可用在诸如网络设备400之类的网络设备中的诸如处理器415之类的示例性处理器,其中实现了此处所描述的统一缓存。根据一个实施例,网络处理器包括Intel IXP 1200网络处理器(INTEL是加利福尼亚州Santa Clara的英特尔公司的注册商标)。
在此示例中,网络处理器500是松耦合混合并行处理器组,其将独立微引擎540的阵列与处理器核515组合起来。诸如具有硬件多线程支持的32位精简指令集计算(RISC)数据引擎之类的微引擎540可包含足够的处理功率,用于执行一般为高速ASIC(专用集成电路)而保留的分组处理任务,例如NAT、分组转发和分组过滤。然后可以将诸如IntelStrongARM核之类的处理器核515用于更复杂的任务,例如地址学习、建立并维护转发表及相关统一缓存,以及网络管理。
在所示出的实施例中,处理器核515被耦合到系统总线510,该总线将处理器核515耦合以便与SRAM单元520、SDRAM单元525、外围器件互连(PCI)单元530和快速总线接口(FBI)单元535进行通信。微引擎540被耦合到单独的数据总线520,所述SRAM单元520、SDRAM单元525、PCI单元530和FBI单元535也耦合到该数据总线520,因此微引擎540可以无需处理器核515的帮助就执行数据移动和处理。
根据一个实施例,网络处理器500是完全可编程的,从而允许根据具体实现的需要,通过分配微引擎540、线程和处理器核任务而将分组处理任务分割或集合。例如,可以将NAT、转发和过滤中的每一个分配给一个或多个分开的微引擎540。或者,可以将所有这三个分组处理任务分布到多个微引擎当中。
统一缓存更新处理
图6是一个流程图,示出了根据本发明一个实施例,通过慢路径进行的统一缓存更新处理。在一个实施例中,以下所描述的操作可以在一个或多个已编程的处理器的控制下执行,所述处理器例如是处理器核515和/或微引擎540。但是,在其它实施例中,所述操作可以全部或部分地由任何可编程或硬编码逻辑来实现,所述逻辑例如是现场可编程门阵列(FPGA)、晶体管一晶体管逻辑(TTL)或专用集成电路(ASIC)。
一般将统一缓存更新处理分解成新流检测阶段、新缓存条目创建阶段、为现有流加上分组标签阶段,以及缓存条目更新阶段。所述新流检测阶段由框610-630表示,所述新缓存条目创建阶段包括框680和690,所述为现有流加上分组标签阶段由框640表示,而所述缓存条目更新阶段由框670表示。简言之,在慢路径中的基本分组流期间,第一个判断出正在处理的分组是现有流一部分的分组处理任务(例如NAT、过滤或转发)用与现有流相关联的查找键作为该分组的标签。如果分组处理任务判断出正在处理的分组是新流的一部分,则该分组处理任务在统一缓存中为该流创建新缓存条目,并用该新缓存条目的相应查找键作为所述分组的标签。
重要的是,在所示出的实施例中,各分组处理模块间仅有的通信就是嵌入内部分组描述符中的查找键。此机制以非常精妙而简单的方式实现了分布式处理,因为如果正寻找的条目已被另一模块删除,则在统一缓存中的查找将会失败。结果,就不需要缓存同步协议了。
通过慢路径进行的统一缓存更新处理开始于判决框610处的新流检测阶段。在判决框610,判断在与正处理的分组相关联的分组描述符中是否存在查找键信息。如果存在查找键信息,则所述分组已被分组和加标签,处理在框650继续。不然,则还未给所述分组加标签,处理在框620继续。根据一个实施例,当分组描述符第一次与分组相关联时,可以用一个将查找键信息标识为无效的值将查找键信息初始化。
假定在此示例中,还未将查找信息设置为有效查找键的值,处理在框620继续,其中使用基于当前分组报头内容而生成的查找键,在统一缓存上执行查找。在判决框630,基于在由框620所发起的查找期间是否找到了条目,来判断所述分组是不是现有流的一部分。如果确实找到了条目,则将所述分组分类为与所找到的条目相关联的现有流的一部分,处理在框640处继续为现有流加标签的阶段。否则,将所述分组分类为新流的一部分,处理在框680继续,以开始新缓存条目创建阶段。
在框640,通过用现有流的查找键的值将分组描述符中查找键的值初始化,来将所述分组作为现有流的一部分而加标签。在框640之后,处理在框670继续,以执行缓存条目更新阶段。
现在返回判决框610,假定在分组描述符中存在查找信息,然后在框650,使用该信息执行统一缓存查找。值得再次注意的是,此查找解决了共享统一缓存的多个分布式模块之间的同步问题,因为如果像在图3的示例中的情况那样已删除了条目,则查找将会失败。
在判决框660,判断是否响应于框650的查找而找到了条目。如果没有,则通过前进到框680来执行新缓存条目创建阶段。否则,如果找到了条目,则通过在框670继续,来执行缓存条目更新阶段。
在框680,作为检测到新流或统一缓存条目已被删除的结果,创建一条新缓存条目并将其插入统一缓存中。在框690,更新与正处理的分组相关联的分组描述符,以使其包括新的查找键。取决于应用,所述查找键可以基于分组报头中或多或少的信息,或者甚至可以基于不同的字段。例如,根据一个实施例,为完整的防火墙和过滤而采用的查找键是基于包括IP源地址、IP目的地地址、IP协议、IP源端口和IP目的地端口在内的5重字段来生成的。但是,如果网络设备只执行路由,则只需要这些字段的一个子集,例如IP源地址和IP目的地地址,来生成查找键。此外,对于IPsec(互联网协议安全),使用的是SPI(安全参数索引)而非源端口和目的地端口。因此,根据一个实施例,可以为统一缓存的特定注册用户(例如NAT、过滤、转发等)而将统一缓存最优化。
在框670,为新的或现有的缓存条目执行缓存条目更新阶段。现在以模块相关的方式来修改在框640或650找到的条目,或者在框680创建的条目。即,取决于执行统一缓存更新处理的具体模块的需要,可以添加、删除或以其他方式操作模块专用信息。例如,在慢路径处理期间,NAT基于从NAT规则表中检索到的信息来填充其所采用的缓存条目的字段。缓存条目中另外一组字段可以由过滤模块用来自过滤规则表中的信息来填充。缓存条目中的又一组字段可以由转发模块基于在完整路由表上执行的查找来填充。此外,模块可能对收集各种计量值感兴趣。例如,过滤模块可以跟踪来自一个特定的源IP地址的被过滤的分组的数量;而转发模块可以跟踪涉及一个特定的IP目的地地址的IP流持续时间。
图7是一个框图,其概念性地示出了根据本发明一个实施例,当新流被检测到并通过NAT接收慢路径接收到时的基本分组流。在此示例中,示出了在完成接收NAT处理之前的状态下,与网络分组710相关联的分组描述符705。
在时刻t1,通过NAT接收慢路径720来接收分组描述符705。根据所示出的实施例,分组描述符包括标识输入接口、分组长度、查找键的字段,以及指向分组数据的指针。所述输入接口直接或间接标识在其上接收到网络分组710的逻辑接口。所述分组长度指示以字节为单位的分组长度。取决于具体实现,所述查找键可以表示用于在统一缓存中直接执行查找的值,例如哈希(hash)值,或者所述查找键可以表示来自所述哈希值所基于的原始分组报头的未处理数据。所述指向分组数据的指针是网络分组710的起始地址。在此示例中,将网络分组710示出为具有IP报头711-715和IP有效载荷716的IP分组。所述IP报头包括IP源地址711、IP目的地地址712、IP协议指示符713、IP源端口714和IP目的地端口715。
取决于具体实现,在分组描述符705中可以包括或多或少的字段。例如,根据一个实施例,一个单独的统一缓存与每个逻辑接口相关联,并且该缓存只用于特定接口上的输入分组。即,所有的查找/插入都是基于该接收接口的。但是,在采用单个统一缓存的实施例中,可能不需要包括输入接口字段作为分组描述符705的一部分。
在时刻t2,因为分组描述符705中的查找键为空,所以基于网络分组的IP报头711-715的内容来形成查找键,并在NAT规则表730中执行查找。为了加速对随后与同一分组流相关联的分组的处理,在时刻t3,将流分类,并基于所述查找键,将已被初始化为包括对此流的合适的翻译规则的新缓存条目插入统一缓存740中。在时刻t4,NAT接收慢路径720可以翻译IP源地址711、IP目的地地址712、IP源端口714和IP目的地端口715中的一个或多个。在时刻t5,为了解决以上结合图2所描述的问题,将用于插入所述缓存条目的查找键存储在分组描述符705中,从而确保了在统一缓存访问方面模块间的一致性。最后,在时刻t6,将所述分组转发到下一分组处理任务,在此示例中,该任务是接收过滤器。
图8是一个框图,其概念性地示出了根据本发明一个实施例,当新流被检测到并通过过滤接收慢路径接收到时的基本分组流。继续从图7开始的示例,现在示出了分组描述符705在接收NAT处理已完成后的状态。因此,以用于插入统一缓存条目的查找键填充了分组描述符705中的查找键字段,并且IP报头711-715的多个字段可能已从其初始值进行了修改。在此示例中,已将IP源地址711从89.20.171.1翻译为10.20.171.1,并且已将IP目的地地址从90.1.1.1翻译为11.1.1.1。
在时刻t6,过滤接收慢路径820从NAT接收慢路径720接收到分组描述符705。根据一个实施例,将分组描述符750作为模块通话当中的参数来传递。在其它实施例中,可将分组描述符750存储在全局可访问存储器中。无论如何,在时刻t7,过滤接收慢路径从过滤规则表830中为此流检索合适的过滤指令。在时刻t8,使用分组描述符705中的查找键,检索到NAT接收慢路径720在时刻t3所插入的缓存条目,并更新以使其包括过滤指令。值得注意的是,如果过滤接收慢路径820使用了当前IP报头711-715,则将会生成不同的查找键,将会找不到NAT接收慢路径720所插入的缓存条目,并且将会像在图2的示例中那样,创建重复的条目。但是,因为此模块可以访问用来插入缓存条目的那个查找键,所以确保了访问的一致性,并且避免了不必要地创建重复的缓存条目。在这点上,基于适用于此网络分组710的过滤规则,将网络分组710过滤掉(丢弃)或传递给下一模块。假定所述分组未被过滤掉,则在时刻t9,将其转发给转发模块。
图9是一个框图,其概念性地示出了根据本发明一个实施例,当新流被检测到并通过转发接收慢路径接收到时的基本分组流。从图8的结尾处继续所述示例,在时刻t9,转发慢路径920接收到分组描述符705。在时刻t10,转发慢路径920在路由表930中执行查找,以检索到关于网络分组710及其它与此流相关联的分组的合适的路由指令。然后,转发慢路径920在时刻t11,在统一缓存740中更新由NAT接收慢路径720创建并由过滤接收慢路径820修改的缓存条目。尽管未示出,但所述慢路径的其余部分,例如过滤发送慢路径和NAT发送慢路径,是以类似的方式来处理的。
其它实施例
在上述实施例中,统一缓存查找键被传输给共享该统一缓存的慢路径模块,或者对这些模块可用。尽管此机制具有以非常精妙而简单的方式使得无需缓存同步协议就可以进行分布式处理的优点,但在其它实施例中,转而将指向所述统一缓存条目的指针与表示计数一起传递给所述慢路径可能是有用的。根据此实施例,缓存管理器通过更新所述表示计数而跟踪统一缓存条目的有效性。在一个慢路径模块视图使用指向统一缓存条目的指针时,该模块向缓存管理器询问该条目是否仍有效,而缓存管理器将内部表示计数和与所述指针引用相关联的表示计数相比较。
在上述示例中,为简单起见,引用的是单个统一缓存。但是应该理解到,根据各种实施例都考虑到了多个统一缓存的使用。例如,根据一个实施例,可以将单独的统一缓存而非一个集中的统一缓存与一组一个或多个逻辑或物理网络接口相关联。此外,为了处理由网络设备自身生成的分组,可以维护一个单独的缓存,用于处理这种内部生成的分组。
尽管在上述各种实施例中,假定第一个接收到分组的分组处理应用或者NAT接收慢路径是用缓存查找键作为分组标签的模块,但在其它实施例中,也可以当在物理或逻辑接口上接收时加标签。另一个选择是如果第一次修改分组报头,则在修改时给该分组加标签。
最后,尽管将NAT用作涉及用于缓存查找键生成的分组部分修改的分组处理应用的示例,但是应该理解到,此处所描述的分组加标签方法适用于其它各种当前的或未来的涉及用于缓存查找键生成的分组部分修改的分组处理应用。
在前述说明书中,已参照其具体实施例对本发明进行了描述。但是,显然可以对其进行各种修改和变化,而不脱离本发明更广的精神和范围。因此,应将本说明书和附图认为是说明性的而非限制性的。
此处所包含的材料受到著作权保护。当本专利的公开文本出现于专利商标局的文件或记录中时,著作权人不反对将其进行传真复制,但在其它情况下,无论如何都保留对其著作权的一切权利。