P2P混合流系统中子流调度的统一框架及优化策略
1. 引言
P2P 流媒体架构主要有基于拉取(mesh - pull)和基于推送(tree - push)两种方式。基于拉取的系统设计原理简单,能应对 P2P 环境中的节点变动和节点异构性,但常面临高流量开销和长启动延迟的问题。而基于推送的系统,若树结构不因节点变动而崩溃,可实现高吞吐量、低开销和小延迟。
近年来,研究人员开始探索拉取 - 推送混合架构。像 GridMedia、CoolStreaming+ 和 LStreaming 等混合系统,在吞吐量、信令开销和视频观看质量方面,相较于基于拉取的系统有了性能提升。
拉取 - 推送流媒体的基本原理是:将原始视频分割成数据块,每个数据块分配唯一编号,再将这些数据块逻辑组织成子流。例如,若有 S 个子流,子流 1 包含编号为 1、1 + S、1 + 2S 等的数据块。视频块通过块拉取模块和子流推送模块进行传输。每个节点先拉取数据块,初始时间过后,子流推送模块开始工作,此时节点需决定从哪些邻居获取子流,这一决策过程就是子流调度。子流推送模块启动后,块拉取模块仍作为备份,在播放截止日期临近时下载缺失的数据块。
在混合系统中,子流推送模块基于块拉取模块形成的拓扑结构,在节点间建立局部树结构。现有子流调度方案多为实验性设计,存在固有局限性。我们提出了最大流模型来统一现有混合系统中的子流调度问题,并证明 GridMedia、CoolStreaming+ 和 LStreaming 的子流调度模块分别是该最大流模型的特殊情况。同时,为更好利用异构节点,提出了最小成本流模型,并在原型系统 LStreaming+ 中实现。与 GridMedia 和 LStreaming 相比,LStr