发明名称 流媒体数据的并行传输调度方法
摘要 本发明属于流媒体数据在网络中的传输技术领域,其特征在于依次含有以下步骤:在流媒体服务器上部署一个发送模块,在每个接收流媒体数据的节点上分别部署一个发送模块和接收模块;在接收模块上定义父节点的发送速率、发送的数据包大小和个数、信号来往传输时间、数据超时时间;父节点丢包率等参数;再根据父节点的网络性能以及设定的对各父节点的最大和最小的分配比例,同时地向各个父节点发送分配传输任务的命令包,使得在保证网络稳定传输的状态下保持设定的最大分配比例。本发明具有对网络不稳定情况下的高度适应性、能够在较差的网络环境下保证传输的质量、较好地在多个父节点间调度数据传输任务,实现实时的网络传输。
申请公布号 CN100452876C 申请公布日期 2009.01.14
申请号 CN200610011365.X 申请日期 2006.02.24
申请人 清华大学 发明人 徐恪;崔勇;孙睿;王海洋
分类号 H04N7/24(2006.01) 主分类号 H04N7/24(2006.01)
代理机构 代理人
主权项 1.流媒体数据的并行传输调度方法,其特征在于,它依次含有以下步骤:步骤1.在流媒体服务器上部署一个流媒体数据发送管理模块,在每个接收视频数据的节点上都部署一个流媒体数据发送管理模块和接收管理模块;流媒体数据的发送者为父节点,流媒体数据的接收者为子节点,而所述各节点既是某些其它节点的父节点也是某些其它节点的子节点;所述流媒体数据是指连续的网络视频流所组成的数据流,一段网络视频流是由t个固定大小的连续的包组成;一段网络视频流被平均分为l份;在所述接收管理模块中定义了以下参数:T(i):第i个父节点的发送速率;s:数据包的大小,以bytes为单位;R:信号来往传输时间;tRTO:TCP传输超时时间;p(i):父节点i的丢失事件率;序列号:用于判断数据包和命令包的陈旧性,所述序列号是指数据包或命令包的序号;在所述接收管理模块上设定:父节点接收速率的最小阀值,所述接收速率是指设定的最近时间内到达子节点的数据包数;父节点丢包率的最大阀值;步骤2.接收管理模块读入k个父节点;步骤3.所述接收管理模块向每个父节点被从1到l依次分配了l/k个包的传输任务;步骤4.子节点上的接收管理模块向各个父节点发送分配传输任务的命令包;步骤5.父节点上的发送管理模块接收到子节点发来的分配传输任务的命令包,从当前播放位置开始向子节点传输指定的视频数据,并在每一段网络视频流开始的第一个包捎带该段网络视频流内的优先级信息和数据分布情况图;步骤6.子节点接收到一段网络视频流的第一个包,取出优先级信息和数据分布情况图;步骤7.子节点上的接收管理模块周期性重复以下步骤:步骤7.1.按以下指标判断各个父节点是否满足网络性能要求:父节点的接收速率和丢包率;接收速率是通过记录最近到达的N个包的序号以及时间来计算最近C秒内到达包的数量,丢包率则是通过C时间内数据分布情况图中的数据包序列号与接收到的数据包序列号进行比对得到,当父节点的接收速率小于设定的最小阀值或丢包率大于设定的最大阀值时,则该节点不能满足网络性能要求,需要进行数据发送的重新分配与调度;步骤7.2.当父节点满足基本网络性能要求以后,按以下公式来计算每一个父节点的发送速度(send rate)T(i):<math><mrow><mi>T</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><mi>s</mi><mo>/</mo><mrow><mo>(</mo><mi>R</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><msqrt><mn>2</mn><mi>p</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>/</mo><mn>3</mn></msqrt><mo>+</mo><msub><mi>t</mi><mi>RTO</mi></msub><mrow><mo>(</mo><mn>3</mn><msqrt><mn>3</mn><mi>p</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>/</mo><mn>8</mn></msqrt><mo>)</mo></mrow><mi>p</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mrow><mo>(</mo><mn>1</mn><mo>+</mo><mn>32</mn><mi>p</mi><msup><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mn>2</mn></msup><mo>)</mo></mrow><mo>)</mo></mrow><mo>,</mo></mrow>步骤7.3.然后使用以下公式来计算各个父节点分配的比例Portion(i):<math><mrow><mi>Portion</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><mi>T</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>/</mo><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>T</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>;</mo></mrow>步骤7.4.根据比例分配的情况,分配比例大于设定的最大比例的节点为大节点,表示为:BigNodes={i|Portion(i)>MaxPortion}分配比例小于设定的最大比例的节点为小节点,表示为:SmallNodes={i|Portion(i)<MinPortion};如果BigNodes≠Φ,则<math><mrow><mo>&ForAll;</mo><mi>i</mi><mo>&Element;</mo><mi>BigNodes</mi></mrow>使Portion(i)=MaxPortion,剩下的父节点重新计算比例;转7.3步骤7.5.如果BigNodes≠Φ,则<math><mrow><mo>&ForAll;</mo><mi>i</mi><mo>&Element;</mo><mi>BigNodes</mi></mrow>使Portion(i)=MaxPortion,剩下的父节点重新计算比例;转7.3步骤7.6.如果SmallNodes≠Φ,将所有的i∈SmallNodes置portion(i)=0,从父节点表中删除这些父节点,转7.2;步骤7.7.对于剩余的父节点若<math><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>T</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>*</mo><mi>s</mi><mo>&lt;</mo><mi>AvgBitRate</mi><mo>,</mo></mrow>所述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.使用新数据分布情况图继续为该子节点传输数据。
地址 100084北京市100084-82信箱