CN105978760A - 一种基于C4.5决策树的VoIP流量在线识别方法 - Google Patents

一种基于C4.5决策树的VoIP流量在线识别方法 Download PDF

Info

Publication number
CN105978760A
CN105978760A CN201610493333.1A CN201610493333A CN105978760A CN 105978760 A CN105978760 A CN 105978760A CN 201610493333 A CN201610493333 A CN 201610493333A CN 105978760 A CN105978760 A CN 105978760A
Authority
CN
China
Prior art keywords
decision tree
data
packet
online
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610493333.1A
Other languages
English (en)
Other versions
CN105978760B (zh
Inventor
刘建明
唐霞
李龙
陈振舜
张致远
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guilin University of Electronic Technology
Original Assignee
Guilin University of Electronic Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guilin University of Electronic Technology filed Critical Guilin University of Electronic Technology
Priority to CN201610493333.1A priority Critical patent/CN105978760B/zh
Publication of CN105978760A publication Critical patent/CN105978760A/zh
Application granted granted Critical
Publication of CN105978760B publication Critical patent/CN105978760B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/026Capturing of monitoring data using flow identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于C4.5决策树的VoIP流量在线识别方法,该方法对语音流关键特征进行筛选获得最优特征子集并使用C4.5决策树算法构建分类器,提高了在线识别精度;首次提出JPcap边抓包边检测机制,利用Jpcap库编写探嗅器实时捕获数据包,同时分流统计数据流特征值,结合阈值时间动态识别网络中的VoIP流量,并提高了实时性。识别结果表明,本发明离线识别精度达99%,在线识别精度达92%,且识别时间仅为0.57秒,克服了现有技术不足,完成了高精度、实时性的VoIP流量在线识别。

Description

一种基于C4.5决策树的VoIP流量在线识别方法
技术领域
本发明涉及流量识别技术领域,特别是涉及一种基于C4.5决策树的VoIP流量在线识别方法。
背景技术
VoIP(Voice over Internet Protocal)因其业务成本低、部署方便,在语音通信业务中的比例持续上升,而其发展带来机遇的同时也给网络安全运行带来了巨大挑战。近年来,非法隐性运营的VoIP应用造成广告、欺诈类电话越来越多,给人们群众的日常生活造成了干扰和危害,因此,对VoIP业务进行管控显得尤为重要。而高精度在线VoIP流量在线识别成为了实际应用中亟待解决的难题。
当前的研究集中在离线识别,主要使用机器学习算法构建分类器模型。文献1“肖梅,辛阳.基于朴素贝叶斯算法的VoIP流量识别技术研究[J].信息网络安全,2015(10).”针对QQ语音VoIP流量类型为研究对象,选用选用数据包长和数据包间隔时间作为流特征,采用朴素贝叶斯算法搭建分类器模型,能准确识别VoIP流量。而朴素贝叶斯算法建模在实际应用中仍存在一些问题,朴素贝叶斯分类算法过度依赖于属性的条件独立性,而这在实际应用中往往是不成立的,且文献没有对在线识别进行研究。文献2“梁伟,陈福才,李海涛.一种基于C4.5决策树的VoIP流量识别方法[J].计算机应用研究,2012,29(9):3418-3421”提出了一种针对常见VoIP应用进行识别的方法,通过选取反映VoIP流量本质规律的几个特征,结合C4.5决策树算法,取得了较好的识别效果。然而,文献没有充分考虑提取特征时计算复合特征所带来的时间消耗,无法应用于在线VoIP流量识别。
由于离线识别无法应用于实际网络当中,因此对VoIP流量进行在线识别显得十分必要。文献3“Gu C,Zhang S,Sun Y.Realtime Encrypted Traffic Identification usingMachine Learning[J].Journal of Software,2011,6(6):1009-1016”将每个完整流的前12个数据包作为子流,并基于流特征完成VoIP流量在线识别。然而文献并没有对系统的实时性进行研究,且取固定数据包个数进行识别不具备稳定性,系统并没有实现真正意义上的在线识别。文献4“Di Mauro M,Longo M.Skype traffic detection:A decision theorybased tool[C]//Security Technology(ICCST),2014International CarnahanConference on.IEEE,2014:1-6”提出调用TShark模块实现在线抓包,并利用WEKA工具中的机器学习算法构建分类器,以实现VoIP流量的在线识别,但精度较低,只达83%,且Tshark只能在Linux系统下工作。
发明内容
针对现在技术的不足,本发明提出一种基于C4.5决策树的VoIP流量在线识别方法,该方法适合VoIP流量在线识别,能高精度的完成在线识别工作,实现VoIP流量的实时动态识别。
实现本发明目的的技术方案是:
一种基于C4.5决策树的VoIP流量在线识别方法,包括以下步骤:
1)解析PCAP文件;
解析捕获到的PCAP文件格式数据集,得到CSV文件格式的数据集。解析过程按源IP地址、目的IP地址、源端口、目的端口、传输协议组成的五元组分流,分流规则为:单条TCP流须包含完整语义的开始时刻(SYN)和结束时刻(FIN/RST),UDP流中两个包之间的时间间隔不超过30s,完成UDP流的组装;
2)流统计特征选择;
根据VoIP语音流的关键属性筛选出12个流统计特征集:前向最大数据包长、前向平均数据包长、前向数据包长方差、后向最大数据包长、后向平均数据包长、后向数据包长方差、前向最大时间间隔、前向平均时间间隔、前向时间间隔方差、后向最大时间间隔、后向平均时间间隔和后向时间间隔方差,作为C4.5决策树算法进行学习的特征集;
3)构建训练集;
数据集由三部分组成:捕获到的数据集文件;Tstat网下载的数据集文件和文献“Moore A,Zuev D,Crogan M.Discriminators for use in flow-based classification[M].Queen Mary and Westfield College,Department of Computer Science,2005”提供的数据集文件。再重复步骤1)并统计步骤2)中的流统计特征值,组装为训练集,记train_set;
4)构建C4.5决策树分类器;
使用C4.5决策树算法对训练集进行学习,进行学习的特征子集为步骤2)中的12个特征,学习后得到决策树分类器模型,即离线分类器;
5)测试C4.5决策树分类器;
利用上述分类器模型对训练集进行十折交叉验证,得到分类器结果;
6)构建Jpcap边抓包边检测机制;
基于Jpcap库,构建Jpcap探嗅器,实现VoIP流量在线捕获;设置30s阈值时间,将阈值时间内累积的数据流量构建为系统的测试集文件;
7)构建在线C4.5决策树分类器;
利用C4.5决策树分类器每30s对测试集进行测试,将测试结果以IP地址形式输出,实现VoIP流量在线识别;
通过上述步骤就能达到VoIP的流量在线识别的目的。
步骤3)中,将训练集切分为10个互不相交、大小相同的子集;
将其中9个数据子集作为训练集构建模型,剩下的一个作为测试集测试模型好坏;
进行10次重复选择,最终选出10次测评中平均测试误差最小的模型,并输出结果。
本发明的离线识别精度为99%,建模时间为0.5s。
步骤4)中,设训练集为:
D={(x1,y1),(x2,y2),…,(xN,yN)} (1)
式中,xi=(xi (1),xi (2),…,xi (n))T表示特征向量,n为特征的个数,yi∈{1,2,…,K}为类,i=1,2,…,N,N为样本数量,构建分类器的过程就是求得x到y的映射,这个映射基于信息增益比得到;
设X为随机变量,只能选有限个值,其概率分布为:
P(X=xi)=pi,i=1,2,…,n (2)
则X的熵为:
H ( X ) = - Σ i = 1 n p i log p i - - - ( 3 )
对于随机变量(X,Y),得到其联合概率分布:
P(X=xi,Y=yj)=pij,i=1,2,…,n;j=1,2,…,m (4)
进一步得到其条件熵H(Y|X):
H ( Y | X ) = Σ i = 1 n p i H ( Y | X = x i ) - - - ( 5 )
则特征A对训练集D的信息增益g(D,A)为:
g(D,A)=H(D)-H(D|A) (6)
最终得到信息增益比:
g R ( D , A ) = g ( D , A ) H A ( D ) - - - ( 7 )
其中:
H A ( D ) = - Σ i = 1 n | D i | | D | log 2 | D i | | D | - - - ( 8 )
n为特征A取值个数;
根据以上推导,得到C4.5决策树的生成过程步骤如下:
设输入为:训练集D,特征集A,阈值ε;
输出为:决策树T;
如果D中所有实例属于同一类Ck,则置T为单结点树,并将Ck作为该结点的类,返回T;
如果则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类,返回T;
否则,按式(7)计算A中各个特征对D的信息增益比,选择值最大特征Ag
如果Ag的信息增益比小于阈值ε,则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类,返回T;
否则,对Ag的每一个可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
对结点i,以Di为训练集,以A-{Ag}为特征集,递归调用步骤A~E,得到子树Ti,返回Ti
得到决策树模型之后,再对其进行修剪,修剪准则为得到最小化的损失模型函数:
C α ( T ) = Σ t = 1 | T | N t H t ( T ) + α | T | - - - ( 9 )
式中,|T|为决策树叶结点个数,t是T的叶结点,该叶结点有Nt个样本点,其中k类样本点有Ntk个,k=1,2,…,K,Ht(T)为叶结点t上的经验熵,参数α≥0;
最终得到C4.5决策树离线分类器,就能在线识别VoIP的流量。
步骤6)中,构建Jpcap探嗅器捕获数据包:
探嗅器基于Jpcap库,利用其接口PacketReceiver与三个核心类:NetworkInterface、JpcapCaptor、Packet捕获流经本地网卡的所有数据流量;
设置在线识别阈值时间:
设置捕获数据包的阈值时间设置为30s,将30s以内的数据流作为分类器的测试集,一旦达到30s便对测试集进行识别,同时,另一线程仍继续捕获数据包;
将数据包分流得到数据流:
对探嗅器实时捕获的每个数据包按五元组进行分流,由于阈值时间设置为30s,因此只要五元组相同即可判断为一个数据流,数据流又包括前向流与后向流,前向流与后向流指五元组中源地址、目的地址互相相反,源端口、目的端口互相相反的流;
将数据流存入本地文件:
同时将分流后的数据流保存至本地CSV文件以备使用;
读取本地文件:
达到30s阈值时间时,读取本地文件中保存的数据流;
统计数据流12个流特征值:
读取到数据流后,分别统计每条数据流的12个流特征值,统计结果同样存为CSV文件;
测试集:
将上述CSV文件作为在线识别分类器的测试集送入在线分类器;
得到Jpcap边抓包边检测机制。
有益效果
本发明提供了一种基于C4.5决策树的VoIP流量在线识别方法,该方法对语音流关键特征进行筛选获得最优特征子集并使用C4.5决策树算法构建分类器,提高了在线识别精度;首次提出JPcap边抓包边检测机制,利用Jpcap库编写探嗅器实时捕获数据包,同时分流统计数据流特征值,结合阈值时间动态识别网络中的VoIP流量,并提高了实时性,识别结果表明,本发明离线识别精度达99%,在线识别精度达92%,且识别时间仅为0.57秒,克服了现有技术不足,完成了高精度、实时VoIP流量在线识别,基于机器学习算法构建分类器模型,算法进行学习的特征子集通过VoIP语音流的关键语音属性进行筛选,在获得分类器模型的基础上,首次提出Jpcap边抓包边检测机制,在Windows系统上利用Jpcap库编写在线探嗅器获取局域网中所有数据流,并通过设置阈值时间,实现VoIP流量的实时动态识别。
附图说明
图1为本发明基于C4.5决策树的VoIP流量在线识别方法的流程图;
图2为VoIP流量在线识别的某次识别结果图。
具体实施方式
一种基于C4.5决策树的VoIP流量在线识别方法,包括以下步骤:
1)解析PCAP文件;
解析捕获到的PCAP文件格式数据集,得到CSV文件格式的数据集。解析过程按源IP地址、目的IP地址、源端口、目的端口、传输协议组成的五元组分流,分流规则为:单条TCP流须包含完整语义的开始时刻(SYN)和结束时刻(FIN/RST),UDP流中两个包之间的时间间隔不超过30s,完成UDP流的组装;
2)流统计特征选择;
根据VoIP语音流的关键属性筛选出12个流统计特征集:前向最大数据包长、前向平均数据包长、前向数据包长方差、后向最大数据包长、后向平均数据包长、后向数据包长方差、前向最大时间间隔、前向平均时间间隔、前向时间间隔方差、后向最大时间间隔、后向平均时间间隔和后向时间间隔方差,作为C4.5决策树算法进行学习的特征集;
3)构建训练集;
数据集由三部分组成:捕获到的数据集文件;Tstat网下载的数据集文件和文献“Moore A,Zuev D,Crogan M.Discriminators for use in flow-based classification[M].Queen Mary and Westfield College,Department of Computer Science,2005”提供的数据集文件;再重复步骤1)并统计步骤2)中的流统计特征值,组装为训练集,记train_set;
4)构建C4.5决策树分类器;
使用C4.5决策树算法对训练集进行学习,进行学习的特征子集为步骤2)中的12个特征,学习后得到决策树分类器模型,即离线分类器;
5)测试C4.5决策树分类器;
利用上述分类器模型对训练集进行十折交叉验证,得到分类器结果;
6)构建Jpcap边抓包边检测机制;
基于Jpcap库,构建Jpcap探嗅器,实现VoIP流量在线捕获;设置30s阈值时间,将阈值时间内累积的数据流量构建为系统的测试集文件;
7)构建在线C4.5决策树分类器;
利用C4.5决策树分类器每30s对测试集(累积30s的在线数据流文件)进行测试,将测试结果以IP地址形式输出,实现VoIP流量在线识别;
通过上述步骤就能达到VoIP的流量在线识别的目的。
步骤3)中,将训练集切分为10个互不相交、大小相同的子集;
将其中9个数据子集作为训练集构建模型,剩下的一个作为测试集测试模型好坏;
进行10次重复选择,最终选出10此测评中平均测试误差最小的模型,并输出结果;
本发明的离线识别精度为99%,建模时间为0.5s。
步骤4)中,设训练集为:
D={(x1,y1),(x2,y2),…,(xN,yN)} (1)
式中,xi=(xi (1),xi (2),…,xi (n))T表示特征向量,n为特征的个数,yi∈{1,2,…,K}为类,i=1,2,…,N,N为样本数量,构建分类器的过程就是求得x到y的映射,这个映射基于信息增益比得到;
设X为随机变量,只能选有限个值,其概率分布为:
P(X=xi)=pi,i=1,2,…,n (2)
则X的熵为:
H ( X ) = - Σ i = 1 n p i log p i - - - ( 3 )
对于随机变量(X,Y),得到其联合概率分布:
P(X=xi,Y=yj)=pij,i=1,2,…,n;j=1,2,…,m (4)
进一步得到其条件熵H(Y|X):
H ( Y | X ) = Σ i = 1 n p i H ( Y | X = x i ) - - - ( 5 )
则特征A对训练集D的信息增益g(D,A)为:
g(D,A)=H(D)-H(D|A) (6)
最终得到信息增益比:
g R ( D , A ) = g ( D , A ) H A ( D ) - - - ( 7 )
其中:
H A ( D ) = - Σ i = 1 n | D i | | D | log 2 | D i | | D | - - - ( 8 )
n为特征A取值个数;
根据以上推导,得到C4.5决策树的生成过程步骤如下:
设输入为:训练集D,特征集A,阈值ε;
输出为:决策树T;
如果D中所有实例属于同一类Ck,则置T为单结点树,并将Ck作为该结点的类,返回T;
如果则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类,返回T;
否则,按式(7)计算A中各个特征对D的信息增益比,选择值最大特征Ag
如果Ag的信息增益比小于阈值ε,则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类,返回T;
否则,对Ag的每一个可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
对结点i,以Di为训练集,以A-{Ag}为特征集,递归调用步骤A~E,得到子树Ti,返回Ti
得到决策树模型之后,再对其进行修剪。修剪准则为得到最小化的损失模型函数:
C α ( T ) = Σ t = 1 | T | N t H t ( T ) + α | T | - - - ( 9 )
式中,|T|为决策树叶结点个数,t是T的叶结点,该叶结点有Nt个样本点,其中k类样本点有Ntk个,k=1,2,…,K,Ht(T)为叶结点t上的经验熵,参数α≥0;
得到C4.5决策树离线分类器。
步骤6)中,构建Jpcap探嗅器捕获数据包;
探嗅器基于Jpcap库,利用其接口PacketReceiver与三个核心类:NetworkInterface、JpcapCaptor、Packet捕获流经本地网卡的所有数据流量。
设置在线识别阈值时间;
设置捕获数据包的阈值时间设置为30s,将30s以内的数据流作为分类器的测试集,一旦达到30s便对测试集进行识别,同时,另一线程仍继续捕获数据包;
将数据包分流得到数据流:
对探嗅器实时捕获的每个数据包按五元组进行分流,由于阈值时间设置为30s,因此只要五元组相同即可判断为一个数据流,数据流又包括前向流与后向流,前向流与后向流指五元组中源地址、目的地址互相相反,源端口、目的端口互相相反的流;
将数据流存入本地文件:
同时将分流后的数据流保存至本地CSV文件以备使用;
读取本地文件:
达到30s阈值时间时,读取本地文件中保存的数据流;
统计数据流12个流特征值;
读取到数据流后,分别统计每条数据流的12个流特征值,统计结果同样存为CSV文件;
测试集:
将上述CSV文件作为在线识别分类器的测试集送入在线分类器;
得到Jpcap边抓包边检测机制。
VoIP流量在线识别过程如图1所示:
S101:解析PCAP文件;
S102:流统计特征选择;
S103:构建训练集;
S104:加载C4.5算法;
S105:构建离线分类器;
S106:构建Jpcap探嗅器;
S107:判断是否达到30s,是则跳转S111,否则继续执行S108;
S108:继续使用S106步骤中的Jpcap探嗅器捕获数据包;
S109:对数据包分流得到数据流;
S110:将数据流存为本地文件;
S111:达到30s时,读取本地文件;
S112:统计数据流的12个流统计特征值;
S113:测试集;
S114:识别出VoIP流量;
S115:结果以IP地址形式输出。
VoIP流量在线识别的某次识别结果如图2所示:第一个文本框为离线C4.5分类器结果,第二个文本框为在线识别结果。实验结果表明,离线分类器识别精度为99%,建模时间为0.5s,在线实验累积进行100次,得到VoIP流量在线识别平均精度为92%,识别时间为0.57s。
综上所述,本发明提供了一种基于C4.5决策树的VoIP流量在线识别方法,该方法对语音流关键特征进行筛选获得最优特征子集并使用C4.5决策树算法构建分类器,提高了在线识别精度;首次提出JPcap边抓包边检测机制,结合阈值时间动态识别网络中的VoIP流量,并提高了实时性。因此,本发明克服了现有技术不足,完成了高精度、实时VoIP流量在线识别。
实施例1:
解析PCAP文件
使用Wireshark软件捕获的数据流文件或下载的数据流文件均为PCAP文件格式,而本发明需要CSV文件格式的训练集,因此需要进行格式转换,方法如下:
分析PCAP文件头,包括:数据链路层14字节包头+20字节IP包头+20字节TCP或UDP包头;
编程实现PCAP文件头中五元组{源IP地址、目的IP地址、源端口、目的端口、传输协议}、数据包长与时间间隔等特征的提取;
按照Cisco分流规则(UDP流的数据包间隔时间不超过30s)完成UDP流的组装;
将组装好的数据集存为CSV格式。
选取相关的12个流统计特征作为C4.5决策树算法进行学习的特征集,如表1所示。
表1流统计特征集
配置交换机镜像端口,将局域网中所有流量镜像到PC终端上,在PC终端上使用Wireshark软件捕获局域网中所有数据流,存为数据集1;
于Tstat网上下载Skype流,存为数据集2;
下载Andrew Moore等人提供的数据集,存为数据集3;
将上述3个数据集,组成data_set数据集,共2.5G,34371余条数据流,囊括13种数据类型;
具体见表2:
表2:data_set组成部分
计算data_set的12个流统计特征值,最终组装为train_set训练集;
通过公式(9),加载加载C4.5算法
C α ( T ) = Σ t = 1 | T | N t H t ( T ) + α | T | - - - ( 9 )
加C4.5决策树算法对train_set训练集进行学习,学习的特征集为表2中的12个特征,得到C4.5决策树离线分类器。
首先定义探嗅器抓的单个的数据包,给出本发明定义的数据包类PacktItem,其成员变量定义如下:
public String srcIP="";//源地址
public String dstIP="";//目的地址
public int srcPort=0;//源端口
public int dstPort=0;//目的端口
public String protocol="";//协议号
public int packetLen=0;//包长
public Long timeStamp=0L;//时间戳,sec+usec
通过public PacketItem init(Packet packet)对其进行初始化与更新。
然后调用Jpcap库中的public String[]getInterface()函数函数获取网卡信息,返回所有网络接口到数组String并打印出描述信息,供用户选择;
在调用public void getCap()函数打开用户选择的网卡,建立连接;
继续调用jCaptor.processPacket(-1,this)不间断抓包;
最后调用public void receivePacket(Packet packet)函数,每抓到一个数据包就进入此函数进行相应的处理;
设置阈值时间为30s,
继续使用Jpcap探嗅器捕获数据包;
Jpcap探嗅器每捕获到一个数据包就对其进行分流,五元组相同则为同一数据流,其中又分为前向数据流与后向数据流;
首先定义数据流:public ArrayList<ArrayList<PacketItem>>
dataFlow=new ArrayList<ArrayList<PacketItem>>();
进入receivePacket(Packet packet)后首先得到数据包的五元组、数据包长与时间戳等信息;
利用public boolean isForward(PacketItem stdFiveTurnel,PacketItem pi)和public boolean isBackward(PacketItem stdFiveTurnel,PacketItem pi)两个函数判断数据流为前向流还是后向流,;
用public ArrayList<ArrayList<PacketItem>>saveFile()函数将一条一条的数据流文件保存至本地文件;
达到30s时,用public void readFileByLines(String fileName)一条一条读取数据流,读取本地文件;
统计数据流的12个流统计特征值:
首先给出流统计特征值类FlowFeature,其成员变量定义如下:
private int meanFPktLen=0;//平均前向包长
private int maxFPktLen=0;//最大前向包长
private double stdFPktLen=0;//前向包长方差
private int meanBPktLen=0;//平均后向包长
private int maxBPktLen=0;//最大后向包长
private double stdBPktLen=0;//后向包长方差
private double meanFIterArrTime=0;//平均前向时间间隔
private double maxFIterArrTime=0;//最大前向时间间隔
private double stdFIterArrTime=0;//前向时间间隔方差
private double meanBIterArrTime=0;//平均后向时间间隔
private double maxBIterArrTime=0;//最大后向时间间隔
private double stdBIterArrTime=0;//后向时间间隔方差
private String type="?";//类类型
利用public ArrayList<FlowFeature>statistic(ArrayList <ArrayList<PacketItem>>dataFlow)函数统计数据流的12个流统计特征值;
将上述统计好的数据流组装为测试集,并利用public File createCSVFile()函数将测试集m_testFile存为CSV文件格式,并将最后一个元素标记为“?”号;
首先调用CSVLoader的setSource(cf.m_testFile)选定测试集;
再通过调用public Classifier J48Classify(ClassifierFrame cf),加载S105构建好的C4.5决策树分类器对测试集进行分类,得到识别结果,以字符串表示,记作result;S115:结果以IP地址形式输出
调用result.equalsIgnoreCase("YES")函数得到识别结果为数据流,识别出VoIP流量,将IP地址输出至m_output文本框。

Claims (4)

1.一种基于C4.5决策树的VoIP流量在线识别方法,其特征在于:包括以下步骤:
1)解析PCAP文件;
解析捕获到的PCAP文件格式数据集,得到CSV文件格式的数据集。解析过程按源IP地址、目的IP地址、源端口、目的端口、传输协议组成的五元组分流,分流规则为:单条TCP流须包含完整语义的开始时刻(SYN)和结束时刻(FIN/RST),UDP流中两个包之间的时间间隔不超过30s。完成UDP流的组装;2)流统计特征选择;
根据VoIP语音流的关键属性筛选出12个流统计特征集:前向最大数据包长、前向平均数据包长、前向数据包长方差、后向最大数据包长、后向平均数据包长、后向数据包长方差、前向最大时间间隔、前向平均时间间隔、前向时间间隔方差、后向最大时间间隔、后向平均时间间隔和后向时间间隔方差,作为C4.5决策树算法进行学习的特征集;
3)构建训练集;
数据集由三部分组成:捕获到的数据集文件;Tstat网下载的数据集文件和文献“MooreA,Zuev D,Crogan M.Discriminators for use in flow-based classification[M].Queen Mary and Westfield College,Department of Computer Science,2005”提供的数据集文件;再重复步骤1)并统计步骤2)中的流统计特征值,组装为训练集,记train_set;
4)构建C4.5决策树分类器;
使用C4.5决策树算法对训练集进行学习,进行学习的特征子集为步骤2)中的12个特征,学习后得到决策树分类器模型,即离线分类器;
5)测试C4.5决策树分类器;
利用步骤4)的分类器模型对训练集进行十折交叉验证,得到分类器结果;
6)构建Jpcap边抓包边检测机制;
基于Jpcap库,构建Jpcap探嗅器,实现VoIP流量在线捕获;设置30s阈值时间,将阈值时间内累积的数据流量构建为系统的测试集文件;
7)构建在线C4.5决策树分类器;
利用C4.5决策树分类器每30s对测试集进行测试,将测试结果以IP地址形式输出,实现VoIP流量在线识别。
2.根据权利要求1所述的基于C4.5决策树的VoIP流量在线识别方法,其特征在于:步骤3)中,将训练集切分为10个互不相交、大小相同的子集:
将其中9个数据子集作为训练集构建模型,剩下的一个作为测试集测试模型好坏;
进行10次重复选择,最终选出10次测评中平均测试误差最小的模型,并输出结果。
3.根据权利要求1所述的基于C4.5决策树的VoIP流量在线识别方法,其特征在于:步骤4)构建C4.5决策树分类器中,设训练集为:
D={(x1,y1),(x2,y2),…,(xN,yN)} (1)
式中,xi=(xi (1),xi (2),…,xi (n))T表示特征向量,n为特征的个数,yi∈{1,2,…,K}为类,i=1,2,…,N,N为样本数量,构建分类器的过程就是求得x到y的映射,这个映射基于信息增益比得到;
设X为随机变量,只能选有限个值,其概率分布为:
P(X=xi)=pi,i=1,2,…,n (2)
则X的熵为:
H ( X ) = - &Sigma; i = 1 n p i log p i - - - ( 3 )
对于随机变量(X,Y),得到其联合概率分布:
P(X=xi,Y=yj)=pij,i=1,2,…,n;j=1,2,…,m (4)
进一步得到其条件熵H(Y|X):
H ( Y | X ) = &Sigma; i = 1 n p i H ( Y | X = x i ) - - - ( 5 )
则特征A对训练集D的信息增益g(D,A)为:
g(D,A)=H(D)-H(D|A) (6)
最终得到信息增益比:
g R ( D , A ) = g ( D , A ) H A ( D ) - - - ( 7 )
其中:
H A ( D ) = - &Sigma; i = 1 n | D i | | D | log 2 | D i | | D | - - - ( 8 )
n为特征A取值个数,
根据以上推导,得到C4.5决策树的生成过程步骤如下:
设输入为:训练集D,特征集A,阈值ε;
输出为:决策树T;
如果D中所有实例属于同一类Ck,则置T为单结点树,并将Ck作为该结点的类,返回T;
如果则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类,返回T;
否则,按式(7)计算A中各个特征对D的信息增益比,选择值最大特征Ag
如果Ag的信息增益比小于阈值ε,则置T为单结点树,并将D中实例数最大的类Ck作为该结点的类,返回T;
否则,对Ag的每一个可能值ai,依Ag=ai将D分割为若干非空子集Di,将Di中实例数最大的类作为标记,构建子结点,由结点及其子结点构成树T,返回T;
对结点i,以Di为训练集,以A-{Ag}为特征集,递归调用步骤A~E,得到子树Ti,返回Ti
得到决策树模型之后,再对其进行修剪。修剪准则为得到最小化的损失模型函数:
C &alpha; ( T ) = &Sigma; t = 1 | T | N t H t ( T ) + &alpha; | T | - - - ( 9 )
式中,|T|为决策树叶结点个数,t是T的叶结点,该叶结点有Nt个样本点,其中k类样本点有Ntk个,k=1,2,…,K,Ht(T)为叶结点t上的经验熵,参数α≥0;
得到C4.5决策树分类器:
4.根据权利要求1所述的基于C4.5决策树的VoIP流量在线识别方法,其特征在于:步骤6)构建Jpcap边抓包边检测机制中,首先构建Jpcap探嗅器捕获数据包;
探嗅器基于Jpcap库,利用其接口PacketReceiver与三个核心类:NetworkInterface、JpcapCaptor、Packet捕获流经本地网卡的所有数据流量。
设置在线识别阈值时间
设置捕获数据包的阈值时间设置为30s,将30s以内的数据流作为分类器的测试集,一旦达到30s便对测试集进行识别,同时,步骤6)仍继续捕获数据包。
将数据包分流得到数据流
对探嗅器实时捕获的每个数据包按五元组进行分流,由于阈值时间设置为30s,因此只要五元组相同即可判断为一个数据流,数据流又包括前向流与后向流,前向流与后向流指五元组中源地址、目的地址互相相反,源端口、目的端口互相相反的流;
将数据流存入本地文件
同时将分流后的数据流保存至本地CSV文件以备使用;
读取本地文件
达到30s阈值时间时,读取本地文件中保存的数据流;
统计数据流12个流特征值
读取到数据流后,分别统计每条数据流的12个流特征值,统计结果同样存为CSV文件;
测试集
将上述CSV文件作为在线识别分类器的测试集送入在线分类器;
得到Jpcap边抓包边检测机制,实现VoIP流量在线识别。
CN201610493333.1A 2016-06-27 2016-06-27 一种基于C4.5决策树的VoIP流量在线识别方法 Active CN105978760B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610493333.1A CN105978760B (zh) 2016-06-27 2016-06-27 一种基于C4.5决策树的VoIP流量在线识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610493333.1A CN105978760B (zh) 2016-06-27 2016-06-27 一种基于C4.5决策树的VoIP流量在线识别方法

Publications (2)

Publication Number Publication Date
CN105978760A true CN105978760A (zh) 2016-09-28
CN105978760B CN105978760B (zh) 2019-07-19

Family

ID=57020119

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610493333.1A Active CN105978760B (zh) 2016-06-27 2016-06-27 一种基于C4.5决策树的VoIP流量在线识别方法

Country Status (1)

Country Link
CN (1) CN105978760B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107896160A (zh) * 2017-10-27 2018-04-10 中国科学技术大学 一种基于分布式系统的数据中心网络流量建模方法
CN109961792A (zh) * 2019-03-04 2019-07-02 百度在线网络技术(北京)有限公司 用于识别语音的方法和装置
CN110009061A (zh) * 2019-04-18 2019-07-12 南京邮电大学 一种基于机器学习的ap自适应优化选择方法
CN110061975A (zh) * 2019-03-29 2019-07-26 中国科学院计算技术研究所 一种基于离线流量包解析的仿冒网站识别方法及系统
CN110225212A (zh) * 2019-05-21 2019-09-10 中国电子科技集团公司第三十六研究所 一种VoIP语音恢复方法和装置
CN111641599A (zh) * 2020-05-11 2020-09-08 国家计算机网络与信息安全管理中心 一种VoIP网络流量所属平台的识别方法
CN117714246A (zh) * 2024-02-06 2024-03-15 成都宽域信息安全技术有限公司 一种宽频信号测量方法及系统

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ANDREW MOORE,DENIS ZUEV,MICHAEL CROGAN: "《Discriminators for use in flow-based classification》", 31 August 2005 *
TEJMANI S,NANDARANI N,PRADEEP L,IRENGBAM T S,SUKUMAR N: "Early detection of VoIP network flows based on sub-flow statistical characteristics of flows using machine learning techniques", 《2014 IEEE INTERNATIONAL CONFERENCE ON ADVANCED NETWORKS AND TELECOMMUNCATIONS SYSTEMS (ANTS)》 *
ZHANG JUN,CHEN CHAO,XIANG YANG: "Semi-Supervised and Compound Classification of Network Traffic", 《2012 32ND INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS WORKSHOPS》 *
梁伟,陈福才,李海涛: "一种基于C4.5决策树的VoIP流量识别方法", 《计算机应用研究》 *
鲁刚,张宏丽,叶麟: "P2P流量识别", 《软件学报》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107896160A (zh) * 2017-10-27 2018-04-10 中国科学技术大学 一种基于分布式系统的数据中心网络流量建模方法
CN107896160B (zh) * 2017-10-27 2019-07-23 中国科学技术大学 一种基于分布式系统的数据中心网络流量建模方法
CN109961792A (zh) * 2019-03-04 2019-07-02 百度在线网络技术(北京)有限公司 用于识别语音的方法和装置
CN109961792B (zh) * 2019-03-04 2022-01-11 阿波罗智联(北京)科技有限公司 用于识别语音的方法和装置
CN110061975A (zh) * 2019-03-29 2019-07-26 中国科学院计算技术研究所 一种基于离线流量包解析的仿冒网站识别方法及系统
CN110009061A (zh) * 2019-04-18 2019-07-12 南京邮电大学 一种基于机器学习的ap自适应优化选择方法
CN110225212A (zh) * 2019-05-21 2019-09-10 中国电子科技集团公司第三十六研究所 一种VoIP语音恢复方法和装置
CN111641599A (zh) * 2020-05-11 2020-09-08 国家计算机网络与信息安全管理中心 一种VoIP网络流量所属平台的识别方法
CN117714246A (zh) * 2024-02-06 2024-03-15 成都宽域信息安全技术有限公司 一种宽频信号测量方法及系统

Also Published As

Publication number Publication date
CN105978760B (zh) 2019-07-19

Similar Documents

Publication Publication Date Title
CN105978760A (zh) 一种基于C4.5决策树的VoIP流量在线识别方法
Bujlow et al. A method for classification of network traffic based on C5. 0 Machine Learning Algorithm
US11736364B2 (en) Cascade-based classification of network devices using multi-scale bags of network words
CN101714952B (zh) 一种接入网的流量识别方法和装置
CN103200133A (zh) 一种基于网络流引力聚类的流量识别方法
Pekár et al. Adaptive aggregation of flow records
CN112270351A (zh) 基于辅助分类生成对抗网络的半监督加密流量识别方法
Polverini et al. The power of SDN to improve the estimation of the ISP traffic matrix through the flow spread concept
US8826296B2 (en) Method of supervising a plurality of units in a communications network
Chari et al. Network traffic classification by packet length signature extraction
Liu et al. An information-theoretic approach to network monitoring and measurement
Uhlig On the complexity of Internet traffic dynamics on its topology
CN113382039A (zh) 一种基于5g移动网络流量分析的应用识别方法和系统
Aouini et al. Early classification of residential networks traffic using C5. 0 machine learning algorithm
Huang et al. A statistical-feature-based approach to internet traffic classification using machine learning
Pustisek et al. Empirical analysis and modeling of peer-to-peer traffic flows
JP4814270B2 (ja) トラヒック変動量推定方法およびその装置とプログラム
Dubin et al. Video quality representation classification of encrypted http adaptive video streaming
Silva et al. A modular traffic sampling architecture: bringing versatility and efficiency to massive traffic analysis
CN114679318A (zh) 一种高速网络中轻量级的物联网设备识别方法
Wang et al. Study on process of network traffic classification using machine learning
Zou et al. An enhanced Netflow data collection system
Liu et al. The Internet traffic classification an online SVM approach
Pekar et al. Towards threshold‐agnostic heavy‐hitter classification
Oveissian et al. Fast flow classification over internet

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20160928

Assignee: Guilin Hanchen Technology Co.,Ltd.

Assignor: GUILIN University OF ELECTRONIC TECHNOLOGY

Contract record no.: X2022450000381

Denomination of invention: An Online VoIP Traffic Identification Method Based on C4.5 Decision Tree

Granted publication date: 20190719

License type: Common License

Record date: 20221219

EE01 Entry into force of recordation of patent licensing contract