专利名称:在网络中识别rtp媒体流的实现方法
技术领域:
本发明涉及网络通信技术领域,尤其涉及一种在网络中识别RTP媒体流的实现方法。
背景技术:
网络中媒体流的传输,大部分用RTP(实时传输协议)承载,RTP流所在媒体通道的建立由通信双方通过相关的信令协议动态生成,为了能够对网络中传输的媒体流信息进行有效地管理和控制,需要能够有效识别出网络中传输的媒体流信息,即在网络中识别出RTP媒体流。
由于RTP通道是通过各种信令协议相互协商建立,因此,目前常规的用于识别网络中RTP媒体流的技术实现方案为检测IP网络中相关所有信令数据包,并通过对信令数据包进行解析,从而提取出动态协商的RTP通道地址,然后对所述的RTP通道进行监听,以实现网络中的RTP媒体流的识别。
不难看出,首先,由于很多信令为私有协议,这就使得检测者可能无法解析所有的信令数据包,使得漏检的可能性很大。
同时,由于上述检测识别过程中需要对信令的交互进行跟踪,因此,整个检测识别处理过程实现较为复杂,且效率较低。
另外,由于实际的RTP数据包中,某些RTP协议头中的值为特定值,例如,绝大部分的RTP包有0x80开始,以及RTP载荷长度与编码类型存在一定的关系。因此,目前采用的另一种识别RTP媒体流的实现方案为利用该RTP包的上述特点进行识别处理。这种实现方式虽然非常简单,且效率优势也较为明显,但由于其基于一个假定实现,因此,相应的识别检测结果的准确性相对较差,导致误识别率较高。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种在网络中识别RTP媒体流的实现方法,从而可以简单、高效地准确识别出网络中传输的RTP包。
本发明的目的是通过以下技术方案实现的本发明提供了一种在网络中识别RTP媒体流的实现方法,包括A、确定网络中传输的同一实时传输协议RTP媒体流的各个业务包之间特有的特征信息;B、根据所述的特有的特征信息识别网络中传输的RTP业务包。
本发明中,步骤A所述的同一RTP媒体流的各个业务包之间特有的特征信息具体包括以下各项中的至少一项同一RTP媒体流的各个业务包大小一致,同一RTP媒体流的各个业务包的第二字节的后7位的载荷类型PT值一致,同一RTP媒体流的各个业务包的每9至12字节的同步源SSRC值相同,同一RTP媒体流的各个业务包的第3、4字节的序列号和第5至第8字节的时间戳规律递增。
所述的步骤B包括B1、在网络中,提取传输的同一业务流的一组业务包之间的特征信息;B2、当提取的特征信息与所述的特有的特征信息符合时,则确定相应的业务包为RTP媒体流的业务包。
所述的一组业务包具体包括至少同一业务流的三个的业务包。
所述的步骤B2包括B21、判断所述的一组业务包载荷的大小、业务包第二字节的后7位值和/或业务包的每9至12字节值相互之间是否一致,如果一致,则执行步骤B22,否则,确认为非RTP媒体流;B22、确定该业务流为RTP媒体流。
所述的步骤B2包括B23、判断一组业务包的序列号和时间戳是否为规则递增,如果是,则确认该业务流为RTP媒体流,否则,确认该业务流为非RTP媒体流。
所述的步骤B23具体包括分别计算一组业务包中的每相邻两个业务包的第3、4字节值的差值与第5至第8字节值的差值之间的比值;判断计算出的各个比值是否相等,如果相等,则确认该业务流为RTP媒体流,否则,确认该业务流为非RTP媒体流。
所述的步骤B2包括当PT值为编码方式时,确定该编码方式对应的帧长度为T,单位为ms,对应的采样率S值,单位为Hz;判断所述的相邻的两个业务包的第3、4字节值的差值与第5至第8字节值的差值之间的比值是否等于所述的T与S的乘积,如果等于,则确认该业务流为RTP媒体流,否则,确认该业务流为非RTP媒体流。
由上述本发明提供的技术方案可以看出,本发明的实现有效克服了现有技术中通过信令流识别定位RTP流的复杂性,从而可以提高RTP媒体流的识别效率。同时,本发明还可以克服现有技术中另一种高误检测识别率的缺点,而提供了一种非常准确而且效率比较高的RTP检测识别方法。
由于本发明所述的方法是通过对一个会话中的三个数据包的判别进行RTP媒体流的识别处理,而且判别条件比较确定,没有基于任何假定的情况,因此,本发明的识别准确率和识别效率较高。即,本发明所述的RTP媒体流识别方法具有实现简单、识别效率高的优点。
图1为本发明所述的方法的实现流程图。
具体实施例方式
本发明在具体实现过程中是根据RTP媒体流的各个业务包间的区别于其他业务包间的特征信息进行RTP媒体流的识别,为此,首先介绍一下在IP网络RTP流的特征。
所述的RTP协议报文的格式如表1所示表10 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|V=2|P|X| CC|M|PT | sequence number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| timestamp |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| synchronization source(SSRC)identifier |+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+| contributing source(CSRC)identifiers || ---- |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+其中V版本号(Version)目前的版本为2,可以视为固定值;P填充标志位(Padding)一般情况下为0;X扩展位一般为0;如果该位置1,则数据包中还需加一个扩展头;CC贡献源个数一般值为0;M标志,非固定值,标记由Profile文件定义,profile可以改变该位的长度,但是要保持其和PT(payload type,载荷类型)总长度不变,即一共是8bit;PT载荷类型,为变化值,表示不同的媒体编码方式,但变化范围一般如编码方式与PT值对应表,即表2所示Sequence Number序列号,初始值为随机值,以后每发一包加1。
TimeStamp时间戳,初始值为当前时间值或随机值,以后按一定规律递增;对于语音来讲,时间戳是封包间隔和采样速率的乘积的递增的,比如,如果封包时间是20ms,而采样率是8000Hz,则每一块的时间戳递增是160;SSRC同步源,在一次会话中为一固定值;CSRC贡献源,一般情况下没有,在电话会议的时候,表示该语音流由多少流合成,与CC一起使用,只表示15路。超过15则被丢弃。
本发明的核心是根据上述RTP业务包的特点确定网络中传输的RTP媒体流的业务包之间区别于其他协议业务包的特有的特征信息,并根据所述的RTP媒体流的业务包特有的特征信息监测出网络中传输的RTP媒体流的业务包,从而实现有效识别网络中传输的RTP媒体流。
本发明中,首先分析RTP协议的业务包中每一字段的含义以及变化规律,根据相应的字段含义及变化规律可以发现同一RTP媒体流的各个业务包之间具有区别于其他业务包的特有的特征信息,所述的特征信息包括(1)基于RTP协议的同一RTP媒体流中各个业务包的大小一致;(2)基于RTP协议的同一RTP媒体流中各个业务包的PT值一致;(3)基于RTP协议的同一RTP媒体流的各个业务包的SSRC值相同;(4)基于RTP协议的同一RTP媒体流中不同的各个业务包的序列号和时间戳有规律递增。
目前,所有的RTP媒体流的各个业务包之间都遵循以上所指出的规律,即符合上述各个特征信息的特点。而且,其他协议的业务包基本上均不符合上述各个特征信息。
基于上述各个特有的特征信息,本发明所述的方法的具体实现方式如图1所示,具体包括以下步骤步骤11在某同一业务流中选取业务包1、2、3、......n;所述的同一业务流可以为同一UDP会话流,具体是指源、目的地址及端口号相同的一组数据包;本操作流程为了提取各业务包中的字段首先,假定其为RTP包并进行RTP解码,然后进行判别;设某UDP(用户数据报协议)会话中UDP包的载荷长度分别为L1、L2、L3、......Ln;所述的n的取值可以根据识别业务流的准确度,及允许的计算复杂度要求确定,通常只要选择3个业务包即可,当然也可以选择更多的业务包进行识别处理,但相应的计算复杂程序及识别效率将有所降低;步骤12对比选取的各个业务包的载荷长度是否相同,即判断L1、L2、......、Ln是否相同,如果相同,则确定该业务包可能为RTP业务包,继续执行步骤13,否则,确定该业务包琐RTP业务包,本次识别过程结束。
步骤13提取各个业务包中的PT值;即提取UDP会话中UDP载荷的第二字节的后7位,并分别定义为PT1、PT2、PT3、......PTn;步骤14判断PT1=PT2=PT3=......=PTn等式是否成立,如果是,则确定该业务包可能为RTP业务包,并执行步骤15,继续进行其他判断,否则,确定该业务包为非RTP,本次识别过程结束。
步骤15提取各个业务包中的SSRC值;即提取UDP会话中UDP载荷的第9、10、11、12字节,分别定义为SSRC1、SSRC2、SSRC3、......SSRCn;步骤16判断SSRC1=SSRC2=SSRC3=......=SSRCn等式是否成立,如果是,则确定该业务包可能为RTP业务包,并执行步骤17,继续进行其他判断,否则,确定该业务包为非RTP,本次识别过程结束。
步骤17提取各个业务包中的序列号和时间戳信息;具体为提取UDP会话中UDP载荷的第3、4字节,分别定义为序列号SN1、SN2、SN3......SNn,提取UDP会话中UDP载荷的第5、6、7、8字节,分别定义为时间戳TS1、TS2、TS3......TSn;步骤18计算Fi=(TSi-TSj)/(SNi-SNj),任取i、j(i>j),并判断各个计算获得的Fi是否相同,如果相同,则执行步骤19,否则,该业务流不是RTP媒体流,本次RTP媒体流识别过程结束;如果采用3个业务包进行识别处理,则该步骤判断(TS2-TS1)/(SN2-SN1)=(TS3-TS2)/(SN3-SN2)等式是否成立,如果成立,则执行步骤19,否则,判断该流为非RTP媒体流,过程结束。
步骤19确定该业务包为RTP媒体流的业务包,即为RTP媒体流。
在上述本发明所述的具体实现的方法中,当所述的业务包中的PT值代表着RTP载荷的编码时,还可以采用如下方式实现,具体的实现方式为从步骤11到步骤17的处理过程与图1描述的处理过程相同,故此处不再详述。该方法中,当执行步骤17后,则执行以下处理过程(1)假设每个PT所代表的编码方式对应的帧长度为T(ms),每个PT所代表的编码方式的采样率为S(Hz),并计算T×S值;(2)计算Fi=(TSi-TSj)/(SNi-SNj),任取i、j(i>j);(3)判断计算获得的Fi值是否等于T×S值,如果等于,则相应的UDP流为RTP媒体流,否则,确认该UDP流不是RTP媒体流。
本发明在具体实现过程中,可以在执行完图1中的步骤17后执行上述过程(1)至过程(3)进行RTP媒体流的进一步识别处理,也可在执行完图1中的步骤19后,继续执行上述过程(1)至过程(3)进行RTP媒体流的识别处理,从而进一步准确识别出网络中传输的RTP媒体流信息。
可以看出,本发明在具体实现过程中,涉及前面描述的五个识别RTP媒体流的判断条件,具体包括同一RTP媒体流中的各个业务包的大小、PT值、SSRC值是否一致,同一RTP媒体流中各个业务包的序列号和时间戳是否规律递增,以及过程(1)到过程(3)描述的判断条件。对于这五个判断条件,在具体用于识别RTP媒体流过程中,可以任意组合采用上述全部或部分判断条件,区别在于使用上述全部判断条件进行RTP媒体流识别时准确率更高,但所需要的处理过程会较使用部分判断条件进行识别时稍长。而且,各个判断条件的执行顺序也可以任意设置。
综上所述,由于本发明根据一个会话中的三个数据包的就可以判别其是否为RTP媒体流,而且判别条件未基于任何假定,所以识别准确率和识别检测率较高,而且识别方法实现较为简单。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种在网络中识别RTP媒体流的实现方法,其特征在于,包括A、确定网络中传输的同一实时传输协议RTP媒体流的各个业务包之间特有的特征信息;B、根据所述的特有的特征信息识别网络中传输的RTP业务包。
2.根据权利要求1所述的在网络中识别RTP媒体流的实现方法,其特征在于,步骤A所述的同一RTP媒体流的各个业务包之间特有的特征信息具体包括以下各项中的至少一项同一RTP媒体流的各个业务包大小一致,同一RTP媒体流的各个业务包的第二字节的后7位的载荷类型PT值一致,同一RTP媒体流的各个业务包的每9至12字节的同步源SSRC值相同,同一RTP媒体流的各个业务包的第3、4字节的序列号和第5至第8字节的时间戳规律递增。
3.根据权利要求1所述在网络中识别RTP媒体流的实现方法,其特征在于,所述的步骤B包括B1、在网络中,提取传输的同一业务流的一组业务包之间的特征信息;B2、当提取的特征信息与所述的特有的特征信息符合时,则确定相应的业务包为RTP媒体流的业务包。
4.根据权利要求3所述的在网络中识别RTP媒体流的实现方法,其特征在于,所述的一组业务包具体包括至少同一业务流的三个的业务包。
5.根据权利要求3所述的在网络中识别RTP媒体流的实现方法,其特征在于,所述的步骤B2包括B21、判断所述的一组业务包载荷的大小、业务包第二字节的后7位值和/或业务包的每9至12字节值相互之间是否一致,如果一致,则执行步骤B22,否则,确认为非RTP媒体流;B22、确定该业务流为RTP媒体流。
6.根据权利要求3、4或5所述的在网络中识别RTP媒体流的实现方法,其特征在于,所述的步骤B2包括B23、判断一组业务包的序列号和时间戳是否为规则递增,如果是,则确认该业务流为RTP媒体流,否则,确认该业务流为非RTP媒体流。
7.根据权利要求6所述的在网络中识别RTP媒体流的实现方法,其特征在于,所述的步骤B23具体包括分别计算一组业务包中的每相邻两个业务包的第3、4字节值的差值与第5至第8字节值的差值之间的比值;判断计算出的各个比值是否相等,如果相等,则确认该业务流为RTP媒体流,否则,确认该业务流为非RTP媒体流。
8.根据权利要求3、4或5所述的网络中识别RTP媒体流的实现方法,其特征在于,所述的步骤B2包括当PT值为编码方式时,确定该编码方式对应的帧长度为T,单位为ms,对应的采样率S值,单位为Hz;判断所述的相邻的两个业务包的第3、4字节值的差值与第5至第8字节值的差值之间的比值是否等于所述的T与S的乘积,如果等于,则确认该业务流为RTP媒体流,否则,确认该业务流为非RTP媒体流。
全文摘要
本发明涉及一种在网络中识别RTP媒体流的实现方法。该方法主要包括首先,确定网络中传输的同一实时传输协议RTP媒体流的各个业务包之间特有的特征信息,如同一RTP媒体流的各包大小、PT值、SSRC值是否一致等;然后,根据所述的特有的特征信息识别网络中传输的RTP业务包。本发明所述的方法可以通过对一个会话中的三个数据包的判别识别出是否为RTP媒体流,而且判别条件比较确定,因此,本发明的识别准确率和识别效率较高,同时具有实现简单的优点。
文档编号H04L12/56GK1885856SQ200510076898
公开日2006年12月27日 申请日期2005年6月20日 优先权日2005年6月20日
发明者刘利锋, 郑志彬, 刘廷永, 刘国清, 尹瀚, 涂卫华 申请人:华为技术有限公司