关联存储器中的因特网协议安全性匹配值的制作方法

文档序号:6465857阅读:133来源:国知局
专利名称:关联存储器中的因特网协议安全性匹配值的制作方法
技术领域
本发明的一个实施例尤其涉及通信和计算机系统;更具体而言, 一个 实施例涉及存储和搜索可能格外有益于实现安全性策略和安全性关联的项 目分层结构,例如,但不局限于路由器、分组交换系统、计算机和/或其他 设备中的因特网协议安全性(IPsec)。
背景技术
通信工业正在迅速改变,以适应新兴技术和不断增长的客户需求。这 种对新应用和提高现有应用性能的客户需求正在促使通信网络和系统供应 商采用具有更高速度和更大容量(例如更大带宽)的网络和系统。在尝试 实现这些目标的进程中,被很多通信供应商共同采用的一种方法是使用分 组交换技术。越来越多地,公共和私有通信网络利用诸如因特网协议 (IP)之类的各种分组技术而被建立和扩展。
在1998年11月S.KENT和R.ATKINSON的RFC 2401 "Security Architecture for IP "中定义了用于因特网协议的安全性体系结构 (IPsec),因此通过参考将该文件结合于此。
IPsec实现方式工作在主机或安全性网关环境中,以对IP流量提供保 护。所提供的保护是基于由安全性策略数据库(SPD)限定的要求的,所 述SPD是由用户或系统管理员,或在由上述两者之一建立的约束内操作的 应用程序来建立和维护的。 一般而言,分组基于与数据库中的条目相匹配 的IP和传输层头部信息,而被选择用于三种处理模式之一。基于可应用的数据库策略,每个分组被给予IPsec安全性服务、被丢弃,或被允许绕过 IPsec。
IPsec通过使系统能够选择所需的安全性协议,确定将用于服务的算 法,以及实施提供所请求的服务所需的任何密钥,而在IP层上提供安全性 服务。IPsec可以被用于保护一对主机之间、 一对安全性网关之间,或者一 个安全性网关和一个主机之间的一个或多个"路径"。IPsec可以提供的安 全性服务的集合包括访问控制、无连接完整性、数据来源认证、重放分组 的拒绝(部分序列完整性的一种形式)、机密性(加密)和受限的流量流 机密性。由于这些服务在IP层上提供,因此它们可以被任何更高层协议所 使用,所述更高层协议例如是TCP、 UDP、 ICMP、 BGP等。
IPsec分组分类被指定为两层的分层结构必须首先从安全性策略 (SP)的有序列表中找到相关的SP,然后在定位到的SP的上下文中,必 须找到正确的安全性关联(SA)。安全性关联是一种单工"连接",它向 其运载的流量提供安全性服务。为了保护在两个主机或两个安全性网关之 间的典型双向通信,需要两个安全性关联(每个方向上一个)。安全性关 联由以下三元组来唯一标识,该三元组包括安全性参数索引(SPI) 、 IP 目的地地址和安全性协议标识符。原则上,目的地地址可以是单播地址、 IP广播地址或多播组地址。由SA提供的安全性服务的集合依赖于所选择 的安全性协议、SA的模式、SA的端点以及协议内可选服务的选择。例 如, 一个安全性协议提供用于IP数据报的数据来源认证和无连接完整性。
经由单独的SA传送的IP数据报由恰好一个安全性协议来提供保护。 有时, 一个安全性策略可能要求用于一个特定流量流的多个无法利用单个 SA实现的服务的组合。在此情况下,将需要采用多个SA来实现所需的安 全性策略。术语"安全性关联束"或"SA束"被用于必须通过它们处理 流量以满足安全性策略的多个SA的序列。该序列的顺序由所述策略来限 定。(注意,构成一个束的多个SA可以在不同的端点处终止。例如,一 个SA可以在移动主机和安全性网关之间扩展,而另一个嵌套的SA可以 扩展到网关后面的主机。)
RFC 2401定义在IPsec的一般模型中存在两种名义上的数据库,这两种数据库是安全性策略数据库(SPD)和安全性关联数据库(SAD)。前 者指定用于确定从主机流入或流出的所有IP流量的部署、安全性网关或者 BITS或BITW IPsec实现方式的策略。后一数据库包含与每个(活动的) 安全性关联相关的参数。该部分还定义了选择符的概念,即被安全性策略 数据库用于将流量映射到策略(即SA (或SA束))的一组IP和更高层 协议字段值。
由于被用作选择符的很多字段都具有方向性,因此启用IPsec的每个 接口在名义上都需要分离的流入与流出数据库(SAD和SPD)。通常对于 一个主机或安全性网关(SG),只存在一个这样的接口。注意, 一个SG 总是具有至少两个接口,但是用于企业网的那个"内部"接口通常不启用 IPsec,因此只需要一对SAD和一对SPD。另一方面,如果一个主机具有 多个接口,或一个SG具有多个外部接口,则每个接口可能需要具有分离 的SAD和SPD对。
最后,安全性关联是用于加强IPsec环境中的安全性策略的管理结 构。因此,SA处理的本质元件是在下层的安全性策略数据库(SPD),其 指定哪些服务将以哪种方式被提供到IP数据报。数据库及其接口的形式不 在RFC 2401的范围内。但是,RFC 2401确实指定了某个必须提供的最小 管理功能,其用于允许用户或系统管理员控制IPsec如何被应用到由主机 发送或接收或穿过安全性网关的流量。
在包括非IPsec流量在内的所有流量(流入和流出)的处理期间,都 必须参考SPD。为了支持这一点,SPD需要用于流入和流出流量的截然不 同的条目。SPD包含了策略条目的有序列表。每个策略条目由限定该策略 条目所包括的IP流量集合的一个或多个选择符来作为关键字。这可以被看 作分离的SPD (流入与流出)。另外,对于每个启用了 IPsec的接口,都 必须提供名义上分离的SPD。 SPD必须在被给予IPsec保护的流量和被允 许绕过IPsec的流量之间进行区分。这适用于由发送者应用的IPsec保护以 及必须出现在接收者处的IPsec保护。对于任何流出或流入的数据报,可 能有以下三种处理选择丢弃、绕过IPsec或应用IPsec。第一种选择指的 是完全不允许退出主机、穿越安全性网关,或被递送到应用程序的流量。
第二种选择指的是允许在无附加的IPsec保护的情况下通过的流量。第三 种选择指的是被给予IPsec保护的流量,对于这种流量,SPD必须指定将 提供的安全性服务、将采用的协议、将使用的算法等等。
在每个IPsec实现方式中,存在名义上的安全性关联数据库,在该数 据库中,每个条目限定与一个SA相关联的参数。每个SA在SAD中具有 一个条目。对于流出处理,条目被SPD中的条目所指向。注意,如果SPD 条目当前未指向适用于该分组的SA,该实现方式则创建适当的SA (或 SA束),并将该SPD条目链接到该SAD条目。对于流入处理,SAD中 的每个条目由目的地IP地址、IPsec协议类型和SPI来索引。以下参数与 SAD中的每个条目相关联。该描述并不意指MIB,而仅仅意味着支持 IPsec实现方式中的SA所需的最小数据项目的规范。
图1示出了基于RFC 2401用于处理流出分组的现有技术实现方式。 处理开始于进程块100,并前进至进程块102,在这里,基于分组在安全 性策略数据库中执行数据库査找操作,以识别相应的安全性策略。如果在 进程块104中确定未找到策略,则在进程块106中丢弃分组,并且如进程 块108所指示的,处理完成。否则,在进程块110中,基于分组执行第二 査找操作,这次查找是在与先前的査找操作识别出的安全性策略相对应的 安全性关联数据库中执行的。如进程块112中确定的,如果未定位到相应 的安全性关联,则在进程块114中,该安全性关联被添加到相应的安全性 关联数据库。在进程块116中,分组被根据相应的安全性关联处理。如进 程块118所指示的,处理完成。
为了识别与分组相关联的SA, RFC 2401定义了两个用于执行查找操 作的步骤进程,即通过首先在安全性策略数据库中执行查找,然后基于识 别出的安全性策略来执行后续的第二査找操作以识别出相应的安全性关 联。尤其在分组速率增长,从而将被分组处理器处理的分组数量增长时, 这种两阶段查找进程可能是有限的。希望有一种新方法来执行IPsec识别 操作。

发明内容
除其他内容之外,这里公开了用于存储和搜索可能格外有益于实现安 全性策略和安全性关联的项目分层结构的方法、装置、数据结构、计算机 可读介质、机构和装置,例如,但不局限于在路由器、分组交换系统、计
算机和/或其他设备中使用的因特网协议安全性(IPsec)。
一个实施例按照搜索优先级的顺序存储项目分层结构。多个元素定义 和元素群组被识别出。元素定义和元素的表示按照搜索优先级降低的顺序 被存储在按优先级排列的可搜索数据结构中,从而使每个特定元素定义的 表示被存储在与所述特定元素定义相关联的一组特定元素的表示之后,并 被存储在更低优先级元素定义及其相关元素的表示之前。在一个实施例 中,元素定义包括因特网协议安全性策略,而元素包括因特网协议安全性 关联。在一个实施例中,可搜索的数据结构包括关联存储器或多个关联存 储器条目。在一个实施例中,对应于某个范围的值的一个元素定义或元素 被分裂成多个条目。在一个实施例中,这种分层结构包括多于两个层次, 并且元素定义和元素群组恰好是多于两个层次中的两层。
一个实施例维护用于识别出的因特网协议安全性策略的有序列表的数 据结构。与因特网协议安全性策略的有序列表相关联的有序关联存储器条 目被编程为一个或多个关联存储器。与因特网协议安全性策略的有序列表 相关联的相应上下文存储器条目被编程为一个或多个上下文存储器。基于 接收到的分组对有序关联存储器条目执行关联存储器查找操作,以识别特 定关联存储器条目位置。基于特定关联存储器条目位置对上下文存储器执 行查找操作,以识别因特网协议安全性策略的有序列表中的特定因特网协 议安全性策略。基于接收到的分组的特定安全性关联条目被添加到有序关 联存储器条目,该特定安全性关联条目对应于特定的因特网协议安全性策 略,并且该特定安全性关联条目被添加到有序关联存储器条目中的如下位
置该位置在特定关联存储器条目位置之前,并在因特网协议安全性策略
的有序列表中的位于特定关联存储器条目位置之前的其他安全性策略条目之后。


所附权利要求书具体提出了本发明的特征。从以下结合附图的详细描 述中,可以最好地理解本发明及其优点。
在附图中 图1示出了 IPsec的现有技术实现方式;
图2A的框图示出了用于存储和搜索项目分层结构的一个实施例;
图2B的框图示出了用于存储和搜索项目分层结构的一个实施例;
图3A的框图示出了在一个实施例中使用的按优先级排列的可搜索数 据结构;
图3B的框图示出了在一个实施例中使用的按优先级排列的可搜索数 据结构;
图3C的框图示出了在一个实施例中使用的按优先级排列的可搜索数 据结构;
图4的框图示出了用于存储和搜索特别用于IPsec的项目分层结构的 一个实施例;
图5A示出了在一个实施例中使用的关联存储器条目;
图5B示出了在一个实施例中使用的用于对于相应范围的值生成多个
关联存储器条目的进程;
图6A示出了在一个实施例中使用的用于处理流入分组的进程;
图6B示出了在一个实施例中使用的用于处理流出分组的进程;
图7示出了在一个实施例中使用的用于向关联存储器条目的有序列表
添加条目的进程;以及
图8A-C和图9A-B示出了在一个实施例中使用的用于扩展分区 (partition)以及重新分布分配给分区的空间的进程。
具体实施例方式
除其他内容之外,这里公开了用于存储和搜索可能格外有益于实现安 全性策略和安全性关联的项目分层结构的方法、装置、数据结构、计算机 可读介质、机构和装置,例如,但不局限于在路由器、分组交换系统、计 算机和/或其他设备中使用的因特网协议安全性(IPsec)。这里所描述的 实施例包括各种元素和限制,但是其中没有一个元素或限制被看作必不可
少的元素或限制。每个权利要求单独地全面叙述本发明的一个方面。此 外,所描述的某些实施例可以包括,但不局限于,系统、网络、集成电路
芯片、嵌入式处理器、ASIC、方法和包含指令的计算机可读介质及其 他。 一个或多个系统、设备、组件等可以包含一个或多个实施例。 一个权 利要求中的某些元素或限制可能被相同或不同的系统、设备、组件等所执 行。此后描述的实施例包含本发明的范围和精神内的各种方面和配置,而 附图示出了示例性而非限制性的配置。
这里所使用的术语"分组"指的是所有类型的分组或者任何其他的信 息或数据单元,包括但不局限于,固定长度的信元和可变长度的分组,它 们中的每一个可以或不可以被划分成更小的分组或信元。这里使用的术语 "分组"同样指的是分组本身或分组指示,例如但不局限于,分组或分组 头部的所有或部分、数据结构值、指针或索引,或者分组的任何其他部分 或标识。此外,这些分组可以包含一种或多种类型的信息,包括但不局限 于,语音、数据、视频和音频信息。这里一般使用的术语"项目"指的是 分组或任何其他信息或数据的单元或片段、设备、组件、元件或其他实 体。短语"处理一个分组"和"分组处理"通常指的是基于分组内容(例 如分组头部或其他字段)执行某些步骤或动作,并且这些步骤或动作可以 或不可以包括修改、存储、丢弃和/或转发分组和/或相关数据。
术语"系统"在这里一般用于描述任何数目的组件、元件、子系统、 设备、分组交换元件、分组交换机、路由器、网络、计算机和/或通信设 备或机构,或其组件的组合。术语"计算机"在这里一般用于描述任何数 目的计算机,包括但不局限于个人计算机、嵌入式处理元件和系统、控制 逻辑、ASIC、芯片、工作站、大型机等等。术语"处理元件"在这里一 般用于描述任何类型的处理机构或设备,例如处理器、ASIC、现场可编 程门阵列、计算机等。术语"设备"在这里一般用于描述任何类型的机 构,包括计算机或系统或其组件。术语"任务"和"进程"在这里一般用 于描述任何类型的运行程序,包括但不局限于,计算机进程、任务、线 程、执行应用程序、操作系统、用户进程、设备驱动程序、本机码、机器 或其他语言等,并且可以是交互式的和/或非交互式的,在本地和/或远程执行的,在前台和/或后台执行的,在用户和/或操作系统的地址空间中执 行的,库和/或独立应用程序的例程,并且不局限于任何特定的存储器分 区技术。在附图中示出的步骤、连接和信号与信息的处理包括,但不局限 于,可以以相同或不同的串行或并行顺序和/或由不同的组件和/或进程、 线程等,和/或经由不同的连接而被执行的框图和流程图和消息序列图, 并且这些图可以与保持在本发明的范围和精神内的其他实施例中的其他功 能相结合。此外,术语"识别" 一般用于描述用于直接或间接确认某些东 西的方式或机制,它可以包括,但不局限于,接收、存储器检索、确定、 限定、计算、生成等等。
此外,术语"网络"和"通信机构"在这里一般用于描述一个或多 个网络、通信介质或通信系统,包括但不局限于因特网、私有或公共电 话、蜂窝网络、无线网络、卫星网络、线缆网络、局域网、城域网和/或 广域网,线缆、电子连接、总线等,以及诸如消息传递、进程间通信、共 享存储器等内部通信机构。术语"消息"在这里一般用于描述可以或不 可以,但通常是经由一个或多个任何类型的通信机构被传输的一段信息。
术语"存储机构"包括任何类型的用于以任何格式保存指令或数据的 存储器、存储设备或其他机构。"计算机可读介质"是一个可扩展的术 语,其包括其中包含诸如网络接口卡和缓冲区这样的接口和设备的任何存 储器、存储设备、存储机构和其他存储和信令机构,以及任何通信设备和 被接收和发送的信号,以及计算机化的系统能够解释、接收和/或发送的 其他当前和未来的技术。术语"存储器"包括任何随机访问存储器
(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储组件或 元件。术语"存储设备"包括任何固态存储介质、盘驱动器、磁带、联网 服务、磁带驱动器和其他存储设备。存储器和存储设备可以存储将由处理 元件和/或控制逻辑执行的计算机可执行的指令,以及由处理元件和/或控 制逻辑操作的数据。术语"数据结构"是一个可扩展的术语,其指的是可 以被应用于数据以辅助解释数据或在数据上执行操作的任何数据元素、变 量、数据结构、数据库和/或一个或多个组织方案,例如是但不局限于, 存储位置或设备、集合、队列、树、堆栈、列表、链接列表、阵列、表
格、指针等。数据结构通常被保存在存储机构中。术语"指针"和"链 接"在这里一般用于标识用于参考或识别另一元素、成分或其他实体的某 种机构,并且这些可以包括,但不局限于,对存储器或其他存储机构或其 中位置的参考、数据结构中的索引、值等等。
术语"一个实施例"在这里用于指示特定的实施例,其中每次提及
"一个实施例"可以指代不同的实施例,并且这里在描述相关特征、元素 和/或限制时重复使用的术语没有建立每个和所有实施例必须包括的相关 特征、元素和/或限制的累积集合,尽管一个实施例通常可以包括所由这 些特征、元素和/或限制。另外,短语"用于XXX的装置"通常包括包含 了用于执行XXX的计算机可执行指令的计算机可读介质。
另外,术语"第一"、"第二"等在这里通常用于指代不同单元(例 如第一元件、第二元件)。这里这些术语的使用不一定意味着诸如一个单 元或事件在另一单元或事件之前发生或到来这样的顺序,而是提供了用于 在特定单元之间进行区分的机制。另外,单数时态名词的使用是非限制性 的,其使用通常包括一个或多个特定事物,而不是指仅仅一个(例如词语
"存储器"的使用通常指的是一个或多个存储器,并不是必须指明"一个 存储器或多个存储器"或"一个或多个存储器"或"至少一个存储器"等 等)。此外,短语"基于X"和"响应于X"被用于指示从中导出或导致 某种事物的项目x的最小集合,其中"X"是可扩展的,并且不一定描述
对其执行操作的项目的完备列表等等。另外,短语"被耦合到"用于指示 两个元件或设备之间的某种级别上的直接或间接连接,其中耦合的设备修 改或不修改被耦合的信号或被传输的信息。术语"子集"被用于指示一个 集合中的所有元素或部分元素所组成的群组。术语"子树"被用于指示树 中的全部或部分。此外,术语"或"在这里被用于标识对连接项目中的一 个或多个(包括全部)的选择。
除其他内容之外,这里公开了用于存储和搜索可能格外有益于实现安 全性策略和安全性关联的项目分层结构的方法、装置、数据结构、计算机 可读介质、机构和装置,例如,但不局限于在路由器、分组交换系统、计
算机和/或其他设备中使用的因特网协议安全性(IPsec)。
一个实施例以搜索优先级顺序存储项目分层结构。多个元素定义和元 素的群组被标识。元素定义和元素的表示以搜索优先级降低的顺序被存储 在按优先级排列的可搜索数据结构中,从而使每个特定元素定义的表示被 存储在与此特定元素定义相关联的一组特定元素的表示之后,并且在更低 优先级元素定义及其相关元素的表示之前。在一个实施例中,元素定义包 括因特网协议安全性策略,而元素包括因特网协议安全性关联。在一个实 施例中,可搜索的数据结构包括一个关联存储器或多个关联存储器的条 目。在一个实施例中,对应于某个范围的值的元素定义或元素被分裂为多 个条目。在一个实施例中,分层结构包括多于两个层次,并且元素定义和 元素的群组恰好是这多于两个层次中的两个。
一个实施例维护用于识别出的因特网协议安全性策略的有序列表的数 据结构。与因特网协议安全性策略的有序列表相关联的有序关联存储器条 目被编程为一个或多个关联存储器。与因特网协议安全性策略的有序列表 相关联的相应上下文存储器条目被编程为一个或多个上下文存储器。基于 接收到的分组对有序的关联存储器条目执行关联存储器查找操作,以识别 特定关联存储器条目位置。基于特定关联存储器条目的位置对上下文存储 器执行査找操作,以识别因特网协议安全性策略的有序列表中的特定因特 网协议安全性策略。基于接收到的分组的特定安全性关联条目被添加到有 序关联存储器条目,该特定安全性关联条目对应于特定的因特网协议安全 性策略,并且该特定安全性关联条目被添加到有序关联存储器条目中的如 下位置该位置在特定关联存储器条目位置之前,并在因特网协议安全性 策略的有序列表中的位于特定关联存储器条目位置之前的其他安全性策略 条目之后。
图2A的框图示出了用于存储和搜索项目分层结构的一个实施例。编
程机构200 (例如分组处理器、调度程序、处理元件、ASIC、电路或任何 其他机构)产生和编程一个或多个关联存储器201和一个或多个上下文存 储器202中的条目分层结构。这种分层结构的层次数目可以根据实施例或 其应用而变化。例如,在IPsec的上下文中,存在两个层次(即安全性策 略和安全性关联)。例如,在计算机调度或处理单元的上下文中, 一个实 施例使用两个层次(例如进程和进程中的线程)。 一个实施例使用三个层 次(例如应用程序、进程和线程)。所支持的分层结构的应用和层次的类 型和数目是可扩展的,并且这些仅仅是由实施例支持的无限数目中的一些 示例。
查找字产生机构210 (例如分组处理器、调度程序、处理元件、
ASIC、电路或任何其他机构)产生用于实施例操作所在上下文的査找值 211。关联存储器201基于查找值211执行查找操作,以识别匹配位置结 果212。在一个实施例中,匹配位置/査找结果212被使用。在一个实施例 中,基于匹配结果212在上下文存储器202中执行查找操作,以产生查找 结果213。
图2B的框图示出了用于存储和搜索项目分层结构的一个实施例。系 统240包括按优先级排列的可搜索数据结构,该数据结构被用条目分层结 构编程。系统240通常包括用于存储和搜索项目分层结构的机构和装置。 例如, 一个实施例包括一个如下的进程该进程对应于这里所示框图或流 程图之一,或者对应于利用可以实现权利要求中的其他元素/限制的其他 内部或外部组件或设备来实现权利要求的全部或部分的任何其他装置或机 构。另外,单个或多个系统、设备、组件等可以构成一个实施例。
在一个实施例中,系统240包括处理元件241、存储器242、存储设 备243、 一个或多个关联存储器244和用于接收和发送分组或其他项目的 接口 245,这些元件都经由一个或多个通信机构249 (出于示例目的而被 示为总线)而被耦合。系统240的各个实施例可以包括更多或更少的元 件。例如, 一个实施例不包括关联存储器;相反,按优先级排列的可搜索 数据结构被存储在存储器242中、存储设备243中和/或系统240外部等。
系统240的操作通常受控于使用存储器242和存储设备243的处理元 件241,以执行一个或多个任务或进程,例如,但不局限于存储和搜索项 目分层结构。
存储器242是一种类型的计算机可读介质,并且通常包括随机访问存 储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器 组件。存储器242通常存储将被处理元件241执行的计算机可执行指令和
/或由用于根据本发明的一个实施例实现功能的处理元件241所操作的数 据。存储设备243是另一类型的计算机可读介质,并且通常包括固态存储 介质、盘驱动器、磁带、联网服务、磁带驱动器和其他存储设备。存储设 备243通常存储将被处理元件241执行的计算机可执行指令和/或由用于 根据本发明的一个实施例实现功能的处理元件241所操作的数据。
图3A的框图示出了在一个实施例中使用的按优先级排列的可搜索数 据结构300。在一个实施例中,数据结构300被存储在一个或多个关联存 储器(带有或不带有相应的上下文存储器)中。在一个实施例中,数据结 构300被存储在一个或多个其它的存储器和/或存储设备中。注意,在一 个实施例中,元素定义/安全性策略的排序很要紧,而元素群组/安全性关 联内的元素的排序则无关紧要。但是,在一个实施例中,元素群组/安全 性关联内的元素的排序也很要紧。
如图所示,数据结构300包括多个条目301-309,它们具有如图所示 的按优先级排列的搜索顺序。 一个或多个元素的第一群组301被存储在相 应的第一元素定义302之前。 一个或多个元素的第二群组303被存储在相 应的第二元素定义304之前,以此类推,如元素的n个分区及其相应定义 的表示所示。
在一个实施例中,在数据结构300中存储了元素定义以及元素的表 示,它们以搜索优先级降低的顺序而被存储在按优先级排列的可搜索数据 结构中,从而使每个特定元素定义的表示被存储在与此特定元素定义相关 联的一组特定元素的表示之后,并在更低优先级元素定义及其相关元素的 表示之前。
图3B的框图示出了在一个实施例中使用的按优先级排列的可搜索数 据结构310。在一个实施例中,数据结构310被存储在一个或多个关联存 储器(带有或不带有相应的上下文存储器)中。在一个实施例中,数据结 构310被存储在一个或多个其它的存储器和/或存储设备中。
如图所示,数据结构300包括多个条目311-319,它们具有如图所示 的按优先级排列的搜索顺序。 一个或多个安全性关联的第一群组311被存 储在相应的第一安全性策略定义312之前。 一个或多个安全性关联的第二
群组313被存储在相应的第二安全性策略定义314之前,以此类推,如安 全性关联的m个分区及其相应的安全性策略定义的表示所示。
在一个实施例中,在数据结构310中存储了安全性策略以及安全性关 联的表示,它们以搜索优先级降低的顺序而被存储在按优先级排列的可搜 索数据结构中,从而使每个特定安全性策略的表示被存储在与此特定安全 性策略相关联的一组特定安全性关联的表示之后,并在更低优先级安全性 策略及其相关安全性关联的表示之前。
图3C的框图示出了在一个实施例中使用的按优先级排列的可搜索数 据结构330。在一个实施例中,数据结构330被存储在一个或多个关联存 储器(带有或不带有相应的上下文存储器)中。在一个实施例中,数据结 构330被存储在一个或多个其它的存储器和/或存储设备中。注意,在一 个实施例中,分层结构层次群组331-336中的每一个群组内的项目的排序 都很要紧;而在一个实施例中,分层结构层次群组331-336中的至少一个 群组内的项目的排序是无关紧要的。
如图所示,数据结构300包括N个分层结构的层次,以强调一个实施 例支持两个或更多个分层结构的层次,这些层次具有如图所示的按优先级 排列的搜索顺序。在特定的分层结构的层次中,存在相同或不同数目的群 组。例如,如图所示,分层结构的层次1包括具有按优先级排列的搜索顺 序的J个条目群组,分层结构的层次2包括具有按优先级排列的搜索顺序 的K个条目群组,而分层结构的层次N包括具有按优先级排列的搜索顺 序的L个条目群组。注意,在一个实施例中,J、 K和L的值是不同的。 而在一个实施例中,J、 K和L中的两个值是相同的。而且,在一个实施 例中,元素定义和元素群组可以被编程到群组331-336中的任何一个群组 中去,只要对应于所需搜索顺序的所需分层结构被保持即可。在一个实施 例中,存在多个层次的元素定义。在一个实施例中,存在多个层次的元 素。在一个实施例中,元素定义总是位于分层结构的每个层次内的最低优 先级群组332、 334和336中。在一个实施例中,元素总是位于最高搜索 优先级群组331、 333和335中,而其他群组包括了多个层次的元素定 义。在一个实施例中,群组331-336仅包括元素定义。在一个实施例中,
群组331-336仅包括元素(和/或任何其他项目的表示)。
例如,如图3C所示的分层结构的层次和群组被用于一个实施例,以 存储分层结构中N个层次的用于分类动物的群组条目。分层结构的每个 层次可以包括按1到7的搜索顺序排列的(1)物种、(2)属、(3) 科、(4)目、(5)纲、(6)门和(7)界的群组。因此,当执行搜索 时,物种如果己知则将被识别出。否则,将(以被编程的顺序)识别出相 应的属、科、目、纲、门和界的第一匹配条目。另外,在一个实施例中, 如图3C所示的分层结构的层次和群组被用于存储分层结构中N个层次的 用于识别匹配的线程、进程、应用程序、用户等(或其某个变体)的群组 条目。
图4的框图示出了用于存储和搜索特别用于IPsec的项目分层结构的 一个实施例,并且其使用一个或多个三重内容可寻址存储器,所述存储器 被示为TCAM 424。在一个实施例中,另一类型的关联存储器被使用。虽 然图4使用了 TCAM的特定标签,但是另一类型的可扩展型关联存储器 (例如CAM)被用于一个实施例。TCAM管理器422在带有上下文存储 器的流入安全性处理器402内以及在带有上下文存储器的流出安全性处理 器442内编程和更新TCAM 424和上下文存储器。在一个实施例中, TCAM管理器422在编程一个或多个关联存储器424和相应上下文存储器 的过程中,使用存储了安全性策略和关联数据库的存储器421。
在一个实施例中,流入安全性处理器402只在TCAM中执行査找操 作以用于如RFC 2401所示的清洁(clear)分组SP搜索;而在一个实施例 中,当如图4所示的体系结构可扩展以满足特定应用的需求时,可采用不 同的搜索机制。注意,在一个实施例中,特定数据库的内容可以被复制, 以便使查找(例如用于流入分组和用于流出分组)和/或更新动作最优 化。
在一个实施例中,流入安全性处理器402接收到流入分组411,并产 生包括在更新和査找请求412中的査找请求。TCAM管理器422立即或在 存储査找请求之后产生适当的査找字,如果该查找字还未被流入安全性处 理器402提供的话。该查找字在编程和查找请求423中被传输到TCAM
424, TCAM 424执行关联存储器的查找操作以产生査找结果413,该查找 结果413被用于在流入安全性处理器402内的上下文存储器中执行查找操 作。
在一个实施例中,流入安全性处理器402内的上下文存储器包括指针 /索引的阵列,该阵列由包括在査找结果413中的TCAM匹配地址来索 引。流入安全性处理器402使用来自该阵列的指针/索引来定位SPD条 目。从而,当SP搜索完成时,流入安全性处理器402使用TCAM匹配位 置作为对上下文存储器中的SP条目阵列的索引,其中一个或多个条目可 能指向存储器401中存储了SP数据库(SPD)的拷贝的同一SP。
在一个实施例中,上下文存储器不被使用。相反,保存在存储器401 中的SPD直接由TCAM匹配索引来索引,阵列中有重复SP,并且对于不 涉及SP的索引有空条目(或其他指示)。
在一个实施例中,存储在存储器401中的SPD作为字节阵列而被保 存。每个字节对应于具有相同索引的TCAM条目,并包含当清洁分组与 其相关TCAM条目相匹配时所需的动作。被允许的动作包括丢弃、通 过和保护。如果该动作是保护分组,则将建立SA隧道。当SP被建立 时,TCAM管理器422必须发起SPD中的相应SP。在一个实施例中,这 种更新请求412被传输到流入安全性处理器402,由流入安全性处理器 402更新存储器401。
一个实施例包括存储在存储器403中的安全性关联数据库(SAD)。 在一个实施例中,SAD被实现为由安全性策略索引(SPI)来索引的阵 列。在一个实施例中,使用SPI的最低的17位;而在一个实施例中,使 用另一组字节。当具有有效的IPsec头部的分组到达时,其SPI被提取出 来并被索引到SAD。 TCAM管理器422在它们被插入时也建立这些SA。
在一个实施例中,流出安全性处理器442使用TCAM 424来匹配安全 性策略与服务关联。与因特网协议安全性策略的有序列表相关联的有序关 联存储器条目被编程到一个或多个关联存储器424中,而相应的上下文存 储器条目被编程到流出安全性处理器442的上下文存储器中。
在一个实施例中,安全性策略和安全性关联的分层结构被存储在
TCAM 424中,以使对应于特定安全性策略的安全性关联条目被存储在特 定安全性策略之前,并且使安全性策略以其按优先级排列的顺序被存储。 在一个实施例中,与安全性策略相关的安全性关联被存储在对应于所有更 高优先级安全性策略(及其各自的安全性关联)的条目之后;而在一个实 施例中,未要求这种排序。因此,在一个实施例中,TCAM 424中的单个 査找操作可以被用于识别对应于最高优先级安全性策略的安全性关联,如 果存在这样的安全性关联的话,否则,将识别出该安全性策略本身。
在一个实施例中,由流出安全性处理器442基于接收到的流出分组 431来发起关联存储器的査找操作,以识别特定的关联存储器条目位置 (例如被包括在查找结果433中)。随后,基于特定的关联存储器条目位 置,在上下文存储器中执行查找操作,以识别因特网协议安全性策略的有 序列表中的特定因特网协议安全性策略或安全性关联之一。如果安全性策 略被识别出,TCAM管理器432则将基于接收到的分组将特定安全性关联 条目添加到TCAM中的一个位置,该位置位于査找操作期间识别出的特 定关联存储器条目位置(即对应于匹配的安全性策略的条目)之前,并位 于对应于具有更高优先级的安全性策略的条目之后。
在一个实施例中,带有上下文存储器的流出安全性处理器442中的上 下文存储器包括到SP和SA的指针/索引(例如与之前描述的指针阵列类 似)。在一个实施例中,流出安全性处理器442维护由TCAM匹配地址 索引的混合SP和SA的直接阵列。在一个实施例中,SP信息包括参考 ID,以及涉及对匹配的对待方式的信息,所述对待方式包括丢弃、通过 或发起隧道。在一个实施例中,SA信息内容需要多个缓存线路,通过在 流出安全性处理器442上包括足够的存储器,可以在避免每个分组的额外 存储器事务的同时使用后一方案。另外, 一个实施例还包括用于确定应该 在何时删除元素的机制。
一个实施例包括流出安全性处理器442 (它包括也充当SPD的上下文 阵列)、带有安全性策略数据库的存储器441和带有安全性关联数据库 (SAD)的存储器443。在一个实施例中,两个安全性关联数据库被用于 提高性能。流出安全性处理器442通过以下方式来处理每个流出分组首
先提取在RFC 2401中指定的5个选择符,然后在TCAM 424中执行对于 匹配的搜索。如果找到匹配,流出安全性处理器442则使用包括在査找结 果433中的匹配的TCAM条目的索引来索引上下文阵列。上下文阵列条 目指示TCAM匹配对应于匹配的SA还是SP。如果是SP,上下文阵列则 还包含用于匹配该SA的分组的适当动作。如果是SA,上下文阵列则包 含到用于相应SA的SAD的索引。流出SA只有一种数据结构。
图5A示出了在一个实施例中使用的关联存储器条目。如图所示, TCAM条目500包括源地址字段501、目的地地址字段502、源端口字段 503、目的地端口字段504、协议类型字段505、服务指示字段506、用于 指示该条目是SA还是SP条目的条目类型字段507和实现方式特定字段 508。注意, 一个实施例在该条目对应于服务策略的情况下,在字段507 中将掩码字段设置为不关心,这是因为每个搜索都是在SPD上(例如在 所有SP条目上)执行的。通过在条目对应于SA时不掩藏该值,则可以 搜索所有条目,或只搜索SP。因此,全局掩码寄存器0 510将字段511-516中的多个位设置为匹配,并将字段517-518中的多个位设置为忽略 (即不关心)。从而,通过在搜索中使用全局掩码寄存器0 510,将致使 SP和SA条目两者都被搜索。全局掩码寄存器1 520将字段521-527中的 多个位设置为匹配,并将字段528中的位设置为忽略(即不关心)。从 而,通过在利用指定SP条目类型的查找字的搜索中使用全局掩码寄存器 1 520,搜索将致使只有SP条目将被搜索。注意,块掩码的使用在2002 年5月14日发布的Ross等人的美国专利6,389,506 "Block Mask Ternary CAM"中有所描述,因此通过参考将该专利结合于此。
图5B示出了在一个实施例中使用的用于对于相应范围的值产生多个 关联存储器条目的进程。某些应用希望在某个范围的值(例如源端口号 72-83)上匹配。
由于TCAM不支持任意集合或范围作为选择标准,因此需要分裂器 来执行任何所需的条目扩展。例如,实现目的地端口范围<25和>25需要 将单个条目分裂为16个条目。图5B示出了在一个实施例中用于将条目分 裂成多个条目的机制的伪代码。分裂器使用匹配值和不关心掩码的集合,
将以范围设置格式指定的SP转换成以扩展形式指定的SP。例如,支持1 到15的范围变为4组(匹配值,不关心掩码):(0x1, 0xe)、 (0x2, 0xd)、 (0x4,0xb)和(0x8,0x7)。如图所示,首先,检査TCAM条目d...d以判断它 是否与被该范围所覆盖的值的子集相匹配。如果不匹配,则以Od...d和 ld…d重复该进程。此进程递归地发生(使用栈——非函数递归)。当被 测试的条目与无交集的值集合相匹配时,修剪分支。当条目与被该范围所 匹配的值的子集相匹配时,条目被存储。与重叠集合相匹配的条目被分 裂,并被压入到工作栈上。
图6A示出了在一个实施例中使用的用于处理流入分组的进程。处理 开始于进程块600,并前进至进程块602,在这里,分组被接收。如进程 块604所确定的,如果分组被标记为符合IPsec,则在进程块606中,分 组被处理,并且处理完成,如进程块619所示。否则,在进程块610中, 基于接收到的分组(例如具有与存储在关联存储器中的那些或数据结构的 其他实现方式相一致的字段)来产生查找字。在进程块612中,使用査找 字和全局掩码寄存器在关联存储器中发起并执行査找操作,从而只有SP 条目被搜索。在进程块614中,査找结果被接收,并在上下文存储器中执 行基于该结果的查找操作。然后,在进程块616中,根据在上下文存储器 中识别出的动作来处理分组。处理完成,如进程块619所示。
图6B示出了在一个实施例中使用的用于处理流出分组的进程。处理 开始于进程块640,并前进至进程块642,在这里,分组被接收。接下 来,在进程块644中,基于接收到的分组产生查找字。在进程块646中,
使用查找字和全局掩码寄存器在关联存储器中发起并执行查找操作,从而 使SP和SA条目两者都被搜索。在进程块648中,查找结果被接收,并 在上下文存储器中执行基于该结果的査找操作。如进程块650所确定的, 如果匹配的条目对应于SA条目,则在进程块652中,基于从上下文存储 器中获取的查找结果在SAD中识别将执行的动作,并且根据识别出的动 作来处理分组。否则,在进程块660中,根据由上下文存储器识别出的动 作来处理分组;并且在进程块662中,安全性访问条目被添加到SAD, 并且关联和上下文存储器被相应地更新。处理完成,如进程块669所示。
图7示出了在一个实施例中使用的用于向关联存储器条目的有序列表 添加条目的进程。处理开始于进程块700,并前进至进程块702,在这 里,识别出关联存储器或其他按优先级排列的可搜索数据结构的更新请求 接下来,在进程块704中,识别出用于添加一个或多个条目的分区和可能 的确切位置。如进程块706所确定的,如果在识别出的分区中存在用于添 加一个或多个条目的空间,则在进程块712中添加条目。否则,在进程块 708中,建立(或尝试建立)用于新条目的空间。如进程块710所确定 的,如果该分区的扩展成功,则在进程块712中添加条目。否则,不存在 用于所述条目的空间,并且产生错误状况。处理完成,如进程块714所 示。
图8A-D和图9A-D示出了在一个实施例中使用的用于扩展分区以及 重新分布分配给分区的空间的进程。注意,这些进程可以以递归或其他方 式调用以扩展/收縮分区,从而重新分布这些分区中的空闲空间。 一个实 施例试图在所有分区间保持平均的空闲空间分布(或接近平均分布的某种 情况),以使将在向分区添加一个或多个条目时执行的调整量最小化。通 过保持分区间的空闲空间的大致平均分布,可以快速执行元素或元素定义 (它可以包括一个或多个关联存储器条目)的单次插入,并限制最坏情况 的插入时间,这对于具有高更新速率的应用来说是很重要的。注意, 一个 实施例并未尝试保持空闲空间的平均分布,这对于具有相对较低插入速率 的应用来说可能非常实用,尤其当与最坏情况插入时间相比时更是如此。
在一个实施例中,当分区需要空间或正处于饥饿中(例如空间未用 完,但是希望增大其空间以用于未来的添加)时,它从相邻的一个或多个 分区获取空间,并且可能这些分区都从它们附近的一个分区获取空间等 等。在用于"喂养"饥饿分区的该进程或另一进程期间,可以重新分配某 些空闲空间。当然, 一个实施例使用用于扩展分区和重新分布空间的另一 机制。
图8A示出了在一个实施例中使用的用于扩展分区的进程。处理开始 于进程块800。如进程块802所确定的,如果将增大尺寸的分区不具有左 侧的相邻分区,则如进程块804所确定的,如果该分区具有右侧的相邻分区,则在进程块810中,从相邻的右侧分区获取左侧的空间。否则,在进 程块806中,识别出该分区是唯一分区,并且该分区获取可用作分层结构 的数据库的整个关联存储器空间。
否则,在进程块802中确定该分区具有左侧的相邻分区。如进程块 812中所确定的,如果该分区不具有右侧的相邻分区,则在进程块814 中,获取左侧相邻分区的右侧空间。否则,在进程块816中,获取左侧相 邻分区的左侧空间。在进程块818中,基于获取的空间,更新用于该分区 的空间计数。
如进程块820所确定的,如果已经获取了足够的空间,则处理前进至 进程块808。否则,在进程块822中,获取右侧相邻分区的右侧空间,并 且在进程块824中,基于获取的空间,更新用于该分区的空间计数。
如进程块826所确定的,如果已经获取了足够的空间,则处理前进至 进程块808。否则,在进程块828中,获取左侧相邻分区的左侧空间。
如进程块830所确定的,如果左侧分区处于饥饿中(例如具有比分区 间的平均空闲空间少或少得多的空闲空间),则在进程块832中,获取右 侧相邻分区的右侧空间,并在进程块834中,将获取的空间馈给右侧的饥 饿分区。
如进程块836所确定的,如果右侧分区处于饥饿中(例如具有比分区 间的平均空闲空间少或少得多的空闲空间),则在进程块838中,获取左 侧相邻分区的左侧空间,并在进程块840中,将获取的空间馈给左侧的饥 饿分区。
最后,给予该分区的空间量在进程块808中被返回,并且处理完成, 如进程块849指示。
图8B示出了在一个实施例中使用的从一个分区获取左侧空间的进 程。处理开始于进程块850,并前进至进程块852,在这里计算当前分区 中的可用空间。如进程块854所确定的,如果存在额外空间,则在进程块 856中,该分区被收縮以为其他分区腾出空间。否则,在进程块858中, 分区确定它是否处于饥饿中(例如需要更多空间),并据此更新其状态。
接下来,如进程块860所确定的,如果有更多的左侧分区需要检査以
获得所需空间,则在进程块862中,选择左侧分区,并且处理返回到进程 块852。否则,在进程块864中,当前分区中的条目被向左挤压/移动。在 一个实施例中,所有元素/SA和定义/SP都被紧靠其邻居移动,从而在它 们之间不再有空闲空间。如进程块866所确定的,如果当前分区不是初始 分区,则在进程块868中,选择右侧的下一分区,并且处理返回到进程块 864。否则,在进程块870中,返回被给予的空间量和饥饿状态。处理完 成,如进程块872所示。
图8C示出了在一个实施例中使用的用于从一个分区获取右侧空间的 进程。处理开始于进程块880,并前进至进程块882,在这里计算当前分 区中的可用空间。如进程块884所确定的,如果存在额外空间,则在进程 块886中,该分区被收縮以为其他分区腾出空间。否则,在进程块887 中,该分区确定它是否处于饥饿中(例如需要更多空间),并据此更新其 状态。
接下来,如进程块888所确定的,如果有更多的右侧分区需要检査以 获得所需空间,则在进程块890中,选择右侧分区,并且处理返回到进程 块882。否则,在进程块892中,当前分区中的条目被向右挤压/移动。在 一个实施例中,所有元素/SA和定义/SP都被紧靠其邻居移动,从而在它 们之间不再有空闲空间。如进程块894所确定的,如果当前分区不是初始 分区,则在进程块896中,选择左侧的下一分区,并且处理返回到进程块 892。否则,在进程块898中,返回被给予的空间量和饥饿状态。处理完 成,如进程块899所示。
图9A示出了在一个实施例中使用的用于喂养左侧饥饿分区的进程。 处理开始于进程块900,并前进至进程块902,在这里计算出左侧分区的 数目。在进程块904中,计算出空闲空间的整数值和分数值。在进程块 906中,将当前分区扩展整数量。如进程块908确定的,如果当前分区剩 余了一定分数量,则在进程块910中,使当前分区再扩展一个条目,并使 分数量减1。如进程块912确定的,如果剩余一个左侧邻居,则在进程块 914中,选择左侧的邻居分区,并且处理返回到进程块906。否则,在进 程块916中,如果还存在任何剩余的空闲空间,则将其提供给当前分区。
处理完成,如进程块918所示。
图9B示出了在一个实施例中使用的用于喂养右侧饥饿分区的进程。 处理开始于进程块930,并前进至进程块932,在这里计算出右侧分区的 数目。在进程块934中,计算出空闲空间的整数值和分数值。在进程块 936中,将当前分区扩展整数量。如进程块940确定的,如果当前分区剩 余了一定分数量,则在进程块942中,使当前分区再扩展一个条目,并使 分数量减1。如进程块944确定的,如果剩余一个右侧邻居,则在进程块 946中,选择左侧的邻居分区,并且处理返回到进程块936。否则,在进 程块948中,如果还存在任何剩余的空闲空间,则将其提供给当前分区。 处理完成,如进程块950所示。
考虑到可以应用本发明的原理的很多可能的实施例,将意识到,这里 相对于附图/图形所描述的实施例及其方面仅仅是示例性的,而不应将其 看作限制本发明的范围。例如,正如本领域技术人员将意识到的,很多进 程块操作可以被重新排序,从而在其他操作之前、之后,或与其他操作几 乎同时被执行。而且,在各种实施例中,可以使用很多不同形式的数据结 构。如这里所述的本发明设想所有这些实施例都可以落入所附权利要求书 及其等同物的范围内。
权利要求
1.一种用于基于多个策略的分层结构来处理分组的装置,所述装置包括关联存储器的多个关联存储器条目,所述多个关联存储器条目被编程为对应于所述多个策略的分层结构的多个策略和与所述多个策略相对应的多个关联,其中所述关联存储器被配置为识别出所述多个关联存储器条目中的按预定优先级顺序具有最高优先级的匹配查找字的关联存储器条目,其中所述多个策略被编程到所述多个关联存储器条目中,以使得所述多个策略的分层结构匹配所述多个关联存储器条目的所述预定优先级顺序,其中每个与所述多个关联中的特定关联相对应的关联存储器条目被编程到所述多个关联存储器条目中的下述位置按所述预定优先级顺序处于与所述多个策略中的所述特定关联的策略相对应的关联存储器条目之前并且处于与所述多个策略中在所述多个策略的分层结构中更高的另一个策略相对应的任何关联存储器条目之后;以及分组处理机构,该机构被配置为用于基于对所述多个关联存储器条目进行的查找操作的查找结果来处理分组,其中所述查找字是基于所述分组来得出的。
2. 如权利要求1所述的装置,其中所述分组处理机构被配置为响应于识别出所述最高优先级匹配条目对应于所述多个策略中的特定策略而不对 应于所述多个关联之一,使得与所述特定策略相对应的关联存储器条目被添加到所述多个关联存储器条目中;其中所述被添加的关联存储器条目被编程到所述多个关联存储器条目中的下述位置按所述预定优先级顺序处于与所述特定策略相对应的关联存储器条目之前并且处于与所述多个策略 中在所述多个策略的分层结构中更高的另一个策略相对应的任何关联存储 器条目之后。
3. 如权利要求2所述的装置,其中所述多个策略中的每一个对应于因 特网协议安全性策略,并且所述多个关联中的每一个对应于因特网协议安 全性关联。
4. 如权利要求1所述的装置,其中所述多个关联存储器条目中的每一 个是三重内容可寻址存储器条目。
5. 如权利要求1所述的装置,其中所述多个关联存储器条目全都被基 于所述査找字并行地搜索。
6. 如权利要求1所述的装置,其中所述多个策略中的每一个对应于因 特网协议安全性策略,并且所述多个关联中的每一对应于因特网协议安全 性关联。
7. 如权利要求1所述的装置,包括用于响应于识别出所述最高优先级 匹配条目对应于所述多个策略中的特定策略而不对应于所述多个关联之一 来将与所述特定策略相对应的关联存储器条目添加到所述多个关联存储器 条目中的装置;其中所述被添加的关联存储器条目被编程到所述多个关联 存储器条目中的下述位置按所述预定优先级顺序处于与所述特定策略相 对应的关联存储器条目之前并且处于与所述多个策略中在所述多个策略的 分层结构中更高的另一个策略相对应的任何关联存储器条目之后。
8. 如权利要求7所述的装置,其中所述多个策略中的每一个对应于因 特网协议安全性策略,并且所述多个关联中的每一个对应于因特网协议安 全性关联。
9. 如权利要求7所述的装置,其中所述多个关联存储器条目中的每一 个是三重内容可寻址存储器条目。
10. —种用于基于多个策略的分层结构来处理分组的方法,所述方法 包括基于根据分组得出的查找字来对关联存储器的多个关联存储器条目执 行查找操作以便识别査找结果,所述多个关联存储器条目对应于所述多个 策略的分层结构的多个策略和与所述多个策略相对应的多个关联,其中所 述关联存储器被配置为识别出所述多个关联存储器条目中的按预定优先级 顺序具有最高优先级的匹配所述查找字的关联存储器条目,其中所述多个 策略被编程到所述多个关联存储器条目中,以使得所述多个策略的分层结 构匹配所述多个关联存储器条目的所述预定优先级顺序,其中每个与所述 多个关联中的特定关联相对应的关联存储器条目被编程到所述多个关联存储器条目中的下述位置按所述预定优先级顺序处于与所述多个策略中的 所述特定关联的策略相对应的关联存储器条目之前并且处于与所述多个策 略中在所述多个策略的分层结构中更高的另一个策略相对应的任何关联存 储器条目之后;以及基于所述査找结果来处理所述分组。
11. 如权利要求IO所述的方法,包括响应于识别出所述最高优先级匹 配条目对应于所述多个策略中的特定策略而不对应于所述多个关联之一, 将与所述特定策略相对应的关联存储器条目添加到所述多个关联存储器条 目中;其中所述被添加的关联存储器条目被编程到所述多个关联存储器条 目中的下述位置按所述预定优先级顺序处于与所述特定策略相对应的关联存储器条目之前并且处于与所述多个策略中在所述多个策略的分层结构 中更高的另一个策略相对应的任何关联存储器条目之后。
12. 如权利要求11所述的方法,其中所述多个关联存储器条目中的每 一个是三重内容可寻址存储器条目。
13. 如权利要求11所述的方法,其中所述多个关联存储器条目全都被 基于所述査找字并行地搜索。
14. 如权利要求11所述的方法,其中,所述多个策略中的每一个对应 于因特网协议安全性策略,并且所述多个关联中的每一对应于因特网协议 安全性关联。
15. 如权利要求IO所述的方法,其中所述多个关联存储器条目中的每 一个是三重内容可寻址存储器条目。
16. 如权利要求IO所述的方法,其中所述多个关联存储器条目全都被 基于所述査找字并行地搜索。
17. 如权利要求IO所述的方法,其中所述多个策略中的每一个对应于 因特网协议安全性策略,并且所述多个关联中的每一个对应于因特网协议 安全性关联。
全文摘要
本发明公开了用于存储和搜索项目分层结构的机制,它可能尤其有益于实现安全性策略(312、314、319)和安全性关联(311、313、318),例如但不局限于因特网协议安全性(IPsec)。项目分层结构按照搜索优先级的顺序被存储。多个元素定义和元素群组被识别出。元素定义和元素的表示按照搜索优先级降低的顺序被存储在按优先级排列的可搜索数据结构(310)中,从而使每个特定元素定义的表示被存储在与所述特定元素定义相关联的一组特定元素的表示之后,并被存储在更低优先级元素定义及其相关元素的表示之前。元素定义可以包括因特网协议安全性策略(312、314、319),而元素可以包括因特网协议安全性关联(311、313、318)。可搜索的数据结构可以包括关联存储器或多个关联存储器条目。
文档编号G06F17/30GK101345759SQ20081013491
公开日2009年1月14日 申请日期2004年5月26日 优先权日2003年7月9日
发明者亨利·肯-纯·克沃克, 托马斯·杰弗里·安德维克, 阿士瓦斯·纳贾拉杰 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1