一种数据流的检测方法及设备与流程

文档序号:19165054发布日期:2019-11-19 20:18阅读:197来源:国知局
本发明涉及通信
技术领域
:,尤其涉及一种数据流的检测方法及设备。
背景技术
::网络流量检测是一种用于实现流量计费、带宽规划、路由计算等应用的网络管理手段。目前的网络流量检测可以以数据流为单位,数据流可以为特定时间内经过网络中某个采样点的一组具有相同属性的报文,例如,五元组属性(源网际协议(英文:internetprotocol,简称:ip)地址、目的ip地址、源端口、目的端口和协议号)相同的报文可以定义为同一条数据流。其中,最大流检测是一种常用的网络流量检测方式。最大流是指网络链路上、数量高于一定阈值的数据流。现有技术中,可以采用多级过滤器算法实现最大流检测。其中,多级过滤器算法中的每一级过滤器算法均为一种哈希算法,可以对应于一种数据流的判断规则。针对多级过滤器算法中的每一级过滤器算法可以设置一个计数器,当报文(如报文1)满足任一级过滤器算法(如过滤器算法1)对应的数据流的判断规则时,则确定报文1属于过滤器算法1对应的数据流,过滤器算法1对应的计数器的报文计数值则加一;当过滤器算法1对应的计数器的报文计数值大于预设阈值时,则确定过滤器算法1对应的数据流为最大流。但是,存在的问题是,现有技术中不能针对网络中的每一条数据流都设置一级过滤器算法,而仅是当报文满足过滤器算法对应的数据流的判断规则时,就可以认为该报文属于该过滤器算法对应的数据流。这样,可能会存在由于上述过滤器算法对应的数据流的判断规则设置不准确,导致将不同数据流判断为同一数据流,进而导致最大流的误判。技术实现要素:本发明的实施例提供一种数据流的检测方法及设备,可以准确的确定出最大流,减少最大流的误判率。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,本申请提供一种数据流的检测方法,包括:路由器根据经过路由器的第一数据流的标识信息,获得第一数据流的索引和第一数据流的压缩信息,第一数据流的索引用于指示路由器中的n个哈希表(英文:hashtable,简称:ht)单元中的至少一个ht单元,第一数据流的标识信息包括第一数据流的五元组信息;若至少一个ht单元中包含第一ht单元,路由器则为第一ht单元中保存的报文计数值x加1,以得到第一数据流的报文计数值,第一ht单元为至少一个ht单元中、压缩信息与第一数据流的压缩信息相同的ht单元;路由器在第一ht单元中保存的报文计数值大于第一计数值时,从路由器中的m个关键字表(英文:keytable,简称:kt)单元中确定出第一kt单元,第一kt单元为第一ht单元中保存的索引所指示的kt单元;若第一kt单元中保存的索引不是无效索引,且第一数据流的标识信息与第一kt单元中保存的标识信息相同,路由器则在第一kt单元对应的计数器记录第一数据流的报文计数值;路由器将第二kt单元对应的数据流确定为最大流,第二kt单元为计数器组中报文计数值最大的计数器对应的kt单元,计数器组中包括m个计数器,该m个计数器与m个kt单元一一对应,m≤n。其中,路由器可以对数据流的标识信息进行哈希计算,获得数据流的索引和数据流的压缩信息;路由器可以根据数据流的索引和数据流的压缩信息确定出该数据流对应的ht单元,由于数据流对应的ht单元配置有计数器,因此路由器可以通过判断数据流对应的ht单元中保存的报文计数值是否大于第一计数值,确定数据流是否可能为最大流,并在判断第一kt单元中保存的索引不是无效索引,且第一数据流的标识信息与第一kt单元中保存的标识信息相同时,在第一kt单元对应的计数器记录第一数据流的报文计数值,当第一kt单元对应的计数器的报文计数值最大时,路由器可以将报文计数值最大的计数器对应的数据流确定为最大流。因此可以解决现有技术中的由于过滤器算法对应的数据流的判断规则设置不准确,而导致将不同数据流判断为同一数据流,进而导致最大流的误判的问题,从而降低了最大流的误判率。在第一方面的一种实现方式中,在路由器则在第一kt单元对应计数器记录第一数据流的报文计数值之后,本申请的方法还可以包括:路由器在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引。其中,第一ht单元为一个ht单元中、保存的压缩信息与第一数据流的压缩信息相同的ht单元。在第一方面的一种实现方式中,若至少一个ht单元中不包含第一ht单元,路由器则从至少一个ht单元中确定出第二ht单元,该第二ht单元为至少一个ht单元中报文计数值最小的ht单元;路由器在第二ht单元中写入第一数据流的压缩信息、报文计数值1和无效索引。其中,n个ht单元中每个ht单元均配置有一个计数器,当路由器判断至少一个ht单元中不包含第一ht单元时,路由器可以通过比较计数器中报文计数值的大小,确定出报文计数值最小的ht单元。由于至少一个ht单元中不包含第一ht单元,即第一数据流的压缩信息与第一ht单元中保存的压缩信息不同,则路由器判断第一数据流并不能对应于第一ht单元,路由器可以在确定的至少一个ht单元中报文计数值最小的ht单元中写入第一数据流的压缩信息、报文计数值1和无效索引,即就是采用第一数据流覆盖了报文计数值最小的ht单元中保存的数据流。在第一方面的一种实现方式中,在若至少一个ht单元中包含第一ht单元,路由器则为第一ht单元中保存的报文计数值x加1之后,本申请的方法还可以包括:路由器在第一ht单元中保存的报文计数值小于或者等于第一计数值时,路由器在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引。其中,当第一ht单元中保存的报文计数值小于或者等于第一计数值,路由器判断该第一数据流可能不是最大流,则一个ht单元中、保存的压缩信息与第一数据流的压缩信息相同的ht单元中没有第一数据流对应的计数器,则路由器在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引。在第一方面的一种实现方式中,本申请的方法还可以包括:若第一kt单元中保存的索引不是无效索引,且第一数据流的标识信息与第一kt单元中保存的标识信息不同,路由器则判断第一kt单元中保存的索引与第一数据流的索引是否相同;若第一kt单元中保存的索引与第一数据流的索引相同,路由器则在第一kt单元对应计数器记录第一数据流的报文计数值;路由器在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引;路由器在第一kt单元写入第一数据流的标识信息和第一数据流的索引。其中,由于第一数据流的标识信息与第一kt单元中保存的标识信息相同,即第一数据流对应于第一kt(第一kt与计数器组中的一个计数器对应),因此路由器可以在第一kt单元对应的计数器记录第一数据流的报文计数值。第一ht单元为一个ht单元中、保存的压缩信息与第一数据流的压缩信息相同的ht单元。在第一方面的一种实现方式中,本申请的方法还可以包括:若第一kt单元中保存的索引与第一数据流的索引不同,路由器则为第一数据流配置第一计数器,第一计数器为报文计数值最小的计数器,并判断第一计数器对应的kt单元中保存的索引是否是无效索引;若第一计数器对应的kt单元中保存的索引是无效索引,路由器则在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引;若第一计数器对应的kt单元中保存的索引不是无效索引,路由器则在第一kt单元对应计数器记录第一数据流的报文计数值,在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引,在第一kt单元写入第一数据流的标识信息和第一数据流的索引。在第一方面的一种实现方式中,本申请的方法还可以包括:若第一kt单元中保存的索引是无效索引,路由器则为第一数据流配置第一计数器,第一计数器为报文计数值最小的计数器,并判断第一计数器对应的kt单元中保存的索引是否是无效索引;若第一计数器对应的kt单元中保存的索引是无效索引,路由器则在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引;若第一计数器对应的kt单元中保存的索引不是无效索引,路由器则在第一kt单元对应计数器记录第一数据流的报文计数值,在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引,在第一kt单元写入第一数据流的标识信息和第一数据流的索引。第二方面,本申请提供一种路由器,可以包括:获取模块、判断模块、计算模块、确定模块和记录模块。其中,获取模块,用于根据经过路由器的第一数据流的标识信息,获得第一数据流的索引和第一数据流的压缩信息,第一数据流的索引用于指示路由器中的n个ht单元中的至少一个ht单元,第一数据流的标识信息包括第一数据流的五元组信息。判断模块,用于判断至少一个ht单元中是否包含第一ht单元。计算模块,用于若判断模块判断至少一个ht单元中包含第一ht单元,则为第一ht单元中保存的报文计数值x加1,以得到第一数据流的报文计数值,第一ht单元为至少一个ht单元中、压缩信息与第一数据流的压缩信息相同的ht单元。判断模块,还用于判断第一ht单元中保存的报文计数值是否大于第一计数值。确定模块,用于在判断模块判断第一ht单元中保存的报文计数值大于第一计数值时,从路由器中的m个kt单元中确定出第一kt单元,第一kt单元为第一ht单元中保存的索引所指示的kt单元。判断模块,还用于判断第一数据流的标识信息与第一kt单元中保存的标识信息是否相同。记录模块,用于若确定模块确定的第一kt单元中保存的索引不是无效索引,且判断模块判断第一数据流的标识信息与第一kt单元中保存的标识信息相同,则在第一kt单元对应的计数器记录第一数据流的报文计数值。确定模块,还用于将第二kt单元对应的数据流确定为最大流,第二kt单元为计数器组中报文计数值最大的计数器对应的kt单元,计数器组中包括m个计数器,该m个计数器与m个kt单元一一对应,m≤n。在第二方面的一种实现方式中,还可以包括:写入模块。其中,写入模块,用于在记录模块则在第一kt单元对应计数器记录第一数据流的报文计数值之后,在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引。在第二方面的一种实现方式中,确定模块,还用于若判断模块判断的至少一个ht单元中不包含第一ht单元,则从至少一个ht单元中确定出第二ht单元,第二ht单元为至少一个ht单元中报文计数值最小的ht单元。写入模块,还用于在确定模块确定的第二ht单元中写入第一数据流的压缩信息、报文计数值1和无效索引。在第二方面的一种实现方式中,写入模块,还用于在若至少一个ht单元中包含第一ht单元,则为第一ht单元中保存的报文计数值x加1之后,判断模块判断第一ht单元中保存的报文计数值小于或者等于第一计数值时,在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引。在第二方面的一种实现方式中,判断模块,还用于若第一kt单元中保存的索引不是无效索引,且第一数据流的标识信息与第一kt单元中保存的标识信息不同,则判断第一kt单元中保存的索引与第一数据流的索引是否相同。记录模块,还用于若判断模块判断第一kt单元中保存的索引与第一数据流的索引相同,则在第一kt单元对应计数器记录第一数据流的报文计数值。写入模块,还用于在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引,并在第一kt单元写入第一数据流的标识信息和第一数据流的索引。在第二方面的一种实现方式中,还可以包括:配置模块。配置模块,用于若判断模块判断第一kt单元中保存的索引与第一数据流的索引不同,则为第一数据流配置第一计数器,第一计数器为报文计数值最小的计数器。判断模块,还用于判断第一计数器对应的kt单元中保存的索引是否是无效索引。写入模块,还用于若判断模块判断第一计数器对应的kt单元中保存的索引是无效索引,则在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引。记录模块,还用于若判断模块判断第一计数器对应的kt单元中保存的索引不是无效索引,则在第一kt单元对应计数器记录第一数据流的报文计数值。写入模块,还用于在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引,并在第一kt单元写入第一数据流的标识信息和第一数据流的索引。在第二方面的一种实现方式中,判断模块,用于判断第一kt单元中保存的索引是否是无效索引。配置模块,还用于若判断模块判断第一kt单元中保存的索引是无效索引,则为第一数据流配置第一计数器,第一计数器为报文计数值最小的计数器。判断模块,还用于判断第一计数器对应的kt单元中保存的索引是否是无效索引。写入模块,还用于若判断模块判断第一计数器对应的kt单元中保存的索引是无效索引,则在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引。记录模块,还用于若判断模块判断第一计数器对应的kt单元中保存的索引不是无效索引,则在第一kt单元对应计数器记录第一数据流的报文计数值。写入模块,还用于在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引,并在第一kt单元写入第一数据流的标识信息和第一数据流的索引。需要说明的是,本发明实施例的第二方面及其各种可能的实现方式的各个功能单元,是为了执行上述第一方面以及第一方面的各种可选方式的数据流的检测方法,而对路由器进行的逻辑上的划分。第二方面及其各种可能的实现方式的各个功能单元的详细描述以及有益效果分析可以参考上述第一方面及其各种可能的实现方式中的对应描述及技术效果,此处不再赘述。第三方面,本申请提供一种路由器,该路由器包括:处理器、存储器和通信接口。存储器用于存储计算机执行指令,处理器、通信接口与存储器通过总线连接,当路由器运行时,处理器执行存储器存储的计算机执行指令,以使路由器执行如第一方面以及第一方面的各种可选方式所述的数据流的检测方法。第四方面,提供一种计算机存储介质,该计算机存储介质中存储有一个或多个程序代码,当第三方面中的路由器的处理器执行该程序代码时,路由器执行如第一方面以及第一方面的各种可选方式所述的数据流的检测方法。上述第二方面和第三方面中路由器的各个模块的详细描述和相应技术效果分析可参见上述第一方面及其各种可能的实现方式中的详细描述,本发明实施例这里不再赘述。附图说明图1为本发明实施例提供的一种数据流的检测方法所应用的网络架构示意图;图2为本发明实施例提供的一种路由器确定数据流的报文计数值的实例示意图;图3为本发明实施例提供的一种数据流的检测方法流程图;图4为本发明实施例提供的另一种数据流的检测方法流程图;图5为本发明实施例提供的另一种数据流的检测方法流程图;图6为本发明实施例提供的一种路由器的结构示意图;图7为本发明实施例提供的另一种路由器的结构示意图;图8为本发明实施例提供的另一种路由器的结构示意图。具体实施方式本发明实施例提供的数据流的检测方法及设备可以应用于网络流量检测的过程中,具体的,路由器可以筛选出n条最大流并上报流服务器,实现网络流量的准确检测。请参考图1,其示出了本发明实施例提供的一种数据流的检测方法所应用的网络架构示意图。如图1所示,该网络架构可以包括:至少一个路由器(如路由器10和路由器11)和数据流服务器20。其中,路由器10可以与路由器11之间可以进行信息传输,如路由器10可以向路由器11传输数据流;路由器10可以将确定的报文计数值最大的计数器对应的数据流上报给数据流服务器20,路由器11可以将确定的报文计数值最大的计数器对应的数据流上报给数据流服务器20。本发明实施例以至少一个路由器为路由器10为例进行说明,图2示出的为路由器10确定数据流的报文计数值的实例示意图。其中,路由器10中可以包含ht、kt和计数器组。ht中可以包含n个ht单元,该n个ht单元中的每个ht单元中保存有一个数据流的压缩信息、报文计数值和该数据流在kt中的索引,压缩信息可以为对该数据流的标识信息(如该数据流的五元组信息)进行哈希计算得到的。kt中可以包含m(m≤n)个kt单元,该m个kt单元中的每个kt单元中保存有一个数据流的标识信息(如该数据流的五元组信息)和该数据流在ht中的索引。计数器组中包含m个计数器,该m个计数器与m个kt单元一一对应,可以用于记录对应kt单元中保存的数据流的报文计数值。具体的,路由器10可以对经过该路由器10的数据流的标识信息进行哈希计算,得到数据流的索引和该数据流的压缩信息,该数据流的索引用于指示路由器中的n个ht单元中的至少一个ht单元;路由器10可以判断数据流的压缩信息与至少一个ht单元中任一个ht单元中保存的压缩信息是否相同,当数据流的压缩信息与至少一个ht单元中的一个ht单元(简称ht单元a)中保存的压缩信息相同时,则可以确定出数据流对应于ht单元a;并执行:为ht单元a中保存的报文计数值加1;然后判断ht单元a中保存的报文计数值(即为ht单元a中保存的报文计数值加1后的报文计数值)是否大于第一计数值,当该ht单元a中保存的报文计数值大于第一计数值时,路由器10则判断该数据流可能为最大流;并当ht单元a中保存的索引所指示的kt单元(简称kt单元a)中保存的索引不是无效索引,且数据流的标识信息与kt单元a中保存的标识信息相同时,路由器10在kt单元a对应计数器记录数据流的报文计数值,并从计数器组中确定出报文计数值最大的计数器,将报文计数值最大的计数器对应的kt单元(简称kt单元b)对应的数据流确定为最大流;然后路由器10每隔一定的周期向数据流服务器20上报最大流为kt单元b对应的数据流,数据流服务器20在接收到路由器10上报的结果(即最大流为kt单元b对应的数据流)后,可以累积起来,并以不同的时间粒度显示kt单元b对应的数据流的索引和压缩信息。示例性的,如图2所示,路由器10可以根据哈希计算得到的数据流的索引和数据流的压缩信息,确定出数据流对应于ht中的第二行ht单元中的第一个ht单元(简称ht单元2-1),并执行:为ht单元2-1中保存的报文计数值116加1;然后判断ht单元2-1中保存的报文计数值117是否大于第一计数值,当该ht单元2-1中保存的报文计数值117大于第一计数值时,路由器10则判断该数据流可能为最大流;并当ht单元2-1中保存的索引所指示的kt单元(简称kt单元1)中保存的索引不是无效索引,且数据流的标识信息与kt单元1中保存的标识信息相同时,路由器10在kt单元1对应的计数器组中的计数器记录数据流的报文计数值117;然后从计数器组中确定出报文计数值最大的计数器,将报文计数值最大的计数器对应的kt单元(简称kt单元b)对应的数据流确定为最大流;然后路由器10每隔一定的周期向数据流服务器20上报确定的最大流。本发明实施例提供的一种数据流的检测方法及设备,可以准确的确定出最大流,减少最大流的误判率。下面结合附图,通过具体的实施例及其应用场景对本发明实施例提供的一种数据流的检测方法及装置进行详细地说明。本发明实施例提供一种数据流的检测方法,如图3所示,该数据流的检测方法包括:s301、路由器根据经过该路由器的第一数据流的标识信息,获得第一数据流的索引和第一数据流的压缩信息,该第一数据流的索引用于指示路由器中的n个单元中的至少一个ht单元,第一数据流的标识信息包括第一数据流的五元组信息。其中,路由器可以对第一数据流的标识信息进行哈希计算,获得第一数据流的索引和第一数据流的压缩信息。第一数据流的标识信息可以为第一数据流的五元组信息,该五元组信息可以包括源ip地址、目的ip地址、源端口、目的端口和协议号。例如,标识信息为104比特(英文:bit),104比特的标识信息经过哈希计算后,得到的压缩信息为20bit,即路由器从104bit中提取其中的20bit作为数据流的压缩信息。由于第一数据流的索引可以用于指示路由器中的n个ht单元中的至少一个ht单元,因此路由器可以根据第一数据流的索引确定出第一数据流对应于ht中的至少一个ht单元。需要说明的是,上述至少一个ht单元可以为ht中的某一行ht单元,路由器可以根据第一数据流的索引确定出第一数据流对应于ht中的某一行ht单元。示例性的,路由器可以根据第一数据流的索引,确定出第一数据流对应于ht中的第二行ht单元。s302、路由器判断至少一个ht单元中是否包含第一ht单元。其中,第一ht单元为至少一个ht单元中、压缩信息与第一数据流的压缩信息相同的ht单元。路由器可以判断第一数据流的压缩信息与至少一个ht单元中任一个ht单元中保存的压缩信息是否相同,确定出第一数据流对应于至少一个ht单元中的某一个ht单元,即第一ht单元。示例性的,路由器确定出第一数据流对应于第二行ht单元,然后路由器对比第一数据流的压缩信息与第二行ht单元中每个ht单元中保存的压缩信息。例如,如图2所示,路由器可以对比第一数据流的压缩信息与ht单元2-1中保存的压缩信息或ht单元2-2中保存的压缩信息。其中,当第一数据流的压缩信息与ht单元2-1中保存的压缩信息相同时,路由器则确定第一数据流对应于ht单元2-1,即路由器判断至少一个ht单元中包含ht单元2-1;当第一数据流的压缩信息与ht单元2-2中保存的压缩信息相同时,路由器则确定第一数据流对应于ht单元2-2,即路由器判断至少一个ht单元中包含ht单元2-2。若路由器判断至少一个ht单元中包含第一ht单元,则继续执行s401-s402;若路由器判断至少一个ht单元中不包含第一ht单元,则继续执行s801-s802:s401、路由器为第一ht单元中保存的报文计数值x加1,以得到第一数据流的报文计数值。其中,路由器在确定出第一数据流对应于至少一个ht单元中的某一个ht单元,即第一ht单元后,可以在确定出的第一ht单元中保存的报文计数值x加1,得到第一数据流的报文计数值。示例性的,如图2所示,当第一数据流的压缩信息与ht单元2-1中保存的压缩信息相同时,路由器则确定第一ht单元为ht单元2-1,并为ht单元2-1中保存的报文计数值116加1;当第一数据流的压缩信息与ht单元2-2中保存的压缩信息相同时,路由器则确定第一ht单元为ht单元2-2,并为ht单元2-2中保存的报文计数值192加1。s402、路由器判断第一ht单元中保存的报文计数值是否大于第一计数值。其中,第一计数值可以为路由器预先设定的一个计数值,当第一ht单元中保存的报文计数值大于第一计数值时,路由器则判断第一数据流可能是最大流。具体的,路由器确定出经过该路由器的某条数据流对应于第一ht单元,当该某条数据流的标识信息经过哈希计算,得到的压缩信息与上述第一数据流的压缩信息相同时,路由器则为第一ht单元中保存的报文计数值x加1,得到第一数据流的报文计数值,第一数据流的报文计数值为第一ht单元中、压缩信息与第一数据流的压缩信息相同的数据流的报文计数值之和,且计数器组中的报文计数值最大的计数器对应的数据流为最大流,因此第一数据流可能是最大流。如图3或图4所示,若第一ht单元中保存的报文计数值大于第一计数值,则继续执行s501-s502;如图3所示,若第一ht单元中保存的报文计数值小于或者等于第一计数值,则继续执行s901:s501、路由器从路由器中的m个kt单元中确定出第一kt单元,第一kt单元为第一ht单元中保存的索引所指示的kt单元。其中,当第一ht单元中保存的报文计数值大于第一计数值时,第一ht单元中保存的索引为第一ht单元对应的数据流在kt中的索引,路由器可以根据第一ht单元中保存的索引确定出第一kt单元。示例性的,如图2所示,当路由器确定出第一ht单元为ht单元2-1时,路由器可以根据ht单元2-1单元中保存的索引确定出第一kt单元为kt单元1;当路由器确定出第一ht单元为ht单元2-2时,路由器可以根据ht单元2-2单元中保存的索引确定出第一kt单元为kt单元2。s502、路由器判断第一kt单元中保存的索引是否是无效索引。其中,第一kt单元中保存的索引可以为第一kt单元对应的数据流在ht单元中的索引。示例性的,假设第一kt单元的总数为1-64k,则可以用0xffff(即64k)表示无效值,则可以判断第一kt单元中保存的索引是否为0xffff,以判断第一kt单元中保存的索引是否是无效索引。若第一kt单元中保存的索引不是无效索引,则继续执行s601;若第一kt单元中保存的索引是无效索引,则继续执行s1001和s1002:s601、路由器判断第一数据流的标识信息与第一kt单元中保存的标识信息是否相同。其中,当第一kt单元中保存的索引不是无效索引,即第一ht单元对应于第一kt单元时,路由器判断第一数据流的标识信息是否与第一kt单元中保存的标识信息相同。若第一数据流的标识信息与第一kt单元中保存的标识信息相同,则继续执行s701-s702;若第一数据流的标识信息与第一kt单元中保存的标识信息不同,则继续执行s1101:s701、路由器在第一kt单元对应的计数器记录第一数据流的报文计数值。其中,由于第一数据流的标识信息与第一kt单元中保存的标识信息相同,即第一数据流对应于第一kt(第一kt与计数器组中的一个计数器对应),因此路由器可以在第一kt单元对应的计数器记录第一数据流的报文计数值。示例性的,路由器确定出第一ht单元为ht单元2-1,确定出的与ht单元2-1对应的第一kt单元为kt单元1,kt单元1对应于计数器1,且ht单元2-1中保存的报文计数值x加1后的报文计数值为117(即第一数据流的报文计数值为117),则路由器可以在第一kt单元对应的计数器1记录第一数据流的报文计数值117。s702、路由器在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和第一kt单元中保存的索引。其中,第一ht单元为一个ht单元中、保存的压缩信息与第一数据流的压缩信息相同的ht单元。s801、路由器从至少一个ht单元中确定出第二ht单元,第二ht单元为至少一个ht单元中报文计数值最小的ht单元。其中,n个ht单元中每个ht单元均配置有一个计数器,当路由器判断至少一个ht单元中不包含第一ht单元时,路由器可以通过比较计数器中报文计数值的大小,确定出报文计数值最小的ht单元。s802、路由器在第二ht单元中写入第一数据流的压缩信息、报文计数值1和无效索引。其中,由于至少一个ht单元中不包含第一ht单元,即第一数据流的压缩信息与第一ht单元中保存的压缩信息不同,则路由器判断第一数据流并不能对应于第一ht单元,路由器可以在确定的至少一个ht单元中报文计数值最小的ht单元中写入第一数据流的压缩信息、报文计数值1和无效索引,即就是采用第一数据流覆盖了报文计数值最小的ht单元中保存的数据流。s901、路由器在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引,第一ht单元为一个ht单元中、保存的压缩信息与第一数据流的压缩信息相同的ht单元。其中,当第一ht单元中保存的报文计数值小于或者等于第一计数值,路由器判断该第一数据流可能不是最大流,则一个ht单元中、保存的压缩信息与第一数据流的压缩信息相同的ht单元中没有第一数据流对应的计数器,则路由器在第一ht单元中写入第一数据流的压缩信息、报文计数值x+1和无效索引。s1001、路由器为第一数据流配置第一计数器,第一计数器为报文计数值最小的计数器。其中,当第一kt单元中保存的索引是无效索引,即第一数据流不能对应于计数器组中的一个计数器时,路由器需要为第一数据流配置一个计数器,且配置的计数器为报文计数值最小的计数器。具体的,路由器可以选择一个计数器组,并从该组计数器中选择一个报文计数值最小的计数器作为上述第一计数器。示例性的,一个计数器为16bit,路由器可以在容量为512比特的内存中,将连续的32个计数器(即内存地址连续的32个计数器)作为一个计数器组,并可以从32个计数器中选择一个报文计数值最小的计数器作为上述第一计数器。s1002、路由器判断第一计数器对应的kt单元中保存的索引是否是无效索引。若第一计数器对应的kt单元中保存的索引是无效索引,则继续执行s901;若第一计数器对应的kt单元中保存的索引不是无效索引,则继续执行s701-s702和s1201。s1101、路由器判断第一kt单元中保存的索引与第一数据流的索引是否相同。其中,当第一kt单元中保存的索引与第一数据流的索引相同,路由器则确定第一数据流对应于第一kt。若第一kt单元中保存的索引与第一数据流的索引相同,则继续执行s701-s702和s1201;若第一kt单元中保存的索引与第一数据流的索引不同,则继续执行s1001:s1201、路由器在第一kt单元写入第一数据流的标识信息和第一数据流的索引。在路由器确定出第一数据流的报文计数值之后,还需要从计数器组中选取报文计数值最大的计数器,并将报文计数值最大的计数器的对应的kt单元对应的数据流确定为最大流。具体的,如图5所示,在图3所示的s701之后,本发明实施例的方法还可以包括s1301:s1301、路由器将第二kt单元对应的数据流确定为最大流,第二kt单元为计数器组中报文计数值最大的计数器对应的kt单元,计数器组中包括m个计数器,该m个计数器与m个kt单元一一对应,m≤n。其中,路由器可以从计数器组中确定出报文计数值最大的计数器,并将第二kt单元对应的数据流确定为最大流,第二kt单元为报文计数值最大的计数器对应的kt单元。由于路由器确定出经过该路由器的某条数据流对应于第一ht单元,当该某条数据流的标识信息经过哈希计算,得到的压缩信息与上述第一数据流的压缩信息相同时,路由器则为第一ht单元中保存的报文计数值(即x+1)加1,然后路由器将第一数据流的报文计数值记录在第一kt单元对应的计数器,因此,第一kt单元对应的计数器的报文计数值为对应于第一ht单元、压缩信息与第一数据流的压缩信息相同的数据流的报文计数值之和。路由器可以将报文计数值最大的计数器对应的第一kt单元对应的数据流确定为最大流。示例性的,路由器确定出对应于第一ht单元的某条数据流为第四数据流,路由器确定出第一ht单元为ht单元2-1,确定出的与ht单元2-1对应的第一kt单元为kt单元1(kt单元1对应于计数器1),且ht单元2-1中保存的报文计数值(即x+1)为117,当第四数据流的压缩信息与第一数据流的压缩信息相同时,路由器则可以为第一ht单元中保存的报文计数值(即x+1)117加1,即第一数据流的报文计数值为118,并在第一kt单元对应的计数器记录将第一数据流的报文计数值118;若计数器组中其他报文计数值均小于118,报文计数值为118的计数器对应的kt单元对应的数据流为第一数据流,路由器则确定第一数据流为最大流。本发明实施例提供一种数据流的检测方法,路由器可以对数据流的标识信息进行哈希计算,得到数据流的索引和数据流的压缩信息;路由器可以根据数据流的索引和数据流的压缩信息确定出该数据流对应的ht单元,由于数据流对应的ht单元配置有计数器,因此路由器可以通过判断数据流对应的ht单元中保存的报文计数值是否大于第一计数值,确定数据流是否可能为最大流,并在判断第一kt单元中保存的索引不是无效索引,且第一数据流的标识信息与第一kt单元中保存的标识信息相同时,在第一kt单元对应的计数器记录第一数据流的报文计数值,当第一kt单元对应的计数器的报文计数值最大时,路由器可以将报文计数值最大的计数器对应的数据流确定为最大流。因此可以解决现有技术中的由于过滤器算法对应的数据流的判断规则设置不准确,而导致将不同数据流判断为同一数据流,进而导致最大流的误判的问题,从而降低了最大流的误判率。上述主要从路由器的角度对本发明实施例提供的方案进行了介绍。可以理解的是,路由器为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的路由器及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。本发明实施例可以根据上述方法示例对路由器进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本发明实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。图6示出了上述实施例中所涉及的路由器的一种可能的结构示意图。该路由器600可以包括:获取模块601、判断模块602、计算模块603、确定模块604和记录模块605。其中,获取模块601用于支持上述实施例中的s301,和/或用于本文所描述的技术的其它过程。判断模块602用于支持上述实施例中的s302、s402、s502、s601、s1002和s1101,和/或用于本文所描述的技术的其它过程。计算模块603用于支持上述实施例中的s401,和/或用于本文所描述的技术的其它过程。确定模块604用于支持上述实施例中的s501、s801和s1301,和/或用于本文所描述的技术的其它过程。记录模块605用于支持上述实施例中的s701,和/或用于本文所描述的技术的其它过程。进一步的,如图7所示,图6所示的路由器600还可以包括:写入模块606和配置模块607。其中,写入模块606用于支持上述实施例中的s702、s802、s901和s1201,和/或用于本文所描述的技术的其它过程。配置模块607用于支持上述实施例中的s1001,和/或用于本文所描述的技术的其它过程。当然,本发明实施例提供的路由器600包括但不限于上述所述的模块,例如路由器600中还可以包括发送模块、接收模块和存储模块。发送模块可以用于向下一跳网络设备发送确定的最大流。接收模块可以用于接收第一数据流。存储模块可以用于存储第一数据流的索引和第一数据流的压缩信息。在采用集成的单元的情况下,上述获取模块601、判断模块602、计算模块603、确定模块604、记录模块605、写入模块606和配置模块607等可以集成在一个处理模块中实现,该处理模块可以是处理器或控制器,例如可以是cpu,通用处理器,数字信号处理器(英文:digitalsignalprocessor,简称:dsp),专用集成电路(英文:application-specificintegratedcircuit,简称:asic),现场可编程门阵列(英文:fieldprogrammablegatearray,简称:fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种举例说明逻辑方框,模块和电路。处理单元也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。发送模块和接收模块可以集成在一个通信模块中实现,该通信模块可以是通信接口。存储模块可以是存储器。当上述处理模块为处理器,存储模块为存储器,通信模块为收发器时,本发明实施例所涉及的路由器600可以为图8所示的路由器800。如图8所示,路由器800包括:处理器801、存储器802和通信接口803。其中,处理器801、存储器802和通信接口803通过总线804相互连接。其中,总线804可以是外设部件互连标准(英文:peripheralcomponentinterconnect,简称:pci)总线或扩展工业标准结构(英文:extendedindustrystandardarchitecture,简称:eisa)总线等。上述总线804可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。路由器800可以包括一个或多个处理器801,即路由器800可以包括多核处理器。本发明实施例还提供一种计算机存储介质,该计算机存储介质中存储有一个或多个程序代码,当路由器800的处理器801执行该程序代码时,该路由器800执行图3-图5中任一附图中的相关方法步骤。其中,本发明实施例提供的路由器800中各个模块的详细描述以及各个模块或单元执行图3-图5中任一附图中的相关方法步骤后所带来的技术效果可以参考本发明方法实施例中的相关描述,此处不再赘述。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1