专利名称:流媒体数据的并行传输调度方法
技术领域:
流媒体数据的并行传输调度方法属于流媒体数据在网络中的传输技术领域。
背景技术:
由于媒体数据,尤其是视频数据,体积很大,用户要通过网络下载整个视频文件需要很长的时间。而如果视频采用流媒体技术来进行压缩,则用户可以在下载的过程中就可以观看电影,流媒体技术既能做到边下边看,也不会占用很多的本地硬盘空间。
虽然流媒体技术为用户节省了时间,但是却没能解决用户的带宽限制。虽然现在的视频压缩技术的发展已经使视频数据的体积大大缩小,其对带宽的需求也是降低了很多,但是目前要收看画质比较理想的视频数据,还是需要大约400kbps的比特率甚至更大的带宽。而对于目前十分普遍的单服务器结构,大多数的用户都不具备这么多的端到端的带宽。目前商业应用都是采用与电信运营商合作,由电信运营商保证提供足够的带宽的形式来满足用户对带宽的需要。而这种解决方案很明显的弊端是成本很高,需要在有业务的各地都架设服务器,而且每年都必须为购买带宽付出高昂的费用。
本文提出了调度多个节点或服务器来共同为一个节点提供流媒体数据的技术。该技术只需要一台服务器就可以为大量的用户提供流畅的画质理想的流媒体视频,而且通过使用特定的步骤和一系列算法使得节点与服务器之间或节点与另外一个节点之间的端到端带宽不需要达到流媒体数据的比特率。并且由于并行发送机制,带来了诸如播放延时小以及对在相对恶劣的网络状况下保证播放质量的特点。
发明内容
本发明的目的在于提供一种流媒体数据的并行传输调度方法。
本发明的特征在于,它依次含有以下步骤步骤1.在流媒体服务器上部署一个流媒体数据发送管理模块,在每个接收视频数据的节点上都部署一个发流媒体数据送管理模块和接收管理模块;流媒体数据的发送者为父节点,流媒体数据的接收者为子节点,而所述各节点既是某些其它节点的父节点也是某些其它节点的子节点;所述流媒体数据是指连续的网络视频流所组成的数据流,一段网络视频流是由t个固定大小的连续的包组成;一段网络视频流被平均分为l份;在所述接收管理模块中定义了以下参数T(i)第i个父节点的发送速率;s数据包的大小,以bytes为单位;R信号来往传输时间;tRTOTCP传输超时时间;p(i)父节点i的丢失事件率;序列号用于判断数据包和命令包的陈旧性,所述序列号是指数据包或命令好的序号;在所述接受管理模块上设定;父节点接收速率的最小阀值,所述接收速率是指设定的最近时间内到达子节点的数据包数;父节点丢包率的最大阀值;步骤2.接收管理模块读入k个父节点;步骤3.所述接收管理模块向每个父节点被从1到l依次分配了l/k个包的传输任务;步骤4.子节点上的接收管理模块向各个父节点发送分配传输任务的命令包;步骤5.父节点上的发送管理模块接收到子节点发来的分配传输任务的命令包,从当前播放位置开始向子节点传输指定的视频数据,并在每一段网络视频流开始的第一个包捎带该段网络视频流内的优先级信息和数据分布情况图;步骤6.子节点接收到一段网络视频流的第一个包,取出优先级信息和数据分布情况图;步骤7.子节点上的接收管理模块周期性重复以下步骤步骤7.1.按以下指标判断各个父节点是否满足网络性能要求父节点的接收速率和丢包率;接收速率是通过记录最近到达的N个好的序号以及时间来计算最近C秒内到达包的数量,丢包率则是通过C时间内数据分布情况图中的数据包序列号于接收到的数据包序列号进行比对得到,当父节点的接受速率小于设定的最小阀值或丢包率大于设定的最大阀值时,则该节点不能满足网络性能要求,需要进行数据发送的重新分配与调度;步骤7.2.当父节点满足节本网络性能要求以后,按以下公式来计算每一个父节点的发送速度T(i)T(i)=s/(R(i)2p(i)/3+tRTO(33p(i)/8)p(i)(1+32p(i)2)),]]>步骤7.3.然后使用以下公式来计算各个父节点分配的比例Portion(i)Portion(i)=T(i)/Σk=1nT(k);]]>步骤7.4.根据比例分配的情况,分配比例大于设定的最大比例的节点为大节点,表示为BigNodes={i|Portion(i)>MaxPortion}分配比例小于设定的最大比例的节点为小节点,表示为SmallNodes={i|Portion(i)<MinPortion};如果BigNodes≠Φ,则i∈BigNodes使Portion(i)=MaxPortion,剩下的父节点重新计算比例;转7.3步骤7.5.如果BigNodes≠Φ,则i∈BigNodes使Portion(i)=MaxPortion,剩下的父节点重新计算比例;转7.3步骤7.6.如果SmallNodes≠Φ,将所有的i∈SmallNodes置portion(i)=0,从父节点表中删除这些父节点,转7.2;步骤7.7.对于剩余的父节点若Σi=1nT(i)*s<AvgBitRate,]]>所述AvgBitRate为一段时间内所有父节点的平均发送速率,则获取新的父节点;如获得则转7.3,如未获得则继续下一步;步骤7.8.根据分配给每个父节点的比例依次分配需要父节点传输的一段网络视频流中的块;步骤7.9.向各个父节点发出重新分配传输任务的命令包,命令包中包含了基准基准视频分组号、序号、数据分布情况图,序号代表了命令包的陈旧度,基准视频分组号用于同步,数据分布情况图表示了分配传输的块的分布;步骤7.10.等待一个固定周期的时间,转7.1;步骤8.当子节点接收到任意一个数据包时将检查是否有丢包,判断的标准为有三个标号更高的包到达,如有优先级高的包丢失,则向父节点的发送管理模块发出重传请求命令包;步骤9.当父节点上的发送管理模块接收到子节点的重传请求命令包,查看缓冲区内还是否有要求重传的包,如有则重传,如没有则忽略;步骤10.当父节点上的发送管理模块接收到子节点的重新分配传输任务的命令包时,执行以下步骤步骤10.1.提取重新分配传输任务的命令包中的序号与已经收到的数据包序号进行比对判断是否为陈旧的数据包,是则丢弃,否则执行下一步;步骤10.2.提取重新分配传输任务的命令包中的基准视频分组号,如果当前要传输的包号小于基准视频分组号则执行下一步,否则转10.4;步骤10.3.将使用原数据分布情况图传输从当前传送位置到标为基准视频分组号的那个包之间的数据;步骤10.4.提取重新分配传输任务的命令包中的数据分布情况图;步骤10.5.对比新旧数据分布情况图,补传从当前传送位置到标为基准视频分组号的那个包之间的未传的数据包;步骤10.6.使用新数据分布情况图继续为该子节点传输数据。
本发明所提出的流媒体数据的并行传输调度方法,具有对网络不稳定性的可适应性好、能够在较差的网络环境下保证传输质量的特点,较好地在多个父节点间调度传输任务,实现流媒体数据及时稳定的传输。目前清华大学已经将该项研究成果运用在MOTV系统中,是该系统的重要组成部分。
图1.发送管理模块发送数据的流程图;图2.发送管理模块重调度的流程图;图3.接收管理模块接收数据的流程图;图4.接收管理模块检查父节点性能的流程图;图5.平均延时折线图;图6.平均接收速率折线;图7.本发明的应用示例图。
具体实施例方式
流媒体服务器只需要向外发送数据,所以只需要部署发送管理模块,而其他节点既要接收数据,也要向下游子节点发送数据,所以既要部署发送管理模块也要部署接收管理模块。部署在子节点的接收管理模块作为调度者,向部署在父节点的发送管理模块发出调度命令,协调各个父节点共同为子节点提供流媒体数据。
发送管理模块每一轮依次为每个子节点发送一个GOP中分配给其传输的数据,并在每个GOP的第一个包中捎带优先级MAP和数据拥有情况MAP。在为每个子节点发送一个GOP的数据后,接收是否有新的消息,这些消息包括“新子节点加入消息”、“退出频道消息”和“重新分配传输比例消息”等。这样就能在尽量快传输数据的前提下,及时地处理消息。发送数据的流程图见图1。
当发送管理模块接收到子节点的接收管理模块的重新分配任务比例的命令包时,需要更新数据结构,按新的比例传输数据,并且要注意和其他父节点的同步问题。图2为发送管理模块重调度的流程图,即发送管理模块为某个子节点重新分配传输任务的过程。由于网络延时的存在,可能收到陈旧的重新分配传输任务的命令包,所以需要先检查序列号以判断是否陈旧。如果不是陈旧,则将命令包中的基准GOP号(记为g)和目前要传送的下一个数据包号(记为h)作对比。如果g>h,则需要将h和g之间的数据包按照原来的比例传输;如果g<h,则在g和h之间的数据已经错误地按照旧的比例传送了,而新比例中指定的部分数据没有被传送,所以需要补传这部分数据。
接收管理模块主要有接收数据和调度父节点传输两大功能。接收管理模块可能接收到的来自父节点数据有ACK或流媒体数据包。接收管理模块接收数据的流程图如图3所示,如接收到有效的ACK则更新相应父节点的数据结构。如果收到的数据包,则判断是否是一个GOP的第一个包,取出优先级MAP和数据拥有情况MAP,更新缓冲区的数据结构,并用于判断是否需要重传。当一个新的包到达时,将检查是否有丢包,判断丢包的原则是在一个父节点需要传送的包的序列中,一个包在有三个比其序号更高的包到达时还未到达,则认为是此包丢失。高优先级的包需要重传,低优先级的包不需要重传。
接收管理模块调度父节点传输的主要任务有周期性检测父节点的网络性能,并根据父节点的网络性能来分配需传输数据的比例,如果检测到父节点的性能不满足要求,则需要重新分配比例,必要时要删除性能差的父节点并申请新的父节点,这样就能够适应网络的不稳定性。而子节点的接收管理模块是通过计算各个父节点的接收速率和丢包率来判断父节点的网络性能是否满足需要。接收速率是通过记录最近到达的N个包的序号及时间,来计算最近c秒内到达的包的情况计算父节点的接收速率和丢包率。当父节点的接收速率小于阈值或丢包率大于某个阈值时,则该父节点不能满足网络性能要求,需要重新分配比例。接收管理模块检查父节点性能的流程图如图4所示,接下来的需要检查父节点是否在等待ACK,由于传给父节点的重新分配传输任务的命令包是需要ACK的,所以子节点需要维护父节点ACK是否到达的状态,并周期性检查,如发现ACK未到达,则再次发送命令包,如果三个周期内ACK不到达,则设置该父节点网络性能为最差。这样做的结果就是在后面的重新分配传输任务的过程中,该父节点将被删除。
当需要重新分配比例时,将计算各个父节点的Send rateT(i)=s/(R(i)2p(i)/3+tRTO(33p(i)/8)p(i)(1+32p(i)2))]]>该公式就是TCP-Friendly的流量公式,根据父节点的丢包事件率和RTT(Round Trip Time)等参数来模拟在TCP-Friendly的情况下的流量,并以此作为对父节点网络性能的预测,根据这个预测来判断父节点当前网络性能优劣,并分配传输任务的比例。为了增强对网络不稳定性的适应性,在分配比例时要避免对某个父节点分配的比例过大,所以当计算得到一个父节点发送比例大于全部数据的50%时,就设置该父节点发送数据的比例为50%,然后剩余的父节点重新分配比例。为了能够找到合适的父节点,所以当父节点分配得到的比例过小时,就需要更换该父节点。所以当父节点分配得到的比例小于全部数据的10%时就将该父节点删除,然后剩余的父节点重新分配比例。最后计算剩余的父节点的Send rate之和是否大于流媒体的比特率,如小于则需要申请新的父节点。
为了对容错流媒体数据的并行传输调度方法进行性能评估测试,我们搭建了一个基本的100M以太网环境,使用20台终端进行了测试,收集了所有节点的平均延时以及平均接收速率。其结果如图5、6所示。
图中数据说明,在节点数目逐步增加的情况下,终端从其他节点上的平均接收速率随节点数目增加而下降,并在节点数目大于5个以后趋于稳定。也就是说,该并行调度算法对单个节点的接收带宽的要求比较低,平均稳定在10k/s。并且在20个终端的测试情况下平均延时间不超过4.5秒。
由于本发明实现了并行的从多个在逻辑功能上地位同等的节点上获取流媒体数据,所以有效地解决了目前流媒体数据传输遇到的端到端带宽限制问题。而且在调度各父节点进行传输的过程中,能够动态地根据父节点的网络性能调整各父节点间传输任务比例分配,并避免过度依赖单个父节点,所以对于网络性能的不稳定具有较好地适应性,在单个父节点失效的情况下,能够很快恢复,对流媒体数据的流畅度影响很小。在流媒体的传输过程中针对视频数据的特点,对数据包标明了优先级,根据优先级决定是否需要对丢失的包重传,这样就兼顾了网络的负载和画面的质量。
由此可见,本发明达到了预期目的。
权利要求
1.流媒体数据的并行传输调度方法,其特征在于,它依次含有以下步骤步骤1.在流媒体服务器上部署一个流媒体数据发送管理模块,在每个接收视频数据的节点上都部署一个发流媒体数据送管理模块和接收管理模块;流媒体数据的发送者为父节点,流媒体数据的接收者为子节点,而所述各节点既是某些其它节点的父节点也是某些其它节点的子节点;所述流媒体数据是指连续的网络视频流所组成的数据流,一段网络视频流是由t个固定大小的连续的包组成;一段网络视频流被平均分为l份;在所述接收管理模块中定义了以下参数T(i)第i个父节点的发送速率;s数据包的大小,以bytes为单位;R信号来往传输时间;tRTOTCP传输超时时间;p(i)父节点i的丢失事件率;序列号用于判断数据包和命令包的陈旧性,所述序列号是指数据包或命令好的序号;在所述接受管理模块上设定;父节点接收速率的最小阀值,所述接收速率是指设定的最近时间内到达子节点的数据包数;父节点丢包率的最大阀值;步骤2.接收管理模块读入k个父节点;步骤3.所述接收管理模块向每个父节点被从1到l依次分配了l/k个包的传输任务;步骤4.子节点上的接收管理模块向各个父节点发送分配传输任务的命令包;步骤5.父节点上的发送管理模块接收到子节点发来的分配传输任务的命令包,从当前播放位置开始向子节点传输指定的视频数据,并在每一段网络视频流开始的第一个包捎带该段网络视频流内的优先级信息和数据分布情况图;步骤6.子节点接收到一段网络视频流的第一个包,取出优先级信息和数据分布情况图;步骤7.子节点上的接收管理模块周期性重复以下步骤步骤7.1.按以下指标判断各个父节点是否满足网络性能要求父节点的接收速率和丢包率;接收速率是通过记录最近到达的N个好的序号以及时间来计算最近C秒内到达包的数量,丢包率则是通过C时间内数据分布情况图中的数据包序列号于接收到的数据包序列号进行比对得到,当父节点的接受速率小于设定的最小阀值或丢包率大于设定的最大阀值时,则该节点不能满足网络性能要求,需要进行数据发送的重新分配与调度;步骤7.2.当父节点满足节本网络性能要求以后,按以下公式来计算每一个父节点的发送速度T(i)T(i)=s/(R(i)2p(i)/3+tRTO(33p(i)/8p(i)(1+32p(i)2)),]]>步骤7.3.然后使用以下公式来计算各个父节点分配的比例Portion(i)Portion(i)=T(i)/Σk=1nT(k);]]>步骤7.4.根据比例分配的情况,分配比例大于设定的最大比例的节点为大节点,表示为BigNodes={i|Portion(i)>MaxPortion}分配比例小于设定的最大比例的节点为小节点,表示为SmallNodes={i|Portion(i)<MinPortion};如果BigNodes≠Φ,则i∈BigNodes使Portion(i)=MaxPortion,剩下的父节点重新计算比例;转7.3步骤7.5.如果BigNodes≠Φ,则i∈BigNodes使Portion(i)=MaxPortion,剩下的父节点重新计算比例;转7.3步骤7.6.如果SmallNodes≠Φ,将所有的i∈SmallNodes置portion(i)=0,从父节点表中删除这些父节点,转7.2;步骤7.7.对于剩余的父节点若Σi=1nT(i)*s<AvgBitRate,]]>所述AvgBitRate为一段时间内所有父节点的平均发送速率,则获取新的父节点;如获得则转7.3,如未获得则继续下一步;步骤7.8.根据分配给每个父节点的比例依次分配需要父节点传输的一段网络视频流中的块;步骤7.9.向各个父节点发出重新分配传输任务的命令包,命令包中包含了基准基准视频分组号、序号、数据分布情况图,序号代表了命令包的陈旧度,基准视频分组号用于同步,数据分布情况图表示了分配传输的块的分布;步骤7.10.等待一个固定周期的时间,转7.1;步骤8.当子节点接收到任意一个数据包时将检查是否有丢包,判断的标准为有三个标号更高的包到达,如有优先级高的包丢失,则向父节点的发送管理模块发出重传请求命令包;步骤9.当父节点上的发送管理模块接收到子节点的重传请求命令包,查看缓冲区内还是否有要求重传的包,如有则重传,如没有则忽略;步骤10.当父节点上的发送管理模块接收到子节点的重新分配传输任务的命令包时,执行以下步骤步骤10.1.提取重新分配传输任务的命令包中的序号与已经收到的数据包序号进行比对判断是否为陈旧的数据包,是则丢弃,否则执行下一步;步骤10.2.提取重新分配传输任务的命令包中的基准视频分组号,如果当前要传输的包号小于基准视频分组号则执行下一步,否则转10.4;步骤10.3.将使用原数据分布情况图传输从当前传送位置到标为基准视频分组号的那个包之间的数据;步骤10.4.提取重新分配传输任务的命令包中的数据分布情况图;步骤10.5.对比新旧数据分布情况图,补传从当前传送位置到标为基准视频分组号的那个包之间的未传的数据包;步骤10.6.使用新数据分布情况图继续为该子节点传输数据。
全文摘要
本发明属于流媒体数据在网络中的传输技术领域,其特征在于依次含有以下步骤在流媒体服务器上部署一个发送模块,在每个接收流媒体数据的节点上分别部署一个发送模块和接收模块;在接收模块上定义父节点的发送速率、发送的数据包大小和个数、信号来往传输时间、数据超时时间;父节点丢包率等参数;再根据父节点的网络性能以及设定的对各父节点的最大和最小的分配比例,同时地向各个父节点发送分配传输任务的命令包,使得在保证网络稳定传输的状态下保持设定的最大分配比例。本发明具有对网络不稳定情况下的高度适应性、能够在较差的网络环境下保证传输的质量、较好地在多个父节点间调度数据传输任务,实现实时的网络传输。
文档编号H04N7/24GK1812575SQ20061001136
公开日2006年8月2日 申请日期2006年2月24日 优先权日2006年2月24日
发明者徐恪, 崔勇, 孙睿, 王海洋 申请人:清华大学