使用端口号掩码对数据流进行分类的方法及系统的制作方法

文档序号:7797091阅读:468来源:国知局
使用端口号掩码对数据流进行分类的方法及系统的制作方法
【专利摘要】本发明涉及数据流分类技术。本发明公开了一种使用端口号掩码对数据流进行分类的方法,包括步骤:A、将已知端口号范围SrcP~DstP划分成N个分段SrcPn~DstPn,每个分段对应一个端口号掩码,其中N为大于等于1的整数,N个分段对应N个分类;B、提取数据流中的端口号P,将P和第m个分段的端口号掩码Wm执行或操作,得到端口号Ym;将第m个分段的端口号掩码Wm和该分段的起始端口号执行或操作,得到端口号Xm;其中m从1开始,其取值范围为1~N;C、若Ym=Xm,则所述数据流属于第m个端口分段范围和该段对应分类;若依次遍历N个分段均为Ym≠Xm,则所述数据流不属于N个分类中的任何一类。本发明同时公开了使用端口号掩码对数据流进行分类的系统。本发明可提高开局或维护人员现场环境配置效率,降低维护成本。
【专利说明】使用端口号掩码对数据流进行分类的方法及系统
【技术领域】
[0001]本发明涉及数据通信领域的数据流分类技术,尤其涉及一种使用端口号掩码对数据流进行分类的配置方法。
【背景技术】
[0002]数据通信网络中将流经某点的一组数据报文称为一个数据流。在数据通信领域要增强网络安全性、提升服务质量、实施路由策略等应用时,不可避免会涉及到数据流的分类处理。数据流分类主要是基于数据流本身包含的二层(数据链路层)、三层(网络层)或四层(传输层)信息进行过滤筛选。其中,四层信息主要是使用TCP/UDP (Transmission ControlProtocol/User Datagram Protocol)端口号并配合端口号掩码进行数据流的分类。
[0003]数据流的端口号取值范围通常为:0?65535。其中,O?1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而1024?65535是没有公共定义的端口号,用户可以自己定义这些端口号的作用。使用端口号进行数据流分类时,端口号掩码可用于标志一个或几个端口号属于同一类型,其取值范围与端口号相同。将端口通配符掩码转换成16个比特位的二进制后,掩码位上的O表示:相应的位必须匹配;掩码位上的I表示:相应的位可以被忽略,不用检查。例如,端口通配符掩码15转换成二进制为0000000000001111,表示只比较端口号转换成二进制数后的前12位。
[0004]目前使用端口号和端口号掩码进行数据流分类的方法如下:
[0005]预先设定一个端口号P和一个端口号掩码W ;
[0006]将端口号P和端口号掩码W做或运算,得到一个端口号X ;
[0007]用数据流中的端口号PF和端口号掩码W做或运算,得到一个端口号Y ;
[0008]若Y等于X,则该数据流属于符合条件的一类,对于该类数据流可统一执行过滤,或提供有差别的服务等。
[0009]现有的数据流分类方法需要预先设定端口号掩码和端口号,但在实际的应用场景中,往往是用户根据现场情况要求对特定的端口号范围进行数据流分类。按照上述的数据流分类方法,需预先配置相应的端口号和端口号掩码。而且在实际的应用场景中,配置一个端口号和其对应的端口号掩码通常无法覆盖已知的端口号范围,需重复设置多个,计算过程复杂,对配置结果的正确性和配置效率都会造成影响。
[0010]这种使用预先设定端口号掩码和端口号进行数据流分类的方法,在实际应用场景中无法直接使用,导致开局或维护人员现场环境配置效率低下,正确性无法保证,增加维护成本。
【发明内容】

[0011]针对现有技术的上述问题,本发明的目的是,提供一种使用端口号掩码对数据流进行分类的方法,利用端口分段提高掩码覆盖的端口号范围,简化设置和计算过程。
[0012]本发明解决所述技术问题,采用的技术方案是,使用端口号掩码对数据流进行分类的方法,包括如下步骤:
[0013]A、将已知端口号范围SrcP?DstP划分成N个分段SrcPn?DstPn,每个分段对应一个端口号掩码,其中N为大于等于I的整数,N个分段对应N个分类;
[0014]B、提取数据流中的端口号P,将P和第m个分段的端口号掩码Wm执行或操作,得到端口号Ym;将第m个分段的端口号掩码Wm和该分段的起始端口号执行或操作,得到端口号Xm;其中m从I开始,其取值范围为I~N;
[0015](:、若Ym= Xm,则所述数据流属于第m个端口分段范围和该段对应分类;若依次遍历N个分段均为Ym Φ Xffl,则所述数据流不属于N个分类中的任何一类。
[0016]进一步的,所述N个分类执行不同的处理动作。
[0017]具体的,所述处理动作包括对数据流进行过滤或提供有差别的服务或实施路由策略。
[0018]优选的,所述端口号和端口号掩码表示为16位二进制数。
[0019]具体的,所述步骤A具体包括步骤:
[0020]Al、令StartP为所述已知端口号范围的起始端口 ;
[0021]A2、$Wi=2k-l,k为整数,从I开始,将Wi取反后和所述已知端口号范围的起始值StartP执行与操作,得到端口号SrcPi ;
[0022]八3、将Wi和所述已知端口号范围的起始值StartP执行或操作,得到端口号DstPi;
[0023]A4、逐渐递增k,直到端口号范围SrcPi~DstPi超出所述已知端口号范围StartP~DstP,此时以1=2^1执行步骤A2的操作得到SrcPi,执行步骤A3的操作得到DstPi7SrcPi~DstPi就是已知 端口号范围SrcP~DstP内的第i个分段,且1=2^-1就是该分段对应的端口号掩码;
[0024]A5、设置StartP为DstPi加1,若StartP超出已知端口号范围上限则结束步骤A ;否则,令Wi+1=2k-l,k从I开始,继续对剩余分段StartP~DstP执行步骤A2~A4来划分第i+Ι个分段,直至StartP超出已知端口号范围上限DstP,结束步骤A ;
[0025]其中,i为从I开始的整数。
[0026]本发明的另一个目的是,提供一种使用端口号掩码对数据流进行分类的系统,包括端口分段模块、端口提取模块、掩码运算模块和比较模块,
[0027]所述端口分段模块,用于将已知端口号范围SrcP~DstP划分成N个分段SrcPn~DstPn,每个分段对应一个端口号掩码,其中N为大于等于I的整数,N个分段对应N个分类;
[0028]所述端口提取模块,用于提取数据流中的端口号P,将P和第m个分段的端口号掩码Wm执行或操作,得到端口号Ym;
[0029]所述掩码运算模块,用于将第m个分段的端口号掩码Wm和该分段的起始端口号SrcPm执行或操作,得到端口号Xm ;
[0030]所述比较模块,用于比较Ym和Xm,若Ym = Xm,则所述数据流属于第m个端口分段范围和该段对应分类;若依次遍历N个分段均有Ym Φ Xffl,则所述数据流不属于N个分类中的任何一类,
[0031]其中,m从I开始,其取值范围为I~N。
[0032]进一步的,所述N个分类执行不同的处理动作。
[0033]具体的,所述处理动作包括对数据流进行过滤或提供有差别的服务或实施路由策略。
[0034]优选的,所述端口号和端口号掩码表示为16位二进制数。[0035]具体的,所述端口分段模块包括,掩码生成单元和端口号划分单元;
[0036]所述掩码生成单元,用于求取各分段掩码;
[0037]所述端口号划分单元,用于求取各个分段的起始端口号和终止端口号,具体用于:
[0038]令StartP为所述已知端口号范围SrcP~DstP起始端口 ;
[0039]$Wi=2k-l,k为整数,从I开始,将Wi取反后和所述已知端口号范围的起始值StartP执行与操作,得到端口号SrcPi ;
[0040]将Wi和端口号范围的起始值StartP执行或操作,得到端口号DstPi ;
[0041]逐渐递增k,直到端口号范围SrcPi~DstPi超出范围StartP~DstP,此时以WpH-UfWi取反后和所述已知端口号范围的起始值StartP执行与操作,得到端口号SrCPi,将Wi和所述已知端口号范围的起始值StartP执行或操作,得到端口号DstPi,SrcPi~DstPi就是已知端口号范围SrcP~DstP内的第i个分段,且1=2^-1就是该分段对应的端口号掩码;
[0042]设置StartP为DstPi加1,若StartP未超出已知端口号范围上限DstP,则结束分段划分;否则,令Wi+1=2k-l,k从I开始,继续对剩余分段StartP~DstP划分第i+Ι个分段,直至StartP超出已知端口号范围上限DstP,结束分段划分;
[0043]其中,i从I开始。
[0044]本发明的有益效果是,可直接对已知端口号范围配置合理的端口号掩码用于数据流的分类处理。具有操作简`单,功能稳定的特点。可提高开局或维护人员现场环境配置效率,降低维护成本。本发明可在增强网络安全性、提升服务质量、实施路由策略等应用中进行数据流分类时使用。
【专利附图】

【附图说明】
[0045]图1是使用端口号掩码对已知端口号范围进行数据流分类处理流程图;
[0046]图2是将端口号范围划分子段且每个分段配置一个端口号掩码的处理流程图;
[0047]图3是系统结构示意图。
【具体实施方式】
[0048]下面结合附图及【具体实施方式】,详细描述本发明的技术方案。
[0049]本发明所述方法的工作原理为:
[0050]数据流的端口号取值范围为:0~65535,端口号掩码的取值范围与端口号的相同,通常表示为16位二进制数字。根据端口号掩码的定义:
[0051]掩码位上的O表示:相应的位必须匹配;掩码位上的I表示:相应的位可以被忽略,不用检查。
[0052]具有如下规律:
[0053]a)若端口号掩码W须表示一段连续的端口范围,其转换后的二进制数中,从最后一个比特位开始必然有连续N个比特位均为I,转换为十进制则端口号掩码W等于2的η次幂减1,即W=2n-1。
[0054]b)对于已知的端口号掩码W及其配对的端口号范围SrcP~DstP,均满足:SrcP=SrcP&(~W), DstP=SrcP|W。其中“&”表示与操作;“~”表示取反操作;“|”表示或操作;这些操作均为对相应二进制数的操作。SrcP表示起始端口号;DstP表示终止端口号。
[0055]例如:通配符掩码W为15 (对应的二进制为0000000000001111),与其配对的端口号范围SrcP~DstP为16~31,即SrcP=16,DstP=31。将W取反(对应的二进制为1111111111110000)后和端口号范围的起始端口 16 (对应的二进制为0000000000010000)执行与操作,得到端口值为16,和已知范围的起始端口 16相同。将W和起始端口 16 (对应的二进制为0000000000010000)执行或操作,得到端口值为31 (对应的二进制为0000000000011111),和已知范围的终止端口 31相同。
[0056]因此,只要端口号掩码W从2的η次幂减I开始(η的初始值为I ),和已知端口号范围的起始值SrcP满足条件b),就可逐渐递增n,直到找到满足条件b)的最大范围时,该范围就是已知端口范围内的一个分段。
[0057]在实际的应用场景中,配置一个端口号掩码通常无法覆盖已知的端口号范围,需对已知的端口号范围按上述方法划分成多个分段。当数据流中的端口号P和端口号掩码W执行或操作的结果,等于端口范围起始端口和端口号掩码W执行或操作的值,表示数据流中的端口号P在该端口范围内,应执行该端口范围规定的对数据流的处理动作。
[0058]实施例
[0059]假设已知端口号范围为1200~1216,即SrcP=1200,DstP=1216。要求对该端口范围内的数据流统一执行过滤处理,实现过程如图1和图2所示,包括步骤如下:
[0060]I)将已知端口号范围1200~1216划分成2个分段,具体步骤包括:
[0061]1.1)令 W1=Z1-1 (对应的 16 位二进制数为 0000000000000001),StartP 为原始端口号范围起始端口 SrcP=1200 ;
`[0062]1.2)将1取反(对应的16位二进制数为1111111111111110),和StartP (对应的16位二进制数为0000010010110000)执行与操作,得到端口号SrcP1为1200 (对应的16位二进制数为 0000010010110000);
[0063]1.3)将 W1 (对应的 16 位二进制数为 0000000000000001)和 StartP (对应 16 位二进制数为0000010010110000)执行或操作,得到端口号DstP1为1201 (对应16位二进制数为0000010010110001),即k为I时,对应分段范围SrcP1~DstP1为1200~1201 ;
[0064]1.4)逐渐递增k,依次获得分段范围SrcP1~DstP1为:1200~1203 (k为2时)、1200 ~1207 (N 为 3 时)、1200 ~1215 (k 为 4 时)、1184 ~1215 (k 为 5 时)。由于 1184 ~1215超出已知的端口号范围1200~1216,所以令k=k-l (即当k为4时),Α=24_1 (对应十进制数为15)。以此W1=M执行步骤1.2)的操作得到SrcP1=UOO,执行步骤1.3)的操作得到DstP1=^lS0 SrcP1~DstP1 (1200~1215)就是已知端口号范围1200~1216内的第I个分段范围,该分段范围SrcP1~DstP1 (1200~1215)对应的端口号掩码即为W1=M ;
[0065]1.5)设置StartP为DstP1加1,即StartP为1216,由于StartP未超出已知端口号范围上限1216,令W2=Z1-1,继续执行步骤1.2),当执行至步骤1.3)时,发现SrcP2~DstP2为1216~1217,超出已知剩余端口范围1216~1216,令k=k_l,此时W2=2°_l (对应十进制数为0),就是已知端口号范围1200~1216内第2个分段SrcP2~DstP2 (1216~1216)对应的端口号掩码;
[0066]1.6)设置 StartP 为 DstP2W 1,即 StartP 为 1217,由于 StartP 超出已知端口号范围上限1216,分段结束。
[0067]2)假设提取数据流中的端口号P等于1216 (对应的16位二进制数为0000010011000000),将P和第I个分段的端口号掩码W1 (即15)执行或操作,得到端口号Υ!=1231 ;
[0068]3)将第I个分段1200~1215的端口号掩码W1和该分段的起始端口号SrcP1=UOO进行或操作,得到端口号Xi=1215 ;
[0069]4)由于Y1和X1不相等,选择第2个分段1216~1216,继续执行步骤2),数据流中的端口号P和第2个分段的端口号掩码W2 (即O)进行或操作,得到端口号Y2=1216。第2个分段1216~1216的端口号掩码W2和该分段的起始端口号1216进行或操作,得到端口号 X2=1216 ;
[0070]5)由于Y2和X2相等,表示该数据流属于第2个端口分段范围,可按已知端口分段范围1200~1216内的这类报文执行统一的过滤处理。
[0071]本发明使用端口号掩码对数据流进行分类的系统,结构如图3所示,包括端口分段模块、端口提取模块、掩码运算模块和比较模块。
[0072]所述端口分段模块,用于将已知端口号范围SrcP~DstP划分成N个分段SrcPn~DstPn,每个分段对应一个端口号掩码,其中N为大于等于I的整数,N个分段对应N个分类。所述端口分段模块包括,掩码生成模块和端口号划分模块。
[0073]所述掩码生成模块,用于求取各分段掩码;
[0074]所述端口号划分模块,用于求取各个分段的起始端口号和终止端口号。
`[0075]具体为:
[0076]k为整数,从I开始,StartP为原始端口号范围起始端口 SrcP ;
[0077]将Wi取反后和端口号范围的起始值StartP执行与操作,得到端口号SrcPi ;
[0078]将Wi和端口号范围的起始值StartP执行或操作,得到端口号DstPi ;
[0079]逐渐递增k,直到端口号范围SrcPi~DstPi超出范围StartP~DstP,此时以1=2Η-1执行步骤1.2)的操作得到SrcPi,执行步骤1.3)的操作得到DstPpSrcPi~DstPi就是已知端口号范围SrcP~DstP内的第i个分段,且1=2Η-1就是该分段对应的端口号掩码。
[0080]设置StartP为DstPi加1,若StartP超出已知端口号范围上限DstP则结束步骤I);否则,令Wi+pk-l,k从I开始,继续对剩余分段StartP~DstP执行步骤1.2)~1.4)来划分第i+Ι个分段,直至StartP超出已知端口号范围上限DstP,结束步骤I)。
[0081]其中,i为从I开始的整数。
[0082]所述端口提取模块,用于提取数据流中的端口号P,将P和第m个分段的端口号掩码Wm执行或操作,得到端口号Ym,m从I开始,其取值范围为I~N。
[0083]所述掩码运算模块,用于将第m个分段的端口号掩码Wm和该分段的起始端口号SrcPm执行或操作,得到端口号Xm,m从I开始,其取值范围为I~N。
[0084]所述比较模块,用于比较Ym和Xm,若Ym = Xm,则所述数据流属于第m个端口分段范围和该段对应分类;若依次遍历N个分段均有Ym Φ Xffl,则所述数据流不属于N个分类中的任何一类,m从I开始,其取值范围为I~N。
[0085]所述N个分类执行不同的处理动作。[0086]所述处理动作包括对数据流进行过滤或提供有差别的服务或实施路由策略。
[0087]所述端口号和端口号掩码表示为16位二进制数。
【权利要求】
1.使用端口号掩码对数据流进行分类的方法,包括如下步骤: A、将已知端口号范围SrcP~DstP划分成N个分段SrcPn~DstPn,每个分段对应一个端口号掩码,其中N为大于等于I的整数,N个分段对应N个分类; B、提取数据流中的端口号P,将P和第m个分段的端口号掩码Wm执行或操作,得到端口号¥?> ;将第m个分段的端口号掩码Wm和该分段的起始端口号执行或操作,得到端口号Xm ;其中m从I开始,其取值范围为I~N; (:、若Ym = Xm,则所述数据流属于第m个端口分段范围和该段对应分类;若依次遍历N个分段均为Ym幸Xffl,则所述数据流不属于N个分类中的任何一类。
2.根据权利要求1所述的使用端口号掩码对数据流进行分类的方法,其特征在于,所述N个分类执行不同的处理动作。
3.根据权利要求2所述的使用端口号掩码对数据流进行分类的方法,其特征在于,所述处理动作包括对数据流进行过滤或提供有差别的服务或实施路由策略。
4.根据权利要求1所述的使用端口号掩码对数据流进行分类的方法,其特征在于,所述端口号和端口号掩码表示为16位二进制数。
5.根据权利要求1所述的使用端口号掩码对数据流进行分类的方法,其特征在于,所述步骤A具体包括步骤: Al、令StartP 为所述已知端口号范围的起始端口 ; A2、$Wi=2k-l,k为整数,从I开始,将Wi取反后和所述已知端口号范围的起始值StartP执行与操作,得到端口号SrcPi ; A3、将Wi和所述已知端口号范围的起始值StartP执行或操作,得到端口号DstPi ; A4、逐渐递增k,直到端口号范围SrcPi~DstPi超出所述已知端口号范围StartP~DstP,此时以Α=2Η-1执行步骤Α2的操作得到SrcPi,执行步骤A3的操作得到DstPi,SrcPi~DstPi就是已知端口号范围SrcP~DstP内的第i个分段,且1=2^-1就是该分段对应的端口号掩码; A5、设置StartP为DstPi加1,若StartP超出已知端口号范围上限则结束步骤A ;否则,令Wi+1=2k-l,k从I开始,继续对剩余分段StartP~DstP执行步骤A2~A4来划分第i+1个分段,直至StartP超出已知端口号范围上限DstP,结束步骤A ; 其中,i为从I开始的整数。
6.使用端口号掩码对数据流进行分类的系统,包括端口分段模块、端口提取模块、掩码运算模块和比较模块, 所述端口分段模块,用于将已知端口号范围SrcP~DstP划分成N个分段SrcPn~DstPn,每个分段对应一个端口号掩码,其中N为大于等于I的整数,N个分段对应N个分类; 所述端口提取模块,用于提取数据流中的端口号P,将P和第m个分段的端口号掩码Wm执行或操作,得到端口号Ym; 所述掩码运算模块,用于将第m个分段的端口号掩码Wm和该分段的起始端口号SrcPm执行或操作,得到端口号Xm; 所述比较模块,用于比较Ym和Xm,若Ym = Xffl,则所述数据流属于第m个端口分段范围和该段对应分类;若依次遍历N个分段均有Ym Φ Xffl,则所述数据流不属于N个分类中的任何一类,其中,m从I开始,其取值范围为I~N。
7.根据权利要求6所述的使用端口号掩码对数据流进行分类的系统,其特征在于,所述N个分类执行不同的处理动作。
8.根据权利要求7所述的使用端口号掩码对数据流进行分类的系统,其特征在于,所述处理动作包括对数据流进行过滤或提供有差别的服务或实施路由策略。
9.根据权利要求6所述的使用端口号掩码对数据流进行分类的系统,其特征在于,所述端口号和端口号掩码表示为16位二进制数。
10.根据权利要求6所述的使用端口号掩码对数据流进行分类的系统,其特征在于,所述端口分段模块包括,掩码生成单元和端口号划分单元; 所述掩码生成单元,用于求取各分段掩码; 所述端口号划分单元,用于求取各个分段的起始端口号和终止端口号,具体用于: 令StartP为所述已知端口号范围SrcP~DstP起始端口 ; 令1=2、1,k为整数,从I开始,将Wi取反后和所述已知端口号范围的起始值StartP执行与操作,得到端口号SrcPi ; 将Wi和端口号范围的起始值StartP执行或操作,得到端口号DstPi ; 逐渐递增k,直到端口号 范围SrcPi~DstPi超出范围StartP~DstP,此时以Wi=Zlrf-1,将Wi取反后和所述已知端口号范围的起始值StartP执行与操作,得到端口号SrcPi,将Wi和所述已知端口号范围的起始值StartP执行或操作,得到端口号DstPi, SrcPi~DstPi就是已知端口号范围SrcP~DstP内的第i个分段,且1=2Η-1就是该分段对应的端口号掩码; 设置StartP为DstPi加1,若StartP未超出已知端口号范围上限DstP,则结束分段划分;否则,令Wi+1=2k-l,k从I开始,继续对剩余分段StartP~DstP划分第i+1个分段,直至StartP超出已知端口号范围上限DstP,结束分段划分; 其中,i从I开始。
【文档编号】H04L12/24GK103780435SQ201410054853
【公开日】2014年5月7日 申请日期:2014年2月18日 优先权日:2014年2月18日
【发明者】刘谦 申请人:迈普通信技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1