用于协议数据单元中协议模式识别的方法和设备的制作方法

文档序号:7916434阅读:222来源:国知局
专利名称:用于协议数据单元中协议模式识别的方法和设备的制作方法
技术领域
本发明一般涉及计算机网络系统中关于用于对其进行封装的协议的数据分组或帧,还通常称为协议数据单元(PDU)的识别,并且还涉及这样识别的数据分组随后的选择或过滤。
背景技术
现代计算机网络包括互联的计算机集合。这样的网络的主要功能是能够在成员计算机之间进行信息交换。因为成员计算机典型地自主运行,没有关于何时其他计算机试图通过网络传送信息的控制,数据通常划分成许多更小的片然后在数据分组或帧内单独地传送。这一应用提供了对网络更统一的访问,以及在连接到网络的不同计算机的分组之间有干扰的情况下重新传送分组的机会。给定的分组包括为其分配的数据部分,定义分组模式的信息,以及如分组数和分组的发送方及接收方地址的其他信息。通过预定的协议规定数据分组的模式。由于网络是分层结构的事实数据分组的模式化很复杂。典型地数据分组由一个网络层接着另一个网络层顺序地封装,每层有自己的协议。组成的数据分组通常称为协议数据单元(PDU)。因为通常在网络的各层使用更复杂的、大量的不同协议。虽然在指定使用特定封装协议的任何给定协议数据单元中加入的位模式具有从一组预先规定的长度中选择的一个长度,不同的协议可具有从不同的预先规定长度组中选择的长度。除此之外,使用未知协议的无关的计算机组也可连接到并且使用相同的网络。
网络环境复杂而且是动态的。因此,在管理网络中非常重要的活动是分析网络传送的业务量。因此使用协议分析器。协议分析器典型地试图识别用各种预先选择的协议封装的那些协议数据单元。前面用于这种识别的解决方案依赖于使用过滤器或模式比较器,其识别预先定义的关心的协议组合。任何给定的协议组合组成了一个包括用于封装分组的那些协议的子模式的位模式,这些子模式的每一个以协议数据单元内指定的固定偏移开始。只有与预先模式组合匹配的那些协议数据单元被识别为满足任何给定过滤器的匹配标准。这样的过滤器称为“扁平过滤器”。这一技术的显著特点是关心的每种协议组合需要一种过滤器。
因此,这个方法的缺点是需要采用大量的过滤器,实际上的位模式比较器。作为例子,如果用户寻找包含协议xGCP上的语音业务,当前需要13个扁平过滤器。除此之外,如果用户不知道使用三个不同的局域网(LAN)封装中的哪个,则使用三组13个过滤器或总共39个扁平过滤器。而且,如果用户不知道使用六个不同的广域网(WAN)封装的哪个来传送LAN业务,他需要建立六组39个一共234个过滤器。在这种情况下,硬件资源变得惊人的贵而且复杂。因此,提供这些是不切实际的。
同样在典型的网络环境中,差不多在成百个不同的节点之间有数据流,用户仅对捕获来自其中两个节点的数据感兴趣。因为现代网络的速度以及典型的现代网络分析器的有限的存储器空间,分配用于协议数据单元捕获的缓存空间会很快超限。捕获的协议数据单元的大多数来自用户不感兴趣的节点。作为例子,如果用户知道感兴趣的两个节点的互联网协议(IP)地址并且只想捕获这两个节点之间的数据,除非他有该网络的详细的知识,否则他不可能识别协议数据单元中的IP地址,除非他有受其支配的大量上述的扁平过滤器。
因此需要更好的技术用于识别用户封装协议数据单元的多个协议的组合。特别地,需要能够进行这种识别的系统,具有相关的分组过滤,并且不需要现有系统需要的大量过滤器。

发明内容
本发明文档涉及用于计算机网络系统中变长、多层封装的协议数据分组的识别和相关过滤的新颖方法。这种识别和相关过滤的以前的解决方案依赖于使用大量的扁平过滤器,每个识别一种预定的关心的协议组合。在许多情况下,因为需要大量的扁平过滤器,所以硬件资源惊人的贵并且因此使其不切实际。
在有代表性的实施方案中,本发明文档公开了利用协议识别设备来在各阶段识别和过滤计算机网络协议数据单元的技术。在第一阶段,该设备通过将一组可能的协议位模式与协议数据单元的比特相匹配,来识别用于第一层封装的协议。然后该设备试图通过与第二组协议比特组合模式的类似匹配,通过编码在以前封装协议中的信息,通过基于以前的匹配编码在设备中的最佳猜测,或编码在设备中的用户猜测来识别要选择的下一层封装。然后过程继续直到用户感兴趣的所有层的封装都已经识别。每个这样的模式可以有不同的长度。但是,一旦识别了对任何给定协议封装层的封装,该设备就知道到协议数据单元的索引做多深以便开始搜索下一个协议模式。这个过程在给定实现的限制内可以重复需要的次数。
使用表查找方法因此任何给定协议层的许多模式可以简单地并行查找和比较。因为该设备知道在协议数据单元中上一个匹配的协议模式的结尾出现在哪里,所以其知道在哪里开始下一个模式的匹配尝试。
公开的技术利用阶段的概念。在每个阶段,设备试图发现单一层协议封装的协议数据单元比特和预定模式的比特之间的模式匹配。一旦发现该设备就对自己重新复位并且开始重新下一层封装的搜索。
在有代表性的实施方案中,公开的技术可以认为是在各阶段中搜索协议数据单元。每个阶段典型地具有为其预分配的一个号。例如,协议数据单元的搜索在阶段号0开始,并且随着该阶段的搜索完成,基于当前阶段搜索的结果选择新的阶段。这个过程继续直到到达协议数据单元的末尾,或者不需要协议数据单元的进一步搜索而停止。
协议数据单元的字节,例如,从字节0开始搜索。该阶段可以被认为是消耗协议数据单元的字节直到发现导致该阶段结束的模式。然后下一个阶段开始消耗上一个阶段结束处的字节。通过跳过在该模式中不需要匹配的字节可以对这个过程进行可选的性能增强。跳过的字节预编程到表中,该表然后可由系统使用来跳过不需要的字节。
在有代表性的实施方案中,用于任何给定阶段的协议模式搜索的方法和设备被一再用来进行每个连续的阶段搜索。使用预编程的“模式查找表”来确定当前阶段的协议数据单元的特定部分中是否存在特定的封装。已经为当前阶段号和搜索的协议数据单元号预编程的模式查找表的一部分被编入索引中。在有代表性的例子中,模式查找表的这一部分有256个记录,每个对应协议数据单元的当前字节的每个可能的值。对应协议数据单元当前字节的实际值的记录从表中读取。然后从模式查找表中读取的值AND累积到阶段累加器中,其典型地在阶段开始时都初始化为全1。
这个阶段累加器值的每个比特都分配有一个模式号。如果模式的阶段累加器比特被置位并且如“记录列表”中预编程的值所确定的,该值导致“阶段模式发现比特”被置位,该阶段已经搜索到协议数据单元中足够深以便匹配整个模式,则认为模式找到了。在有代表性的例子中,记录列表每个模式比较有一个记录,提供例如下一个跳过值以及该阶段的上一个模式比较的信息。如果已经找到了指定导致转变到一个新阶段的模式,则当前阶段结束,如果没有则假设没有到达协议数据单元的末尾,读取下一个模式查找表记录。
基于关于当前阶段的模式的预编程信息,可以输出关于找到的哪个协议、下一步到哪个阶段号、找到哪个模式号(或哪些模式号)将用于组成“阶段组结果”,以及在某些情况下哪个封装跟在刚找到的封装之后的信息。阶段组结果是与完成的阶段匹配的模式的结果。典型地组结果是在比特位置上是0的位模式,代表每个阶段预先选择的搜索模式组,除非该预先选择的搜索模式组已经找到了一个匹配,在这种情况下在相应的比特位置上放1。组结果可用于确定协议数据单元是否与预先选择的协议组匹配。
当每个阶段搜索结束时,指示该阶段找到哪个模式的比特映射到“阶段组结果”。通过利用许多在这里称为集团映射的预编程的表实现这个映射。每个集团映射基于当前阶段号以及找到的阶段模式的比特被编入分配给该集团映射的比特的索引中。如果“阶段组结果比特”需要的号大于集团映射的宽度,则可选地到集团映射的索引可以额外地基于“时间片号”。
从每个集团映射获得的值OR(或)在一起以便组成“阶段组结果值”。这个阶段组结果中的某些比特可以任意地用于生成许多阶段输出结果,虽然也可以用其他方法生成阶段输出。而且,剩余的阶段组结果比特用于组成“阶段组过滤器结果”。阶段组过滤器结果AND(与)累加到组累加器中,该累加器在协议数据单元开始搜索时初始化为全1。这个组累加器值的每个比特具有分配给它的“组过滤器号”。
组过滤器被规定为是预先选择的满意的一组阶段并且在每个规定的阶段只找到一个满足该阶段的规定的模式。在协议数据单元的搜索完成时,如果其组累加器比特被设置并且合适的阶段已经搜索了协议数据单元,则认为找到了组过滤器。作为找到组过滤器的结果,可以采取一个或多个行动,与传统的过滤器设计的情况一样,如计数、保存协议数据单元,丢弃协议数据单元,开始或停止数据的捕获,以及其他行动。
这里公开的技术提供了使用户在更高层协议查找某事,而不需要知道使用的更低层协议的任何情况的能力。而且,通过通知设备关于想要的封装模式,其可以在运行时识别协议数据单元中的封装,使额外的软件例程免于在后来花费时间识别每个分组中的封装。这个设备的硬件和软件实现都提供协议数据单元的非常快速的识别。
在典型的网络环境中,差不多在成百个不同的节点之间有数据流,用户仅对捕获来自其中两个节点的数据感兴趣。因为现代网络的速度以及典型的现代网络分析器的有限的存储器空间,分配用于协议数据单元捕获的缓存空间会很快超出。在以前的系统中,捕获的协议数据单元的大多数来自用户不感兴趣的节点。作为例子,如果用户知道感兴趣的两个节点的互联网协议(IP)地址并且只想捕获这两个节点之间的数据,以前除非他有该网络的详细的知识,否则他不可能识别协议数据单元中的IP地址,因为他必须有受其支配的大量上述的扁平过滤器。但是,通过本设备的各阶段识别的能力,他只通过超过协议识别所需要的较少的额外的努力就能够过滤出感兴趣的那些协议数据单元。
本发明文档中描述的实施方案与现有技术相比的主要优点是显著地减少搜索与协议数据单元的分组协议模式匹配所需要的大量的模式比较器。通过使用阶段的概念提供了这种减少。另一个优点是在不知道使用的哪种较低层协议的情况下在较高层协议中寻找特定模式的能力。而且,这一设备的硬件和软件实现都提供了非常快地识别协议数据单元的优点。另一个优点是提供关于在特定PDU中出现哪些封装的信息,因此节省了软件例程后面处理每个分组的时间的能力。最后,通过通知设备关于想要的封装模式,协议识别设备可在运行时过滤协议数据单元,这提供了使额外的软件例程免于在后面花时间处理不需要的分组的优点以及通过丢弃不感兴趣的协议数据单元提供有价值的捕获缓存空间。
从下面与附图一起,利用例子的方式说明本发明的原理的详细描述中,本发明的其他方面和优点显而易见。


附图提供了可视的表示,可用于更完整地描述本发明并且可由本领域的技术人员用于更好地理解本发明及其固有的优点。在这些图中,相同的参考数字指相应的元件并且图1是在本发明文档的各种有代表性的实施方案中描述的协议数据单元的图。
图2是在本发明文档的各种有代表性的实施方案中描述的协议数据单元捕获的图。
图3A是在本发明文档的各种有代表性的实施方案中描述的第一个列表的图。
图3B是在本发明文档的各种有代表性的实施方案中描述的第一个列表的一个记录的图。
图3C是在本发明文档的各种有代表性的实施方案中描述的第一个列表的一个记录的另一个图。
图4是用于识别在本发明文档的各种有代表性的实施方案中描述的协议数据单元的方法的流程图。
图5是用于识别在本发明文档的各种有代表性的实施方案中描述的协议数据单元的协议识别设备的图。
具体实施例方式
如在用于说明的附图中所示,本发明文档涉及用于计算机网络系统中变长、多层封装的协议数据分组的识别和相关过滤的新颖方法。这种识别和相关过滤的以前的解决方案依赖于使用大量的扁平过滤器,每个识别一种预定的关心的协议组合。在许多情况下,因为需要大量的扁平过滤器,所以硬件资源惊人的贵并且因此使其不切实际。
在下面的详细描述和几个附图中,相同的元件由相同的参考数字标识。
1、介绍性说明在有代表性的实施方案中,本发明文档公开了利用协议识别设备来在各阶段识别和过滤计算机网络协议数据单元的技术。在第一阶段,该设备通过将一组可能的协议位模式与协议数据单元的比特相匹配,来识别用于选定层封装的协议。然后该设备试图通过与第二组协议比特组合模式的类似匹配,通过编码在以前封装协议中的信息,通过基于以前的匹配编码在设备中的最佳猜测,或编码在设备中的用户猜测来识别要选择的下一层封装。然后过程继续直到用户感兴趣的所有层的封装都已经识别。每个这样的模式可以有不同的长度。但是,一旦识别了对任何给定协议封装层的封装,该设备就知道到协议数据单元的索引做多深以便开始搜索下一个协议模式。这个过程在给定实现的限制内可以重复需要的次数。
使用表查找方法因此任何给定协议层的许多模式可以简单地并行查找和比较。因为该设备知道在协议数据单元中上一个匹配的协议模式的结尾出现在哪里,所以其知道在哪里开始下一个模式的匹配尝试。
公开的技术利用阶段的概念。在每个阶段,设备试图发现单一层协议封装的协议数据单元比特和预定模式的比特之间模式匹配。一旦发现该设备就对自己重新复位并且开始重新下一层封装的搜索。
在有代表性的实施方案中,公开的技术可以认为是在各阶段中搜索协议数据单元。每个阶段典型地具有为其预分配的一个号。例如,协议数据单元的搜索在阶段号0开始,并且随着该阶段的搜索完成,基于当前阶段搜索的结果选择新的阶段。这个过程继续直到到达协议数据单元的末尾,或者不需要协议数据单元的进一步搜索而停止。
协议数据单元的字节,例如,从字节0开始搜索。该阶段可以被认为是消耗协议数据单元的字节直到发现导致该阶段结束的模式。然后下一个阶段开始消耗上一个阶段结束处的字节。通过跳过在该模式中不需要匹配的字节可以对这个过程进行可选的性能增强。跳过的字节预编程到表中,该表然后可由系统使用来跳过不需要的字节。
在有代表性的实施方案中,用于任何给定阶段的协议模式搜索的方法和设备被一再用来进行每个连续的阶段搜索。使用预编程的“模式查找表”来确定当前阶段的协议数据单元的特定部分中是否存在特定的封装。已经为当前阶段号和搜索的协议数据单元号预编程的模式查找表的一部分被编入索引中。在有代表性的例子中,“模式查找表”的这一部分有256个记录,每个对应协议数据单元的当前字节的每个可能的值。对应协议数据单元当前字节的实际值的记录从表中读取。然后从模式查找表中读取的值AND累积到阶段累加器中,其典型地在阶段开始时都初始化为全1。
这个阶段累加器值的每个比特都分配有一个模式号。如果模式的阶段累加器比特被置位并且如“记录列表”中预编程的值所确定的,该值导致“阶段模式发现比特”被置位,该阶段已经搜索到协议数据单元中足够深以便匹配整个模式,则认为模式找到了。在有代表性的例子中,记录列表每个模式比较有一个记录,提供例如下一个跳过值以及该阶段的上一个模式比较的信息。如果已经找到了指定导致转变到一个新阶段的模式,则当前阶段结束,如果没有则假设没有到达协议数据单元的末尾,读取下一个模式查找表记录。
基于关于当前阶段的模式的预编程信息,可以输出关于找到的哪个协议、下一步到哪个阶段号、找到哪个模式号(或哪些模式号)将用于组成“阶段组结果”,以及在某些情况下哪个封装跟在刚找到的封装之后的信息。阶段组结果是与完成的阶段匹配的模式的结果。典型地组结果是在比特位置上是0的位模式,代表每个阶段预先选择的搜索模式组,除非该预先选择的搜索模式组已经找到了一个匹配,在这种情况下在相应的比特位置上放1。组结果可用于确定协议数据单元是否与预先选择的协议组匹配。
当每个阶段搜索结束时,指示该阶段找到哪个模式的比特映射到“阶段组结果”。通过利用许多在这里称为集团映射的预编程的表实现这个映射。每个集团映射基于当前阶段号以及找到的阶段模式的比特被编入分配给该集团映射的比特的索引中。如果“阶段组结果比特”需要的号大于集团映射的宽度,则可选地到集团映射的索引可以额外地基于“时间片号”。当需要比一个映射所能提供的更多的比特时,时间片号用于访问不只一个映射。在有代表性的例子中,访问3个16比特的映射的每一个以便获得一个48比特的输出。
为每个集团映射分配的阶段累加器结果比特的数量是速度和存储使用量的折衷。对于32个模式匹配器的硬件实现,典型地使用2或3个比特,对于64个模式匹配器软件实现,典型地使用8比特是一个好的选择。同样集团映射的宽度典型地是速度和存储使用量的折衷。
从每个集团映射获得的值OR(或)在一起以便组成“阶段组结果值”。这个阶段组结果中的某些比特可以任意地用于生成许多阶段输出结果,虽然也可以用其他方法生成阶段输出。而且,剩余的阶段组结果比特用于组成“阶段组过滤器结果”。阶段组过滤器结果AND(与)累加到组累加器中,该累加器在协议数据单元开始搜索时初始化为全1。这个组累加器值的每个比特具有分配给它的“组过滤器号”。
组过滤器被规定为是预先选择的满意的一组阶段并且在每个规定的阶段只找到一个满足该阶段的规定的模式。在协议数据单元的搜索完成时,如果其组累加器比特被设置并且合适的阶段已经搜索了协议数据单元,则认为找到了组过滤器。作为找到组过滤器的结果,可以采取一个或多个行动,与传统的过滤器设计的情况一样,如计数、保存协议数据单元,丢弃协议数据单元,开始或停止数据的捕获,以及其他行动。
在有代表性的例子中,该设备能够在一个协议层支持多达64个不同的封装,并且能够支持多达14个协议层。这等价于64^14个扁平过滤器。该设备同等数量的扁平过滤器是实现所加的限制。它不是本发明的限制。设备可以用硬件或软件功能实现。
这里公开的技术提供了使用户在更高层协议查找某事,而不需要知道使用的更低层协议的任何情况的能力。而且,通过通知设备关于想要的封装模式,其可以在运行时识别协议数据单元中的封装,使额外的软件例程免于在后来花费时间识别每个分组中的封装。这个设备的硬件和软件实现都提供协议数据单元的非常快速的识别。
在典型的网络环境中,差不多在成百个不同的节点之间有数据流,用户仅对捕获来自其中两个节点的数据感兴趣。因为现代网络的速度以及典型的现代网络分析器的有限的存储器空间,分配用于协议数据单元捕获的缓存空间会很快超出。在以前的系统中,捕获的协议数据单元的大多数来自用户不感兴趣的节点。作为例子,如果用户知道感兴趣的两个节点的互联网协议(IP)地址并且只想捕获这两个节点之间的数据,以前除非他有该网络的详细的知识,否则他不可能识别协议数据单元中的IP地址,因为他必须有受其支配的大量上述的扁平过滤器。但是,通过本设备的各阶段识别的能力,他只通过超过协议识别所需要的较少的额外的努力就能够过滤出感兴趣的那些协议数据单元。
2、用于PDU识别的方法图1是本发明文档的各种有代表性的实施方案中描述的协议数据单元100的图。协议数据单元100包括数据120的比特以及一个或多个分组协议模式105,在这里也称为封装协议模式105和计算机网络协议105,其识别在计算机网络中用于封装数据的协议。分组协议模式105由封装层以及用于组成协议数据单元100的特定协议定义。图1仅用于说明性目的。协议可以是变长并且不必在如图1所示的协议数据单元内的位置。
图2是本发明文档的各种有代表性的实施方案中描述的协议数据单元100捕获的图。在图2中,在接收总线205上接收协议数据单元100,写入捕获缓存210,这里也称为缓存210,并且由协议识别设备215接收。在替代的有代表性的实施方案中,由协议识别设备215在接收总线205上接收协议数据单元100,协议识别设备215进而又将协议数据单元100传送到捕获缓存210。
图3A是本发明文档的各种有代表性的实施方案中描述的第一列表300的图。图3B是本发明文档的各种有代表性的实施方案中描述的第一列表300的一个记录320的图。第一列表300是搜索模式305的列表并且这里还称为搜索模式列表300。如图3B所示,搜索模式列表300的任何给定的记录320包括搜索模式索引310、阶段号315以及搜索模式305。搜索模式索引310是识别记录320的索引。其典型地是一个整数。在这个例子中,搜索模式索引310识别第一个记录以0开始,第二个记录以1开始,第三个记录以2开始,等的搜索模式305记录。阶段号315标识将用于搜索搜索模式305的阶段315。虽然认识到没有在任何图中明确显示的阶段号315和阶段315自己,不是相同的实体,但是这里与阶段号315用于识别所指的阶段315一样,它们都被使用相同的标识数字(315)所指。
作为图3A的例子,搜索模式列表300的第七个记录320的搜索模式索引310等于6,指示其是列表中第七个记录。这个记录320还包括第二阶段第三个搜索模式305。第二阶段第三个搜索模式305的阶段号315等于2,指示其是与第二阶段相关的搜索模式305。在这个有代表性的例子中,协议识别设备215试图将搜索模式305与在任何给定的协议数据单元100中找到的分组协议模式105相匹配。特别是在由图3A表示的例子中,假设设备215试图找到一个所有阶段的匹配,则协议识别设备215将试图将第一阶段第一个搜索模式305、第一阶段第二个搜索模式305、第一阶段第三个搜索模式305、以及第一阶段第四个搜索模式305与分析的协议数据单元100的第一个协议模式105相匹配。类似地,协议识别设备215将试图将第二阶段第一个搜索模式305、第二阶段第二个搜索模式305、第二阶段第三个搜索模式305与分析的协议数据单元100的第二个协议模式105相匹配。同样的方式,协议识别设备215将试图将其他阶段的第三个以及任何其他搜索模式305与分析的协议数据单元100的相应协议模式105相匹配。在图3A中显示的三个椭圆表示编码到搜索模式列表300中的任何额外的搜索模式305。在设备的限制之内,每层的模式数,以及搜索的阶段数典型地由实现者指定并且基于用户的需要可以变化。每层最大允许的模式数,以及搜索的阶段数,如前面说明的是由实现决定的。
图3C是本发明文档的各种有代表性的实施方案中描述的第一列表300的记录320的另一张图。在替代实施方案中,从搜索模式305中选择出搜索模式305的连续部分325并且连续地执行协议数据单元100的搜索以便找到它们。作为例子,首先选择搜索模式305的第一部分325并且为其搜索协议数据单元。然后首先选择搜索模式305的第二部分325并且为其搜索协议数据单元。这个过程继续直到选择搜索模式305的所有部分325并且进行搜索为止。替代地,如果特定部分325未能与协议数据单元100匹配,则该搜索模式305的搜索终止。
图4是用于本发明文档的各种有代表性的实施方案中描述的协议数据单元100的识别的方法的流程图。在框405中,接收到协议数据单元100。典型地协议数据单元100写入捕获缓存210并且如图2所示由协议识别设备215并行捕获。协议识别设备215接收到协议数据单元100后,框405将选择开始阶段,其典型地从阶段号0开始并且初始化一个到协议数据单元100的指针,其典型地是协议数据单元100的第一个字节。然后框405将控制转交给框407。
在框407,初始化组结果。组结果是为完成的所有阶段匹配的模式的结果。典型地组结果是位模式,在位位置上0表示每个阶段的每个预先选定的搜索模式305的组,除非该预选选定的搜索模式305的组找到了一个匹配,在这种情况下在相应的位位置放1。组结果可用于确定协议数据单元100是否与预先选定的协议组匹配。如果在有代表性的实施方案中找到匹配,则移动捕获缓存210中的指针以便当前协议数据单元100保留在捕获缓存210中。但是,如果没有找到匹配,则接收的下一个协议数据单元100重写当前的协议数据单元100。然后框407将控制转交框408。
在框408,初始化该阶段结果。阶段结果是该阶段模式匹配的结果。典型地,这个结果是一个位模式,在位位置上的0表示与有效的阶段相关的每个搜索模式305,其中没有匹配,并且1表示其中有匹配。然后框408将控制转交框410。
在框410,协议识别设备215通过当前阶段的搜索模式列表300中的记录获得一个或多个搜索模式305的下一个部分。通过试图同时匹配多个搜索模式305的部分,匹配过程更有效。然后框410将控制转交框415。
在框415,如果分配给搜索模式305的这个部分325一个非零的跳过值,典型地第一阶段的第一个比较是零,则到协议数据单元100的指针可向前移动多个字节。典型地对于后续的比较,从基于对搜索模式305识别当前阶段315的封装所需的所有字节的认识的预编程的一个表获得跳过值。可选地如果时间允许,则可以比较协议数据单元100的所有字节。然后框415将控制转交框420。
在框420,搜索模式305的部分325与协议数据单元100相比较以便确定协议数据单元100中的模式是否与到协议数据单元100的指针按需要向前移动的搜索模式305相匹配。然后框420将控制转交框425。
在框425,形成该阶段到那一点的阶段结果。然后框425将控制转交框430。
当找到指定用于结束该阶段的一个搜索模式305与协议数据单元100中的模式相匹配时,框430将控制转交框435。指定用于结束特定阶段的那些搜索模式,当找到时称为“阶段转换搜索模式”。否则,框430将控制转交框432。
当遇到协议数据单元100的末尾时,框432将控制转交框435。否则,框432将控制转交框433。
当当前阶段中有一个或多个搜索模式305的剩余部分325需要在协议数据单元100中为其执行搜索时,框433将控制转交框410。否则,框433将控制转交框435。
在框435,报告阶段结果。然后框435将控制转交框445。
在框445,形成完成的所有阶段的组结果。然后框445将控制转交框450。
当遇到协议数据单元100的末尾时,框450将控制转交框460。否则,框450将控制转交框453。
当有包含搜索模式305的剩余阶段,还需要在协议数据单元100中为其进行搜索时,框453将控制转交给框455。否则,框453将控制转交给框460。
在框455,选择一个新的阶段,试图为其将搜索模式305与协议数据单元100中的分组协议模式105相匹配。然后框455将控制转交框457。
在框457,过程转换到选定的阶段。然后框457将控制转交框408。
在框460,报告组结果。然后框460退出过程。
3、用于PDU识别的设备图5是本发明文档的各种有代表性的实施方案中描述的用于协议数据单元100识别的协议识别设备215的图。在图5中,由控制电路500在接收总线205上接收数据。如前面所述和图2所示,在有代表性的实施方案的并行过程中协议数据单元100还写入捕获缓存210。协议识别设备215识别协议数据单元100中的分组协议模式105,并且基于识别过程的结果,过滤出将不保留在捕获缓存210中的那些协议数据单元100。捕获缓存210可以是例如先进先出(FIFO)缓存。基于搜索模式列表300的内容,控制电路500确定在协议数据单元100的哪些字节上尝试匹配搜索模式305。如前所述,搜索模式列表300包括用户想要为其获得匹配的搜索模式305。控制电路500从列表、表、和/或数据库等中获得这一信息,其在图5中显示为搜索模式与组匹配列表510。
在模式匹配的第一阶段期间,协议数据单元100以及在其上计划进行搜索的搜索模式305被传递到搜索模式比较器530,这里也称为第一比较器530以及模式比较器530。控制电路500如前所述将协议数据单元100编入索引。
任何给定的阶段可以有具有不同位模式长度的各种搜索模式305。但是因为协议是变长的,所以用户不知道下一个协议或下一个分组协议模式从何处开始。一旦为一个给定的封装层识别了指定作为阶段转换模式的分组协议模式105,设备的阶段部分就为找到的阶段转换模式指定的阶段号重新设置并且该过程重新开始为下一个封装层寻找分组协议模式105。
在有代表性的实施方案中,搜索模式比较器530是32比特宽RAM530,它能够同时将32个不同的搜索模式305与协议数据单元100相匹配。指示如果有的话,与用来封装协议数据单元100的相应分组协议模式105匹配的搜索模式305的位模式从32比特宽RAM 530传送到阶段结果累加器550,这里也称为第一累加器550,其生成一个指示符,在图中没有明确示出,所述指示符关于在协议数据单元100中是否找到搜索模式305。如果,例如,匹配位31设置为“1”,则寻找的模式号31匹配。“0”指示不匹配。如果每个阶段比较应该执行不止一次,则阶段结果累加器550在单个或同时比较完成之后更新。阶段结果累加器550中包含的结果被传送到控制电路500以及阶段到组映射电路560,这里也称为映射电路560,其中阶段结果被映射并且传送到组结果累加器570,这里也称为第二累加器570,其生成一个指示符,在图中没有明确示出但是称做组指示符570,其关于在协议数据单元100中是否找到预先选定的搜索模式305组。从阶段到组映射电路560的输出也传送到控制电路500,其中用于提供阶段结果,如下一阶段号、下一个协议ID、写下一个协议ID的位置以及其他项。组结果累加器570将组结果传递给控制电路500。给定的阶段完成之后,控制电路500将阶段结果累加器重新设置为其初始设置。
在任何给定的阶段有32个模式可以匹配。对于协议数据单元100的给定字节,可以有多个值满足寻找的一个或多个模式。该字节可以在RAM中索引256个字的任何一个。因此RAM为由数据的给定字节索引的所有256个位置编程。如果字节值是“0”,则RAM在记录0编程为查找的任何模式的匹配比特。如果字节值是“1”,RAM中是不同的字,因此字按想要匹配比特出现的方式与匹配比特编程。因此,在单一字节上进行查找是查找可能是256个值的任何一组的模式。由实施者负责确保已对RAM编程以便选择256个值中的任何一个与感兴趣的模式匹配。
用户可能对找到几个不同类型的协议封装感兴趣并且将其认做一个单一的协议组,例如可以是帧中继接着是RFC1490接着是IP。用户想要计数不同模式组出现的次数。阶段到组映射电路560的另一个目的在于识别下一个将研究的阶段。作为例子,协议数据单元100在第一阶段被识别为帧中继封装,并且然后系统被编程使用第四阶段来确定下一个封装是否是RFC 1490或用于例如可能是LMI的其他协议的封装。
协议识别设备215可保留为每个封装层匹配每个搜索模式305的所有分组数的合计。除此之外,协议识别设备215用于创建控制数据捕获(开始、集中、暂停、存储、抑制),以及计数的传统的过滤器功能。协议数据单元100满足的任何模式的协议,无论是单一的还是组合的,在用户的选择下,可导致标志被置位和/或为该模式定义的参数增加或者否则形成找到匹配的事实的记录。这些信息,例如,可记录在与协议数据单元100相关的缓存的系统开销区域。而且,任何阶段可选地导致值写入与协议数据单元100相关的缓存的系统开销区域中许多位置的一个,以便指示该阶段的封装在协议数据单元100的什么位置开始并且为该阶段找到哪个协议。除此之外,协议识别设备215可用于自动检测在网络中使用哪些协议,提供可用于对协议数据单元100解码的封装信息,以及为运行时间处理将分组排出优先级。
控制电路500将各种感兴趣的结果,例如上述的结果传送给结果报告电路580以便用于将结果传递给其他电路和函数。
通常就是这样,在许多数据处理产品中,这里公开的技术可以实现为硬件和软件组件的组合。而且,使用本发明所需要的功能可以在计算机可读的介质中包含,如在网络分析器、服务器或个人计算机的信息处理设备的编程中使用以便根据这里公开的技术执行的硬盘、软盘、CD ROM、DVD ROM等。
虽然这里描述的技术可以有利地用于协议分析器,但是其也可用于能够接收协议数据单元100的其他设备,如计算机中。
4、结论本发明文档中描述的实施方案比现有技术的主要优点是显著地减少了搜索与协议数据单元100的分组协议模式105的匹配所需的大量的模式比较器。通过利用阶段的概念提供了这一减少。另一个优点是能够在更高层协议中寻找特定模式而不需要知道使用的是哪个更低层协议。而且,该设备的硬件和软件实现提供了非常快速识别协议数据单元的优点。另一个优点是提供关于在特定协议数据单元100中存在哪些封装的信息的能力,因此当在后面处理每个分组时节省了软件例程时间。最后,通过通知设备215关于想要的封装模式,协议识别设备215可在运行时过滤协议数据单元100,这提供了使额外的软件例程免于在后面花时间处理不需要的分组的优点以及通过丢弃不感兴趣的协议数据单元提供有价值的捕获缓存空间的优点。
虽然关于优选实施方案已经详细地描述了本发明,但是描述的实施方案是作为例子而不是作为限制介绍的。本领域的技术人员应该理解可以对所描述的实施方案的形式和细节进行各种改变,导致保留在所附权利要求范围内的等价实施方案。
权利要求
1.一种由协议识别设备[215]可读的存储介质,明确地包含协议识别设备[215]可执行的指令的计算机程序,以便执行用于识别用于在协议数据单元[100]中封装数据[120]的计算机网络协议[105]的方法步骤,步骤包括接收协议数据单元[100],其中协议数据单元[100]包括数据[120]以及多种封装协议模式[105];并且当剩余为其搜索协议数据单元[100]的至少一个阶段[315]时,迭代地执行选择剩余阶段[315]中的一个,并且当剩余为其搜索协议数据单元[100]的选定阶段[315]的至少一个搜索模式[305]时,迭代地执行选择剩余搜索模式[305]中的一个,并且为选定的搜索模式[305]搜索协议数据单元[100]。
2.如权利要求1中所述的存储介质,步骤还包括当剩余至少一个阶段[315]之前迭代地循环为至少一个预定义的搜索模式组[305]分配一个组指示符[570],其中所述组包括至少一个包含至少一个预先选定的搜索模式[305]的子组,其中预先选定的搜索模式[305]识别至少一个用于封装数据[120]的预先选定的网络协议[105];以及初始化组指示符[570]以便指定在协议数据单元[100]中希望的位置存在至少一个子组;以及当剩余为其搜索协议数据单元[100]的选定阶段[315]的至少一个搜索模式[305]之后迭代地循环当在协议数据单元[100]的希望位置上缺少与选定阶段的组的每个子组相关的所有搜索模式[305]时,设置组指示符[570]以便指定协议数据单元[100]中缺少所述组的所有子组。
3.如权利要求2中所述的存储介质,其中跟随为选择的搜索模式[305]搜索协议数据单元[100]的步骤,所述步骤还包括当剩余至少一个阶段[315]之后,迭代地循环当在协议数据单元[100]希望的位置上存在至少一个子组时,将协议数据单元[100]放在缓存[210]中。
4.如权利要求1中所述的存储介质,其中为选定的搜索模式[305]搜索协议数据单元[100]的步骤包括步骤当剩余为其搜索协议数据单元[100]的选定阶段[315]的搜索模式[305]的至少一部分[325]时,迭代地执行选择选定的搜索模式[305]的剩余的未搜索部分[325]中的一个,并且为选定的搜索模式[305]的选定部分[325]而搜索协议数据单元[100]。
5.如权利要求4中所述的存储介质,所述步骤还包括当为选定的搜索模式[305]的选定部分[325]而搜索协议数据单元[100]的方法步骤未能在协议数据单元[100]中找到选定的部分[325]时,退出当剩余为其搜索协议数据单元[100]的选定阶段[315]的搜索模式[305]的至少一部分[325]的迭代循环并且退出当剩余为其搜索协议数据单元[100]的选定阶段[315]的至少一个搜索模式[305]的迭代循环。
6.如权利要求1中所述的存储介质,其中跟随选择剩余搜索模式[305]中的一个的方法步骤,所述步骤还包括当剩余为其搜索协议数据单元[100]的选定阶段[315]的至少一个额外搜索模式[305]时,选择至少一个额外的剩余搜索模式[305],并且与为选定搜索模式[305]搜索协议数据单元[100]的方法步骤并行,为额外选定的搜索模式[305]搜索协议数据单元[100]。
7.如权利要求6中所述的存储介质,其中为选定的搜索模式[305]搜索协议数据单元[100]以及为额外选定的搜索模式[305]搜索协议数据单元[100]的并行方法步骤包括步骤当剩余为其搜索协议数据单元[100]的选定阶段[315]的选定搜索模式[305]的至少一部分[325]以及为其搜索协议数据单元[100]的选定阶段[315]的额外选定搜索模式[305]的至少一部分[325]时,迭代地执行选择选定搜索模式[305]的剩余未搜索部分[325]的一个,选择额外选定搜索模式[305]的剩余未搜索部分[325]的一个,为选定搜索模式[305]的选定部分[325]搜索协议数据单元[100],以及与为选定搜索模式[305]的选定部分[325]搜索协议数据单元[100]的方法步骤并行,为额外选定的搜索模式[305]的选定部分[325]搜索协议数据单元[100];否则,当剩余为其搜索协议数据单元[100]的选定阶段[315]的选定搜索模式[305]的至少一部分[325]时,迭代地执行选择选定搜索模式[305]的剩余未搜索部分[325]的一个,并且为选定搜索模式[305]的选定部分[325]搜索协议数据单元[100];以及否则,当剩余为其搜索协议数据单元[100]的选定阶段[315]的额外选定搜索模式[305]的至少一部分[325]时,迭代地执行选择额外选定搜索模式[305]的剩余未搜索部分[325]的一个,并且为额外选定搜索模式[305]的选定部分[325]搜索协议数据单元[100]。
8.如权利要求7中所述的存储介质,所述步骤还包括当为选定搜索模式[305]的选定部分[325]搜索协议数据单元[100]的所述方法步骤未能在协议数据单元[100]中找到选定搜索模式[305]的选定部分[325]时,并且当为额外选定搜索模式[305]的选定部分[325]搜索协议数据单元[100]的并行方法步骤未能在协议数据单元[100]中找到额外选定的搜索模式[305]的选定部分[325]时,退出当剩余为其搜索协议数据单元[100]的选定阶段[315]的选定搜索模式[305]的至少一个部分[325]以及为其搜索协议数据单元[100]的选定阶段[315]的额外选定搜索模式[305]的至少一个部分[325]的迭代循环;否则当为选定搜索模式[305]的选定部分[325]搜索协议数据单元[100]的方法步骤未能在协议数据单元[100]中找到选定搜索模式[305]的选定部分[325]时,退出当剩余为其搜索协议数据单元[100]的选定阶段[315]的选定搜索模式[305]的至少一个部分[325]的迭代循环;并且否则当为额外选定搜索模式[305]的选定部分[325]搜索协议数据单元[100]的方法步骤未能在协议数据单元[100]中找到额外选定搜索模式[305]的选定部分[325]时,退出当剩余为其搜索协议数据单元[100]的选定阶段[315]的额外选定搜索模式[305]的至少一个部分[325]的迭代循环。
9.一种用于识别用于在协议数据单元[100]中封装数据[120]的那些计算机网络协议[105]的设备,包括控制电路[500],其中控制电路[500]能够接收协议数据单元[100]并且能够为多个阶段[315]的每个获得至少一个搜索模式[305],其中每个搜索模式[305]识别用于封装数据[120]的网络协议[105]中的一个;以及模式比较器[530],其中模式比较器[530]连接到控制电路[500],其中模式比较器[530]能够接收来自控制电路[500]的协议数据单元[100],其中控制电路[500]能够连续地选择各个阶段[315],并且其中对于选定的阶段[315],模式比较器[530]能够为选定阶段[315]接收来自控制电路[500]的至少一个搜索模式[305]并且能够为接收的搜索模式[315]单独搜索协议数据单元[100]。
10.如权利要求9中所述的设备,还包括第一累加器[550],其中第一累加器[550]连接到模式比较器[530]并且能够累加来自选定阶段[315]搜索的结果。
全文摘要
协议数据单元中协议模式识别的方法和设备。公开的技术利用阶段的概念。在每个阶段,协议识别设备为特定协议封装层寻找在协议数据单元的比特和搜索模式的预定比特间的模式匹配。一找到,该设备就复位自身并为下一层封装重新搜索。为用户提供在不知道使用哪个较低层协议的情况下,在较高层协议中寻找特定模式的能力。此设备的硬件和软件实现都提供了协议数据单元非常快速的识别。提供关于特定协议数据单元中存在哪些封装的信息,处理每个分组时节省了软件例程时间。通过通知设备想要的封装模式,协议识别设备能在运行时过滤协议数据单元,省去额外软件例程后来处理不需要分组的时间,可丢弃不感兴趣的协议数据单元来节省有价值的捕获缓存空间。
文档编号H04L12/26GK1400546SQ0212728
公开日2003年3月5日 申请日期2002年7月31日 优先权日2001年7月31日
发明者J·D·莫里斯, V·布拉克 申请人:安捷伦科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1