100029825Π2001Π12(07)1042208○c2001Journal of Software 软件学报Vol.12,No.7基于实时传输协议的丢包实时修复Ξ
张 钶, 谢忠诚, 鞠九滨
(吉林大学计算机科学系,吉林长春 130023)
E2mail:jjb@
http:ΠΠ
摘要:在诸如IP电话和远程会议系统等实时应用中,使用实时传输协议R TP(real2time transport protocol)在因特网上传输的数据包不可避免地会丢失,极大地影响了传输服务质量.在R TP上增加丢包修复功能可以解决这个问题.介绍了在R TP上采用FEC(forward error correction)修复丢包的方法,基于这个方法设计并实现了一个支持丢包修复功能的R TP库,说明了丢包修复功能的测试方法和结果.
关键词:R TP(real2time transport protocol);丢包;修复;FEC(forward error correction)
中图法分类号:TP393 文献标识码:A
话音包与数据包在因特网上传输时可能有较大的延迟和丢包概率.丢包将严重地影响IP电话的话音质量[1],因此采取丢包修复方法是很有必要的.造成媒体包丢失的原因有这样几个:路由器和网关发生拥塞,某些包可能被丢弃;包传输过程中的延迟过大,因到达接收端太晚而无法回放;在多任务操作系统中,工作站超载运行时可能因调度困难而不能及时处理传输.
目前有4种常见的丢包修复方法[2].重发法是修复TCP丢包常用的方法,但语音数据对时延敏感,只有当重发延迟满足实时应用的要求时,重发法才是适用的[3].冗余法(媒体相关的F EC (forward error correction)法)[1]是把第n个数据包的副本重新用更低位码率的压缩算法,如GSM (global system mobile)语音压缩,附加到第n+1个数据包中一起发送,如果第n个包丢失了,可以从第n+1个包中所附带的副本来恢复;如果附带多个副本,还可以修复连续丢包.这种方法需要额外的CPU及带宽开销,并且只有大致的修复能力.媒体无关的F EC[2]法有精确的修复能力,发送端对连续多个数据包作异或运算求出F EC数据包,并以奇偶包的形式发送,丢失的数据包可以用接收到的数据包和F EC包作异或运算再生出来.此方法的缺点是与冗余法相比有较大的延迟(缓存多个包以作F EC运算),增加了带宽需求.交叠法[2]和差错分散法(error sp read)[4]降低或分散了丢包的影响,它们的优点是不增加带宽需求,但在传输两端中增加缓冲延迟开销.几类修复方法的性能对比见表1.由此可见,媒体无关F EC法和冗余法适合实时传输应用.
对丢包现象的大量研究发现,丢失单包的概率最大,因此丢包修复主要解决丢失单包的修复问题.
IP电话和远程会议系统,从早期的Vat,NeVo T,到后来基于H.323[5]协议的Net Meeting和IP电话,都把实时传输协议R TP(real2time t ransport p rotocol)[6]作为传送实时媒体的工具.R TP
Ξ收稿日期:1999212223;修改日期:2000203223
基金项目:高等学校博士学科点专项科研基金资助项目(1999018319)
作者简介:张钶(1971-),男,山东泰安人,博士,主要研究领域为计算机网络,分布式系统;谢忠诚(1972-),男,辽宁阜新人,硕士,主要研究领域为计算机网络,分布式系统;鞠九滨(1935-),男,黑龙江哈尔滨人,教授,博士生导师,主要研究领域为计算机网络,分布式系统.
已经成为实时媒体传输的通用标准,被H.323系列标准定义在H.225.0[7]的附录中.R TP 还包括一个实时控制协议R TCP (R TP cont rol protocol ),用于进行松散的对话控制,提供服务质量QoS (qualit y of service )报告和支持媒体同步等.
T able 1 Overheads of different lost repair schemes
表1 不同修复策略开销的对比
Delay ①
Bandwidt h overhead ②Processing overhead ③Retransmission ④
Medium ⑤Variable ⑥High ⑦Interleaving ⑧
High None ⑨Low λυMedia 2Independent F EC λ
ϖHigh High Low Redundancy λωSmall λξVariable Variable ,may be large λ
ψ①延迟,②带宽开销,③处理开销,④重发法,⑤中,⑥变化,⑦高,⑧交叠法,
⑨不变, λυ低, λϖ媒体无关F
EC 法, λω冗余法, λξ小, λψ变化,可能很大.
实时媒体传输中的丢包检测和修复需要R TP 的支持,例如通过包序列号监测丢包,把R TP 的传输实时媒体的功能和丢包修复能力结合在一起,将是实时媒体传输中解决丢包问题的一个较好的方法.实现R TP 协议以及基于该协议的工具最早有R TP Tools [8]和R TPmon [9]
,用于处理
R TP 数据包和监控R TCP 报告.R TP Library [10]提供了基本的R TP 协议功能.但支持丢包修复的
R TP 工具还处于研究阶段,目前还未见报道.
本文介绍了我们设计和实现的一个具有丢包修复功能的R TP 库.它采用与媒体无关的F EC 法实时修复所有丢失的单包和部分丢失的多包.同时,并在我们设计和实现的测试平台上验证了这项功能.1 实时传输协议(RTP)
为了说明在R TP 上利用F EC 法对丢失的包进行修复的原理,有必要先来介绍R TP 的有关细节.
R TP 传送音频和视频等连续的媒体数据.R TP 数据包由一个12字节的包头(如图1所示)和传送的净载数据组成.在包头中:净载类型域标识出R TP 净载数据格式,以便接收端确定相应的处理程序;时间戳反映出在R TP 数据包的净载中第1个字节的采样时刻,该域使媒体数据在接收方能够按时间序列重新组装;序列号代表发送方发出的包序列,它可以使接收者监测丢包和重建包序列;指示器位使一些重大的事件(如对音频数据标识出一个“交谈迸发”的开始)能在数据包流中被突出地标记出来;同步源标识符用于唯一地标识出R TP 对话中的一个同步源.
R TCP 包定期地在与数据包相同的多点传送组中传送,即使在没有媒体数据传送的情况下,它们也可以作为对话成员的活跃指示器.R TCP 的下述功能与本文的工作直接有关:
3401张钶等:基于实时传输协议的丢包实时修复