CN1848736A - 一种通信系统中字符串定位方法 - Google Patents

一种通信系统中字符串定位方法 Download PDF

Info

Publication number
CN1848736A
CN1848736A CN 200510038946 CN200510038946A CN1848736A CN 1848736 A CN1848736 A CN 1848736A CN 200510038946 CN200510038946 CN 200510038946 CN 200510038946 A CN200510038946 A CN 200510038946A CN 1848736 A CN1848736 A CN 1848736A
Authority
CN
China
Prior art keywords
character string
span
character
slip
template
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200510038946
Other languages
English (en)
Other versions
CN100486166C (zh
Inventor
康玉东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Huabo Enterprise Management Consulting Co ltd
Electric Power Research Institute of State Grid Xinjiang Electric Power Co Ltd
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CNB2005100389468A priority Critical patent/CN100486166C/zh
Publication of CN1848736A publication Critical patent/CN1848736A/zh
Application granted granted Critical
Publication of CN100486166C publication Critical patent/CN100486166C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种通信系统中字符串定位方法,其特征在于,包括如下步骤:预处理步骤,对系统中需查找的模板字符串进行滑动跨度的预处理,求出滑动跨度;步骤二,配置滑动跨度,以设定方式将所述滑动跨度和模板字符串组成结构数组,并写入内存;及步骤三,查找字符串,读取已配置的模板字符串和滑动跨度,在系统的被查找的文本字符串中查找所述模板字符串。本发明能充分利用系统资源,快速定位查找字符串,节省了字符串查找时间,提高了系统实时处理能力。

Description

一种通信系统中字符串定位方法
技术领域
本发明涉及一种在通信系统中字符串查找或定位的方法,特别是涉及内容计费系统中或通信领域实时系统中的字符串快速定位问题。
背景技术
随着移动互联网的开展与成熟化,通过无线媒体传送的业务正朝着多样化发展。在3G系统到来后,这一现象将会更白热化。传统的基于时长或数据流量的计费方法已不足够解决移动互联网的计费需要。新一代的移动互联网计费解决方案将要求网络系统对于用户在移动系统上收发的应用业务作出区分和记录,也就是按照内容进行计费。
内容计费主要是通过对移动用户的上下行数据进行深层的数据包过滤和分析。运营商可以通过在网元上为APN配置不同的包过滤/分析规则。网元会根据这些规则,对用户数据包进行:
第三层过滤:源/目的地IP地址;
第四层过滤:端口号;
第七层过滤:URL通过第三层至七层的包过滤和分析,网元可以识别区分用户上下行数据传送的内容。网元区分用户数据包内容后,把属于相关内容的包流量标记在网元话单中。运营商的计费系统可以通过这些内容计费信息,对用户在移动网的数据使用量作出更灵活的计费处理。
在内容计费中,报文过滤的难点之一是对第七层URL的分析,要想提高分析效率可以采用底层机器语言提高分析的效率,但是底层如何对这些字符串进行处理呢?
如图1所示为BM方法原理图,该方法采用从右向左进行字符逐个比较,本发明称所要查找的字符串为字符模板P,被查找的字符串为文本字符T。那么逐个比较时,当模板字符P和文本字符T不匹配的时候就向后滑动。滑动的跨度由不匹配字符所对应的滑动跨度决定。而这个滑动跨度是由字符本身决定的,在进行滑动方法时事先运算得到的。也就是说,BM方法在进行查找的时候,是将方法分为两部分,第一部分对特定查找字符进行分析,求出每一个字符对应的滑动跨度;第二步,按照滑动原理进行滑动匹配。
现有方法主要有以下弊端:方法本身不适合查找模板具有可知性的实时系统,实时系统更侧重于系统处理的快慢,如果系统查找的模板字符已经很明了,就可以将方法进行改进,提高方法的实时处理能力。
发明内容
本发明所要解决的技术问题在于提供一种通信系统中字符串定位方法,用于解决现有技术中系统资源利用率低,字符串定位查找速度慢、系统实时处理能力有限等问题。
为了实现上述目的,本发明提供了一种通信系统中字符串定位方法,其特征在于,包括如下步骤:
预处理步骤,对系统中需查找的模板字符串进行滑动跨度的预处理,求出滑动跨度;
步骤二,配置滑动跨度,以设定方式将所述滑动跨度和模板字符串组成结构数组,并写入内存;及
步骤三,查找字符串,读取已配置的模板字符串和滑动跨度,在系统的被查找的文本字符串中查找所述模板字符串。
上述的通信系统字符串定位方法,其中,所述预处理步骤又包括由一中间数组统计所述模板字符串的步骤,用于计算所述滑动跨度。
上述的通信系统字符串定位方法,其中,所述中间数组为一整数数组,其元素个数比所述模板字符串的字符个数多一。
上述的通信系统字符串定位方法,其中,所述滑动跨度为一数组,且该数组的元素个数与所述模板字符串的字符个数相等;元素值为所述模板字符串中对应字符的滑动跨度值。
上述的通信系统字符串定位方法,其中,当所述模板字符串中的字符与被查找的文本字符串不相匹配时,该字符的滑动跨度值为该字符在所述模板字符串中的下标索引。
上述的通信系统字符串定位方法,其中,还包括设定一字符跨度的步骤,该步骤又包括:对所述模板字符串中存在的任意字符,设定该字符的字符跨度为m-k;其中k为该字符在所述模板字符串中的位置,m为所述模板字符串的长度。
上述的通信系统字符串定位方法,其中,取所述字符跨度和滑动跨度中较大者作为最优滑动跨度,用于查找模板字符串。
上述的通信系统字符串定位方法,其中,还包括一字符串查找的过程,包括:
步骤101,输入要查找的模板字符串索引入参数减少;
步骤102,调用一模板字符串查找模块查找模板字符串;
步骤103,判断要查找的模板字符串与被查找的文本字符串是否匹配,若能够匹配,则执行步骤106,若不能够匹配,则执行步骤104;
步骤104,查找静态配置的滑动跨度;
步骤105,根据滑动跨度判断向后滑动的字符数,然后执行步骤103;
步骤106,命中,返回命中位置。
本发明很好解决了系统资源利用率和系统效率之间的矛盾,达到了系统优化的目的。采用初始化静态配置代码可以减少到百分之四十,同时降低了CPU占用率;提高了查找模块的稳定性,节省了系统查找时间。直接降低了报文在系统中的驻留时间,提高了系统效率。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为BM方法原理图;
图2为现有技术的查找流程解析图;
图3为改进后的查找解析图;
图4为改进后的查找方法;
图5为微引擎CAM数据存放格式;及
图6为滑动跨度静态配置的查找方法流程图。
具体实施方式
本发明所要解决的技术问题是通信系统中字符串定位问题,在这个案例中也就是内容计费七层协议分析中字符串的定位问题,为分析URL提供一种字符串查找的方法。
为解决字符串快速查找并定位,本发明采用方法是对BM(Boyer-Moore)方法进行改进。本发明对经典BM方法所进行的改进,使之更适用于对内容计费或者其它实时通信系统中的底层字符串定位问题的解决。本发明方法主要步骤如下:
步骤一,预处理,对系统需要查找的字符模板进行滑动跨度运算的预处理,求出滑动跨度;
步骤二,配置滑动跨度,将滑动跨度和字符模板按照某种方式组成结构数组,写进内存;
步骤三,系统中的查找,读取配置的查找字符和滑动跨度,进行字符串的查找。
上述方法,步骤一中,仅仅将查找部分的代码放在系统中,优化了代码结构,提高查找效率。
上述方法,步骤二中,将计算滑动跨度的代码独立于系统之外。便于滑动跨度的计算和验证,维护起来也比较方便。
上述方法,将滑动跨度封装成结构数组,写进SRAM内存中,以供系统查找使用,这样达到了精简代码长度的目的,最重要的是提高了查找速度。
图2所示为现有技术的查找流程解析图,该流程解析图包括步骤:步骤S210,首先输入任意字符;步骤S220,利用滑动跨度模块计算滑动跨度;步骤S230,调用字符查找模块进行查找;步骤S240,判断是否能匹配,若能够匹配,则执行步骤S270,若不能够匹配,则执行步骤S250;步骤S250,查找生成的滑动跨度;步骤S260,根据滑动跨度判断向后滑动的字符数,然后执行步骤S240;步骤S270,释放相应的滑动跨度;步骤S280,命中,返回命中位置。
图3所示为改进后的查找解析图,该查找解析图包括步骤:步骤S310;统计需要查找的字符;步骤S320,对这些字符进行滑动跨度计算,为系统外处理;步骤S330,静态配置滑动跨度和相应字符,对配置进行编号;步骤S340,执行查找方法,为系统内处理。
图4所示为改进后的查找方法。步骤S410,首先,输入要找的字符索引入参数减少,这样便于传递入参;步骤S420,调用字符查找模块进行查找,省去了计算滑动跨度的模块;步骤S430,判断是否匹配,若能够匹配,则执行步骤S460,若不能够匹配,则执行步骤440;步骤S440,查找静态配置的滑动跨度;步骤S450,根据滑动跨度判断向后滑动的字符数,然后执行步骤S430;步骤S460,命中,返回命中位置。
本发明将字符串的搜索按照系统中所处的位置分为系统外预处理和系统内查找两个部分。
1、系统外预处理
系统外预处理的目的是为了预先求出系统查找的时候需要的字符串滑动跨度。在设定系统的时候,事先统计出所要查找的字符串,然后按照BM方法字符串滑动跨度的计算方法进行计算求出字符串的滑动跨度。
预处理求滑动跨度是要统计出模板字符串P中满足条件1的信息,然后按照公式1进行运算,得出相关字符的滑动跨度,m为模板字符串P中字符的个数。
      matchjump[k]=slide[k]+m-k              (公式1)
在统计滑动跨度的运算中引入了一个中间数组SUFX[m+1],这个数组是比模板字符串P个数大1的一个整数数组,当数组的第k个元素SUFX[k]=x时,表示模板字符串P中存在子字符串P[k+1]......P[k+m-x]和P[x+1]......P[m]相匹配。
滑动跨度运算利用数组SUFX[]进行统计模板字符串P,将模板字符串P中符合如下条件1的信息统计出来。然后按照公式1,求出滑动跨度。
P[k+1].....p[m]和P[r+1]....P[r+m-k]相等,且P[k]不等于P[r]  (条件1)
得到模板字符串P的滑动跨度使用一个数组来表示,这个数组的个数是和模板字符串P字符个数相等的数组,跨度数组的每一个元素值就是模板字符串P中对应字符的滑动跨度,这样处理可以方便第二部分的查找,查找时,当模板字符串P中的某个字节的字符和文本字符串T中字符不相匹配的时候,就可以根据该字符在模板字符串P中的下标索引得到相对应的滑动跨度的值。
在配置内存中的滑动跨度时,可以根据具体芯片处理数据的字节和系统资源的实际情况来进行配置,如果系统资源比较宽余,所要查找的字符个数相对不是太多,可以采用将单个字符占用一个longword,这样配置可以使系统访问模板字符串P字符和滑动跨度的时候效率比较高。
2、利用配置的滑动跨度搜索字符串原理
得到模板字符串P的滑动跨度后运算已经初现轮廓,另外还有一个字符跨度,即凡是在要查找的模板字符串P里存在的字符,根据其在模板字符串P中的位置k和模板字符串P的长度设定一个字符跨度“m-k”,该字符跨度和滑动跨度共同决定(比较后取大的)运算最终采用的滑动跨度,暂且称最优滑动跨度,做好这些初始化后就可以根据查找方法进行任意模板字符串P的查找。
下面就以内容计费中应用为案例,来介绍一下配置滑动跨度后的模板字符串搜索方法。在内容计费中,文本字符串T指的是待查找的报文URL,而模板字符串P则是URL中要查找的一些关键字符串,URL是报文的一部分,存放在同步动态存储器(SDRAM)中,而模板字符串P比较小,可以存放在便于读取的Scratch Memory或静态存储器(SRAM)中,由于查找是模板字符串字符和URL字符之间单字节的比较,所以需要解决一下微码如何方便的进行单字节的访问。
在报文的URL查找时,如果处理器有快速缓存,可以将报文的URL,也就是所要查找的文本字符串导入缓存中,以便于提高访问速度。
当要查找某一字符串时,用相应的索引(结构数组的下标)找到字符串ASC-ii码和滑动跨度存放的地址,先将这些数据导进缓存中,导入方法来讲根据具体的芯片不同而设计有所不同,在内容计费这个案例中采用的是网络处理器实现报文的高速处理,具体方法如下:
如图5,每个微引擎有一个具有16个ENTRY的CAM用于快速查找,可以将每一个字符的ASC-II码和相关滑动跨度各放在一个ENTRY中,由于CAM进行查找的时候16个ENTRY的Tag必须各不相同,而模板字符串中的字符会出现相同字符,在字符ASC-II前面增加一个字节的标签予以区别。当进行CAM查找时读取出相关的ENTRY,也就是将要查找的字符ASC-II码和滑动跨度都得到了,然后进行模板字符串和文本字符串相应字符的比较,进而进行相关的滑动处理。
显然,利用CAM将字符ASC-II码和滑动跨度放在ENTRY中,将字节的访问转换成ENTRY的访问,避免了微码不适应的逐字节访问数据的方式,而且采用的LM作为文本字符串T的快速缓存,可以使字符查找速度提高很快,提高了系统带宽。
图6所示为滑动跨度静态配置的查找方法流程图。静态配置后的字符串查找流程简单,易于理解。该流程图包括步骤如下:步骤S610,入参模块P、模块长度m、模块中每个字符的跨度、目标字符串的起始地址和长度;步骤S620,设置模块索引P_INDEX=m和目标板索引T_INDEX=m;步骤S630,判断第T_INDEX字符是否到达目标板结束,若到达,则执行步骤S640,若不能到达,则执行步骤S680;步骤S640,判断P_INDEX<1,若是,则执行步骤S650,若否,则执行步骤S680;步骤S650,判断第P_INDEX个字符是否与第T_INDEX个字符相等,若相等,则执行步骤S660,若不等,则执行步骤S670;步骤S660,进行P_INDEX--,T_INDEX--处理;步骤S670,T_INDEX加上相对应的滑动跨度、T_INDEX=m;步骤S680,返回T_INDEX值。
该方法已成功应用到内容计费系统,使查找定位模块、过滤模块以及整个系统的效率都有很大的提高。
本发明也适合于一些需要对字符串进行查找的系统中,比如内容计费、防火墙、网络数据采集等,尤其适合使用汇编、微码底层软件编程的系统中。
本发明的技术效果如下:
该方法与现有的BM方法相比很好解决了系统资源利用率和系统效率之间的矛盾,达到了系统优化的目的。采用初始化静态配置代码可以减少到百分之四十,同时降低了CPU占用率;滑动跨度和字符串搜索分开处理,提高了查找模块的稳定性,节省了系统查找时间。直接降低了报文在系统中的驻留时间,提高了系统效率。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (8)

1、一种通信系统中字符串定位方法,其特征在于,包括如下步骤:
预处理步骤,对系统中需查找的模板字符串进行滑动跨度的预处理,求出滑动跨度;
步骤二,配置滑动跨度,以设定方式将所述滑动跨度和模板字符串组成结构数组,并写入内存;及
步骤三,查找字符串,读取已配置的模板字符串和滑动跨度,在系统的被查找的文本字符串中查找所述模板字符串。
2、根据权利要求1所述的通信系统字符串定位方法,其特征在于,所述预处理步骤又包括由一中间数组统计所述模板字符串的步骤,用于计算所述滑动跨度。
3、根据权利要求2所述的通信系统字符串定位方法,其特征在于,所述中间数组为一整数数组,其元素个数比所述模板字符串的字符个数多一。
4、根据权利要求1所述的通信系统字符串定位方法,其特征在于,所述滑动跨度为一数组,且该数组的元素个数与所述模板字符串的字符个数相等;元素值为所述模板字符串中对应字符的滑动跨度值。
5、根据权利要求4所述的通信系统字符串定位方法,其特征在于,当所述模板字符串中的字符与被查找的文本字符串不相匹配时,该字符的滑动跨度值为该字符在所述模板字符串中的下标索引。
6、根据权利要求4所述的通信系统字符串定位方法,其特征在于,还包括设定一字符跨度的步骤,该步骤又包括:对所述模板字符串中存在的任意字符,设定该字符的字符跨度为m-k;其中k为该字符在所述模板字符串中的位置,m为所述模板字符串的长度。
7、根据权利要求6所述的通信系统字符串定位方法,其特征在于,取所述字符跨度和滑动跨度中较大者作为最优滑动跨度,用于查找模板字符串。
8、根据权利要求1所述的通信系统字符串定位方法,其特征在于,还包括一字符串查找的过程,包括:
步骤81,输入要查找的模板字符串索引入参数减少;
步骤82,调用一模板字符串查找模块查找模板字符串;
步骤83,判断要查找的模板字符串与被查找的文本字符串是否匹配,若能够匹配,则执行步骤86,若不能够匹配,则执行步骤84;
步骤84,查找静态配置的滑动跨度;
步骤85,根据滑动跨度判断向后滑动的字符数,然后执行步骤83;及
步骤86,命中,返回命中位置。
CNB2005100389468A 2005-04-15 2005-04-15 一种通信系统中字符串定位方法 Active CN100486166C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100389468A CN100486166C (zh) 2005-04-15 2005-04-15 一种通信系统中字符串定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100389468A CN100486166C (zh) 2005-04-15 2005-04-15 一种通信系统中字符串定位方法

Publications (2)

Publication Number Publication Date
CN1848736A true CN1848736A (zh) 2006-10-18
CN100486166C CN100486166C (zh) 2009-05-06

Family

ID=37078116

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100389468A Active CN100486166C (zh) 2005-04-15 2005-04-15 一种通信系统中字符串定位方法

Country Status (1)

Country Link
CN (1) CN100486166C (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101925895B (zh) * 2007-12-13 2012-11-07 谷歌公司 用于高效传输数据的通用格式
CN105678090A (zh) * 2016-01-15 2016-06-15 杭州数梦工场科技有限公司 数据处理方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101925895B (zh) * 2007-12-13 2012-11-07 谷歌公司 用于高效传输数据的通用格式
CN105678090A (zh) * 2016-01-15 2016-06-15 杭州数梦工场科技有限公司 数据处理方法和系统

Also Published As

Publication number Publication date
CN100486166C (zh) 2009-05-06

Similar Documents

Publication Publication Date Title
Kalia et al. Raising the Bar for Using {GPUs} in Software Packet Processing
CN1282332C (zh) 一种快速数据包过滤方法
CA2820500A1 (en) Method and device for high performance regular expression pattern matching
Kong et al. Efficient signature matching with multiple alphabet compression tables
CN102364463B (zh) 一种基于Hash查找CAM的方法
CN101068212A (zh) 一种网络地址转换转发的装置及方法
CN1142484C (zh) 微处理器向量处理方法
WO2009015603A1 (fr) Système de compilation d'expressions régulières, système d'appariement, procédé de compilation et procédé d'appariement
CN1602485A (zh) 用于网络处理器和计算机系统的混合搜索存储器
CN87100829A (zh) 用于检索的方法和装置
CN101079817A (zh) 一种路由查找方法及系统
CN106708956B (zh) 一种基于多url规则集的http数据匹配方法
CN1909552A (zh) 一种信息访问方法和系统
CN1655534A (zh) 核心路由器上支持访问控制列表功能的双栈兼容路由查找器
CN1932809A (zh) 匹配联系人信息的方法及装置
CN107122222A (zh) 一种字符串的搜索系统及方法
Yuan et al. HALO: Accelerating flow classification for scalable packet processing in NFV
CN1308840C (zh) 一种获取硬盘中数据的方法
CN1885820A (zh) 一种路由转发表地址查找引擎装置
CN1848736A (zh) 一种通信系统中字符串定位方法
CN1859208A (zh) 一种tcam路由表管理方法和系统
CN1560731A (zh) 32位媒体数字信号处理器
WO2024159955A1 (zh) 网络攻击检测方法、装置、电子设备及存储介质
CN1585358A (zh) 路由查找方法及其系统
CN103414603A (zh) 基于Hash折叠方法的Ipv6深度包检测方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: ELECTRIC POWER RESEARCH INSTITUTE, STATE GRID XINJ

Free format text: FORMER OWNER: GUANGDONG HUABO ENTERPRISE MANAGEMENT CONSULTING CO., LTD.

Effective date: 20141126

Owner name: GUANGDONG HUABO ENTERPRISE MANAGEMENT CONSULTING C

Free format text: FORMER OWNER: ZTE CORPORATION

Effective date: 20141126

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 518057 SHENZHEN, GUANGDONG PROVINCE TO: 510640 GUANGZHOU, GUANGDONG PROVINCE

Free format text: CORRECT: ADDRESS; FROM: 510640 GUANGZHOU, GUANGDONG PROVINCE TO: 830011 URUMQI, XINJIANG UYGUR AUTONOMOUS REGION

TR01 Transfer of patent right

Effective date of registration: 20141126

Address after: 830011, 66, lane two, Changchun Middle Road, the Xinjiang Uygur Autonomous Region hi tech Industrial Development Zone (new urban area), Urumqi

Patentee after: ELECTRIC POWER SCIENCES RESEARCH INSTITUTE OF STATE GRID XINJIANG ELECTRIC POWER Co.

Address before: 510640 Guangdong city of Guangzhou province Tianhe District gold Yinglu No. 1 was 1106 room two

Patentee before: GUANGDONG HUABO ENTERPRISE MANAGEMENT CONSULTING Co.,Ltd.

Effective date of registration: 20141126

Address after: 510640 Guangdong city of Guangzhou province Tianhe District gold Yinglu No. 1 was 1106 room two

Patentee after: GUANGDONG HUABO ENTERPRISE MANAGEMENT CONSULTING Co.,Ltd.

Address before: 518057 Nanshan District, Guangdong high tech Industrial Park, science and Technology Industrial Park, ZTE building, block A, layer 6, layer

Patentee before: ZTE Corp.