一种基于流的深度报文检测协议解码方法、设备及系统的制作方法

文档序号:7704493阅读:99来源:国知局
专利名称:一种基于流的深度报文检测协议解码方法、设备及系统的制作方法
技术领域
本发明涉及移动通讯领域,尤其涉及一种基于流的深度报文检测 协-汉解码方法、设备及系统。
背景技术
移动通信业务给人们的通信方式发生了巨大变革,手机数据业务 已经开始逐渐替代传统的语音业务。 一方面,随着移动业务快速发展, 新的业务不断引入,各种新的应用层出不穷,给人们的生活工作带来 了更多的便利,但另一方面,移动业务发展的同时也使得数据网业务 种类及流量急速增长,造成对移动数据业务进行协议解码性能的要求 越来越高。
目前协议解码技术一般是纯软件解码,由于用户业务数据大都是 文本格式编码,其业务数据量较大、数据业务协议较多,且通常情况 下业务数据被分割到多个数据包中,获取该业务数据需要进行字符串
查找,所以处理速度较慢,很难满足实时解码要求;另外,由于数据 传输过程中数据流多被分割到多个数据包中(即所谓跨包)从而需要 软件组包,但是组包过程中需要同时保存数据流中的多个数据包,其 占用的内存较大,需要的通用服务器较多,故其成本也较高。

发明内容
本发明所要解决的技术问题是移动通信中基于流的协议解码方 法解码速度慢且成本高,提出了一种解码快速、成本较低的基于流的 协i义解码方法、设备及系统。
为了解决上述技术问题,本发明提供一种基于流的深度报文检测 协议解码方法,包括
接收业务数据流,将不同的数据流分发到不同线程中处理;
识别分流后所述数据流的协议类型,将同一数据流分发到相同深度报文检测处理模块;
深度报文检测处理模块调用正则表达式规则库,对所述数据进行 协议解码。
进一步,在上述方法中,所述深度报文检测处理模块调用正则表
达式规则库,对所述数据进行协议解码包括
所述深度报文检测处理模块获取所述数据的协议类型后,根据正 则表达式规则库查找到与所述数据协议类型对应的协议解码规则;
对包含所述数据的数据包进行扫描,根据所述协议解码规则从所 述数据包中提取所述数据的输出信息;
根据所述输出信息从所述数据包中提取所述数据的解码信息。
进一步,在上述方法中,所述接收业务数据流之前包括深度报 文检测处理模块进行初始化并加载编译后的正则表达式规则库。
进一步,在上述方法中,所述方法还包括对所述正则表达式规则 库进行编译,将其转换成深度报文检测处理模块可识别格式的数据。
进一步,在上述方法中,所述将不同的数据流分发到不同线程中 处理包括分析提取数据中用户的流信息,并根据所述用户的流信息 将所述数据分发到不同线程中处理。
进一步,在上述方法中,所述方法具体包括
对于TCP数据流,根据TCP数据流的源IP地址、目的IP地址、 源端口、目的端口和协议类型,将其分到不同的线程中;
对于UDP数据流,根据UDP数据流的源IP地址、源端口 、业 务ID、协议类型来将其分到不同的线程中。
进一步,在上述方法中,所述识别分流后所述数据流的协议类型, 将同 一数据流分发到相同深度报文检测处理模块包括
对经过分流的数据流的协议类型进行识别,获取所述数据流中数 据的协议类型;
根据实际要求的协议类型判断所述数据流中的数据是否需要进 行解码,若不需要则直接丟弃所述数据,若需要,则将同一数据流分 发到相同深度报文检测处理模块。
进一步,在上述方法中,所述将同一数据流分发到相同深度报文检测处理模块包括
在接收到新的数据流时建立新的流表;
当接收到数据报文时,先在所述流表中查找其对应的流号,若能 找到,再判断所述数据报文是否为最后一个包,若不是,则将所述数 据报文归入对应的数据流中,否则进行流的删除;
当所述数据流出现乱序或重发且所述数据流没有被正常删除时, 启动定时器在定时时间内将所述数据流进行删除。
一种基于流的深度报文检测协议解码设备,所述设备包括数据接 收模块、数据分流模块、协议类型识别模块、流管理模块及深度报文 检测处理模块,其中
所述数据接收模块,用于接收移动业务数据;
所述数据分流模块,连接于所述数据接收模块,用于将不同的数 据流分发到不同线程中处理;
所述协议类型识别模块,连接于所述数据分流模块,用于各线程 对经过分流的数据的协议类型进行识别;
所述流管理模块,连接于所述协议类型识别模块,用于各线程将 同 一数据流分发到相同深度报文检测处理模块;
深度报文检测处理模块,连接于所迷流管理模块,用于调用正则 表达式规则库对经过流管理模块的数据进行协议解码。
一种基于流的深度报文检测协议解码系统,所述系统包括路由设 备及深度报文检测协议解码设备,其中
所述路由设备,用于转发网络通信数据并同时将所转发的数据复 制 一份发给所述深度报文检测协议解码设备;
所述深度报文检测协议解码设备,用于接收所述路由设备发送的 业务数据,将不同的数据流分发到不同线程中处理,对所述数据的协 议类型进行识别,将经过协议类型识别后的同 一数据流分发到相同深 度报文检测处理模块,调用正则表达式规则库对所述数据进行协议解 码。
本发明通过深度报文检测硬件技术和正则表达式规则库相接合, 并采用多线程技术对复杂的用户业务数据进行硬件解码,大大提高了解码速度,满足实时解码要求,而且减少了对服务器内存的需求,降 低了成本。


图1是本发明基于流的深度报文检测协议解码设备的结构示意
图2是本发明基于流的深度报文检测协议解码系统的结构示意
图3是本发明基于流的深度报文检测协议解码方法的流程示意图。
具体实施例方式
下面结合附图及具体实施例对本发明做进一步的说明。
在本发明的实施例中,考虑到DPI(Deep Packet Inspection,深度 报文检测)硬件对数据进行协议解码时具有快速准确的特点,采用了 将DPI检测设备并联到路由器或交换机的组网方式。其中,DPI深度 报文检测技术是一种基于应用层数据的检测技术,当IP数据包、TCP 或UDP数据流通过基于DPI技术的系统时,DPI能正确提取所述数 据包或数据流信息,从而对移动数据业务进行监测、控制、识别、分 类、统计。本发明的实施例采用DPI检测技术并结合数据网监测系统 特点,解决了 DPI实时协议解码问题。本实施例可应用于移动数据业 务系统,如故障才殳诉系统,故障定位系统。运营商通过本发明可进4亍 各种业务分析,/人而实现对网络维护、优化。
请参阅图1,图1是本发明基于流的DPI协议解码设备的结构示 意图。DPI协议解码设备100包括数据接收模块102、数据分流模块 104、协议类型识别模块106、流管理模块108及DPI处理模块110。
其中,数据接收模块102用于接收移动业务数据。所述数据通过 路由器或交换机进行分光或端口镜像给DPI协议解码设备100,即网 络中路由器或交换机在转发数据的同时将所转发的数据复制一份发 给DPI协议解码i更备100。数据分流模块104,连接于数据接收模块102,用于对数据接收 模块102接收的数据进行分流,即分析提取数据中用户的流信息,并 根据所述用户的流信息将不同的数据流分发到不同线程中处理。
协议类型识别模块106,连接于数据分流模块104,用于各线程 对经过分流的数据的协议类型进行识别,并丟弃属于不需要分析的 协议类型的数据。
流管理模块108,连接于协议类型识别模块106,用于各线程对 经过协议类型识别后的数据流的建立、维护、删除、老化进行管理, 使得同一数据流分发到相同DPI处理模块进行处理。其中,所述流 的建立是指一个新的流到来时建立新流表;所述流的维护是指对一 个流的中间数据报文的管理,当一个数据报文到来时,先在流表中 查找其对应的流号,若能找到,则说明所述数据报文不是第一个报 文,再判断所述数据报文是否为最后一个包,若不是,则将所述数 据报文归入对应的数据流中,否则进行流的删除;流的老化是指当 因为数据出现乱序或重发而出现流没有被正常删除时,启动定时器 在定时时间内将其删除。
DPI处理模块110,连接于流管理模块108,用于调用正则表达 式规则库对经过流管理模块的数据进行协议解码。其中,DPI处理 模块110包括至少一 DPI芯片,用于调用解码函数及正则表达式规 则库进行解码。所述DPI芯片包括多个引擎模块,每个引擎模块可 以独自进行协议解码,即所述DPI芯片通过所述多个引擎模块对数 据进行并行协议解码。基于DPI技术的协议解码需要一个正则表达 式规则库,所述正则表达式规则库是定义了某些协议的规则,即规 定了某种类型的协议包含的信息内容。当有新的协议出现或协议升 级时,所述正则表达式规则库也要更新才能对具有新协议的数据流 进行识别。
请参阅图2,图2是本发明基于流的DPI协议解码系统的结构示 意图,所述系统包括路由器及DPI协议解码设备。其中,所述路由器 用于在通信网络中转发业务数据,并将所转发的数据复制一份发给所 述DPI协议解码设备;所述DPI协议解码设备并联于所述路由器上,用于接收所述路由器发送的数据,对所述接收的数据进行分流并对分流后的数据进行协议类型判断,再对每一个协议中数据进行流管理,确保同一个数据流发送给同一个DPI处理模块中进行解码,最后通过
DPI处理模块对数据进行协议解码。这种并联接入的方式由于是独立
进行数据协议解码,所以对移动系统进行数据通信的影响较小。
请参阅图3,图3是图2所示的系统在进行协议解码时的方法实施例流程图,所述方法包括以下的步骤
步骤301: DPI处理模块进行初始化,并加载编译后的正则表达式规则库。其中,DPI处理模块中的DPI芯片经过初始化后才能正常工作,本步骤在DPI处理模块进行初始化之前还包括对所述正则表达式规则库进行编译,将其转换成DPI芯片可识别格式的数据,这样DPI处理模块才能对数据报文进行DPI协议解码;
步骤302:所述数据接收模块读取业务数据,并将其发给所述数据分流模块。本步骤还包括所述路由器在转发业务数据时并将所转发的数据复制一份发给所述数据接收模块;
步骤303:所述数据分流模块接收到所述数据后,对其进行分流。即分析提取数据中用户的流信息,并根据所述用户的流信息将所述数据分发到不同线程中处理。其中,对于TCP数据流,采用五元组进4亍分流。所述五元组包4舌源IP地址、目的IP地址、源端口、目的端口和协议类型。所以纟艮据TCP tt据流的源IP地址、目的IP地址、源端口、目的端口和协议类型,将其分到不同的线程中;对于UDP数据流,则需要分析其应用层某一关键字即业务ID才能区分是否为同一个流,即同一业务过程。所以根据源IP地址、源端口、业务ID、协议类型来对UDP数据流进行流管理。如WSP协议中 一个上网业务,是通过其源IP地址、源端口、 WTP中的teid、协议类型来确定的。所述数据通过数据分流模块之后,不同的数据流分发到不同线程中并行进行处理,从而提高了处理速度;
步骤304:各线程的所述协议类型识别模块对经过分流的数据的协议类型进行识别,获取所述数据的协议类型;
步骤305:判断所述数据是否需要进行解码,若不需要,则直接丢弃所述数据,否则进行步骤306。其中,判断的方法是根据实际要求判断某种协议类型的数据是否需要进行解码;
步骤306:各线程的所述流管理模块对协议类型识别后的数据进行流管理,使得同一数据流分发到相同DPI处理冲莫块进行处理。所述流管理包括对数据流的建立、维护、删除、老化进行管理;
步骤307:所述DPI处理模块根据正则表达式规则库对经过流管理模块的数据进行DPI协议解码。所述DPI处理模块获取了所述数据的协议类型后,根据正则表达式规则库查找到与所述数据协议类型对应的协议解码规则;再对包含所述数据的数据包进行扫描,根据所述协议解码规则从所述数据包中提取所述数据的输出信息。
需要说明的是,所述DPI处理模块支持跨包扫描。对于跨包数据报文,则在下一个数据报文中输出结果,即若所述输出信息中包含跨包字段,则需要在前一包和当前包中取出对应字段结果,即可获得所述跨包的输出信息。另外,由于本实施例中采用的是正则表达式规则库匹配解码的方法,所述输出信息是匹配位置相对所述数据包的偏移量,所以步骤307还包括根据所述输出信息从所述数据包提取解码信息。
相比于现有技术,本发明通过DPI硬件技术和正则表达式失见则库相接合,并采用多线程技术对复杂的用户业务数据进行硬件解码。由于在相同条件下,DPI硬件解码速度是软件解码速度的IO倍以上,所以本发明大大提高了解码速度,满足实时解码要求,而且由于DPI硬件支持跨包扫描,只需保存一个数据流中的前一 包及当前包的信息,所以这就大大减少了对服务器内存的需求,降低了成本。
以上仅为本发明的优选实施案例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种基于流的深度报文检测协议解码方法,其特征在于,所述方法包括接收业务数据流,将不同的数据流分发到不同线程中处理;识别分流后所述数据流的协议类型,将同一数据流分发到相同深度报文检测处理模块;深度报文检测处理模块调用正则表达式规则库,对所述数据进行协议解码。
2、 根据权利要求1所述基于流的深度报文检测协议解码方法, 其特征在于,所述深度报文检测处理模块调用正则表达式规则库,对 所述数据进行协议解码包括所述深度才艮文检测处理模块获取所述数据的协议类型后,根据正 则表达式规则库查找到与所述数据协议类型对应的协议解码规则;对包含所述数据的数据包进行扫描,根据所述协议解码规则从所 述数据包中提取所述数据的输出信息;根据所述输出信息从所述数据包中提取所述数据的解码信息。
3、 根据权利要求1所述基于流的深度报文检测协议解码方法, 其特征在于,所述接收业务数据流之前包括深度报文检测处理模块 进行初始化并加载编译后的正则表达式规则库。
4、 根据权利要求3所述基于流的深度报文检测协议解码方法, 其特征在于,所述方法还包括对所述正则表达式规则库进行编译,将其转换成深度报文检测处 理模块可识别格式的数据。
5、 根据权利要求1所述基于流的深度报文检测协议解码方法, 其特征在于,所述将不同的数据流分发到不同线程中处理包括分析提取数据中用户的流信息,并根据所述用户的流信息将所述数据分发到不同线程中处理。
6、 根据权利要求5所述基于流的深度报文检测协议解码方法, 其特征在于,所述方法具体包括对于TCP数据流,根据TCP凄史据流的源IP地址、目的IP地址、 源端口、目的端口和协议类型,将其分到不同的线程中;对于UDP数据流,根据UDP数据流的源IP地址、源端口 、业 务ID、协议类型来将其分到不同的线程中。
7、 根据权利要求1的基于流的深度报文检测协议解码方法,其 特征在于,所述识别分流后所述数据流的协议类型,将同一数据流分 发到相同深度报文检测处理模块包括对经过分流的数据流的协议类型进行识别,获取所述数据流中数 据的协议类型;根据实际要求的协议类型判断所述数据流中的数据是否需要进 行解码,若不需要则直接丢弃所述数据,若需要,则将同一数据流分 发到相同深度报文检测处理模块。
8、 根据权利要求7的基于流的深度报文检测协议解码方法,其 特征在于,所述将同 一数据流分发到相同深度报文检测处理模块包 括在接收到新的数据流时建立新的流表;当接收到数据报文时,先在所述流表中查找其对应的流号,若能 找到,再判断所述数据报文是否为最后一个包,若不是,则将所述数 据报文归入对应的lt据流中,否则进行流的删除;当所述数据流出现乱序或重发且所述数据流没有被正常删除时, 启动定时器在定时时间内将所述数据流进行删除。
9、 一种基于流的深度报文检测协议解码设备,其特征在于,所 述设备包括数据接收模块、数据分流模块、协议类型识别模块、流管理模块及深度报文检测处理模块,其中所述数据接收模块,用于接收移动业务数据;所述数据分流模块,连接于所述数据接收模块,用于将不同的数据流分发到不同线程中处理;所述协议类型识别模块,连接于所述数据分流模块,用于各线程 对经过分流的数据的协议类型进行识别;所述流管理模块,连接于所述协议类型识别模块,用于各线程将 同 一数据流分发到相同深度报文检测处理模块;深度报文检测处理模块,连接于所述流管理模块,用于调用正则 表达式规则库对经过流管理模块的数据进行协议解码。
10、 一种基于流的深度报文检测协议解码系统,其特征在于,所 述系统包括路由设备及深度报文检测协议解码设备,其中所述路由设备,用于转发网络通信数据并同时将所转发的数据复 制一份发给所述深度报文检测协议解码设备;所述深度报文检测协议解码设备,用于接收所述路由设备发送的 业务数据,将不同的数据流分发到不同线程中处理,对所述数据的协 议类型进行识别,将经过协议类型识别后的同一数据流分发到相同深 度报文检测处理模块,调用正则表达式规则库对所述数据进行协议解 码。
全文摘要
本发明提供一种基于流的深度报文检测协议解码方法,所述方法包括接收业务数据流,将不同的数据流分发到不同线程中处理;识别分流后所述数据流的协议类型,将同一数据流分发到相同深度报文检测处理模块;深度报文检测处理模块调用正则表达式规则库,对所述数据进行协议解码。另外,本发明还提供了一种基于流的深度报文检测协议解码的设备及系统。本发明提高了解码速度,满足实时解码要求,而且减少了对服务器内存的需求,降低了成本。
文档编号H04W24/04GK101605018SQ20091010835
公开日2009年12月16日 申请日期2009年6月17日 优先权日2009年6月17日
发明者谢银祥 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1