您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

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

2018-10-29 13:48:39   作者:james.zhu   来源:CTI论坛   评论:0  点击:


  很多语音开发的用户有很多的疑问,对于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需要处理非常复杂的业务流程,例如,电话录音,计费,编码转换等。



UAS和UAC
  SBC具体的使用场景是这样的:
  以下是一个SIP服务器的架构,当然,这里的SIP 应用程序可以是Asterisk,FreeSWITCH或者其他第三方的SIP应用媒体服务器。这里的SIP模块仅对SIP头做处理,它并没有涉及RTP的处理。
  通过以上两张简单示例图,我们可以看出关于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产品选型上出现的各种误解,帮助用户获得一个权威专业靠谱的解决方案。
  链接:
  为什么使用SBC,各种SBC的使用场景:
  SBC http://freepbx.org.cn/wiki/index.php?title=SBC%E5%BA%94%E7%94%A8%E5%9C%BA%E6%99%AF
  是否增加Kamalio 对SBC 的模块支持,官方的邮件讨论:
  https://lists.kamailio.org/pipermail/sr-users/2016-March/thread.html#92075
  https://blog.telcobridges.com/index.php/2018/10/26/sbc-vs-sip-server-what-is-the-difference/
  https://likewise.am/2013/03/10/kamailio-as-an-sbc-session-border-controller/
  什么是S,B,C:
  https://wiki.freepbx.org/display/SBC/Theory+of+Operation


  MRCP协议呼叫中心机器人客服开发学习分享,QQ群号:208136295
  关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享
  Asterisk freepbx 中文官方论坛:http://bbs.freepbx.cn/forum.php
  Asterisk freepbx技术文档: www.freepbx.org.cn
  融合通信商业解决方案,协同解决方案首选产品:www.hiastar.com
  Asterisk/FreePBX中国官方合作伙伴
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题