关于Kamailio,SBC和SIP服务器的误解

栏目: 服务器 · 发布时间: 7年前

内容简介:很多语音开发的用户有很多的疑问,对于SBC的给你,功能,以及开源SIP软交换有着非常多的,不准确的理解。同时,网上有很多的文章文档确实分享了很多SBC,利用开源软交换做SBC的资料。笔者在几年前对SBC专门写过一篇非常完整的文章介绍SBC的作用和其功能,如果用户不熟悉的话,可以到网上查找,也可以到我们的链接来获得进一步的学习。什么是SBC,以下是一个非常明了的定义:https://wiki.freepbx.org/display/SBC/Theory+of+Operation这里,笔者不在对SBC的功能做

很多语音开发的用户有很多的疑问,对于SBC的给你,功能,以及开源SIP软交换有着非常多的,不准确的理解。同时,网上有很多的文章文档确实分享了很多SBC,利用开源软交换做SBC的资料。笔者在几年前对SBC专门写过一篇非常完整的文章介绍SBC的作用和其功能,如果用户不熟悉的话,可以到网上查找,也可以到我们的链接来获得进一步的学习。什么是SBC,以下是一个非常明了的定义:

https://wiki.freepbx.org/display/SBC/Theory+of+Operation

  • Session // 实时交互的会话,语音,视频,多媒体会话,协议会话
  • Real time interactive communications
  • Voice, Video, multimedia
  • SIP or H323 Signaling
  • Border // 边界, IP边界,SIP用户边界,公司网络边界
  • IP to IP network border
  • SIP trunks to service providers
  • Remote worker access
  • Internal Enterprise / External Enteprise
  • Control // 安全控制,计费路由控制,协议标准控制
  • Security & SLA assurance
  • Revenue & cost optimization
  • Compliance

这里,笔者不在对SBC的功能做太多介绍,仅针对SBC和SIP的区别做一个简单说明,同时针对是否可以使用Kamailio做SBC做一点介绍。

首先我们通过两张图例说明一下什么是SBC,什么是SIP服务器。以下图例是一个SBC的架构说明。这里,我们可以看到,在SBC的架构中,我们需要一个B2BUA来负责处理SIP和RTP的相关技术流程和业务流程。这里的B2BUA需要处理非常复杂的业务流程,例如,电话录音,计费,编码转换等。

关于Kamailio,SBC和SIP服务器的误解

关于Kamailio,SBC和SIP服务器的误解

UAS和UAC

关于Kamailio,SBC和SIP服务器的误解

SBC具体的使用场景是这样的:

关于Kamailio,SBC和SIP服务器的误解

以下是一个SIP服务器的架构,当然,这里的SIP 应用程序可以是Asterisk,FreeSWITCH或者其他第三方的SIP应用媒体服务器。这里的SIP模块仅对SIP头做处理,它并没有涉及RTP的处理。

关于Kamailio,SBC和SIP服务器的误解

通过以上两张简单示例图,我们可以看出关于SBC和SIP服务器的本质上的区别。如果读者仍然不太清楚的话,需要恶补什么是proxy和B2BUA的基本知识。另外,笔者在以前的分享比较中有非常完整的介绍,用户可以参考。因此,我们这里可以对SBC和SIP服务器简单总结为以下几点:

通常情况下,SBC需要B2BUA的功能来实现。B2BUA可以支持更多的SIP 防攻击功能,拓扑隐藏功能,编码转换处理的功能。一般情况下,根据RFC的定义,SIP 服务器只能做注册,定位,呼叫路由功能,逃生功能等SIP相关功能。

通常情况下,用户部署SBC需要在DMZ中设置,需要WAN和LAN口配置。这样的话,通过SBC和内网的SIP 媒体服务器对接就会隐藏了SIP应用服务器的网络部署,起到了拓扑隐藏的功能。如果没有SBC的支持的话,用户则需要直接在DMZ网络中配置SIP服务器,这样会导致SIP网络被暴露在公网,安全性就会出现问题。所以,基于SIP服务器的这种部署方式对拓扑隐藏或者网络隐藏基本上都很难实现,会导致严重的安全问题。

Kamalio是一个SIP 服务器,Kamailio可以实现部分SBC功能。读者需要注意,我们这里强调的部分功能。具体到实际部署环境时,用户究竟需要SBC的什么功能,用户需要自己判断。笔者不想做过多的讨论。根据上面的介绍中,我们可以得知,SIP服务器可以支持部分SBC的功能,但是不能完全实现SBC的市场上认可的SBC功能,例如,SBC多必须编码转换的功能,或者录音等SBC必须的功能。当然,用户可以通过kamailio 实现SBC的注册,路由等简单功能。

现在,我们开始讨论第二个问题,Kamalio是否支持了SBC功能。其实,在上面的介绍中,我们已经讨论了这个问题。Kamailio可以实现部分SBC的简单功能。在目前的发行版本中,kamailio也没有计划支持b2BUA的模式。因此,理论上来说,Kamailio不能支持真正意义上的SBC功能,也没有支持B2BUA的模块。当然,Kamailio可以通过其他方式,例如UAC模块来实现,这里不做讨论。在2016年,官方在这个问题上就有很多的讨论,根据官方讨论的结果,我们汇总了以下几点:

B2BUA的模块可以借助第三方来实现。

增加B2BUA模块会增加kamailio 服务器的负载,影响Kamailio的执行性能。

如果增加B2BUA功能的话,需要增加很多B2BUA的其他功能,会导致平台发展问题。

因为时间和精力的原因,官方开发人员欢迎第三方开发人员提供B2BUA模块的代码支持。

通过以上简单分析,我们可以看到,SBC具有非常丰富的对SIP管理的功能,而SIP服务器仅能实现部分SBC功能。Kamalio可以SBC的部分功能,不具备B2BUA功能,因此不能支持完整的SBC必要功能,并且,官方开发人员目前没有开发计划来支持SBC模块。因为SBC,SIP在概念上存在很多重复的地方,因此,我们讨论的空间也很大。但是,笔者认为,为了避免客户被忽悠,我们还是要从目前的SBC使用场景和产品本身来讨论问题,避免用户对SBC产品选型上出现的各种误解,帮助用户获得一个权威专业靠谱的解决方案。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML Dog

HTML Dog

Patrick Griffiths / New Riders Press / 2006-11-22 / USD 49.99

For readers who want to design Web pages that load quickly, are easy to update, accessible to all, work on all browsers and can be quickly adapted to different media, this comprehensive guide represen......一起来看看 《HTML Dog》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具