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

服务器
很多语音开发的用户有很多的疑问,对于SBC的给你,功能,以及开源SIP软交换有着非常多的,不准确的理解。

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

责任编辑:武晓燕 来源: Asterisk开源派
相关推荐

2010-09-16 16:20:14

SIP服务器

2010-09-17 10:07:17

SIP协议SIP代理服务器

2023-05-31 11:51:01

微服务数量代码

2018-05-11 10:31:41

2017-05-23 09:00:07

2010-05-21 11:50:54

IIS服务器

2018-05-08 09:30:48

服务器虚拟化

2015-07-23 13:10:38

服务器虚拟化

2017-12-06 08:37:11

服务器硬件策略

2024-01-05 13:55:00

IT支出网络安全预算成本优化

2009-02-27 11:15:00

多线程服务器MTS专用服务器

2010-05-17 16:50:38

IIS服务器

2022-03-14 15:10:20

云服务器物理服务器性能

2019-02-26 16:20:52

FTP服务器

2010-08-23 17:47:33

DHCP服务器

2020-03-06 15:11:21

进程线程Web

2018-04-28 15:15:51

服务器虚拟化趋势

2019-08-26 10:19:39

2010-08-30 16:25:17

配置DHCP服务器

2011-10-10 12:23:09

机房布线综合布线
点赞
收藏

51CTO技术栈公众号