广播与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的完整实现,敬请期待。

 

目录
相关文章
|
7月前
|
网络协议 网络架构
广播是否不会增加网络通信量?
广播是否不会增加网络通信量?
27 0
|
网络协议 安全 Unix
虚拟路由和转发 (VRF) 表上下文中的多点标签分发协议带内信令
本文档是 Internet 工程任务组 (IETF) 的产品。它代表了 IETF 社区的共识。它已接受公众审查,并已获互联网工程指导小组 (IESG) 批准出版。有关 Internet 标准的更多信息,请参见 RFC 5741 的第 2 节。
365 0
虚拟路由和转发 (VRF) 表上下文中的多点标签分发协议带内信令
|
算法 物联网
设备通过mqtt通道的动态免预注册
一型一密认证方式下,同一产品下所有设备可以烧录相同的设备标志信息,即所有设备包含相同的产品证书(ProductKey和ProductSecret)。设备发送激活请求时,物联网平台会进行身份确认,认证通过后,下发设备接入所需信息。
337 0
|
存储 算法 安全
设备通过mqtt通道的动态预注册
在物联网平台为产品开启动态注册功能后,直连设备可使用一型一密安全认证方式完成动态注册,通过MQTT通信协议连接物联网平台。设备先基于TLS建立与物联网平台的连接,获取MQTT连接所需的设备密钥,再断开连接,然后重新建立MQTT连接进行通信。
442 1
|
内存技术
中继接口信令配合
中继接口电路的基本功能已如前述,也可选用合适的集成片予以实现。中继接口的信令配合是一个重要问题,这里着重加以说明。记发器信号通常采用MFC,如与步进制配合也可采用直流脉冲。线路信令有直流标志信令、带内单频脉冲信令和数字型线路信令方式。以下主要就较复杂的线路信令的配合,分别几种情况说明如下。
|
边缘计算 运维 负载均衡
MOSN 反向通道详解
本文主要介绍之前新合入 master 分支的「反向通道」的使用场景和设计原理,欢迎大家留言探讨。
|
网络安全 数据中心 网络架构
操作高速通道 配置健康检查,只需四步!
阿里云每两秒从健康检查IP地址向本地数据中心中的客户侧互联IP发送一个ping报文,如果某条物理专线上连续8个ping报文都无法得到回复,则将流量切换至另一条链路。
795 0
|
网络协议 网络虚拟化 网络架构
|
网络虚拟化 网络架构 网络协议