基于SIP协议的WebRTC信令研究与应用①

2018-09-17 08:50孙建伟
计算机系统应用 2018年9期
关键词:服务器端信令音视频

孙建伟,陈 立,2,王 卫

1(中国科学院 沈阳计算技术研究所,沈阳 110168)

2(中国科学院大学,北京 100049)

Web实时通信(WebRTC)[1]是一种构建在Web浏览器上的实时音视频通信技术.WebRTC由Google收购 Global IP Solution 公司而获得的一项技术,并在2011年将其开源.WebRTC提供了音视频采集、网络传输、音视频编解码、信号优化和处理等[2]一整套的音视频通信解决方案.由于WebRTC强大的多媒体处理引擎,WebRTC 已经在 Chrome、Firefox、Opera、Android、iOS等浏览器和平台上得到了支持.

会话初始协议(Session Initiation Protocol,SIP)是一个应用层的信令控制协议,是IMS的核心的、成熟的、已经得到广泛应用的技术,用于创建、修改和释放一个或多个参与者的会话.WebRTC提供的JSEP是一种仅维护信令状态机的弱信令控制协议,在企业级融合通信应用中必须将WebRTC和实际的信令协议相结合.

本文介绍了WebRTC和SIP融合已有的两种方案,分析了WebRTC和SIP互通需要解决的问题,提出了一种WebRTC的PeerConnection层和SIP协议在客户端融合的方案,最后在多种客户端实现了WebRTC和SIP融合的应用,并和其他方案对比得出了此方案的优缺点.

1 相关技术简介

1.1 SIP协议简介

SIP是基于文本的、独立于传输层的应用层IMS核心协议.其用于建立,结束以及中断多媒体会话[3].

1.2 WebRTC简介

WebRTC语音引擎支持iSAC、iLBC、Opus 等多种编解码器.音频NetEQ算法包括抖动缓冲和丢包补偿模块以延迟减至最小并提高音频质量[4].WebRTC视频引擎包含采集、编解码(VP9、VP8、可添加H264等编解码器)、加解密、媒体文件、图像处理与显示、网络传输与媒体流控制等技术[5].WebRTC提供JSEP这样的弱信令目的就是为了让WebRTC强大的多媒体处理能力可以和不同的实际的信令协议相结合,如 SIP、ROAP、XMPP、Jingle 等[6].

2 WebRTC 的 PeerConnection 层和 SIP 协议在客户端融合方案的研究

从信令的角度来看,当下主要有两种SIP和WebRTC互通方案[7]:一种是基于服务器开发 SIP/WebRTC 转换网关.另一种是用 JavaScript 实现 SIP 协议,在此协议栈的基础上构建WebRTC 应用.

2.1 基于服务器端的信令转化网关实现WebRTC和IMS网络互通

这种方案通过开发SIP/WebRTC转化网关实现SIP信令和WebRTC信令的转化,如webrtc2sip[8]就是这种方案的典型代表.基于服务器端的信令转化网关实现WebRTC和IMS网络互通架构图如图1所示.

2.2 基于JavaScript实现的SIP协议开发IMS客户端

这种方案用JavaScript实现SIP协议并向Web应用开发者提供JavaScript API.开发者调用WebRTC JavaScript API开发出的 WebRTC 应用可以采用WebSocket传输SIP信令.开发者通过此类WebRTC应用直接注册并登录支持WebSocket[9]的SIP Server,与传统 SIP终端进行通信.使用这种解决方案的开源SIP项目有Jssip和SipML5.

图1 基于服务器端的信令转化网关实现WebRTC和IMS网络互通架构

2.3 WebRTC的PeerConnection层和SIP协议在客户端融合方案

WebRTC C++ API(PeerConnection 层)是面向浏览器厂商的,使的浏览器厂商容易在此基础上实现WebRTC标准的Web API.本文提出了一种WebRTC的PeerConnection层和SIP协议在客户端实现融合互通的方案,可以适当避免上述两种方案的缺陷.该方案主要通过内嵌于客户端SIPRTC本地网关做WebRTC SDP和 SIP SDP的转化及 SIP信令和 WebRTC PeerConnection API的映射.该方案基于 WebRTC PeerConnection API,但不局限于 C++ API,也包括编译等手段产生的其他语言的PeerConnection 层API,相应的不同终端结合的SIP模块会有所不同.WebRTC的PeerConnection层和SIP协议在客户端的融合方案架构如图2所示.

方案一需要在SIP服务器上开发为了兼容WebRTC信令的转换网关,开发成本较高,服务器也会因信令的转换产生一定的延迟.但是该方案会减轻客户端的开发负担.方案二需要浏览器支持WebRTC,虽然目前主流的浏览器都已支持WebRTC,但限于浏览器的 WebRTC JavaScript API尚处于草案阶段,在此基础上开发应用会有所不便.但这种开发方式的开发流程较为简单,代码可以实现跨平台.这两种案都需要服务器端传输通道支持WebSocket;且这两种方案开发的都是Web应用,Web应用在性能上会低于原生应用.

本文提出的方案首先可以不必在服务器端做兼容WebRTC的开发,从而减小服务器的压力和信令转换造成延迟;其次不需要服务器传输通道支持WebSocket,从而减小服务器传输通道的限制;最后由于此时客户端由本来的 Web App 一跃变成 Native App,也一定程度上提高了客户端的性能.该方案一定程度上加大了客户端的工作量,但对比方案一的工作量,该方案的工作量完全可以接受.

图2 WebRTC 的 PeerConnection 层和 SIP 协议在客户端的融合方案架构

3 WebRTC 的 PeerConnection 层和 SIP 协议在客户端融合系统设计与实现

本方案中最重要的一个环节就是SIPRTC本地网关的设计,其功能包括 WebRTC SDP 和 SIP SDP 转化和 SIP 信令和 WebRTC PeerConnection API映射.

3.1 WebRTC的PeerConnection层和SIP协议在客户端融合方案的本地网关设计

WebRTC 使用 JSEP(JavaScript Session Establish Protocol)提供的弱信令完成媒体协商.JSEP提供的信令分为主叫方的Offer信令和被叫方的Answer信令,信令中的主要信息均符合SDP(Session Description Protocol)标准.WebRTC和SIP在媒体和信令的异同点对比如表1所示.

表1 WebRTC 和 SIP 媒体和信令的异同点对比表

本方案中客户端通过SIPRTC本地网关做信令转化和接口映射,WebRTC PeerConnection 和 SIP 协议的映射流程如图3所示,其中Alice是主叫,Bob是被叫.WebRTC PeerConnection和SIP映射步骤如下:

(1)Alice 调用 PeerConnection 层 createoffer API,并通过SIPRTC本地网关转化成SIP(INVITE)消息发送给Bob;

(2)Bob 接收 SIP 消息后,调用 PeerConnection 层setRemoteDescription、createAnswer API,并通过SIPRTC 本地网关转化成 SIP(180 Ring、200 OK)消息发送给Alice;

(3)Alice 接收 SIP 消息,调用 PeerConnection 层setRemoteDescription API,并发送 SIP(ACK)消息给Bob,此时建立了p2p或者通过多媒体中转服务器的多媒体会话;

(4)Alice调用 PeerConnection层removeRemoteStream API,并通过 SIPRTC 本地网关转化成SIP(BYE)消息发送给Bob;

(5)Bob 接收 SIP 消息,调用 PeerConnection 层removeRemoteStream API,并发送 SIP(200 OK)消息给Alice,至此完成一次音视频会话.

3.2 WebRTC的PeerConnection层和SIP协议在客户端融合方案的应用实现

图4为客户端应用设计的架构,在完成SIPRTC本地网关后,业务逻辑只需调用SIP接口,从而便于业务逻辑的实现;MQTT用于文本聊天等功能的实现.

视各客户端不同,WebRTC 的 PeerConnection 在不同平台结合的SIP模块稍有不同,具体来说Windows平台选择 pjsip[10],Android 平台选择 sipdroid,iOS 平台选择sofiasip;相应的WebRTC的PeerConnection API不局限于某种语言的API,包括编译手段产生的C++ API、Java API、OC API.

4 WebRTC 的 PeerConnection 层和 SIP 协议在客户端融合方案的测试及对比

本实验在服务器端使用OpenSIPS部署SIP服务器,使用 Google 的 Stun Server作为 ICE 代理,使用Asterisk服务器部署多媒体中转服务器.

在Android、iOS、Windows客户端完成了WebRTC PeerConnection 和 SIP 协议的融合,并测试了各平台之间的音视频通信.SIPRTC本地网关转化的呼叫和响应信令如图5和图6所示.Android端发出呼叫 并和iOS端视频通话如图7和图8所示.

图3 WebRTC PeerConnetion 和 SIP 映射流程

图4 客户端应用设计架构

图5 SIPRTC 本地网关转化的呼叫信令

图6 SIPRTC 本地网关转化的响应信令

经过多次测试和抓包分析,验证了WebRTC的PeerConnection层在客户端融合SIP协议方案的可行性,对比前两种方案,发现本方案的客户端流畅度要高于前两种方案的客户端;且本方案服务器造成的延迟要低于方案一的服务器,特别是服务器负载较大时,本方案服务器造成的延迟会明显低于方案一的服务器.

5 结论

本文介绍了已有的WebRTC和SIP协议融合的方案,研究了WebRTC和SIP协议互通需要解决的问题,提出了一种WebRTC的PeerConnection层和SIP协议在客户端融合的方案,通过查阅大量资料、搭建试验环境、编码、测试和对比,验证了该方案的可行性和优越性.但是由于使用Google提供的Stun Server做ICE代理,有时会有明显的延迟,后期的工作将集中研究、开发及搭建自己的ICE代理;另外后期我们也将在不同应用场景下对各客户端的稳定性做测试,尽早将该方案产品从实验室推向市场.

图7 Android 端发出呼叫

图8 iOS 端视频会话

猜你喜欢
服务器端信令音视频
Microchip推出首款车载以太网音视频桥接(AVB)全集成解决方案
Linux环境下基于Socket的数据传输软件设计
3KB深圳市一禾音视频科技有限公司
WIFI音视频信号传输的关键问题探究
更接地气的国际管理方式与音视频实践CEDIA广州中级培训报道
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
浅谈JSQ-31 V5数字程控用户交换机NO.7及NO.1信令参数设定及不同
LTE网络信令采集数据的分析及探讨
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用