在移动通信系统中匹配规则的方法和系统的制作方法

文档序号:6425688阅读:238来源:国知局
专利名称:在移动通信系统中匹配规则的方法和系统的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种在移动通信系统中匹配规则的方法和系统。
背景技术
Internet近年来在无线领域得到了巨大的发展。随着3G技术尤其是高速下行分组接入(High Speed Downlink Packet Access, HSDPA)的不断部署,用户的接入带宽与之前比较有了质的飞跃,已经接近固定网的接入带宽。用户接入带宽的提高,智能手机的大量涌现,各种新的大量应用的出现和不断丰富,迫切需要一种精细化的通信服务,能够提供针对不同业务,不同协议,不同地区,不同时段,不同用户级别的网络控制和计费控制方法,而策略的灵活配置和高效执行随着这种需求应运而生。在实现本发明过程中,发明人发现现有技术中规则匹配方案至少存在如下问题现有的规则匹配方案是把所有可能的比较判断逻辑在代码中用编程语言描述,如果比较判断逻辑变了就需要修改代码,所以这种方式只适合判断逻辑固定的场合。而随着网络中规则数量的不断增长,该方法不适用与当前系统的发展需要。

发明内容
本发明提供一种在移动通信系统中匹配规则的方法和系统,要解决的技术问题是如何提高规则匹配的效率为解决上述技术问题,本发明提供了如下技术方案一种在移动通信系统中匹配规则的方法,包括获取用户套餐的各规则;采用类伯克利包过滤器(BPF)规则编译方式,分别生成每个规则所对应的用于规则匹配的类机器码指令集,将各规则所对应的类机器指令集的总和作为该用户套餐所对应的指令队列;采用该指令队列对该用户套餐中的规则进行匹配。优选的,所述方法还具有如下特点所述采用类BPF规则编译方式,生成每个规则的类机器码指令集,包括获取以类C语言描述的所述规则;对每条所述规则进行词法解析,得到每条所述规则中的变量和符号;对于每条所述规则,结合所述规则的变量和符号,对所述规则进行语法解析,得到所述规则中的各条件信息以及所述条件信息之间的逻辑关系;根据每条所述规则中的各条件信息以及所述条件信息之间的逻辑关系,将每条规则编译成对应的类机器码的指令集。优选的,所述方法还具有如下特点所述以类C语言描述的规则中的复合条件是通过逻辑运算符号and和or中至少一个来描述的。优选的,所述方法还具有如下特点所述以类C语言描述的规则中的动作为通过关键字return和逻辑运算符and来描述的。优选的,所述方法还具有如下特点所述方法还包括采用如下任一中方式对所述用户套餐所对应的指令队列进行维护,包括方式一当所述用户的套餐中有新的规则时,生成该新规则所对应的类机器码指令集,并将新生成的类机器码指令集添加到所述用户套餐所对应的指令队列中;方式二 当所述用户的套餐中删除已有的规则,从所述用户套餐所对应的指令队列中删除该规则所对应的类机器码指令集; 方式三当所述用户的套餐中规则发生变化时,重新生成该规则的指令序列,将重新生成的指令序列作为该规则新的类机器码指令集。一种在移动通信系统中匹配规则的系统,包括获取装置,用于获取用户套餐的各规则;生成装置,用于采用类伯克利包过滤器(BPF)规则编译方式,分别生成每个规则所对应的用于规则匹配的类机器码指令集,将各规则所对应的类机器指令集的总和作为该用户套餐所对应的指令队列;匹配装置,用于采用该指令队列对该用户套餐中的规则进行匹配。优选的,所述方法还具有如下特点所述生成装置包括获取模块,用于获取以类C语言描述的所述规则;词法解析模块,用于对每条所述规则进行词法解析,得到每条所述规则中的变量和符号;语法解析模块,用于对于每条所述规则,结合所述规则的变量和符号,对所述规则进行语法解析,得到所述规则中的各条件信息以及所述条件信息之间的逻辑关系; 生成模块,用于根据每条所述规则中的各条件信息以及所述条件信息之间的逻辑关系,将每条规则编译成对应的类机器码的指令集。优选的,所述方法还具有如下特点所述获取模块所获取的以类C语言描述的规则中的复合条件是通过逻辑运算符号and和or中至少一个来描述的。优选的,所述方法还具有如下特点所述获取模块获取的以类C语言描述的规则中的动作为通过关键字return和逻辑运算符and来描述的。优选的,所述方法还具有如下特点所述系统还包括维护装置,用于采用如下任一中方式对所述用户套餐所对应的指令队列进行维护,包括方式一当所述用户的套餐中有新的规则时,生成该新规则所对应的类机器码指令集,并将新生成的类机器码指令集添加到所述用户套餐所对应的指令队列中;方式二 当所述用户的套餐中删除已有的规则,从所述用户套餐所对应的指令队列中删除该规则所对应的类机器码指令集;方式三当所述用户的套餐中规则发生变化时,重新生成该规则的指令序列,将重新生成的指令序列作为该规则新的类机器码指令集。本发明提供的技术方案,以用户套餐中的规则为单位,为每个规则生成类机器码得指令序列,解除了规则之间的耦合度,配置灵活,且实现了规则的自动编译,与现有技术中规则匹配时需要编译不同,本发明能够直接使用该指令集进行规则匹配,执行匹配的速度快。能够动态更新,编译,加载新规则,不需要重新编译代码。


图I为本发明提供的在移动通信系统中匹配规则的方法实施例的流程示意图;图2为本发明提供的在移动通信系统中匹配规则的系统实施例的结构示意图;图3为图2所示系统实施例中生成模块202的结构示意图;图4为图2所示系统实施例的另一结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。图I为本发明提供的在移动通信系统中匹配规则的方法实施例的流程示意图。图I所示方法实施例,包括步骤101、获取用户套餐的各规则;其中用户套餐是有多个规则,简单来说,有计费规则以及网络流量控制规则等。步骤102、采用类伯克利包过滤器(Berkeley Packet Filter,BPF)规则编译方式,分别生成每个规则所对应的用于规则匹配的类机器码指令集,将各规则所对应的类机器指令集的总和作为该用户套餐所对应的指令队列;具体来说,一方面,与现有技术中用户套餐的匹配程序中规则之间耦合度高不同,以各个规则为基本单位,根据各规则的描述信息,生成该规则的类机器码指令集,从而保证套餐中单个规则的修改不影响其他规则的正常使用,满足了当前网络的发展需要;另一方面,由于系统可以根据规则的描述信息,生成与该规则对应的类机器码指令集,减少了人工维护的成本。步骤103、采用该指令队列对该用户套餐中的规则进行匹配。具体的,在实际应用中,与现有技术中启动该规则的指令队列不同,对某一规则的调用,只需要启动与该规则对应的类机器码指令集,使得匹配规则的运行代码明显减少,目的性更强,使得匹配速度更高,提高了规则匹配的效率;进一步的,由于类机器码均存储在内存中,已经完成了编译,能够随时进行更新,而现有的技术中所有的规则的判断逻辑都是在代码中通过代码逻辑实现,规则需要更新时就需要修改代码逻辑,重新编译版本,所以现有技术不适合规则需要动态变化的场合。综上所述,本发明提供的方法实施例,以用户套餐中的规则为单位,为每个规则生成类机器码得指令序列,解除了规则之间的耦合度,配置灵活,且实现了规则的自动编译,与现有技术中规则匹配时需要编译不同,本发明能够直接使用该指令集进行规则匹配,执行匹配的速度快。下面对本发明提供的方法实施例作进一步说明其中步骤102中的BPF包过滤技术来实现规则的组织、存储和匹配。BPF技术能够实现对数据包的过滤条件快速匹配,提高包过滤效率。BPF采用虚拟机方式,主要分对过滤条件的编译和存储,以及过滤条件的匹配。
BPF定义了一个伪机器可以执行的代码,有一个累加器,寄存器,和赋值,算术,跳转指令。一条指令由一个定义好的结构表示,与真正的机器代码很相似,若干个这样的结构组成的数组,就成为BPF的指令序列。而一个或多个指令序列又组成指令集合。步骤102具体包括如下步骤步骤Al、获取以类C语言描述的所述规则;举例来说,一规则为用户A在使用BT协议过程中,在19:00 24:00限制下行带宽100kbps,用C语言来描述如下if (user = = A AND protocol ==1 AND time > = 19:00 AND time <= 24:00)return mbdl = 100 其中,规则的条件可以由变量名、关系运算符、数值和字符串组合而成,其中关系运算符可以为=、<、>、< =、>=和!=。如if (time >= 19:00)可选的,多个规则的条件可以通过逻辑运算符组合成复合条件,其中逻辑运算可以为 and 和 or。如if (user = = A AND protocol = = BT)其中条件可以根据需要进行定义和扩展,多个条件还可以通过逻辑运算符AND和OR进行随机组合。即以类C语言描述的规则中的复合条件是通过逻辑运算符号and和or中至少一个来描述的。其中规则的动作由变量名,赋值运算符和数值或者字符串组合而成。如returnmbdl = 100k ;当然,也可以同时返回多个动作,即所述以类C语言描述的规则中的动作为通过关键字return和逻辑运算符and来描述的。多个动作还可以通过AND逻辑运算符组合成复合动作,如return mbdl = 100k ANDGate = I。即所述以类C语言描述的规则中的动作为通过return关键字和逻辑运算符and来描述的。步骤A2、对每条所述规则进行词法解析,得到每条所述规则中的变量和符号;具体的,,通过词法分析器解析出规则文件中的符号、变量以及逻辑关键字等,逻辑关键字如if、else和return等;变量如protocol、user和time等,符号如==,< =,
> =坐步骤A3、对于每条所述规则,结合所述规则的变量和符号,对所述规则进行语法解析,得到所述规则中的各条件信息以及所述条件信息之间的逻辑关系;具体的,通过语法分析器分析出每个一个条件以及每个条件之间的逻辑关系,t匕如两个单一条件或者复杂条件之间是“或”还是“与”的逻辑关系。步骤A4、根据每条所述规则中的各条件信息以及所述条件信息之间的逻辑关系,将每条规则编译成对应的类机器码的指令集。其中,可以预先设置ldh, ldb, Idw等加载内存指令,jge ,jeq, jgt等比较指令,以及jmp跳转指令,ret返回指令。以上文所述的规则为例,上述通过C语言描述的规则转换成类机器码的指令集合
具体如下(000)ldh [O]
(001)jeq #Ajt 2 jf 8如果用户是A
(002)ldb [I]15
(003)jeq #0x1jt 4 jf8是否是BT协议
(004)ldb[2]
(005)jge #(19:00)jt 6 jf8比较时间
(006)jle #(24:00)jt 7 jf8比较时间
(007)ret #mbdl100
(008)ret #0
20其中可选的,所述方法还包括 采用如下任一中方式对所述用户套餐所对应的指令队列进行维护,包括方式一当所述用户的套餐中有新的规则时,生成该新规则所对应的类机器码指令集,并将新生成的类机器码指令集添加到所述用户套餐所对应的指令队列中;方式二 当所述用户的套餐中删除已有的规则,从所述用户套餐所对应的指令队列中删除该规则所对应的类机器码指令集;方式三当所述用户的套餐中规则发生变化时,重新生成该规则的指令序列,将重新生成的指令序列作为该规则新的类机器码指令集。简单来说,规则文件更新后,触发新的词法和语法解析过程,将解析出的条件编码成新的类机器码指令。相应的,以上文所列举的规则为例,对步骤103进行规则匹配的流程进行说明,具体包括执行指令0,从待比较结构的O偏移处读取2个字节(USER字段),判断值是否是A,若比较失败,跳到指令08,返回0,表示匹配失败。若成功则跳到指令02执行,继续从偏移为I的位置加载一个字节(协议字段),与0x01比较(0x01表示BT协议),如果比较失败跳到08指令,返回0,表示匹配失败。若比较成功,继续执行04指令,加载偏移为2的字段(时间字段),判断是否大于等于19:00,若失败跳到08执行,返回匹配失败,若成功,继续执行06指令,判断时间字段是否小于等于24:00,比较失败,跳转到08执行,返回匹配失败。成功则跳转到07指令,表示匹配成功,并返回结果集内容。综上所述,由于现有的匹配方法就是把所有可能的比较判断逻辑在代码中用编程语言描述,一旦比较判断逻辑变了就需要修改代码,这种方式只适合判断逻辑固定的场合。而本发明不同的是,通过对判断逻辑进行解析,编码成类机器指令,一是灵活,可以方便的修改判断逻辑,组合成复杂的规则,规则更新后可以动态解析,编译成新的类机器码指令集,二是直观,可以通过查看配置文件很方便的知道目前所有的使用的判断逻辑。图2为本发明提供的在移动通信系统中匹配规则的系统实施例的结构示意图;获取装置201,用于获取用户套餐的各规则;生成装置202,与所述获取装置201相连,用于采用类伯克利包过滤器(BPF)规则编译方式,分别生成每个规则所对应的用于规则匹配的类机器码指令集,将各规则所对应的类机器指令集的总和作为该用户套餐所对应的指令队列;匹配装置203,与所述生成装置202相连,用于采用该指令队列对该用户套餐中的规则进行匹配。图3为图2所示系统实施例中生成模块202的结构示意图。图3所示生成装置202包括获取模块301,用于获取以类C语言描述的所述规则;词法解析模块302,与所述获取模块301相连,用于对每条所述规则进行词法解析,得到每条所述规则中的变量和符号;语法解析模块303,与所述词法解析模块302相连,用于对于每条所述规则,结合
所述规则的变量和符号,对所述规则进行语法解析,得到所述规则中的各条件信息以及所述条件信息之间的逻辑关系;生成模块304,与所述语法解析模块303相连,用于根据每条所述规则中的各条件信息以及所述条件信息之间的逻辑关系,将每条规则编译成对应的类机器码的指令集。其中所述获取模块301所获取的以类C语言描述的规则中的复合条件是通过逻辑运算符号and和or中至少一个来描述的。其中所述获取模块301获取的以类C语言描述的规则中的动作为通过关键字return和逻辑运算符and来描述的。图4为图2所示系统实施例的另一结构示意图。图4所示系统实施例中所述系统还包括维护装置401,与所述生成装置202相连,用于采用如下任一中方式对所述用户套餐所对应的指令队列进行维护,包括方式一当所述用户的套餐中有新的规则时,生成该新规则所对应的类机器码指令集,并将新生成的类机器码指令集添加到所述用户套餐所对应的指令队列中;方式二 当所述用户的套餐中删除已有的规则,从所述用户套餐所对应的指令队列中删除该规则所对应的类机器码指令集;方式三当所述用户的套餐中规则发生变化时,重新生成该规则的指令序列,将重新生成的指令序列作为该规则新的类机器码指令集。本发明提供的系统实施例,以用户套餐中的规则为单位,为每个规则生成类机器码得指令序列,解除了规则之间的耦合度,配置灵活,且实现了规则的自动编译,与现有技术中规则匹配时需要编译不同,本发明能够直接使用该指令集进行规则匹配,执行匹配的速度快。本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
权利要求
1.一种在移动通信系统中匹配规则的方法,其特征在于,包括 获取用户套餐的各规则; 采用类伯克利包过滤器(BPF)规则编译方式,分别生成每个规则所对应的用于规则匹配的类机器码指令集,将各规则所对应的类机器指令集的总和作为该用户套餐所对应的指令队列; 采用该指令队列对该用户套餐中的规则进行匹配。
2.根据权利要求I所述的方法,其特征在于,采用类BPF规则编译方式,生成每个规则的类机器码指令集,包括 获取以类C语言描述的所述规则; 对每条所述规则进行词法解析,得到每条所述规则中的变量和符号; 对于每条所述规则,结合所述规则的变量和符号,对所述规则进行语法解析,得到所述规则中的各条件信息以及所述条件信息之间的逻辑关系; 根据每条所述规则中的各条件信息以及所述条件信息之间的逻辑关系,将每条规则编译成对应的类机器码的指令集。
3.根据权利要求2所述的方法,其特征在于,所述以类C语言描述的规则中的复合条件是通过逻辑运算符号and和or中至少一个来描述的。
4.根据权利要求2所述的方法,其特征在于,所述以类C语言描述的规则中的动作为通过关键字return和逻辑运算符and来描述的。
5.根据权利要求I所述的方法,其特征在于,所述方法还包括 采用如下任一中方式对所述用户套餐所对应的指令队列进行维护,包括 方式一当所述用户的套餐中有新的规则时,生成该新规则所对应的类机器码指令集,并将新生成的类机器码指令集添加到所述用户套餐所对应的指令队列中; 方式二 当所述用户的套餐中删除已有的规则,从所述用户套餐所对应的指令队列中删除该规则所对应的类机器码指令集; 方式三当所述用户的套餐中规则发生变化时,重新生成该规则的指令序列,将重新生成的指令序列作为该规则新的类机器码指令集。
6.一种在移动通信系统中匹配规则的系统,其特征在于,包括 获取装置,用于获取用户套餐的各规则; 生成装置,用于采用类伯克利包过滤器(BPF)规则编译方式,分别生成每个规则所对应的用于规则匹配的类机器码指令集,将各规则所对应的类机器指令集的总和作为该用户套餐所对应的指令队列; 匹配装置,用于采用该指令队列对该用户套餐中的规则进行匹配。
7.根据权利要求6所述的系统,其特征在于,所述生成装置包括 获取模块,用于获取以类C语言描述的所述规则; 词法解析模块,用于对每条所述规则进行词法解析,得到每条所述规则中的变量和符号; 语法解析模块,用于对于每条所述规则,结合所述规则的变量和符号,对所述规则进行语法解析,得到所述规则中的各条件信息以及所述条件信息之间的逻辑关系; 生成模块,用于根据每条所述规则中的各条件信息以及所述条件信息之间的逻辑关系,将每条规则编译成对应的类机器码的指令集。
8.根据权利要求7所述的系统,其特征在于,所述获取模块所获取的以类C语言描述的规则中的复合条件是通过逻辑运算符号and和or中至少一个来描述的。
9.根据权利要求7所述的系统,其特征在于,所述获取模块获取的以类C语言描述的规则中的动作为通过关键字return和逻辑运算符and来描述的。
10.根据权利要求6所述的系统,其特征在于,所述系统还包括 维护装置,用于采用如下任一中方式对所述用户套餐所对应的指令队列进行维护,包括 方式一当所述用户的套餐中有新的规则时,生成该新规则所对应的类机器码指令集,并将新生成的类机器码指令集添加到所述用户套餐所对应的指令队列中; 方式二 当所述用户的套餐中删除已有的规则,从所述用户套餐所对应的指令队列中删除该规则所对应的类机器码指令集; 方式三当所述用户的套餐中规则发生变化时,重新生成该规则的指令序列,将重新生成的指令序列作为该规则新的类机器码指令集。
全文摘要
本发明提供一种在移动通信系统中匹配规则的方法和系统,所述方法,包括获取用户套餐的各规则;采用类伯克利包过滤器(BPF)规则编译方式,分别生成每个规则所对应的用于规则匹配的类机器码指令集,将各规则所对应的类机器指令集的总和作为该用户套餐所对应的指令队列;采用该指令队列对该用户套餐中的规则进行匹配。
文档编号G06F17/30GK102819527SQ201110151768
公开日2012年12月12日 申请日期2011年6月8日 优先权日2011年6月8日
发明者史益斌, 卢勤元, 李冰 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1