摘 要 随着实时流媒体基础的进一步发展,普遍使用的TCP和UDP协议都不能很好的满足更高性能流媒体信息的传输。文章对SCTP、TCP和UDP协议的性能进行了比较分析,证明了SCTP作为一个通用的、面向连接的、可靠的传输层协议,能够更好的满足流媒体数据差别传输要求,特别是其选择性有序和多宿性使得流媒体传输性能有明显改善。
如今,各种宽带业务随着网络技术的发展如雨后春笋般涌现出来,网络视频的实时传输成为网络应用的热点之一。特别是P2P技术的应用和发展,压缩后的流媒体信息对于网络传输层提出了更高的传输性能要求。传统的两大传输层协议TCP和UDP已经不能很好的支持流媒体的传输。SCTP作为一个通用的、面向连接的、可靠的传输层协议,能够更好的满足流媒体数据差别传输要求。特别是其选择性有序和多宿性使得流媒体传输性能有明显改善。
1 流媒体压缩
流媒体(StreamingMedia)即在Internet/Intranet上按时间先后次序传输和播放的连续音/视频媒体。流式媒体数据流具有三个特点:连续性、实时性和时序性,其数据流具有严格的前后时序关系。因为流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,数据流随时传送随时播放,只是在开始播放时有几秒或十几秒的启动延时。采用的压缩技术必须使实时传输媒体的传输信息量在大大减少的前提下能不影响在线媒体观看的效果,所以对压缩技术有了很高的要求。同样的,压缩技术使实时流媒体应用成为可能的同时也对媒体信息的传输提出了要求。
要了解SCTP与TCP和UDP的性能差异,首先就要简单了解流媒体压缩的原理。现在实时播放系统中主流的视频压缩技术都用到了帧间压缩的流压缩技术,所谓帧间压缩的流压缩技术即通过降低连续帧之间的相关性,减少流传输的数据量。普遍帧间压缩的处理方式是把几帧图像取为一组(GOP),通过定义帧,预测帧实现数据的传输。
定义帧:将每组内的图像定义为三种类型,I帧P帧B帧。
预测帧:将I帧作为基帧,以I帧预测P帧,以I帧和P帧预测B帧。
数据传输:将I帧和预测的差值信息进行存储和传输。
I帧是全帧压缩编码帧,在解码时仅用I帧的数据就可以重建图像,是GOP的基础帧,一个GOP只有一个I帧,一个I帧所占的信息量比较的大。P帧是采用运动补偿的方法传输它与前面I帧或是P帧的差值及运动矢量(预测误差),如图1只有通过I帧中的预测值和预测误差求和之后才能构建P帧。B帧是通过前面I帧或是P帧和后面的P帧来进行重建。
所以在传输的过程,对这三类的不同帧数据因该采用不同可靠性质的传输方式。I帧直接关系到是否整个GOP帧的恢复,所以I帧不能丢,由于流媒体播放的有序性导致I帧信息的传输必须是有序的。因为I帧只对本GOP中的帧信息的解码提供恢复信息,如果在GOP帧组在被解压的时候没有收到当前GOP的I帧,这个GOP就只能成为了无效的信息,直接影响了媒体播放的连续性,所以必须保证I帧传输的可靠性。相反对于P帧和B帧的传输就没有像I帧那样注重可靠性,当然我们可以从解码方式中看到P帧在传输的过程中其可靠性要高于B帧。同时,对P帧和B帧没有严格的时序性要求,只要在GOP被提交的之前P帧和B帧到达了接收端,就能被解压成为有效信息。直观的看出他们之间的重要关系I≥P≥B。
2 不同传输协议性能传输方案比较
当大概解了流媒体的压缩技术后,我们可以发现普遍应用现在通信网络的两大传输层协议TCP和UDP都不能很好的支持被压缩后的流媒体信息的传输。例如传输一组图像,如果通过TCP协议传输,从TCP协议传输方式中我们发现,它只能提供有序可靠性传输网络,所以它必定不可能区分这一组图像中的I帧在传输中的重要优先级高于B帧和P帧,从而维护了许多本不需要可靠有序的媒体信息。同样的如果通过UDP传送,虽然能够对部分媒体信息,如B帧,P帧,提供高效的传输机制,但是不能保证I帧这类流媒体控制信息的有序,可靠的传输,这样带来的结果也将是不可挽回的。
2.1 基于TCP/UDP传输过程
因此对于流媒体在传输层协议上的选择,适用的传输机制就是TCP和UDP的互补,控制信息通过TCP进行传送,数据信息通过UDP进行传送。或是在应用层通过RTP,RTCP等协议规范,然后由UDP负责流媒体信息再补传输层的传输。
如图1,传统的基于UDP/TCP的流媒体传输机制,由于TCP/UDP传输协议对流媒体实时播放的支持不足。需要通过大量其他协议的合作部署才能支持实时流媒体的点播和播放。但是通过整合多个辅助传输协议的流媒体传输方案需要通过大量控制信息的交互作为实现的代价。特别是在媒体信息传输这个传输机制中,调用RTP进行流媒体数据传输中的时间同步和流同步的实现。但是RTP由于并不能提供流量控制和拥塞控制的操作,使得必须还要通过RTCP协议进行对数据传输的监控。而为了维护RTCP对流量控制和拥塞控制的功能,则要通过周期性的发送RTCP数据包,进行对RTP流媒体数据包的发送数量,丢包数量等网络传输性能信息的统计。这样的传输机制使得网路中真正传输的实时流媒体信息率降低,并可能导致网络传输性能的统计信息包和流媒体数据信息包对有限网络带宽在发生拥塞情况时产生竞争,加剧网络的拥塞。同时由于在传输层是通过基于不可靠传输的UDP协议机制,使得对流媒体信息中要求可靠有序的信息需要通过传输播放控制信号的RTSP/TCP传输通道。
2.2 基于SCTP传输过程
对于SCTP来说流媒体在传输层得到了直接全面的传输支持。由于其支持分流和选择性有序传输的特性,很好的结合了TCP和UDP在流媒体传输上的各自优势,而且在SCTP独有的选择性的可靠传输功能,使得流媒体的控制信息和不同的数据信息可以在不同的SCTP流中按不同的可靠性级别进行传输。
如图2,通过引入具有强大流媒体传输支持功能的SCTP传输协议,将大大的简化实时流媒体的播放机制,减少了基于TCP/UDP实时流媒体播放机制中的大量并非流媒体信息数据的传输消耗。
通过将HTTP移植到基于SCTP的传输协议上,使得对于浏览器和网站服务器之间建立的SCTP会话支持多流的性质。这样为客户请求在线点播的连接消息单独分配一个流传输通道,提高服务器的响应效率。
在RTSP/TCP的传输机制通道中媒体服务端和客户端就只需要维护建立流媒体数据传输前的初始化控制信息(如对媒体接收端的接收端口号和地址,媒体解码类型,RTSP会话标志号等)和用户在线观看时的播放控制信息(如暂停,前进,到退等)。同时,通过控制信息之间是否相关的判断,可以为不相关的控制信息提供不同的通讯流通道,减轻head-of-line blocking的影响。
在流媒体数据传输的通道上只需要用到light weight RTP和SCTP协作的机制,就能够完成实时流媒体的高效传输,而且通过减少了RTCP协议中为了进行流控制和拥塞检测而维护的大量网络传输性能上的包发送信息,为流媒体的传输让出了传输的带宽。同时,由于SCTP提供多流的传输机制,使得不同的流媒体数据信息可以在不同的数据流通道里面进行传输,实现了部分原来RTP进行维护的异类媒体信息(如视频信号和音频信号)分流传输的功能,在一定程度上简化了RTP协议的实现。而且,由于改进后的SCTP能够支持选择性的可靠传输,使得不同可靠度的媒体信息能够被区分发送,提高了流媒体数据在接收端的还原能力。
3 SCTP流媒体传输性能优势
从上面的传输过程比较不难看出,与TCP/UDP相比较有着比较明显的优势。具体
3.1 SCTP与TCP比较传输性能优势
虽然SCTP和TCP都是可靠的传输层协议,但是在支持流媒体的传输上面,SCTP的协议特性远远优于TCP。TCP在支持流媒体传输上出现的不足,主要是其因为数据包的发送有严格的顺序控制。因此,对那些需要在一个连接中同时支持多个逻辑上独立的不同可靠级别的信息流传送的流媒体传输的应用上,SCTP就特别有用,使实时流媒体得到更高效,更安全,更稳定的在线播放的效果。具体表现在:
● SCTP的四次握手
通过SCTP的四次握手流媒体的传输将比TCP更快的启动。减少了在线用户的等待时间。虽然SCTP 比TCP在会话建立的过程中多了一次确认的过程,但是在第一次交互过后,SCTP的确认包就可以负载有效媒体信息,这样比TCP更早开始终端之间的媒体信息的传输。使用户在线接收媒体的响应时间缩小。
通过SCTP四次握手中的cookie机制,使得提供实时流媒体的服务器变的更加的可靠。基于TCP的服务器容易受到盲目SYN攻击,耗尽了服务器的资源而不能为真正的用户提供媒体播放的功能。
● 无序多通道的可靠传输
通过SCTP无序的可靠传输使实时流媒体的播放连续性加强。我们知道TCP的可靠性是通过安序的每个包的反馈建立起来的,这种有序可靠机制遇到网络拥塞的时候,大大影响了实时流媒体的稳定性。同时流媒体也并不需要这样的高强度的可靠性传输,在一定范围类的丢包而导致的失真现相是很难被媒体的观看者察觉到。同时通过STCP支持多传输流传输的功能。使音频信号和视频信号得到分开传输,减少了声音和图像同时失真的几率。
● 选择性的反馈(SACK)
选择性的反馈为流媒体信息的传输让出了● 支持多宿性终端
支持多宿终端,使得流媒体的发送者和接收者建立的会话更加的稳固。即使时出现主传输地址不到达的网络问题,也可以通过启用备用的传输地址进行修复。提高了流媒体传输的稳定性。
3.2 SCTP与UDP比较性能优势
现在主流的流媒体的传输方案是RTP(Real-time transport protocol )/UDP。由于RTP只能保证数据的实时传输,只是在包头加上了一些支持实时性的信息,如(序列号,时间戳等)并不能为顺序传输的数据包提供可靠的传输机制。在RTP和UDP的搭档基础上还要用到RTCP(Real-time transport control protocol)提供可靠的传输机制,以及流量和拥塞的监控。
而如果我们用SCTP来替代UDP,则只需要RTP和SCTP两个机制就可以很好的支持流媒体的传输。因为SCTP具有无序可靠传输的功能,可以使达到的接收端的数据包不用等待前面的数据包就可以直接提交到应用层,提高了数据的传输效率。特别PRSCTP中对不同流设定不同的可靠性级别,极大的提高了SCTP的传输效率的改进,完全可以取代UDP在流媒体传输上的地位。同时由于SCTP是支持单一会话多流通讯的维护,这样使得同步接收多个RTP流成为一件非常容易的事情,只需要使得每个RTP流对应到每个SCTP数据流就可以了。
在RTP/SCTP的流媒体传输方案中,不仅控制信号和媒体信息,音频信号和视频信号得到了分流的处理,并且可以对每个SCTP流通道上信息的可靠程度进行设定。简化了传输机制的同时,提高了传输的效率。同时由于SCTP的多宿性,为实时流媒体的传播提供了更高的稳定性。
3.3 SCTP无序可靠传输服务
在SCTP的协议制定中加入了无序可靠的传输机制。这个功能在流媒体传输的支持中将启到巨大的作用。有无序可靠传输在传输层的支持,甚至不需要在PRSCTP中加入的选择性可靠传输的功能都可以为流媒体提供高效传输性能。
通过多数据流实现会话的可靠无序的传输方式,当大量的流通道被开通传输数据之后,很好的打断信息之间的连续性要求,使得被收到的数据包立即就被递交到应用层的效率得到提高。这样我们就可以把判断是否将收到的数据丢失的权利从传输层移交给应用层的解码器通过其当前的解码效率和解码缓存器内存有的需解码的数据进行判断是否某些数据包的延迟已经导致其失去了解码的效用。这样就保证了,在网络传输拥塞情况不是很严重的时候,同时在接收端的解码缓存区较大的情况下,数据的利用率将是最优化的。通过这个丢包机制作出的丢包判断反映了用户播放的实时性能要求。因为只有解码缓冲区和当前解码效率做出的丢包决定才直接决定哪些没有到达接收终端的媒体数据失去播放的效率。同时这个机制在一定程度上缓解了网络的传输压力,由于解压缓存区为数据在网络拥塞比较严重的时候赢得较多的传输时间,同时在网络传输性能较优的时候,通过缓存机制预存储了解码数据信息。
4 小结
SCTP是为传输信令业务流而开发的一个新的传输层协议。它为网络数据的传输提供了一种选择性可靠的传输途径。通过选择性反馈,多流通道,无序递交和多宿性等协议上的优化,使其在流媒体的传输上业务上体现出优异的性能。通过本文简单比较看出在流媒体控制信息传输方面它优于UDP,因为它可以提供UDP所没有的可靠性传输优势。在流媒体数据信息传输上面它优于TCP,因为它的可靠性可以得到选择,弥补TCP安序重发机制在流媒体传输应用中的缺陷。同时通过其支持多宿性的发送机制,使得媒体信息的传输变的更为可靠。相信在不久的将来SCTP得到更大的运用,取代TCP成为新一带的易于可靠性传输的传输层协议,并取代基于TCP/UDP传输协议的流媒体传输方案,为流媒体的传输业务提供一个稳定,高效的传输层支持,促进实时流媒体的发展和应用,同时流媒体传输业务也将会因为SCTP协议机制上的支持而得到更好的应用和发展。
参考文献
[1] R.Stewart,QB,Xie,Stream Control Transmission Protocol,A Reference Guide
T. Friedman et al. RTP: Control Protocol Extended report [S]. RFC 3611 2003
H.Schulzrinne,et al,RTP Profile for Audio and Video Conferences with Minimal Control RFC 1890.January 1996
赵进,叶梧等,RTP/RTCP流媒体服务器技术研究,中国有线电视,2004.01:6-9
沈承东,谭庆平。基于 MPEG4 的数字视频监控系统设计和实现,计算机工程,2002.08
詹峰,基于PR-SCTP的视频流媒体传输,华北工学院学报,2004.05
刘浩栋,基于 RTP/RTCP 协议的 IP 视频系统设计与实现,计算机应用研究,2002.10
安建伟,基于UML的软件系统建模研究,硕士论文,2002.04
张原, 史浩山, 分布式智能视频监控系统设计与实现,计算机应用研究, 1999. 11:98-101
[10] 计文平, 郭宝龙, 数字视频压缩编码的国际标准,计算机应用研究, 2003.04:1-5