IPTV测试仪网络层测试的设计与实现
2009-07-27
作者:陈玉花, 张治中, 杜西亚
摘 要: 以IPTV测试仪的网络层测试功能为研究背景,介绍了IPTV的整体设计框架、网络层测试指标的算法设计,并在此基础上探讨了利用 IP流量发生器测试这些指标的设计方案。分析了方案中先进的主从机模式和高效的流量产生算法及调度算法,给出了测试方案的仿真结果。结果表明,方案思路清晰、稳定可靠。此方案已应用于IPTV测试仪中,效果良好。
关键词:网络层指标; IP流量发生;主从机模式;调度算法; IPTV测试仪
随着数字媒体娱乐的兴起,IPTV吸引了业界众多眼球[1-3],成为全球电信业投资重点之一。IPTV业务是伴随着宽带互联网的飞速发展而兴起的一项新兴的互联网增值业务,它利用宽带互联网的基础设施,以家用电视机和电脑作为主要终端,利用网络机顶盒STB(Set-TopBox),通过互联网协议来传送电视信号,提供包括电视节目在内的多种数字媒体服务。IPTV简单来说就是交互式网络电视[2-5],它能为用户提供电信级的服务和使用简便的电视式体验。然而,在融合的环境中,使用IPTV这样的应用,服务质量和性能测试显得比以往更加重要。因此,IPTV测试仪应运而生。
IPTV测试仪网络层质量测试,主要指传统IP网络层的性能指标,根据ITU-T Y.1540[3]建议,主要为IP丢包率、IP包时延、IP包抖动及其相关参数。IPTV用户最为注重的就是服务质量,而网络的时延、抖动和丢包将导致图像斑点和马赛克、图片模糊和边缘失真、音频中断以及通道更改延迟等,严重影响了服务质量。因此,本文对网络层指标的测试设计与实现的研究具有重要意义[1-8]。
1 测试仪的整体框架
IPTV测试仪由软件和硬件两部分组成,而对网络层的测试,主要由硬件部分FPGA模块的IP流量发生器实现,如图1所示。
本文研究的IPTV测试仪网络层测试,采用了单MAC主从机测试模式进行主动测试,利用IP流量发生器自发自收IP包,分析相应的时间戳和包数量等参数,由此计算IP包的时延、抖动和丢包率。
2 网络层测试指标算法设计
IPTV测试仪网络层的测试指标主要包括丢包率、时延、抖动及其相关参数。
2.1 时延和抖动算法设计
在测试中,时延是指测试仪发送测试包与接收测试包的时间的差值。当音频和视频IP包离开发送端时,按照规则的间隔均匀地排列。在通过网络之后,这一均匀的间隔因不同的时延大小而遭到破坏,从而产生抖动。抖动会导致目标终端上音频和视频流的不连贯性。
测试时,在发送的IP 包中加上发送时间戳,在接收时提取IP包中的时间戳,同时记录接收时间,接收和发送的时间的差值即统计时延。
假设发送IP包的时间戳为SentTimei,接收时间为RecvTimei,i为计算时延值Delayi和抖动值Jitteri的个数。为了使计算更为精确,采用概率的统计平均算法,取前2m(m=0、1…16,可设置)个值计算平均值,作为预估平均值,即为所求的时延值和抖动值。具体算法如下:
2.2 丢包率算法设计
丢包对视频播放质量有直接的影响,发生IP数据包丢失可能基于多个原因,如带宽限制、网络拥塞、链路故障以及传输错误。数据包丢失通常代表了一种突发式行为,经常与网络拥塞时段相关联。
丢包率是指测试中所丢失数据包数量占所发送数据包的比率,通常在吞吐量范围内测试。假设第j次主测试仪发送IP包的个数为IPSentj,接收回来的包为IPRecvj,则丢包率IPLostj为:
为了使计算更为精确,采用概率的统计平均算法,取前2m(m=0、1…16,可设置)个值计算平均值,作为预估平均值,即为所求的丢包率。
以上网络层指标的测试,采取主动测试模式,利用IP流量发生器来完成。
3 测试方案设计
3.1主从机测试模式
普通测试仪采用的双MAC单机测试模式,只能测试单个网络,测试距离短、范围小。IPTV测试仪网络层测试采用的是单MAC主从机测试模式,可远距离跨网测试,比单机测试模式测试距离更长,范围更广,精确度更高。
IPTV测试仪在测试网络层指标时,可作为主机发送IP包,可作为从机转发IP包,也可同时作为主机和从机,同时发送接收和转发IP包。如图2所示。
测试仪A和测试仪B测试网络1,测试仪B和测试仪C测试网络2。其中A选择主机状态,发送接收IP包,分析测试指标。C选择从机状态转发B发送的IP包给B。而B则同时作为A的从机和C的主机,负责发送和接收给C的IP包,同时转发回A发送来的IP包。
主从机通信流程图如图3所示。
首先主机A发送连接请求消息,从机B回复连接响应消息。收到回复后,主机A发送连接建立完成消息并发送加上发送时间戳的IP包,从机B接收并转发回IP包给主机A。主机A根据返回IP包的数据计算时延抖动和丢包率。
3.2 整体设计
测试仪的主从机测试模式以及测试指标参数提取是采用IP流量发生器实现的。其主要由控制模块、 同步模块、响应模块、ARP/RARP模块、转发模块、IP流量发生模块、自身IP包处理模块、发送模块、发送调度模块、接收模块、接收调度模块等组成。具体方案设计如图4所示。
控制模块负责IP流量发生器与CPU的交互,并控制测试仪处于何种状态:主机状态、从机状态、主从机状态;ARP/RARP模块主要负责ARP/RARP包的处理;同步模块负责主机向从机发送连接请求;响应模块负责从机向主机发送响应信息;转发模块完成主机发送来的IP包的转发;IP流量发生模块产生主机要发送的IP包;自身IP包处理模块完成对从机转发回的IP包进行分析处理,提取网络测试指标参数;接收模块完成网络上各种测试包的接收;接收调度模块调度接收到的测试包发送到相应的模块处理,如将ARP包送到ARP模块;发送模块负责将各种测试包发送到网络;发送调度模块完成各个模块测试包的发送顺序。
3.3 IP流量发生方案
IP流量发生模块是整个IP流量发生器最重要的模块。用户在进行网络层测试时,启动IP流量发生器。用户输入每秒产生的IP包的个数、IP包的长度、IP包的类型、目的IP地址等关键参数。IP流量发生模块根据这些信息生成IP流量。
发送的IP包的生成采用“定点填充、规律生成”的方案,即一些关键信息如测试时间、IP头长度、IP包总长度等在IP包中分配有固定的位置,且取值会对测试结果产生影响。对于这样的信息就要根据IP包的类型和用户填写的信息填充到固定的位置。如图5中的伪码所示。
而IP包承载的一些数据信息可以是任何随意的值,取值多少对测试结果不会产生影响。对于这些信息,为了避免出现全0,将按一定规律产生。如伪码中所示,最高8位为一个固定前缀ti,低8位为位置偏移量的值offset(以4字节为单位)。当offset=x'01F4' 时,ti<=ti+1。这样规律产生的数据,便于测试时检查传输数据的正确性和纠错。
3.4 调度算法设计
在IPTV测试仪的IP流量发生器中主要有2个重要的调度:接收调度和发送调度。测试仪处于不同的状态时,采用不同的调度算法。现在以调度最为复杂的主从机状态为例,介绍2个重要调度的算法设计。
(1) 接收调度
接收模块接收的测试包有4种可能:ARP/RARP包、作为从机要转发的包、应主机同步包的响应包、作为主机接收回的自身的IP包。
接收调度就是判断测试包的类型,接收的是哪种类型的测试包就送到相应的处理模块进行处理。
(2)发送调度
相对接收调度,发送调度要复杂很多。因为测试仪同时处于主机和从机状态,它要发送的测试包有:ARP/RARP包、作为主机自身产生的IP包、请求从机建立连接的同步包、作为从机要转发回去的IP包。但是几种测试包可能都在等待发送。因此发送调度模块采用了“先来先服务,同在看级别”的算法思想。
发送模块主要调度4种测试包的发送。当4种IP包到来时间不同时,且每次只有1种包需要发送时,则采用先来先服务FCFS(First Come First Serve)调度算法,哪种测试包先到达,调度模块则将其送到发送模块发送。当有2种或3种测试包在同时等待发送时,根据其优先级排队发送,优先发送级别高的测试包,然后发送级别低的测试包。本方案中ARP/RARP包的级别最高为1,同步包次之为2,转发的IP包级别为3,自身IP流量发生的IP包的级别最低为4。即如果3种包同时需要发送时,优先发送ARP包。
这种算法思想结合了经典的先来先服务调度算法和优先级调度算法的优点,实现了发送模块的最优调度。
4 仿真结果及分析
测试时,IP流量发生器接收用户输入的数据,根据这些数据产生IP包,发送模块在和从机建立连接后,按一定的帧间隔发送IP包,并在IP包头后打上发送时间戳。接收模块接收转发回来的IP包,记录每个IP包的时延,并统计接收到的IP包个数,送到上层应用程序进行计算。
为了便于观察测试结果,测试输入如下:选择主机状态,发送时钟周期选择20 ns,1 s发送50 000个IP包,发送间隔为3个时钟周期,IP包头长度为20个字节,总长度为64字节,没有分片。主机IP地址为10.11.107.75(十六进制表示为0A0B6B4B),从机IP地址为10.11.105.34(十六进制表示为0A0B6922)。发送时间戳存放在IP包头的目的IP地址后。发送和接收模块的仿真图如图6所示。
从图中可以看到,接收到的发送模块发送的IP包包头数据与用户输入数据完全吻合,且IP包数据完全按照IP流量产生算法规律产生。接收模块接收到的目的IP地址与发送模块的源IP地址相同都为主机的IP地址,说明主从机连接成功,通信正常。
FPGA模块有一个公共时钟计数器,以时钟计数器值作为时间戳,接收和发送时的计数器值的差值,乘上时钟周期即为所求时延。统计接收到的IP包的个数,在开始接收时钟与当前时钟差值等于时钟频率时,即接收开始1 s后,输出和1 s钟丢包个数,时间未到时丢包个数保持为0。从图5可以看到,接收模块收到的第6个IP包的发送时间为0x000001F4,接收时钟为0x000061AB,时延为124 500(0X00005FB4)个时钟周期。在未到1 s时,丢包个数保持为0。
测试结果与预期结果完全一致。同时,经示波器测试,测试结果与仿真结果基本一致。
本文首先介绍了IPTV测试仪的整体框架;然后分析了网络层测试指标算法,提出了利用IP流量发生器实现网络层测试的的设计方案;最后将方案在仿真软件上进行测试和仿真,并给出了部分结果。测试表明,本方案思路清晰,实现简单,程序稳定可靠。本方案已应用到“重邮东电IPTV测试仪”中,测试效果良好。
参考文献
[1] 仇栋才, 赵国峰. 薛飞. IPTV测试[J]. 电子工程技术与标准化,2007(2):21-25.
[2] 许永明, 谢质文, 欧阳春. IPTV-技术与应用实践[M]. 北京:电子工业出版社,2006.
[3] 李晓飞,朱墨军. IPTV在中国的现状与发展趋势[J].中国多媒体通信,2003,15(1):21-25.
[4] 雷峥嵘.基于Windows Media流媒体技术的IPTV[J].广州大学学报:自然科学版,2006(3):43-47.
[5] 陈晨,裴昌幸. IP网络流量产生器的研究与实现[J].重庆大学学报,2008(2).
[6] 张伟,王婉南.基于VxWorks的以太网流量发生器的实现[J]. 科学技术与工程,2007(17).
[7] OLIVEIRA C,JAIME B K,SUDA T.Long range depen-dence in IEEE 802.1 lb wireless LAN traffic:an empirical study[C].Proceedings of the 18th Annual IEEE Computer Communications Workshop(CCW 2003),California,USA,
2003.
[8] ABRY P,PARANIUK R,FLANDRIN P,et a1. Multiscale nature of network traffic[J]. IEEE Signal Processing Magazine,2002,19(3):28-46.