论文部分内容阅读
随着网络接入带宽、流媒体编解码技术和个人PC性能的突破,基于P2P(peer-to-peer)技术的应用和服务已经成为互联网不可或缺的一部分,基于P2P的流媒体服务已经超越许多其他应用占据了大量的互联网带宽,尤其是其中的点播服务更成为用户关注的热点。遗憾的是,现今的基于P2P的流媒体点播服务并不能提供令人满意的播放质量,原因在于点播服务不仅与直播存在技术上的差异,更与流媒体文件的流行度、用户群体的规模、用户加入和离开的行为等相关。
为提升点播服务的质量,本文选择用户之间的合作与资源共享作为研究对象,对以下内容进行探讨:
1.流媒体点播服务中,为了保证播放流畅,客户端都采用了先缓存后播放的技术。借鉴P2P技术的思想,本文提出在客户端缓存之间共享流媒体数据的模型CCM(cache collaboration model)。CCM包含两方面的内容,分别为P2P网络的构建和流媒体内容的共享机制。CCM网络采用分层构成,上层为超节点,下层为叶节点。超节点之间采用DHT(distributed hash table)算法组建网络,从而保证查询请求能够在有限范围内得到响应。叶节点则与若干超节点相连以提高系统的可靠性。而流媒体的共享机制则研究如何借助用户节点的运算能力、存储空间和网络吞吐等资源实现流媒体内容的存储与转发,从而达到帮助源服务器实现负载均衡、请求分流的作用。通过理论分析与实验证明,CCM能够有效减少外部网络流量的需求,提高缓存的复用率,降低源服务器的开销。
2.与直播不同,点播用户可以随意快进、后退或者拖动播放进度条,这些都为客户端缓存之间的共享带来一定的难度。为了能够更大限度的在客户之间建立合作关系,本文提出了基于流媒体内容供求关系和媒体数量的两种缓存内容置换算法,除了在理论上将其与FIFO(first in first out)、LRu(least recently used)进行了对比分析之外,还通过实验与FIFO、LRU和LSB(least sent bytes)在启动延迟、副本数量以及对源服务器依赖度三个方面加以比较。结果表明,这两种算法几乎均优于FIFO和LRU,在启动延迟、根节点依赖度方面与LSB相仿,而在副本数量上则优于LSB。
3.在点播用户之间共享缓存后,系统中存在了大量服务节点,客户节点需要从这些服务节点中选择更加适合自己的节点。同时,客户节点也有可能为新节点提供服务,因此节点在流媒体内容分发树中位置非常重要。针对P2P节点性能与合作意愿差异,兼顾节点自身利益和系统整体性能,本文提出了基于节点性能和贡献的树结构调整算法。存客户节点选择服务节点并发出请求后,由服务节点根据新、老节点在性能和贡献上的差异决定是否接受该请求以及调整原有节点在转发树上位置。在实验中,通过与基于时延的选择算法对比发现,我们的调整算法可以提升节点的贡献度,降低内容分发树结构的深度、新节点加入系统所需要的平均跳数以及信号中断的次数。
4.与其他应用类似,点播服务的用户在兴趣、爱好方面也存在相似特性,如果在构建网络时能够利用这一特性,将有助于应用的开展。于是,本文引入分群概念,将兴趣相近的节点分在同一个群,每个群由一个群首维护,所有的群首构成上层网络,而群内的其他普通节点则构成下层网络。这样,随着群数量的增加,普通节点所需维护的路由表长度将显著缩短,而群内节点的加入和退出行为也将不会影响其他群的成员。尤其是,对群内流媒体对象的请求只需在群内就可以得到响应,请求所经历的转发次数得到降低。并且,即使跨越多个群的请求,其所需的平均路径长度也没有明显的增加。
最后,本文详细阐述了一个基于CCM的流媒体点播系统的设计,包括应用背景、系统架构、模块设计、对等层之间的消息、主要数据列表的结构等内容。通过一个实际的P2P平台,比较了使用cache技术前后的差异。采用cache技术后,超节点的网络带宽开销降至之前的25%~30%,CPU占用率峰值也只有20%左右,能够正常运行。即使并发连接500个叶节点,其带宽开销也不到1Mbps。