使用PCAP型过滤器和硬件辅助的PATRICIA树的无损实时线速率过滤制造技术

技术编号:7850294 阅读:151 留言:0更新日期:2012-10-13 07:23
本发明专利技术涉及使用PCAP型过滤器和硬件辅助的PATRICIA树的无损实时线速率过滤。一种使用硬件辅助的Patricia树来执行线速率过滤的处理器。将PCAP型过滤器变换成能被插入到Patricia树中的形式。对PCAP型过滤器表达式进行解析并变换成析取范式(DNF)。将过滤器的每个DNF子句插入到Patricia树中。对于重叠,检查DNF子句并在可能时合并重叠的子句。

【技术实现步骤摘要】
使用PCAP型过滤器和硬件辅助的PATRICIA树的无损实时线速率过滤的方法和设备
本专利技术涉及使用PCAP型过滤器和硬件辅助的PATRICIA树的无损实时线速率过滤(line-ratefiltering)。
技术介绍
封包捕获(PCAP)过滤器一般在封包数据网络中使用以提取用户感兴趣的实时数据业务的部分来用于进一步检查。该过滤器类型由于其在过滤器规格方面的灵活性而在许多情况下是优选的。PCAP过滤器的典型的实现是将表达式变换成某种形式的伯克莱封包过滤器(BPF)。但是,当监控约10Gbps或更大的高带宽网络时,几乎不可能在不随机丢弃匹配过滤器的封包的情况下应用BPF。
技术实现思路
现今存在专门的处理器,其允许应用程序使用硬件辅助的Patricia树来执行线速率过滤。该处理器自身的结构保证能以线速率搜索Patricia树。但是,PCAP型过滤器不能没有修改地插入到Patricia中。在此公开的方法和系统解释了如何将PCAP型过滤器变换成能被插入到Patricia树中的形式。这允许专门的硬件,例如来自EZchipTechnologies的处理器的NP-X线,以高达40Gbps的速率来执行无损过滤。在一个实施例中,对用于类似PCAP过滤器的过滤器表达式进行解析并变换成析取范式(DNF)。在DNF中过滤器的每一个合取子句能被插入到Patricia树中。但是,硬件辅助的Patricia树具有某些必须考虑的限制。第一,能以线速率搜索这些树的处理器通常不进行任意类型的重新装配。因此用于过滤的字段通常位于OSI模型的层2至层4。当能根据在下层中的信息获得来自上层的信息时,则存在例外,例如一些L7协议使用已知的传输地址。在该情况下,上述L7协议可用于过滤,因为其能从层3和4中的传输信息导出。第二,树的条目(entry)必须预先定义,因此该过滤器不能应用于封包中的任意随机的字节。第三,树的关键码(key)具有有限的大小(在处理器的NPX线的情况下为38字节)。第四,当匹配多个条目的搜索被执行时,这些树返回第一匹配,换句话说,它们不支持重叠的过滤器,克服第三和第四限制要求过滤器表达式的特殊的操纵并限制能被插入到树中的过滤器的数量。附图说明已由此概括地描述了本专利技术,现在将参考附图,其中:图1是说明在通信网络中用于捕获和过滤封包的系统的高层(high-level)框图。图2是过滤器的以二叉树形式的示范性表示。图3说明了用于使用解析器判定表来生成过滤器树的过程。具体实施方式现在将在下文中参考附图更加充分地描述本专利技术。但是,本专利技术可通过许多不同的形式实施并且不应当解释为限于在此阐明的实施例。恰恰相反,提供这些实施例以使该公开深入和完整,并且将向本领域技术人员充分地传达本专利技术的范围。本领域技术人员能使用本专利技术的各种实施例。图1是说明在通信网络中用于捕获和过滤封包的系统的高层框图。网络节点101和102经由接口103耦合。网络业务,例如数据封包,通过接口103在节点101和102之间传送。过滤器104被动地从接口103捕获数据封包并且将封包传送到监控设备105。监控设备105例如可与协议分析器、网络监控器、封包嗅探器、或网络测试器相联系。该捕获到的数据封包可以向用户显示和/或用于网络故障检修、协议分析、或软件开发。过滤器104可以是处理器,例如是来自EZchipTechnologies的处理器的NP-X线。用户可以定义用于识别承载在接口103上的数据封包的过滤器表达式,其中该数据封包应当向监控设备105提供。该过滤器表达式可以包含若干数据封包参数,例如源/目的地地址和/或端口、虚拟局域网(VLAN)标识符、和/或IP协议、版本或服务类型(TOS)。使用关系操作符和/或逻辑操作符可将这些参数与变量相比较。但是,过滤器104的实际的能力可能不匹配在该过滤器表达式中所要求的元素。例如,过滤器104可能被设计来使用特定的关系或逻辑操作符组。该过滤器表达式必须修改以移除任意的不能由过滤器104处理的关系或逻辑操作符。过滤器104从接口103实时捕获IP数据封包。为了实时处理上述数据封包,过滤器104必须以40Gbps或更高的线速度进行操作。Patricia树能被用于以如此高的速度处理该捕获到的数据。但是,该过滤器硬件可能要求在该过滤器表达式的格式上的某些限制。该用户提供的过滤器表达式必须适应于匹配该过滤器硬件和该Patricia格式。例如,在一些实施例中,过滤器硬件可能仅支持过滤项(terms)之间的AND(与)关系。必须变换该用户提供的过滤器表达式以满足此限制。在此描述的实施例指向一个应用,该应用对该过滤器表达式进行分解并将该过滤器表达式应用于Patricia树以使该过滤器能不丢弃封包地以线速度进行操作。在一个实施例中,该过滤器表达式被变换成包括表示关系操作的叶子节点的二叉树数据结构,其中该叶子节点将输入提供给表示逻辑操作的其它节点。然后将该二叉树变换成析取范式,在该析取范式中仅关系表达式为AND操作。在向析取范式的变换中,从原始的过滤器表达式中创建多个过滤器条目。该多个过滤器创建重叠,在该重叠中某些数据封包将匹配两个或多个过滤器。不同的过滤器中的合取子句的交集必须被识别,然后加入到该二叉树中作为单独的合取子句。样品过滤器规格在一个实施例中,过滤器支持在表1中列出的字段。该过滤器支持关系操作符:>(大于)、<(小于)、>=(大于或等于)、<=(小于或等于)、==(等于)和!=(不等于);以及逻辑操作符:AND(与)、OR(或)和NOT(非)。每个接口卡支持的过滤器实例的最大数量是四,并且每个过滤器实例的项的最小数量是32。表1。硬件辅助的Patricia树规格表2说明了用于硬件辅助的Patricia树的嗅探器的复合树条目。表2。解析过滤器字符串以生成过滤器的二叉树表示在一个示例实施例中,过滤器表达式支持十个过滤字段。该过滤器表达式被提供作为字符串并具有在表3中示出的特征。该过滤字段参考R0至R9。表3。该过滤器表达式支持关系操作符(>、<、>=、<=、==、以及!=)、二进制逻辑操作符(AND和OR)和一元逻辑操作符NOT。此外,该过滤器表达式支持括号操作符:“(”、“)”。在该过滤器表达式中,优先级为从左至右,或为由括号指示。关系操作符比逻辑操作符具有更高的优先级,并且所有的逻辑操作符具有相同的优先级。在该示例中,每个接口板的过滤器实例的最大数量是16,并且每个过滤器实例的操作符的最小数量是16。使用以上定义的参数,一个示例过滤字符串可以被定义为:F[P]=R0==0ANDR1==0ANDR4==17AND(R6==3232240995ORR7==3232240995)ANDR8==9201。应当理解在此说明的过滤器表达式仅仅作为示范性的实现被提供。本领域普通技术人员将进一步理解可以使用相同的概念的不同的实现。例如,表1和2的过滤器的表示并不是被要求向用户应用程序提供的形式,而是作为示例被提供。开发者必须定义与适当的应用程序一致的过滤器语法。在此文档中使用的过滤器语法是可行的选项。但是,在现实世界的应用中,该字段标记(token)(R0至R9)可以替换为是所表示的字段的更多描述的字本文档来自技高网...
使用PCAP型过滤器和硬件辅助的PATRICIA树的无损实时线速率过滤

【技术保护点】

【技术特征摘要】
2011.02.10 US 13/0247071.一种过滤方法,包括:在存储器中定义操作符栈,所述操作符栈适应于储存二进制逻辑操作符;在存储器中定义值栈,所述值栈适应于含有指向过滤器表达式树的节点的指针;在逐个元素的基础上解析过滤器表达式,所述过滤器表达式的元素包括操作符和值,其中对于过滤器表达式中的每个下一个元素:如果过滤器表达式中的下一个元素是值,则将所述值加入到值栈中;以及如果过滤器表达式中的下一个元素是操作符,则将下一个元素与操作符栈中的顶元素进行比较,并基于下一个元素和顶元素来执行在判定表中定义的行为,从值栈中移除完整的二叉树;在存储器中定义与左子树栈(L栈)、右子树栈(R栈)、左子树栈的结果(RL栈)和右子树栈的结果(RR栈)对应的栈;执行完整的二叉树的节点的后序遍历,在所述后序遍历中访问完整的二叉树的每个节点,其中在后序遍历期间:如果被访问节点是叶子节点,则若所述叶子节点是左孩子则将分配给所述叶子节点的操作插入到L栈中、或若所述叶子节点是右孩子则将分配给所述叶子节点的操作插入到R栈中;以及如果被访问节点是非叶子节点,则基于操作是否含有OR操作或AND操作来处理所述非叶子节点,其中所述处理将数据移动到RL栈或RR栈中;处理二叉树的根节点;从RL栈或RR栈中移除与所述根节点对应的过滤器表达式的析取范式;以及从所述过滤器表达式的析取范式中识别重叠的关键码。2.根据权利要求1的方法,还包括:如果所述非叶子节点含有OR操作并且所述非叶子节点的孩子节点是叶子节点,则若所述非叶子节点是左孩子则将所有的节点从R栈和L栈中移动到RL栈中,或若所述非叶子节点是右孩子则将所有的节点从R栈和L栈中移动到RR栈中。3.根据权利要求1的方法,还包括:如果所述非叶子节点含有OR操作并且所述非叶子节点的孩子节点不是叶子节点,则若所述非叶子节点是左孩子则将所有的节点从RR栈和RL栈中移动到RL栈中,或若所述非叶子节点是右孩子则将所有的节点从RR栈和RL栈中移动到RR栈中。4.根据权利要求1的方法,还包括:如果所述非叶子节点含有AND操作并且所述非叶子节点的孩子节点是叶子节点,则将R栈中的每个节点和L栈中的每个节点合并来创建单个合取子句。5.根据权利要求4的方法,还包括:如果所述非叶子节点是左孩子,则将单个合取子句插入到RL栈中,或如果所述非叶子节点是右孩子,则将单个合取子句插入到RR栈中。6.根据权利要求1的方法,其中从完整的二叉树的节点中移除所有的NOT操作。7.一种过滤...

【专利技术属性】
技术研发人员:A·埃尔南德斯
申请(专利权)人:特克特朗尼克公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1