一号多机业务的一点修改
媒体网关与V30版本
昨天我们正式发布了V30版本。正如以前所说,本次版本的主要特性是“媒体网关”。
实际上以前的版本已经有媒体网关功能,只是这些功能与呼叫控制、业务控制融合在同一个核心中,本身并不独立。对于小型或者中型商业部署环境,这样做没有问题(实际上一直运行很好)。但是对大型商业部署而言,比如我们的云通信系统,媒体网关和呼叫控制合并在一起会影响整个系统的性能。
我们决定将“媒体网关”分离出来作为一个独立的应用。在云系统中,“媒体网关”甚至运行在独立的设备上。多台呼叫服务器可以共享、互联同一台媒体网关服务器。
由于本地MSS和云MSS是采用同一个核心模型,因此我们将这个特性也移植回V30版本。不同之处在于:本地MSS将“媒体网关”作为程序内部一个独立的任务(线程)运行。
本次特性修改对配置文件、管理界面没有任何修改。默认情况下,您甚至感觉不到这次的修改。我们相信新的核心更加稳定、更加灵活。希望您能享受、喜欢我们的产品!
话务员业务
在新版MSS中我们增加了两项与话务员相关的业务:话务员强插以及话务员逾越。请参考业务文档了解这两项业务的细节。
本地MSS软件版本以及云MSS服务都为这两个业务进行了升级。目前MSS软件最新版本为V29版本。
下一个版本,即V30版本,将主要集中在“媒体网关”特性的优化上。如果您有任何建议和需求,欢迎您联系我们,我们十分乐意与您进行讨论。
在Ubuntu16.10系统上运行miniSIPServer
V28与Lua业务
V28版本正式发布!我们在这个版本花费了数月的时间。 本版本的关键特性是新的业务引擎,即“Lua业务引擎”。
如您所知,以前的MSS版本的业务引擎采用Python语言编写,工作得非常好,但是仍然有一些限制。现在新版本中业务引擎采用Lua语言重新编写,我们简单介绍作出这一决定的几个关键因素。
(1)Lua语言更简单。Python是全栈、通用型语言,而Lua是嵌入式语言。Lua比Python少很多特性,但是胜在更简单。我们尽管非常喜欢Python,但是分析后仍然发现Lua更适合用于MSS来实现业务引擎。我们不需要全功能,只需要能封装、提供MSS核心功能和能力即可。
(2)最重要的稳定性。Python业务引擎采用一个Python虚拟机支持所有的业务实例,一旦其中一个业务发生未知异常导致虚拟机崩溃,所有的业务都会收到影响。而在新的业务引擎中,每个业务都会采用一个单独的Lua虚拟机,如果一个业务发生未知异常,其他业务不会受到任何影响。这实在是太棒了!整个MSS系统的稳定性达到了更高水平!
(3)更快!更快!更快!仅仅是语言层面,Lua就比Python更快。由于GIL的存在,Python无法满足高性能的要求,因此只能被局限在业务引擎层面。而Lua没有这个限制,每个Lua虚拟机都很微小而且独立,我们现在只是用Lua替换了业务引擎,后续我们甚至可以考虑实现基本呼叫引擎,未来已来!
在V28版本中,所有的Python业务已经被替换为Lua业务。您可以在“lua/services”子目录中找到这些Lua业务文件。如果您曾经自行修改过Python文件,升级到新版本后您需要自行修改对应的Lua文件。
由于Lua业务引擎只是后端技术的升级,因此默认情况下您不需要更改任何配置。
Invalid CSeq number
最近一位客户报告了一个问题:他的外线始终无法注册到VoIP运营商的网络。这让人倍感奇怪,毕竟“外线”是MSS非常基础的功能,已经和众多VoIP运营商对接过,我们从没想到过“外线注册”居然会有问题。
抓取了相应的log,发现该运营商返回了“400 Bad Request”消息,其中携带了以下原因信息:
P-Registrar-Error: Invalid CSeq number
我们检查了REGISTER消息,MSS在处理CSeq时并没有任何问题。以下是MSS消息的摘要:
==> REGISTER sip:sip.xxx.com SIP/2.0 ... Call-ID: 18BF67854AE23D6D2CD772AFMSS002A0001. CSeq: 13 REGISTER ... <== SIP/2.0 401 Unauthorized ... Call-ID: 18BF67854AE23D6D2CD772AFMSS002A0001. CSeq: 13 REGISTER ... ==> REGISTER sip:sip.xxx.com SIP/2.0 ... Call-ID: 18BF67854AE23D6D2CD772AFMSS002A0001. CSeq: 14 REGISTER ... <== SIP/2.0 400 Bad Request ... Call-ID: 18BF67854AE23D6D2CD772AFMSS002A0001. CSeq: 14 REGISTER P-Registrar-Error: Invalid CSeq number ...
我们再次检查了RFC3261规范中的定义:
A UA MUST increment the CSeq value by one for each REGISTER request with the same Call-ID.
显然我们是完全正确的,但是为什么对端会拒绝了注册呢?
最终我们尝试修改了Call-ID参数后注册成功。这让我们更感困惑!RFC3261规范很清楚地说明了注册流程中Call-ID参数的注意事项:
All registrations from a UAC SHOULD use the same Call-ID header field value for registrations sent to a particular registrar.
我们认为这个VoIP运营商的系统是不专业的。不幸的是,该运营商很难去升级他们的系统,因此我们在MSS中增加了一个开关变量来控制这种情况:
[sip] gVarSipRegSameDialog=0
如果您在与某些VoIP运营商系统对接时遇到类似的问题,请在“mss_var_param.ini” 文件中增加上述参数并重启MSS。
外线无应答时长
MYVOIPAPP.com全站启用加密
在过去的一周,我们一直忙于将MYVOIPAPP.COM迁移到新的云计算系统中。与此同时,我们将网站默认配置修改为HTTPs,即加密HTTP方式。
现在您访问我们的网站,如果是HTTP非加密方式,系统会自动切换到HTTPs加密方式。这有助于确保您和我们网站之间的连接是安全的,不会被网络上的未知人士或者机构观察甚至修改,确保您得到干净的、未被污染的信息。
既然我们的网站目前建立在新的云计算系统之上,理论上应该更稳定、访问速度更快。当然,凡事总有意外,如果您在访问过程中发现任何问题,请及时通知我们。我们将非常感激,谢谢!




