一种网络上随机包间隔采样的方法和系统的制作方法

文档序号:7964281阅读:229来源:国知局
专利名称:一种网络上随机包间隔采样的方法和系统的制作方法
技术领域
本发明涉及网络技术领域,尤其涉及一种网络上随机包间隔采样的方法和系统。
背景技术
在网络中,为得到网络攻击检测的结果或者进行相应的网络流的计费,在路由器上对流量中的包进行分类的基础上,需要对相应的分出来的流进行采样,路由器可以再将采样的结果发送给专门的服务器进行分析统计;采样的结果还可以用来分析性能,观看新的应用的负载或者流量,从而有效配置规划网络资源。对相应流的包的采样提取,可以采用固定包间隔或固定时间间隔的方法,也可以采用随机包间隔或随机时间间隔的方法,前者是指隔一定的包间隔或者隔一定的时间间隔来复制一个包出来,具有固定特征或者固定周期。对于固定包间隔或者固定时间间隔的采样,如果特征包的周期与采样周期正好相同,那么采样包只能反映网络流量的固定特征,而采用随机包间隔可以弥补这个缺点。
现有技术中,采用随机包间隔采样的方法对网络流中的包进行采样,随机包间隔的选取方法为用计数器进行包的到达计数,当计数器累加到一个随机数时,选取当前到达的包进行采样。参见图1,上述实现随机包间隔采样的方法具体流程包括步骤101~步骤102网络包到达,包间隔计数器加一;步骤103~步骤104读取包间隔计数器和预置的间隔参数interpacket,判断包间隔计数器是否大于等于预置的包间隔参数,如果是,则进入步骤105,如果否,则进入步骤109;其中,预置的间隔参数interpaket=n-oldrand+newrand,其中n为欲达到的平均包间隔,oldrand为上次满足采样条件执行采样前存储的随机数,newrand为每次采样满足条件执行采样前,通过硬件新产生的随机数(下次包处理时将被读取用作oldrand);步骤105~步骤107读取上次的随机数oldrand,产生1到n之间的随机数newrand,将newrand存储于oldrand处,从新计算获得新的包间隔参数并将新包间隔存储于inerpacket处,将包到达计数器清零;步骤108采样包信息或复制该包,发到慢处理器;步骤109对包转发处理后,换出线程等待下一次包处理。
上述方法中,可以精确实现欲达到的平均n个包随机选一个包采样,但是,由于该方法中,当多个任务并行处理包时,随机数很小包到达很快时多个任务处理很难做到同步,在包间隔参数inerpacket与计数器比较的同时,后来的包使得计数器已经累加进去而此时采样的包还没有来得及清零,等到清零时就已经把计数器后来增加的计数给清掉了。例如,当随机数小于100时,以现在T比特的路由器处理速度,如果是多线程处理采样算法,那么可能会有多个线程累加计数,然而当包到达很快时,并行处理包的多个线程很难做到同步,第一个线程在读取计数器时为n,后面又有m个线程在并行执行,那么第一个线程更新计数器时会发现计数器已经为n+m的值,此时清零重计数,实际上是从n+m个包重新计数了,相当于把中间m个包的计数清掉了。从而导致包处理的间隔有偏差,而且这个偏差导致整个采样不可预测。
另外,上述方法中,需要存储并读取随机数,需要刷新包到达计数器,将计数器与随机数进行比较,这样不但费时间而且整体结构复杂。

发明内容
为解决上述问题,本发明提供一种网络上随机包间隔采样的方法和系统,以使得包处理间隔更为准确,整体结构更为简单。
为实现上述目的,本发明提供了一种网络上随机包间隔采样的方法,该方法包括步骤A接收网络上到达的包;
步骤B产生0到预置掩码N之间的随机数;步骤C当判断得到随机数小于预置的第一门限值,则对接收的包采样。
其中,该方法中所述的第一门限值为预置的掩码N与需要采样的平均包间隔n相除获得的结果值取整后的值。
其中,步骤A进一步包括对接收的包进行计数;步骤C进一步包括如果判断得到随机数不小于第一门限值,则进一步,在所接收的包的个数大于需要采样的平均包间隔n的两倍时,对接收的包进行采样。
其中,该方法中,在所接收的包的个数大于需要采样的平均包间隔n的两倍而对接收的包进行采样时,进一步包括过采计数器加一;该方法中,判断得到随机数小于第一门限值时,进一步包括判断随机数是否小于预置的第二门限值,且过采计数器大于零,如果是,过采计数器减一后,不对接收的包采样,如果否,则对接收的包进行采样。
其中,该方法中,所述的第二门限值为第一门限值与一正整数m相除的结果值取整后的值。
其中,该方法中所述的正整数m为4。
其中,该方法进一步包括步骤D将接收的包经转发处理后发送出去。
本发明提供了一种网络上随机包间隔的采样系统,该系统包括包接收模块、转发内存、包处理模块,其中包接收模块,用于接收对应流的包,通知包处理模块;转发内存,存放包接收模块发送的包;
包处理模块,用于从转发内存中读取到达的包,产生随机数,并在判断得到随机数小于预置的第一门限值时,对接收的包进行采样。
其中,转发内存包括静态随机存储器、动态随机存储器,其中静态随机存储器,存储预置的掩码和预置的第一门限值和第二门限值;动态随机存储器,用于存放包接收模块发送的包。
其中,该系统中,进一步包括静态存储器,进一步用于存储用于对接收的包计数的包计数器;包处理模块,如果判断得到随机数不小于预置的第一门限值,则进一步,在所接收的包的个数大于需要采样的平均包间隔n的两倍时,对接收的包进行采样。
其中,静态存储器,进一步用于存储过采计数器;包处理模块,在判断随机书小于预置第一门限值时,进一步,在随机数小于预置的第二门限值,且过采计数器大于零的情况下,不对接收的包采样且对过采计数器减一,否则对接收的包采样;在判断得到所接收的包的个数大于需要采样的平均包间隔n的两倍而对接收的包进行采样时,进一步,对过采计数器加一。
其中,该系统进一步包括包发送模块用于将转发处理后的包发送出去。
以上技术方案可以看出,由于本发明在每到达一个包时系统产生一个随机数,在所产生的随机数满足采样条件时,才对包进行采样处理。在本发明中,随机数rand在0到掩码N之间均匀分布,位于0到掩码N与需要采样的包间隔n相除的结果值之间的可能性为(N/n)/N,每包处理的概率为1/n,即实现每隔n个包处理一次,因此,本发明通过产生随机数,以随机数是否出现在规定的范围内来决定是否对网络上的包采样,不存在线程之间同步读取计数器和更新计数器问题,使采样的包间隔均匀且整体结构简单。
另外,为防止由于随机数的不确定性使得包间隔过大,本发明可在内存中设置一个包到达计数器,在随机数不满足采样条件,但包间隔大于预先设定的固定参数时,也对包进行采样,使得本发明中的随机包采样分隔更均匀,并且,本方案中的包计数器不需要读取并比较随机数,因此,实现更为简单。
进一步,本发明中包计数器的设置,使得包间隔大于预置固定参数而采样,会多出一些采样,因此,本发明中可在内存中设置包计数器的基础之上再设置一个过采计数器,在随机数不满足采样条件但包计数器满足采样条件而多出采样的情况下,过采计数器记录多出的采样情况,而在随机数虽位于规定范围但数值太小且过采计数器大于零的情况下,不进行采样,以使得采样的总数不断趋于预期值。


图1为现有技术随机包间隔采样的方法流程图;图2为本发明第一个实施例中实现随机包间隔采样的流程图;图3为本发明的系统框图;图4为本发明第二个实施利中实现随机包间隔采样的流程图;图5为本发明第三个实施例中实现随机包间隔采样的流程图。
具体实施例方式
本发明为一种在网络上随机包间隔采样的方法和系统,为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并结合具体实施例,对本发明作进一步的详细说明。
首先,对本发明所提供的方法和系统进行总体描述本发明所提供的方法包括步骤a包接收模块将接收到的相应流的包,并将包到达的信息通知包处理模块;步骤b包处理模块读取到达的包,产生0到掩码N之间的随机数rand;步骤c包处理模块判断得到随机数rand小于预置的掩码N与需要采样的平均包间隔n相除获得的结果值所取整后的第一门限值时,采样包信息或复制该包。
本发明所提供的系统包括包接收模块、转发内存、包处理模块、包发送模块,其中包接收模块,用于接收对应流的包,将接收的包发送给转发内存,并通知包处理模块;转发内存,存放包接收模块发送的包以及包的相关属性信息,并存储预置的掩码N和第一门限值;包处理模块,用于从转发内存中读取到达的包,产生随机数,并在判断得到随机数rand小于预置的第一门限值时,对读取的包进行采样;包发送模块,用于将转发处理后的包发送出去。
以下结合具体实施例,对本发明所提供的方法和系统作进一步的详细描述实施例一,参见图2,本发明提供的网络上随机包间隔采样的方法,其具体流程如下步骤201包接收模块将接收到的相应流的包发送给转发内存,并将包到达的信息通知包处理模块;其中,包接收模块将接收的包放在转发内存的动态随机存储器DRAM中,将包的相关属性信息存放在静态随机存储器SRAM中;步骤202包处理模块从转发内存中的动态随机存储器中读取到达的包,并读取转发内存中静态随机存储器SRAM中的掩码N和第一门限值;其中,掩码N是由用户预先设定并保存于SRAM中,n为预先设定的需要采样的平均包间隔,包处理模块读取SRAM中第一门限值,如采用整点运算的情况下,为预置的掩码除以需要采样的平均包间隔n的结果值取整后的值,如采用浮点运算的情况下,为预置的掩码除以需要采样的平均包间隔n的结果值;
步骤203~204包处理模块产生0到N之间的随机数rand,并判断随机数rand是否小于预置的第一门限值,如果是,则执行步骤205,如果不是,则执行步骤206;其中,包处理模块在每读取一个包后产生一个随机数,随机数产生的过程为包处理模块先产生一随机数,该随机数与预置的掩码N进行与操作,最终获得本流程中需要比较的随机数rand,并且,最后获得的随机数rand要求在0到N之间均匀分布;步骤205包处理模块采样包信息或复制该包;步骤206包处理模块读取的包经转发处理后由包发送模块将包发送出去;其中,包处理模块对读取的包的转发处理包括查找路由表、设置出接口和新的报文头,以及把新的报文信息传递给包发送模块,包发送模块通过查找转发内存中报文的相关属性,从路由器相关的物理端口发送报文出去,上述提到的报文就是对应流的包。
参见图3,为实现上述方法所提供的系统包括包接收模块、转发内存、包处理模块、包发送模块,其中包接收模块,用于接收对应流的包,将接收的包发送给转发内存,并通知包处理模块;转发内存,包括动态随机存储器DRAM和静态随机存储器SRAM;其中,动态随机存储器DRAM存放包接收模块发送的包;其中,静态随机存储器SRAM存放包的相关属性信息,并存放用户设定的掩码N以及预置的第一门限值;包处理模块,用于从转发内存中读取到达的包,并读取转发内存中静态随机存储器(SRAM)中的掩码N和第一门限值,产生随机数,并在判断得到随机数小于预置的第一门限值时,对读取的包进行采样,将所读取的包在处理后进行转发处理;
包发送模块,用于将转发处理后的包发送出去。
实施例二,由于随机数的不确定性使得包间隔可能会出现过大的情况,为此,本发明提供了另一实施方案,即在转发内存中设置一个包到达计数器counter,使得采样的包分布比较均匀。
参见图4,该方法具体包括以下步骤步骤401包接收模块将接收到的相应流的包发送给转发内存,并将包到达的信息通知包处理模块;其中,包接收模块将接收的包放在转发内存的动态随机存储器DRAM中,将包的相关属性信息存放在静态随机存储器SRAM中;步骤402包处理模块读取静态随机存储器SRAM中的包计数器counter,并将包计数器加一后写回SRAM;步骤403包处理模块从转发内存中读取到达的包,并读取转发内存中静态随机存储器SRAM中的掩码N和第一门限值;其中,掩码N是由用户预先设定并保存于SRAM中,n为预先设定的需要采样的平均包间隔,包处理模块读取SRAM中第一门限值,如采用整点运算的情况下,为预置的掩码除以需要采样的平均包间隔n的结果值取整后的值,如采用浮点运算的情况下,为预置的掩码除以需要采样的平均包间隔n的结果值;步骤404~405包处理模块产生0到N之间的随机数rand,并判断随机数rand是否小于第一门限值,如果是,则执行步骤407,如果否,则执行步骤406;其中,包处理模块在每读取一个包之后产生一个随机数,产生随机数的过程为包处理模块先产生一随机数,该随机数与预置的掩码N进行与操作,获得本流程中需要比较的随机数rand,并且,最后所获得的随机数rand要求在0到N之间均匀分布;步骤406包处理模块进一步判断所接收包的个数是否大于预先设定的需要采样的平均包间隔n的两倍,如果是,则执行步骤407,如果否,则执行步骤408;步骤407包处理模块采样包信息或复制该包;步骤408包处理模块读取的包经转发处理后由包发送模块将包发送出去;其中,包处理模块对读取的包的转发处理包括查找路由表、设置出接口和新的报文头,以及把新的报文信息传递给包发送模块,包发送模块通过查找转发内存中报文的相关属性,从路由器相关的物理端口发送报文出去,上述提到的报文就是对应流的包。
参见图3,为实现上述方法,本发明提供的系统包括包接收模块、转发内存、包处理模块、包发送模块,其中包接收模块,用于接收对应流的包,将接收的包发送给转发内存,并通知包处理模块;转发内存,包括动态随机存储器DRAM和静态随机存储器SRAM;其中,动态随机存储器DRAM存放包接收模块发送的包;其中,静态随机存储器SRAM存放包的相关属性信息,并存放用户设定的掩码N以及预置的第一门限值,以及包到达计数器counter;包处理模块,用于从转发内存中读取到达的包和包计数器,对包计数器加一后写回转发内存中的SRAM,并读取转发内存中静态随机存储器(SRAM)中的掩码N和第一门限值,产生随机数,判断得到随机数不小于预置的第一门限值,则进一步,在所接收的包的个数大于需要采样的平均包间隔n的两倍时,对接收的包进行采样,判断得到随机数小于预置的第一门限值时,对所接收的包采样,将所读取的包在处理后进行转发处理;包发送模块,用于将转发处理后的包发送出去。
实施例三,上述的第二个实施方法中,为使采样的包分布比较均匀而加入了包计数器couner,当counter大于预先设定的需要采样的平均包间隔n的两倍时,也会对相应流的包进行采样,这样可能会导致采样数偏多,有鉴于此,本发明在转发内存中设置一个过采计数器,使采样的总数趋于预期值。
参见图5,该方法具体步骤为步骤501包接收模块将接收到的相应流的包发送给转发内存,并将包到达的信息通知包处理模块;其中,包接收模块将接收的包放在转发内存的动态随机存储器DRAM中,将包的相关属性信息存放在静态随机存储器SRAM中;步骤502包处理模块读取静态随机存储器SRAM中的包计数器counter,并将包计数器加一后写回SRAM,同时读取过采计数器;步骤503包处理模块从转发内存中读取到达的包,并读取转发内存中静态随机存储器SRAM中的掩码N和第一门限值;其中,掩码N是由用户预先设定并保存于SRAM中,n为预先设定的需要采样的平均包间隔,包处理模块读取SRAM中第一门限值,如采用整点运算的情况下,为预置的掩码除以需要采样的平均包间隔n的结果值取整后的值,如采用浮点运算的情况下,为预置的掩码除以需要采样的平均包间隔n的结果值;步骤504~505包处理模块产生0到N之间的随机数rand,并判断随机数rand是否小于第一门限值,如果是,则执行步骤506,如果否,则执行步骤507;其中,包处理模块在每读取一个包之后产生一个随机数,产生随机数的过程为包处理模块先产生一随机数,该随机数与预置的掩码N进行与操作,获得本流程中需要比较的随机数rand,并且,最终所获得的随机数rand要求在0到N之间均匀分布;步骤506包处理模块进一步判断包计数器是否小于第二门限值,且过采计数器大于零,如果是,则执行步骤510,如果否,则执行步骤509;其中,第二门限值,在整点运算的情况下,可为通过第一门限值与正整数m相除所得的结果值取整后的值,在浮点运算的情况下,为第一门限值与正整数m相除所得的结果值,正整数可以设定为4或其他正整数;其中,第二门限值也可通过用户直接预置的方法获得;步骤507包处理模块进一步判断所接收包的个数是否大于预先设定的需要采样的平均包间隔n的两倍,如果是,执行步骤508,如果否,执行步骤511;步骤508过采计数器加一,并写回SRAM;其中,过采计数器加一表示此次采样导致总采样次数增多;步骤509包处理模块采样包信息或复制该包,进入步骤511;步骤510过采计数器减一,并写回SRAM;其中,当包间隔太小而应该采样的情况下,采样总数偏多,因此不采样,过采计数器减一,当过采计数器某个时候变为零的时候,表明总的采样次数没有发生偏差;步骤511包处理模块读取的包经转发处理后由包发送模块将包发送出去;其中,包处理模块对读取的包的转发处理包括查找路由表、设置出接口和新的报文头,以及把新的报文信息传递给包发送模块,包发送模块通过查找转发内存中报文的相关属性,从路由器相关的物理端口发送报文出去,上述提到的报文就是对应流的包。
参见图3,为实现上述方法,本发明提供的系统包括包接收模块、转发内存、包处理模块、包发送模块,其中包接收模块,用于接收对应流的包,将接收的包发送给转发内存,并通知包处理模块;转发内存,包括动态随机存储器DRAM和静态随机存储器SRAM;其中,动态随机存储器DRAM存放包接收模块发送的包;其中,静态随机存储器SRAM存放包的相关属性信息,并存放用户设定的掩码N以及预置的第一门限值,以及包到达计数器counter和过采计数器;
包处理模块,用于从转发内存中读取到达的包和包计数器及过采计数器,对包计数器加一后写回转发内存中的SRAM,并读取转发内存中SRAM中预置的掩码N和预置的第一门限值,产生随机数,在判断得到随机数大于第一门限值但所接收包的个数大于需要采样的包间隔n的两倍时,对读取的包进行采样且对过采计数器加一并写回SRAM,在判断得到随机数小于第二门限值且过采计数器大于零时,不对读取的包采样且对过采计数器减一后写回SRAM,在判断得到随机数小于第二门限值但过采计数器小于零时,对读取的包进行采样,将所读取的包在处理后进行转发处理;包发送模块,用于将转发处理后的包发送出去。
本发明所提供的随机包间隔的方法和系统可以应用于计算机互联网,也可以用于其他需要分析网络性能、需要随机特征采样的通信网的采样算法处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种网络上随机包间隔采样的方法,其特征在于,该方法包括步骤A接收网络上到达的包;步骤B产生0到预置掩码N之间的随机数;步骤C当随机数小于预置的第一门限值,对接收的包采样。
2.根据权利要求1所述的网络上随机包间隔采样的方法,其特征在于该方法中所述的第一门限值为预置的掩码N与需要采样的平均包间隔n相除获得的结果值取整后的值。
3.根据权利要求1所述的网络上随机包间隔采样的方法,其特征在于,步骤A进一步包括对接收的包进行计数;步骤C进一步包括如果判断得到随机数不小于第一门限值,则进一步,在所接收的包的个数大于需要采样的平均包间隔n的两倍时,对接收的包进行采样。
4.根据权利要求3所述的网络上随机包间隔采样的方法,其特征在于,该方法中,在所接收的包的个数大于需要采样的平均包间隔n的两倍而对接收的包进行采样时,进一步包括过采计数器加一;该方法中,判断得到随机数小于第一门限值时,进一步包括判断随机数是否小于预置的第二门限值,且过采计数器大于零,如果是,过采计数器减一后,不对接收的包采样,如果否,则对接收的包进行采样。
5.根据权利要求4所述的网络上随机包间隔采样的方法,其特征在于,该方法中,第二门限值为第一门限值与一正整数m相除获得结果值取整后的值。
6.根据权利要求5所述的网络上随机包间隔采样的方法,其特征在于该方法中所述的正整数m为4。
7.根据权利要求1至6任一所述的网络上随机包间隔采样的方法,其特征在于,该方法进一步包括步骤D将接收的包经转发处理后发送出去。
8.一种网络上随机包间隔的采样系统,其特征在于,该系统包括包接收模块、转发内存、包处理模块,其中包接收模块,用于接收对应流的包,通知包处理模块;转发内存,存放包接收模块发送的包;包处理模块,用于从转发内存中读取到达的包,产生随机数,并在判断得到随机数小于预置的第一门限值时,对接收的包进行采样。
9.根据权利要求8所述的网络上随机包间隔的采样的系统,其特征在于,转发内存包括静态随机存储器、动态随机存储器,其中静态随机存储器,存储预置的掩码和预置的第一门限值和第二门限值;动态随机存储器,用于存放包接收模块发送的包。
10.根据权利要求9所述的网络上随机包间隔的采样的系统,其特征在于系统中,进一步包括静态存储器,进一步用于存储用于对接收的包计数的包计数器;包处理模块,如果判断得到随机数不小于预置的第一门限值,则进一步,在所接收的包的个数大于需要采样的平均包间隔n的两倍时,对接收的包进行采样。
11.根据权利要求10所述的网络上随机包间隔的采样的系统,其特征在于静态存储器,进一步用于存储过采计数器;包处理模块,在判断随机书小于预置第一门限值时,进一步,在随机数小于预置的第二门限值,且过采计数器大于零的情况下,不对接收的包采样且对过采计数器减一,否则对接收的包采样;在判断得到所接收的包的个数大于需要采样的平均包间隔n的两倍而对接收的包进行采样时,进一步,对过采计数器加一。
12.根据权利要求9至11任一所述的网络上随机包间隔的采样的系统,其特征在于,该系统进一步包括包发送模块用于将转发处理后的包发送出去。
全文摘要
本发明提供了一种网络上随机包间隔采样的方法和系统,利用该系统,接到网络上到达的包,并产生随机数,当随机数小于预置的掩码N与需要采样的平均包间隔n相除获得的结果值所取整后的第一门限值时,对接收的包采样;为使包间隔更为均匀,该系统中可对包到达进行计数,在随机数大于第一门限值但包达到的个数大于需采样的平均间隔的两倍时,对读取的包采样;为使包采样的总数不断趋于预期值,在系统在对包计数的基础上再设置过采计数器,在随机数太小且过采计数器大于零的情况下,不对包采样。利用本发明,能够使网络上随机包间隔的采样业务实现结构更为简单,从而提高包采样的效率。
文档编号H04L12/14GK1909510SQ20061009924
公开日2007年2月7日 申请日期2006年7月21日 优先权日2006年7月21日
发明者游南林 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1