CN101674192B - 一种基于流量统计的VoIP识别方法 - Google Patents
一种基于流量统计的VoIP识别方法 Download PDFInfo
- Publication number
- CN101674192B CN101674192B CN2009100705213A CN200910070521A CN101674192B CN 101674192 B CN101674192 B CN 101674192B CN 2009100705213 A CN2009100705213 A CN 2009100705213A CN 200910070521 A CN200910070521 A CN 200910070521A CN 101674192 B CN101674192 B CN 101674192B
- Authority
- CN
- China
- Prior art keywords
- packet
- voip
- interval
- stream
- less
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于计算机网络管理技术领域,提出了一种在Internet中识别VoIP流量的方法。该方法从VoIP在终端使用端口号的数量、VoIP数据包大小的特点以及VoIP数据包到达时间间隔的特点等方面来筛选符合条件的流,从而实现VoIP流量的识别。本发明能够检测缓存中的流是否符合VoIP特征并加以标记,实现了Windows平台下的VoIP流量识别,在避免大量复杂计算的前提下,实现了对VoIP流量的识别并能维持较高的识别率。
Description
技术领域
本发明属于计算机网络管理技术领域,涉及一种检测VoIP流量的方法。
背景技术
随着互联网的快速发展,越来越多的网络应用进入人们的生活中。作为使用动态端口号的一类典型应用,VoIP具有其自身的固有属性和广泛应用。无论是为了让管理人员更好的管理网络,还是为了让研究人员分析和改善网络性能,实现VoIP流量的识别都是其中的基础环节。同时,VoIP流量的识别还能为入侵检测提供有力的支持。
传统的检测方法根据传输层的端口号来判断网络应用的具体类型。在网络应用都使用固定端口号的前提下,这不失为一种好办法。但是,随着互联网的发展,越来越多的网络应用开始使用动态的端口号。这就使得传统的方法不再适用。
当前的研究集中在对传输层的研究上。这类方案只应用传输层的信息来检测流量。由于避开了对应用层负载的处理,这类方法被认为有很大的发展前景。本发明的检测方法就属于这一范畴。目前,基于统计的方法和基于机器学习的方法都被应用到了检测中来。通过对统计数据的观测和对传输的trace文件的分析,具体的判别标准被不断发展。研究者也提出了多种判别方法。如应用贝叶斯评估器和贝叶斯神经网络方法实现对流量的识别,以及基于概率聚类的最大期望值(EM)的检测方法。尽管以上的这些方法都是基于已经成熟的理论来进行处理,并且能够检测出未知协议的数据流,但是,这一类方法的普遍特点是需要大量复杂的计算,而且,在进行正式应用之前,这些方法需要进行大量的预处理。这就导致统计效率的降低,而在实时检测中,检测效率是一个很重要的因素。
另一方面,人们也开始关注主机行为的特点。在检测中关注数据传输时p2p双方的行为,来区分所有流所属的应用类型。但是,这类方法都是默认同一时刻主机只运行一种网络应用,而实际上,多个网络应用完全有可能同时在一台主机上运行。在这种情况下,这类方法很难得到较高的鉴别准确性。
发明内容
本发明旨在克服现有技术的上述不足,提供一种可以快速、准确识别网络中VoIP流量的方法。
为了达到上述目的,本发明采用如下的技术方案:
一种基于流量统计的VoIP识别方法,利用Winpcap工具对数据包侦听,进行包头中相关信息的提取和记录;之后,根据所提取和记录的相关信息对终端使用端口号的数量、数据包大小以及数据包到达时间间隔进行统计,筛选符合以下三个条件的流,实现VoIP流量的识别,对于一条流,筛选步骤为:
(1)源IP使用端口数和目的IP使用的端口数之差是否小于2,若是,则判定为具有VoIP流的第一个特征。
(2)设每个数据包的大小len_i,统计相同大小数据包出现的次数num_i,以及数据包总量n和数据包的种类数m,如果数据包大小为len_1的有num_1个,大小为len_2的有num_2个,……,大小为len_m的有num_m个,定义数据包的熵E为若该流的数据包大小的熵的值为0或者在0.3至0.8之间,则判定为具有VoIP流的第二个特征;
(3)定义EL和ES分别为数据包到达时间间隔的最大估值和最小估值,若最小估值ES和最大估值EL的比值大于设定值th,并且接近ES的数据包数和接近EL的数据包数的差小于设定值p,则判定为具有VoIP流的第三个特征。
本发明提供的检测方法,能够不依赖于端口号及数据包负载信息,仅使用传输层的流量信息,实现对VoIP流量的在线检测。本发明在避免大量复杂计算的前提下,实现了对VoIP流量的识别并能维持较高的识别率。
附图说明
图1是识别系统的整体执行过程。
图2是本发明定义的存储结构的直观示意图。
图3是对数据包到达时间间隔进行统计的过程示意图。
具体实施方式
本发明的技术方案是:
(1)首先利用Winpcap工具实现对数据包的侦听,每到达一个数据包,就要对包头中相关信息进行提取和记录。
(2)提取和记录数据包头相关信息时,需要在缓存中建立特定的数据结构,实现对流信息、数据包大小以及到达时间的存储。每到达一个新的数据包,按照数据包格式提取包头中所需的信息,根据其所属的流,存入相应的位置中。
(3)当某条流中新到达的数据包与该流中首个数据包到达的时间间隔超过一个设定的时间段,例如10秒,就对该流中的数据包进行统计,若符合VoIP流的特点,将该流标记为VoIP流,否则标记为非VoIP流。
其中对每条流的判断过程是:
A、统计源IP使用端口数(记为sip_port_num)和目的IP使用的端口数(记为dip_port_num),二者之差需要小于2。
B、计算数据包大小的熵。每个数据包的大小len_i,统计相同大小数据包出现的次数num_i,以及数据包总量n和数据包的种类数m。如果数据包大小为len_1的有num_1个,大小为len_2的有num_2个,……,大小为len_m的有num_m个。则数据包的熵E可以表示为 即: 该熵的值应该为0或者在0.3至0.8之间。
C、判断相邻数据包间隔的值是否呈现锯齿状分布,且间隔值分布比较平均,同时最大值和最小值间的差也不应该太大。定义EL和ES两个变量分别表示数据包到达时间间隔的最大估值和最小估值,每到达一个数据包,要对其进行更新,其中α为自适应系数,值为0.9。ti为第i个数据包到达时间间隔。
如果第i-1个间隔大于EL,那么第i个间隔必须小于EL;如果第i-1个间隔小于ES,那么第i个间隔必须大于ES。另外接近EL的时间间隔的数量应该与接近ES的时间间隔数量大致相等。如果用high表示接近EL的时间间隔数目,用low表示接近ES的时间间隔数目,应该有:|high-low|<5。最后,需要衡量EL和ES之间的差别,ES/EL>0.45。
以下通过具体的实施方式对本发明进行更加详细的描述,整体识别过程如图1所示。
(1)截获网络数据包时,用到了Winpcap软件包中许多函数。首先调用函数intpcap_findalldevs(pcap_if_t**alldevsp,char*errbuf)来查找该机器上的所有网络适配器,并打印出其相关描述信息,以便用户选择。找到用户选择的网卡结构后,调用pcap_t*pcap_open_live(char*device,int snaplen,int promisc,int to_ms,char*ebuf)函数来打开选择的网卡。之后,进入调用数据包处理函数的主循环,即intpcap_loop(pcap_t*adhandle,int cnt,pcap_handler packet_handler,u_char*user)函数,该函数的作用是抓取数据包。每抓到一个包后就调用packet_handler函数来处理,packet_handler可以根据自己对数据包处理的需要来编写。
(2)抓取到数据包后,读取数据包头中的相关信息,并存入缓存。这里,本发明给出自己定义的一个全局变量——链表数组flow flow_table[MX]。MX值定义为100000,是预期要处理的最大数据流的数量。flow是自己定义的链表表头结构。具体表示为:
typedef struct flow
{
unsigned int sip; /*数据流的源IP*/
unsigned int dip; /*数据流的目的IP*/
u_short sport; /*数据流的源端口号*/
u_short dport; /*数据流的目的端口号*/
u_char proto; /*数据流的协议*/
int num; /*该流中现已包含的数据包数量*/
double s_time; /*该流中最早的一个数据包的到达时间*/
char lable; /*标记,该流未处理则为0,否则为1或-1*/
pkt_infor*pointer;/*指向数据包结构的指针*/
char flg; /*标记,如果为0,表示它的逆流在数组的下一元
素中,如果为1,表示它的逆流在数组的上以元素中*/
};
需要说明的是,读入的IP地址aa.bb.cc.dd由于存储和处理起来稍显笨拙,所以将其进行运算((aa*256+bb)*256+cc)*256+dd后转换成一个无符号整数存储。flow中,指向数据包结构的指针类型为pkt_infor,这也是自己定义的类型,表示链表的一个节点。具体表示为:
typedef struct pkt_infor
{
double time; /*数据包到达的时间*/
int len; /*数据包大小*/
pkt_infor*next; /*指向前一个数据包的指针*/
};
图2给出了上面的链表数组的一个直观表示。
(3)判断每条流是否为VoIP流时,首先需要对该流的源端口号和目的端口号进行统计。对于每一个到来的数据包,判断它的源端口号是否被源IP地址使用过,如果没有,将源IP地址使用端口数的计数器加一,同时记录下该IP已使用过该端口。对于每条流和它的逆流所属的源IP地址所使用的端口号数目,如果二者差大于2,认为这条流和它的逆流不是VoIP流。
(4)统计每条流中数据包大小时,计算数据包大小的熵。需要统计各个长度的数据包的数目。为了降低程序的复杂度,将floe_table[]某个元素中的pointer所指向的链表结点中的长度读取出来存入数组lenth[],之后对lenth排序。
(5)最后对该流中数据包到达时间间隔进行处理。方法如下。首先,对于每个数据包,处理之前需计算其与前一个数据包的时间间隔,即对于数据包p,时间间隔interval=p->time-p->next->time。之后进行处理。加入两个计数器voip和nonvoip,分别表示符合VoIP特征的和不符合VoIP特征的次数。之后进行如下鉴定过程:
A、开始时,将连续的与第一个数据包间隔都小于1秒的作为一批数据包。对于数据包间隔小于0.005毫秒的,对此数据包忽略不计。对这一批数据包的间隔逐一处理。每次,若间隔大于EL,更新EL值为α*EL+(1-α)*EL,若间隔小于ES,更新ES值为α*ES+(1-α)*ES,否则,若前一次更新的是EL,则本次根据上式更新ES。若前一次更新的是ES,则本次根据上式更新EL。
B、每批数据包处理结束后,计算ES与EL的比值ratio。如果ratio小于0.45,nonvoip值加一,跳到步骤D继续处理,否则继续步骤C。
C、继续处理这一批数据包后的数据包。加入两个计数器low和high,分别表示接近ES的数据包数和接近EL的数据包数。判断数据包时间间隔interval,接近EL就按步骤A中的方法更新EL,并且high值加一;接近ES就按步骤A中的方法更新ES,并且low值加一。之后继续判断,如果interval在EL和ES之间,那么重新计算ratio值,若大于th,voip值加一,继续步骤D,否则nonvoip值加一,跳转到步骤D继续处理。如果不在EL和ES之间,则除了需要判断ratio值外,还需要判断是否和前一个数据包一样,都是大于EL或者都是小于ES的。如果是,nonvoip加一,跳转到步骤D;如果不是,并且ratio符合要求,voip加一,继续步骤D。
D、如果此时voip不小于20并且high和low的差小于5,这条流是符合VoIP特点的,返回true;否则转步骤A继续处理后面的数据包。如果此时nonvoip值不小于40,这条流不符合VoIP特点,返回false。
该步骤过程如图3所示。
Claims (4)
1.一种基于流量统计的VoIP识别方法,其特征在于,利用Winpcap工具对数据包侦听,进行包头中相关信息的提取和记录;之后,根据所提取和记录的相关信息对终端使用端口号的数量、数据包大小以及数据包到达时间间隔进行统计,筛选符合以下三个条件的流,实现VoIP流量的识别,对于一条流,筛选步骤为:
(1)源IP使用端口数和目的IP使用的端口数之差是否小于2,若是,则判定为具有VoIP流的第一个特征;
(2)设每个数据包的大小len_i,统计相同大小数据包出现的次数num_i,以及数据包总量n和数据包的种类数m,如果数据包大小为len_1的有num_1个,大小为len_2的有num_2个,……,大小为len_m的有num_m个,定义数据包的熵E为 若该流的数据包大小的熵的值为0或者在0.3至0.8之间,则判定为具有VoIP流的第二个特征;
(3)定义EL和ES分别为数据包到达时间间隔的最大估值和最小估值,若最小估值ES和最大估值EL的比值大于设定值th,并且接近ES的数据包数和接近EL的数据包数的差小于设定值p,则判定为具有VoIP流的第三个特征。
2.根据权利要求1所述的基于流量统计的VoIP识别方法,其特征在于,对于上述的第(3)步,具体的判别方法如下:
设EL和ES的初始值均为前两个数据包的间隔,每到达一个数据包,按照下式对EL和ES进行更新,其中α为自适应系数,ti为第i个数据包到达时间间隔:
加入两个计数器voip和nonvoip,分别表示符合VoIP特征的和不符合VoIP特征的次数;
A、开始时,将连续的与第一个数据包间隔都小于1秒的作为一批数据包,对于数据包间隔小于0.005毫秒的,对此数据包忽略不计;对这一批数据包的间隔逐一处理,每次,若间隔大于EL,按上式更新EL;若间隔小于ES,按上式更新ES;若间隔在EL与ES之间,若前一次更新的是EL,则本次更新ES,若前一次更新的是ES,则本次更新EL;
B、每批数据包处理结束后,计算ES与EL的比值ratio,如果ratio小于th,nonvoip值加一,跳到步骤D继续处理,否则继续步骤C;
C、继续处理这一批数据包后的数据包,加入两个计数器low和high,分别表示接近ES的数据包数和接近EL的数据包数,判断数据包时间间隔interval,接近EL就按步骤 A中的方法更新EL,并且high值加一;接近ES就按步骤A中的方法更新ES,并且low值加一,之后继续判断,如果interval在EL和ES之间,那么重新计算ratio值,若大于th,voip值加一,继续步骤D,否则nonvoip值加一,跳转到步骤D继续处理,如果不在EL和ES之间,则除了需要判断ratio值外,还需要判断是否和前一个数据包一样,都是大于EL或者都是小于ES的,如果是,nonvoip加一,跳转到步骤D;如果不是,并且ratio符合要求,voip加一,继续步骤D;
D、如果此时voip不小于20并且high和low的差小于p,则判定这条流是符合VoIP特点的;如果此时nonvoip值不小于40,则判定这条流不符合VoIP特点。
3.根据权利要求1或2所述的基于流量统计的VoIP识别方法,其特征在于,对于设定值th为0.45,设定值p为5。
4.根据权利要求1或2或3所述的基于流量统计的VoIP识别方法,其特征在于,其中的α为0.9。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100705213A CN101674192B (zh) | 2009-09-22 | 2009-09-22 | 一种基于流量统计的VoIP识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100705213A CN101674192B (zh) | 2009-09-22 | 2009-09-22 | 一种基于流量统计的VoIP识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101674192A CN101674192A (zh) | 2010-03-17 |
CN101674192B true CN101674192B (zh) | 2011-12-07 |
Family
ID=42021196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100705213A Expired - Fee Related CN101674192B (zh) | 2009-09-22 | 2009-09-22 | 一种基于流量统计的VoIP识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101674192B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102340454B (zh) * | 2011-11-10 | 2017-10-31 | 中国人民解放军重庆通信学院 | 一种VoIP网络数据流的通用识别方法 |
CN103475537A (zh) * | 2013-08-30 | 2013-12-25 | 华为技术有限公司 | 一种报文特征提取方法和装置 |
CN107085576A (zh) * | 2016-02-15 | 2017-08-22 | 阿里巴巴集团控股有限公司 | 一种流式数据统计算法及装置 |
CN110225213B (zh) * | 2019-06-17 | 2020-08-25 | 华为技术有限公司 | 一种语音通话场景的识别方法以及音频策略服务端 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420336A (zh) * | 2007-10-26 | 2009-04-29 | 诺基亚西门子通信有限责任两合公司 | 在网络中识别网络电话流量的方法及其系统 |
-
2009
- 2009-09-22 CN CN2009100705213A patent/CN101674192B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420336A (zh) * | 2007-10-26 | 2009-04-29 | 诺基亚西门子通信有限责任两合公司 | 在网络中识别网络电话流量的方法及其系统 |
Non-Patent Citations (1)
Title |
---|
张广兴等.一种VOIP流量识别的新方法.《计算机应用研究》.2008,第25卷(第4期),1186-1188. * |
Also Published As
Publication number | Publication date |
---|---|
CN101674192A (zh) | 2010-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102523241B (zh) | 基于决策树高速并行处理的网络流量在线分类方法及装置 | |
CN102315974B (zh) | 基于层次化特征分析的tcp、udp流量在线识别方法和装置 | |
US20120099465A1 (en) | Method and its devices of network tcp traffic online identification using features in the head of the data flow | |
CN106951925A (zh) | 数据处理方法、装置、服务器及系统 | |
CN109871948A (zh) | 一种基于二维卷积神经网络的应用层协议识别方法 | |
CN109981474A (zh) | 一种面向应用软件的网络流量细粒度分类系统及方法 | |
CN101674192B (zh) | 一种基于流量统计的VoIP识别方法 | |
CN104102700A (zh) | 一种面向因特网不平衡应用流的分类方法 | |
CN103297427A (zh) | 一种未知网络协议识别方法及系统 | |
CN109194498A (zh) | 一种基于lstm的网络流量预测方法 | |
CN105376110A (zh) | 以大数据流式技术实现网络数据包的分析方法及系统 | |
CN101184000A (zh) | 基于报文采样和应用签名的互联网应用流量识别方法 | |
CN104092588B (zh) | 一种基于SNMP与NetFlow结合的网络异常流量检测方法 | |
CN107426680A (zh) | 面向楼宇监测的无线传感器网络数据收集系统 | |
CN114915575B (zh) | 一种基于人工智能的网络流量检测装置 | |
CN108460423B (zh) | 一种基于sdn架构的业务识别方法 | |
CN103780588A (zh) | 数字家庭网络中用户异常行为检测方法 | |
CN107404398A (zh) | 一种网络用户行为判别系统 | |
CN109002996A (zh) | 基于水费回收的风险评估方法及系统 | |
CN101815317B (zh) | 一种传感器节点和传感器网络的测量方法及系统 | |
CN101459695B (zh) | P2p业务识别方法和装置 | |
Gómez et al. | Traffic classification in IP networks through Machine Learning techniques in final systems | |
CN104361061B (zh) | 一种web页面信息感知采集方法 | |
CN101764754B (zh) | 基于dpi和dfi的业务识别系统中的样本获取方法 | |
CN109039797A (zh) | 基于强化学习的大流检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111207 Termination date: 20120922 |