2. 中国科学院大学, 北京 100049
2. University of Chinese Academy of Sciences, Beijing 100049, China
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.
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, 也一定程度上提高了客户端的性能. 该方案一定程度上加大了客户端的工作量, 但对比方案一的工作量, 该方案的工作量完全可以接受.
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所示.
本方案中客户端通过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所示.
经过多次测试和抓包分析, 验证了WebRTC的PeerConnection层在客户端融合SIP协议方案的可行性, 对比前两种方案, 发现本方案的客户端流畅度要高于前两种方案的客户端; 且本方案服务器造成的延迟要低于方案一的服务器, 特别是服务器负载较大时, 本方案服务器造成的延迟会明显低于方案一的服务器.
5 结论本文介绍了已有的WebRTC和SIP协议融合的方案, 研究了WebRTC和SIP协议互通需要解决的问题, 提出了一种WebRTC的PeerConnection层和SIP协议在客户端融合的方案, 通过查阅大量资料、搭建试验环境、编码、测试和对比, 验证了该方案的可行性和优越性. 但是由于使用Google提供的Stun Server做ICE代理, 有时会有明显的延迟, 后期的工作将集中研究、开发及搭建自己的ICE代理; 另外后期我们也将在不同应用场景下对各客户端的稳定性做测试, 尽早将该方案产品从实验室推向市场.
[1] |
梁艳. 基于HTML5的WebRTC技术浅析. 信息通信技术, 2014, 8(2): 52-56. |
[2] |
王桐. 基于Android智能移动终端的无线远程管控系统研究与应用[硕士学位论文]. 成都: 西南交通大学, 2013.
|
[3] |
邓敦望. SIP视频会议服务器设计与实现[硕士学位论文]. 北京: 北京邮电大学, 2010.
|
[4] |
吴江锐. WebRTC语音引擎中NetEQ技术的研究[硕士学位论文]. 西安: 西安电子科技大学, 2013.
|
[5] |
胡敏, 刘六程, 刘鹏. 基于WebRTC的视频会议系统的设计与实现. 电视技术, 2013(1): 141-143, 150. DOI:10.3969/j.issn.1002-8692.2013.01.040 |
[6] |
刘明栓. WebRTC系统中信令子系统的设计与实现[硕士学位论文]. 北京: 北京邮电大学, 2014.
|
[7] |
Amirante A, Castaldi T, Miniero L, et al. On the seamless interaction between WebRTC browsers and SIP-based conferencing systems. IEEE Communications Magazine, 2013, 51(4): 42-47. DOI:10.1109/MCOM.2013.6495759 |
[8] |
Mamadou DIOP. webrtc2sip-smart SIP and media gateway for WebRTC endpoints technical guide. http://www.webrtc2sip.org/technical-guide-1.0.pdf. [2013].
|
[9] |
draft-ietf-sipcore-sip-Websocket-04. http://tools.ietf.org/html/draft-ietf-sipcore-sip-Websocket-04. [2013-08-22].
|
[10] |
黄月祥. 基于PJSIP的嵌入式VoIP终端的研究与实现[硕士学位论文]. 昆明: 昆明理工大学, 2011.
|