当前位置: 首页 > 科技观察

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

时间:2023-03-18 00:14:06 科技观察

很多语音开发的用户都有很多疑惑。他们对SBC的功能和开源的SIP软交换有很多不准确的理解。同时网上也有很多文章和文档分享了大量的SBC,使用开源软交换制作SBC的资料。作者几年前写了一篇很完整的关于SBC的文章,介绍了SBC的作用和作用。如果用户不熟悉,可以上网搜索或者到我们的链接进一步学习。什么是SBC,下面是一个很明确的定义:https://wiki.freepbx.org/display/SBC/Theory+of+OperationSession//实时交互会话,语音,视频,多媒体会话,协议会话Real时间交互通信语音、视频、多媒体SIP或H323信令边界//边界、IP边界、SIP用户边界、公司网络边界IP到IP网络边界SIP中继到服务提供商远程工作人员访问内部企业/外部企业控制//安全控制,计费路由控制,协议标准控制Security&SLAassuranceRevenue&costoptimizationCompliance这里笔者不会对SBC的功能做过多的介绍,只简单说明一下SBC和SIP的区别,以及Kamailio是否可以用作SBC简单介绍一下。首先我们通过两张图来解释一下什么是SBC,什么是SIP服务器。下图是SBC的架构描述。在这里,我们可以看到在SBC架构中,我们需要一个B2BUA来负责处理SIP和RTP的相关技术和业务流程。这里的B2BUA需要处理非常复杂的业务流程,比如通话录音、计费、代码转换等。UAS和UACSBC的具体使用场景如下:下面是一个SIP服务器的架构。当然,这里的SIP应用可以是Asterisk、FreeSWITCH或者其他第三方SIP应用媒体服务器。这里的SIP模块只处理SIP头,不涉及RTP的处理。通过上面两个简单的示例图,我们可以看出SBC和SIP服务器的本质区别。如果读者还不清楚,需要补一下什么是proxy和B2BUA的基础知识。另外,笔者在之前的分享对比中有非常完整的介绍,各位网友可以参考。因此,我们可以将SBC和SIP服务器简单概括为以下几点:通常,SBC需要B2BUA的功能来实现。B2BUA可以支持更多的SIP攻击防御功能、拓扑隐藏功能、代码转换处理功能。一般来说,根据RFC的定义,SIP服务器只能完成注册、定位、呼叫路由功能、逃生功能等SIP相关的功能。通常,用户需要在DMZ中配置SBC,这需要配置WAN和LAN口。这样,通过SBC与内网SIP媒体服务器的互联,隐藏SIP应用服务器的网络部署,实现拓扑隐藏功能。如果没有SBC的支持,用户需要直接在DMZ网络中配置SIP服务器,会导致SIP网络暴露在公网中,会出现安全问题。因此这种基于SIP服务器的部署方式基本上很难实现拓扑隐藏或者网络隐藏,会导致严重的安全问题。Kamalio是一个SIP服务器,Kamailio可以实现一些SBC的功能。读者需要注意我们在这里强调的一些功能。当涉及到实际部署环境时,用户需要判断自己需要SBC的哪些功能。我不想讨论太多。根据上面的介绍,我们可以知道SIP服务器可以支持部分SBC的功能,但是并不能完全实现SBC市场认可的SBC功能。.当然用户也可以通过kamailio实现SBC注册、路由等简单功能。现在,我们开始讨论第二个问题,Kamalio是否支持SBC功能。其实在上面的介绍中,我们已经讨论过这个问题。Kamailio可以实现SBC的一些简单功能。在当前的release版本中,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产品时出现各种误区,帮助用户获得权威、专业、可靠的解决方案。