业务量分路器安排中的服务质量一致性检查器的制作方法

文档序号:7756308阅读:159来源:国知局
专利名称:业务量分路器安排中的服务质量一致性检查器的制作方法
技术领域
本发明涉及分组交换方案中业务量分路器的一致性检查。
背景技术
业务量分路器出现于分组交换系统中,用于分离进入逻辑信道的分组流。信道指逻辑端点之间的信息流。每个信道被规则定义为分组的一个或多个参数的值。可以被用于区分信道的典型参数是源地址、目的地地址、源端口、目的地端口和协议,但也可使用其它参数。业务量分路器可用于分组交换系统的子系统,例如防火墙和服务质量保证安排(arrangement)。
在多数业务量分路器中,规则被进入的分组按顺序遍历直至找到匹配。匹配规则定义信道。一般不检查一个规则是否阻挡了其它规则的执行。例如,如果规则1指示匹配分组进入目的地地址10.128.0.1而规则2指示匹配分组进入目的地端口80,那么进入目的地地址10.128.0.1和目的地端口80的分组将匹配规则1。规则2则永远不会抵达。在拥有很多规则的复杂系统中,这可能不是用户的意图。如果用户可以意识到这种情况并能够知晓选择规则的优先顺序,将是有利的。
这种安排的劣势是不可能知道规则的遍历顺序是否有意义,因此,此顺序必须在所有情况下得到保持。这严重限制了使用高级数学工具提高将分组分配给信道的效率的可能性。

发明内容
本发明的一个目的是提供一种方法和装置,实现对整套分路规则的检查,消除用户模糊,或者至少向公众提供有用的备选方案。
本发明的一种形式是一种实现对信道分离安排中的多个信道定义的模糊性的检查的方法,此类信道由上述安排中的一套规则定义,所述方法包括如下步骤使标记与每条父规则关联;把每条规则解析成子规则,使每条子规则拥有一个或多个仅从如下布尔运算符AND、等号、或者非中选取的运算符,在相同的子规则中,可以使用任何数量的这些运算符,父规则能够使用OR布尔运算符结合子规则进行表达,每个子规则与关联于各自的父规则的标记相关联。
本发明的另一种形式是一种实现对信道分离安排中的多个信道定义的模糊性的检查的方法,此类信道由上述安排中的一套规则定义,所述方法包括如下步骤使标记与每条父规则关联;把每条规则解析成子规则,使每条子规则拥有一个或多个仅从如下布尔运算符AND、等号、或者非中选取的运算符,在相同的子规则中,可以使用任何数量的这些运算符,父规则能够使用OR布尔运算符结合子规则进行表达,每个子规则与关联于各自的父规则的标记相关联,把每条子规则输入数据结构,上述结构具有分支安排,其中每个节点是子规则的等号或非等号语句,而节点之间的每个链接是来自子规则的AND操作符,其在结构中的位置仅可通过遍历构成子规则语句的所有节点抵达的节点也包含与此子规则关联的标志,根据每个子规则创建分组,而且该分组的参数设置应使分组满足子规则的要求,将所有其它可能的参数设置为表示无意义的值,然后,让每个分组遍历数据结构,只有当分组中的参数值满足子规则语句的条款时才继续遍历来自节点的链接,并对其进行安排,如果节点包含标志且分组满足此节点内子规则语句条款,则标志与此分组关联,如果分组与多于一个标志关联,造成与这些标志相关联的规则之间的模糊不清,可重新指定这些规则以消除模糊,或者指定不同的优先级。
优选地,此方法还包括以下步骤在根据上述规则创建的分组遍历了数据结构后,把给定规则从数据结构中删除。
优选地,此方法还包括以下步骤使用权重因子选择根据规则创建的分组遍历数据结构的顺序,此类因子是条款的汇总,每个条款是通过与规则的参数相关联的掩码逐位取反、除以所选择的因子而创建的数字。
优选地,此发明可以是一种针对分组交换系统的业务量分路安排,其中,通过上述方法检查运算规则中所定义的逻辑。


为了更好地理解本发明,将参照借助于附图描述的优选实施例,对本发明进行描述,其中图1示出了需要把信息流分离成各种分组逻辑流(信道)的系统的高级系统图。
图2示出了在数据结构中分路业务量的一套规则的示例代表。
图3示出了与图2同样的规则示例代表,但删除了一项规则。
图4示出了与图3同样的规则示例代表,但删除了一项规则。
图5示出了放置规则的数据结构的伪代码说明。
图6示出了数据结构遍历算法的伪代码说明。
具体实施例方式
典型的系统有一系列的规则,根据每个规则中的各种参数设置,将业务量分路为被称为信道的分组逻辑流。例如,规则1把去往目的地地址10.128.0.10的所有业务量分路入信道1,而规则2可以把来自源地址10.128.0.55的所有业务量分路入信道2。这个例子突出了分路规则的不一致性。如果进入系统的分组来自源地址10.128.0.55而要进入目的地地址10.128.0.10,系统选择把分组放入信道1或信道2都同样正确。这代表着需要解决的不一致性。为了解决此问题,用户可以设置规则的优先顺序或重新编写规则,使其摆脱不一致性状态。
一致性检查按下面的步骤进行。为每条规则设定标志,例如,上述规则1指定标志1,而规则2则指定标志2。然后把规则分解为一致的格式,以便输入数据结构。每条子规则构成数据结构中的一个节点。
然后从每条子规则创建参数和掩码分组,只定义此子规则提及的参数和掩码,而且所定义的值应符合此子规则。然后,让每个分组通过数据结构,当数据结构中的节点与此分组匹配时,此节点相应的标志将被放于分组内的集合中。在此流程结束时,如果分组在其标志集合中包含多于一个标志,则表明相应的规则之间有冲突,并提醒用户。
根据其创建参数和掩码分组的规则即从系统中删除,并针对下一条规则,重复此过程。规则删除的顺序对系统搜索所有可能冲突的速度有影响。可以确定简单的试探法来加速此过程,而不影响算法的复杂性。
当分组进入业务量分路系统时,此分组具有多个不同的参数,可用于判定此分组属于哪个信道。某些例子是源地址、目的地地址、源端口、目的地端口和协议,但系统不局限于此。检查每个分组,确定其是否与业务量分路规则匹配,从而判定它应进入哪个信道。如果分组与两条规则匹配,就会造成冲突,这时,系统用户或管理员可以改变规则使其不冲突,或设定规则的优先级。
例如,考虑如下例子针对信道A的规则目的地地址=10.128.0.1 && 目的地端口=80针对信道B的规则目的地端口=80此时,当分组的目的地地址为10.128.0.1且目的地端口为80时即出现冲突。信道A和信道B的规则同时匹配。此时,系统管理员或用户需要指定至少一条规则的优先次序,以在冲突出现时确定优先选择哪一条。
系统标记如下条件以便用户干预当规则出现无法解决的冲突时(例如,规则目的地地址=10.128.0.1 && 目的地地址=10.128.0.2)当两条无优先次序的规则冲突时如果两条优先次序相同的规则冲突适用于规则的运算符如下所示
a==b(equals)a!=b(not equals)a && b or a^b(and)a||b or a v b(or)!a or﹁a(not)()(grouping)作为例子,考虑如下规则(目的地地址==10.128.0.1/255.255.255.255 && 源地址!=10.128.0.10/255.255.255.255)||!((目的地==80) && (源端口==50)此规则表示如果目的地地址等于10.128.0.1,掩码为255.255.255.255,且源地址不等于10.128.0.10,掩码为255.255.255.255或者目的地端口不等于80或源端口不等于50,匹配此分组。
系统中的每条规则有惟一的标志。这仅意味着赋予每条规则唯一的整数标识符。已指定优先顺序的规则稍后记忆,因为优先顺序不同的规则之间不会产生冲突。
现在,需要把每条规则分解成更小的规则,以便适合允许快速规则遍历的数据结构。考虑如下规则规则1((A1==W1/WM1 && A2==W2/WM2 &&…)&&!(B1==X1/XM1&& B2==X2/XM2 &&…))||((C1==Y1/YM1 && C2==Y2/YM2 &&…)&&!(D1==Z1/ZM1 && D2==Z2/ZM2 &&…))||…如果我们用值1对此进行标记,然后把此超规则分解成称作子规则的分离规则。如果子规则为真,每一条都用值1标记此分组规则1a(A1==W1/WM1 && A2==W2/WM2 &&…)&&!(B1==X1/XM1&& B2==X2/XM2 &&…)-用值1标记规则1b(C1==Y1YM1 && C2==Y2/YM2 &&…)&&!(D1==Z1/ZM1&& D2==Z2/ZM2 &&…)-用值1标记现在,进入此系统且标记为值1的任何分组适用规则1(不管其标记为规则1a、规则1b、…)。
形式上,子规则的格式为F∧(sub)=(a1=b1)∧(a2=b2)∧…∧﹁((an=bn)∧(an+1=bn+1)∧…)超规则的格式为F∨(super)=F∧(sub1)∨F∧(sub2)∨…∨F∧(subn)使用前述运算的任何等式可以使用下面的布尔代数规则处理成以下格式,递归应用 (F(a)vF(a))⇔F(a)]]>a1!=a2⇔⫬a1=a2]]>所有规则说明以后,输入数据结构。在伪代码中,此数据结构在图6中显示。
参考图6,标记是分组与规则匹配时做出的标记;nextMarks包含掩码及其指向next_maker的指针的关联映射的列表。掩码是在通过映射前与参数进行“与”运算的二进制字符串;notEqual是需要检查确保规则在能够确定是否分组与规则匹配之前不会发生的规则列表。如果发现掩码值,将遍历此列表,确保没有参数匹配。如果发现匹配,则分组不能被标记。
为说明的目的,假定分组仅有两个用于对其进行分类的参数目的地地址和源地址,均为32位。
下面是一套规则示例。假定所有地址包含4比特二进制数。地址和掩码以地址/掩码的形式给出。
规则1目的地地址=1100/1111 && 源地址=1101/1111-标记1规则2目的地地址=1100/1110 && 源地址=1010/1111-标记2规则3目的地地址=1000/1100 && 源地址=1011/1111-标记3
规则4目的地地址=1100/1111 && 源地址=1010/1111-标记4规则5目的地地址=1100/1110 && 源地址=1101/1111-标记5规则6目的地地址=1001/1111可以看到,规则1与规则5冲突-如果进入系统的分组的目的地地址为1100而源地址为1101,两条规则均匹配。
图2表示如图5中的伪指令片断所描述的数据结构。
101是TopLevel的码元。101是掩码与关联映射列表中的首个码元。118是列表中的下一个指针,107是类表中的下一个码元。119代表码元映射内的首个链接。102是DetinationAddress类型。如果目的地地址等于1100的分组进入系统,它将访问此码元。它还包括掩码和关联映射列表。列表中的首个码元是104。103也是DestinationAddress类型。如果分组在遍历过程中访问此节点,标记6将被增加至分组的标记集。105是与104相关联的映射的首个码元,是SourceAddress类型。访问此节点的任何分组将增加标记1。106亦是SourceAddress类型,任何访问此节点的分组将增加标记4。107是TopLevel中掩码和关联映射列表的第二个码元,包含匹配1110掩码的码元映射。108也是DestinationAddress类型。DestinationAddress为1110和1111的分组将访问它,因为掩码是1110。109也是DestinationAddress类型。DestinationAddress为1100和1101的分组将访问它。110是与DestinationAddress码元108相关联的掩码及映射列表的首个码元。111是SourceAddress类型,将标记值为2的分组。这种情况在DestinationAddress是1110或1111且SourceAddress是1010时出现。112是与DestinationAddress码元109相关联的掩码及映射列表的首个码元。113是SourceAddress类型,将标记值为5的分组。这种情况在DestinationAddress是1100或1101且SourceAddress是1101时出现。114是掩码和与TopLevel相关联的映射列表的最后一个码元。115是DestinationAddress类型。116是与115相关联的掩码和映射列表中的首个码元,117是SourceAddress类型,在被访问时将标记值为3的分组。
对于每条规则,分组被创建并能够遍历图2所示数据结构,并判定其是否与其它规则冲突。此分组将包含上述数据结构中所使用的每个参数的信息。在例子中,每个分组将需要目的地地址和掩码源地址和掩码一般来说,参数无数量限制。
每个分组将通过系统,在碰到的每个有标记的节点时被标记。如果没有冲突,它将仅拥有一个号码-那条规则本身的标记。如果有冲突,它将拥有多个标记,且这些标记之间互相冲突。如果标记有与其相关联的不同优先顺序,标记此分组的规则可以被删除,因为它在所有其它规则中有说明。
遍历算法在图6中示出,起始于TopLevel。
规则遍历顺序正确是十分有用的。在图6所示的遍历算法中有两个部分-线性遍历码元的部分以及对数(通过映射)遍历码元的部分。因此,选择分组通过系统的顺序可以尽可能减少线性搜索的数量是有用的。因为数据结构的建立存在顺序,所以应首先消除数据结构中较高码元的线性搜索。为了实现这个目的,使用权重功能来划分哪些规则应被遍历并删除。
首先,决定数据结构建立的顺序。在上述例子中,我们选择以下顺序目的地地址源地址假设p1..pn代表系统中不同的参数(例如,源地址和目的地地址)且数据结构的建立顺序为p1..pn(在我们的例子中,顺序为TopLevel->DestinationAddress->SourceAddress)。与每个p1..pn相关联的掩码,称作m1..mn。假设掩码起于最高有效位中的1并由朝向最低有效位的连续1构成。例如,如下两个掩码有效(假设掩码有4比特宽)1100
1110然而,下面的掩码无效10101101假设,在DestinationAddress的nextMarks_list中有如下掩码1111-映射中有6个码元1110-映射中有3个码元1100-映射中有2个码元0000-映射中有1个码元我们希望尽量减少检查算法中的线性搜索组件。如果选择分组从与1110、1100和0000相关联映射的码元中搜索,它们都需要在列表1111部分的映射上进行线性搜索,因为1110 & 1111!=1111,1100 &1111!=1111且0000 & 1111!=1111(因此,commonMaks!=listMarkt且算法的线性部分被遍历)。这是不希望看到的情景。
而如果我们从列表的1111部分选择分组,6个分组将全部使用映射搜索方法,然后从系统中删除。如果使用1110分组,因为1111规则已被删除,将不必再进行线性搜索。这样,通过很好的分组排序,搜索算法的线性部分不需要再使用。我们的目标是让系统的线性搜索数量降至最低。一个简单的方法是基于m1..mn计算权重。权重越低,从系统中删除分组更有用,可以在最大程度上减少线性搜索数量。下面的函数可用于计算权重。
权重==~m1/w1+~m2/w2+…+~mn/wnw1..wn通常为升序,旨在使系统中的线性搜索数量最小化。这样,掩码值越高,即设定更多位掩码,权重越低,也就越有可能被删除。一般说来,与p1相关联的掩码不仅仅是权重因子,因为数据结构树的上层首先被删除十分有用,因为与树底层相比,他们将被更加频繁地搜索。
选择w1为1,w2为10,6条规则的权重如下规则1权重=0000+0000=0规则2权重=0001+0000=1
规则3权重=0011+0000=3规则4权重=0000+0000=0规则5权重=0001+0000=1规则6权重=0000+0000=0如此,分组遍历顺序将是规则1、规则4、规则6、规则2、规则5、规则3现在让分组通过系统,判定有何冲突。这些冲突将呈现在用户面前,而用户可以重新编写规则或为规则设定优先次序以避免冲突。此中机制前面已有说明,现在针对各种规则检查通过系统的分组以发现冲突。我们将通过系统检查规则1和规则4,以展示系统工作原理。
我们从规则1开始,具有以下分组(目的地地址=1100掩码1111,源地址=1101掩码1111)。
在图2,我们从101位置开始。目的地地址掩码和列表掩码等于列表掩码(1111 & 1111==1111),我们可以使用映射搜索方法找到与位置101相关联的映射。这将带我们去位置102。我们跟着抵达位置104。源地址掩码和列表掩码等于列表掩码(1111 & 1111==1111),因此我们可以使用映射搜索方法。这将带我们去位置105,我们用值1标记此分组。现在,已经取尽树的此分支。转向位置107。目的地地址掩码和列表掩码等于列表掩码(1111 & 1110==1110),我们再次使用映射遍历方法。这带我们去位置109。我们跟着抵达位置112。源地址掩码和列表掩码等于列表掩码(1111 & 1111=1111),因此我们可以使用映射遍历方法。这将带我们去位置113,因此我们用值5标记此分组。现在,我们已经取尽树的此部分,转向位置114。目的地地址掩码和列表掩码等于列表掩码(1111 & 1100=1100),因此我们可再次使用映射遍历方法。不再有更多匹配。
因为此分组被值1和5标记两次,我们可以说规则1和5冲突并向用户报告。
现在从系统中删除此规则获得图3。
注意到204和206之间的码元(以前图2中的105)消失了。现在,规则1已经被删除,我们可以继续让来自规则4的分组通过系统。分组的形式如下(目的地地址=1100掩码1111,源地址=1010掩码1111)在图3,我们从201位置开始。目的地地址掩码和列表掩码等于列表掩码(1111 & 1111==1111),我们可以使用映射搜索方法找到与位置1相关联的映射。这将带我们去位置202。我们跟着抵达位置204。源地址掩码和列表掩码等于列表掩码(1111 & 1111==1111),因此我们可以使用映射搜索方法。这将带我们去位置206,我们用值4标记此分组。现在,已经取尽树的此分支。转向位置207。目的地地址掩码和列表掩码等于列表掩码(1111 & 1110==1110),我们再次使用映射遍历方法。这带我们去位置209。我们跟着抵达位置212。源地址掩码和列表掩码等于列表掩码(1111 & 1111=1111),因此我们可以使用映射遍历方法。不再有匹配,树的此部分已取尽。现在,转向位置214。目的地地址掩码和列表掩码等于列表掩码(1111 & 1100=1100),因此我们可再次使用镜像遍历方法。不再有更多匹配。因为我们只找到一个匹配,规则4与其它规则之间不存在冲突。然后如图4所示,把规则4从系统中删除。注意到205和206之间的码元已经消失,位置204和202之间的码元可以删除。
其它规则如法炮制。以类似方式进行检查后,可以看到检查算法的线性部分根本不需要执行,且只有规则1和5之间有冲突。
权利要求
1.一种实现对信道分离安排中的多个信道定义的模糊性的检查的方法,此类信道由上述安排中的一套规则定义,所述方法包括如下步骤使标记与每条父规则关联;把每条规则解析成子规则,使每条子规则拥有一个或多个仅从如下布尔运算符“与”、等号、或者非中选取的运算符,在相同的子规则中,可以使用任何数量的这些运算符,父规则能够使用“或”布尔运算符结合子规则进行表达,每个子规则与关联于各自的父规则的标记相关联。
2.一种实现对信道分离安排中的多个信道定义的模糊性的检查的方法,此类信道由上述安排中的一套规则定义,所述方法包括如下步骤使标记与每条父规则关联;把每条规则解析成子规则,使每条子规则拥有一个或多个仅从如下布尔运算符“与”、等号、或者非中选取的运算符,在相同的子规则中,可以使用任何数量的这些运算符,父规则能够使用“或”布尔运算符结合子规则进行表达,每个子规则与关联于各自的父规则的标记相关联,把每条子规则输入数据结构,上述结构具有分支安排,其中每个节点是子规则的等号或非等号语句,而节点之间的每个链接是来自子规则的AND操作符,其在结构中的位置仅可通过遍历构成子规则语句的所有节点抵达的节点也包含与此子规则关联的标志,根据每个子规则创建分组,而且该分组的参数设置应使分组满足子规则的要求,将所有其它可能的参数设置为表示无意义的值,然后,让每个分组遍历数据结构,只有当分组中的参数值满足子规则语句的条款时才继续遍历来自节点的链接,并对其进行安排,如果节点包含标志且分组满足此节点内子规则语句条款,则标志与此分组关联,如果分组与多于一个标志关联,造成与这些标志相关联的规则之间的模糊不清,可重新指定这些规则以消除模糊,或者指定不同的优先级。
3.根据权利要求2所述的实现对信道分离安排中的一套规则的模糊性的检查的方法,其特征在于还包括以下步骤在根据上述规则创建的分组遍历了数据结构后,把给定规则从数据结构中删除。
4.根据权利要求3所述的方法,其特征在于还包括以下步骤使用权重因子选择根据规则创建的分组遍历数据结构的顺序,此类因子是条款的汇总,每个条款是通过与规则的参数相关联的掩码逐位取反、除以所选择的因子而创建的数字。
5.一种针对分组交换系统的业务量分路安排,其特征在于使用上述权利要求之一所述的方法检查运算规则。
全文摘要
一种对信道分离安排中的多个信道定义的模糊性进行检查的方法,此类信道由一套规则定义。所述方法包括使标记与每条规则关联;把每条规则解析成子规则,使每条子规则拥有一个或多个仅从如下布尔运算符“与”、等号、或者非中选取的运算符,在相同的子规则中,可以使用任何数量的这些运算符,父规则能够使用“或”布尔运算符结合子规则进行表达,每个子规则与关联于各自的父规则的标记相关联。
文档编号H04L12/56GK1618218SQ02827686
公开日2005年5月18日 申请日期2002年11月29日 优先权日2001年11月30日
发明者埃米尔·蒂勒, 奇·肯特·拉姆 申请人:进扬网绩有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1