内容简介:很多语音开发的用户有很多的疑问,对于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需要处理非常复杂的业务流程,例如,电话录音,计费,编码转换等。
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产品选型上出现的各种误解,帮助用户获得一个权威专业靠谱的解决方案。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。