多速率网络视频流媒体承载方法及系统
技术领域
本发明涉及网络中数据的传输与控制技术,特别是涉及一种网络视频流媒体承载方法及系统。
背景技术
随着互联网络和移动通信技术的飞速发展,特别是个人电脑以及手机和PDA(个人数字助理)的大量普及应用,用户对网络视频流媒体服务的需求与日俱增。
然而,由于用户对网络视频流媒体服务质量的个人需求以及网络的接入方式各不相同,他们对网络视频流媒体业务速率等级的要求也各不相同(如在网络上观看足球现场直播,就存在通过10Mbps宽带观看的用户,用ADSL上网观看的用户,通过手机上网观看的用户;他们的接入网络带宽不同,所以对视频服务质量的需求也不相同)。互联网络不能够通过仅仅提供单一速率服务质量的网络视频媒体流来满足所有“用户”不同的个性化的需求。
因此,为了针对不同的用户对网络视频流媒体服务质量的不同需求,一种现有技术的提供多速率网络视频流媒体的解决方法是:网络视频流媒体服务器根据用户要求的速率等级情况,为每一个速率等级的网络视频媒体流建立一个组播组,每一个组播组的组员(即用户)都只能得到相同的速率等级质量服务。这样,服务器就发出了多个不同速率等级的网络视频媒体流,并同时建立了多个与之相应的组播组。
请参阅图1,是所述现有技术多速率网络视频流媒体承载方法应用的网络示意图。其中,所述网络中具有网络视频流媒体服务器为S、路由器设备R1和R2;用户R3、R4、R5分别具有不同速率等级服务质量需求(例如,R3:10Mb/s、R4:2Mb/s、R5:4Mb/s)。
为了满足三个不同速率等级服务质量需求的用户R3、R4和R5,服务器S发出三个视频流(分别是10Mb/s、2Mb/s、4Mb/s),并建立三个组播组,每一个组播组内传输一种带宽的视频流,用户根据自己的带宽需求申请加入与自己需求一致的组播组(如带宽需求分别为2Mb/s、4Mb/s和10Mb/s的用户R4、R5和R3就可以分别申请加入2Mb/s、4Mb/s和10Mb/s速率视频流所对应的组播组),形成相应的组播转发树。
当网络中(如路由器R2处)发生拥塞时,通过拥塞发生处的路由器接入的低速率等级的用户(如对应2Mb/s视频流的组播组的组员)会较长时间接收不到数据流,因此要求他们同时申请退出该组播组,路由器通过组播转发树进行剪枝以减轻网络负载。
所述现有技术可以实现简单的多速率视频流媒体业务,在用户需求的速率等级数目比较少、并且网络规模不大的情况下,具有一定的优势;但是,随着用户需求的速率等级数目的增加、网络视频流媒体服务器的增加以及网络规模的扩大,该多速率网络视频流媒体承载方法方法存在如下的缺点:
第一、消耗较多网络带宽资源
由于网络视频流媒体服务器要求为每一种速率等级服务质量需求的用户提供一个相应的数据流,因此服务器要求提供的数据流是所有速率等级的视频媒体流的速率之和;同时,该媒体流所经过的每一个网络路由器设备所要传输与控制的视频数据流为通过其接入的所有速率等级的视频媒体流的速率之和;因此,随着用户需求的速率等级数目的增加以及网络视频流媒体服务器的增加,该方法对视频服务器和路由器的网络带宽需求会急剧增加。以图1为例,在视频服务器S与路由器R1之间需要16Mb/s的网络带宽(为所有需要接入S的各种带宽之和),而路由器R1与R2之间需要6Mb/s的带宽。
第二、增加较多的路由器路由与转发表项
由于视频流媒体服务器为每一种速率等级服务质量需求的用户建立一个组播组,并提供相应速率等级的视频流媒体数据流服务。因此,有多少个速率等级,就要求有多少个组播组;这样随着用户需求的速率等级数目的增加以及网络视频流媒体服务源的增加,必将导致网络中组播组数目的成倍增加,引起路由器路由表项的爆炸式增长。
例如,如果一个视频流媒体服务器要求支持M个不同的速率等级服务质量的数据流,并以组播路由协议“协议无关组播路由协议-密集模式(PIM-DM)”为例。一个PIM-DM组播组需要维护一条到三条组播转发表项,而且还要维护一条RPF检查表项,这样,每增加一个视频流媒体服务源,相关的路由器就要求增加到2M~4M条路由表项。如果M=8,则每增加一个视频服务源,就可能要增加16~32条表项,这对低速接入路由器还是可以容忍的,但是对高速骨干路由器却是致命的。
第三、用户之间需要同步协同工作
为了增加拥塞控制的效率,现有技术要求具有相同速率等级的网络视频流媒体接收端的用户之间协同工作,尤其是拥有相同拥塞瓶颈的用户。如果某些用户由于较长时间未接收到相应的数据,就检则到了拥塞,退出了当前加入网络视频数据流所在的组播组;但是,同一瓶颈后的其他处于同一组播组的用户没有退出,组播转发树不会进行剪枝,拥塞则会依然存在;同理,如果接收端用户没有对申请加入组播组的操作进行同步,某些组成员则可能无法充分利用带宽,享受相应的网络视频流媒体服务。
第四、拥塞控制反应速度缓慢
由于现有的解决方法是直接通过组播组管理和路由机制来间接实现拥塞控制的,对接收端的用户而言,无论是申请加入组播组,还是申请离开组播组,要完成这个操作(组播树建立或者组播树剪枝)都需要从用户到接入路由器、以及从接入路由器到拥塞发生的上游第一个路由器,这段路由之间的一个往返周期(RTT)。以互联网组管理协议(IGMP)(至少需要几秒)和最简单的PIM-DM(需要几秒)协议为例,RTT至少是几秒钟。在网络性能相对稳定,并且视频数据源采用恒定比特速率编码(CBR)时,这个反应时间是可以接受的。然而,现有的互联网络性能并不稳定,可用带宽抖动特性无法预测,而且采用可变速率编码的视频源越来越多。在这种情况下,只要该抖动或者编码变化时间小于一秒,则拥塞控制的振荡,也就是接收端不断地轮询加入某些组播组,然后又以相反的顺序退出该组播组。
发明内容
本发明解决的技术问题在于提供一种网络带宽资源消耗较少的多速率网络视频流媒体承载方法及系统。
在此基础上,本发明解决的另一技术问题是提高网络拥塞反应速度。
为此,本发明解决技术问题的技术方案是:提供一种多速率网络视频流媒体承载方法,包括步骤:
1)视频服务器采用分层的编码算法,将视频流编码压缩成基本数据流和扩展数据流,并赋予相应的优先级;
2)视频服务器建立组播组,将所有的基本数据流和扩展数据流发送到该组播组中;
3)组播节点路由器根据用户的加入申请生成加入信息并通过其上游组播节点路由器逐级上报或直接上报;
4)根据前述上报的信息,路由器加入到组播组并接收该路由器输出端口要求的最高速率的数据流。
优选地,该方法还包括:组播节点路由器的输出端口均维护多优先级的输出队列,根据数据流的优先级和输出队列的深度进行输出调度。
优选地,还包括工作时,路由器生成该路由器的加入和丢弃信息并通过其上游组播节点逐级上报或直接上报至视频服务器的反馈过程。
优选地,所述加入和丢弃信息的格式是:
(S,G,Olist(s,g),(S0,S1,S2,...,S(N-1)))
其中,S为视频服务器的地址、G为组播组地址、Olist(s,g)为该路由器的输出接口列表,(S0,S1,S2,...,S(N-1))为向上游组播节点通告的各优先级的数据流的申请加入和丢弃信息。
优选地,所述反馈过程包括步骤:
5)路由器的输出端口向主动代理引擎上报统计信息数组;
6)所述主动代理引擎根据前述统计信息数组生成加入和丢弃信息数组,并上报至其上游组播节点对应的输出端口;
7)所述上游组播节点跟据自身的输出端口上报的统计信息数组以及该端口的下游组播节点上报的加入和丢弃信息数组,形成各输出端口的加入和丢弃信息数组。
优选地,所述步骤5)中,统计信息数组的格式为:
PORTjD=(D0,D1,D2,D3,...,D(N-1))
其中,j为输出端口的编号,Di代表优先级为i的数据流的加入和丢弃信息。
优选地,所述Di的生成方法包括:
A)首先获取D(i-1)的值;如果D(i-1)等于-1,则进入步骤B);如果D(i-1)等于0,则进入步骤C);
B)判断是否有优先级为i的数据流,如果有,则确定Di等于-1;如果没有,则确定Di等于0;
C)判断是否有优先级为(i-1)的数据流,如果有,则进入步骤D);如果没有,则确定Di等于-1;
D)判断Fi是否不小于Gi;如果是,则确定Di等于-1;如果否,则确定Di等于0;如果Fi等于0且有更多可用的带宽,则确定Di等于1;其中,Fi表示当前优先级为i的层次数据流丢弃决策参数;Gi为优先级为i的层次数据流因丢弃数据而退出接收该层次数据流的门槛值。
优选地,所述Fi采用下式计算:
Fi=(Bi(0),Bi(1),Bi(2),...,Bi(K-1))×(A(0),A(1),A(2),...,A(K-1))
其中,Bi(j)表示当前时间以前第j个时间段T内优先级为i的层次数据流丢弃的数据总字节数通过归一化处理以后的值;A(j)表示递减的历史相关决策因子。
优选地,所述步骤6)中,加入和丢弃信息数组的生成方法是:
优选地,所述步骤7)中,各输出端口的加入和丢弃信息数组的生成方法是:
PORTjS=Dup+PORTjD。
优选地,所述步骤1)具体包括:
11)获取用户需求的视频服务带宽Ci,其中,0≤i≤N-1;
12)计算基本数据流的带宽R0和扩展数据流的带宽Rj:
R0=min{Ci|0≤i≤N},
本发明还提供一种多速率网络视频流媒体承载系统,包括:
视频服务器,用于采用分层的编码算法将视频流编码压缩成基本数据流和扩展数据流,并赋予数据流相应的优先级,建立组播组;
组播节点路由器,用于将接入到输出端口的用户及下游组播节点加入到组播组,接收输出端口要求的最高速率的数据流并发送至用户。
优选地,所述组播节点路由器包括主动代理引擎,用于控制输出端口维护多优先级的输出队列,生成加入和丢弃信息并上报至上游组播节点。
相对于现有技术,本发明的有益效果是:首先,由于本发明采用分层的编码算法,由视频服务器根据用户需求的速率等级情况,原始视频流编码压缩成为多个层次的数据流,但是这些所有层次的数据流的速率之和是用户需求的速率的最大值,而不是所有速率之和,所以减少了网络带宽的消耗。其次,本发明采用单一的组播组来为所有不同速率等级服务质量需求的用户服务,并非为每一个速率等级建立一个组播组,因此,网络中视频流媒体数据流组播组的数目等于视频服务器的数目,不会引起路由表项的爆炸式增长
此外,由于本发明引入基于主动代理引擎的反馈机制,所以该方法在只发出最高速率等级数据流的基础上,还可以通过反馈减少无用的低优先级数据占用网络和服务器的资源。在组播组中,对于没有用户使用的较低优先级层次的数据,在逐级丢弃该数据流的同时,由路由器中的主动代理引擎以加入和丢弃消息的方式,从用户接入路由器开始,逐级反馈到视频服务器。通过逐级丢弃无用的较低优先级层次的数据,直到视频服务器停止产生该数据流为止,故本发明可以提高对网络和服务器资源的利用效率。
此外,由于本发明采用的是网络节点路由器驱动的组播方法,作为网络中的核心和关键设备,路由器对网络发生拥塞的响应是最及时的。当网络发生拥塞后,该拥塞链路连接的上游节点将根据链路的拥塞状态(即优先级输出队列(FIFO)的深度),按照一定的队列管理方法,实时地管理输出队列,丢弃较低优先级层次的数据流。由于队列管理是硬件实现的,所以反应时间只有若干个工作时钟周期,一般都是纳秒数量级,所以该算法对网络拥塞反应迅速。对网络拥塞反应迅速。
附图说明
图1是一种现有技术的多速率网络视频流媒体承载方法的网络示意图;
图2是本发明多速率网络视频流媒体承载系统的示意图;
图3是本发明多速率网络视频流媒体承载方法的流程图;
图4是本发明的一个实施例的示意图。
具体实施方式
本发明基于分层的编码算法(Layered Codec)提出的多速率网络视频流媒体承载方法及系统可以有效地针对现有技术的缺点进行改进。
所述分层的编码算法由视频信号处理领域的研究人员提出,这种编码算法根据人在视觉上的特点,将原始视频流编码压缩成为多个层次的数据流;这些层次的数据流包括一个基本层次的数据流(基本流)和多个扩展层次的数据流(扩展流);其中基本流包含有该视频流的最基本信息,通过解码基本流可以获得最低速率等级服务质量的视频数据;在基本流之外是多个层次的扩展数据流,在基本流的基础上,每增加一个层次的扩展流,解码后视频流媒体数据质量就可以增加一个层次。
请参阅图2,是应用本发明方法的网络示意图。
本发明多速率网络视频流媒体承载系统包括视频服务器100、组播节点路由器120和130;组播节点路由器120和130互为上、下游组播节点路由器,组播节点路由器120连接视频服务器100。其中,组播节点路由器120连接用户200,相对用户200又可称为用户接入路由器;组播节点路由器130连接用户300和400,相对用户300和400又可称为用户接入路由器。
所述视频服务器100采用分层的编码算法根据用户需求的速率等级情况,将原始视频流编码压缩成为多个层次的数据流(基本数据流和扩展数据流),并且为各数据流赋予不同的优先级,但是这些所有层次的数据流的速率之和是用户需求的速率的最大值,而不是所有速率之和,所以相对现有技术可以减少网络带宽的消耗。
所述视频服务器100在数据流编码压缩完成后,建立一个组播组,将所有包含优先级标记的数据流发送到该组播组中。本发明采用单一的组播组来为所有不同速率等级服务质量需求的用户服务,并非为每一个速率等级建立一个组播组,因此,网络中视频流媒体数据流组播组的数目等于视频服务器的数目,不会引起路由表项的爆炸式增长。
所述组播节点路由器120和130中均具有输出端口(未标示)、主动代理引擎(Active Agent,AA)140和输出调度引擎(图未示)。
组播节点路由器120和130首先采用PIM-DM组播协议,完成对该组播组进行建立和维护;然后,在各个路由器的输出链路接口上,在主动代理引擎140的控制下,维护一个多(N个)优先级的输出队列(FIFO),并且按照随机早期检测拥塞控制算法(Random Early Detection,RED),根据数据流的优先级和FIFO的深度,实时调度输出不同优先级的数据流。
该主动代理引擎140可以根据输出链路的拥塞状态以及下游组播节点路由器的上报信息完成相应的操作。具体是:当发生拥塞时,控制输出调度引擎根据输出队列深度按照一定的队列管理算法对输出队列进行实时调整;或者在网络性能变好时,向上游组播节点路由器申请更低优先级的扩展层数据流。
也就是说,本发明采用的拥塞控制策略为:采用网络中路由器主动控制拥塞,而不是由接收端的用户通过退出组播组来控制拥塞。因此将多个相互没有关联的用户之间进行同步操作的问题转化为由同一个路由器的不同输出端口进行同步操作的问题,由于处于同一个路由器中的内部,所以即使使用异步操作,其操作延迟也是可以接受的。同时,由于路由器同时是视频数据流上游节点的接收者同时也是下游节点的数据发送者,所以路由器可以根据输出链路的拥塞状态,实时调整输出带宽,因此对拥塞的反应灵敏。
请参阅图3,是本发明多速率网络视频流媒体承载方法的流程图。
首先,视频服务器根据用户对视频服务质量的需求情况(需求带宽Ci,0≤i≤N-1),采用分层的MPEG4编码算法,将原始视频流编码压缩成为一个基本数据流(带宽为R0)和多个((N-1)个)扩展数据流(带宽为Ri),并对各个数据流赋予不同的优先级(Pi=0为最高优先级,Pi=N-1为最低优先级)(基本流为最高优先级0级)。
其中,Ri是由下面的公式计算得到的:
R0=min{Ci|0≤i≤N} (1)
然后,视频服务器(组播源)建立一个组播组,并将所有包含优先级标记的数据流发送到该组播组中。
初始建立组播组时,作为用户接入路由器的组播节点路由器在用户加入申请的基础上,根据用户接入带宽和视频质量的需求申请加入到相应的组播组,并接收该路由器所有输出端口(M个输出端口)要求的最高层次的数据流(即最高速率等级的数据流)。
本发明的一个实施例中,组播节点路由器的输出端口j的加入和丢弃信息数组为:PORTjS=(S0,S1,S2,...,S(N-1))。其中,0≤j≤M-1;Si表示优先级为i的数据流的加入和丢弃信息(如“1”表示优先级层次为i的数据流加入申请;“-1”表示优先级层次为i的数据流丢弃申请;“0”表示优先级层次为i的数据流维持现状)。
则该路由器的上报加入和丢弃信息计算方法如下式(3)所示:
在组播组初始建立完成后,在各个路由器的输出端口(即输出链路接口)上,在主动代理引擎的控制下,维护一个多(N个)优先级的输出队列(FIFO),并且按照随机早期检测拥塞控制算法(Random Early Detection,RED),根据数据流的优先级和FIFO的深度,实时调度输出不同优先级的数据流;同时将不同优先级的数据流的丢包统计信息(一定时间段T内,优先级为i的数据流丢弃的数据报文字节数为Di)上报给主动代理引擎。
也就是说,在正常工作期间,每一个节点路由器都在输出端口按照随机早期检测(Random Early Detection,RED)队列管理算法,实时对输出队列进行管理。同时形成相应的统计信息上报给路由器的主动代理引擎。端口j的上报信息数组为PORTjD,其一种可能的结构如下式(4):
PORTjD=(D0,D1,D2,D3,...,D(N-1)) (4)
其中,Di(Di=-1,0,1)表示在时间T内,当前以及前(K-1)个时间段T内,输出队列管理器根据优先级为i以及(i-1)的层次数据流丢弃的数据总字节数Bi,B(i-1),通过决策与归一化处理以后的值。
以下给出本发明中一种生成Di的实现方法。
为了方便说明,本发明中,采用符号Bi(j)(0≤j≤K-1)表示当前时间以前第j个时间段T内优先级为i的层次数据流丢弃的数据总字节数通过归一化处理以后的值。采用A(j)(0≤A(j)≤1)表示递减的历史相关决策因子,该常数反映了当前时间以前第j个时间段T内丢弃的数据流对当前是否丢弃数据流的影响。采用Fi表示当前优先级为i的层次数据流丢弃决策参数。
一种计算当前优先级为i的层次数据流丢弃决策参数为Fi的方法如下式(5):
Fi=(Bi(0),Bi(1),Bi(2),...,Bi(K-1))×(A(0),A(1),A(2),...,A(K-1))
假设Gi为该输出端口的优先级为i的层次数据流因大量丢弃数据而退出接收该层次数据流的门槛值,则Di的计算实现方法包括:
A)首先获取D(i-1)的值;如果D(i-1)等于-1,则进入步骤B);如果D(i-1)等于0,则进入步骤C);
B)判断是否有优先级为i的数据流,如果有,则确定Di等于-1;如果没有,则确定Di等于0;
C)判断是否有优先级为(i-1)的数据流,如果有,则进入步骤D);如果没有,则确定Di等于-1;
D)判断Fi是否不小于Gi;如果是,则确定Di等于-1;如果否,则确定Di等于0;如果Fi等于0且有更多可用的带宽,则确定Di等于1。
在本发明的一个实施例中,采用如下程序来实现Di的取值。
Process(Upon time T event)
Begin
If(D(i-1)=-1)then
If there is packet with prioryi event then
Else Di=0
End if
Elsif(D(i-1)=0 and there is packet with priory(i-1))then
If(Fi≥Gi)event then
Di=-1
Elsif(Fi<Gi)event then
Di=0
Elsif(Fi=0)event and there is more available band then
<!-- SIPO <DP n="11"> -->
<dp n="d11"/>
Di=1
Else NULL
End if
Elsif(D(i-1)=0 and there is no packet with priory(i-1))then
Di=-1
Else NULL
End if
End process
主动代理引擎根据该路由器的所有相关输出端口i的统计信息Di,以及该端口的下游节点对不同优先级(Pi)的数据流申请加入和丢弃信息(Spi:“1”表示加入申请;“-1”表示丢弃申请;“0”表示维持现状),进行处理,并生成该路由器的加入和丢弃信息,并上报给其组播上游节点。通过这种机制来实现分层组播视频数据流由接收端到源端的反馈。
主动代理引擎在路由器之间的上报信息数据结构如下式(6):
(S,G,Olist(s,g),(S0,S1,S2,...,S(N-1))) (6)
其中,S为视频服务器的IP地址,G为组播组地址,Olist(s,g)为该主动代理引擎所在的路由器已经加入视频服务器S的组播组G的下游接入用户的接入接口(即路由器的输出接口列表),(S0,S1,S2,...,S(N-1))为主动代理引擎在路由器上向上游路由器通告的不同优先级层次数据流的申请加入和丢弃信息(Si:“1”表示优先级层次为i的数据流加入申请;“-1”表示优先级层次为i的数据流丢弃申请;“0”表示优先级层次为i的数据流维持现状)。
随后,上游组播节点路由器的主动代理引擎根据端口j的上报信息数组为PORTjD以及该端口的下游节点上报的加入和丢弃信息数组Sup计算出端口j的加入和丢弃信息数组PORTjS,PORTjS的计算方法如下式(7):
PORTjS=Sup+PORTjD (7)
可以理解,本发明中,视频数据用户只是被动地接收多个不同层次的编码数据流,并根据接收到的数据流层次情况动态调节解码器输出解码速率。
请参阅图4,可以看出,本发明与现有技术相比较,其改进之处包括:首先,本发明采用分层的编码算法,由视频服务器S根据用户R3、R4和R5需求的速率等级(10Mb/s、2Mb/s、4Mb/s)情况,将原始视频流编码压缩成为多个层次的数据流(包括2Mb/s的基本数据流、2Mb/s的扩展数据流和6Mb/s的扩展数据流),但是这些所有层次的数据流的速率之和是用户需求的速率的最大值(10Mb/s),而不是所有速率之和(16Mb/s),所以减少了网络带宽的消耗。其次,引入基于主动代理引擎的反馈机制,所以该方法在只发出最高速率等级数据流的基础上,还可以通过反馈减少无用的低优先级数据占用网络和服务器的资源。再次,采用网络中路由器R1和R2主动控制拥塞,而不是由接收端的用户通过退出组播组来控制拥塞。因此对拥塞的反应灵敏。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。