APP下载

基于DSS的定制客户端测试工具的实现

2012-06-07玲,曾浩,肖

电视技术 2012年1期
关键词:扩展性信令客户端

杨 玲,曾 浩,肖 洋

(1.重庆邮电大学,重庆 400065;2.中国电子科技集团公司第三十研究所,四川 成都 610041)

苹果公司的DSS提供了完整的流媒体服务器源代码,同时支持 FreeBSD,Linux,Solaris,Windows NT 和 Windows 2000等多个操作系统,是当前所有同类产品中支持平台最多的一个[1]。DSS支持多种主流音视频格式,支持基于WEB的后台管理,并具有完备的日志功能,又充分考虑了日后开发的可扩展性,该服务器提供了一个基于模板的扩展方法。利用DSS提供的API就可以很方便地编写静态或动态的模块,可以让开发者加入自己的模块,对其进行功能上的修改和扩充,所以,DSS成为很多流媒体软件开发的基础,而DSS流媒体服务器的点播并发能力(对单一文件和不同文件点播并发的支持能力)成为对其性能评估的一个重要指标。随着用户对流媒体要求的提高,很多人都根据自己的需求在DSS的基础添加自定义模块来实现扩展需求,而在对DSS进行二次开发之前需要对DSS本身进行性能评估,随着流媒体的普遍化和带宽的紧缺化,流媒体服务器的并发性能成为性能测试的重点。DSS安装包里自带了一个压力测试小工具Streaming-LoadTool,但StreamingLoadTool有一定的限制,只能实现多端口对单一文件(同一个文件)的并发模拟测试,所以需要定制客户端模拟并发用户实现多端口访问多个不同文件的并发数测试。

1 DSS媒体点播的流程

DSS点播处理过程是客户端经由DSS中的RTP Session以及RTSP Session建立RTP/UDP/IP媒体流连接和RTSP/TCP/IP控制链路连接,媒体流经由RTP连接传到客户端,以RTSP控制RTP媒体流的播放,如此完成整个流处理过程,即客户端通过发起RTSP信令和流媒体服务器进行交互,实现媒体流的发起和控制,运行RTSP协议获取客户端可操作的方法,并建立客户端与流媒体服务器的通信方式,同时RTSP附带SDP描述媒体流的编解码等信息。RTSP交互成功后,媒体流通过RTP进行传输,RTCP反馈传输的状态信息。所以,定制客户端的主要工作就是模拟用户与DSS进行RTSP交互。

1.1 RTSP协议

实时流协议(Real Time Streaming Protocol,RTSP)工作于实时传输协议之上,是一个多媒体播放控制协议,用来使用户控制实时数据的播放,如播放/暂停、快进、快退等。

RTSP是基于文本的协议,采用ISO 10646字符集和UTF-8编码方案,行以CRLF中断[2]。RTSP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息的首行包括了应用于资源的方法、资源的标识符以及所使用的协议版本(如DESCRIBE rtsp://server IP:554/movie.xxx RTSP/1.0 ),响应消息的第一行包含了表示请求是否成功或者失败的状态码和原因短语(如RTSP/1.0200 OK ,表示请求成功)。表1为RTSP的方法列表,其中C表示RTSP客户端,S表示RTSP服务器端。

表1 RTSP方法列表

下面是RTSP的一些重要头字段参数[3]:

1)Accept。用于指定客户端可以接受的媒体描述信息类型。

2)CSeq。指定了RTSP请求回应对的序列号,在每个请求或回应中都必须包括这个头字段;对每个包含一个给定序列号的请求消息,都会有一个相同序列号的回应消息;在客户端发送一个请求命令,得到成功的应答后,再发送下一条命令,CSeq的值要加1。

3)Rang。用于指定一个时间范围,可以使用SMPTE,NTP或clock时间单元,NPT通常用于指示播放、暂停或者录播的开始/结束时间。

4)Session。Session ID是由服务器收到SETUP信令并成功处理后生成的一个会话索引并通过响应消息发送到客户端,客户端一旦得到Session ID后,后续对该媒体流的控制请求都需要带上会话ID,会话ID是每个媒体流控制的全局标志,Session头字段标识了一个RTSP会话。

5)Transport。Transport头字段包含客户端可以接受的传输选项列表,包括传输协议、地址端口、TTL等,服务器端也通过这个头字段返回实际选择的具体选项。

1.2 客户端与DSS的RTSP请求处理过程

客户端与DSS的RTSP交互过程是:客户端连接到流服务器并发送一个RTSP请求命令(描述命令为DESCRIBE),DESCRIBE和响应DESCRIBE Response构成了RTSP的媒体初始化阶段,客户端可以使用Accept头域,声明可以接受的格式,流媒体服务器通过一个SDP描述来进行反馈,反馈信息包括流数量(video stream/audio stream)、请求的媒体类型等信息。客户端分析该SDP描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),RTSP建立命令告诉服务器客户端用于接收媒体数据的端口(音频流和视频流的端口不同)。在SETUP Response中,服务器产生Session ID,在Session头域携带该信息,并返回会话相关信息。流媒体连接建立完成后,客户端发送一个播放命令(PLAY),PLAY方法请求服务器使用SETUP建立的机制开始发送数据,并且通过Range头域设置了正常播放时间(NPT),播放从Range指定的开始位置开始播放,直到Range指定的结束位置结束播放,服务器就开始在UDP上传送媒体流(RTP包)到客户端。在播放过程中客户端还可以向服务器发送命令进行播放/暂停、快进、快退等。最后,客户端可发送一个终止命令(TERADOWN)来结束流媒体会话,服务器释放已经分配的资源。RTSP交互的示意时序图如图1所示。

图1 DSS的RTSP交互时序图

2 定制客户端具体实现流程

定制客户端主要是用于对流媒体服务器的点播并发能力进行测试,所以定制并发模拟客户端工具需满足以下条件:

1)客户端工具需与DSS之间完成RTSP协议交互(DESCRIPTION,SETUP,PLAY 需走通)。

2)客户端可以不接收媒体服务器的流,但需与服务器之间保持持续的在线状态,并让媒体服务器从网口发出流(在UDP上传送媒体流RTP包)。

3)客户端工具请求的媒体文件需具有自动循环的功能。

4)客户端工具能根据设定的系列文件名称自动去循环请求服务器上相应的媒体文件。

5)客户端工具有一定的扩展性,不局限于单纯的DSS服务器,对修改了的DSS或者其他的流媒体软件(只要是通过RTSP协议与客户端进行交互的)也能进行模拟客户端(要求是只做字符串级别的修改,就能实现对不同媒体服务器模拟客户端)。

根据以上对定制客户端测试工具的要求和图1所示的RTSP协议交互时序图,具体实现过程如下:

1)定制客户端的输入界面

定制客户端的总体设计以对话框的形式展现,用对话框来实现对访问的服务器IP地址、影片格式和多文件路径的读取。图2是为访问不同媒体文件的定制客户端设计的输入对话框界面。

图2 访问不同媒体文件的定制客户端界面(截图)

2)通过SOCKET发送RTSP信令与DSS进行点播请求

DSS源码中应用了大量的SOCKET和线程对流媒体服务器所涉及的信令协议进行处理,所以该定制客户端在模拟用户与DSS进行RTSP信令交互时,也主要应用到SOCKET和线程。具体信令实现流程如图3所示。

用SOCKET实现向服务器发起RTSP请求,就是先建立一个端口,类似于createsocket(),通过connect()将客户端和服务器端连接,连接成功后,客户端与流媒体服务器端进行RTSP 信令交互:DESCRIBE->SETUP(video)-> SETUP(audio)->PLAY-> TERADOWN。客户端接受响应socket.recv(),分析接收到的响应信息RTSP信令响应消息,Response(RTSP/1.0200 OK…)表示信令请求成功。

3)实现客户端访问多个媒体文件

在实现访问多个媒体文件时,针对上文所描述的定制客户端需满足条件中的第3条和第4条,对访问的多个不同媒体文件的文件命名有一定的限制,即文件命名必须遵循从1,2,3,…,N,…,当对话框上输入请求访问的多文件路径是N时,定制客户端就循环依次访问1~N个媒体文件,这样就实现了客户端对不同文件的访问。

图3 实现RTSP信令交互具体流程图

4)实现以多IP(虚拟IP)多端口形式访问不同媒体文件

图4的程序段DifferentRequest()函数就是实现多IP多端口对不同媒体文件的访问,其中代码中设置的客户端初始虚拟IP是192.168.211.10。

图4 功能扩展部分程序段

5)扩展性开发

在对其扩展性进行开发时,对不同媒体服务器模拟客户端,整体设计、程序的算法和信令发送方式都不需要修改,根据相应的RTSP交互流程,实现时只须修改SOCKET中有关信令的部分字符串,即只是实现流程中的第2步中图3所涉及到的RTSP协议信令字符串有所不同,其余步骤都不变。

例如针对下面测试中用到的修改的DSS流媒体服务器(支持MPEG-2 TS流),在与客户端进行RTSP信令交互时,具体流程是 OPTION->DESCRIBE->SETUP->PLAY->TEARDOMN,比未修改的DSS多了一条OPTION命令,并且只须通过一条SETUP命令发起音视频请求,在实现定制客户端时只需要通过SOCKET对信令发送的内容做出相应修改,其余部分都不变。

3 对定制客户端进行测试及验证

根据定制模拟客户端工具需满足的条件对其进行测试,因为有扩展性的要求,所以这里将针对两种流媒体软件进行模拟客户端,分别是苹果公司的DSS流媒体软件(支持MOV格式)和经过修改后的DSS流媒体软件(支持MPEG-2 TS 格式)。

3.1 测试设备及环境

因为要针对两种流媒体软件进行模拟客户端,所以在宝德服务器上将安装两套流媒体软件,先装未修改的DSS,测试完成后,卸载未修改的DSS,再安装修改的DSS对定制客户端进行扩展性测试。所以在整个测试过程中所用到的主要测试设备如表2所示。

表2 主要测试设备

测试环境为宝德PT6220G服务器与PC客户端通过交换机构成一个完整的流媒体系统,组建独立局域网进行测试,网络拓扑图如图5所示。

图5 测试网络拓扑图

3.2 测试过程及结果

3.2.1 针对未修改的DSS模拟客户端

苹果公司的DSS支持基于WEB的后台管理,如果有用户连接到DSS服务器,并且服务器向客户端发出流,在其管理页面的Connectted Users界面中就可以查看当前连接用户的地址、传输码率、传输数据量、丢包比例、传输时间和连接文件等信息[4]。可以通过Connectted Users界面显示的内容对定制客户端工具进行检验,如果定制客户端实现了模拟并发用户,Connectted Users界面就会显示当前连接的用户信息。

运行定制客户端,在对话框上输入服务器IP:192.168.111.211,影片格式为.mov,多文件路径为20,(即定制客户端模拟20个用户同时访问1.mov~20.mov这20个不同影片),查看DSS的WEB后台管理端的Connectted Users界面显示的内容,显示结果如图6所示,显示当前有20个用户连接到DSS服务器上,并且客户端的IP地址是192.168.111.111,访问的文件是1.mov~20.mov这20个不同的影片,并且流媒体服务器有向客户端发出流,由此证明了针对苹果公司的DSS流媒体服务器,此定制客户端实现了模拟多个用户(多端口)访问多个不同的媒体文件。

图6 DSS的WEB管理界面(截图)

3.2.2 针对修改的DSS模拟客户端

因为修改了的Darwin流媒体服务器(支持MPEG-2 TS格式)修改了文件读取模块,所以DSS的WEB后台管理页面不能显示当前用户连接数,并且定制客户端仅模拟用户向服务器发起RTSP请求,不需要进行播放流,所以对定制客户端的扩展性测试可以用Wirshark抓包工具进行抓包,根据对抓包结果的分析,可以明确地检验出该定制客户端是否模拟了客户与服务器进行了RTSP交互。所以可以通过抓包的方式对定制客户端工具的扩展性进行测试。

对定制客户端的扩展性进行测试,在服务器上安装修改了的DSS流媒体软件(支持MPEG-2 TS格式),模拟PC上运行定制客户端和Wirshark,如果模拟的并发数过多的话,抓包结果会很大,这里只需要证明定制客户端能模拟用户访问修改了的DSS,所以在测试过程中对不同文件的模拟并发数定为3(即只模拟3个用户同时访问服务器)。

在定制客户端对话框中输入服务器IP:192.168.111.211,影片格式为.ts,多文件路径为3(即定制客户端模拟3个用户同时访问1.ts,2.ts,3.ts这3个影片),图7是RTSP协议的抓包截图,图8是UDP协议的抓包截图。

通过图7可以看到定制客户端(IP:192.168.111.111)与服务器端(IP:192.168.111.221)进行了RTSP交互(请求了1.ts~3.ts这3个影片)。通过图8可以看到服务器向 IP 为192.168.211.10,192.168.211.11,192.168.211.12这3个虚拟用户IP发出了UDP包,即服务器有向客户端提供媒体流。由此证明了针对修改了的DSS流媒体服务器,修改了的定制客户端实现了模拟多个用户(多IP)访问多个不同的媒体文件,即本文所设计的定制客户端还具有一定的扩展性,能对不同流媒体软件进行模拟并发用户。

4 小结

随着流媒体技术的广泛应用和IPTV业务的发展,有关音视频互动的系统已转变到以用户为导向的互动服务上来,因此对流媒体视频点播性能也提出了更高的要求。本文就流媒体软件点播并发能力的测试设计定制客户端,测试结果显示定制客户端测试工具有很好的性能,如果要对单一媒体文件进行访问,定制客户端的整体设计框架不变,只是循环访问的对象不同,而且本文设计的客户端不仅仅能针对DSS模拟客户端,只要对信令部分稍加修改,还可以针对改进了的DSS以及其他的服务器模拟客户端,在对流媒体软件的压力测试中得到了广泛应用。

[1]Apple Computer Inc.QuickTime streaming server modules programming guide[EB/OL].[2011-06-01].http://images.apple.com/quicktime/pdf/QTSS_Modules.pdf.

[2]Real time streaming protocol(RTSP)[EB/OL].[2011-06-01].http://www.tml.tkk.fi/Studies/Tik-110.300/1998/Essays/rtsp.html.

[3]RTSP 协议学习笔记[EB/OL].[2011-06-01].http://wenku.baidu.com/view/32a66e1c59eef8c75fbfb3c3.html.

[4]Apple Computer Inc.QuickTime streaming/server darwin streaming server administrator’s guide[EB/OL].[2011-06-01].http://manuals.info.apple.com/en/quicktimestreamingsrvradminguide.pdf.

[5]甘玲,邱劲,张璞.面向对象技术与Visual C++[M].北京:清华大学出版社,2006.

猜你喜欢

扩展性信令客户端
SLS字段在七号信令中的运用
如何看待传统媒体新闻客户端的“断舍离”?
移动信令在交通大数据分析中的应用探索
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
提高初中阶段学生英语扩展性阅读能力策略分析
基于信令分析的TD-LTE无线网络应用研究
高中物理如何充分利用扩展性栏目
LTE网络信令采集数据的分析及探讨