直播P2P技术1-技术入门

摘要:
1.直播协议直播协议主要有RTMP,HLS,MPEG-DASH,RTSP,HTTP-FLV等。

1. 直播协议

直播协议主要有RTMP,HLS,MPEG-DASH,RTSP,HTTP-FLV等。每种协议都各有长短,比如RTMP延迟低,但诞生于Adobe,依赖于Flash Player,在如今FLash Player面临被淘汰的时代,RTMP前途未卜;HLS是苹果基于HTTP开发并主导的流媒体协议,它充分利用了HTTP的通用性,并能根据带宽自适应码率,但单个TS文件duration过大(一般为10s),延迟较高;MPEG-DASH类似于HLS,也是基于HTTP的,不同点是DASH单个片段duration灵活可变(如小至3s),且是开发性的流媒体协议,使其得到很多厂商的大力支持。

2. P2P技术

P2P技术是分布式系统的应用之一,通常表现为客户端之间直接进行数据交换共享。在P2P过程中,所有客户端的活动形成了一张逻辑上的虚拟网络,该网络结构被称为P2P模型的网络拓扑。一般网络拓扑结构有三种:完全网状,树状,基于DHT的环状,分别如下图1,2,3所示:直播P2P技术1-技术入门第1张

P2P技术可用于文件共享,流媒体,点对点通信等,如常见的迅雷,视频网站的P2P插件。

3. 直播P2P技术

常见流媒体直播协议都属于C/S型,即所有客户端通过指定协议,从服务端获取直播数据。当客户端数量达到一定规模后,服务端将承受巨大的I/O和带宽压力。若服务器无法及时处理客户请求,客户端卡播率急剧上升,从而影响用户观看体验。

直播P2P技术,简单来说,就是客户端之间使用一定协议,交换和共享直播数据,通过减少对服务器的数据请求,来降低服务端的I/O带宽等方面压力,从而削减服务器带宽成本,降低客户端卡播率。

鉴于通用性与效率,一般很少从底层开始设计一套全新的流媒体直播P2P协议。惯用做法是基于通用协议,实现客户端的P2P网络。对基于HTTP的流媒体协议,如HLS,MPEG-DASH等,重写客户端数据下载逻辑即可;对非HTTP的流媒体协议实现P2P,如RTMP,RTSP,需要一套切片服务器,切片服务器负责持续地将数据流切成一个个数据片段(类似HLS的TS文件),客户端在P2P网络基础上进行数据片段的下载和交换共享。

设计直播P2P协议,通常关注两个要素:客户端延迟,P2P分享率。客户端延迟是指客户端播放到的最新数据时间戳与服务器最新产生的数据时间戳的差值,P2P分享率是指客户端从P2P网络获取的数据量与客户端完整观看所需的数据量的比值。

为了方便下面讨论的不同模型优缺点,作如下定义:

  • 跳数:一个数据块传输过程中经过的节点数
  • 控制请求:所有非实际数据块传输的请求
  • 数据请求:一次实际数据块的传输请求
  • Tc:一次控制请求的传输时间
  • Td:一次数据请求的传输时间
  • T:一个数据块从一个节点到另一个节点的总时间
  • Tn:一个数据块经过n跳到达另一个节点的总时间
  • B:直播码率
  • Bu:节点上行带宽
  • Bd:节点下行带宽
3.1 基于网状拓扑的直播P2P

网状拓扑模型,也称PULL模型,结构如上图1. 所示。此模型中网络节点完全对等,数据流动完全随机无序。节点对等,是指数据可以在节点之间双向流动,随机无序是指节点之间交换的所有数据的序列关系是随机无序的。节点之间交换数据一般由3子过程组成(如下图4.所示):向对方发送自己数据的bitmap,对比双方bitmap来决定从对方请求哪些数据块并发送请求,发送实际数据块给对方。

直播P2P技术1-技术入门第2张

注:bitmap是一个bit数组,每一个bit位唯一标识了一个数据块的有无

PULL模型的优点是每个节点都参与数据的下载和上传过程,最大利用了节点的资源和计算能力。假设每个节点随机下载的数据量比例为R(R < 1),则理想情况下,单个节点Bu,Bd满足Bd>=R*B/8; Bu>=(R/(1-R))*B/8

然而缺点也很明显:延迟高。假设从发送bitmap到接收bitmap请求的时间为Tc,发送数据获取请求到接受数据获取请求的时间为Tc,完全发送一个数据块到接受一个数据块的时间为Td,那么一块数据的单跳传输的时间T,必有T>2*Tc+Td。若一块数据经过n个节点,到达另外一个节点,那么数据块到达最后一个节点的时间Tn,必有Tn>nT=2n*Tc+n*Td

PULL模型的特点,使其适合应用在延迟较高的直播P2P网络中,而不适合于延迟要求较低的场景。

3.2 基于树状拓扑的直播P2P

树状拓扑模型,也称PUSH模型,结构如图2. 所示。父节点相比子节点延迟低,下载速率块,上行带宽大。一旦两个节点通过订阅协议形成父子关系,父节点可以立即持续地向子节点推送数据。一个完整的过程如下图5. 所示:

直播P2P技术1-技术入门第3张

由于一次订阅后,父节点可持续地立即地推送数据给子节点,整个过程快速高效。单跳数据的到达时间T,有T~=Td, n跳数据达到的整体时间Tn,Tn~=n*T

PUSH模型形成的网络并不是一个对等的P2P网络,数据流动只能从父节点到子节点。这样关系直接导致顶层节点P2P上行负载大,非顶层节点未参与P2P下行过程,底层节点(叶子节点)既未参与P2P下行,也未参与P2P上行过程。实际生产环境中,用户上行带宽往往是受限制的,即使通过完美算法,使上、下行能力不同的节点,演化到树中合适的一个位置,也无法弥补压力集中在少部分非叶子节点上的天生弱点。假设直播的数据码率为B,对于1-N树状模型(指一个父亲点最多可以有N个子节点)而言,非叶子节点的上行带宽Bu,必须满足Bu>=N*B/8,下行带宽Bd,必须满足Bd>=B/8,若B成倍增长,对应的Bu,Bd也将成倍增长。当实际Bd,Bu无法满足要求时,整棵树将坍塌。

所以基于树状拓扑的模型是一个较理想的网络拓扑模型,适合于低码率的直播P2P网络,而不适合码率较高的直播场景。

3.3 基于一致哈希的环状拓扑直播P2P

免责声明:文章转载自《直播P2P技术1-技术入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇运维自动化发布系统SpringMvc流程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PeerJS 0.1.7:一个用于浏览器内P2P的WebRTC封装器

Michelle Bu与Eric Zhang在3月6日发布了PeerJS 0.1.7,它封装了WebRTC。后者是W3C倡议的旨在促进浏览器内P2P通信的一种技术。 尽管WebSocket的作用发展迅速,但PeerJS代表的是之前由服务器组织数据传输的方式有了根本性转变。 Bu说:“WebSocket和 WebRTC数据通道看起来一样——都支持二进制数据,...

基于802.11Fuzz技术的研究

转自安全客 关于无线的Fuzz最开始接触了解时,国内基本毛线都搜不到。经过几个月的资料搜集和学习,将大约全网的fuzz资料整理翻译分析并读懂写下,就为填补国内空白,也希望无线爱好者能多多交流。  在各个安全领域的漏洞挖掘方法中,Fuzz都挺流行的. Fuzz是一种黑盒软件测试技术,这基本上是使用畸形或半自动化的方式在一个畸形的数据注入发现执行错误,运用在协...

基于P2P的匿名技术研究

李超 北京图形研究所 摘要:本文针对匿名通信中两种基本技术:Mix和洋葱路由进行了论述,并分析了P2P网络对于Mix网络和传统的洋葱路由的改进和缺陷,论述了基于P2P的匿名通信在提高通信性能和抗攻击能力上的实现技术。 关键词:P2P 洋葱路由 网络 匿名 1、概述  传统意义下的网络安全包括以下四个要素:秘密性(Confidentiality)、完整性(I...

P2P系统,一致性哈希和DHT

数据网格产品经常会使用P2P进行通信,借此机会系统地学习一下P2P网络和其资源搜索策略。 1 P2P网络架构 谈到P2P就涉及到一个概念:Overlay Network(覆盖网络)。所谓覆盖网络是应用层网络,几乎不考虑网络层和物理层,它具体指的就是建立在另一个网络上的网络。例如P2P网络就是覆盖网络,因为它运行在互联网之前,但允许对未知IP主机的访问。...

P2P平台为什么会跑路?

自端午节过后,这一波P2P 爆雷潮就像关不住的水龙头,一发不可收拾,淹了行业,呛了投资者。很多人认为不合规的平台暴雷从而引发了羊群效应,大量P2P平台出现了挤兑现象,最终导致平台资金链断裂。但是今天我们想说的是,真正合规的P2P平台,根本不存在挤兑这个概念。先说什么是P2P,P2P是英文person-to-person的缩写,意即个人对个人。又称点对点网络借...

P2P简介

在这信息无处不在的时代,我们无时不刻都在接收和发送者信息。那么既然每个人需要的信息量那么大,在这个网络服务器仍然受着限制的时代,各大厂商比如迅雷是如何给每个用户传输信息并且能保持如此之快的速度的呢。这里就要讲到了P2P技术。 点对点技术(peer-to-peer, 简称P2P)又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把...