广播与P2P通道(上) -- 问题与方案

简介: 我们设想一下网络视频会议的场景:在一个视频会议虚拟房间中,每个人都需要将自己的视频数据发送给房间中的其它人,从而实现在同一个地方进行实时会议的效果。为了简单起见,我们假设,这个虚拟的视频会议房间中只有三个人,其结构可以简化描绘如下:     客户端A需要将自己的视频数据发送给B和C,客户端B需要发给A和C,客户端C需要发给A和B。

我们设想一下网络视频会议的场景:在一个视频会议虚拟房间中,每个人都需要将自己的视频数据发送给房间中的其它人,从而实现在同一个地方进行实时会议的效果。为了简单起见,我们假设,这个虚拟的视频会议房间中只有三个人,其结构可以简化描绘如下:

   

客户端A需要将自己的视频数据发送给B和C,客户端B需要发给A和C,客户端C需要发给A和B。有了这个场景基础,接下来,我们将从数据传送通道的角度来分析在这个模型中可以采用的通道方式,以及进行对比并找出最优的通道模型。所谓最优,就是服务器所占用的带宽(包括上行和下行)最小,因为在现实的视频会议案例中,带宽是不可忽视的成本之一。为了下面能进行更具体的数据分析和比较,我们假设视频的大小为320*240,帧频为10fps,这样,一路视频流经过编码后,所需的码率大概为30KByte/s。

1.模型1:最简单的通道模型

对于上述场景,我们第一反应能想到的解决方案的要点:

(1)所有的视频数据都经过服务器中转。

(2)以客户端A为例,对于采集到的每一帧视频,调用两次发送方法,一次发送给B,一次发送给C,都经过服务器中转。客户端B和C也是同理。

(3)服务器仅仅转发数据,不需加入任何其它的逻辑。

现在,我们计算一下服务器的带宽占用。

上行:30*2*3 = 180KByte/s。(每个客户端需要上传两份相同的视频流,3个客户端)

下行:30*2*3 = 180KByte/s。(每个客户端需要下载另外两个用户的视频流,3个客户端)

在这种模型下,上下行是完全对称的。这个模型有个很明显的缺陷:每个客户端采集的每一帧视频都需要上传两次。修正这个缺陷也很容易,在服务端引入广播功能。

2.模型2:在服务端进行广播

在第一个模型的基础上,我们在服务端增加广播功能,将视频帧的接收者的决定权由客户端转交给服务器:

(1)客户端将采集的每一帧发送给服务器,服务器收到该帧后,根据当前会议的参与者,决定需要将视频帧转发给哪几个客户端。

(2)以客户端A为例,对于采集到的每一帧视频,只需调用一次发送给服务器的方法。

我们再来计算一下服务器的带宽占用。

上行:30*3 = 90KByte/s。(每个客户端上传自己的视频流,3个客户端)

下行:30*2*3 = 180KByte/s。(每个客户端需要下载另外两个用户的视频流,3个客户端)

在这种模型下,上下行不再对称了,上行的流量减小了一半,效果还是很明显的。

3.模型3:结合P2P通道

为了进一步减少服务器的带宽占用,我们还有一个杀手锏,那就是在模型2的基础上使用P2P通道。理想的情况下,A和B以及C相互之间的P2P通道都可以创建成功,这样,就没有任何数据需要经过服务器中转了,所以,服务器的上行和下行的带宽占用都是0。但是,现实中常见的情况很复杂。比如,假设客户端C的路由器的NAT是对称型的,那么,C和A以及C和B之间的P2P通道无法创建成功,但A和B之间的P2P是成功的。基于此假设,我们希望,A和B之间的数据经过P2P通道直接传送,A和C以及B和C之间的数据只有经过服务器转发:

(1)A通过P2P通道将视频帧发送给B,并通过服务器中转给C。

(2)B通过P2P通道将视频帧发送给A,并通过服务器中转给C。

(3)C通过通过服务器将视频帧中转给A和B。 

我们再来计算一下服务器的带宽占用。 

上行:30*3 = 90KByte/s。(每个客户端都要上传自己的视频流,3个客户端) 

下行:30 + 30 + 30*2 = 120KByte/s。(A需要下载C,B需要下载C,C需要下载A和B)

可见,由于P2P通道的存在,降低了下行带宽的占用量。 

4.服务器广播与P2P通道结合深入分析

现在,我们将参与视频会议的人数扩展到N(N>=2),情况依然是复杂的,某些客户端之间的P2P通道成功建立,而某些客户端之间的P2P通道无法创建成功。在这种情况下,如何才能将服务器广播模型与P2P结合起来了?需要做到以下几点:

(1)每个客户端需要记录自己与哪些用户创建了P2P通道。

(2)服务器也要知道每个客户端的P2P通道的状态。(客户端的P2P通道状态发生变化时,及时报告给服务器)

(3)当服务器收到一个视频帧时,首先,查看当前参与会议的用户,然后,根据视频帧的发送者的P2P通道状态,来综合决定该视频帧需要转发给哪些客户端。

        (比如本文的例子,服务器收到A的视频帧,发现A和B之间的P2P是通的,所以,它就只将该帧转发给C。)

(4)在客户端发送视频帧时,又可细分为三种情况:

  a.当某个客户端发现自己和所有的与会者都建立了P2P通道时,那么,它就不用把视频帧发送给服务器了。

  b.如果客户端与所有与会者的P2P通道都没有建立成功,那么,它只需要将视频帧发送给服务器。

  c.如果客户端与部分与会者建立了P2P通道,那么,它不仅需要将视频帧发送给服务器,还需要将该帧经过每个P2P通道发送一次。

本篇我们提出了广播消息与经服务器中转、P2P通道传送等方案结合时,可能发生的各种情况,以及在每种情况下服务器消耗的上行与下行的带宽。综合看来,模型3对服务器带宽的占用是最少的,但是,其实现也是最复杂的。我们将在下篇详细介绍基于ESFramework通信框架对上述模型3的完整实现,敬请期待。

 

目录
相关文章
|
传感器 数据采集 物联网
Zigbee 控制节点数据收发流程|学习笔记
快速学习Zigbee 控制节点数据收发流程
Zigbee 控制节点数据收发流程|学习笔记
|
存储 运维 网络协议
如何实现 呼叫速率(caps) 值控制
首先,企业需要明确的是呼叫中心系统搭建的目的。搭建这个呼叫中心是想用来做什么呢? 是为了企业当做呼入型的客服使用? 还是用来当电话外呼使用? 是企业想做营销用呢还是政府单位办公使用? 是要做外包服务呢还是自己用? 是想挣钱用呢还是想做客户服务使用? 需求 呼叫中心的搭建肯定有需求,这就要把一份需求文档写出来。比如想要做什么,每一点写的清清楚楚: 需求包括现在有什么? 碰到了什么问题? 以后想整成什么样? 设置,扩容以及升级的快速,成本与灵活性 一个企业的业务、流程与规模有时候随着市场的快速成长会有很大的变化。这时候,企业的呼叫中心系统就要能够快速的适应市场,能让企业做出适当的调整。比如,呼叫中
|
4月前
|
算法 网络协议 物联网
|
6月前
|
JavaScript 前端开发
在页面中监听多个广播通道
使用 JavaScript 的 `BroadcastChannel` 可以监听多个广播通道。示例展示了如何创建并处理两个通道"channel1"和"channel2"的事件。每个通道都有独立的`onmessage`事件处理程序,接收到消息时会在控制台打印。可以按需创建多个通道,并在不再需要时调用`channel.close()`关闭以释放资源。
|
存储 算法 安全
设备通过mqtt通道的动态预注册
在物联网平台为产品开启动态注册功能后,直连设备可使用一型一密安全认证方式完成动态注册,通过MQTT通信协议连接物联网平台。设备先基于TLS建立与物联网平台的连接,获取MQTT连接所需的设备密钥,再断开连接,然后重新建立MQTT连接进行通信。
527 1
|
网络协议 物联网
DFP 数据转发协议应用实例 4.修改网络中指定设备的参数
稳控科技编写的一套数据转发规则, 取自“自由转发协议 FFP(Free Forward Protocol)” ,或者 DFP(DoubleF Protocol), DF 也可以理解为 Datas Forward(数据转发)的缩写。DF 协议是与硬件接口无关的数据链路层协议,规定了数据流如何在不同设备之间、不同接口之间的传输方向。 DF 协议一般用于延长数字接口的传输距离(数据中继),它与硬件接口类型无关,可以基于 UART、 LoRA、TCP 等异步数据传输介质。
DFP 数据转发协议应用实例  4.修改网络中指定设备的参数
|
网络协议 物联网
DFP 数据转发协议应用实例 3.LoRA 中继-使用频道实现
DFP 是什么? 稳控科技编写的一套数据转发规则, 取自“自由转发协议 FFP(Free Forward Protocol)” ,或者 DFP(DoubleF Protocol), DF 也可以理解为 Datas Forward(数据转发)的缩写。DF 协议是与硬件接口无关的数据链路层协议,规定了数据流如何在不同设备之间、不同接口之间的传输方向。 DF 协议一般用于延长数字接口的传输距离(数据中继),它与硬件接口类型无关,可以基于 UART、 LoRA、TCP 等异步数据传输介质。
DFP 数据转发协议应用实例  3.LoRA 中继-使用频道实现
|
算法 物联网
设备通过mqtt通道的动态免预注册
一型一密认证方式下,同一产品下所有设备可以烧录相同的设备标志信息,即所有设备包含相同的产品证书(ProductKey和ProductSecret)。设备发送激活请求时,物联网平台会进行身份确认,认证通过后,下发设备接入所需信息。
452 0
|
内存技术
中继接口信令配合
中继接口电路的基本功能已如前述,也可选用合适的集成片予以实现。中继接口的信令配合是一个重要问题,这里着重加以说明。记发器信号通常采用MFC,如与步进制配合也可采用直流脉冲。线路信令有直流标志信令、带内单频脉冲信令和数字型线路信令方式。以下主要就较复杂的线路信令的配合,分别几种情况说明如下。
|
边缘计算 运维 负载均衡
MOSN 反向通道详解
本文主要介绍之前新合入 master 分支的「反向通道」的使用场景和设计原理,欢迎大家留言探讨。