计算机系统应用流媒体服务器性能测试工具①杜彬1,2,王淑玲2,杨海波1,21(中国科学院研究生院,北京100049)2(中国科学院沈阳计算技术研究所,沈阳110171)摘要:基于RTSP协议的流媒体应用日益增加,如何评测RTSP流媒体服务器的服务性能成为一个亟待解决的实际问题。本文在分析流媒体业务性能指标的基础上,设计和实现了一种RTSP协议流媒体服务器性能的测试工具。该工具通过读取测试用例脚本设定参数建立测试场景,利用多线程机制生成多实例伪终端向流媒体服务器发送RTSP信令、接收和解析RTP包,但不解码,昀终测定服务器的相关性能指标值。验证实验表明,该测试工具实用高效,能准确反映被测系统的整体性能。关键词:RTSP流媒体服务器;性能测试;性能指标;媒体流;测试工具PerformanceTestingToolforRTSP-BasedStreamingServerDUBin1,2,WANGShu-Ling2,YANGHai-Bo1,21(GraduateUniversity,ChineseAcademyofSciences,Beijing100049,China)2(ShenyangInstituteofComputingTechnology,ChineseAcademyofSciences,Shenyang110171,China)Abstract:TheattentiononthestreamingmediaapplicationsbasedonRTSPprotocolisgrowing,sothemainissueweaddressinthispaperishowtoevaluatetheservingperformanceofRTSPstreamingmediaserver.Withcomprehensiveanalysisoftheperformancemetricsofstreamingapplications,weproposeanapproachtodesignandimplementaPerformanceTestingToolforRTSP-basedStreamingServer.Thetoolcreatesthetestingenvironmentbyobtainingparametersfromthescriptoftestcase,utilizesmulti-threadmechanismtocreatemultiplepseudo-terminalinstancestosimulateacertainnumberofconcurrentusersforsendingRTSPsignals,receivesmediaflow,analyzesRTPpacketswithoutdecoding,andcalculatestherelatedperformancemetricvaluesoftheserverfinally.Experimentsvalidatetheefficiencyandaccuracyofthetool.Keywords:RTSPstreamingmediaserver;performancetest;performancemetrics;mediaflow;testingtool1引言随着3G移动通信网络在国内的全面启动和发展,各运营商也充分利用3G网络为客户提供丰富的个性化业务,流媒体成为其中重要内容。开放的RTSP协议被用于多种流媒体应用中,作为流媒体系统中必不可少的环节,各种各样满足用户需要的流媒体服务器应运而生,如何评测RTSP流媒体服务器的服务性能成为一个亟待解决的实际问题。与传统Web服务不同,流媒体业务传送流媒体文件,强调实时传输、智能控制、具有多播和实况转播①收稿时间:2010-07-02;收到修改稿时间:2010-08-05等特点。显然,Web服务器性能测试方法不再适用于流媒体服务器,而国际上各大测试系统提供商对流媒体产品测试的研究还十分有限,相应的测试工具也非常稀少,工业级负载测试工具HPLoadRunnerTM也仅对RealNetworks公司的Real协议以及Microsoft公司的MMS协议提供了测试服务,并未真正涉及RTSP协议;国内至今也没有相应工具的开发。所以,开发这样一种测试工具对广大RTSP流媒体服务器系统的研发者和流媒体服务提供商都具有十分重要的意义。本文提出了一种基于RTSP协议流媒体服务器性2011年第20卷第3期能测试工具的设计和实现方法,这种测试工具不但可以测试服务器RTSP信令的交互能力,同时更加重点考量流媒体服务器在面对大量用户并发情况下处理媒体流传输的能力。测试工具生成的多个伪终端实例随机访问流媒体服务器上已正确存在的多个RTSP地址,服务过程更加真实;另外,为了支持任何codec的媒体流传输,工具未进行解码;同时,采用一种专门的传输机制使伪终端只发送和接受RTSP信令,而由特定的IP地址和端口接收RTP媒体流,能更好地支持并发传输,很大程度上缓解了测试工具的压力。本文首先介绍了相关流媒体协议,并给出性能测试方法和相关性能指标,然后详细阐述测试工具的设计和实现方法,昀后利用它对开源流媒体服务器VLC进行了测试实验。2流媒体相关协议介绍RTSP(RealTimeStreamingProtocol)即实时流协议,是一个用以控制具有实时属性的数据传递的应用层协议,它能够实现音视频数据受控、按需的实时传输,提供播放、停止、快进、快退等控制功能,本身并不传送数据流。RTP(RealTransportProtocol)协议是实时传输协议RTP与实时传输控制协议RTCP的统称,用于单点和多点之间音视频等多媒体数据的实时传输。RTP报文中携带了包括数据负载类型(PayloadType)、时间戳标识(TimeStamp)、序列号)SequenceNumber)、和同步源标识符(SSRC)等重要字段,运用这些信息进行流同步,同时也为定量分析流媒体服务器性能指标提供了数据来源,它并不保证QoS或可靠性传输;RTCP主要提供数据传输质量的反馈,通过周期性地向服务器发送控制信息包封装发送端和接收端的统计会话信息,根据这些动态统计信息,终端对传输速率等传输参数进行合理的调整和修改,它与RTP协议紧密结合使得终端可以向服务器动态反馈传输信息并监测QoS。3性能测试方法及度量指标3.1性能测试方案性能测试主要是测试被测实体在预期用户量或是大用户量情况下系统的稳定性、可靠性和响应时间。性能测试的方法是针对系统的性能指标制定性能测试方案,执行测试用例,运行测试场景,分析并得出测试结果来验证系统的性能指标是否满足既定值[6]。对一个RTSP流媒体服务器系统进行测试的目的就是为了把握被测系统响应情况以及并发传输媒体流的能力,可以通过逐渐增加并发流数目的方式观察各个性能参数的变化从而得出服务器的昀大服务能力。3.2性能指标参数目前,关于流媒体服务器性能评价没有形成固定的标准,本文借鉴Web服务器的性能标准并结合流媒体服务器自身的特点给出反映流媒体服务器性能和各种资源利用情况的参数[4,7]:1)昀大并发流数目:流媒体服务器可以长时间稳定地支持的昀大客户端数;2)聚合输出带宽:服务器向外发送数据流时所能达到的昀大发送带宽;3)请求响应延迟:从用户发出RTSP点播信令开始到接收到第一个RTP数据包之间的时间间隔;4)服务器端丢包率:服务器丢弃RTP数据包的情况;5)延迟抖动:两个数据包之间发送与实际到达的时间间隔;6)CPU占用率:随着并发流数目的增加,流媒体服务器提供服务时所占用CPU资源的情况;3.3典型的流媒体请求与传输过程图1是一个典型的流媒体请求及媒体流传输流程,由终端播放器向流媒体服务器发出播放请求,服务器端返回成功响应,随后服务器向终端发送RTP媒体流,期间终端可以执行暂停、快进、快退、结束会话等控制操作。图1典型的媒体点播及媒体流传输流程计算机系统应用测试工具的访问模式从本质上来说,测试工具首先是一个请求终端的行为,但它能同时建立多路请求,另外需要提供被测系统的性能指标值。为了更加真实地反映流媒体服务器提供服务的过程,本文采用多线程机制同时生成多个实例的伪终端随机地向流媒体服务器中已正确存在的RTSP访问地址发起请求,而不限制于多个实例只对一个流媒体文件进行访问的模式[6]。但很显然,这也引入了实际问题。我们知道服务器的性能状况与媒体文件的码率有直接的关系——码率越大,昀大支持的并发流数目越少,丢包、抖动等问题随之加重。所以如果选择的媒体文件码率相差较大,而伪终端实例又只是随机地对其进行访问,那么测试结果就会存在很大的不确定性。为了避免这种情况,本文设计的测试工具需要在测试前统一媒体文件的码率与文件播放时间。另外,测试工具与真正的流媒体终端昀大的区别还在于它未进行解码工作。在一个完整的流媒体系统中,编解码器是重要的组成部分,强大稳定的解码器可以为终端用户提供更好的服务。但因为这里关注的是流媒体服务器在面对大量并发用户请求下传输媒体流的能力,而不是强调音视频在终端的昀后呈现,所以测试工具无需完成解码,那么理论上测试工具可以支持任何codec的媒体流。4.2测试工具工作原理流媒体服务器性能良好与否不仅体现在对信令的响应能力上,而更重要的是它对大量并发媒体流的处理。但如果流媒体服务器向所有发出请求的伪终端发送真实的媒体流数据,那么伪终端需要具有很强的处理媒体流的能力,在大量的媒体流并发的情况下,仅它自身就会占用大量的系统资源,导致测试过程难以维系,出现分析不准确甚至错误。所以,本文采用一种新的媒体流传输机制,使伪终端实例只发送和接收与流媒体服务器之间的RTSP交互信令,而真实的媒体流则通过一定的映射方法被发送到专门的地址并得到相应的处理[1]。测试工具工作原理如图2所示。图2工作原理4.3测试工具的体系结构和功能模块测试工具从逻辑上包括三个应用程序,一个是只负责发送和接受RTSP信令的伪终端,一个是接收从服务器端发送过来的RTP数据流的媒体流接收器,它在接收媒体流的同时对RTP包进行解析获取一定的头域信息,另一个是分析计算出上文中列出的各性能参数值的统计分析器。测试工具体系结构如图3所示[5]:图3测试工具体系结构图1)测试脚本文件:测试场景的建立以脚本文件的输入参数为基础,按照下面几个方面建立测试场景:①启动方式选择并发用户同时发起请求还是以线性增长的方式逐渐达到设定并发用户数;2011年第20卷第3期②终端实例执行的应用类型采用单播还是多播;③RTP数据流基于UDP还是TCP;④终端实例发送TEARDOWN消息是在请求媒体播放完毕后向服务器还是限定媒体文件播放一段时间后;通过这些设置模拟真实的流媒体请求和数据流传输过程。2)伪终端管理器:伪终端管理器提供了整个测试流程的管理。测试工具从本质上来说首先是一个多实例的RTSP终端,每一个终端实例就是一个线程,各自执行自己的RTSP请求,维持着自身的状态。伪终端管理器负责终端实例的生成和撤销,它维护一个终端实例队列,由活跃的终端实例组成。伪终端管理器把生成的伪终端实例插入队列,同时检查每一个终端实例的状态,把完成会话或意外终止的终端实例撤出队列。3)伪终端:伪终端通过RTSP协议与流媒体服务器进行通信,通过分析测试脚本中设定的并发流数,伪终端建立相应数目的实例,它同时支持基于UDP和TC