首页 > 代码库 > 直播P2P技术
直播P2P技术
低延迟模型
由上一篇文章我们知道:网状拓扑虽最大化利用了所有节点的资源却无法降低数据延迟,而树状拓扑尽管数据传输效率高,延迟低,但只利用了少部分节点的带宽资源,不适应高码率的直播P2P网络。
那么如何在高码率的直播中实现延迟低的可用P2P网络呢?
其实可以将树、网状拓补有效地结合起来,也就是使节点在全局上属于对等关系,而在一定程度上又属于树中的父子关系。这样既保证了每个节点都参与数据下载和上传过程,使得单个节点平均上、下行带宽要求降低,又保证节点之间数据交换快速高效。称这种结构为:树网状结合拓扑。结构如下图1.所示。
为了方便讨论树网状网络拓扑,作如下定义:
- 数据全集:整个直播数据片段构成的集合
- 数据集:数据片段的集合,互不相交,且并集构成整个直播数据的全集
- 节点基本数据集:原始分配给每一个节点从服务器下载的数据集
- 节点数据集:节点基本数据集与从其他节点订阅的数据集的并集
每一个节点被分配一个基本数据集的下载任务,数据集的数量全局固定可知,节点数据集相同的节点不产生任何关系,数据集不同的节点可在不同的数据集上产生不同的订阅。
节点之间控制消息和数据消息过程如下图2.所示。
假设数据集数量为M,直播数据码率为B,则单个节点的最小平均下行带宽Bd,Bu=(B/8)/M
,最小平均上行带宽Bu,Bu=(M-1)/M*(B/8)
。节点订阅数据集成功后,单个数据块的单挑延迟T,有T=Td
,n跳数据块延迟Tn,有Tn=n*Td
。理想情况下,每一个节点的最大P2P数据分享率P,有P=(M-1)/M
。
跳数越多(树的高度越高),节点的延迟就越大。所以一般可以将直播的数据划分成多一些的数据集,即M值大一些,数据跳数固定为1(每一棵树树高为2)。同时,M越大,P也就越大。
当然,这个模型也有一些缺点。整个P2P网络中,有很多棵基于对数据集订阅产生的树,如果每种数据集的订阅树总数量不均衡,将会导致订阅树更少的那部分数据集节点上行带宽压力增大。当然这个弱点是可以弥补的,取决于服务器数据集划分算法和客户端节点的数据集任务分配的算法。
总的来说,树网状网络拓扑既有效地利用了每个节点的上下行资源,又能做到PUSH模型的低延迟数据推送,很适合于低延迟的直播P2P场景。
直播P2P技术