一种通信系统中字符串匹配信息的处理方法

文档序号:6557368阅读:153来源:国知局
专利名称:一种通信系统中字符串匹配信息的处理方法
技术领域
本发明涉及一种字符串匹配信息的处理方法,尤其是一种通信系统中字符串 匹配信息的处理方法。
背景技术
目前査找字符串的方法比较多,比较经典的是BM (boyer-moore,坡艺尔-摩 尔)算法和状态机法。这两种算法的共同特点都是对待査找的字符串P进行预处 理,生成各自的辅助目标P',然后利用P'进行字符串的査找。BM算法根据待査找的字符串P生成滑动跨度P',如图1所示,其査找方法如 下把P中的字符和文本字符串T中的字符按从后往前的顺序进行比较,先把P 中的末尾字符和T中的字符进行比较,如果相同,再比较P中的前一个字符和T 中的前一个字符。如果相同,根据比较的结果读取响应字符的滑动跨度,按照滑 动跨度往后滑动,这样,如果字符串P得不到匹配,P就会往后滑动,直到在文 本字符串T中找到待查找的字符串P。这种方法适合査找字符串P比较长,査找 过程中往后滑动的平均跨度相对较长,效率较高;但是对于较短的字符串效率较 低。状态机方法构建的P'是一个状态机,由状态机来进行字符串的匹配。例如 要寻找的字符串是P:AABC,那么要构建的状态机如图2所示。状态机是根据P作出来的,输入的文本字符串是T,可以看出,当状态到达 最后一个"X"时,也就是字符串匹配成功了。输入字符串的次数就是所找字符 在字符串中的位置。可以利用这种方法编写一个函数实现状态机,函数的入参是 要匹配的字符串P和要输入的文本字符串T,每次匹配时动态创建一个状态机。这 种方法的缺点是当要匹配的字符串P比较长时,状态机的生成相对比较麻烦。如 果m表示P的字符个数,那么状态机的复杂度是以m的平方增加的。这两种方法都能在给定的文本字符串T中找到要査找的字符串P,且效率比 较高,但是却不能对于P字符串中若干关键子字符串同时进行匹配。这需要对字 符串P进行更详细的处理,达到能匹配P中多个关键子字符串的功能。目前关键字査找方法中,美国的斯蒂尔.P.尼克额尔在专利号为90107971.5 的《具有部分关键字分支的前缀检索树》中提出的关键字査找算法将前缀关键字 节点构成前缀索引树,用这种方法可以从正文中查找出多个关键字,但该种方法
无法同时支持字符串的精确匹配。 发明内容本发明要解决的技术问题是提供一种能在通信系统中同时实现字符串精确匹 配和多通配符匹配的匹配信息的处理方法。本发明解决其技术问题所采用的技术方案是 一种通信系统中字符串匹配信息的处理方法,包括以下步骤A、 按照是否需要支持多通配符匹配确定字符串的匹配类型为精确匹配或者多 通配符匹配;B、 根据所述字符串的匹配类型,构造不同类型的匹配结构体 若为精确匹配类型,贝lj:Bl、提取所述字符串的长度信息,并构造精确匹配结构体; 若为多通配符匹配类型,则B2、提取所述字符串所需要匹配的各子字符串,并构造与所述各子字符串一 一对应的多通配符结构体;C、 为所述字符串构造对应的匹配信息描述符, 若为精确匹配类型,贝廿Cl、所述匹配信息描述符包含指向所述精确匹配结构体的指针,根据所述字 符串的长度信息,将所述匹配信息描述符链入具有相同字符串长度信息的精确匹 配散列索引链表;若为多通配符匹配类型,贝lj:C2、所述匹配信息描述符包含指向所述各多通配符结构体的指针,且将所述 匹配信息描述符链入多通配符匹配的单链表。所述步骤Bl中生成的精确匹配结构体包含所述字符串的长度信息和所述字 符串的原型信息。所述步骤B2中生成的多通配符匹配结构体包含相应的子字符串的长度信息、 ASIC码和所述ASIC码对应的滑动跨度信息;所述滑动跨度信息为利用坡艺尔-摩 尔算法计算得到。所述匹配信息描述符中指向各多通配符结构体的指针与所述字符串中的各子字符串一一对应;所述步骤C中生成的匹配信息描述符还包括所述字符串的匹配 类型信息以及所述字符串中包含的子字符串数量信息。本发明的有益效果主要表现在本发明所述的匹配信息处理方法能同时支持字符串的精确匹配和多通配符匹配,对精确匹配的情况,采用HASH (散列)管理,主动提取字符串的相关信息,提高了査找速度;对多通配符匹配的情况,则将字 符串转化为多个子字符串的组合,采用经典BM算法,效率优于状态机算法。总的
说来,本发明所述方法可满足通信系统在精确匹配和多通配符匹配情况下的实时 匹配要求。


图1是应用BM算法在文本字符串T中査找字符串P的示意图; 图2是寻找字符串AABC时需构建的状态机示意图;图3网络数据包七层过滤设备在应用中的位置示意图;图4网络数据包七层过滤设备实现方法框图;图5过滤规则更新示意图;图6匹配信息描述符示意图;图7精确匹配结构体组织框图;图8多通配符匹配结构体组织框图;图9网络数据包七层过滤时匹配信息的组织结构示意图。
具体实施方式
图1、图2已在背景技术中进行过描述,此处不再赘述。进行字符串匹配信息的处理时,A、 按照是否需要支持多通配符匹配确定字符串的匹配类型为精确匹配或者 多通配符匹配;B、 根据所述字符串的匹配类型,构造不同类型的匹配结构体 若为精确匹配类型,贝U:Bl、提取所述字符串的长度信息,并构造精确匹配结构体;若为多通配符匹配类型,贝u-B2、提取所述字符串的各子字符串,并构造与所述各子字符串一一对应的多 通配符结构体;C、 为所述字符串构造对应的匹配信息描述符,若为精确匹配类型,则Cl、所述匹配信息描述符包含指向所述精确匹配结构体的指针,根据所述字 符串的长度信息,将所述匹配信息描述符链入具有相同字符串长度信息的精确匹 配散列索引链表;若为多通配符匹配类型,贝IJ:C2、所述匹配信息描述符包含指向所述各多通配符结构体的指针,且将所述 匹配信息描述符链入多通配符匹配的单链表。将本发明所述方法应用于网络数据包七层过滤中时如图3所示,过滤系统位于局域网和公网链路之间,过滤局域网和公网的分 组域报文交互。过滤报文时,把报文的URI看作字符串处理基础。对URI进行多 通配符的报文过滤,支持多通配符匹配和精确匹配两种类型。如图4,本过滤方法需要包括以下三个模块过滤器输入模块、过滤规则处 理模块和URI过滤器。后台进行URI配置,并传送配置后的数据到前台过滤器处 理模块,过滤器处理模块对过滤规则进一步处理转换为URI过滤器能够识别的过 滤规则。过滤规则更新流程如图5所示。过滤器处理模块首先区分字符串的匹配类型 是精确匹配还是多通配符匹配。对于精确匹配,提取字符串有效信息,主要包括 URI的长度和URI的域名,构造精确匹配结构体;对于多通配符匹配,分析每个 子字符串,将多通配转化为多个单通配的情况,并按照BM算法,对各个子字符串 进行处理,得到子字符串对应的滑动跨度信息,从而构造多匹配符结构体。并且, 为前述字符串构造匹配信息描述符,对于精确匹配,匹配信息描述符的结构体指 针指向前述精确匹配结构体,并按照域名和URI的长度将匹配信息描述符将匹配 信息描述符挂入精确匹配散列链表;对于多通配符匹配,匹配信息描述符的各结 构体指针指向前述各多匹配符结构体,并将匹配信息描述符挂入多通配符匹配单链表。图6是匹配信息描述符的组织结构,下面是匹配信息描述符的成员说明。601 "匹配类型"匹配类型标识了字符串的匹配类型属性,每一字符串预处 理后得到一种匹配类型,如下列表所示RULE一C RULE—WC RULE一CW RULE—CWC RULE—WCW RULE—WCWC RULE一CWCW RULE—CWCWC这些标志把过滤规则分成了两类精确匹配和多通配符匹配。其中RULE一C代 表精确匹配,比如"http:〃ww. sina.com. cn",其它规则代表多通配符匹配, 比如RULE—CWC代表类型"www. *. net" , RULE—WC代表类型"*. sina. com"。规 则中W和C分别代表的含义是通配符号和字符串C: char W : wildcard 。 C和 W的位置直观的标识通配匹配中通配符的位置。602 "子字符串数量",标识匹配中子字符串的数量。若为精确匹配,则子字 符串数量为1,表示只有一个字符串;对于多通配符匹配,该字符串表示预处理 后的子字符串的数量,比如"www. *.net/*. jpg",预处理后分成"www" ".net/"
".jpg"三个字符串,成员"子字符串数量"就是3。603 "基于BM査找算法的匹配结构体指针",该指针指向一个结构体,这个 结构体用来存放匹配信息,参看图7与图8。这个指针并不一定都有效,指针有效个数与"子字符串数量"相同,各指针与各子字符串一一对应。这里只给出了 需要匹配的子字符串最多为三个的情况,当然,也可以根据实际扩展到N个指针 的情况。604 "NEXT",指向下一个匹配信息描述符的指针,用来构成单向链表。 图7、图8为匹配结构体组织框图。对于精确匹配结构体,如图7所示701 "精确匹配字符串的长度"。702 "精确匹配字符串的原型",为精确匹配字符串的ASIC码。 精确匹配类型RULE—C,比如,"www.sina.com.cn", 701的长度为15。 702存放这个字符串的ASIC码。对于多通配符匹配结构体,如图8所示801 "子字符串长度",为处理得到的子字符串的字符长度。802 "子字符串ASIC码",为处理得到的子字符串的ASIC码。803 "子字符串ASIC码对应的滑动跨度",为处理得到的子字符串进行BM 算法处理后得到的滑动跨度。比如"www. *. net/*, jpg"中第一个字符串"www. " 801是4, 802是这个字 符串的ASIC码,803是这个字符串经过BM算法处理后得到的滑动跨度。当行网络数据包七层过滤时,匹配信息通过上述字符串匹配信息的处理方 法得到如图9所示的网络数据包七层过滤时匹配信息的组织结构示意图。901按照URI特性,比如域名对URI进行分类得到的HASH键值,将相同URI 特性的报文统一管理。902精确匹配HASH索引指针。903多通配符匹配单链表指针。904如图6所述匹配信息描述符。905如图7所述精确匹配结构体信息。906如图8所述多通配符匹配结构体信息。对于给定的报文,首先进行精确匹配,主动提取该报文的相关信息,然后以 提取信息为键值进行HASH运算,得到相同键值的HASH链表,如果HASH后的精确 匹配无法实现匹配,则进行多通配符匹配。
权利要求
1、一种通信系统中字符串匹配信息的处理方法,其特征在于包括以下步骤A、按照是否需要支持多通配符匹配确定字符串的匹配类型为精确匹配或者多通配符匹配;B、根据所述字符串的匹配类型,构造不同类型的匹配结构体若为精确匹配类型,则B1、提取所述字符串的长度信息,并构造精确匹配结构体;若为多通配符匹配类型,则B2、提取所述字符串的各子字符串,并构造与所述各子字符串一一对应的多通配符结构体;C、为所述字符串构造对应的匹配信息描述符,若为精确匹配类型,则C1、所述匹配信息描述符包含指向所述精确匹配结构体的指针,根据所述字符串的长度信息,将所述匹配信息描述符链入具有相同字符串长度信息的精确匹配散列索引链表;若为多通配符匹配类型,则C2、所述匹配信息描述符包含指向所述各多通配符结构体的指针,且将所述匹配信息描述符链入多通配符匹配的单链表。
2、 如权利要求1所述的通信系统中字符串匹配信息的处理方法,其特征在于: 所述步骤Bl中生成的精确匹配结构体包含所述字符串的长度信息和所述字符串的原型信息。
3、 如权利要求1所述的通信系统中字符串匹配信息的处理方法,其特征在于 所述步骤B2中生成的多通配符匹配结构体包含相应的子字符串的长度信息、 ASIC码和所述ASIC码对应的滑动跨度信息。
4、 如权利要求3所述的通信系统中字符串匹配信息的处理方法,其特征在于 所述滑动跨度信息为利用坡艺尔-摩尔算法计算得到。
5、如权利要求1所述的通信系统中字符串匹配信息的处理方法,其特征在 于所述匹配信息描述符中指向各多通配符结构体的指针与所述字符串中的各子 字符串——对应。
6、如权利要求5所述的通信系统中字符串匹配信息的处理方法,其特征在 于所述步骤C中生成的匹配信息描述符还包括所述字符串的匹配类型信息以及所述字符串中包含的子字符串数量信息。
全文摘要
本发明公开了一种通信系统中字符串匹配信息的处理方法,包括以下步骤A.确定字符串的匹配类型为精确匹配或多通配符匹配;B.构造不同的匹配结构体若为精确匹配则提取所述字符串的长度信息,并构造精确匹配结构体;若为多通配符匹配则提取所述字符串的各子字符串,并构造与其一一对应的多通配符结构体;C.为所述字符串构造对应的匹配信息描述符,若为精确匹配其包含指向所述精确匹配结构体的指针,且将其链入具有相同字符串长度信息的精确匹配散列索引链表;若为多通配符匹配其包含指向所述各多通配符结构体的指针,且将其链入多通配符匹配的单链表。本发明所述方法同时支持字符串的精确匹配和多通配符匹配并满足其实时匹配要求。
文档编号G06F17/30GK101165681SQ200610063179
公开日2008年4月23日 申请日期2006年10月17日 优先权日2006年10月17日
发明者康玉东, 王宇飞 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1