Browsed by
Author: Gilson

V28与Lua业务

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业务引擎只是后端技术的升级,因此默认情况下您不需要更改任何配置。

阻止匿名呼叫

阻止匿名呼叫

我们可以使用“系统黑白名单”来过滤、阻止匿名呼叫。请点击菜单“业务 – 系统黑名单”,添加以下记录:

caller number prefix = anonymous
called number prefix = *
rate = 100

该记录的作用就是:100%阻断来自“anonymous”的呼叫。

有些匿名呼叫的主叫号码可能会有差别,不过仍然可以在“系统黑名单”配置类似的记录进行过滤。

Citel科技宣布与MyVoIPApp miniSIPServer完成互操作测试

Citel科技宣布与MyVoIPApp miniSIPServer完成互操作测试

纽约阿姆斯特(AMHERST, NY),中国深圳 – 2016年8月4日 – Citel科技非常高兴地宣布已成功完成与MyVoIPApp公司的miniSIPServer产品完成互操作测试。miniSIPServer是一款SIP-PBX软件,专为中小型企业打造,包含丰富的业务特性,也非常容易使用,能在多种平台运行,例如windows和linux,同时能适应IPv4和IPv6网络。

Citel科技的Portico™ TVA™产品支持将现有电话系统顺利迁移到VoIP系统,无需更改现有的布线结构,不需要订购新的IP电话,也不需要安装以太网供电的交换机。客户们可以保留现有的数字电话、模拟电话以及Centrex电话等,无需采用SIP电话。这是个快速、低成本的VoIP迁移解决方案。

Citel市场和销售总裁Ian Gomm如是说:“联合这两个创新产品,能提供最快、最节省成本的解决方案,极为方便企业将传统的电话网络升级为现代的统一通信系统”。

应一位知名度极高的客户的要求,Citel和MyVoIPApp开始进行互操作测试。这位客户正寻找基于windows平台的软交换系统构建跨国家通信网络。“多年以来我们承担过与众多IP PBX产品的互操作测试,同时也知道有时会有一些系统比另一些更容易使用、更有竞争力。 miniSIPServer对我们来说是全新的产品,但是我的确非常高兴地收到工程师的初步测试反馈:这个系统非常容易使用,而且互操作非常顺利”,Citel工程副总裁Andrew Davies说到。“后续测试展示了相当复杂的状态监视以及BLF(忙灯指示)功能,我看到miniSIPServer和Portico™ TVA™配合得完美无缺”,Andrew继续说道,“我们期待双方能进一步发展合作关系”。

关于Citel科技公司citel.com

Citel为中小企业、大型企业以及业务提供者提供低成本、高效率的IP电话系统解决方案,客户可以保留现有的PBX架构。单分支或者多分支商业机构现在能按自己的节奏部署下一代IP应用程序,对业务影响极小。业务提供者可以快速部署托管式IP电话业务,无需“拆除替换”现存的企业PBX终端和局域网布线。Citel位于纽约Amherst,同时在英格兰和多伦多也有分支机构。

关于MyVoIPAppmyvoipapp.com

MyVoIPApp于2007年在中国深圳创立。虽然是个小公司,但是所有成员都具有至少十年的通信领域经验,公司聚焦于通信技术,在VoIP市场取得强劲的增长。

Invalid CSeq number

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。

外线无应答时长

外线无应答时长

在外线的“出呼叫”配置中,我们增加了一个配置项“无应答时长”。该参数用于限制外线外呼时的无应答时间。请参考下图:

外线无应答配置
在外线中配置无应答定时器时长

该参数默认值为0,也就是缺省采用系统定义的无应答定时器时长。如果设置了其他值,则优先采用该值。

例如,设置为15,则该外线的外呼呼叫如果在15秒内没有应答,外线将强制释放呼叫。

MYVOIPAPP.com全站启用加密

MYVOIPAPP.com全站启用加密

在过去的一周,我们一直忙于将MYVOIPAPP.COM迁移到新的云计算系统中。与此同时,我们将网站默认配置修改为HTTPs,即加密HTTP方式。

现在您访问我们的网站,如果是HTTP非加密方式,系统会自动切换到HTTPs加密方式。这有助于确保您和我们网站之间的连接是安全的,不会被网络上的未知人士或者机构观察甚至修改,确保您得到干净的、未被污染的信息。

既然我们的网站目前建立在新的云计算系统之上,理论上应该更稳定、访问速度更快。当然,凡事总有意外,如果您在访问过程中发现任何问题,请及时通知我们。我们将非常感激,谢谢!

在Ubuntu16.04系统上运行miniSIPServer

在Ubuntu16.04系统上运行miniSIPServer

昨天发布了最新的Ubuntu16.04版本,这同时也是最新的LTS(长期支持)版本,因此我们尽快地下载了该版本并作了相当程度的测试。

有很多库升级或者改变了,我们需要更新miniSIPServer来适应这些变化。如果您希望在16.04系统上运行miniSIPServer,或者您希望将已有的Ubuntu系统升级到16.04版本,您需要更新到新的miniSIPServer版本(build 20160422)。

其他没有什么区别。请参考下图中我们运行miniSIPServer的情况:

在Ubuntu 16.04运行miniSIPServer
在Ubuntu 16.04运行miniSIPServer
对抗SIP扫描

对抗SIP扫描

一位客户向我们报告:他的MSS服务器可能被黑客攻击。我们一起检查了MSS产生的呼叫详细话单,数据显示某人用另外一部SIP电话注册了同样一个分机号,并产生了大量的呼叫。

很显然,这是个非常严重的问题。我们推测这位“黑客”可能采用了发送大量SIP消息的方式来尝试上述分机的密码,并最终破解了密码。MSS以前的版本没有考虑这种异常情况,总是会允许SIP话机不停使用密码进行鉴权,直到最终通过鉴权为止,这就导致某些人刻意不停地扫描和尝试分机和密码。

为阻止这种情况,我们升级了MSS的版本,提供“失败则阻止(fail to ban, F2B)”特性。一旦SIP话机在一分钟内鉴权失败了若干次,则MSS会视之为“恶意扫描”并屏蔽其IP地址若干小时,期间MSS将拒绝所有来自该IP地址的SIP消息。这样迫使某些人几乎不可能破解SIP分机的密码。

F2B特性默认就开启,并且用户无需做任何配置。

V25版本更新,去掉webRTC特性

V25版本更新,去掉webRTC特性

最近我们更新了V25版本,修正了一些bug、做了一些优化,系统更加稳定。最重要的是:从这个版本开始,我们删除了webRTC特性。

在以前的blog或者文档中,我们说明了MSS webRTC特性适用于Google Chrome浏览器。Chrome升级到V48版本后,对webRTC特性做了一些改动。一如以往,这些改动没有考虑到和以前版本的兼容,这迫使我们再次不得不向客户道歉并跟进修改。综合考虑后我们认为,可能webRTC特性更适合公众网络业务,例如Google自身的hangouts业务。缺乏灵活性、兼容性考虑,webRTC可能不适合中小型企业通信网络市场。

因此我们从V25版本开始砍掉了这个特性,不过仍然保留在V24(LTS版本)中。如果您仍然在使用webRTC特性,请注意保持Chrome浏览器的版本不要超过V47版本。

部分虚拟虚拟服务器变更

部分虚拟虚拟服务器变更

最近我们对某些虚拟服务器进行了变更,请注意以下几点:

STUN服务器

每个虚拟SIP服务器都同时启动了STUN服务,例如,如果您的虚拟服务器地址是“1234.s1.minisipserver.com”,那么STUN服务器地址也同样可以是“1234.s1.minisipserver.com”。

而现在我们单独部署了独立的简单STUN服务器“stun.minisipserver.com”。默认情况下,我们推荐用户采用这个STUN服务器,所有虚拟SIP服务器节点都可以采用这个新的STUN节点。当然,您仍然可以采用虚拟服务器地址做自己的STUN服务器地址。

SMTP服务器

在语音邮箱业务中,我们需要SMTP服务器发送带语音文件的电子邮件。以前每个虚拟SIP服务器都可以配置客户自己的SMTP信息。但是实际部署过程中我们发现一些问题,例如大部分用户都会采用gmail的SMTP服务。而Gmail默认是没有打开POP/SMTP服务的,客户需要在gmail配置中单独打开这些配置项。另外,gmail要求明确授权其他接入者使用用户的SMTP服务,大部分客户实际上并不清楚这些细节,因此大量的语音邮箱业务都以失败告终。

考虑各种状况,我们决定去掉SMTP的各项配置,即用户不再需要配置自己的SMTP信息,系统会采用我们自己的SMTP服务器发送语音邮件。当然这样也有一点不足之处:您可能需要检查“垃圾”邮箱文件夹,您的邮件系统有可能会将我们的邮件作垃圾邮件处理。