当前在Internet上出现了很多基于IP多播的实时视频应用。然而这些应用却面临着一个主要问题:如何针对异构和动态的网络环境,在保证TCP友好(TCPfriendliness)的基础上,支持不同接收用户的QoS要求,实现QoS过滤。
随着多播技术的发展和分布式多媒体应用的普及,当前在Internet上出现了很多基于IP多播的实时视频应用。然而这些应用却面临着一个主要问题:如何针对异构和动态的网络环境,在保证TCP友好(TCPfriendliness)的基础上,支持不同接收用户的QoS要求,实现QoS过滤。在大容量的实时视频多播系统中,QoS过滤方法决定了系统整体性能的优劣。
基于网络的QoS过滤方法在网关或网络节点上实现,但要受制于数据在协议数据单元(PDU)中的封装方式,而且方法本身对网络体系结构有着较为严格的要求,受到网络实际条件的约束,目前应用起来还有一定的困难。相比较而言,终端型QoS过滤方法则更具可行性。在基于接收端驱动的终端型(Receiverdriven Layered Multicast)[1,2]QoS过滤方法(缩写为RLM)中,源端将视频流分为基本层和若干增强层,通过独立的多播组发布,收端根据网络可用带宽自动增减加入的多播组数量。这种方法能够在一定程度上改善接收端的QoS,但固定的视频层次划分和层次速率无法自动适应动态变化的网络环境,从而影响了QoS过滤的效果。针对这个问题,本文提出了一种基于收发两端的双向驱动型(Sender and Receiverdriven Layered Multicast)QoS过滤方法(缩写为SRLM)。该方法充分利用了MPEG-4和H.264等视频编码标准的分层可调节码率编码技术,并建立在闭环反馈的基础上,能明显提升QoS过滤的效果。
2 方法实现原理
SRLM在源端和接收端之间构建了一个双向反馈通道,使源端能利用反馈通道收集接收端的带宽需求信息,并通过优化算法来动态调整视频分层数和各层次的编码速率,同时还能够通过前馈通道主动将当前调整的结果以多播报文的方式通知接收端。各接收端收到报文后,可以此作为调整依据,结合自身的有效接收带宽,有针对性地决定增减或保持所预订的视频分层数。而在RLM中,接收端为了最大化接收质量,必须引入协调或知识共享机制[1],以消除盲目进行增加视频分层尝试可能引起的网络拥塞。
2.1SRLM的源端部分实现算法
为了描述方便,做如下设定:
(1)源端采用累积分层方法,最大层次划分约束潍L。第一层为基本层,依次往后是各增强层。
(2)bi对应各层码率,i=1,2,…,L。各层次的码率约束为bi∈bimin,…,bimax,且均为数量有限的离散值。令ci=∑ij=1bj,j=1,2,…,i(i≤L),ci是第1层至第i层的逐层码率累积和,ci-ci-1=bi。将βl=c1,c2,…,cl定义为逐层累积码率向量,l≤L,其中c1=b1是基本层编码速率的下限。
(3)设加入多播会话的用户数量为N,相应的期望接收速率集合为r1,r2,r3,…,rN,现引入接收端公平指数定义:Jri,βl=Ψri,βlri,i≤N,其中Ψri,βl=maxc∶c≤ri,c∈c1,c2,…,cl,为接收端i当前的有效接收码率。显然Jri,βl≤1。令Jr,βl=1N∑Ni=1Jri,βl为N个接收端的总体接收公平指数。
根据上述设定,源端QoS过滤可以定义为:在条件(1)和(2)的约束下,如何确定当前最大分层数l′和逐层累积码率向量βl′,使Jr,βl′取得最大值。
算法的具体描述如下:
(1)收集RR反馈报文,拆解得到各接收端当前期望接收速率的集合r1,r2,r3,…,rN,并计算在当前分层数l和逐层累积码率向量βl=c1,c2,…,cl下的总体接收公平指数。
(2)根据条件(1)和(2)的约束,将数值超过∑Li=1bimax的ri全部合并为数值等于∑Li=1bimax的一项,对低于b1min的则进行删除,不列入平均公平指数的计算。这样,接收端有效期望接收速率集合(可有重复项)的项数实际还剩余N′=N-m-n+1,其中m为数值超过∑Li=1bimax的ri项数,n为数值低于b1min的ri项数。由此得到经过预处理的接收端期望接收速率集合r′1,r′2,…,r′N′。
(3)将公式Jr,βl=1N∑Ni=1Jri,βl修正惟Jr′,βl′=1N′∑N′i=1Jr′i,βl′,代入数据进行计算试探,搜寻使总体公平指数达到最大值的l′和βl′。定义调整容限ε,当Jr′,βl′-Jr,βl>ε时,编码器按照参数l′和βl′做相应优化调整,反之维持当前状态以保证系统的相对平稳性。
(4)返回第一步重新开始。源端在执行上述步骤的同时,每隔TSR秒通过多播方式向各接收端发送一次SR报文,报告源端当前的视频分层数、逐层累积码率向量βl。TSR的设定为:TSR=TAdj/k,k为大于1的整数,TAdj为源端执行上述算法的周期,也称为源端调整周期。 TAdj的选取不能过小,否则会加大源端的计算负担并引起调整振荡,不利于实时视频数据的传输和接收,同时也会给正确收集和统计各接收端的期望接收速率报告带来困难。分析表明,TAdj取值在10~15 s较为合理。
2.2SRLM的接收端部分算法实现
接收端算法的具体描述如下:
(1)估算参数p,tRTT和tRTO的值;
(2)如果收到SR报文转到下一步,否则返回上一步;
(3)拆解SR报文得到源端当前的βl,利用(1)计算本接收端期望接收速率r;
(4)根据βl和期望接收速率r来调整本端预订的视频层数。
(5)返回第一步。
接收端在执行上述步骤的同时,每隔TRR秒向源端发送一个RR报文,报告接收端期望的接收速率。同时该报文还用作tRTT估算的一个请求。
