基于RTP时间信息的动态缓冲方法设计与实现

2019-08-30 03:31齐幸辉张松轶
无线电通信技术 2019年5期
关键词:序列号缓冲区实时性

冀 峰,齐幸辉,张松轶

(河北远东通信系统工程有限公司,河北 石家庄 050200)

0 引言

随着移动互联网技术的发展,VoIP电话、网络视频会议等多媒体交互性的应用已经变得越来越广泛。但由于网络传输的时延和波动性等因素,实时数据通信过程中经常会遇到分组丢失、乱序和拥塞等问题,成为制约IP设备用户体验的重要因素[1-2]。

在现有技术中,基于网络分组传输的波动性和流媒体传输的数据量大、实时性要求高等特点,通常的技术手段是在接收端增加数据的缓冲处理环节[3],通过数据在缓冲区内的排序、平衡和组织,消除或减轻网络分组在传输过程中的乱序、丢失和抖动等影响,进而将数据在输出端平稳有序地输出,提高媒体播放的质量。

因此,改进接收端的缓冲区设计和数据处理方法,特别是依托于实时传输层控制协议,设计满足和适应于实际网络传输条件的缓冲数据处理方法,是基于VoIP的多媒体应用研究中比较重要的一个方面。

1 RTP协议

实时传输协议(Real-time Transport Protocol,RTP)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一或者一对多的网络环境中实现流媒体数据的端到端的实时传输,目的是提供时间信息和实现流同步,是被广泛采用的流媒体传输的基础技术。RTP协议包头的定义如图1所示[4]。

图1 RTP协议中包头结构定义说明

RTP包中携带的时间和同步信息体现在协议头中,常用的时序参考参数有以下2个:

① 序列号:描述报文传输的序列号,表示RTP分组的次序。初值为随机数,每发送1个增加1,可供接收方检测分组丢失和恢复分组次序。

② 时间戳:描述该报文采样数据的时间标记,表示RTP分组第1个字节的取样时刻。其初值为随机数,每个采样周期加1。

本文所述的数据传输和缓冲技术都是基于RTP协议所提供时间戳或序列号等机制。由于RTP协议本身不保证数据包的可靠性传输,鉴于在实际应用中都采用UDP作为传输层协议,因此,对收到来自网络的RTP数据包进行对于乱序包的检测与重排是有必要的。

2 传统的静态数据缓冲技术

缓冲技术是接收端将网络传输链路上接收的数据包,在缓冲区内进行排序、组合等数据处理。输出端按照生成的顺序对缓冲区内的数据包进行依次读取。该技术可以在一定程度上消除网络传输过程所带来的分组丢失和延迟抖动[5-6]。

静态数据缓冲技术[7]是数据缓冲区大小为固定不变的缓冲技术,工作原理如图2所示。

图2 静态数据缓存技术原理示意图

程序在启动过程中,需要初始化一块大小恒定的内存区域作为数据缓冲区。由于在实际运行过程中要兼顾到网络传输质量较差的情况,因此,该缓冲区的长度一般设置得比较大。

程序运行过程中,接收任务将从网络传输层接收到的数据包放入缓冲区,首先判断缓冲区是否已满。如果未满,将按照数据包携带的RTP序列号信息放入缓冲区中进行排序存储,否则,则丢弃该数据包。

读取任务根据播放信号的驱动,对缓冲区中的数据包进行顺序读取,并对其携带的序列号信息进行同步检测,遇到序列号不连续的情况,说明数据包在传输过程中存在丢失的情况,则按照缓冲区内已有的数据包进行顺序读取;如果缓冲区为空,则说明网络接收出现异常或者延迟,返回静音数据包。

现有静态缓冲技术的缺点如下:

(1)有非常明显的延时累加效应[8]

由于网络的传输特性,网络丢包/乱序会导致数据包的传输延时变大,同时,经过缓冲区的存储、排序操作,最终数据包的读取延时会逐渐增大,直到维持在最大值。即使网络传输状况好转,也不能根据网络情况自动减小网络延时。在实时性交互时,这种延时累加的结果,有可能导致双方或多方的动态交流无法进行[9-10]。

(2)资源开销太大

采用静态缓冲技术的条件下,缓冲区的设计要兼顾各种网络的传输情况,确保在数据接收过程中,缓冲区不出现数据溢出,避免被动丢包,缓冲区的长度设置一般参考网络传输可能出现的最差情况,因此,缓冲区就需要设置得比较大,随之带来较大的系统资源占用。在资源非常有限的嵌入式应用场合,该方法有很大的局限性。

3 改进的动态数据缓冲技术

在实时交互式的媒体应用中,实时性的要求占主体地位,如果双方或多方能有较好的实时性,即使媒体质量较差,也是可以接受的;否则,双方的交流就会因时延问题而发生困难[3-4]。

结合某些应用条件下资源紧张的情况,为了尽量减少资源的浪费,保证媒体交互的实时性,在静态缓冲技术的基础上研究了动态缓冲技术[11]。动态缓冲技术是指缓冲区的大小并不是固定不变的,它可以根据网络数据包的传输状况,如抖动、丢包率及延时等,对缓冲区的大小进行实时调整,以提高实时交互性能,减少系统资源占用[12]。

3.1 基于RTP时间信息的网络传输质量估计

动态缓冲技术需要周期性地获取当前网络的传输质量,以此作为缓冲区调整策略的依据。网络传输状况包括网络传输中的抖动延迟和丢包情况。

根据RTP协议标准规定,RTP包中携带的序列号定义为16 bit的整型数,发送端每发送一个RTP数据包,序列号加1,序列号的初始值是随机的。借助于RTP包头的序列号,接收端可以重建数据包的顺序和检测数据包的丢失情况[13-14]。

由于网络具有波动性,单一时刻的延时抖动不能代表一个特定时间段内的网络传输状况。因此,本文采用在一个固定窗口对RTP数据包的抖动时间平滑得到作为网络传输质量的一个估计值(窗口宽度N选择为20个语音帧)。

式中,k,i为收到RTP数据包的顺序号,S(k),S(i)为对应数据包中的RTP序列号,Δ是针对数据包基准顺序号为i的固定窗口进行抖动时间的平滑估计,以此作为网络传输状况的参考,完成一次估计后,窗口的数据包基准顺序号为i+N。

一旦有分组丢失,或者网络抖动的情况产生,Δ的输出就是大于1的正值,而在理想的网络传输环境下,Δ的输出维持为1的恒定值。因此,根据周期性Δ的返回值,可以及时感知当前网络的传输质量,通过调整缓冲区的长度和读取任务指针,来保证媒体传输的实时性和媒体质量的平稳性。

3.2 缓冲区长度的动态调整策略

以周期性所获取的网络传输质量为依据,该技术主要根据当前的网络传输情况动态地调整缓冲区的大小,充分利用带宽资源,在媒体流的实时交互性能和网络传输质量之间取得平衡,原理如图3所示。

图3 动态数据缓存示意图

程序在初始化时,申请一小块的内存区作为缓冲区的初始长度,本文选取5帧语音作为初始长度。在实际应用过程中,通过周期性获取当前的网络传输质量,来对缓冲区中的动态调整部分进行自适应调整。

根据Δ的计算公式,可以推出,在Δ逼近于数值1的条件下,表明当前网络的传输状态较为理想;在Δ偏离数值1的的条件下,表明当前网络的传输状态存在丢包、乱序等情况,可以通过补包处理的方式给系统设置较长的缓冲队列,以引入较大的时延来延缓数据的抖动和乱序,保证媒体数据的传输质量;在Δ较小的情况下,表明当前网络传输状态比较通畅,通过适当的丢包处理,给系统设置较短的缓冲队列,减小系统在交互过程中引入的延时,保证媒体的实时交互。同时,为降低缓冲区动态调整过程中对媒体质量的影响,在每一个周期内仅补偿或丢弃一个数据包。

缓冲区动态调整的处理流程图如图4所示。

图4 动态缓冲区调整流程图

采用该方法能够动态调整缓冲区延时大小,避免现有传统技术中的延时累加效应。同时又能在保持媒体质量的前提下,提升交互的实时性。

在网络传输状况较差或者延时较大的情况下,适当丢弃当前缓冲的数据包,接收端不对该数据包所包含的媒体信息进行播放,以此来减少读取媒体数据的时延,虽稍微降低了媒体的播放质量,但是达到了增强媒体实时性的目的。

3.3 仿真及结果分析

为验证算法的性能以及正确性,需要模拟各种网络的传输情况,构建语音分组的测试序列,该序列中应该包括语音分组的网络传输中的普遍情况,包括网络抖动、网络延时和网络丢包等情况。利用模拟网络状态的情况,模拟的网络数据包测试序列如图5所示。

该测试序列包含了网络抖动、延时和乱序等常见的网络传输问题。在语音测试序列中,有a,b,c三个模拟段,其中,a段模拟网络延时,b段模拟网络丢包,c段模拟网络抖动和乱序。

在该测试序列的测试下,依据本文所描述的动态缓冲区调整策略,缓冲区的大小会根据网络传输质量进行实时动态调整,控制语音分组的输出延时,针对语音分组传输测试序列进行测试的网络传输质量估计如图6所示。

图5 语音分组测试序列

图6 网络传输质量估计

由图6可以看出,在语音分组传输正常时,估计值Δ一直保持在1左右,说明此时网络上没有发生丢包或者延时的情况,当网络延时出现时,该估计值会出现一个抖动,当网络丢包和抖动乱序出现时,该估计值会出现明显波动。

由图7可以看出,经过缓冲区调整后的媒体输出,可以兼顾媒体质量和实时性,在大量媒体数据丢包的情况下,语音分组的接收时间出现一个延时波动,但是随着时间趋于收敛,削弱了网络传输恶化对媒体实时性的影响,使媒体的整体质量始终维持在一个相对较好的水平。

图7 不同算法的语音分组输出对比图

4 结束语

该方法根据实时估计网络的传输质量,采用动态调整缓冲区中数据包的个数来保证流媒体传输的实时性和传输质量,因此,不必预先设置很大的缓存区来兼顾网络状况很差时的传输质量。减小了资源占用,提升了产品的用户体验,对基于VoIP的多媒体应用研究有着重要的参考意义。目前,该方法已经成功应用于某多媒体调度产品,应用效果良好。

猜你喜欢
序列号缓冲区实时性
一种离线电子钱包交易的双向容错控制方法
一种控制器硬件序列号的更新方法
关于《国家税务总局 工业和信息化部关于加强车辆配置序列号管理有关事项的公告》的解读
串行连续生产线的可用度与缓冲库存控制研究*
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究
初涉缓冲区
本期导读
Linux系统下缓冲区溢出漏洞攻击的防范