本发明涉及通信,尤其涉及一种flowspec规则优先级确定方法及设备。
背景技术:
1、bgp flowspec是一种利用bgp更新报文中携带的流信息,将流量过滤规则传递到bgp对端,以达到在bgp对端对报文进行匹配过滤的技术。具体的,利用某种转换方法,将本地配置的规则封装在bgp更新报文中,并发送到bgp对端;bgp对端通过接收并解析报文,还原出原始配置的规则,并利用rfc提供的flowspec规则优先级比较算法,确定规则间的优先级顺序。
2、其中,rfc提供的flowspec规则优先级比较算法是对不同规则对应的bgp更新报文里的二进制串整体进行比较的。一旦厂商不按照规定的格式封装bgp更新报文,则会导致这种优先级比较方法失效。
技术实现思路
1、本发明的主要目的在于提供一种flowspec规则优先级确定方法及设备,旨在解决现有技术中只能基于不同规则对应的bgp更新报文里的二进制串整体进行优先级比较的技术问题。
2、第一方面,本发明提供一种flowspec规则优先级确定方法,所述flowspec规则优先级确定方法包括:
3、从已存储的flowspec规则中选取目标flowspec规则;
4、将新的flowspec规则与目标flowspec规则在匹配类型层面进行优先级比较,得到第一优先级比较结果;
5、若第一优先级比较结果为优先级相同,则将新的flowspec规则与目标flowspec规则在匹配范围层面进行优先级比较,得到第二优先级比较结果。
6、可选的,所述将新的flowspec规则与目标flowspec规则在匹配类型层面进行优先级比较,得到第一优先级比较结果的步骤包括:
7、检测新的flowspec规则与目标flowspec规则是否均包含第i匹配类型,其中第i匹配类型为在预设匹配类型组中排在第i位的匹配类型,预设匹配类型组包含p个匹配类型,且各个匹配类型按照优先级从高到低的顺序排列,i的初始值为1;
8、若新的flowspec规则包含第i匹配类型,目标flowspec规则不包含第i匹配类型,则第一优先级比较结果为新的flowspec规则的优先级高于目标flowspec规则的优先级;
9、若新的flowspec规则不包含第i匹配类型,目标flowspec规则包含第i匹配类型,则第一优先级比较结果为目标flowspec规则的优先级高于新的flowspec规则的优先级;
10、若均包含第i匹配类型或均不包含第i匹配类型,则检测i是否小于p;
11、若小于p,则以i+1作为i,并返回检测新的flowspec规则与目标flowspec规则是否均包含第i匹配类型的步骤;
12、若不小于p,则第一优先级比较结果为优先级相同。
13、可选的,所述将新的flowspec规则与目标flowspec规则在匹配类型层面进行优先级比较,得到第一优先级比较结果的步骤包括:
14、将新的flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型ti与目标flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型t'i进行比较,其中,i的初始值为1,i的值越小对应的优先级越高;
15、若ti的优先级高于t'i的优先级,则第一优先级比较结果为新的flowspec规则的优先级高于目标flowspec规则的优先级;
16、若t'i的优先级高于ti的优先级,则第一优先级比较结果为目标flowspec规则的优先级高于新的flowspec规则的优先级;
17、若ti的优先级与t'i的优先级一致,则检测i是否小于p;
18、若小于p,则以i+1作为i,并返回将新的flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型ti与目标flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型t'i进行比较的步骤;
19、若不小于p,则第一优先级比较结果为优先级相同。
20、可选的,所述将新的flowspec规则与目标flowspec规则在匹配范围层面进行优先级比较,得到第二优先级比较结果的步骤包括:
21、将新的flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型ti对应的匹配范围与目标flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型t'i对应的匹配范围进行比较,其中,i的初始值为1,i的值越小对应的优先级越高;
22、若ti对应的匹配范围的优先级高于t'i对应的匹配范围的优先级,则第二优先级比较结果为新的flowspec规则的优先级高于目标flowspec规则的优先级;
23、若t'i对应的匹配范围的优先级高于ti对应的匹配范围的优先级,则第二优先级比较结果为目标flowspec规则的优先级高于新的flowspec规则的优先级;
24、若ti对应的匹配范围的优先级与t'i对应的匹配范围的优先级一致,则检测i是否小于p;
25、若小于p,则以i+1作为i,并返回将新的flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型ti对应的匹配范围与目标flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型t'i对应的匹配范围进行比较的步骤;
26、若不小于p,则第二优先级比较结果为优先级相同。
27、可选的,所述将新的flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型ti对应的匹配范围与目标flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型t'i对应的匹配范围进行比较的步骤包括:
28、将新的flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型ti对应的k个匹配范围中匹配值排在第n位的匹配范围vn与目标flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型t'i对应的k个匹配范围中匹配值排在第n位的匹配范围v'n进行比较,其中,n的初始值为1,n的值越小对应的匹配值越大;
29、若vn的优先级高于v'n的优先级,则确认ti对应的匹配范围的优先级高于t'i对应的匹配范围的优先级;
30、若v'n的优先级高于vn的优先级,则确认t'i对应的匹配范围的优先级高于ti对应的匹配范围的优先级;
31、若vn的优先级与v'n的匹配范围的优先级一致,则检测n是否小于k;
32、若小于k,则以n+1作为n,并返回将新的flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型ti对应的k个匹配范围中匹配值排在第n位的匹配范围vn与目标flowspec规则包含的p个匹配类型中优先级排在第i位的匹配类型t'i对应的k个匹配范围中匹配值排在第n位的匹配范围v'n进行比较的步骤;
33、若不小于k,则确认ti对应的匹配范围的优先级与t'i对应的匹配范围的优先级一致。
34、可选的,vn包含结束属性标识字段en、逻辑关系标识字段an、数值大小关系标识字段rn以及数值标识字段vn,v'n包含结束属性标识字段e'n、逻辑关系标识字段a'n、数值大小关系标识字段r'n以及数值标识字段v'n,将vn与v'n进行比较的步骤包括:
35、将en与e'n进行比较;
36、若en的优先级高于e'n的优先级,则确认vn的优先级高于v'n的优先级;
37、若e'n的优先级高于en的优先级,则确认v'n的优先级高于vn的优先级;
38、若en的优先级等于e'n的优先级,则将an与a'n进行比较;
39、若an的优先级高于a'n的优先级,则确认vn的优先级高于v'n的优先级;
40、若a'n的优先级高于an的优先级,则确认v'n的优先级高于vn的优先级;
41、若an的优先级等于a'n的优先级,则将rn与r'n进行比较;
42、若rn的优先级高于r'n的优先级,则确认vn的优先级高于v'n的优先级;
43、若r'n的优先级高于rn的优先级,则确认v'n的优先级高于vn的优先级;
44、若rn的优先级等于r'n的优先级,则将vn与v'n进行比较;
45、若vn的优先级高于v'n的优先级,则确认vn的优先级高于v'n的优先级;
46、若v'n的优先级高于vn的优先级,则确认v'n的优先级高于vn的优先级;
47、若vn的优先级等于r'n的优先级,则确认vn的优先级与v'n的优先级一致。
48、可选的,所述从已存储的flowspec规则中选取目标flowspec规则的步骤包括:
49、以二叉排序树的根节点对应的flowspec规则为目标flowspec规则,其中,所述二叉排序树基于已存储的flowspec规则的优先级顺序构建;
50、从已存储的flowspec规则中选取目标flowspec规则。
51、可选的,在所述得到第二优先级比较结果的步骤之后,还包括:
52、基于二叉排序树的插入方法结合第二优先级比较结果,从二叉排序树当前轮目标节点的左右子树中找到下一轮目标节点;
53、以所述下一轮目标节点对应的flowspec规则为目标flowspec规则,返回从已存储的flowspec规则中选取目标flowspec规则的步骤,直至确定新的flowspec规则在已存储的flowspec规则中的优先级顺序;
54、存储所述新的flowspec规则;
55、根据新的flowspec规则在已存储的flowspec规则中的优先级顺序更新二叉排序树。
56、可选的,所述flowspec规则优先级确定方法应用于转控分离架构的转发侧,在所述从已存储的flowspec规则中选取目标flowspec规则的步骤之前,还包括:
57、接收控制平面下发的新的flowspec规则。
58、第二方面,本发明还提供一种flowspec规则优先级确定设备,所述flowspec规则优先级确定设备包括:
59、选取模块,用于从已存储的flowspec规则中选取目标flowspec规则;
60、第一比较模块,用于将新的flowspec规则与目标flowspec规则在匹配类型层面进行优先级比较,得到第一优先级比较结果;
61、第二比较模块,用于若第一优先级比较结果为优先级相同,则将新的flowspec规则与目标flowspec规则在匹配范围层面进行优先级比较,得到第二优先级比较结果。
62、本发明中,从已存储的flowspec规则中选取目标flowspec规则;将新的flowspec规则与目标flowspec规则在匹配类型层面进行优先级比较,得到第一优先级比较结果;若第一优先级比较结果为优先级相同,则将新的flowspec规则与目标flowspec规则在匹配范围层面进行优先级比较,得到第二优先级比较结果。通过本发明,基于flowspec规则本身进行优先级比较,不需要bgp更新报文,使得厂家可以任意修改bgp更新报文的封装格式,且不影响优先级比较结果。