发明内容
本发明实施例提出一种协议识别方法、协议识别装置及设备,以实现准确、迅速、高效的对数据包进行协议识别。
本发明实施例提供了一种协议识别方法,包括:
接收数据流;
对所述数据流上的第一数据包进行特征分析,以获得所述第一数据包的特征;
当查找到与所述第一数据包的特征相匹配的入口条件时,查找所述入口条件所属的统计规则,记录所述统计规则和所述第一数据包的样本信息,其中,所述统计规则与协议相对应,所述统计规则包括入口条件及识别模式;
接收所述数据流上的后续数据包,并记录所述后续数据包的样本信息;
当接收的所述数据流上的数据包的数量达到预设值时,对记录的数据包进行统计分析,以获得所述数据流的统计特征;
判断所述统计特征是否与所述入口条件所属的统计规则的所有识别模式相匹配,当所述统计特征与所述所有识别模式相匹配时,判断出所述数据流所使用的协议为所述入口条件所属的统计规则对应的协议。
本发明实施例还提供了一种协议识别装置,包括:
接收模块,用于接收数据流;
特征获取模块,用于对所述数据流上的第一数据包进行特征分析,获得所述第一数据包的特征;
查找模块,用于当查找到与所述第一数据包的特征相匹配的入口条件时,查找所述入口条件所属的统计规则,记录所述统计规则,其中,所述统计规则与协议相对应,所述统计规则包括入口条件及识别模式;
第一处理模块,用于记录所述第一数据包的样本信息;
第二处理模块,用于接收所述数据流上的后续数据包,并记录所述后续数据包的样本信息;
统计特征获取模块,用于当接收的所述数据流上的数据包的数量达到预设值时,对记录的数据包的样本信息进行统计分析,以获得所述数据流的统计特征;
识别模块,用于判断所述统计特征是否与所述入口条件所属的统计规则的所有识别模式相匹配,当所述统计特征与所述所有识别模式相匹配时,判断出所述数据流所使用的协议为所述入口条件所属的统计规则对应的协议。
本发明实施例还提供了一种网络节点设备,包括接收端口、数据流识别引擎及协议识别引擎,其中,所述接收端口用于向所述数据流识别引擎和所述协议识别引擎转发数据流,所述数据流识别引擎用于对数据流进行识别,协议识别引擎为上述所述的协议识别装置。
本发明实施例提供的协议识别方法、协议识别装置及设备,通过对数据流上的一系列数据包进行统计分析,获得统计特征,并通过统计特征与统计规则的识别模式进行匹配识别出数据流所使用的协议,解决了现有技术无法识别特征较弱的数据包的问题,通过对一系列数据包之间的统计特征进行分析识别,满足了现有识别方法无法识别的协议识别需求比如数据流采用加密等协议。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种协议识别方法的流程图。如图1所示,该方法包括:
步骤101、接收数据流;
步骤102、对数据流上的第一数据包进行特征分析,以获得所述第一数据包的特征;
本步骤中,识别到一个新的数据流时,就对该数据流的第一数据包进行特征分析,其中,这里的第一数据包是指匹配某一统计规则的入口条件的第一个数据包,不一定是该数据流的第一个数据包,如果后续还有数据包满足其它统计规则的入口条件,也可以认为该后续数据包是匹配该入口条件的第一数据包,其中,数据包的特征可以是其中某个或某些字节的值。
步骤103、当查找到与所述第一数据包的特征相匹配的入口条件时,查找所述入口条件所属的统计规则,记录所述统计规则和所述第一数据包的样本信息;
其中,所述统计规则与协议相对应,所述统计规则包括入口条件及识别模式,入口条件为单包规则,如果某个数据包的某个特征匹配某一统计规则的入口条件,则可对从该数据包开始的后续多个数据包进行统计,对该多个数据包进行统计。假设某一统计规则的入口条件为数据包的前5个字节为“ABCDE”,如果某个数据包的前五个字节为“ABCDE”,则认为该数据包匹配该统计规则的入口条件。由于匹配入口条件的数据包其特征不明显,需要统计后续多个数据包以得到统计特征,因此,从该数据包开始进行统计。
统计规则中的识别模式可为已接收的所述数据流上的所有数据包的包长度之和,所有数据包的包长均值、包长序列、包长集合等,例如:已接受到3个数据包,则所有数据包的包长度之和为3个数据包的总长度;所有数据包的包长均值为3个数据包包长的平均值;包长序列为第一数据包长度,第二个数据包的长度,第3个数据包的长度排成的序列值,例如:第一数据包长度为9,第二个数据包长度为4,第三个数据包长度为10,则包长序列为9410;包长集合就是3个数据包长度组成的集合。数据包的样本信息可以包括数据包的长度、传输方向等,该样本信息是后面步骤用于做统计分析的样本。
步骤104、接收所述数据流上的后续数据包,并记录所述后续数据包的样本信息;
步骤105、当接收的所述数据流上的数据包的数量达到预设值时,对所述第一数据包和所述后续数据包的样本信息进行统计分析,以获得所述数据流的统计特征;
统计特征例如可以为:包长为10K的数据包有几个,传输方向为接收的有几个等等。
步骤106、判断所述统计特征是否与所述入口条件所属的统计规则的所有识别模式相匹配,当所述统计特征与所述所有识别模式相匹配时,判断出所述数据流所使用的协议为所述入口条件所属的统计规则对应的协议。
上述步骤101-步骤106可由网络节点中的引擎执行。
本实施例提供的技术方案通过对数据流上的一系列数据包进行统计分析,获得统计特征,并通过统计特征与统计规则的识别模式进行匹配识别出数据流所使用的协议,能够对多个数据包之间存在统计关系的场景进行协议识别,解决了现有技术无法识别特征较弱的数据包的问题,通过对一系列数据包之间的统计特征进行分析识别,满足了现有识别方法无法识别的协议,比如识别经过加密的数据流。
以Bit torrent加密协议识别为例,该协议为了保证信息安全将数据包中的具体特征值略去,使用现有技术无法识别,而采用上述实施例,对一系列的数据包进行统计分析,得到数据流的统计特征:第1个数据包的包长和传输方向是什么,第2到5个数据包的包长之和以及第10到16个包的包长范围是什么。当第1个数据包的包长和传输方向、第2到5个数据包的包长之和以及第10到16个包的包长范围均满足BT协议对应的统计规则中相应的识别模式时,认为该一系列数据包匹配BT加密协议。
图2为本发明实施例提供的另一种协议识别方法的流程图。网络节点接收到某一数据流之后,将该数据流的数据包发给引擎进行识别,数据包通过如图2所示的统计识别流程进行处理,具体包括:
步骤201、接收数据包;
步骤202、分析所述数据包的特征;
本步骤中,对接收的数据包进行分析,得到数据包的特征,例如分析出该数据包中某个或某些字节的值。
步骤203、判断数据包的特征是否匹配某一统计规则的入口条件;
本步骤中,入口条件可以为数据包中某个或某些字节的固定值;若匹配,则执行步骤204;否则执行步骤206。本步骤中,对于匹配的情况,可能是第一数据包的后续数据包,也有可能是匹配其它入口条件的第一数据包。
一般来说匹配统计规则的入口条件的数据包是网络节点接收的数据流中进入统计阶段的第一个数据包,而不一定是该数据流的第一个数据包。
步骤204、是否已记录匹配的入口条件所属的统计规则;
本步骤中查找的统计规则即记录步骤203中匹配成功的入口条件对应的统计规则,如果已记录到匹配的入口条件所属的统计规则,为了避免重复记录,执行步骤206;否则,执行步骤205,以记录匹配的入口条件所属的统计规则,说明该后续数据包为匹配其它入口条件的第一数据包,需要记录对应的统计规则,进行单独的统计分析。
本流程中,只考虑对一个协议的完整的识别流程,对于后续数据包中出现匹配其它入口条件的第一数据包的情况,与此类似,在此不赘述。
步骤205、查找所述入口条件所属的统计规则,记录所述统计规则;
本步骤中,可能该数据流中,可能匹配不同的入口条件,因此,针对不同的入口条件都需要记录所属的统计规则。
步骤206、记录数据包的样本信息和数量;
本步骤中,数据包的样本信息可以包括长度,数据包的传输传输方向等,可以根据具体的情况自由设定。
本实施例中,对于步骤201至步骤206,还有一种处理方式:对于第一数据包已经匹配了入口条件,并记录了匹配的入口条件所属的统计规则之后,进入了统计阶段,对于后续的数据包,只需执行步骤201、步骤206,然后,跳转至步骤207继续执行即可。
步骤207、判断记录的数据包的数量是否达到预设值;
本步骤中,若未达到,则继续执行步骤201,直至数据包的数量达到预设值;若达到预设值则执行步骤208。其中,预设值视实际情况而定,只要足以反映出数据流的统计特征即可。如假设16个数据包可以统计出数据流的统计特征,则该预设值可以设为16或不小于16的值。
步骤208、对记录的数据包的样本信息进行统计分析,以得到所述数据流的统计特征。
例如对记录的16个数据包的样本信息进行统计分析,假设其中包长范围为9kbit~15kbit的数据包有10个,传输方向为应答的数据包有15个,经过统计分析得到这16个数据包所属数据流具有的统计特征:包长范围9kbit~15kbit的概率为62.5%,传输方向为应答的概率为93.75%。
步骤209、判断数据流的统计特征是否匹配记录的统计规则的所有识别模式;
本步骤中,当匹配时,执行步骤210;当不匹配时,执行步骤211。
仍然以步骤208所举例为例,本步骤判断包长范围9kbit~15kbit的概率为62.5%,以及传输方向为应答的概率为93.75%,这两项统计信息是否与步骤24中记录的统计规则的所有识别模式相匹配,若是,则识别成功,所述数据流所使用的协议即步骤205中查找到的统计规则对应的协议,返回识别成功结果及所识别出的协议信息,流程结束;否则,识别失败,返回识别失败结果,流程结束。
图3为本发明实施例提供的协议识别装置的结构示意图,可以应用上述方法,由于方法和装置实施例的相似性,对同样的技术特征,本发明实施例中不再重复。如图3所示,协议识别装置包括:接收模块310、特征获取模块320、查找模块330、第一处理模块340、第二处理模块350、统计特征获取模块360及识别模块370。
接收模块310,用于接收数据流。
特征获取模块320,用于对所述数据流上的第一数据包进行特征分析,获得所述第一数据包的特征。所述统计特征获取模块320可具体用于获得已接收的所述数据流上的所有数据包的包长度之和,获取所有数据包的包长均值、包长序列、包长集合。
查找模块330,用于当查找到与所述第一数据包的特征相匹配的入口条件时,查找所述入口条件所属的统计规则,记录所述统计规则,其中,所述统计规则与协议相对应,所述统计规则包括入口条件及识别模式。所述查找模块330记录所述第一个数据包的样本信息可具体为记录所述第一数据包的长度及传输方向。所述查找模块330记录所述后续数据包的样本信息可具体为记录所述后续数据包的长度及传输方向。
第一处理模块340,用于记录所述第一数据包的样本信息;
第二处理模块350,用于接收所述数据流上的后续数据包,并记录所述后续数据包的样本信息;
统计特征获取模块360,用于当接收的所述数据流上的数据包的数量达到预设值时,对所述第一数据包和所述后续数据包的样本信息进行统计分析,以获得所述数据流的统计特征;
识别模块370,用于判断所述统计特征是否与所述入口条件所属的统计规则的所有识别模式相匹配,当所述统计特征与所述所有识别模式相匹配时,判断出所述数据流所使用的协议为所述入口条件所属的统计规则对应的协议议。
本实施例提供的协议识别装置通过统计特征获取模块对数据流上的一系列数据包进行统计分析,获得统计特征,并通过识别模块对统计特征与统计规则的识别模式进行匹配识别出数据流所使用的协议,解决了现有技术无法识别特征较弱的数据包的问题,通过对一系列数据包之间的统计特征进行分析识别,满足了现有识别方法无法识别的协议识别需求比如数据流采用加密等协议。
其中,第二处理模块350,还可以包括:
特征获取单元351,对所述数据流上的后续数据包进行特征分析,以获得所述后续数据包的特征;
样本记录单元352,当查找到与所述后续数据包的特征相匹配的入口条件时,查找所述入口条件所属的统计规则,判断是否已记录匹配的入口条件所属的统计规则,若已记录,则记录所述后续数据包的样本信息和已接收数据包的个数;当查未找到与所述后续数据包的特征相匹配的入口条件时,判断是否已记录匹配的入口条件所属的统计规则,若已记录,则记录所述后续数据包的样本信息和已接收数据包的个数
图4为本发明实施例提供的网络节点设备结构示意图。如图4所示,网络节点设备包括一种网络节点设备,其特征在于,包括:接收端口410,数据流识别引擎420,协议识别引擎430,其中,接收端口410用于向所述数据流识别引擎420和所述协议识别引擎430转发数据流,所述数据流识别引擎420用于对数据流进行识别,协议识别引擎430,具有统计识别功能,能够对数据包之间存在关系的数据流进行统计识别,识别出其所使用的协议。协议识别引擎430可为上述装置实施例提供的任一协议识别装置。
本实施例提供的网络节点设备通过协议识别装置对数据流上的一系列数据包进行统计分析,获得统计特征,并通过统计特征与统计规则的识别模式进行匹配识别出数据流所使用的协议,解决了现有技术无法识别特征较弱的数据包的问题,通过对一系列数据包之间的统计特征进行分析识别,满足了现有识别方法无法识别的协议识别需求比如数据流采用加密等协议。
本发明上述实施例适用于常见的识别流程,支持多种形式的匹配条件,假设一条统计规则包括三个识别模式:a、b、c,则匹配条件可为a、b、c全与、a、b、c全或,也可以是复杂关系,比如匹配条件为a&(b|c)即满足a的同时,b和c中至少满足一个,大大提高了协议识别的成功率,尤其是对于现有技术无法识别的协议(比如加密等),扩大了协议识别范围,能够满足更多业务需求。并且,当数据流中的数据包的特征较弱,而多个数据包存在较明显的统计特征时,现有技术采用单独识别的方式准确性较差,而采用本发明上述实施例提供的技术方案则具有较高的准确性。对于新的网络应用协议,可以通过更新规则进行扩展,增强了现网产品的可扩展性、健壮性和可维护性,减少了出错几率和维护成本。
上述实施例基于统计的协议识别不仅可用于DPI,在其他领域,比如垃圾邮件、DDOS等现网应用,都可以基于统计进行处理:比如先获取基线值,当统计特征与基线存在极大差异的时候即认为异常发生的可能性极大,均可使用上述实施例提供的技术方案进行协议识别,扩大了协议识别的使用范围。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。