本文的主旨是讨论如何实现以SIP协议为信令的VOIP通话系统和WebRTC进行通信。会话发起协议(SIP)是一种基于文本的通信协议,用于在IP网络上发送和控制多媒体会话。目前对讲产品例如门口机、室内机以及管理机等均在使用SIP信令进行通话控制。SIP在VoIP技术中被大量使用,是一套相对成熟的协议。WebRTC提供了音视频采集、网络传输、音视频编解码、信号优化和处理等一整套的音视频通信解决方案,可用于浏览器、移动设备和本机通信功能,无需安装插件。需要注意的一点是,在WebRTC中,没有指定协商连接的机制。这完全是为了让开发人员实现最适合的功能。SIP协议正是在这里完美地适合作为协商呼叫参数的强大信令机制,只要经过改造完全可以用webrtc的信令系统。
实际上直接把SIP和webrtc进行比较是不合理的也无意义的,因为SIP只是会话建立协议,而webrtc可以说是一套完整的通话解决方案,两者并未什么可比性。但是本文提到的SIP是主要是指以SIP协议作为信令的VOIP通话解决方案,这样两种通信系统之间才有比较的价值。
下图住列举出两者之间的差异,可以看出差异并不大,主要的差异是集中在信令层,尤其是在webrtc信令协议不指定的情况下两者互通的前提就是打通协议壁垒。
随着社会发展技术进步,不同领域之间必然会产生交际,互联互通已成为各种通信系统的发展趋势,融合通信孕育而生。SIP通信系统技术成熟,已经再VOIP领域实际应用多年。WebRTC是互联网背景下的后起之秀,目前在音视频通话领域崭露头角。两种之间的融合能够扩大业务领域,增加通信技术的覆盖范围,为用户提供更好的体验。
从技术差异分析中能够看出,基于sip的voip系统和webtrc通信系统十分相似,两种在P2P网络模型下差异很小,最大的区别就是两种的信令系统不同。Webrtc的信令没有固定死相对比较灵活,sip信令系统功能完善技术成熟,这两种信令只要能够相互转换,互通并不困难。也就是说只要做好信令映射两者就有可能实现互联互通。
为了建立WebRTC和SIP终端之间的,本文提出两种方案。
如同上图,SIP终端和浏览器客户端建立连接,以浏览器wbrtc客户端作为主叫方:
方案一的实施难度比较低,只需要Web服务器或SIP服务器两方有一个能够进行信令转化即可,SIP协议的数据体中可以荷载SDP协议,这使这种转化成为可能。
两种方案都需要信令映射,以第一种为例,假设信令由web服务器完成,则流程如下图。
如同上图,SIP终端和浏览器客户端建立连接,以浏览器wbrtc客户端作为主叫方:
3.2.1 分析
方案二和方案有所不同,通过B2BUA代替了SIP服务器,它作为独立的逻辑单元,即作为SIP客户端又作为SIP服务端,将会话边界拉到了服务器上。媒体网关能够进行数据转发,相比与第一种P2P方案来说实时新虽然减弱了,但是兼容性和扩展行大大增强。这种具有转发功能的服务器可以很容易扩展到视频会议的方案,例如实现SFU模型流媒体服务器模型,当然这不在本文讨论范畴。这样的最直接好处使兼容了webrtc客户端和SIP客户端的媒体协商SDP,即便协商的不同,也可以在媒体网关这层进行转化。
的实施难度比较低,只需要Web服务器或SIP服务器两方有一个能够进行信令转化即可,SIP协议的数据体中可以荷载SDP协议,这使这种转化成为可能。
本文提供了两种简单的实现方案,实际项目中使用的是第二种方案,没有对方案的实现细节进行展开,主要起到抛砖引玉的作用。