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

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

内容简介:很多语音开发的用户有很多的疑问,对于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产品选型上出现的各种误解,帮助用户获得一个权威专业靠谱的解决方案。


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

查看所有标签

猜你喜欢:

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

ANTLR 4权威指南

ANTLR 4权威指南

Terence Parr / 张博 / 机械工业出版社 / 2017-5-1 / 69元

ANTLR是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本或二进制文件。它被广泛应用于学术领域和工业生产实践,是众多语言、工具和框架的基石。Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询;Hadoop生态系统中的Hive、Pig、数据仓库和分析系统所使用的语言都用到了ANTLR;Lex Machina将ANTLR用于分析法律文本;Oracle公司在S......一起来看看 《ANTLR 4权威指南》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器