DVB-S中即时通信语音流量识别技术研究

2010-06-07 02:04张白愚
电视技术 2010年9期
关键词:通信协议信令字节

王 超,张白愚

(信息工程大学 信息工程学院,河南 郑州 450002)

1 引言

数字视频广播(Digital Video Broadcasting,DVB)是由国际数字视频广播组织提出的、适用于不同媒介的数据传输标准,DVB-S是基于卫星信道的数字视频广播传输标准。卫星通信覆盖范围广,不受地域限制,DVB-S接收设备架设方便,性能稳定,因此应用十分广泛。DVB宽带IP接入技术(IP over DVB)将地面通信网与DVBS卫星通信系统连接起来,提供宽带到户的服务。

即时通信(Instant Messenger,IM)是指能够利用网络即时发送和接收消息、文件、语音和视频的业务。因其信息交互的迅速高效、费用低等特点,自面世以来迅速发展,用户数量迅猛增长。目前,即时通信软件种类繁多,主要有国外的MSN,ICQ和国内的QQ等。这些软件在给人们带来方便快捷的同时,也存在着很多安全隐患,容易被一些非法组织或个人用来传播色情、反动言论及异端邪说等有害信息,对国家安全和社会稳定构成了极大的危害。因此,需要对其流量进行有效的监控。即时通信软件公司不公开自己的通信协议,并且经常对协议进行修改,更新软件版本,新版本的软件往往界面更精美,功能更丰富,吸引用户升级。因此,对新版本的通信协议进行分析并提出流量识别算法意义重大。

2 DVB-S中的IP数据采集

DVB-S采用MPEG-2标准传输复用比特流,MPEG-2系统层编码有2种:传输流(Transport Stream,TS)和节目流(Program Stream,PS)。 TS是为易出错的环境设计的,PS是为错误相对较少的环境设计的。DVB-S信道传输的是TS。TS包组成如图1所示,1个TS包包长为188 byte,其中包头长 4 byte,由同步字节(sync-byte)、传输误码指示(transport_error_indicarot)、有效负载起始指示(payload_unit_start_indicator)、传输优先级(transport_priority)、包标识(Packet Identification,PID)、传输加扰控制(transport_scramble_control)和连续计数器(continuity_counter)组成,其中同步字节的值为0x47,表示一个TS包的开始。包头后的184 byte为有效负载,用于传送已编码的视音频数据流[1]。负载起始处可能包含适应字段(adaption_field),由包头的适应字段控制指示。

多协议封装(Multiple Protocol Encapsulation,MPE)将IP数据加上头部和4 byte的尾部校验放入TS的有效负载中。MPE头部包含 12 byte,由 table_id,section_length,MAC_address,payload_scrambling_control,section_num ber和last_section_number等字段组成。table_id的值通常设定为0x3E,表示一个数据包分段的开始。IP数据的最大长度远超过TS包长的188 byte,这时需要将IP数据分段,然后分别放入多个TS包的负载中。在这种情况下,如果最后一段数据没有占满一个TS包的负载,下一个新的MPE包将继续填充该TS包。此时需要使用长度为1 byte的下一MPE头起始指示(Next Message Pointer,NMP)来标志MPE包开始的位置。

图2是一段在TS中使用MPE封装数据的实例。第1字节“0x47”标识一个TS包的开始,该TS包的PID为“0x03E8”,第 5 个字节为“0x00”,说明该 MPE 数据片在第6个字节开始,第6个字节为“0x3E”,验证该段数据为MPE封装,“0x01E9”说明该MPE数据片长度为489 byte。

3 即时通信协议分析

即时通信软件每一年都会对版本进行一次或多次更新,所使用的通信协议也会有所更改,因此,对其新版本的通信协议进行分析,对协议识别与流量监控来说是必要的。

3.1 MSN通信协议分析

MSN最新版本为MSN9.0,在该版本中邀请或被邀请与联系人进行语音会话的消息语法如下:XXXTrlDMSNID;MEP IDNumberLength

其中,XXX为命令,发送邀请时为UUN,被邀请时为UBN。为空格,TrID为流水号,客户端每发送一个新的消息,TrID增加1,MSNID为用户的MSN账号,如zhoujie-0001@hotmail.com。MEPID为一串长字符,Number的值取11或12,分析发现,当命令中包含SIP信令时为12,否则为11。为换行符,Length为后消息体长度。下面是一个发送语音邀请的消息:

由该消息可知,被邀请人的MSN账号为zhoujie-0001@hotmail.com,消息体中包含用base64编码过的SIP信令,消息体长度为3582 byte。

对消息体中标签中的内容进行base64解码后可以发现,MSN对SIP协议[2]的部分字段做了简化,如:From 简化为 f,To 简化为 t,Call-Id 简化为 i,SDP 协议定义的各域值则没有变化。消息体较长,这里不再举例。假设A发起会话邀请,一般的MSN信令传递过程如图3所示。

3.2 ICQ协议分析

ICQ当前最新版本为6.5。其消息可划分为FLAP,SNAC以及数据和参数3层[3]。ICQ的数据按照“类型,长度,值”的格式组织,称为 TLV(Type,Length,Value)结构。

图4是一个语音通话邀请消息的示例,数据按每行6 byte显示,可以很清楚地对应到FLAP和SNAC层的数据段。在最后一个TLV结构中发现传送了一个1096 byte的SIP信令。

3.3 QQ协议分析

QQ是国内用户使用最多的即时通信软件,最新版本为QQ2009SP5。QQ对其发送的消息进行了加密,无法从它的会话协商消息中获得客户端点对点通信的IP地址和端口。文献[4]提出净荷特征匹配串有“SIP/user-agent:Tencent-VQQ”和“SIP/reason=100”等。 在本文的分析中发现,新版本的QQ中相应的特征已经不存在。但其音频包的特征较为明显,QQ2009的音频包较以前版本有多处改动。首先,数据包的首字节固定为0x05,第2,3字节为序号,每次增加1。QQ传送语音和视频时使用同一端口,当第6字节为0x01时,说明数据包传送的是音频数据,为0x03时,说明传送的是视频数据。第6字节后是QQ数据包头封装的RTP数据。

3.4 即时通信协议对比

3种即时通信软件采用不同的通信协议,通过前面的分析可以得出以下结论:

1)从安全角度对比3种通信协议,QQ对通信协议进行了加密,安全性最高;MSN对SIP协议进行了base64编码,使通信内容不可见,安全性次之;ICQ采用明文传输,安全性最差。

2)在通信方式上,3种即时通信协议建立点对点语音会话均需通过服务器发送建连消息,而服务器端口固定,MSN为1863,ICQ为5190,QQ为8000,使得第一时间能够发现即时通信语音流量。

3)在语音会话的控制信令体系方面,MSN和ICQ都使用SIP协议来建立会话连接,通过解析SIP信令可以找出会话双方的点对点通信端口。

4)在音频数据包传输方面,3种通信协议都使用RTP传输语音数据。其中,MSN和ICQ直接使用,QQ对RTP协议进行了封装。

4 DVB-S中即时通信语音流量识别算法

4.1 语音流量识别算法

通过对即时通信协议的分析,笔者提出了一种基于协议流程和深度包检测(Deep Packet Inspection,DPI)的DVB-S即时通信语音流量识别算法,算法包括3部分:

1)DVB-S中IP数据采集。DVB-S接收机将TS包封装成UDP包后通过Socket发送到语音流量监控终端,在语音流量监控终端上,通过设置Socket接收UDP数据并提取TS数据包。对接收到的TS包,去除TS包包头、MPE包头和校验位,根据封装数据的长度进行IP数据重组。短的IP数据不足188 byte,在TS负载的剩余部分可填充0xFF,也可将多个短IP数据封装在同一TS中。在提取IP数据的过程中应注意,当一个TS封装多个IP数据包时,NMP指示的是第一个IP数据包的位置。

2)即时通信消息处理。获取一个IP数据包,由第3节对即时通信协议分析得到的特征,判断是否为MSN和ICQ的会话消息,这2种消息可由一个或多个IP包传送,需要对消息拼接重组。得到完整的消息后,将其中的SIP信令,送入SIP协议解析模块,这里只对INVITE,SIP/2.0200 OK,CANCEL 和 BYE 4种消息做处理,以降低算法复杂度。该模块获得其中的关键信息,包括收发双方的账号、呼叫ID、用于收发音频数据包的IP地址和端口,DVB-S信道为单向信道,因此,只能得到一方的IP地址和端口。这里需要维护如下形式的会话信息表:

当收到INVITE或 SIP/2.0200 OK(CSeq INVITE)时建立表,当收到CANCEL时删除表,收到BYE时保存数据并删除表。处理流程如图6所示。

3)即时通信音频数据处理。获取一个IP数据包,判断该包是否为RTP数据,如果是,查找会话信息表,将该IP数据包的源IP地址和源端口号与会话信息表中的IP地址和端口号进行匹配。如果匹配成功,则按RTP数据包序号将RTP负载存放到相应位置。由于无法由QQ消息获得收发音频数据的IP地址和端口,但它的音频数据包有明显的特征,不容易与其他数据相混淆,这里应用DPI匹配QQ音频数据特征,当匹配成功时,查找会话信息表,如果信息存在,则将数据存储,如果不存在,则建立关键信息表,并将IP地址和端口号存入表中,如图7所示。

4.2 算法验证

根据笔者提出的算法开发系统,在实验室自行开发的DVB-S机顶盒和PC机上验证证明了其可行性。为定量验证算法的有效性,在2台连接互联网的计算机上分别使用3种即时通信软件进行语音会话,各呼叫100次,使用Ethereal软件捕获数据包保存,并抓取2 h的上网流量,其中包括浏览网页、在线听音乐、观看视频、游戏、使用BT、eMule、迅雷等工具下载等,共计2.13 Gbyte。使用即时通信语音流量监控算法处理IP数据包,结果如表1所示。

表1 即时通信语音流量监控算法测试结果

由于本文算法是为DVB-S的单向信道设计的,而实验数据为双向数据,因此对识别会话次数做除2处理。从实验结果可以看出,对MSN和ICQ采用的基于协议流程和DPI的语音流量识别方法,准确性很高,而对QQ的语音流量识别只应用了DPI进行特征匹配,因而引入了少量误差,这种情况可以通过为语音包数量设定阈值来消除。

5 小结

着眼于DVB-S中即时通信语音流量监控需求,笔者研究了DVB-S的TS流结构以及对IP数据的多协议封装技术。在对MSN,ICQ和QQ 3种即时通信协议的语音会话消息和音频数据包分析的基础上,提出了DVB-S中即时通信语音流量识别算法,实现了对上述3种即时通信的语音流量识别,取得很好的效果。

[1]ETSI EN 3004211997,Digital Video Broadcasting (DVB):framing structure channel coding and modulation for 11/12 GHz satellite services[S].1997.

[2]糜正琨.IP网络电话技术[M].北京:人民邮电出版社,2000.

[3]李远杰,刘渭锋,张玉清,等.主流即时通软件通信协议分析[J].计算机应用研究,2005,22(7):243-245.

[4]王攀,金婷,张颅颐,等.基于智能会话关联的腾讯语音流量识别算法[J].计算机工程,2007(17):l37-139.

猜你喜欢
通信协议信令字节
No.8 字节跳动将推出独立出口电商APP
SLS字段在七号信令中的运用
No.10 “字节跳动手机”要来了?
移动信令在交通大数据分析中的应用探索
基于信令分析的TD-LTE无线网络应用研究
基于Z-Stack通信协议栈的红外地温采集电路设计
简谈MC7字节码
基于DMX512通信协议的多路转发器设计与研究
LTE网络信令采集数据的分析及探讨
基于NS-3的PLC多频通信协议仿真平台设计与实现