笔者在读研究生,课题集中在P2P流媒体直播,但是课题组以及学校以前并没有该课题的实践及有价值的理论基础,所以,我是瞎子摸石头过河呀!浏览了很多相关论文,但是还存在很多的疑问。自己也知道,最好的方法是自己做出了系统来,动手了就知道哪里存在问题了,但是人单力薄呀!
首先,笔者关注的系统原型:媒体流式传输,一个客户端节点可以从多个父节点(子流)接收数据,也就是数据块分流。
关于数据块调度机制:
1)一帧的数据块分配在所有子流。优点:介于并行与穿行之间的数据块传输,使得一帧数据能更快(是否可以仿真证明)到达客户端,减小延迟。缺点:一旦某一个子流传输失败,那么所有子流所传输的数据将不可用,因为一帧数据需要所有数据块都到达才能解码播放。这样,虽然,多子流传输使得一帧传输不单依赖于一个子流,减小了网络动态性的影响,但也同时把一帧解码失败的风险扩大到了多个子流。这个问题是这样的:是一个子流失败的几率大?还是多个子流任一子流失败而导致全体失败的几率大呢?
2)一帧的数据块分配在一个子流。优点:一帧的解码只依赖于一个子流,而且可以控制关键帧尽量使用可靠子流。缺点:一旦所谓可靠子流不可靠了,那么一帧的数据将传输失败。
【为什么】:虽然在现实中,如果子流的划分是基于视频流的特征,如IPPPB等,那么,每个子流可能有多个父节点,这为我们的建模提出了Poisson到达假设的挑战。但是,同时也可以看出,如果视频是25帧/秒,那么一帧的播放仅仅为40ms,如果系统稳态,那么到达与播放在均值上应该是一致的,因此,一帧的平均到达同步所用时间也仅仅为40ms。那么,在这40ms内,一个父节点频繁失效的概率是多少呢?如果一帧40ms的时间,就要运行一次调度算法,重新建立一次与新的父节点的连接,那么系统的开销将是一个怎样的数量级呢?
那么,在现实中,一个父节点的平均有效时间大概是什么数量级呢?基于帧的调度是否合理呢?