• 一种SIP和WebRTC互相通信的方案


    1、背景概述

    本文的主旨是讨论如何实现以SIP协议为信令的VOIP通话系统和WebRTC进行通信。会话发起协议(SIP)是一种基于文本的通信协议,用于在IP网络上发送和控制多媒体会话。目前对讲产品例如门口机、室内机以及管理机等均在使用SIP信令进行通话控制。SIP在VoIP技术中被大量使用,是一套相对成熟的协议。WebRTC提供了音视频采集、网络传输、音视频编解码、信号优化和处理等一整套的音视频通信解决方案,可用于浏览器、移动设备和本机通信功能,无需安装插件。需要注意的一点是,在WebRTC中,没有指定协商连接的机制。这完全是为了让开发人员实现最适合的功能。SIP协议正是在这里完美地适合作为协商呼叫参数的强大信令机制,只要经过改造完全可以用webrtc的信令系统。

    2、需求分析

    2.1 技术差异分析

    实际上直接把SIP和webrtc进行比较是不合理的也无意义的,因为SIP只是会话建立协议,而webrtc可以说是一套完整的通话解决方案,两者并未什么可比性。但是本文提到的SIP是主要是指以SIP协议作为信令的VOIP通话解决方案,这样两种通信系统之间才有比较的价值。
    下图住列举出两者之间的差异,可以看出差异并不大,主要的差异是集中在信令层,尤其是在webrtc信令协议不指定的情况下两者互通的前提就是打通协议壁垒。

    2.2 价值分析

    随着社会发展技术进步,不同领域之间必然会产生交际,互联互通已成为各种通信系统的发展趋势,融合通信孕育而生。SIP通信系统技术成熟,已经再VOIP领域实际应用多年。WebRTC是互联网背景下的后起之秀,目前在音视频通话领域崭露头角。两种之间的融合能够扩大业务领域,增加通信技术的覆盖范围,为用户提供更好的体验。

    2.3 可行性分析

    从技术差异分析中能够看出,基于sip的voip系统和webtrc通信系统十分相似,两种在P2P网络模型下差异很小,最大的区别就是两种的信令系统不同。Webrtc的信令没有固定死相对比较灵活,sip信令系统功能完善技术成熟,这两种信令只要能够相互转换,互通并不困难。也就是说只要做好信令映射两者就有可能实现互联互通。

    3、技术方案

    为了建立WebRTC和SIP终端之间的,本文提出两种方案。

    3.1方案一:基于P2P通信方案

    如同上图,SIP终端和浏览器客户端建立连接,以浏览器wbrtc客户端作为主叫方:

    • 1、浏览器通过web服务器发送通话信令
    • 2、web服务器将私有信令转化为SIP信令发送给SIP服务器
    • 3、SIP服务器转发SIP信令给SIP终端
    • 4、会话建立完毕后,浏览器和SIP终端之间会建立RTP信道进行P2P媒体数据的发送。

    3.1.1 分析

    方案一的实施难度比较低,只需要Web服务器或SIP服务器两方有一个能够进行信令转化即可,SIP协议的数据体中可以荷载SDP协议,这使这种转化成为可能。

    3.1.2 信令转化

    两种方案都需要信令映射,以第一种为例,假设信令由web服务器完成,则流程如下图。

    3.2方案二:基于媒体网关转发方案


    如同上图,SIP终端和浏览器客户端建立连接,以浏览器wbrtc客户端作为主叫方:

    • 1、浏览器通过web服务器发送通话信令
    • 2、web服务器将私有信令转化为SIP信令发送给B2BUA终端
    • 3、B2BUA终端控制媒体网关接收来自客户端的媒体数据
    • 3、B2BUA终端通过呼叫SIP终端
    • 4、B2BUA终端控制媒体网关接转发客户端的媒体数据给SIP终端

    3.2.1 分析

    方案二和方案有所不同,通过B2BUA代替了SIP服务器,它作为独立的逻辑单元,即作为SIP客户端又作为SIP服务端,将会话边界拉到了服务器上。媒体网关能够进行数据转发,相比与第一种P2P方案来说实时新虽然减弱了,但是兼容性和扩展行大大增强。这种具有转发功能的服务器可以很容易扩展到视频会议的方案,例如实现SFU模型流媒体服务器模型,当然这不在本文讨论范畴。这样的最直接好处使兼容了webrtc客户端和SIP客户端的媒体协商SDP,即便协商的不同,也可以在媒体网关这层进行转化。

    的实施难度比较低,只需要Web服务器或SIP服务器两方有一个能够进行信令转化即可,SIP协议的数据体中可以荷载SDP协议,这使这种转化成为可能。

    4、总结

    本文提供了两种简单的实现方案,实际项目中使用的是第二种方案,没有对方案的实现细节进行展开,主要起到抛砖引玉的作用。

  • 相关阅读:
    FDCAN硬件过滤器详解
    【Docker安装部署RocketMQ消息中间件详细教程】
    循环购:一种具有裂变能力的商业模式
    crondtab定时任务%字符无法识别的处理
    15:00进去,15:08就出来了,问的问题太变态了。
    微服务——服务治理
    深度学习基础知识 最近邻插值法、双线性插值法、双三次插值算法
    【数据结构】【C语言】【环形链表约瑟夫问题】
    想学设计模式、想搞架构设计,先学学UML系统建模吧您
    LeetCode75——Day4
  • 原文地址:https://blog.csdn.net/uianster/article/details/125882964