基于硬件的分组过滤加速器的制作方法

文档序号:7866195阅读:245来源:国知局
专利名称:基于硬件的分组过滤加速器的制作方法
此申请涉及与其同时提交的题为“EMBEDDED DATA SETPROCESSING”、美国专利申请序号为10/227,368(代理人案号为703128)的共同待决的专利申请,在此将其全部内容引入,以供参考。
本发明总体上涉及数据处理,更具体来讲,涉及用于过滤数据分组的硬件加速器。
因特网提供了对各种基于因特网的服务和信息源的访问。对于许多用户来说,在工作时以及在家对因特网进行访问是一种重要的工具。然而,将专有网络或者工作站连接到因特网出现了若干障碍。例如,如果不充分地保护,与因特网的连接可能将用户的机密信息暴露给位于全世界的肆无忌惮的入侵者。因特网安全已经通过使用防火墙使个体计算机和公司网络避免通过因特网连接受到恶意攻击而实现。具有代表性的防火墙通过在专有网络接口处过滤输入和输出的数据分组以便拒绝可能有害的通信来操作。
通常在依照数据通信协议定义的一个或多个数据集或者数据分组中经由因特网发选信息。传输控制协议/网际协议(TCP/IP)是用于互联网应用的一套通信协议的例子。TCP是用于在两个联网计算机之间建立连接以便可以交换数据流的协议。TCP还建立用于确保数据的递送并且确保以正确顺序递送信息分组的方法。网际协议(IP)规定了在互联网连接的计算机之间传送的数据分组(也称为数据报)的格式。IP还规定了用于将数据分组从一个计算机传送到另一个计算机的寻址方案。
一类有效的防火墙使用分组过滤来使专有网络或者计算机安全。防火墙可以作为硬件设备来实现,或者可以作为软件应用来实现。但不论是哪种情况,所述防火墙都位于连接的网络之间。例如,所述防火墙可以在位于专有网络和因特网之间的接口设备中实现,以便使专有网络避免通过因特网连接而受到入侵。
分组过滤防火墙使用分组过滤器来检查进入或者离开网络的每一IP分组或者数据报。根据一个用户定义的规则集来接收或拒绝分组。分组过滤器截取每一数据分组,并且在将分组转发到其目的地之前、将每一分组与该规则集进行比较。所述比较可以作为表格查找应用来实现,所述表格查找应用将各种IP分组首部字段与查找表中的值进行比较。将分组首部字段与查找表中的值相比较,直到在所述表中找到匹配条目、或者直到没有找到匹配条目并且选择缺省规则为止。通常,由分组过滤器执行的比较包含源地址、源端口、目的地地址以及目的地端口还有传输协议。
对源和目的地地址的过滤准许控制谁可以与内部网络通信。来自于不希望的网络的所有通信量可以通过所述分组过滤器筛选掉。另一方面,源和目的地端口用来区别网络服务。通过滤除端口,能够拒绝外部世界对专有网络上提供的服务的访问。根据所述分组与标准的比较,可以将分组丢弃、转发到目的地、或者在丢弃的同时给分组源发送一条消息。
虽然使用分组过滤技术的防火墙对专有的计算机网络提供了一定级别的安全性,但是由于它们强迫所有数据通信量通过所述防火墙进入或离开专有网络,故而还产生了通信量瓶颈。在该行业中需要更加快速并且更加有效的方法来实现分组过滤。
本发明致力于一种用于为联网系统提供加速的数据通信的方法和系统,并且已经发现本发明尤其适用于提供高速数据分组过滤。
依照本发明的一个实施例,加速器处理器依照规则集将数据分组归类,并且将归类结果返回到主处理器。所述加速器处理器与主处理器并行操作,并且经由并行总线与主处理器通信。所述主处理器和加速器处理器被安排成集成电路。所述加速器处理器包括总线接口,所述总线接口与所述并行总线耦合并且适用于传送来自所述主处理器的数据分组部分,并且将数据分组的归类结果返回到主处理器。所述加速器处理器还包括与所述总线接口耦合并且可以由所述主处理器访问的存储器。所述存储器适于存储机器代码指令的程序,其中所述机器代码指令是从将被应用于数据分组的规则集转换的。所述存储器还存储由加速器处理器确定的归类结果。所述加速器处理器还包括分组解析程序电路,所述分组解析程序电路与总线接口耦合并且适用于将从主处理器传送的数据分组部分解析为相关数据单元,并且适用于在加速器处理器的存储器中存储相关数据单元。所述加速器处理器的分组分析电路与存储器单元耦合,并且被安排为执行表示将被应用于所述数据分组的规则集的机器代码指令的程序。所述机器代码指令对从所述数据分组部分解析的相关数据单元进行操作,以便归类所述分组。
在本发明的另一个实施例中,依照规则集归类数据分组的方法包括在加速器处理器的存储器中存储直接从所述规则集转换的机器指令的程序。将数据分组的各部分从主处理器传送到加速器处理器。将所述数据分组部分解析为相关数据单元,并且将相关数据单元存储在加速器处理器的存储器中。通过在加速器处理器中执行机器代码指令来归类数据分组;所述机器代码指令对相关数据单元进行操作。将归类的结果从加速器处理器返回到主处理器。
本发明的再一个的实施例包含这样的系统,所述系统包括用于在加速器处理器的存储器单元中存储机器代码指令的程序的装置,所述机器代码指令是直接从规则集转换而来的;用于将数据分组的一个或多个部分从主处理器传送到加速器处理器的装置;用于将数据分组部分解析为相关数据单元并且在加速器处理器的存储器单元中存储相关数据单元的装置;用于在加速器处理器中使用相关数据单元通过执行机器代码指令的程序来归类每一数据分组的装置;以及将归类结果从加速器处理器返回到主处理器的装置。
本发明的上述概要不是意欲描述本发明的每一实施例或者每个实现方式。通过结合附图参照以下详细说明以及权利要求书,将使本发明的优势以及成就变得明显,并且可以更加彻底的理解本发明。


图1是依照本发明一个实施例的具有实现加速器处理器的接口电路的网络的示图,所述加速器处理器用于过滤数据分组;图2是依照本发明一个实施例的具有主处理器以及加速器处理器的接口电路的框图;图3是依照本发明一个实施例的链式线性规则集以及树规则集的插图;图4是举例说明了依照本发明一个实施例的数据分组过滤的流程图;图5是依照本发明一个实施例的用于归类数据集的加速器处理器的框图;图6是举例说明数据集结构的例子;
图7是依照本发明一个实施例的用于归类数据集的嵌入式处理器的存储器图;图8是依照本发明一个实施例的命令字结构的图示;图9是依照本发明一个实施例的状态字结构的图示;图10是依照本发明一个实施例举例说明了加速器处理器代码的具体例子的流程图,所述加速器处理器代码实现用于传递具有特定的目的地端口的UDP分组的规则。
虽然本发明可以具有各种修改以及代替形式,但是在所述附图中已经以举例的方式示出了其特定细节,并且将在下文详细说明。然而,应该理解的是,其意图不在于将本发明限制为所描述的特定实施例。相反地,本发明意在涵概所有落入本发明范围的修改、等效方案以及替代方案,本发明的范围如所附权利要求书限定。
在举例说明的实施例的随后描述中,对形成本发明的一部分的附图作出参考,并且其中通过图示示出了可以实施本发明的各种实施例。应该理解的是,还可以利用其他实施例,并且在不脱离本发明范围的情况下可以作出结构上和功能上的改变。
在一个实施例中,与主接口处理器并行操作的基于硬件的加速器适于依照一个规则集解析、检查并且归类数据分组。将所述归类结果传递到主处理器,以供进一步处理所述数据分组之用。例如,已经发现并行连接的加速器对过滤IP分组数据报尤其有用。此处所述的分组过滤加速器可以有益地用于从主接口处理器卸载分组过滤功能。本发明在分组过滤应用中为数据集归类提供了灵活的硬件加速器,由此增强了网络接口的高速数据处理操作。
本发明的一个方面包括数据分组解析电路,用于将由主处理器传递到加速器处理器的数据分组解析为组成单元。诸如IP数据报之类的数据分组的关键字段可以被解析为相关数据单元并且为进一步的动作而存储在存储器中。
本发明的另一方面包括规则引擎逻辑,用于执行直接从规则集转换的机器代码指令序列以便归类所述数据分组。所述规则引擎逻辑通过寄存器向主处理器提供归类结果,其中所述寄存器可由所述主处理器访问。由此,本发明提供了增强高速数据分组过滤操作的灵活的硬件辅助。
图1提供了依照本发明一个实施例的通用网络体系结构的例子,所述通用网络体系结构可用于容纳一个或多个数据处理终端之间的数据传送。源终端120可以经由因特网140将例如IP分组的数据分组传送到一个或多个目的地终端170、180、190。终端可以是膝上型终端122、台式终端、无线设备126(诸如个人数字助理(PDA))或者任何其他类型的数据处理终端128。目的地终端170、180、190可以被安排在专有网络150中,所述专有网络150可以通过接口设备160来访问。所述接口设备160可以是用于实现IP分组过滤任务(例如阻断不希望的或者可能不安全的数据分组)的防火墙。
在图2中更详细地举例说明了依照本发明一个示例性实施例的网络接口200的框图。所述接口200可用来将专有终端或者网络通过适当的输入/输出连接210、220与因特网连接。大部分接口电路230可以被并入一个或多个集成电路,所述集成电路被耦合在I/O连接210、220之间。依照本发明的一个实施例,所述接口电路230包括通过系统总线260耦合的主处理器240和加速器处理器250。例如,可以将所述主处理器240和嵌入式处理器安排在具有所述主处理器240的集成电路上,其中所述主处理器240使用诸如ARM或者MIPS处理器核心的处理器核心来实现,并且通过高速并行总线结构与加速器处理器250耦合。
将所述主处理器240和加速器处理器250安排为并行操作。依照此配置,所述主处理器240执行大部分数据处理任务。所述加速器250从主处理器240中卸载IP分组解析和归类的任务,由此使主处理器240摆脱与分组过滤操作相关联的一部分耗时的处理开销。
所述主处理器240控制加速器处理器250的操作,并且管理加速器处理器250为分组过滤所应用的规则集。例如,所述主处理器240可以启动并且终止使用加速器处理器250,将加速器处理器寄存器复制到主处理器240,或者利用替代的值改写加速器处理器寄存器。
在此处讨论的示例性配置中,所述主处理器240将要被应用于数据分组的规则集转换为可由加速器处理器250执行的机器代码。所述主处理器240将规则机器代码下载到位于加速器处理器250中的指令高速缓冲存储器中。所述规则可以根据需要来修改或者更新。所述规则机器代码例如可以基于当前数据集,或者基于对当前数据集的所期望的回答,以便打开防火墙中的返回洞(return hole)。
线性规则集与树规则集可以被转换为机器代码并且由所述加速器处理器250应用。其他规则集类型也可以被应用。规则集可以具有从0到很多规则的范围。通常例如在大约5-10个机器代码指令中实现一个规则。线性规则集适用于对照规则顺序至关重要的所定义的规则集来分析数据集。当所述加速器处理器250对照线性规则集分析数据分组时,将所述数据分组通过规则列表与所述规则线性地相比较,从第一个规则开始并且贯穿各个规则继续,直到一个规则与数据集匹配或者完成数据集与规则集的比较。线性规则集的一个例子是对照静态定义的分组过滤器规则集来测试IP数据报。
树规则集不具有预定的顺序流,但是例如根据先前操作结果提供多个分支选项。树规则集适用于对照较大的规则表分析数据集,在所述规则表中规则检查顺序不重要。树规则集的例子是网络地址翻译表,其中通过使用作为关键值的IP地址、IP端口以及协议搜索该树来确定可应用的规则。
规则集可以具有从特定的规则集链接的附加规则集。链接的规则集可以是线性规则集或者树规则集。在一些应用中,规则集可以包括若干线性规则的前文(preamble)、继之以较大树规则集。
图3是举例说明了使用线性与树规则集分析数据分组的例子。将数据分组最初相对于规则集A分析。如果将所述数据分组对照规则集A分析,并且在规则集A中没有匹配任何规则,那么将数据分组对照规则集B分析。如果在规则集B中没有找到匹配的规则,那么将数据分组相对于规则集C来分析。规则集C以匹配所有数据分组的一个绝对规则结束。所述加速器处理器将归类的结果返回到主处理器。
图4的流程图举例说明了依照本发明一个实施例的IP分组过滤过程。将应用于所述数据分组的规则集被转换为可由加速器处理器执行的机器代码指令序列。将所述机器代码指令序列下载到加速器处理器,并且存储在加速器处理器的指令高速缓冲存储器中。当IP分组达到主处理器时,主处理器将IP分组的首部传递到加速器设备,以供归类所述IP分组之用。加速器处理器的解析电路将分组首部解析(430)为相关数据单元。将从分组首部解析的相关数据单元存储(440)在加速器处理器的存储器中。所述加速器处理器执行对相关数据单元进行<p>在4.2V的充电电压、2.7V的放电电压下,和在0.076mA/cm2的电流密度(相当于0.1C)下,对以上所述生产的二次电池进行充电/放电试验。放电电容为11.2mAh(基于LiCoO2的电容为132.6mAh/g),并证实作为锂离子电池的良好操作。图4示出了所得充电和放电曲线。
负载特征试验在下述条件下对以上所述获得的二次电池进行充电-放电试验充电电压,4.2V;放电电压,2.7V;在充电的同时0.076mA/cm2(相当于0.1C)的电流密度;在放电的同时0.152mA/em2(0.2C)、0.228mA/cm2(0.3C)、0.380mA/cm2(0.5C)和0.760mA/cm2(1.0C)的电流密度。在0.1C放电过程中放电电容和体积之比((在特定的放电速度下的电容)/(在0.1C放电过程中的电容)×100)分别为11.1mAh和99.3%、11.1mAh和99.1%、10.8mAh和96.3%,和6.3mAh和56.4%。下表3示出了在各种电流密度下在放电过程中的电容,和相对于0.1C放电的电容比。图5示出了所得放电曲线。
表3
循环试验在4.2V的充电电压、2.7V的放电电压和0.076mA/cm2(相当于0.1C)的电流密度下对以上所述生产的二次电池进行恒电流循环试验。在第100次循环中的放电电容的保留百分数(定义为在第100次循环中的放电电容与第一次循环中的放电电容之比)为96.9%。当对以相同的方式生产的二次电池进行循环试验,其中仅仅放电过程中的电流密度变为0.380mA/cm2(相当于0.5C)的恒电流时,在第100次循环中的放电电容<p>诸如TCP以及UDP的各种传输协议可以结合IP分组使用以便在两个联网计算机之间建立连接,从而可以交换数据流。TCP或者UDP首部通常在IP首部之后,用于分别提供专用于TCP或者UDP协议的信息。例如TCP以及UDP首部的传输协议首部包括附加信息,所述附加信息也可以由加速器处理器使用来归类所述数据分组。
在图6的框图中举例说明了加速器处理器的结构。所述加速器处理器600提供了分组分析规则引擎逻辑610,其作为超精简指令集计算机(vRISC)实现,与基于硬件的数据集解析器逻辑620链接。将表示用于归类数据集的规则集的机器代码指令程序存储在位于嵌入式处理器存储器中的指令高速缓冲存储器630中。数据集解析器逻辑620解析分组首部并且将分组首部的相关数据单元置于一个或多个寄存器640中。例如,存储在寄存器中的相关数据单元可以是来自于数据报首部的源和目的地地址,以及来自于TCP首部的目的地端口和源端口值。所述vRISC规则引擎逻辑610执行机器代码指令程序,以便根据所解析的相关数据单元来归类所述数据分组,其中所述相关数据单元从分组首部解析并且存储在寄存器640中。
所述主处理器能通过总线接口650访问数据集解析器逻辑620、寄存器640、以及指令高速缓冲存储器630。所述总线接口可以通过诸如分散/集中DMA之类的直接存储器存取(DMA)660耦合,以便将数据集信息从主处理器(未示出)馈送到数据集解析器逻辑620。
在图7中提供了加速器处理器存储器的存储器图的图示。可以将嵌入式处理器存储器宽泛地分为堆栈710、程序存储器720、十六个程序寄存器730、两个堆栈控制寄存器750、四个程序控制寄存器760以及两个存储器控制寄存器770。
所述加速器处理器堆栈710可以作为位于存储器顶端的下推堆栈来实现。堆栈控制是通过堆栈控制寄存器750实现的。堆栈的大小由加速器处理器存储器中的StackMax寄存器751确定。压入堆栈的每一值被表示为32位无符号值。如果被压栈的值是16位值,那么所压栈的堆栈条目最重要的16位被表示为零。最初,堆栈指针寄存器752包含零值,并且当将每个值压入堆栈中时,所述堆栈指针寄存器752递增四个字节。如果所述堆栈指针寄存器752递增到超过在StackMax寄存器751中的值,或者递减到零以下,那么停止程序执行,将错误记录在状态寄存器756中,并且将中断递送到主接口处理器。
在位于加速器处理器存储器的程序部分720的一个或多个指令序列721,722,723中,组织表示将由规则引擎vRISC应用于数据分组的规则的机器代码指令序列。规则可以包括一组比较操作以及使用相关数据单元执行的其他相关操作,其中所述相关数据单元是从数据分组首部解析的并且存储在加速器处理器的寄存器中。所述主处理器通过写入指令寄存器767来向加速器处理器指示机器指令序列执行应该从哪儿开始。指令序列执行的起点取决于被应用于数据分组的特定规则集。例如,依照一个规则集来分析第一数据分组可能要求机器代码指令序列的执行从指令序列A 721的开始进行。为了分析第二数据分组,或者为了进一步分析第一数据分组,所述指令的执行可以起始于存储器中与指令序列B 722的开始相关联的不同位置。
在一个示例性的实施例中,所述加速器处理器使用十六个32位寄存器730以用于与数据集分析有关的各种操作。七个寄存器是通用的,并且可以由加速器处理器或者主处理器访问。在表2中描述的九个专用寄存器由数据集解析逻辑使用以便存储相关数据单元。
表2
存储器控制寄存器770用来控制将诸如分组首部的数据分组部分传送到加速器处理器存储器。所述数据集长度寄存器775规定将写入加速器处理器存储器的字节数目。所述分组存储寄存器776提供主处理器或者DMA控制器可以写入加速器处理器存储器的位置。
程序控制寄存器760包括程序计数器763、比较寄存器764、退出寄存器765、状态寄存器766以及命令寄存器767。所述程序计数器763用来控制指令执行的序列。程序计数器中的值表示存储器位置的地址,所述存储器位置包含将由规则逻辑vRISC执行的下一指令。
所述退出寄存器765以及比较寄存器764不可直接由加速器处理器程序访问,但是可由主处理器访问。所述比较寄存器764包含由规则逻辑vRISC执行的最后比较指令的结果并且在系统中是唯一有符号的寄存器。所述退出寄存器765由退出指令设置并且用于将返回值传递到主处理器,其中所述退出指令由规则逻辑vRISC执行。
所述命令寄存器是可由主处理器写入的32位寄存器,并且用于从主处理器导向加速器处理器的命令。所述状态寄存器是32位寄存器,用于向主处理器表明在处理期间可能产生的各种错误或者状态条件。在图8和9中分别示出了所述命令和状态寄存器。
现在返回到图8,当主处理器写命令寄存器时,触发规则逻辑vRISC执行所述命令。保留命令寄存器的16-17位以及24-31位。18-23位是用于控制加速器处理器操作的命令位,如下文更加全面描述的那样。
当在所述指令寄存器中设置了单个位(Single bit)时,所述加速器处理器以单步模式操作,以便调试嵌入式处理器程序。当在所述命令寄存器中设置了单个位时,所述加速器处理器将执行单个指令并且停止。在该单个指令的执行之后,所述加速器处理器在状态寄存器中设置停止位,并且中断用信号通知单步操作完成的主处理器。
命令寄存器中的解析位可以结合执行位由主处理器使用。当在所述命令寄存器中设置了解析位时,停止加速器处理器的程序执行,直到解析下一数据分组。除非设置执行位,否则将忽略解析位。所述执行位指示所述加速器处理器从StartPC位所指示的位置开始执行程序。停止位命令加速器处理器停止执行当前执行的程序。当设置重置位时,所述加速器处理器重置指令存储器以及所有寄存器的内容。设置IPonly位用于命令加速器处理器按照其不具有以太网首部来处理到达的分组。在此情况中,分组的第一个字节必须是IP首部的第一个字节。如果没有设置所述IPonly位,那么所述解析逻辑预期数据集的最初14个字节为以太网首部。
如图9中所示那样,所述状态寄存器可用来指示解析错误已经发生,指示程序计数器上溢或者下溢,指示嵌入式处理器遇到不良指令、堆栈上溢或者下溢、停止条件或者单步方式。如果将状态位设置为1,那么用特定的状态位编码的错误条件已经发生。
如上所述的寄存器表示可以被实现以执行依照本发明的数据分组过滤的示例性寄存器集合。可以使用不同数目的寄存器或者不同的寄存器来完成数据分组过滤。此外,本发明不局限于此处所述的示例性命令集来执行数据分组归类。依照本发明的方法和系统可以实现不同的命令集来执行与数据分组分析相关联的各式各样的任务。
在一个示例性的实施例中,所述规则引擎逻辑vRISC可以执行一组九个操作来分析和归类数据集。依照此例子,每一操作是由长度为1字节的指令定义的。指令可以具有包括在所述指令之内的操作数。或者,所述指令可以具有必须从堆栈拉出的操作数,或者在程序存储器中的指令之后的操作数。
表示将应用于数据分组的规则集的指令序列驻留在加速器处理器存储器中,所述加速器处理器存储器可由主处理器自由地读取和写入。对于所处理的每个数据集,所述主处理器可以将新的程序写入存储器。所述加速器处理器的存储器可以包含用于分析不同类型的数据分组或者以不同的方法分析一个或多个数据分组的多个程序。
执行一个指令序列,直到发生异常或者直到执行退出指令。基于诸如堆栈上溢、堆栈下溢或者无效指令之类的条件可以产生异常。当退出或者异常发生时,所述主处理器通过中断被用信号通知完成了分组分析。然后所述主处理器可以询问退出寄存器以及加速器处理器存储器中的其他寄存器,以便检索分析结果。以下参照表3提供一个示例性规则逻辑vRISC指令集的描述。
表3
图5表示根据本发明,重定向管理器如何处理OPC按数据变化请求。这种情况中涉及的组件为客户机101、重定向组400(作为数据访问和预订状态数据114的一部分)、重定向管理器(RDM)主接收器502、重定向管理器(RDM)辅助接收器504、主组506(作为主OPC服务器118的一部分)以及辅助组508(作为辅助OPC服务器128的一部分)。这种情况描述重定向管理器102如何处理OPC按数据变化请求以及假定所有目标OPC服务器是可用的。
图5假定一些起始条件。OPC客户机101已经连接到重定向管理器,以及已经添加组和项目。组和项目已经被添加到所有目标OPC服务器。
表3一般描述图5所示的特定事件。表3中的各事件以图5所示的实例方法来实现。
表3.OPC数据访问情况OnDataChange
<p>所述退出指令停止执行程序并且用信号通知主接口处理器数据集分析已完成。由退出寄存器返回的值指向用于存储数据集归类结果的寄存器或者其他位置。例如,由所述退出命令返回的值可以是寄存器值、数据集中的值、或者栈顶上的值。
存储指令使得所述程序在寄存器中存储一个值。所述值可以是16位无符号值或者32位有符号值。但不论是哪种情况,寄存器的整个内容都由所存储的值重写。如果存储的是16位值,那么将寄存器的高阶16位设置为零。例如,所存储的值可以是堆栈的栈顶值,或者是指令存储器中的下一值。
如果所述比较寄存器表明上次比较产生的值小于零,则所述分解指令使得程序计数器递增由所述指令之后的第一个半字表示的量。如果所述比较寄存器表明上次比较产生的值大于零,则所述分解指令令程序计数器递增由所述指令之后的第二个半字表示的量。如果上次比较产生的值等于零,则所述分解指令什么都不做。
上面的段落描述了可以用于分组分析的示例性指令集。在本发明的范围内,根据需要或期望可以实现附加指令或者不同的指令来完成各式各样的数据集分析任务。
以下提供了一个用于归类数据分组的指令序列的具体例子。在此具体例子中,所应用的规则是通过任何带有目的地端口值53的UDP分组。以下汇编程序代码提供了简短的程序序列,所述规则引擎逻辑可以使用所述程序序列来执行所述规则push TCP.dstport ;把目的地端口压栈compare 32 stack 0x35 ;与53比较jne next_jrule ;如果不相等,处理规则完成push IP.proto ;把协议寄存器压栈compare 16 stack 0x8 ;与8比较,8表示UDP分组jne next-rule ;如果不相等,分组不是UDPexit 1 ;如果相等,那么利用退出寄存器值1退出图10的流程图进一步举例说明了用于执行示例性规则的机器代码指令序列。在开始所述指令序列之前,由所述解析电路解析分组首部,并且将相关的值存储在加速器处理器寄存器中。在此例子中,在加速器处理器目的地端口寄存器中存储(1005)来自于传输的、例如TCP或者UDP首部的分组首部的目的地端口,这在汇编程序语言例子中以TCP.dstport表示。在加速器处理器的协议寄存器中存储(1010)来自于IP分组首部的协议字节。在上面的汇编程序代码中将协议寄存器表示为IP.proto。
由加速器处理器的规则逻辑引擎归类数据分组是从块1015开始的。将目的地端口寄存器中的值压(1015)到处于栈顶的四个字节中。将处于栈顶的四个字节与值53(0x35十六进制)比较(1020)。所述比较寄存器提供比较操作的结果。如果处于栈顶的值等于53,那么在比较操作之后,所述比较寄存器包含0。如果处于栈顶的值小于或者大于53,那么在比较操作之后,所述比较寄存器分别包含负值或者正值。如果所述比较寄存器不等于零(1025),那么目的地端口值不是53,并且不允许所述分组通过。完成(1030)规则的处理。如果所述比较寄存器等于零(1025),那么目的地端口值等于53,并且如果规则引擎逻辑的进一步处理确定所述分组是UDP协议分组,那么将允许所述分组通过。
例如TCP、UDP等的分组协议在IP分组首部的字节9中表明(参见图5)。IP分组首部的协议字节中的值8表明所述分组使用UDP协议。在块1010,来自于所述IP分组首部的协议字节被存储在协议寄存器中,并且由此可用于规则引擎逻辑处理。所述协议寄存器被压(1035)到堆栈中。将堆栈值与值8比较(1040)。如先前所讨论的那样,所述比较寄存器提供比较操作的结果。如果处于栈顶的值等于8,那么在所述比较操作之后,所述比较寄存器包含0。如果处于栈顶的值不等于8,那么在所述比较操作之后,所述比较寄存器包含非零值。如果所述比较寄存器不等于零(1045),那么所述分组不是UDP分组,并且不允许所述分组通过。完成所述规则处理(1050)。如果所述比较寄存器包含零,那么所述分组满足规则标准所述分组是带有目的地端口53的UDP分组。将所述退出寄存器设置(1055)为1,由此表明将所述分组归类为带有目的地端口53的UDP分组。所述加速器处理器向主处理器发送中断(1060),并且依照所述规则完成数据分组的归类(1065)。
上述例子提供了可以使用本发明实现的、数据分组分析的具体应用,以便依照单个规则归类数据分组。本领域熟练技术人员将意识到的是,可以使用不同的指令组合来实现很多数据分组过滤应用。对于更加特定的规范,可以参考与本发明同时提交的题为PAM SystemOverview、PAM Specification、PAM Microdriver Specification以及Source Code pam.c的附加文献,它们的全部内容被引用于此以供参考。
在不脱离本发明的范围的情况下,可以对在上文讨论的优选实施例作出各种修改以及补充。因此,本发明的范围不应由如上所述的特定实施例来限制,而应该仅仅由以下提出的权利要求书及其等效表述来规定。
权利要求
1.一种用于依照规则集归类数据分组的加速器处理器(250),所述加速器处理器以及主处理器(240)被安排成集成电路,所述加速器处理器与主处理器并行操作并且通过并行总线(260)与所述主处理器通信,所述加速器处理器包括一个总线接口(650),它与所述并行总线耦合并且适用于传送来自所述主处理器的数据分组的各部分、并且适用于将数据分组的归类结果返回到主处理器;一个存储器,它与所述总线接口耦合并且适用于存储机器代码指令程序并且适用于存储所述数据分组的归类结果,其中所述机器代码指令是直接从将应用于所述数据分组的规则集转换而来的;一个分组解析器电路(620),它与所述总线接口耦合并且适用于将从主处理器传送的每一数据分组部分解析为相关数据单元,并且适用于在存储器中存储所述相关数据单元;以及一个分组分析电路(610),它与所述存储器耦合并且被安排为为通过使用存储在所述存储器中的相关数据单元执行机器代码指令程序来归类每一数据分组。
2.如权利要求1所述的加速器处理器,其中所述主处理器是使用处理器核心来实现的。
3.如权利要求1所述的加速器处理器,其中所归类的数据分组是IP数据报。
4.如权利要求1所述的加速器处理器,其中所述存储器包括可由主处理器访问的指令高速缓冲存储器(630)和用于存储相关数据单元的寄存器。
5.如权利要求1所述的加速器处理器,其中存储在所述存储器中的相关数据单元包括数据报首部的各段。
6.如权利要求1所述的加速器处理器,其中由所述主处理器将用于归类数据分组的机器代码指令程序存储在存储器中。
7.如权利要求6所述的加速器处理器,其中由所述主处理器依照规则集中的变化来更新所述机器代码指令程序。
8.如权利要求1所述的加速器处理器,其中所述存储器包括用于接收来自于主处理器的命令的命令寄存器(767),其中所述命令被导向分组分析电路,以用于控制数据分组的归类。
9.如权利要求8所述的加速器处理器,其中从所述主处理器接收的命令包括要开始执行用于归类每一数据分组的机器代码指令的存储器位置。
10.如权利要求1所述的加速器处理器,其中所述存储器包括比较寄存器(764),用于向所述主处理器报告比较指令的结果。
11.如权利要求1所述的加速器处理器,其中所述存储器包括退出寄存器(765),用于向所述主处理器传递数据分组的归类结果。
12.如权利要求1所述的加速器处理器,其中所述分组分析电路包括超精简指令集计算机。
13.如权利要求1所述的加速器处理器,其中所述分组分析电路接收来自于主处理器的命令,所述命令控制每一数据分组的归类。
14.如权利要求1所述的加速器处理器,其中所述分组分析电路接收来自于主处理器的命令,其中所述命令将所述分组分析电路导向要开始执行存储在存储器中的机器代码指令的存储器位置以便归类所述数据分组。
15.如权利要求14所述的加速器处理器,其中由分组分析电路执行的机器代码指令的起点由将应用于所述数据分组的规则集加以确定。
16.如权利要求1所述的加速器处理器,其中所述机器代码指令对一个或多个相关数据单元进行操作以便归类所述数据分组。
17.如权利要求1所述的加速器处理器,其中所述分组分析电路被配置为在所述存储器的返回寄存器中存储归类指示,所述返回寄存器被安排为可由所述主处理器访问。
18.如权利要求1所述的加速器处理器,其中所述分组分析电路被配置为存储由分组分析电路执行的比较操作所得到的值。
19.如权利要求1所述的加速器处理器,其中由所述主处理器将数据分组的各部分传递到加速器处理器。
20.如权利要求1所述的加速器处理器,其中由直接存储器访问电路将数据分组的各部分传递到加速器处理器。
21.一种用于依照规则集归类数据分组的方法,包括在加速器处理器的存储器单元中存储机器代码指令程序,所述机器代码指令是直接从规则集转换而来的;将数据分组的一个或多个部分从主处理器传送到加速器处理器;将数据分组的各部分解析为相关数据单元并且将相关数据单元存储在加速器处理器的存储器单元中;通过使用相关数据单元执行加速器处理器中的机器代码指令程序来归类每一数据分组;以及将归类结果从加速器处理器返回到所述主处理器。
22.如权利要求21所述的方法,其中返回所述归类结果包括在可由主处理器访问的寄存器中存储所述结果。
23.如权利要求21所述的方法,其中归类所述数据分组还包括归类IP数据报。
24.如权利要求21所述的方法,其中将数据分组的各部分解析为相关数据单元还包括将IP数据报首部解析为相关数据单元。
25.如权利要求21所述的方法,其中存储机器代码指令程序还包括依照规则集中的变化来更新机器代码指令程序。
26.如权利要求21所述的方法,其中通过执行机器代码指令程序来归类每一数据分组还包括在由主处理器指示的位置处开始执行机器代码指令程序。
27.如权利要求21所述的方法,其中归类每一数据分组还包括将命令从主处理器传送到加速器处理器,所传送的命令控制每一数据分组的归类。
28.一种用于归类数据分组的系统,包括在加速器处理器的存储器单元中存储机器代码指令程序的装置,所述机器代码指令是直接从规则集转换而来的;将数据分组的一个或多个部分从主处理器传送到加速器处理器的装置;将数据分组的各部分解析为相关数据单元并且将相关数据单元存储在加速器处理器的存储器单元中的装置;通过使用相关数据单元执行加速器处理器中的机器代码指令程序来归类每一数据分组的装置;以及将归类结果从加速器处理器返回到所述主处理器的装置。
全文摘要
一种数据分组过滤加速器处理器(250)与主处理器(240)并行操作,并且与所述主处理器(240)一起被安排在集成电路(200)上。所述加速器处理器(250,600)通过执行从规则集直接转换的机器代码指令序列来归类数据分组。将数据分组的各部分从所述主处理器(240)递送到加速器处理器(250)。所述加速器处理器(250,600)包括分组解析器电路(620),用于将数据分组解析为相关数据单元并且在存储器中存储相关数据单元。分组分析电路(610)执行直接从规则集转换的机器(630)代码指令序列。所述机器代码指令序列对相关数据单元进行操作以便归类所述数据分组。所述分组分析电路通过在可由主处理器(240)访问的寄存器(640)中存储归类结果来将归类结果返回到主处理器(240)。
文档编号H04L29/06GK1679295SQ03819940
公开日2005年10月5日 申请日期2003年8月18日 优先权日2002年8月23日
发明者G·科克斯, J·库林顿 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1