OTT 是“Over The Top”的缩写,是通信行业非常流行的一个词汇,即互联网公司越过运营商,发展基于开放互联网的各种音视频及数据服务业务,强调服务与物理网络的无关性。常用的互联网语音、视频通讯、IM,都属于OTT通讯范畴。大家比较熟知的OTT提供商,如Skype,腾讯,YY语音,都是业界比较优秀的例子。最近的微信电话本更是在OTT通讯领域掀起不小风浪。
为什么要构建OTT通讯网络?因为沟通是人们的基本需求,OTT通讯是未来发展的必然趋势。如在未来远程、中介等应用场景中,利用实时视频能力,可以很好地提高效率;而在游戏过程中,加入IM和视频通讯会提升客户体验度;在网购等场景中加入IM、视频通讯等能力,则能更好地激发消费者的购买热情,有钱,任性,血拼!
笔者任职的企业在OTT通讯领域积累十年时间,构建paas平台,实现音视频、IM、VoIP、短信、验证码等能力(后续将提供互联网会议等能力),服务应用所覆盖的总注册客户数超2亿。
今天将在构建OTT通讯网络方面积累的经验分享给大家。
做好通讯业务, 需要构建一个强大的后台网络。最重要的几点:
保障通讯质量:保证QOS,包括音视频清晰度,网络传输过程中的清晰度,以及在呼叫、媒体延迟方面的效果;
通讯过程中保持系统稳定性:包括服务器、数据中心在故障情况下,网络中断时都
需要有良好的应对措施。
保障安全性。保证用户数据安全、通信安全。
具体而言:
一、保障OTT通讯质量
(1) 保证通讯的节点离用户最近。
不论用户在任何的区域、网络状况下,都可以很好地接入节点。因此,接入节点一定要在用户最近的地方。这里的节点包括两层含义:一是呼叫信令的接入,二是音视频传输类媒体的接入。在这一方面,腾讯和YY在业界都做的很好,云之讯与他们也经常有相关交流与合作。目前其在国内的分布式节点具有上百规模,在地市级的区域有很好的覆盖。同时要兼顾多网的接入。国内很多运营商在网络互通上有一些问题,联通、移动、铁通等等存在接入问题,这个时候部署节点的时候要考虑到多网的问题。此外,要有效运用CDN,OTT通讯在音视频实时传输很难用到CDN,但是有些效果、服务的接入资源,用户登录鉴权的功能,可以用到CDN做到加速处理。
(2)各个分布式节点部署完毕之后,保证各个节点之间的互通。
骨干网相对好一些,但是有时候会遇到光纤中断的问题。为了避免这种情况,实际上我们需要做一个备份的处理:在多个节点之间做很多备份电路,在某条电路中断时候,也可以用其他电路进行互通。除此之外,通过传输协议做一些保障也是一个有效的选择:比如说媒体传输时可以做一些RBC的处理,同一个包可以发两次,一个包丢掉之后通话语音不会受到影响。当然也没有这么简单,因为要考虑到带宽的影响。另外还有一些自主重传的机制,比如某一条丢掉之后主动要求重传。很多协议上的保障是必须的。在部署节点的时候,有些关键的节点需要做专线的连接,这个和很多IDC的处理是一样的,当然这里也有成本和节点中央性的一些综合考虑。
(3)高效路由策略。
高效的路由包括两方面:一方面是强大的监控能力,包括客户端与各个接入节点的主动的监控和探测,另外就是节点之间的网络监控和管理。针对音视频的媒体流做一些统计和分析,判断客户端与节点是否有问题,有问题的话属于间歇性丢包还是连续丢包,来决定客户端最好连接哪个接入点来提供服务。另一个方面是节点之间的探测功能,基于探测与监控功能来做一个强有力的调度措施。比如两个客户端之间能够做一个p2p的互通,会优选这两个客户端进行端对端的媒体转发。另外如果不能进行p2p的互通,我们会选择服务器中转。
服务器中转是基于监控来实现的,还有就是根据监控、实时通话的情况,通过调整码率来适应网络的变化。
二、容灾措施保持通讯过程中的系统稳定性
互联网不同于传统运营商,很多用的是专有的服务器,基于通用服务器的话则需要集群式的部署,防止端点故障。IDC的故障、网络的故障需要有备份处理机制;大多情况下则是采用自动检测、自动切换的措施,保证在IDC故障或者受攻击的情况下可以自动切换至其他IDC上,保证服务的通畅。
三、数据安全的问题
保障企业数据的安全是构建OTT通讯的重中之重,做更多的备份是我们最好的选择,包括IDC内、跨IDC、跨服务器、海外的备份。在备份策略方面我们需要注重增加多样性,根据我们IDC之间的连接情况,评估带宽和性能的影响,做一些增量的备份或者是定时的纯备份。
此外,很多企业都会关心互联网的音视频沟通过程中,通讯数据是否会被泄露或者监听。其实,我们只要在SDK里面做了一些加解密的算法,根据用户定制私有的秘钥做一个端到端的加密,无论是通过P2P还是中转的传输,是可以躲避互联网泄密的风险。当然,如果专门定制一些硬件芯片配合加密处理,互联网泄密的风险基本为零了。
综合来看,如果想真正构建好OTT网络,上文所述只是一部分措施,除此之外,很多终端的编解码,语音、视频的处理,都非常关键。