当前位置:文档之家› 基于实时传输协议的丢包实时修复

基于实时传输协议的丢包实时修复

100029825Π2001Π12(07)1042208○c2001JournalofSoftware 软件学报Vol.12,No.7基于实时传输协议的丢包实时修复Ξ张 钶, 谢忠诚, 鞠九滨(吉林大学计算机科学系,吉林长春 130023)E2mail:jjb@mail.jlu.edu.cnhttp:ΠΠwww.jlu.edu.cn

摘要:在诸如IP电话和远程会议系统等实时应用中,使用实时传输协议RTP(real2timetransportprotocol)在因特网上传输的数据包不可避免地会丢失,极大地影响了传输服务质量.在RTP上增加丢包修复功能可以解决这个问题.介绍了在RTP上采用FEC(forwarderrorcorrection)修复丢包的方法,基于这个方法设计并实现了一个支持丢包修复功能的RTP库,说明了丢包修复功能的测试方法和结果.

关键词:RTP(real2timetransportprotocol);丢包;修复;FEC(forwarderrorcorrection

)

中图法分类号:TP393 文献标识码:A

话音包与数据包在因特网上传输时可能有较大的延迟和丢包概率.丢包将严重地影响IP电话的话音质量[1],因此采取丢包修复方法是很有必要的.造成媒体包丢失的原因有这样几个:路由

器和网关发生拥塞,某些包可能被丢弃;包传输过程中的延迟过大,因到达接收端太晚而无法回放;

在多任务操作系统中,工作站超载运行时可能因调度困难而不能及时处理传输.

目前有4种常见的丢包修复方法[2].重发法是修复TCP丢包常用的方法,但语音数据对时延

敏感,只有当重发延迟满足实时应用的要求时,重发法才是适用的[3].冗余法(媒体相关的FEC

(forwarderrorcorrection)法)[1]是把第n个数据包的副本重新用更低位码率的压缩算法,如GSM

(globalsystemmobile)语音压缩,附加到第n+1个数据包中一起发送,如果第n个包丢失了,可

以从第n+1个包中所附带的副本来恢复;如果附带多个副本,还可以修复连续丢包.这种方法需要额外的CPU及带宽开销,并且只有大致的修复能力.媒体无关的FEC[2]法有精确的修复能力,

发送端对连续多个数据包作异或运算求出FEC数据包,并以奇偶包的形式发送,丢失的数据包可以用接收到的数据包和FEC包作异或运算再生出来.此方法的缺点是与冗余法相比有较大的延迟(缓存多个包以作FEC运算),增加了带宽需求.交叠法

[2]和差错分散法(errorspread)[4]降低或分

散了丢包的影响,它们的优点是不增加带宽需求,但在传输两端中增加缓冲延迟开销.几类修复方法的性能对比见表1.由此可见,媒体无关FEC法和冗余法适合实时传输应用.

对丢包现象的大量研究发现,丢失单包的概率最大,因此丢包修复主要解决丢失单包的修复问题.

IP电话和远程会议系统,从早期的Vat,NeVoT,到后来基于H.323[5]协议的NetMeeting和

IP电话,都把实时传输协议RTP(real2timetransportprotocol)[6]作为传送实时媒体的工具.RTP

Ξ收稿日期:1999212223;修改日期:2000203223

基金项目:高等学校博士学科点专项科研基金资助项目(1999018319)作者简介:张钶(1971-),男,山东泰安人,博士,主要研究领域为计算机网络,分布式系统;谢忠诚(1972-),男,辽宁阜新人,硕士,主要研究领域为计算机网络,分布式系统;鞠九滨(1935-),男,黑龙江哈尔滨人,教授,博士生导师,主要研究领域为计算机网络,分布式系统.已经成为实时媒体传输的通用标准,被H.323系列标准定义在H.225.0[7]的附录中.RTP还包括一个实时控制协议RTCP(RTPcontrolprotocol),用于进行松散的对话控制,提供服务质量QoS

(qualityofservice)报告和支持媒体同步等

.

Table1 Overheadsofdifferentlostrepairschemes表1 不同修复策略开销的对比

Delay①Bandwidthoverhead②Processingoverhead③Retransmission④Medium⑤Variable⑥High⑦Interleaving⑧HighNone⑨Low λυMedia2IndependentFEC λϖHighHighLow

Redundancy λωSmall λξVariableVariable,maybelarge λψ

①延迟,②带宽开销,③处理开销,④重发法,⑤中,⑥变化,⑦高,⑧交叠法,

⑨不变, λυ低, λϖ媒体无关FEC法, λω冗余法, λξ小, λψ变化,可能很大.

实时媒体传输中的丢包检测和修复需要RTP的支持,例如通过包序列号监测丢包,把RTP

的传输实时媒体的功能和丢包修复能力结合在一起,将是实时媒体传输中解决丢包问题的一个较好的方法.实现RTP协议以及基于该协议的工具最早有RTPTools[8]和RTPmon

[9]

,用于处理

RTP数据包和监控RTCP报告.RTPLibrary[10]提供了基本的RTP协议功能.但支持丢包修复的

RTP工具还处于研究阶段,目前还未见报道.本文介绍了我们设计和实现的一个具有丢包修复功能的RTP库.它采用与媒体无关的FEC

法实时修复所有丢失的单包和部分丢失的多包.同时,并在我们设计和实现的测试平台上验证了这项功能.

1 实时传输协议(RTP)为了说明在RTP上利用FEC法对丢失的包进行修复的原理,有必要先来介绍RTP的有关细节.

RTP传送音频和视频等连续的媒体数据.RTP数据包由一个12字节的包头(如图1所示)和传送的净载数据组成.在包头中:净载类型域标识出RTP净载数据格式,以便接收端确定相应的处理程序;时间戳反映出在RTP数据包的净载中第1个字节的采样时刻,该域使媒体数据在接收方能够按时间序列重新组装;序列号代表发送方发出的包序列,它可以使接收者监测丢包和重建包序列;指示器位使一些重大的事件(如对音频数据标识出一个“交谈迸发”的开始)能在数据包流中被突出地标记出来;同步源标识符用于唯一地标识出RTP对话中的一个同步源.

RTCP包定期地在与数据包相同的多点传送组中传送,即使在没有媒体数据传送的情况下,它们也可以作为对话成员的活跃指示器.RTCP的下述功能与本文的工作直接有关:

3401张钶等:基于实时传输协议的丢包实时修复(1)QoS监控和拥挤控制.RTP对话参与者使用发送报告SR(senderreport)

和接收报告

RR

(receiverreport)提供接收质量反馈,使所有的对话成员都能够大致了解其他参与者的进展情况.

(2)媒体同步.RTCP发送报告中包含了实际时间和相应的RTP时间戳的指示器.这两个值

允许不同媒体,如音频和视频之间实现“唇同步”.

(3)标识.RTCP的SDES包中为每一个对话成员提供一个全局唯一的标识符,称为教名或

CNAME.SDES的其他项提供发送者的其他描述信息,如姓名、电子邮件地址、地理位置等.(4)会话大小的估计和规划.每个对话成员定期发送RTCP包,当对话包含数百个与会者时

,

必须限制控制流量只占对话带宽的一小部分,通常建议分配给RTCP的带宽占总对话带宽的5%.

发送者可以基于该反馈修改它的传输策略,接收者可以确定出现的问题是局部的还是全局的,

网络管理员也可以使用只接收RTCP包的监控器来评价它的网络性能.SR包含媒体同步所需的信息以及累计发送包数和字节数,这样,接收者可以估计出实际的数据流量.RR包括接收到的最大序列号、丢包数、平均延迟抖动和用于计算往复延迟的时间戳.通常情况下,RTP在UDP协议上运行,但这是以不能保证数据完整性为代价的.

2 用媒体无关前向误差校正法(FEC)修复丢包2.1 校验编码定义f(x,y,...)是应用在数据块x,y,...的按位异或操作.假定每个数据块是长度为L的一组简单比特流,则函数对所有数据块做异或运算后输出长度为L的校验块,特别地,f(x)=x.

校验块一般由一组线性无关的数据块的组合来产生,这种组合称为校验编码.修复数据的方法一般是对k个媒体数据块产生1个或多个校验块,共有n个数据块和n-k个校验块,接收方只要接收到其中任意k个块就可以再生出原来的k个媒体数据包.对于给定的n和k,有以下多种检验编码(左面的字母代表输入的数据块流,右面的字母代表数据块和校验块流):

方式0.不能修复丢包,定义为a,b,c,d,...→a,b,c,d,...

方式1.能修复单个丢包,如果b和f(a,b)交换位置,允许连续丢失两包(媒体+FEC包)的

修复.定义为a,b,c,d,e,f→a,f(a,b),b,f(b,c),c,f(c,d),d,...

方式2.修复所有单包丢失和若干连续丢失的包,但它比方式1的代价要小:a,b,c,d,e,f,g

→f(a,b),f(a,c),f(a,b,c),f(c,d),f(c,e),f(c,d,e

)

,...

方式3.能修复连续丢失的1、2、3个包,但需要4个包的延迟:a,b,c,d,e,f→f(a),f(b)

,

f(a,b,c),f(c),f(a,c,d),f(a,b,d),f(d),...

2.2 实现媒体无关FEC的RTP净载格式校验块要在单独的FEC包中传送.图2是一种封装在RTP数据包中实现媒体无关FEC的净载格式[11].FEC包由在RTP净载部分的一个FEC包头和FEC净载组成.该格式可以传送任意长

度和校验方式的数据块,可以对RTP净载和重要的RTP包头域如长度、净载类型等进行修复.校验包头(如图3所示)有96比特,其中定义了一个24比特的偏移屏蔽码域.如果第i个比特被置位1,则表明序列号为N+i的媒体包和本FEC包相关联,其中N是FEC包头中的序列号基域.FEC包头中的其他域有:・长度修复域:决定修复后的媒体包的长度.例如,当两个长度为3(0b011)和5(0b101)个字的

4401JournalofSoftware

 软件学报 2001,12(7

)

相关主题